From 424d5b612eb6cec15a20aee16ee14c490eebec26 Mon Sep 17 00:00:00 2001 From: sastaachar Date: Thu, 20 Mar 2025 21:26:34 +0530 Subject: [PATCH 1/8] init --- auth_enum.dart | 491 +++ auth_interface.dart | 29 + auth_models.dart | 28 + my.dart | 3824 +++++++++++++++++ package-lock.json | 1586 ++++++- package.json | 9 +- schema.json | 1748 ++++++++ scripts/script.ts | 52 + scripts/ts-to-any-converter/converter.ts | 148 + .../templates/dart/enum.mustache | 15 + .../templates/dart/interface.mustache | 5 + .../types/converter-types.ts | 4 + .../ts-to-any-converter/types/intermediate.ts | 34 + src/embed/liveboard.ts | 1283 +++--- src/types.ts | 19 +- .../graphql/answerService/answerService.ts | 6 +- 16 files changed, 8626 insertions(+), 655 deletions(-) create mode 100644 auth_enum.dart create mode 100644 auth_interface.dart create mode 100644 auth_models.dart create mode 100644 my.dart create mode 100644 schema.json create mode 100644 scripts/script.ts create mode 100644 scripts/ts-to-any-converter/converter.ts create mode 100644 scripts/ts-to-any-converter/templates/dart/enum.mustache create mode 100644 scripts/ts-to-any-converter/templates/dart/interface.mustache create mode 100644 scripts/ts-to-any-converter/types/converter-types.ts create mode 100644 scripts/ts-to-any-converter/types/intermediate.ts diff --git a/auth_enum.dart b/auth_enum.dart new file mode 100644 index 00000000..8cadfa47 --- /dev/null +++ b/auth_enum.dart @@ -0,0 +1,491 @@ +enum AuthType { + None("None"), + EmbeddedSSO("EmbeddedSSO"), + SSO("SSO_SAML"), + SAML("SSO_SAML"), + SAMLRedirect("SSO_SAML"), + OIDC("SSO_OIDC"), + OIDCRedirect("SSO_OIDC"), + AuthServer("AuthServer"), + TrustedAuthToken("AuthServer"), + TrustedAuthTokenCookieless("AuthServerCookieless"), + Basic("Basic"), + + final String value; + const AuthType(this.value); +} + +enum HomeLeftNavItem { + SearchData("search-data"), + Home("insights-home"), + Liveboards("liveboards"), + Answers("answers"), + MonitorSubscription("monitor-alerts"), + SpotIQAnalysis("spotiq-analysis"), + LiveboardSchedules("liveboard-schedules"), + + final String value; + const HomeLeftNavItem(this.value); +} + +enum RuntimeFilterOp { + EQ("EQ"), + NE("NE"), + LT("LT"), + LE("LE"), + GT("GT"), + GE("GE"), + CONTAINS("CONTAINS"), + BEGINS_WITH("BEGINS_WITH"), + ENDS_WITH("ENDS_WITH"), + BW_INC_MAX("BW_INC_MAX"), + BW_INC_MIN("BW_INC_MIN"), + BW_INC("BW_INC"), + BW("BW"), + IN("IN"), + NOT_IN("NOT_IN"), + + final String value; + const RuntimeFilterOp(this.value); +} + +enum HomepageModule { + Search("SEARCH"), + Watchlist("WATCHLIST"), + Favorite("FAVORITE"), + MyLibrary("MY_LIBRARY"), + Trending("TRENDING"), + Learning("LEARNING"), + + final String value; + const HomepageModule(this.value); +} + +enum EmbedEvent { + Init("init"), + AuthInit("authInit"), + Load("load"), + Data("data"), + QueryChanged("queryChanged"), + Drilldown("drillDown"), + DataSourceSelected("dataSourceSelected"), + AddRemoveColumns("addRemoveColumns"), + CustomAction("customAction"), + VizPointDoubleClick("vizPointDoubleClick"), + VizPointClick("vizPointClick"), + Error("Error"), + Alert("alert"), + AuthExpire("ThoughtspotAuthExpired"), + AuthFailure("ThoughtspotAuthFailure"), + IdleSessionTimeout("IdleSessionTimeout"), + AuthLogout("ThoughtspotAuthLogout"), + EmbedHeight("EMBED_HEIGHT"), + EmbedIframeCenter("EmbedIframeCenter"), + GetDataClick("getDataClick"), + RouteChange("ROUTE_CHANGE"), + V1Data("exportVizDataToParent"), + NoCookieAccess("noCookieAccess"), + SAMLComplete("samlComplete"), + DialogOpen("dialog-open"), + DialogClose("dialog-close"), + LiveboardRendered("PinboardRendered"), + ALL("*"), + Save("save"), + Download("download"), + DownloadAsPng("downloadAsPng"), + DownloadAsPdf("downloadAsPdf"), + DownloadAsCsv("downloadAsCsv"), + DownloadAsXlsx("downloadAsXlsx"), + AnswerDelete("answerDelete"), + Pin("pin"), + SpotIQAnalyze("spotIQAnalyze"), + Share("share"), + DrillInclude("context-menu-item-include"), + DrillExclude("context-menu-item-exclude"), + CopyToClipboard("context-menu-item-copy-to-clipboard"), + UpdateTML("updateTSL"), + EditTML("editTSL"), + ExportTML("exportTSL"), + SaveAsView("saveAsView"), + CopyAEdit("copyAEdit"), + ShowUnderlyingData("showUnderlyingData"), + AnswerChartSwitcher("answerChartSwitcher"), + APP_INIT("appInit"), + LiveboardInfo("pinboardInfo"), + AddToFavorites("addToFavorites"), + Schedule("subscription"), + Edit("edit"), + MakeACopy("makeACopy"), + Present("present"), + Delete("delete"), + SchedulesList("schedule-list"), + Cancel("cancel"), + Explore("explore"), + CopyLink("embedDocument"), + CrossFilterChanged("cross-filter-changed"), + VizPointRightClick("vizPointRightClick"), + InsertIntoSlide("insertInToSlide"), + FilterChanged("filterChanged"), + SageEmbedQuery("sageEmbedQuery"), + SageWorksheetUpdated("sageWorksheetUpdated"), + UpdateConnection("updateConnection"), + CreateConnection("createConnection"), + UpdatePersonalisedView("updatePersonalisedView"), + SavePersonalisedView("savePersonalisedView"), + ResetLiveboard("resetLiveboard"), + DeletePersonalisedView("deletePersonalisedView"), + CreateWorksheet("createWorksheet"), + AskSageInit("AskSageInit"), + Rename("rename"), + OnBeforeGetVizDataIntercept("onBeforeGetVizDataIntercept"), + ParameterChanged("parameterChanged"), + TableVizRendered("TableVizRendered"), + CreateLiveboard("createLiveboard"), + + final String value; + const EmbedEvent(this.value); +} + +enum HostEvent { + Search("search"), + DrillDown("triggerDrillDown"), + Filter("filter"), + Reload("reload"), + GetIframeUrl("GetIframeUrl"), + SetVisibleVizs("SetPinboardVisibleVizs"), + SetActiveTab("SetActiveTab"), + UpdateRuntimeFilters("UpdateRuntimeFilters"), + Navigate("Navigate"), + OpenFilter("openFilter"), + AddColumns("addColumns"), + RemoveColumn("removeColumn"), + getExportRequestForCurrentPinboard("getExportRequestForCurrentPinboard"), + Pin("pin"), + LiveboardInfo("pinboardInfo"), + Schedule("subscription"), + SchedulesList("schedule-list"), + ExportTML("exportTSL"), + EditTML("editTSL"), + UpdateTML("updateTSL"), + DownloadAsPdf("downloadAsPdf"), + MakeACopy("makeACopy"), + Remove("delete"), + Explore("explore"), + CreateMonitor("createMonitor"), + ManageMonitor("manageMonitor"), + Edit("edit"), + CopyLink("embedDocument"), + Present("present"), + GetTML("getTML"), + ShowUnderlyingData("showUnderlyingData"), + Delete("onDeleteAnswer"), + SpotIQAnalyze("spotIQAnalyze"), + Download("downloadAsPng"), + DownloadAsPng("downloadAsPng"), + DownloadAsCsv("downloadAsCSV"), + DownloadAsXlsx("downloadAsXLSX"), + Share("share"), + Save("save"), + SyncToSheets("sync-to-sheets"), + SyncToOtherApps("sync-to-other-apps"), + ManagePipelines("manage-pipeline"), + ResetSearch("resetSearch"), + GetFilters("getFilters"), + UpdateFilters("updateFilters"), + GetTabs("getTabs"), + SetVisibleTabs("SetPinboardVisibleTabs"), + SetHiddenTabs("SetPinboardHiddenTabs"), + UpdateSageQuery("updateSageQuery"), + GetAnswerSession("getAnswerSession"), + AskSage("AskSage"), + UpdateCrossFilter("UpdateCrossFilter"), + ResetLiveboardPersonalisedView("ResetLiveboardPersonalisedView"), + UpdateParameters("UpdateParameters"), + GetParameters("GetParameters"), + UpdatePersonalisedView("UpdatePersonalisedView"), + InfoSuccess("InfoSuccess"), + SaveAnswer("saveAnswer"), + UIPassthrough("UiPassthrough"), + TransformTableVizData("TransformTableVizData"), + + final String value; + const HostEvent(this.value); +} + +enum DataSourceVisualMode { + Hidden("hide"), + Collapsed("collapse"), + Expanded("expand"), + + final String value; + const DataSourceVisualMode(this.value); +} + +enum Param { + EmbedApp("embedApp"), + DataSources("dataSources"), + DataSourceMode("dataSourceMode"), + DisableActions("disableAction"), + DisableActionReason("disableHint"), + ForceTable("forceTable"), + preventLiveboardFilterRemoval("preventPinboardFilterRemoval"), + SearchQuery("searchQuery"), + HideActions("hideAction"), + HideObjects("hideObjects"), + HostAppUrl("hostAppUrl"), + EnableVizTransformations("enableVizTransform"), + EnableSearchAssist("enableSearchAssist"), + EnablePendoHelp("enablePendoHelp"), + HideResult("hideResult"), + UseLastSelectedDataSource("useLastSelectedSources"), + Tag("tag"), + AutoLogin("autoLogin"), + searchTokenString("searchTokenString"), + executeSearch("executeSearch"), + fullHeight("isFullHeightPinboard"), + livedBoardEmbed("isLiveboardEmbed"), + searchEmbed("isSearchEmbed"), + vizEmbed("isVizEmbed"), + Version("sdkVersion"), + ViewPortHeight("viewPortHeight"), + ViewPortWidth("viewPortWidth"), + VisibleActions("visibleAction"), + DisableLoginRedirect("disableLoginRedirect"), + visibleVizs("pinboardVisibleVizs"), + LiveboardV2Enabled("isPinboardV2Enabled"), + DataPanelV2Enabled("enableDataPanelV2"), + ShowAlerts("showAlerts"), + Locale("locale"), + CustomStyle("customStyle"), + ForceSAMLAutoRedirect("forceSAMLAutoRedirect"), + AuthType("authType"), + IconSpriteUrl("iconSprite"), + cookieless("cookieless"), + ContextMenuTrigger("contextMenuEnabledOnWhichClick"), + LinkOverride("linkOverride"), + blockNonEmbedFullAppAccess("blockNonEmbedFullAppAccess"), + ShowInsertToSlide("insertInToSlide"), + PrimaryNavHidden("primaryNavHidden"), + HideProfleAndHelp("profileAndHelpInNavBarHidden"), + HideApplicationSwitcher("applicationSwitcherHidden"), + HideOrgSwitcher("orgSwitcherHidden"), + IsSageEmbed("isSageEmbed"), + HideWorksheetSelector("hideWorksheetSelector"), + DisableWorksheetChange("disableWorksheetChange"), + HideSourceSelection("hideSourceSelection"), + DisableSourceSelection("disableSourceSelection"), + HideEurekaResults("hideEurekaResults"), + HideEurekaSuggestions("hideEurekaSuggestions"), + HideAutocompleteSuggestions("hideAutocompleteSuggestions"), + HideLiveboardHeader("hideLiveboardHeader"), + ShowLiveboardDescription("showLiveboardDescription"), + ShowLiveboardTitle("showLiveboardTitle"), + HiddenTabs("hideTabs"), + VisibleTabs("visibleTabs"), + HideTabPanel("hideTabPanel"), + HideSampleQuestions("hideSampleQuestions"), + WorksheetId("worksheet"), + Query("query"), + HideHomepageLeftNav("hideHomepageLeftNav"), + ModularHomeExperienceEnabled("modularHomeExperience"), + PendoTrackingKey("additionalPendoKey"), + LiveboardHeaderSticky("isLiveboardHeaderSticky"), + IsProductTour("isProductTour"), + HideSearchBarTitle("hideSearchBarTitle"), + HideSageAnswerHeader("hideSageAnswerHeader"), + HideSearchBar("hideSearchBar"), + ClientLogLevel("clientLogLevel"), + OverrideNativeConsole("overrideConsoleLogs"), + enableAskSage("enableAskSage"), + CollapseSearchBarInitially("collapseSearchBarInitially"), + DataPanelCustomGroupsAccordionInitialState("dataPanelCustomGroupsAccordionInitialState"), + EnableCustomColumnGroups("enableCustomColumnGroups"), + DateFormatLocale("dateFormatLocale"), + NumberFormatLocale("numberFormatLocale"), + CurrencyFormat("currencyFormat"), + Enable2ColumnLayout("enable2ColumnLayout"), + IsFullAppEmbed("isFullAppEmbed"), + IsOnBeforeGetVizDataInterceptEnabled("isOnBeforeGetVizDataInterceptEnabled"), + FocusSearchBarOnRender("focusSearchBarOnRender"), + DisableRedirectionLinksInNewTab("disableRedirectionLinksInNewTab"), + HomePageSearchBarMode("homePageSearchBarMode"), + ShowLiveboardVerifiedBadge("showLiveboardVerifiedBadge"), + ShowLiveboardReverifyBanner("showLiveboardReverifyBanner"), + LiveboardHeaderV2("isLiveboardHeaderV2Enabled"), + HideIrrelevantFiltersInTab("hideIrrelevantFiltersAtTabLevel"), + SpotterEnabled("isSpotterExperienceEnabled"), + IsUnifiedSearchExperienceEnabled("isUnifiedSearchExperienceEnabled"), + OverrideOrgId("orgId"), + OauthPollingInterval("oAuthPollingInterval"), + IsForceRedirect("isForceRedirect"), + DataSourceId("dataSourceId"), + preAuthCache("preAuthCache"), + ShowSpotterLimitations("showSpotterLimitations"), + + final String value; + const Param(this.value); +} + +enum Action { + Save("save"), + Update("update"), + SaveUntitled("saveUntitled"), + SaveAsView("saveAsView"), + MakeACopy("makeACopy"), + EditACopy("editACopy"), + CopyLink("embedDocument"), + ResetLayout("resetLayout"), + Schedule("subscription"), + SchedulesList("schedule-list"), + Share("share"), + AddFilter("addFilter"), + AddDataPanelObjects("addDataPanelObjects"), + ConfigureFilter("configureFilter"), + CollapseDataSources("collapseDataSources"), + CollapseDataPanel("collapseDataPanel"), + ChooseDataSources("chooseDataSources"), + AddFormula("addFormula"), + AddParameter("addParameter"), + AddColumnSet("addSimpleCohort"), + AddQuerySet("addAdvancedCohort"), + SearchOnTop("searchOnTop"), + SpotIQAnalyze("spotIQAnalyze"), + ExplainInsight("explainInsight"), + SpotIQFollow("spotIQFollow"), + ShareViz("shareViz"), + ReplaySearch("replaySearch"), + ShowUnderlyingData("showUnderlyingData"), + Download("download"), + DownloadAsPng("downloadAsPng"), + DownloadAsPdf("downloadAsPdf"), + DownloadAsCsv("downloadAsCSV"), + DownloadAsXlsx("downloadAsXLSX"), + DownloadTrace("downloadTrace"), + ExportTML("exportTSL"), + ImportTML("importTSL"), + UpdateTML("updateTSL"), + EditTML("editTSL"), + Present("present"), + ToggleSize("toggleSize"), + Edit("edit"), + EditTitle("editTitle"), + Remove("delete"), + Ungroup("ungroup"), + Describe("describe"), + Relate("relate"), + CustomizeHeadlines("customizeHeadlines"), + PinboardInfo("pinboardInfo"), + LiveboardInfo("pinboardInfo"), + SendAnswerFeedback("sendFeedback"), + DownloadEmbraceQueries("downloadEmbraceQueries"), + Pin("pin"), + AnalysisInfo("analysisInfo"), + Subscription("subscription"), + Explore("explore"), + DrillInclude("context-menu-item-include"), + DrillExclude("context-menu-item-exclude"), + CopyToClipboard("context-menu-item-copy-to-clipboard"), + CopyAndEdit("context-menu-item-copy-and-edit"), + DrillEdit("context-menu-item-edit"), + EditMeasure("context-menu-item-edit-measure"), + Separator("context-menu-item-separator"), + DrillDown("DRILL"), + RequestAccess("requestAccess"), + QueryDetailsButtons("queryDetailsButtons"), + AnswerDelete("onDeleteAnswer"), + AnswerChartSwitcher("answerChartSwitcher"), + AddToFavorites("addToFavorites"), + EditDetails("editDetails"), + CreateMonitor("createMonitor"), + ReportError("reportError"), + SyncToSheets("sync-to-sheets"), + SyncToOtherApps("sync-to-other-apps"), + ManagePipelines("manage-pipeline"), + CrossFilter("context-menu-item-cross-filter"), + SyncToSlack("syncToSlack"), + SyncToTeams("syncToTeams"), + RemoveCrossFilter("context-menu-item-remove-cross-filter"), + AxisMenuAggregate("axisMenuAggregate"), + AxisMenuTimeBucket("axisMenuTimeBucket"), + AxisMenuFilter("axisMenuFilter"), + AxisMenuConditionalFormat("axisMenuConditionalFormat"), + AxisMenuSort("axisMenuSort"), + AxisMenuGroup("axisMenuGroup"), + AxisMenuPosition("axisMenuPosition"), + AxisMenuRename("axisMenuRename"), + AxisMenuEdit("axisMenuEdit"), + AxisMenuNumberFormat("axisMenuNumberFormat"), + AxisMenuTextWrapping("axisMenuTextWrapping"), + AxisMenuRemove("axisMenuRemove"), + InsertInToSlide("insertInToSlide"), + RenameModalTitleDescription("renameModalTitleDescription"), + RequestVerification("requestVerification"), + MarkAsVerified("markAsVerified"), + AddTab("addTab"), + EnableContextualChangeAnalysis("enableContextualChangeAnalysis"), + ShowSageQuery("showSageQuery"), + EditSageAnswer("editSageAnswer"), + SageAnswerFeedback("sageAnswerFeedback"), + ModifySageAnswer("modifySageAnswer"), + MoveToTab("onContainerMove"), + ManageMonitor("manageMonitor"), + PersonalisedViewsDropdown("personalisedViewsDropdown"), + LiveboardUsers("liveboardUsers"), + TML("tml"), + CreateLiveboard("createLiveboard"), + VerifiedLiveboard("verifiedLiveboard"), + AskAi("AskAi"), + AddToWatchlist("addToWatchlist"), + RemoveFromWatchlist("removeFromWatchlist"), + OrganiseFavourites("organiseFavourites"), + AIHighlights("AIHighlights"), + EditScheduleHomepage("editScheduleHomepage"), + PauseScheduleHomepage("pauseScheduleHomepage"), + ViewScheduleRunHomepage("viewScheduleRunHomepage"), + UnsubscribeScheduleHomepage("unsubscribeScheduleHomepage"), + ManageTags("manageTags"), + DeleteScheduleHomepage("deleteScheduleHomepage"), + KPIAnalysisCTA("kpiAnalysisCTA"), + DisableChipReorder("disableChipReorder"), + ChangeFilterVisibilityInTab("changeFilterVisibilityInTab"), + PreviewDataSpotter("previewDataSpotter"), + ResetSpotterChat("resetSpotterChat"), + SpotterFeedback("spotterFeedback"), + EditPreviousPrompt("editPreviousPrompt"), + DeletePreviousPrompt("deletePreviousPrompt"), + EditTokens("editTokens"), + + final String value; + const Action(this.value); +} + +enum PrefetchFeatures { + FullApp("FullApp"), + SearchEmbed("SearchEmbed"), + LiveboardEmbed("LiveboardEmbed"), + VizEmbed("VizEmbed"), + + final String value; + const PrefetchFeatures(this.value); +} + +enum ContextMenuTriggerOptions { + LEFT_CLICK("left-click"), + RIGHT_CLICK("right-click"), + BOTH_CLICKS("both-clicks"), + + final String value; + const ContextMenuTriggerOptions(this.value); +} + +enum LogLevel { + SILENT("SILENT"), + ERROR("ERROR"), + WARN("WARN"), + INFO("INFO"), + DEBUG("DEBUG"), + TRACE("TRACE"), + + final String value; + const LogLevel(this.value); +} \ No newline at end of file diff --git a/auth_interface.dart b/auth_interface.dart new file mode 100644 index 00000000..9a6d0e2f --- /dev/null +++ b/auth_interface.dart @@ -0,0 +1,29 @@ +SessionInterface { sessionId: string, genNo: number, acSession: { sessionId: string; genNo: number; } } + +customCssInterface { variables: import("/Users/justin.mathew/Documents/source/ts_code_workspace/visual-embed-sdk/src/css-variables").CustomCssVariables, rules_UNSTABLE: { [selector: string]: { [declaration: string]: string; }; } } + +CustomStyles { customCSSUrl: string, customCSS: import("/Users/justin.mathew/Documents/source/ts_code_workspace/visual-embed-sdk/src/types").customCssInterface } + +CustomisationsInterface { style: import("/Users/justin.mathew/Documents/source/ts_code_workspace/visual-embed-sdk/src/types").CustomStyles, content: { [key: string]: any; strings?: Record; }, iconSpriteUrl: string } + +EmbedConfig { thoughtSpotHost: string, authType: import("/Users/justin.mathew/Documents/source/ts_code_workspace/visual-embed-sdk/src/types").AuthType, authEndpoint: string, getAuthToken: () => Promise, username: string, password: string, noRedirect: boolean, inPopup: boolean, redirectPath: string, basepath: string, shouldEncodeUrlQueryParams: boolean, suppressNoCookieAccessAlert: boolean, ignoreNoCookieAccess: boolean, autoLogin: boolean, disableLoginRedirect: boolean, loginFailedMessage: string, callPrefetch: boolean, queueMultiRenders: boolean, detectCookieAccessSlow: boolean, suppressSearchEmbedBetaWarning: boolean, suppressSageEmbedBetaWarning: boolean, customizations: import("/Users/justin.mathew/Documents/source/ts_code_workspace/visual-embed-sdk/src/types").CustomisationsInterface, authTriggerContainer: string, useEventForSAMLPopup: boolean, authTriggerText: string, blockNonEmbedFullAppAccess: boolean, hostConfig: { hostUserGuid: string; hostClusterId: string; hostClusterName: string; }, pendoTrackingKey: string, suppressErrorAlerts: boolean, logLevel: import("/Users/justin.mathew/Documents/source/ts_code_workspace/visual-embed-sdk/src/types").LogLevel, disableSDKTracking: boolean, dateFormatLocale: string, numberFormatLocale: string, currencyFormat: string, disableTokenVerification: boolean, disableLoginFailurePage: boolean, additionalFlags: { [key: string]: string | number | boolean; }, customVariablesForThirdPartyTools: Record, disablePreauthCache: boolean } + +LayoutConfig { } + +FrameParams { width: string | number, height: string | number, loading: "lazy" | "eager" | "auto" } + +ViewConfig { layoutConfig: import("/Users/justin.mathew/Documents/source/ts_code_workspace/visual-embed-sdk/src/types").LayoutConfig, frameParams: import("/Users/justin.mathew/Documents/source/ts_code_workspace/visual-embed-sdk/src/types").FrameParams, theme: string, styleSheet__unstable: string, disabledActions: import("/Users/justin.mathew/Documents/source/ts_code_workspace/visual-embed-sdk/src/types").Action[], disabledActionReason: string, hiddenActions: import("/Users/justin.mathew/Documents/source/ts_code_workspace/visual-embed-sdk/src/types").Action[], visibleActions: import("/Users/justin.mathew/Documents/source/ts_code_workspace/visual-embed-sdk/src/types").Action[], showAlerts: boolean, runtimeFilters: import("/Users/justin.mathew/Documents/source/ts_code_workspace/visual-embed-sdk/src/types").RuntimeFilter[], runtimeParameters: import("/Users/justin.mathew/Documents/source/ts_code_workspace/visual-embed-sdk/src/types").RuntimeParameter[], locale: string, additionalFlags: { [key: string]: string | number | boolean; }, customizations: import("/Users/justin.mathew/Documents/source/ts_code_workspace/visual-embed-sdk/src/types").CustomisationsInterface, insertAsSibling: boolean, contextMenuTrigger: import("/Users/justin.mathew/Documents/source/ts_code_workspace/visual-embed-sdk/src/types").ContextMenuTriggerOptions, linkOverride: boolean, insertInToSlide: boolean, usePrerenderedIfAvailable: boolean, excludeRuntimeFiltersfromURL: boolean, hiddenTabs: string[], hiddenHomepageModules: import("/Users/justin.mathew/Documents/source/ts_code_workspace/visual-embed-sdk/src/types").HomepageModule[], reorderedHomepageModules: import("/Users/justin.mathew/Documents/source/ts_code_workspace/visual-embed-sdk/src/types").HomepageModule[], visibleTabs: string[], hiddenHomeLeftNavItems: import("/Users/justin.mathew/Documents/source/ts_code_workspace/visual-embed-sdk/src/types").HomeLeftNavItem[], preRenderId: string, doNotTrackPreRenderSize: boolean, embedComponentType: string, excludeRuntimeParametersfromURL: boolean, enableV2Shell_experimental: boolean, collapseSearchBar: boolean, disableRedirectionLinksInNewTab: boolean, dataPanelV2: boolean, enableCustomColumnGroups: boolean, overrideOrgId: number } + +RuntimeFilter { columnName: string, operator: import("/Users/justin.mathew/Documents/source/ts_code_workspace/visual-embed-sdk/src/types").RuntimeFilterOp, values: (string | number | bigint | boolean)[] } + +RuntimeParameter { name: string, value: string | number | boolean } + +AnswerServiceType { getAnswer: (offset: number, batchSize: number) => any } + +ColumnValue { column: { [key: string]: any; id: string; name: string; dataType: string; }, value: string | number | boolean | { v: { s: number; e: number; }; } } + +VizPoint { selectedAttributes: import("/Users/justin.mathew/Documents/source/ts_code_workspace/visual-embed-sdk/src/types").ColumnValue[], selectedMeasures: import("/Users/justin.mathew/Documents/source/ts_code_workspace/visual-embed-sdk/src/types").ColumnValue[] } + +CustomActionPayload { contextMenuPoints: { clickedPoint: import("/Users/justin.mathew/Documents/source/ts_code_workspace/visual-embed-sdk/src/types").VizPoint; selectedPoints: import("/Users/justin.mathew/Documents/source/ts_code_workspace/visual-embed-sdk/src/types").VizPoint[]; }, embedAnswerData: { [key: string]: any; name: string; id: string; sources: { header: { guid: string; }; }; columns: any[]; data: any[]; }, session: import("/Users/justin.mathew/Documents/source/ts_code_workspace/visual-embed-sdk/src/types").SessionInterface, vizId: string } + +DefaultAppInitData { customisations: import("/Users/justin.mathew/Documents/source/ts_code_workspace/visual-embed-sdk/src/types").CustomisationsInterface, authToken: string, runtimeFilterParams: string, runtimeParameterParams: string, hiddenHomepageModules: import("/Users/justin.mathew/Documents/source/ts_code_workspace/visual-embed-sdk/src/types").HomepageModule[], reorderedHomepageModules: string[], hostConfig: Record, hiddenHomeLeftNavItems: string[], customVariablesForThirdPartyTools: Record } \ No newline at end of file diff --git a/auth_models.dart b/auth_models.dart new file mode 100644 index 00000000..872151b2 --- /dev/null +++ b/auth_models.dart @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/my.dart b/my.dart new file mode 100644 index 00000000..64054dd7 --- /dev/null +++ b/my.dart @@ -0,0 +1,3824 @@ +/** + * The authentication mechanism for allowing access to the + * the embedded app + * @group Authentication / Init + */ +enum AuthType { + /** + * No authentication on the SDK. Pass-through to the embedded App. Alias for + * `Passthrough`. + * @example + * ```js + * init({ + * // ... + * authType: AuthType.None, + * }); + * ``` + */ + None("None"), + /** + * Passthrough SSO to the embedded application within the iframe. Requires least + * configuration, but may not be supported by all IDPs. This will behave like `None` + * if SSO is not configured on ThoughtSpot. + * + * To use this: + * Your SAML or OpenID provider must allow iframe redirects. + * For example, if you are using Okta as IdP, you can enable iframe embedding. + * @example + * ```js + * init({ + * // ... + * authType: AuthType.EmbeddedSSO, + * }); + * ``` + * @version: SDK: 1.15.0 | ThoughtSpot: 8.8.0.cl + */ + EmbeddedSSO("EmbeddedSSO"), + /** + * SSO using SAML + * @deprecated Use {@link SAMLRedirect} instead + * @hidden + */ + SSO("SSO_SAML"), + /** + * SSO using SAML + * @deprecated Use {@link SAMLRedirect} instead + * @hidden + */ + SAML("SSO_SAML"), + /** + * SSO using SAML + * Makes the host application redirect to the SAML IdP. Use this + * if your IdP does not allow itself to be embedded. + * + * This redirects the host application to the SAML IdP. The host application + * will be redirected back to the ThoughtSpot app after authentication. + * @example + * ```js + * init({ + * // ... + * authType: AuthType.SAMLRedirect, + * }); + * ``` + * + * This opens the SAML IdP in a popup window. The popup is triggered + * when the user clicks the trigger button. The popup window will be + * closed automatically after authentication. + * @example + * ```js + * init({ + * // ... + * authType: AuthType.SAMLRedirect, + * authTriggerText: 'Login with SAML', + * authTriggerContainer: '#embed-container', + * inPopup: true, + * }); + * ``` + * + * Can also use the event to trigger the popup flow. Works the same + * as the above example. + * @example + * ```js + * const authEE = init({ + * // ... + * authType: AuthType.SAMLRedirect, + * inPopup: true, + * }); + * + * someButtonOnYourPage.addEventListener('click', () => { + * authEE.emit(AuthEvent.TRIGGER_SSO_POPUP); + * }); + * ``` + */ + SAMLRedirect("SSO_SAML"), + /** + * SSO using OIDC + * @hidden + * @deprecated Use {@link OIDCRedirect} instead + */ + OIDC("SSO_OIDC"), + /** + * SSO using OIDC + * Will make the host application redirect to the OIDC IdP. + * See code samples in {@link SAMLRedirect}. + */ + OIDCRedirect("SSO_OIDC"), + /** + * Trusted authentication server + * @hidden + * @deprecated Use {@link TrustedAuth} instead + */ + AuthServer("AuthServer"), + /** + * Trusted authentication server. Use your own authentication server + * which returns a bearer token, generated using the `secret_key` obtained + * from ThoughtSpot. + * @example + * ```js + * init({ + * // ... + * authType: AuthType.TrustedAuthToken, + * getAuthToken: () => { + * return fetch('https://my-backend.app/ts-token') + * .then((response) => response.json()) + * .then((data) => data.token); + * } + * }); + * ``` + */ + TrustedAuthToken("AuthServer"), + /** + * Trusted authentication server Cookieless, Use your own authentication + * server which returns a bearer token, generated using the `secret_key` + * obtained from ThoughtSpot. This uses a cookieless authentication + * approach, recommended to bypass the third-party cookie-blocking restriction + * implemented by some browsers. + * @example + * ```js + * init({ + * // ... + * authType: AuthType.TrustedAuthTokenCookieless, + * getAuthToken: () => { + * return fetch('https://my-backend.app/ts-token') + * .then((response) => response.json()) + * .then((data) => data.token); + * } + * ``` + * @version SDK: 1.22.0| ThoughtSpot: 9.3.0.cl, 9.5.1.sw + */ + TrustedAuthTokenCookieless("AuthServerCookieless"), + /** + * Use the ThoughtSpot login API to authenticate to the cluster directly. + * + * Warning: This feature is primarily intended for developer testing. It is + * strongly advised not to use this authentication method in production. + */ + Basic("Basic"); + + final String value; + const AuthType(this.value); +} + +/** + * + * This option does not apply to the classic homepage experience. + * To access the updated modular homepage, + * set `modularHomeExperience` to `true` + * (available as Early Access feature in 9.12.5.cl). + * + */ +enum HomeLeftNavItem { + /** + * @version SDK: 1.28.0| ThoughtSpot: 9.12.5.cl + */ + SearchData("search-data"), + /** + * @version SDK: 1.28.0| ThoughtSpot: 9.12.5.cl + */ + Home("insights-home"), + /** + * @version SDK: 1.28.0| ThoughtSpot: 9.12.5.cl + */ + Liveboards("liveboards"), + /** + * @version SDK: 1.28.0| ThoughtSpot: 9.12.5.cl + */ + Answers("answers"), + /** + * @version SDK: 1.28.0| ThoughtSpot: 9.12.5.cl + */ + MonitorSubscription("monitor-alerts"), + /** + * @version SDK: 1.28.0| ThoughtSpot: 9.12.5.cl + */ + SpotIQAnalysis("spotiq-analysis"), + /** + * @version SDK: 1.34.0| ThoughtSpot: 10.3.0.cl + */ + LiveboardSchedules("liveboard-schedules"); + + final String value; + const HomeLeftNavItem(this.value); +} + +/** + * A map of the supported runtime filter operations + */ +enum RuntimeFilterOp { + /** + * Equals + */ + EQ("EQ"), + /** + * Does not equal + */ + NE("NE"), + /** + * Less than + */ + LT("LT"), + /** + * Less than or equal to + */ + LE("LE"), + /** + * Greater than + */ + GT("GT"), + /** + * Greater than or equal to + */ + GE("GE"), + /** + * Contains + */ + CONTAINS("CONTAINS"), + /** + * Begins with + */ + BEGINS_WITH("BEGINS_WITH"), + /** + * Ends with + */ + ENDS_WITH("ENDS_WITH"), + /** + * Between, inclusive of higher value + */ + BW_INC_MAX("BW_INC_MAX"), + /** + * Between, inclusive of lower value + */ + BW_INC_MIN("BW_INC_MIN"), + /** + * Between, inclusive of both higher and lower value + */ + BW_INC("BW_INC"), + /** + * Between, non-inclusive + */ + BW("BW"), + /** + * Is included in this list of values + */ + IN("IN"), + /** + * Is not included in this list of values + */ + NOT_IN("NOT_IN"); + + final String value; + const RuntimeFilterOp(this.value); +} + +/** + * Home page module that can be hidden. + * **Note**: This option does not apply to the classic homepage. + * To access the updated modular homepage, set + * `modularHomeExperience` to `true` (available as Early Access feature in 9.12.5.cl). + * @version SDK: 1.28.0 | ThoughtSpot: 9.12.5.cl, 10.1.0.sw + */ +enum HomepageModule { + /** + * Search bar + */ + Search("SEARCH"), + /** + * kPI watchlist module + */ + Watchlist("WATCHLIST"), + /** + * favorite objects + */ + Favorite("FAVORITE"), + /** + * List of answers and Liveboards + */ + MyLibrary("MY_LIBRARY"), + /** + * Trending list + */ + Trending("TRENDING"), + /** + * Learning videos + */ + Learning("LEARNING"); + + final String value; + const HomepageModule(this.value); +} + +/** + * Event types emitted by the embedded ThoughtSpot application. + * + * To add an event listener use the corresponding + * {@link LiveboardEmbed.on} or {@link AppEmbed.on} or {@link SearchEmbed.on} method. + * @example + * ```js + * import { EmbedEvent } from '@thoughtspot/visual-embed-sdk'; + * // Or + * // const { EmbedEvent } = window.tsembed; + * + * // create the liveboard embed. + * + * liveboardEmbed.on(EmbedEvent.Drilldown, (drilldown) => { + * console.log('Drilldown event', drilldown); + * })); + * ``` + * + * If you are using React components for embedding, you can register to any + * events from the `EmbedEvent` list by using the `on` convention. + * For example,`onAlert`, `onCopyToClipboard` and so on. + * @example + * ```js + * // ... + * const MyComponent = ({ dataSources }) => { + * const onLoad = () => { + * console.log(EmbedEvent.Load, {}); + * }; + * + * return ( + * + * ); + * }; + * ``` + * @group Events + */ +enum EmbedEvent { + /** + * Rendering has initialized. + * @example + *```js + * liveboardEmbed.on(EmbedEvent.Init, showLoader) + * //show a loader + * function showLoader() { + * document.getElementById("loader"); + * } + *``` + * @returns timestamp - The timestamp when the event was generated. + */ + Init("init"), + /** + * Authentication has either succeeded or failed. + * @version SDK: 1.1.0 | ThoughtSpot: ts7.may.cl, 8.4.1.sw + * @example + *```js + * appEmbed.on(EmbedEvent.AuthInit, payload => { + * console.log('AuthInit', payload); + * }) + *``` + * @returns isLoggedIn - A Boolean specifying whether authentication was successful. + */ + AuthInit("authInit"), + /** + * The embed object container has loaded. + * @returns timestamp - The timestamp when the event was generated. + * @version SDK: 1.1.0 | ThoughtSpot: ts7.may.cl, 8.4.1.sw + * @example + *```js + * liveboardEmbed.on(EmbedEvent.Load, hideLoader) + * //hide loader + * function hideLoader() { + * document.getElementById("loader"); + * } + *``` + */ + Load("load"), + /** + * Data pertaining to an Answer or Liveboard is received + * @return data - The Answer or Liveboard data + * @version SDK: 1.1.0 | ThoughtSpot: ts7.may.cl, 8.4.1.sw + * @example + *```js + * liveboardEmbed.on(EmbedEvent.Data, payload => { + * console.log('data', payload); + * }) + *``` + * @important + */ + Data("data"), + /** + * Search query has been updated by the user. + * @version SDK: 1.4.0 | ThoughtSpot: ts7.sep.cl, 8.4.1.sw + * @example + *```js + * searchEmbed.on(EmbedEvent.QueryChanged, payload => console.log('data', payload)) + *``` + */ + QueryChanged("queryChanged"), + /** + * A drill-down operation has been performed. + * @version SDK: 1.1.0 | ThoughtSpot: ts7.may.cl, 8.4.1.sw + * @returns additionalFilters - Any additional filters applied + * @returns drillDownColumns - The columns on which drill down was performed + * @returns nonFilteredColumns - The columns that were not filtered + * @example + *```js + * searchEmbed.on(EmbedEvent.DrillDown, { + * points: { + * clickedPoint, + * selectedPoints: selectedPoint + * }, + * autoDrillDown: true, + * }) + *``` + * In this example, `VizPointDoubleClick` event is used for + * triggering the `DrillDown` event when an area or specific + * data point on a table or chart is double-clicked. + * @example + *```js + * searchEmbed.on(EmbedEvent.VizPointDoubleClick, (payload) => { + * console.log(payload); + * const clickedPoint = payload.data.clickedPoint; + * const selectedPoint = payload.data.selectedPoints; + * console.log('>>> called', clickedPoint); + * embed.trigger(HostEvent.DrillDown, { + * points: { + * clickedPoint, + * selectedPoints: selectedPoint + * }, + * autoDrillDown: true, + * }) + * }) + *``` + */ + Drilldown("drillDown"), + /** + * One or more data sources have been selected. + * @returns dataSourceIds - the list of data sources + * @version SDK: 1.1.0 | ThoughtSpot: ts7.may.cl, 8.4.1.sw + * @example + * ```js + * searchEmbed.on(EmbedEvent.DataSourceSelected, payload => { + * console.log('DataSourceSelected', payload); + * }) + * ``` + */ + DataSourceSelected("dataSourceSelected"), + /** + * One or more data columns have been selected. + * @returns columnIds - the list of columns + * @version SDK: 1.10.0 | ThoughtSpot: 8.2.0.cl, 8.4.1.sw + * @example + * ```js + * appEmbed.on(EmbedEvent.AddRemoveColumns, payload => { + * console.log('AddRemoveColumns', payload); + * }) + * ``` + */ + AddRemoveColumns("addRemoveColumns"), + /** + * A custom action has been triggered. + * @returns actionId - ID of the custom action + * @returns payload {@link CustomActionPayload} - Response payload with the + * Answer or Liveboard data + * @version SDK: 1.1.0 | ThoughtSpot: ts7.may.cl, 8.4.1.sw + * @example + * ```js + * appEmbed.on(EmbedEvent.customAction, payload => { + * const data = payload.data; + * if (data.id === 'insert Custom Action ID here') { + * console.log('Custom Action event:', data.embedAnswerData); + * } + * }) + * ``` + */ + CustomAction("customAction"), + /** + * Listen to double click actions on a visualization. + * @return ContextMenuInputPoints - Data point that is double-clicked + * @version SDK: 1.5.0 | ThoughtSpot: ts7.oct.cl, 7.2.1 + * @example + * ```js + * livebaordEmbed.on(EmbedEvent.VizPointDoubleClick, payload => { + * console.log('VizPointDoubleClick', payload); + * }) + * ``` + */ + VizPointDoubleClick("vizPointDoubleClick"), + /** + * Listen to clicks on a visualization in a Liveboard or Search result. + * @return viz, clickedPoint - metadata about the point that is clicked + * @version SDK: 1.11.0 | ThoughtSpot: 8.3.0.cl, 8.4.1.sw + * @important + * @example + * ```js + * embed.on(EmbedEvent.VizPointClick, ({data}) => { + * console.log( + * data.vizId, // viz id + * data.clickedPoint.selectedAttributes[0].value, + * data.clickedPoint.selectedAttributes[0].column.name, + * data.clickedPoint.selectedMeasures[0].value, + * data.clickedPoint.selectedMeasures[0].column.name, + * ) + * }); + * ``` + */ + VizPointClick("vizPointClick"), + /** + * An error has occurred. This event is fired for the following error types: + * + * `API` - API call failure error. + * `FULLSCREEN` - Error when presenting a Liveboard or visualization in full screen + * mode. `SINGLE_VALUE_FILTER` - Error due to multiple values in the single value + * filter. `NON_EXIST_FILTER` - Error due to a non-existent filter. + * `INVALID_DATE_VALUE` - Invalid date value error. + * `INVALID_OPERATOR` - Use of invalid operator during filter application. + * + * For more information, see https://developers.thoughtspot.com/docs/events-app-integration#errorType + * @returns error - An error object or message + * @version SDK: 1.1.0 | ThoughtSpot: ts7.may.cl, 8.4.1.sw + * @example + * ```js + * // API error + * SearchEmbed.on(EmbedEvent.Error, (error) => { + * console.log(error); + * // { type: "Error", data: { errorType: "API", error: { message: '...', error: '...' } } } + * }); + * ``` + * @example + * ```js + * // Fullscreen error (Errors during presenting of a liveboard) + * LiveboardEmbed.on(EmbedEvent.Error, (error) => { + * console.log(error); + * // { type: "Error", data: { errorType: "FULLSCREEN", error: { + * // message: "Fullscreen API is not enabled", + * // stack: "..." + * // } }} + * }) + * ``` + */ + Error("Error"), + /** + * The embedded object has sent an alert. + * @returns alert - An alert object + * @version SDK: 1.1.0 | ThoughtSpot: ts7.may.cl, 8.4.1.sw + * @example + * ```js + * searchEmbed.on(EmbedEvent.Alert) + * ``` + */ + Alert("alert"), + /** + * The ThoughtSpot authentication session has expired. + * @version SDK: 1.4.0 | ThoughtSpot: ts7.sep.cl, 8.4.1.sw + * @example + *```js + * appEmbed.on(EmbedEvent.AuthExpire, showAuthExpired) + * //show auth expired banner + * function showAuthExpired() { + * document.getElementById("authExpiredBanner"); + * } + *``` + */ + AuthExpire("ThoughtspotAuthExpired"), + /** + * ThoughtSpot failed to validate the auth session. + * @hidden + */ + AuthFailure("ThoughtspotAuthFailure"), + /** + * ThoughtSpot failed to re validate the auth session. + * @hidden + */ + IdleSessionTimeout("IdleSessionTimeout"), + /** + * ThoughtSpot failed to validate the auth session. + * @hidden + */ + AuthLogout("ThoughtspotAuthLogout"), + /** + * The height of the embedded Liveboard or visualization has been computed. + * @returns data - The height of the embedded Liveboard or visualization + * @hidden + */ + EmbedHeight("EMBED_HEIGHT"), + /** + * The center of visible iframe viewport is calculated. + * @returns data - The center of the visible Iframe viewport. + * @hidden + */ + EmbedIframeCenter("EmbedIframeCenter"), + /** + * Emitted when the **Get Data** action is initiated. + * Applicable to `SearchBarEmbed` only. + * @version SDK: 1.19.0 | ThoughtSpot: 9.0.0.cl, 9.0.1.sw + * @example + *```js + * searchbarEmbed.on(EmbedEvent.GetDataClick) + * .then(data => { + * console.log('Answer Data:', data); + * }) + *``` + */ + GetDataClick("getDataClick"), + /** + * Detects the route change. + * @version SDK: 1.7.0 | ThoughtSpot: 8.0.0.cl, 8.4.1.sw + * @example + *```js + * searchEmbed.on(EmbedEvent.RouteChange, payload => + * console.log('data', payload)) + *``` + */ + RouteChange("ROUTE_CHANGE"), + /** + * The v1 event type for Data + * @hidden + */ + V1Data("exportVizDataToParent"), + /** + * Emitted when the embed does not have cookie access. This happens + * when Safari and other Web browsers block third-party cookies + * are blocked by default. `NoCookieAccess` can trigger. + * @example + *```js + * appEmbed.on(EmbedEvent.NoCookieAccess) + *``` + * @version SDK: 1.1.0 | ThoughtSpot: ts7.may.cl, 7.2.1.sw + */ + NoCookieAccess("noCookieAccess"), + /** + * Emitted when SAML is complete + * @private + * @hidden + */ + SAMLComplete("samlComplete"), + /** + * Emitted when any modal is opened in the app + * @version SDK: 1.6.0 | ThoughtSpot: ts8.nov.cl, 8.4.1.sw + * @example + *```js + * appEmbed.on(EmbedEvent.DialogOpen, payload => { + * console.log('dialog open', payload); + * }) + *``` + */ + DialogOpen("dialog-open"), + /** + * Emitted when any modal is closed in the app + * @version SDK: 1.6.0 | ThoughtSpot: ts8.nov.cl, 8.4.1.sw + * @example + *```js + * appEmbed.on(EmbedEvent.DialogClose, payload => { + * console.log('dialog close', payload); + * }) + *``` + */ + DialogClose("dialog-close"), + /** + * Emitted when the Liveboard shell loads. + * You can use this event as a hook to trigger + * other events on the rendered Liveboard. + * @version SDK: 1.9.1 | ThoughtSpot: 8.1.0.cl, 8.4.1.sw + * @example + *```js + * liveboardEmbed.on(EmbedEvent.LiveboardRendered, payload => { + console.log('Liveboard is rendered', payload); + }) + *``` + * The following example shows how to trigger + * `SetVisibleVizs` event using LiveboardRendered embed event: + * @example + *```js + * const embedRef = useEmbedRef(); + * const onLiveboardRendered = () => { + * embed.trigger(HostEvent.SetVisibleVizs, ['viz1', 'viz2']); + * }; + *``` + */ + LiveboardRendered("PinboardRendered"), + /** + * Emits all events. + * @Version SDK: 1.10.0 | ThoughtSpot: 8.2.0.cl, 8.4.1.sw + * @example + *```js + * appEmbed.on(EmbedEvent.ALL, payload => { + * console.log('Embed Events', payload) + * }) + *``` + */ + ALL("*"), + /** + * Emitted when an Answer is saved in the app + * @Version SDK: 1.11.0 | ThoughtSpot: 8.3.0.cl, 8.4.1.sw + * @example + *```js + * //Emit when action starts + * searchEmbed.on(EmbedEvent.Save, payload => { + * console.log('Save', payload) + * }, { + * start: true + * }) + * //emit when action ends + * searchEmbed.on(EmbedEvent.Save, payload => { + * console.log('Save', payload) + * }) + *``` + */ + Save("save"), + /** + * Emitted when the download action is triggered on an Answer. + * + * **Note**: This event is deprecated in v1.21.0. + * To fire an event when a download action is initiated on a chart or table, + * use `EmbedEvent.DownloadAsPng`, `EmbedEvent.DownloadAsPDF`, + * `EmbedEvent.DownloadAsCSV`, or `EmbedEvent.DownloadAsXLSX` + * @version SDK: 1.11.0 | ThoughtSpot: 8.3.0.cl, 8.4.1.sw + * @example + *```js + * liveboardEmbed.on(EmbedEvent.Download, { + * vizId: '730496d6-6903-4601-937e-2c691821af3c' + * }) + *``` + */ + Download("download"), + /** + * Emitted when the download action is triggered on an Answer. + * @version SDK: 1.21.0 | ThoughtSpot: 9.2.0.cl, 9.4.0.sw + * @example + *```js + * //emit when action starts + * searchEmbed.on(EmbedEvent.DownloadAsPng, payload => { + * console.log('download PNG', payload)}, {start: true }) + * //emit when action ends + * searchEmbed.on(EmbedEvent.DownloadAsPng, payload => { + * console.log('download PNG', payload)}) + *``` + */ + DownloadAsPng("downloadAsPng"), + /** + * Emitted when the Download as PDF action is triggered on an Answer + * @version SDK: 1.11.0 | ThoughtSpot: 8.3.0.cl, 8.4.1.sw + * @example + *```js + * //emit when action starts + * searchEmbed.on(EmbedEvent.DownloadAsPdf, payload => { + * console.log('download PDF', payload)}, {start: true }) + * //emit when action ends + * searchEmbed.on(EmbedEvent.DownloadAsPdf, payload => { + * console.log('download PDF', payload)}) + *``` + */ + DownloadAsPdf("downloadAsPdf"), + /** + * Emitted when the Download as CSV action is triggered on an Answer. + * @version SDK: 1.11.0 | ThoughtSpot: 8.3.0.cl, 8.4.1.sw + * @example + *```js + * //emit when action starts + * searchEmbed.on(EmbedEvent.DownloadAsCSV, payload => { + * console.log('download CSV', payload)}, {start: true }) + * //emit when action ends + * searchEmbed.on(EmbedEvent.DownloadAsCSV, payload => { + * console.log('download CSV', payload)}) + *``` + */ + DownloadAsCsv("downloadAsCsv"), + /** + * Emitted when the Download as XLSX action is triggered on an Answer. + * @version SDK: 1.11.0 | ThoughtSpot: 8.3.0.cl, 8.4.1.sw + * @example + *```js + * //emit when action starts + * searchEmbed.on(EmbedEvent.DownloadAsXlsx, payload => { + * console.log('download Xlsx', payload)}, { start: true }) + * //emit when action ends + * searchEmbed.on(EmbedEvent.DownloadAsXlsx, payload => { + * console.log('download Xlsx', payload)}) + *``` + */ + DownloadAsXlsx("downloadAsXlsx"), + /** + * Emitted when an Answer is deleted in the app + * @version SDK: 1.11.0 | ThoughtSpot: 8.3.0.cl, 8.4.1.sw + * @example + *```js + * //emit when action starts + * appEmbed.on(EmbedEvent.AnswerDelete, payload => { + * console.log('delete answer', payload)}, {start: true }) + * //trigger when action is completed + * appEmbed.on(EmbedEvent.AnswerDelete, payload => { + * console.log('delete answer', payload)}) + *``` + */ + AnswerDelete("answerDelete"), + /** + * Emitted when a user initiates the Pin action to + * add an Answer to a Liveboard. + * @version SDK: 1.11.0 | ThoughtSpot: 8.3.0.cl, 8.4.1.sw + * @example + *```js + * //emit when action starts + * searchEmbed.on(EmbedEvent.Pin, payload => { + * console.log('pin', payload) + * }, { + * start: true + * }) + * //emit when action ends + * searchEmbed.on(EmbedEvent.Pin, payload => { + * console.log('pin', payload) + * }) + *``` + */ + Pin("pin"), + /** + * Emitted when SpotIQ analysis is triggered + * @version SDK: 1.11.0 | ThoughtSpot: 8.3.0.cl, 8.4.1.sw + * @example + *```js + * //emit when action starts + * searchEmbed.on(EmbedEvent.SpotIQAnalyze, payload => { + * console.log('SpotIQAnalyze', payload) + * }, { + * start: true + * }) + * //emit when action ends + * searchEmbed.on(EmbedEvent.SpotIQAnalyze, payload => { + * console.log('SpotIQ analyze', payload) + * }) + *``` + */ + SpotIQAnalyze("spotIQAnalyze"), + /** + * Emitted when a user shares an object with another user or group + * @version SDK: 1.11.0 | ThoughtSpot: 8.3.0.cl, 8.4.1.sw + * @example + *```js + * //emit when action starts + * searchEmbed.on(EmbedEvent.Share, payload => { + * console.log('Share', payload) + * }, { + * start: true + * }) + * //emit when action ends + * searchEmbed.on(EmbedEvent.Share, payload => { + * console.log('Share', payload) + * }) + *``` + */ + Share("share"), + /** + * Emitted when a user clicks the **Include** action to include a specific value or + * data on a chart or table. + * @version SDK: 1.11.0 | ThoughtSpot: 8.3.0.cl, 8.4.1.sw + * @example + *```js + * appEmbed.on(EmbedEvent.DrillInclude, payload => { + * console.log('Drill include', payload); + * }) + *``` + */ + DrillInclude("context-menu-item-include"), + /** + * Emitted when a user clicks the **Exclude** action to exclude a specific value or + * data on a chart or table + * @version SDK: 1.11.0 | ThoughtSpot: 8.3.0.cl, 8.4.1.sw + * @example + *```js + * appEmbed.on(EmbedEvent.DrillExclude, payload => { + * console.log('Drill exclude', payload); + * }) + *``` + */ + DrillExclude("context-menu-item-exclude"), + /** + * Emitted when a column value is copied in the embedded app. + * @version SDK: 1.11.0 | ThoughtSpot: 8.3.0.cl, 8.4.1.sw + * @example + *```js + * seachEmbed.on(EmbedEvent.CopyToClipboard, payload => { + * console.log('copy to clipboard', payload); + * }) + *``` + */ + CopyToClipboard("context-menu-item-copy-to-clipboard"), + /** + * Emitted when a user clicks the **Update TML** action on + * embedded Liveboard. + * @version SDK: 1.11.0 | ThoughtSpot: 8.3.0.cl, 8.4.1.sw + * @example + *```js + * liveboardEmbed.on(EmbedEvent.UpdateTML) + * }) + *``` + */ + UpdateTML("updateTSL"), + /** + * Emitted when a user clicks the **Edit TML** action + * on an embedded Liveboard. + * @version SDK: 1.11.0 | ThoughtSpot: 8.3.0.cl, 8.4.1.sw + * @example + *```js + * appEmbed.on(EmbedEvent.EditTML, payload => { + * console.log('Edit TML', payload); + * }) + *``` + */ + EditTML("editTSL"), + /** + * Emitted when the **Export TML** action is triggered on an + * an embedded object in the app + * @version SDK: 1.11.0 | ThoughtSpot: 8.3.0.cl, 8.4.1.sw + * @example + *```js + * //emit when action starts + * searchEmbed.on(EmbedEvent.ExportTML, payload => { + * console.log('Export TML', payload)}, { start: true }) + * //emit when action ends + * searchEmbed.on(EmbedEvent.ExportTML, payload => { + * console.log('Export TML', payload)}) + *``` + */ + ExportTML("exportTSL"), + /** + * Emitted when an Answer is saved as a View. + * @version SDK: 1.11.0 | ThoughtSpot: 8.3.0.cl, 8.4.1.sw + * @example + *```js + * appEmbed.on(EmbedEvent.SaveAsView, payload => { + * console.log('View', payload); + * }) + *``` + */ + SaveAsView("saveAsView"), + /** + * Emitted when the user creates a copy of an Answer. + * @version SDK: 1.11.0 | ThoughtSpot: 8.3.0.cl, 8.4.1.sw + * @example + *```js + * //emit when action starts + * appEmbed.on(EmbedEvent.CopyAEdit, payload => { + * console.log('Copy and edit', payload)}, {start: true }) + * //emit when action ends + * appEmbed.on(EmbedEvent.CopyAEdit, payload => { + * console.log('Copy and edit', payload)}) + *``` + */ + CopyAEdit("copyAEdit"), + /** + * Emitted when a user clicks *Show underlying data* on an Answer. + * @version SDK: 1.11.0 | ThoughtSpot: 8.3.0.cl, 8.4.1.sw + * @example + *```js + * liveboardEmbed.on(EmbedEvent.ShowUnderlyingData, payload => { + * console.log('show data', payload); + * }) + *``` + */ + ShowUnderlyingData("showUnderlyingData"), + /** + * Emitted when an Answer is switched to a chart or table view. + * @version SDK: 1.11.0 | ThoughtSpot: 8.3.0.cl, 8.4.1.sw + * @example + *```js + * searchEmbed.on(EmbedEvent.AnswerChartSwitcher, payload => { + * console.log('switch view', payload); + * }) + *``` + */ + AnswerChartSwitcher("answerChartSwitcher"), + /** + * Internal event to communicate the initial settings back to the ThoughtSpot app + * @hidden + */ + APP_INIT("appInit"), + /** + * Emitted when a user clicks **Show Liveboard details** on a Liveboard + * @version SDK: 1.15.0 | ThoughtSpot: 8.7.0.cl, 8.8.1.sw + * @example + *```js + * liveboardEmbed.on(EmbedEvent.AnswerChartSwitcher, payload => { + * console.log('Liveboard details', payload); + * }) + *``` + */ + LiveboardInfo("pinboardInfo"), + /** + * Emitted when a user clicks on the Favorite icon on a Liveboard + * @version SDK: 1.15.0 | ThoughtSpot: 8.7.0.cl, 8.8.1.sw + * @example + *```js + * liveboardEmbed.on(EmbedEvent.AddToFavorites, payload => { + * console.log('favorites', payload); + * }) + *``` + */ + AddToFavorites("addToFavorites"), + /** + * Emitted when a user clicks **Schedule** on a Liveboard + * @version SDK: 1.15.0 | ThoughtSpot: 8.7.0.cl, 8.8.1.sw + * @example + *```js + * liveboardEmbed.on(EmbedEvent.Schedule, payload => { + * console.log(`Liveboard schedule', payload); + * }) + *``` + */ + Schedule("subscription"), + /** + * Emitted when a user clicks **Edit** on a Liveboard or visualization + * @version SDK: 1.15.0 | ThoughtSpot: 8.7.0.cl, 8.8.1.sw + * @example + *```js + * liveboardEmbed.on(EmbedEvent.Edit, payload => { + * console.log(`Liveboard edit', payload); + * }) + *``` + */ + Edit("edit"), + /** + * Emitted when a user clicks *Make a copy* on a Liveboard + * @version SDK: 1.15.0 | ThoughtSpot: 8.7.0.cl, 8.8.1.sw + * @example + *```js + * liveboardEmbed.on(EmbedEvent.MakeACopy, payload => { + * console.log(`Copy', payload); + * }) + *``` + */ + MakeACopy("makeACopy"), + /** + * Emitted when a user clicks **Present** on a Liveboard or visualization + * @version SDK: 1.15.0 | ThoughtSpot: 8.7.0.cl, 8.8.1.sw + * @example + *```js + * liveboardEmbed.on(EmbedEvent.Present) + *``` + * @example + *```js + * liveboardEmbed.on(EmbedEvent.Present, { + * vizId: '730496d6-6903-4601-937e-2c691821af3c'}) + * }) + *``` + */ + Present("present"), + /** + * Emitted when a user clicks **Delete** on a visualization + * @version SDK: 1.15.0 | ThoughtSpot: 8.7.0.cl, 8.8.1.sw + * @example + *```js + * liveboardEmbed.on(EmbedEvent.Delete, + * {vizId: '730496d6-6903-4601-937e-2c691821af3c'}) + *``` + */ + Delete("delete"), + /** + * Emitted when a user clicks Manage schedules on a Liveboard + * @version SDK: 1.15.0 | ThoughtSpot: 8.7.0.cl, 8.8.1.sw + * @example + *```js + * liveboardEmbed.on(EmbedEvent.SchedulesList) + *``` + */ + SchedulesList("schedule-list"), + /** + * Emitted when a user clicks **Cancel** in edit mode on a Liveboard + * @version SDK: 1.15.0 | ThoughtSpot: 8.7.0.cl, 8.8.1.sw + * @example + *```js + * liveboardEmbed.on(EmbedEvent.Cancel) + *``` + */ + Cancel("cancel"), + /** + * Emitted when a user clicks **Explore** on a visualization + * @version SDK: 1.15.0 | ThoughtSpot: 8.7.0.cl, 8.8.1.sw + * @example + *```js + * liveboardEmbed.on(EmbedEvent.Explore, { + * vizId: '730496d6-6903-4601-937e-2c691821af3c'}) + *``` + */ + Explore("explore"), + /** + * Emitted when a user clicks **Copy link** action on a visualization. + * @version SDK: 1.15.0 | ThoughtSpot: 8.7.0.cl, 8.8.1.sw + * @example + *```js + * liveboardEmbed.on(EmbedEvent.CopyLink, { + * vizId: '730496d6-6903-4601-937e-2c691821af3c'}) + *``` + */ + CopyLink("embedDocument"), + /** + * Emitted when a user interacts with cross filters on a + * visualization or Liveboard. + * @version SDK: 1.21.0 | ThoughtSpot: 9.2.0.cl, 9.5.0.sw + * @example + *```js + * liveboardEmbed.on(EmbedEvent.CrossFilterChanged, { + * vizId: '730496d6-6903-4601-937e-2c691821af3c'}) + *``` + */ + CrossFilterChanged("cross-filter-changed"), + /** + * Emitted when a user right clicks on a visualization (chart or table) + * @version SDK: 1.21.0 | ThoughtSpot: 9.2.0.cl, 9.5.0.sw + * @example + *```js + * LiveboardEmbed.on(EmbedEvent.VizPointRightClick, payload => { + * console.log('VizPointClick', payload) + * }) + *``` + */ + VizPointRightClick("vizPointRightClick"), + /** + * Emitted when a user clicks **Insert to slide** on a visualization + * @hidden + */ + InsertIntoSlide("insertInToSlide"), + /** + * Emitted when a user changes any filter on a Liveboard. + * Returns filter type and name, column name and ID, and runtime + * filter details. + * @example + * + *```js + * LiveboardEmbed.on(EmbedEvent.FilterChanged, (payload) => { + * console.log('payload', payload); + * }) + * + * @version SDK: 1.23.0 | ThoughtSpot: 9.4.0.cl, 9.5.0.sw + */ + FilterChanged("filterChanged"), + /** + * Emitted when a user clicks the **Go** button to initiate + * a Natural Language Search query + * @version SDK : 1.26.0 | ThoughtSpot: 9.7.0.cl, 9.8.0.sw + */ + SageEmbedQuery("sageEmbedQuery"), + /** + * Emitted when a user selects a data source on the embedded + * Natural Language Search interface. + * + * @version SDK : 1.26.0 | ThoughtSpot: 9.7.0.cl, 9.8.0.sw + */ + SageWorksheetUpdated("sageWorksheetUpdated"), + /** + * Emitted when a user updates a connection on the **Data** page + * @version SDK : 1.27.0 | ThoughtSpot: 9.8.0.cl, 9.8.0.sw + */ + UpdateConnection("updateConnection"), + /** + * Emitted when a user updates a connection on the **Data** page + * @version SDK : 1.27.0 | ThoughtSpot: 9.8.0.cl, 9.8.0.sw + */ + CreateConnection("createConnection"), + /** + * Emitted when name, status (private or public) or filter values of a + * Personalised view is updated. + * @returns viewName: string + * @returns viewId: string + * @returns liveboardId: string + * @returns isPublic: boolean + * @version SDK : 1.26.0 | ThoughtSpot: 9.7.0.cl, 9.8.0.sw + */ + UpdatePersonalisedView("updatePersonalisedView"), + /** + * Emitted when a Personalised view is saved. + * @returns viewName: string + * @returns viewId: string + * @returns liveboardId: string + * @returns isPublic: boolean + * @version SDK : 1.26.0 | ThoughtSpot: 9.7.0.cl, 9.8.0.sw + */ + SavePersonalisedView("savePersonalisedView"), + /** + * Emitted when a Liveboard is reset. + * @returns viewName: string + * @returns viewId: string + * @returns liveboardId: string + * @returns isPublic: boolean + * @version SDK : 1.26.0 | ThoughtSpot: 9.7.0.cl, 9.8.0.sw + */ + ResetLiveboard("resetLiveboard"), + /** + * Emitted when a PersonalisedView is deleted. + * @returns views: string[] + * @returns liveboardId: string + * @version SDK : 1.26.0 | ThoughtSpot: 9.7.0.cl, 9.8.0.sw + */ + DeletePersonalisedView("deletePersonalisedView"), + /** + * Emitted when a user creates a Worksheet. + * @version SDK : 1.27.0 | ThoughtSpot: 9.8.0.cl, 9.8.0.sw + */ + CreateWorksheet("createWorksheet"), + /** + * Emitted when the *Ask Sage* is initialized. + * @returns viewName: string + * @returns viewId: string + * @returns liveboardId: string + * @returns isPublic: boolean + * @version SDK : 1.29.0 | ThoughtSpot Cloud: 9.12.0.cl + */ + AskSageInit("AskSageInit"), + /** + * Emitted when a Liveboard or visualization is renamed. + * @version SDK : 1.28.0 | ThoughtSpot: 9.10.5.cl, 10.1.0.sw + */ + Rename("rename"), + /** + * + * This event can be emitted to intercept search execution initiated by + * the users and implement the logic to allow or restrict search execution. + * You can can also show custom error text if the search query must be + * restricted due to your application or business requirements. + + * Prerequisite: Set `isOnBeforeGetVizDataInterceptEnabled` to `true` + * for this embed event to get emitted. + * @param: payload + * @param: responder + * Contains elements that lets developers define whether ThoughtSpot + * should run the search, and if not, what error message + * should be shown to the user. + * + * execute: When execute returns `true`, the search will be run. + * When execute returns `false`, the search will not be executed. + * + * error: Developers can customize the error message text when `execute` + * returns `false` using the error parameter in responder. + * @version SDK : 1.29.0 | ThoughtSpot : 10.3.0.cl + * @example + *```js + * .on(EmbedEvent.OnBeforeGetVizDataIntercept, + * (payload, responder) => { + * responder({ + * data: { + * execute:false, + * error: { + * //Provide a custom error message to explain to your end user + * //why their search did not run + * errorText: "This search query cannot be run. + * Please contact your administrator for more details." + * } + * }}) + * }) + * ``` + * + *```js + * .on(EmbedEvent.OnBeforeGetVizDataIntercept, + * (payload, responder) => { + * const query = payload.data.data.answer.search_query + * responder({ + * data: { + * // returns true as long as the query does not include + * // both the 'sales' AND the 'county' column + * execute: !(query.includes("sales")&&query.includes("county")), + * error: { + * //Provide a custom error message to explain to your end user + * // why their search did not run, and which searches are accepted by your custom logic. + * errorText: "You can't use this query :" + query + ". + * The 'sales' measures can never be used at the 'county' level. + * Please try another measure, or remove 'county' from your search." + * } + * }}) + * }) + *``` + */ + OnBeforeGetVizDataIntercept("onBeforeGetVizDataIntercept"), + /** + * Emitted when parameter changes in an Answer + * or Liveboard. + * ```js + * liveboardEmbed.on(EmbedEvent.ParameterChanged, (payload) => { + * console.log('payload', payload); + * }) + *``` + * @version SDK : 1.29.0 | ThoughtSpot : 10.3.0.cl + */ + ParameterChanged("parameterChanged"), + /** + * Emitted when the table viz renders. + * You can use this event as a hook to trigger + * other events on the rendered table viz data. + * @example + * ```js + * searchEmbed.on(EmbedEvent.TableVizRendered, (payload) => { + * console.log(payload); + * const columnDataLite = payload.data.data.columnDataLite; + * columnDataLite[0].dataValue[0]="new fob"; + * console.log('>>> new Data', columnDataLite); + * searchEmbed.trigger(HostEvent.TransformTableVizData, columnDataLite); + * }) + * ``` + * @version SDK: 1.35.12 | ThoughtSpot: 10.7.0.cl + */ + TableVizRendered("TableVizRendered"), + /** + * Emitted when the liveboard is created from pin modal or Liveboard list page. + * You can use this event as a hook to trigger + * other events on liveboard creation. + * + * ```js + * liveboardEmbed.on(EmbedEvent.CreateLiveboard, (payload) => { + * console.log('payload', payload); + * }) + *``` + * @version SDK : 1.36.0 | ThoughtSpot : 10.8.0.cl + */ + CreateLiveboard("createLiveboard"); + + final String value; + const EmbedEvent(this.value); +} + +/** + * Event types that can be triggered by the host application + * to the embedded ThoughtSpot app. + * + * To trigger an event use the corresponding + * {@link LiveboardEmbed.trigger} or {@link AppEmbed.trigger} or {@link + * SearchEmbed.trigger} method. + * @example + * ```js + * import { HostEvent } from '@thoughtspot/visual-embed-sdk'; + * // Or + * // const { HostEvent } = window.tsembed; + * + * // create the liveboard embed. + * + * liveboardEmbed.trigger(HostEvent.UpdateRuntimeFilters, [ + * { columnName: 'state, operator: RuntimeFilterOp.EQ, values: ['california']} + * ]); + * ``` + * @example + * If using React components to embed, use the format shown in this example: + * + * ```js + * const selectVizs = () => { + * embedRef.current.trigger(HostEvent.SetVisibleVizs, [ + * "715e4613-c891-4884-be44-aa8d13701c06", + * "3f84d633-e325-44b2-be25-c6650e5a49cf" + * ]); + * }; + * ``` + * + * + * You can also attach an Embed event to a Host event to trigger + * a specific action as shown in this example: + * @example + * ```js + * const EmbeddedComponent = () => { + * const embedRef = useRef(null); // import { useRef } from react + * const onLiveboardRendered = () => { + * embedRef.current.trigger(HostEvent.SetVisibleVizs, ['viz1', 'viz2']); + * }; + * + * return ( + * + * ); + * } + * ``` + * @group Events + */ +enum HostEvent { + /** + * Triggers a search operation with the search tokens specified in + * the search query string. + * Supported in `AppEmbed` and `SearchEmbed` deployments. + * Includes the following properties: + * @param - `searchQuery` - query string with search tokens + * @param - `dataSources` - Data source GUID to Search on + * - Although an array, only a single source + * is supported. + * @param - `execute` - executes search and updates the existing query + * @example + * ```js + * searchembed.trigger(HostEvent.Search, { + searchQuery: "[sales] by [item type]", + dataSources: ["cd252e5c-b552-49a8-821d-3eadaa049cca"], + execute: true + }); + * ``` + */ + Search("search"), + /** + * Triggers a drill on certain points of the specified column + * Includes the following properties: + * @param - points - an object containing selectedPoints/clickedPoints + * to drill to. For example, { selectedPoints: []} + * @param - columnGuid - Optional. GUID of the column to drill + * by. If not provided it will auto drill by the configured + * column. + * @param - autoDrillDown - Optional. If true, the drill down will be + * done automatically on the most popular column. + * @param - vizId [TS >= 9.8.0] - Optional. The GUID of the visualization to drill + * in case of a Liveboard. + * @example + * ```js + * searchEmbed.on(EmbedEvent.VizPointDoubleClick, (payload) => { + * console.log(payload); + * const clickedPoint = payload.data.clickedPoint; + * const selectedPoint = payload.data.selectedPoints; + * console.log('>>> called', clickedPoint); + * searchEmbed.trigger(HostEvent.DrillDown, { + * points: { + * clickedPoint, + * selectedPoints: selectedPoint + * }, + * autoDrillDown: true, + * }); + * }) + * ``` + * @example + * ```js + * // Works with TS 9.8.0 and above + * + * liveboardEmbed.on(EmbedEvent.VizPointDoubleClick, (payload) => { + * console.log(payload); + * const clickedPoint = payload.data.clickedPoint; + * const selectedPoint = payload.data.selectedPoints; + * console.log('>>> called', clickedPoint); + * liveboardEmbed.trigger(HostEvent.DrillDown, { + * points: { + * clickedPoint, + * selectedPoints: selectedPoint + * }, + * columnGuid: "", + * vizId: payload.data.vizId + * }); + * }) + * ``` + * @version SDK: 1.5.0 | ThoughtSpot: ts7.oct.cl, 7.2.1 + */ + DrillDown("triggerDrillDown"), + /** + * Apply filters + * @hidden + */ + Filter("filter"), + /** + * Reload the Answer or visualization + * @hidden + */ + Reload("reload"), + /** + * Get iframe URL for the current embed view on the playground. + * Developers can use this URL to embed a ThoughtSpot object + * in apps like Salesforce or Sharepoint. + * @example + * ```js + * const url = embed.trigger(HostEvent.GetIframeUrl); + * console.log("iFrameURL",url); + * ``` + * @version SDK: 1.35.0 | ThoughtSpot: 10.4.0.cl + */ + GetIframeUrl("GetIframeUrl"), + /** + * Display specific visualizations on a Liveboard. + * @param - An array of GUIDs of the visualization to show. The visualization IDs not passed + * in this parameter will be hidden. + * @example + * ```js + * liveboardEmbed.trigger(HostEvent.SetVisibleVizs, [ + * '730496d6-6903-4601-937e-2c691821af3c', + * 'd547ec54-2a37-4516-a222-2b06719af726']) + * ``` + * @version SDK: 1.6.0 | ThoughtSpot: ts8.nov.cl, 8.4.1.sw + */ + SetVisibleVizs("SetPinboardVisibleVizs"), + /** + * Set a Liveboard tab as an active tab. + * @param - tabId - string of id of Tab to show + * @example + * ```js + * liveboardEmbed.trigger(HostEvent.SetActiveTab,{ + * tabId:'730496d6-6903-4601-937e-2c691821af3c' + * }) + * ``` + * @version SDK: 1.24.0 | ThoughtSpot: 9.5.0.cl, 9.5.1-sw + */ + SetActiveTab("SetActiveTab"), + /** + * Updates the runtime filters applied on a Liveboard. The filter + * attributes passed with this event are appended to the existing runtime + * filters applied on a Liveboard. + * + * **Note**: `HostEvent.UpdateRuntimeFilters` is supported in `LiveboardEmbed` + * and `AppEmbed` only. In full application embedding, this event updates + * the runtime filters applied on the Liveboard and saved Answer objects. + * + * @param - Pass an array of {@link RuntimeFilter} with the following attributes: + * `columnName` - _String_. The name of the column to filter on. + * + * `operator` - {@link RuntimeFilterOp} to apply. For more information, + * see link:https://developers.thoughtspot.com/docs/?pageid=runtime-filters#rtOperator[Developer Documentation]. + * + * `values` - List of operands. Some operators such as EQ and LE allow a + * single value, whereas BW and IN accept multiple values. + * + * **Note**: Updating runtime filters resets the ThoughtSpot + * object to its original state and applies new filter conditions. + * Any user changes (like drilling into a visualization) + * will be cleared, restoring the original visualization + * with the updated filters. + * + + * @example + * ```js + * liveboardEmbed.trigger(HostEvent.UpdateRuntimeFilters, [ + * {columnName: "state",operator: RuntimeFilterOp.EQ,values: ["michigan"]}, + * {columnName: "item type",operator: RuntimeFilterOp.EQ,values: ["Jackets"]} + * ]) + * ``` + * @version SDK: 1.9.0 | ThoughtSpot: 8.1.0.cl, 8.4.1.sw + * @important + */ + UpdateRuntimeFilters("UpdateRuntimeFilters"), + /** + * Navigate to a specific page in the embedded ThoughtSpot application. + * This is the same as calling `appEmbed.navigateToPage(path, true)`. + * @param - `path` - the path to navigate to to go forward or back. The path value can + * be a number; for example, `1`, `-1`. + * @example + * ```js + * appEmbed.navigateToPage(-1) + * ``` + * @version SDK: 1.12.0 | ThoughtSpot 8.4.0.cl, 8.4.1.sw + */ + Navigate("Navigate"), + /** + * Open the filter panel for a particular column. + * Works with Search and Liveboard embed. + * @param - { columnId: string, + * name: string, + * type: INT64/CHAR/DATE, + * dataType: ATTRIBUTE/MEASURE } + * @example + * ```js + * searchEmbed.trigger(HostEvent.OpenFilter, + * { columnId: '', name: 'column name', type: 'INT64', dataType: 'ATTRIBUTE'}) + * LiveboardEmbed.trigger(HostEvent.OpenFilter, + * { columnId: ''}) + * ``` + * @version SDK: 1.21.0 | ThoughtSpot: 9.2.0.cl + */ + OpenFilter("openFilter"), + /** + * Add columns to the current search query. + * @param - { columnIds: string[] } + * @example + * ```js + * searchEmbed.trigger(HostEvent.AddColumns, { columnIds: ['',''] }) + * ``` + * @version SDK: 1.21.0 | ThoughtSpot: 9.2.0.cl + */ + AddColumns("addColumns"), + /** + * Remove a column from the current search query. + * @param - { columnId: string } + * @example + * ```js + * searchEmbed.trigger(HostEvent.RemoveColumn, { columnId: '' }) + * ``` + * @version SDK: 1.21.0 | ThoughtSpot: 9.2.0.cl + */ + RemoveColumn("removeColumn"), + /** + * Get the transient state of a Liveboard as encoded content. + * This includes unsaved and ad hoc changes such as + * Liveboard filters, runtime filters applied on visualizations on a + * Liveboard, and Liveboard layout, changes to visualizations such as + * sorting, toggling of legends, and data drill down. + * For more information, see + * link:https://developers.thoughtspot.com/docs/fetch-data-and-report-apis#transient-lb-content[Liveboard data with unsaved changes]. + * @example + * ```js + * liveboardEmbed.trigger(HostEvent.getExportRequestForCurrentPinboard).then( + * data=>console.log(data)) + * ``` + * @version SDK: 1.13.0 | ThoughtSpot: 8.5.0.cl, 8.8.1.sw + */ + getExportRequestForCurrentPinboard("getExportRequestForCurrentPinboard"), + /** + * Trigger **Pin** action on an embedded object. + * If no parameters are defined, the pin action is triggered + * for the Answer that the user is currently on + * and a modal opens for Liveboard selection. + * To add an Answer or visualization to a Liveboard programmatically without + * showing requiring additional user input via *Pin to Liveboard* modal, define + * the following parameters: + * + * @param + * `vizId`- GUID of the saved Answer or visualization to pin to a Liveboard. + * Optional when pinning a new chart or table generated from a Search query. + * @param + * `liveboardID` - GUID of the Liveboard to pin an Answer. If there is no Liveboard, + * specify the `newLiveboardName` parameter to create a new Liveboard. + * @param + * `tabId` - GUID of the Liveboard tab. Adds the Answer to the Liveboard tab + * specified in the code. + * @param + * `newVizName` - Name string for the Answer or visualization. If defined, + * this parameter adds a new visualization object or creates a copy of the + * Answer or visualization specified in `vizId`. + * Required attribute. + * @param + * `newLiveboardName` - Name string for the Liveboard. + * Creates a new Liveboard object with the specified name. + * @param + * `newTabName` - Name of the tab. Adds a new tab Liveboard specified + * in the code. + * + * @example + * ```js + * const pinResponse = await appEmbed.trigger(HostEvent.Pin, { + * vizId: "123", + * newVizName: "Sales by region", + * liveboardId: "123", + * tabId: "123" + * }); + * ``` + * @example + * ```js + * const pinResponse = await appEmbed.trigger(HostEvent.Pin, { + * newVizName: "Total sales of Jackets", + * liveboardId: "123" + * }); + * ``` + * + * @example + * ```js + * const pinResponse = await searchEmbed.trigger(HostEvent.Pin, { + * newVizName: "Sales by state", + * newLiveboardName: "Sales", + * newTabName: "Products" + * }); + * ``` + * @example + * ```js + * appEmbed.trigger(HostEvent.Pin) + * ``` + * @version SDK: 1.15.0 | ThoughtSpot: 8.7.0.cl, 8.8.1.sw + */ + Pin("pin"), + /** + * Trigger the **Show Liveboard details** action + * on an embedded Liveboard. + * @example + *```js + * liveboardEmbed.trigger(HostEvent.LiveboardInfo) + *``` + * @version SDK: 1.15.0 | ThoughtSpot: 8.7.0.cl, 8.8.1.sw + */ + LiveboardInfo("pinboardInfo"), + /** + * Trigger the **Schedule** action on an embedded Liveboard. + * @example + * ```js + * liveboardEmbed.trigger(HostEvent.Schedule) + * ``` + * @version SDK: 1.15.0 | ThoughtSpot: 8.7.0.cl, 8.8.1.sw + */ + Schedule("subscription"), + /** + * Trigger the **Manage schedule** action on an embedded Liveboard + * @example + * ```js + * liveboardEmbed.trigger(HostEvent.ScheduleList) + * ``` + * @version SDK: 1.15.0 | ThoughtSpot: 8.7.0.cl, 8.8.1.sw + */ + SchedulesList("schedule-list"), + /** + * Trigger the **Export TML** action on an embedded Liveboard or + * Answer. + * @example + * ```js + * liveboardEmbed.trigger(HostEvent.ExportTML) + * ``` + * @version SDK: 1.15.0 | ThoughtSpot: 8.7.0.cl, 8.8.1.sw + */ + ExportTML("exportTSL"), + /** + * Trigger the **Edit TML** action on an embedded Liveboard or + * saved Answers in the full application embedding. + * @example + * ```js + * liveboardEmbed.trigger(HostEvent.EditTML) + * ``` + * @version SDK: 1.15.0 | ThoughtSpot: 8.7.0.cl, 8.8.1.sw + */ + EditTML("editTSL"), + /** + * Trigger the **Update TML** action on an embedded Liveboard. + * @example + * ```js + * liveboardEmbed.trigger(HostEvent.UpdateTML) + * ``` + * @version SDK: 1.15.0 | ThoughtSpot: 8.7.0.cl, 8.8.1.sw + */ + UpdateTML("updateTSL"), + /** + * Trigger the **Download PDF** action on an embedded Liveboard, + * visualization or Answer. + * + * **NOTE**: The **Download** > **PDF** action is available on + * visualizations and Answers if the data is in tabular format. + * @example + * ```js + * liveboardEmbed.trigger(HostEvent.DownloadAsPdf) + * ``` + * @version SDK: 1.15.0 | ThoughtSpot: 8.7.0.cl, 8.8.1.sw + */ + DownloadAsPdf("downloadAsPdf"), + /** + * Trigger the **Make a copy** action on a Liveboard, + * visualization, or Answer page. + * @example + * ```js + * liveboardEmbed.trigger(HostEvent.MakeACopy) + * ``` + * @example + * ```js + * liveboardEmbed.trigger(HostEvent.MakeACopy, { + * vizId: '730496d6-6903-4601-937e-2c691821af3c'}) + * ``` + * @example + * ```js + * vizEmbed.trigger(HostEvent.MakeACopy) + * ``` + * @example + * ```js + * searchEmbed.trigger(HostEvent.MakeACopy) + * ``` + * @version SDK: 1.15.0 | ThoughtSpot: 8.7.0.cl, 8.8.1.sw + */ + MakeACopy("makeACopy"), + /** + * Trigger the **Delete** action for a Liveboard. + * @example + * ```js + * appEmbed.trigger(HostEvent.Remove) + * ``` + * @version SDK: 1.15.0 | ThoughtSpot: 8.7.0.cl, 8.8.1.sw + * * @example + * ```js + * liveboardEmbed.trigger(HostEvent.Remove) + * ``` + * @version SDK: 1.37.0 | ThoughtSpot: 10.8.0.cl, 10.10.0.sw + */ + Remove("delete"), + /** + * Trigger the **Explore** action on a visualization. + * @param - an object with `vizId` as a key + * @example + * ```js + * liveboardEmbed.trigger(HostEvent.Explore, {vizId: '730496d6-6903-4601-937e-2c691821af3c'}) + * ``` + * @version SDK: 1.15.0 | ThoughtSpot: 8.7.0.cl, 8.8.1.sw + */ + Explore("explore"), + /** + * Trigger the **Create alert** action on a KPI chart + * in a Liveboard or saved Answer. + * @param - an object with `vizId` as a key + * @example + * ```js + * liveboardEmbed.trigger(HostEvent.CreateMonitor, { + * vizId: '730496d6-6903-4601-937e-2c691821af3c' + * }) + * ``` + * @example + * ```js + * searchEmbed.trigger(HostEvent.CreateMonitor) + * ``` + * @version SDK: 1.15.0 | ThoughtSpot: 8.7.0.cl, 8.8.1.sw + */ + CreateMonitor("createMonitor"), + /** + * Trigger the **Manage alerts** action on a KPI chart + * in a visualization or saved Answer. + * @param - an object with `vizId` as a key + * @example + * ```js + * liveboardEmbed.trigger(HostEvent.ManageMonitor, { + * vizId: '730496d6-6903-4601-937e-2c691821af3c' + * }) + * ``` + * @example + * ```js + * searchEmbed.trigger(HostEvent.ManageMonitor) + * ``` + * @example + * ```js + * vizEmbed.trigger(HostEvent.ManageMonitor) + * ``` + * @version SDK: 1.15.0 | ThoughtSpot: 8.7.0.cl, 8.8.1.sw + */ + ManageMonitor("manageMonitor"), + /** + * Trigger the **Edit** action on a Liveboard or a visualization + * on a Liveboard. + * + * This event is not supported in visualization embed and search embed. + * @param - object - To trigger the action for a specific visualization + * in Liveboard embed, pass in `vizId` as a key. + * @example + * ```js + * liveboardEmbed.trigger(HostEvent.Edit) + * ``` + * ```js + * liveboardEmbed.trigger(HostEvent.Edit, {vizId: + * '730496d6-6903-4601-937e-2c691821af3c'}) + * ``` + * @version SDK: 1.15.0 | ThoughtSpot: 8.7.0.cl, 8.8.1.sw + */ + Edit("edit"), + /** + * Trigger the **Copy link** action on a Liveboard or visualization + * @param - object - to trigger the action for a + * specific visualization in Liveboard embed, pass in `vizId` as a key + * @example + * ```js + * liveboardEmbed.trigger(HostEvent.CopyLink) + * ``` + * ```js + * liveboardEmbed.trigger(HostEvent.CopyLink, {vizId: '730496d6-6903-4601-937e-2c691821af3c'}) + * ``` + * ```js + * vizEmbed.trigger((HostEvent.CopyLink) + * ``` + * @version SDK: 1.15.0 | ThoughtSpot: 8.7.0.cl, 8.8.1.sw + */ + CopyLink("embedDocument"), + /** + * Trigger the **Present** action on a Liveboard or visualization + * @param - object - to trigger the action for a specific visualization + * in Liveboard embed, pass in `vizId` as a key + * @example + * ```js + * liveboardEmbed.trigger(HostEvent.Present) + * ``` + * ```js + * liveboardEmbed.trigger(HostEvent.Present, {vizId: '730496d6-6903-4601-937e-2c691821af3c'}) + * ``` + * ```js + * vizEmbed.trigger((HostEvent.Present) + * ``` + * @version SDK: 1.15.0 | ThoughtSpot: 8.7.0.cl, 8.8.1.sw + */ + Present("present"), + /** + * Get TML for the current search. + * @example + * ```js + * searchEmbed.trigger(HostEvent.GetTML).then((tml) => { + * console.log( + * tml.answer.search_query // TML representation of the search query + * ); + * }) + * ``` + * @version SDK: 1.18.0 | ThoughtSpot: 8.10.0.cl, 9.0.1.sw + * @important + */ + GetTML("getTML"), + /** + * Trigger the **Show underlying data** action on a + * chart or table. + * + * @param - an object with vizId as a key + * @example + * ```js + * liveboardEmbed.trigger(HostEvent.ShowUnderlyingData, {vizId: + * '730496d6-6903-4601-937e-2c691821af3c'}) + * ``` + * ```js + * vizEmbed.trigger(HostEvent.ShowUnderlyingData) + * ``` + * ```js + * searchEmbed.trigger(HostEvent.ShowUnderlyingData) + * ``` + * @version SDK: 1.19.0 | ThoughtSpot: 9.0.0.cl, 9.0.1.sw + */ + ShowUnderlyingData("showUnderlyingData"), + /** + * Trigger the **Delete** action for a visualization + * in an embedded Liveboard, or a chart or table + * generated from Search. + * @param - Liveboard embed takes an object with `vizId` as a key. + * Can be left empty if embedding Search or visualization. + * @example + * ```js + * liveboardEmbed.trigger(HostEvent.Delete, {vizId: + * '730496d6-6903-4601-937e-2c691821af3c'}) + * ``` + * ```js + * searchEmbed.trigger(HostEvent.Delete) + * ``` + * @version SDK: 1.19.0 | ThoughtSpot: 9.0.0.cl, 9.0.1.sw + */ + Delete("onDeleteAnswer"), + /** + * Trigger the **SpotIQ analyze** action on a + * chart or table. + * @param - Liveboard embed takes `vizId` as a + * key. Can be left undefined when embedding Search or + * visualization. + * @example + * ```js + * liveboardEmbed.trigger(HostEvent.SpotIQAnalyze, {vizId: + * '730496d6-6903-4601-937e-2c691821af3c'}) + * ``` + * ```js + * vizEmbed.trigger(HostEvent.SpotIQAnalyze) + * ``` + * ```js + * searchEmbed.trigger(HostEvent.SpotIQAnalyze) + * ``` + * @version SDK: 1.19.0 | ThoughtSpot: 9.0.0.cl, 9.0.1.sw + */ + SpotIQAnalyze("spotIQAnalyze"), + /** + * Trigger the **Download** action on charts in + * the embedded view. + * @example + * ```js + * liveboardEmbed.trigger(HostEvent.Download, {vizId: + * '730496d6-6903-4601-937e-2c691821af3c'}) + * ``` + * ```js + * embed.trigger(HostEvent.Download) + * ``` + * @deprecated from SDK: 1.21.0 | ThoughtSpot: 9.2.0.cl ,9.4.1.sw + * Use {@link DownloadAsPng} + * @version SDK: 1.19.0 | ThoughtSpot: 9.0.0.cl, 9.0.1.sw + */ + Download("downloadAsPng"), + /** + * Trigger the **Download** > **PNG** action on + * charts in the embedded view. + * @example + * ```js + * liveboardEmbed.trigger(HostEvent.DownloadAsPng, + * {vizId:'730496d6-6903-4601-937e-2c691821af3c'}) + * + * vizEmbed.trigger(HostEvent.DownloadAsPng) + * + * searchEmbed.trigger(HostEvent.DownloadAsPng) + * ``` + * @version SDK: 1.21.0 | ThoughtSpot: 9.2.0.cl, 9.4.1.sw + */ + DownloadAsPng("downloadAsPng"), + /** + * Trigger the **Download** > **CSV** action on tables in + * the embedded view. + * @example + * ```js + * liveboardEmbed.trigger(HostEvent.DownloadAsCsv, {vizId: + * '730496d6-6903-4601-937e-2c691821af3c'}) + * ``` + * ```js + * vizEmbed.trigger(HostEvent.DownloadAsCsv) + * ``` + * ```js + * searchEmbed.trigger(HostEvent.DownloadAsCsv) + * ``` + * @version SDK: 1.19.0 | ThoughtSpot: 9.0.0.cl, 9.0.1.sw + */ + DownloadAsCsv("downloadAsCSV"), + /** + * Trigger the **Download** > **XLSX** action on tables + * in the embedded view. + * @example + * ```js + * liveboardEmbed.trigger(HostEvent.DownloadAsXlsx, {vizId: + * '730496d6-6903-4601-937e-2c691821af3c'}) + * ``` + * ```js + * vizEmbed.trigger(HostEvent.DownloadAsXlsx) + * ``` + * ```js + * searchEmbed.trigger(HostEvent.DownloadAsXlsx) + * ``` + * @version SDK: 1.19.0 | ThoughtSpot: 9.0.0.cl, 9.0.1.sw + */ + DownloadAsXlsx("downloadAsXLSX"), + /** + * Trigger the **Share** action on an embedded + * Liveboard or Answer. + * @example + * ```js + * liveboardEmbed.trigger(HostEvent.Share) + * ``` + * ```js + * searchEmbed.trigger(HostEvent.Share) + * ``` + * @version SDK: 1.19.0 | ThoughtSpot: 9.0.0.cl, 9.0.1.sw + */ + Share("share"), + /** + * Trigger the **Save** action on a Liveboard or Answer. + * Saves the changes. + * @example + * ```js + * liveboardEmbed.trigger(HostEvent.Save) + * ``` + * ```js + * searchEmbed.trigger(HostEvent.Save) + * ``` + * @version SDK: 1.19.0 | ThoughtSpot: 9.0.0.cl, 9.0.1.sw + */ + Save("save"), + /** + * Trigger the **Sync to Sheets** action on an embedded visualization or Answer + * Sends data from an Answer or Liveboard visualization to a Google sheet. + * @param - an object with `vizId` as a key + * @example + * ```js + * liveboardEmbed.trigger(HostEvent.SyncToSheets, {vizId: + * '730496d6-6903-4601-937e-2c691821af3c'}) + * ``` + * ```js + * vizEmbed.trigger(HostEvent.SyncToSheets) + * ``` + * @version SDK: 1.19.0 | ThoughtSpot: 9.0.0.cl, 9.0.1.sw + */ + SyncToSheets("sync-to-sheets"), + /** + * Trigger the **Sync to Other Apps** action on an embedded visualization or Answer + * Sends data from an Answer or Liveboard visualization to third-party apps such + * as Slack, Salesforce, Microsoft Teams, ServiceNow and so on. + * @param - an object with vizId as a key + * @example + * ```js + * liveboardEmbed.trigger(HostEvent.SyncToOtherApps, {vizId: + * '730496d6-6903-4601-937e-2c691821af3c'}) + * ``` + * ```js + * vizEmbed.trigger(HostEvent.SyncToOtherApps) + * ``` + * @version SDK: 1.19.0 | ThoughtSpot: 9.0.0.cl, 9.0.1.sw + */ + SyncToOtherApps("sync-to-other-apps"), + /** + * Trigger the **Manage pipelines** action on an embedded + * visualization or Answer. + * Allows users to manage ThoughtSpot Sync pipelines. + * @param - an object with `vizId` as a key + * @example + * ```js + * liveboardEmbed.trigger(HostEvent.ManagePipelines, {vizId: + * '730496d6-6903-4601-937e-2c691821af3c'}) + * ``` + * ```js + * vizEmbed.trigger(HostEvent.ManagePipelines) + * ``` + * @version SDK: 1.19.0 | ThoughtSpot: 9.0.0.cl, 9.0.1.sw + */ + ManagePipelines("manage-pipeline"), + /** + * Reset search operation on the Search or Answer page. + * @example + * ```js + * searchEmbed.trigger(HostEvent.ResetSearch) + * ``` + * ```js + * appEmbed.trigger(HostEvent.ResetSearch) + * ``` + * @version SDK: 1.21.0 | ThoughtSpot: 9.2.0.cl, 9.0.1.sw + */ + ResetSearch("resetSearch"), + /** + * Get details of filters applied on the Liveboard. + * Returns arrays containing Liveboard filter and runtime filter elements. + * @example + * ```js + * const data = await liveboardEmbed.trigger(HostEvent.GetFilters); + * console.log('data', data); + * ``` + * @version SDK: 1.23.0 | ThoughtSpot: 9.4.0.cl + */ + GetFilters("getFilters"), + /** + * Update one or several filters applied on a Liveboard. + * @param - `filter`: a single filter object containing column name, + * filter operator, and values. + * @param - `filters`: multiple filter objects with column name, filter operator, + * and values for each. + * + * Each filter object must include the following attributes: + * + * `column` - Name of the column to filter on. + * + * `oper` - Filter operator, for example, EQ, IN, CONTAINS. + * For information about the supported filter operators, + * see link:https://developers.thoughtspot.com/docs/runtime-filters#rtOperator[Developer Documentation]. + * + * `values` - An array of one or several values. The value definition on the + * data type you choose to filter on. For a complete list of supported data types, + * see + * link:https://developers.thoughtspot.com/docs/runtime-filters#_supported_data_types[Supported + * data types]. + * + * `type` - To update filters for date time, specify the date format type. + * For more information and examples, see link:https://developers.thoughtspot.com/docs/embed-liveboard#_date_filters[Date filters]. + * @example + * ```js + * + * liveboardEmbed.trigger(HostEvent.UpdateFilters, { + * filter: { + * column: "item type", + * oper: "IN", + * values: ["bags","shirts"] + * } + * }); + * ``` + * @example + * ```js + * + * liveboardEmbed.trigger(HostEvent.UpdateFilters, { + * filter: { + * column: "date", + * oper: "EQ", + * values: ["JULY","2023"], + * type: "MONTH_YEAR" + * } + * }); + * ``` + * @example + * + * ```js + * liveboardEmbed.trigger(HostEvent.UpdateFilters, { + * filters: [{ + * column: "Item Type", + * oper: 'IN', + * values: ["bags","shirts"] + * }, + * { + * column: "Region", + * oper: 'IN', + * values: ["West","Midwest"] + * }, + * { + * column: "Date", + * oper: 'EQ', + * values: ["2023-07-31"], + * types: "EXACT_DATE" + * }] + * }); + * ``` + * @version SDK: 1.23.0 | ThoughtSpot: 9.4.0.cl + */ + UpdateFilters("updateFilters"), + /** + * Get tab details for the current Liveboard. + * @example + * ```js + * liveboardEmbed.trigger(HostEvent.GetTabs).then((tabDetails) => { + * console.log( + * tabDetails // TabDetails of current Liveboard + * ); + * }) + * ``` + * @version SDK: 1.26.0 | ThoughtSpot: 9.7.0.cl + */ + GetTabs("getTabs"), + /** + * Set the visible tabs on a Liveboard. + * @param - an array of ids of tabs to show, the IDs not passed + * will be hidden. + * @example + * ```js + * liveboardEmbed.trigger(HostEvent.SetVisibleTabs, [ + * '430496d6-6903-4601-937e-2c691821af3c', + * 'f547ec54-2a37-4516-a222-2b06719af726']) + * ``` + * @version SDK: 1.26.0 | ThoughtSpot: 9.7.0.cl, 9.8.0.sw + */ + SetVisibleTabs("SetPinboardVisibleTabs"), + /** + * Set the hidden tabs on a Liveboard. + * @param - an array of the IDs of the tabs to hide. + * The IDs not passed will be shown. + * @example + * ```js + * liveboardEmbed.trigger(HostEvent.SetHiddenTabs, [ + * '630496d6-6903-4601-937e-2c691821af3c', + * 'i547ec54-2a37-4516-a222-2b06719af726']) + * ``` + * @version SDK: 1.26.0 | ThoughtSpot: 9.7.0.cl, 9.8.0.sw + */ + SetHiddenTabs("SetPinboardHiddenTabs"), + /** + * Updates the search query string for Natural Language Search operations. + * @param - `queryString`: Text string in Natural Language format + * @param - `executeSearch`: Boolean to execute search and update search query + * @example + * ```js + * sageEmbed.trigger(HostEvent.UpdateSageQuery, { + * queryString: 'revenue per year', + * executeSearch: true, + * }) + * ``` + * @version SDK: 1.26.0 | ThoughtSpot: 9.8.0.cl, 9.8.0.sw + */ + UpdateSageQuery("updateSageQuery"), + /** + * Get the Answer session for a Search or + * Liveboard visualization. + * @example + * ```js + * const {session} = await embed.trigger( + * HostEvent.GetAnswerSession, { + * vizId: '123', // For Liveboard Visualization. + * }) + * ``` + * @example + * ```js + * const {session} = await embed.trigger( HostEvent.GetAnswerSession ) + * ``` + * @version SDK: 1.26.0 | ThoughtSpot: 9.10.0.cl, 10.1.0.sw + */ + GetAnswerSession("getAnswerSession"), + /** + * Trigger the *Ask Sage* action for visualizations + * @example + * ```js + * liveboardEmbed.trigger(HostEvent.AskSage, + * {vizId:'730496d6-6903-4601-937e-2c691821af3c'}) + * ``` + * @version SDK: 1.29.0 | ThoughtSpot Cloud: 9.12.0.cl + */ + AskSage("AskSage"), + /** + * Trigger cross filter update action on a Liveboard. + * + * @example + * ```js + * liveboardEmbed.trigger(HostEvent.UpdateCrossFilter, { + * vizId: 'b535c760-8bbe-4e6f-bb26-af56b4129a1e', + * conditions: [ + * { columnName: 'Category', values: ['mfgr#12','mfgr#14'] }, + * { columnName: 'color', values: ['mint','hot'] }, + * ], + * }); + * ``` + * @version SDK: 1.29.0 | ThoughtSpot Cloud: 10.0.0.cl, 10.1.0.sw + */ + UpdateCrossFilter("UpdateCrossFilter"), + /** + * Trigger reset action for a personalized Liveboard view. + * @example + * ```js + * liveboardEmbed.trigger(HostEvent.ResetLiveboardPersonalisedView); + * ``` + * @version SDK: 1.29.0 | ThoughtSpot Cloud: 10.1.0.cl, 10.1.0.sw + */ + ResetLiveboardPersonalisedView("ResetLiveboardPersonalisedView"), + /** + * Triggers an action to update Parameter values on embedded + * Answers and Liveboard. + * + * @example + * ```js + * liveboardEmbed.trigger(HostEvent.UpdateParameters, [{ + * name: "Color", + * value: "almond" + * }]) + * + * @version SDK: 1.29.0 | ThoughtSpot: 10.1.0.cl, 10.1.0.sw + */ + UpdateParameters("UpdateParameters"), + /** + * Triggers GetParameters to fetch the runtime Parameters. + * ```js + * liveboardEmbed.trigger(HostEvent.GetParameters).then((parameter) => { + * console.log('parameters', parameter); + * }); + *``` + * @version SDK: 1.29.0 | ThoughtSpot: 10.1.0.cl, 10.1.0.sw + */ + GetParameters("GetParameters"), + /** + * Triggers an event to update a personalized view of a Liveboard. + * ```js + * liveboardEmbed.trigger(HostEvent.UpdatePersonalisedView, {viewId: '1234'}) + * ``` + * @version SDK: 1.36.0 | ThoughtSpot: 10.6.0.cl + */ + UpdatePersonalisedView("UpdatePersonalisedView"), + /** + * @hidden + * Notify when info call is completed successfully + * ```js + * liveboardEmbed.trigger(HostEvent.InfoSuccess, data); + *``` + * @version SDK: 1.36.0 | Thoughtspot: 10.6.0.cl + */ + InfoSuccess("InfoSuccess"), + /** + * Trigger the save action for an Answer. + * To programmatically save an answer without opening the + * *Describe your Answer* modal, define the `name` and `description` + * properties. + * If no parameters are specified, the save action is + * triggered with a modal to prompt users to + * add a name and description for the Answer. + * @param - optional attributes to set Answer properties. + * `name` - Name string for the Answer. + * `description` - Description text for the Answer. + * + * @example + * ```js + * const saveAnswerResponse = await searchEmbed.trigger(HostEvent.SaveAnswer, { + * name: "Sales by states", + * description: "Total sales by states in MidWest" + * }); + * ``` + * @version SDK: 1.36.0 | ThoughtSpot: 10.6.0.cl + */ + SaveAnswer("saveAnswer"), + /** + * EmbedApi + * @hidden + */ + UIPassthrough("UiPassthrough"), + /** + * Triggers the table viz rerender with the updated data. + * Includes the following properties: + * @param - columnDataLite - an array of object containing data + * transformed from data picked from TableVizRendered event. + * For example, { columnDataLite: []} + * @example + * ```js + * searchEmbed.on(EmbedEvent.TableVizRendered, (payload) => { + * console.log(payload); + * const columnDataLite = payload.data.data.columnDataLite; + * columnDataLite[0].dataValue[0]="new fob"; + * console.log('>>> new Data', columnDataLite); + * searchEmbed.trigger(HostEvent.TransformTableVizData, columnDataLite); + * }) + * ``` + * @version SDK: 1.35.12 | ThoughtSpot: 10.7.0.cl + */ + TransformTableVizData("TransformTableVizData"); + + final String value; + const HostEvent(this.value); +} + +/** + * The different visual modes that the data sources panel within + * search could appear in, such as hidden, collapsed, or expanded. + */ +enum DataSourceVisualMode { + /** + * The data source panel is hidden. + */ + Hidden("hide"), + /** + * The data source panel is collapsed, but the user can manually expand it. + */ + Collapsed("collapse"), + /** + * The data source panel is expanded, but the user can manually collapse it. + */ + Expanded("expand"); + + final String value; + const DataSourceVisualMode(this.value); +} + +/** + * The query params passed down to the embedded ThoughtSpot app + * containing configuration and/or visual information. + */ +enum Param { + EmbedApp("embedApp"), + DataSources("dataSources"), + DataSourceMode("dataSourceMode"), + DisableActions("disableAction"), + DisableActionReason("disableHint"), + ForceTable("forceTable"), + preventLiveboardFilterRemoval("preventPinboardFilterRemoval"), + SearchQuery("searchQuery"), + HideActions("hideAction"), + HideObjects("hideObjects"), + HostAppUrl("hostAppUrl"), + EnableVizTransformations("enableVizTransform"), + EnableSearchAssist("enableSearchAssist"), + EnablePendoHelp("enablePendoHelp"), + HideResult("hideResult"), + UseLastSelectedDataSource("useLastSelectedSources"), + Tag("tag"), + AutoLogin("autoLogin"), + searchTokenString("searchTokenString"), + executeSearch("executeSearch"), + fullHeight("isFullHeightPinboard"), + livedBoardEmbed("isLiveboardEmbed"), + searchEmbed("isSearchEmbed"), + vizEmbed("isVizEmbed"), + Version("sdkVersion"), + ViewPortHeight("viewPortHeight"), + ViewPortWidth("viewPortWidth"), + VisibleActions("visibleAction"), + DisableLoginRedirect("disableLoginRedirect"), + visibleVizs("pinboardVisibleVizs"), + LiveboardV2Enabled("isPinboardV2Enabled"), + DataPanelV2Enabled("enableDataPanelV2"), + ShowAlerts("showAlerts"), + Locale("locale"), + CustomStyle("customStyle"), + ForceSAMLAutoRedirect("forceSAMLAutoRedirect"), + AuthType("authType"), + IconSpriteUrl("iconSprite"), + cookieless("cookieless"), + ContextMenuTrigger("contextMenuEnabledOnWhichClick"), + LinkOverride("linkOverride"), + blockNonEmbedFullAppAccess("blockNonEmbedFullAppAccess"), + ShowInsertToSlide("insertInToSlide"), + PrimaryNavHidden("primaryNavHidden"), + HideProfleAndHelp("profileAndHelpInNavBarHidden"), + HideApplicationSwitcher("applicationSwitcherHidden"), + HideOrgSwitcher("orgSwitcherHidden"), + IsSageEmbed("isSageEmbed"), + HideWorksheetSelector("hideWorksheetSelector"), + DisableWorksheetChange("disableWorksheetChange"), + HideSourceSelection("hideSourceSelection"), + DisableSourceSelection("disableSourceSelection"), + HideEurekaResults("hideEurekaResults"), + HideEurekaSuggestions("hideEurekaSuggestions"), + HideAutocompleteSuggestions("hideAutocompleteSuggestions"), + HideLiveboardHeader("hideLiveboardHeader"), + ShowLiveboardDescription("showLiveboardDescription"), + ShowLiveboardTitle("showLiveboardTitle"), + HiddenTabs("hideTabs"), + VisibleTabs("visibleTabs"), + HideTabPanel("hideTabPanel"), + HideSampleQuestions("hideSampleQuestions"), + WorksheetId("worksheet"), + Query("query"), + HideHomepageLeftNav("hideHomepageLeftNav"), + ModularHomeExperienceEnabled("modularHomeExperience"), + PendoTrackingKey("additionalPendoKey"), + LiveboardHeaderSticky("isLiveboardHeaderSticky"), + IsProductTour("isProductTour"), + HideSearchBarTitle("hideSearchBarTitle"), + HideSageAnswerHeader("hideSageAnswerHeader"), + HideSearchBar("hideSearchBar"), + ClientLogLevel("clientLogLevel"), + OverrideNativeConsole("overrideConsoleLogs"), + enableAskSage("enableAskSage"), + CollapseSearchBarInitially("collapseSearchBarInitially"), + DataPanelCustomGroupsAccordionInitialState("dataPanelCustomGroupsAccordionInitialState"), + EnableCustomColumnGroups("enableCustomColumnGroups"), + DateFormatLocale("dateFormatLocale"), + NumberFormatLocale("numberFormatLocale"), + CurrencyFormat("currencyFormat"), + Enable2ColumnLayout("enable2ColumnLayout"), + IsFullAppEmbed("isFullAppEmbed"), + IsOnBeforeGetVizDataInterceptEnabled("isOnBeforeGetVizDataInterceptEnabled"), + FocusSearchBarOnRender("focusSearchBarOnRender"), + DisableRedirectionLinksInNewTab("disableRedirectionLinksInNewTab"), + HomePageSearchBarMode("homePageSearchBarMode"), + ShowLiveboardVerifiedBadge("showLiveboardVerifiedBadge"), + ShowLiveboardReverifyBanner("showLiveboardReverifyBanner"), + LiveboardHeaderV2("isLiveboardHeaderV2Enabled"), + HideIrrelevantFiltersInTab("hideIrrelevantFiltersAtTabLevel"), + SpotterEnabled("isSpotterExperienceEnabled"), + IsUnifiedSearchExperienceEnabled("isUnifiedSearchExperienceEnabled"), + OverrideOrgId("orgId"), + OauthPollingInterval("oAuthPollingInterval"), + IsForceRedirect("isForceRedirect"), + DataSourceId("dataSourceId"), + preAuthCache("preAuthCache"), + ShowSpotterLimitations("showSpotterLimitations"); + + final String value; + const Param(this.value); +} + +/** + * ThoughtSpot application pages include actions and menu commands + * for various user-initiated operations. These actions are represented + * as enumeration members in the SDK. To show, hide, or disable + * specific actions in the embedded view, define the Action + * enumeration members in the `disabledActions`, `visibleActions`, + * or `hiddenActions` array. + * @example + * ```js + * const embed = new LiveboardEmbed('#embed-container', { + * ... // other options + * visibleActions: [Action.Save, Action.Edit, Action.Present, ActionAction.Explore], + * disabledActions: [Action.Download], + * //hiddenActions: [], // Set either this or visibleActions + * }) + * ``` + * @example + * ```js + * const embed = new LiveboardEmbed('#embed-container', { + * ... // other options + * //visibleActions: [], + * disabledActions: [Action.Download], + * hiddenActions: [Action.Edit, ActionAction.Explore], + * }) + * ``` + */ +enum Action { + /** + * The **Save** action on an Answer or Liveboard. + * Allows users to save the changes. + * @example + * ```js + * disabledActions: [Action.Save] + * ``` + */ + Save("save"), + /** + * @hidden + */ + Update("update"), + /** + * @hidden + */ + SaveUntitled("saveUntitled"), + /** + * The **Save as View** action on the Answer + * page. Saves an Answer as a View object in the full + * application embedding mode. + * @example + * ```js + * disabledActions: [Action.SaveAsView] + * ``` + */ + SaveAsView("saveAsView"), + /** + * The **Make a copy** action on a Liveboard or Answer + * page. Creates a copy of the Liveboard. + * In LiveboardEmbed, the **Make a copy** action is not available for + * visualizations in the embedded Liveboard view. + * In AppEmbed, the **Make a copy** action is available on both + * Liveboards and visualizations. + * @example + * ```js + * disabledActions: [Action.MakeACopy] + * ``` + */ + MakeACopy("makeACopy"), + /** + * The **Copy and Edit** action on a Liveboard. + * This action is now replaced with `Action.MakeACopy`. + * @example + * ```js + * disabledActions: [Action.EditACopy] + * ``` + */ + EditACopy("editACopy"), + /** + * The **Copy link** menu action on a Liveboard visualization. + * Copies the visualization URL + * @example + * ```js + * disabledActions: [Action.CopyLink] + * ``` + */ + CopyLink("embedDocument"), + /** + * @hidden + */ + ResetLayout("resetLayout"), + /** + * The **Schedule** menu action on a Liveboard. + * Allows scheduling a Liveboard job, for example, + * sending periodic notifications. + * @example + * ```js + * disabledActions: [Action.Schedule] + * ``` + */ + Schedule("subscription"), + /** + * The **Manage schedules** menu action on a Liveboard. + * Allows users to manage scheduled Liveboard jobs. + * @example + * ```js + * disabledActions: [Action.SchedulesList] + * ``` + */ + SchedulesList("schedule-list"), + /** + * The **Share** action on a Liveboard, Answer, or Worksheet. + * Allows users to share an object with other users and groups. + * @example + * ```js + * disabledActions: [Action.Share] + * ``` + */ + Share("share"), + /** + * The **Add filter** action on a Liveboard page. + * Allows adding filters to visualizations on a Liveboard. + * @example + * ```js + * disabledActions: [Action.AddFilter] + * ``` + */ + AddFilter("addFilter"), + /** + * The **Add Data Panel Objects** action on the data panel v2. + * Allows to show action menu to add different objects (such as + * formulas, Parameters) in data panel new experience. + * @example + * ```js + * disabledActions: [Action.AddDataPanelObjects] + * ``` + * @version SDK: 1.32.0 | ThoughtSpot: 10.0.0.cl, 10.1.0.sw + */ + AddDataPanelObjects("addDataPanelObjects"), + /** + * The filter configuration options for a Liveboard. + * The configuration options are available when adding + * filters on a Liveboard. + * + * @example + * ```js + * disabledActions: [Action.ConfigureFilter] + * ``` + */ + ConfigureFilter("configureFilter"), + /** + * The **Collapse data sources** icon on the Search page. + * Collapses the panel showing data sources. + * + * @example + * ```js + * disabledActions: [Action.CollapseDataPanel] + * ``` + * @version: SDK: 1.1.0 | ThoughtSpot Cloud: ts7.may.cl, 8.4.1.sw + */ + CollapseDataSources("collapseDataSources"), + /** + * The **Collapse data panel** icon on the Search page. + * Collapses the data panel view. + * + * @version: SDK: 1.34.0 | ThoughtSpot Cloud: 10.3.0.cl, 10.7.0.sw + * + * @example + * ```js + * disabledActions: [Action.CollapseDataPanel] + * ``` + */ + CollapseDataPanel("collapseDataPanel"), + /** + * The **Choose sources** button on Search page. + * Allows selecting data sources for search queries. + * @example + * ```js + * disabledActions: [Action.ChooseDataSources] + * ``` + */ + ChooseDataSources("chooseDataSources"), + /** + * The **Create formula** action on a Search or Answer page. + * Allows adding formulas to an Answer. + * @example + * ```js + * disabledActions: [Action.AddFormula] + * ``` + */ + AddFormula("addFormula"), + /** + * The **Add parameter** action on a Liveboard or Answer. + * Allows adding Parameters to a Liveboard or Answer. + * @example + * ```js + * disabledActions: [Action.AddParameter] + * ``` + */ + AddParameter("addParameter"), + /** + * The **Add Column Set** action on a Answer. + * Allows adding column sets to a Answer. + * @example + * ```js + * disabledActions: [Action.AddColumnSet] + * ``` + * @version SDK: 1.32.0 | ThoughtSpot: 10.0.0.cl, 10.1.0.sw + */ + AddColumnSet("addSimpleCohort"), + /** + * The **Add Query Set** action on a Answer. + * Allows adding query sets to a Answer. + * @example + * ```js + * disabledActions: [Action.AddQuerySet] + * ``` + * @version SDK: 1.32.0 | ThoughtSpot: 10.0.0.cl, 10.1.0.sw + */ + AddQuerySet("addAdvancedCohort"), + /** + * @hidden + */ + SearchOnTop("searchOnTop"), + /** + * The **SpotIQ analyze** menu action on a visualization or + * Answer page. + * @example + * ```js + * disabledActions: [Action.SpotIQAnalyze] + * ``` + */ + SpotIQAnalyze("spotIQAnalyze"), + /** + * @hidden + */ + ExplainInsight("explainInsight"), + /** + * @hidden + */ + SpotIQFollow("spotIQFollow"), + /** + * The Share action for a Liveboard visualization. + */ + ShareViz("shareViz"), + /** + * @hidden + */ + ReplaySearch("replaySearch"), + /** + * The **Show underlying data** menu action on a + * visualization or Answer page. + * Displays detailed information and raw data + * for a given visualization. + * @example + * ```js + * disabledActions: [Action.ShowUnderlyingData] + * ``` + */ + ShowUnderlyingData("showUnderlyingData"), + /** + * The **Download** menu action on Liveboard + * visualizations and Answers. + * Allows downloading a visualization or Answer. + * @example + * ```js + * disabledActions: [Action.DownloadAsPng] + * ``` + */ + Download("download"), + /** + * The **Download** > **PNG** menu action for charts on a Liveboard + * or Answer page. + * Downloads a visualization or Answer as a PNG file. + * @example + * ```js + * disabledActions: [Action.DownloadAsPng] + * ``` + */ + DownloadAsPng("downloadAsPng"), + /** + * + *The **Download PDF** action that downloads a Liveboard, + * visualization, or Answer as a PDF file. + * + * **NOTE**: The **Download** > **PDF** option is available for + * tables in visualizations and Answers. + * @example + * ```js + * disabledActions: [Action.DownloadAsPdf] + * ``` + */ + DownloadAsPdf("downloadAsPdf"), + /** + * The **Download** > **CSV** menu action for tables on a Liveboard + * or Answer page. + * Downloads a visualization or Answer in the XLSX format. + * @example + * ```js + * disabledActions: [Action.DownloadAsCsv] + * ``` + */ + DownloadAsCsv("downloadAsCSV"), + /** + * The **Download** > **XLSX** menu action for tables on a Liveboard + * or Answer page. + * Downloads a visualization or Answer in the XLSX format. + * @example + * ```js + * disabledActions: [Action.DownloadAsXlsx] + * ``` + */ + DownloadAsXlsx("downloadAsXLSX"), + /** + * @hidden + */ + DownloadTrace("downloadTrace"), + /** + * The **Export TML** menu action on a Liveboard, Answer, and + * the Data Workspace pages for data objects and connections. + * + * Allows exporting an object as a TML file. + * + * @example + * ```js + * disabledActions: [Action.ExportTML] + * ``` + */ + ExportTML("exportTSL"), + /** + * The **Import TML** menu action on the + * *Data Workspace* > *Utilities* page. + * Imports TML representation of ThoughtSpot objects. + * @example + * ```js + * disabledActions: [Action.ImportTML] + * ``` + */ + ImportTML("importTSL"), + /** + * The **Update TML** menu action for Liveboards and Answers. + * Updates TML representation of ThoughtSpot objects. + * @example + * ```js + * disabledActions: [Action.UpdateTML] + * ``` + */ + UpdateTML("updateTSL"), + /** + * The **Edit TML** menu action for Liveboards and Answers. + * Opens the TML editor. + * @example + * ```js + * disabledActions: [Action.EditTML] + * ``` + */ + EditTML("editTSL"), + /** + * The **Present** menu action for Liveboards and Answers. + * Allows presenting a Liveboard or visualization in + * slideshow mode. + * @example + * ```js + * disabledActions: [Action.Present] + * ``` + */ + Present("present"), + /** + * The visualization tile resize option. + * Also available via More `...` options menu on a visualization. + * Allows resizing visualization tiles and switching + * between different preset layout option. + * + * @example + * ```js + * disabledActions: [Action.ToggleSize] + * ``` + */ + ToggleSize("toggleSize"), + /** + * The *Edit* action on the Liveboard page and in the + * visualization menu. + * Opens a Liveboard or visualization in edit mode. + * @example + * ```js + * disabledActions: [Action.Edit] + * ``` + */ + Edit("edit"), + /** + * The text edit option for Liveboard and visualization titles. + * @example + * ```js + * disabledActions: [Action.EditTitle] + * ``` + */ + EditTitle("editTitle"), + /** + * The **Delete** action on a Liveboard, *Liveboards* and + * *Answers* list pages in full application embedding. + * + * @example + * ```js + * disabledActions: [Action.Remove] + * ``` + */ + Remove("delete"), + /** + * @hidden + */ + Ungroup("ungroup"), + /** + * @hidden + */ + Describe("describe"), + /** + * @hidden + */ + Relate("relate"), + /** + * @hidden + */ + CustomizeHeadlines("customizeHeadlines"), + /** + * @hidden + */ + PinboardInfo("pinboardInfo"), + /** + * The **Show Liveboard details** menu action on a Liveboard. + * Displays details such as the name, description, and + * author of the Liveboard, and timestamp of Liveboard creation + * and update. + * @example + * ```js + * disabledActions: [Action.LiveboardInfo] + * ``` + */ + LiveboardInfo("pinboardInfo"), + /** + * @hidden + */ + SendAnswerFeedback("sendFeedback"), + /** + * @hidden + */ + DownloadEmbraceQueries("downloadEmbraceQueries"), + /** + * The **Pin** menu action on an Answer or + * Search results page. + * @example + * ```js + * disabledActions: [Action.Pin] + * ``` + */ + Pin("pin"), + /** + * @hidden + */ + AnalysisInfo("analysisInfo"), + /** + * The **Schedule** menu action on a Liveboard. + * Allows scheduling a Liveboard job. + * @example + * ```js + * disabledActions: [Action.Subscription] + * ``` + */ + Subscription("subscription"), + /** + * The **Explore** action on Liveboard visualizations + * @example + * ```js + * disabledActions: [Action.Explore] + * ``` + */ + Explore("explore"), + /** + * The contextual menu action to include a specific data point + * when drilling down a table or chart on an Answer. + * + * @example + * ```js + * disabledActions: [Action.DrillInclude] + * ``` + */ + DrillInclude("context-menu-item-include"), + /** + * The contextual menu action to exclude a specific data point + * when drilling down a table or chart on an Answer. + * @example + * ```js + * disabledActions: [Action.DrillInclude] + * ``` + */ + DrillExclude("context-menu-item-exclude"), + /** + * The **Copy to clipboard** menu action on tables in an Answer + * or Liveboard. + * Copies the selected data point. + * @example + * ```js + * disabledActions: [Action.CopyToClipboard] + * ``` + */ + CopyToClipboard("context-menu-item-copy-to-clipboard"), + CopyAndEdit("context-menu-item-copy-and-edit"), + /** + * @hidden + */ + DrillEdit("context-menu-item-edit"), + EditMeasure("context-menu-item-edit-measure"), + Separator("context-menu-item-separator"), + /** + * The **Drill down** menu action on Answers and Liveboard + * visualizations. + * Allows drilling down to a specific data point on a chart or table. + * @example + * ```js + * disabledActions: [Action.DrillDown] + * ``` + */ + DrillDown("DRILL"), + /** + * The request access action on Liveboards. + * Allows users with view permissions to request edit access to a Liveboard. + * @example + * ```js + * disabledActions: [Action.RequestAccess] + * ``` + */ + RequestAccess("requestAccess"), + /** + * The **Query visualizer** and **Query SQL** buttons in + * Query details panel of the Answer page. + * + * **Query visualizer** - Displays the tables + * and filters used in a search query. + * **Query SQL** - Displays the SQL statements used + * in a search query to fetch data. + * @example + * ```js + * disabledActions: [Action.QueryDetailsButtons] + * ``` + */ + QueryDetailsButtons("queryDetailsButtons"), + /** + * The **Delete** action for Answers in the full application + * embedding mode. + * @example + * ```js + * disabledActions: [Action.AnswerDelete] + * ``` + * @version SDK: 1.9.0 | ThoughtSpot: 8.1.0.cl, 8.4.1.sw + */ + AnswerDelete("onDeleteAnswer"), + /** + * The chart switcher icon on Answer page and + * visualizations in edit mode. + * Allows switching to the table or chart mode + * when editing a visualization. + * @example + * ```js + * disabledActions: [Action.AnswerChartSwitcher] + * ``` + * @version SDK: 1.9.0 | ThoughtSpot: 8.1.0.cl, 8.4.1.sw + */ + AnswerChartSwitcher("answerChartSwitcher"), + /** + * The Favorites icon (*) for Answers, + * Liveboard, and data objects like Worksheet, Model, + * Tables and Views. + * Allows adding an object to the user’s favorites list. + * @example + * ```js + * disabledActions: [Action.AddToFavorites] + * ``` + * @version SDK: 1.9.0 | ThoughtSpot: 8.1.0.cl, 8.4.1.sw + */ + AddToFavorites("addToFavorites"), + /** + * The edit icon on Liveboards (Classic experience). + * @example + * ```js + * disabledActions: [Action.EditDetails] + * ``` + * @version SDK: 1.9.0 | ThoughtSpot: 8.1.0.cl, 8.4.1.sw + */ + EditDetails("editDetails"), + /** + * The *Create alert* action for KPI charts. + * Allows users to schedule threshold-based alerts + * for KPI charts. + * @example + * ```js + * disabledActions: [Action.CreateMonitor] + * ``` + * @version SDK: 1.11.0 | ThoughtSpot: 8.3.0.cl, 8.4.1.sw + */ + CreateMonitor("createMonitor"), + /** + * @deprecated + * Reports errors + * @example + * ```js + * disabledActions: [Action.ReportError] + * ``` + * @version SDK: 1.11.1 | ThoughtSpot: 8.3.0.cl, 8.4.1.sw + */ + ReportError("reportError"), + /** + * The **Sync to sheets** action on Answers and Liveboard visualizations. + * Allows sending data to a Google Sheet. + * @example + * ```js + * disabledActions: [Action.SyncToSheets] + * ``` + * @version SDK: 1.18.0| ThoughtSpot: 8.10.0.cl, 9.0.1.sw + */ + SyncToSheets("sync-to-sheets"), + /** + * The **Sync to other apps** action on Answers and Liveboard visualizations. + * Allows sending data to third-party apps like Slack, Salesforce, + * Microsoft Teams, and so on. + * @example + * ```js + * disabledActions: [Action.SyncToOtherApps] + * ``` + * @version SDK: 1.18.0| ThoughtSpot: 8.10.0.cl, 9.0.1.sw + */ + SyncToOtherApps("sync-to-other-apps"), + /** + * The **Manage pipelines** action on Answers and Liveboard visualizations. + * Allows users to manage data sync pipelines to third-party apps. + * @example + * ```js + * disabledActions: [Action.ManagePipelines] + * ``` + * @version SDK: 1.18.0| ThoughtSpot: 8.10.0.cl, 9.0.1.sw + */ + ManagePipelines("manage-pipeline"), + /** + * The **Filter** action on Liveboard visualizations. + * Allows users to apply cross-filters on a Liveboard. + * @example + * ```js + * disabledActions: [Action.CrossFilter] + * ``` + * @version SDK: 1.21.0 | ThoughtSpot: 9.2.0.cl, 9.8.0.sw + */ + CrossFilter("context-menu-item-cross-filter"), + /** + * The **Sync to Slack** action on Liveboard visualizations. + * Allows sending data to third-party apps Slack + * @example + * ```js + * disabledActions: [Action.SyncToSlack] + * ``` + * @version @version SDK : 1.32.0 | ThoughtSpot Cloud: 10.1.0.cl + */ + SyncToSlack("syncToSlack"), + /** + * The **Sync to Teams** action on Liveboard visualizations. + * Allows sending data to third-party apps Team + * @example + * ```js + * disabledActions: [Action.SyncToTeams] + * ``` + * @version @version SDK : 1.32.0 | ThoughtSpot Cloud: 10.1.0.cl + */ + SyncToTeams("syncToTeams"), + /** + * The **Remove** action that appears when cross filters are applied + * on a Liveboard. + * Removes filters applied o a visualization. + * @example + * ```js + * disabledActions: [Action.RemoveCrossFilter] + * ``` + * @version SDK: 1.21.0 | ThoughtSpot: 9.2.0.cl, 9.5.1.sw + */ + RemoveCrossFilter("context-menu-item-remove-cross-filter"), + /** + * The **Aggregate** option in the chart axis or the + * table column customization menu. + * Provides aggregation options to analyze the data on a chart or table. + * @example + * ```js + * disabledActions: [Action.AxisMenuAggregate] + * ``` + * @version SDK: 1.21.0 | ThoughtSpot: 9.2.0.cl, 9.5.1.sw + */ + AxisMenuAggregate("axisMenuAggregate"), + /** + * The **Time bucket** option in the chart axis or table column + * customization menu. + * Allows defining time metric for date comparison. + * @example + * ```js + * disabledActions: [Action.AxisMenuTimeBucket] + * ``` + * @version SDK: 1.21.0 | ThoughtSpot: 9.2.0.cl, 9.5.1.sw + */ + AxisMenuTimeBucket("axisMenuTimeBucket"), + /** + * The **Filter** action in the chart axis or table column + * customization menu. + * Allows adding, editing, or removing filters. + * + * @example + * ```js + * disabledActions: [Action.AxisMenuFilter] + * ``` + * @version SDK: 1.21.0 | ThoughtSpot: 9.2.0.cl, 9.5.1.sw + */ + AxisMenuFilter("axisMenuFilter"), + /** + * The **Conditional formatting** action on chart or table. + * Allows adding rules for conditional formatting of data + * points on a chart or table. + * @example + * ```js + * disabledActions: [Action.AxisMenuConditionalFormat] + * ``` + * @version SDK: 1.21.0 | ThoughtSpot: 9.2.0.cl, 9.5.1.sw + */ + AxisMenuConditionalFormat("axisMenuConditionalFormat"), + /** + * The **Sort** menu action on a table or chart axis + * Sorts data in ascending or descending order. + * Allows adding, editing, or removing filters. + * @example + * ```js + * disabledActions: [Action.AxisMenuConditionalFormat] + * ``` + * @version SDK: 1.21.0 | ThoughtSpot: 9.2.0.cl, 9.5.1.sw + */ + AxisMenuSort("axisMenuSort"), + /** + * The **Group** option in the chart axis or table column + * customization menu. + * Allows grouping data points if the axes use the same + * unit of measurement and a similar scale. + * @example + * ```js + * disabledActions: [Action.AxisMenuGroup] + * ``` + * @version SDK: 1.21.0 | ThoughtSpot: 9.2.0.cl, 9.5.1.sw + */ + AxisMenuGroup("axisMenuGroup"), + /** + * The **Position** option in the axis customization menu. + * Allows changing the position of the axis to the + * left or right side of the chart. + * @example + * ```js + * disabledActions: [Action.AxisMenuPosition] + * ``` + * @version SDK: 1.21.0 | ThoughtSpot: 9.2.0.cl, 9.5.1.sw + */ + AxisMenuPosition("axisMenuPosition"), + /** + * The **Rename** option in the chart axis or table column customization menu. + * Renames the axis label on a chart or the column header on a table. + * @example + * ```js + * disabledActions: [Action.AxisMenuRename] + * ``` + * @version SDK: 1.21.0 | ThoughtSpot: 9.2.0.cl, 9.5.1.sw + */ + AxisMenuRename("axisMenuRename"), + /** + * The **Edit** action in the axis customization menu. + * Allows editing the axis name, position, minimum and maximum values, + * and format of a column. + * @example + * ```js + * disabledActions: [Action.AxisMenuEdit] + * ``` + * @version SDK: 1.21.0 | ThoughtSpot: 9.2.0.cl, 9.5.1.sw + */ + AxisMenuEdit("axisMenuEdit"), + /** + * The **Number format** action to customize the format of + * the data labels on a chart or table. + * @example + * ```js + * disabledActions: [Action.AxisMenuNumberFormat] + * ``` + * @version SDK: 1.21.0 | ThoughtSpot: 9.2.0.cl, 9.5.1.sw + */ + AxisMenuNumberFormat("axisMenuNumberFormat"), + /** + * The **Text wrapping** action on a table. + * Wraps or clips column text on a table. + * @example + * ```js + * disabledActions: [Action.AxisMenuTextWrapping] + * ``` + * @version SDK: 1.21.0 | ThoughtSpot: 9.2.0.cl, 9.5.1.sw + */ + AxisMenuTextWrapping("axisMenuTextWrapping"), + /** + * The **Remove** action in the chart axis or table column + * customization menu. + * Removes the data labels from a chart or the column of a + * table visualization. + * @example + * ```js + * disabledActions: [Action.AxisMenuRemove] + * ``` + * @version SDK: 1.21.0 | ThoughtSpot: 9.2.0.cl, 9.5.1.sw + */ + AxisMenuRemove("axisMenuRemove"), + /** + * @hidden + */ + InsertInToSlide("insertInToSlide"), + /** + * The **Rename** menu action on Liveboards and visualizations. + * Allows renaming a Liveboard or visualization. + * @example + * ```js + * disabledActions: [Action.RenameModalTitleDescription] + * ``` + * @version SDK: 1.23.0 | ThoughtSpot: 9.4.0.cl, 9.8.0.sw + */ + RenameModalTitleDescription("renameModalTitleDescription"), + /** + * The *Request verification* action on a Liveboard. + * Initiates a request for Liveboard verification. + * @example + * ```js + * disabledActions: [Action.RequestVerification] + * ``` + * @version SDK: 1.25.0 | ThoughtSpot: 9.6.0.cl, 10.1.0.sw + */ + RequestVerification("requestVerification"), + /** + * + * Allows users to mark a Liveboard as verified. + * @example + * ```js + * disabledActions: [Action.MarkAsVerified] + * ``` + * @version SDK: 1.25.0 | ThoughtSpot: 9.6.0.cl, 10.1.0.sw + */ + MarkAsVerified("markAsVerified"), + /** + * The **Add Tab** action on a Liveboard. + * Allows adding a new tab to a Liveboard view. + * @example + * ```js + * disabledActions: [Action.AddTab] + * ``` + * @version SDK: 1.26.0 | ThoughtSpot: 9.7.0.cl, 9.8.0.sw + */ + AddTab("addTab"), + /** + * + *Initiates contextual change analysis on KPI charts. + * @example + * ```js + * disabledActions: [Action.EnableContextualChangeAnalysis] + * ``` + * @version SDK: 1.25.0 | ThoughtSpot Cloud: 9.6.0.cl + */ + EnableContextualChangeAnalysis("enableContextualChangeAnalysis"), + /** + * Action ID to hide or disable Natural Language Search query. + * + * @example + * ```js + * disabledActions: [Action.ShowSageQuery] + * ``` + * @version SDK: 1.26.0 | ThoughtSpot Cloud: 9.7.0.cl + */ + ShowSageQuery("showSageQuery"), + /** + * + * Action ID to hide or disable the edit option for the + * results generated from the + * Natural Language Search query. + * + * @example + * ```js + * disabledActions: [Action.EditSageAnswer] + * ``` + * @version SDK: 1.26.0 | ThoughtSpot Cloud: 9.7.0.cl + */ + EditSageAnswer("editSageAnswer"), + /** + * The feedback widget for AI-generated Answers. + * Allows users to send feedback on the Answers generated + * from a Natural Language Search query. + * + * @example + * ```js + * disabledActions: [Action.SageAnswerFeedback] + * ``` + * @version SDK: 1.26.0 | ThoughtSpot: 9.7.0.cl + */ + SageAnswerFeedback("sageAnswerFeedback"), + /** + * + * @example + * ```js + * disabledActions: [Action.ModifySageAnswer] + * ``` + * @version SDK: 1.26.0 | ThoughtSpot: 9.7.0.cl + */ + ModifySageAnswer("modifySageAnswer"), + /** + * The **Move to Tab** menu action on visualizations in Liveboard edit mode. + * Allows moving a visualization to a different tab. + * @example + * ```js + * disabledActions: [Action.MoveToTab] + * ``` + */ + MoveToTab("onContainerMove"), + /** + * The **Manage Alerts** menu action on KPI visualizations. + * Allows creating, viewing, and editing monitor + * alerts for a KPI chart. + * + * @example + * ```js + * disabledActions: [Action.ManageMonitor] + * ``` + */ + ManageMonitor("manageMonitor"), + /** + * The Liveboard Personalised Views dropdown. + * Allows navigating to a personalized Liveboard View. + * @example + * ```js + * disabledActions: [Action.PersonalisedViewsDropdown] + * ``` + * @version SDK : 1.26.0 | ThoughtSpot: 9.7.0.cl, 10.1.0.sw + */ + PersonalisedViewsDropdown("personalisedViewsDropdown"), + /** + * Action ID for show or hide the user details on a + * Liveboard (Recently visited / social proof) + * @example + * ```js + * disabledActions: [Action.LiveboardUsers] + * ``` + * @version SDK : 1.26.0 | ThoughtSpot: 9.7.0.cl, 10.1.0.sw + */ + LiveboardUsers("liveboardUsers"), + /** + * Action ID for the Parent TML action + * The parent action **TML** must be included to access TML-related options + * within the cascading menu (specific to the Answer page) + * @example + * ```js + * // to include specific TML actions + * visibleActions: [Action.TML, Action.ExportTML, Action.EditTML] + * + * ``` + * @example + * ```js + * hiddenAction: [Action.TML] // hide all TML actions + * disabledActions: [Action.TML] // to disable all TML actions + * ``` + * @version SDK : 1.28.3 | ThoughtSpot: 9.12.0.cl, 10.1.0.sw + */ + TML("tml"), + /** + * The **Create Liveboard* action on + * the Liveboards page and the Pin modal. + * Allows users to create a Liveboard. + * + * @example + * ```js + * hiddenAction: [Action.CreateLiveboard] + * disabledActions: [Action.CreateLiveboard] + * ``` + * @version SDK: 1.32.0 | ThoughtSpot: 10.1.0.cl, 10.1.0.sw + */ + CreateLiveboard("createLiveboard"), + /** + * Action ID for to hide or disable the + * Verified Liveboard banner. + * @example + * ```js + * hiddenAction: [Action.VerifiedLiveboard] + * ``` + * @version SDK: 1.29.0 | ThoughtSpot: 9.10.0.cl, 10.1.0.sw + */ + VerifiedLiveboard("verifiedLiveboard"), + /** + * Action ID for the *Ask Sage* In Natural Language Search embed, + * *Spotter* in Liveboard, full app, and Spotter embed. + * + * Allows initiating a conversation with ThoughtSpot AI analyst. + * + * @example + * ```js + * hiddenAction: [Action.AskAi] + * ``` + * @version SDK: 1.29.0 | ThoughtSpot Cloud: 9.12.0.cl + */ + AskAi("AskAi"), + /** + * The **Add KPI to Watchlist** action on Home page watchlist. + * Adds a KPI chart to the watchlist on the Home page. + * @example + * ```js + * disabledActions: [Action.AddToWatchlist] + * ``` + * @version SDK : 1.27.9 | ThoughtSpot Cloud: 9.12.5.cl + */ + AddToWatchlist("addToWatchlist"), + /** + * The **Remove from watchlist** menu action on KPI watchlist. + * Removes a KPI chart from the watchlist on the Home page. + * @example + * ```js + * disabledActions: [Action.RemoveFromWatchlist] + * ``` + * @version SDK : 1.27.9 | ThoughtSpot: 9.12.5.cl + */ + RemoveFromWatchlist("removeFromWatchlist"), + /** + * The **Organize Favourites** action on Homepage + * *Favorites* module. + * + * @example + * ```js + * disabledActions: [Action.OrganiseFavourites] + * ``` + * @version SDK : 1.32.0 | ThoughtSpot: 10.0.0.cl + */ + OrganiseFavourites("organiseFavourites"), + /** + * The **AI Highlights** action on a Liveboard. + * + * @example + * ```js + * hiddenAction: [Action.AIHighlights] + * ``` + * @version SDK: 1.27.10 | ThoughtSpot Cloud: 9.12.5.cl + */ + AIHighlights("AIHighlights"), + /** + * The *Edit* action on the *Liveboard Schedules* page + * (new Homepage experience). + * Allows editing Liveboard schedules. + * + * @example + * ```js + * disabledActions: [Action.EditScheduleHomepage] + * ``` + * @version SDK: 1.34.0 | ThoughtSpot Cloud: 10.3.0.cl + */ + EditScheduleHomepage("editScheduleHomepage"), + /** + * The *Pause* action on the *Liveboard Schedules* page + * Pauses a scheduled Liveboard job. + * @example + * ```js + * disabledActions: [Action.PauseScheduleHomepage] + * ``` + * @version SDK: 1.34.0 | ThoughtSpot Cloud: 10.3.0.cl + */ + PauseScheduleHomepage("pauseScheduleHomepage"), + /** + * The **View run history** action **Liveboard Schedules** page. + * Allows viewing schedule run history. + * @example + * ```js + * disabledActions: [Action.ViewScheduleRunHomepage] + * ``` + * @version SDK: 1.34.0 | ThoughtSpot: 10.3.0.cl + */ + ViewScheduleRunHomepage("viewScheduleRunHomepage"), + /** + * Action ID to hide or disable the + * unsubscribe option for Liveboard schedules. + * @example + * ```js + * disabledActions: [Action.UnsubscribeScheduleHomepage] + * ``` + * @version SDK: 1.34.0 | ThoughtSpot: 10.3.0.cl + */ + UnsubscribeScheduleHomepage("unsubscribeScheduleHomepage"), + /** + * The **Manage Tags** action on Homepage Favourite Module. + * @example + * ```js + * disabledActions: [Action.ManageTags] + * ``` + * @version SDK : 1.34.0 | ThoughtSpot Cloud: 10.3.0.cl + */ + ManageTags("manageTags"), + /** + * The **Delete** action on the **Liveboard Schedules* page. + * Deletes a Liveboard schedule. + * @example + * ```js + * disabledActions: [Action.DeleteScheduleHomepage] + * ``` + * @version SDK: 1.34.0 | ThoughtSpot: 10.3.0.cl + */ + DeleteScheduleHomepage("deleteScheduleHomepage"), + /** + * The **Analyze CTA** action on KPI chart. + * @example + * ```js + * disabledActions: [Action.KPIAnalysisCTA] + * ``` + * @version SDK: 1.34.0 | ThoughtSpot Cloud: 10.3.0.cl + */ + KPIAnalysisCTA("kpiAnalysisCTA"), + /** + * Action ID for disabling chip reorder in Answer and Liveboard + * @example + * ```js + * const disabledActions = [Action.DisableChipReorder] + * ``` + * @version SDK: 1.36.0 | ThoughtSpot Cloud: 10.6.0.cl + */ + DisableChipReorder("disableChipReorder"), + /** + * Action ID to show, hide, or disable filters + * in a Liveboard tab. + * + * @example + * ```js + * hiddenAction: [Action.ChangeFilterVisibilityInTab] + * ``` + * @version SDK: 1.36.0 | ThoughtSpot Cloud: 10.6.0.cl + */ + ChangeFilterVisibilityInTab("changeFilterVisibilityInTab"), + /** + * The **Preview data** button on the Spotter interface. + * Allows previewing the data used for Spotter queries. + * + * @example + * ```js + * hiddenAction: [Action.PreviewDataSpotter] + * ``` + * @version SDK: 1.36.0 | ThoughtSpot Cloud: 10.6.0.cl + */ + PreviewDataSpotter("previewDataSpotter"), + /** + * The **Reset** link on the Spotter interface. + * Resets the conversation with Spotter. + * + * @example + * ```js + * hiddenAction: [Action.ResetSpotterChat] + * ``` + * @version SDK: 1.36.0 | ThoughtSpot Cloud: 10.6.0.cl + */ + ResetSpotterChat("resetSpotterChat"), + /** + * Action ID for hide or disable the + * Spotter feedback widget. + * + * @example + * ```js + * hiddenAction: [Action.SpotterFeedback] + * ``` + * @version SDK: 1.36.0 | ThoughtSpot Cloud: 10.6.0.cl + */ + SpotterFeedback("spotterFeedback"), + /** + * Action ID for hide or disable + * the previous prompt edit option in Spotter. + * + * @example + * ```js + * hiddenAction: [Action.EditPreviousPrompt] + * ``` + * @version SDK: 1.36.0 | ThoughtSpot Cloud: 10.6.0.cl + */ + EditPreviousPrompt("editPreviousPrompt"), + /** + * Action ID for hide or disable + * the previous prompt deletion option in Spotter. + * + * @example + * ```js + * hiddenAction: [Action.DeletePreviousPrompt] + * ``` + * @version SDK: 1.36.0 | ThoughtSpot Cloud: 10.6.0.cl + */ + DeletePreviousPrompt("deletePreviousPrompt"), + /** + * Action ID for hide or disable editing tokens generated from + * Spotter results. + * @example + * ```js + * hiddenAction: [Action.EditTokens] + * ``` + * @version SDK: 1.36.0 | ThoughtSpot Cloud: 10.6.0.cl + */ + EditTokens("editTokens"); + + final String value; + const Action(this.value); +} + + +enum PrefetchFeatures { + FullApp("FullApp"), + SearchEmbed("SearchEmbed"), + LiveboardEmbed("LiveboardEmbed"), + VizEmbed("VizEmbed"); + + final String value; + const PrefetchFeatures(this.value); +} + +/** + * Enum for options to change context trigger + * BOTH_CLICKS option is introduced in 10.7 + */ +enum ContextMenuTriggerOptions { + LEFT_CLICK("left-click"), + RIGHT_CLICK("right-click"), + BOTH_CLICKS("both-clicks"); + + final String value; + const ContextMenuTriggerOptions(this.value); +} + +/** + * Enum options to show or suppress Visual Embed SDK and + * ThoughtSpot application logs in the console output. + * This attribute doesn't support suppressing + * browser warnings or errors. + */ +enum LogLevel { + /** + * No application or SDK-related logs will be logged + * in the console output. + * @example + * ```js + * init({ + * ... // other options, + * logLevel: LogLevel.SILENT, + * }) + * ``` + * @version SDK: 1.26.7 | ThoughtSpot Cloud: 9.10.0.cl + */ + SILENT("SILENT"), + /** + * Log only errors in the console output. + * @example + * ```js + * init({ + * ... // other options, + * logLevel: LogLevel.ERROR, + * }) + * ``` + * @version SDK: 1.26.7 | ThoughtSpot Cloud: 9.10.0.cl + */ + ERROR("ERROR"), + /** + * Log only warnings and errors in the console output. + * @example + * ```js + * init({ + * ... // other options, + * logLevel: LogLevel.WARN, + * }) + * ``` + * @version SDK: 1.26.7 | ThoughtSpot Cloud: 9.10.0.cl + */ + WARN("WARN"), + /** + * Log only the information alerts, warnings, and errors + * in the console output. + * @example + * ```js + * init({ + * ... // other options, + * logLevel: LogLevel.INFO, + * }) + * ``` + * @version SDK: 1.26.7 | ThoughtSpot Cloud: 9.10.0.cl + */ + INFO("INFO"), + /** + * Log debug messages, warnings, information alerts, + * and errors in the console output. + * @example + * ```js + * init({ + * ... // other options, + * logLevel: LogLevel.DEBUG, + * }) + * ``` + * @version SDK: 1.26.7 | ThoughtSpot Cloud: 9.10.0.cl + */ + DEBUG("DEBUG"), + /** + * All logs will be logged in the browser console. + * @example + * ```js + * init({ + * ... // other options, + * logLevel: LogLevel.TRACE, + * }) + * ``` + * @version SDK: 1.26.7 | ThoughtSpot Cloud: 9.10.0.cl + */ + TRACE("TRACE"); + + final String value; + const LogLevel(this.value); +} + + +enum lol { + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"), + b("b"), + c("c"), + d("d"); + + final String value; + const lol(this.value); +} diff --git a/package-lock.json b/package-lock.json index b6e83429..3f3dd7db 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@thoughtspot/visual-embed-sdk", - "version": "1.35.14", + "version": "1.36.4", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@thoughtspot/visual-embed-sdk", - "version": "1.35.14", + "version": "1.36.4", "license": "ThoughtSpot Development Tools End User License Agreement", "dependencies": { "algoliasearch": "^4.10.5", @@ -36,6 +36,7 @@ "@types/jest": "^22.2.3", "@types/lodash": "^4.17.0", "@types/mixpanel-browser": "^2.35.6", + "@types/mustache": "^4.2.5", "@types/react-test-renderer": "^17.0.1", "@typescript-eslint/eslint-plugin": "^4.6.0", "@typescript-eslint/parser": "^4.6.0", @@ -65,6 +66,7 @@ "jest": "^26.6.3", "jest-fetch-mock": "^3.0.3", "jsdom": "^17.0.0", + "mustache": "^4.2.0", "node-sass": "^8.0.0", "prettier": "2.1.2", "react": "^16.14.0", @@ -76,7 +78,10 @@ "rollup": "4.24.0", "rollup-plugin-typescript2": "0.27.3", "ts-jest": "^26.5.5", + "ts-json-schema-generator": "^2.3.0", "ts-loader": "8.0.4", + "ts-morph": "^25.0.1", + "tsx": "^4.19.3", "typedoc": "0.21.6", "typedoc-plugin-toc-group": "thoughtspot/typedoc-plugin-toc-group", "typescript": "^4.9.4", @@ -2458,6 +2463,23 @@ "node": ">=12" } }, + "node_modules/@esbuild/netbsd-arm64": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.1.tgz", + "integrity": "sha512-O96poM2XGhLtpTh+s4+nP7YCCAfb4tJNRVZHfIE7dgmax+yMP2WgMd2OecBuaATHKTHsLWHQeuaxMRnCsH8+5g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, "node_modules/@esbuild/netbsd-x64": { "version": "0.21.5", "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz", @@ -2474,6 +2496,23 @@ "node": ">=12" } }, + "node_modules/@esbuild/openbsd-arm64": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.1.tgz", + "integrity": "sha512-Na9T3szbXezdzM/Kfs3GcRQNjHzM6GzFBeU1/6IV/npKP5ORtp9zbQjvkDJ47s6BCgaAZnnnu/cY1x342+MvZg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, "node_modules/@esbuild/openbsd-x64": { "version": "0.21.5", "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz", @@ -2676,6 +2715,109 @@ "dev": true, "license": "BSD-3-Clause" }, + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "dev": true, + "license": "ISC", + "dependencies": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-regex": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", + "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@isaacs/cliui/node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dev": true, + "license": "MIT", + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@isaacs/cliui/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, "node_modules/@istanbuljs/load-nyc-config": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", @@ -3552,6 +3694,17 @@ "node": ">=10" } }, + "node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=14" + } + }, "node_modules/@react-icons/all-files": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/@react-icons/all-files/-/all-files-4.1.0.tgz", @@ -4365,6 +4518,44 @@ "node": ">= 6" } }, + "node_modules/@ts-morph/common": { + "version": "0.26.1", + "resolved": "https://registry.npmjs.org/@ts-morph/common/-/common-0.26.1.tgz", + "integrity": "sha512-Sn28TGl/4cFpcM+jwsH1wLncYq3FtN/BIpem+HOygfBWPT5pAeS5dB4VFVzV8FbnOKHpDLZmvAl4AjPEev5idA==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-glob": "^3.3.2", + "minimatch": "^9.0.4", + "path-browserify": "^1.0.1" + } + }, + "node_modules/@ts-morph/common/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/@ts-morph/common/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/@types/aria-query": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/@types/aria-query/-/aria-query-4.2.2.tgz", @@ -4560,6 +4751,13 @@ "integrity": "sha512-QRLQpFsIQGO2k8pupga9abfei85GKotAtQ+F6xuQmSGomUt6C52TyMiTFpP8kUwuPKr00gNtu3itLlC6gvI/NA==", "dev": true }, + "node_modules/@types/mustache": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@types/mustache/-/mustache-4.2.5.tgz", + "integrity": "sha512-PLwiVvTBg59tGFL/8VpcGvqOu3L4OuveNvPi0EYbWchRdEVP++yRUXJPFl+CApKEq13017/4Nf7aQ5lTtHUNsA==", + "dev": true, + "license": "MIT" + }, "node_modules/@types/node": { "version": "22.7.5", "resolved": "https://registry.npmjs.org/@types/node/-/node-22.7.5.tgz", @@ -6806,6 +7004,13 @@ "node": ">= 0.12.0" } }, + "node_modules/code-block-writer": { + "version": "13.0.3", + "resolved": "https://registry.npmjs.org/code-block-writer/-/code-block-writer-13.0.3.tgz", + "integrity": "sha512-Oofo0pq3IKnsFtuHqSF7TqBfr71aeyZDVJ0HpmqB7FBM2qEigL0iPONSCZSO9pE9dZTAxANe5XHG9Uy0YMv8cg==", + "dev": true, + "license": "MIT" + }, "node_modules/code-point-at": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", @@ -7069,10 +7274,11 @@ } }, "node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", "dev": true, + "license": "MIT", "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", @@ -7690,6 +7896,13 @@ "node": "*" } }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "dev": true, + "license": "MIT" + }, "node_modules/ecc-jsbn": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", @@ -9301,6 +9514,36 @@ "integrity": "sha512-k6GAGDyqLe9JaebCsFCoudPPWfihKu8pylYXRlqP1J7ms39iPoTtk2fviNglIeQEwdh0bQeKJ01ZPyuyQvKzwg==", "dev": true }, + "node_modules/foreground-child": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz", + "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==", + "dev": true, + "license": "ISC", + "dependencies": { + "cross-spawn": "^7.0.6", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/foreground-child/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/forever-agent": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", @@ -9619,6 +9862,19 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/get-tsconfig": { + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.10.0.tgz", + "integrity": "sha512-kGzZ3LWWQcGIAmg6iWvXn0ei6WDtV26wzHRMwDSzmAbcXrTEXxHy6IehI6/4eT6VRKyMP1eF1VqwrVUmE/LR7A==", + "dev": true, + "license": "MIT", + "dependencies": { + "resolve-pkg-maps": "^1.0.0" + }, + "funding": { + "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" + } + }, "node_modules/get-value": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", @@ -11559,6 +11815,22 @@ "node": ">=8" } }, + "node_modules/jackspeak": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", + "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, "node_modules/jest": { "version": "26.6.3", "resolved": "https://registry.npmjs.org/jest/-/jest-26.6.3.tgz", @@ -14487,6 +14759,16 @@ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "dev": true }, + "node_modules/mustache": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/mustache/-/mustache-4.2.0.tgz", + "integrity": "sha512-71ippSywq5Yb7/tVYyGbkBggbU8H3u5Rz56fH60jGFgr8uHwxs+aSKeqmluIVzM0m0kB7xQjKS6qPfd0b2ZoqQ==", + "dev": true, + "license": "MIT", + "bin": { + "mustache": "bin/mustache" + } + }, "node_modules/nan": { "version": "2.20.0", "resolved": "https://registry.npmjs.org/nan/-/nan-2.20.0.tgz", @@ -15448,6 +15730,13 @@ "node": ">=6" } }, + "node_modules/package-json-from-dist": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", + "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==", + "dev": true, + "license": "BlueOak-1.0.0" + }, "node_modules/parent-module": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", @@ -15524,6 +15813,13 @@ "node": ">=0.10.0" } }, + "node_modules/path-browserify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz", + "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==", + "dev": true, + "license": "MIT" + }, "node_modules/path-exists": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", @@ -15557,6 +15853,40 @@ "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", "dev": true }, + "node_modules/path-scurry": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/path-scurry/node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/path-scurry/node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, "node_modules/path-type": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", @@ -16793,6 +17123,16 @@ "node": ">=8" } }, + "node_modules/resolve-pkg-maps": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", + "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" + } + }, "node_modules/resolve-url": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", @@ -17083,6 +17423,16 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/safe-stable-stringify": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.5.0.tgz", + "integrity": "sha512-b3rppTKm9T+PsVCBEOUR46GWI7fdOs00VKZ1+9c1EWDaDMvjQc6tUwuFyIprgGgTcWoVHSKrU8H31ZHA2e0RHA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + } + }, "node_modules/safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", @@ -18244,6 +18594,22 @@ "node": ">=8" } }, + "node_modules/string-width-cjs": { + "name": "string-width", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/string.prototype.trim": { "version": "1.2.9", "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz", @@ -18305,6 +18671,20 @@ "node": ">=8" } }, + "node_modules/strip-ansi-cjs": { + "name": "strip-ansi", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/strip-bom": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", @@ -18998,6 +19378,110 @@ "node": ">=10" } }, + "node_modules/ts-json-schema-generator": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/ts-json-schema-generator/-/ts-json-schema-generator-2.3.0.tgz", + "integrity": "sha512-t4lBQAwZc0sOJq9LJt3NgbznIcslVnm0JeEMFq8qIRklpMRY8jlYD0YmnRWbqBKANxkby91P1XanSSlSOFpUmg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/json-schema": "^7.0.15", + "commander": "^12.0.0", + "glob": "^10.3.12", + "json5": "^2.2.3", + "normalize-path": "^3.0.0", + "safe-stable-stringify": "^2.4.3", + "tslib": "^2.6.2", + "typescript": "^5.4.5" + }, + "bin": { + "ts-json-schema-generator": "bin/ts-json-schema-generator.js" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/ts-json-schema-generator/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/ts-json-schema-generator/node_modules/commander": { + "version": "12.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-12.1.0.tgz", + "integrity": "sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/ts-json-schema-generator/node_modules/glob": { + "version": "10.4.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", + "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", + "dev": true, + "license": "ISC", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/ts-json-schema-generator/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/ts-json-schema-generator/node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/ts-json-schema-generator/node_modules/typescript": { + "version": "5.8.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.2.tgz", + "integrity": "sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, "node_modules/ts-loader": { "version": "8.0.4", "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-8.0.4.tgz", @@ -19017,6 +19501,17 @@ "typescript": "*" } }, + "node_modules/ts-morph": { + "version": "25.0.1", + "resolved": "https://registry.npmjs.org/ts-morph/-/ts-morph-25.0.1.tgz", + "integrity": "sha512-QJEiTdnz1YjrB3JFhd626gX4rKHDLSjSVMvGGG4v7ONc3RBwa0Eei98G9AT9uNFDMtV54JyuXsFeC+OH0n6bXQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@ts-morph/common": "~0.26.0", + "code-block-writer": "^13.0.3" + } + }, "node_modules/tsconfig-paths": { "version": "3.15.0", "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", @@ -19076,6 +19571,458 @@ "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", "dev": true }, + "node_modules/tsx": { + "version": "4.19.3", + "resolved": "https://registry.npmjs.org/tsx/-/tsx-4.19.3.tgz", + "integrity": "sha512-4H8vUNGNjQ4V2EOoGw005+c+dGuPSnhpPBPHBtsZdGZBk/iJb4kguGlPWaZTZ3q5nMtFOEsY0nRDlh9PJyd6SQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "esbuild": "~0.25.0", + "get-tsconfig": "^4.7.5" + }, + "bin": { + "tsx": "dist/cli.mjs" + }, + "engines": { + "node": ">=18.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + } + }, + "node_modules/tsx/node_modules/@esbuild/aix-ppc64": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.1.tgz", + "integrity": "sha512-kfYGy8IdzTGy+z0vFGvExZtxkFlA4zAxgKEahG9KE1ScBjpQnFsNOX8KTU5ojNru5ed5CVoJYXFtoxaq5nFbjQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/android-arm": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.1.tgz", + "integrity": "sha512-dp+MshLYux6j/JjdqVLnMglQlFu+MuVeNrmT5nk6q07wNhCdSnB7QZj+7G8VMUGh1q+vj2Bq8kRsuyA00I/k+Q==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/android-arm64": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.1.tgz", + "integrity": "sha512-50tM0zCJW5kGqgG7fQ7IHvQOcAn9TKiVRuQ/lN0xR+T2lzEFvAi1ZcS8DiksFcEpf1t/GYOeOfCAgDHFpkiSmA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/android-x64": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.1.tgz", + "integrity": "sha512-GCj6WfUtNldqUzYkN/ITtlhwQqGWu9S45vUXs7EIYf+7rCiiqH9bCloatO9VhxsL0Pji+PF4Lz2XXCES+Q8hDw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/darwin-arm64": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.1.tgz", + "integrity": "sha512-5hEZKPf+nQjYoSr/elb62U19/l1mZDdqidGfmFutVUjjUZrOazAtwK+Kr+3y0C/oeJfLlxo9fXb1w7L+P7E4FQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/darwin-x64": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.1.tgz", + "integrity": "sha512-hxVnwL2Dqs3fM1IWq8Iezh0cX7ZGdVhbTfnOy5uURtao5OIVCEyj9xIzemDi7sRvKsuSdtCAhMKarxqtlyVyfA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/freebsd-arm64": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.1.tgz", + "integrity": "sha512-1MrCZs0fZa2g8E+FUo2ipw6jw5qqQiH+tERoS5fAfKnRx6NXH31tXBKI3VpmLijLH6yriMZsxJtaXUyFt/8Y4A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/freebsd-x64": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.1.tgz", + "integrity": "sha512-0IZWLiTyz7nm0xuIs0q1Y3QWJC52R8aSXxe40VUxm6BB1RNmkODtW6LHvWRrGiICulcX7ZvyH6h5fqdLu4gkww==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/linux-arm": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.1.tgz", + "integrity": "sha512-NdKOhS4u7JhDKw9G3cY6sWqFcnLITn6SqivVArbzIaf3cemShqfLGHYMx8Xlm/lBit3/5d7kXvriTUGa5YViuQ==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/linux-arm64": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.1.tgz", + "integrity": "sha512-jaN3dHi0/DDPelk0nLcXRm1q7DNJpjXy7yWaWvbfkPvI+7XNSc/lDOnCLN7gzsyzgu6qSAmgSvP9oXAhP973uQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/linux-ia32": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.1.tgz", + "integrity": "sha512-OJykPaF4v8JidKNGz8c/q1lBO44sQNUQtq1KktJXdBLn1hPod5rE/Hko5ugKKZd+D2+o1a9MFGUEIUwO2YfgkQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/linux-loong64": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.1.tgz", + "integrity": "sha512-nGfornQj4dzcq5Vp835oM/o21UMlXzn79KobKlcs3Wz9smwiifknLy4xDCLUU0BWp7b/houtdrgUz7nOGnfIYg==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/linux-mips64el": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.1.tgz", + "integrity": "sha512-1osBbPEFYwIE5IVB/0g2X6i1qInZa1aIoj1TdL4AaAb55xIIgbg8Doq6a5BzYWgr+tEcDzYH67XVnTmUzL+nXg==", + "cpu": [ + "mips64el" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/linux-ppc64": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.1.tgz", + "integrity": "sha512-/6VBJOwUf3TdTvJZ82qF3tbLuWsscd7/1w+D9LH0W/SqUgM5/JJD0lrJ1fVIfZsqB6RFmLCe0Xz3fmZc3WtyVg==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/linux-riscv64": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.1.tgz", + "integrity": "sha512-nSut/Mx5gnilhcq2yIMLMe3Wl4FK5wx/o0QuuCLMtmJn+WeWYoEGDN1ipcN72g1WHsnIbxGXd4i/MF0gTcuAjQ==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/linux-s390x": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.1.tgz", + "integrity": "sha512-cEECeLlJNfT8kZHqLarDBQso9a27o2Zd2AQ8USAEoGtejOrCYHNtKP8XQhMDJMtthdF4GBmjR2au3x1udADQQQ==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/linux-x64": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.1.tgz", + "integrity": "sha512-xbfUhu/gnvSEg+EGovRc+kjBAkrvtk38RlerAzQxvMzlB4fXpCFCeUAYzJvrnhFtdeyVCDANSjJvOvGYoeKzFA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/netbsd-x64": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.1.tgz", + "integrity": "sha512-X53z6uXip6KFXBQ+Krbx25XHV/NCbzryM6ehOAeAil7X7oa4XIq+394PWGnwaSQ2WRA0KI6PUO6hTO5zeF5ijA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/openbsd-x64": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.1.tgz", + "integrity": "sha512-T3H78X2h1tszfRSf+txbt5aOp/e7TAz3ptVKu9Oyir3IAOFPGV6O9c2naym5TOriy1l0nNf6a4X5UXRZSGX/dw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/sunos-x64": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.1.tgz", + "integrity": "sha512-2H3RUvcmULO7dIE5EWJH8eubZAI4xw54H1ilJnRNZdeo8dTADEZ21w6J22XBkXqGJbe0+wnNJtw3UXRoLJnFEg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/win32-arm64": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.1.tgz", + "integrity": "sha512-GE7XvrdOzrb+yVKB9KsRMq+7a2U/K5Cf/8grVFRAGJmfADr/e/ODQ134RK2/eeHqYV5eQRFxb1hY7Nr15fv1NQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/win32-ia32": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.1.tgz", + "integrity": "sha512-uOxSJCIcavSiT6UnBhBzE8wy3n0hOkJsBOzy7HDAuTDE++1DJMRRVCPGisULScHL+a/ZwdXPpXD3IyFKjA7K8A==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/win32-x64": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.1.tgz", + "integrity": "sha512-Y1EQdcfwMSeQN/ujR5VayLOJ1BHaK+ssyk0AEzPjC+t1lITgsnccPqFjb6V+LsTp/9Iov4ysfjxLaGJ9RPtkVg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/esbuild": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.1.tgz", + "integrity": "sha512-BGO5LtrGC7vxnqucAe/rmvKdJllfGaYWdyABvyMoXQlfYMb2bbRuReWR5tEGE//4LcNJj9XrkovTqNYRFZHAMQ==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.25.1", + "@esbuild/android-arm": "0.25.1", + "@esbuild/android-arm64": "0.25.1", + "@esbuild/android-x64": "0.25.1", + "@esbuild/darwin-arm64": "0.25.1", + "@esbuild/darwin-x64": "0.25.1", + "@esbuild/freebsd-arm64": "0.25.1", + "@esbuild/freebsd-x64": "0.25.1", + "@esbuild/linux-arm": "0.25.1", + "@esbuild/linux-arm64": "0.25.1", + "@esbuild/linux-ia32": "0.25.1", + "@esbuild/linux-loong64": "0.25.1", + "@esbuild/linux-mips64el": "0.25.1", + "@esbuild/linux-ppc64": "0.25.1", + "@esbuild/linux-riscv64": "0.25.1", + "@esbuild/linux-s390x": "0.25.1", + "@esbuild/linux-x64": "0.25.1", + "@esbuild/netbsd-arm64": "0.25.1", + "@esbuild/netbsd-x64": "0.25.1", + "@esbuild/openbsd-arm64": "0.25.1", + "@esbuild/openbsd-x64": "0.25.1", + "@esbuild/sunos-x64": "0.25.1", + "@esbuild/win32-arm64": "0.25.1", + "@esbuild/win32-ia32": "0.25.1", + "@esbuild/win32-x64": "0.25.1" + } + }, "node_modules/tunnel-agent": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", @@ -20257,6 +21204,61 @@ "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, + "node_modules/wrap-ansi-cjs": { + "name": "wrap-ansi", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "license": "MIT" + }, "node_modules/wrap-ansi/node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", @@ -22025,6 +23027,13 @@ "dev": true, "optional": true }, + "@esbuild/netbsd-arm64": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.1.tgz", + "integrity": "sha512-O96poM2XGhLtpTh+s4+nP7YCCAfb4tJNRVZHfIE7dgmax+yMP2WgMd2OecBuaATHKTHsLWHQeuaxMRnCsH8+5g==", + "dev": true, + "optional": true + }, "@esbuild/netbsd-x64": { "version": "0.21.5", "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz", @@ -22032,6 +23041,13 @@ "dev": true, "optional": true }, + "@esbuild/openbsd-arm64": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.1.tgz", + "integrity": "sha512-Na9T3szbXezdzM/Kfs3GcRQNjHzM6GzFBeU1/6IV/npKP5ORtp9zbQjvkDJ47s6BCgaAZnnnu/cY1x342+MvZg==", + "dev": true, + "optional": true + }, "@esbuild/openbsd-x64": { "version": "0.21.5", "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz", @@ -22147,6 +23163,71 @@ "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", "dev": true }, + "@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "dev": true, + "requires": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", + "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", + "dev": true + }, + "ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "dev": true + }, + "emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true + }, + "string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dev": true, + "requires": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + } + }, + "strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "requires": { + "ansi-regex": "^6.0.1" + } + }, + "wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "dev": true, + "requires": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + } + } + } + }, "@istanbuljs/load-nyc-config": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", @@ -22825,6 +23906,13 @@ } } }, + "@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "dev": true, + "optional": true + }, "@react-icons/all-files": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/@react-icons/all-files/-/all-files-4.1.0.tgz", @@ -23387,6 +24475,37 @@ "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", "dev": true }, + "@ts-morph/common": { + "version": "0.26.1", + "resolved": "https://registry.npmjs.org/@ts-morph/common/-/common-0.26.1.tgz", + "integrity": "sha512-Sn28TGl/4cFpcM+jwsH1wLncYq3FtN/BIpem+HOygfBWPT5pAeS5dB4VFVzV8FbnOKHpDLZmvAl4AjPEev5idA==", + "dev": true, + "requires": { + "fast-glob": "^3.3.2", + "minimatch": "^9.0.4", + "path-browserify": "^1.0.1" + }, + "dependencies": { + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0" + } + }, + "minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "requires": { + "brace-expansion": "^2.0.1" + } + } + } + }, "@types/aria-query": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/@types/aria-query/-/aria-query-4.2.2.tgz", @@ -23582,6 +24701,12 @@ "integrity": "sha512-QRLQpFsIQGO2k8pupga9abfei85GKotAtQ+F6xuQmSGomUt6C52TyMiTFpP8kUwuPKr00gNtu3itLlC6gvI/NA==", "dev": true }, + "@types/mustache": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@types/mustache/-/mustache-4.2.5.tgz", + "integrity": "sha512-PLwiVvTBg59tGFL/8VpcGvqOu3L4OuveNvPi0EYbWchRdEVP++yRUXJPFl+CApKEq13017/4Nf7aQ5lTtHUNsA==", + "dev": true + }, "@types/node": { "version": "22.7.5", "resolved": "https://registry.npmjs.org/@types/node/-/node-22.7.5.tgz", @@ -25244,6 +26369,12 @@ "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", "dev": true }, + "code-block-writer": { + "version": "13.0.3", + "resolved": "https://registry.npmjs.org/code-block-writer/-/code-block-writer-13.0.3.tgz", + "integrity": "sha512-Oofo0pq3IKnsFtuHqSF7TqBfr71aeyZDVJ0HpmqB7FBM2qEigL0iPONSCZSO9pE9dZTAxANe5XHG9Uy0YMv8cg==", + "dev": true + }, "code-point-at": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", @@ -25453,9 +26584,9 @@ } }, "cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", "dev": true, "requires": { "path-key": "^3.1.0", @@ -25919,6 +27050,12 @@ } } }, + "eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "dev": true + }, "ecc-jsbn": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", @@ -27161,6 +28298,24 @@ "integrity": "sha512-k6GAGDyqLe9JaebCsFCoudPPWfihKu8pylYXRlqP1J7ms39iPoTtk2fviNglIeQEwdh0bQeKJ01ZPyuyQvKzwg==", "dev": true }, + "foreground-child": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz", + "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.6", + "signal-exit": "^4.0.1" + }, + "dependencies": { + "signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true + } + } + }, "forever-agent": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", @@ -27405,6 +28560,15 @@ "get-intrinsic": "^1.2.4" } }, + "get-tsconfig": { + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.10.0.tgz", + "integrity": "sha512-kGzZ3LWWQcGIAmg6iWvXn0ei6WDtV26wzHRMwDSzmAbcXrTEXxHy6IehI6/4eT6VRKyMP1eF1VqwrVUmE/LR7A==", + "dev": true, + "requires": { + "resolve-pkg-maps": "^1.0.0" + } + }, "get-value": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", @@ -28823,6 +29987,16 @@ "istanbul-lib-report": "^3.0.0" } }, + "jackspeak": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", + "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", + "dev": true, + "requires": { + "@isaacs/cliui": "^8.0.2", + "@pkgjs/parseargs": "^0.11.0" + } + }, "jest": { "version": "26.6.3", "resolved": "https://registry.npmjs.org/jest/-/jest-26.6.3.tgz", @@ -31077,6 +32251,12 @@ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "dev": true }, + "mustache": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/mustache/-/mustache-4.2.0.tgz", + "integrity": "sha512-71ippSywq5Yb7/tVYyGbkBggbU8H3u5Rz56fH60jGFgr8uHwxs+aSKeqmluIVzM0m0kB7xQjKS6qPfd0b2ZoqQ==", + "dev": true + }, "nan": { "version": "2.20.0", "resolved": "https://registry.npmjs.org/nan/-/nan-2.20.0.tgz", @@ -31794,6 +32974,12 @@ "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", "dev": true }, + "package-json-from-dist": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", + "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==", + "dev": true + }, "parent-module": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", @@ -31851,6 +33037,12 @@ "integrity": "sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw==", "dev": true }, + "path-browserify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz", + "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==", + "dev": true + }, "path-exists": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", @@ -31875,6 +33067,30 @@ "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", "dev": true }, + "path-scurry": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "dev": true, + "requires": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "dependencies": { + "lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "dev": true + }, + "minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "dev": true + } + } + }, "path-type": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", @@ -32817,6 +34033,12 @@ "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", "dev": true }, + "resolve-pkg-maps": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", + "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", + "dev": true + }, "resolve-url": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", @@ -33019,6 +34241,12 @@ "is-regex": "^1.1.4" } }, + "safe-stable-stringify": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.5.0.tgz", + "integrity": "sha512-b3rppTKm9T+PsVCBEOUR46GWI7fdOs00VKZ1+9c1EWDaDMvjQc6tUwuFyIprgGgTcWoVHSKrU8H31ZHA2e0RHA==", + "dev": true + }, "safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", @@ -33969,6 +35197,17 @@ "strip-ansi": "^6.0.1" } }, + "string-width-cjs": { + "version": "npm:string-width@4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + } + }, "string.prototype.trim": { "version": "1.2.9", "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz", @@ -34012,6 +35251,15 @@ "ansi-regex": "^5.0.1" } }, + "strip-ansi-cjs": { + "version": "npm:strip-ansi@6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.1" + } + }, "strip-bom": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", @@ -34513,6 +35761,74 @@ } } }, + "ts-json-schema-generator": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/ts-json-schema-generator/-/ts-json-schema-generator-2.3.0.tgz", + "integrity": "sha512-t4lBQAwZc0sOJq9LJt3NgbznIcslVnm0JeEMFq8qIRklpMRY8jlYD0YmnRWbqBKANxkby91P1XanSSlSOFpUmg==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.15", + "commander": "^12.0.0", + "glob": "^10.3.12", + "json5": "^2.2.3", + "normalize-path": "^3.0.0", + "safe-stable-stringify": "^2.4.3", + "tslib": "^2.6.2", + "typescript": "^5.4.5" + }, + "dependencies": { + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0" + } + }, + "commander": { + "version": "12.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-12.1.0.tgz", + "integrity": "sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==", + "dev": true + }, + "glob": { + "version": "10.4.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", + "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", + "dev": true, + "requires": { + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" + } + }, + "minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "requires": { + "brace-expansion": "^2.0.1" + } + }, + "minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "dev": true + }, + "typescript": { + "version": "5.8.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.2.tgz", + "integrity": "sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ==", + "dev": true + } + } + }, "ts-loader": { "version": "8.0.4", "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-8.0.4.tgz", @@ -34526,6 +35842,16 @@ "semver": "^6.0.0" } }, + "ts-morph": { + "version": "25.0.1", + "resolved": "https://registry.npmjs.org/ts-morph/-/ts-morph-25.0.1.tgz", + "integrity": "sha512-QJEiTdnz1YjrB3JFhd626gX4rKHDLSjSVMvGGG4v7ONc3RBwa0Eei98G9AT9uNFDMtV54JyuXsFeC+OH0n6bXQ==", + "dev": true, + "requires": { + "@ts-morph/common": "~0.26.0", + "code-block-writer": "^13.0.3" + } + }, "tsconfig-paths": { "version": "3.15.0", "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", @@ -34577,6 +35903,213 @@ } } }, + "tsx": { + "version": "4.19.3", + "resolved": "https://registry.npmjs.org/tsx/-/tsx-4.19.3.tgz", + "integrity": "sha512-4H8vUNGNjQ4V2EOoGw005+c+dGuPSnhpPBPHBtsZdGZBk/iJb4kguGlPWaZTZ3q5nMtFOEsY0nRDlh9PJyd6SQ==", + "dev": true, + "requires": { + "esbuild": "~0.25.0", + "fsevents": "~2.3.3", + "get-tsconfig": "^4.7.5" + }, + "dependencies": { + "@esbuild/aix-ppc64": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.1.tgz", + "integrity": "sha512-kfYGy8IdzTGy+z0vFGvExZtxkFlA4zAxgKEahG9KE1ScBjpQnFsNOX8KTU5ojNru5ed5CVoJYXFtoxaq5nFbjQ==", + "dev": true, + "optional": true + }, + "@esbuild/android-arm": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.1.tgz", + "integrity": "sha512-dp+MshLYux6j/JjdqVLnMglQlFu+MuVeNrmT5nk6q07wNhCdSnB7QZj+7G8VMUGh1q+vj2Bq8kRsuyA00I/k+Q==", + "dev": true, + "optional": true + }, + "@esbuild/android-arm64": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.1.tgz", + "integrity": "sha512-50tM0zCJW5kGqgG7fQ7IHvQOcAn9TKiVRuQ/lN0xR+T2lzEFvAi1ZcS8DiksFcEpf1t/GYOeOfCAgDHFpkiSmA==", + "dev": true, + "optional": true + }, + "@esbuild/android-x64": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.1.tgz", + "integrity": "sha512-GCj6WfUtNldqUzYkN/ITtlhwQqGWu9S45vUXs7EIYf+7rCiiqH9bCloatO9VhxsL0Pji+PF4Lz2XXCES+Q8hDw==", + "dev": true, + "optional": true + }, + "@esbuild/darwin-arm64": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.1.tgz", + "integrity": "sha512-5hEZKPf+nQjYoSr/elb62U19/l1mZDdqidGfmFutVUjjUZrOazAtwK+Kr+3y0C/oeJfLlxo9fXb1w7L+P7E4FQ==", + "dev": true, + "optional": true + }, + "@esbuild/darwin-x64": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.1.tgz", + "integrity": "sha512-hxVnwL2Dqs3fM1IWq8Iezh0cX7ZGdVhbTfnOy5uURtao5OIVCEyj9xIzemDi7sRvKsuSdtCAhMKarxqtlyVyfA==", + "dev": true, + "optional": true + }, + "@esbuild/freebsd-arm64": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.1.tgz", + "integrity": "sha512-1MrCZs0fZa2g8E+FUo2ipw6jw5qqQiH+tERoS5fAfKnRx6NXH31tXBKI3VpmLijLH6yriMZsxJtaXUyFt/8Y4A==", + "dev": true, + "optional": true + }, + "@esbuild/freebsd-x64": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.1.tgz", + "integrity": "sha512-0IZWLiTyz7nm0xuIs0q1Y3QWJC52R8aSXxe40VUxm6BB1RNmkODtW6LHvWRrGiICulcX7ZvyH6h5fqdLu4gkww==", + "dev": true, + "optional": true + }, + "@esbuild/linux-arm": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.1.tgz", + "integrity": "sha512-NdKOhS4u7JhDKw9G3cY6sWqFcnLITn6SqivVArbzIaf3cemShqfLGHYMx8Xlm/lBit3/5d7kXvriTUGa5YViuQ==", + "dev": true, + "optional": true + }, + "@esbuild/linux-arm64": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.1.tgz", + "integrity": "sha512-jaN3dHi0/DDPelk0nLcXRm1q7DNJpjXy7yWaWvbfkPvI+7XNSc/lDOnCLN7gzsyzgu6qSAmgSvP9oXAhP973uQ==", + "dev": true, + "optional": true + }, + "@esbuild/linux-ia32": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.1.tgz", + "integrity": "sha512-OJykPaF4v8JidKNGz8c/q1lBO44sQNUQtq1KktJXdBLn1hPod5rE/Hko5ugKKZd+D2+o1a9MFGUEIUwO2YfgkQ==", + "dev": true, + "optional": true + }, + "@esbuild/linux-loong64": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.1.tgz", + "integrity": "sha512-nGfornQj4dzcq5Vp835oM/o21UMlXzn79KobKlcs3Wz9smwiifknLy4xDCLUU0BWp7b/houtdrgUz7nOGnfIYg==", + "dev": true, + "optional": true + }, + "@esbuild/linux-mips64el": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.1.tgz", + "integrity": "sha512-1osBbPEFYwIE5IVB/0g2X6i1qInZa1aIoj1TdL4AaAb55xIIgbg8Doq6a5BzYWgr+tEcDzYH67XVnTmUzL+nXg==", + "dev": true, + "optional": true + }, + "@esbuild/linux-ppc64": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.1.tgz", + "integrity": "sha512-/6VBJOwUf3TdTvJZ82qF3tbLuWsscd7/1w+D9LH0W/SqUgM5/JJD0lrJ1fVIfZsqB6RFmLCe0Xz3fmZc3WtyVg==", + "dev": true, + "optional": true + }, + "@esbuild/linux-riscv64": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.1.tgz", + "integrity": "sha512-nSut/Mx5gnilhcq2yIMLMe3Wl4FK5wx/o0QuuCLMtmJn+WeWYoEGDN1ipcN72g1WHsnIbxGXd4i/MF0gTcuAjQ==", + "dev": true, + "optional": true + }, + "@esbuild/linux-s390x": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.1.tgz", + "integrity": "sha512-cEECeLlJNfT8kZHqLarDBQso9a27o2Zd2AQ8USAEoGtejOrCYHNtKP8XQhMDJMtthdF4GBmjR2au3x1udADQQQ==", + "dev": true, + "optional": true + }, + "@esbuild/linux-x64": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.1.tgz", + "integrity": "sha512-xbfUhu/gnvSEg+EGovRc+kjBAkrvtk38RlerAzQxvMzlB4fXpCFCeUAYzJvrnhFtdeyVCDANSjJvOvGYoeKzFA==", + "dev": true, + "optional": true + }, + "@esbuild/netbsd-x64": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.1.tgz", + "integrity": "sha512-X53z6uXip6KFXBQ+Krbx25XHV/NCbzryM6ehOAeAil7X7oa4XIq+394PWGnwaSQ2WRA0KI6PUO6hTO5zeF5ijA==", + "dev": true, + "optional": true + }, + "@esbuild/openbsd-x64": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.1.tgz", + "integrity": "sha512-T3H78X2h1tszfRSf+txbt5aOp/e7TAz3ptVKu9Oyir3IAOFPGV6O9c2naym5TOriy1l0nNf6a4X5UXRZSGX/dw==", + "dev": true, + "optional": true + }, + "@esbuild/sunos-x64": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.1.tgz", + "integrity": "sha512-2H3RUvcmULO7dIE5EWJH8eubZAI4xw54H1ilJnRNZdeo8dTADEZ21w6J22XBkXqGJbe0+wnNJtw3UXRoLJnFEg==", + "dev": true, + "optional": true + }, + "@esbuild/win32-arm64": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.1.tgz", + "integrity": "sha512-GE7XvrdOzrb+yVKB9KsRMq+7a2U/K5Cf/8grVFRAGJmfADr/e/ODQ134RK2/eeHqYV5eQRFxb1hY7Nr15fv1NQ==", + "dev": true, + "optional": true + }, + "@esbuild/win32-ia32": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.1.tgz", + "integrity": "sha512-uOxSJCIcavSiT6UnBhBzE8wy3n0hOkJsBOzy7HDAuTDE++1DJMRRVCPGisULScHL+a/ZwdXPpXD3IyFKjA7K8A==", + "dev": true, + "optional": true + }, + "@esbuild/win32-x64": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.1.tgz", + "integrity": "sha512-Y1EQdcfwMSeQN/ujR5VayLOJ1BHaK+ssyk0AEzPjC+t1lITgsnccPqFjb6V+LsTp/9Iov4ysfjxLaGJ9RPtkVg==", + "dev": true, + "optional": true + }, + "esbuild": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.1.tgz", + "integrity": "sha512-BGO5LtrGC7vxnqucAe/rmvKdJllfGaYWdyABvyMoXQlfYMb2bbRuReWR5tEGE//4LcNJj9XrkovTqNYRFZHAMQ==", + "dev": true, + "requires": { + "@esbuild/aix-ppc64": "0.25.1", + "@esbuild/android-arm": "0.25.1", + "@esbuild/android-arm64": "0.25.1", + "@esbuild/android-x64": "0.25.1", + "@esbuild/darwin-arm64": "0.25.1", + "@esbuild/darwin-x64": "0.25.1", + "@esbuild/freebsd-arm64": "0.25.1", + "@esbuild/freebsd-x64": "0.25.1", + "@esbuild/linux-arm": "0.25.1", + "@esbuild/linux-arm64": "0.25.1", + "@esbuild/linux-ia32": "0.25.1", + "@esbuild/linux-loong64": "0.25.1", + "@esbuild/linux-mips64el": "0.25.1", + "@esbuild/linux-ppc64": "0.25.1", + "@esbuild/linux-riscv64": "0.25.1", + "@esbuild/linux-s390x": "0.25.1", + "@esbuild/linux-x64": "0.25.1", + "@esbuild/netbsd-arm64": "0.25.1", + "@esbuild/netbsd-x64": "0.25.1", + "@esbuild/openbsd-arm64": "0.25.1", + "@esbuild/openbsd-x64": "0.25.1", + "@esbuild/sunos-x64": "0.25.1", + "@esbuild/win32-arm64": "0.25.1", + "@esbuild/win32-ia32": "0.25.1", + "@esbuild/win32-x64": "0.25.1" + } + } + } + }, "tunnel-agent": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", @@ -35451,6 +36984,43 @@ } } }, + "wrap-ansi-cjs": { + "version": "npm:wrap-ansi@7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + } + } + }, "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", diff --git a/package.json b/package.json index d7df88c7..e63c3ef5 100644 --- a/package.json +++ b/package.json @@ -95,6 +95,7 @@ "@types/jest": "^22.2.3", "@types/lodash": "^4.17.0", "@types/mixpanel-browser": "^2.35.6", + "@types/mustache": "^4.2.5", "@types/react-test-renderer": "^17.0.1", "@typescript-eslint/eslint-plugin": "^4.6.0", "@typescript-eslint/parser": "^4.6.0", @@ -110,11 +111,11 @@ "eslint-config-airbnb-base": "^14.2.0", "eslint-config-prettier": "^6.15.0", "eslint-import-resolver-typescript": "^2.3.0", + "eslint-plugin-comment-length": "1.7.3", "eslint-plugin-import": "^2.22.1", + "eslint-plugin-jsdoc": "^46.9.0", "eslint-plugin-prettier": "^3.1.4", "eslint-plugin-react-hooks": "^4.2.0", - "eslint-plugin-comment-length": "1.7.3", - "eslint-plugin-jsdoc": "^46.9.0", "fs-extra": "^10.0.0", "gh-pages": "6.3.0", "highlight.js": "^10.6.0", @@ -124,6 +125,7 @@ "jest": "^26.6.3", "jest-fetch-mock": "^3.0.3", "jsdom": "^17.0.0", + "mustache": "^4.2.0", "node-sass": "^8.0.0", "prettier": "2.1.2", "react": "^16.14.0", @@ -135,7 +137,10 @@ "rollup": "4.24.0", "rollup-plugin-typescript2": "0.27.3", "ts-jest": "^26.5.5", + "ts-json-schema-generator": "^2.3.0", "ts-loader": "8.0.4", + "ts-morph": "^25.0.1", + "tsx": "^4.19.3", "typedoc": "0.21.6", "typedoc-plugin-toc-group": "thoughtspot/typedoc-plugin-toc-group", "typescript": "^4.9.4", diff --git a/schema.json b/schema.json new file mode 100644 index 00000000..85a4aac2 --- /dev/null +++ b/schema.json @@ -0,0 +1,1748 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "definitions": { + "SessionInterface": { + "type": "object", + "properties": { + "sessionId": { + "type": "string" + }, + "genNo": { + "type": "number" + }, + "acSession": { + "type": "object", + "properties": { + "sessionId": { + "type": "string" + }, + "genNo": { + "type": "number" + } + }, + "required": [ + "sessionId", + "genNo" + ], + "additionalProperties": false + } + }, + "required": [ + "sessionId", + "genNo", + "acSession" + ], + "additionalProperties": false + }, + "AuthType": { + "type": "string", + "enum": [ + "None", + "EmbeddedSSO", + "SSO_SAML", + "SSO_OIDC", + "AuthServer", + "AuthServerCookieless", + "Basic" + ], + "description": "The authentication mechanism for allowing access to the the embedded app" + }, + "HomeLeftNavItem": { + "type": "string", + "enum": [ + "search-data", + "insights-home", + "liveboards", + "answers", + "monitor-alerts", + "spotiq-analysis", + "liveboard-schedules" + ], + "description": "This option does not apply to the classic homepage experience. To access the updated modular homepage, set `modularHomeExperience` to `true` (available as Early Access feature in 9.12.5.cl)." + }, + "DOMSelector": { + "type": "string" + }, + "customCssInterface": { + "type": "object", + "properties": { + "variables": { + "$ref": "#/definitions/CustomCssVariables", + "description": "The custom css variables, which can be set. The variables are available in the {@link CustomCssVariables } interface. For more information, see link:https://developers.thoughtspot.com/docs/css-variables-reference[CSS variable reference]." + }, + "rules_UNSTABLE": { + "type": "object", + "additionalProperties": { + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "description": "Can be used to define a custom font face like:" + } + }, + "additionalProperties": false, + "description": "inline customCSS within the {@link CustomisationsInterface } . Use {@link CustomCssVariables } or css rules." + }, + "CustomCssVariables": { + "type": "object", + "properties": { + "--ts-var-root-background": { + "type": "string", + "description": "Background color of the Liveboard, visualization, Search, and Answer pages." + }, + "--ts-var-root-color": { + "type": "string", + "description": "Color of the text on application pages." + }, + "--ts-var-root-font-family": { + "type": "string", + "description": "Font type for the text on application pages." + }, + "--ts-var-root-text-transform": { + "type": "string", + "description": "Text transformation specification for UI elements in the app." + }, + "--ts-var-application-color": { + "type": "string", + "description": "Font color of the text on toggle buttons such as\n**All**, **Answers**, and **Liveboards** on the Home page (Classic experience), the text color of the chart and table tiles on Home page (New modular Homepage experience), and title text on the AI-generated charts and tables. The default color code is #2770EF." + }, + "--ts-var-nav-background": { + "type": "string", + "description": "Background color of the top navigation panel." + }, + "--ts-var-nav-color": { + "type": "string", + "description": "Font color of the top navigation panel." + }, + "--ts-var-search-data-button-background": { + "type": "string", + "description": "Background color of the *Search data* button." + }, + "--ts-var-search-data-button-font-color": { + "type": "string", + "description": "Color of the text on the *Search data* button." + }, + "--ts-var-search-data-button-font-family": { + "type": "string", + "description": "Font of the text on the *Search data* button." + }, + "--ts-var-search-bar-text-font-color": { + "type": "string", + "description": "Font color of the text in the Search bar." + }, + "--ts-var-search-bar-text-font-family": { + "type": "string", + "description": "Font of the text in the Search bar." + }, + "--ts-var-search-bar-text-font-style": { + "type": "string", + "description": "Font style of the text in the Search bar." + }, + "--ts-var-search-bar-background": { + "type": "string", + "description": "Background color of the search bar." + }, + "--ts-var-search-auto-complete-background": { + "type": "string", + "description": "Background color of the search suggestions panel." + }, + "--ts-var-search-navigation-button-background": { + "type": "string", + "description": "Background color of the navigation panel that allows you to undo, redo, and reset search operations." + }, + "--ts-var-search-bar-navigation-help-text-background": { + "type": "string", + "description": "Background color of the navigation help text that appears at the bottom of the search suggestions panel." + }, + "--ts-var-search-bar-auto-complete-hover-background": { + "type": "string", + "description": "Background color of the search suggestion block on hover." + }, + "--ts-var-search-auto-complete-font-color": { + "type": "string", + "description": "Font color of the text in the search suggestion panel." + }, + "--ts-var-search-auto-complete-subtext-font-color": { + "type": "string", + "description": "Font color of the sub-text that appears below the keyword in the search suggestion panel." + }, + "--ts-var-spotter-input-background": { + "type": "string", + "description": "Background color of the input box in the Spotter page." + }, + "--ts-var-spotter-prompt-background": { + "type": "string", + "description": "Background color of the previously asked prompt message in the Spotter page." + }, + "--ts-var-answer-data-panel-background-color": { + "type": "string", + "description": "Background color of the data panel." + }, + "--ts-var-answer-edit-panel-background-color": { + "type": "string", + "description": "Background color of the vertical panel on the right side of the Answer page, which includes the options to edit charts and tables." + }, + "--ts-var-answer-view-table-chart-switcher-background": { + "type": "string", + "description": "Background color of the chart switcher on search results and Answer pages." + }, + "--ts-var-answer-view-table-chart-switcher-active-background": { + "type": "string", + "description": "Background color of the currently selected chart type in the chart switcher." + }, + "--ts-var-button-border-radius": { + "type": "string", + "description": "Border-radius of main buttons. For example, the *Search data* button in the top navigation panel." + }, + "--ts-var-button--icon-border-radius": { + "type": "string", + "description": "Border-radius of small buttons such as secondary buttons. For example, share and favorite buttons." + }, + "--ts-var-button--primary-color": { + "type": "string", + "description": "Font color of the text on primary buttons. For example, the primary buttons on Liveboard*, Answer, *Data* workspace, *SpotIQ*, or *Home* page." + }, + "--ts-var-button--primary--font-family": { + "type": "string", + "description": "Font family specification for the text on primary buttons." + }, + "--ts-var-button--primary-background": { + "type": "string", + "description": "Background color of the primary buttons. For example, the primary buttons such as Pin* and *Save*." + }, + "--ts-var-button--primary--hover-background": { + "type": "string", + "description": "Background color of the primary buttons on hover." + }, + "--ts-var-button--primary--active-background": { + "type": "string", + "description": "Backgroud color of the primary buttons when active." + }, + "--ts-var-button--secondary-color": { + "type": "string", + "description": "Font color of the text on the secondary buttons." + }, + "--ts-var-button--secondary--font-family": { + "type": "string", + "description": "Font family specification for the text on the secondary buttons." + }, + "--ts-var-button--secondary-background": { + "type": "string", + "description": "Background color of the secondary buttons." + }, + "--ts-var-button--secondary--hover-background": { + "type": "string", + "description": "Background color of the secondary button on hover." + }, + "--ts-var-button--secondary--active-background": { + "type": "string", + "description": "Backgroud color of the secondary buttons when active." + }, + "--ts-var-button--tertiary-color": { + "type": "string", + "description": "Font color of the tertiary button. For example, the *Undo*, *Redo*, and *Reset* buttons on the *Search* page." + }, + "--ts-var-button--tertiary-background": { + "type": "string", + "description": "Background color of the tertiary button." + }, + "--ts-var-button--tertiary--hover-background": { + "type": "string", + "description": "Background color of the tertiary button when a user hovers over these buttons." + }, + "--ts-var-button--tertiary--active-background": { + "type": "string", + "description": "Backgroud color of the tertiary buttons when active." + }, + "--ts-var-viz-title-color": { + "type": "string", + "description": "Font color of the title text of a visualization or Answer." + }, + "--ts-var-viz-title-font-family": { + "type": "string", + "description": "Font family specification for the title text of a visualization/Answer." + }, + "--ts-var-viz-title-text-transform": { + "type": "string", + "description": "Text transformation specification for visualization and Answer titles." + }, + "--ts-var-viz-description-color": { + "type": "string", + "description": "Font color of the description text and subtitle of a visualization or Answer." + }, + "--ts-var-viz-description-font-family": { + "type": "string", + "description": "Font family specification of description text and subtitle of a visualization or Answer." + }, + "--ts-var-viz-description-text-transform": { + "type": "string", + "description": "Text transformation specification for description text and subtitle of a visualization or Answer." + }, + "--ts-var-viz-border-radius": { + "type": "string", + "description": "Border-radius for the visualization tiles and header panel on a Liveboard." + }, + "--ts-var-viz-box-shadow": { + "type": "string", + "description": "Box shadow property for the visualization tiles and header panel on a Liveboard." + }, + "--ts-var-viz-background": { + "type": "string", + "description": "Background color of the visualization tiles and header panel on a Liveboard." + }, + "--ts-var-viz-legend-hover-background": { + "type": "string", + "description": "Background color of the legend on a visualization or Answer." + }, + "--ts-var-answer-chart-select-background": { + "type": "string", + "description": "Background color of the selected chart type on the chart selection widget." + }, + "--ts-var-answer-chart-hover-background": { + "type": "string", + "description": "Background color of the chart type element when a user hovers over a chart type on the chart selection widget." + }, + "--ts-var-chip-border-radius": { + "type": "string", + "description": "Border-radius of filter chips." + }, + "--ts-var-chip-box-shadow": { + "type": "string", + "description": "Shadow effect for filter chips." + }, + "--ts-var-chip-background": { + "type": "string", + "description": "Background color of filter chips." + }, + "--ts-var-chip--active-color": { + "type": "string", + "description": "Font color of the filter label when a filter chip is selected" + }, + "--ts-var-chip--active-background": { + "type": "string", + "description": "Background color of the filter chips when selected." + }, + "--ts-var-chip--hover-color": { + "type": "string", + "description": "Font color of the text on filter chips when hovered over." + }, + "--ts-var-chip--hover-background": { + "type": "string", + "description": "Background color of filter chips on hover." + }, + "--ts-var-chip-color": { + "type": "string", + "description": "Font color of the text on filter chips." + }, + "--ts-var-chip-title-font-family": { + "type": "string", + "description": "Font family specification for the text on filter chips." + }, + "--ts-var-axis-title-color": { + "type": "string", + "description": "Font color of axis title on charts." + }, + "--ts-var-axis-title-font-family": { + "type": "string", + "description": "Font family specification for the X and Y axis title text." + }, + "--ts-var-axis-data-label-color": { + "type": "string", + "description": "Font color of the X and Y axis labels." + }, + "--ts-var-axis-data-label-font-family": { + "type": "string", + "description": "Font family specification for X and Y axis labels." + }, + "--ts-var-menu-color": { + "type": "string", + "description": "Font color of the menu items." + }, + "--ts-var-menu-background": { + "type": "string", + "description": "Background color of menu panels." + }, + "--ts-var-menu-font-family": { + "type": "string", + "description": "Font family specification for the menu items." + }, + "--ts-var-menu-text-transform": { + "type": "string", + "description": "Text capitalization specification for the menu items." + }, + "--ts-var-menu--hover-background": { + "type": "string", + "description": "Background color for menu items on hover." + }, + "--ts-var-menu-selected-text-color": { + "type": "string", + "description": "Text color for selected menu items." + }, + "--ts-var-dialog-body-background": { + "type": "string", + "description": "Background color of the dialogs." + }, + "--ts-var-dialog-body-color": { + "type": "string", + "description": "Font color of the body text displayed on dialogs." + }, + "--ts-var-dialog-header-background": { + "type": "string", + "description": "Background color of the header text on dialogs." + }, + "--ts-var-dialog-header-color": { + "type": "string", + "description": "Font color of the header text on dialogs." + }, + "--ts-var-dialog-footer-background": { + "type": "string", + "description": "Background color of the footer area on dialogs." + }, + "--ts-var-list-selected-background": { + "type": "string", + "description": "Background for selected state in list" + }, + "--ts-var-list-hover-background": { + "type": "string", + "description": "Background for hover state in list" + }, + "--ts-var-segment-control-hover-background": { + "type": "string", + "description": "Background for hover state in segment control." + }, + "--ts-var-home-watchlist-selected-text-color": { + "type": "string", + "description": "Text color for slected item in modular home's watchlist." + }, + "--ts-var-home-favorite-suggestion-card-text-color": { + "type": "string", + "description": "Text color for favorite carousel find your favorites card in modular home." + }, + "--ts-var-home-favorite-suggestion-card-icon-color": { + "type": "string", + "description": "Icon color for favorite carousel find your favorites card in modular home." + }, + "--ts-var-home-favorite-suggestion-card-background": { + "type": "string", + "description": "Background for favorite carousel find your favorites card in modular home." + }, + "--ts-var-checkbox-error-border": { + "type": "string", + "description": "Border color of checkbox in error state." + }, + "--ts-var-checkbox-border-color": { + "type": "string", + "description": "Border color of checkbox." + }, + "--ts-var-checkbox-hover-border": { + "type": "string", + "description": "Border color of checkbox in hover state." + }, + "--ts-var-checkbox-active-color": { + "type": "string", + "description": "Border and font color of checkbox in active state." + }, + "--ts-var-checkbox-checked-color": { + "type": "string", + "description": "Border color and font color of checkbox in checked state." + }, + "--ts-var-checkbox-checked-disabled": { + "type": "string", + "description": "Border and font color of checkbox in disabled state." + }, + "--ts-var-checkbox-background-color": { + "type": "string", + "description": "Background color of checkbox." + } + }, + "required": [ + "--ts-var-spotter-prompt-background" + ], + "additionalProperties": false, + "description": "The list of customization css variables. These are the only allowed variables possible." + }, + "CustomStyles": { + "type": "object", + "properties": { + "customCSSUrl": { + "type": "string" + }, + "customCSS": { + "$ref": "#/definitions/customCssInterface" + } + }, + "additionalProperties": false, + "description": "Styles within the {@link CustomisationsInterface } ." + }, + "CustomisationsInterface": { + "type": "object", + "properties": { + "style": { + "$ref": "#/definitions/CustomStyles" + }, + "content": { + "type": "object", + "properties": { + "strings": { + "$ref": "#/definitions/Record%3Cstring%2Cany%3E" + } + } + }, + "iconSpriteUrl": { + "type": "string" + } + }, + "additionalProperties": false, + "description": "Configuration to define the customization on the Embedded ThoughtSpot components. You can customize styles, text strings, and icons. For more information, see https://developers.thoughtspot.com/docs/custom-css." + }, + "Record": { + "type": "object" + }, + "EmbedConfig": { + "type": "object", + "properties": { + "thoughtSpotHost": { + "type": "string", + "description": "The ThoughtSpot cluster hostname or IP address." + }, + "authType": { + "$ref": "#/definitions/AuthType", + "description": "The authentication mechanism to use." + }, + "authEndpoint": { + "type": "string", + "description": "[AuthServer] The trusted authentication endpoint to use to get the authentication token. A `GET` request is made to the authentication API endpoint, which returns the token as a plaintext response. For trusted authentication, the `authEndpoint` or `getAuthToken` attribute is required." + }, + "getAuthToken": { + "$comment": "() => Promise", + "description": "[AuthServer] A function that invokes the trusted authentication endpoint and returns a Promise that resolves to the `auth token` string. For trusted authentication, the `authEndpoint` or `getAuthToken` attribute is required.\n\nIt is advisable to fetch a new token inside this method and not reuse the old issued token. When auth expires this method is called again and if it is called with an older token, the authentication will not succeed." + }, + "username": { + "type": "string", + "description": "[AuthServer / Basic] The user name of the ThoughtSpot user. This attribute is required for trusted authentication." + }, + "password": { + "type": "string", + "description": "[Basic] The ThoughtSpot login password corresponding to the username\n\nWarning: This feature is primarily intended for developer testing. It is strongly advised not to use this authentication method in production." + }, + "noRedirect": { + "type": "boolean", + "description": "[SSO] For SSO Authentication, if `noRedirect` is set to true, it will open the SAML auth flow in a popup, instead of redirecting the browser in place.", + "default": false, + "deprecated": true + }, + "inPopup": { + "type": "boolean", + "description": "[SSO] For SSO Authentication, if `inPopup` is set to true, it will open the SAML auth flow in a popup, instead of redirecting the browser in place.\n\nNeed to use this with `authTriggerContainer`. Or manually trigger the `AuthEvent.TRIGGER_SSO_POPUP` event on a user interaction.", + "default": false + }, + "redirectPath": { + "type": "string", + "description": "[SSO] For SSO Authentication, one can supply an optional path param; This will be the path on the host origin where the SAML flow will be terminated.\n\nEg: \"/dashboard\", \"#/foo\" [Do not include the host]" + }, + "basepath": { + "type": "string" + }, + "shouldEncodeUrlQueryParams": { + "type": "boolean", + "description": "Boolean to define if the query parameters in the ThoughtSpot URL should be encoded in base64. This provides additional security to ThoughtSpot clusters against cross-site scripting attacks.", + "default": false + }, + "suppressNoCookieAccessAlert": { + "type": "boolean", + "description": "Suppress cookie access alert when third-party cookies are blocked by the user's browser. Third-party cookie blocking is the default behaviour on some web browsers like Safari. If you set this attribute to `true`, you are encouraged to handle `noCookieAccess` event, to show your own treatment in this case.", + "default": false + }, + "ignoreNoCookieAccess": { + "type": "boolean", + "description": "Ignore the cookie access alert when third-party cookies are blocked by the user's browser. If you set this to `true`, the embedded iframe behaviour persists even in the case of a non-logged-in user.", + "default": false + }, + "autoLogin": { + "type": "boolean", + "description": "Re-login a user with the previous login options when a user session expires.", + "default": false + }, + "disableLoginRedirect": { + "type": "boolean", + "description": "Disable redirection to the login page when the embedded session expires This flag is typically used alongside the combination of authentication modes such as {@link AuthType.AuthServer } and auto-login behavior {@link * EmbedConfig.autoLogin }", + "default": false + }, + "loginFailedMessage": { + "type": "string", + "description": "This message is displayed in the embedded view when a user login fails." + }, + "callPrefetch": { + "type": "boolean", + "description": "Calls the prefetch method internally when set to `true`", + "default": false + }, + "queueMultiRenders": { + "type": "boolean", + "description": "When there are multiple objects embedded, queue the rendering of embedded objects to start after the previous embed's render is complete. This helps improve performance by decreasing the load on the browser.", + "default": false + }, + "detectCookieAccessSlow": { + "type": "boolean", + "description": "[AuthServer|Basic] Detect if third-party party cookies are enabled by doing an additional call. This is slower and should be avoided. Listen to the `NO_COOKIE_ACCESS` event to handle the situation.\n\nThis is slightly slower than letting the browser handle the cookie check, as it involves an extra network call." + }, + "suppressSearchEmbedBetaWarning": { + "type": "boolean", + "description": "Hide the `beta` alert warning message for SearchEmbed." + }, + "suppressSageEmbedBetaWarning": { + "type": "boolean", + "description": "Hide `beta` alert warning message for SageEmbed." + }, + "customizations": { + "$ref": "#/definitions/CustomisationsInterface", + "description": "Custom style params for embed Config." + }, + "authTriggerContainer": { + "type": "string", + "description": "For `inPopup` SAMLRedirect or OIDCRedirect authentication, we need a button that the user can click to trigger the flow. This attribute sets a containing element for that button." + }, + "useEventForSAMLPopup": { + "type": "boolean", + "description": "Specify that we want to use the `AuthEvent.TRIGGER_SSO_POPUP` event to trigger SAML popup. This is useful when you want to trigger the popup on a custom user action." + }, + "authTriggerText": { + "type": "string", + "description": "Text to show in the button which triggers the popup auth flow. Default: `Authorize`." + }, + "blockNonEmbedFullAppAccess": { + "type": "boolean", + "description": "Prevent users from accessing the full application or ThoughtSpot application pages access to the embedded application users outside of the iframe.", + "default": true + }, + "pendoTrackingKey": { + "type": "string", + "description": "Pendo API key to enable Pendo tracking to your own subscription, the key is added as an additional key to the embed, as per this link:https://support.pendo.io/hc/en-us/articles/360032201951-Send-data-to-multiple-subscriptions[document]." + }, + "suppressErrorAlerts": { + "type": "boolean", + "description": "If passed as true all alerts will be suppressed in the embedded app." + }, + "logLevel": { + "$ref": "#/definitions/LogLevel", + "description": "Suppress or show specific types of logs in the console output. For example, `LogLevel.ERROR` shows only Visual Embed SDK and ThoughtSpot application errors and suppresses other logs such as warnings, information alerts, and debug messages in the console output.", + "default": "LogLevel.ERROR" + }, + "disableSDKTracking": { + "type": "boolean", + "description": "Disables the Mixpanel tracking from the SDK." + }, + "dateFormatLocale": { + "type": "string", + "description": "Overrides default/user preferred locale for date formatting" + }, + "numberFormatLocale": { + "type": "string", + "description": "Overrides default/user preferred locale for number formatting" + }, + "currencyFormat": { + "type": "string", + "description": "Format to be used for currency when currency format is set to infer from browser" + }, + "disableLoginFailurePage": { + "type": "boolean", + "description": "This flag is used to disable showing the login failure page in the embedded app." + }, + "additionalFlags": { + "type": "object", + "additionalProperties": { + "type": [ + "string", + "number", + "boolean" + ] + }, + "description": "This is an object (key/val) of override flags which will be applied to the internal embedded object. This can be used to add any URL flag. Warning: This option is for advanced use only and is used internally to control embed behavior in non-regular ways. We do not publish the list of supported keys and values associated with each." + }, + "customVariablesForThirdPartyTools": { + "$ref": "#/definitions/Record%3Cstring%2Cany%3E", + "description": "This is an object (key/val) for customVariables being used by the third party tool's script." + }, + "disablePreauthCache": { + "type": "boolean" + } + }, + "required": [ + "thoughtSpotHost", + "authType" + ], + "additionalProperties": false, + "description": "The configuration object for embedding ThoughtSpot content. It includes the ThoughtSpot hostname or IP address, the type of authentication, and the authentication endpoint if a trusted authentication server is used." + }, + "LogLevel": { + "type": "string", + "enum": [ + "SILENT", + "ERROR", + "WARN", + "INFO", + "DEBUG", + "TRACE" + ], + "description": "Enum options to show or suppress Visual Embed SDK and ThoughtSpot application logs in the console output. This attribute doesn't support suppressing browser warnings or errors." + }, + "LayoutConfig": { + "type": "object", + "additionalProperties": false + }, + "FrameParams": { + "type": "object", + "properties": { + "width": { + "type": [ + "number", + "string" + ], + "description": "The width of the iframe (unit is pixels if numeric)." + }, + "height": { + "type": [ + "number", + "string" + ], + "description": "The height of the iframe (unit is pixels if numeric)." + }, + "loading": { + "type": "string", + "enum": [ + "lazy", + "eager", + "auto" + ], + "description": "Set to 'lazy' to enable lazy loading of the embedded TS frame. This will defer loading of the frame until it comes into the viewport. This is useful for performance optimization." + } + }, + "additionalProperties": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "number" + }, + { + "type": "boolean" + }, + { + "not": {} + } + ], + "description": "This parameters will be passed on the iframe as is." + }, + "description": "Embedded iframe configuration" + }, + "ViewConfig": { + "type": "object", + "properties": { + "frameParams": { + "$ref": "#/definitions/FrameParams", + "description": "The width and height dimensions to render an embedded object inside your app. Specify the values in pixels or percentage." + }, + "disabledActions": { + "type": "array", + "items": { + "$ref": "#/definitions/Action" + }, + "description": "The list of actions to disable from the primary menu, more menu (...), and the contextual menu. These actions will be disabled for the user. Use this to disable actions." + }, + "disabledActionReason": { + "type": "string", + "description": "The tooltip to display for disabled actions." + }, + "hiddenActions": { + "type": "array", + "items": { + "$ref": "#/definitions/Action" + }, + "description": "The list of actions to hide from the embedded. This actions will be hidden from the user. Use this to hide an action." + }, + "visibleActions": { + "type": "array", + "items": { + "$ref": "#/definitions/Action" + }, + "description": "The list of actions to display from the primary menu, more menu (...), and the contextual menu. These will be only actions that are visible to the user. Use this to hide all actions except the ones you want to show.\n\nUse either this or hiddenActions." + }, + "showAlerts": { + "type": "boolean", + "description": "Show alert messages and toast messages in the embedded view in full app embed." + }, + "runtimeFilters": { + "type": "array", + "items": { + "$ref": "#/definitions/RuntimeFilter" + }, + "description": "The list of runtime filters to apply to a search Answer, visualization, or Liveboard." + }, + "runtimeParameters": { + "type": "array", + "items": { + "$ref": "#/definitions/RuntimeParameter" + }, + "description": "The list of parameter override to apply to a search Answer, visualization, or Liveboard." + }, + "locale": { + "type": "string", + "description": "The locale settings to apply to the embedded view." + }, + "additionalFlags": { + "type": "object", + "additionalProperties": { + "type": [ + "string", + "number", + "boolean" + ] + }, + "description": "This is an object (key/val) of override flags which will be applied to the internal embedded object. This can be used to add any URL flag. If the same flags are passed in init, they will be overriden by the values here. Warning: This option is for advanced use only and is used internally to control embed behavior in non-regular ways. We do not publish the list of supported keys and values associated with each." + }, + "customizations": { + "$ref": "#/definitions/CustomisationsInterface", + "description": "Dynamic CSSUrl and customCSS to be injected in the loaded application. You would also need to set `style-src` in the CSP settings.", + "default": "" + }, + "insertAsSibling": { + "type": "boolean", + "description": "Insert as a sibling of the target container, instead of appending to a child inside it." + }, + "contextMenuTrigger": { + "$ref": "#/definitions/ContextMenuTriggerOptions", + "description": "flag to set ContextMenu Trigger to either left or right click." + }, + "linkOverride": { + "type": "boolean", + "description": "Flag to override the *Open Link in New Tab* context menu option." + }, + "excludeRuntimeFiltersfromURL": { + "type": "boolean", + "description": "Boolean to exclude runtimeFilters in the URL By default it is true, this flag removes runtime filters from the URL when set to false, runtime filters will be included in the URL.\n\nIrrespective of this flag, runtime filters ( if passed ) will be applied to the embedded view.", + "default": false + }, + "hiddenTabs": { + "type": "array", + "items": { + "type": "string" + }, + "description": "The list of tab IDs to hide from the embedded. This Tabs will be hidden from their respective LBs. Use this to hide an tabID." + }, + "hiddenHomepageModules": { + "type": "array", + "items": { + "$ref": "#/definitions/HomepageModule" + }, + "description": "Hide the home page modules For example: hiddenHomepageModules = [HomepageModule.MyLibrary]\n\n**Note**: This option does not apply to the classic homepage. To access the updated modular homepage, set `modularHomeExperience` to `true` (available as Early Access feature in 9.12.5.cl)." + }, + "reorderedHomepageModules": { + "type": "array", + "items": { + "$ref": "#/definitions/HomepageModule" + }, + "description": "reordering the home page modules eg: reorderedHomepageModules = [HomepageModule.MyLibrary, HomepageModule.Watchlist]\n\n**Note**: This option does not apply to the classic homepage. To access the updated modular homepage, set `modularHomeExperience` to `true` (available as Early Access feature in 9.12.5.cl)." + }, + "visibleTabs": { + "type": "array", + "items": { + "type": "string" + }, + "description": "The list of tab IDs to show in the embedded Liveboard. Only the tabs specified in the array will be shown in the Liveboard.\n\nUse either `visibleTabs` or `hiddenTabs`." + }, + "hiddenHomeLeftNavItems": { + "type": "array", + "items": { + "$ref": "#/definitions/HomeLeftNavItem" + }, + "description": "homepageLeftNavItems : Show or hide the left navigation bar items. There are 8 eight home navigation list items. To hide these items, specify the string in the array." + }, + "preRenderId": { + "type": "string", + "description": "PreRender id to be used for PreRendering the embed. Use PreRender to render the embed in the background and then show or hide the rendered embed using showPreRender or hidePreRender respectively." + }, + "doNotTrackPreRenderSize": { + "type": "boolean", + "description": "Determines if the PreRender component should dynamically track the size of its embedding element and adjust its own size accordingly. Enabling this option allows the PreRender component to automatically adapt its dimensions based on changes to the size of the embedding element.", + "default": false + }, + "excludeRuntimeParametersfromURL": { + "type": "boolean", + "description": "Boolean to exclude runtimeParameters from the URL when set to true, this flag removes runtime parameters from the URL.\n\nIrrespective of this flag, runtime filters ( if passed ) will be applied to the embedded view.", + "default": false + }, + "enableV2Shell_experimental": { + "type": "boolean", + "description": "Enable the V2 shell. This can provide performance benefits due to a lighterweight shell." + }, + "collapseSearchBar": { + "type": "boolean", + "description": "To set the initial state of the search bar in case of saved Answers.", + "default": true + }, + "disableRedirectionLinksInNewTab": { + "type": "boolean", + "description": "This flag can be used to disable links inside the embedded app, and disable redirection of links in a new tab." + }, + "dataPanelV2": { + "type": "boolean", + "description": "Flag to control Data panel experience", + "default": false + }, + "enableCustomColumnGroups": { + "type": "boolean", + "description": "To enable custom column groups in data panel v2", + "default": false + }, + "overrideOrgId": { + "type": "number", + "description": "Overrides an Org context for embedding application users. This parameter allows a user authenticated to one Org to view the objects from another Org. The `overrideOrgId` setting is honoured only if the Per Org URL feature is enabled on your ThoughtSpot instance." + } + }, + "additionalProperties": false, + "description": "The configuration object for an embedded view." + }, + "Action": { + "type": "string", + "enum": [ + "save", + "saveAsView", + "makeACopy", + "editACopy", + "embedDocument", + "subscription", + "schedule-list", + "share", + "addFilter", + "addDataPanelObjects", + "configureFilter", + "collapseDataSources", + "collapseDataPanel", + "chooseDataSources", + "addFormula", + "addParameter", + "addSimpleCohort", + "addAdvancedCohort", + "spotIQAnalyze", + "shareViz", + "showUnderlyingData", + "download", + "downloadAsPng", + "downloadAsPdf", + "downloadAsCSV", + "downloadAsXLSX", + "exportTSL", + "importTSL", + "updateTSL", + "editTSL", + "present", + "toggleSize", + "edit", + "editTitle", + "delete", + "pinboardInfo", + "pin", + "explore", + "context-menu-item-include", + "context-menu-item-exclude", + "context-menu-item-copy-to-clipboard", + "context-menu-item-copy-and-edit", + "context-menu-item-edit-measure", + "context-menu-item-separator", + "DRILL", + "requestAccess", + "queryDetailsButtons", + "onDeleteAnswer", + "answerChartSwitcher", + "addToFavorites", + "editDetails", + "createMonitor", + "reportError", + "sync-to-sheets", + "sync-to-other-apps", + "manage-pipeline", + "context-menu-item-cross-filter", + "syncToSlack", + "syncToTeams", + "context-menu-item-remove-cross-filter", + "axisMenuAggregate", + "axisMenuTimeBucket", + "axisMenuFilter", + "axisMenuConditionalFormat", + "axisMenuSort", + "axisMenuGroup", + "axisMenuPosition", + "axisMenuRename", + "axisMenuEdit", + "axisMenuNumberFormat", + "axisMenuTextWrapping", + "axisMenuRemove", + "renameModalTitleDescription", + "requestVerification", + "markAsVerified", + "addTab", + "enableContextualChangeAnalysis", + "showSageQuery", + "editSageAnswer", + "sageAnswerFeedback", + "modifySageAnswer", + "onContainerMove", + "manageMonitor", + "personalisedViewsDropdown", + "liveboardUsers", + "tml", + "createLiveboard", + "verifiedLiveboard", + "AskAi", + "addToWatchlist", + "removeFromWatchlist", + "organiseFavourites", + "AIHighlights", + "editScheduleHomepage", + "pauseScheduleHomepage", + "viewScheduleRunHomepage", + "unsubscribeScheduleHomepage", + "manageTags", + "deleteScheduleHomepage", + "kpiAnalysisCTA", + "disableChipReorder", + "changeFilterVisibilityInTab", + "previewDataSpotter", + "resetSpotterChat", + "spotterFeedback", + "editPreviousPrompt", + "deletePreviousPrompt", + "editTokens" + ], + "description": "ThoughtSpot application pages include actions and menu commands for various user-initiated operations. These actions are represented as enumeration members in the SDK. To show, hide, or disable specific actions in the embedded view, define the Action enumeration members in the `disabledActions`, `visibleActions`, or `hiddenActions` array." + }, + "RuntimeFilter": { + "type": "object", + "properties": { + "columnName": { + "type": "string", + "description": "The name of the column to filter on (case-sensitive)" + }, + "operator": { + "$ref": "#/definitions/RuntimeFilterOp", + "description": "The operator to apply" + }, + "values": { + "type": "array", + "items": { + "type": [ + "number", + "boolean", + "string" + ] + }, + "description": "The list of operands. Some operators like EQ, LE accept a single operand, whereas other operators like BW and IN accept multiple operands." + } + }, + "required": [ + "columnName", + "operator", + "values" + ], + "additionalProperties": false, + "description": "A filter that can be applied to ThoughtSpot answers, Liveboards, or visualizations at runtime." + }, + "RuntimeFilterOp": { + "type": "string", + "enum": [ + "EQ", + "NE", + "LT", + "LE", + "GT", + "GE", + "CONTAINS", + "BEGINS_WITH", + "ENDS_WITH", + "BW_INC_MAX", + "BW_INC_MIN", + "BW_INC", + "BW", + "IN", + "NOT_IN" + ], + "description": "A map of the supported runtime filter operations" + }, + "RuntimeParameter": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "The name of the runtime parameter to filter on (case-sensitive)" + }, + "value": { + "type": [ + "number", + "boolean", + "string" + ], + "description": "Values" + } + }, + "required": [ + "name", + "value" + ], + "additionalProperties": false, + "description": "A filter that can be applied to ThoughtSpot Answers, Liveboards, or visualizations at runtime." + }, + "ContextMenuTriggerOptions": { + "type": "string", + "enum": [ + "left-click", + "right-click", + "both-clicks" + ], + "description": "Enum for options to change context trigger BOTH_CLICKS option is introduced in 10.7" + }, + "HomepageModule": { + "type": "string", + "enum": [ + "SEARCH", + "WATCHLIST", + "FAVORITE", + "MY_LIBRARY", + "TRENDING", + "LEARNING" + ], + "description": "Home page module that can be hidden.\n**Note**: This option does not apply to the classic homepage. To access the updated modular homepage, set `modularHomeExperience` to `true` (available as Early Access feature in 9.12.5.cl)." + }, + "MessagePayload": { + "type": "object", + "properties": { + "type": { + "type": "string" + }, + "data": {}, + "status": { + "type": "string" + } + }, + "required": [ + "type", + "data" + ], + "additionalProperties": false, + "description": "MessagePayload: Embed event payload: message type, data and status (start/end)" + }, + "MessageOptions": { + "type": "object", + "properties": { + "start": { + "type": "boolean", + "description": "A boolean value indicating that start status events of this type will be dispatched." + } + }, + "additionalProperties": false, + "description": "MessageOptions: By providing options, getting specific event start / end based on option" + }, + "MessageCallback": { + "$comment": "(\n /* payload: Message payload contains type, data, and status */\n payload: MessagePayload,\n /**\n * responder: Message callback function triggered when embed event\n * initiated\n */\n responder?: (data: any) => void) => void", + "type": "object", + "properties": { + "namedArgs": { + "type": "object", + "properties": { + "payload": { + "$ref": "#/definitions/MessagePayload" + }, + "responder": { + "$comment": "(data: any) => void", + "type": "object", + "properties": { + "namedArgs": { + "type": "object", + "properties": { + "data": {} + }, + "required": [ + "data" + ], + "additionalProperties": false + } + }, + "description": "responder: Message callback function triggered when embed event initiated" + } + }, + "required": [ + "payload" + ], + "additionalProperties": false + } + }, + "description": "MessageCallback: Embed event message callback" + }, + "MessageCallbackObj": { + "type": "object", + "properties": { + "options": { + "$ref": "#/definitions/MessageOptions", + "description": "options: It contains start, a boolean value indicating that start status events of this type will be dispatched" + }, + "callback": { + "$ref": "#/definitions/MessageCallback" + } + }, + "required": [ + "options", + "callback" + ], + "additionalProperties": false, + "description": "MessageCallbackObj: contains message options & callback function" + }, + "GenericCallbackFn": { + "$comment": "(...args: any[]) => any", + "type": "object", + "properties": { + "namedArgs": { + "type": "object", + "properties": { + "args": { + "type": "array", + "items": {} + } + }, + "required": [ + "args" + ], + "additionalProperties": false + } + } + }, + "QueryParams": { + "type": "object", + "additionalProperties": { + "type": [ + "string", + "boolean", + "number" + ] + } + }, + "EmbedEvent": { + "type": "string", + "enum": [ + "init", + "authInit", + "load", + "data", + "queryChanged", + "drillDown", + "dataSourceSelected", + "addRemoveColumns", + "customAction", + "vizPointDoubleClick", + "vizPointClick", + "Error", + "alert", + "ThoughtspotAuthExpired", + "getDataClick", + "ROUTE_CHANGE", + "noCookieAccess", + "dialog-open", + "dialog-close", + "PinboardRendered", + "*", + "save", + "download", + "downloadAsPng", + "downloadAsPdf", + "downloadAsCsv", + "downloadAsXlsx", + "answerDelete", + "pin", + "spotIQAnalyze", + "share", + "context-menu-item-include", + "context-menu-item-exclude", + "context-menu-item-copy-to-clipboard", + "updateTSL", + "editTSL", + "exportTSL", + "saveAsView", + "copyAEdit", + "showUnderlyingData", + "answerChartSwitcher", + "pinboardInfo", + "addToFavorites", + "subscription", + "edit", + "makeACopy", + "present", + "delete", + "schedule-list", + "cancel", + "explore", + "embedDocument", + "cross-filter-changed", + "vizPointRightClick", + "filterChanged", + "sageEmbedQuery", + "sageWorksheetUpdated", + "updateConnection", + "createConnection", + "updatePersonalisedView", + "savePersonalisedView", + "resetLiveboard", + "deletePersonalisedView", + "createWorksheet", + "AskSageInit", + "rename", + "onBeforeGetVizDataIntercept", + "parameterChanged", + "TableVizRendered", + "createLiveboard" + ], + "description": "Event types emitted by the embedded ThoughtSpot application.\n\nTo add an event listener use the corresponding {@link LiveboardEmbed.on } or {@link AppEmbed.on } or {@link SearchEmbed.on } method." + }, + "HostEvent": { + "type": "string", + "enum": [ + "search", + "triggerDrillDown", + "GetIframeUrl", + "SetPinboardVisibleVizs", + "SetActiveTab", + "UpdateRuntimeFilters", + "Navigate", + "openFilter", + "addColumns", + "removeColumn", + "getExportRequestForCurrentPinboard", + "pin", + "pinboardInfo", + "subscription", + "schedule-list", + "exportTSL", + "editTSL", + "updateTSL", + "downloadAsPdf", + "makeACopy", + "delete", + "explore", + "createMonitor", + "manageMonitor", + "edit", + "embedDocument", + "present", + "getTML", + "showUnderlyingData", + "onDeleteAnswer", + "spotIQAnalyze", + "downloadAsPng", + "downloadAsCSV", + "downloadAsXLSX", + "share", + "save", + "sync-to-sheets", + "sync-to-other-apps", + "manage-pipeline", + "resetSearch", + "getFilters", + "updateFilters", + "getTabs", + "SetPinboardVisibleTabs", + "SetPinboardHiddenTabs", + "updateSageQuery", + "getAnswerSession", + "AskSage", + "UpdateCrossFilter", + "ResetLiveboardPersonalisedView", + "UpdateParameters", + "GetParameters", + "UpdatePersonalisedView", + "saveAnswer", + "TransformTableVizData" + ], + "description": "Event types that can be triggered by the host application to the embedded ThoughtSpot app.\n\nTo trigger an event use the corresponding {@link LiveboardEmbed.trigger } or {@link AppEmbed.trigger } or {@link * SearchEmbed.trigger } method." + }, + "DataSourceVisualMode": { + "type": "string", + "enum": [ + "hide", + "collapse", + "expand" + ], + "description": "The different visual modes that the data sources panel within search could appear in, such as hidden, collapsed, or expanded." + }, + "Param": { + "type": "string", + "enum": [ + "embedApp", + "dataSources", + "dataSourceMode", + "disableAction", + "disableHint", + "forceTable", + "preventPinboardFilterRemoval", + "searchQuery", + "hideAction", + "hideObjects", + "hostAppUrl", + "enableVizTransform", + "enableSearchAssist", + "enablePendoHelp", + "hideResult", + "useLastSelectedSources", + "tag", + "autoLogin", + "searchTokenString", + "executeSearch", + "isFullHeightPinboard", + "isLiveboardEmbed", + "isSearchEmbed", + "isVizEmbed", + "sdkVersion", + "viewPortHeight", + "viewPortWidth", + "visibleAction", + "disableLoginRedirect", + "pinboardVisibleVizs", + "isPinboardV2Enabled", + "enableDataPanelV2", + "showAlerts", + "locale", + "customStyle", + "forceSAMLAutoRedirect", + "authType", + "iconSprite", + "cookieless", + "contextMenuEnabledOnWhichClick", + "linkOverride", + "blockNonEmbedFullAppAccess", + "insertInToSlide", + "primaryNavHidden", + "profileAndHelpInNavBarHidden", + "applicationSwitcherHidden", + "orgSwitcherHidden", + "isSageEmbed", + "hideWorksheetSelector", + "disableWorksheetChange", + "hideSourceSelection", + "disableSourceSelection", + "hideEurekaResults", + "hideEurekaSuggestions", + "hideAutocompleteSuggestions", + "hideLiveboardHeader", + "showLiveboardDescription", + "showLiveboardTitle", + "hideTabs", + "visibleTabs", + "hideTabPanel", + "hideSampleQuestions", + "worksheet", + "query", + "hideHomepageLeftNav", + "modularHomeExperience", + "additionalPendoKey", + "isLiveboardHeaderSticky", + "isProductTour", + "hideSearchBarTitle", + "hideSageAnswerHeader", + "hideSearchBar", + "clientLogLevel", + "overrideConsoleLogs", + "enableAskSage", + "collapseSearchBarInitially", + "dataPanelCustomGroupsAccordionInitialState", + "enableCustomColumnGroups", + "dateFormatLocale", + "numberFormatLocale", + "currencyFormat", + "enable2ColumnLayout", + "isFullAppEmbed", + "isOnBeforeGetVizDataInterceptEnabled", + "focusSearchBarOnRender", + "disableRedirectionLinksInNewTab", + "homePageSearchBarMode", + "showLiveboardVerifiedBadge", + "showLiveboardReverifyBanner", + "isLiveboardHeaderV2Enabled", + "hideIrrelevantFiltersAtTabLevel", + "isSpotterExperienceEnabled", + "isUnifiedSearchExperienceEnabled", + "orgId", + "oAuthPollingInterval", + "isForceRedirect", + "dataSourceId", + "preAuthCache", + "showSpotterLimitations" + ], + "description": "The query params passed down to the embedded ThoughtSpot app containing configuration and/or visual information." + }, + "AnswerServiceType": { + "type": "object", + "properties": { + "getAnswer": { + "$comment": "(offset: number, batchSize: number) => any", + "type": "object", + "properties": { + "namedArgs": { + "type": "object", + "properties": { + "offset": { + "type": "number" + }, + "batchSize": { + "type": "number" + } + }, + "required": [ + "offset", + "batchSize" + ], + "additionalProperties": false + } + } + } + }, + "additionalProperties": false + }, + "PrefetchFeatures": { + "type": "string", + "enum": [ + "FullApp", + "SearchEmbed", + "LiveboardEmbed", + "VizEmbed" + ] + }, + "ColumnValue": { + "type": "object", + "properties": { + "column": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "dataType": { + "type": "string" + } + }, + "required": [ + "id", + "name", + "dataType" + ] + }, + "value": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "number" + }, + { + "type": "boolean" + }, + { + "type": "object", + "properties": { + "v": { + "type": "object", + "properties": { + "s": { + "type": "number" + }, + "e": { + "type": "number" + } + }, + "required": [ + "s", + "e" + ], + "additionalProperties": false + } + }, + "required": [ + "v" + ], + "additionalProperties": false + } + ] + } + }, + "required": [ + "column", + "value" + ], + "additionalProperties": false + }, + "VizPoint": { + "type": "object", + "properties": { + "selectedAttributes": { + "type": "array", + "items": { + "$ref": "#/definitions/ColumnValue" + } + }, + "selectedMeasures": { + "type": "array", + "items": { + "$ref": "#/definitions/ColumnValue" + } + } + }, + "required": [ + "selectedAttributes", + "selectedMeasures" + ], + "additionalProperties": false + }, + "CustomActionPayload": { + "type": "object", + "properties": { + "contextMenuPoints": { + "type": "object", + "properties": { + "clickedPoint": { + "$ref": "#/definitions/VizPoint" + }, + "selectedPoints": { + "type": "array", + "items": { + "$ref": "#/definitions/VizPoint" + } + } + }, + "required": [ + "clickedPoint", + "selectedPoints" + ], + "additionalProperties": false + }, + "embedAnswerData": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "id": { + "type": "string" + }, + "sources": { + "type": "object", + "properties": { + "header": { + "type": "object", + "properties": { + "guid": { + "type": "string" + } + }, + "required": [ + "guid" + ], + "additionalProperties": false + } + }, + "required": [ + "header" + ], + "additionalProperties": false + }, + "columns": { + "type": "array", + "items": {} + }, + "data": { + "type": "array", + "items": {} + } + }, + "required": [ + "name", + "id", + "sources", + "columns", + "data" + ] + }, + "session": { + "$ref": "#/definitions/SessionInterface" + }, + "vizId": { + "type": "string" + } + }, + "required": [ + "embedAnswerData", + "session" + ], + "additionalProperties": false + }, + "DefaultAppInitData": { + "type": "object", + "properties": { + "customisations": { + "$ref": "#/definitions/CustomisationsInterface" + }, + "authToken": { + "type": "string" + }, + "runtimeFilterParams": { + "type": [ + "string", + "null" + ] + }, + "runtimeParameterParams": { + "type": [ + "string", + "null" + ] + }, + "hiddenHomepageModules": { + "type": "array", + "items": { + "$ref": "#/definitions/HomepageModule" + } + }, + "reorderedHomepageModules": { + "type": "array", + "items": { + "type": "string" + } + }, + "hostConfig": { + "$ref": "#/definitions/Record%3Cstring%2Cany%3E" + }, + "hiddenHomeLeftNavItems": { + "type": "array", + "items": { + "type": "string" + } + }, + "customVariablesForThirdPartyTools": { + "$ref": "#/definitions/Record%3Cstring%2Cany%3E" + } + }, + "required": [ + "customisations", + "authToken", + "runtimeFilterParams", + "runtimeParameterParams", + "hiddenHomepageModules", + "reorderedHomepageModules", + "hostConfig", + "hiddenHomeLeftNavItems", + "customVariablesForThirdPartyTools" + ], + "additionalProperties": false + } + } +} \ No newline at end of file diff --git a/scripts/script.ts b/scripts/script.ts new file mode 100644 index 00000000..a5e7f011 --- /dev/null +++ b/scripts/script.ts @@ -0,0 +1,52 @@ +import fs from 'fs'; +// eslint-disable-next-line import/no-extraneous-dependencies +import { Config, createGenerator } from 'ts-json-schema-generator'; + +/** + * "AuthType": { + "type": "string", + "enum": [ + "None", + "EmbeddedSSO", + "SSO_SAML", + "SSO_OIDC", + "AuthServer", + "AuthServerCookieless", + "Basic" + ], + * "description": "The authentication mechanism for allowing access to the the embedded + * app" + }, + */ + +const enumTemplate = ` +enum {{name}} { +{{#options}}} + {{value}}{{name}} +{{/options}} +} +`; + +const convertJsonEnumToDartEnum = (jsonEnum: any) => jsonEnum.enum.map((item: string) => ` ${item}`).join('\n'); + +/** @type {import('ts-json-schema-generator').Config} */ +const config: Config = { + path: 'src/types.ts', + // tsconfig: './tsconfig.json', + type: '*', // Or if you want to generate schema for that one type only + expose: 'all', +}; + +const convertEnumToDartEnum = (enumName: string, enumOptions: string[]) => enumTemplate.replace('{{name}}', enumName).replace('{{options}}', enumOptions.map((option) => ` ${option}`).join('\n')); + +const outputPath = './schema.json'; + +console.log('adw'); +try { + const schema = createGenerator(config).createSchema(config.type); + const schemaString = JSON.stringify(schema, null, 2); + fs.writeFileSync(outputPath, schemaString); +} catch (error) { + console.error('Error generating schema:', error.message); + process.exit(1); +} diff --git a/scripts/ts-to-any-converter/converter.ts b/scripts/ts-to-any-converter/converter.ts new file mode 100644 index 00000000..4b917944 --- /dev/null +++ b/scripts/ts-to-any-converter/converter.ts @@ -0,0 +1,148 @@ +/* eslint-disable import/no-extraneous-dependencies */ +import { + Project, SyntaxKind, EnumDeclaration, InterfaceDeclaration, +} from 'ts-morph'; +import fs from 'fs'; +import path from 'path'; +import Mustache from 'mustache'; +import { IEnum, TemplateType } from './types/intermediate'; +import { ConverterConfig } from './types/converter-types'; + +const addPrev = (obj: T): T => { + if (typeof obj !== 'object' || obj === null) { + return obj; + } + + Object.keys(obj).forEach((key) => { + const child = obj[key]; + + if (Array.isArray(child)) { + child.forEach((item, idx) => { + obj[key][idx] = addPrev(item); + obj[key][idx]._prev = obj; + }); + } else if (typeof child === 'object') { + obj[key] = addPrev(obj[key]); + // eslint-disable-next-line no-underscore-dangle + obj[key]._prev = obj; + } + }); + return obj; +}; + +// We will first convert the ast format to a intermediate format that is easier +// to handle + +class TypeScriptConverter { + readonly project: Project; + + private finalOutputString = ''; + + private configs: ConverterConfig; + + private templateDefaultPaths = { + [TemplateType.Enum]: 'enum.mustache', + [TemplateType.Interface]: 'interface.mustache', + } + + private templates: Record; + + /** + * Loads the templates from the templates directory + * @returns The templates + */ + private updateTemplates() { + const defaultTemplateRoot = path.resolve(__dirname, 'templates/dart'); + const templatePaths = this.templateDefaultPaths; + + this.templates = {} as Record; + Object.keys(templatePaths).forEach((templateType) => { + const templatePath = path.resolve(defaultTemplateRoot, templatePaths[templateType]); + this.templates[templateType] = fs.readFileSync(templatePath, 'utf8'); + }); + + return this.templates; + } + + constructor(configs: ConverterConfig) { + // load the template + this.project = new Project(); + this.updateTemplates(); + this.configs = configs; + this.finalOutputString = ''; + } + + renderTemplate(templateType: TemplateType, data: Record) { + const template = this.templates[templateType]; + return Mustache.render(template, data); + } + + appendToFinalOutput(output: string) { + this.finalOutputString += output; + } + + convertEnumToIntermediate(enumDeclaration: EnumDeclaration): IEnum { + const enumName = enumDeclaration.getName(); + const members = enumDeclaration.getMembers().map((member, index) => { + const key = member.getName(); + const value = member.getInitializer()?.getText().replace(/['"]/g, ''); // Remove quotes + const comment = member.getJsDocs().map((doc) => doc.getText()).join(''); + return { + name: key, value, comment, isLast: index === enumDeclaration.getMembers().length - 1, + }; + }); + + const comment = enumDeclaration.getJsDocs().map((doc) => doc.getText()).join(''); + + return addPrev({ + name: enumName, + options: members, + type: 'enum', + comment, + }); + } + + handleEnum = (enumDeclaration: EnumDeclaration) => { + const enumIntermediate = this.convertEnumToIntermediate(enumDeclaration); + return this.renderTemplate(TemplateType.Enum, enumIntermediate); + } + + handleInterface = (interfaceDeclaration: InterfaceDeclaration) => { + const interfaceName = interfaceDeclaration.getName(); + const properties = interfaceDeclaration.getProperties().map((property) => { + const name = property.getName(); + const type = property.getType().getText(); + return { + name, + type, + }; + }); + } + + convert() { + this.configs.inputs.forEach((input) => { + const sourceFile = this.project.addSourceFileAtPath(input); + const enums = sourceFile.getEnums().map(this.handleEnum); + this.appendToFinalOutput(enums.join('\n')); + }); + + this.writeOutput(); + } + + writeOutput() { + fs.writeFileSync(this.configs.output, this.finalOutputString); + } +} + +/** + * + */ +function main() { + const converter = new TypeScriptConverter({ + inputs: ['src/types.ts'], + output: 'my.dart', + }); + converter.convert(); +} + +main(); diff --git a/scripts/ts-to-any-converter/templates/dart/enum.mustache b/scripts/ts-to-any-converter/templates/dart/enum.mustache new file mode 100644 index 00000000..7e4a440c --- /dev/null +++ b/scripts/ts-to-any-converter/templates/dart/enum.mustache @@ -0,0 +1,15 @@ +{{{comment}}} +enum {{name}} { + {{#options}} + {{#comment}} + {{{comment}}} + {{/comment}} + {{name}}("{{#value}}{{value}}{{/value}}{{^value}}{{name}}{{/value}}"){{^isLast}}, {{/isLast}}{{#isLast}};{{/isLast}} + {{/options}} + + final String value; + const {{name}}(this.value); +} +{{#stringify}} + {{.}} +{{/stringify}} diff --git a/scripts/ts-to-any-converter/templates/dart/interface.mustache b/scripts/ts-to-any-converter/templates/dart/interface.mustache new file mode 100644 index 00000000..6fcf1daf --- /dev/null +++ b/scripts/ts-to-any-converter/templates/dart/interface.mustache @@ -0,0 +1,5 @@ +Class {{name}} { + {{#properties}} + {{name}}: {{type}}; + {{/properties}} +} diff --git a/scripts/ts-to-any-converter/types/converter-types.ts b/scripts/ts-to-any-converter/types/converter-types.ts new file mode 100644 index 00000000..0808dd40 --- /dev/null +++ b/scripts/ts-to-any-converter/types/converter-types.ts @@ -0,0 +1,4 @@ +export interface ConverterConfig { + inputs: string[]; + output: string; +} diff --git a/scripts/ts-to-any-converter/types/intermediate.ts b/scripts/ts-to-any-converter/types/intermediate.ts new file mode 100644 index 00000000..3ae38dd6 --- /dev/null +++ b/scripts/ts-to-any-converter/types/intermediate.ts @@ -0,0 +1,34 @@ +export interface IEnum { + type: 'enum'; + name: string; + options: { + name: string; + value?: string; + comment?: string; + }[]; +} + +export interface INumber { + type: 'number'; +} + +export interface IString { + type: 'string'; +} + +export interface IBoolean { + type: 'boolean'; +} + +export interface IInterface { + name: string; + properties: { + name: string; + type: IEnum | IInterface | INumber | IString | IBoolean; + }[]; +} + +export enum TemplateType { + Enum = 'enum', + Interface = 'interface', +} diff --git a/src/embed/liveboard.ts b/src/embed/liveboard.ts index 7835d80c..078018bd 100644 --- a/src/embed/liveboard.ts +++ b/src/embed/liveboard.ts @@ -11,13 +11,13 @@ import { getPreview } from '../utils/graphql/preview-service'; import { ERROR_MESSAGE } from '../errors'; import { - EmbedEvent, - MessagePayload, - Param, - RuntimeFilter, - DOMSelector, - HostEvent, - ViewConfig, + EmbedEvent, + MessagePayload, + Param, + RuntimeFilter, + DOMSelector, + HostEvent, + ViewConfig, } from '../types'; import { getQueryParamString, isUndefined } from '../utils'; import { getAuthPromise } from './base'; @@ -26,10 +26,10 @@ import { addPreviewStylesIfNotPresent } from '../utils/global-styles'; import { TriggerPayload, TriggerResponse } from './hostEventClient/contracts'; const liveboardHeightWhitelistedRoutes = [ - '/embed/viz/', - '/embed/insights/viz/', - '/tsl-editor/PINBOARD_ANSWER_BOOK/', - '/import-tsl/PINBOARD_ANSWER_BOOK/', + '/embed/viz/', + '/embed/insights/viz/', + '/tsl-editor/PINBOARD_ANSWER_BOOK/', + '/import-tsl/PINBOARD_ANSWER_BOOK/', ]; /** @@ -37,360 +37,358 @@ const liveboardHeightWhitelistedRoutes = [ * @group Embed components */ export interface LiveboardViewConfig - extends Omit< - ViewConfig, - 'hiddenHomepageModules' | 'hiddenHomeLeftNavItems' | 'reorderedHomepageModules' - > { - /** - * If set to true, the embedded object container dynamically resizes - * according to the height of the Liveboard. - * - * **Note**: Using fullHeight loads all visualizations on the - * Liveboard simultaneously, which results in multiple warehouse - * queries and potentially a longer wait for the topmost - * visualizations to display on the screen. - * Setting `fullHeight` to `false` fetches visualizations - * incrementally as users scroll the page to view the charts and tables. - * - * @version SDK: 1.1.0 | ThoughtSpot: ts7.may.cl, 7.2.1 - * @example - * ```js - * const embed = new LiveboardEmbed('#embed', { - * ... // other liveboard view config - * fullHeight: true, - * }); - * ``` - */ - fullHeight?: boolean; - /** - * This is the minimum height(in pixels) for a full-height Liveboard. - * Setting this height helps resolve issues with empty Liveboards and - * other screens navigable from a Liveboard. - * @version SDK: 1.5.0 | ThoughtSpot: ts7.oct.cl, 7.2.1 - * @default 500 - * @example - * ```js - * const embed = new LiveboardEmbed('#embed', { - * ... // other liveboard view config - * fullHeight: true, - * defaultHeight: 600, - * }); - * ``` - */ - defaultHeight?: number; - /** - * @Deprecated If set to true, the context menu in visualizations will be enabled. - * @example - * ```js - * const embed = new LiveboardEmbed('#tsEmbed', { - * ... // other options - * enableVizTransformations:true, - * }) - * ``` - * @version: SDK: 1.1.0 | ThoughtSpot: 8.1.0.sw - */ - enableVizTransformations?: boolean; - /** - * The Liveboard to display in the embedded view. - * Use either liveboardId or pinboardId to reference the Liveboard to embed. - * @version SDK: 1.3.0 | ThoughtSpot ts7.aug.cl, 7.2.1 - * @example - * ```js - * const embed = new LiveboardEmbed('#embed-container', { - * ... // other options - * liveboardId:id of liveboard, - * }) - */ - liveboardId?: string; - /** - * To support backward compatibility - * @hidden - */ - pinboardId?: string; - /** - * The visualization within the Liveboard to display. - * @version SDK: 1.9.1 | ThoughtSpot: 8.1.0.cl, 8.4.1-sw - * @example - * ```js - * const embed = new LiveboardEmbed('#embed-container', { - * ... // other options - * vizId:'430496d6-6903-4601-937e-2c691821af3c', - * }) - * ``` - */ - vizId?: string; - /** - * If set to true, all filter chips from a - * Liveboard page will be read-only (no X buttons) - * @version SDK: 1.3.0 | ThoughtSpot ts7.aug.cl, 7.2.1.sw - * @example - * ```js - * const embed = new LiveboardEmbed('#embed-container', { - * ... // other options - * preventLiveboardFilterRemoval:true, - * }) - * ``` - */ - preventLiveboardFilterRemoval?: boolean; - /** - * Array of visualization IDs which should be visible when the Liveboard - * renders. This can be changed by triggering the `SetVisibleVizs` - * event. - * @version SDK: 1.9.1 | ThoughtSpot: 8.1.0.cl, 8.4.1-sw - * @example - * ```js - * const embed = new LiveboardEmbed('#embed-container', { - * ... // other options - * visibleVizs: [ - * '430496d6-6903-4601-937e-2c691821af3c', - * 'f547ec54-2a37-4516-a222-2b06719af726' - * ] - * }) - */ - visibleVizs?: string[]; - /** - * To support backward compatibility - * @hidden - */ - preventPinboardFilterRemoval?: boolean; - /** - * Render embedded Liveboards and visualizations in the - * new Liveboard experience mode. - * @version SDK: 1.14.0 | ThoughtSpot: 8.6.0.cl, 8.8.1-sw - * @example - * ```js - * const embed = new LiveboardEmbed('#embed-container', { - * ... // other options - * liveboardV2:true, - * }) - * ``` - */ - liveboardV2?: boolean; - /** - * Set a Liveboard tab as an active tab. - * Specify the tab ID. - * @example - * ```js - * const embed = new LiveboardEmbed('#tsEmbed', { - * ... // other options - * activeTabId:'id-1234', - * }) - * ``` - * @version SDK: 1.15.0 | ThoughtSpot: 8.7.0.cl, 8.8.1-sw - */ - activeTabId?: string; - /** - * Show or hide the tab panel of the embedded Liveboard. - * @version SDK: 1.25.0 | Thoughtspot: 9.6.0.cl, 9.8.0.sw - * @example - * ```js - * const embed = new LiveboardEmbed('#embed-container', { - * ... // other options - * hideTabPanel:true, - * }) - * ``` - */ - hideTabPanel?: boolean; - /** - * Show or hide the Liveboard header. - * @version SDK: 1.26.0 | Thoughtspot: 9.7.0.cl, 9.8.0.sw - * @default false - * @example - * ```js - * const embed = new LiveboardEmbed('#embed', { - * ... // other liveboard view config - * hideLiveboardHeader:true, - * }); - * ``` - */ - hideLiveboardHeader?: boolean; - /** - * Show or hide the Liveboard title. - * @default false - * @version SDK: 1.26.0 | Thoughtspot: 9.7.0.cl, 9.8.0.sw - * @example - * ```js - * const embed = new LiveboardEmbed('#embed-container', { - * ... // other options - * showLiveboardTitle:true, - * }) - * ``` - */ - showLiveboardTitle?: boolean; - /** - * Show or hide the Liveboard description. - * @default false - * @version SDK: 1.26.0 | Thoughtspot: 9.7.0.cl, 9.8.0.sw - * @example - * ```js - * const embed = new LiveboardEmbed('#embed-container', { - * ... // other options - * showLiveboardDescription:true, - * }) - * ``` - */ - showLiveboardDescription?: boolean; - /** - * Control the position and visibility of - * the Liveboard header as the users scroll down the - * embedded Liveboard page. - * @example - * ```js - * const embed = new LiveboardEmbed('#embed', { - * ... // other Liveboard view config - * isLiveboardHeaderSticky: true, - * }); - * ``` - * @version SDK: 1.26.0 | Thoughtspot: 9.7.0.cl, 9.8.0.sw - */ - isLiveboardHeaderSticky?: boolean; - /** - * enable or disable ask sage - * @default false - * @version SDK: 1.29.0 | Thoughtspot: 9.12.0.cl - * @example - * ```js - * const embed = new SearchEmbed('#tsEmbed', { - * ... // other options - * enableAskSage:true, - * }) - * ``` - */ - enableAskSage?: boolean; - /** - * This flag is used to enable the 2 column layout on a Liveboard - * @type {boolean} - * @default false - * @version SDK: 1.32.0 | ThoughtSpot:10.1.0.cl - * @example - * ```js - * const embed = new LiveboardEmbed('#embed-container', { - * ... // other options - * enable2ColumnLayout: true, - * }) - * ``` - */ - enable2ColumnLayout?: boolean; - /** - * Show a preview image of the visualization before the visualization loads. - * Only works for visualizations embeds with a viz id. - * - * Also, viz snashot should be enabled in the ThoughtSpot instance. - * Contact ThoughtSpot support to enable this feature. - * - * Since, this will show preview images, be careful that it may show - * undesired data to the user when using row level security. - * @example - * ```js - * const embed = new LiveboardEmbed('#embed-container', { - * liveboardId: 'liveboard-id', - * vizId: 'viz-id', - * showPreviewLoader: true, - * }); - * embed.render(); - * ``` - * @version SDK: 1.32.0 | ThoughtSpot: 10.0.0.cl - */ - showPreviewLoader?: boolean; - /** - * Enables or disables the compact header feature on a Liveboard. - * Compact Liveboard header is turned off by default on Liveboards in - * ThoughtSpot Embedded apps. - * - * @type {boolean} - * @default false - * @version SDK: 1.35.0 | ThoughtSpot:10.3.0.cl - * @example - * ```js - * const embed = new LiveboardEmbed('#embed-container', { - * ... // other options - * isLiveboardCompactHeaderEnabled: true, - * }) - * ``` - */ - isLiveboardCompactHeaderEnabled?: boolean; - /** - * This flag is used to show/hide verified icon in the Liveboard compact header - * @type {boolean} - * @default true - * @version SDK: 1.35.0 | ThoughtSpot:10.4.0.cl - * @example - * ```js - * const embed = new LiveboardEmbed('#embed-container', { - * ... // other options - * showLiveboardVerifiedBadge: true, - * }) - * ``` - */ - showLiveboardVerifiedBadge?: boolean; - /** - * This flag is used to show/hide the re-verify banner - * in Liveboard compact header - * @type {boolean} - * @default true - * @version SDK: 1.35.0 | ThoughtSpot:10.4.0.cl - * @example - * ```js - * const embed = new LiveboardEmbed('#embed-container', { - * ... // other options - * showLiveboardReverifyBanner: true, - * }) - * ``` - */ - showLiveboardReverifyBanner?: boolean; - /** - * This flag is used to enable/disable hide irrelevant filters in a Liveboard tab - * @type {boolean} - * @default false - * @version SDK: 1.36.0 | ThoughtSpot:10.6.0.cl - * @example - * ```js - * const embed = new LiveboardEmbed('#embed-container', { - * ... // other options - * hideIrrelevantChipsInLiveboardTabs: true, - * }) - * ``` - */ - hideIrrelevantChipsInLiveboardTabs?: boolean; - - /** - * The Liveboard to run on regular intervals to fetch the cdw token. - * @hidden - * @version SDK: 1.35.0 | ThoughtSpot:10.6.0.cl - * @example - * ```js - * const embed = new LiveboardEmbed('#embed-container', { - * ... // other options - * oAuthPollingInterval: value in milliseconds, - * }) - */ - oAuthPollingInterval?: number; - - /** - * The Liveboard is set to force a token fetch during the initial load. - * @hidden - * @version SDK: 1.35.0 | ThoughtSpot:10.6.0.cl - * @example - * ```js - * const embed = new LiveboardEmbed('#embed-container', { - * ... // other options - * isForceRedirect: false, - * }) - */ - isForceRedirect?: boolean; - - /** - * The source connection ID for authentication. - * @hidden - * @version SDK: 1.35.0 | ThoughtSpot:10.6.0.cl - * @example - * ```js - * const embed = new LiveboardEmbed('#embed-container', { - * ... // other options - * dataSourceId: '', - * }) - */ - dataSourceId?: string; + extends Omit< + ViewConfig, + 'hiddenHomepageModules' | 'hiddenHomeLeftNavItems' | 'reorderedHomepageModules' + > { + /** + * If set to true, the embedded object container dynamically resizes + * according to the height of the Liveboard. + * + * **Note**: Using fullHeight loads all visualizations on the + * Liveboard simultaneously, which results in multiple warehouse + * queries and potentially a longer wait for the topmost + * visualizations to display on the screen. + * Setting `fullHeight` to `false` fetches visualizations + * incrementally as users scroll the page to view the charts and tables. + * @version SDK: 1.1.0 | ThoughtSpot: ts7.may.cl, 7.2.1 + * @example + * ```js + * const embed = new LiveboardEmbed('#embed', { + * ... // other liveboard view config + * fullHeight: true, + * }); + * ``` + */ + fullHeight?: boolean; + /** + * This is the minimum height(in pixels) for a full-height Liveboard. + * Setting this height helps resolve issues with empty Liveboards and + * other screens navigable from a Liveboard. + * @version SDK: 1.5.0 | ThoughtSpot: ts7.oct.cl, 7.2.1 + * @default 500 + * @example + * ```js + * const embed = new LiveboardEmbed('#embed', { + * ... // other liveboard view config + * fullHeight: true, + * defaultHeight: 600, + * }); + * ``` + */ + defaultHeight?: number; + /** + * @Deprecated If set to true, the context menu in visualizations will be enabled. + * @example + * ```js + * const embed = new LiveboardEmbed('#tsEmbed', { + * ... // other options + * enableVizTransformations:true, + * }) + * ``` + * @version: SDK: 1.1.0 | ThoughtSpot: 8.1.0.sw + */ + enableVizTransformations?: boolean; + /** + * The Liveboard to display in the embedded view. + * Use either liveboardId or pinboardId to reference the Liveboard to embed. + * @version SDK: 1.3.0 | ThoughtSpot ts7.aug.cl, 7.2.1 + * @example + * ```js + * const embed = new LiveboardEmbed('#embed-container', { + * ... // other options + * liveboardId:id of liveboard, + * }) + */ + liveboardId?: string; + /** + * To support backward compatibility + * @hidden + */ + pinboardId?: string; + /** + * The visualization within the Liveboard to display. + * @version SDK: 1.9.1 | ThoughtSpot: 8.1.0.cl, 8.4.1-sw + * @example + * ```js + * const embed = new LiveboardEmbed('#embed-container', { + * ... // other options + * vizId:'430496d6-6903-4601-937e-2c691821af3c', + * }) + * ``` + */ + vizId?: string; + /** + * If set to true, all filter chips from a + * Liveboard page will be read-only (no X buttons) + * @version SDK: 1.3.0 | ThoughtSpot ts7.aug.cl, 7.2.1.sw + * @example + * ```js + * const embed = new LiveboardEmbed('#embed-container', { + * ... // other options + * preventLiveboardFilterRemoval:true, + * }) + * ``` + */ + preventLiveboardFilterRemoval?: boolean; + /** + * Array of visualization IDs which should be visible when the Liveboard + * renders. This can be changed by triggering the `SetVisibleVizs` + * event. + * @version SDK: 1.9.1 | ThoughtSpot: 8.1.0.cl, 8.4.1-sw + * @example + * ```js + * const embed = new LiveboardEmbed('#embed-container', { + * ... // other options + * visibleVizs: [ + * '430496d6-6903-4601-937e-2c691821af3c', + * 'f547ec54-2a37-4516-a222-2b06719af726' + * ] + * }) + */ + visibleVizs?: string[]; + /** + * To support backward compatibility + * @hidden + */ + preventPinboardFilterRemoval?: boolean; + /** + * Render embedded Liveboards and visualizations in the + * new Liveboard experience mode. + * @version SDK: 1.14.0 | ThoughtSpot: 8.6.0.cl, 8.8.1-sw + * @example + * ```js + * const embed = new LiveboardEmbed('#embed-container', { + * ... // other options + * liveboardV2:true, + * }) + * ``` + */ + liveboardV2?: boolean; + /** + * Set a Liveboard tab as an active tab. + * Specify the tab ID. + * @example + * ```js + * const embed = new LiveboardEmbed('#tsEmbed', { + * ... // other options + * activeTabId:'id-1234', + * }) + * ``` + * @version SDK: 1.15.0 | ThoughtSpot: 8.7.0.cl, 8.8.1-sw + */ + activeTabId?: string; + /** + * Show or hide the tab panel of the embedded Liveboard. + * @version SDK: 1.25.0 | Thoughtspot: 9.6.0.cl, 9.8.0.sw + * @example + * ```js + * const embed = new LiveboardEmbed('#embed-container', { + * ... // other options + * hideTabPanel:true, + * }) + * ``` + */ + hideTabPanel?: boolean; + /** + * Show or hide the Liveboard header. + * @version SDK: 1.26.0 | Thoughtspot: 9.7.0.cl, 9.8.0.sw + * @default false + * @example + * ```js + * const embed = new LiveboardEmbed('#embed', { + * ... // other liveboard view config + * hideLiveboardHeader:true, + * }); + * ``` + */ + hideLiveboardHeader?: boolean; + /** + * Show or hide the Liveboard title. + * @default false + * @version SDK: 1.26.0 | Thoughtspot: 9.7.0.cl, 9.8.0.sw + * @example + * ```js + * const embed = new LiveboardEmbed('#embed-container', { + * ... // other options + * showLiveboardTitle:true, + * }) + * ``` + */ + showLiveboardTitle?: boolean; + /** + * Show or hide the Liveboard description. + * @default false + * @version SDK: 1.26.0 | Thoughtspot: 9.7.0.cl, 9.8.0.sw + * @example + * ```js + * const embed = new LiveboardEmbed('#embed-container', { + * ... // other options + * showLiveboardDescription:true, + * }) + * ``` + */ + showLiveboardDescription?: boolean; + /** + * Control the position and visibility of + * the Liveboard header as the users scroll down the + * embedded Liveboard page. + * @example + * ```js + * const embed = new LiveboardEmbed('#embed', { + * ... // other Liveboard view config + * isLiveboardHeaderSticky: true, + * }); + * ``` + * @version SDK: 1.26.0 | Thoughtspot: 9.7.0.cl, 9.8.0.sw + */ + isLiveboardHeaderSticky?: boolean; + /** + * enable or disable ask sage + * @default false + * @version SDK: 1.29.0 | Thoughtspot: 9.12.0.cl + * @example + * ```js + * const embed = new SearchEmbed('#tsEmbed', { + * ... // other options + * enableAskSage:true, + * }) + * ``` + */ + enableAskSage?: boolean; + /** + * This flag is used to enable the 2 column layout on a Liveboard + * @type {boolean} + * @default false + * @version SDK: 1.32.0 | ThoughtSpot:10.1.0.cl + * @example + * ```js + * const embed = new LiveboardEmbed('#embed-container', { + * ... // other options + * enable2ColumnLayout: true, + * }) + * ``` + */ + enable2ColumnLayout?: boolean; + /** + * Show a preview image of the visualization before the visualization loads. + * Only works for visualizations embeds with a viz id. + * + * Also, viz snashot should be enabled in the ThoughtSpot instance. + * Contact ThoughtSpot support to enable this feature. + * + * Since, this will show preview images, be careful that it may show + * undesired data to the user when using row level security. + * @example + * ```js + * const embed = new LiveboardEmbed('#embed-container', { + * liveboardId: 'liveboard-id', + * vizId: 'viz-id', + * showPreviewLoader: true, + * }); + * embed.render(); + * ``` + * @version SDK: 1.32.0 | ThoughtSpot: 10.0.0.cl + */ + showPreviewLoader?: boolean; + /** + * Enables or disables the compact header feature on a Liveboard. + * Compact Liveboard header is turned off by default on Liveboards in + * ThoughtSpot Embedded apps. + * @type {boolean} + * @default false + * @version SDK: 1.35.0 | ThoughtSpot:10.3.0.cl + * @example + * ```js + * const embed = new LiveboardEmbed('#embed-container', { + * ... // other options + * isLiveboardCompactHeaderEnabled: true, + * }) + * ``` + */ + isLiveboardCompactHeaderEnabled?: boolean; + /** + * This flag is used to show/hide verified icon in the Liveboard compact header + * @type {boolean} + * @default true + * @version SDK: 1.35.0 | ThoughtSpot:10.4.0.cl + * @example + * ```js + * const embed = new LiveboardEmbed('#embed-container', { + * ... // other options + * showLiveboardVerifiedBadge: true, + * }) + * ``` + */ + showLiveboardVerifiedBadge?: boolean; + /** + * This flag is used to show/hide the re-verify banner + * in Liveboard compact header + * @type {boolean} + * @default true + * @version SDK: 1.35.0 | ThoughtSpot:10.4.0.cl + * @example + * ```js + * const embed = new LiveboardEmbed('#embed-container', { + * ... // other options + * showLiveboardReverifyBanner: true, + * }) + * ``` + */ + showLiveboardReverifyBanner?: boolean; + /** + * This flag is used to enable/disable hide irrelevant filters in a Liveboard tab + * @type {boolean} + * @default false + * @version SDK: 1.36.0 | ThoughtSpot:10.6.0.cl + * @example + * ```js + * const embed = new LiveboardEmbed('#embed-container', { + * ... // other options + * hideIrrelevantChipsInLiveboardTabs: true, + * }) + * ``` + */ + hideIrrelevantChipsInLiveboardTabs?: boolean; + + /** + * The Liveboard to run on regular intervals to fetch the cdw token. + * @hidden + * @version SDK: 1.35.0 | ThoughtSpot:10.6.0.cl + * @example + * ```js + * const embed = new LiveboardEmbed('#embed-container', { + * ... // other options + * oAuthPollingInterval: value in milliseconds, + * }) + */ + oAuthPollingInterval?: number; + + /** + * The Liveboard is set to force a token fetch during the initial load. + * @hidden + * @version SDK: 1.35.0 | ThoughtSpot:10.6.0.cl + * @example + * ```js + * const embed = new LiveboardEmbed('#embed-container', { + * ... // other options + * isForceRedirect: false, + * }) + */ + isForceRedirect?: boolean; + + /** + * The source connection ID for authentication. + * @hidden + * @version SDK: 1.35.0 | ThoughtSpot:10.6.0.cl + * @example + * ```js + * const embed = new LiveboardEmbed('#embed-container', { + * ... // other options + * dataSourceId: '', + * }) + */ + dataSourceId?: string; } /** @@ -409,306 +407,321 @@ export interface LiveboardViewConfig * @group Embed components */ export class LiveboardEmbed extends V1Embed { - protected viewConfig: LiveboardViewConfig; - - private defaultHeight = 500; - - // eslint-disable-next-line no-useless-constructor - constructor(domSelector: DOMSelector, viewConfig: LiveboardViewConfig) { - viewConfig.embedComponentType = 'LiveboardEmbed'; - super(domSelector, viewConfig); - if (this.viewConfig.fullHeight === true) { - this.on(EmbedEvent.RouteChange, this.setIframeHeightForNonEmbedLiveboard); - this.on(EmbedEvent.EmbedHeight, this.updateIFrameHeight); - this.on(EmbedEvent.EmbedIframeCenter, this.embedIframeCenter); - } + protected viewConfig: LiveboardViewConfig; + + private defaultHeight = 500; + + // eslint-disable-next-line no-useless-constructor + constructor(domSelector: DOMSelector, viewConfig: LiveboardViewConfig) { + viewConfig.embedComponentType = 'LiveboardEmbed'; + super(domSelector, viewConfig); + + const v: ViewConfig = { + customizations: { + style: { + customCSS: { + variables: { + '--ts-var-spotter-prompt-background': '', + A: '', + + }, + }, + }, + }, + }; + + if (this.viewConfig.fullHeight === true) { + this.on(EmbedEvent.RouteChange, this.setIframeHeightForNonEmbedLiveboard); + this.on(EmbedEvent.EmbedHeight, this.updateIFrameHeight); + this.on(EmbedEvent.EmbedIframeCenter, this.embedIframeCenter); + } + } + + /** + * Construct a map of params to be passed on to the + * embedded Liveboard or visualization. + */ + protected getEmbedParams() { + let params = {}; + params = this.getBaseQueryParams(params); + const { + enableVizTransformations, + fullHeight, + defaultHeight, + visibleVizs, + liveboardV2, + vizId, + hideTabPanel, + activeTabId, + hideLiveboardHeader, + showLiveboardDescription, + showLiveboardTitle, + isLiveboardHeaderSticky = true, + isLiveboardCompactHeaderEnabled = false, + showLiveboardVerifiedBadge = true, + showLiveboardReverifyBanner = true, + hideIrrelevantChipsInLiveboardTabs = false, + enableAskSage, + enable2ColumnLayout, + dataPanelV2 = false, + enableCustomColumnGroups = false, + oAuthPollingInterval, + isForceRedirect, + dataSourceId, + } = this.viewConfig; + + const preventLiveboardFilterRemoval = this.viewConfig.preventLiveboardFilterRemoval + || this.viewConfig.preventPinboardFilterRemoval; + + if (fullHeight === true) { + params[Param.fullHeight] = true; + } + if (defaultHeight) { + this.defaultHeight = defaultHeight; + } + if (enableVizTransformations !== undefined) { + params[Param.EnableVizTransformations] = enableVizTransformations.toString(); + } + if (preventLiveboardFilterRemoval) { + params[Param.preventLiveboardFilterRemoval] = true; + } + if (visibleVizs) { + params[Param.visibleVizs] = visibleVizs; + } + params[Param.livedBoardEmbed] = true; + if (vizId) { + params[Param.vizEmbed] = true; + } + if (liveboardV2 !== undefined) { + params[Param.LiveboardV2Enabled] = liveboardV2; + } + if (enable2ColumnLayout !== undefined) { + params[Param.Enable2ColumnLayout] = enable2ColumnLayout; + } + if (hideTabPanel) { + params[Param.HideTabPanel] = hideTabPanel; + } + if (hideLiveboardHeader) { + params[Param.HideLiveboardHeader] = hideLiveboardHeader; + } + if (showLiveboardDescription) { + params[Param.ShowLiveboardDescription] = showLiveboardDescription; + } + if (showLiveboardTitle) { + params[Param.ShowLiveboardTitle] = showLiveboardTitle; + } + if (enableAskSage) { + params[Param.enableAskSage] = enableAskSage; } - /** - * Construct a map of params to be passed on to the - * embedded Liveboard or visualization. - */ - protected getEmbedParams() { - let params = {}; - params = this.getBaseQueryParams(params); - const { - enableVizTransformations, - fullHeight, - defaultHeight, - visibleVizs, - liveboardV2, - vizId, - hideTabPanel, - activeTabId, - hideLiveboardHeader, - showLiveboardDescription, - showLiveboardTitle, - isLiveboardHeaderSticky = true, - isLiveboardCompactHeaderEnabled = false, - showLiveboardVerifiedBadge = true, - showLiveboardReverifyBanner = true, - hideIrrelevantChipsInLiveboardTabs = false, - enableAskSage, - enable2ColumnLayout, - dataPanelV2 = false, - enableCustomColumnGroups = false, - oAuthPollingInterval, - isForceRedirect, - dataSourceId, - } = this.viewConfig; - - const preventLiveboardFilterRemoval = this.viewConfig.preventLiveboardFilterRemoval - || this.viewConfig.preventPinboardFilterRemoval; - - if (fullHeight === true) { - params[Param.fullHeight] = true; - } - if (defaultHeight) { - this.defaultHeight = defaultHeight; - } - if (enableVizTransformations !== undefined) { - params[Param.EnableVizTransformations] = enableVizTransformations.toString(); - } - if (preventLiveboardFilterRemoval) { - params[Param.preventLiveboardFilterRemoval] = true; - } - if (visibleVizs) { - params[Param.visibleVizs] = visibleVizs; - } - params[Param.livedBoardEmbed] = true; - if (vizId) { - params[Param.vizEmbed] = true; - } - if (liveboardV2 !== undefined) { - params[Param.LiveboardV2Enabled] = liveboardV2; - } - if (enable2ColumnLayout !== undefined) { - params[Param.Enable2ColumnLayout] = enable2ColumnLayout; - } - if (hideTabPanel) { - params[Param.HideTabPanel] = hideTabPanel; - } - if (hideLiveboardHeader) { - params[Param.HideLiveboardHeader] = hideLiveboardHeader; - } - if (showLiveboardDescription) { - params[Param.ShowLiveboardDescription] = showLiveboardDescription; - } - if (showLiveboardTitle) { - params[Param.ShowLiveboardTitle] = showLiveboardTitle; - } - if (enableAskSage) { - params[Param.enableAskSage] = enableAskSage; - } - - if (oAuthPollingInterval !== undefined) { - params[Param.OauthPollingInterval] = oAuthPollingInterval; - } - - if (isForceRedirect) { - params[Param.IsForceRedirect] = isForceRedirect; - } - - if (dataSourceId !== undefined) { - params[Param.DataSourceId] = dataSourceId; - } - - params[Param.LiveboardHeaderSticky] = isLiveboardHeaderSticky; - params[Param.LiveboardHeaderV2] = isLiveboardCompactHeaderEnabled; - params[Param.ShowLiveboardVerifiedBadge] = showLiveboardVerifiedBadge; - params[Param.ShowLiveboardReverifyBanner] = showLiveboardReverifyBanner; - params[Param.HideIrrelevantFiltersInTab] = hideIrrelevantChipsInLiveboardTabs; - - params[Param.DataPanelV2Enabled] = dataPanelV2; - params[Param.EnableCustomColumnGroups] = enableCustomColumnGroups; - const queryParams = getQueryParamString(params, true); - - return queryParams; + if (oAuthPollingInterval !== undefined) { + params[Param.OauthPollingInterval] = oAuthPollingInterval; } - private getIframeSuffixSrc(liveboardId: string, vizId: string, activeTabId: string) { - let suffix = `/embed/viz/${liveboardId}`; - if (activeTabId) { - suffix = `${suffix}/tab/${activeTabId} `; - } - if (vizId) { - suffix = `${suffix}/${vizId}`; - } - const tsPostHashParams = this.getThoughtSpotPostUrlParams(); - suffix = `${suffix}${tsPostHashParams}`; - return suffix; + if (isForceRedirect) { + params[Param.IsForceRedirect] = isForceRedirect; } - /** - * Construct the URL of the embedded ThoughtSpot Liveboard or visualization - * to be loaded within the iFrame. - */ - private getIFrameSrc(): string { - const { vizId, activeTabId } = this.viewConfig; - const liveboardId = this.viewConfig.liveboardId ?? this.viewConfig.pinboardId; - - if (!liveboardId) { - this.handleError(ERROR_MESSAGE.LIVEBOARD_VIZ_ID_VALIDATION); - } - return `${this.getRootIframeSrc()}${this.getIframeSuffixSrc( - liveboardId, - vizId, - activeTabId, - )}`; + if (dataSourceId !== undefined) { + params[Param.DataSourceId] = dataSourceId; } - /** - * Set the iframe height as per the computed height received - * from the ThoughtSpot app. - * @param data The event payload - */ - private updateIFrameHeight = (data: MessagePayload) => { - this.setIFrameHeight(Math.max(data.data, this.defaultHeight)); - }; + params[Param.LiveboardHeaderSticky] = isLiveboardHeaderSticky; + params[Param.LiveboardHeaderV2] = isLiveboardCompactHeaderEnabled; + params[Param.ShowLiveboardVerifiedBadge] = showLiveboardVerifiedBadge; + params[Param.ShowLiveboardReverifyBanner] = showLiveboardReverifyBanner; + params[Param.HideIrrelevantFiltersInTab] = hideIrrelevantChipsInLiveboardTabs; - private embedIframeCenter = (data: MessagePayload, responder: any) => { - const obj = this.getIframeCenter(); - responder({ type: EmbedEvent.EmbedIframeCenter, data: obj }); - }; + params[Param.DataPanelV2Enabled] = dataPanelV2; + params[Param.EnableCustomColumnGroups] = enableCustomColumnGroups; + const queryParams = getQueryParamString(params, true); - private setIframeHeightForNonEmbedLiveboard = (data: MessagePayload) => { - const routePath = data.data.currentPath; - if (liveboardHeightWhitelistedRoutes.some((path) => routePath.startsWith(path))) { - return; - } - this.setIFrameHeight(this.defaultHeight); - }; + return queryParams; + } - private setActiveTab(data: { tabId: string }) { - if (!this.viewConfig.vizId) { - const prefixPath = this.iFrame.src.split('#/')[1].split('/tab')[0]; - const path = `${prefixPath}/tab/${data.tabId}`; - super.trigger(HostEvent.Navigate, path); - } + private getIframeSuffixSrc(liveboardId: string, vizId: string, activeTabId: string) { + let suffix = `/embed/viz/${liveboardId}`; + if (activeTabId) { + suffix = `${suffix}/tab/${activeTabId} `; + } + if (vizId) { + suffix = `${suffix}/${vizId}`; + } + const tsPostHashParams = this.getThoughtSpotPostUrlParams(); + suffix = `${suffix}${tsPostHashParams}`; + return suffix; + } + + /** + * Construct the URL of the embedded ThoughtSpot Liveboard or visualization + * to be loaded within the iFrame. + */ + private getIFrameSrc(): string { + const { vizId, activeTabId } = this.viewConfig; + const liveboardId = this.viewConfig.liveboardId ?? this.viewConfig.pinboardId; + + if (!liveboardId) { + this.handleError(ERROR_MESSAGE.LIVEBOARD_VIZ_ID_VALIDATION); + } + return `${this.getRootIframeSrc()}${this.getIframeSuffixSrc( + liveboardId, + vizId, + activeTabId, + )}`; + } + + /** + * Set the iframe height as per the computed height received + * from the ThoughtSpot app. + * @param data The event payload + */ + private updateIFrameHeight = (data: MessagePayload) => { + this.setIFrameHeight(Math.max(data.data, this.defaultHeight)); + }; + + private embedIframeCenter = (data: MessagePayload, responder: any) => { + const obj = this.getIframeCenter(); + responder({ type: EmbedEvent.EmbedIframeCenter, data: obj }); + }; + + private setIframeHeightForNonEmbedLiveboard = (data: MessagePayload) => { + const routePath = data.data.currentPath; + if (liveboardHeightWhitelistedRoutes.some((path) => routePath.startsWith(path))) { + return; } + this.setIFrameHeight(this.defaultHeight); + }; + + private setActiveTab(data: { tabId: string }) { + if (!this.viewConfig.vizId) { + const prefixPath = this.iFrame.src.split('#/')[1].split('/tab')[0]; + const path = `${prefixPath}/tab/${data.tabId}`; + super.trigger(HostEvent.Navigate, path); + } + } + + private async showPreviewLoader() { + if (!this.viewConfig.showPreviewLoader || !this.viewConfig.vizId) { + return; + } + + try { + const preview = await getPreview( + this.thoughtSpotHost, + this.viewConfig.vizId, + this.viewConfig.liveboardId, + ); - private async showPreviewLoader() { - if (!this.viewConfig.showPreviewLoader || !this.viewConfig.vizId) { - return; - } - - try { - const preview = await getPreview( - this.thoughtSpotHost, - this.viewConfig.vizId, - this.viewConfig.liveboardId, - ); - - if (!preview.vizContent) { - return; - } - addPreviewStylesIfNotPresent(); - - const div = document.createElement('div'); - div.innerHTML = ` + if (!preview.vizContent) { + return; + } + addPreviewStylesIfNotPresent(); + + const div = document.createElement('div'); + div.innerHTML = `
${preview.vizContent}
`; - const previewDiv = div.firstElementChild as HTMLElement; - this.el.appendChild(previewDiv); - this.el.style.position = 'relative'; - this.on(EmbedEvent.Data, () => { - previewDiv.remove(); - }); - } catch (error) { - console.error('Error fetching preview', error); - } + const previewDiv = div.firstElementChild as HTMLElement; + this.el.appendChild(previewDiv); + this.el.style.position = 'relative'; + this.on(EmbedEvent.Data, () => { + previewDiv.remove(); + }); + } catch (error) { + console.error('Error fetching preview', error); } + } - protected beforePrerenderVisible(): void { - const embedObj = this.insertedDomEl?.[this.embedNodeKey] as LiveboardEmbed; + protected beforePrerenderVisible(): void { + const embedObj = this.insertedDomEl?.[this.embedNodeKey] as LiveboardEmbed; - if (isUndefined(embedObj)) return; + if (isUndefined(embedObj)) return; - const showDifferentLib = this.viewConfig.liveboardId - && embedObj.viewConfig.liveboardId !== this.viewConfig.liveboardId; + const showDifferentLib = this.viewConfig.liveboardId + && embedObj.viewConfig.liveboardId !== this.viewConfig.liveboardId; - if (showDifferentLib) { - const libId = this.viewConfig.liveboardId; - this.navigateToLiveboard(libId); - } + if (showDifferentLib) { + const libId = this.viewConfig.liveboardId; + this.navigateToLiveboard(libId); } + } - protected async handleRenderForPrerender(): Promise { - if (isUndefined(this.viewConfig.liveboardId)) { - return this.prerenderGeneric(); - } - return super.handleRenderForPrerender(); + protected async handleRenderForPrerender(): Promise { + if (isUndefined(this.viewConfig.liveboardId)) { + return this.prerenderGeneric(); } - - /** - * Triggers an event to the embedded app - * @param {HostEvent} messageType The event type - * @param {any} data The payload to send with the message - * @returns A promise that resolves with the response from the embedded app - */ - public trigger( - messageType: HostEventT, - data: TriggerPayload = ({} as any), - ): Promise> { - const dataWithVizId: any = data; - if (messageType === HostEvent.SetActiveTab) { - this.setActiveTab(data as { tabId: string }); - return Promise.resolve(null); - } - if (typeof dataWithVizId === 'object' && this.viewConfig.vizId) { - dataWithVizId.vizId = this.viewConfig.vizId; - } - return super.trigger(messageType, dataWithVizId); + return super.handleRenderForPrerender(); + } + + /** + * Triggers an event to the embedded app + * @param {HostEvent} messageType The event type + * @param {any} data The payload to send with the message + * @returns A promise that resolves with the response from the embedded app + */ + public trigger( + messageType: HostEventT, + data: TriggerPayload = ({} as any), + ): Promise> { + const dataWithVizId: any = data; + if (messageType === HostEvent.SetActiveTab) { + this.setActiveTab(data as { tabId: string }); + return Promise.resolve(null); } - - /** - * Render an embedded ThoughtSpot Liveboard or visualization - * @param renderOptions An object specifying the Liveboard ID, - * visualization ID and the runtime filters. - */ - public async render(): Promise { - await super.render(); - - const src = this.getIFrameSrc(); - await this.renderV1Embed(src); - this.showPreviewLoader(); - - return this; + if (typeof dataWithVizId === 'object' && this.viewConfig.vizId) { + dataWithVizId.vizId = this.viewConfig.vizId; } - - public navigateToLiveboard(liveboardId: string, vizId?: string, activeTabId?: string) { - const path = this.getIframeSuffixSrc(liveboardId, vizId, activeTabId); - this.viewConfig.liveboardId = liveboardId; - this.viewConfig.activeTabId = activeTabId; - this.viewConfig.vizId = vizId; - if (this.isRendered) { - this.trigger(HostEvent.Navigate, path.substring(1)); - } else if (this.viewConfig.preRenderId) { - this.preRender(true); - } else { - this.render(); - } + return super.trigger(messageType, dataWithVizId); + } + + /** + * Render an embedded ThoughtSpot Liveboard or visualization + * @param renderOptions An object specifying the Liveboard ID, + * visualization ID and the runtime filters. + */ + public async render(): Promise { + await super.render(); + + const src = this.getIFrameSrc(); + await this.renderV1Embed(src); + this.showPreviewLoader(); + + return this; + } + + public navigateToLiveboard(liveboardId: string, vizId?: string, activeTabId?: string) { + const path = this.getIframeSuffixSrc(liveboardId, vizId, activeTabId); + this.viewConfig.liveboardId = liveboardId; + this.viewConfig.activeTabId = activeTabId; + this.viewConfig.vizId = vizId; + if (this.isRendered) { + this.trigger(HostEvent.Navigate, path.substring(1)); + } else if (this.viewConfig.preRenderId) { + this.preRender(true); + } else { + this.render(); + } + } + + /** + * Returns the full url of the Liveboard/visualization which can be used to open + * this Liveboard inside the full Thoughtspot application in a new tab. + * @returns url string + */ + public getLiveboardUrl(): string { + let url = `${this.thoughtSpotHost}/#/pinboard/${this.viewConfig.liveboardId}`; + if (this.viewConfig.activeTabId) { + url = `${url}/tab/${this.viewConfig.activeTabId}`; } - /** - * Returns the full url of the Liveboard/visualization which can be used to open - * this Liveboard inside the full Thoughtspot application in a new tab. - * @returns url string - */ - public getLiveboardUrl(): string { - let url = `${this.thoughtSpotHost}/#/pinboard/${this.viewConfig.liveboardId}`; - if (this.viewConfig.activeTabId) { - url = `${url}/tab/${this.viewConfig.activeTabId}`; - } - - if (this.viewConfig.vizId) { - url = `${url}/${this.viewConfig.vizId}`; - } - - return url; + if (this.viewConfig.vizId) { + url = `${url}/${this.viewConfig.vizId}`; } + + return url; + } } /** diff --git a/src/types.ts b/src/types.ts index fdc34354..67039d40 100644 --- a/src/types.ts +++ b/src/types.ts @@ -7,8 +7,11 @@ */ import { CustomCssVariables } from './css-variables'; -import type { SessionInterface } from './utils/graphql/answerService/answerService'; - +export interface SessionInterface { + sessionId: string; + genNo: number; + acSession: { sessionId: string; genNo: number }; +} /** * The authentication mechanism for allowing access to the * the embedded app @@ -206,8 +209,7 @@ export enum HomeLeftNavItem { */ LiveboardSchedules = 'liveboard-schedules' } -export type DOMSelector = string | HTMLElement; - +export type DOMSelector = string /** * inline customCSS within the {@link CustomisationsInterface}. * Use {@link CustomCssVariables} or css rules. @@ -488,7 +490,7 @@ export interface EmbedConfig { * ``` * @version SDK: 1.17.0 | ThoughtSpot: 8.9.0.cl, 9.0.1.sw */ - authTriggerContainer?: string | HTMLElement; + authTriggerContainer?: string; /** * Specify that we want to use the `AuthEvent.TRIGGER_SSO_POPUP` event to trigger * SAML popup. This is useful when you want to trigger the popup on a custom user @@ -4896,3 +4898,10 @@ export interface DefaultAppInitData { hiddenHomeLeftNavItems: string[]; customVariablesForThirdPartyTools: Record; } + +export enum lol { + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa, + b, + c, + d +} \ No newline at end of file diff --git a/src/utils/graphql/answerService/answerService.ts b/src/utils/graphql/answerService/answerService.ts index 5ea013d4..fb52f2e4 100644 --- a/src/utils/graphql/answerService/answerService.ts +++ b/src/utils/graphql/answerService/answerService.ts @@ -8,11 +8,7 @@ import { graphqlQuery } from '../graphql-request'; import { getSourceDetail } from '../sourceService'; import * as queries from './answer-queries'; -export interface SessionInterface { - sessionId: string; - genNo: number; - acSession: { sessionId: string; genNo: number }; -} + // eslint-disable-next-line no-shadow export enum OperationType { From 7e150ede76ff874292195894050734d289d2bc69 Mon Sep 17 00:00:00 2001 From: sastaachar Date: Mon, 24 Mar 2025 15:51:58 +0530 Subject: [PATCH 2/8] jstnm-ts-conversion : omggggggg whatt???????? --- scripts/ts-to-any-converter/converter.ts | 148 - scripts/ts-to-any-converter/package.json | 22 + scripts/ts-to-any-converter/pnpm-lock.yaml | 3128 +++++++++++++++++ scripts/ts-to-any-converter/src/converter.ts | 215 ++ .../{ => src}/types/converter-types.ts | 0 .../{ => src}/types/intermediate.ts | 7 +- .../src/utils/index.spec.ts | 120 + .../ts-to-any-converter/src/utils/index.ts | 50 + .../src/utils/utils.spec.ts | 0 .../templates/dart/interface.mustache | 4 +- .../tests/converter/enum/enum-type.ts | 22 + .../tests/converter/enum/enums.test.ts | 5 + 12 files changed, 3570 insertions(+), 151 deletions(-) delete mode 100644 scripts/ts-to-any-converter/converter.ts create mode 100644 scripts/ts-to-any-converter/package.json create mode 100644 scripts/ts-to-any-converter/pnpm-lock.yaml create mode 100644 scripts/ts-to-any-converter/src/converter.ts rename scripts/ts-to-any-converter/{ => src}/types/converter-types.ts (100%) rename scripts/ts-to-any-converter/{ => src}/types/intermediate.ts (81%) create mode 100644 scripts/ts-to-any-converter/src/utils/index.spec.ts create mode 100644 scripts/ts-to-any-converter/src/utils/index.ts create mode 100644 scripts/ts-to-any-converter/src/utils/utils.spec.ts create mode 100644 scripts/ts-to-any-converter/tests/converter/enum/enum-type.ts create mode 100644 scripts/ts-to-any-converter/tests/converter/enum/enums.test.ts diff --git a/scripts/ts-to-any-converter/converter.ts b/scripts/ts-to-any-converter/converter.ts deleted file mode 100644 index 4b917944..00000000 --- a/scripts/ts-to-any-converter/converter.ts +++ /dev/null @@ -1,148 +0,0 @@ -/* eslint-disable import/no-extraneous-dependencies */ -import { - Project, SyntaxKind, EnumDeclaration, InterfaceDeclaration, -} from 'ts-morph'; -import fs from 'fs'; -import path from 'path'; -import Mustache from 'mustache'; -import { IEnum, TemplateType } from './types/intermediate'; -import { ConverterConfig } from './types/converter-types'; - -const addPrev = (obj: T): T => { - if (typeof obj !== 'object' || obj === null) { - return obj; - } - - Object.keys(obj).forEach((key) => { - const child = obj[key]; - - if (Array.isArray(child)) { - child.forEach((item, idx) => { - obj[key][idx] = addPrev(item); - obj[key][idx]._prev = obj; - }); - } else if (typeof child === 'object') { - obj[key] = addPrev(obj[key]); - // eslint-disable-next-line no-underscore-dangle - obj[key]._prev = obj; - } - }); - return obj; -}; - -// We will first convert the ast format to a intermediate format that is easier -// to handle - -class TypeScriptConverter { - readonly project: Project; - - private finalOutputString = ''; - - private configs: ConverterConfig; - - private templateDefaultPaths = { - [TemplateType.Enum]: 'enum.mustache', - [TemplateType.Interface]: 'interface.mustache', - } - - private templates: Record; - - /** - * Loads the templates from the templates directory - * @returns The templates - */ - private updateTemplates() { - const defaultTemplateRoot = path.resolve(__dirname, 'templates/dart'); - const templatePaths = this.templateDefaultPaths; - - this.templates = {} as Record; - Object.keys(templatePaths).forEach((templateType) => { - const templatePath = path.resolve(defaultTemplateRoot, templatePaths[templateType]); - this.templates[templateType] = fs.readFileSync(templatePath, 'utf8'); - }); - - return this.templates; - } - - constructor(configs: ConverterConfig) { - // load the template - this.project = new Project(); - this.updateTemplates(); - this.configs = configs; - this.finalOutputString = ''; - } - - renderTemplate(templateType: TemplateType, data: Record) { - const template = this.templates[templateType]; - return Mustache.render(template, data); - } - - appendToFinalOutput(output: string) { - this.finalOutputString += output; - } - - convertEnumToIntermediate(enumDeclaration: EnumDeclaration): IEnum { - const enumName = enumDeclaration.getName(); - const members = enumDeclaration.getMembers().map((member, index) => { - const key = member.getName(); - const value = member.getInitializer()?.getText().replace(/['"]/g, ''); // Remove quotes - const comment = member.getJsDocs().map((doc) => doc.getText()).join(''); - return { - name: key, value, comment, isLast: index === enumDeclaration.getMembers().length - 1, - }; - }); - - const comment = enumDeclaration.getJsDocs().map((doc) => doc.getText()).join(''); - - return addPrev({ - name: enumName, - options: members, - type: 'enum', - comment, - }); - } - - handleEnum = (enumDeclaration: EnumDeclaration) => { - const enumIntermediate = this.convertEnumToIntermediate(enumDeclaration); - return this.renderTemplate(TemplateType.Enum, enumIntermediate); - } - - handleInterface = (interfaceDeclaration: InterfaceDeclaration) => { - const interfaceName = interfaceDeclaration.getName(); - const properties = interfaceDeclaration.getProperties().map((property) => { - const name = property.getName(); - const type = property.getType().getText(); - return { - name, - type, - }; - }); - } - - convert() { - this.configs.inputs.forEach((input) => { - const sourceFile = this.project.addSourceFileAtPath(input); - const enums = sourceFile.getEnums().map(this.handleEnum); - this.appendToFinalOutput(enums.join('\n')); - }); - - this.writeOutput(); - } - - writeOutput() { - fs.writeFileSync(this.configs.output, this.finalOutputString); - } -} - -/** - * - */ -function main() { - const converter = new TypeScriptConverter({ - inputs: ['src/types.ts'], - output: 'my.dart', - }); - converter.convert(); -} - -main(); diff --git a/scripts/ts-to-any-converter/package.json b/scripts/ts-to-any-converter/package.json new file mode 100644 index 00000000..7ddb6150 --- /dev/null +++ b/scripts/ts-to-any-converter/package.json @@ -0,0 +1,22 @@ +{ + "name": "ts-to-any-converter", + "version": "1.0.0", + "type": "module", + "main": "index.js", + "scripts": { + "test": "vitest" + }, + "keywords": [], + "author": "", + "license": "ISC", + "description": "", + "dependencies": { + "mustache": "^4.2.0", + "ts-morph": "^25.0.1" + }, + "devDependencies": { + "@types/mustache": "^4.2.5", + "tsx": "^4.19.3", + "vitest": "^3.0.9" + } +} diff --git a/scripts/ts-to-any-converter/pnpm-lock.yaml b/scripts/ts-to-any-converter/pnpm-lock.yaml new file mode 100644 index 00000000..7b275fbd --- /dev/null +++ b/scripts/ts-to-any-converter/pnpm-lock.yaml @@ -0,0 +1,3128 @@ +lockfileVersion: '6.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +dependencies: + mustache: + specifier: ^4.2.0 + version: 4.2.0 + ts-morph: + specifier: ^25.0.1 + version: 25.0.1 + +devDependencies: + '@babel/plugin-transform-modules-commonjs': + specifier: ^7.26.3 + version: 7.26.3(@babel/core@7.26.10) + '@types/mustache': + specifier: ^4.2.5 + version: 4.2.5 + jest: + specifier: ^29.7.0 + version: 29.7.0 + tsx: + specifier: ^4.19.3 + version: 4.19.3 + vitest: + specifier: ^3.0.9 + version: 3.0.9(tsx@4.19.3) + +packages: + + /@ampproject/remapping@2.3.0: + resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} + engines: {node: '>=6.0.0'} + dependencies: + '@jridgewell/gen-mapping': 0.3.8 + '@jridgewell/trace-mapping': 0.3.25 + dev: true + + /@babel/code-frame@7.26.2: + resolution: {integrity: sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-validator-identifier': 7.25.9 + js-tokens: 4.0.0 + picocolors: 1.1.1 + dev: true + + /@babel/compat-data@7.26.8: + resolution: {integrity: sha512-oH5UPLMWR3L2wEFLnFJ1TZXqHufiTKAiLfqw5zkhS4dKXLJ10yVztfil/twG8EDTA4F/tvVNw9nOl4ZMslB8rQ==} + engines: {node: '>=6.9.0'} + dev: true + + /@babel/core@7.26.10: + resolution: {integrity: sha512-vMqyb7XCDMPvJFFOaT9kxtiRh42GwlZEg1/uIgtZshS5a/8OaduUfCi7kynKgc3Tw/6Uo2D+db9qBttghhmxwQ==} + engines: {node: '>=6.9.0'} + dependencies: + '@ampproject/remapping': 2.3.0 + '@babel/code-frame': 7.26.2 + '@babel/generator': 7.26.10 + '@babel/helper-compilation-targets': 7.26.5 + '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.10) + '@babel/helpers': 7.26.10 + '@babel/parser': 7.26.10 + '@babel/template': 7.26.9 + '@babel/traverse': 7.26.10 + '@babel/types': 7.26.10 + convert-source-map: 2.0.0 + debug: 4.4.0 + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/generator@7.26.10: + resolution: {integrity: sha512-rRHT8siFIXQrAYOYqZQVsAr8vJ+cBNqcVAY6m5V8/4QqzaPl+zDBe6cLEPRDuNOUf3ww8RfJVlOyQMoSI+5Ang==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/parser': 7.26.10 + '@babel/types': 7.26.10 + '@jridgewell/gen-mapping': 0.3.8 + '@jridgewell/trace-mapping': 0.3.25 + jsesc: 3.1.0 + dev: true + + /@babel/helper-compilation-targets@7.26.5: + resolution: {integrity: sha512-IXuyn5EkouFJscIDuFF5EsiSolseme1s0CZB+QxVugqJLYmKdxI1VfIBOst0SUu4rnk2Z7kqTwmoO1lp3HIfnA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/compat-data': 7.26.8 + '@babel/helper-validator-option': 7.25.9 + browserslist: 4.24.4 + lru-cache: 5.1.1 + semver: 6.3.1 + dev: true + + /@babel/helper-module-imports@7.25.9: + resolution: {integrity: sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/traverse': 7.26.10 + '@babel/types': 7.26.10 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/helper-module-transforms@7.26.0(@babel/core@7.26.10): + resolution: {integrity: sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-module-imports': 7.25.9 + '@babel/helper-validator-identifier': 7.25.9 + '@babel/traverse': 7.26.10 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/helper-plugin-utils@7.26.5: + resolution: {integrity: sha512-RS+jZcRdZdRFzMyr+wcsaqOmld1/EqTghfaBGQQd/WnRdzdlvSZ//kF7U8VQTxf1ynZ4cjUcYgjVGx13ewNPMg==} + engines: {node: '>=6.9.0'} + dev: true + + /@babel/helper-string-parser@7.25.9: + resolution: {integrity: sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==} + engines: {node: '>=6.9.0'} + dev: true + + /@babel/helper-validator-identifier@7.25.9: + resolution: {integrity: sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==} + engines: {node: '>=6.9.0'} + dev: true + + /@babel/helper-validator-option@7.25.9: + resolution: {integrity: sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==} + engines: {node: '>=6.9.0'} + dev: true + + /@babel/helpers@7.26.10: + resolution: {integrity: sha512-UPYc3SauzZ3JGgj87GgZ89JVdC5dj0AoetR5Bw6wj4niittNyFh6+eOGonYvJ1ao6B8lEa3Q3klS7ADZ53bc5g==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/template': 7.26.9 + '@babel/types': 7.26.10 + dev: true + + /@babel/parser@7.26.10: + resolution: {integrity: sha512-6aQR2zGE/QFi8JpDLjUZEPYOs7+mhKXm86VaKFiLP35JQwQb6bwUE+XbvkH0EptsYhbNBSUGaUBLKqxH1xSgsA==} + engines: {node: '>=6.0.0'} + hasBin: true + dependencies: + '@babel/types': 7.26.10 + dev: true + + /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.26.10): + resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + dev: true + + /@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.26.10): + resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + dev: true + + /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.26.10): + resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + dev: true + + /@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.26.10): + resolution: {integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + dev: true + + /@babel/plugin-syntax-import-attributes@7.26.0(@babel/core@7.26.10): + resolution: {integrity: sha512-e2dttdsJ1ZTpi3B9UYGLw41hifAubg19AtCu/2I/F1QNVclOBr1dYpTdmdyZ84Xiz43BS/tCUkMAZNLv12Pi+A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + dev: true + + /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.26.10): + resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + dev: true + + /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.26.10): + resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + dev: true + + /@babel/plugin-syntax-jsx@7.25.9(@babel/core@7.26.10): + resolution: {integrity: sha512-ld6oezHQMZsZfp6pWtbjaNDF2tiiCYYDqQszHt5VV437lewP9aSi2Of99CK0D0XB21k7FLgnLcmQKyKzynfeAA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + dev: true + + /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.26.10): + resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + dev: true + + /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.26.10): + resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + dev: true + + /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.26.10): + resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + dev: true + + /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.26.10): + resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + dev: true + + /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.26.10): + resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + dev: true + + /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.26.10): + resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + dev: true + + /@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.26.10): + resolution: {integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + dev: true + + /@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.26.10): + resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + dev: true + + /@babel/plugin-syntax-typescript@7.25.9(@babel/core@7.26.10): + resolution: {integrity: sha512-hjMgRy5hb8uJJjUcdWunWVcoi9bGpJp8p5Ol1229PoN6aytsLwNMgmdftO23wnCLMfVmTwZDWMPNq/D1SY60JQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + dev: true + + /@babel/plugin-transform-modules-commonjs@7.26.3(@babel/core@7.26.10): + resolution: {integrity: sha512-MgR55l4q9KddUDITEzEFYn5ZsGDXMSsU9E+kh7fjRXTIC3RHqfCo8RPRbyReYJh44HQ/yomFkqbOFohXvDCiIQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.10) + '@babel/helper-plugin-utils': 7.26.5 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/template@7.26.9: + resolution: {integrity: sha512-qyRplbeIpNZhmzOysF/wFMuP9sctmh2cFzRAZOn1YapxBsE1i9bJIY586R/WBLfLcmcBlM8ROBiQURnnNy+zfA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/code-frame': 7.26.2 + '@babel/parser': 7.26.10 + '@babel/types': 7.26.10 + dev: true + + /@babel/traverse@7.26.10: + resolution: {integrity: sha512-k8NuDrxr0WrPH5Aupqb2LCVURP/S0vBEn5mK6iH+GIYob66U5EtoZvcdudR2jQ4cmTwhEwW1DLB+Yyas9zjF6A==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/code-frame': 7.26.2 + '@babel/generator': 7.26.10 + '@babel/parser': 7.26.10 + '@babel/template': 7.26.9 + '@babel/types': 7.26.10 + debug: 4.4.0 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/types@7.26.10: + resolution: {integrity: sha512-emqcG3vHrpxUKTrxcblR36dcrcoRDvKmnL/dCL6ZsHaShW80qxCAcNhzQZrpeM765VzEos+xOi4s+r4IXzTwdQ==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-string-parser': 7.25.9 + '@babel/helper-validator-identifier': 7.25.9 + dev: true + + /@bcoe/v8-coverage@0.2.3: + resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} + dev: true + + /@esbuild/aix-ppc64@0.25.1: + resolution: {integrity: sha512-kfYGy8IdzTGy+z0vFGvExZtxkFlA4zAxgKEahG9KE1ScBjpQnFsNOX8KTU5ojNru5ed5CVoJYXFtoxaq5nFbjQ==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [aix] + requiresBuild: true + dev: true + optional: true + + /@esbuild/android-arm64@0.25.1: + resolution: {integrity: sha512-50tM0zCJW5kGqgG7fQ7IHvQOcAn9TKiVRuQ/lN0xR+T2lzEFvAi1ZcS8DiksFcEpf1t/GYOeOfCAgDHFpkiSmA==} + engines: {node: '>=18'} + cpu: [arm64] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@esbuild/android-arm@0.25.1: + resolution: {integrity: sha512-dp+MshLYux6j/JjdqVLnMglQlFu+MuVeNrmT5nk6q07wNhCdSnB7QZj+7G8VMUGh1q+vj2Bq8kRsuyA00I/k+Q==} + engines: {node: '>=18'} + cpu: [arm] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@esbuild/android-x64@0.25.1: + resolution: {integrity: sha512-GCj6WfUtNldqUzYkN/ITtlhwQqGWu9S45vUXs7EIYf+7rCiiqH9bCloatO9VhxsL0Pji+PF4Lz2XXCES+Q8hDw==} + engines: {node: '>=18'} + cpu: [x64] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@esbuild/darwin-arm64@0.25.1: + resolution: {integrity: sha512-5hEZKPf+nQjYoSr/elb62U19/l1mZDdqidGfmFutVUjjUZrOazAtwK+Kr+3y0C/oeJfLlxo9fXb1w7L+P7E4FQ==} + engines: {node: '>=18'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@esbuild/darwin-x64@0.25.1: + resolution: {integrity: sha512-hxVnwL2Dqs3fM1IWq8Iezh0cX7ZGdVhbTfnOy5uURtao5OIVCEyj9xIzemDi7sRvKsuSdtCAhMKarxqtlyVyfA==} + engines: {node: '>=18'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@esbuild/freebsd-arm64@0.25.1: + resolution: {integrity: sha512-1MrCZs0fZa2g8E+FUo2ipw6jw5qqQiH+tERoS5fAfKnRx6NXH31tXBKI3VpmLijLH6yriMZsxJtaXUyFt/8Y4A==} + engines: {node: '>=18'} + cpu: [arm64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/freebsd-x64@0.25.1: + resolution: {integrity: sha512-0IZWLiTyz7nm0xuIs0q1Y3QWJC52R8aSXxe40VUxm6BB1RNmkODtW6LHvWRrGiICulcX7ZvyH6h5fqdLu4gkww==} + engines: {node: '>=18'} + cpu: [x64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-arm64@0.25.1: + resolution: {integrity: sha512-jaN3dHi0/DDPelk0nLcXRm1q7DNJpjXy7yWaWvbfkPvI+7XNSc/lDOnCLN7gzsyzgu6qSAmgSvP9oXAhP973uQ==} + engines: {node: '>=18'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-arm@0.25.1: + resolution: {integrity: sha512-NdKOhS4u7JhDKw9G3cY6sWqFcnLITn6SqivVArbzIaf3cemShqfLGHYMx8Xlm/lBit3/5d7kXvriTUGa5YViuQ==} + engines: {node: '>=18'} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-ia32@0.25.1: + resolution: {integrity: sha512-OJykPaF4v8JidKNGz8c/q1lBO44sQNUQtq1KktJXdBLn1hPod5rE/Hko5ugKKZd+D2+o1a9MFGUEIUwO2YfgkQ==} + engines: {node: '>=18'} + cpu: [ia32] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-loong64@0.25.1: + resolution: {integrity: sha512-nGfornQj4dzcq5Vp835oM/o21UMlXzn79KobKlcs3Wz9smwiifknLy4xDCLUU0BWp7b/houtdrgUz7nOGnfIYg==} + engines: {node: '>=18'} + cpu: [loong64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-mips64el@0.25.1: + resolution: {integrity: sha512-1osBbPEFYwIE5IVB/0g2X6i1qInZa1aIoj1TdL4AaAb55xIIgbg8Doq6a5BzYWgr+tEcDzYH67XVnTmUzL+nXg==} + engines: {node: '>=18'} + cpu: [mips64el] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-ppc64@0.25.1: + resolution: {integrity: sha512-/6VBJOwUf3TdTvJZ82qF3tbLuWsscd7/1w+D9LH0W/SqUgM5/JJD0lrJ1fVIfZsqB6RFmLCe0Xz3fmZc3WtyVg==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-riscv64@0.25.1: + resolution: {integrity: sha512-nSut/Mx5gnilhcq2yIMLMe3Wl4FK5wx/o0QuuCLMtmJn+WeWYoEGDN1ipcN72g1WHsnIbxGXd4i/MF0gTcuAjQ==} + engines: {node: '>=18'} + cpu: [riscv64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-s390x@0.25.1: + resolution: {integrity: sha512-cEECeLlJNfT8kZHqLarDBQso9a27o2Zd2AQ8USAEoGtejOrCYHNtKP8XQhMDJMtthdF4GBmjR2au3x1udADQQQ==} + engines: {node: '>=18'} + cpu: [s390x] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-x64@0.25.1: + resolution: {integrity: sha512-xbfUhu/gnvSEg+EGovRc+kjBAkrvtk38RlerAzQxvMzlB4fXpCFCeUAYzJvrnhFtdeyVCDANSjJvOvGYoeKzFA==} + engines: {node: '>=18'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/netbsd-arm64@0.25.1: + resolution: {integrity: sha512-O96poM2XGhLtpTh+s4+nP7YCCAfb4tJNRVZHfIE7dgmax+yMP2WgMd2OecBuaATHKTHsLWHQeuaxMRnCsH8+5g==} + engines: {node: '>=18'} + cpu: [arm64] + os: [netbsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/netbsd-x64@0.25.1: + resolution: {integrity: sha512-X53z6uXip6KFXBQ+Krbx25XHV/NCbzryM6ehOAeAil7X7oa4XIq+394PWGnwaSQ2WRA0KI6PUO6hTO5zeF5ijA==} + engines: {node: '>=18'} + cpu: [x64] + os: [netbsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/openbsd-arm64@0.25.1: + resolution: {integrity: sha512-Na9T3szbXezdzM/Kfs3GcRQNjHzM6GzFBeU1/6IV/npKP5ORtp9zbQjvkDJ47s6BCgaAZnnnu/cY1x342+MvZg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openbsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/openbsd-x64@0.25.1: + resolution: {integrity: sha512-T3H78X2h1tszfRSf+txbt5aOp/e7TAz3ptVKu9Oyir3IAOFPGV6O9c2naym5TOriy1l0nNf6a4X5UXRZSGX/dw==} + engines: {node: '>=18'} + cpu: [x64] + os: [openbsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/sunos-x64@0.25.1: + resolution: {integrity: sha512-2H3RUvcmULO7dIE5EWJH8eubZAI4xw54H1ilJnRNZdeo8dTADEZ21w6J22XBkXqGJbe0+wnNJtw3UXRoLJnFEg==} + engines: {node: '>=18'} + cpu: [x64] + os: [sunos] + requiresBuild: true + dev: true + optional: true + + /@esbuild/win32-arm64@0.25.1: + resolution: {integrity: sha512-GE7XvrdOzrb+yVKB9KsRMq+7a2U/K5Cf/8grVFRAGJmfADr/e/ODQ134RK2/eeHqYV5eQRFxb1hY7Nr15fv1NQ==} + engines: {node: '>=18'} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@esbuild/win32-ia32@0.25.1: + resolution: {integrity: sha512-uOxSJCIcavSiT6UnBhBzE8wy3n0hOkJsBOzy7HDAuTDE++1DJMRRVCPGisULScHL+a/ZwdXPpXD3IyFKjA7K8A==} + engines: {node: '>=18'} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@esbuild/win32-x64@0.25.1: + resolution: {integrity: sha512-Y1EQdcfwMSeQN/ujR5VayLOJ1BHaK+ssyk0AEzPjC+t1lITgsnccPqFjb6V+LsTp/9Iov4ysfjxLaGJ9RPtkVg==} + engines: {node: '>=18'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@istanbuljs/load-nyc-config@1.1.0: + resolution: {integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==} + engines: {node: '>=8'} + dependencies: + camelcase: 5.3.1 + find-up: 4.1.0 + get-package-type: 0.1.0 + js-yaml: 3.14.1 + resolve-from: 5.0.0 + dev: true + + /@istanbuljs/schema@0.1.3: + resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} + engines: {node: '>=8'} + dev: true + + /@jest/console@29.7.0: + resolution: {integrity: sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/types': 29.6.3 + '@types/node': 22.13.12 + chalk: 4.1.2 + jest-message-util: 29.7.0 + jest-util: 29.7.0 + slash: 3.0.0 + dev: true + + /@jest/core@29.7.0: + resolution: {integrity: sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + dependencies: + '@jest/console': 29.7.0 + '@jest/reporters': 29.7.0 + '@jest/test-result': 29.7.0 + '@jest/transform': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 22.13.12 + ansi-escapes: 4.3.2 + chalk: 4.1.2 + ci-info: 3.9.0 + exit: 0.1.2 + graceful-fs: 4.2.11 + jest-changed-files: 29.7.0 + jest-config: 29.7.0(@types/node@22.13.12) + jest-haste-map: 29.7.0 + jest-message-util: 29.7.0 + jest-regex-util: 29.6.3 + jest-resolve: 29.7.0 + jest-resolve-dependencies: 29.7.0 + jest-runner: 29.7.0 + jest-runtime: 29.7.0 + jest-snapshot: 29.7.0 + jest-util: 29.7.0 + jest-validate: 29.7.0 + jest-watcher: 29.7.0 + micromatch: 4.0.8 + pretty-format: 29.7.0 + slash: 3.0.0 + strip-ansi: 6.0.1 + transitivePeerDependencies: + - babel-plugin-macros + - supports-color + - ts-node + dev: true + + /@jest/environment@29.7.0: + resolution: {integrity: sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/fake-timers': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 22.13.12 + jest-mock: 29.7.0 + dev: true + + /@jest/expect-utils@29.7.0: + resolution: {integrity: sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + jest-get-type: 29.6.3 + dev: true + + /@jest/expect@29.7.0: + resolution: {integrity: sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + expect: 29.7.0 + jest-snapshot: 29.7.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@jest/fake-timers@29.7.0: + resolution: {integrity: sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/types': 29.6.3 + '@sinonjs/fake-timers': 10.3.0 + '@types/node': 22.13.12 + jest-message-util: 29.7.0 + jest-mock: 29.7.0 + jest-util: 29.7.0 + dev: true + + /@jest/globals@29.7.0: + resolution: {integrity: sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/environment': 29.7.0 + '@jest/expect': 29.7.0 + '@jest/types': 29.6.3 + jest-mock: 29.7.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@jest/reporters@29.7.0: + resolution: {integrity: sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + dependencies: + '@bcoe/v8-coverage': 0.2.3 + '@jest/console': 29.7.0 + '@jest/test-result': 29.7.0 + '@jest/transform': 29.7.0 + '@jest/types': 29.6.3 + '@jridgewell/trace-mapping': 0.3.25 + '@types/node': 22.13.12 + chalk: 4.1.2 + collect-v8-coverage: 1.0.2 + exit: 0.1.2 + glob: 7.2.3 + graceful-fs: 4.2.11 + istanbul-lib-coverage: 3.2.2 + istanbul-lib-instrument: 6.0.3 + istanbul-lib-report: 3.0.1 + istanbul-lib-source-maps: 4.0.1 + istanbul-reports: 3.1.7 + jest-message-util: 29.7.0 + jest-util: 29.7.0 + jest-worker: 29.7.0 + slash: 3.0.0 + string-length: 4.0.2 + strip-ansi: 6.0.1 + v8-to-istanbul: 9.3.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@jest/schemas@29.6.3: + resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@sinclair/typebox': 0.27.8 + dev: true + + /@jest/source-map@29.6.3: + resolution: {integrity: sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jridgewell/trace-mapping': 0.3.25 + callsites: 3.1.0 + graceful-fs: 4.2.11 + dev: true + + /@jest/test-result@29.7.0: + resolution: {integrity: sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/console': 29.7.0 + '@jest/types': 29.6.3 + '@types/istanbul-lib-coverage': 2.0.6 + collect-v8-coverage: 1.0.2 + dev: true + + /@jest/test-sequencer@29.7.0: + resolution: {integrity: sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/test-result': 29.7.0 + graceful-fs: 4.2.11 + jest-haste-map: 29.7.0 + slash: 3.0.0 + dev: true + + /@jest/transform@29.7.0: + resolution: {integrity: sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@babel/core': 7.26.10 + '@jest/types': 29.6.3 + '@jridgewell/trace-mapping': 0.3.25 + babel-plugin-istanbul: 6.1.1 + chalk: 4.1.2 + convert-source-map: 2.0.0 + fast-json-stable-stringify: 2.1.0 + graceful-fs: 4.2.11 + jest-haste-map: 29.7.0 + jest-regex-util: 29.6.3 + jest-util: 29.7.0 + micromatch: 4.0.8 + pirates: 4.0.6 + slash: 3.0.0 + write-file-atomic: 4.0.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@jest/types@29.6.3: + resolution: {integrity: sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/schemas': 29.6.3 + '@types/istanbul-lib-coverage': 2.0.6 + '@types/istanbul-reports': 3.0.4 + '@types/node': 22.13.12 + '@types/yargs': 17.0.33 + chalk: 4.1.2 + dev: true + + /@jridgewell/gen-mapping@0.3.8: + resolution: {integrity: sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==} + engines: {node: '>=6.0.0'} + dependencies: + '@jridgewell/set-array': 1.2.1 + '@jridgewell/sourcemap-codec': 1.5.0 + '@jridgewell/trace-mapping': 0.3.25 + dev: true + + /@jridgewell/resolve-uri@3.1.2: + resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} + engines: {node: '>=6.0.0'} + dev: true + + /@jridgewell/set-array@1.2.1: + resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} + engines: {node: '>=6.0.0'} + dev: true + + /@jridgewell/sourcemap-codec@1.5.0: + resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} + dev: true + + /@jridgewell/trace-mapping@0.3.25: + resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} + dependencies: + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.5.0 + dev: true + + /@nodelib/fs.scandir@2.1.5: + resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} + engines: {node: '>= 8'} + dependencies: + '@nodelib/fs.stat': 2.0.5 + run-parallel: 1.2.0 + dev: false + + /@nodelib/fs.stat@2.0.5: + resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} + engines: {node: '>= 8'} + dev: false + + /@nodelib/fs.walk@1.2.8: + resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} + engines: {node: '>= 8'} + dependencies: + '@nodelib/fs.scandir': 2.1.5 + fastq: 1.19.1 + dev: false + + /@rollup/rollup-android-arm-eabi@4.37.0: + resolution: {integrity: sha512-l7StVw6WAa8l3vA1ov80jyetOAEo1FtHvZDbzXDO/02Sq/QVvqlHkYoFwDJPIMj0GKiistsBudfx5tGFnwYWDQ==} + cpu: [arm] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-android-arm64@4.37.0: + resolution: {integrity: sha512-6U3SlVyMxezt8Y+/iEBcbp945uZjJwjZimu76xoG7tO1av9VO691z8PkhzQ85ith2I8R2RddEPeSfcbyPfD4hA==} + cpu: [arm64] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-darwin-arm64@4.37.0: + resolution: {integrity: sha512-+iTQ5YHuGmPt10NTzEyMPbayiNTcOZDWsbxZYR1ZnmLnZxG17ivrPSWFO9j6GalY0+gV3Jtwrrs12DBscxnlYA==} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-darwin-x64@4.37.0: + resolution: {integrity: sha512-m8W2UbxLDcmRKVjgl5J/k4B8d7qX2EcJve3Sut7YGrQoPtCIQGPH5AMzuFvYRWZi0FVS0zEY4c8uttPfX6bwYQ==} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-freebsd-arm64@4.37.0: + resolution: {integrity: sha512-FOMXGmH15OmtQWEt174v9P1JqqhlgYge/bUjIbiVD1nI1NeJ30HYT9SJlZMqdo1uQFyt9cz748F1BHghWaDnVA==} + cpu: [arm64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-freebsd-x64@4.37.0: + resolution: {integrity: sha512-SZMxNttjPKvV14Hjck5t70xS3l63sbVwl98g3FlVVx2YIDmfUIy29jQrsw06ewEYQ8lQSuY9mpAPlmgRD2iSsA==} + cpu: [x64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-arm-gnueabihf@4.37.0: + resolution: {integrity: sha512-hhAALKJPidCwZcj+g+iN+38SIOkhK2a9bqtJR+EtyxrKKSt1ynCBeqrQy31z0oWU6thRZzdx53hVgEbRkuI19w==} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-arm-musleabihf@4.37.0: + resolution: {integrity: sha512-jUb/kmn/Gd8epbHKEqkRAxq5c2EwRt0DqhSGWjPFxLeFvldFdHQs/n8lQ9x85oAeVb6bHcS8irhTJX2FCOd8Ag==} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-arm64-gnu@4.37.0: + resolution: {integrity: sha512-oNrJxcQT9IcbcmKlkF+Yz2tmOxZgG9D9GRq+1OE6XCQwCVwxixYAa38Z8qqPzQvzt1FCfmrHX03E0pWoXm1DqA==} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-arm64-musl@4.37.0: + resolution: {integrity: sha512-pfxLBMls+28Ey2enpX3JvjEjaJMBX5XlPCZNGxj4kdJyHduPBXtxYeb8alo0a7bqOoWZW2uKynhHxF/MWoHaGQ==} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-loongarch64-gnu@4.37.0: + resolution: {integrity: sha512-yCE0NnutTC/7IGUq/PUHmoeZbIwq3KRh02e9SfFh7Vmc1Z7atuJRYWhRME5fKgT8aS20mwi1RyChA23qSyRGpA==} + cpu: [loong64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-powerpc64le-gnu@4.37.0: + resolution: {integrity: sha512-NxcICptHk06E2Lh3a4Pu+2PEdZ6ahNHuK7o6Np9zcWkrBMuv21j10SQDJW3C9Yf/A/P7cutWoC/DptNLVsZ0VQ==} + cpu: [ppc64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-riscv64-gnu@4.37.0: + resolution: {integrity: sha512-PpWwHMPCVpFZLTfLq7EWJWvrmEuLdGn1GMYcm5MV7PaRgwCEYJAwiN94uBuZev0/J/hFIIJCsYw4nLmXA9J7Pw==} + cpu: [riscv64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-riscv64-musl@4.37.0: + resolution: {integrity: sha512-DTNwl6a3CfhGTAOYZ4KtYbdS8b+275LSLqJVJIrPa5/JuIufWWZ/QFvkxp52gpmguN95eujrM68ZG+zVxa8zHA==} + cpu: [riscv64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-s390x-gnu@4.37.0: + resolution: {integrity: sha512-hZDDU5fgWvDdHFuExN1gBOhCuzo/8TMpidfOR+1cPZJflcEzXdCy1LjnklQdW8/Et9sryOPJAKAQRw8Jq7Tg+A==} + cpu: [s390x] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-x64-gnu@4.37.0: + resolution: {integrity: sha512-pKivGpgJM5g8dwj0ywBwe/HeVAUSuVVJhUTa/URXjxvoyTT/AxsLTAbkHkDHG7qQxLoW2s3apEIl26uUe08LVQ==} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-x64-musl@4.37.0: + resolution: {integrity: sha512-E2lPrLKE8sQbY/2bEkVTGDEk4/49UYRVWgj90MY8yPjpnGBQ+Xi1Qnr7b7UIWw1NOggdFQFOLZ8+5CzCiz143w==} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-win32-arm64-msvc@4.37.0: + resolution: {integrity: sha512-Jm7biMazjNzTU4PrQtr7VS8ibeys9Pn29/1bm4ph7CP2kf21950LgN+BaE2mJ1QujnvOc6p54eWWiVvn05SOBg==} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-win32-ia32-msvc@4.37.0: + resolution: {integrity: sha512-e3/1SFm1OjefWICB2Ucstg2dxYDkDTZGDYgwufcbsxTHyqQps1UQf33dFEChBNmeSsTOyrjw2JJq0zbG5GF6RA==} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-win32-x64-msvc@4.37.0: + resolution: {integrity: sha512-LWbXUBwn/bcLx2sSsqy7pK5o+Nr+VCoRoAohfJ5C/aBio9nfJmGQqHAhU6pwxV/RmyTk5AqdySma7uwWGlmeuA==} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@sinclair/typebox@0.27.8: + resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} + dev: true + + /@sinonjs/commons@3.0.1: + resolution: {integrity: sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==} + dependencies: + type-detect: 4.0.8 + dev: true + + /@sinonjs/fake-timers@10.3.0: + resolution: {integrity: sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==} + dependencies: + '@sinonjs/commons': 3.0.1 + dev: true + + /@ts-morph/common@0.26.1: + resolution: {integrity: sha512-Sn28TGl/4cFpcM+jwsH1wLncYq3FtN/BIpem+HOygfBWPT5pAeS5dB4VFVzV8FbnOKHpDLZmvAl4AjPEev5idA==} + dependencies: + fast-glob: 3.3.3 + minimatch: 9.0.5 + path-browserify: 1.0.1 + dev: false + + /@types/babel__core@7.20.5: + resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} + dependencies: + '@babel/parser': 7.26.10 + '@babel/types': 7.26.10 + '@types/babel__generator': 7.6.8 + '@types/babel__template': 7.4.4 + '@types/babel__traverse': 7.20.6 + dev: true + + /@types/babel__generator@7.6.8: + resolution: {integrity: sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==} + dependencies: + '@babel/types': 7.26.10 + dev: true + + /@types/babel__template@7.4.4: + resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==} + dependencies: + '@babel/parser': 7.26.10 + '@babel/types': 7.26.10 + dev: true + + /@types/babel__traverse@7.20.6: + resolution: {integrity: sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==} + dependencies: + '@babel/types': 7.26.10 + dev: true + + /@types/estree@1.0.6: + resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==} + dev: true + + /@types/estree@1.0.7: + resolution: {integrity: sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==} + dev: true + + /@types/graceful-fs@4.1.9: + resolution: {integrity: sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==} + dependencies: + '@types/node': 22.13.12 + dev: true + + /@types/istanbul-lib-coverage@2.0.6: + resolution: {integrity: sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==} + dev: true + + /@types/istanbul-lib-report@3.0.3: + resolution: {integrity: sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==} + dependencies: + '@types/istanbul-lib-coverage': 2.0.6 + dev: true + + /@types/istanbul-reports@3.0.4: + resolution: {integrity: sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==} + dependencies: + '@types/istanbul-lib-report': 3.0.3 + dev: true + + /@types/mustache@4.2.5: + resolution: {integrity: sha512-PLwiVvTBg59tGFL/8VpcGvqOu3L4OuveNvPi0EYbWchRdEVP++yRUXJPFl+CApKEq13017/4Nf7aQ5lTtHUNsA==} + dev: true + + /@types/node@22.13.12: + resolution: {integrity: sha512-ixiWrCSRi33uqBMRuICcKECW7rtgY43TbsHDpM2XK7lXispd48opW+0IXrBVxv9NMhaz/Ue9kyj6r3NTVyXm8A==} + dependencies: + undici-types: 6.20.0 + dev: true + + /@types/stack-utils@2.0.3: + resolution: {integrity: sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==} + dev: true + + /@types/yargs-parser@21.0.3: + resolution: {integrity: sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==} + dev: true + + /@types/yargs@17.0.33: + resolution: {integrity: sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==} + dependencies: + '@types/yargs-parser': 21.0.3 + dev: true + + /@vitest/expect@3.0.9: + resolution: {integrity: sha512-5eCqRItYgIML7NNVgJj6TVCmdzE7ZVgJhruW0ziSQV4V7PvLkDL1bBkBdcTs/VuIz0IxPb5da1IDSqc1TR9eig==} + dependencies: + '@vitest/spy': 3.0.9 + '@vitest/utils': 3.0.9 + chai: 5.2.0 + tinyrainbow: 2.0.0 + dev: true + + /@vitest/mocker@3.0.9(vite@6.2.3): + resolution: {integrity: sha512-ryERPIBOnvevAkTq+L1lD+DTFBRcjueL9lOUfXsLfwP92h4e+Heb+PjiqS3/OURWPtywfafK0kj++yDFjWUmrA==} + peerDependencies: + msw: ^2.4.9 + vite: ^5.0.0 || ^6.0.0 + peerDependenciesMeta: + msw: + optional: true + vite: + optional: true + dependencies: + '@vitest/spy': 3.0.9 + estree-walker: 3.0.3 + magic-string: 0.30.17 + vite: 6.2.3(tsx@4.19.3) + dev: true + + /@vitest/pretty-format@3.0.9: + resolution: {integrity: sha512-OW9F8t2J3AwFEwENg3yMyKWweF7oRJlMyHOMIhO5F3n0+cgQAJZBjNgrF8dLwFTEXl5jUqBLXd9QyyKv8zEcmA==} + dependencies: + tinyrainbow: 2.0.0 + dev: true + + /@vitest/runner@3.0.9: + resolution: {integrity: sha512-NX9oUXgF9HPfJSwl8tUZCMP1oGx2+Sf+ru6d05QjzQz4OwWg0psEzwY6VexP2tTHWdOkhKHUIZH+fS6nA7jfOw==} + dependencies: + '@vitest/utils': 3.0.9 + pathe: 2.0.3 + dev: true + + /@vitest/snapshot@3.0.9: + resolution: {integrity: sha512-AiLUiuZ0FuA+/8i19mTYd+re5jqjEc2jZbgJ2up0VY0Ddyyxg/uUtBDpIFAy4uzKaQxOW8gMgBdAJJ2ydhu39A==} + dependencies: + '@vitest/pretty-format': 3.0.9 + magic-string: 0.30.17 + pathe: 2.0.3 + dev: true + + /@vitest/spy@3.0.9: + resolution: {integrity: sha512-/CcK2UDl0aQ2wtkp3YVWldrpLRNCfVcIOFGlVGKO4R5eajsH393Z1yiXLVQ7vWsj26JOEjeZI0x5sm5P4OGUNQ==} + dependencies: + tinyspy: 3.0.2 + dev: true + + /@vitest/utils@3.0.9: + resolution: {integrity: sha512-ilHM5fHhZ89MCp5aAaM9uhfl1c2JdxVxl3McqsdVyVNN6JffnEen8UMCdRTzOhGXNQGo5GNL9QugHrz727Wnng==} + dependencies: + '@vitest/pretty-format': 3.0.9 + loupe: 3.1.3 + tinyrainbow: 2.0.0 + dev: true + + /ansi-escapes@4.3.2: + resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} + engines: {node: '>=8'} + dependencies: + type-fest: 0.21.3 + dev: true + + /ansi-regex@5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} + dev: true + + /ansi-styles@4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} + dependencies: + color-convert: 2.0.1 + dev: true + + /ansi-styles@5.2.0: + resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} + engines: {node: '>=10'} + dev: true + + /anymatch@3.1.3: + resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} + engines: {node: '>= 8'} + dependencies: + normalize-path: 3.0.0 + picomatch: 2.3.1 + dev: true + + /argparse@1.0.10: + resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} + dependencies: + sprintf-js: 1.0.3 + dev: true + + /assertion-error@2.0.1: + resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} + engines: {node: '>=12'} + dev: true + + /babel-jest@29.7.0(@babel/core@7.26.10): + resolution: {integrity: sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + '@babel/core': ^7.8.0 + dependencies: + '@babel/core': 7.26.10 + '@jest/transform': 29.7.0 + '@types/babel__core': 7.20.5 + babel-plugin-istanbul: 6.1.1 + babel-preset-jest: 29.6.3(@babel/core@7.26.10) + chalk: 4.1.2 + graceful-fs: 4.2.11 + slash: 3.0.0 + transitivePeerDependencies: + - supports-color + dev: true + + /babel-plugin-istanbul@6.1.1: + resolution: {integrity: sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==} + engines: {node: '>=8'} + dependencies: + '@babel/helper-plugin-utils': 7.26.5 + '@istanbuljs/load-nyc-config': 1.1.0 + '@istanbuljs/schema': 0.1.3 + istanbul-lib-instrument: 5.2.1 + test-exclude: 6.0.0 + transitivePeerDependencies: + - supports-color + dev: true + + /babel-plugin-jest-hoist@29.6.3: + resolution: {integrity: sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@babel/template': 7.26.9 + '@babel/types': 7.26.10 + '@types/babel__core': 7.20.5 + '@types/babel__traverse': 7.20.6 + dev: true + + /babel-preset-current-node-syntax@1.1.0(@babel/core@7.26.10): + resolution: {integrity: sha512-ldYss8SbBlWva1bs28q78Ju5Zq1F+8BrqBZZ0VFhLBvhh6lCpC2o3gDJi/5DRLs9FgYZCnmPYIVFU4lRXCkyUw==} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.26.10 + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.26.10) + '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.26.10) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.26.10) + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.26.10) + '@babel/plugin-syntax-import-attributes': 7.26.0(@babel/core@7.26.10) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.26.10) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.26.10) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.26.10) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.26.10) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.26.10) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.26.10) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.26.10) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.26.10) + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.26.10) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.26.10) + dev: true + + /babel-preset-jest@29.6.3(@babel/core@7.26.10): + resolution: {integrity: sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.26.10 + babel-plugin-jest-hoist: 29.6.3 + babel-preset-current-node-syntax: 1.1.0(@babel/core@7.26.10) + dev: true + + /balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + + /brace-expansion@1.1.11: + resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} + dependencies: + balanced-match: 1.0.2 + concat-map: 0.0.1 + dev: true + + /brace-expansion@2.0.1: + resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} + dependencies: + balanced-match: 1.0.2 + dev: false + + /braces@3.0.3: + resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} + engines: {node: '>=8'} + dependencies: + fill-range: 7.1.1 + + /browserslist@4.24.4: + resolution: {integrity: sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + dependencies: + caniuse-lite: 1.0.30001707 + electron-to-chromium: 1.5.123 + node-releases: 2.0.19 + update-browserslist-db: 1.1.3(browserslist@4.24.4) + dev: true + + /bser@2.1.1: + resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==} + dependencies: + node-int64: 0.4.0 + dev: true + + /buffer-from@1.1.2: + resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} + dev: true + + /cac@6.7.14: + resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} + engines: {node: '>=8'} + dev: true + + /callsites@3.1.0: + resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} + engines: {node: '>=6'} + dev: true + + /camelcase@5.3.1: + resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} + engines: {node: '>=6'} + dev: true + + /camelcase@6.3.0: + resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} + engines: {node: '>=10'} + dev: true + + /caniuse-lite@1.0.30001707: + resolution: {integrity: sha512-3qtRjw/HQSMlDWf+X79N206fepf4SOOU6SQLMaq/0KkZLmSjPxAkBOQQ+FxbHKfHmYLZFfdWsO3KA90ceHPSnw==} + dev: true + + /chai@5.2.0: + resolution: {integrity: sha512-mCuXncKXk5iCLhfhwTc0izo0gtEmpz5CtG2y8GiOINBlMVS6v8TMRc5TaLWKS6692m9+dVVfzgeVxR5UxWHTYw==} + engines: {node: '>=12'} + dependencies: + assertion-error: 2.0.1 + check-error: 2.1.1 + deep-eql: 5.0.2 + loupe: 3.1.3 + pathval: 2.0.0 + dev: true + + /chalk@4.1.2: + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} + engines: {node: '>=10'} + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + dev: true + + /char-regex@1.0.2: + resolution: {integrity: sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==} + engines: {node: '>=10'} + dev: true + + /check-error@2.1.1: + resolution: {integrity: sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==} + engines: {node: '>= 16'} + dev: true + + /ci-info@3.9.0: + resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} + engines: {node: '>=8'} + dev: true + + /cjs-module-lexer@1.4.3: + resolution: {integrity: sha512-9z8TZaGM1pfswYeXrUpzPrkx8UnWYdhJclsiYMm6x/w5+nN+8Tf/LnAgfLGQCm59qAOxU8WwHEq2vNwF6i4j+Q==} + dev: true + + /cliui@8.0.1: + resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} + engines: {node: '>=12'} + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 7.0.0 + dev: true + + /co@4.6.0: + resolution: {integrity: sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==} + engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'} + dev: true + + /code-block-writer@13.0.3: + resolution: {integrity: sha512-Oofo0pq3IKnsFtuHqSF7TqBfr71aeyZDVJ0HpmqB7FBM2qEigL0iPONSCZSO9pE9dZTAxANe5XHG9Uy0YMv8cg==} + dev: false + + /collect-v8-coverage@1.0.2: + resolution: {integrity: sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==} + dev: true + + /color-convert@2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} + dependencies: + color-name: 1.1.4 + dev: true + + /color-name@1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + dev: true + + /concat-map@0.0.1: + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + dev: true + + /convert-source-map@2.0.0: + resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} + dev: true + + /create-jest@29.7.0: + resolution: {integrity: sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + hasBin: true + dependencies: + '@jest/types': 29.6.3 + chalk: 4.1.2 + exit: 0.1.2 + graceful-fs: 4.2.11 + jest-config: 29.7.0(@types/node@22.13.12) + jest-util: 29.7.0 + prompts: 2.4.2 + transitivePeerDependencies: + - '@types/node' + - babel-plugin-macros + - supports-color + - ts-node + dev: true + + /cross-spawn@7.0.6: + resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} + engines: {node: '>= 8'} + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 + dev: true + + /debug@4.4.0: + resolution: {integrity: sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.1.3 + dev: true + + /dedent@1.5.3: + resolution: {integrity: sha512-NHQtfOOW68WD8lgypbLA5oT+Bt0xXJhiYvoR6SmmNXZfpzOGXwdKWmcwG8N7PwVVWV3eF/68nmD9BaJSsTBhyQ==} + peerDependencies: + babel-plugin-macros: ^3.1.0 + peerDependenciesMeta: + babel-plugin-macros: + optional: true + dev: true + + /deep-eql@5.0.2: + resolution: {integrity: sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==} + engines: {node: '>=6'} + dev: true + + /deepmerge@4.3.1: + resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} + engines: {node: '>=0.10.0'} + dev: true + + /detect-newline@3.1.0: + resolution: {integrity: sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==} + engines: {node: '>=8'} + dev: true + + /diff-sequences@29.6.3: + resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dev: true + + /electron-to-chromium@1.5.123: + resolution: {integrity: sha512-refir3NlutEZqlKaBLK0tzlVLe5P2wDKS7UQt/3SpibizgsRAPOsqQC3ffw1nlv3ze5gjRQZYHoPymgVZkplFA==} + dev: true + + /emittery@0.13.1: + resolution: {integrity: sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==} + engines: {node: '>=12'} + dev: true + + /emoji-regex@8.0.0: + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + dev: true + + /error-ex@1.3.2: + resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} + dependencies: + is-arrayish: 0.2.1 + dev: true + + /es-module-lexer@1.6.0: + resolution: {integrity: sha512-qqnD1yMU6tk/jnaMosogGySTZP8YtUgAffA9nMN+E/rjxcfRQ6IEk7IiozUjgxKoFHBGjTLnrHB/YC45r/59EQ==} + dev: true + + /esbuild@0.25.1: + resolution: {integrity: sha512-BGO5LtrGC7vxnqucAe/rmvKdJllfGaYWdyABvyMoXQlfYMb2bbRuReWR5tEGE//4LcNJj9XrkovTqNYRFZHAMQ==} + engines: {node: '>=18'} + hasBin: true + requiresBuild: true + optionalDependencies: + '@esbuild/aix-ppc64': 0.25.1 + '@esbuild/android-arm': 0.25.1 + '@esbuild/android-arm64': 0.25.1 + '@esbuild/android-x64': 0.25.1 + '@esbuild/darwin-arm64': 0.25.1 + '@esbuild/darwin-x64': 0.25.1 + '@esbuild/freebsd-arm64': 0.25.1 + '@esbuild/freebsd-x64': 0.25.1 + '@esbuild/linux-arm': 0.25.1 + '@esbuild/linux-arm64': 0.25.1 + '@esbuild/linux-ia32': 0.25.1 + '@esbuild/linux-loong64': 0.25.1 + '@esbuild/linux-mips64el': 0.25.1 + '@esbuild/linux-ppc64': 0.25.1 + '@esbuild/linux-riscv64': 0.25.1 + '@esbuild/linux-s390x': 0.25.1 + '@esbuild/linux-x64': 0.25.1 + '@esbuild/netbsd-arm64': 0.25.1 + '@esbuild/netbsd-x64': 0.25.1 + '@esbuild/openbsd-arm64': 0.25.1 + '@esbuild/openbsd-x64': 0.25.1 + '@esbuild/sunos-x64': 0.25.1 + '@esbuild/win32-arm64': 0.25.1 + '@esbuild/win32-ia32': 0.25.1 + '@esbuild/win32-x64': 0.25.1 + dev: true + + /escalade@3.2.0: + resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} + engines: {node: '>=6'} + dev: true + + /escape-string-regexp@2.0.0: + resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==} + engines: {node: '>=8'} + dev: true + + /esprima@4.0.1: + resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} + engines: {node: '>=4'} + hasBin: true + dev: true + + /estree-walker@3.0.3: + resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} + dependencies: + '@types/estree': 1.0.7 + dev: true + + /execa@5.1.1: + resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} + engines: {node: '>=10'} + dependencies: + cross-spawn: 7.0.6 + get-stream: 6.0.1 + human-signals: 2.1.0 + is-stream: 2.0.1 + merge-stream: 2.0.0 + npm-run-path: 4.0.1 + onetime: 5.1.2 + signal-exit: 3.0.7 + strip-final-newline: 2.0.0 + dev: true + + /exit@0.1.2: + resolution: {integrity: sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==} + engines: {node: '>= 0.8.0'} + dev: true + + /expect-type@1.2.0: + resolution: {integrity: sha512-80F22aiJ3GLyVnS/B3HzgR6RelZVumzj9jkL0Rhz4h0xYbNW9PjlQz5h3J/SShErbXBc295vseR4/MIbVmUbeA==} + engines: {node: '>=12.0.0'} + dev: true + + /expect@29.7.0: + resolution: {integrity: sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/expect-utils': 29.7.0 + jest-get-type: 29.6.3 + jest-matcher-utils: 29.7.0 + jest-message-util: 29.7.0 + jest-util: 29.7.0 + dev: true + + /fast-glob@3.3.3: + resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==} + engines: {node: '>=8.6.0'} + dependencies: + '@nodelib/fs.stat': 2.0.5 + '@nodelib/fs.walk': 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.8 + dev: false + + /fast-json-stable-stringify@2.1.0: + resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} + dev: true + + /fastq@1.19.1: + resolution: {integrity: sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==} + dependencies: + reusify: 1.1.0 + dev: false + + /fb-watchman@2.0.2: + resolution: {integrity: sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==} + dependencies: + bser: 2.1.1 + dev: true + + /fill-range@7.1.1: + resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} + engines: {node: '>=8'} + dependencies: + to-regex-range: 5.0.1 + + /find-up@4.1.0: + resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} + engines: {node: '>=8'} + dependencies: + locate-path: 5.0.0 + path-exists: 4.0.0 + dev: true + + /fs.realpath@1.0.0: + resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + dev: true + + /fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /function-bind@1.1.2: + resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + dev: true + + /gensync@1.0.0-beta.2: + resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} + engines: {node: '>=6.9.0'} + dev: true + + /get-caller-file@2.0.5: + resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} + engines: {node: 6.* || 8.* || >= 10.*} + dev: true + + /get-package-type@0.1.0: + resolution: {integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==} + engines: {node: '>=8.0.0'} + dev: true + + /get-stream@6.0.1: + resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} + engines: {node: '>=10'} + dev: true + + /get-tsconfig@4.10.0: + resolution: {integrity: sha512-kGzZ3LWWQcGIAmg6iWvXn0ei6WDtV26wzHRMwDSzmAbcXrTEXxHy6IehI6/4eT6VRKyMP1eF1VqwrVUmE/LR7A==} + dependencies: + resolve-pkg-maps: 1.0.0 + dev: true + + /glob-parent@5.1.2: + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} + engines: {node: '>= 6'} + dependencies: + is-glob: 4.0.3 + dev: false + + /glob@7.2.3: + resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} + deprecated: Glob versions prior to v9 are no longer supported + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + dev: true + + /globals@11.12.0: + resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} + engines: {node: '>=4'} + dev: true + + /graceful-fs@4.2.11: + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + dev: true + + /has-flag@4.0.0: + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + engines: {node: '>=8'} + dev: true + + /hasown@2.0.2: + resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} + engines: {node: '>= 0.4'} + dependencies: + function-bind: 1.1.2 + dev: true + + /html-escaper@2.0.2: + resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} + dev: true + + /human-signals@2.1.0: + resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} + engines: {node: '>=10.17.0'} + dev: true + + /import-local@3.2.0: + resolution: {integrity: sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==} + engines: {node: '>=8'} + hasBin: true + dependencies: + pkg-dir: 4.2.0 + resolve-cwd: 3.0.0 + dev: true + + /imurmurhash@0.1.4: + resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} + engines: {node: '>=0.8.19'} + dev: true + + /inflight@1.0.6: + resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} + deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. + dependencies: + once: 1.4.0 + wrappy: 1.0.2 + dev: true + + /inherits@2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + dev: true + + /is-arrayish@0.2.1: + resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} + dev: true + + /is-core-module@2.16.1: + resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==} + engines: {node: '>= 0.4'} + dependencies: + hasown: 2.0.2 + dev: true + + /is-extglob@2.1.1: + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} + dev: false + + /is-fullwidth-code-point@3.0.0: + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} + engines: {node: '>=8'} + dev: true + + /is-generator-fn@2.1.0: + resolution: {integrity: sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==} + engines: {node: '>=6'} + dev: true + + /is-glob@4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} + dependencies: + is-extglob: 2.1.1 + dev: false + + /is-number@7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} + + /is-stream@2.0.1: + resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} + engines: {node: '>=8'} + dev: true + + /isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + dev: true + + /istanbul-lib-coverage@3.2.2: + resolution: {integrity: sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==} + engines: {node: '>=8'} + dev: true + + /istanbul-lib-instrument@5.2.1: + resolution: {integrity: sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==} + engines: {node: '>=8'} + dependencies: + '@babel/core': 7.26.10 + '@babel/parser': 7.26.10 + '@istanbuljs/schema': 0.1.3 + istanbul-lib-coverage: 3.2.2 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + dev: true + + /istanbul-lib-instrument@6.0.3: + resolution: {integrity: sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q==} + engines: {node: '>=10'} + dependencies: + '@babel/core': 7.26.10 + '@babel/parser': 7.26.10 + '@istanbuljs/schema': 0.1.3 + istanbul-lib-coverage: 3.2.2 + semver: 7.7.1 + transitivePeerDependencies: + - supports-color + dev: true + + /istanbul-lib-report@3.0.1: + resolution: {integrity: sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==} + engines: {node: '>=10'} + dependencies: + istanbul-lib-coverage: 3.2.2 + make-dir: 4.0.0 + supports-color: 7.2.0 + dev: true + + /istanbul-lib-source-maps@4.0.1: + resolution: {integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==} + engines: {node: '>=10'} + dependencies: + debug: 4.4.0 + istanbul-lib-coverage: 3.2.2 + source-map: 0.6.1 + transitivePeerDependencies: + - supports-color + dev: true + + /istanbul-reports@3.1.7: + resolution: {integrity: sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==} + engines: {node: '>=8'} + dependencies: + html-escaper: 2.0.2 + istanbul-lib-report: 3.0.1 + dev: true + + /jest-changed-files@29.7.0: + resolution: {integrity: sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + execa: 5.1.1 + jest-util: 29.7.0 + p-limit: 3.1.0 + dev: true + + /jest-circus@29.7.0: + resolution: {integrity: sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/environment': 29.7.0 + '@jest/expect': 29.7.0 + '@jest/test-result': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 22.13.12 + chalk: 4.1.2 + co: 4.6.0 + dedent: 1.5.3 + is-generator-fn: 2.1.0 + jest-each: 29.7.0 + jest-matcher-utils: 29.7.0 + jest-message-util: 29.7.0 + jest-runtime: 29.7.0 + jest-snapshot: 29.7.0 + jest-util: 29.7.0 + p-limit: 3.1.0 + pretty-format: 29.7.0 + pure-rand: 6.1.0 + slash: 3.0.0 + stack-utils: 2.0.6 + transitivePeerDependencies: + - babel-plugin-macros + - supports-color + dev: true + + /jest-cli@29.7.0: + resolution: {integrity: sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + hasBin: true + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + dependencies: + '@jest/core': 29.7.0 + '@jest/test-result': 29.7.0 + '@jest/types': 29.6.3 + chalk: 4.1.2 + create-jest: 29.7.0 + exit: 0.1.2 + import-local: 3.2.0 + jest-config: 29.7.0(@types/node@22.13.12) + jest-util: 29.7.0 + jest-validate: 29.7.0 + yargs: 17.7.2 + transitivePeerDependencies: + - '@types/node' + - babel-plugin-macros + - supports-color + - ts-node + dev: true + + /jest-config@29.7.0(@types/node@22.13.12): + resolution: {integrity: sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + '@types/node': '*' + ts-node: '>=9.0.0' + peerDependenciesMeta: + '@types/node': + optional: true + ts-node: + optional: true + dependencies: + '@babel/core': 7.26.10 + '@jest/test-sequencer': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 22.13.12 + babel-jest: 29.7.0(@babel/core@7.26.10) + chalk: 4.1.2 + ci-info: 3.9.0 + deepmerge: 4.3.1 + glob: 7.2.3 + graceful-fs: 4.2.11 + jest-circus: 29.7.0 + jest-environment-node: 29.7.0 + jest-get-type: 29.6.3 + jest-regex-util: 29.6.3 + jest-resolve: 29.7.0 + jest-runner: 29.7.0 + jest-util: 29.7.0 + jest-validate: 29.7.0 + micromatch: 4.0.8 + parse-json: 5.2.0 + pretty-format: 29.7.0 + slash: 3.0.0 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - babel-plugin-macros + - supports-color + dev: true + + /jest-diff@29.7.0: + resolution: {integrity: sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + chalk: 4.1.2 + diff-sequences: 29.6.3 + jest-get-type: 29.6.3 + pretty-format: 29.7.0 + dev: true + + /jest-docblock@29.7.0: + resolution: {integrity: sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + detect-newline: 3.1.0 + dev: true + + /jest-each@29.7.0: + resolution: {integrity: sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/types': 29.6.3 + chalk: 4.1.2 + jest-get-type: 29.6.3 + jest-util: 29.7.0 + pretty-format: 29.7.0 + dev: true + + /jest-environment-node@29.7.0: + resolution: {integrity: sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/environment': 29.7.0 + '@jest/fake-timers': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 22.13.12 + jest-mock: 29.7.0 + jest-util: 29.7.0 + dev: true + + /jest-get-type@29.6.3: + resolution: {integrity: sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dev: true + + /jest-haste-map@29.7.0: + resolution: {integrity: sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/types': 29.6.3 + '@types/graceful-fs': 4.1.9 + '@types/node': 22.13.12 + anymatch: 3.1.3 + fb-watchman: 2.0.2 + graceful-fs: 4.2.11 + jest-regex-util: 29.6.3 + jest-util: 29.7.0 + jest-worker: 29.7.0 + micromatch: 4.0.8 + walker: 1.0.8 + optionalDependencies: + fsevents: 2.3.3 + dev: true + + /jest-leak-detector@29.7.0: + resolution: {integrity: sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + jest-get-type: 29.6.3 + pretty-format: 29.7.0 + dev: true + + /jest-matcher-utils@29.7.0: + resolution: {integrity: sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + chalk: 4.1.2 + jest-diff: 29.7.0 + jest-get-type: 29.6.3 + pretty-format: 29.7.0 + dev: true + + /jest-message-util@29.7.0: + resolution: {integrity: sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@babel/code-frame': 7.26.2 + '@jest/types': 29.6.3 + '@types/stack-utils': 2.0.3 + chalk: 4.1.2 + graceful-fs: 4.2.11 + micromatch: 4.0.8 + pretty-format: 29.7.0 + slash: 3.0.0 + stack-utils: 2.0.6 + dev: true + + /jest-mock@29.7.0: + resolution: {integrity: sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/types': 29.6.3 + '@types/node': 22.13.12 + jest-util: 29.7.0 + dev: true + + /jest-pnp-resolver@1.2.3(jest-resolve@29.7.0): + resolution: {integrity: sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==} + engines: {node: '>=6'} + peerDependencies: + jest-resolve: '*' + peerDependenciesMeta: + jest-resolve: + optional: true + dependencies: + jest-resolve: 29.7.0 + dev: true + + /jest-regex-util@29.6.3: + resolution: {integrity: sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dev: true + + /jest-resolve-dependencies@29.7.0: + resolution: {integrity: sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + jest-regex-util: 29.6.3 + jest-snapshot: 29.7.0 + transitivePeerDependencies: + - supports-color + dev: true + + /jest-resolve@29.7.0: + resolution: {integrity: sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + chalk: 4.1.2 + graceful-fs: 4.2.11 + jest-haste-map: 29.7.0 + jest-pnp-resolver: 1.2.3(jest-resolve@29.7.0) + jest-util: 29.7.0 + jest-validate: 29.7.0 + resolve: 1.22.10 + resolve.exports: 2.0.3 + slash: 3.0.0 + dev: true + + /jest-runner@29.7.0: + resolution: {integrity: sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/console': 29.7.0 + '@jest/environment': 29.7.0 + '@jest/test-result': 29.7.0 + '@jest/transform': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 22.13.12 + chalk: 4.1.2 + emittery: 0.13.1 + graceful-fs: 4.2.11 + jest-docblock: 29.7.0 + jest-environment-node: 29.7.0 + jest-haste-map: 29.7.0 + jest-leak-detector: 29.7.0 + jest-message-util: 29.7.0 + jest-resolve: 29.7.0 + jest-runtime: 29.7.0 + jest-util: 29.7.0 + jest-watcher: 29.7.0 + jest-worker: 29.7.0 + p-limit: 3.1.0 + source-map-support: 0.5.13 + transitivePeerDependencies: + - supports-color + dev: true + + /jest-runtime@29.7.0: + resolution: {integrity: sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/environment': 29.7.0 + '@jest/fake-timers': 29.7.0 + '@jest/globals': 29.7.0 + '@jest/source-map': 29.6.3 + '@jest/test-result': 29.7.0 + '@jest/transform': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 22.13.12 + chalk: 4.1.2 + cjs-module-lexer: 1.4.3 + collect-v8-coverage: 1.0.2 + glob: 7.2.3 + graceful-fs: 4.2.11 + jest-haste-map: 29.7.0 + jest-message-util: 29.7.0 + jest-mock: 29.7.0 + jest-regex-util: 29.6.3 + jest-resolve: 29.7.0 + jest-snapshot: 29.7.0 + jest-util: 29.7.0 + slash: 3.0.0 + strip-bom: 4.0.0 + transitivePeerDependencies: + - supports-color + dev: true + + /jest-snapshot@29.7.0: + resolution: {integrity: sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@babel/core': 7.26.10 + '@babel/generator': 7.26.10 + '@babel/plugin-syntax-jsx': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-syntax-typescript': 7.25.9(@babel/core@7.26.10) + '@babel/types': 7.26.10 + '@jest/expect-utils': 29.7.0 + '@jest/transform': 29.7.0 + '@jest/types': 29.6.3 + babel-preset-current-node-syntax: 1.1.0(@babel/core@7.26.10) + chalk: 4.1.2 + expect: 29.7.0 + graceful-fs: 4.2.11 + jest-diff: 29.7.0 + jest-get-type: 29.6.3 + jest-matcher-utils: 29.7.0 + jest-message-util: 29.7.0 + jest-util: 29.7.0 + natural-compare: 1.4.0 + pretty-format: 29.7.0 + semver: 7.7.1 + transitivePeerDependencies: + - supports-color + dev: true + + /jest-util@29.7.0: + resolution: {integrity: sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/types': 29.6.3 + '@types/node': 22.13.12 + chalk: 4.1.2 + ci-info: 3.9.0 + graceful-fs: 4.2.11 + picomatch: 2.3.1 + dev: true + + /jest-validate@29.7.0: + resolution: {integrity: sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/types': 29.6.3 + camelcase: 6.3.0 + chalk: 4.1.2 + jest-get-type: 29.6.3 + leven: 3.1.0 + pretty-format: 29.7.0 + dev: true + + /jest-watcher@29.7.0: + resolution: {integrity: sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/test-result': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 22.13.12 + ansi-escapes: 4.3.2 + chalk: 4.1.2 + emittery: 0.13.1 + jest-util: 29.7.0 + string-length: 4.0.2 + dev: true + + /jest-worker@29.7.0: + resolution: {integrity: sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@types/node': 22.13.12 + jest-util: 29.7.0 + merge-stream: 2.0.0 + supports-color: 8.1.1 + dev: true + + /jest@29.7.0: + resolution: {integrity: sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + hasBin: true + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + dependencies: + '@jest/core': 29.7.0 + '@jest/types': 29.6.3 + import-local: 3.2.0 + jest-cli: 29.7.0 + transitivePeerDependencies: + - '@types/node' + - babel-plugin-macros + - supports-color + - ts-node + dev: true + + /js-tokens@4.0.0: + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + dev: true + + /js-yaml@3.14.1: + resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} + hasBin: true + dependencies: + argparse: 1.0.10 + esprima: 4.0.1 + dev: true + + /jsesc@3.1.0: + resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==} + engines: {node: '>=6'} + hasBin: true + dev: true + + /json-parse-even-better-errors@2.3.1: + resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} + dev: true + + /json5@2.2.3: + resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} + engines: {node: '>=6'} + hasBin: true + dev: true + + /kleur@3.0.3: + resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} + engines: {node: '>=6'} + dev: true + + /leven@3.1.0: + resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==} + engines: {node: '>=6'} + dev: true + + /lines-and-columns@1.2.4: + resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + dev: true + + /locate-path@5.0.0: + resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} + engines: {node: '>=8'} + dependencies: + p-locate: 4.1.0 + dev: true + + /loupe@3.1.3: + resolution: {integrity: sha512-kkIp7XSkP78ZxJEsSxW3712C6teJVoeHHwgo9zJ380de7IYyJ2ISlxojcH2pC5OFLewESmnRi/+XCDIEEVyoug==} + dev: true + + /lru-cache@5.1.1: + resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} + dependencies: + yallist: 3.1.1 + dev: true + + /magic-string@0.30.17: + resolution: {integrity: sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==} + dependencies: + '@jridgewell/sourcemap-codec': 1.5.0 + dev: true + + /make-dir@4.0.0: + resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==} + engines: {node: '>=10'} + dependencies: + semver: 7.7.1 + dev: true + + /makeerror@1.0.12: + resolution: {integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==} + dependencies: + tmpl: 1.0.5 + dev: true + + /merge-stream@2.0.0: + resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} + dev: true + + /merge2@1.4.1: + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} + engines: {node: '>= 8'} + dev: false + + /micromatch@4.0.8: + resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} + engines: {node: '>=8.6'} + dependencies: + braces: 3.0.3 + picomatch: 2.3.1 + + /mimic-fn@2.1.0: + resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} + engines: {node: '>=6'} + dev: true + + /minimatch@3.1.2: + resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + dependencies: + brace-expansion: 1.1.11 + dev: true + + /minimatch@9.0.5: + resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} + engines: {node: '>=16 || 14 >=14.17'} + dependencies: + brace-expansion: 2.0.1 + dev: false + + /ms@2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + dev: true + + /mustache@4.2.0: + resolution: {integrity: sha512-71ippSywq5Yb7/tVYyGbkBggbU8H3u5Rz56fH60jGFgr8uHwxs+aSKeqmluIVzM0m0kB7xQjKS6qPfd0b2ZoqQ==} + hasBin: true + dev: false + + /nanoid@3.3.11: + resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + dev: true + + /natural-compare@1.4.0: + resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + dev: true + + /node-int64@0.4.0: + resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==} + dev: true + + /node-releases@2.0.19: + resolution: {integrity: sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==} + dev: true + + /normalize-path@3.0.0: + resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} + engines: {node: '>=0.10.0'} + dev: true + + /npm-run-path@4.0.1: + resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} + engines: {node: '>=8'} + dependencies: + path-key: 3.1.1 + dev: true + + /once@1.4.0: + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + dependencies: + wrappy: 1.0.2 + dev: true + + /onetime@5.1.2: + resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} + engines: {node: '>=6'} + dependencies: + mimic-fn: 2.1.0 + dev: true + + /p-limit@2.3.0: + resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} + engines: {node: '>=6'} + dependencies: + p-try: 2.2.0 + dev: true + + /p-limit@3.1.0: + resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} + engines: {node: '>=10'} + dependencies: + yocto-queue: 0.1.0 + dev: true + + /p-locate@4.1.0: + resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} + engines: {node: '>=8'} + dependencies: + p-limit: 2.3.0 + dev: true + + /p-try@2.2.0: + resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} + engines: {node: '>=6'} + dev: true + + /parse-json@5.2.0: + resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} + engines: {node: '>=8'} + dependencies: + '@babel/code-frame': 7.26.2 + error-ex: 1.3.2 + json-parse-even-better-errors: 2.3.1 + lines-and-columns: 1.2.4 + dev: true + + /path-browserify@1.0.1: + resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==} + dev: false + + /path-exists@4.0.0: + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} + engines: {node: '>=8'} + dev: true + + /path-is-absolute@1.0.1: + resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} + engines: {node: '>=0.10.0'} + dev: true + + /path-key@3.1.1: + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} + dev: true + + /path-parse@1.0.7: + resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + dev: true + + /pathe@2.0.3: + resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==} + dev: true + + /pathval@2.0.0: + resolution: {integrity: sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==} + engines: {node: '>= 14.16'} + dev: true + + /picocolors@1.1.1: + resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} + dev: true + + /picomatch@2.3.1: + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + engines: {node: '>=8.6'} + + /pirates@4.0.6: + resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} + engines: {node: '>= 6'} + dev: true + + /pkg-dir@4.2.0: + resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} + engines: {node: '>=8'} + dependencies: + find-up: 4.1.0 + dev: true + + /postcss@8.5.3: + resolution: {integrity: sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==} + engines: {node: ^10 || ^12 || >=14} + dependencies: + nanoid: 3.3.11 + picocolors: 1.1.1 + source-map-js: 1.2.1 + dev: true + + /pretty-format@29.7.0: + resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/schemas': 29.6.3 + ansi-styles: 5.2.0 + react-is: 18.3.1 + dev: true + + /prompts@2.4.2: + resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} + engines: {node: '>= 6'} + dependencies: + kleur: 3.0.3 + sisteransi: 1.0.5 + dev: true + + /pure-rand@6.1.0: + resolution: {integrity: sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA==} + dev: true + + /queue-microtask@1.2.3: + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + dev: false + + /react-is@18.3.1: + resolution: {integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==} + dev: true + + /require-directory@2.1.1: + resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} + engines: {node: '>=0.10.0'} + dev: true + + /resolve-cwd@3.0.0: + resolution: {integrity: sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==} + engines: {node: '>=8'} + dependencies: + resolve-from: 5.0.0 + dev: true + + /resolve-from@5.0.0: + resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} + engines: {node: '>=8'} + dev: true + + /resolve-pkg-maps@1.0.0: + resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} + dev: true + + /resolve.exports@2.0.3: + resolution: {integrity: sha512-OcXjMsGdhL4XnbShKpAcSqPMzQoYkYyhbEaeSko47MjRP9NfEQMhZkXL1DoFlt9LWQn4YttrdnV6X2OiyzBi+A==} + engines: {node: '>=10'} + dev: true + + /resolve@1.22.10: + resolution: {integrity: sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==} + engines: {node: '>= 0.4'} + hasBin: true + dependencies: + is-core-module: 2.16.1 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + dev: true + + /reusify@1.1.0: + resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==} + engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + dev: false + + /rollup@4.37.0: + resolution: {integrity: sha512-iAtQy/L4QFU+rTJ1YUjXqJOJzuwEghqWzCEYD2FEghT7Gsy1VdABntrO4CLopA5IkflTyqNiLNwPcOJ3S7UKLg==} + engines: {node: '>=18.0.0', npm: '>=8.0.0'} + hasBin: true + dependencies: + '@types/estree': 1.0.6 + optionalDependencies: + '@rollup/rollup-android-arm-eabi': 4.37.0 + '@rollup/rollup-android-arm64': 4.37.0 + '@rollup/rollup-darwin-arm64': 4.37.0 + '@rollup/rollup-darwin-x64': 4.37.0 + '@rollup/rollup-freebsd-arm64': 4.37.0 + '@rollup/rollup-freebsd-x64': 4.37.0 + '@rollup/rollup-linux-arm-gnueabihf': 4.37.0 + '@rollup/rollup-linux-arm-musleabihf': 4.37.0 + '@rollup/rollup-linux-arm64-gnu': 4.37.0 + '@rollup/rollup-linux-arm64-musl': 4.37.0 + '@rollup/rollup-linux-loongarch64-gnu': 4.37.0 + '@rollup/rollup-linux-powerpc64le-gnu': 4.37.0 + '@rollup/rollup-linux-riscv64-gnu': 4.37.0 + '@rollup/rollup-linux-riscv64-musl': 4.37.0 + '@rollup/rollup-linux-s390x-gnu': 4.37.0 + '@rollup/rollup-linux-x64-gnu': 4.37.0 + '@rollup/rollup-linux-x64-musl': 4.37.0 + '@rollup/rollup-win32-arm64-msvc': 4.37.0 + '@rollup/rollup-win32-ia32-msvc': 4.37.0 + '@rollup/rollup-win32-x64-msvc': 4.37.0 + fsevents: 2.3.3 + dev: true + + /run-parallel@1.2.0: + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + dependencies: + queue-microtask: 1.2.3 + dev: false + + /semver@6.3.1: + resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} + hasBin: true + dev: true + + /semver@7.7.1: + resolution: {integrity: sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==} + engines: {node: '>=10'} + hasBin: true + dev: true + + /shebang-command@2.0.0: + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} + dependencies: + shebang-regex: 3.0.0 + dev: true + + /shebang-regex@3.0.0: + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} + dev: true + + /siginfo@2.0.0: + resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} + dev: true + + /signal-exit@3.0.7: + resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} + dev: true + + /sisteransi@1.0.5: + resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} + dev: true + + /slash@3.0.0: + resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} + engines: {node: '>=8'} + dev: true + + /source-map-js@1.2.1: + resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} + engines: {node: '>=0.10.0'} + dev: true + + /source-map-support@0.5.13: + resolution: {integrity: sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==} + dependencies: + buffer-from: 1.1.2 + source-map: 0.6.1 + dev: true + + /source-map@0.6.1: + resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} + engines: {node: '>=0.10.0'} + dev: true + + /sprintf-js@1.0.3: + resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} + dev: true + + /stack-utils@2.0.6: + resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==} + engines: {node: '>=10'} + dependencies: + escape-string-regexp: 2.0.0 + dev: true + + /stackback@0.0.2: + resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} + dev: true + + /std-env@3.8.1: + resolution: {integrity: sha512-vj5lIj3Mwf9D79hBkltk5qmkFI+biIKWS2IBxEyEU3AX1tUf7AoL8nSazCOiiqQsGKIq01SClsKEzweu34uwvA==} + dev: true + + /string-length@4.0.2: + resolution: {integrity: sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==} + engines: {node: '>=10'} + dependencies: + char-regex: 1.0.2 + strip-ansi: 6.0.1 + dev: true + + /string-width@4.2.3: + resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} + engines: {node: '>=8'} + dependencies: + emoji-regex: 8.0.0 + is-fullwidth-code-point: 3.0.0 + strip-ansi: 6.0.1 + dev: true + + /strip-ansi@6.0.1: + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} + dependencies: + ansi-regex: 5.0.1 + dev: true + + /strip-bom@4.0.0: + resolution: {integrity: sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==} + engines: {node: '>=8'} + dev: true + + /strip-final-newline@2.0.0: + resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} + engines: {node: '>=6'} + dev: true + + /strip-json-comments@3.1.1: + resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} + engines: {node: '>=8'} + dev: true + + /supports-color@7.2.0: + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} + engines: {node: '>=8'} + dependencies: + has-flag: 4.0.0 + dev: true + + /supports-color@8.1.1: + resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} + engines: {node: '>=10'} + dependencies: + has-flag: 4.0.0 + dev: true + + /supports-preserve-symlinks-flag@1.0.0: + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} + engines: {node: '>= 0.4'} + dev: true + + /test-exclude@6.0.0: + resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} + engines: {node: '>=8'} + dependencies: + '@istanbuljs/schema': 0.1.3 + glob: 7.2.3 + minimatch: 3.1.2 + dev: true + + /tinybench@2.9.0: + resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==} + dev: true + + /tinyexec@0.3.2: + resolution: {integrity: sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==} + dev: true + + /tinypool@1.0.2: + resolution: {integrity: sha512-al6n+QEANGFOMf/dmUMsuS5/r9B06uwlyNjZZql/zv8J7ybHCgoihBNORZCY2mzUuAnomQa2JdhyHKzZxPCrFA==} + engines: {node: ^18.0.0 || >=20.0.0} + dev: true + + /tinyrainbow@2.0.0: + resolution: {integrity: sha512-op4nsTR47R6p0vMUUoYl/a+ljLFVtlfaXkLQmqfLR1qHma1h/ysYk4hEXZ880bf2CYgTskvTa/e196Vd5dDQXw==} + engines: {node: '>=14.0.0'} + dev: true + + /tinyspy@3.0.2: + resolution: {integrity: sha512-n1cw8k1k0x4pgA2+9XrOkFydTerNcJ1zWCO5Nn9scWHTD+5tp8dghT2x1uduQePZTZgd3Tupf+x9BxJjeJi77Q==} + engines: {node: '>=14.0.0'} + dev: true + + /tmpl@1.0.5: + resolution: {integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==} + dev: true + + /to-regex-range@5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} + dependencies: + is-number: 7.0.0 + + /ts-morph@25.0.1: + resolution: {integrity: sha512-QJEiTdnz1YjrB3JFhd626gX4rKHDLSjSVMvGGG4v7ONc3RBwa0Eei98G9AT9uNFDMtV54JyuXsFeC+OH0n6bXQ==} + dependencies: + '@ts-morph/common': 0.26.1 + code-block-writer: 13.0.3 + dev: false + + /tsx@4.19.3: + resolution: {integrity: sha512-4H8vUNGNjQ4V2EOoGw005+c+dGuPSnhpPBPHBtsZdGZBk/iJb4kguGlPWaZTZ3q5nMtFOEsY0nRDlh9PJyd6SQ==} + engines: {node: '>=18.0.0'} + hasBin: true + dependencies: + esbuild: 0.25.1 + get-tsconfig: 4.10.0 + optionalDependencies: + fsevents: 2.3.3 + dev: true + + /type-detect@4.0.8: + resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} + engines: {node: '>=4'} + dev: true + + /type-fest@0.21.3: + resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} + engines: {node: '>=10'} + dev: true + + /undici-types@6.20.0: + resolution: {integrity: sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==} + dev: true + + /update-browserslist-db@1.1.3(browserslist@4.24.4): + resolution: {integrity: sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + dependencies: + browserslist: 4.24.4 + escalade: 3.2.0 + picocolors: 1.1.1 + dev: true + + /v8-to-istanbul@9.3.0: + resolution: {integrity: sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==} + engines: {node: '>=10.12.0'} + dependencies: + '@jridgewell/trace-mapping': 0.3.25 + '@types/istanbul-lib-coverage': 2.0.6 + convert-source-map: 2.0.0 + dev: true + + /vite-node@3.0.9(tsx@4.19.3): + resolution: {integrity: sha512-w3Gdx7jDcuT9cNn9jExXgOyKmf5UOTb6WMHz8LGAm54eS1Elf5OuBhCxl6zJxGhEeIkgsE1WbHuoL0mj/UXqXg==} + engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} + hasBin: true + dependencies: + cac: 6.7.14 + debug: 4.4.0 + es-module-lexer: 1.6.0 + pathe: 2.0.3 + vite: 6.2.3(tsx@4.19.3) + transitivePeerDependencies: + - '@types/node' + - jiti + - less + - lightningcss + - sass + - sass-embedded + - stylus + - sugarss + - supports-color + - terser + - tsx + - yaml + dev: true + + /vite@6.2.3(tsx@4.19.3): + resolution: {integrity: sha512-IzwM54g4y9JA/xAeBPNaDXiBF8Jsgl3VBQ2YQ/wOY6fyW3xMdSoltIV3Bo59DErdqdE6RxUfv8W69DvUorE4Eg==} + engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} + hasBin: true + peerDependencies: + '@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0 + jiti: '>=1.21.0' + less: '*' + lightningcss: ^1.21.0 + sass: '*' + sass-embedded: '*' + stylus: '*' + sugarss: '*' + terser: ^5.16.0 + tsx: ^4.8.1 + yaml: ^2.4.2 + peerDependenciesMeta: + '@types/node': + optional: true + jiti: + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + sass-embedded: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + tsx: + optional: true + yaml: + optional: true + dependencies: + esbuild: 0.25.1 + postcss: 8.5.3 + rollup: 4.37.0 + tsx: 4.19.3 + optionalDependencies: + fsevents: 2.3.3 + dev: true + + /vitest@3.0.9(tsx@4.19.3): + resolution: {integrity: sha512-BbcFDqNyBlfSpATmTtXOAOj71RNKDDvjBM/uPfnxxVGrG+FSH2RQIwgeEngTaTkuU/h0ScFvf+tRcKfYXzBybQ==} + engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} + hasBin: true + peerDependencies: + '@edge-runtime/vm': '*' + '@types/debug': ^4.1.12 + '@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0 + '@vitest/browser': 3.0.9 + '@vitest/ui': 3.0.9 + happy-dom: '*' + jsdom: '*' + peerDependenciesMeta: + '@edge-runtime/vm': + optional: true + '@types/debug': + optional: true + '@types/node': + optional: true + '@vitest/browser': + optional: true + '@vitest/ui': + optional: true + happy-dom: + optional: true + jsdom: + optional: true + dependencies: + '@vitest/expect': 3.0.9 + '@vitest/mocker': 3.0.9(vite@6.2.3) + '@vitest/pretty-format': 3.0.9 + '@vitest/runner': 3.0.9 + '@vitest/snapshot': 3.0.9 + '@vitest/spy': 3.0.9 + '@vitest/utils': 3.0.9 + chai: 5.2.0 + debug: 4.4.0 + expect-type: 1.2.0 + magic-string: 0.30.17 + pathe: 2.0.3 + std-env: 3.8.1 + tinybench: 2.9.0 + tinyexec: 0.3.2 + tinypool: 1.0.2 + tinyrainbow: 2.0.0 + vite: 6.2.3(tsx@4.19.3) + vite-node: 3.0.9(tsx@4.19.3) + why-is-node-running: 2.3.0 + transitivePeerDependencies: + - jiti + - less + - lightningcss + - msw + - sass + - sass-embedded + - stylus + - sugarss + - supports-color + - terser + - tsx + - yaml + dev: true + + /walker@1.0.8: + resolution: {integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==} + dependencies: + makeerror: 1.0.12 + dev: true + + /which@2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true + dependencies: + isexe: 2.0.0 + dev: true + + /why-is-node-running@2.3.0: + resolution: {integrity: sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==} + engines: {node: '>=8'} + hasBin: true + dependencies: + siginfo: 2.0.0 + stackback: 0.0.2 + dev: true + + /wrap-ansi@7.0.0: + resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} + engines: {node: '>=10'} + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + dev: true + + /wrappy@1.0.2: + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + dev: true + + /write-file-atomic@4.0.2: + resolution: {integrity: sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + dependencies: + imurmurhash: 0.1.4 + signal-exit: 3.0.7 + dev: true + + /y18n@5.0.8: + resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} + engines: {node: '>=10'} + dev: true + + /yallist@3.1.1: + resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} + dev: true + + /yargs-parser@21.1.1: + resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} + engines: {node: '>=12'} + dev: true + + /yargs@17.7.2: + resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} + engines: {node: '>=12'} + dependencies: + cliui: 8.0.1 + escalade: 3.2.0 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + string-width: 4.2.3 + y18n: 5.0.8 + yargs-parser: 21.1.1 + dev: true + + /yocto-queue@0.1.0: + resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} + engines: {node: '>=10'} + dev: true diff --git a/scripts/ts-to-any-converter/src/converter.ts b/scripts/ts-to-any-converter/src/converter.ts new file mode 100644 index 00000000..0b5591a1 --- /dev/null +++ b/scripts/ts-to-any-converter/src/converter.ts @@ -0,0 +1,215 @@ +/* eslint-disable import/no-extraneous-dependencies */ +import { + Project, SyntaxKind, EnumDeclaration, InterfaceDeclaration, + PropertyDeclaration, + PropertySignature, + Type, +} from 'ts-morph'; +import fs from 'fs'; +import path from 'path'; +import Mustache from 'mustache'; +import { IEnum, IInterface, TemplateType } from './types/intermediate'; +import { ConverterConfig } from './types/converter-types'; +import { writeToFileAsync } from './utils'; + +// We will first convert the ast format to a intermediate format that is easier +// to handle + +class TypeScriptConverter { + readonly project: Project; + + private finalOutputString = ''; + + private configs: ConverterConfig; + + private templateDefaultPaths = { + [TemplateType.Enum]: 'enum.mustache', + [TemplateType.Interface]: 'interface.mustache', + } + + private templates: Record; + + /** + * Loads the templates from the templates directory + * @returns The templates + */ + private updateTemplates() { + const defaultTemplateRoot = path.resolve(__dirname, 'templates/dart'); + const templatePaths = this.templateDefaultPaths; + + this.templates = {} as Record; + Object.keys(templatePaths).forEach((templateType) => { + const templatePath = path.resolve(defaultTemplateRoot, templatePaths[templateType]); + this.templates[templateType] = fs.readFileSync(templatePath, 'utf8'); + }); + + return this.templates; + } + + constructor(configs: ConverterConfig) { + // load the template + this.project = new Project(); + this.updateTemplates(); + this.configs = configs; + this.finalOutputString = ''; + } + + renderTemplate(templateType: TemplateType, data: Record) { + const template = this.templates[templateType]; + return Mustache.render(template, data); + } + + appendToFinalOutput(output: string) { + this.finalOutputString += output; + } + + convertEnumToIntermediate(enumDeclaration: EnumDeclaration): IEnum { + const enumName = enumDeclaration.getName(); + const members = enumDeclaration.getMembers().map((member, index) => { + const key = member.getName(); + const value = member.getInitializer()?.getText().replace(/['"]/g, ''); // Remove quotes + const comment = member.getJsDocs().map((doc) => doc.getText()).join(''); + return { + name: key, value, comment, isLast: index === enumDeclaration.getMembers().length - 1, + }; + }); + + const comment = enumDeclaration.getJsDocs().map((doc) => doc.getText()).join(''); + + return addPrev({ + name: enumName, + options: members, + type: 'enum', + comment, + }); + } + + // todo : just demo will update later + extractType = (propType: Type) => { + if (propType.isArray()) { + const type = propType.getArrayElementType(); + if (type) { + return { + name: this.extractType(type).name, + isArray: true, + }; + } + return { + name: 'unknown', + isArray: true, + }; + } + + if (propType.isObject() || propType.isEnum()) { + return { + name: propType.getSymbol()?.getName(), + isArray: false, + }; + } + + return { + name: propType.getText(), + isArray: false, + }; + } + + // this will store the dynamic types that are created + // this will have the intermediate format + private dynamicTypes = {}; + + createDynamicType = (property: PropertySignature, interfaceName: string): IInterface => { + if (this.dynamicTypes[interfaceName]) { + return this.dynamicTypes[interfaceName]; + } + + const newName = `${interfaceName}__${property.getName()}`; + + const properties = property.getType().getProperties().map((nestedProperty) => { + const name = nestedProperty.getName(); + const type = this.extractType(nestedProperty.getTypeAtLocation(property)); + return type; + }); + + this.dynamicTypes[newName] = { + name: newName, + properties, + }; + return { + name: newName, + properties, + }; + } + + handleEnum = (enumDeclaration: EnumDeclaration) => { + const enumIntermediate = this.convertEnumToIntermediate(enumDeclaration); + return this.renderTemplate(TemplateType.Enum, enumIntermediate); + } + + convertInterfaceToIntermediate = (interfaceDeclaration: InterfaceDeclaration) => { + const interfaceName = interfaceDeclaration.getName?.(); + + const properties = interfaceDeclaration.getProperties().map((property) => { + const name = property.getName(); + let type = this.extractType(property.getType()); + if (type.name === '__type') { + type = this.createDynamicType(property, interfaceName); + } + return { + name, + type, + }; + }); + + return addPrev({ + name: interfaceName, + properties, + type: 'interface', + }); + } + + handleInterface = (interfaceDeclaration: InterfaceDeclaration) => { + const interfaceIntermediate = this.convertInterfaceToIntermediate(interfaceDeclaration); + return this.renderTemplate(TemplateType.Interface, interfaceIntermediate); + } + + convert() { + const finalOutputs: string[] = []; + this.configs.inputs.forEach((input) => { + const sourceFile = this.project.addSourceFileAtPath(input); + + const enumContent = sourceFile.getEnums().map(this.handleEnum); + const interfaceContent = sourceFile.getInterfaces().map(this.handleInterface); + const dynamicTypeContent = this.dynamicTypes.map() + + finalOutputs.push(...enumContent, ...interfaceContent); + Object.keys(this.dynamicTypes).forEach((key) => { + this.appendToFinalOutput( + this.renderTemplate(TemplateType.Interface, this.dynamicTypes[key]), + ); + }); + }); + return finalOutputs.join('\n'); + } + + convertAndWriteToFile(options: { outPutFile: string }) { + const output = this.convert(); + return writeToFileAsync(options.outPutFile, output); + } + + writeOutput() { + fs.writeFileSync(this.configs.output, this.finalOutputString); + } +} + +/** + * + */ +function main() { + const converter = new TypeScriptConverter({ + inputs: ['src/types.ts'], + output: 'my.dart', + }); + converter.convert(); +} + +main(); diff --git a/scripts/ts-to-any-converter/types/converter-types.ts b/scripts/ts-to-any-converter/src/types/converter-types.ts similarity index 100% rename from scripts/ts-to-any-converter/types/converter-types.ts rename to scripts/ts-to-any-converter/src/types/converter-types.ts diff --git a/scripts/ts-to-any-converter/types/intermediate.ts b/scripts/ts-to-any-converter/src/types/intermediate.ts similarity index 81% rename from scripts/ts-to-any-converter/types/intermediate.ts rename to scripts/ts-to-any-converter/src/types/intermediate.ts index 3ae38dd6..fe0ddaa8 100644 --- a/scripts/ts-to-any-converter/types/intermediate.ts +++ b/scripts/ts-to-any-converter/src/types/intermediate.ts @@ -22,9 +22,14 @@ export interface IBoolean { export interface IInterface { name: string; + comment?: string; properties: { name: string; - type: IEnum | IInterface | INumber | IString | IBoolean; + type: { + name: string; + isArray: boolean; + }; + comment?: string; }[]; } diff --git a/scripts/ts-to-any-converter/src/utils/index.spec.ts b/scripts/ts-to-any-converter/src/utils/index.spec.ts new file mode 100644 index 00000000..d1134e8e --- /dev/null +++ b/scripts/ts-to-any-converter/src/utils/index.spec.ts @@ -0,0 +1,120 @@ +// TODO: Remove this once the issue is fixed +/* eslint-disable import/no-extraneous-dependencies */ +import * as fs from 'fs'; +import { + describe, it, expect, beforeEach, vi, +} from 'vitest'; +import { writeToFileAsync, addPrev, appPrevKey } from '.'; + +const fileService = fs.promises; +// Mock the fs promises module +vi.mock('fs', () => ({ + promises: { + writeFile: vi.fn(), + }, +})); + +describe('Utils', () => { + beforeEach(() => { + vi.clearAllMocks(); + }); + + describe('writeToFileAsync', () => { + it('should write content to file with UTF-8 encoding', async () => { + const path = 'test.txt'; + const content = 'Hello World'; + + await writeToFileAsync(path, content); + + expect(fileService.writeFile).toHaveBeenCalledWith(path, content, 'utf8'); + }); + + it('should handle empty content', async () => { + const path = 'test.txt'; + const content = ''; + + await writeToFileAsync(path, content); + + expect(fileService.writeFile).toHaveBeenCalledWith(path, content, 'utf8'); + }); + }); + + describe('addPrev', () => { + it('should add _prev reference to nested objects', () => { + const input = { + a: { b: 1 }, + c: [{ d: 2 }], + }; + + const result = addPrev(input); + + // Check object references + expect(result.a[appPrevKey]).toBe(result); + expect(result.c[0][appPrevKey]).toBe(result.c); + + // Check original values are preserved + expect(result.a.b).toBe(1); + expect(result.c[0].d).toBe(2); + }); + + it('should handle primitive values without modification', () => { + const input = { + string: 'hello', + number: 42, + boolean: true, + null: null, + undefined, + }; + + const result = addPrev(input); + + expect(result).toEqual(input); + }); + + it('should handle empty objects and arrays', () => { + const input = { + emptyObj: {}, + emptyArray: [], + }; + + const result = addPrev(input); + + expect(result.emptyObj[appPrevKey]).toBe(result); + expect(result.emptyArray[appPrevKey]).toBe(result); + }); + + it('should handle deeply nested structures', () => { + const input = { + level1: { + level2: { + level3: { + value: 1, + }, + }, + }, + }; + + const result = addPrev(input); + + expect(result.level1[appPrevKey]).toBe(result); + expect(result.level1.level2[appPrevKey]).toBe(result.level1); + expect(result.level1.level2.level3[appPrevKey]).toBe(result.level1.level2); + }); + + it('should handle arrays with nested objects', () => { + const input = { + array: [ + { id: 1 }, + { id: 2, nested: { value: 3 } }, + ], + }; + + const result = addPrev(input); + + expect(result.array[appPrevKey]).toBe(undefined); + expect(result.array[0][appPrevKey]).toBe(result); + expect(result.array[1][appPrevKey]).toBe(result); + expect(result.array[1]?.nested?.[appPrevKey]).toBe(result.array[1]); + }); + }); +}); diff --git a/scripts/ts-to-any-converter/src/utils/index.ts b/scripts/ts-to-any-converter/src/utils/index.ts new file mode 100644 index 00000000..90087943 --- /dev/null +++ b/scripts/ts-to-any-converter/src/utils/index.ts @@ -0,0 +1,50 @@ +import * as fs from 'fs'; + +const fileService = fs.promises; + +/** + * Writes content to a file asynchronously using UTF-8 encoding + * @param {string} path - The file path where content will be written + * @param {string} content - The string content to write to the file + * @returns {Promise} Promise that resolves when the write operation completes + */ +export const writeToFileAsync = async (path: string, content: string): Promise => fileService.writeFile(path, content, 'utf8'); + +export const appPrevKey = '_prev'; +/** + * Recursively adds a '_prev' reference to each nested object and array element in the + * given object, pointing to its parent object. + * @template T - The type of the input object + * @param {T} obj - The object to process + * @returns {T} The processed object with '_prev' references added + * @example + * const data = { + * a: { b: 1 }, + * c: [{ d: 2 }] + * }; + * const result = addPrev(data); + * // result.a._prev === data + * // result.c[0]._prev === result.c + */ +export const addPrev = (obj: T): T => { + if (typeof obj !== 'object' || obj === null) { + return obj; + } + + Object.keys(obj).forEach((key) => { + const child = obj[key]; + + if (Array.isArray(child)) { + child.forEach((item, idx) => { + obj[key][idx] = addPrev(item); + // eslint-disable-next-line no-underscore-dangle + obj[key][idx][appPrevKey] = obj; + }); + } else if (typeof child === 'object') { + obj[key] = addPrev(obj[key]); + // eslint-disable-next-line no-underscore-dangle + obj[key][appPrevKey] = obj; + } + }); + return obj; +}; diff --git a/scripts/ts-to-any-converter/src/utils/utils.spec.ts b/scripts/ts-to-any-converter/src/utils/utils.spec.ts new file mode 100644 index 00000000..e69de29b diff --git a/scripts/ts-to-any-converter/templates/dart/interface.mustache b/scripts/ts-to-any-converter/templates/dart/interface.mustache index 6fcf1daf..234fd282 100644 --- a/scripts/ts-to-any-converter/templates/dart/interface.mustache +++ b/scripts/ts-to-any-converter/templates/dart/interface.mustache @@ -1,5 +1,5 @@ -Class {{name}} { +class {{name}} { {{#properties}} - {{name}}: {{type}}; + {{name}}: {{type.name}}{{#type.isArray}}[]{{/type.isArray}}; {{/properties}} } diff --git a/scripts/ts-to-any-converter/tests/converter/enum/enum-type.ts b/scripts/ts-to-any-converter/tests/converter/enum/enum-type.ts new file mode 100644 index 00000000..aad07002 --- /dev/null +++ b/scripts/ts-to-any-converter/tests/converter/enum/enum-type.ts @@ -0,0 +1,22 @@ +enum MyEnum1 { + A = 1, + B = 2, + C = 3 +} + +enum MyEnum2 { + TEST_1, + TEST_2 +} + +enum MyEnum3 { + TEST_1 = 'HiThisIsTest1', + TEST_2 = 'HiThisIsTest2' +} + +enum MyEnum4 { + TEST_1 = 1, + TEST_2 = 2, + TEST_3 = 'HiThisIsTest3', + TEST_4 = 'HiThisIsTest4' +} diff --git a/scripts/ts-to-any-converter/tests/converter/enum/enums.test.ts b/scripts/ts-to-any-converter/tests/converter/enum/enums.test.ts new file mode 100644 index 00000000..0dc4b5bb --- /dev/null +++ b/scripts/ts-to-any-converter/tests/converter/enum/enums.test.ts @@ -0,0 +1,5 @@ +describe('Enum tests', () => { + test('Should convert enum properly', () => { + + }); +}); From d73214db4030af8ccb4deccd2772003a63efd4bb Mon Sep 17 00:00:00 2001 From: sastaachar Date: Mon, 24 Mar 2025 15:57:04 +0530 Subject: [PATCH 3/8] bye bye --- auth_enum.dart | 491 ------ auth_interface.dart | 29 - auth_models.dart | 28 - my.dart | 3824 ------------------------------------------- 4 files changed, 4372 deletions(-) delete mode 100644 auth_enum.dart delete mode 100644 auth_interface.dart delete mode 100644 auth_models.dart delete mode 100644 my.dart diff --git a/auth_enum.dart b/auth_enum.dart deleted file mode 100644 index 8cadfa47..00000000 --- a/auth_enum.dart +++ /dev/null @@ -1,491 +0,0 @@ -enum AuthType { - None("None"), - EmbeddedSSO("EmbeddedSSO"), - SSO("SSO_SAML"), - SAML("SSO_SAML"), - SAMLRedirect("SSO_SAML"), - OIDC("SSO_OIDC"), - OIDCRedirect("SSO_OIDC"), - AuthServer("AuthServer"), - TrustedAuthToken("AuthServer"), - TrustedAuthTokenCookieless("AuthServerCookieless"), - Basic("Basic"), - - final String value; - const AuthType(this.value); -} - -enum HomeLeftNavItem { - SearchData("search-data"), - Home("insights-home"), - Liveboards("liveboards"), - Answers("answers"), - MonitorSubscription("monitor-alerts"), - SpotIQAnalysis("spotiq-analysis"), - LiveboardSchedules("liveboard-schedules"), - - final String value; - const HomeLeftNavItem(this.value); -} - -enum RuntimeFilterOp { - EQ("EQ"), - NE("NE"), - LT("LT"), - LE("LE"), - GT("GT"), - GE("GE"), - CONTAINS("CONTAINS"), - BEGINS_WITH("BEGINS_WITH"), - ENDS_WITH("ENDS_WITH"), - BW_INC_MAX("BW_INC_MAX"), - BW_INC_MIN("BW_INC_MIN"), - BW_INC("BW_INC"), - BW("BW"), - IN("IN"), - NOT_IN("NOT_IN"), - - final String value; - const RuntimeFilterOp(this.value); -} - -enum HomepageModule { - Search("SEARCH"), - Watchlist("WATCHLIST"), - Favorite("FAVORITE"), - MyLibrary("MY_LIBRARY"), - Trending("TRENDING"), - Learning("LEARNING"), - - final String value; - const HomepageModule(this.value); -} - -enum EmbedEvent { - Init("init"), - AuthInit("authInit"), - Load("load"), - Data("data"), - QueryChanged("queryChanged"), - Drilldown("drillDown"), - DataSourceSelected("dataSourceSelected"), - AddRemoveColumns("addRemoveColumns"), - CustomAction("customAction"), - VizPointDoubleClick("vizPointDoubleClick"), - VizPointClick("vizPointClick"), - Error("Error"), - Alert("alert"), - AuthExpire("ThoughtspotAuthExpired"), - AuthFailure("ThoughtspotAuthFailure"), - IdleSessionTimeout("IdleSessionTimeout"), - AuthLogout("ThoughtspotAuthLogout"), - EmbedHeight("EMBED_HEIGHT"), - EmbedIframeCenter("EmbedIframeCenter"), - GetDataClick("getDataClick"), - RouteChange("ROUTE_CHANGE"), - V1Data("exportVizDataToParent"), - NoCookieAccess("noCookieAccess"), - SAMLComplete("samlComplete"), - DialogOpen("dialog-open"), - DialogClose("dialog-close"), - LiveboardRendered("PinboardRendered"), - ALL("*"), - Save("save"), - Download("download"), - DownloadAsPng("downloadAsPng"), - DownloadAsPdf("downloadAsPdf"), - DownloadAsCsv("downloadAsCsv"), - DownloadAsXlsx("downloadAsXlsx"), - AnswerDelete("answerDelete"), - Pin("pin"), - SpotIQAnalyze("spotIQAnalyze"), - Share("share"), - DrillInclude("context-menu-item-include"), - DrillExclude("context-menu-item-exclude"), - CopyToClipboard("context-menu-item-copy-to-clipboard"), - UpdateTML("updateTSL"), - EditTML("editTSL"), - ExportTML("exportTSL"), - SaveAsView("saveAsView"), - CopyAEdit("copyAEdit"), - ShowUnderlyingData("showUnderlyingData"), - AnswerChartSwitcher("answerChartSwitcher"), - APP_INIT("appInit"), - LiveboardInfo("pinboardInfo"), - AddToFavorites("addToFavorites"), - Schedule("subscription"), - Edit("edit"), - MakeACopy("makeACopy"), - Present("present"), - Delete("delete"), - SchedulesList("schedule-list"), - Cancel("cancel"), - Explore("explore"), - CopyLink("embedDocument"), - CrossFilterChanged("cross-filter-changed"), - VizPointRightClick("vizPointRightClick"), - InsertIntoSlide("insertInToSlide"), - FilterChanged("filterChanged"), - SageEmbedQuery("sageEmbedQuery"), - SageWorksheetUpdated("sageWorksheetUpdated"), - UpdateConnection("updateConnection"), - CreateConnection("createConnection"), - UpdatePersonalisedView("updatePersonalisedView"), - SavePersonalisedView("savePersonalisedView"), - ResetLiveboard("resetLiveboard"), - DeletePersonalisedView("deletePersonalisedView"), - CreateWorksheet("createWorksheet"), - AskSageInit("AskSageInit"), - Rename("rename"), - OnBeforeGetVizDataIntercept("onBeforeGetVizDataIntercept"), - ParameterChanged("parameterChanged"), - TableVizRendered("TableVizRendered"), - CreateLiveboard("createLiveboard"), - - final String value; - const EmbedEvent(this.value); -} - -enum HostEvent { - Search("search"), - DrillDown("triggerDrillDown"), - Filter("filter"), - Reload("reload"), - GetIframeUrl("GetIframeUrl"), - SetVisibleVizs("SetPinboardVisibleVizs"), - SetActiveTab("SetActiveTab"), - UpdateRuntimeFilters("UpdateRuntimeFilters"), - Navigate("Navigate"), - OpenFilter("openFilter"), - AddColumns("addColumns"), - RemoveColumn("removeColumn"), - getExportRequestForCurrentPinboard("getExportRequestForCurrentPinboard"), - Pin("pin"), - LiveboardInfo("pinboardInfo"), - Schedule("subscription"), - SchedulesList("schedule-list"), - ExportTML("exportTSL"), - EditTML("editTSL"), - UpdateTML("updateTSL"), - DownloadAsPdf("downloadAsPdf"), - MakeACopy("makeACopy"), - Remove("delete"), - Explore("explore"), - CreateMonitor("createMonitor"), - ManageMonitor("manageMonitor"), - Edit("edit"), - CopyLink("embedDocument"), - Present("present"), - GetTML("getTML"), - ShowUnderlyingData("showUnderlyingData"), - Delete("onDeleteAnswer"), - SpotIQAnalyze("spotIQAnalyze"), - Download("downloadAsPng"), - DownloadAsPng("downloadAsPng"), - DownloadAsCsv("downloadAsCSV"), - DownloadAsXlsx("downloadAsXLSX"), - Share("share"), - Save("save"), - SyncToSheets("sync-to-sheets"), - SyncToOtherApps("sync-to-other-apps"), - ManagePipelines("manage-pipeline"), - ResetSearch("resetSearch"), - GetFilters("getFilters"), - UpdateFilters("updateFilters"), - GetTabs("getTabs"), - SetVisibleTabs("SetPinboardVisibleTabs"), - SetHiddenTabs("SetPinboardHiddenTabs"), - UpdateSageQuery("updateSageQuery"), - GetAnswerSession("getAnswerSession"), - AskSage("AskSage"), - UpdateCrossFilter("UpdateCrossFilter"), - ResetLiveboardPersonalisedView("ResetLiveboardPersonalisedView"), - UpdateParameters("UpdateParameters"), - GetParameters("GetParameters"), - UpdatePersonalisedView("UpdatePersonalisedView"), - InfoSuccess("InfoSuccess"), - SaveAnswer("saveAnswer"), - UIPassthrough("UiPassthrough"), - TransformTableVizData("TransformTableVizData"), - - final String value; - const HostEvent(this.value); -} - -enum DataSourceVisualMode { - Hidden("hide"), - Collapsed("collapse"), - Expanded("expand"), - - final String value; - const DataSourceVisualMode(this.value); -} - -enum Param { - EmbedApp("embedApp"), - DataSources("dataSources"), - DataSourceMode("dataSourceMode"), - DisableActions("disableAction"), - DisableActionReason("disableHint"), - ForceTable("forceTable"), - preventLiveboardFilterRemoval("preventPinboardFilterRemoval"), - SearchQuery("searchQuery"), - HideActions("hideAction"), - HideObjects("hideObjects"), - HostAppUrl("hostAppUrl"), - EnableVizTransformations("enableVizTransform"), - EnableSearchAssist("enableSearchAssist"), - EnablePendoHelp("enablePendoHelp"), - HideResult("hideResult"), - UseLastSelectedDataSource("useLastSelectedSources"), - Tag("tag"), - AutoLogin("autoLogin"), - searchTokenString("searchTokenString"), - executeSearch("executeSearch"), - fullHeight("isFullHeightPinboard"), - livedBoardEmbed("isLiveboardEmbed"), - searchEmbed("isSearchEmbed"), - vizEmbed("isVizEmbed"), - Version("sdkVersion"), - ViewPortHeight("viewPortHeight"), - ViewPortWidth("viewPortWidth"), - VisibleActions("visibleAction"), - DisableLoginRedirect("disableLoginRedirect"), - visibleVizs("pinboardVisibleVizs"), - LiveboardV2Enabled("isPinboardV2Enabled"), - DataPanelV2Enabled("enableDataPanelV2"), - ShowAlerts("showAlerts"), - Locale("locale"), - CustomStyle("customStyle"), - ForceSAMLAutoRedirect("forceSAMLAutoRedirect"), - AuthType("authType"), - IconSpriteUrl("iconSprite"), - cookieless("cookieless"), - ContextMenuTrigger("contextMenuEnabledOnWhichClick"), - LinkOverride("linkOverride"), - blockNonEmbedFullAppAccess("blockNonEmbedFullAppAccess"), - ShowInsertToSlide("insertInToSlide"), - PrimaryNavHidden("primaryNavHidden"), - HideProfleAndHelp("profileAndHelpInNavBarHidden"), - HideApplicationSwitcher("applicationSwitcherHidden"), - HideOrgSwitcher("orgSwitcherHidden"), - IsSageEmbed("isSageEmbed"), - HideWorksheetSelector("hideWorksheetSelector"), - DisableWorksheetChange("disableWorksheetChange"), - HideSourceSelection("hideSourceSelection"), - DisableSourceSelection("disableSourceSelection"), - HideEurekaResults("hideEurekaResults"), - HideEurekaSuggestions("hideEurekaSuggestions"), - HideAutocompleteSuggestions("hideAutocompleteSuggestions"), - HideLiveboardHeader("hideLiveboardHeader"), - ShowLiveboardDescription("showLiveboardDescription"), - ShowLiveboardTitle("showLiveboardTitle"), - HiddenTabs("hideTabs"), - VisibleTabs("visibleTabs"), - HideTabPanel("hideTabPanel"), - HideSampleQuestions("hideSampleQuestions"), - WorksheetId("worksheet"), - Query("query"), - HideHomepageLeftNav("hideHomepageLeftNav"), - ModularHomeExperienceEnabled("modularHomeExperience"), - PendoTrackingKey("additionalPendoKey"), - LiveboardHeaderSticky("isLiveboardHeaderSticky"), - IsProductTour("isProductTour"), - HideSearchBarTitle("hideSearchBarTitle"), - HideSageAnswerHeader("hideSageAnswerHeader"), - HideSearchBar("hideSearchBar"), - ClientLogLevel("clientLogLevel"), - OverrideNativeConsole("overrideConsoleLogs"), - enableAskSage("enableAskSage"), - CollapseSearchBarInitially("collapseSearchBarInitially"), - DataPanelCustomGroupsAccordionInitialState("dataPanelCustomGroupsAccordionInitialState"), - EnableCustomColumnGroups("enableCustomColumnGroups"), - DateFormatLocale("dateFormatLocale"), - NumberFormatLocale("numberFormatLocale"), - CurrencyFormat("currencyFormat"), - Enable2ColumnLayout("enable2ColumnLayout"), - IsFullAppEmbed("isFullAppEmbed"), - IsOnBeforeGetVizDataInterceptEnabled("isOnBeforeGetVizDataInterceptEnabled"), - FocusSearchBarOnRender("focusSearchBarOnRender"), - DisableRedirectionLinksInNewTab("disableRedirectionLinksInNewTab"), - HomePageSearchBarMode("homePageSearchBarMode"), - ShowLiveboardVerifiedBadge("showLiveboardVerifiedBadge"), - ShowLiveboardReverifyBanner("showLiveboardReverifyBanner"), - LiveboardHeaderV2("isLiveboardHeaderV2Enabled"), - HideIrrelevantFiltersInTab("hideIrrelevantFiltersAtTabLevel"), - SpotterEnabled("isSpotterExperienceEnabled"), - IsUnifiedSearchExperienceEnabled("isUnifiedSearchExperienceEnabled"), - OverrideOrgId("orgId"), - OauthPollingInterval("oAuthPollingInterval"), - IsForceRedirect("isForceRedirect"), - DataSourceId("dataSourceId"), - preAuthCache("preAuthCache"), - ShowSpotterLimitations("showSpotterLimitations"), - - final String value; - const Param(this.value); -} - -enum Action { - Save("save"), - Update("update"), - SaveUntitled("saveUntitled"), - SaveAsView("saveAsView"), - MakeACopy("makeACopy"), - EditACopy("editACopy"), - CopyLink("embedDocument"), - ResetLayout("resetLayout"), - Schedule("subscription"), - SchedulesList("schedule-list"), - Share("share"), - AddFilter("addFilter"), - AddDataPanelObjects("addDataPanelObjects"), - ConfigureFilter("configureFilter"), - CollapseDataSources("collapseDataSources"), - CollapseDataPanel("collapseDataPanel"), - ChooseDataSources("chooseDataSources"), - AddFormula("addFormula"), - AddParameter("addParameter"), - AddColumnSet("addSimpleCohort"), - AddQuerySet("addAdvancedCohort"), - SearchOnTop("searchOnTop"), - SpotIQAnalyze("spotIQAnalyze"), - ExplainInsight("explainInsight"), - SpotIQFollow("spotIQFollow"), - ShareViz("shareViz"), - ReplaySearch("replaySearch"), - ShowUnderlyingData("showUnderlyingData"), - Download("download"), - DownloadAsPng("downloadAsPng"), - DownloadAsPdf("downloadAsPdf"), - DownloadAsCsv("downloadAsCSV"), - DownloadAsXlsx("downloadAsXLSX"), - DownloadTrace("downloadTrace"), - ExportTML("exportTSL"), - ImportTML("importTSL"), - UpdateTML("updateTSL"), - EditTML("editTSL"), - Present("present"), - ToggleSize("toggleSize"), - Edit("edit"), - EditTitle("editTitle"), - Remove("delete"), - Ungroup("ungroup"), - Describe("describe"), - Relate("relate"), - CustomizeHeadlines("customizeHeadlines"), - PinboardInfo("pinboardInfo"), - LiveboardInfo("pinboardInfo"), - SendAnswerFeedback("sendFeedback"), - DownloadEmbraceQueries("downloadEmbraceQueries"), - Pin("pin"), - AnalysisInfo("analysisInfo"), - Subscription("subscription"), - Explore("explore"), - DrillInclude("context-menu-item-include"), - DrillExclude("context-menu-item-exclude"), - CopyToClipboard("context-menu-item-copy-to-clipboard"), - CopyAndEdit("context-menu-item-copy-and-edit"), - DrillEdit("context-menu-item-edit"), - EditMeasure("context-menu-item-edit-measure"), - Separator("context-menu-item-separator"), - DrillDown("DRILL"), - RequestAccess("requestAccess"), - QueryDetailsButtons("queryDetailsButtons"), - AnswerDelete("onDeleteAnswer"), - AnswerChartSwitcher("answerChartSwitcher"), - AddToFavorites("addToFavorites"), - EditDetails("editDetails"), - CreateMonitor("createMonitor"), - ReportError("reportError"), - SyncToSheets("sync-to-sheets"), - SyncToOtherApps("sync-to-other-apps"), - ManagePipelines("manage-pipeline"), - CrossFilter("context-menu-item-cross-filter"), - SyncToSlack("syncToSlack"), - SyncToTeams("syncToTeams"), - RemoveCrossFilter("context-menu-item-remove-cross-filter"), - AxisMenuAggregate("axisMenuAggregate"), - AxisMenuTimeBucket("axisMenuTimeBucket"), - AxisMenuFilter("axisMenuFilter"), - AxisMenuConditionalFormat("axisMenuConditionalFormat"), - AxisMenuSort("axisMenuSort"), - AxisMenuGroup("axisMenuGroup"), - AxisMenuPosition("axisMenuPosition"), - AxisMenuRename("axisMenuRename"), - AxisMenuEdit("axisMenuEdit"), - AxisMenuNumberFormat("axisMenuNumberFormat"), - AxisMenuTextWrapping("axisMenuTextWrapping"), - AxisMenuRemove("axisMenuRemove"), - InsertInToSlide("insertInToSlide"), - RenameModalTitleDescription("renameModalTitleDescription"), - RequestVerification("requestVerification"), - MarkAsVerified("markAsVerified"), - AddTab("addTab"), - EnableContextualChangeAnalysis("enableContextualChangeAnalysis"), - ShowSageQuery("showSageQuery"), - EditSageAnswer("editSageAnswer"), - SageAnswerFeedback("sageAnswerFeedback"), - ModifySageAnswer("modifySageAnswer"), - MoveToTab("onContainerMove"), - ManageMonitor("manageMonitor"), - PersonalisedViewsDropdown("personalisedViewsDropdown"), - LiveboardUsers("liveboardUsers"), - TML("tml"), - CreateLiveboard("createLiveboard"), - VerifiedLiveboard("verifiedLiveboard"), - AskAi("AskAi"), - AddToWatchlist("addToWatchlist"), - RemoveFromWatchlist("removeFromWatchlist"), - OrganiseFavourites("organiseFavourites"), - AIHighlights("AIHighlights"), - EditScheduleHomepage("editScheduleHomepage"), - PauseScheduleHomepage("pauseScheduleHomepage"), - ViewScheduleRunHomepage("viewScheduleRunHomepage"), - UnsubscribeScheduleHomepage("unsubscribeScheduleHomepage"), - ManageTags("manageTags"), - DeleteScheduleHomepage("deleteScheduleHomepage"), - KPIAnalysisCTA("kpiAnalysisCTA"), - DisableChipReorder("disableChipReorder"), - ChangeFilterVisibilityInTab("changeFilterVisibilityInTab"), - PreviewDataSpotter("previewDataSpotter"), - ResetSpotterChat("resetSpotterChat"), - SpotterFeedback("spotterFeedback"), - EditPreviousPrompt("editPreviousPrompt"), - DeletePreviousPrompt("deletePreviousPrompt"), - EditTokens("editTokens"), - - final String value; - const Action(this.value); -} - -enum PrefetchFeatures { - FullApp("FullApp"), - SearchEmbed("SearchEmbed"), - LiveboardEmbed("LiveboardEmbed"), - VizEmbed("VizEmbed"), - - final String value; - const PrefetchFeatures(this.value); -} - -enum ContextMenuTriggerOptions { - LEFT_CLICK("left-click"), - RIGHT_CLICK("right-click"), - BOTH_CLICKS("both-clicks"), - - final String value; - const ContextMenuTriggerOptions(this.value); -} - -enum LogLevel { - SILENT("SILENT"), - ERROR("ERROR"), - WARN("WARN"), - INFO("INFO"), - DEBUG("DEBUG"), - TRACE("TRACE"), - - final String value; - const LogLevel(this.value); -} \ No newline at end of file diff --git a/auth_interface.dart b/auth_interface.dart deleted file mode 100644 index 9a6d0e2f..00000000 --- a/auth_interface.dart +++ /dev/null @@ -1,29 +0,0 @@ -SessionInterface { sessionId: string, genNo: number, acSession: { sessionId: string; genNo: number; } } - -customCssInterface { variables: import("/Users/justin.mathew/Documents/source/ts_code_workspace/visual-embed-sdk/src/css-variables").CustomCssVariables, rules_UNSTABLE: { [selector: string]: { [declaration: string]: string; }; } } - -CustomStyles { customCSSUrl: string, customCSS: import("/Users/justin.mathew/Documents/source/ts_code_workspace/visual-embed-sdk/src/types").customCssInterface } - -CustomisationsInterface { style: import("/Users/justin.mathew/Documents/source/ts_code_workspace/visual-embed-sdk/src/types").CustomStyles, content: { [key: string]: any; strings?: Record; }, iconSpriteUrl: string } - -EmbedConfig { thoughtSpotHost: string, authType: import("/Users/justin.mathew/Documents/source/ts_code_workspace/visual-embed-sdk/src/types").AuthType, authEndpoint: string, getAuthToken: () => Promise, username: string, password: string, noRedirect: boolean, inPopup: boolean, redirectPath: string, basepath: string, shouldEncodeUrlQueryParams: boolean, suppressNoCookieAccessAlert: boolean, ignoreNoCookieAccess: boolean, autoLogin: boolean, disableLoginRedirect: boolean, loginFailedMessage: string, callPrefetch: boolean, queueMultiRenders: boolean, detectCookieAccessSlow: boolean, suppressSearchEmbedBetaWarning: boolean, suppressSageEmbedBetaWarning: boolean, customizations: import("/Users/justin.mathew/Documents/source/ts_code_workspace/visual-embed-sdk/src/types").CustomisationsInterface, authTriggerContainer: string, useEventForSAMLPopup: boolean, authTriggerText: string, blockNonEmbedFullAppAccess: boolean, hostConfig: { hostUserGuid: string; hostClusterId: string; hostClusterName: string; }, pendoTrackingKey: string, suppressErrorAlerts: boolean, logLevel: import("/Users/justin.mathew/Documents/source/ts_code_workspace/visual-embed-sdk/src/types").LogLevel, disableSDKTracking: boolean, dateFormatLocale: string, numberFormatLocale: string, currencyFormat: string, disableTokenVerification: boolean, disableLoginFailurePage: boolean, additionalFlags: { [key: string]: string | number | boolean; }, customVariablesForThirdPartyTools: Record, disablePreauthCache: boolean } - -LayoutConfig { } - -FrameParams { width: string | number, height: string | number, loading: "lazy" | "eager" | "auto" } - -ViewConfig { layoutConfig: import("/Users/justin.mathew/Documents/source/ts_code_workspace/visual-embed-sdk/src/types").LayoutConfig, frameParams: import("/Users/justin.mathew/Documents/source/ts_code_workspace/visual-embed-sdk/src/types").FrameParams, theme: string, styleSheet__unstable: string, disabledActions: import("/Users/justin.mathew/Documents/source/ts_code_workspace/visual-embed-sdk/src/types").Action[], disabledActionReason: string, hiddenActions: import("/Users/justin.mathew/Documents/source/ts_code_workspace/visual-embed-sdk/src/types").Action[], visibleActions: import("/Users/justin.mathew/Documents/source/ts_code_workspace/visual-embed-sdk/src/types").Action[], showAlerts: boolean, runtimeFilters: import("/Users/justin.mathew/Documents/source/ts_code_workspace/visual-embed-sdk/src/types").RuntimeFilter[], runtimeParameters: import("/Users/justin.mathew/Documents/source/ts_code_workspace/visual-embed-sdk/src/types").RuntimeParameter[], locale: string, additionalFlags: { [key: string]: string | number | boolean; }, customizations: import("/Users/justin.mathew/Documents/source/ts_code_workspace/visual-embed-sdk/src/types").CustomisationsInterface, insertAsSibling: boolean, contextMenuTrigger: import("/Users/justin.mathew/Documents/source/ts_code_workspace/visual-embed-sdk/src/types").ContextMenuTriggerOptions, linkOverride: boolean, insertInToSlide: boolean, usePrerenderedIfAvailable: boolean, excludeRuntimeFiltersfromURL: boolean, hiddenTabs: string[], hiddenHomepageModules: import("/Users/justin.mathew/Documents/source/ts_code_workspace/visual-embed-sdk/src/types").HomepageModule[], reorderedHomepageModules: import("/Users/justin.mathew/Documents/source/ts_code_workspace/visual-embed-sdk/src/types").HomepageModule[], visibleTabs: string[], hiddenHomeLeftNavItems: import("/Users/justin.mathew/Documents/source/ts_code_workspace/visual-embed-sdk/src/types").HomeLeftNavItem[], preRenderId: string, doNotTrackPreRenderSize: boolean, embedComponentType: string, excludeRuntimeParametersfromURL: boolean, enableV2Shell_experimental: boolean, collapseSearchBar: boolean, disableRedirectionLinksInNewTab: boolean, dataPanelV2: boolean, enableCustomColumnGroups: boolean, overrideOrgId: number } - -RuntimeFilter { columnName: string, operator: import("/Users/justin.mathew/Documents/source/ts_code_workspace/visual-embed-sdk/src/types").RuntimeFilterOp, values: (string | number | bigint | boolean)[] } - -RuntimeParameter { name: string, value: string | number | boolean } - -AnswerServiceType { getAnswer: (offset: number, batchSize: number) => any } - -ColumnValue { column: { [key: string]: any; id: string; name: string; dataType: string; }, value: string | number | boolean | { v: { s: number; e: number; }; } } - -VizPoint { selectedAttributes: import("/Users/justin.mathew/Documents/source/ts_code_workspace/visual-embed-sdk/src/types").ColumnValue[], selectedMeasures: import("/Users/justin.mathew/Documents/source/ts_code_workspace/visual-embed-sdk/src/types").ColumnValue[] } - -CustomActionPayload { contextMenuPoints: { clickedPoint: import("/Users/justin.mathew/Documents/source/ts_code_workspace/visual-embed-sdk/src/types").VizPoint; selectedPoints: import("/Users/justin.mathew/Documents/source/ts_code_workspace/visual-embed-sdk/src/types").VizPoint[]; }, embedAnswerData: { [key: string]: any; name: string; id: string; sources: { header: { guid: string; }; }; columns: any[]; data: any[]; }, session: import("/Users/justin.mathew/Documents/source/ts_code_workspace/visual-embed-sdk/src/types").SessionInterface, vizId: string } - -DefaultAppInitData { customisations: import("/Users/justin.mathew/Documents/source/ts_code_workspace/visual-embed-sdk/src/types").CustomisationsInterface, authToken: string, runtimeFilterParams: string, runtimeParameterParams: string, hiddenHomepageModules: import("/Users/justin.mathew/Documents/source/ts_code_workspace/visual-embed-sdk/src/types").HomepageModule[], reorderedHomepageModules: string[], hostConfig: Record, hiddenHomeLeftNavItems: string[], customVariablesForThirdPartyTools: Record } \ No newline at end of file diff --git a/auth_models.dart b/auth_models.dart deleted file mode 100644 index 872151b2..00000000 --- a/auth_models.dart +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/my.dart b/my.dart deleted file mode 100644 index 64054dd7..00000000 --- a/my.dart +++ /dev/null @@ -1,3824 +0,0 @@ -/** - * The authentication mechanism for allowing access to the - * the embedded app - * @group Authentication / Init - */ -enum AuthType { - /** - * No authentication on the SDK. Pass-through to the embedded App. Alias for - * `Passthrough`. - * @example - * ```js - * init({ - * // ... - * authType: AuthType.None, - * }); - * ``` - */ - None("None"), - /** - * Passthrough SSO to the embedded application within the iframe. Requires least - * configuration, but may not be supported by all IDPs. This will behave like `None` - * if SSO is not configured on ThoughtSpot. - * - * To use this: - * Your SAML or OpenID provider must allow iframe redirects. - * For example, if you are using Okta as IdP, you can enable iframe embedding. - * @example - * ```js - * init({ - * // ... - * authType: AuthType.EmbeddedSSO, - * }); - * ``` - * @version: SDK: 1.15.0 | ThoughtSpot: 8.8.0.cl - */ - EmbeddedSSO("EmbeddedSSO"), - /** - * SSO using SAML - * @deprecated Use {@link SAMLRedirect} instead - * @hidden - */ - SSO("SSO_SAML"), - /** - * SSO using SAML - * @deprecated Use {@link SAMLRedirect} instead - * @hidden - */ - SAML("SSO_SAML"), - /** - * SSO using SAML - * Makes the host application redirect to the SAML IdP. Use this - * if your IdP does not allow itself to be embedded. - * - * This redirects the host application to the SAML IdP. The host application - * will be redirected back to the ThoughtSpot app after authentication. - * @example - * ```js - * init({ - * // ... - * authType: AuthType.SAMLRedirect, - * }); - * ``` - * - * This opens the SAML IdP in a popup window. The popup is triggered - * when the user clicks the trigger button. The popup window will be - * closed automatically after authentication. - * @example - * ```js - * init({ - * // ... - * authType: AuthType.SAMLRedirect, - * authTriggerText: 'Login with SAML', - * authTriggerContainer: '#embed-container', - * inPopup: true, - * }); - * ``` - * - * Can also use the event to trigger the popup flow. Works the same - * as the above example. - * @example - * ```js - * const authEE = init({ - * // ... - * authType: AuthType.SAMLRedirect, - * inPopup: true, - * }); - * - * someButtonOnYourPage.addEventListener('click', () => { - * authEE.emit(AuthEvent.TRIGGER_SSO_POPUP); - * }); - * ``` - */ - SAMLRedirect("SSO_SAML"), - /** - * SSO using OIDC - * @hidden - * @deprecated Use {@link OIDCRedirect} instead - */ - OIDC("SSO_OIDC"), - /** - * SSO using OIDC - * Will make the host application redirect to the OIDC IdP. - * See code samples in {@link SAMLRedirect}. - */ - OIDCRedirect("SSO_OIDC"), - /** - * Trusted authentication server - * @hidden - * @deprecated Use {@link TrustedAuth} instead - */ - AuthServer("AuthServer"), - /** - * Trusted authentication server. Use your own authentication server - * which returns a bearer token, generated using the `secret_key` obtained - * from ThoughtSpot. - * @example - * ```js - * init({ - * // ... - * authType: AuthType.TrustedAuthToken, - * getAuthToken: () => { - * return fetch('https://my-backend.app/ts-token') - * .then((response) => response.json()) - * .then((data) => data.token); - * } - * }); - * ``` - */ - TrustedAuthToken("AuthServer"), - /** - * Trusted authentication server Cookieless, Use your own authentication - * server which returns a bearer token, generated using the `secret_key` - * obtained from ThoughtSpot. This uses a cookieless authentication - * approach, recommended to bypass the third-party cookie-blocking restriction - * implemented by some browsers. - * @example - * ```js - * init({ - * // ... - * authType: AuthType.TrustedAuthTokenCookieless, - * getAuthToken: () => { - * return fetch('https://my-backend.app/ts-token') - * .then((response) => response.json()) - * .then((data) => data.token); - * } - * ``` - * @version SDK: 1.22.0| ThoughtSpot: 9.3.0.cl, 9.5.1.sw - */ - TrustedAuthTokenCookieless("AuthServerCookieless"), - /** - * Use the ThoughtSpot login API to authenticate to the cluster directly. - * - * Warning: This feature is primarily intended for developer testing. It is - * strongly advised not to use this authentication method in production. - */ - Basic("Basic"); - - final String value; - const AuthType(this.value); -} - -/** - * - * This option does not apply to the classic homepage experience. - * To access the updated modular homepage, - * set `modularHomeExperience` to `true` - * (available as Early Access feature in 9.12.5.cl). - * - */ -enum HomeLeftNavItem { - /** - * @version SDK: 1.28.0| ThoughtSpot: 9.12.5.cl - */ - SearchData("search-data"), - /** - * @version SDK: 1.28.0| ThoughtSpot: 9.12.5.cl - */ - Home("insights-home"), - /** - * @version SDK: 1.28.0| ThoughtSpot: 9.12.5.cl - */ - Liveboards("liveboards"), - /** - * @version SDK: 1.28.0| ThoughtSpot: 9.12.5.cl - */ - Answers("answers"), - /** - * @version SDK: 1.28.0| ThoughtSpot: 9.12.5.cl - */ - MonitorSubscription("monitor-alerts"), - /** - * @version SDK: 1.28.0| ThoughtSpot: 9.12.5.cl - */ - SpotIQAnalysis("spotiq-analysis"), - /** - * @version SDK: 1.34.0| ThoughtSpot: 10.3.0.cl - */ - LiveboardSchedules("liveboard-schedules"); - - final String value; - const HomeLeftNavItem(this.value); -} - -/** - * A map of the supported runtime filter operations - */ -enum RuntimeFilterOp { - /** - * Equals - */ - EQ("EQ"), - /** - * Does not equal - */ - NE("NE"), - /** - * Less than - */ - LT("LT"), - /** - * Less than or equal to - */ - LE("LE"), - /** - * Greater than - */ - GT("GT"), - /** - * Greater than or equal to - */ - GE("GE"), - /** - * Contains - */ - CONTAINS("CONTAINS"), - /** - * Begins with - */ - BEGINS_WITH("BEGINS_WITH"), - /** - * Ends with - */ - ENDS_WITH("ENDS_WITH"), - /** - * Between, inclusive of higher value - */ - BW_INC_MAX("BW_INC_MAX"), - /** - * Between, inclusive of lower value - */ - BW_INC_MIN("BW_INC_MIN"), - /** - * Between, inclusive of both higher and lower value - */ - BW_INC("BW_INC"), - /** - * Between, non-inclusive - */ - BW("BW"), - /** - * Is included in this list of values - */ - IN("IN"), - /** - * Is not included in this list of values - */ - NOT_IN("NOT_IN"); - - final String value; - const RuntimeFilterOp(this.value); -} - -/** - * Home page module that can be hidden. - * **Note**: This option does not apply to the classic homepage. - * To access the updated modular homepage, set - * `modularHomeExperience` to `true` (available as Early Access feature in 9.12.5.cl). - * @version SDK: 1.28.0 | ThoughtSpot: 9.12.5.cl, 10.1.0.sw - */ -enum HomepageModule { - /** - * Search bar - */ - Search("SEARCH"), - /** - * kPI watchlist module - */ - Watchlist("WATCHLIST"), - /** - * favorite objects - */ - Favorite("FAVORITE"), - /** - * List of answers and Liveboards - */ - MyLibrary("MY_LIBRARY"), - /** - * Trending list - */ - Trending("TRENDING"), - /** - * Learning videos - */ - Learning("LEARNING"); - - final String value; - const HomepageModule(this.value); -} - -/** - * Event types emitted by the embedded ThoughtSpot application. - * - * To add an event listener use the corresponding - * {@link LiveboardEmbed.on} or {@link AppEmbed.on} or {@link SearchEmbed.on} method. - * @example - * ```js - * import { EmbedEvent } from '@thoughtspot/visual-embed-sdk'; - * // Or - * // const { EmbedEvent } = window.tsembed; - * - * // create the liveboard embed. - * - * liveboardEmbed.on(EmbedEvent.Drilldown, (drilldown) => { - * console.log('Drilldown event', drilldown); - * })); - * ``` - * - * If you are using React components for embedding, you can register to any - * events from the `EmbedEvent` list by using the `on` convention. - * For example,`onAlert`, `onCopyToClipboard` and so on. - * @example - * ```js - * // ... - * const MyComponent = ({ dataSources }) => { - * const onLoad = () => { - * console.log(EmbedEvent.Load, {}); - * }; - * - * return ( - * - * ); - * }; - * ``` - * @group Events - */ -enum EmbedEvent { - /** - * Rendering has initialized. - * @example - *```js - * liveboardEmbed.on(EmbedEvent.Init, showLoader) - * //show a loader - * function showLoader() { - * document.getElementById("loader"); - * } - *``` - * @returns timestamp - The timestamp when the event was generated. - */ - Init("init"), - /** - * Authentication has either succeeded or failed. - * @version SDK: 1.1.0 | ThoughtSpot: ts7.may.cl, 8.4.1.sw - * @example - *```js - * appEmbed.on(EmbedEvent.AuthInit, payload => { - * console.log('AuthInit', payload); - * }) - *``` - * @returns isLoggedIn - A Boolean specifying whether authentication was successful. - */ - AuthInit("authInit"), - /** - * The embed object container has loaded. - * @returns timestamp - The timestamp when the event was generated. - * @version SDK: 1.1.0 | ThoughtSpot: ts7.may.cl, 8.4.1.sw - * @example - *```js - * liveboardEmbed.on(EmbedEvent.Load, hideLoader) - * //hide loader - * function hideLoader() { - * document.getElementById("loader"); - * } - *``` - */ - Load("load"), - /** - * Data pertaining to an Answer or Liveboard is received - * @return data - The Answer or Liveboard data - * @version SDK: 1.1.0 | ThoughtSpot: ts7.may.cl, 8.4.1.sw - * @example - *```js - * liveboardEmbed.on(EmbedEvent.Data, payload => { - * console.log('data', payload); - * }) - *``` - * @important - */ - Data("data"), - /** - * Search query has been updated by the user. - * @version SDK: 1.4.0 | ThoughtSpot: ts7.sep.cl, 8.4.1.sw - * @example - *```js - * searchEmbed.on(EmbedEvent.QueryChanged, payload => console.log('data', payload)) - *``` - */ - QueryChanged("queryChanged"), - /** - * A drill-down operation has been performed. - * @version SDK: 1.1.0 | ThoughtSpot: ts7.may.cl, 8.4.1.sw - * @returns additionalFilters - Any additional filters applied - * @returns drillDownColumns - The columns on which drill down was performed - * @returns nonFilteredColumns - The columns that were not filtered - * @example - *```js - * searchEmbed.on(EmbedEvent.DrillDown, { - * points: { - * clickedPoint, - * selectedPoints: selectedPoint - * }, - * autoDrillDown: true, - * }) - *``` - * In this example, `VizPointDoubleClick` event is used for - * triggering the `DrillDown` event when an area or specific - * data point on a table or chart is double-clicked. - * @example - *```js - * searchEmbed.on(EmbedEvent.VizPointDoubleClick, (payload) => { - * console.log(payload); - * const clickedPoint = payload.data.clickedPoint; - * const selectedPoint = payload.data.selectedPoints; - * console.log('>>> called', clickedPoint); - * embed.trigger(HostEvent.DrillDown, { - * points: { - * clickedPoint, - * selectedPoints: selectedPoint - * }, - * autoDrillDown: true, - * }) - * }) - *``` - */ - Drilldown("drillDown"), - /** - * One or more data sources have been selected. - * @returns dataSourceIds - the list of data sources - * @version SDK: 1.1.0 | ThoughtSpot: ts7.may.cl, 8.4.1.sw - * @example - * ```js - * searchEmbed.on(EmbedEvent.DataSourceSelected, payload => { - * console.log('DataSourceSelected', payload); - * }) - * ``` - */ - DataSourceSelected("dataSourceSelected"), - /** - * One or more data columns have been selected. - * @returns columnIds - the list of columns - * @version SDK: 1.10.0 | ThoughtSpot: 8.2.0.cl, 8.4.1.sw - * @example - * ```js - * appEmbed.on(EmbedEvent.AddRemoveColumns, payload => { - * console.log('AddRemoveColumns', payload); - * }) - * ``` - */ - AddRemoveColumns("addRemoveColumns"), - /** - * A custom action has been triggered. - * @returns actionId - ID of the custom action - * @returns payload {@link CustomActionPayload} - Response payload with the - * Answer or Liveboard data - * @version SDK: 1.1.0 | ThoughtSpot: ts7.may.cl, 8.4.1.sw - * @example - * ```js - * appEmbed.on(EmbedEvent.customAction, payload => { - * const data = payload.data; - * if (data.id === 'insert Custom Action ID here') { - * console.log('Custom Action event:', data.embedAnswerData); - * } - * }) - * ``` - */ - CustomAction("customAction"), - /** - * Listen to double click actions on a visualization. - * @return ContextMenuInputPoints - Data point that is double-clicked - * @version SDK: 1.5.0 | ThoughtSpot: ts7.oct.cl, 7.2.1 - * @example - * ```js - * livebaordEmbed.on(EmbedEvent.VizPointDoubleClick, payload => { - * console.log('VizPointDoubleClick', payload); - * }) - * ``` - */ - VizPointDoubleClick("vizPointDoubleClick"), - /** - * Listen to clicks on a visualization in a Liveboard or Search result. - * @return viz, clickedPoint - metadata about the point that is clicked - * @version SDK: 1.11.0 | ThoughtSpot: 8.3.0.cl, 8.4.1.sw - * @important - * @example - * ```js - * embed.on(EmbedEvent.VizPointClick, ({data}) => { - * console.log( - * data.vizId, // viz id - * data.clickedPoint.selectedAttributes[0].value, - * data.clickedPoint.selectedAttributes[0].column.name, - * data.clickedPoint.selectedMeasures[0].value, - * data.clickedPoint.selectedMeasures[0].column.name, - * ) - * }); - * ``` - */ - VizPointClick("vizPointClick"), - /** - * An error has occurred. This event is fired for the following error types: - * - * `API` - API call failure error. - * `FULLSCREEN` - Error when presenting a Liveboard or visualization in full screen - * mode. `SINGLE_VALUE_FILTER` - Error due to multiple values in the single value - * filter. `NON_EXIST_FILTER` - Error due to a non-existent filter. - * `INVALID_DATE_VALUE` - Invalid date value error. - * `INVALID_OPERATOR` - Use of invalid operator during filter application. - * - * For more information, see https://developers.thoughtspot.com/docs/events-app-integration#errorType - * @returns error - An error object or message - * @version SDK: 1.1.0 | ThoughtSpot: ts7.may.cl, 8.4.1.sw - * @example - * ```js - * // API error - * SearchEmbed.on(EmbedEvent.Error, (error) => { - * console.log(error); - * // { type: "Error", data: { errorType: "API", error: { message: '...', error: '...' } } } - * }); - * ``` - * @example - * ```js - * // Fullscreen error (Errors during presenting of a liveboard) - * LiveboardEmbed.on(EmbedEvent.Error, (error) => { - * console.log(error); - * // { type: "Error", data: { errorType: "FULLSCREEN", error: { - * // message: "Fullscreen API is not enabled", - * // stack: "..." - * // } }} - * }) - * ``` - */ - Error("Error"), - /** - * The embedded object has sent an alert. - * @returns alert - An alert object - * @version SDK: 1.1.0 | ThoughtSpot: ts7.may.cl, 8.4.1.sw - * @example - * ```js - * searchEmbed.on(EmbedEvent.Alert) - * ``` - */ - Alert("alert"), - /** - * The ThoughtSpot authentication session has expired. - * @version SDK: 1.4.0 | ThoughtSpot: ts7.sep.cl, 8.4.1.sw - * @example - *```js - * appEmbed.on(EmbedEvent.AuthExpire, showAuthExpired) - * //show auth expired banner - * function showAuthExpired() { - * document.getElementById("authExpiredBanner"); - * } - *``` - */ - AuthExpire("ThoughtspotAuthExpired"), - /** - * ThoughtSpot failed to validate the auth session. - * @hidden - */ - AuthFailure("ThoughtspotAuthFailure"), - /** - * ThoughtSpot failed to re validate the auth session. - * @hidden - */ - IdleSessionTimeout("IdleSessionTimeout"), - /** - * ThoughtSpot failed to validate the auth session. - * @hidden - */ - AuthLogout("ThoughtspotAuthLogout"), - /** - * The height of the embedded Liveboard or visualization has been computed. - * @returns data - The height of the embedded Liveboard or visualization - * @hidden - */ - EmbedHeight("EMBED_HEIGHT"), - /** - * The center of visible iframe viewport is calculated. - * @returns data - The center of the visible Iframe viewport. - * @hidden - */ - EmbedIframeCenter("EmbedIframeCenter"), - /** - * Emitted when the **Get Data** action is initiated. - * Applicable to `SearchBarEmbed` only. - * @version SDK: 1.19.0 | ThoughtSpot: 9.0.0.cl, 9.0.1.sw - * @example - *```js - * searchbarEmbed.on(EmbedEvent.GetDataClick) - * .then(data => { - * console.log('Answer Data:', data); - * }) - *``` - */ - GetDataClick("getDataClick"), - /** - * Detects the route change. - * @version SDK: 1.7.0 | ThoughtSpot: 8.0.0.cl, 8.4.1.sw - * @example - *```js - * searchEmbed.on(EmbedEvent.RouteChange, payload => - * console.log('data', payload)) - *``` - */ - RouteChange("ROUTE_CHANGE"), - /** - * The v1 event type for Data - * @hidden - */ - V1Data("exportVizDataToParent"), - /** - * Emitted when the embed does not have cookie access. This happens - * when Safari and other Web browsers block third-party cookies - * are blocked by default. `NoCookieAccess` can trigger. - * @example - *```js - * appEmbed.on(EmbedEvent.NoCookieAccess) - *``` - * @version SDK: 1.1.0 | ThoughtSpot: ts7.may.cl, 7.2.1.sw - */ - NoCookieAccess("noCookieAccess"), - /** - * Emitted when SAML is complete - * @private - * @hidden - */ - SAMLComplete("samlComplete"), - /** - * Emitted when any modal is opened in the app - * @version SDK: 1.6.0 | ThoughtSpot: ts8.nov.cl, 8.4.1.sw - * @example - *```js - * appEmbed.on(EmbedEvent.DialogOpen, payload => { - * console.log('dialog open', payload); - * }) - *``` - */ - DialogOpen("dialog-open"), - /** - * Emitted when any modal is closed in the app - * @version SDK: 1.6.0 | ThoughtSpot: ts8.nov.cl, 8.4.1.sw - * @example - *```js - * appEmbed.on(EmbedEvent.DialogClose, payload => { - * console.log('dialog close', payload); - * }) - *``` - */ - DialogClose("dialog-close"), - /** - * Emitted when the Liveboard shell loads. - * You can use this event as a hook to trigger - * other events on the rendered Liveboard. - * @version SDK: 1.9.1 | ThoughtSpot: 8.1.0.cl, 8.4.1.sw - * @example - *```js - * liveboardEmbed.on(EmbedEvent.LiveboardRendered, payload => { - console.log('Liveboard is rendered', payload); - }) - *``` - * The following example shows how to trigger - * `SetVisibleVizs` event using LiveboardRendered embed event: - * @example - *```js - * const embedRef = useEmbedRef(); - * const onLiveboardRendered = () => { - * embed.trigger(HostEvent.SetVisibleVizs, ['viz1', 'viz2']); - * }; - *``` - */ - LiveboardRendered("PinboardRendered"), - /** - * Emits all events. - * @Version SDK: 1.10.0 | ThoughtSpot: 8.2.0.cl, 8.4.1.sw - * @example - *```js - * appEmbed.on(EmbedEvent.ALL, payload => { - * console.log('Embed Events', payload) - * }) - *``` - */ - ALL("*"), - /** - * Emitted when an Answer is saved in the app - * @Version SDK: 1.11.0 | ThoughtSpot: 8.3.0.cl, 8.4.1.sw - * @example - *```js - * //Emit when action starts - * searchEmbed.on(EmbedEvent.Save, payload => { - * console.log('Save', payload) - * }, { - * start: true - * }) - * //emit when action ends - * searchEmbed.on(EmbedEvent.Save, payload => { - * console.log('Save', payload) - * }) - *``` - */ - Save("save"), - /** - * Emitted when the download action is triggered on an Answer. - * - * **Note**: This event is deprecated in v1.21.0. - * To fire an event when a download action is initiated on a chart or table, - * use `EmbedEvent.DownloadAsPng`, `EmbedEvent.DownloadAsPDF`, - * `EmbedEvent.DownloadAsCSV`, or `EmbedEvent.DownloadAsXLSX` - * @version SDK: 1.11.0 | ThoughtSpot: 8.3.0.cl, 8.4.1.sw - * @example - *```js - * liveboardEmbed.on(EmbedEvent.Download, { - * vizId: '730496d6-6903-4601-937e-2c691821af3c' - * }) - *``` - */ - Download("download"), - /** - * Emitted when the download action is triggered on an Answer. - * @version SDK: 1.21.0 | ThoughtSpot: 9.2.0.cl, 9.4.0.sw - * @example - *```js - * //emit when action starts - * searchEmbed.on(EmbedEvent.DownloadAsPng, payload => { - * console.log('download PNG', payload)}, {start: true }) - * //emit when action ends - * searchEmbed.on(EmbedEvent.DownloadAsPng, payload => { - * console.log('download PNG', payload)}) - *``` - */ - DownloadAsPng("downloadAsPng"), - /** - * Emitted when the Download as PDF action is triggered on an Answer - * @version SDK: 1.11.0 | ThoughtSpot: 8.3.0.cl, 8.4.1.sw - * @example - *```js - * //emit when action starts - * searchEmbed.on(EmbedEvent.DownloadAsPdf, payload => { - * console.log('download PDF', payload)}, {start: true }) - * //emit when action ends - * searchEmbed.on(EmbedEvent.DownloadAsPdf, payload => { - * console.log('download PDF', payload)}) - *``` - */ - DownloadAsPdf("downloadAsPdf"), - /** - * Emitted when the Download as CSV action is triggered on an Answer. - * @version SDK: 1.11.0 | ThoughtSpot: 8.3.0.cl, 8.4.1.sw - * @example - *```js - * //emit when action starts - * searchEmbed.on(EmbedEvent.DownloadAsCSV, payload => { - * console.log('download CSV', payload)}, {start: true }) - * //emit when action ends - * searchEmbed.on(EmbedEvent.DownloadAsCSV, payload => { - * console.log('download CSV', payload)}) - *``` - */ - DownloadAsCsv("downloadAsCsv"), - /** - * Emitted when the Download as XLSX action is triggered on an Answer. - * @version SDK: 1.11.0 | ThoughtSpot: 8.3.0.cl, 8.4.1.sw - * @example - *```js - * //emit when action starts - * searchEmbed.on(EmbedEvent.DownloadAsXlsx, payload => { - * console.log('download Xlsx', payload)}, { start: true }) - * //emit when action ends - * searchEmbed.on(EmbedEvent.DownloadAsXlsx, payload => { - * console.log('download Xlsx', payload)}) - *``` - */ - DownloadAsXlsx("downloadAsXlsx"), - /** - * Emitted when an Answer is deleted in the app - * @version SDK: 1.11.0 | ThoughtSpot: 8.3.0.cl, 8.4.1.sw - * @example - *```js - * //emit when action starts - * appEmbed.on(EmbedEvent.AnswerDelete, payload => { - * console.log('delete answer', payload)}, {start: true }) - * //trigger when action is completed - * appEmbed.on(EmbedEvent.AnswerDelete, payload => { - * console.log('delete answer', payload)}) - *``` - */ - AnswerDelete("answerDelete"), - /** - * Emitted when a user initiates the Pin action to - * add an Answer to a Liveboard. - * @version SDK: 1.11.0 | ThoughtSpot: 8.3.0.cl, 8.4.1.sw - * @example - *```js - * //emit when action starts - * searchEmbed.on(EmbedEvent.Pin, payload => { - * console.log('pin', payload) - * }, { - * start: true - * }) - * //emit when action ends - * searchEmbed.on(EmbedEvent.Pin, payload => { - * console.log('pin', payload) - * }) - *``` - */ - Pin("pin"), - /** - * Emitted when SpotIQ analysis is triggered - * @version SDK: 1.11.0 | ThoughtSpot: 8.3.0.cl, 8.4.1.sw - * @example - *```js - * //emit when action starts - * searchEmbed.on(EmbedEvent.SpotIQAnalyze, payload => { - * console.log('SpotIQAnalyze', payload) - * }, { - * start: true - * }) - * //emit when action ends - * searchEmbed.on(EmbedEvent.SpotIQAnalyze, payload => { - * console.log('SpotIQ analyze', payload) - * }) - *``` - */ - SpotIQAnalyze("spotIQAnalyze"), - /** - * Emitted when a user shares an object with another user or group - * @version SDK: 1.11.0 | ThoughtSpot: 8.3.0.cl, 8.4.1.sw - * @example - *```js - * //emit when action starts - * searchEmbed.on(EmbedEvent.Share, payload => { - * console.log('Share', payload) - * }, { - * start: true - * }) - * //emit when action ends - * searchEmbed.on(EmbedEvent.Share, payload => { - * console.log('Share', payload) - * }) - *``` - */ - Share("share"), - /** - * Emitted when a user clicks the **Include** action to include a specific value or - * data on a chart or table. - * @version SDK: 1.11.0 | ThoughtSpot: 8.3.0.cl, 8.4.1.sw - * @example - *```js - * appEmbed.on(EmbedEvent.DrillInclude, payload => { - * console.log('Drill include', payload); - * }) - *``` - */ - DrillInclude("context-menu-item-include"), - /** - * Emitted when a user clicks the **Exclude** action to exclude a specific value or - * data on a chart or table - * @version SDK: 1.11.0 | ThoughtSpot: 8.3.0.cl, 8.4.1.sw - * @example - *```js - * appEmbed.on(EmbedEvent.DrillExclude, payload => { - * console.log('Drill exclude', payload); - * }) - *``` - */ - DrillExclude("context-menu-item-exclude"), - /** - * Emitted when a column value is copied in the embedded app. - * @version SDK: 1.11.0 | ThoughtSpot: 8.3.0.cl, 8.4.1.sw - * @example - *```js - * seachEmbed.on(EmbedEvent.CopyToClipboard, payload => { - * console.log('copy to clipboard', payload); - * }) - *``` - */ - CopyToClipboard("context-menu-item-copy-to-clipboard"), - /** - * Emitted when a user clicks the **Update TML** action on - * embedded Liveboard. - * @version SDK: 1.11.0 | ThoughtSpot: 8.3.0.cl, 8.4.1.sw - * @example - *```js - * liveboardEmbed.on(EmbedEvent.UpdateTML) - * }) - *``` - */ - UpdateTML("updateTSL"), - /** - * Emitted when a user clicks the **Edit TML** action - * on an embedded Liveboard. - * @version SDK: 1.11.0 | ThoughtSpot: 8.3.0.cl, 8.4.1.sw - * @example - *```js - * appEmbed.on(EmbedEvent.EditTML, payload => { - * console.log('Edit TML', payload); - * }) - *``` - */ - EditTML("editTSL"), - /** - * Emitted when the **Export TML** action is triggered on an - * an embedded object in the app - * @version SDK: 1.11.0 | ThoughtSpot: 8.3.0.cl, 8.4.1.sw - * @example - *```js - * //emit when action starts - * searchEmbed.on(EmbedEvent.ExportTML, payload => { - * console.log('Export TML', payload)}, { start: true }) - * //emit when action ends - * searchEmbed.on(EmbedEvent.ExportTML, payload => { - * console.log('Export TML', payload)}) - *``` - */ - ExportTML("exportTSL"), - /** - * Emitted when an Answer is saved as a View. - * @version SDK: 1.11.0 | ThoughtSpot: 8.3.0.cl, 8.4.1.sw - * @example - *```js - * appEmbed.on(EmbedEvent.SaveAsView, payload => { - * console.log('View', payload); - * }) - *``` - */ - SaveAsView("saveAsView"), - /** - * Emitted when the user creates a copy of an Answer. - * @version SDK: 1.11.0 | ThoughtSpot: 8.3.0.cl, 8.4.1.sw - * @example - *```js - * //emit when action starts - * appEmbed.on(EmbedEvent.CopyAEdit, payload => { - * console.log('Copy and edit', payload)}, {start: true }) - * //emit when action ends - * appEmbed.on(EmbedEvent.CopyAEdit, payload => { - * console.log('Copy and edit', payload)}) - *``` - */ - CopyAEdit("copyAEdit"), - /** - * Emitted when a user clicks *Show underlying data* on an Answer. - * @version SDK: 1.11.0 | ThoughtSpot: 8.3.0.cl, 8.4.1.sw - * @example - *```js - * liveboardEmbed.on(EmbedEvent.ShowUnderlyingData, payload => { - * console.log('show data', payload); - * }) - *``` - */ - ShowUnderlyingData("showUnderlyingData"), - /** - * Emitted when an Answer is switched to a chart or table view. - * @version SDK: 1.11.0 | ThoughtSpot: 8.3.0.cl, 8.4.1.sw - * @example - *```js - * searchEmbed.on(EmbedEvent.AnswerChartSwitcher, payload => { - * console.log('switch view', payload); - * }) - *``` - */ - AnswerChartSwitcher("answerChartSwitcher"), - /** - * Internal event to communicate the initial settings back to the ThoughtSpot app - * @hidden - */ - APP_INIT("appInit"), - /** - * Emitted when a user clicks **Show Liveboard details** on a Liveboard - * @version SDK: 1.15.0 | ThoughtSpot: 8.7.0.cl, 8.8.1.sw - * @example - *```js - * liveboardEmbed.on(EmbedEvent.AnswerChartSwitcher, payload => { - * console.log('Liveboard details', payload); - * }) - *``` - */ - LiveboardInfo("pinboardInfo"), - /** - * Emitted when a user clicks on the Favorite icon on a Liveboard - * @version SDK: 1.15.0 | ThoughtSpot: 8.7.0.cl, 8.8.1.sw - * @example - *```js - * liveboardEmbed.on(EmbedEvent.AddToFavorites, payload => { - * console.log('favorites', payload); - * }) - *``` - */ - AddToFavorites("addToFavorites"), - /** - * Emitted when a user clicks **Schedule** on a Liveboard - * @version SDK: 1.15.0 | ThoughtSpot: 8.7.0.cl, 8.8.1.sw - * @example - *```js - * liveboardEmbed.on(EmbedEvent.Schedule, payload => { - * console.log(`Liveboard schedule', payload); - * }) - *``` - */ - Schedule("subscription"), - /** - * Emitted when a user clicks **Edit** on a Liveboard or visualization - * @version SDK: 1.15.0 | ThoughtSpot: 8.7.0.cl, 8.8.1.sw - * @example - *```js - * liveboardEmbed.on(EmbedEvent.Edit, payload => { - * console.log(`Liveboard edit', payload); - * }) - *``` - */ - Edit("edit"), - /** - * Emitted when a user clicks *Make a copy* on a Liveboard - * @version SDK: 1.15.0 | ThoughtSpot: 8.7.0.cl, 8.8.1.sw - * @example - *```js - * liveboardEmbed.on(EmbedEvent.MakeACopy, payload => { - * console.log(`Copy', payload); - * }) - *``` - */ - MakeACopy("makeACopy"), - /** - * Emitted when a user clicks **Present** on a Liveboard or visualization - * @version SDK: 1.15.0 | ThoughtSpot: 8.7.0.cl, 8.8.1.sw - * @example - *```js - * liveboardEmbed.on(EmbedEvent.Present) - *``` - * @example - *```js - * liveboardEmbed.on(EmbedEvent.Present, { - * vizId: '730496d6-6903-4601-937e-2c691821af3c'}) - * }) - *``` - */ - Present("present"), - /** - * Emitted when a user clicks **Delete** on a visualization - * @version SDK: 1.15.0 | ThoughtSpot: 8.7.0.cl, 8.8.1.sw - * @example - *```js - * liveboardEmbed.on(EmbedEvent.Delete, - * {vizId: '730496d6-6903-4601-937e-2c691821af3c'}) - *``` - */ - Delete("delete"), - /** - * Emitted when a user clicks Manage schedules on a Liveboard - * @version SDK: 1.15.0 | ThoughtSpot: 8.7.0.cl, 8.8.1.sw - * @example - *```js - * liveboardEmbed.on(EmbedEvent.SchedulesList) - *``` - */ - SchedulesList("schedule-list"), - /** - * Emitted when a user clicks **Cancel** in edit mode on a Liveboard - * @version SDK: 1.15.0 | ThoughtSpot: 8.7.0.cl, 8.8.1.sw - * @example - *```js - * liveboardEmbed.on(EmbedEvent.Cancel) - *``` - */ - Cancel("cancel"), - /** - * Emitted when a user clicks **Explore** on a visualization - * @version SDK: 1.15.0 | ThoughtSpot: 8.7.0.cl, 8.8.1.sw - * @example - *```js - * liveboardEmbed.on(EmbedEvent.Explore, { - * vizId: '730496d6-6903-4601-937e-2c691821af3c'}) - *``` - */ - Explore("explore"), - /** - * Emitted when a user clicks **Copy link** action on a visualization. - * @version SDK: 1.15.0 | ThoughtSpot: 8.7.0.cl, 8.8.1.sw - * @example - *```js - * liveboardEmbed.on(EmbedEvent.CopyLink, { - * vizId: '730496d6-6903-4601-937e-2c691821af3c'}) - *``` - */ - CopyLink("embedDocument"), - /** - * Emitted when a user interacts with cross filters on a - * visualization or Liveboard. - * @version SDK: 1.21.0 | ThoughtSpot: 9.2.0.cl, 9.5.0.sw - * @example - *```js - * liveboardEmbed.on(EmbedEvent.CrossFilterChanged, { - * vizId: '730496d6-6903-4601-937e-2c691821af3c'}) - *``` - */ - CrossFilterChanged("cross-filter-changed"), - /** - * Emitted when a user right clicks on a visualization (chart or table) - * @version SDK: 1.21.0 | ThoughtSpot: 9.2.0.cl, 9.5.0.sw - * @example - *```js - * LiveboardEmbed.on(EmbedEvent.VizPointRightClick, payload => { - * console.log('VizPointClick', payload) - * }) - *``` - */ - VizPointRightClick("vizPointRightClick"), - /** - * Emitted when a user clicks **Insert to slide** on a visualization - * @hidden - */ - InsertIntoSlide("insertInToSlide"), - /** - * Emitted when a user changes any filter on a Liveboard. - * Returns filter type and name, column name and ID, and runtime - * filter details. - * @example - * - *```js - * LiveboardEmbed.on(EmbedEvent.FilterChanged, (payload) => { - * console.log('payload', payload); - * }) - * - * @version SDK: 1.23.0 | ThoughtSpot: 9.4.0.cl, 9.5.0.sw - */ - FilterChanged("filterChanged"), - /** - * Emitted when a user clicks the **Go** button to initiate - * a Natural Language Search query - * @version SDK : 1.26.0 | ThoughtSpot: 9.7.0.cl, 9.8.0.sw - */ - SageEmbedQuery("sageEmbedQuery"), - /** - * Emitted when a user selects a data source on the embedded - * Natural Language Search interface. - * - * @version SDK : 1.26.0 | ThoughtSpot: 9.7.0.cl, 9.8.0.sw - */ - SageWorksheetUpdated("sageWorksheetUpdated"), - /** - * Emitted when a user updates a connection on the **Data** page - * @version SDK : 1.27.0 | ThoughtSpot: 9.8.0.cl, 9.8.0.sw - */ - UpdateConnection("updateConnection"), - /** - * Emitted when a user updates a connection on the **Data** page - * @version SDK : 1.27.0 | ThoughtSpot: 9.8.0.cl, 9.8.0.sw - */ - CreateConnection("createConnection"), - /** - * Emitted when name, status (private or public) or filter values of a - * Personalised view is updated. - * @returns viewName: string - * @returns viewId: string - * @returns liveboardId: string - * @returns isPublic: boolean - * @version SDK : 1.26.0 | ThoughtSpot: 9.7.0.cl, 9.8.0.sw - */ - UpdatePersonalisedView("updatePersonalisedView"), - /** - * Emitted when a Personalised view is saved. - * @returns viewName: string - * @returns viewId: string - * @returns liveboardId: string - * @returns isPublic: boolean - * @version SDK : 1.26.0 | ThoughtSpot: 9.7.0.cl, 9.8.0.sw - */ - SavePersonalisedView("savePersonalisedView"), - /** - * Emitted when a Liveboard is reset. - * @returns viewName: string - * @returns viewId: string - * @returns liveboardId: string - * @returns isPublic: boolean - * @version SDK : 1.26.0 | ThoughtSpot: 9.7.0.cl, 9.8.0.sw - */ - ResetLiveboard("resetLiveboard"), - /** - * Emitted when a PersonalisedView is deleted. - * @returns views: string[] - * @returns liveboardId: string - * @version SDK : 1.26.0 | ThoughtSpot: 9.7.0.cl, 9.8.0.sw - */ - DeletePersonalisedView("deletePersonalisedView"), - /** - * Emitted when a user creates a Worksheet. - * @version SDK : 1.27.0 | ThoughtSpot: 9.8.0.cl, 9.8.0.sw - */ - CreateWorksheet("createWorksheet"), - /** - * Emitted when the *Ask Sage* is initialized. - * @returns viewName: string - * @returns viewId: string - * @returns liveboardId: string - * @returns isPublic: boolean - * @version SDK : 1.29.0 | ThoughtSpot Cloud: 9.12.0.cl - */ - AskSageInit("AskSageInit"), - /** - * Emitted when a Liveboard or visualization is renamed. - * @version SDK : 1.28.0 | ThoughtSpot: 9.10.5.cl, 10.1.0.sw - */ - Rename("rename"), - /** - * - * This event can be emitted to intercept search execution initiated by - * the users and implement the logic to allow or restrict search execution. - * You can can also show custom error text if the search query must be - * restricted due to your application or business requirements. - - * Prerequisite: Set `isOnBeforeGetVizDataInterceptEnabled` to `true` - * for this embed event to get emitted. - * @param: payload - * @param: responder - * Contains elements that lets developers define whether ThoughtSpot - * should run the search, and if not, what error message - * should be shown to the user. - * - * execute: When execute returns `true`, the search will be run. - * When execute returns `false`, the search will not be executed. - * - * error: Developers can customize the error message text when `execute` - * returns `false` using the error parameter in responder. - * @version SDK : 1.29.0 | ThoughtSpot : 10.3.0.cl - * @example - *```js - * .on(EmbedEvent.OnBeforeGetVizDataIntercept, - * (payload, responder) => { - * responder({ - * data: { - * execute:false, - * error: { - * //Provide a custom error message to explain to your end user - * //why their search did not run - * errorText: "This search query cannot be run. - * Please contact your administrator for more details." - * } - * }}) - * }) - * ``` - * - *```js - * .on(EmbedEvent.OnBeforeGetVizDataIntercept, - * (payload, responder) => { - * const query = payload.data.data.answer.search_query - * responder({ - * data: { - * // returns true as long as the query does not include - * // both the 'sales' AND the 'county' column - * execute: !(query.includes("sales")&&query.includes("county")), - * error: { - * //Provide a custom error message to explain to your end user - * // why their search did not run, and which searches are accepted by your custom logic. - * errorText: "You can't use this query :" + query + ". - * The 'sales' measures can never be used at the 'county' level. - * Please try another measure, or remove 'county' from your search." - * } - * }}) - * }) - *``` - */ - OnBeforeGetVizDataIntercept("onBeforeGetVizDataIntercept"), - /** - * Emitted when parameter changes in an Answer - * or Liveboard. - * ```js - * liveboardEmbed.on(EmbedEvent.ParameterChanged, (payload) => { - * console.log('payload', payload); - * }) - *``` - * @version SDK : 1.29.0 | ThoughtSpot : 10.3.0.cl - */ - ParameterChanged("parameterChanged"), - /** - * Emitted when the table viz renders. - * You can use this event as a hook to trigger - * other events on the rendered table viz data. - * @example - * ```js - * searchEmbed.on(EmbedEvent.TableVizRendered, (payload) => { - * console.log(payload); - * const columnDataLite = payload.data.data.columnDataLite; - * columnDataLite[0].dataValue[0]="new fob"; - * console.log('>>> new Data', columnDataLite); - * searchEmbed.trigger(HostEvent.TransformTableVizData, columnDataLite); - * }) - * ``` - * @version SDK: 1.35.12 | ThoughtSpot: 10.7.0.cl - */ - TableVizRendered("TableVizRendered"), - /** - * Emitted when the liveboard is created from pin modal or Liveboard list page. - * You can use this event as a hook to trigger - * other events on liveboard creation. - * - * ```js - * liveboardEmbed.on(EmbedEvent.CreateLiveboard, (payload) => { - * console.log('payload', payload); - * }) - *``` - * @version SDK : 1.36.0 | ThoughtSpot : 10.8.0.cl - */ - CreateLiveboard("createLiveboard"); - - final String value; - const EmbedEvent(this.value); -} - -/** - * Event types that can be triggered by the host application - * to the embedded ThoughtSpot app. - * - * To trigger an event use the corresponding - * {@link LiveboardEmbed.trigger} or {@link AppEmbed.trigger} or {@link - * SearchEmbed.trigger} method. - * @example - * ```js - * import { HostEvent } from '@thoughtspot/visual-embed-sdk'; - * // Or - * // const { HostEvent } = window.tsembed; - * - * // create the liveboard embed. - * - * liveboardEmbed.trigger(HostEvent.UpdateRuntimeFilters, [ - * { columnName: 'state, operator: RuntimeFilterOp.EQ, values: ['california']} - * ]); - * ``` - * @example - * If using React components to embed, use the format shown in this example: - * - * ```js - * const selectVizs = () => { - * embedRef.current.trigger(HostEvent.SetVisibleVizs, [ - * "715e4613-c891-4884-be44-aa8d13701c06", - * "3f84d633-e325-44b2-be25-c6650e5a49cf" - * ]); - * }; - * ``` - * - * - * You can also attach an Embed event to a Host event to trigger - * a specific action as shown in this example: - * @example - * ```js - * const EmbeddedComponent = () => { - * const embedRef = useRef(null); // import { useRef } from react - * const onLiveboardRendered = () => { - * embedRef.current.trigger(HostEvent.SetVisibleVizs, ['viz1', 'viz2']); - * }; - * - * return ( - * - * ); - * } - * ``` - * @group Events - */ -enum HostEvent { - /** - * Triggers a search operation with the search tokens specified in - * the search query string. - * Supported in `AppEmbed` and `SearchEmbed` deployments. - * Includes the following properties: - * @param - `searchQuery` - query string with search tokens - * @param - `dataSources` - Data source GUID to Search on - * - Although an array, only a single source - * is supported. - * @param - `execute` - executes search and updates the existing query - * @example - * ```js - * searchembed.trigger(HostEvent.Search, { - searchQuery: "[sales] by [item type]", - dataSources: ["cd252e5c-b552-49a8-821d-3eadaa049cca"], - execute: true - }); - * ``` - */ - Search("search"), - /** - * Triggers a drill on certain points of the specified column - * Includes the following properties: - * @param - points - an object containing selectedPoints/clickedPoints - * to drill to. For example, { selectedPoints: []} - * @param - columnGuid - Optional. GUID of the column to drill - * by. If not provided it will auto drill by the configured - * column. - * @param - autoDrillDown - Optional. If true, the drill down will be - * done automatically on the most popular column. - * @param - vizId [TS >= 9.8.0] - Optional. The GUID of the visualization to drill - * in case of a Liveboard. - * @example - * ```js - * searchEmbed.on(EmbedEvent.VizPointDoubleClick, (payload) => { - * console.log(payload); - * const clickedPoint = payload.data.clickedPoint; - * const selectedPoint = payload.data.selectedPoints; - * console.log('>>> called', clickedPoint); - * searchEmbed.trigger(HostEvent.DrillDown, { - * points: { - * clickedPoint, - * selectedPoints: selectedPoint - * }, - * autoDrillDown: true, - * }); - * }) - * ``` - * @example - * ```js - * // Works with TS 9.8.0 and above - * - * liveboardEmbed.on(EmbedEvent.VizPointDoubleClick, (payload) => { - * console.log(payload); - * const clickedPoint = payload.data.clickedPoint; - * const selectedPoint = payload.data.selectedPoints; - * console.log('>>> called', clickedPoint); - * liveboardEmbed.trigger(HostEvent.DrillDown, { - * points: { - * clickedPoint, - * selectedPoints: selectedPoint - * }, - * columnGuid: "", - * vizId: payload.data.vizId - * }); - * }) - * ``` - * @version SDK: 1.5.0 | ThoughtSpot: ts7.oct.cl, 7.2.1 - */ - DrillDown("triggerDrillDown"), - /** - * Apply filters - * @hidden - */ - Filter("filter"), - /** - * Reload the Answer or visualization - * @hidden - */ - Reload("reload"), - /** - * Get iframe URL for the current embed view on the playground. - * Developers can use this URL to embed a ThoughtSpot object - * in apps like Salesforce or Sharepoint. - * @example - * ```js - * const url = embed.trigger(HostEvent.GetIframeUrl); - * console.log("iFrameURL",url); - * ``` - * @version SDK: 1.35.0 | ThoughtSpot: 10.4.0.cl - */ - GetIframeUrl("GetIframeUrl"), - /** - * Display specific visualizations on a Liveboard. - * @param - An array of GUIDs of the visualization to show. The visualization IDs not passed - * in this parameter will be hidden. - * @example - * ```js - * liveboardEmbed.trigger(HostEvent.SetVisibleVizs, [ - * '730496d6-6903-4601-937e-2c691821af3c', - * 'd547ec54-2a37-4516-a222-2b06719af726']) - * ``` - * @version SDK: 1.6.0 | ThoughtSpot: ts8.nov.cl, 8.4.1.sw - */ - SetVisibleVizs("SetPinboardVisibleVizs"), - /** - * Set a Liveboard tab as an active tab. - * @param - tabId - string of id of Tab to show - * @example - * ```js - * liveboardEmbed.trigger(HostEvent.SetActiveTab,{ - * tabId:'730496d6-6903-4601-937e-2c691821af3c' - * }) - * ``` - * @version SDK: 1.24.0 | ThoughtSpot: 9.5.0.cl, 9.5.1-sw - */ - SetActiveTab("SetActiveTab"), - /** - * Updates the runtime filters applied on a Liveboard. The filter - * attributes passed with this event are appended to the existing runtime - * filters applied on a Liveboard. - * - * **Note**: `HostEvent.UpdateRuntimeFilters` is supported in `LiveboardEmbed` - * and `AppEmbed` only. In full application embedding, this event updates - * the runtime filters applied on the Liveboard and saved Answer objects. - * - * @param - Pass an array of {@link RuntimeFilter} with the following attributes: - * `columnName` - _String_. The name of the column to filter on. - * - * `operator` - {@link RuntimeFilterOp} to apply. For more information, - * see link:https://developers.thoughtspot.com/docs/?pageid=runtime-filters#rtOperator[Developer Documentation]. - * - * `values` - List of operands. Some operators such as EQ and LE allow a - * single value, whereas BW and IN accept multiple values. - * - * **Note**: Updating runtime filters resets the ThoughtSpot - * object to its original state and applies new filter conditions. - * Any user changes (like drilling into a visualization) - * will be cleared, restoring the original visualization - * with the updated filters. - * - - * @example - * ```js - * liveboardEmbed.trigger(HostEvent.UpdateRuntimeFilters, [ - * {columnName: "state",operator: RuntimeFilterOp.EQ,values: ["michigan"]}, - * {columnName: "item type",operator: RuntimeFilterOp.EQ,values: ["Jackets"]} - * ]) - * ``` - * @version SDK: 1.9.0 | ThoughtSpot: 8.1.0.cl, 8.4.1.sw - * @important - */ - UpdateRuntimeFilters("UpdateRuntimeFilters"), - /** - * Navigate to a specific page in the embedded ThoughtSpot application. - * This is the same as calling `appEmbed.navigateToPage(path, true)`. - * @param - `path` - the path to navigate to to go forward or back. The path value can - * be a number; for example, `1`, `-1`. - * @example - * ```js - * appEmbed.navigateToPage(-1) - * ``` - * @version SDK: 1.12.0 | ThoughtSpot 8.4.0.cl, 8.4.1.sw - */ - Navigate("Navigate"), - /** - * Open the filter panel for a particular column. - * Works with Search and Liveboard embed. - * @param - { columnId: string, - * name: string, - * type: INT64/CHAR/DATE, - * dataType: ATTRIBUTE/MEASURE } - * @example - * ```js - * searchEmbed.trigger(HostEvent.OpenFilter, - * { columnId: '', name: 'column name', type: 'INT64', dataType: 'ATTRIBUTE'}) - * LiveboardEmbed.trigger(HostEvent.OpenFilter, - * { columnId: ''}) - * ``` - * @version SDK: 1.21.0 | ThoughtSpot: 9.2.0.cl - */ - OpenFilter("openFilter"), - /** - * Add columns to the current search query. - * @param - { columnIds: string[] } - * @example - * ```js - * searchEmbed.trigger(HostEvent.AddColumns, { columnIds: ['',''] }) - * ``` - * @version SDK: 1.21.0 | ThoughtSpot: 9.2.0.cl - */ - AddColumns("addColumns"), - /** - * Remove a column from the current search query. - * @param - { columnId: string } - * @example - * ```js - * searchEmbed.trigger(HostEvent.RemoveColumn, { columnId: '' }) - * ``` - * @version SDK: 1.21.0 | ThoughtSpot: 9.2.0.cl - */ - RemoveColumn("removeColumn"), - /** - * Get the transient state of a Liveboard as encoded content. - * This includes unsaved and ad hoc changes such as - * Liveboard filters, runtime filters applied on visualizations on a - * Liveboard, and Liveboard layout, changes to visualizations such as - * sorting, toggling of legends, and data drill down. - * For more information, see - * link:https://developers.thoughtspot.com/docs/fetch-data-and-report-apis#transient-lb-content[Liveboard data with unsaved changes]. - * @example - * ```js - * liveboardEmbed.trigger(HostEvent.getExportRequestForCurrentPinboard).then( - * data=>console.log(data)) - * ``` - * @version SDK: 1.13.0 | ThoughtSpot: 8.5.0.cl, 8.8.1.sw - */ - getExportRequestForCurrentPinboard("getExportRequestForCurrentPinboard"), - /** - * Trigger **Pin** action on an embedded object. - * If no parameters are defined, the pin action is triggered - * for the Answer that the user is currently on - * and a modal opens for Liveboard selection. - * To add an Answer or visualization to a Liveboard programmatically without - * showing requiring additional user input via *Pin to Liveboard* modal, define - * the following parameters: - * - * @param - * `vizId`- GUID of the saved Answer or visualization to pin to a Liveboard. - * Optional when pinning a new chart or table generated from a Search query. - * @param - * `liveboardID` - GUID of the Liveboard to pin an Answer. If there is no Liveboard, - * specify the `newLiveboardName` parameter to create a new Liveboard. - * @param - * `tabId` - GUID of the Liveboard tab. Adds the Answer to the Liveboard tab - * specified in the code. - * @param - * `newVizName` - Name string for the Answer or visualization. If defined, - * this parameter adds a new visualization object or creates a copy of the - * Answer or visualization specified in `vizId`. - * Required attribute. - * @param - * `newLiveboardName` - Name string for the Liveboard. - * Creates a new Liveboard object with the specified name. - * @param - * `newTabName` - Name of the tab. Adds a new tab Liveboard specified - * in the code. - * - * @example - * ```js - * const pinResponse = await appEmbed.trigger(HostEvent.Pin, { - * vizId: "123", - * newVizName: "Sales by region", - * liveboardId: "123", - * tabId: "123" - * }); - * ``` - * @example - * ```js - * const pinResponse = await appEmbed.trigger(HostEvent.Pin, { - * newVizName: "Total sales of Jackets", - * liveboardId: "123" - * }); - * ``` - * - * @example - * ```js - * const pinResponse = await searchEmbed.trigger(HostEvent.Pin, { - * newVizName: "Sales by state", - * newLiveboardName: "Sales", - * newTabName: "Products" - * }); - * ``` - * @example - * ```js - * appEmbed.trigger(HostEvent.Pin) - * ``` - * @version SDK: 1.15.0 | ThoughtSpot: 8.7.0.cl, 8.8.1.sw - */ - Pin("pin"), - /** - * Trigger the **Show Liveboard details** action - * on an embedded Liveboard. - * @example - *```js - * liveboardEmbed.trigger(HostEvent.LiveboardInfo) - *``` - * @version SDK: 1.15.0 | ThoughtSpot: 8.7.0.cl, 8.8.1.sw - */ - LiveboardInfo("pinboardInfo"), - /** - * Trigger the **Schedule** action on an embedded Liveboard. - * @example - * ```js - * liveboardEmbed.trigger(HostEvent.Schedule) - * ``` - * @version SDK: 1.15.0 | ThoughtSpot: 8.7.0.cl, 8.8.1.sw - */ - Schedule("subscription"), - /** - * Trigger the **Manage schedule** action on an embedded Liveboard - * @example - * ```js - * liveboardEmbed.trigger(HostEvent.ScheduleList) - * ``` - * @version SDK: 1.15.0 | ThoughtSpot: 8.7.0.cl, 8.8.1.sw - */ - SchedulesList("schedule-list"), - /** - * Trigger the **Export TML** action on an embedded Liveboard or - * Answer. - * @example - * ```js - * liveboardEmbed.trigger(HostEvent.ExportTML) - * ``` - * @version SDK: 1.15.0 | ThoughtSpot: 8.7.0.cl, 8.8.1.sw - */ - ExportTML("exportTSL"), - /** - * Trigger the **Edit TML** action on an embedded Liveboard or - * saved Answers in the full application embedding. - * @example - * ```js - * liveboardEmbed.trigger(HostEvent.EditTML) - * ``` - * @version SDK: 1.15.0 | ThoughtSpot: 8.7.0.cl, 8.8.1.sw - */ - EditTML("editTSL"), - /** - * Trigger the **Update TML** action on an embedded Liveboard. - * @example - * ```js - * liveboardEmbed.trigger(HostEvent.UpdateTML) - * ``` - * @version SDK: 1.15.0 | ThoughtSpot: 8.7.0.cl, 8.8.1.sw - */ - UpdateTML("updateTSL"), - /** - * Trigger the **Download PDF** action on an embedded Liveboard, - * visualization or Answer. - * - * **NOTE**: The **Download** > **PDF** action is available on - * visualizations and Answers if the data is in tabular format. - * @example - * ```js - * liveboardEmbed.trigger(HostEvent.DownloadAsPdf) - * ``` - * @version SDK: 1.15.0 | ThoughtSpot: 8.7.0.cl, 8.8.1.sw - */ - DownloadAsPdf("downloadAsPdf"), - /** - * Trigger the **Make a copy** action on a Liveboard, - * visualization, or Answer page. - * @example - * ```js - * liveboardEmbed.trigger(HostEvent.MakeACopy) - * ``` - * @example - * ```js - * liveboardEmbed.trigger(HostEvent.MakeACopy, { - * vizId: '730496d6-6903-4601-937e-2c691821af3c'}) - * ``` - * @example - * ```js - * vizEmbed.trigger(HostEvent.MakeACopy) - * ``` - * @example - * ```js - * searchEmbed.trigger(HostEvent.MakeACopy) - * ``` - * @version SDK: 1.15.0 | ThoughtSpot: 8.7.0.cl, 8.8.1.sw - */ - MakeACopy("makeACopy"), - /** - * Trigger the **Delete** action for a Liveboard. - * @example - * ```js - * appEmbed.trigger(HostEvent.Remove) - * ``` - * @version SDK: 1.15.0 | ThoughtSpot: 8.7.0.cl, 8.8.1.sw - * * @example - * ```js - * liveboardEmbed.trigger(HostEvent.Remove) - * ``` - * @version SDK: 1.37.0 | ThoughtSpot: 10.8.0.cl, 10.10.0.sw - */ - Remove("delete"), - /** - * Trigger the **Explore** action on a visualization. - * @param - an object with `vizId` as a key - * @example - * ```js - * liveboardEmbed.trigger(HostEvent.Explore, {vizId: '730496d6-6903-4601-937e-2c691821af3c'}) - * ``` - * @version SDK: 1.15.0 | ThoughtSpot: 8.7.0.cl, 8.8.1.sw - */ - Explore("explore"), - /** - * Trigger the **Create alert** action on a KPI chart - * in a Liveboard or saved Answer. - * @param - an object with `vizId` as a key - * @example - * ```js - * liveboardEmbed.trigger(HostEvent.CreateMonitor, { - * vizId: '730496d6-6903-4601-937e-2c691821af3c' - * }) - * ``` - * @example - * ```js - * searchEmbed.trigger(HostEvent.CreateMonitor) - * ``` - * @version SDK: 1.15.0 | ThoughtSpot: 8.7.0.cl, 8.8.1.sw - */ - CreateMonitor("createMonitor"), - /** - * Trigger the **Manage alerts** action on a KPI chart - * in a visualization or saved Answer. - * @param - an object with `vizId` as a key - * @example - * ```js - * liveboardEmbed.trigger(HostEvent.ManageMonitor, { - * vizId: '730496d6-6903-4601-937e-2c691821af3c' - * }) - * ``` - * @example - * ```js - * searchEmbed.trigger(HostEvent.ManageMonitor) - * ``` - * @example - * ```js - * vizEmbed.trigger(HostEvent.ManageMonitor) - * ``` - * @version SDK: 1.15.0 | ThoughtSpot: 8.7.0.cl, 8.8.1.sw - */ - ManageMonitor("manageMonitor"), - /** - * Trigger the **Edit** action on a Liveboard or a visualization - * on a Liveboard. - * - * This event is not supported in visualization embed and search embed. - * @param - object - To trigger the action for a specific visualization - * in Liveboard embed, pass in `vizId` as a key. - * @example - * ```js - * liveboardEmbed.trigger(HostEvent.Edit) - * ``` - * ```js - * liveboardEmbed.trigger(HostEvent.Edit, {vizId: - * '730496d6-6903-4601-937e-2c691821af3c'}) - * ``` - * @version SDK: 1.15.0 | ThoughtSpot: 8.7.0.cl, 8.8.1.sw - */ - Edit("edit"), - /** - * Trigger the **Copy link** action on a Liveboard or visualization - * @param - object - to trigger the action for a - * specific visualization in Liveboard embed, pass in `vizId` as a key - * @example - * ```js - * liveboardEmbed.trigger(HostEvent.CopyLink) - * ``` - * ```js - * liveboardEmbed.trigger(HostEvent.CopyLink, {vizId: '730496d6-6903-4601-937e-2c691821af3c'}) - * ``` - * ```js - * vizEmbed.trigger((HostEvent.CopyLink) - * ``` - * @version SDK: 1.15.0 | ThoughtSpot: 8.7.0.cl, 8.8.1.sw - */ - CopyLink("embedDocument"), - /** - * Trigger the **Present** action on a Liveboard or visualization - * @param - object - to trigger the action for a specific visualization - * in Liveboard embed, pass in `vizId` as a key - * @example - * ```js - * liveboardEmbed.trigger(HostEvent.Present) - * ``` - * ```js - * liveboardEmbed.trigger(HostEvent.Present, {vizId: '730496d6-6903-4601-937e-2c691821af3c'}) - * ``` - * ```js - * vizEmbed.trigger((HostEvent.Present) - * ``` - * @version SDK: 1.15.0 | ThoughtSpot: 8.7.0.cl, 8.8.1.sw - */ - Present("present"), - /** - * Get TML for the current search. - * @example - * ```js - * searchEmbed.trigger(HostEvent.GetTML).then((tml) => { - * console.log( - * tml.answer.search_query // TML representation of the search query - * ); - * }) - * ``` - * @version SDK: 1.18.0 | ThoughtSpot: 8.10.0.cl, 9.0.1.sw - * @important - */ - GetTML("getTML"), - /** - * Trigger the **Show underlying data** action on a - * chart or table. - * - * @param - an object with vizId as a key - * @example - * ```js - * liveboardEmbed.trigger(HostEvent.ShowUnderlyingData, {vizId: - * '730496d6-6903-4601-937e-2c691821af3c'}) - * ``` - * ```js - * vizEmbed.trigger(HostEvent.ShowUnderlyingData) - * ``` - * ```js - * searchEmbed.trigger(HostEvent.ShowUnderlyingData) - * ``` - * @version SDK: 1.19.0 | ThoughtSpot: 9.0.0.cl, 9.0.1.sw - */ - ShowUnderlyingData("showUnderlyingData"), - /** - * Trigger the **Delete** action for a visualization - * in an embedded Liveboard, or a chart or table - * generated from Search. - * @param - Liveboard embed takes an object with `vizId` as a key. - * Can be left empty if embedding Search or visualization. - * @example - * ```js - * liveboardEmbed.trigger(HostEvent.Delete, {vizId: - * '730496d6-6903-4601-937e-2c691821af3c'}) - * ``` - * ```js - * searchEmbed.trigger(HostEvent.Delete) - * ``` - * @version SDK: 1.19.0 | ThoughtSpot: 9.0.0.cl, 9.0.1.sw - */ - Delete("onDeleteAnswer"), - /** - * Trigger the **SpotIQ analyze** action on a - * chart or table. - * @param - Liveboard embed takes `vizId` as a - * key. Can be left undefined when embedding Search or - * visualization. - * @example - * ```js - * liveboardEmbed.trigger(HostEvent.SpotIQAnalyze, {vizId: - * '730496d6-6903-4601-937e-2c691821af3c'}) - * ``` - * ```js - * vizEmbed.trigger(HostEvent.SpotIQAnalyze) - * ``` - * ```js - * searchEmbed.trigger(HostEvent.SpotIQAnalyze) - * ``` - * @version SDK: 1.19.0 | ThoughtSpot: 9.0.0.cl, 9.0.1.sw - */ - SpotIQAnalyze("spotIQAnalyze"), - /** - * Trigger the **Download** action on charts in - * the embedded view. - * @example - * ```js - * liveboardEmbed.trigger(HostEvent.Download, {vizId: - * '730496d6-6903-4601-937e-2c691821af3c'}) - * ``` - * ```js - * embed.trigger(HostEvent.Download) - * ``` - * @deprecated from SDK: 1.21.0 | ThoughtSpot: 9.2.0.cl ,9.4.1.sw - * Use {@link DownloadAsPng} - * @version SDK: 1.19.0 | ThoughtSpot: 9.0.0.cl, 9.0.1.sw - */ - Download("downloadAsPng"), - /** - * Trigger the **Download** > **PNG** action on - * charts in the embedded view. - * @example - * ```js - * liveboardEmbed.trigger(HostEvent.DownloadAsPng, - * {vizId:'730496d6-6903-4601-937e-2c691821af3c'}) - * - * vizEmbed.trigger(HostEvent.DownloadAsPng) - * - * searchEmbed.trigger(HostEvent.DownloadAsPng) - * ``` - * @version SDK: 1.21.0 | ThoughtSpot: 9.2.0.cl, 9.4.1.sw - */ - DownloadAsPng("downloadAsPng"), - /** - * Trigger the **Download** > **CSV** action on tables in - * the embedded view. - * @example - * ```js - * liveboardEmbed.trigger(HostEvent.DownloadAsCsv, {vizId: - * '730496d6-6903-4601-937e-2c691821af3c'}) - * ``` - * ```js - * vizEmbed.trigger(HostEvent.DownloadAsCsv) - * ``` - * ```js - * searchEmbed.trigger(HostEvent.DownloadAsCsv) - * ``` - * @version SDK: 1.19.0 | ThoughtSpot: 9.0.0.cl, 9.0.1.sw - */ - DownloadAsCsv("downloadAsCSV"), - /** - * Trigger the **Download** > **XLSX** action on tables - * in the embedded view. - * @example - * ```js - * liveboardEmbed.trigger(HostEvent.DownloadAsXlsx, {vizId: - * '730496d6-6903-4601-937e-2c691821af3c'}) - * ``` - * ```js - * vizEmbed.trigger(HostEvent.DownloadAsXlsx) - * ``` - * ```js - * searchEmbed.trigger(HostEvent.DownloadAsXlsx) - * ``` - * @version SDK: 1.19.0 | ThoughtSpot: 9.0.0.cl, 9.0.1.sw - */ - DownloadAsXlsx("downloadAsXLSX"), - /** - * Trigger the **Share** action on an embedded - * Liveboard or Answer. - * @example - * ```js - * liveboardEmbed.trigger(HostEvent.Share) - * ``` - * ```js - * searchEmbed.trigger(HostEvent.Share) - * ``` - * @version SDK: 1.19.0 | ThoughtSpot: 9.0.0.cl, 9.0.1.sw - */ - Share("share"), - /** - * Trigger the **Save** action on a Liveboard or Answer. - * Saves the changes. - * @example - * ```js - * liveboardEmbed.trigger(HostEvent.Save) - * ``` - * ```js - * searchEmbed.trigger(HostEvent.Save) - * ``` - * @version SDK: 1.19.0 | ThoughtSpot: 9.0.0.cl, 9.0.1.sw - */ - Save("save"), - /** - * Trigger the **Sync to Sheets** action on an embedded visualization or Answer - * Sends data from an Answer or Liveboard visualization to a Google sheet. - * @param - an object with `vizId` as a key - * @example - * ```js - * liveboardEmbed.trigger(HostEvent.SyncToSheets, {vizId: - * '730496d6-6903-4601-937e-2c691821af3c'}) - * ``` - * ```js - * vizEmbed.trigger(HostEvent.SyncToSheets) - * ``` - * @version SDK: 1.19.0 | ThoughtSpot: 9.0.0.cl, 9.0.1.sw - */ - SyncToSheets("sync-to-sheets"), - /** - * Trigger the **Sync to Other Apps** action on an embedded visualization or Answer - * Sends data from an Answer or Liveboard visualization to third-party apps such - * as Slack, Salesforce, Microsoft Teams, ServiceNow and so on. - * @param - an object with vizId as a key - * @example - * ```js - * liveboardEmbed.trigger(HostEvent.SyncToOtherApps, {vizId: - * '730496d6-6903-4601-937e-2c691821af3c'}) - * ``` - * ```js - * vizEmbed.trigger(HostEvent.SyncToOtherApps) - * ``` - * @version SDK: 1.19.0 | ThoughtSpot: 9.0.0.cl, 9.0.1.sw - */ - SyncToOtherApps("sync-to-other-apps"), - /** - * Trigger the **Manage pipelines** action on an embedded - * visualization or Answer. - * Allows users to manage ThoughtSpot Sync pipelines. - * @param - an object with `vizId` as a key - * @example - * ```js - * liveboardEmbed.trigger(HostEvent.ManagePipelines, {vizId: - * '730496d6-6903-4601-937e-2c691821af3c'}) - * ``` - * ```js - * vizEmbed.trigger(HostEvent.ManagePipelines) - * ``` - * @version SDK: 1.19.0 | ThoughtSpot: 9.0.0.cl, 9.0.1.sw - */ - ManagePipelines("manage-pipeline"), - /** - * Reset search operation on the Search or Answer page. - * @example - * ```js - * searchEmbed.trigger(HostEvent.ResetSearch) - * ``` - * ```js - * appEmbed.trigger(HostEvent.ResetSearch) - * ``` - * @version SDK: 1.21.0 | ThoughtSpot: 9.2.0.cl, 9.0.1.sw - */ - ResetSearch("resetSearch"), - /** - * Get details of filters applied on the Liveboard. - * Returns arrays containing Liveboard filter and runtime filter elements. - * @example - * ```js - * const data = await liveboardEmbed.trigger(HostEvent.GetFilters); - * console.log('data', data); - * ``` - * @version SDK: 1.23.0 | ThoughtSpot: 9.4.0.cl - */ - GetFilters("getFilters"), - /** - * Update one or several filters applied on a Liveboard. - * @param - `filter`: a single filter object containing column name, - * filter operator, and values. - * @param - `filters`: multiple filter objects with column name, filter operator, - * and values for each. - * - * Each filter object must include the following attributes: - * - * `column` - Name of the column to filter on. - * - * `oper` - Filter operator, for example, EQ, IN, CONTAINS. - * For information about the supported filter operators, - * see link:https://developers.thoughtspot.com/docs/runtime-filters#rtOperator[Developer Documentation]. - * - * `values` - An array of one or several values. The value definition on the - * data type you choose to filter on. For a complete list of supported data types, - * see - * link:https://developers.thoughtspot.com/docs/runtime-filters#_supported_data_types[Supported - * data types]. - * - * `type` - To update filters for date time, specify the date format type. - * For more information and examples, see link:https://developers.thoughtspot.com/docs/embed-liveboard#_date_filters[Date filters]. - * @example - * ```js - * - * liveboardEmbed.trigger(HostEvent.UpdateFilters, { - * filter: { - * column: "item type", - * oper: "IN", - * values: ["bags","shirts"] - * } - * }); - * ``` - * @example - * ```js - * - * liveboardEmbed.trigger(HostEvent.UpdateFilters, { - * filter: { - * column: "date", - * oper: "EQ", - * values: ["JULY","2023"], - * type: "MONTH_YEAR" - * } - * }); - * ``` - * @example - * - * ```js - * liveboardEmbed.trigger(HostEvent.UpdateFilters, { - * filters: [{ - * column: "Item Type", - * oper: 'IN', - * values: ["bags","shirts"] - * }, - * { - * column: "Region", - * oper: 'IN', - * values: ["West","Midwest"] - * }, - * { - * column: "Date", - * oper: 'EQ', - * values: ["2023-07-31"], - * types: "EXACT_DATE" - * }] - * }); - * ``` - * @version SDK: 1.23.0 | ThoughtSpot: 9.4.0.cl - */ - UpdateFilters("updateFilters"), - /** - * Get tab details for the current Liveboard. - * @example - * ```js - * liveboardEmbed.trigger(HostEvent.GetTabs).then((tabDetails) => { - * console.log( - * tabDetails // TabDetails of current Liveboard - * ); - * }) - * ``` - * @version SDK: 1.26.0 | ThoughtSpot: 9.7.0.cl - */ - GetTabs("getTabs"), - /** - * Set the visible tabs on a Liveboard. - * @param - an array of ids of tabs to show, the IDs not passed - * will be hidden. - * @example - * ```js - * liveboardEmbed.trigger(HostEvent.SetVisibleTabs, [ - * '430496d6-6903-4601-937e-2c691821af3c', - * 'f547ec54-2a37-4516-a222-2b06719af726']) - * ``` - * @version SDK: 1.26.0 | ThoughtSpot: 9.7.0.cl, 9.8.0.sw - */ - SetVisibleTabs("SetPinboardVisibleTabs"), - /** - * Set the hidden tabs on a Liveboard. - * @param - an array of the IDs of the tabs to hide. - * The IDs not passed will be shown. - * @example - * ```js - * liveboardEmbed.trigger(HostEvent.SetHiddenTabs, [ - * '630496d6-6903-4601-937e-2c691821af3c', - * 'i547ec54-2a37-4516-a222-2b06719af726']) - * ``` - * @version SDK: 1.26.0 | ThoughtSpot: 9.7.0.cl, 9.8.0.sw - */ - SetHiddenTabs("SetPinboardHiddenTabs"), - /** - * Updates the search query string for Natural Language Search operations. - * @param - `queryString`: Text string in Natural Language format - * @param - `executeSearch`: Boolean to execute search and update search query - * @example - * ```js - * sageEmbed.trigger(HostEvent.UpdateSageQuery, { - * queryString: 'revenue per year', - * executeSearch: true, - * }) - * ``` - * @version SDK: 1.26.0 | ThoughtSpot: 9.8.0.cl, 9.8.0.sw - */ - UpdateSageQuery("updateSageQuery"), - /** - * Get the Answer session for a Search or - * Liveboard visualization. - * @example - * ```js - * const {session} = await embed.trigger( - * HostEvent.GetAnswerSession, { - * vizId: '123', // For Liveboard Visualization. - * }) - * ``` - * @example - * ```js - * const {session} = await embed.trigger( HostEvent.GetAnswerSession ) - * ``` - * @version SDK: 1.26.0 | ThoughtSpot: 9.10.0.cl, 10.1.0.sw - */ - GetAnswerSession("getAnswerSession"), - /** - * Trigger the *Ask Sage* action for visualizations - * @example - * ```js - * liveboardEmbed.trigger(HostEvent.AskSage, - * {vizId:'730496d6-6903-4601-937e-2c691821af3c'}) - * ``` - * @version SDK: 1.29.0 | ThoughtSpot Cloud: 9.12.0.cl - */ - AskSage("AskSage"), - /** - * Trigger cross filter update action on a Liveboard. - * - * @example - * ```js - * liveboardEmbed.trigger(HostEvent.UpdateCrossFilter, { - * vizId: 'b535c760-8bbe-4e6f-bb26-af56b4129a1e', - * conditions: [ - * { columnName: 'Category', values: ['mfgr#12','mfgr#14'] }, - * { columnName: 'color', values: ['mint','hot'] }, - * ], - * }); - * ``` - * @version SDK: 1.29.0 | ThoughtSpot Cloud: 10.0.0.cl, 10.1.0.sw - */ - UpdateCrossFilter("UpdateCrossFilter"), - /** - * Trigger reset action for a personalized Liveboard view. - * @example - * ```js - * liveboardEmbed.trigger(HostEvent.ResetLiveboardPersonalisedView); - * ``` - * @version SDK: 1.29.0 | ThoughtSpot Cloud: 10.1.0.cl, 10.1.0.sw - */ - ResetLiveboardPersonalisedView("ResetLiveboardPersonalisedView"), - /** - * Triggers an action to update Parameter values on embedded - * Answers and Liveboard. - * - * @example - * ```js - * liveboardEmbed.trigger(HostEvent.UpdateParameters, [{ - * name: "Color", - * value: "almond" - * }]) - * - * @version SDK: 1.29.0 | ThoughtSpot: 10.1.0.cl, 10.1.0.sw - */ - UpdateParameters("UpdateParameters"), - /** - * Triggers GetParameters to fetch the runtime Parameters. - * ```js - * liveboardEmbed.trigger(HostEvent.GetParameters).then((parameter) => { - * console.log('parameters', parameter); - * }); - *``` - * @version SDK: 1.29.0 | ThoughtSpot: 10.1.0.cl, 10.1.0.sw - */ - GetParameters("GetParameters"), - /** - * Triggers an event to update a personalized view of a Liveboard. - * ```js - * liveboardEmbed.trigger(HostEvent.UpdatePersonalisedView, {viewId: '1234'}) - * ``` - * @version SDK: 1.36.0 | ThoughtSpot: 10.6.0.cl - */ - UpdatePersonalisedView("UpdatePersonalisedView"), - /** - * @hidden - * Notify when info call is completed successfully - * ```js - * liveboardEmbed.trigger(HostEvent.InfoSuccess, data); - *``` - * @version SDK: 1.36.0 | Thoughtspot: 10.6.0.cl - */ - InfoSuccess("InfoSuccess"), - /** - * Trigger the save action for an Answer. - * To programmatically save an answer without opening the - * *Describe your Answer* modal, define the `name` and `description` - * properties. - * If no parameters are specified, the save action is - * triggered with a modal to prompt users to - * add a name and description for the Answer. - * @param - optional attributes to set Answer properties. - * `name` - Name string for the Answer. - * `description` - Description text for the Answer. - * - * @example - * ```js - * const saveAnswerResponse = await searchEmbed.trigger(HostEvent.SaveAnswer, { - * name: "Sales by states", - * description: "Total sales by states in MidWest" - * }); - * ``` - * @version SDK: 1.36.0 | ThoughtSpot: 10.6.0.cl - */ - SaveAnswer("saveAnswer"), - /** - * EmbedApi - * @hidden - */ - UIPassthrough("UiPassthrough"), - /** - * Triggers the table viz rerender with the updated data. - * Includes the following properties: - * @param - columnDataLite - an array of object containing data - * transformed from data picked from TableVizRendered event. - * For example, { columnDataLite: []} - * @example - * ```js - * searchEmbed.on(EmbedEvent.TableVizRendered, (payload) => { - * console.log(payload); - * const columnDataLite = payload.data.data.columnDataLite; - * columnDataLite[0].dataValue[0]="new fob"; - * console.log('>>> new Data', columnDataLite); - * searchEmbed.trigger(HostEvent.TransformTableVizData, columnDataLite); - * }) - * ``` - * @version SDK: 1.35.12 | ThoughtSpot: 10.7.0.cl - */ - TransformTableVizData("TransformTableVizData"); - - final String value; - const HostEvent(this.value); -} - -/** - * The different visual modes that the data sources panel within - * search could appear in, such as hidden, collapsed, or expanded. - */ -enum DataSourceVisualMode { - /** - * The data source panel is hidden. - */ - Hidden("hide"), - /** - * The data source panel is collapsed, but the user can manually expand it. - */ - Collapsed("collapse"), - /** - * The data source panel is expanded, but the user can manually collapse it. - */ - Expanded("expand"); - - final String value; - const DataSourceVisualMode(this.value); -} - -/** - * The query params passed down to the embedded ThoughtSpot app - * containing configuration and/or visual information. - */ -enum Param { - EmbedApp("embedApp"), - DataSources("dataSources"), - DataSourceMode("dataSourceMode"), - DisableActions("disableAction"), - DisableActionReason("disableHint"), - ForceTable("forceTable"), - preventLiveboardFilterRemoval("preventPinboardFilterRemoval"), - SearchQuery("searchQuery"), - HideActions("hideAction"), - HideObjects("hideObjects"), - HostAppUrl("hostAppUrl"), - EnableVizTransformations("enableVizTransform"), - EnableSearchAssist("enableSearchAssist"), - EnablePendoHelp("enablePendoHelp"), - HideResult("hideResult"), - UseLastSelectedDataSource("useLastSelectedSources"), - Tag("tag"), - AutoLogin("autoLogin"), - searchTokenString("searchTokenString"), - executeSearch("executeSearch"), - fullHeight("isFullHeightPinboard"), - livedBoardEmbed("isLiveboardEmbed"), - searchEmbed("isSearchEmbed"), - vizEmbed("isVizEmbed"), - Version("sdkVersion"), - ViewPortHeight("viewPortHeight"), - ViewPortWidth("viewPortWidth"), - VisibleActions("visibleAction"), - DisableLoginRedirect("disableLoginRedirect"), - visibleVizs("pinboardVisibleVizs"), - LiveboardV2Enabled("isPinboardV2Enabled"), - DataPanelV2Enabled("enableDataPanelV2"), - ShowAlerts("showAlerts"), - Locale("locale"), - CustomStyle("customStyle"), - ForceSAMLAutoRedirect("forceSAMLAutoRedirect"), - AuthType("authType"), - IconSpriteUrl("iconSprite"), - cookieless("cookieless"), - ContextMenuTrigger("contextMenuEnabledOnWhichClick"), - LinkOverride("linkOverride"), - blockNonEmbedFullAppAccess("blockNonEmbedFullAppAccess"), - ShowInsertToSlide("insertInToSlide"), - PrimaryNavHidden("primaryNavHidden"), - HideProfleAndHelp("profileAndHelpInNavBarHidden"), - HideApplicationSwitcher("applicationSwitcherHidden"), - HideOrgSwitcher("orgSwitcherHidden"), - IsSageEmbed("isSageEmbed"), - HideWorksheetSelector("hideWorksheetSelector"), - DisableWorksheetChange("disableWorksheetChange"), - HideSourceSelection("hideSourceSelection"), - DisableSourceSelection("disableSourceSelection"), - HideEurekaResults("hideEurekaResults"), - HideEurekaSuggestions("hideEurekaSuggestions"), - HideAutocompleteSuggestions("hideAutocompleteSuggestions"), - HideLiveboardHeader("hideLiveboardHeader"), - ShowLiveboardDescription("showLiveboardDescription"), - ShowLiveboardTitle("showLiveboardTitle"), - HiddenTabs("hideTabs"), - VisibleTabs("visibleTabs"), - HideTabPanel("hideTabPanel"), - HideSampleQuestions("hideSampleQuestions"), - WorksheetId("worksheet"), - Query("query"), - HideHomepageLeftNav("hideHomepageLeftNav"), - ModularHomeExperienceEnabled("modularHomeExperience"), - PendoTrackingKey("additionalPendoKey"), - LiveboardHeaderSticky("isLiveboardHeaderSticky"), - IsProductTour("isProductTour"), - HideSearchBarTitle("hideSearchBarTitle"), - HideSageAnswerHeader("hideSageAnswerHeader"), - HideSearchBar("hideSearchBar"), - ClientLogLevel("clientLogLevel"), - OverrideNativeConsole("overrideConsoleLogs"), - enableAskSage("enableAskSage"), - CollapseSearchBarInitially("collapseSearchBarInitially"), - DataPanelCustomGroupsAccordionInitialState("dataPanelCustomGroupsAccordionInitialState"), - EnableCustomColumnGroups("enableCustomColumnGroups"), - DateFormatLocale("dateFormatLocale"), - NumberFormatLocale("numberFormatLocale"), - CurrencyFormat("currencyFormat"), - Enable2ColumnLayout("enable2ColumnLayout"), - IsFullAppEmbed("isFullAppEmbed"), - IsOnBeforeGetVizDataInterceptEnabled("isOnBeforeGetVizDataInterceptEnabled"), - FocusSearchBarOnRender("focusSearchBarOnRender"), - DisableRedirectionLinksInNewTab("disableRedirectionLinksInNewTab"), - HomePageSearchBarMode("homePageSearchBarMode"), - ShowLiveboardVerifiedBadge("showLiveboardVerifiedBadge"), - ShowLiveboardReverifyBanner("showLiveboardReverifyBanner"), - LiveboardHeaderV2("isLiveboardHeaderV2Enabled"), - HideIrrelevantFiltersInTab("hideIrrelevantFiltersAtTabLevel"), - SpotterEnabled("isSpotterExperienceEnabled"), - IsUnifiedSearchExperienceEnabled("isUnifiedSearchExperienceEnabled"), - OverrideOrgId("orgId"), - OauthPollingInterval("oAuthPollingInterval"), - IsForceRedirect("isForceRedirect"), - DataSourceId("dataSourceId"), - preAuthCache("preAuthCache"), - ShowSpotterLimitations("showSpotterLimitations"); - - final String value; - const Param(this.value); -} - -/** - * ThoughtSpot application pages include actions and menu commands - * for various user-initiated operations. These actions are represented - * as enumeration members in the SDK. To show, hide, or disable - * specific actions in the embedded view, define the Action - * enumeration members in the `disabledActions`, `visibleActions`, - * or `hiddenActions` array. - * @example - * ```js - * const embed = new LiveboardEmbed('#embed-container', { - * ... // other options - * visibleActions: [Action.Save, Action.Edit, Action.Present, ActionAction.Explore], - * disabledActions: [Action.Download], - * //hiddenActions: [], // Set either this or visibleActions - * }) - * ``` - * @example - * ```js - * const embed = new LiveboardEmbed('#embed-container', { - * ... // other options - * //visibleActions: [], - * disabledActions: [Action.Download], - * hiddenActions: [Action.Edit, ActionAction.Explore], - * }) - * ``` - */ -enum Action { - /** - * The **Save** action on an Answer or Liveboard. - * Allows users to save the changes. - * @example - * ```js - * disabledActions: [Action.Save] - * ``` - */ - Save("save"), - /** - * @hidden - */ - Update("update"), - /** - * @hidden - */ - SaveUntitled("saveUntitled"), - /** - * The **Save as View** action on the Answer - * page. Saves an Answer as a View object in the full - * application embedding mode. - * @example - * ```js - * disabledActions: [Action.SaveAsView] - * ``` - */ - SaveAsView("saveAsView"), - /** - * The **Make a copy** action on a Liveboard or Answer - * page. Creates a copy of the Liveboard. - * In LiveboardEmbed, the **Make a copy** action is not available for - * visualizations in the embedded Liveboard view. - * In AppEmbed, the **Make a copy** action is available on both - * Liveboards and visualizations. - * @example - * ```js - * disabledActions: [Action.MakeACopy] - * ``` - */ - MakeACopy("makeACopy"), - /** - * The **Copy and Edit** action on a Liveboard. - * This action is now replaced with `Action.MakeACopy`. - * @example - * ```js - * disabledActions: [Action.EditACopy] - * ``` - */ - EditACopy("editACopy"), - /** - * The **Copy link** menu action on a Liveboard visualization. - * Copies the visualization URL - * @example - * ```js - * disabledActions: [Action.CopyLink] - * ``` - */ - CopyLink("embedDocument"), - /** - * @hidden - */ - ResetLayout("resetLayout"), - /** - * The **Schedule** menu action on a Liveboard. - * Allows scheduling a Liveboard job, for example, - * sending periodic notifications. - * @example - * ```js - * disabledActions: [Action.Schedule] - * ``` - */ - Schedule("subscription"), - /** - * The **Manage schedules** menu action on a Liveboard. - * Allows users to manage scheduled Liveboard jobs. - * @example - * ```js - * disabledActions: [Action.SchedulesList] - * ``` - */ - SchedulesList("schedule-list"), - /** - * The **Share** action on a Liveboard, Answer, or Worksheet. - * Allows users to share an object with other users and groups. - * @example - * ```js - * disabledActions: [Action.Share] - * ``` - */ - Share("share"), - /** - * The **Add filter** action on a Liveboard page. - * Allows adding filters to visualizations on a Liveboard. - * @example - * ```js - * disabledActions: [Action.AddFilter] - * ``` - */ - AddFilter("addFilter"), - /** - * The **Add Data Panel Objects** action on the data panel v2. - * Allows to show action menu to add different objects (such as - * formulas, Parameters) in data panel new experience. - * @example - * ```js - * disabledActions: [Action.AddDataPanelObjects] - * ``` - * @version SDK: 1.32.0 | ThoughtSpot: 10.0.0.cl, 10.1.0.sw - */ - AddDataPanelObjects("addDataPanelObjects"), - /** - * The filter configuration options for a Liveboard. - * The configuration options are available when adding - * filters on a Liveboard. - * - * @example - * ```js - * disabledActions: [Action.ConfigureFilter] - * ``` - */ - ConfigureFilter("configureFilter"), - /** - * The **Collapse data sources** icon on the Search page. - * Collapses the panel showing data sources. - * - * @example - * ```js - * disabledActions: [Action.CollapseDataPanel] - * ``` - * @version: SDK: 1.1.0 | ThoughtSpot Cloud: ts7.may.cl, 8.4.1.sw - */ - CollapseDataSources("collapseDataSources"), - /** - * The **Collapse data panel** icon on the Search page. - * Collapses the data panel view. - * - * @version: SDK: 1.34.0 | ThoughtSpot Cloud: 10.3.0.cl, 10.7.0.sw - * - * @example - * ```js - * disabledActions: [Action.CollapseDataPanel] - * ``` - */ - CollapseDataPanel("collapseDataPanel"), - /** - * The **Choose sources** button on Search page. - * Allows selecting data sources for search queries. - * @example - * ```js - * disabledActions: [Action.ChooseDataSources] - * ``` - */ - ChooseDataSources("chooseDataSources"), - /** - * The **Create formula** action on a Search or Answer page. - * Allows adding formulas to an Answer. - * @example - * ```js - * disabledActions: [Action.AddFormula] - * ``` - */ - AddFormula("addFormula"), - /** - * The **Add parameter** action on a Liveboard or Answer. - * Allows adding Parameters to a Liveboard or Answer. - * @example - * ```js - * disabledActions: [Action.AddParameter] - * ``` - */ - AddParameter("addParameter"), - /** - * The **Add Column Set** action on a Answer. - * Allows adding column sets to a Answer. - * @example - * ```js - * disabledActions: [Action.AddColumnSet] - * ``` - * @version SDK: 1.32.0 | ThoughtSpot: 10.0.0.cl, 10.1.0.sw - */ - AddColumnSet("addSimpleCohort"), - /** - * The **Add Query Set** action on a Answer. - * Allows adding query sets to a Answer. - * @example - * ```js - * disabledActions: [Action.AddQuerySet] - * ``` - * @version SDK: 1.32.0 | ThoughtSpot: 10.0.0.cl, 10.1.0.sw - */ - AddQuerySet("addAdvancedCohort"), - /** - * @hidden - */ - SearchOnTop("searchOnTop"), - /** - * The **SpotIQ analyze** menu action on a visualization or - * Answer page. - * @example - * ```js - * disabledActions: [Action.SpotIQAnalyze] - * ``` - */ - SpotIQAnalyze("spotIQAnalyze"), - /** - * @hidden - */ - ExplainInsight("explainInsight"), - /** - * @hidden - */ - SpotIQFollow("spotIQFollow"), - /** - * The Share action for a Liveboard visualization. - */ - ShareViz("shareViz"), - /** - * @hidden - */ - ReplaySearch("replaySearch"), - /** - * The **Show underlying data** menu action on a - * visualization or Answer page. - * Displays detailed information and raw data - * for a given visualization. - * @example - * ```js - * disabledActions: [Action.ShowUnderlyingData] - * ``` - */ - ShowUnderlyingData("showUnderlyingData"), - /** - * The **Download** menu action on Liveboard - * visualizations and Answers. - * Allows downloading a visualization or Answer. - * @example - * ```js - * disabledActions: [Action.DownloadAsPng] - * ``` - */ - Download("download"), - /** - * The **Download** > **PNG** menu action for charts on a Liveboard - * or Answer page. - * Downloads a visualization or Answer as a PNG file. - * @example - * ```js - * disabledActions: [Action.DownloadAsPng] - * ``` - */ - DownloadAsPng("downloadAsPng"), - /** - * - *The **Download PDF** action that downloads a Liveboard, - * visualization, or Answer as a PDF file. - * - * **NOTE**: The **Download** > **PDF** option is available for - * tables in visualizations and Answers. - * @example - * ```js - * disabledActions: [Action.DownloadAsPdf] - * ``` - */ - DownloadAsPdf("downloadAsPdf"), - /** - * The **Download** > **CSV** menu action for tables on a Liveboard - * or Answer page. - * Downloads a visualization or Answer in the XLSX format. - * @example - * ```js - * disabledActions: [Action.DownloadAsCsv] - * ``` - */ - DownloadAsCsv("downloadAsCSV"), - /** - * The **Download** > **XLSX** menu action for tables on a Liveboard - * or Answer page. - * Downloads a visualization or Answer in the XLSX format. - * @example - * ```js - * disabledActions: [Action.DownloadAsXlsx] - * ``` - */ - DownloadAsXlsx("downloadAsXLSX"), - /** - * @hidden - */ - DownloadTrace("downloadTrace"), - /** - * The **Export TML** menu action on a Liveboard, Answer, and - * the Data Workspace pages for data objects and connections. - * - * Allows exporting an object as a TML file. - * - * @example - * ```js - * disabledActions: [Action.ExportTML] - * ``` - */ - ExportTML("exportTSL"), - /** - * The **Import TML** menu action on the - * *Data Workspace* > *Utilities* page. - * Imports TML representation of ThoughtSpot objects. - * @example - * ```js - * disabledActions: [Action.ImportTML] - * ``` - */ - ImportTML("importTSL"), - /** - * The **Update TML** menu action for Liveboards and Answers. - * Updates TML representation of ThoughtSpot objects. - * @example - * ```js - * disabledActions: [Action.UpdateTML] - * ``` - */ - UpdateTML("updateTSL"), - /** - * The **Edit TML** menu action for Liveboards and Answers. - * Opens the TML editor. - * @example - * ```js - * disabledActions: [Action.EditTML] - * ``` - */ - EditTML("editTSL"), - /** - * The **Present** menu action for Liveboards and Answers. - * Allows presenting a Liveboard or visualization in - * slideshow mode. - * @example - * ```js - * disabledActions: [Action.Present] - * ``` - */ - Present("present"), - /** - * The visualization tile resize option. - * Also available via More `...` options menu on a visualization. - * Allows resizing visualization tiles and switching - * between different preset layout option. - * - * @example - * ```js - * disabledActions: [Action.ToggleSize] - * ``` - */ - ToggleSize("toggleSize"), - /** - * The *Edit* action on the Liveboard page and in the - * visualization menu. - * Opens a Liveboard or visualization in edit mode. - * @example - * ```js - * disabledActions: [Action.Edit] - * ``` - */ - Edit("edit"), - /** - * The text edit option for Liveboard and visualization titles. - * @example - * ```js - * disabledActions: [Action.EditTitle] - * ``` - */ - EditTitle("editTitle"), - /** - * The **Delete** action on a Liveboard, *Liveboards* and - * *Answers* list pages in full application embedding. - * - * @example - * ```js - * disabledActions: [Action.Remove] - * ``` - */ - Remove("delete"), - /** - * @hidden - */ - Ungroup("ungroup"), - /** - * @hidden - */ - Describe("describe"), - /** - * @hidden - */ - Relate("relate"), - /** - * @hidden - */ - CustomizeHeadlines("customizeHeadlines"), - /** - * @hidden - */ - PinboardInfo("pinboardInfo"), - /** - * The **Show Liveboard details** menu action on a Liveboard. - * Displays details such as the name, description, and - * author of the Liveboard, and timestamp of Liveboard creation - * and update. - * @example - * ```js - * disabledActions: [Action.LiveboardInfo] - * ``` - */ - LiveboardInfo("pinboardInfo"), - /** - * @hidden - */ - SendAnswerFeedback("sendFeedback"), - /** - * @hidden - */ - DownloadEmbraceQueries("downloadEmbraceQueries"), - /** - * The **Pin** menu action on an Answer or - * Search results page. - * @example - * ```js - * disabledActions: [Action.Pin] - * ``` - */ - Pin("pin"), - /** - * @hidden - */ - AnalysisInfo("analysisInfo"), - /** - * The **Schedule** menu action on a Liveboard. - * Allows scheduling a Liveboard job. - * @example - * ```js - * disabledActions: [Action.Subscription] - * ``` - */ - Subscription("subscription"), - /** - * The **Explore** action on Liveboard visualizations - * @example - * ```js - * disabledActions: [Action.Explore] - * ``` - */ - Explore("explore"), - /** - * The contextual menu action to include a specific data point - * when drilling down a table or chart on an Answer. - * - * @example - * ```js - * disabledActions: [Action.DrillInclude] - * ``` - */ - DrillInclude("context-menu-item-include"), - /** - * The contextual menu action to exclude a specific data point - * when drilling down a table or chart on an Answer. - * @example - * ```js - * disabledActions: [Action.DrillInclude] - * ``` - */ - DrillExclude("context-menu-item-exclude"), - /** - * The **Copy to clipboard** menu action on tables in an Answer - * or Liveboard. - * Copies the selected data point. - * @example - * ```js - * disabledActions: [Action.CopyToClipboard] - * ``` - */ - CopyToClipboard("context-menu-item-copy-to-clipboard"), - CopyAndEdit("context-menu-item-copy-and-edit"), - /** - * @hidden - */ - DrillEdit("context-menu-item-edit"), - EditMeasure("context-menu-item-edit-measure"), - Separator("context-menu-item-separator"), - /** - * The **Drill down** menu action on Answers and Liveboard - * visualizations. - * Allows drilling down to a specific data point on a chart or table. - * @example - * ```js - * disabledActions: [Action.DrillDown] - * ``` - */ - DrillDown("DRILL"), - /** - * The request access action on Liveboards. - * Allows users with view permissions to request edit access to a Liveboard. - * @example - * ```js - * disabledActions: [Action.RequestAccess] - * ``` - */ - RequestAccess("requestAccess"), - /** - * The **Query visualizer** and **Query SQL** buttons in - * Query details panel of the Answer page. - * - * **Query visualizer** - Displays the tables - * and filters used in a search query. - * **Query SQL** - Displays the SQL statements used - * in a search query to fetch data. - * @example - * ```js - * disabledActions: [Action.QueryDetailsButtons] - * ``` - */ - QueryDetailsButtons("queryDetailsButtons"), - /** - * The **Delete** action for Answers in the full application - * embedding mode. - * @example - * ```js - * disabledActions: [Action.AnswerDelete] - * ``` - * @version SDK: 1.9.0 | ThoughtSpot: 8.1.0.cl, 8.4.1.sw - */ - AnswerDelete("onDeleteAnswer"), - /** - * The chart switcher icon on Answer page and - * visualizations in edit mode. - * Allows switching to the table or chart mode - * when editing a visualization. - * @example - * ```js - * disabledActions: [Action.AnswerChartSwitcher] - * ``` - * @version SDK: 1.9.0 | ThoughtSpot: 8.1.0.cl, 8.4.1.sw - */ - AnswerChartSwitcher("answerChartSwitcher"), - /** - * The Favorites icon (*) for Answers, - * Liveboard, and data objects like Worksheet, Model, - * Tables and Views. - * Allows adding an object to the user’s favorites list. - * @example - * ```js - * disabledActions: [Action.AddToFavorites] - * ``` - * @version SDK: 1.9.0 | ThoughtSpot: 8.1.0.cl, 8.4.1.sw - */ - AddToFavorites("addToFavorites"), - /** - * The edit icon on Liveboards (Classic experience). - * @example - * ```js - * disabledActions: [Action.EditDetails] - * ``` - * @version SDK: 1.9.0 | ThoughtSpot: 8.1.0.cl, 8.4.1.sw - */ - EditDetails("editDetails"), - /** - * The *Create alert* action for KPI charts. - * Allows users to schedule threshold-based alerts - * for KPI charts. - * @example - * ```js - * disabledActions: [Action.CreateMonitor] - * ``` - * @version SDK: 1.11.0 | ThoughtSpot: 8.3.0.cl, 8.4.1.sw - */ - CreateMonitor("createMonitor"), - /** - * @deprecated - * Reports errors - * @example - * ```js - * disabledActions: [Action.ReportError] - * ``` - * @version SDK: 1.11.1 | ThoughtSpot: 8.3.0.cl, 8.4.1.sw - */ - ReportError("reportError"), - /** - * The **Sync to sheets** action on Answers and Liveboard visualizations. - * Allows sending data to a Google Sheet. - * @example - * ```js - * disabledActions: [Action.SyncToSheets] - * ``` - * @version SDK: 1.18.0| ThoughtSpot: 8.10.0.cl, 9.0.1.sw - */ - SyncToSheets("sync-to-sheets"), - /** - * The **Sync to other apps** action on Answers and Liveboard visualizations. - * Allows sending data to third-party apps like Slack, Salesforce, - * Microsoft Teams, and so on. - * @example - * ```js - * disabledActions: [Action.SyncToOtherApps] - * ``` - * @version SDK: 1.18.0| ThoughtSpot: 8.10.0.cl, 9.0.1.sw - */ - SyncToOtherApps("sync-to-other-apps"), - /** - * The **Manage pipelines** action on Answers and Liveboard visualizations. - * Allows users to manage data sync pipelines to third-party apps. - * @example - * ```js - * disabledActions: [Action.ManagePipelines] - * ``` - * @version SDK: 1.18.0| ThoughtSpot: 8.10.0.cl, 9.0.1.sw - */ - ManagePipelines("manage-pipeline"), - /** - * The **Filter** action on Liveboard visualizations. - * Allows users to apply cross-filters on a Liveboard. - * @example - * ```js - * disabledActions: [Action.CrossFilter] - * ``` - * @version SDK: 1.21.0 | ThoughtSpot: 9.2.0.cl, 9.8.0.sw - */ - CrossFilter("context-menu-item-cross-filter"), - /** - * The **Sync to Slack** action on Liveboard visualizations. - * Allows sending data to third-party apps Slack - * @example - * ```js - * disabledActions: [Action.SyncToSlack] - * ``` - * @version @version SDK : 1.32.0 | ThoughtSpot Cloud: 10.1.0.cl - */ - SyncToSlack("syncToSlack"), - /** - * The **Sync to Teams** action on Liveboard visualizations. - * Allows sending data to third-party apps Team - * @example - * ```js - * disabledActions: [Action.SyncToTeams] - * ``` - * @version @version SDK : 1.32.0 | ThoughtSpot Cloud: 10.1.0.cl - */ - SyncToTeams("syncToTeams"), - /** - * The **Remove** action that appears when cross filters are applied - * on a Liveboard. - * Removes filters applied o a visualization. - * @example - * ```js - * disabledActions: [Action.RemoveCrossFilter] - * ``` - * @version SDK: 1.21.0 | ThoughtSpot: 9.2.0.cl, 9.5.1.sw - */ - RemoveCrossFilter("context-menu-item-remove-cross-filter"), - /** - * The **Aggregate** option in the chart axis or the - * table column customization menu. - * Provides aggregation options to analyze the data on a chart or table. - * @example - * ```js - * disabledActions: [Action.AxisMenuAggregate] - * ``` - * @version SDK: 1.21.0 | ThoughtSpot: 9.2.0.cl, 9.5.1.sw - */ - AxisMenuAggregate("axisMenuAggregate"), - /** - * The **Time bucket** option in the chart axis or table column - * customization menu. - * Allows defining time metric for date comparison. - * @example - * ```js - * disabledActions: [Action.AxisMenuTimeBucket] - * ``` - * @version SDK: 1.21.0 | ThoughtSpot: 9.2.0.cl, 9.5.1.sw - */ - AxisMenuTimeBucket("axisMenuTimeBucket"), - /** - * The **Filter** action in the chart axis or table column - * customization menu. - * Allows adding, editing, or removing filters. - * - * @example - * ```js - * disabledActions: [Action.AxisMenuFilter] - * ``` - * @version SDK: 1.21.0 | ThoughtSpot: 9.2.0.cl, 9.5.1.sw - */ - AxisMenuFilter("axisMenuFilter"), - /** - * The **Conditional formatting** action on chart or table. - * Allows adding rules for conditional formatting of data - * points on a chart or table. - * @example - * ```js - * disabledActions: [Action.AxisMenuConditionalFormat] - * ``` - * @version SDK: 1.21.0 | ThoughtSpot: 9.2.0.cl, 9.5.1.sw - */ - AxisMenuConditionalFormat("axisMenuConditionalFormat"), - /** - * The **Sort** menu action on a table or chart axis - * Sorts data in ascending or descending order. - * Allows adding, editing, or removing filters. - * @example - * ```js - * disabledActions: [Action.AxisMenuConditionalFormat] - * ``` - * @version SDK: 1.21.0 | ThoughtSpot: 9.2.0.cl, 9.5.1.sw - */ - AxisMenuSort("axisMenuSort"), - /** - * The **Group** option in the chart axis or table column - * customization menu. - * Allows grouping data points if the axes use the same - * unit of measurement and a similar scale. - * @example - * ```js - * disabledActions: [Action.AxisMenuGroup] - * ``` - * @version SDK: 1.21.0 | ThoughtSpot: 9.2.0.cl, 9.5.1.sw - */ - AxisMenuGroup("axisMenuGroup"), - /** - * The **Position** option in the axis customization menu. - * Allows changing the position of the axis to the - * left or right side of the chart. - * @example - * ```js - * disabledActions: [Action.AxisMenuPosition] - * ``` - * @version SDK: 1.21.0 | ThoughtSpot: 9.2.0.cl, 9.5.1.sw - */ - AxisMenuPosition("axisMenuPosition"), - /** - * The **Rename** option in the chart axis or table column customization menu. - * Renames the axis label on a chart or the column header on a table. - * @example - * ```js - * disabledActions: [Action.AxisMenuRename] - * ``` - * @version SDK: 1.21.0 | ThoughtSpot: 9.2.0.cl, 9.5.1.sw - */ - AxisMenuRename("axisMenuRename"), - /** - * The **Edit** action in the axis customization menu. - * Allows editing the axis name, position, minimum and maximum values, - * and format of a column. - * @example - * ```js - * disabledActions: [Action.AxisMenuEdit] - * ``` - * @version SDK: 1.21.0 | ThoughtSpot: 9.2.0.cl, 9.5.1.sw - */ - AxisMenuEdit("axisMenuEdit"), - /** - * The **Number format** action to customize the format of - * the data labels on a chart or table. - * @example - * ```js - * disabledActions: [Action.AxisMenuNumberFormat] - * ``` - * @version SDK: 1.21.0 | ThoughtSpot: 9.2.0.cl, 9.5.1.sw - */ - AxisMenuNumberFormat("axisMenuNumberFormat"), - /** - * The **Text wrapping** action on a table. - * Wraps or clips column text on a table. - * @example - * ```js - * disabledActions: [Action.AxisMenuTextWrapping] - * ``` - * @version SDK: 1.21.0 | ThoughtSpot: 9.2.0.cl, 9.5.1.sw - */ - AxisMenuTextWrapping("axisMenuTextWrapping"), - /** - * The **Remove** action in the chart axis or table column - * customization menu. - * Removes the data labels from a chart or the column of a - * table visualization. - * @example - * ```js - * disabledActions: [Action.AxisMenuRemove] - * ``` - * @version SDK: 1.21.0 | ThoughtSpot: 9.2.0.cl, 9.5.1.sw - */ - AxisMenuRemove("axisMenuRemove"), - /** - * @hidden - */ - InsertInToSlide("insertInToSlide"), - /** - * The **Rename** menu action on Liveboards and visualizations. - * Allows renaming a Liveboard or visualization. - * @example - * ```js - * disabledActions: [Action.RenameModalTitleDescription] - * ``` - * @version SDK: 1.23.0 | ThoughtSpot: 9.4.0.cl, 9.8.0.sw - */ - RenameModalTitleDescription("renameModalTitleDescription"), - /** - * The *Request verification* action on a Liveboard. - * Initiates a request for Liveboard verification. - * @example - * ```js - * disabledActions: [Action.RequestVerification] - * ``` - * @version SDK: 1.25.0 | ThoughtSpot: 9.6.0.cl, 10.1.0.sw - */ - RequestVerification("requestVerification"), - /** - * - * Allows users to mark a Liveboard as verified. - * @example - * ```js - * disabledActions: [Action.MarkAsVerified] - * ``` - * @version SDK: 1.25.0 | ThoughtSpot: 9.6.0.cl, 10.1.0.sw - */ - MarkAsVerified("markAsVerified"), - /** - * The **Add Tab** action on a Liveboard. - * Allows adding a new tab to a Liveboard view. - * @example - * ```js - * disabledActions: [Action.AddTab] - * ``` - * @version SDK: 1.26.0 | ThoughtSpot: 9.7.0.cl, 9.8.0.sw - */ - AddTab("addTab"), - /** - * - *Initiates contextual change analysis on KPI charts. - * @example - * ```js - * disabledActions: [Action.EnableContextualChangeAnalysis] - * ``` - * @version SDK: 1.25.0 | ThoughtSpot Cloud: 9.6.0.cl - */ - EnableContextualChangeAnalysis("enableContextualChangeAnalysis"), - /** - * Action ID to hide or disable Natural Language Search query. - * - * @example - * ```js - * disabledActions: [Action.ShowSageQuery] - * ``` - * @version SDK: 1.26.0 | ThoughtSpot Cloud: 9.7.0.cl - */ - ShowSageQuery("showSageQuery"), - /** - * - * Action ID to hide or disable the edit option for the - * results generated from the - * Natural Language Search query. - * - * @example - * ```js - * disabledActions: [Action.EditSageAnswer] - * ``` - * @version SDK: 1.26.0 | ThoughtSpot Cloud: 9.7.0.cl - */ - EditSageAnswer("editSageAnswer"), - /** - * The feedback widget for AI-generated Answers. - * Allows users to send feedback on the Answers generated - * from a Natural Language Search query. - * - * @example - * ```js - * disabledActions: [Action.SageAnswerFeedback] - * ``` - * @version SDK: 1.26.0 | ThoughtSpot: 9.7.0.cl - */ - SageAnswerFeedback("sageAnswerFeedback"), - /** - * - * @example - * ```js - * disabledActions: [Action.ModifySageAnswer] - * ``` - * @version SDK: 1.26.0 | ThoughtSpot: 9.7.0.cl - */ - ModifySageAnswer("modifySageAnswer"), - /** - * The **Move to Tab** menu action on visualizations in Liveboard edit mode. - * Allows moving a visualization to a different tab. - * @example - * ```js - * disabledActions: [Action.MoveToTab] - * ``` - */ - MoveToTab("onContainerMove"), - /** - * The **Manage Alerts** menu action on KPI visualizations. - * Allows creating, viewing, and editing monitor - * alerts for a KPI chart. - * - * @example - * ```js - * disabledActions: [Action.ManageMonitor] - * ``` - */ - ManageMonitor("manageMonitor"), - /** - * The Liveboard Personalised Views dropdown. - * Allows navigating to a personalized Liveboard View. - * @example - * ```js - * disabledActions: [Action.PersonalisedViewsDropdown] - * ``` - * @version SDK : 1.26.0 | ThoughtSpot: 9.7.0.cl, 10.1.0.sw - */ - PersonalisedViewsDropdown("personalisedViewsDropdown"), - /** - * Action ID for show or hide the user details on a - * Liveboard (Recently visited / social proof) - * @example - * ```js - * disabledActions: [Action.LiveboardUsers] - * ``` - * @version SDK : 1.26.0 | ThoughtSpot: 9.7.0.cl, 10.1.0.sw - */ - LiveboardUsers("liveboardUsers"), - /** - * Action ID for the Parent TML action - * The parent action **TML** must be included to access TML-related options - * within the cascading menu (specific to the Answer page) - * @example - * ```js - * // to include specific TML actions - * visibleActions: [Action.TML, Action.ExportTML, Action.EditTML] - * - * ``` - * @example - * ```js - * hiddenAction: [Action.TML] // hide all TML actions - * disabledActions: [Action.TML] // to disable all TML actions - * ``` - * @version SDK : 1.28.3 | ThoughtSpot: 9.12.0.cl, 10.1.0.sw - */ - TML("tml"), - /** - * The **Create Liveboard* action on - * the Liveboards page and the Pin modal. - * Allows users to create a Liveboard. - * - * @example - * ```js - * hiddenAction: [Action.CreateLiveboard] - * disabledActions: [Action.CreateLiveboard] - * ``` - * @version SDK: 1.32.0 | ThoughtSpot: 10.1.0.cl, 10.1.0.sw - */ - CreateLiveboard("createLiveboard"), - /** - * Action ID for to hide or disable the - * Verified Liveboard banner. - * @example - * ```js - * hiddenAction: [Action.VerifiedLiveboard] - * ``` - * @version SDK: 1.29.0 | ThoughtSpot: 9.10.0.cl, 10.1.0.sw - */ - VerifiedLiveboard("verifiedLiveboard"), - /** - * Action ID for the *Ask Sage* In Natural Language Search embed, - * *Spotter* in Liveboard, full app, and Spotter embed. - * - * Allows initiating a conversation with ThoughtSpot AI analyst. - * - * @example - * ```js - * hiddenAction: [Action.AskAi] - * ``` - * @version SDK: 1.29.0 | ThoughtSpot Cloud: 9.12.0.cl - */ - AskAi("AskAi"), - /** - * The **Add KPI to Watchlist** action on Home page watchlist. - * Adds a KPI chart to the watchlist on the Home page. - * @example - * ```js - * disabledActions: [Action.AddToWatchlist] - * ``` - * @version SDK : 1.27.9 | ThoughtSpot Cloud: 9.12.5.cl - */ - AddToWatchlist("addToWatchlist"), - /** - * The **Remove from watchlist** menu action on KPI watchlist. - * Removes a KPI chart from the watchlist on the Home page. - * @example - * ```js - * disabledActions: [Action.RemoveFromWatchlist] - * ``` - * @version SDK : 1.27.9 | ThoughtSpot: 9.12.5.cl - */ - RemoveFromWatchlist("removeFromWatchlist"), - /** - * The **Organize Favourites** action on Homepage - * *Favorites* module. - * - * @example - * ```js - * disabledActions: [Action.OrganiseFavourites] - * ``` - * @version SDK : 1.32.0 | ThoughtSpot: 10.0.0.cl - */ - OrganiseFavourites("organiseFavourites"), - /** - * The **AI Highlights** action on a Liveboard. - * - * @example - * ```js - * hiddenAction: [Action.AIHighlights] - * ``` - * @version SDK: 1.27.10 | ThoughtSpot Cloud: 9.12.5.cl - */ - AIHighlights("AIHighlights"), - /** - * The *Edit* action on the *Liveboard Schedules* page - * (new Homepage experience). - * Allows editing Liveboard schedules. - * - * @example - * ```js - * disabledActions: [Action.EditScheduleHomepage] - * ``` - * @version SDK: 1.34.0 | ThoughtSpot Cloud: 10.3.0.cl - */ - EditScheduleHomepage("editScheduleHomepage"), - /** - * The *Pause* action on the *Liveboard Schedules* page - * Pauses a scheduled Liveboard job. - * @example - * ```js - * disabledActions: [Action.PauseScheduleHomepage] - * ``` - * @version SDK: 1.34.0 | ThoughtSpot Cloud: 10.3.0.cl - */ - PauseScheduleHomepage("pauseScheduleHomepage"), - /** - * The **View run history** action **Liveboard Schedules** page. - * Allows viewing schedule run history. - * @example - * ```js - * disabledActions: [Action.ViewScheduleRunHomepage] - * ``` - * @version SDK: 1.34.0 | ThoughtSpot: 10.3.0.cl - */ - ViewScheduleRunHomepage("viewScheduleRunHomepage"), - /** - * Action ID to hide or disable the - * unsubscribe option for Liveboard schedules. - * @example - * ```js - * disabledActions: [Action.UnsubscribeScheduleHomepage] - * ``` - * @version SDK: 1.34.0 | ThoughtSpot: 10.3.0.cl - */ - UnsubscribeScheduleHomepage("unsubscribeScheduleHomepage"), - /** - * The **Manage Tags** action on Homepage Favourite Module. - * @example - * ```js - * disabledActions: [Action.ManageTags] - * ``` - * @version SDK : 1.34.0 | ThoughtSpot Cloud: 10.3.0.cl - */ - ManageTags("manageTags"), - /** - * The **Delete** action on the **Liveboard Schedules* page. - * Deletes a Liveboard schedule. - * @example - * ```js - * disabledActions: [Action.DeleteScheduleHomepage] - * ``` - * @version SDK: 1.34.0 | ThoughtSpot: 10.3.0.cl - */ - DeleteScheduleHomepage("deleteScheduleHomepage"), - /** - * The **Analyze CTA** action on KPI chart. - * @example - * ```js - * disabledActions: [Action.KPIAnalysisCTA] - * ``` - * @version SDK: 1.34.0 | ThoughtSpot Cloud: 10.3.0.cl - */ - KPIAnalysisCTA("kpiAnalysisCTA"), - /** - * Action ID for disabling chip reorder in Answer and Liveboard - * @example - * ```js - * const disabledActions = [Action.DisableChipReorder] - * ``` - * @version SDK: 1.36.0 | ThoughtSpot Cloud: 10.6.0.cl - */ - DisableChipReorder("disableChipReorder"), - /** - * Action ID to show, hide, or disable filters - * in a Liveboard tab. - * - * @example - * ```js - * hiddenAction: [Action.ChangeFilterVisibilityInTab] - * ``` - * @version SDK: 1.36.0 | ThoughtSpot Cloud: 10.6.0.cl - */ - ChangeFilterVisibilityInTab("changeFilterVisibilityInTab"), - /** - * The **Preview data** button on the Spotter interface. - * Allows previewing the data used for Spotter queries. - * - * @example - * ```js - * hiddenAction: [Action.PreviewDataSpotter] - * ``` - * @version SDK: 1.36.0 | ThoughtSpot Cloud: 10.6.0.cl - */ - PreviewDataSpotter("previewDataSpotter"), - /** - * The **Reset** link on the Spotter interface. - * Resets the conversation with Spotter. - * - * @example - * ```js - * hiddenAction: [Action.ResetSpotterChat] - * ``` - * @version SDK: 1.36.0 | ThoughtSpot Cloud: 10.6.0.cl - */ - ResetSpotterChat("resetSpotterChat"), - /** - * Action ID for hide or disable the - * Spotter feedback widget. - * - * @example - * ```js - * hiddenAction: [Action.SpotterFeedback] - * ``` - * @version SDK: 1.36.0 | ThoughtSpot Cloud: 10.6.0.cl - */ - SpotterFeedback("spotterFeedback"), - /** - * Action ID for hide or disable - * the previous prompt edit option in Spotter. - * - * @example - * ```js - * hiddenAction: [Action.EditPreviousPrompt] - * ``` - * @version SDK: 1.36.0 | ThoughtSpot Cloud: 10.6.0.cl - */ - EditPreviousPrompt("editPreviousPrompt"), - /** - * Action ID for hide or disable - * the previous prompt deletion option in Spotter. - * - * @example - * ```js - * hiddenAction: [Action.DeletePreviousPrompt] - * ``` - * @version SDK: 1.36.0 | ThoughtSpot Cloud: 10.6.0.cl - */ - DeletePreviousPrompt("deletePreviousPrompt"), - /** - * Action ID for hide or disable editing tokens generated from - * Spotter results. - * @example - * ```js - * hiddenAction: [Action.EditTokens] - * ``` - * @version SDK: 1.36.0 | ThoughtSpot Cloud: 10.6.0.cl - */ - EditTokens("editTokens"); - - final String value; - const Action(this.value); -} - - -enum PrefetchFeatures { - FullApp("FullApp"), - SearchEmbed("SearchEmbed"), - LiveboardEmbed("LiveboardEmbed"), - VizEmbed("VizEmbed"); - - final String value; - const PrefetchFeatures(this.value); -} - -/** - * Enum for options to change context trigger - * BOTH_CLICKS option is introduced in 10.7 - */ -enum ContextMenuTriggerOptions { - LEFT_CLICK("left-click"), - RIGHT_CLICK("right-click"), - BOTH_CLICKS("both-clicks"); - - final String value; - const ContextMenuTriggerOptions(this.value); -} - -/** - * Enum options to show or suppress Visual Embed SDK and - * ThoughtSpot application logs in the console output. - * This attribute doesn't support suppressing - * browser warnings or errors. - */ -enum LogLevel { - /** - * No application or SDK-related logs will be logged - * in the console output. - * @example - * ```js - * init({ - * ... // other options, - * logLevel: LogLevel.SILENT, - * }) - * ``` - * @version SDK: 1.26.7 | ThoughtSpot Cloud: 9.10.0.cl - */ - SILENT("SILENT"), - /** - * Log only errors in the console output. - * @example - * ```js - * init({ - * ... // other options, - * logLevel: LogLevel.ERROR, - * }) - * ``` - * @version SDK: 1.26.7 | ThoughtSpot Cloud: 9.10.0.cl - */ - ERROR("ERROR"), - /** - * Log only warnings and errors in the console output. - * @example - * ```js - * init({ - * ... // other options, - * logLevel: LogLevel.WARN, - * }) - * ``` - * @version SDK: 1.26.7 | ThoughtSpot Cloud: 9.10.0.cl - */ - WARN("WARN"), - /** - * Log only the information alerts, warnings, and errors - * in the console output. - * @example - * ```js - * init({ - * ... // other options, - * logLevel: LogLevel.INFO, - * }) - * ``` - * @version SDK: 1.26.7 | ThoughtSpot Cloud: 9.10.0.cl - */ - INFO("INFO"), - /** - * Log debug messages, warnings, information alerts, - * and errors in the console output. - * @example - * ```js - * init({ - * ... // other options, - * logLevel: LogLevel.DEBUG, - * }) - * ``` - * @version SDK: 1.26.7 | ThoughtSpot Cloud: 9.10.0.cl - */ - DEBUG("DEBUG"), - /** - * All logs will be logged in the browser console. - * @example - * ```js - * init({ - * ... // other options, - * logLevel: LogLevel.TRACE, - * }) - * ``` - * @version SDK: 1.26.7 | ThoughtSpot Cloud: 9.10.0.cl - */ - TRACE("TRACE"); - - final String value; - const LogLevel(this.value); -} - - -enum lol { - aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"), - b("b"), - c("c"), - d("d"); - - final String value; - const lol(this.value); -} From b37d3ca070610e582594f0e1d051e7639bb4e1d0 Mon Sep 17 00:00:00 2001 From: sastaachar Date: Mon, 24 Mar 2025 15:57:30 +0530 Subject: [PATCH 4/8] bye bye --- schema.json | 1748 --------------------------------------------------- 1 file changed, 1748 deletions(-) delete mode 100644 schema.json diff --git a/schema.json b/schema.json deleted file mode 100644 index 85a4aac2..00000000 --- a/schema.json +++ /dev/null @@ -1,1748 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "definitions": { - "SessionInterface": { - "type": "object", - "properties": { - "sessionId": { - "type": "string" - }, - "genNo": { - "type": "number" - }, - "acSession": { - "type": "object", - "properties": { - "sessionId": { - "type": "string" - }, - "genNo": { - "type": "number" - } - }, - "required": [ - "sessionId", - "genNo" - ], - "additionalProperties": false - } - }, - "required": [ - "sessionId", - "genNo", - "acSession" - ], - "additionalProperties": false - }, - "AuthType": { - "type": "string", - "enum": [ - "None", - "EmbeddedSSO", - "SSO_SAML", - "SSO_OIDC", - "AuthServer", - "AuthServerCookieless", - "Basic" - ], - "description": "The authentication mechanism for allowing access to the the embedded app" - }, - "HomeLeftNavItem": { - "type": "string", - "enum": [ - "search-data", - "insights-home", - "liveboards", - "answers", - "monitor-alerts", - "spotiq-analysis", - "liveboard-schedules" - ], - "description": "This option does not apply to the classic homepage experience. To access the updated modular homepage, set `modularHomeExperience` to `true` (available as Early Access feature in 9.12.5.cl)." - }, - "DOMSelector": { - "type": "string" - }, - "customCssInterface": { - "type": "object", - "properties": { - "variables": { - "$ref": "#/definitions/CustomCssVariables", - "description": "The custom css variables, which can be set. The variables are available in the {@link CustomCssVariables } interface. For more information, see link:https://developers.thoughtspot.com/docs/css-variables-reference[CSS variable reference]." - }, - "rules_UNSTABLE": { - "type": "object", - "additionalProperties": { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "description": "Can be used to define a custom font face like:" - } - }, - "additionalProperties": false, - "description": "inline customCSS within the {@link CustomisationsInterface } . Use {@link CustomCssVariables } or css rules." - }, - "CustomCssVariables": { - "type": "object", - "properties": { - "--ts-var-root-background": { - "type": "string", - "description": "Background color of the Liveboard, visualization, Search, and Answer pages." - }, - "--ts-var-root-color": { - "type": "string", - "description": "Color of the text on application pages." - }, - "--ts-var-root-font-family": { - "type": "string", - "description": "Font type for the text on application pages." - }, - "--ts-var-root-text-transform": { - "type": "string", - "description": "Text transformation specification for UI elements in the app." - }, - "--ts-var-application-color": { - "type": "string", - "description": "Font color of the text on toggle buttons such as\n**All**, **Answers**, and **Liveboards** on the Home page (Classic experience), the text color of the chart and table tiles on Home page (New modular Homepage experience), and title text on the AI-generated charts and tables. The default color code is #2770EF." - }, - "--ts-var-nav-background": { - "type": "string", - "description": "Background color of the top navigation panel." - }, - "--ts-var-nav-color": { - "type": "string", - "description": "Font color of the top navigation panel." - }, - "--ts-var-search-data-button-background": { - "type": "string", - "description": "Background color of the *Search data* button." - }, - "--ts-var-search-data-button-font-color": { - "type": "string", - "description": "Color of the text on the *Search data* button." - }, - "--ts-var-search-data-button-font-family": { - "type": "string", - "description": "Font of the text on the *Search data* button." - }, - "--ts-var-search-bar-text-font-color": { - "type": "string", - "description": "Font color of the text in the Search bar." - }, - "--ts-var-search-bar-text-font-family": { - "type": "string", - "description": "Font of the text in the Search bar." - }, - "--ts-var-search-bar-text-font-style": { - "type": "string", - "description": "Font style of the text in the Search bar." - }, - "--ts-var-search-bar-background": { - "type": "string", - "description": "Background color of the search bar." - }, - "--ts-var-search-auto-complete-background": { - "type": "string", - "description": "Background color of the search suggestions panel." - }, - "--ts-var-search-navigation-button-background": { - "type": "string", - "description": "Background color of the navigation panel that allows you to undo, redo, and reset search operations." - }, - "--ts-var-search-bar-navigation-help-text-background": { - "type": "string", - "description": "Background color of the navigation help text that appears at the bottom of the search suggestions panel." - }, - "--ts-var-search-bar-auto-complete-hover-background": { - "type": "string", - "description": "Background color of the search suggestion block on hover." - }, - "--ts-var-search-auto-complete-font-color": { - "type": "string", - "description": "Font color of the text in the search suggestion panel." - }, - "--ts-var-search-auto-complete-subtext-font-color": { - "type": "string", - "description": "Font color of the sub-text that appears below the keyword in the search suggestion panel." - }, - "--ts-var-spotter-input-background": { - "type": "string", - "description": "Background color of the input box in the Spotter page." - }, - "--ts-var-spotter-prompt-background": { - "type": "string", - "description": "Background color of the previously asked prompt message in the Spotter page." - }, - "--ts-var-answer-data-panel-background-color": { - "type": "string", - "description": "Background color of the data panel." - }, - "--ts-var-answer-edit-panel-background-color": { - "type": "string", - "description": "Background color of the vertical panel on the right side of the Answer page, which includes the options to edit charts and tables." - }, - "--ts-var-answer-view-table-chart-switcher-background": { - "type": "string", - "description": "Background color of the chart switcher on search results and Answer pages." - }, - "--ts-var-answer-view-table-chart-switcher-active-background": { - "type": "string", - "description": "Background color of the currently selected chart type in the chart switcher." - }, - "--ts-var-button-border-radius": { - "type": "string", - "description": "Border-radius of main buttons. For example, the *Search data* button in the top navigation panel." - }, - "--ts-var-button--icon-border-radius": { - "type": "string", - "description": "Border-radius of small buttons such as secondary buttons. For example, share and favorite buttons." - }, - "--ts-var-button--primary-color": { - "type": "string", - "description": "Font color of the text on primary buttons. For example, the primary buttons on Liveboard*, Answer, *Data* workspace, *SpotIQ*, or *Home* page." - }, - "--ts-var-button--primary--font-family": { - "type": "string", - "description": "Font family specification for the text on primary buttons." - }, - "--ts-var-button--primary-background": { - "type": "string", - "description": "Background color of the primary buttons. For example, the primary buttons such as Pin* and *Save*." - }, - "--ts-var-button--primary--hover-background": { - "type": "string", - "description": "Background color of the primary buttons on hover." - }, - "--ts-var-button--primary--active-background": { - "type": "string", - "description": "Backgroud color of the primary buttons when active." - }, - "--ts-var-button--secondary-color": { - "type": "string", - "description": "Font color of the text on the secondary buttons." - }, - "--ts-var-button--secondary--font-family": { - "type": "string", - "description": "Font family specification for the text on the secondary buttons." - }, - "--ts-var-button--secondary-background": { - "type": "string", - "description": "Background color of the secondary buttons." - }, - "--ts-var-button--secondary--hover-background": { - "type": "string", - "description": "Background color of the secondary button on hover." - }, - "--ts-var-button--secondary--active-background": { - "type": "string", - "description": "Backgroud color of the secondary buttons when active." - }, - "--ts-var-button--tertiary-color": { - "type": "string", - "description": "Font color of the tertiary button. For example, the *Undo*, *Redo*, and *Reset* buttons on the *Search* page." - }, - "--ts-var-button--tertiary-background": { - "type": "string", - "description": "Background color of the tertiary button." - }, - "--ts-var-button--tertiary--hover-background": { - "type": "string", - "description": "Background color of the tertiary button when a user hovers over these buttons." - }, - "--ts-var-button--tertiary--active-background": { - "type": "string", - "description": "Backgroud color of the tertiary buttons when active." - }, - "--ts-var-viz-title-color": { - "type": "string", - "description": "Font color of the title text of a visualization or Answer." - }, - "--ts-var-viz-title-font-family": { - "type": "string", - "description": "Font family specification for the title text of a visualization/Answer." - }, - "--ts-var-viz-title-text-transform": { - "type": "string", - "description": "Text transformation specification for visualization and Answer titles." - }, - "--ts-var-viz-description-color": { - "type": "string", - "description": "Font color of the description text and subtitle of a visualization or Answer." - }, - "--ts-var-viz-description-font-family": { - "type": "string", - "description": "Font family specification of description text and subtitle of a visualization or Answer." - }, - "--ts-var-viz-description-text-transform": { - "type": "string", - "description": "Text transformation specification for description text and subtitle of a visualization or Answer." - }, - "--ts-var-viz-border-radius": { - "type": "string", - "description": "Border-radius for the visualization tiles and header panel on a Liveboard." - }, - "--ts-var-viz-box-shadow": { - "type": "string", - "description": "Box shadow property for the visualization tiles and header panel on a Liveboard." - }, - "--ts-var-viz-background": { - "type": "string", - "description": "Background color of the visualization tiles and header panel on a Liveboard." - }, - "--ts-var-viz-legend-hover-background": { - "type": "string", - "description": "Background color of the legend on a visualization or Answer." - }, - "--ts-var-answer-chart-select-background": { - "type": "string", - "description": "Background color of the selected chart type on the chart selection widget." - }, - "--ts-var-answer-chart-hover-background": { - "type": "string", - "description": "Background color of the chart type element when a user hovers over a chart type on the chart selection widget." - }, - "--ts-var-chip-border-radius": { - "type": "string", - "description": "Border-radius of filter chips." - }, - "--ts-var-chip-box-shadow": { - "type": "string", - "description": "Shadow effect for filter chips." - }, - "--ts-var-chip-background": { - "type": "string", - "description": "Background color of filter chips." - }, - "--ts-var-chip--active-color": { - "type": "string", - "description": "Font color of the filter label when a filter chip is selected" - }, - "--ts-var-chip--active-background": { - "type": "string", - "description": "Background color of the filter chips when selected." - }, - "--ts-var-chip--hover-color": { - "type": "string", - "description": "Font color of the text on filter chips when hovered over." - }, - "--ts-var-chip--hover-background": { - "type": "string", - "description": "Background color of filter chips on hover." - }, - "--ts-var-chip-color": { - "type": "string", - "description": "Font color of the text on filter chips." - }, - "--ts-var-chip-title-font-family": { - "type": "string", - "description": "Font family specification for the text on filter chips." - }, - "--ts-var-axis-title-color": { - "type": "string", - "description": "Font color of axis title on charts." - }, - "--ts-var-axis-title-font-family": { - "type": "string", - "description": "Font family specification for the X and Y axis title text." - }, - "--ts-var-axis-data-label-color": { - "type": "string", - "description": "Font color of the X and Y axis labels." - }, - "--ts-var-axis-data-label-font-family": { - "type": "string", - "description": "Font family specification for X and Y axis labels." - }, - "--ts-var-menu-color": { - "type": "string", - "description": "Font color of the menu items." - }, - "--ts-var-menu-background": { - "type": "string", - "description": "Background color of menu panels." - }, - "--ts-var-menu-font-family": { - "type": "string", - "description": "Font family specification for the menu items." - }, - "--ts-var-menu-text-transform": { - "type": "string", - "description": "Text capitalization specification for the menu items." - }, - "--ts-var-menu--hover-background": { - "type": "string", - "description": "Background color for menu items on hover." - }, - "--ts-var-menu-selected-text-color": { - "type": "string", - "description": "Text color for selected menu items." - }, - "--ts-var-dialog-body-background": { - "type": "string", - "description": "Background color of the dialogs." - }, - "--ts-var-dialog-body-color": { - "type": "string", - "description": "Font color of the body text displayed on dialogs." - }, - "--ts-var-dialog-header-background": { - "type": "string", - "description": "Background color of the header text on dialogs." - }, - "--ts-var-dialog-header-color": { - "type": "string", - "description": "Font color of the header text on dialogs." - }, - "--ts-var-dialog-footer-background": { - "type": "string", - "description": "Background color of the footer area on dialogs." - }, - "--ts-var-list-selected-background": { - "type": "string", - "description": "Background for selected state in list" - }, - "--ts-var-list-hover-background": { - "type": "string", - "description": "Background for hover state in list" - }, - "--ts-var-segment-control-hover-background": { - "type": "string", - "description": "Background for hover state in segment control." - }, - "--ts-var-home-watchlist-selected-text-color": { - "type": "string", - "description": "Text color for slected item in modular home's watchlist." - }, - "--ts-var-home-favorite-suggestion-card-text-color": { - "type": "string", - "description": "Text color for favorite carousel find your favorites card in modular home." - }, - "--ts-var-home-favorite-suggestion-card-icon-color": { - "type": "string", - "description": "Icon color for favorite carousel find your favorites card in modular home." - }, - "--ts-var-home-favorite-suggestion-card-background": { - "type": "string", - "description": "Background for favorite carousel find your favorites card in modular home." - }, - "--ts-var-checkbox-error-border": { - "type": "string", - "description": "Border color of checkbox in error state." - }, - "--ts-var-checkbox-border-color": { - "type": "string", - "description": "Border color of checkbox." - }, - "--ts-var-checkbox-hover-border": { - "type": "string", - "description": "Border color of checkbox in hover state." - }, - "--ts-var-checkbox-active-color": { - "type": "string", - "description": "Border and font color of checkbox in active state." - }, - "--ts-var-checkbox-checked-color": { - "type": "string", - "description": "Border color and font color of checkbox in checked state." - }, - "--ts-var-checkbox-checked-disabled": { - "type": "string", - "description": "Border and font color of checkbox in disabled state." - }, - "--ts-var-checkbox-background-color": { - "type": "string", - "description": "Background color of checkbox." - } - }, - "required": [ - "--ts-var-spotter-prompt-background" - ], - "additionalProperties": false, - "description": "The list of customization css variables. These are the only allowed variables possible." - }, - "CustomStyles": { - "type": "object", - "properties": { - "customCSSUrl": { - "type": "string" - }, - "customCSS": { - "$ref": "#/definitions/customCssInterface" - } - }, - "additionalProperties": false, - "description": "Styles within the {@link CustomisationsInterface } ." - }, - "CustomisationsInterface": { - "type": "object", - "properties": { - "style": { - "$ref": "#/definitions/CustomStyles" - }, - "content": { - "type": "object", - "properties": { - "strings": { - "$ref": "#/definitions/Record%3Cstring%2Cany%3E" - } - } - }, - "iconSpriteUrl": { - "type": "string" - } - }, - "additionalProperties": false, - "description": "Configuration to define the customization on the Embedded ThoughtSpot components. You can customize styles, text strings, and icons. For more information, see https://developers.thoughtspot.com/docs/custom-css." - }, - "Record": { - "type": "object" - }, - "EmbedConfig": { - "type": "object", - "properties": { - "thoughtSpotHost": { - "type": "string", - "description": "The ThoughtSpot cluster hostname or IP address." - }, - "authType": { - "$ref": "#/definitions/AuthType", - "description": "The authentication mechanism to use." - }, - "authEndpoint": { - "type": "string", - "description": "[AuthServer] The trusted authentication endpoint to use to get the authentication token. A `GET` request is made to the authentication API endpoint, which returns the token as a plaintext response. For trusted authentication, the `authEndpoint` or `getAuthToken` attribute is required." - }, - "getAuthToken": { - "$comment": "() => Promise", - "description": "[AuthServer] A function that invokes the trusted authentication endpoint and returns a Promise that resolves to the `auth token` string. For trusted authentication, the `authEndpoint` or `getAuthToken` attribute is required.\n\nIt is advisable to fetch a new token inside this method and not reuse the old issued token. When auth expires this method is called again and if it is called with an older token, the authentication will not succeed." - }, - "username": { - "type": "string", - "description": "[AuthServer / Basic] The user name of the ThoughtSpot user. This attribute is required for trusted authentication." - }, - "password": { - "type": "string", - "description": "[Basic] The ThoughtSpot login password corresponding to the username\n\nWarning: This feature is primarily intended for developer testing. It is strongly advised not to use this authentication method in production." - }, - "noRedirect": { - "type": "boolean", - "description": "[SSO] For SSO Authentication, if `noRedirect` is set to true, it will open the SAML auth flow in a popup, instead of redirecting the browser in place.", - "default": false, - "deprecated": true - }, - "inPopup": { - "type": "boolean", - "description": "[SSO] For SSO Authentication, if `inPopup` is set to true, it will open the SAML auth flow in a popup, instead of redirecting the browser in place.\n\nNeed to use this with `authTriggerContainer`. Or manually trigger the `AuthEvent.TRIGGER_SSO_POPUP` event on a user interaction.", - "default": false - }, - "redirectPath": { - "type": "string", - "description": "[SSO] For SSO Authentication, one can supply an optional path param; This will be the path on the host origin where the SAML flow will be terminated.\n\nEg: \"/dashboard\", \"#/foo\" [Do not include the host]" - }, - "basepath": { - "type": "string" - }, - "shouldEncodeUrlQueryParams": { - "type": "boolean", - "description": "Boolean to define if the query parameters in the ThoughtSpot URL should be encoded in base64. This provides additional security to ThoughtSpot clusters against cross-site scripting attacks.", - "default": false - }, - "suppressNoCookieAccessAlert": { - "type": "boolean", - "description": "Suppress cookie access alert when third-party cookies are blocked by the user's browser. Third-party cookie blocking is the default behaviour on some web browsers like Safari. If you set this attribute to `true`, you are encouraged to handle `noCookieAccess` event, to show your own treatment in this case.", - "default": false - }, - "ignoreNoCookieAccess": { - "type": "boolean", - "description": "Ignore the cookie access alert when third-party cookies are blocked by the user's browser. If you set this to `true`, the embedded iframe behaviour persists even in the case of a non-logged-in user.", - "default": false - }, - "autoLogin": { - "type": "boolean", - "description": "Re-login a user with the previous login options when a user session expires.", - "default": false - }, - "disableLoginRedirect": { - "type": "boolean", - "description": "Disable redirection to the login page when the embedded session expires This flag is typically used alongside the combination of authentication modes such as {@link AuthType.AuthServer } and auto-login behavior {@link * EmbedConfig.autoLogin }", - "default": false - }, - "loginFailedMessage": { - "type": "string", - "description": "This message is displayed in the embedded view when a user login fails." - }, - "callPrefetch": { - "type": "boolean", - "description": "Calls the prefetch method internally when set to `true`", - "default": false - }, - "queueMultiRenders": { - "type": "boolean", - "description": "When there are multiple objects embedded, queue the rendering of embedded objects to start after the previous embed's render is complete. This helps improve performance by decreasing the load on the browser.", - "default": false - }, - "detectCookieAccessSlow": { - "type": "boolean", - "description": "[AuthServer|Basic] Detect if third-party party cookies are enabled by doing an additional call. This is slower and should be avoided. Listen to the `NO_COOKIE_ACCESS` event to handle the situation.\n\nThis is slightly slower than letting the browser handle the cookie check, as it involves an extra network call." - }, - "suppressSearchEmbedBetaWarning": { - "type": "boolean", - "description": "Hide the `beta` alert warning message for SearchEmbed." - }, - "suppressSageEmbedBetaWarning": { - "type": "boolean", - "description": "Hide `beta` alert warning message for SageEmbed." - }, - "customizations": { - "$ref": "#/definitions/CustomisationsInterface", - "description": "Custom style params for embed Config." - }, - "authTriggerContainer": { - "type": "string", - "description": "For `inPopup` SAMLRedirect or OIDCRedirect authentication, we need a button that the user can click to trigger the flow. This attribute sets a containing element for that button." - }, - "useEventForSAMLPopup": { - "type": "boolean", - "description": "Specify that we want to use the `AuthEvent.TRIGGER_SSO_POPUP` event to trigger SAML popup. This is useful when you want to trigger the popup on a custom user action." - }, - "authTriggerText": { - "type": "string", - "description": "Text to show in the button which triggers the popup auth flow. Default: `Authorize`." - }, - "blockNonEmbedFullAppAccess": { - "type": "boolean", - "description": "Prevent users from accessing the full application or ThoughtSpot application pages access to the embedded application users outside of the iframe.", - "default": true - }, - "pendoTrackingKey": { - "type": "string", - "description": "Pendo API key to enable Pendo tracking to your own subscription, the key is added as an additional key to the embed, as per this link:https://support.pendo.io/hc/en-us/articles/360032201951-Send-data-to-multiple-subscriptions[document]." - }, - "suppressErrorAlerts": { - "type": "boolean", - "description": "If passed as true all alerts will be suppressed in the embedded app." - }, - "logLevel": { - "$ref": "#/definitions/LogLevel", - "description": "Suppress or show specific types of logs in the console output. For example, `LogLevel.ERROR` shows only Visual Embed SDK and ThoughtSpot application errors and suppresses other logs such as warnings, information alerts, and debug messages in the console output.", - "default": "LogLevel.ERROR" - }, - "disableSDKTracking": { - "type": "boolean", - "description": "Disables the Mixpanel tracking from the SDK." - }, - "dateFormatLocale": { - "type": "string", - "description": "Overrides default/user preferred locale for date formatting" - }, - "numberFormatLocale": { - "type": "string", - "description": "Overrides default/user preferred locale for number formatting" - }, - "currencyFormat": { - "type": "string", - "description": "Format to be used for currency when currency format is set to infer from browser" - }, - "disableLoginFailurePage": { - "type": "boolean", - "description": "This flag is used to disable showing the login failure page in the embedded app." - }, - "additionalFlags": { - "type": "object", - "additionalProperties": { - "type": [ - "string", - "number", - "boolean" - ] - }, - "description": "This is an object (key/val) of override flags which will be applied to the internal embedded object. This can be used to add any URL flag. Warning: This option is for advanced use only and is used internally to control embed behavior in non-regular ways. We do not publish the list of supported keys and values associated with each." - }, - "customVariablesForThirdPartyTools": { - "$ref": "#/definitions/Record%3Cstring%2Cany%3E", - "description": "This is an object (key/val) for customVariables being used by the third party tool's script." - }, - "disablePreauthCache": { - "type": "boolean" - } - }, - "required": [ - "thoughtSpotHost", - "authType" - ], - "additionalProperties": false, - "description": "The configuration object for embedding ThoughtSpot content. It includes the ThoughtSpot hostname or IP address, the type of authentication, and the authentication endpoint if a trusted authentication server is used." - }, - "LogLevel": { - "type": "string", - "enum": [ - "SILENT", - "ERROR", - "WARN", - "INFO", - "DEBUG", - "TRACE" - ], - "description": "Enum options to show or suppress Visual Embed SDK and ThoughtSpot application logs in the console output. This attribute doesn't support suppressing browser warnings or errors." - }, - "LayoutConfig": { - "type": "object", - "additionalProperties": false - }, - "FrameParams": { - "type": "object", - "properties": { - "width": { - "type": [ - "number", - "string" - ], - "description": "The width of the iframe (unit is pixels if numeric)." - }, - "height": { - "type": [ - "number", - "string" - ], - "description": "The height of the iframe (unit is pixels if numeric)." - }, - "loading": { - "type": "string", - "enum": [ - "lazy", - "eager", - "auto" - ], - "description": "Set to 'lazy' to enable lazy loading of the embedded TS frame. This will defer loading of the frame until it comes into the viewport. This is useful for performance optimization." - } - }, - "additionalProperties": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "number" - }, - { - "type": "boolean" - }, - { - "not": {} - } - ], - "description": "This parameters will be passed on the iframe as is." - }, - "description": "Embedded iframe configuration" - }, - "ViewConfig": { - "type": "object", - "properties": { - "frameParams": { - "$ref": "#/definitions/FrameParams", - "description": "The width and height dimensions to render an embedded object inside your app. Specify the values in pixels or percentage." - }, - "disabledActions": { - "type": "array", - "items": { - "$ref": "#/definitions/Action" - }, - "description": "The list of actions to disable from the primary menu, more menu (...), and the contextual menu. These actions will be disabled for the user. Use this to disable actions." - }, - "disabledActionReason": { - "type": "string", - "description": "The tooltip to display for disabled actions." - }, - "hiddenActions": { - "type": "array", - "items": { - "$ref": "#/definitions/Action" - }, - "description": "The list of actions to hide from the embedded. This actions will be hidden from the user. Use this to hide an action." - }, - "visibleActions": { - "type": "array", - "items": { - "$ref": "#/definitions/Action" - }, - "description": "The list of actions to display from the primary menu, more menu (...), and the contextual menu. These will be only actions that are visible to the user. Use this to hide all actions except the ones you want to show.\n\nUse either this or hiddenActions." - }, - "showAlerts": { - "type": "boolean", - "description": "Show alert messages and toast messages in the embedded view in full app embed." - }, - "runtimeFilters": { - "type": "array", - "items": { - "$ref": "#/definitions/RuntimeFilter" - }, - "description": "The list of runtime filters to apply to a search Answer, visualization, or Liveboard." - }, - "runtimeParameters": { - "type": "array", - "items": { - "$ref": "#/definitions/RuntimeParameter" - }, - "description": "The list of parameter override to apply to a search Answer, visualization, or Liveboard." - }, - "locale": { - "type": "string", - "description": "The locale settings to apply to the embedded view." - }, - "additionalFlags": { - "type": "object", - "additionalProperties": { - "type": [ - "string", - "number", - "boolean" - ] - }, - "description": "This is an object (key/val) of override flags which will be applied to the internal embedded object. This can be used to add any URL flag. If the same flags are passed in init, they will be overriden by the values here. Warning: This option is for advanced use only and is used internally to control embed behavior in non-regular ways. We do not publish the list of supported keys and values associated with each." - }, - "customizations": { - "$ref": "#/definitions/CustomisationsInterface", - "description": "Dynamic CSSUrl and customCSS to be injected in the loaded application. You would also need to set `style-src` in the CSP settings.", - "default": "" - }, - "insertAsSibling": { - "type": "boolean", - "description": "Insert as a sibling of the target container, instead of appending to a child inside it." - }, - "contextMenuTrigger": { - "$ref": "#/definitions/ContextMenuTriggerOptions", - "description": "flag to set ContextMenu Trigger to either left or right click." - }, - "linkOverride": { - "type": "boolean", - "description": "Flag to override the *Open Link in New Tab* context menu option." - }, - "excludeRuntimeFiltersfromURL": { - "type": "boolean", - "description": "Boolean to exclude runtimeFilters in the URL By default it is true, this flag removes runtime filters from the URL when set to false, runtime filters will be included in the URL.\n\nIrrespective of this flag, runtime filters ( if passed ) will be applied to the embedded view.", - "default": false - }, - "hiddenTabs": { - "type": "array", - "items": { - "type": "string" - }, - "description": "The list of tab IDs to hide from the embedded. This Tabs will be hidden from their respective LBs. Use this to hide an tabID." - }, - "hiddenHomepageModules": { - "type": "array", - "items": { - "$ref": "#/definitions/HomepageModule" - }, - "description": "Hide the home page modules For example: hiddenHomepageModules = [HomepageModule.MyLibrary]\n\n**Note**: This option does not apply to the classic homepage. To access the updated modular homepage, set `modularHomeExperience` to `true` (available as Early Access feature in 9.12.5.cl)." - }, - "reorderedHomepageModules": { - "type": "array", - "items": { - "$ref": "#/definitions/HomepageModule" - }, - "description": "reordering the home page modules eg: reorderedHomepageModules = [HomepageModule.MyLibrary, HomepageModule.Watchlist]\n\n**Note**: This option does not apply to the classic homepage. To access the updated modular homepage, set `modularHomeExperience` to `true` (available as Early Access feature in 9.12.5.cl)." - }, - "visibleTabs": { - "type": "array", - "items": { - "type": "string" - }, - "description": "The list of tab IDs to show in the embedded Liveboard. Only the tabs specified in the array will be shown in the Liveboard.\n\nUse either `visibleTabs` or `hiddenTabs`." - }, - "hiddenHomeLeftNavItems": { - "type": "array", - "items": { - "$ref": "#/definitions/HomeLeftNavItem" - }, - "description": "homepageLeftNavItems : Show or hide the left navigation bar items. There are 8 eight home navigation list items. To hide these items, specify the string in the array." - }, - "preRenderId": { - "type": "string", - "description": "PreRender id to be used for PreRendering the embed. Use PreRender to render the embed in the background and then show or hide the rendered embed using showPreRender or hidePreRender respectively." - }, - "doNotTrackPreRenderSize": { - "type": "boolean", - "description": "Determines if the PreRender component should dynamically track the size of its embedding element and adjust its own size accordingly. Enabling this option allows the PreRender component to automatically adapt its dimensions based on changes to the size of the embedding element.", - "default": false - }, - "excludeRuntimeParametersfromURL": { - "type": "boolean", - "description": "Boolean to exclude runtimeParameters from the URL when set to true, this flag removes runtime parameters from the URL.\n\nIrrespective of this flag, runtime filters ( if passed ) will be applied to the embedded view.", - "default": false - }, - "enableV2Shell_experimental": { - "type": "boolean", - "description": "Enable the V2 shell. This can provide performance benefits due to a lighterweight shell." - }, - "collapseSearchBar": { - "type": "boolean", - "description": "To set the initial state of the search bar in case of saved Answers.", - "default": true - }, - "disableRedirectionLinksInNewTab": { - "type": "boolean", - "description": "This flag can be used to disable links inside the embedded app, and disable redirection of links in a new tab." - }, - "dataPanelV2": { - "type": "boolean", - "description": "Flag to control Data panel experience", - "default": false - }, - "enableCustomColumnGroups": { - "type": "boolean", - "description": "To enable custom column groups in data panel v2", - "default": false - }, - "overrideOrgId": { - "type": "number", - "description": "Overrides an Org context for embedding application users. This parameter allows a user authenticated to one Org to view the objects from another Org. The `overrideOrgId` setting is honoured only if the Per Org URL feature is enabled on your ThoughtSpot instance." - } - }, - "additionalProperties": false, - "description": "The configuration object for an embedded view." - }, - "Action": { - "type": "string", - "enum": [ - "save", - "saveAsView", - "makeACopy", - "editACopy", - "embedDocument", - "subscription", - "schedule-list", - "share", - "addFilter", - "addDataPanelObjects", - "configureFilter", - "collapseDataSources", - "collapseDataPanel", - "chooseDataSources", - "addFormula", - "addParameter", - "addSimpleCohort", - "addAdvancedCohort", - "spotIQAnalyze", - "shareViz", - "showUnderlyingData", - "download", - "downloadAsPng", - "downloadAsPdf", - "downloadAsCSV", - "downloadAsXLSX", - "exportTSL", - "importTSL", - "updateTSL", - "editTSL", - "present", - "toggleSize", - "edit", - "editTitle", - "delete", - "pinboardInfo", - "pin", - "explore", - "context-menu-item-include", - "context-menu-item-exclude", - "context-menu-item-copy-to-clipboard", - "context-menu-item-copy-and-edit", - "context-menu-item-edit-measure", - "context-menu-item-separator", - "DRILL", - "requestAccess", - "queryDetailsButtons", - "onDeleteAnswer", - "answerChartSwitcher", - "addToFavorites", - "editDetails", - "createMonitor", - "reportError", - "sync-to-sheets", - "sync-to-other-apps", - "manage-pipeline", - "context-menu-item-cross-filter", - "syncToSlack", - "syncToTeams", - "context-menu-item-remove-cross-filter", - "axisMenuAggregate", - "axisMenuTimeBucket", - "axisMenuFilter", - "axisMenuConditionalFormat", - "axisMenuSort", - "axisMenuGroup", - "axisMenuPosition", - "axisMenuRename", - "axisMenuEdit", - "axisMenuNumberFormat", - "axisMenuTextWrapping", - "axisMenuRemove", - "renameModalTitleDescription", - "requestVerification", - "markAsVerified", - "addTab", - "enableContextualChangeAnalysis", - "showSageQuery", - "editSageAnswer", - "sageAnswerFeedback", - "modifySageAnswer", - "onContainerMove", - "manageMonitor", - "personalisedViewsDropdown", - "liveboardUsers", - "tml", - "createLiveboard", - "verifiedLiveboard", - "AskAi", - "addToWatchlist", - "removeFromWatchlist", - "organiseFavourites", - "AIHighlights", - "editScheduleHomepage", - "pauseScheduleHomepage", - "viewScheduleRunHomepage", - "unsubscribeScheduleHomepage", - "manageTags", - "deleteScheduleHomepage", - "kpiAnalysisCTA", - "disableChipReorder", - "changeFilterVisibilityInTab", - "previewDataSpotter", - "resetSpotterChat", - "spotterFeedback", - "editPreviousPrompt", - "deletePreviousPrompt", - "editTokens" - ], - "description": "ThoughtSpot application pages include actions and menu commands for various user-initiated operations. These actions are represented as enumeration members in the SDK. To show, hide, or disable specific actions in the embedded view, define the Action enumeration members in the `disabledActions`, `visibleActions`, or `hiddenActions` array." - }, - "RuntimeFilter": { - "type": "object", - "properties": { - "columnName": { - "type": "string", - "description": "The name of the column to filter on (case-sensitive)" - }, - "operator": { - "$ref": "#/definitions/RuntimeFilterOp", - "description": "The operator to apply" - }, - "values": { - "type": "array", - "items": { - "type": [ - "number", - "boolean", - "string" - ] - }, - "description": "The list of operands. Some operators like EQ, LE accept a single operand, whereas other operators like BW and IN accept multiple operands." - } - }, - "required": [ - "columnName", - "operator", - "values" - ], - "additionalProperties": false, - "description": "A filter that can be applied to ThoughtSpot answers, Liveboards, or visualizations at runtime." - }, - "RuntimeFilterOp": { - "type": "string", - "enum": [ - "EQ", - "NE", - "LT", - "LE", - "GT", - "GE", - "CONTAINS", - "BEGINS_WITH", - "ENDS_WITH", - "BW_INC_MAX", - "BW_INC_MIN", - "BW_INC", - "BW", - "IN", - "NOT_IN" - ], - "description": "A map of the supported runtime filter operations" - }, - "RuntimeParameter": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "The name of the runtime parameter to filter on (case-sensitive)" - }, - "value": { - "type": [ - "number", - "boolean", - "string" - ], - "description": "Values" - } - }, - "required": [ - "name", - "value" - ], - "additionalProperties": false, - "description": "A filter that can be applied to ThoughtSpot Answers, Liveboards, or visualizations at runtime." - }, - "ContextMenuTriggerOptions": { - "type": "string", - "enum": [ - "left-click", - "right-click", - "both-clicks" - ], - "description": "Enum for options to change context trigger BOTH_CLICKS option is introduced in 10.7" - }, - "HomepageModule": { - "type": "string", - "enum": [ - "SEARCH", - "WATCHLIST", - "FAVORITE", - "MY_LIBRARY", - "TRENDING", - "LEARNING" - ], - "description": "Home page module that can be hidden.\n**Note**: This option does not apply to the classic homepage. To access the updated modular homepage, set `modularHomeExperience` to `true` (available as Early Access feature in 9.12.5.cl)." - }, - "MessagePayload": { - "type": "object", - "properties": { - "type": { - "type": "string" - }, - "data": {}, - "status": { - "type": "string" - } - }, - "required": [ - "type", - "data" - ], - "additionalProperties": false, - "description": "MessagePayload: Embed event payload: message type, data and status (start/end)" - }, - "MessageOptions": { - "type": "object", - "properties": { - "start": { - "type": "boolean", - "description": "A boolean value indicating that start status events of this type will be dispatched." - } - }, - "additionalProperties": false, - "description": "MessageOptions: By providing options, getting specific event start / end based on option" - }, - "MessageCallback": { - "$comment": "(\n /* payload: Message payload contains type, data, and status */\n payload: MessagePayload,\n /**\n * responder: Message callback function triggered when embed event\n * initiated\n */\n responder?: (data: any) => void) => void", - "type": "object", - "properties": { - "namedArgs": { - "type": "object", - "properties": { - "payload": { - "$ref": "#/definitions/MessagePayload" - }, - "responder": { - "$comment": "(data: any) => void", - "type": "object", - "properties": { - "namedArgs": { - "type": "object", - "properties": { - "data": {} - }, - "required": [ - "data" - ], - "additionalProperties": false - } - }, - "description": "responder: Message callback function triggered when embed event initiated" - } - }, - "required": [ - "payload" - ], - "additionalProperties": false - } - }, - "description": "MessageCallback: Embed event message callback" - }, - "MessageCallbackObj": { - "type": "object", - "properties": { - "options": { - "$ref": "#/definitions/MessageOptions", - "description": "options: It contains start, a boolean value indicating that start status events of this type will be dispatched" - }, - "callback": { - "$ref": "#/definitions/MessageCallback" - } - }, - "required": [ - "options", - "callback" - ], - "additionalProperties": false, - "description": "MessageCallbackObj: contains message options & callback function" - }, - "GenericCallbackFn": { - "$comment": "(...args: any[]) => any", - "type": "object", - "properties": { - "namedArgs": { - "type": "object", - "properties": { - "args": { - "type": "array", - "items": {} - } - }, - "required": [ - "args" - ], - "additionalProperties": false - } - } - }, - "QueryParams": { - "type": "object", - "additionalProperties": { - "type": [ - "string", - "boolean", - "number" - ] - } - }, - "EmbedEvent": { - "type": "string", - "enum": [ - "init", - "authInit", - "load", - "data", - "queryChanged", - "drillDown", - "dataSourceSelected", - "addRemoveColumns", - "customAction", - "vizPointDoubleClick", - "vizPointClick", - "Error", - "alert", - "ThoughtspotAuthExpired", - "getDataClick", - "ROUTE_CHANGE", - "noCookieAccess", - "dialog-open", - "dialog-close", - "PinboardRendered", - "*", - "save", - "download", - "downloadAsPng", - "downloadAsPdf", - "downloadAsCsv", - "downloadAsXlsx", - "answerDelete", - "pin", - "spotIQAnalyze", - "share", - "context-menu-item-include", - "context-menu-item-exclude", - "context-menu-item-copy-to-clipboard", - "updateTSL", - "editTSL", - "exportTSL", - "saveAsView", - "copyAEdit", - "showUnderlyingData", - "answerChartSwitcher", - "pinboardInfo", - "addToFavorites", - "subscription", - "edit", - "makeACopy", - "present", - "delete", - "schedule-list", - "cancel", - "explore", - "embedDocument", - "cross-filter-changed", - "vizPointRightClick", - "filterChanged", - "sageEmbedQuery", - "sageWorksheetUpdated", - "updateConnection", - "createConnection", - "updatePersonalisedView", - "savePersonalisedView", - "resetLiveboard", - "deletePersonalisedView", - "createWorksheet", - "AskSageInit", - "rename", - "onBeforeGetVizDataIntercept", - "parameterChanged", - "TableVizRendered", - "createLiveboard" - ], - "description": "Event types emitted by the embedded ThoughtSpot application.\n\nTo add an event listener use the corresponding {@link LiveboardEmbed.on } or {@link AppEmbed.on } or {@link SearchEmbed.on } method." - }, - "HostEvent": { - "type": "string", - "enum": [ - "search", - "triggerDrillDown", - "GetIframeUrl", - "SetPinboardVisibleVizs", - "SetActiveTab", - "UpdateRuntimeFilters", - "Navigate", - "openFilter", - "addColumns", - "removeColumn", - "getExportRequestForCurrentPinboard", - "pin", - "pinboardInfo", - "subscription", - "schedule-list", - "exportTSL", - "editTSL", - "updateTSL", - "downloadAsPdf", - "makeACopy", - "delete", - "explore", - "createMonitor", - "manageMonitor", - "edit", - "embedDocument", - "present", - "getTML", - "showUnderlyingData", - "onDeleteAnswer", - "spotIQAnalyze", - "downloadAsPng", - "downloadAsCSV", - "downloadAsXLSX", - "share", - "save", - "sync-to-sheets", - "sync-to-other-apps", - "manage-pipeline", - "resetSearch", - "getFilters", - "updateFilters", - "getTabs", - "SetPinboardVisibleTabs", - "SetPinboardHiddenTabs", - "updateSageQuery", - "getAnswerSession", - "AskSage", - "UpdateCrossFilter", - "ResetLiveboardPersonalisedView", - "UpdateParameters", - "GetParameters", - "UpdatePersonalisedView", - "saveAnswer", - "TransformTableVizData" - ], - "description": "Event types that can be triggered by the host application to the embedded ThoughtSpot app.\n\nTo trigger an event use the corresponding {@link LiveboardEmbed.trigger } or {@link AppEmbed.trigger } or {@link * SearchEmbed.trigger } method." - }, - "DataSourceVisualMode": { - "type": "string", - "enum": [ - "hide", - "collapse", - "expand" - ], - "description": "The different visual modes that the data sources panel within search could appear in, such as hidden, collapsed, or expanded." - }, - "Param": { - "type": "string", - "enum": [ - "embedApp", - "dataSources", - "dataSourceMode", - "disableAction", - "disableHint", - "forceTable", - "preventPinboardFilterRemoval", - "searchQuery", - "hideAction", - "hideObjects", - "hostAppUrl", - "enableVizTransform", - "enableSearchAssist", - "enablePendoHelp", - "hideResult", - "useLastSelectedSources", - "tag", - "autoLogin", - "searchTokenString", - "executeSearch", - "isFullHeightPinboard", - "isLiveboardEmbed", - "isSearchEmbed", - "isVizEmbed", - "sdkVersion", - "viewPortHeight", - "viewPortWidth", - "visibleAction", - "disableLoginRedirect", - "pinboardVisibleVizs", - "isPinboardV2Enabled", - "enableDataPanelV2", - "showAlerts", - "locale", - "customStyle", - "forceSAMLAutoRedirect", - "authType", - "iconSprite", - "cookieless", - "contextMenuEnabledOnWhichClick", - "linkOverride", - "blockNonEmbedFullAppAccess", - "insertInToSlide", - "primaryNavHidden", - "profileAndHelpInNavBarHidden", - "applicationSwitcherHidden", - "orgSwitcherHidden", - "isSageEmbed", - "hideWorksheetSelector", - "disableWorksheetChange", - "hideSourceSelection", - "disableSourceSelection", - "hideEurekaResults", - "hideEurekaSuggestions", - "hideAutocompleteSuggestions", - "hideLiveboardHeader", - "showLiveboardDescription", - "showLiveboardTitle", - "hideTabs", - "visibleTabs", - "hideTabPanel", - "hideSampleQuestions", - "worksheet", - "query", - "hideHomepageLeftNav", - "modularHomeExperience", - "additionalPendoKey", - "isLiveboardHeaderSticky", - "isProductTour", - "hideSearchBarTitle", - "hideSageAnswerHeader", - "hideSearchBar", - "clientLogLevel", - "overrideConsoleLogs", - "enableAskSage", - "collapseSearchBarInitially", - "dataPanelCustomGroupsAccordionInitialState", - "enableCustomColumnGroups", - "dateFormatLocale", - "numberFormatLocale", - "currencyFormat", - "enable2ColumnLayout", - "isFullAppEmbed", - "isOnBeforeGetVizDataInterceptEnabled", - "focusSearchBarOnRender", - "disableRedirectionLinksInNewTab", - "homePageSearchBarMode", - "showLiveboardVerifiedBadge", - "showLiveboardReverifyBanner", - "isLiveboardHeaderV2Enabled", - "hideIrrelevantFiltersAtTabLevel", - "isSpotterExperienceEnabled", - "isUnifiedSearchExperienceEnabled", - "orgId", - "oAuthPollingInterval", - "isForceRedirect", - "dataSourceId", - "preAuthCache", - "showSpotterLimitations" - ], - "description": "The query params passed down to the embedded ThoughtSpot app containing configuration and/or visual information." - }, - "AnswerServiceType": { - "type": "object", - "properties": { - "getAnswer": { - "$comment": "(offset: number, batchSize: number) => any", - "type": "object", - "properties": { - "namedArgs": { - "type": "object", - "properties": { - "offset": { - "type": "number" - }, - "batchSize": { - "type": "number" - } - }, - "required": [ - "offset", - "batchSize" - ], - "additionalProperties": false - } - } - } - }, - "additionalProperties": false - }, - "PrefetchFeatures": { - "type": "string", - "enum": [ - "FullApp", - "SearchEmbed", - "LiveboardEmbed", - "VizEmbed" - ] - }, - "ColumnValue": { - "type": "object", - "properties": { - "column": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "name": { - "type": "string" - }, - "dataType": { - "type": "string" - } - }, - "required": [ - "id", - "name", - "dataType" - ] - }, - "value": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "number" - }, - { - "type": "boolean" - }, - { - "type": "object", - "properties": { - "v": { - "type": "object", - "properties": { - "s": { - "type": "number" - }, - "e": { - "type": "number" - } - }, - "required": [ - "s", - "e" - ], - "additionalProperties": false - } - }, - "required": [ - "v" - ], - "additionalProperties": false - } - ] - } - }, - "required": [ - "column", - "value" - ], - "additionalProperties": false - }, - "VizPoint": { - "type": "object", - "properties": { - "selectedAttributes": { - "type": "array", - "items": { - "$ref": "#/definitions/ColumnValue" - } - }, - "selectedMeasures": { - "type": "array", - "items": { - "$ref": "#/definitions/ColumnValue" - } - } - }, - "required": [ - "selectedAttributes", - "selectedMeasures" - ], - "additionalProperties": false - }, - "CustomActionPayload": { - "type": "object", - "properties": { - "contextMenuPoints": { - "type": "object", - "properties": { - "clickedPoint": { - "$ref": "#/definitions/VizPoint" - }, - "selectedPoints": { - "type": "array", - "items": { - "$ref": "#/definitions/VizPoint" - } - } - }, - "required": [ - "clickedPoint", - "selectedPoints" - ], - "additionalProperties": false - }, - "embedAnswerData": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "id": { - "type": "string" - }, - "sources": { - "type": "object", - "properties": { - "header": { - "type": "object", - "properties": { - "guid": { - "type": "string" - } - }, - "required": [ - "guid" - ], - "additionalProperties": false - } - }, - "required": [ - "header" - ], - "additionalProperties": false - }, - "columns": { - "type": "array", - "items": {} - }, - "data": { - "type": "array", - "items": {} - } - }, - "required": [ - "name", - "id", - "sources", - "columns", - "data" - ] - }, - "session": { - "$ref": "#/definitions/SessionInterface" - }, - "vizId": { - "type": "string" - } - }, - "required": [ - "embedAnswerData", - "session" - ], - "additionalProperties": false - }, - "DefaultAppInitData": { - "type": "object", - "properties": { - "customisations": { - "$ref": "#/definitions/CustomisationsInterface" - }, - "authToken": { - "type": "string" - }, - "runtimeFilterParams": { - "type": [ - "string", - "null" - ] - }, - "runtimeParameterParams": { - "type": [ - "string", - "null" - ] - }, - "hiddenHomepageModules": { - "type": "array", - "items": { - "$ref": "#/definitions/HomepageModule" - } - }, - "reorderedHomepageModules": { - "type": "array", - "items": { - "type": "string" - } - }, - "hostConfig": { - "$ref": "#/definitions/Record%3Cstring%2Cany%3E" - }, - "hiddenHomeLeftNavItems": { - "type": "array", - "items": { - "type": "string" - } - }, - "customVariablesForThirdPartyTools": { - "$ref": "#/definitions/Record%3Cstring%2Cany%3E" - } - }, - "required": [ - "customisations", - "authToken", - "runtimeFilterParams", - "runtimeParameterParams", - "hiddenHomepageModules", - "reorderedHomepageModules", - "hostConfig", - "hiddenHomeLeftNavItems", - "customVariablesForThirdPartyTools" - ], - "additionalProperties": false - } - } -} \ No newline at end of file From af97fcfc12086693cc181bd5d82da53416fd5245 Mon Sep 17 00:00:00 2001 From: sastaachar Date: Mon, 24 Mar 2025 15:58:26 +0530 Subject: [PATCH 5/8] Mr. Fantastic --- package-lock.json | 1586 +-------------------------------------------- package.json | 9 +- 2 files changed, 10 insertions(+), 1585 deletions(-) diff --git a/package-lock.json b/package-lock.json index 3f3dd7db..b6e83429 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@thoughtspot/visual-embed-sdk", - "version": "1.36.4", + "version": "1.35.14", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@thoughtspot/visual-embed-sdk", - "version": "1.36.4", + "version": "1.35.14", "license": "ThoughtSpot Development Tools End User License Agreement", "dependencies": { "algoliasearch": "^4.10.5", @@ -36,7 +36,6 @@ "@types/jest": "^22.2.3", "@types/lodash": "^4.17.0", "@types/mixpanel-browser": "^2.35.6", - "@types/mustache": "^4.2.5", "@types/react-test-renderer": "^17.0.1", "@typescript-eslint/eslint-plugin": "^4.6.0", "@typescript-eslint/parser": "^4.6.0", @@ -66,7 +65,6 @@ "jest": "^26.6.3", "jest-fetch-mock": "^3.0.3", "jsdom": "^17.0.0", - "mustache": "^4.2.0", "node-sass": "^8.0.0", "prettier": "2.1.2", "react": "^16.14.0", @@ -78,10 +76,7 @@ "rollup": "4.24.0", "rollup-plugin-typescript2": "0.27.3", "ts-jest": "^26.5.5", - "ts-json-schema-generator": "^2.3.0", "ts-loader": "8.0.4", - "ts-morph": "^25.0.1", - "tsx": "^4.19.3", "typedoc": "0.21.6", "typedoc-plugin-toc-group": "thoughtspot/typedoc-plugin-toc-group", "typescript": "^4.9.4", @@ -2463,23 +2458,6 @@ "node": ">=12" } }, - "node_modules/@esbuild/netbsd-arm64": { - "version": "0.25.1", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.1.tgz", - "integrity": "sha512-O96poM2XGhLtpTh+s4+nP7YCCAfb4tJNRVZHfIE7dgmax+yMP2WgMd2OecBuaATHKTHsLWHQeuaxMRnCsH8+5g==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=18" - } - }, "node_modules/@esbuild/netbsd-x64": { "version": "0.21.5", "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz", @@ -2496,23 +2474,6 @@ "node": ">=12" } }, - "node_modules/@esbuild/openbsd-arm64": { - "version": "0.25.1", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.1.tgz", - "integrity": "sha512-Na9T3szbXezdzM/Kfs3GcRQNjHzM6GzFBeU1/6IV/npKP5ORtp9zbQjvkDJ47s6BCgaAZnnnu/cY1x342+MvZg==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=18" - } - }, "node_modules/@esbuild/openbsd-x64": { "version": "0.21.5", "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz", @@ -2715,109 +2676,6 @@ "dev": true, "license": "BSD-3-Clause" }, - "node_modules/@isaacs/cliui": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", - "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", - "dev": true, - "license": "ISC", - "dependencies": { - "string-width": "^5.1.2", - "string-width-cjs": "npm:string-width@^4.2.0", - "strip-ansi": "^7.0.1", - "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", - "wrap-ansi": "^8.1.0", - "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/@isaacs/cliui/node_modules/ansi-regex": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", - "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, - "node_modules/@isaacs/cliui/node_modules/ansi-styles": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", - "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/@isaacs/cliui/node_modules/emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "dev": true, - "license": "MIT" - }, - "node_modules/@isaacs/cliui/node_modules/string-width": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", - "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", - "dev": true, - "license": "MIT", - "dependencies": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@isaacs/cliui/node_modules/strip-ansi": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", - "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^6.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } - }, - "node_modules/@isaacs/cliui/node_modules/wrap-ansi": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", - "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^6.1.0", - "string-width": "^5.0.1", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, "node_modules/@istanbuljs/load-nyc-config": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", @@ -3694,17 +3552,6 @@ "node": ">=10" } }, - "node_modules/@pkgjs/parseargs": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", - "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", - "dev": true, - "license": "MIT", - "optional": true, - "engines": { - "node": ">=14" - } - }, "node_modules/@react-icons/all-files": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/@react-icons/all-files/-/all-files-4.1.0.tgz", @@ -4518,44 +4365,6 @@ "node": ">= 6" } }, - "node_modules/@ts-morph/common": { - "version": "0.26.1", - "resolved": "https://registry.npmjs.org/@ts-morph/common/-/common-0.26.1.tgz", - "integrity": "sha512-Sn28TGl/4cFpcM+jwsH1wLncYq3FtN/BIpem+HOygfBWPT5pAeS5dB4VFVzV8FbnOKHpDLZmvAl4AjPEev5idA==", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-glob": "^3.3.2", - "minimatch": "^9.0.4", - "path-browserify": "^1.0.1" - } - }, - "node_modules/@ts-morph/common/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/@ts-morph/common/node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/@types/aria-query": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/@types/aria-query/-/aria-query-4.2.2.tgz", @@ -4751,13 +4560,6 @@ "integrity": "sha512-QRLQpFsIQGO2k8pupga9abfei85GKotAtQ+F6xuQmSGomUt6C52TyMiTFpP8kUwuPKr00gNtu3itLlC6gvI/NA==", "dev": true }, - "node_modules/@types/mustache": { - "version": "4.2.5", - "resolved": "https://registry.npmjs.org/@types/mustache/-/mustache-4.2.5.tgz", - "integrity": "sha512-PLwiVvTBg59tGFL/8VpcGvqOu3L4OuveNvPi0EYbWchRdEVP++yRUXJPFl+CApKEq13017/4Nf7aQ5lTtHUNsA==", - "dev": true, - "license": "MIT" - }, "node_modules/@types/node": { "version": "22.7.5", "resolved": "https://registry.npmjs.org/@types/node/-/node-22.7.5.tgz", @@ -7004,13 +6806,6 @@ "node": ">= 0.12.0" } }, - "node_modules/code-block-writer": { - "version": "13.0.3", - "resolved": "https://registry.npmjs.org/code-block-writer/-/code-block-writer-13.0.3.tgz", - "integrity": "sha512-Oofo0pq3IKnsFtuHqSF7TqBfr71aeyZDVJ0HpmqB7FBM2qEigL0iPONSCZSO9pE9dZTAxANe5XHG9Uy0YMv8cg==", - "dev": true, - "license": "MIT" - }, "node_modules/code-point-at": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", @@ -7274,11 +7069,10 @@ } }, "node_modules/cross-spawn": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", - "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", "dev": true, - "license": "MIT", "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", @@ -7896,13 +7690,6 @@ "node": "*" } }, - "node_modules/eastasianwidth": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", - "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", - "dev": true, - "license": "MIT" - }, "node_modules/ecc-jsbn": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", @@ -9514,36 +9301,6 @@ "integrity": "sha512-k6GAGDyqLe9JaebCsFCoudPPWfihKu8pylYXRlqP1J7ms39iPoTtk2fviNglIeQEwdh0bQeKJ01ZPyuyQvKzwg==", "dev": true }, - "node_modules/foreground-child": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz", - "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==", - "dev": true, - "license": "ISC", - "dependencies": { - "cross-spawn": "^7.0.6", - "signal-exit": "^4.0.1" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/foreground-child/node_modules/signal-exit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/forever-agent": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", @@ -9862,19 +9619,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/get-tsconfig": { - "version": "4.10.0", - "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.10.0.tgz", - "integrity": "sha512-kGzZ3LWWQcGIAmg6iWvXn0ei6WDtV26wzHRMwDSzmAbcXrTEXxHy6IehI6/4eT6VRKyMP1eF1VqwrVUmE/LR7A==", - "dev": true, - "license": "MIT", - "dependencies": { - "resolve-pkg-maps": "^1.0.0" - }, - "funding": { - "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" - } - }, "node_modules/get-value": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", @@ -11815,22 +11559,6 @@ "node": ">=8" } }, - "node_modules/jackspeak": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", - "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "@isaacs/cliui": "^8.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - }, - "optionalDependencies": { - "@pkgjs/parseargs": "^0.11.0" - } - }, "node_modules/jest": { "version": "26.6.3", "resolved": "https://registry.npmjs.org/jest/-/jest-26.6.3.tgz", @@ -14759,16 +14487,6 @@ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "dev": true }, - "node_modules/mustache": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/mustache/-/mustache-4.2.0.tgz", - "integrity": "sha512-71ippSywq5Yb7/tVYyGbkBggbU8H3u5Rz56fH60jGFgr8uHwxs+aSKeqmluIVzM0m0kB7xQjKS6qPfd0b2ZoqQ==", - "dev": true, - "license": "MIT", - "bin": { - "mustache": "bin/mustache" - } - }, "node_modules/nan": { "version": "2.20.0", "resolved": "https://registry.npmjs.org/nan/-/nan-2.20.0.tgz", @@ -15730,13 +15448,6 @@ "node": ">=6" } }, - "node_modules/package-json-from-dist": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", - "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==", - "dev": true, - "license": "BlueOak-1.0.0" - }, "node_modules/parent-module": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", @@ -15813,13 +15524,6 @@ "node": ">=0.10.0" } }, - "node_modules/path-browserify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz", - "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==", - "dev": true, - "license": "MIT" - }, "node_modules/path-exists": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", @@ -15853,40 +15557,6 @@ "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", "dev": true }, - "node_modules/path-scurry": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", - "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "lru-cache": "^10.2.0", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" - }, - "engines": { - "node": ">=16 || 14 >=14.18" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/path-scurry/node_modules/lru-cache": { - "version": "10.4.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", - "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/path-scurry/node_modules/minipass": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", - "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=16 || 14 >=14.17" - } - }, "node_modules/path-type": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", @@ -17123,16 +16793,6 @@ "node": ">=8" } }, - "node_modules/resolve-pkg-maps": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", - "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" - } - }, "node_modules/resolve-url": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", @@ -17423,16 +17083,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/safe-stable-stringify": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.5.0.tgz", - "integrity": "sha512-b3rppTKm9T+PsVCBEOUR46GWI7fdOs00VKZ1+9c1EWDaDMvjQc6tUwuFyIprgGgTcWoVHSKrU8H31ZHA2e0RHA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - } - }, "node_modules/safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", @@ -18594,22 +18244,6 @@ "node": ">=8" } }, - "node_modules/string-width-cjs": { - "name": "string-width", - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "license": "MIT", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/string.prototype.trim": { "version": "1.2.9", "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz", @@ -18671,20 +18305,6 @@ "node": ">=8" } }, - "node_modules/strip-ansi-cjs": { - "name": "strip-ansi", - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/strip-bom": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", @@ -19378,110 +18998,6 @@ "node": ">=10" } }, - "node_modules/ts-json-schema-generator": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/ts-json-schema-generator/-/ts-json-schema-generator-2.3.0.tgz", - "integrity": "sha512-t4lBQAwZc0sOJq9LJt3NgbznIcslVnm0JeEMFq8qIRklpMRY8jlYD0YmnRWbqBKANxkby91P1XanSSlSOFpUmg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/json-schema": "^7.0.15", - "commander": "^12.0.0", - "glob": "^10.3.12", - "json5": "^2.2.3", - "normalize-path": "^3.0.0", - "safe-stable-stringify": "^2.4.3", - "tslib": "^2.6.2", - "typescript": "^5.4.5" - }, - "bin": { - "ts-json-schema-generator": "bin/ts-json-schema-generator.js" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/ts-json-schema-generator/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/ts-json-schema-generator/node_modules/commander": { - "version": "12.1.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-12.1.0.tgz", - "integrity": "sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - } - }, - "node_modules/ts-json-schema-generator/node_modules/glob": { - "version": "10.4.5", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", - "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", - "dev": true, - "license": "ISC", - "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^3.1.2", - "minimatch": "^9.0.4", - "minipass": "^7.1.2", - "package-json-from-dist": "^1.0.0", - "path-scurry": "^1.11.1" - }, - "bin": { - "glob": "dist/esm/bin.mjs" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/ts-json-schema-generator/node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/ts-json-schema-generator/node_modules/minipass": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", - "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=16 || 14 >=14.17" - } - }, - "node_modules/ts-json-schema-generator/node_modules/typescript": { - "version": "5.8.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.2.tgz", - "integrity": "sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ==", - "dev": true, - "license": "Apache-2.0", - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=14.17" - } - }, "node_modules/ts-loader": { "version": "8.0.4", "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-8.0.4.tgz", @@ -19501,17 +19017,6 @@ "typescript": "*" } }, - "node_modules/ts-morph": { - "version": "25.0.1", - "resolved": "https://registry.npmjs.org/ts-morph/-/ts-morph-25.0.1.tgz", - "integrity": "sha512-QJEiTdnz1YjrB3JFhd626gX4rKHDLSjSVMvGGG4v7ONc3RBwa0Eei98G9AT9uNFDMtV54JyuXsFeC+OH0n6bXQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@ts-morph/common": "~0.26.0", - "code-block-writer": "^13.0.3" - } - }, "node_modules/tsconfig-paths": { "version": "3.15.0", "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", @@ -19571,458 +19076,6 @@ "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", "dev": true }, - "node_modules/tsx": { - "version": "4.19.3", - "resolved": "https://registry.npmjs.org/tsx/-/tsx-4.19.3.tgz", - "integrity": "sha512-4H8vUNGNjQ4V2EOoGw005+c+dGuPSnhpPBPHBtsZdGZBk/iJb4kguGlPWaZTZ3q5nMtFOEsY0nRDlh9PJyd6SQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "esbuild": "~0.25.0", - "get-tsconfig": "^4.7.5" - }, - "bin": { - "tsx": "dist/cli.mjs" - }, - "engines": { - "node": ">=18.0.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.3" - } - }, - "node_modules/tsx/node_modules/@esbuild/aix-ppc64": { - "version": "0.25.1", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.1.tgz", - "integrity": "sha512-kfYGy8IdzTGy+z0vFGvExZtxkFlA4zAxgKEahG9KE1ScBjpQnFsNOX8KTU5ojNru5ed5CVoJYXFtoxaq5nFbjQ==", - "cpu": [ - "ppc64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "aix" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/tsx/node_modules/@esbuild/android-arm": { - "version": "0.25.1", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.1.tgz", - "integrity": "sha512-dp+MshLYux6j/JjdqVLnMglQlFu+MuVeNrmT5nk6q07wNhCdSnB7QZj+7G8VMUGh1q+vj2Bq8kRsuyA00I/k+Q==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/tsx/node_modules/@esbuild/android-arm64": { - "version": "0.25.1", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.1.tgz", - "integrity": "sha512-50tM0zCJW5kGqgG7fQ7IHvQOcAn9TKiVRuQ/lN0xR+T2lzEFvAi1ZcS8DiksFcEpf1t/GYOeOfCAgDHFpkiSmA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/tsx/node_modules/@esbuild/android-x64": { - "version": "0.25.1", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.1.tgz", - "integrity": "sha512-GCj6WfUtNldqUzYkN/ITtlhwQqGWu9S45vUXs7EIYf+7rCiiqH9bCloatO9VhxsL0Pji+PF4Lz2XXCES+Q8hDw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/tsx/node_modules/@esbuild/darwin-arm64": { - "version": "0.25.1", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.1.tgz", - "integrity": "sha512-5hEZKPf+nQjYoSr/elb62U19/l1mZDdqidGfmFutVUjjUZrOazAtwK+Kr+3y0C/oeJfLlxo9fXb1w7L+P7E4FQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/tsx/node_modules/@esbuild/darwin-x64": { - "version": "0.25.1", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.1.tgz", - "integrity": "sha512-hxVnwL2Dqs3fM1IWq8Iezh0cX7ZGdVhbTfnOy5uURtao5OIVCEyj9xIzemDi7sRvKsuSdtCAhMKarxqtlyVyfA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/tsx/node_modules/@esbuild/freebsd-arm64": { - "version": "0.25.1", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.1.tgz", - "integrity": "sha512-1MrCZs0fZa2g8E+FUo2ipw6jw5qqQiH+tERoS5fAfKnRx6NXH31tXBKI3VpmLijLH6yriMZsxJtaXUyFt/8Y4A==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/tsx/node_modules/@esbuild/freebsd-x64": { - "version": "0.25.1", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.1.tgz", - "integrity": "sha512-0IZWLiTyz7nm0xuIs0q1Y3QWJC52R8aSXxe40VUxm6BB1RNmkODtW6LHvWRrGiICulcX7ZvyH6h5fqdLu4gkww==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/tsx/node_modules/@esbuild/linux-arm": { - "version": "0.25.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.1.tgz", - "integrity": "sha512-NdKOhS4u7JhDKw9G3cY6sWqFcnLITn6SqivVArbzIaf3cemShqfLGHYMx8Xlm/lBit3/5d7kXvriTUGa5YViuQ==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/tsx/node_modules/@esbuild/linux-arm64": { - "version": "0.25.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.1.tgz", - "integrity": "sha512-jaN3dHi0/DDPelk0nLcXRm1q7DNJpjXy7yWaWvbfkPvI+7XNSc/lDOnCLN7gzsyzgu6qSAmgSvP9oXAhP973uQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/tsx/node_modules/@esbuild/linux-ia32": { - "version": "0.25.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.1.tgz", - "integrity": "sha512-OJykPaF4v8JidKNGz8c/q1lBO44sQNUQtq1KktJXdBLn1hPod5rE/Hko5ugKKZd+D2+o1a9MFGUEIUwO2YfgkQ==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/tsx/node_modules/@esbuild/linux-loong64": { - "version": "0.25.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.1.tgz", - "integrity": "sha512-nGfornQj4dzcq5Vp835oM/o21UMlXzn79KobKlcs3Wz9smwiifknLy4xDCLUU0BWp7b/houtdrgUz7nOGnfIYg==", - "cpu": [ - "loong64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/tsx/node_modules/@esbuild/linux-mips64el": { - "version": "0.25.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.1.tgz", - "integrity": "sha512-1osBbPEFYwIE5IVB/0g2X6i1qInZa1aIoj1TdL4AaAb55xIIgbg8Doq6a5BzYWgr+tEcDzYH67XVnTmUzL+nXg==", - "cpu": [ - "mips64el" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/tsx/node_modules/@esbuild/linux-ppc64": { - "version": "0.25.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.1.tgz", - "integrity": "sha512-/6VBJOwUf3TdTvJZ82qF3tbLuWsscd7/1w+D9LH0W/SqUgM5/JJD0lrJ1fVIfZsqB6RFmLCe0Xz3fmZc3WtyVg==", - "cpu": [ - "ppc64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/tsx/node_modules/@esbuild/linux-riscv64": { - "version": "0.25.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.1.tgz", - "integrity": "sha512-nSut/Mx5gnilhcq2yIMLMe3Wl4FK5wx/o0QuuCLMtmJn+WeWYoEGDN1ipcN72g1WHsnIbxGXd4i/MF0gTcuAjQ==", - "cpu": [ - "riscv64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/tsx/node_modules/@esbuild/linux-s390x": { - "version": "0.25.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.1.tgz", - "integrity": "sha512-cEECeLlJNfT8kZHqLarDBQso9a27o2Zd2AQ8USAEoGtejOrCYHNtKP8XQhMDJMtthdF4GBmjR2au3x1udADQQQ==", - "cpu": [ - "s390x" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/tsx/node_modules/@esbuild/linux-x64": { - "version": "0.25.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.1.tgz", - "integrity": "sha512-xbfUhu/gnvSEg+EGovRc+kjBAkrvtk38RlerAzQxvMzlB4fXpCFCeUAYzJvrnhFtdeyVCDANSjJvOvGYoeKzFA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/tsx/node_modules/@esbuild/netbsd-x64": { - "version": "0.25.1", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.1.tgz", - "integrity": "sha512-X53z6uXip6KFXBQ+Krbx25XHV/NCbzryM6ehOAeAil7X7oa4XIq+394PWGnwaSQ2WRA0KI6PUO6hTO5zeF5ijA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/tsx/node_modules/@esbuild/openbsd-x64": { - "version": "0.25.1", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.1.tgz", - "integrity": "sha512-T3H78X2h1tszfRSf+txbt5aOp/e7TAz3ptVKu9Oyir3IAOFPGV6O9c2naym5TOriy1l0nNf6a4X5UXRZSGX/dw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/tsx/node_modules/@esbuild/sunos-x64": { - "version": "0.25.1", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.1.tgz", - "integrity": "sha512-2H3RUvcmULO7dIE5EWJH8eubZAI4xw54H1ilJnRNZdeo8dTADEZ21w6J22XBkXqGJbe0+wnNJtw3UXRoLJnFEg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "sunos" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/tsx/node_modules/@esbuild/win32-arm64": { - "version": "0.25.1", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.1.tgz", - "integrity": "sha512-GE7XvrdOzrb+yVKB9KsRMq+7a2U/K5Cf/8grVFRAGJmfADr/e/ODQ134RK2/eeHqYV5eQRFxb1hY7Nr15fv1NQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/tsx/node_modules/@esbuild/win32-ia32": { - "version": "0.25.1", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.1.tgz", - "integrity": "sha512-uOxSJCIcavSiT6UnBhBzE8wy3n0hOkJsBOzy7HDAuTDE++1DJMRRVCPGisULScHL+a/ZwdXPpXD3IyFKjA7K8A==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/tsx/node_modules/@esbuild/win32-x64": { - "version": "0.25.1", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.1.tgz", - "integrity": "sha512-Y1EQdcfwMSeQN/ujR5VayLOJ1BHaK+ssyk0AEzPjC+t1lITgsnccPqFjb6V+LsTp/9Iov4ysfjxLaGJ9RPtkVg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/tsx/node_modules/esbuild": { - "version": "0.25.1", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.1.tgz", - "integrity": "sha512-BGO5LtrGC7vxnqucAe/rmvKdJllfGaYWdyABvyMoXQlfYMb2bbRuReWR5tEGE//4LcNJj9XrkovTqNYRFZHAMQ==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "bin": { - "esbuild": "bin/esbuild" - }, - "engines": { - "node": ">=18" - }, - "optionalDependencies": { - "@esbuild/aix-ppc64": "0.25.1", - "@esbuild/android-arm": "0.25.1", - "@esbuild/android-arm64": "0.25.1", - "@esbuild/android-x64": "0.25.1", - "@esbuild/darwin-arm64": "0.25.1", - "@esbuild/darwin-x64": "0.25.1", - "@esbuild/freebsd-arm64": "0.25.1", - "@esbuild/freebsd-x64": "0.25.1", - "@esbuild/linux-arm": "0.25.1", - "@esbuild/linux-arm64": "0.25.1", - "@esbuild/linux-ia32": "0.25.1", - "@esbuild/linux-loong64": "0.25.1", - "@esbuild/linux-mips64el": "0.25.1", - "@esbuild/linux-ppc64": "0.25.1", - "@esbuild/linux-riscv64": "0.25.1", - "@esbuild/linux-s390x": "0.25.1", - "@esbuild/linux-x64": "0.25.1", - "@esbuild/netbsd-arm64": "0.25.1", - "@esbuild/netbsd-x64": "0.25.1", - "@esbuild/openbsd-arm64": "0.25.1", - "@esbuild/openbsd-x64": "0.25.1", - "@esbuild/sunos-x64": "0.25.1", - "@esbuild/win32-arm64": "0.25.1", - "@esbuild/win32-ia32": "0.25.1", - "@esbuild/win32-x64": "0.25.1" - } - }, "node_modules/tunnel-agent": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", @@ -21204,61 +20257,6 @@ "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/wrap-ansi-cjs": { - "name": "wrap-ansi", - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/wrap-ansi-cjs/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/wrap-ansi-cjs/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/wrap-ansi-cjs/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "license": "MIT" - }, "node_modules/wrap-ansi/node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", @@ -23027,13 +22025,6 @@ "dev": true, "optional": true }, - "@esbuild/netbsd-arm64": { - "version": "0.25.1", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.1.tgz", - "integrity": "sha512-O96poM2XGhLtpTh+s4+nP7YCCAfb4tJNRVZHfIE7dgmax+yMP2WgMd2OecBuaATHKTHsLWHQeuaxMRnCsH8+5g==", - "dev": true, - "optional": true - }, "@esbuild/netbsd-x64": { "version": "0.21.5", "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz", @@ -23041,13 +22032,6 @@ "dev": true, "optional": true }, - "@esbuild/openbsd-arm64": { - "version": "0.25.1", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.1.tgz", - "integrity": "sha512-Na9T3szbXezdzM/Kfs3GcRQNjHzM6GzFBeU1/6IV/npKP5ORtp9zbQjvkDJ47s6BCgaAZnnnu/cY1x342+MvZg==", - "dev": true, - "optional": true - }, "@esbuild/openbsd-x64": { "version": "0.21.5", "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz", @@ -23163,71 +22147,6 @@ "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", "dev": true }, - "@isaacs/cliui": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", - "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", - "dev": true, - "requires": { - "string-width": "^5.1.2", - "string-width-cjs": "npm:string-width@^4.2.0", - "strip-ansi": "^7.0.1", - "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", - "wrap-ansi": "^8.1.0", - "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", - "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", - "dev": true - }, - "ansi-styles": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", - "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", - "dev": true - }, - "emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "dev": true - }, - "string-width": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", - "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", - "dev": true, - "requires": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" - } - }, - "strip-ansi": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", - "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", - "dev": true, - "requires": { - "ansi-regex": "^6.0.1" - } - }, - "wrap-ansi": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", - "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", - "dev": true, - "requires": { - "ansi-styles": "^6.1.0", - "string-width": "^5.0.1", - "strip-ansi": "^7.0.1" - } - } - } - }, "@istanbuljs/load-nyc-config": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", @@ -23906,13 +22825,6 @@ } } }, - "@pkgjs/parseargs": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", - "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", - "dev": true, - "optional": true - }, "@react-icons/all-files": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/@react-icons/all-files/-/all-files-4.1.0.tgz", @@ -24475,37 +23387,6 @@ "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", "dev": true }, - "@ts-morph/common": { - "version": "0.26.1", - "resolved": "https://registry.npmjs.org/@ts-morph/common/-/common-0.26.1.tgz", - "integrity": "sha512-Sn28TGl/4cFpcM+jwsH1wLncYq3FtN/BIpem+HOygfBWPT5pAeS5dB4VFVzV8FbnOKHpDLZmvAl4AjPEev5idA==", - "dev": true, - "requires": { - "fast-glob": "^3.3.2", - "minimatch": "^9.0.4", - "path-browserify": "^1.0.1" - }, - "dependencies": { - "brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0" - } - }, - "minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", - "dev": true, - "requires": { - "brace-expansion": "^2.0.1" - } - } - } - }, "@types/aria-query": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/@types/aria-query/-/aria-query-4.2.2.tgz", @@ -24701,12 +23582,6 @@ "integrity": "sha512-QRLQpFsIQGO2k8pupga9abfei85GKotAtQ+F6xuQmSGomUt6C52TyMiTFpP8kUwuPKr00gNtu3itLlC6gvI/NA==", "dev": true }, - "@types/mustache": { - "version": "4.2.5", - "resolved": "https://registry.npmjs.org/@types/mustache/-/mustache-4.2.5.tgz", - "integrity": "sha512-PLwiVvTBg59tGFL/8VpcGvqOu3L4OuveNvPi0EYbWchRdEVP++yRUXJPFl+CApKEq13017/4Nf7aQ5lTtHUNsA==", - "dev": true - }, "@types/node": { "version": "22.7.5", "resolved": "https://registry.npmjs.org/@types/node/-/node-22.7.5.tgz", @@ -26369,12 +25244,6 @@ "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", "dev": true }, - "code-block-writer": { - "version": "13.0.3", - "resolved": "https://registry.npmjs.org/code-block-writer/-/code-block-writer-13.0.3.tgz", - "integrity": "sha512-Oofo0pq3IKnsFtuHqSF7TqBfr71aeyZDVJ0HpmqB7FBM2qEigL0iPONSCZSO9pE9dZTAxANe5XHG9Uy0YMv8cg==", - "dev": true - }, "code-point-at": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", @@ -26584,9 +25453,9 @@ } }, "cross-spawn": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", - "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", "dev": true, "requires": { "path-key": "^3.1.0", @@ -27050,12 +25919,6 @@ } } }, - "eastasianwidth": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", - "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", - "dev": true - }, "ecc-jsbn": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", @@ -28298,24 +27161,6 @@ "integrity": "sha512-k6GAGDyqLe9JaebCsFCoudPPWfihKu8pylYXRlqP1J7ms39iPoTtk2fviNglIeQEwdh0bQeKJ01ZPyuyQvKzwg==", "dev": true }, - "foreground-child": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz", - "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==", - "dev": true, - "requires": { - "cross-spawn": "^7.0.6", - "signal-exit": "^4.0.1" - }, - "dependencies": { - "signal-exit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", - "dev": true - } - } - }, "forever-agent": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", @@ -28560,15 +27405,6 @@ "get-intrinsic": "^1.2.4" } }, - "get-tsconfig": { - "version": "4.10.0", - "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.10.0.tgz", - "integrity": "sha512-kGzZ3LWWQcGIAmg6iWvXn0ei6WDtV26wzHRMwDSzmAbcXrTEXxHy6IehI6/4eT6VRKyMP1eF1VqwrVUmE/LR7A==", - "dev": true, - "requires": { - "resolve-pkg-maps": "^1.0.0" - } - }, "get-value": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", @@ -29987,16 +28823,6 @@ "istanbul-lib-report": "^3.0.0" } }, - "jackspeak": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", - "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", - "dev": true, - "requires": { - "@isaacs/cliui": "^8.0.2", - "@pkgjs/parseargs": "^0.11.0" - } - }, "jest": { "version": "26.6.3", "resolved": "https://registry.npmjs.org/jest/-/jest-26.6.3.tgz", @@ -32251,12 +31077,6 @@ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "dev": true }, - "mustache": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/mustache/-/mustache-4.2.0.tgz", - "integrity": "sha512-71ippSywq5Yb7/tVYyGbkBggbU8H3u5Rz56fH60jGFgr8uHwxs+aSKeqmluIVzM0m0kB7xQjKS6qPfd0b2ZoqQ==", - "dev": true - }, "nan": { "version": "2.20.0", "resolved": "https://registry.npmjs.org/nan/-/nan-2.20.0.tgz", @@ -32974,12 +31794,6 @@ "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", "dev": true }, - "package-json-from-dist": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", - "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==", - "dev": true - }, "parent-module": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", @@ -33037,12 +31851,6 @@ "integrity": "sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw==", "dev": true }, - "path-browserify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz", - "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==", - "dev": true - }, "path-exists": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", @@ -33067,30 +31875,6 @@ "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", "dev": true }, - "path-scurry": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", - "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", - "dev": true, - "requires": { - "lru-cache": "^10.2.0", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" - }, - "dependencies": { - "lru-cache": { - "version": "10.4.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", - "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", - "dev": true - }, - "minipass": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", - "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", - "dev": true - } - } - }, "path-type": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", @@ -34033,12 +32817,6 @@ "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", "dev": true }, - "resolve-pkg-maps": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", - "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", - "dev": true - }, "resolve-url": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", @@ -34241,12 +33019,6 @@ "is-regex": "^1.1.4" } }, - "safe-stable-stringify": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.5.0.tgz", - "integrity": "sha512-b3rppTKm9T+PsVCBEOUR46GWI7fdOs00VKZ1+9c1EWDaDMvjQc6tUwuFyIprgGgTcWoVHSKrU8H31ZHA2e0RHA==", - "dev": true - }, "safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", @@ -35197,17 +33969,6 @@ "strip-ansi": "^6.0.1" } }, - "string-width-cjs": { - "version": "npm:string-width@4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - } - }, "string.prototype.trim": { "version": "1.2.9", "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz", @@ -35251,15 +34012,6 @@ "ansi-regex": "^5.0.1" } }, - "strip-ansi-cjs": { - "version": "npm:strip-ansi@6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.1" - } - }, "strip-bom": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", @@ -35761,74 +34513,6 @@ } } }, - "ts-json-schema-generator": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/ts-json-schema-generator/-/ts-json-schema-generator-2.3.0.tgz", - "integrity": "sha512-t4lBQAwZc0sOJq9LJt3NgbznIcslVnm0JeEMFq8qIRklpMRY8jlYD0YmnRWbqBKANxkby91P1XanSSlSOFpUmg==", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.15", - "commander": "^12.0.0", - "glob": "^10.3.12", - "json5": "^2.2.3", - "normalize-path": "^3.0.0", - "safe-stable-stringify": "^2.4.3", - "tslib": "^2.6.2", - "typescript": "^5.4.5" - }, - "dependencies": { - "brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0" - } - }, - "commander": { - "version": "12.1.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-12.1.0.tgz", - "integrity": "sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==", - "dev": true - }, - "glob": { - "version": "10.4.5", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", - "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", - "dev": true, - "requires": { - "foreground-child": "^3.1.0", - "jackspeak": "^3.1.2", - "minimatch": "^9.0.4", - "minipass": "^7.1.2", - "package-json-from-dist": "^1.0.0", - "path-scurry": "^1.11.1" - } - }, - "minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", - "dev": true, - "requires": { - "brace-expansion": "^2.0.1" - } - }, - "minipass": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", - "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", - "dev": true - }, - "typescript": { - "version": "5.8.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.2.tgz", - "integrity": "sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ==", - "dev": true - } - } - }, "ts-loader": { "version": "8.0.4", "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-8.0.4.tgz", @@ -35842,16 +34526,6 @@ "semver": "^6.0.0" } }, - "ts-morph": { - "version": "25.0.1", - "resolved": "https://registry.npmjs.org/ts-morph/-/ts-morph-25.0.1.tgz", - "integrity": "sha512-QJEiTdnz1YjrB3JFhd626gX4rKHDLSjSVMvGGG4v7ONc3RBwa0Eei98G9AT9uNFDMtV54JyuXsFeC+OH0n6bXQ==", - "dev": true, - "requires": { - "@ts-morph/common": "~0.26.0", - "code-block-writer": "^13.0.3" - } - }, "tsconfig-paths": { "version": "3.15.0", "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", @@ -35903,213 +34577,6 @@ } } }, - "tsx": { - "version": "4.19.3", - "resolved": "https://registry.npmjs.org/tsx/-/tsx-4.19.3.tgz", - "integrity": "sha512-4H8vUNGNjQ4V2EOoGw005+c+dGuPSnhpPBPHBtsZdGZBk/iJb4kguGlPWaZTZ3q5nMtFOEsY0nRDlh9PJyd6SQ==", - "dev": true, - "requires": { - "esbuild": "~0.25.0", - "fsevents": "~2.3.3", - "get-tsconfig": "^4.7.5" - }, - "dependencies": { - "@esbuild/aix-ppc64": { - "version": "0.25.1", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.1.tgz", - "integrity": "sha512-kfYGy8IdzTGy+z0vFGvExZtxkFlA4zAxgKEahG9KE1ScBjpQnFsNOX8KTU5ojNru5ed5CVoJYXFtoxaq5nFbjQ==", - "dev": true, - "optional": true - }, - "@esbuild/android-arm": { - "version": "0.25.1", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.1.tgz", - "integrity": "sha512-dp+MshLYux6j/JjdqVLnMglQlFu+MuVeNrmT5nk6q07wNhCdSnB7QZj+7G8VMUGh1q+vj2Bq8kRsuyA00I/k+Q==", - "dev": true, - "optional": true - }, - "@esbuild/android-arm64": { - "version": "0.25.1", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.1.tgz", - "integrity": "sha512-50tM0zCJW5kGqgG7fQ7IHvQOcAn9TKiVRuQ/lN0xR+T2lzEFvAi1ZcS8DiksFcEpf1t/GYOeOfCAgDHFpkiSmA==", - "dev": true, - "optional": true - }, - "@esbuild/android-x64": { - "version": "0.25.1", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.1.tgz", - "integrity": "sha512-GCj6WfUtNldqUzYkN/ITtlhwQqGWu9S45vUXs7EIYf+7rCiiqH9bCloatO9VhxsL0Pji+PF4Lz2XXCES+Q8hDw==", - "dev": true, - "optional": true - }, - "@esbuild/darwin-arm64": { - "version": "0.25.1", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.1.tgz", - "integrity": "sha512-5hEZKPf+nQjYoSr/elb62U19/l1mZDdqidGfmFutVUjjUZrOazAtwK+Kr+3y0C/oeJfLlxo9fXb1w7L+P7E4FQ==", - "dev": true, - "optional": true - }, - "@esbuild/darwin-x64": { - "version": "0.25.1", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.1.tgz", - "integrity": "sha512-hxVnwL2Dqs3fM1IWq8Iezh0cX7ZGdVhbTfnOy5uURtao5OIVCEyj9xIzemDi7sRvKsuSdtCAhMKarxqtlyVyfA==", - "dev": true, - "optional": true - }, - "@esbuild/freebsd-arm64": { - "version": "0.25.1", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.1.tgz", - "integrity": "sha512-1MrCZs0fZa2g8E+FUo2ipw6jw5qqQiH+tERoS5fAfKnRx6NXH31tXBKI3VpmLijLH6yriMZsxJtaXUyFt/8Y4A==", - "dev": true, - "optional": true - }, - "@esbuild/freebsd-x64": { - "version": "0.25.1", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.1.tgz", - "integrity": "sha512-0IZWLiTyz7nm0xuIs0q1Y3QWJC52R8aSXxe40VUxm6BB1RNmkODtW6LHvWRrGiICulcX7ZvyH6h5fqdLu4gkww==", - "dev": true, - "optional": true - }, - "@esbuild/linux-arm": { - "version": "0.25.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.1.tgz", - "integrity": "sha512-NdKOhS4u7JhDKw9G3cY6sWqFcnLITn6SqivVArbzIaf3cemShqfLGHYMx8Xlm/lBit3/5d7kXvriTUGa5YViuQ==", - "dev": true, - "optional": true - }, - "@esbuild/linux-arm64": { - "version": "0.25.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.1.tgz", - "integrity": "sha512-jaN3dHi0/DDPelk0nLcXRm1q7DNJpjXy7yWaWvbfkPvI+7XNSc/lDOnCLN7gzsyzgu6qSAmgSvP9oXAhP973uQ==", - "dev": true, - "optional": true - }, - "@esbuild/linux-ia32": { - "version": "0.25.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.1.tgz", - "integrity": "sha512-OJykPaF4v8JidKNGz8c/q1lBO44sQNUQtq1KktJXdBLn1hPod5rE/Hko5ugKKZd+D2+o1a9MFGUEIUwO2YfgkQ==", - "dev": true, - "optional": true - }, - "@esbuild/linux-loong64": { - "version": "0.25.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.1.tgz", - "integrity": "sha512-nGfornQj4dzcq5Vp835oM/o21UMlXzn79KobKlcs3Wz9smwiifknLy4xDCLUU0BWp7b/houtdrgUz7nOGnfIYg==", - "dev": true, - "optional": true - }, - "@esbuild/linux-mips64el": { - "version": "0.25.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.1.tgz", - "integrity": "sha512-1osBbPEFYwIE5IVB/0g2X6i1qInZa1aIoj1TdL4AaAb55xIIgbg8Doq6a5BzYWgr+tEcDzYH67XVnTmUzL+nXg==", - "dev": true, - "optional": true - }, - "@esbuild/linux-ppc64": { - "version": "0.25.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.1.tgz", - "integrity": "sha512-/6VBJOwUf3TdTvJZ82qF3tbLuWsscd7/1w+D9LH0W/SqUgM5/JJD0lrJ1fVIfZsqB6RFmLCe0Xz3fmZc3WtyVg==", - "dev": true, - "optional": true - }, - "@esbuild/linux-riscv64": { - "version": "0.25.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.1.tgz", - "integrity": "sha512-nSut/Mx5gnilhcq2yIMLMe3Wl4FK5wx/o0QuuCLMtmJn+WeWYoEGDN1ipcN72g1WHsnIbxGXd4i/MF0gTcuAjQ==", - "dev": true, - "optional": true - }, - "@esbuild/linux-s390x": { - "version": "0.25.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.1.tgz", - "integrity": "sha512-cEECeLlJNfT8kZHqLarDBQso9a27o2Zd2AQ8USAEoGtejOrCYHNtKP8XQhMDJMtthdF4GBmjR2au3x1udADQQQ==", - "dev": true, - "optional": true - }, - "@esbuild/linux-x64": { - "version": "0.25.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.1.tgz", - "integrity": "sha512-xbfUhu/gnvSEg+EGovRc+kjBAkrvtk38RlerAzQxvMzlB4fXpCFCeUAYzJvrnhFtdeyVCDANSjJvOvGYoeKzFA==", - "dev": true, - "optional": true - }, - "@esbuild/netbsd-x64": { - "version": "0.25.1", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.1.tgz", - "integrity": "sha512-X53z6uXip6KFXBQ+Krbx25XHV/NCbzryM6ehOAeAil7X7oa4XIq+394PWGnwaSQ2WRA0KI6PUO6hTO5zeF5ijA==", - "dev": true, - "optional": true - }, - "@esbuild/openbsd-x64": { - "version": "0.25.1", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.1.tgz", - "integrity": "sha512-T3H78X2h1tszfRSf+txbt5aOp/e7TAz3ptVKu9Oyir3IAOFPGV6O9c2naym5TOriy1l0nNf6a4X5UXRZSGX/dw==", - "dev": true, - "optional": true - }, - "@esbuild/sunos-x64": { - "version": "0.25.1", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.1.tgz", - "integrity": "sha512-2H3RUvcmULO7dIE5EWJH8eubZAI4xw54H1ilJnRNZdeo8dTADEZ21w6J22XBkXqGJbe0+wnNJtw3UXRoLJnFEg==", - "dev": true, - "optional": true - }, - "@esbuild/win32-arm64": { - "version": "0.25.1", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.1.tgz", - "integrity": "sha512-GE7XvrdOzrb+yVKB9KsRMq+7a2U/K5Cf/8grVFRAGJmfADr/e/ODQ134RK2/eeHqYV5eQRFxb1hY7Nr15fv1NQ==", - "dev": true, - "optional": true - }, - "@esbuild/win32-ia32": { - "version": "0.25.1", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.1.tgz", - "integrity": "sha512-uOxSJCIcavSiT6UnBhBzE8wy3n0hOkJsBOzy7HDAuTDE++1DJMRRVCPGisULScHL+a/ZwdXPpXD3IyFKjA7K8A==", - "dev": true, - "optional": true - }, - "@esbuild/win32-x64": { - "version": "0.25.1", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.1.tgz", - "integrity": "sha512-Y1EQdcfwMSeQN/ujR5VayLOJ1BHaK+ssyk0AEzPjC+t1lITgsnccPqFjb6V+LsTp/9Iov4ysfjxLaGJ9RPtkVg==", - "dev": true, - "optional": true - }, - "esbuild": { - "version": "0.25.1", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.1.tgz", - "integrity": "sha512-BGO5LtrGC7vxnqucAe/rmvKdJllfGaYWdyABvyMoXQlfYMb2bbRuReWR5tEGE//4LcNJj9XrkovTqNYRFZHAMQ==", - "dev": true, - "requires": { - "@esbuild/aix-ppc64": "0.25.1", - "@esbuild/android-arm": "0.25.1", - "@esbuild/android-arm64": "0.25.1", - "@esbuild/android-x64": "0.25.1", - "@esbuild/darwin-arm64": "0.25.1", - "@esbuild/darwin-x64": "0.25.1", - "@esbuild/freebsd-arm64": "0.25.1", - "@esbuild/freebsd-x64": "0.25.1", - "@esbuild/linux-arm": "0.25.1", - "@esbuild/linux-arm64": "0.25.1", - "@esbuild/linux-ia32": "0.25.1", - "@esbuild/linux-loong64": "0.25.1", - "@esbuild/linux-mips64el": "0.25.1", - "@esbuild/linux-ppc64": "0.25.1", - "@esbuild/linux-riscv64": "0.25.1", - "@esbuild/linux-s390x": "0.25.1", - "@esbuild/linux-x64": "0.25.1", - "@esbuild/netbsd-arm64": "0.25.1", - "@esbuild/netbsd-x64": "0.25.1", - "@esbuild/openbsd-arm64": "0.25.1", - "@esbuild/openbsd-x64": "0.25.1", - "@esbuild/sunos-x64": "0.25.1", - "@esbuild/win32-arm64": "0.25.1", - "@esbuild/win32-ia32": "0.25.1", - "@esbuild/win32-x64": "0.25.1" - } - } - } - }, "tunnel-agent": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", @@ -36984,43 +35451,6 @@ } } }, - "wrap-ansi-cjs": { - "version": "npm:wrap-ansi@7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "requires": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - } - } - }, "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", diff --git a/package.json b/package.json index e63c3ef5..d7df88c7 100644 --- a/package.json +++ b/package.json @@ -95,7 +95,6 @@ "@types/jest": "^22.2.3", "@types/lodash": "^4.17.0", "@types/mixpanel-browser": "^2.35.6", - "@types/mustache": "^4.2.5", "@types/react-test-renderer": "^17.0.1", "@typescript-eslint/eslint-plugin": "^4.6.0", "@typescript-eslint/parser": "^4.6.0", @@ -111,11 +110,11 @@ "eslint-config-airbnb-base": "^14.2.0", "eslint-config-prettier": "^6.15.0", "eslint-import-resolver-typescript": "^2.3.0", - "eslint-plugin-comment-length": "1.7.3", "eslint-plugin-import": "^2.22.1", - "eslint-plugin-jsdoc": "^46.9.0", "eslint-plugin-prettier": "^3.1.4", "eslint-plugin-react-hooks": "^4.2.0", + "eslint-plugin-comment-length": "1.7.3", + "eslint-plugin-jsdoc": "^46.9.0", "fs-extra": "^10.0.0", "gh-pages": "6.3.0", "highlight.js": "^10.6.0", @@ -125,7 +124,6 @@ "jest": "^26.6.3", "jest-fetch-mock": "^3.0.3", "jsdom": "^17.0.0", - "mustache": "^4.2.0", "node-sass": "^8.0.0", "prettier": "2.1.2", "react": "^16.14.0", @@ -137,10 +135,7 @@ "rollup": "4.24.0", "rollup-plugin-typescript2": "0.27.3", "ts-jest": "^26.5.5", - "ts-json-schema-generator": "^2.3.0", "ts-loader": "8.0.4", - "ts-morph": "^25.0.1", - "tsx": "^4.19.3", "typedoc": "0.21.6", "typedoc-plugin-toc-group": "thoughtspot/typedoc-plugin-toc-group", "typescript": "^4.9.4", From 6b195dc002f760d1d45367d207142cdb74bc21c5 Mon Sep 17 00:00:00 2001 From: sastaachar Date: Mon, 24 Mar 2025 16:00:10 +0530 Subject: [PATCH 6/8] i did not mean it --- src/embed/liveboard.ts | 1283 ++++++++--------- .../graphql/answerService/answerService.ts | 6 +- 2 files changed, 640 insertions(+), 649 deletions(-) diff --git a/src/embed/liveboard.ts b/src/embed/liveboard.ts index 078018bd..7835d80c 100644 --- a/src/embed/liveboard.ts +++ b/src/embed/liveboard.ts @@ -11,13 +11,13 @@ import { getPreview } from '../utils/graphql/preview-service'; import { ERROR_MESSAGE } from '../errors'; import { - EmbedEvent, - MessagePayload, - Param, - RuntimeFilter, - DOMSelector, - HostEvent, - ViewConfig, + EmbedEvent, + MessagePayload, + Param, + RuntimeFilter, + DOMSelector, + HostEvent, + ViewConfig, } from '../types'; import { getQueryParamString, isUndefined } from '../utils'; import { getAuthPromise } from './base'; @@ -26,10 +26,10 @@ import { addPreviewStylesIfNotPresent } from '../utils/global-styles'; import { TriggerPayload, TriggerResponse } from './hostEventClient/contracts'; const liveboardHeightWhitelistedRoutes = [ - '/embed/viz/', - '/embed/insights/viz/', - '/tsl-editor/PINBOARD_ANSWER_BOOK/', - '/import-tsl/PINBOARD_ANSWER_BOOK/', + '/embed/viz/', + '/embed/insights/viz/', + '/tsl-editor/PINBOARD_ANSWER_BOOK/', + '/import-tsl/PINBOARD_ANSWER_BOOK/', ]; /** @@ -37,358 +37,360 @@ const liveboardHeightWhitelistedRoutes = [ * @group Embed components */ export interface LiveboardViewConfig - extends Omit< - ViewConfig, - 'hiddenHomepageModules' | 'hiddenHomeLeftNavItems' | 'reorderedHomepageModules' - > { - /** - * If set to true, the embedded object container dynamically resizes - * according to the height of the Liveboard. - * - * **Note**: Using fullHeight loads all visualizations on the - * Liveboard simultaneously, which results in multiple warehouse - * queries and potentially a longer wait for the topmost - * visualizations to display on the screen. - * Setting `fullHeight` to `false` fetches visualizations - * incrementally as users scroll the page to view the charts and tables. - * @version SDK: 1.1.0 | ThoughtSpot: ts7.may.cl, 7.2.1 - * @example - * ```js - * const embed = new LiveboardEmbed('#embed', { - * ... // other liveboard view config - * fullHeight: true, - * }); - * ``` - */ - fullHeight?: boolean; - /** - * This is the minimum height(in pixels) for a full-height Liveboard. - * Setting this height helps resolve issues with empty Liveboards and - * other screens navigable from a Liveboard. - * @version SDK: 1.5.0 | ThoughtSpot: ts7.oct.cl, 7.2.1 - * @default 500 - * @example - * ```js - * const embed = new LiveboardEmbed('#embed', { - * ... // other liveboard view config - * fullHeight: true, - * defaultHeight: 600, - * }); - * ``` - */ - defaultHeight?: number; - /** - * @Deprecated If set to true, the context menu in visualizations will be enabled. - * @example - * ```js - * const embed = new LiveboardEmbed('#tsEmbed', { - * ... // other options - * enableVizTransformations:true, - * }) - * ``` - * @version: SDK: 1.1.0 | ThoughtSpot: 8.1.0.sw - */ - enableVizTransformations?: boolean; - /** - * The Liveboard to display in the embedded view. - * Use either liveboardId or pinboardId to reference the Liveboard to embed. - * @version SDK: 1.3.0 | ThoughtSpot ts7.aug.cl, 7.2.1 - * @example - * ```js - * const embed = new LiveboardEmbed('#embed-container', { - * ... // other options - * liveboardId:id of liveboard, - * }) - */ - liveboardId?: string; - /** - * To support backward compatibility - * @hidden - */ - pinboardId?: string; - /** - * The visualization within the Liveboard to display. - * @version SDK: 1.9.1 | ThoughtSpot: 8.1.0.cl, 8.4.1-sw - * @example - * ```js - * const embed = new LiveboardEmbed('#embed-container', { - * ... // other options - * vizId:'430496d6-6903-4601-937e-2c691821af3c', - * }) - * ``` - */ - vizId?: string; - /** - * If set to true, all filter chips from a - * Liveboard page will be read-only (no X buttons) - * @version SDK: 1.3.0 | ThoughtSpot ts7.aug.cl, 7.2.1.sw - * @example - * ```js - * const embed = new LiveboardEmbed('#embed-container', { - * ... // other options - * preventLiveboardFilterRemoval:true, - * }) - * ``` - */ - preventLiveboardFilterRemoval?: boolean; - /** - * Array of visualization IDs which should be visible when the Liveboard - * renders. This can be changed by triggering the `SetVisibleVizs` - * event. - * @version SDK: 1.9.1 | ThoughtSpot: 8.1.0.cl, 8.4.1-sw - * @example - * ```js - * const embed = new LiveboardEmbed('#embed-container', { - * ... // other options - * visibleVizs: [ - * '430496d6-6903-4601-937e-2c691821af3c', - * 'f547ec54-2a37-4516-a222-2b06719af726' - * ] - * }) - */ - visibleVizs?: string[]; - /** - * To support backward compatibility - * @hidden - */ - preventPinboardFilterRemoval?: boolean; - /** - * Render embedded Liveboards and visualizations in the - * new Liveboard experience mode. - * @version SDK: 1.14.0 | ThoughtSpot: 8.6.0.cl, 8.8.1-sw - * @example - * ```js - * const embed = new LiveboardEmbed('#embed-container', { - * ... // other options - * liveboardV2:true, - * }) - * ``` - */ - liveboardV2?: boolean; - /** - * Set a Liveboard tab as an active tab. - * Specify the tab ID. - * @example - * ```js - * const embed = new LiveboardEmbed('#tsEmbed', { - * ... // other options - * activeTabId:'id-1234', - * }) - * ``` - * @version SDK: 1.15.0 | ThoughtSpot: 8.7.0.cl, 8.8.1-sw - */ - activeTabId?: string; - /** - * Show or hide the tab panel of the embedded Liveboard. - * @version SDK: 1.25.0 | Thoughtspot: 9.6.0.cl, 9.8.0.sw - * @example - * ```js - * const embed = new LiveboardEmbed('#embed-container', { - * ... // other options - * hideTabPanel:true, - * }) - * ``` - */ - hideTabPanel?: boolean; - /** - * Show or hide the Liveboard header. - * @version SDK: 1.26.0 | Thoughtspot: 9.7.0.cl, 9.8.0.sw - * @default false - * @example - * ```js - * const embed = new LiveboardEmbed('#embed', { - * ... // other liveboard view config - * hideLiveboardHeader:true, - * }); - * ``` - */ - hideLiveboardHeader?: boolean; - /** - * Show or hide the Liveboard title. - * @default false - * @version SDK: 1.26.0 | Thoughtspot: 9.7.0.cl, 9.8.0.sw - * @example - * ```js - * const embed = new LiveboardEmbed('#embed-container', { - * ... // other options - * showLiveboardTitle:true, - * }) - * ``` - */ - showLiveboardTitle?: boolean; - /** - * Show or hide the Liveboard description. - * @default false - * @version SDK: 1.26.0 | Thoughtspot: 9.7.0.cl, 9.8.0.sw - * @example - * ```js - * const embed = new LiveboardEmbed('#embed-container', { - * ... // other options - * showLiveboardDescription:true, - * }) - * ``` - */ - showLiveboardDescription?: boolean; - /** - * Control the position and visibility of - * the Liveboard header as the users scroll down the - * embedded Liveboard page. - * @example - * ```js - * const embed = new LiveboardEmbed('#embed', { - * ... // other Liveboard view config - * isLiveboardHeaderSticky: true, - * }); - * ``` - * @version SDK: 1.26.0 | Thoughtspot: 9.7.0.cl, 9.8.0.sw - */ - isLiveboardHeaderSticky?: boolean; - /** - * enable or disable ask sage - * @default false - * @version SDK: 1.29.0 | Thoughtspot: 9.12.0.cl - * @example - * ```js - * const embed = new SearchEmbed('#tsEmbed', { - * ... // other options - * enableAskSage:true, - * }) - * ``` - */ - enableAskSage?: boolean; - /** - * This flag is used to enable the 2 column layout on a Liveboard - * @type {boolean} - * @default false - * @version SDK: 1.32.0 | ThoughtSpot:10.1.0.cl - * @example - * ```js - * const embed = new LiveboardEmbed('#embed-container', { - * ... // other options - * enable2ColumnLayout: true, - * }) - * ``` - */ - enable2ColumnLayout?: boolean; - /** - * Show a preview image of the visualization before the visualization loads. - * Only works for visualizations embeds with a viz id. - * - * Also, viz snashot should be enabled in the ThoughtSpot instance. - * Contact ThoughtSpot support to enable this feature. - * - * Since, this will show preview images, be careful that it may show - * undesired data to the user when using row level security. - * @example - * ```js - * const embed = new LiveboardEmbed('#embed-container', { - * liveboardId: 'liveboard-id', - * vizId: 'viz-id', - * showPreviewLoader: true, - * }); - * embed.render(); - * ``` - * @version SDK: 1.32.0 | ThoughtSpot: 10.0.0.cl - */ - showPreviewLoader?: boolean; - /** - * Enables or disables the compact header feature on a Liveboard. - * Compact Liveboard header is turned off by default on Liveboards in - * ThoughtSpot Embedded apps. - * @type {boolean} - * @default false - * @version SDK: 1.35.0 | ThoughtSpot:10.3.0.cl - * @example - * ```js - * const embed = new LiveboardEmbed('#embed-container', { - * ... // other options - * isLiveboardCompactHeaderEnabled: true, - * }) - * ``` - */ - isLiveboardCompactHeaderEnabled?: boolean; - /** - * This flag is used to show/hide verified icon in the Liveboard compact header - * @type {boolean} - * @default true - * @version SDK: 1.35.0 | ThoughtSpot:10.4.0.cl - * @example - * ```js - * const embed = new LiveboardEmbed('#embed-container', { - * ... // other options - * showLiveboardVerifiedBadge: true, - * }) - * ``` - */ - showLiveboardVerifiedBadge?: boolean; - /** - * This flag is used to show/hide the re-verify banner - * in Liveboard compact header - * @type {boolean} - * @default true - * @version SDK: 1.35.0 | ThoughtSpot:10.4.0.cl - * @example - * ```js - * const embed = new LiveboardEmbed('#embed-container', { - * ... // other options - * showLiveboardReverifyBanner: true, - * }) - * ``` - */ - showLiveboardReverifyBanner?: boolean; - /** - * This flag is used to enable/disable hide irrelevant filters in a Liveboard tab - * @type {boolean} - * @default false - * @version SDK: 1.36.0 | ThoughtSpot:10.6.0.cl - * @example - * ```js - * const embed = new LiveboardEmbed('#embed-container', { - * ... // other options - * hideIrrelevantChipsInLiveboardTabs: true, - * }) - * ``` - */ - hideIrrelevantChipsInLiveboardTabs?: boolean; - - /** - * The Liveboard to run on regular intervals to fetch the cdw token. - * @hidden - * @version SDK: 1.35.0 | ThoughtSpot:10.6.0.cl - * @example - * ```js - * const embed = new LiveboardEmbed('#embed-container', { - * ... // other options - * oAuthPollingInterval: value in milliseconds, - * }) - */ - oAuthPollingInterval?: number; - - /** - * The Liveboard is set to force a token fetch during the initial load. - * @hidden - * @version SDK: 1.35.0 | ThoughtSpot:10.6.0.cl - * @example - * ```js - * const embed = new LiveboardEmbed('#embed-container', { - * ... // other options - * isForceRedirect: false, - * }) - */ - isForceRedirect?: boolean; - - /** - * The source connection ID for authentication. - * @hidden - * @version SDK: 1.35.0 | ThoughtSpot:10.6.0.cl - * @example - * ```js - * const embed = new LiveboardEmbed('#embed-container', { - * ... // other options - * dataSourceId: '', - * }) - */ - dataSourceId?: string; + extends Omit< + ViewConfig, + 'hiddenHomepageModules' | 'hiddenHomeLeftNavItems' | 'reorderedHomepageModules' + > { + /** + * If set to true, the embedded object container dynamically resizes + * according to the height of the Liveboard. + * + * **Note**: Using fullHeight loads all visualizations on the + * Liveboard simultaneously, which results in multiple warehouse + * queries and potentially a longer wait for the topmost + * visualizations to display on the screen. + * Setting `fullHeight` to `false` fetches visualizations + * incrementally as users scroll the page to view the charts and tables. + * + * @version SDK: 1.1.0 | ThoughtSpot: ts7.may.cl, 7.2.1 + * @example + * ```js + * const embed = new LiveboardEmbed('#embed', { + * ... // other liveboard view config + * fullHeight: true, + * }); + * ``` + */ + fullHeight?: boolean; + /** + * This is the minimum height(in pixels) for a full-height Liveboard. + * Setting this height helps resolve issues with empty Liveboards and + * other screens navigable from a Liveboard. + * @version SDK: 1.5.0 | ThoughtSpot: ts7.oct.cl, 7.2.1 + * @default 500 + * @example + * ```js + * const embed = new LiveboardEmbed('#embed', { + * ... // other liveboard view config + * fullHeight: true, + * defaultHeight: 600, + * }); + * ``` + */ + defaultHeight?: number; + /** + * @Deprecated If set to true, the context menu in visualizations will be enabled. + * @example + * ```js + * const embed = new LiveboardEmbed('#tsEmbed', { + * ... // other options + * enableVizTransformations:true, + * }) + * ``` + * @version: SDK: 1.1.0 | ThoughtSpot: 8.1.0.sw + */ + enableVizTransformations?: boolean; + /** + * The Liveboard to display in the embedded view. + * Use either liveboardId or pinboardId to reference the Liveboard to embed. + * @version SDK: 1.3.0 | ThoughtSpot ts7.aug.cl, 7.2.1 + * @example + * ```js + * const embed = new LiveboardEmbed('#embed-container', { + * ... // other options + * liveboardId:id of liveboard, + * }) + */ + liveboardId?: string; + /** + * To support backward compatibility + * @hidden + */ + pinboardId?: string; + /** + * The visualization within the Liveboard to display. + * @version SDK: 1.9.1 | ThoughtSpot: 8.1.0.cl, 8.4.1-sw + * @example + * ```js + * const embed = new LiveboardEmbed('#embed-container', { + * ... // other options + * vizId:'430496d6-6903-4601-937e-2c691821af3c', + * }) + * ``` + */ + vizId?: string; + /** + * If set to true, all filter chips from a + * Liveboard page will be read-only (no X buttons) + * @version SDK: 1.3.0 | ThoughtSpot ts7.aug.cl, 7.2.1.sw + * @example + * ```js + * const embed = new LiveboardEmbed('#embed-container', { + * ... // other options + * preventLiveboardFilterRemoval:true, + * }) + * ``` + */ + preventLiveboardFilterRemoval?: boolean; + /** + * Array of visualization IDs which should be visible when the Liveboard + * renders. This can be changed by triggering the `SetVisibleVizs` + * event. + * @version SDK: 1.9.1 | ThoughtSpot: 8.1.0.cl, 8.4.1-sw + * @example + * ```js + * const embed = new LiveboardEmbed('#embed-container', { + * ... // other options + * visibleVizs: [ + * '430496d6-6903-4601-937e-2c691821af3c', + * 'f547ec54-2a37-4516-a222-2b06719af726' + * ] + * }) + */ + visibleVizs?: string[]; + /** + * To support backward compatibility + * @hidden + */ + preventPinboardFilterRemoval?: boolean; + /** + * Render embedded Liveboards and visualizations in the + * new Liveboard experience mode. + * @version SDK: 1.14.0 | ThoughtSpot: 8.6.0.cl, 8.8.1-sw + * @example + * ```js + * const embed = new LiveboardEmbed('#embed-container', { + * ... // other options + * liveboardV2:true, + * }) + * ``` + */ + liveboardV2?: boolean; + /** + * Set a Liveboard tab as an active tab. + * Specify the tab ID. + * @example + * ```js + * const embed = new LiveboardEmbed('#tsEmbed', { + * ... // other options + * activeTabId:'id-1234', + * }) + * ``` + * @version SDK: 1.15.0 | ThoughtSpot: 8.7.0.cl, 8.8.1-sw + */ + activeTabId?: string; + /** + * Show or hide the tab panel of the embedded Liveboard. + * @version SDK: 1.25.0 | Thoughtspot: 9.6.0.cl, 9.8.0.sw + * @example + * ```js + * const embed = new LiveboardEmbed('#embed-container', { + * ... // other options + * hideTabPanel:true, + * }) + * ``` + */ + hideTabPanel?: boolean; + /** + * Show or hide the Liveboard header. + * @version SDK: 1.26.0 | Thoughtspot: 9.7.0.cl, 9.8.0.sw + * @default false + * @example + * ```js + * const embed = new LiveboardEmbed('#embed', { + * ... // other liveboard view config + * hideLiveboardHeader:true, + * }); + * ``` + */ + hideLiveboardHeader?: boolean; + /** + * Show or hide the Liveboard title. + * @default false + * @version SDK: 1.26.0 | Thoughtspot: 9.7.0.cl, 9.8.0.sw + * @example + * ```js + * const embed = new LiveboardEmbed('#embed-container', { + * ... // other options + * showLiveboardTitle:true, + * }) + * ``` + */ + showLiveboardTitle?: boolean; + /** + * Show or hide the Liveboard description. + * @default false + * @version SDK: 1.26.0 | Thoughtspot: 9.7.0.cl, 9.8.0.sw + * @example + * ```js + * const embed = new LiveboardEmbed('#embed-container', { + * ... // other options + * showLiveboardDescription:true, + * }) + * ``` + */ + showLiveboardDescription?: boolean; + /** + * Control the position and visibility of + * the Liveboard header as the users scroll down the + * embedded Liveboard page. + * @example + * ```js + * const embed = new LiveboardEmbed('#embed', { + * ... // other Liveboard view config + * isLiveboardHeaderSticky: true, + * }); + * ``` + * @version SDK: 1.26.0 | Thoughtspot: 9.7.0.cl, 9.8.0.sw + */ + isLiveboardHeaderSticky?: boolean; + /** + * enable or disable ask sage + * @default false + * @version SDK: 1.29.0 | Thoughtspot: 9.12.0.cl + * @example + * ```js + * const embed = new SearchEmbed('#tsEmbed', { + * ... // other options + * enableAskSage:true, + * }) + * ``` + */ + enableAskSage?: boolean; + /** + * This flag is used to enable the 2 column layout on a Liveboard + * @type {boolean} + * @default false + * @version SDK: 1.32.0 | ThoughtSpot:10.1.0.cl + * @example + * ```js + * const embed = new LiveboardEmbed('#embed-container', { + * ... // other options + * enable2ColumnLayout: true, + * }) + * ``` + */ + enable2ColumnLayout?: boolean; + /** + * Show a preview image of the visualization before the visualization loads. + * Only works for visualizations embeds with a viz id. + * + * Also, viz snashot should be enabled in the ThoughtSpot instance. + * Contact ThoughtSpot support to enable this feature. + * + * Since, this will show preview images, be careful that it may show + * undesired data to the user when using row level security. + * @example + * ```js + * const embed = new LiveboardEmbed('#embed-container', { + * liveboardId: 'liveboard-id', + * vizId: 'viz-id', + * showPreviewLoader: true, + * }); + * embed.render(); + * ``` + * @version SDK: 1.32.0 | ThoughtSpot: 10.0.0.cl + */ + showPreviewLoader?: boolean; + /** + * Enables or disables the compact header feature on a Liveboard. + * Compact Liveboard header is turned off by default on Liveboards in + * ThoughtSpot Embedded apps. + * + * @type {boolean} + * @default false + * @version SDK: 1.35.0 | ThoughtSpot:10.3.0.cl + * @example + * ```js + * const embed = new LiveboardEmbed('#embed-container', { + * ... // other options + * isLiveboardCompactHeaderEnabled: true, + * }) + * ``` + */ + isLiveboardCompactHeaderEnabled?: boolean; + /** + * This flag is used to show/hide verified icon in the Liveboard compact header + * @type {boolean} + * @default true + * @version SDK: 1.35.0 | ThoughtSpot:10.4.0.cl + * @example + * ```js + * const embed = new LiveboardEmbed('#embed-container', { + * ... // other options + * showLiveboardVerifiedBadge: true, + * }) + * ``` + */ + showLiveboardVerifiedBadge?: boolean; + /** + * This flag is used to show/hide the re-verify banner + * in Liveboard compact header + * @type {boolean} + * @default true + * @version SDK: 1.35.0 | ThoughtSpot:10.4.0.cl + * @example + * ```js + * const embed = new LiveboardEmbed('#embed-container', { + * ... // other options + * showLiveboardReverifyBanner: true, + * }) + * ``` + */ + showLiveboardReverifyBanner?: boolean; + /** + * This flag is used to enable/disable hide irrelevant filters in a Liveboard tab + * @type {boolean} + * @default false + * @version SDK: 1.36.0 | ThoughtSpot:10.6.0.cl + * @example + * ```js + * const embed = new LiveboardEmbed('#embed-container', { + * ... // other options + * hideIrrelevantChipsInLiveboardTabs: true, + * }) + * ``` + */ + hideIrrelevantChipsInLiveboardTabs?: boolean; + + /** + * The Liveboard to run on regular intervals to fetch the cdw token. + * @hidden + * @version SDK: 1.35.0 | ThoughtSpot:10.6.0.cl + * @example + * ```js + * const embed = new LiveboardEmbed('#embed-container', { + * ... // other options + * oAuthPollingInterval: value in milliseconds, + * }) + */ + oAuthPollingInterval?: number; + + /** + * The Liveboard is set to force a token fetch during the initial load. + * @hidden + * @version SDK: 1.35.0 | ThoughtSpot:10.6.0.cl + * @example + * ```js + * const embed = new LiveboardEmbed('#embed-container', { + * ... // other options + * isForceRedirect: false, + * }) + */ + isForceRedirect?: boolean; + + /** + * The source connection ID for authentication. + * @hidden + * @version SDK: 1.35.0 | ThoughtSpot:10.6.0.cl + * @example + * ```js + * const embed = new LiveboardEmbed('#embed-container', { + * ... // other options + * dataSourceId: '', + * }) + */ + dataSourceId?: string; } /** @@ -407,321 +409,306 @@ export interface LiveboardViewConfig * @group Embed components */ export class LiveboardEmbed extends V1Embed { - protected viewConfig: LiveboardViewConfig; - - private defaultHeight = 500; - - // eslint-disable-next-line no-useless-constructor - constructor(domSelector: DOMSelector, viewConfig: LiveboardViewConfig) { - viewConfig.embedComponentType = 'LiveboardEmbed'; - super(domSelector, viewConfig); - - const v: ViewConfig = { - customizations: { - style: { - customCSS: { - variables: { - '--ts-var-spotter-prompt-background': '', - A: '', - - }, - }, - }, - }, - }; - - if (this.viewConfig.fullHeight === true) { - this.on(EmbedEvent.RouteChange, this.setIframeHeightForNonEmbedLiveboard); - this.on(EmbedEvent.EmbedHeight, this.updateIFrameHeight); - this.on(EmbedEvent.EmbedIframeCenter, this.embedIframeCenter); - } - } - - /** - * Construct a map of params to be passed on to the - * embedded Liveboard or visualization. - */ - protected getEmbedParams() { - let params = {}; - params = this.getBaseQueryParams(params); - const { - enableVizTransformations, - fullHeight, - defaultHeight, - visibleVizs, - liveboardV2, - vizId, - hideTabPanel, - activeTabId, - hideLiveboardHeader, - showLiveboardDescription, - showLiveboardTitle, - isLiveboardHeaderSticky = true, - isLiveboardCompactHeaderEnabled = false, - showLiveboardVerifiedBadge = true, - showLiveboardReverifyBanner = true, - hideIrrelevantChipsInLiveboardTabs = false, - enableAskSage, - enable2ColumnLayout, - dataPanelV2 = false, - enableCustomColumnGroups = false, - oAuthPollingInterval, - isForceRedirect, - dataSourceId, - } = this.viewConfig; - - const preventLiveboardFilterRemoval = this.viewConfig.preventLiveboardFilterRemoval - || this.viewConfig.preventPinboardFilterRemoval; - - if (fullHeight === true) { - params[Param.fullHeight] = true; - } - if (defaultHeight) { - this.defaultHeight = defaultHeight; - } - if (enableVizTransformations !== undefined) { - params[Param.EnableVizTransformations] = enableVizTransformations.toString(); - } - if (preventLiveboardFilterRemoval) { - params[Param.preventLiveboardFilterRemoval] = true; - } - if (visibleVizs) { - params[Param.visibleVizs] = visibleVizs; - } - params[Param.livedBoardEmbed] = true; - if (vizId) { - params[Param.vizEmbed] = true; - } - if (liveboardV2 !== undefined) { - params[Param.LiveboardV2Enabled] = liveboardV2; - } - if (enable2ColumnLayout !== undefined) { - params[Param.Enable2ColumnLayout] = enable2ColumnLayout; - } - if (hideTabPanel) { - params[Param.HideTabPanel] = hideTabPanel; - } - if (hideLiveboardHeader) { - params[Param.HideLiveboardHeader] = hideLiveboardHeader; - } - if (showLiveboardDescription) { - params[Param.ShowLiveboardDescription] = showLiveboardDescription; - } - if (showLiveboardTitle) { - params[Param.ShowLiveboardTitle] = showLiveboardTitle; - } - if (enableAskSage) { - params[Param.enableAskSage] = enableAskSage; + protected viewConfig: LiveboardViewConfig; + + private defaultHeight = 500; + + // eslint-disable-next-line no-useless-constructor + constructor(domSelector: DOMSelector, viewConfig: LiveboardViewConfig) { + viewConfig.embedComponentType = 'LiveboardEmbed'; + super(domSelector, viewConfig); + if (this.viewConfig.fullHeight === true) { + this.on(EmbedEvent.RouteChange, this.setIframeHeightForNonEmbedLiveboard); + this.on(EmbedEvent.EmbedHeight, this.updateIFrameHeight); + this.on(EmbedEvent.EmbedIframeCenter, this.embedIframeCenter); + } } - if (oAuthPollingInterval !== undefined) { - params[Param.OauthPollingInterval] = oAuthPollingInterval; + /** + * Construct a map of params to be passed on to the + * embedded Liveboard or visualization. + */ + protected getEmbedParams() { + let params = {}; + params = this.getBaseQueryParams(params); + const { + enableVizTransformations, + fullHeight, + defaultHeight, + visibleVizs, + liveboardV2, + vizId, + hideTabPanel, + activeTabId, + hideLiveboardHeader, + showLiveboardDescription, + showLiveboardTitle, + isLiveboardHeaderSticky = true, + isLiveboardCompactHeaderEnabled = false, + showLiveboardVerifiedBadge = true, + showLiveboardReverifyBanner = true, + hideIrrelevantChipsInLiveboardTabs = false, + enableAskSage, + enable2ColumnLayout, + dataPanelV2 = false, + enableCustomColumnGroups = false, + oAuthPollingInterval, + isForceRedirect, + dataSourceId, + } = this.viewConfig; + + const preventLiveboardFilterRemoval = this.viewConfig.preventLiveboardFilterRemoval + || this.viewConfig.preventPinboardFilterRemoval; + + if (fullHeight === true) { + params[Param.fullHeight] = true; + } + if (defaultHeight) { + this.defaultHeight = defaultHeight; + } + if (enableVizTransformations !== undefined) { + params[Param.EnableVizTransformations] = enableVizTransformations.toString(); + } + if (preventLiveboardFilterRemoval) { + params[Param.preventLiveboardFilterRemoval] = true; + } + if (visibleVizs) { + params[Param.visibleVizs] = visibleVizs; + } + params[Param.livedBoardEmbed] = true; + if (vizId) { + params[Param.vizEmbed] = true; + } + if (liveboardV2 !== undefined) { + params[Param.LiveboardV2Enabled] = liveboardV2; + } + if (enable2ColumnLayout !== undefined) { + params[Param.Enable2ColumnLayout] = enable2ColumnLayout; + } + if (hideTabPanel) { + params[Param.HideTabPanel] = hideTabPanel; + } + if (hideLiveboardHeader) { + params[Param.HideLiveboardHeader] = hideLiveboardHeader; + } + if (showLiveboardDescription) { + params[Param.ShowLiveboardDescription] = showLiveboardDescription; + } + if (showLiveboardTitle) { + params[Param.ShowLiveboardTitle] = showLiveboardTitle; + } + if (enableAskSage) { + params[Param.enableAskSage] = enableAskSage; + } + + if (oAuthPollingInterval !== undefined) { + params[Param.OauthPollingInterval] = oAuthPollingInterval; + } + + if (isForceRedirect) { + params[Param.IsForceRedirect] = isForceRedirect; + } + + if (dataSourceId !== undefined) { + params[Param.DataSourceId] = dataSourceId; + } + + params[Param.LiveboardHeaderSticky] = isLiveboardHeaderSticky; + params[Param.LiveboardHeaderV2] = isLiveboardCompactHeaderEnabled; + params[Param.ShowLiveboardVerifiedBadge] = showLiveboardVerifiedBadge; + params[Param.ShowLiveboardReverifyBanner] = showLiveboardReverifyBanner; + params[Param.HideIrrelevantFiltersInTab] = hideIrrelevantChipsInLiveboardTabs; + + params[Param.DataPanelV2Enabled] = dataPanelV2; + params[Param.EnableCustomColumnGroups] = enableCustomColumnGroups; + const queryParams = getQueryParamString(params, true); + + return queryParams; } - if (isForceRedirect) { - params[Param.IsForceRedirect] = isForceRedirect; + private getIframeSuffixSrc(liveboardId: string, vizId: string, activeTabId: string) { + let suffix = `/embed/viz/${liveboardId}`; + if (activeTabId) { + suffix = `${suffix}/tab/${activeTabId} `; + } + if (vizId) { + suffix = `${suffix}/${vizId}`; + } + const tsPostHashParams = this.getThoughtSpotPostUrlParams(); + suffix = `${suffix}${tsPostHashParams}`; + return suffix; } - if (dataSourceId !== undefined) { - params[Param.DataSourceId] = dataSourceId; + /** + * Construct the URL of the embedded ThoughtSpot Liveboard or visualization + * to be loaded within the iFrame. + */ + private getIFrameSrc(): string { + const { vizId, activeTabId } = this.viewConfig; + const liveboardId = this.viewConfig.liveboardId ?? this.viewConfig.pinboardId; + + if (!liveboardId) { + this.handleError(ERROR_MESSAGE.LIVEBOARD_VIZ_ID_VALIDATION); + } + return `${this.getRootIframeSrc()}${this.getIframeSuffixSrc( + liveboardId, + vizId, + activeTabId, + )}`; } - params[Param.LiveboardHeaderSticky] = isLiveboardHeaderSticky; - params[Param.LiveboardHeaderV2] = isLiveboardCompactHeaderEnabled; - params[Param.ShowLiveboardVerifiedBadge] = showLiveboardVerifiedBadge; - params[Param.ShowLiveboardReverifyBanner] = showLiveboardReverifyBanner; - params[Param.HideIrrelevantFiltersInTab] = hideIrrelevantChipsInLiveboardTabs; - - params[Param.DataPanelV2Enabled] = dataPanelV2; - params[Param.EnableCustomColumnGroups] = enableCustomColumnGroups; - const queryParams = getQueryParamString(params, true); + /** + * Set the iframe height as per the computed height received + * from the ThoughtSpot app. + * @param data The event payload + */ + private updateIFrameHeight = (data: MessagePayload) => { + this.setIFrameHeight(Math.max(data.data, this.defaultHeight)); + }; - return queryParams; - } + private embedIframeCenter = (data: MessagePayload, responder: any) => { + const obj = this.getIframeCenter(); + responder({ type: EmbedEvent.EmbedIframeCenter, data: obj }); + }; - private getIframeSuffixSrc(liveboardId: string, vizId: string, activeTabId: string) { - let suffix = `/embed/viz/${liveboardId}`; - if (activeTabId) { - suffix = `${suffix}/tab/${activeTabId} `; - } - if (vizId) { - suffix = `${suffix}/${vizId}`; - } - const tsPostHashParams = this.getThoughtSpotPostUrlParams(); - suffix = `${suffix}${tsPostHashParams}`; - return suffix; - } - - /** - * Construct the URL of the embedded ThoughtSpot Liveboard or visualization - * to be loaded within the iFrame. - */ - private getIFrameSrc(): string { - const { vizId, activeTabId } = this.viewConfig; - const liveboardId = this.viewConfig.liveboardId ?? this.viewConfig.pinboardId; - - if (!liveboardId) { - this.handleError(ERROR_MESSAGE.LIVEBOARD_VIZ_ID_VALIDATION); - } - return `${this.getRootIframeSrc()}${this.getIframeSuffixSrc( - liveboardId, - vizId, - activeTabId, - )}`; - } - - /** - * Set the iframe height as per the computed height received - * from the ThoughtSpot app. - * @param data The event payload - */ - private updateIFrameHeight = (data: MessagePayload) => { - this.setIFrameHeight(Math.max(data.data, this.defaultHeight)); - }; - - private embedIframeCenter = (data: MessagePayload, responder: any) => { - const obj = this.getIframeCenter(); - responder({ type: EmbedEvent.EmbedIframeCenter, data: obj }); - }; - - private setIframeHeightForNonEmbedLiveboard = (data: MessagePayload) => { - const routePath = data.data.currentPath; - if (liveboardHeightWhitelistedRoutes.some((path) => routePath.startsWith(path))) { - return; - } - this.setIFrameHeight(this.defaultHeight); - }; - - private setActiveTab(data: { tabId: string }) { - if (!this.viewConfig.vizId) { - const prefixPath = this.iFrame.src.split('#/')[1].split('/tab')[0]; - const path = `${prefixPath}/tab/${data.tabId}`; - super.trigger(HostEvent.Navigate, path); - } - } + private setIframeHeightForNonEmbedLiveboard = (data: MessagePayload) => { + const routePath = data.data.currentPath; + if (liveboardHeightWhitelistedRoutes.some((path) => routePath.startsWith(path))) { + return; + } + this.setIFrameHeight(this.defaultHeight); + }; - private async showPreviewLoader() { - if (!this.viewConfig.showPreviewLoader || !this.viewConfig.vizId) { - return; + private setActiveTab(data: { tabId: string }) { + if (!this.viewConfig.vizId) { + const prefixPath = this.iFrame.src.split('#/')[1].split('/tab')[0]; + const path = `${prefixPath}/tab/${data.tabId}`; + super.trigger(HostEvent.Navigate, path); + } } - try { - const preview = await getPreview( - this.thoughtSpotHost, - this.viewConfig.vizId, - this.viewConfig.liveboardId, - ); - - if (!preview.vizContent) { - return; - } - addPreviewStylesIfNotPresent(); - - const div = document.createElement('div'); - div.innerHTML = ` + private async showPreviewLoader() { + if (!this.viewConfig.showPreviewLoader || !this.viewConfig.vizId) { + return; + } + + try { + const preview = await getPreview( + this.thoughtSpotHost, + this.viewConfig.vizId, + this.viewConfig.liveboardId, + ); + + if (!preview.vizContent) { + return; + } + addPreviewStylesIfNotPresent(); + + const div = document.createElement('div'); + div.innerHTML = `
${preview.vizContent}
`; - const previewDiv = div.firstElementChild as HTMLElement; - this.el.appendChild(previewDiv); - this.el.style.position = 'relative'; - this.on(EmbedEvent.Data, () => { - previewDiv.remove(); - }); - } catch (error) { - console.error('Error fetching preview', error); + const previewDiv = div.firstElementChild as HTMLElement; + this.el.appendChild(previewDiv); + this.el.style.position = 'relative'; + this.on(EmbedEvent.Data, () => { + previewDiv.remove(); + }); + } catch (error) { + console.error('Error fetching preview', error); + } } - } - protected beforePrerenderVisible(): void { - const embedObj = this.insertedDomEl?.[this.embedNodeKey] as LiveboardEmbed; + protected beforePrerenderVisible(): void { + const embedObj = this.insertedDomEl?.[this.embedNodeKey] as LiveboardEmbed; - if (isUndefined(embedObj)) return; + if (isUndefined(embedObj)) return; - const showDifferentLib = this.viewConfig.liveboardId - && embedObj.viewConfig.liveboardId !== this.viewConfig.liveboardId; + const showDifferentLib = this.viewConfig.liveboardId + && embedObj.viewConfig.liveboardId !== this.viewConfig.liveboardId; - if (showDifferentLib) { - const libId = this.viewConfig.liveboardId; - this.navigateToLiveboard(libId); + if (showDifferentLib) { + const libId = this.viewConfig.liveboardId; + this.navigateToLiveboard(libId); + } } - } - protected async handleRenderForPrerender(): Promise { - if (isUndefined(this.viewConfig.liveboardId)) { - return this.prerenderGeneric(); - } - return super.handleRenderForPrerender(); - } - - /** - * Triggers an event to the embedded app - * @param {HostEvent} messageType The event type - * @param {any} data The payload to send with the message - * @returns A promise that resolves with the response from the embedded app - */ - public trigger( - messageType: HostEventT, - data: TriggerPayload = ({} as any), - ): Promise> { - const dataWithVizId: any = data; - if (messageType === HostEvent.SetActiveTab) { - this.setActiveTab(data as { tabId: string }); - return Promise.resolve(null); + protected async handleRenderForPrerender(): Promise { + if (isUndefined(this.viewConfig.liveboardId)) { + return this.prerenderGeneric(); + } + return super.handleRenderForPrerender(); } - if (typeof dataWithVizId === 'object' && this.viewConfig.vizId) { - dataWithVizId.vizId = this.viewConfig.vizId; - } - return super.trigger(messageType, dataWithVizId); - } - - /** - * Render an embedded ThoughtSpot Liveboard or visualization - * @param renderOptions An object specifying the Liveboard ID, - * visualization ID and the runtime filters. - */ - public async render(): Promise { - await super.render(); - - const src = this.getIFrameSrc(); - await this.renderV1Embed(src); - this.showPreviewLoader(); - - return this; - } - - public navigateToLiveboard(liveboardId: string, vizId?: string, activeTabId?: string) { - const path = this.getIframeSuffixSrc(liveboardId, vizId, activeTabId); - this.viewConfig.liveboardId = liveboardId; - this.viewConfig.activeTabId = activeTabId; - this.viewConfig.vizId = vizId; - if (this.isRendered) { - this.trigger(HostEvent.Navigate, path.substring(1)); - } else if (this.viewConfig.preRenderId) { - this.preRender(true); - } else { - this.render(); + + /** + * Triggers an event to the embedded app + * @param {HostEvent} messageType The event type + * @param {any} data The payload to send with the message + * @returns A promise that resolves with the response from the embedded app + */ + public trigger( + messageType: HostEventT, + data: TriggerPayload = ({} as any), + ): Promise> { + const dataWithVizId: any = data; + if (messageType === HostEvent.SetActiveTab) { + this.setActiveTab(data as { tabId: string }); + return Promise.resolve(null); + } + if (typeof dataWithVizId === 'object' && this.viewConfig.vizId) { + dataWithVizId.vizId = this.viewConfig.vizId; + } + return super.trigger(messageType, dataWithVizId); } - } - - /** - * Returns the full url of the Liveboard/visualization which can be used to open - * this Liveboard inside the full Thoughtspot application in a new tab. - * @returns url string - */ - public getLiveboardUrl(): string { - let url = `${this.thoughtSpotHost}/#/pinboard/${this.viewConfig.liveboardId}`; - if (this.viewConfig.activeTabId) { - url = `${url}/tab/${this.viewConfig.activeTabId}`; + + /** + * Render an embedded ThoughtSpot Liveboard or visualization + * @param renderOptions An object specifying the Liveboard ID, + * visualization ID and the runtime filters. + */ + public async render(): Promise { + await super.render(); + + const src = this.getIFrameSrc(); + await this.renderV1Embed(src); + this.showPreviewLoader(); + + return this; } - if (this.viewConfig.vizId) { - url = `${url}/${this.viewConfig.vizId}`; + public navigateToLiveboard(liveboardId: string, vizId?: string, activeTabId?: string) { + const path = this.getIframeSuffixSrc(liveboardId, vizId, activeTabId); + this.viewConfig.liveboardId = liveboardId; + this.viewConfig.activeTabId = activeTabId; + this.viewConfig.vizId = vizId; + if (this.isRendered) { + this.trigger(HostEvent.Navigate, path.substring(1)); + } else if (this.viewConfig.preRenderId) { + this.preRender(true); + } else { + this.render(); + } } - return url; - } + /** + * Returns the full url of the Liveboard/visualization which can be used to open + * this Liveboard inside the full Thoughtspot application in a new tab. + * @returns url string + */ + public getLiveboardUrl(): string { + let url = `${this.thoughtSpotHost}/#/pinboard/${this.viewConfig.liveboardId}`; + if (this.viewConfig.activeTabId) { + url = `${url}/tab/${this.viewConfig.activeTabId}`; + } + + if (this.viewConfig.vizId) { + url = `${url}/${this.viewConfig.vizId}`; + } + + return url; + } } /** diff --git a/src/utils/graphql/answerService/answerService.ts b/src/utils/graphql/answerService/answerService.ts index fb52f2e4..5ea013d4 100644 --- a/src/utils/graphql/answerService/answerService.ts +++ b/src/utils/graphql/answerService/answerService.ts @@ -8,7 +8,11 @@ import { graphqlQuery } from '../graphql-request'; import { getSourceDetail } from '../sourceService'; import * as queries from './answer-queries'; - +export interface SessionInterface { + sessionId: string; + genNo: number; + acSession: { sessionId: string; genNo: number }; +} // eslint-disable-next-line no-shadow export enum OperationType { From efffad8a6a0acba3d74e6f9c8d881836e7d09993 Mon Sep 17 00:00:00 2001 From: sastaachar Date: Mon, 24 Mar 2025 16:00:52 +0530 Subject: [PATCH 7/8] jstnm-ts-conversion : lmao --- scripts/script.ts | 52 ----------------------------------------------- 1 file changed, 52 deletions(-) delete mode 100644 scripts/script.ts diff --git a/scripts/script.ts b/scripts/script.ts deleted file mode 100644 index a5e7f011..00000000 --- a/scripts/script.ts +++ /dev/null @@ -1,52 +0,0 @@ -import fs from 'fs'; -// eslint-disable-next-line import/no-extraneous-dependencies -import { Config, createGenerator } from 'ts-json-schema-generator'; - -/** - * "AuthType": { - "type": "string", - "enum": [ - "None", - "EmbeddedSSO", - "SSO_SAML", - "SSO_OIDC", - "AuthServer", - "AuthServerCookieless", - "Basic" - ], - * "description": "The authentication mechanism for allowing access to the the embedded - * app" - }, - */ - -const enumTemplate = ` -enum {{name}} { -{{#options}}} - {{value}}{{name}} -{{/options}} -} -`; - -const convertJsonEnumToDartEnum = (jsonEnum: any) => jsonEnum.enum.map((item: string) => ` ${item}`).join('\n'); - -/** @type {import('ts-json-schema-generator').Config} */ -const config: Config = { - path: 'src/types.ts', - // tsconfig: './tsconfig.json', - type: '*', // Or if you want to generate schema for that one type only - expose: 'all', -}; - -const convertEnumToDartEnum = (enumName: string, enumOptions: string[]) => enumTemplate.replace('{{name}}', enumName).replace('{{options}}', enumOptions.map((option) => ` ${option}`).join('\n')); - -const outputPath = './schema.json'; - -console.log('adw'); -try { - const schema = createGenerator(config).createSchema(config.type); - const schemaString = JSON.stringify(schema, null, 2); - fs.writeFileSync(outputPath, schemaString); -} catch (error) { - console.error('Error generating schema:', error.message); - process.exit(1); -} From 4ad5b69862d4fda2c6200df49ab8267274e0db49 Mon Sep 17 00:00:00 2001 From: sastaachar Date: Mon, 24 Mar 2025 16:01:54 +0530 Subject: [PATCH 8/8] Clean slate --- src/types.ts | 19 +++++-------------- 1 file changed, 5 insertions(+), 14 deletions(-) diff --git a/src/types.ts b/src/types.ts index 67039d40..fdc34354 100644 --- a/src/types.ts +++ b/src/types.ts @@ -7,11 +7,8 @@ */ import { CustomCssVariables } from './css-variables'; -export interface SessionInterface { - sessionId: string; - genNo: number; - acSession: { sessionId: string; genNo: number }; -} +import type { SessionInterface } from './utils/graphql/answerService/answerService'; + /** * The authentication mechanism for allowing access to the * the embedded app @@ -209,7 +206,8 @@ export enum HomeLeftNavItem { */ LiveboardSchedules = 'liveboard-schedules' } -export type DOMSelector = string +export type DOMSelector = string | HTMLElement; + /** * inline customCSS within the {@link CustomisationsInterface}. * Use {@link CustomCssVariables} or css rules. @@ -490,7 +488,7 @@ export interface EmbedConfig { * ``` * @version SDK: 1.17.0 | ThoughtSpot: 8.9.0.cl, 9.0.1.sw */ - authTriggerContainer?: string; + authTriggerContainer?: string | HTMLElement; /** * Specify that we want to use the `AuthEvent.TRIGGER_SSO_POPUP` event to trigger * SAML popup. This is useful when you want to trigger the popup on a custom user @@ -4898,10 +4896,3 @@ export interface DefaultAppInitData { hiddenHomeLeftNavItems: string[]; customVariablesForThirdPartyTools: Record; } - -export enum lol { - aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa, - b, - c, - d -} \ No newline at end of file