@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.
- package/esm/components/FullScreenLoader.d.ts +1 -0
- package/esm/components/FullScreenLoader.d.ts.map +1 -0
- package/esm/components/HostUiContainer.d.ts +1 -0
- package/esm/components/HostUiContainer.d.ts.map +1 -0
- package/esm/components/HostUiContainer.js +16 -2
- package/esm/components/Root.d.ts +1 -0
- package/esm/components/Root.d.ts.map +1 -0
- package/esm/components/lib/translations.d.ts +1 -0
- package/esm/components/lib/translations.d.ts.map +1 -0
- package/esm/components/useRedirectNavigation.d.ts +1 -0
- package/esm/components/useRedirectNavigation.d.ts.map +1 -0
- package/esm/components/useRedirectTarget.d.ts +1 -0
- package/esm/components/useRedirectTarget.d.ts.map +1 -0
- package/esm/debug.d.ts +1 -0
- package/esm/debug.d.ts.map +1 -0
- package/esm/index.d.ts +1 -0
- package/esm/index.d.ts.map +1 -0
- package/esm/lib/chunkReloadGuard.d.ts +1 -0
- package/esm/lib/chunkReloadGuard.d.ts.map +1 -0
- package/esm/lib/hostNotifications.d.ts +1 -0
- package/esm/lib/hostNotifications.d.ts.map +1 -0
- package/esm/lib/isProduction.d.ts +1 -0
- package/esm/lib/isProduction.d.ts.map +1 -0
- package/esm/loader/appSecurityValidation.d.ts +57 -0
- package/esm/loader/appSecurityValidation.d.ts.map +1 -0
- package/esm/loader/appSecurityValidation.js +102 -0
- package/esm/loader/lastVisitedApp.d.ts +1 -0
- package/esm/loader/lastVisitedApp.d.ts.map +1 -0
- package/esm/loader/localLoader.d.ts +1 -0
- package/esm/loader/localLoader.d.ts.map +1 -0
- package/esm/loader/pluggableApplicationsLoader.d.ts +1 -0
- package/esm/loader/pluggableApplicationsLoader.d.ts.map +1 -0
- package/esm/loader/redirectLogic.d.ts +1 -0
- package/esm/loader/redirectLogic.d.ts.map +1 -0
- package/esm/loader/remoteLoader.d.ts +1 -0
- package/esm/loader/remoteLoader.d.ts.map +1 -0
- package/esm/loader/remoteUrlSecurity.d.ts +1 -0
- package/esm/loader/remoteUrlSecurity.d.ts.map +1 -0
- package/esm/loader/routing.d.ts +1 -0
- package/esm/loader/routing.d.ts.map +1 -0
- package/esm/platformContext/backend.d.ts +1 -0
- package/esm/platformContext/backend.d.ts.map +1 -0
- package/esm/platformContext/bootstrap.d.ts +1 -0
- package/esm/platformContext/bootstrap.d.ts.map +1 -0
- package/esm/platformContext/loadPlatformContext.d.ts +1 -0
- package/esm/platformContext/loadPlatformContext.d.ts.map +1 -0
- package/esm/platformContext/tigerNotAuthenticatedHandler.d.ts +1 -0
- package/esm/platformContext/tigerNotAuthenticatedHandler.d.ts.map +1 -0
- package/esm/platformContext/types.d.ts +1 -0
- package/esm/platformContext/types.d.ts.map +1 -0
- package/esm/platformContext/useLoadPlatformContext.d.ts +1 -0
- package/esm/platformContext/useLoadPlatformContext.d.ts.map +1 -0
- package/esm/platformContext/useWorkspaceColorPalette.d.ts +1 -0
- package/esm/platformContext/useWorkspaceColorPalette.d.ts.map +1 -0
- package/esm/platformContext/useWorkspacePermissions.d.ts +1 -0
- package/esm/platformContext/useWorkspacePermissions.d.ts.map +1 -0
- package/esm/platformContext/useWorkspaceSettings.d.ts +1 -0
- package/esm/platformContext/useWorkspaceSettings.d.ts.map +1 -0
- package/esm/platformContext/useWorkspaceTheme.d.ts +1 -0
- package/esm/platformContext/useWorkspaceTheme.d.ts.map +1 -0
- package/esm/platformContext/waitForInjectedApiToken.d.ts +1 -0
- package/esm/platformContext/waitForInjectedApiToken.d.ts.map +1 -0
- package/esm/registry/pluggableApplicationsRegistry.d.ts +1 -0
- package/esm/registry/pluggableApplicationsRegistry.d.ts.map +1 -0
- package/esm/translations/de-DE.json +4 -1
- package/esm/translations/en-AU.json +4 -1
- package/esm/translations/en-GB.json +4 -1
- package/esm/translations/en-US.json +52 -0
- package/esm/translations/es-419.json +4 -1
- package/esm/translations/es-ES.json +4 -1
- package/esm/translations/fi-FI.json +4 -1
- package/esm/translations/fr-CA.json +4 -1
- package/esm/translations/fr-FR.json +4 -1
- package/esm/translations/id-ID.json +4 -1
- package/esm/translations/it-IT.json +4 -1
- package/esm/translations/ja-JP.json +4 -1
- package/esm/translations/ko-KR.json +4 -1
- package/esm/translations/nl-NL.json +4 -1
- package/esm/translations/pl-PL.json +4 -1
- package/esm/translations/pt-BR.json +4 -1
- package/esm/translations/pt-PT.json +4 -1
- package/esm/translations/ru-RU.json +4 -1
- package/esm/translations/sl-SI.json +4 -1
- package/esm/translations/th-TH.json +4 -1
- package/esm/translations/tr-TR.json +4 -1
- package/esm/translations/uk-UA.json +4 -1
- package/esm/translations/vi-VN.json +4 -1
- package/esm/translations/zh-HK.json +4 -1
- package/esm/translations/zh-Hans.json +4 -1
- package/esm/translations/zh-Hant.json +4 -1
- package/esm/types/lifecycle.d.ts +1 -0
- package/esm/types/lifecycle.d.ts.map +1 -0
- package/esm/ui/DefaultHostUi.d.ts +1 -0
- package/esm/ui/DefaultHostUi.d.ts.map +1 -0
- package/esm/ui/DefaultHostUi.js +10 -3
- package/esm/ui/GenAIChat.d.ts +1 -0
- package/esm/ui/GenAIChat.d.ts.map +1 -0
- package/esm/ui/HostChrome.d.ts +7 -1
- package/esm/ui/HostChrome.d.ts.map +1 -0
- package/esm/ui/HostChrome.js +37 -14
- package/esm/ui/HostIntlProvider.d.ts +1 -0
- package/esm/ui/HostIntlProvider.d.ts.map +1 -0
- package/esm/ui/HostNotificationDispatcher.d.ts +1 -0
- package/esm/ui/HostNotificationDispatcher.d.ts.map +1 -0
- package/esm/ui/PluggableApplicationRenderer.d.ts +3 -1
- package/esm/ui/PluggableApplicationRenderer.d.ts.map +1 -0
- package/esm/ui/PluggableApplicationRenderer.js +70 -10
- package/esm/ui/PluggableApplicationRenderer.scss +31 -1
- package/esm/ui/SemanticSearch.d.ts +1 -0
- package/esm/ui/SemanticSearch.d.ts.map +1 -0
- package/esm/ui/WorkspacePicker.d.ts +1 -0
- package/esm/ui/WorkspacePicker.d.ts.map +1 -0
- package/esm/ui/appMenuItems.d.ts +2 -0
- package/esm/ui/appMenuItems.d.ts.map +1 -0
- package/esm/ui/appMenuItems.js +1 -1
- package/esm/ui/chromeHelpers.d.ts +1 -0
- package/esm/ui/chromeHelpers.d.ts.map +1 -0
- package/esm/ui/hostChromeBem.d.ts +1 -0
- package/esm/ui/hostChromeBem.d.ts.map +1 -0
- package/esm/ui/resolveHostUiModule.d.ts +1 -0
- package/esm/ui/resolveHostUiModule.d.ts.map +1 -0
- package/esm/ui/useHostChromeChat.d.ts +1 -0
- package/esm/ui/useHostChromeChat.d.ts.map +1 -0
- package/esm/ui/useHostChromePricing.d.ts +1 -0
- package/esm/ui/useHostChromePricing.d.ts.map +1 -0
- package/esm/ui/useHostChromeSearch.d.ts +1 -0
- package/esm/ui/useHostChromeSearch.d.ts.map +1 -0
- package/esm/ui/useHostChromeWorkspaceFeatures.d.ts +1 -0
- package/esm/ui/useHostChromeWorkspaceFeatures.d.ts.map +1 -0
- package/package.json +17 -17
|
@@ -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
|
}
|
package/esm/components/Root.d.ts
CHANGED
|
@@ -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"}
|
|
@@ -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
|
@@ -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"}
|
|
@@ -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"}
|
|
@@ -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"}
|
|
@@ -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"}
|
package/esm/loader/routing.d.ts
CHANGED
|
@@ -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"}
|
|
@@ -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"}
|
|
@@ -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"}
|
|
@@ -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"}
|
|
@@ -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"}
|
|
@@ -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"}
|
|
@@ -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
|
}
|