@gooddata/sdk-ui-pluggable-host 11.41.0-alpha.4 → 11.41.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (130) hide show
  1. package/esm/components/FullScreenLoader.d.ts +1 -0
  2. package/esm/components/FullScreenLoader.d.ts.map +1 -0
  3. package/esm/components/HostUiContainer.d.ts +1 -0
  4. package/esm/components/HostUiContainer.d.ts.map +1 -0
  5. package/esm/components/HostUiContainer.js +16 -2
  6. package/esm/components/Root.d.ts +1 -0
  7. package/esm/components/Root.d.ts.map +1 -0
  8. package/esm/components/lib/translations.d.ts +1 -0
  9. package/esm/components/lib/translations.d.ts.map +1 -0
  10. package/esm/components/useRedirectNavigation.d.ts +1 -0
  11. package/esm/components/useRedirectNavigation.d.ts.map +1 -0
  12. package/esm/components/useRedirectTarget.d.ts +1 -0
  13. package/esm/components/useRedirectTarget.d.ts.map +1 -0
  14. package/esm/debug.d.ts +1 -0
  15. package/esm/debug.d.ts.map +1 -0
  16. package/esm/index.d.ts +1 -0
  17. package/esm/index.d.ts.map +1 -0
  18. package/esm/lib/chunkReloadGuard.d.ts +1 -0
  19. package/esm/lib/chunkReloadGuard.d.ts.map +1 -0
  20. package/esm/lib/hostNotifications.d.ts +1 -0
  21. package/esm/lib/hostNotifications.d.ts.map +1 -0
  22. package/esm/lib/isProduction.d.ts +1 -0
  23. package/esm/lib/isProduction.d.ts.map +1 -0
  24. package/esm/loader/appSecurityValidation.d.ts +57 -0
  25. package/esm/loader/appSecurityValidation.d.ts.map +1 -0
  26. package/esm/loader/appSecurityValidation.js +102 -0
  27. package/esm/loader/lastVisitedApp.d.ts +1 -0
  28. package/esm/loader/lastVisitedApp.d.ts.map +1 -0
  29. package/esm/loader/localLoader.d.ts +1 -0
  30. package/esm/loader/localLoader.d.ts.map +1 -0
  31. package/esm/loader/pluggableApplicationsLoader.d.ts +1 -0
  32. package/esm/loader/pluggableApplicationsLoader.d.ts.map +1 -0
  33. package/esm/loader/redirectLogic.d.ts +1 -0
  34. package/esm/loader/redirectLogic.d.ts.map +1 -0
  35. package/esm/loader/remoteLoader.d.ts +1 -0
  36. package/esm/loader/remoteLoader.d.ts.map +1 -0
  37. package/esm/loader/remoteUrlSecurity.d.ts +1 -0
  38. package/esm/loader/remoteUrlSecurity.d.ts.map +1 -0
  39. package/esm/loader/routing.d.ts +1 -0
  40. package/esm/loader/routing.d.ts.map +1 -0
  41. package/esm/platformContext/backend.d.ts +1 -0
  42. package/esm/platformContext/backend.d.ts.map +1 -0
  43. package/esm/platformContext/bootstrap.d.ts +1 -0
  44. package/esm/platformContext/bootstrap.d.ts.map +1 -0
  45. package/esm/platformContext/loadPlatformContext.d.ts +1 -0
  46. package/esm/platformContext/loadPlatformContext.d.ts.map +1 -0
  47. package/esm/platformContext/tigerNotAuthenticatedHandler.d.ts +1 -0
  48. package/esm/platformContext/tigerNotAuthenticatedHandler.d.ts.map +1 -0
  49. package/esm/platformContext/types.d.ts +1 -0
  50. package/esm/platformContext/types.d.ts.map +1 -0
  51. package/esm/platformContext/useLoadPlatformContext.d.ts +1 -0
  52. package/esm/platformContext/useLoadPlatformContext.d.ts.map +1 -0
  53. package/esm/platformContext/useWorkspaceColorPalette.d.ts +1 -0
  54. package/esm/platformContext/useWorkspaceColorPalette.d.ts.map +1 -0
  55. package/esm/platformContext/useWorkspacePermissions.d.ts +1 -0
  56. package/esm/platformContext/useWorkspacePermissions.d.ts.map +1 -0
  57. package/esm/platformContext/useWorkspaceSettings.d.ts +1 -0
  58. package/esm/platformContext/useWorkspaceSettings.d.ts.map +1 -0
  59. package/esm/platformContext/useWorkspaceTheme.d.ts +1 -0
  60. package/esm/platformContext/useWorkspaceTheme.d.ts.map +1 -0
  61. package/esm/platformContext/waitForInjectedApiToken.d.ts +1 -0
  62. package/esm/platformContext/waitForInjectedApiToken.d.ts.map +1 -0
  63. package/esm/registry/pluggableApplicationsRegistry.d.ts +1 -0
  64. package/esm/registry/pluggableApplicationsRegistry.d.ts.map +1 -0
  65. package/esm/translations/de-DE.json +4 -1
  66. package/esm/translations/en-AU.json +4 -1
  67. package/esm/translations/en-GB.json +4 -1
  68. package/esm/translations/en-US.json +52 -0
  69. package/esm/translations/es-419.json +4 -1
  70. package/esm/translations/es-ES.json +4 -1
  71. package/esm/translations/fi-FI.json +4 -1
  72. package/esm/translations/fr-CA.json +4 -1
  73. package/esm/translations/fr-FR.json +4 -1
  74. package/esm/translations/id-ID.json +4 -1
  75. package/esm/translations/it-IT.json +4 -1
  76. package/esm/translations/ja-JP.json +4 -1
  77. package/esm/translations/ko-KR.json +4 -1
  78. package/esm/translations/nl-NL.json +4 -1
  79. package/esm/translations/pl-PL.json +4 -1
  80. package/esm/translations/pt-BR.json +4 -1
  81. package/esm/translations/pt-PT.json +4 -1
  82. package/esm/translations/ru-RU.json +4 -1
  83. package/esm/translations/sl-SI.json +4 -1
  84. package/esm/translations/th-TH.json +4 -1
  85. package/esm/translations/tr-TR.json +4 -1
  86. package/esm/translations/uk-UA.json +4 -1
  87. package/esm/translations/vi-VN.json +4 -1
  88. package/esm/translations/zh-HK.json +4 -1
  89. package/esm/translations/zh-Hans.json +4 -1
  90. package/esm/translations/zh-Hant.json +4 -1
  91. package/esm/types/lifecycle.d.ts +1 -0
  92. package/esm/types/lifecycle.d.ts.map +1 -0
  93. package/esm/ui/DefaultHostUi.d.ts +1 -0
  94. package/esm/ui/DefaultHostUi.d.ts.map +1 -0
  95. package/esm/ui/DefaultHostUi.js +10 -3
  96. package/esm/ui/GenAIChat.d.ts +1 -0
  97. package/esm/ui/GenAIChat.d.ts.map +1 -0
  98. package/esm/ui/HostChrome.d.ts +7 -1
  99. package/esm/ui/HostChrome.d.ts.map +1 -0
  100. package/esm/ui/HostChrome.js +37 -14
  101. package/esm/ui/HostIntlProvider.d.ts +1 -0
  102. package/esm/ui/HostIntlProvider.d.ts.map +1 -0
  103. package/esm/ui/HostNotificationDispatcher.d.ts +1 -0
  104. package/esm/ui/HostNotificationDispatcher.d.ts.map +1 -0
  105. package/esm/ui/PluggableApplicationRenderer.d.ts +3 -1
  106. package/esm/ui/PluggableApplicationRenderer.d.ts.map +1 -0
  107. package/esm/ui/PluggableApplicationRenderer.js +70 -10
  108. package/esm/ui/PluggableApplicationRenderer.scss +31 -1
  109. package/esm/ui/SemanticSearch.d.ts +1 -0
  110. package/esm/ui/SemanticSearch.d.ts.map +1 -0
  111. package/esm/ui/WorkspacePicker.d.ts +1 -0
  112. package/esm/ui/WorkspacePicker.d.ts.map +1 -0
  113. package/esm/ui/appMenuItems.d.ts +2 -0
  114. package/esm/ui/appMenuItems.d.ts.map +1 -0
  115. package/esm/ui/appMenuItems.js +1 -1
  116. package/esm/ui/chromeHelpers.d.ts +1 -0
  117. package/esm/ui/chromeHelpers.d.ts.map +1 -0
  118. package/esm/ui/hostChromeBem.d.ts +1 -0
  119. package/esm/ui/hostChromeBem.d.ts.map +1 -0
  120. package/esm/ui/resolveHostUiModule.d.ts +1 -0
  121. package/esm/ui/resolveHostUiModule.d.ts.map +1 -0
  122. package/esm/ui/useHostChromeChat.d.ts +1 -0
  123. package/esm/ui/useHostChromeChat.d.ts.map +1 -0
  124. package/esm/ui/useHostChromePricing.d.ts +1 -0
  125. package/esm/ui/useHostChromePricing.d.ts.map +1 -0
  126. package/esm/ui/useHostChromeSearch.d.ts +1 -0
  127. package/esm/ui/useHostChromeSearch.d.ts.map +1 -0
  128. package/esm/ui/useHostChromeWorkspaceFeatures.d.ts +1 -0
  129. package/esm/ui/useHostChromeWorkspaceFeatures.d.ts.map +1 -0
  130. package/package.json +17 -17
@@ -1 +1,2 @@
1
1
  export declare function FullScreenLoader(): import("react/jsx-runtime").JSX.Element;
2
+ //# sourceMappingURL=FullScreenLoader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FullScreenLoader.d.ts","sourceRoot":"","sources":["../../src/components/FullScreenLoader.tsx"],"names":[],"mappings":"AAOA,wBAAgB,gBAAgB,4CAM/B"}
@@ -14,3 +14,4 @@ export interface IHostUiContainerProps {
14
14
  * updates (context, apps, pathname) via the host mount handle.
15
15
  */
16
16
  export declare function HostUiContainer({ ctx, apps, pathname, routerNavigate }: IHostUiContainerProps): import("react/jsx-runtime").JSX.Element;
17
+ //# sourceMappingURL=HostUiContainer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HostUiContainer.d.ts","sourceRoot":"","sources":["../../src/components/HostUiContainer.tsx"],"names":[],"mappings":"AAKA,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAErD,OAAO,EAAE,KAAK,gCAAgC,EAAE,MAAM,qBAAqB,CAAC;AAC5E,OAAO,EAEH,KAAK,gBAAgB,EAExB,MAAM,2CAA2C,CAAC;AAWnD,OAAO,wBAAwB,CAAC;AAEhC,MAAM,WAAW,qBAAqB;IAClC,GAAG,EAAE,gBAAgB,CAAC;IACtB,IAAI,EAAE,gCAAgC,EAAE,CAAC;IACzC,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,EAAE,gBAAgB,CAAC;CACpC;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,cAAc,EAAE,EAAE,qBAAqB,2CAsL7F"}
@@ -24,12 +24,18 @@ export function HostUiContainer({ ctx, apps, pathname, routerNavigate }) {
24
24
  const [hostReady, setHostReady] = useState(false);
25
25
  const latestMountStateRef = useAutoupdateRef({ ctx, apps, pathname });
26
26
  const [headerOptions, setHeaderOptions] = useState(undefined);
27
+ const [pageTitle, setPageTitle] = useState(undefined);
27
28
  const activeAppRef = useAutoupdateRef(activeInternalApplication);
28
29
  const onHeaderChange = useCallback((appId, header) => {
29
30
  if (activeAppRef.current?.id === appId) {
30
31
  setHeaderOptions(header);
31
32
  }
32
33
  }, [activeAppRef]);
34
+ const onDocumentTitleChange = useCallback((appId, title) => {
35
+ if (activeAppRef.current?.id === appId) {
36
+ setPageTitle(title);
37
+ }
38
+ }, [activeAppRef]);
33
39
  // Stable navigation callbacks that always use the latest router navigate
34
40
  const navigateRef = useAutoupdateRef(routerNavigate);
35
41
  const navigate = useCallback((url) => {
@@ -110,6 +116,13 @@ export function HostUiContainer({ ctx, apps, pathname, routerNavigate }) {
110
116
  }
111
117
  handleRef.current?.updateHeader?.(headerOptions);
112
118
  }, [hostReady, headerOptions]);
119
+ // Push the active application's page title to the host UI whenever it changes
120
+ useEffect(() => {
121
+ if (!hostReady) {
122
+ return;
123
+ }
124
+ handleRef.current?.updateDocumentTitle?.(pageTitle);
125
+ }, [hostReady, pageTitle]);
113
126
  // Track app navigation and page views when the active application changes.
114
127
  // Also clear header options on app switch so stale customizations don't leak.
115
128
  const prevAppIdRef = useRef(undefined);
@@ -123,6 +136,7 @@ export function HostUiContainer({ ctx, apps, pathname, routerNavigate }) {
123
136
  }
124
137
  prevAppIdRef.current = activeId;
125
138
  setHeaderOptions(undefined);
139
+ setPageTitle(undefined);
126
140
  }
127
141
  }, [activeInternalApplication, pathname]);
128
142
  // Render the active pluggable application into the host UI's app container
@@ -131,11 +145,11 @@ export function HostUiContainer({ ctx, apps, pathname, routerNavigate }) {
131
145
  return;
132
146
  }
133
147
  if (activeInternalApplication) {
134
- appRootRef.current.render(_jsx(HostIntlProvider, { locale: resolveLocale(ctx.preferredLocale), children: _jsx(PluggableApplicationRenderer, { app: activeInternalApplication, ctx: ctx, pathname: pathname, onHeaderChange: onHeaderChange }, activeInternalApplication.id) }));
148
+ appRootRef.current.render(_jsx(HostIntlProvider, { locale: resolveLocale(ctx.preferredLocale), children: _jsx(PluggableApplicationRenderer, { app: activeInternalApplication, ctx: ctx, pathname: pathname, onHeaderChange: onHeaderChange, onDocumentTitleChange: onDocumentTitleChange }, activeInternalApplication.id) }));
135
149
  }
136
150
  else {
137
151
  appRootRef.current.render(null);
138
152
  }
139
- }, [hostReady, activeInternalApplication, ctx, onHeaderChange, pathname]);
153
+ }, [hostReady, activeInternalApplication, ctx, onHeaderChange, onDocumentTitleChange, pathname]);
140
154
  return _jsx("div", { ref: containerRef, className: "gd-host-ui-container" });
141
155
  }
@@ -14,3 +14,4 @@ export interface IRootCallbacks {
14
14
  export declare function Root({ callbacks }: {
15
15
  callbacks?: IRootCallbacks;
16
16
  }): import("react/jsx-runtime").JSX.Element;
17
+ //# sourceMappingURL=Root.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Root.d.ts","sourceRoot":"","sources":["../../src/components/Root.tsx"],"names":[],"mappings":"AAOA,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,2CAA2C,CAAC;AAYlF,OAAO,sBAAsB,CAAC;AAE9B,OAAO,aAAa,CAAC;AAIrB;;GAEG;AACH,MAAM,WAAW,cAAc;IAC3B,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,gBAAgB,KAAK,IAAI,CAAC;IAC1C,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CACtD;AAED;;GAEG;AACH,wBAAgB,IAAI,CAAC,EAAE,SAAS,EAAE,EAAE;IAAE,SAAS,CAAC,EAAE,cAAc,CAAA;CAAE,2CAqBjE"}
@@ -5,3 +5,4 @@ export declare const DEFAULT_MESSAGES: Record<string, ITranslations>;
5
5
  * Memoized to cache promises and prevent duplicate async imports.
6
6
  */
7
7
  export declare const resolveMessages: (locale: string) => Promise<ITranslations>;
8
+ //# sourceMappingURL=translations.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"translations.d.ts","sourceRoot":"","sources":["../../../src/components/lib/translations.ts"],"names":[],"mappings":"AAIA,OAAO,EAIH,KAAK,aAAa,EAGrB,MAAM,kBAAkB,CAAC;AAuC1B,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAK1D,CAAC;AAyBF;;;GAGG;AACH,eAAO,MAAM,eAAe,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,aAAa,CAAoC,CAAC"}
@@ -5,3 +5,4 @@ import { type RedirectTargetState } from "./useRedirectTarget.js";
5
5
  * Deduplicates consecutive redirects to the same URL by tracking the last navigated path.
6
6
  */
7
7
  export declare function useRedirectNavigation(redirect: RedirectTargetState, navigate: NavigateFunction): void;
8
+ //# sourceMappingURL=useRedirectNavigation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useRedirectNavigation.d.ts","sourceRoot":"","sources":["../../src/components/useRedirectNavigation.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAIrD,OAAO,EAAE,KAAK,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAElE;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,mBAAmB,EAAE,QAAQ,EAAE,gBAAgB,GAAG,IAAI,CAgBrG"}
@@ -17,3 +17,4 @@ export type RedirectTargetState = {
17
17
  * Resolves the redirect target for the current URL and permission context.
18
18
  */
19
19
  export declare function useRedirectTarget(apps: PluggableApplicationRegistryItem[], ctx: IPlatformContext, pathname: string): RedirectTargetState;
20
+ //# sourceMappingURL=useRedirectTarget.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useRedirectTarget.d.ts","sourceRoot":"","sources":["../../src/components/useRedirectTarget.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,gCAAgC,EAAE,MAAM,qBAAqB,CAAC;AAC5E,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,2CAA2C,CAAC;AAMlF,MAAM,MAAM,mBAAmB,GACzB;IAAE,KAAK,EAAE,SAAS,CAAA;CAAE,GACpB;IAAE,KAAK,EAAE,QAAQ,CAAA;CAAE,GACnB;IAAE,KAAK,EAAE,UAAU,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,GAClC;IAAE,KAAK,EAAE,WAAW,CAAA;CAAE,GACtB;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAExC;;GAEG;AACH,wBAAgB,iBAAiB,CAC7B,IAAI,EAAE,gCAAgC,EAAE,EACxC,GAAG,EAAE,gBAAgB,EACrB,QAAQ,EAAE,MAAM,GACjB,mBAAmB,CA2DrB"}
package/esm/debug.d.ts CHANGED
@@ -7,3 +7,4 @@ export declare function debugLog(message: string, ...args: unknown[]): void;
7
7
  * when available and falling back to Date.now().
8
8
  */
9
9
  export declare function now(): number;
10
+ //# sourceMappingURL=debug.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"debug.d.ts","sourceRoot":"","sources":["../src/debug.ts"],"names":[],"mappings":"AAIA;;GAEG;AACH,wBAAgB,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAKlE;AAED;;;GAGG;AACH,wBAAgB,GAAG,IAAI,MAAM,CAE5B"}
package/esm/index.d.ts CHANGED
@@ -9,3 +9,4 @@ export { type IAppLifecycleCallbacks } from "./types/lifecycle.js";
9
9
  export { STALE_CHUNK_RELOAD_PARAM, installPreloadErrorHandler, installVersionWatcher, reloadForStaleChunks, setStaleChunkReloadListener, type IStaleChunkReloadInfo, type IVersionWatcherOptions, type StaleChunkReloadListener, } from "./lib/chunkReloadGuard.js";
10
10
  export { dispatchHostNotification } from "./lib/hostNotifications.js";
11
11
  export { setHostPricingExtension, type UseHostPricingExtension, type IHostChromePricing, } from "./ui/useHostChromePricing.js";
12
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AACjF,OAAO,EAAE,gCAAgC,EAAE,MAAM,6CAA6C,CAAC;AAC/F,OAAO,EAAE,KAAK,6BAA6B,EAAE,MAAM,0CAA0C,CAAC;AAE9F,OAAO,EACH,+BAA+B,EAC/B,KAAK,+BAA+B,GACvC,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EAAE,yBAAyB,EAAE,MAAM,6CAA6C,CAAC;AACxF,OAAO,EAAE,6BAA6B,EAAE,MAAM,yCAAyC,CAAC;AAExF,OAAO,EAAE,IAAI,EAAE,KAAK,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACjE,OAAO,EAAE,KAAK,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAEnE,OAAO,EACH,wBAAwB,EACxB,0BAA0B,EAC1B,qBAAqB,EACrB,oBAAoB,EACpB,2BAA2B,EAC3B,KAAK,qBAAqB,EAC1B,KAAK,sBAAsB,EAC3B,KAAK,wBAAwB,GAChC,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AAEtE,OAAO,EACH,uBAAuB,EACvB,KAAK,uBAAuB,EAC5B,KAAK,kBAAkB,GAC1B,MAAM,8BAA8B,CAAC"}
@@ -87,3 +87,4 @@ export interface IVersionWatcherOptions {
87
87
  * @alpha
88
88
  */
89
89
  export declare function installVersionWatcher({ url, intervalMs, onNewDeployment }: IVersionWatcherOptions): void;
90
+ //# sourceMappingURL=chunkReloadGuard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chunkReloadGuard.d.ts","sourceRoot":"","sources":["../../src/lib/chunkReloadGuard.ts"],"names":[],"mappings":"AAsBA;;;;;GAKG;AACH,MAAM,WAAW,qBAAqB;IAClC,2EAAyE;IACzE,MAAM,EAAE,MAAM,CAAC;IACf,sFAAsF;IACtF,UAAU,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,MAAM,wBAAwB,GAAG,CAAC,IAAI,EAAE,qBAAqB,KAAK,IAAI,CAAC;AAoC7E;;;;;;;;;;GAUG;AACH,wBAAgB,2BAA2B,CAAC,QAAQ,EAAE,wBAAwB,GAAG,SAAS,GAAG,IAAI,CAEhG;AAED;;;;;;;;;GASG;AACH,eAAO,MAAM,wBAAwB,UAAU,CAAC;AAEhD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CA2BzD;AAED;;;;;;;;GAQG;AACH,wBAAgB,0BAA0B,IAAI,IAAI,CAkBjD;AAED;;;;GAIG;AACH,MAAM,WAAW,sBAAsB;IACnC,4DAA4D;IAC5D,GAAG,EAAE,MAAM,CAAC;IACZ,+CAA+C;IAC/C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,qDAAqD;IACrD,eAAe,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CAC9C;AAED;;;;;;;;;GASG;AACH,wBAAgB,qBAAqB,CAAC,EAClC,GAAG,EACH,UAAuB,EACvB,eAAe,EAClB,EAAE,sBAAsB,GAAG,IAAI,CAsE/B"}
@@ -18,3 +18,4 @@ export declare function dispatchHostNotification(notification: IHostUiNotificati
18
18
  * on unmount. On register, any queued notifications are flushed in arrival order.
19
19
  */
20
20
  export declare function setActiveHostHandle(handle: IHostUiMountHandle | undefined): void;
21
+ //# sourceMappingURL=hostNotifications.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hostNotifications.d.ts","sourceRoot":"","sources":["../../src/lib/hostNotifications.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,kBAAkB,EAAE,KAAK,mBAAmB,EAAE,MAAM,2CAA2C,CAAC;AAiB9G;;;;;;;;;GASG;AACH,wBAAgB,wBAAwB,CAAC,YAAY,EAAE,mBAAmB,GAAG,IAAI,CAShF;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,kBAAkB,GAAG,SAAS,GAAG,IAAI,CAShF"}
@@ -10,3 +10,4 @@
10
10
  * @internal
11
11
  */
12
12
  export declare const isProduction: boolean;
13
+ //# sourceMappingURL=isProduction.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"isProduction.d.ts","sourceRoot":"","sources":["../../src/lib/isProduction.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;GAUG;AACH,eAAO,MAAM,YAAY,EAAE,OAAyD,CAAC"}
@@ -0,0 +1,57 @@
1
+ import { type PluggableApplicationRegistryItem } from "@gooddata/sdk-model";
2
+ import { type IPluggableApp, type IPlatformContext } from "@gooddata/sdk-pluggable-application-model";
3
+ /**
4
+ * Maximum age of a secured-remote build, in milliseconds.
5
+ *
6
+ * @remarks
7
+ * Demo apps shipped from the playground are explicitly time-boxed; the host
8
+ * refuses to mount builds older than this window. App owners must rebuild
9
+ * and redeploy at least this often, even if nothing else changed.
10
+ */
11
+ export declare const BUILD_FRESHNESS_WINDOW_MS: number;
12
+ /**
13
+ * Why a secured-remote app was rejected by {@link validateAppSecurity}.
14
+ */
15
+ export type AppSecurityFailure = {
16
+ kind: "organization-not-allowed";
17
+ } | {
18
+ kind: "build-expired";
19
+ ageMs: number;
20
+ } | {
21
+ kind: "metadata-missing";
22
+ };
23
+ /**
24
+ * Returns true when a remote URL points at a hostname that requires
25
+ * build-time-baked security metadata on the loaded app.
26
+ */
27
+ export declare function isSecuredRemoteUrl(url: string | undefined): boolean;
28
+ /**
29
+ * Validates the build-time-baked security metadata of a loaded pluggable app
30
+ * against the current platform context.
31
+ *
32
+ * @remarks
33
+ * Returns `undefined` when the app is not subject to these checks (i.e. it
34
+ * was not loaded from a secured remote hostname). Otherwise returns a
35
+ * structured failure describing the reason; the caller is responsible for
36
+ * surfacing it via the renderer's error UI.
37
+ *
38
+ * The check fails closed: a secured-remote app missing either
39
+ * `allowedOrganizations` or `buildTimestamp` — or carrying a non-finite or
40
+ * future-dated `buildTimestamp` (which would otherwise bypass the
41
+ * freshness window via a negative age) — is rejected with
42
+ * `metadata-missing`. An empty allowlist is treated like any other
43
+ * allowlist — it simply matches no organization.
44
+ */
45
+ export declare function validateAppSecurity(app: PluggableApplicationRegistryItem, loadedApp: IPluggableApp, ctx: IPlatformContext, now?: number): AppSecurityFailure | undefined;
46
+ /**
47
+ * Returns the timestamp until which a secured-remote ("demo bucket") app stays
48
+ * within its build freshness window, or `undefined` when the app is not a
49
+ * secured-remote app carrying a usable build timestamp.
50
+ *
51
+ * @remarks
52
+ * Intended to be called only for apps that have already passed
53
+ * {@link validateAppSecurity}. The host surfaces the returned date in a small
54
+ * "valid till" badge so demo users can see when the build will expire.
55
+ */
56
+ export declare function getSecuredRemoteAppValidUntil(app: PluggableApplicationRegistryItem, loadedApp: IPluggableApp): number | undefined;
57
+ //# sourceMappingURL=appSecurityValidation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"appSecurityValidation.d.ts","sourceRoot":"","sources":["../../src/loader/appSecurityValidation.ts"],"names":[],"mappings":"AAEA,OAAO,EACH,KAAK,gCAAgC,EAExC,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,KAAK,aAAa,EAAE,KAAK,gBAAgB,EAAE,MAAM,2CAA2C,CAAC;AAgBtG;;;;;;;GAOG;AACH,eAAO,MAAM,yBAAyB,QAA2B,CAAC;AAElE;;GAEG;AACH,MAAM,MAAM,kBAAkB,GACxB;IAAE,IAAI,EAAE,0BAA0B,CAAA;CAAE,GACpC;IAAE,IAAI,EAAE,eAAe,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GACxC;IAAE,IAAI,EAAE,kBAAkB,CAAA;CAAE,CAAC;AAEnC;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAUnE;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,mBAAmB,CAC/B,GAAG,EAAE,gCAAgC,EACrC,SAAS,EAAE,aAAa,EACxB,GAAG,EAAE,gBAAgB,EACrB,GAAG,GAAE,MAAmB,GACzB,kBAAkB,GAAG,SAAS,CA4BhC;AAED;;;;;;;;;GASG;AACH,wBAAgB,6BAA6B,CACzC,GAAG,EAAE,gCAAgC,EACrC,SAAS,EAAE,aAAa,GACzB,MAAM,GAAG,SAAS,CAWpB"}
@@ -0,0 +1,102 @@
1
+ // (C) 2026 GoodData Corporation
2
+ import { isRemotePluggableApplicationRegistryItem, } from "@gooddata/sdk-model";
3
+ /**
4
+ * Hostnames that trigger build-time-baked security checks on loaded apps.
5
+ *
6
+ * @remarks
7
+ * These hostnames host artifacts written by external pipelines (e.g. the
8
+ * gdc-ui-pluggable-applications playground). The build artifacts are expected
9
+ * to embed `allowedOrganizations` and `buildTimestamp` on the exported
10
+ * pluggable app; the host enforces both at load time. Apps loaded from any
11
+ * other origin (same-hostname, local bundle) are not subject to these checks
12
+ * — their integrity is already constrained by the hostname allowlist in
13
+ * `remoteUrlSecurity.ts`.
14
+ */
15
+ const SECURED_REMOTE_HOSTNAMES = new Set(["demo-dashboard-plugins.gooddata.com"]);
16
+ /**
17
+ * Maximum age of a secured-remote build, in milliseconds.
18
+ *
19
+ * @remarks
20
+ * Demo apps shipped from the playground are explicitly time-boxed; the host
21
+ * refuses to mount builds older than this window. App owners must rebuild
22
+ * and redeploy at least this often, even if nothing else changed.
23
+ */
24
+ export const BUILD_FRESHNESS_WINDOW_MS = 30 * 24 * 60 * 60 * 1000;
25
+ /**
26
+ * Returns true when a remote URL points at a hostname that requires
27
+ * build-time-baked security metadata on the loaded app.
28
+ */
29
+ export function isSecuredRemoteUrl(url) {
30
+ if (!url) {
31
+ return false;
32
+ }
33
+ try {
34
+ const { hostname } = new URL(url, window.location.origin);
35
+ return SECURED_REMOTE_HOSTNAMES.has(hostname);
36
+ }
37
+ catch {
38
+ return false;
39
+ }
40
+ }
41
+ /**
42
+ * Validates the build-time-baked security metadata of a loaded pluggable app
43
+ * against the current platform context.
44
+ *
45
+ * @remarks
46
+ * Returns `undefined` when the app is not subject to these checks (i.e. it
47
+ * was not loaded from a secured remote hostname). Otherwise returns a
48
+ * structured failure describing the reason; the caller is responsible for
49
+ * surfacing it via the renderer's error UI.
50
+ *
51
+ * The check fails closed: a secured-remote app missing either
52
+ * `allowedOrganizations` or `buildTimestamp` — or carrying a non-finite or
53
+ * future-dated `buildTimestamp` (which would otherwise bypass the
54
+ * freshness window via a negative age) — is rejected with
55
+ * `metadata-missing`. An empty allowlist is treated like any other
56
+ * allowlist — it simply matches no organization.
57
+ */
58
+ export function validateAppSecurity(app, loadedApp, ctx, now = Date.now()) {
59
+ if (!isRemotePluggableApplicationRegistryItem(app)) {
60
+ return undefined;
61
+ }
62
+ if (!isSecuredRemoteUrl(app.remote.url)) {
63
+ return undefined;
64
+ }
65
+ if (!Array.isArray(loadedApp.allowedOrganizations) ||
66
+ typeof loadedApp.buildTimestamp !== "number" ||
67
+ !Number.isFinite(loadedApp.buildTimestamp) ||
68
+ loadedApp.buildTimestamp > now) {
69
+ return { kind: "metadata-missing" };
70
+ }
71
+ const orgId = ctx.organization?.id;
72
+ if (!orgId || !loadedApp.allowedOrganizations.includes(orgId)) {
73
+ return { kind: "organization-not-allowed" };
74
+ }
75
+ const ageMs = now - loadedApp.buildTimestamp;
76
+ if (ageMs > BUILD_FRESHNESS_WINDOW_MS) {
77
+ return { kind: "build-expired", ageMs };
78
+ }
79
+ return undefined;
80
+ }
81
+ /**
82
+ * Returns the timestamp until which a secured-remote ("demo bucket") app stays
83
+ * within its build freshness window, or `undefined` when the app is not a
84
+ * secured-remote app carrying a usable build timestamp.
85
+ *
86
+ * @remarks
87
+ * Intended to be called only for apps that have already passed
88
+ * {@link validateAppSecurity}. The host surfaces the returned date in a small
89
+ * "valid till" badge so demo users can see when the build will expire.
90
+ */
91
+ export function getSecuredRemoteAppValidUntil(app, loadedApp) {
92
+ if (!isRemotePluggableApplicationRegistryItem(app)) {
93
+ return undefined;
94
+ }
95
+ if (!isSecuredRemoteUrl(app.remote.url)) {
96
+ return undefined;
97
+ }
98
+ if (typeof loadedApp.buildTimestamp !== "number" || !Number.isFinite(loadedApp.buildTimestamp)) {
99
+ return undefined;
100
+ }
101
+ return loadedApp.buildTimestamp + BUILD_FRESHNESS_WINDOW_MS;
102
+ }
@@ -9,3 +9,4 @@ export declare function getLastVisitedApp(scope: ApplicationScope): string | und
9
9
  * Silently swallows errors (e.g. storage full, private browsing).
10
10
  */
11
11
  export declare function setLastVisitedApp(scope: ApplicationScope, appId: string): void;
12
+ //# sourceMappingURL=lastVisitedApp.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lastVisitedApp.d.ts","sourceRoot":"","sources":["../../src/loader/lastVisitedApp.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAuB5D;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,gBAAgB,GAAG,MAAM,GAAG,SAAS,CAM7E;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,gBAAgB,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAQ9E"}
@@ -14,3 +14,4 @@ export type LocalPluggableApplicationLoader = () => Promise<{
14
14
  */
15
15
  export declare function registerLocalApplicationLoaders(loaders: Record<string, LocalPluggableApplicationLoader>): void;
16
16
  export declare function loadLocalPluggableApplication(moduleId: string): Promise<IPluggableApp>;
17
+ //# sourceMappingURL=localLoader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"localLoader.d.ts","sourceRoot":"","sources":["../../src/loader/localLoader.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,2CAA2C,CAAC;AAE/E;;GAEG;AACH,MAAM,MAAM,+BAA+B,GAAG,MAAM,OAAO,CAAC;IAGxD,OAAO,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC;IAClC,YAAY,CAAC,EAAE,aAAa,CAAC;CAChC,CAAC,CAAC;AAaH;;;;;GAKG;AACH,wBAAgB,+BAA+B,CAC3C,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,+BAA+B,CAAC,GACzD,IAAI,CAGN;AAcD,wBAAgB,6BAA6B,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CAqBtF"}
@@ -11,3 +11,4 @@ export declare function registerAppLifecycleCallbacks(callbacks: IAppLifecycleCa
11
11
  export declare function getAppLifecycleCallbacks(): IAppLifecycleCallbacks | undefined;
12
12
  export declare function preloadPluggableApplication(app: PluggableApplicationRegistryItem): void;
13
13
  export declare function loadPluggableApplication(app: PluggableApplicationRegistryItem): Promise<IPluggableApp>;
14
+ //# sourceMappingURL=pluggableApplicationsLoader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pluggableApplicationsLoader.d.ts","sourceRoot":"","sources":["../../src/loader/pluggableApplicationsLoader.ts"],"names":[],"mappings":"AAEA,OAAO,EACH,KAAK,gCAAgC,EAIxC,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,2CAA2C,CAAC;AAG/E,OAAO,EAAE,KAAK,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAOpE;;;;;GAKG;AACH,wBAAgB,6BAA6B,CAAC,SAAS,EAAE,sBAAsB,GAAG,IAAI,CAErF;AAED,wBAAgB,wBAAwB,IAAI,sBAAsB,GAAG,SAAS,CAE7E;AAED,wBAAgB,2BAA2B,CAAC,GAAG,EAAE,gCAAgC,GAAG,IAAI,CAwBvF;AAED,wBAAsB,wBAAwB,CAC1C,GAAG,EAAE,gCAAgC,GACtC,OAAO,CAAC,aAAa,CAAC,CAgBxB"}
@@ -28,3 +28,4 @@ export interface IResolveRedirectTargetOptions {
28
28
  * @throws {Error} Unexpected failure (show generic error screen)
29
29
  */
30
30
  export declare function resolveRedirectTarget({ apps, ctx, pathname, fetchFirstWorkspaceId }: IResolveRedirectTargetOptions): Promise<string | null>;
31
+ //# sourceMappingURL=redirectLogic.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"redirectLogic.d.ts","sourceRoot":"","sources":["../../src/loader/redirectLogic.ts"],"names":[],"mappings":"AAEA,OAAO,EAAyB,KAAK,gCAAgC,EAAE,MAAM,qBAAqB,CAAC;AACnG,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,2CAA2C,CAAC;AAOlF;;GAEG;AACH,qBAAa,gBAAiB,SAAQ,KAAK;IACvC,YAAY,OAAO,EAAE,MAAM,EAG1B;CACJ;AAED,MAAM,WAAW,6BAA6B;IAC1C;;;OAGG;IACH,IAAI,EAAE,gCAAgC,EAAE,CAAC;IACzC,GAAG,EAAE,gBAAgB,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,2DAA2D;IAC3D,qBAAqB,EAAE,MAAM,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;CAC5D;AAqFD;;;;;;;;;GASG;AACH,wBAAsB,qBAAqB,CAAC,EACxC,IAAI,EACJ,GAAG,EACH,QAAQ,EACR,qBAAqB,EACxB,EAAE,6BAA6B,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAoExD"}
@@ -3,3 +3,4 @@ import { type IPluggableApp, type IHostUiModule } from "@gooddata/sdk-pluggable-
3
3
  export declare function loadRemotePluggableApplication(remote: IRemotePluggableApplicationModule): Promise<IPluggableApp>;
4
4
  export declare function loadRemoteHostUiModule(remote: IRemotePluggableApplicationModule): Promise<IHostUiModule>;
5
5
  export declare function preloadRemotePluggableApplication(remote: IRemotePluggableApplicationModule): Promise<IPluggableApp>;
6
+ //# sourceMappingURL=remoteLoader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"remoteLoader.d.ts","sourceRoot":"","sources":["../../src/loader/remoteLoader.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,iCAAiC,EAAE,MAAM,qBAAqB,CAAC;AAC7E,OAAO,EAAE,KAAK,aAAa,EAAE,KAAK,aAAa,EAAE,MAAM,2CAA2C,CAAC;AA4GnG,wBAAgB,8BAA8B,CAC1C,MAAM,EAAE,iCAAiC,GAC1C,OAAO,CAAC,aAAa,CAAC,CAiBxB;AA0BD,wBAAsB,sBAAsB,CACxC,MAAM,EAAE,iCAAiC,GAC1C,OAAO,CAAC,aAAa,CAAC,CAGxB;AAED,wBAAgB,iCAAiC,CAC7C,MAAM,EAAE,iCAAiC,GAC1C,OAAO,CAAC,aAAa,CAAC,CA8BxB"}
@@ -1 +1,2 @@
1
1
  export declare function isAllowedRemoteHostname(url: string): boolean;
2
+ //# sourceMappingURL=remoteUrlSecurity.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"remoteUrlSecurity.d.ts","sourceRoot":"","sources":["../../src/loader/remoteUrlSecurity.ts"],"names":[],"mappings":"AAmBA,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAO5D"}
@@ -20,3 +20,4 @@ export declare function substituteExternalUrlPlaceholders(url: string, ctx: IPla
20
20
  export declare function getApplicationHref(app: PluggableApplicationRegistryItem, ctx: IPlatformContext, pathname?: string): string;
21
21
  export declare function isInternalAppRouteActive(app: PluggableApplicationRegistryItem, ctx: IPlatformContext, pathname: string): boolean;
22
22
  export declare function getActiveInternalApplication(apps: PluggableApplicationRegistryItem[], ctx: IPlatformContext, pathname: string): PluggableApplicationRegistryItem | undefined;
23
+ //# sourceMappingURL=routing.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"routing.d.ts","sourceRoot":"","sources":["../../src/loader/routing.ts"],"names":[],"mappings":"AAEA,OAAO,EACH,KAAK,gBAAgB,EACrB,KAAK,gCAAgC,EAIxC,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,2CAA2C,CAAC;AAQlF;;;GAGG;AACH,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,MAAM,GAAG,gBAAgB,GAAG,SAAS,CAYtF;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAEvF;AA4CD;;;;;GAKG;AACH,wBAAgB,iCAAiC,CAC7C,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,gBAAgB,EACrB,QAAQ,CAAC,EAAE,MAAM,GAClB,MAAM,CAMR;AAED,wBAAgB,kBAAkB,CAC9B,GAAG,EAAE,gCAAgC,EACrC,GAAG,EAAE,gBAAgB,EACrB,QAAQ,CAAC,EAAE,MAAM,GAClB,MAAM,CAWR;AAED,wBAAgB,wBAAwB,CACpC,GAAG,EAAE,gCAAgC,EACrC,GAAG,EAAE,gBAAgB,EACrB,QAAQ,EAAE,MAAM,GACjB,OAAO,CAQT;AAED,wBAAgB,4BAA4B,CACxC,IAAI,EAAE,gCAAgC,EAAE,EACxC,GAAG,EAAE,gBAAgB,EACrB,QAAQ,EAAE,MAAM,GACjB,gCAAgC,GAAG,SAAS,CAK9C"}
@@ -42,3 +42,4 @@ export declare function getAuthCredentials(): IAuthCredentials;
42
42
  export declare function setNotAuthenticatedHandler(handler: NotAuthenticatedHandler): void;
43
43
  export declare function setApiToken(token: string): void;
44
44
  export declare function setJwt(jwt: string, secondsBeforeTokenExpirationToCallReminder?: number): void;
45
+ //# sourceMappingURL=backend.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"backend.d.ts","sourceRoot":"","sources":["../../src/platformContext/backend.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,kBAAkB,EAAE,KAAK,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AASlG,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,2CAA2C,CAAC;AAIlF,MAAM,WAAW,qBAAqB;IAClC;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;;OAKG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,IAAI,CAAC,EAAE,gBAAgB,CAAC;CAC3B;AAED,MAAM,WAAW,eAAe;IAC5B,UAAU,EAAE,MAAM,kBAAkB,CAAC;IACrC,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;IAC3C,0BAA0B,EAAE,CAAC,OAAO,EAAE,uBAAuB,KAAK,IAAI,CAAC;IACvE,WAAW,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC,MAAM,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,0CAA0C,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;CACtF;AAiBD,wBAAgB,oBAAoB,CAAC,OAAO,GAAE,qBAA0B,GAAG,eAAe,CAiGzF;AAYD;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAExD;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,CAAC,EAAE,gBAAgB,GAAG,IAAI,CAEjE;AAED;;GAEG;AACH,wBAAgB,UAAU,IAAI,kBAAkB,CAE/C;AAED,wBAAgB,kBAAkB,IAAI,gBAAgB,CAErD;AAED,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,uBAAuB,GAAG,IAAI,CAEjF;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAE/C;AAED,wBAAgB,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,0CAA0C,CAAC,EAAE,MAAM,GAAG,IAAI,CAE7F"}
@@ -13,3 +13,4 @@ export interface IBootstrapResult {
13
13
  }
14
14
  export declare const PLATFORM_CONTEXT_VERSION: IPlatformContext["version"];
15
15
  export declare function bootstrapApplication(backend: IAnalyticalBackend): Promise<IBootstrapResult>;
16
+ //# sourceMappingURL=bootstrap.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bootstrap.d.ts","sourceRoot":"","sources":["../../src/platformContext/bootstrap.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,EAAE,KAAK,sBAAsB,EAAE,KAAK,MAAM,EAAE,KAAK,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACpG,OAAO,EACH,KAAK,aAAa,EAClB,KAAK,wBAAwB,EAC7B,KAAK,gBAAgB,EACrB,WAAW,EACd,MAAM,2CAA2C,CAAC;AAsBnD,MAAM,WAAW,gBAAgB;IAC7B,IAAI,EAAE,gBAAgB,CAAC,MAAM,CAAC,CAAC;IAC/B,YAAY,EAAE,gBAAgB,CAAC,cAAc,CAAC,CAAC;IAC/C,YAAY,EAAE,aAAa,GAAG,SAAS,CAAC;IACxC,uBAAuB,EAAE,wBAAwB,CAAC;IAClD,YAAY,EAAE,sBAAsB,EAAE,CAAC;IACvC,aAAa,EAAE,cAAc,CAAC;IAC9B,WAAW,EAAE,WAAW,CAAC;IACzB,KAAK,EAAE,MAAM,CAAC;CACjB;AAED,eAAO,MAAM,wBAAwB,EAAE,gBAAgB,CAAC,SAAS,CAAS,CAAC;AA4B3E,wBAAsB,oBAAoB,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CA6FjG"}
@@ -16,3 +16,4 @@ export interface ILoadPlatformContextOptions {
16
16
  callbacks?: ILoadPlatformContextCallbacks;
17
17
  }
18
18
  export declare function loadPlatformContext(options?: ILoadPlatformContextOptions): Promise<IBackendPlatformContext>;
19
+ //# sourceMappingURL=loadPlatformContext.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loadPlatformContext.d.ts","sourceRoot":"","sources":["../../src/platformContext/loadPlatformContext.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,2CAA2C,CAAC;AAMlF,OAAO,EAAE,KAAK,uBAAuB,EAAE,MAAM,YAAY,CAAC;AAE1D,qBAAa,4BAA6B,SAAQ,KAAK;IACnD,cAGC;CACJ;AAED;;GAEG;AACH,MAAM,WAAW,6BAA6B;IAC1C,gBAAgB,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5D,QAAQ,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,IAAI,CAAC;CAC3C;AAED,MAAM,WAAW,2BAA2B;IACxC,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,IAAI,CAAC,EAAE,gBAAgB,CAAC;IACxB,SAAS,CAAC,EAAE,6BAA6B,CAAC;CAC7C;AAQD,wBAAsB,mBAAmB,CACrC,OAAO,GAAE,2BAAgC,GAC1C,OAAO,CAAC,uBAAuB,CAAC,CA2ClC"}
@@ -1,3 +1,4 @@
1
1
  import { type IAuthenticationContext, type NotAuthenticated } from "@gooddata/sdk-backend-spi";
2
2
  /** Not authenticated handler will be called every time 401 is returned from Tiger backend. */
3
3
  export declare function createNotAuthenticatedHandler(externalProviderId?: string): (ctx: IAuthenticationContext, err: NotAuthenticated) => void;
4
+ //# sourceMappingURL=tigerNotAuthenticatedHandler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tigerNotAuthenticatedHandler.d.ts","sourceRoot":"","sources":["../../src/platformContext/tigerNotAuthenticatedHandler.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,sBAAsB,EAAE,KAAK,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAM/F,8FAA8F;AAE9F,wBAAgB,6BAA6B,CACzC,kBAAkB,CAAC,EAAE,MAAM,GAC5B,CAAC,GAAG,EAAE,sBAAsB,EAAE,GAAG,EAAE,gBAAgB,KAAK,IAAI,CAY9D"}
@@ -15,3 +15,4 @@ export type IRoutePlatformContext = Pick<IPlatformContext, RoutePlatformContextF
15
15
  export type IBackendPlatformContext = Omit<IPlatformContext, RoutePlatformContextFields>;
16
16
  export type IPlatformContextLoadResult<TContext> = IPlatformContextLoadingResult | IPlatformContextReadyResult<TContext> | IPlatformContextErrorResult;
17
17
  export {};
18
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/platformContext/types.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,2CAA2C,CAAC;AAElF,MAAM,WAAW,6BAA6B;IAC1C,KAAK,EAAE,SAAS,CAAC;CACpB;AAED,MAAM,WAAW,2BAA2B,CAAC,QAAQ;IACjD,KAAK,EAAE,OAAO,CAAC;IACf,GAAG,EAAE,QAAQ,CAAC;CACjB;AAED,MAAM,WAAW,2BAA2B;IACxC,KAAK,EAAE,OAAO,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;CACjB;AAED,KAAK,0BAA0B,GACzB,oBAAoB,GACpB,yBAAyB,GACzB,sBAAsB,GACtB,mBAAmB,GACnB,cAAc,GACd,UAAU,GACV,iBAAiB,CAAC;AAExB,MAAM,MAAM,qBAAqB,GAAG,IAAI,CAAC,gBAAgB,EAAE,0BAA0B,CAAC,CAAC;AACvF,MAAM,MAAM,uBAAuB,GAAG,IAAI,CAAC,gBAAgB,EAAE,0BAA0B,CAAC,CAAC;AAEzF,MAAM,MAAM,0BAA0B,CAAC,QAAQ,IACzC,6BAA6B,GAC7B,2BAA2B,CAAC,QAAQ,CAAC,GACrC,2BAA2B,CAAC"}
@@ -33,3 +33,4 @@ export declare const BackendPlatformContextProvider: IBackendPlatformContextProv
33
33
  * @alpha
34
34
  */
35
35
  export declare function registerPlatformContextCallbacks(callbacks: ILoadPlatformContextCallbacks): void;
36
+ //# sourceMappingURL=useLoadPlatformContext.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useLoadPlatformContext.d.ts","sourceRoot":"","sources":["../../src/platformContext/useLoadPlatformContext.ts"],"names":[],"mappings":"AAOA,OAAO,EAA2B,KAAK,gBAAgB,EAAE,MAAM,2CAA2C,CAAC;AAM3G,OAAO,EACH,KAAK,6BAA6B,EAGrC,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACH,KAAK,uBAAuB,EAC5B,KAAK,0BAA0B,EAElC,MAAM,YAAY,CAAC;AAYpB;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,IAAI,0BAA0B,CAAC,gBAAgB,CAAC,CA0ErF;AAED;;;;GAIG;AACH,MAAM,WAAW,+BAA+B;IAC5C,YAAY,CAAC,SAAS,EAAE,6BAA6B,GAAG,IAAI,CAAC;IAC7D,SAAS,EAAE,MAAM,QAAQ,CAAC,0BAA0B,CAAC,uBAAuB,CAAC,CAAC,CAAC;IAC/E,SAAS,EAAE,CAAC,QAAQ,EAAE,MAAM,IAAI,KAAK,MAAM,IAAI,CAAC;IAChD,IAAI,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC7B;AAmED;;GAEG;AACH,eAAO,MAAM,8BAA8B,EAAE,+BACA,CAAC;AAE9C;;;;;;GAMG;AACH,wBAAgB,gCAAgC,CAAC,SAAS,EAAE,6BAA6B,GAAG,IAAI,CAE/F"}
@@ -15,3 +15,4 @@ type WorkspaceColorPaletteState = {
15
15
  };
16
16
  export declare function useWorkspaceColorPalette(backend: IAnalyticalBackend | undefined, workspaceId: string | undefined): WorkspaceColorPaletteState;
17
17
  export {};
18
+ //# sourceMappingURL=useWorkspaceColorPalette.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useWorkspaceColorPalette.d.ts","sourceRoot":"","sources":["../../src/platformContext/useWorkspaceColorPalette.ts"],"names":[],"mappings":"AAIA,OAAO,EAA2B,KAAK,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC7F,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEzD,KAAK,0BAA0B,GACzB;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,GACjB;IAAE,KAAK,EAAE,SAAS,CAAA;CAAE,GACpB;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,YAAY,EAAE,aAAa,GAAG,SAAS,CAAA;CAAE,GAC3D;IAAE,KAAK,EAAE,WAAW,CAAA;CAAE,GACtB;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAExC,wBAAgB,wBAAwB,CACpC,OAAO,EAAE,kBAAkB,GAAG,SAAS,EACvC,WAAW,EAAE,MAAM,GAAG,SAAS,GAChC,0BAA0B,CAsC5B"}
@@ -24,3 +24,4 @@ type WorkspacePermissionsState = {
24
24
  */
25
25
  export declare function useWorkspacePermissions(backend: IAnalyticalBackend | undefined, workspaceId: string | undefined): WorkspacePermissionsState;
26
26
  export {};
27
+ //# sourceMappingURL=useWorkspacePermissions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useWorkspacePermissions.d.ts","sourceRoot":"","sources":["../../src/platformContext/useWorkspacePermissions.ts"],"names":[],"mappings":"AAIA,OAAO,EAA2B,KAAK,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC7F,OAAO,EAAE,KAAK,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAEjE,KAAK,yBAAyB,GACxB;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,GACjB;IAAE,KAAK,EAAE,SAAS,CAAA;CAAE,GACpB;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,WAAW,EAAE,qBAAqB,CAAA;CAAE,GACtD;IAAE,KAAK,EAAE,WAAW,CAAA;CAAE,GACtB;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAExC;;;;;;;;GAQG;AACH,wBAAgB,uBAAuB,CACnC,OAAO,EAAE,kBAAkB,GAAG,SAAS,EACvC,WAAW,EAAE,MAAM,GAAG,SAAS,GAChC,yBAAyB,CA2C3B"}
@@ -23,3 +23,4 @@ type WorkspaceSettingsState = {
23
23
  */
24
24
  export declare function useWorkspaceSettings(backend: IAnalyticalBackend | undefined, workspaceId: string | undefined): WorkspaceSettingsState;
25
25
  export {};
26
+ //# sourceMappingURL=useWorkspaceSettings.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useWorkspaceSettings.d.ts","sourceRoot":"","sources":["../../src/platformContext/useWorkspaceSettings.ts"],"names":[],"mappings":"AAIA,OAAO,EAEH,KAAK,kBAAkB,EACvB,KAAK,sBAAsB,EAC9B,MAAM,2BAA2B,CAAC;AAEnC,KAAK,sBAAsB,GACrB;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,GACjB;IAAE,KAAK,EAAE,SAAS,CAAA;CAAE,GACpB;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,QAAQ,EAAE,sBAAsB,CAAA;CAAE,GACpD;IAAE,KAAK,EAAE,WAAW,CAAA;CAAE,GACtB;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAExC;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAChC,OAAO,EAAE,kBAAkB,GAAG,SAAS,EACvC,WAAW,EAAE,MAAM,GAAG,SAAS,GAChC,sBAAsB,CAqCxB"}
@@ -15,3 +15,4 @@ type WorkspaceThemeState = {
15
15
  };
16
16
  export declare function useWorkspaceTheme(backend: IAnalyticalBackend | undefined, workspaceId: string | undefined): WorkspaceThemeState;
17
17
  export {};
18
+ //# sourceMappingURL=useWorkspaceTheme.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useWorkspaceTheme.d.ts","sourceRoot":"","sources":["../../src/platformContext/useWorkspaceTheme.ts"],"names":[],"mappings":"AAIA,OAAO,EAA2B,KAAK,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC7F,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAElD,KAAK,mBAAmB,GAClB;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,GACjB;IAAE,KAAK,EAAE,SAAS,CAAA;CAAE,GACpB;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,GAC7C;IAAE,KAAK,EAAE,WAAW,CAAA;CAAE,GACtB;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAExC,wBAAgB,iBAAiB,CAC7B,OAAO,EAAE,kBAAkB,GAAG,SAAS,EACvC,WAAW,EAAE,MAAM,GAAG,SAAS,GAChC,mBAAmB,CAqCrB"}
@@ -24,3 +24,4 @@ export declare function shouldWaitForInjectedApiToken(): boolean;
24
24
  * Resolves once a valid token has been applied. Rejects if `signal` aborts.
25
25
  */
26
26
  export declare function waitForInjectedApiToken(signal?: AbortSignal): Promise<void>;
27
+ //# sourceMappingURL=waitForInjectedApiToken.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"waitForInjectedApiToken.d.ts","sourceRoot":"","sources":["../../src/platformContext/waitForInjectedApiToken.ts"],"names":[],"mappings":"AA6BA;;;;;;;GAOG;AACH,wBAAgB,6BAA6B,IAAI,OAAO,CAQvD;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,uBAAuB,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CA6DjF"}
@@ -53,3 +53,4 @@ export declare function resolveApplications({ localApps, remoteRegistry, ctx, sc
53
53
  */
54
54
  export declare function usePluggableApplications(ctx: IPlatformContext): PluggableApplicationRegistryItem[];
55
55
  export {};
56
+ //# sourceMappingURL=pluggableApplicationsRegistry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pluggableApplicationsRegistry.d.ts","sourceRoot":"","sources":["../../src/registry/pluggableApplicationsRegistry.tsx"],"names":[],"mappings":"AAIA,OAAO,EACH,KAAK,gBAAgB,EAKrB,KAAK,kCAAkC,EACvC,KAAK,gCAAgC,EACrC,KAAK,mCAAmC,EAE3C,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAEH,KAAK,gBAAgB,EACxB,MAAM,2CAA2C,CAAC;AAMnD;;;;;GAKG;AACH,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE,kCAAkC,GAAG,IAAI,CAE5F;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,gBAAgB,GAAG,mCAAmC,GAAG,SAAS,CAaxG;AAyMD,UAAU,2BAA2B;IACjC;;OAEG;IACH,SAAS,EAAE,gCAAgC,EAAE,CAAC;IAC9C;;OAEG;IACH,cAAc,EAAE,mCAAmC,GAAG,SAAS,CAAC;IAChE;;OAEG;IACH,GAAG,EAAE,gBAAgB,CAAC;IACtB;;OAEG;IACH,KAAK,EAAE,gBAAgB,GAAG,SAAS,CAAC;CACvC;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,mBAAmB,CAAC,EAChC,SAAS,EACT,cAAc,EACd,GAAG,EACH,KAAK,EACR,EAAE,2BAA2B,GAAG,gCAAgC,EAAE,CAelE;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,gBAAgB,GAAG,gCAAgC,EAAE,CAWlG"}
@@ -30,5 +30,8 @@
30
30
  "messages.genAi.visualisation.link.copied": "Der Visualisierungslink wurde in Ihre Zwischenablage kopiert.",
31
31
  "messages.showMore": "Mehr anzeigen",
32
32
  "messages.showLess": "Weniger anzeigen",
33
- "gen-ai.ask-assistant.search": "Erstellen Sie eine neue Visualisierung basierend auf: {question}"
33
+ "gen-ai.ask-assistant.search": "Erstellen Sie eine neue Visualisierung basierend auf: {question}",
34
+ "gs.host.error.appNotAllowedForOrganization": "This application is not available for your organization.",
35
+ "gs.host.error.appBuildExpired": "This application is out of date and must be rebuilt by its author before it can run again.",
36
+ "gs.host.error.appSecurityMetadataMissing": "This application is missing required security metadata and cannot be loaded."
34
37
  }
@@ -30,5 +30,8 @@
30
30
  "messages.genAi.visualisation.link.copied": "The visualisation link has been copied to your clipboard.",
31
31
  "messages.showMore": "Show more",
32
32
  "messages.showLess": "Show less",
33
- "gen-ai.ask-assistant.search": "Create new visualisation based on: {question}"
33
+ "gen-ai.ask-assistant.search": "Create new visualisation based on: {question}",
34
+ "gs.host.error.appNotAllowedForOrganization": "This application is not available for your organization.",
35
+ "gs.host.error.appBuildExpired": "This application is out of date and must be rebuilt by its author before it can run again.",
36
+ "gs.host.error.appSecurityMetadataMissing": "This application is missing required security metadata and cannot be loaded."
34
37
  }
@@ -30,5 +30,8 @@
30
30
  "messages.genAi.visualisation.link.copied": "The visualisation link has been copied to your clipboard.",
31
31
  "messages.showMore": "Show more",
32
32
  "messages.showLess": "Show less",
33
- "gen-ai.ask-assistant.search": "Build new visualisation based on: {question}"
33
+ "gen-ai.ask-assistant.search": "Build new visualisation based on: {question}",
34
+ "gs.host.error.appNotAllowedForOrganization": "This application is not available for your organization.",
35
+ "gs.host.error.appBuildExpired": "This application is out of date and must be rebuilt by its author before it can run again.",
36
+ "gs.host.error.appSecurityMetadataMissing": "This application is missing required security metadata and cannot be loaded."
34
37
  }