@gooddata/sdk-pluggable-application-model 11.32.0-alpha.4 → 11.32.0-alpha.5

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.
@@ -0,0 +1,18 @@
1
+ /**
2
+ * The object contains constants with IDs of default platform applications.
3
+ * These IDs are used to identify application in the platform registry.
4
+ *
5
+ * They are documented in public documentation and can be used by customers in their manifests to override
6
+ * the default application behavior (for example, to disable it, move it in the navigation menu, etc.).
7
+ *
8
+ * @alpha
9
+ */
10
+ export declare const DefaultApplicationId: {
11
+ HOME_UI: string;
12
+ DASHBOARDS: string;
13
+ ANALYTICAL_DESIGNER: string;
14
+ METRIC_EDITOR: string;
15
+ LDM_MODELER: string;
16
+ WORKSPACE_CATALOG: string;
17
+ };
18
+ //# sourceMappingURL=defaultPlatformApplications.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"defaultPlatformApplications.d.ts","sourceRoot":"","sources":["../src/defaultPlatformApplications.ts"],"names":[],"mappings":"AAEA;;;;;;;;GAQG;AACH,eAAO,MAAM,oBAAoB;;;;;;;CAOhC,CAAC"}
@@ -0,0 +1,19 @@
1
+ // (C) 2026 GoodData Corporation
2
+ /**
3
+ * The object contains constants with IDs of default platform applications.
4
+ * These IDs are used to identify application in the platform registry.
5
+ *
6
+ * They are documented in public documentation and can be used by customers in their manifests to override
7
+ * the default application behavior (for example, to disable it, move it in the navigation menu, etc.).
8
+ *
9
+ * @alpha
10
+ */
11
+ export const DefaultApplicationId = {
12
+ HOME_UI: "gdc-home-ui",
13
+ DASHBOARDS: "gdc-dashboards",
14
+ ANALYTICAL_DESIGNER: "gdc-analytical-designer",
15
+ METRIC_EDITOR: "gdc-metric-editor",
16
+ LDM_MODELER: "gdc-ldm-modeler",
17
+ WORKSPACE_CATALOG: "gdc-workspace-catalog",
18
+ };
19
+ //# sourceMappingURL=defaultPlatformApplications.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"defaultPlatformApplications.js","sourceRoot":"","sources":["../src/defaultPlatformApplications.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAEhC;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAChC,OAAO,EAAE,aAAa;IACtB,UAAU,EAAE,gBAAgB;IAC5B,mBAAmB,EAAE,yBAAyB;IAC9C,aAAa,EAAE,mBAAmB;IAClC,WAAW,EAAE,iBAAiB;IAC9B,iBAAiB,EAAE,uBAAuB;CAC7C,CAAC"}
@@ -0,0 +1,171 @@
1
+ import { type PluggableApplicationRegistryItem } from "@gooddata/sdk-model";
2
+ import { type IAppHeaderOptions } from "./mount.js";
3
+ import { type IPlatformContext } from "./platformContext.js";
4
+ /**
5
+ * Options passed by the host into a host UI module's mount function.
6
+ *
7
+ * @alpha
8
+ */
9
+ export interface IHostUiMountOptions {
10
+ /**
11
+ * DOM element into which the host UI should render itself.
12
+ */
13
+ container: HTMLElement;
14
+ /**
15
+ * Platform context snapshot provided by the host.
16
+ */
17
+ ctx: IPlatformContext;
18
+ /**
19
+ * Resolved and filtered list of pluggable applications to render in the navigation.
20
+ */
21
+ resolvedApplications: PluggableApplicationRegistryItem[];
22
+ /**
23
+ * Current pathname of the host application.
24
+ *
25
+ * @remarks
26
+ * The host UI uses this to determine which navigation item is active.
27
+ * Updated via {@link IHostUiMountHandle.updatePathname} when the URL changes.
28
+ */
29
+ pathname: string;
30
+ /**
31
+ * Callback for requesting client-side navigation (push).
32
+ *
33
+ * @remarks
34
+ * The host owns the router. When the host UI needs to navigate (e.g. menu item click),
35
+ * it calls this callback and the host performs the actual navigation. The host then pushes
36
+ * the new pathname back via {@link IHostUiMountHandle.updatePathname}.
37
+ */
38
+ navigate: (url: string) => void;
39
+ /**
40
+ * Callback for requesting client-side navigation with history replacement.
41
+ *
42
+ * @remarks
43
+ * Works like {@link IHostUiMountOptions.navigate} but replaces the current history
44
+ * entry instead of pushing a new one.
45
+ */
46
+ replace: (url: string) => void;
47
+ }
48
+ /**
49
+ * Notification dispatched when the host runtime detects that a newer build of the host
50
+ * application has been deployed while the user's tab is still open.
51
+ *
52
+ * @remarks
53
+ * Stale tabs continue to reference content-hashed chunk URLs that no longer exist on the
54
+ * server, so the user must reload to pick up the new build. The host UI module decides
55
+ * how to surface this (e.g. a toast with a reload action).
56
+ *
57
+ * @alpha
58
+ */
59
+ export interface INewDeploymentAvailableHostUiNotification {
60
+ /**
61
+ * A new build of the host application has been deployed; the user should reload to
62
+ * avoid loading stale chunks. The host UI is expected to surface this to the user
63
+ * (e.g. as a toast with a reload action).
64
+ */
65
+ type: "newDeploymentAvailable";
66
+ /**
67
+ * Commit hash of the newly deployed build, as detected by the host runtime.
68
+ */
69
+ commitHash: string;
70
+ }
71
+ /**
72
+ * Discriminated union of out-of-band notifications the host runtime can push into the
73
+ * host UI module after mount. Lets the runtime signal events that should affect the UI
74
+ * without coupling it to a specific rendering.
75
+ *
76
+ * @remarks
77
+ * Variants are discriminated by the `type` field. Implementations of
78
+ * {@link IHostUiMountHandle.notify} may safely no-op for notification types they do not
79
+ * handle, so adding a new variant is a backward-compatible change.
80
+ *
81
+ * @alpha
82
+ */
83
+ export type IHostUiNotification = INewDeploymentAvailableHostUiNotification;
84
+ /**
85
+ * Handle returned from a host UI mount for lifecycle management.
86
+ *
87
+ * @alpha
88
+ */
89
+ export interface IHostUiMountHandle {
90
+ /**
91
+ * Unmounts the host UI and releases all resources.
92
+ */
93
+ unmount(): void;
94
+ /**
95
+ * Pushes an updated platform context into the host UI.
96
+ *
97
+ * @remarks
98
+ * Called by the host whenever the context changes after initial mount.
99
+ */
100
+ updateContext?(ctx: IPlatformContext): void;
101
+ /**
102
+ * Pushes an updated list of resolved applications into the host UI.
103
+ *
104
+ * @remarks
105
+ * Called by the host whenever the application list changes after initial mount.
106
+ */
107
+ updateApplications?(apps: PluggableApplicationRegistryItem[]): void;
108
+ /**
109
+ * Pushes the current pathname into the host UI.
110
+ *
111
+ * @remarks
112
+ * Called by the host whenever the URL changes (e.g. after navigation or popstate).
113
+ * The host UI uses this to update the active state of navigation items.
114
+ */
115
+ updatePathname?(pathname: string): void;
116
+ /**
117
+ * Pushes updated header options into the host UI.
118
+ *
119
+ * @remarks
120
+ * Called by the host whenever the active pluggable application declares new header
121
+ * options via its `onHeaderChange` callback. The host UI uses this to update
122
+ * the header (e.g. help menu items) to match the active application's preferences.
123
+ * When called with `undefined`, the host UI should revert to its default header configuration.
124
+ */
125
+ updateHeader?(header: IAppHeaderOptions | undefined): void;
126
+ /**
127
+ * Returns the DOM element where the active pluggable application should be rendered.
128
+ *
129
+ * @remarks
130
+ * The host uses this element as the mount container for the currently active
131
+ * pluggable application. The host UI is responsible for creating and managing
132
+ * this element as part of its layout.
133
+ */
134
+ getAppContainer(): HTMLElement;
135
+ /**
136
+ * Receives an out-of-band notification from the host runtime.
137
+ *
138
+ * @remarks
139
+ * The host UI decides how to render the notification (toast, banner, modal, …);
140
+ * implementations may safely no-op for notification types they do not handle.
141
+ */
142
+ notify?(notification: IHostUiNotification): void;
143
+ }
144
+ /**
145
+ * Host UI mount function signature.
146
+ *
147
+ * @remarks
148
+ * A host UI module must export a `mount` function conforming to this signature.
149
+ * The function receives a container element and context data, renders the application
150
+ * host (header, navigation, layout), and returns a handle for lifecycle management.
151
+ *
152
+ * The implementation is framework-agnostic — a module can use React, vanilla DOM,
153
+ * or any other rendering approach internally.
154
+ *
155
+ * @alpha
156
+ */
157
+ export type HostUiMount = (options: IHostUiMountOptions) => IHostUiMountHandle;
158
+ /**
159
+ * Host UI module contract.
160
+ *
161
+ * @remarks
162
+ * Implementations loaded via module federation or provided locally must conform
163
+ * to this interface. The host application uses the `mount` function to render
164
+ * the application chrome and obtain the container for the active pluggable application.
165
+ *
166
+ * @alpha
167
+ */
168
+ export interface IHostUiModule {
169
+ mount: HostUiMount;
170
+ }
171
+ //# sourceMappingURL=hostUi.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hostUi.d.ts","sourceRoot":"","sources":["../src/hostUi.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,gCAAgC,EAAE,MAAM,qBAAqB,CAAC;AAE5E,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,YAAY,CAAC;AACpD,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAE7D;;;;GAIG;AACH,MAAM,WAAW,mBAAmB;IAChC;;OAEG;IACH,SAAS,EAAE,WAAW,CAAC;IAEvB;;OAEG;IACH,GAAG,EAAE,gBAAgB,CAAC;IAEtB;;OAEG;IACH,oBAAoB,EAAE,gCAAgC,EAAE,CAAC;IAEzD;;;;;;OAMG;IACH,QAAQ,EAAE,MAAM,CAAC;IAEjB;;;;;;;OAOG;IACH,QAAQ,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAEhC;;;;;;OAMG;IACH,OAAO,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;CAClC;AAED;;;;;;;;;;GAUG;AACH,MAAM,WAAW,yCAAyC;IACtD;;;;OAIG;IACH,IAAI,EAAE,wBAAwB,CAAC;IAC/B;;OAEG;IACH,UAAU,EAAE,MAAM,CAAC;CACtB;AAED;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,mBAAmB,GAAG,yCAAyC,CAAC;AAE5E;;;;GAIG;AACH,MAAM,WAAW,kBAAkB;IAC/B;;OAEG;IACH,OAAO,IAAI,IAAI,CAAC;IAEhB;;;;;OAKG;IACH,aAAa,CAAC,CAAC,GAAG,EAAE,gBAAgB,GAAG,IAAI,CAAC;IAE5C;;;;;OAKG;IACH,kBAAkB,CAAC,CAAC,IAAI,EAAE,gCAAgC,EAAE,GAAG,IAAI,CAAC;IAEpE;;;;;;OAMG;IACH,cAAc,CAAC,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IAExC;;;;;;;;OAQG;IACH,YAAY,CAAC,CAAC,MAAM,EAAE,iBAAiB,GAAG,SAAS,GAAG,IAAI,CAAC;IAE3D;;;;;;;OAOG;IACH,eAAe,IAAI,WAAW,CAAC;IAE/B;;;;;;OAMG;IACH,MAAM,CAAC,CAAC,YAAY,EAAE,mBAAmB,GAAG,IAAI,CAAC;CACpD;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,EAAE,mBAAmB,KAAK,kBAAkB,CAAC;AAE/E;;;;;;;;;GASG;AACH,MAAM,WAAW,aAAa;IAC1B,KAAK,EAAE,WAAW,CAAC;CACtB"}
@@ -1,3 +1,3 @@
1
1
  // (C) 2026 GoodData Corporation
2
2
  export {};
3
- //# sourceMappingURL=shellUi.js.map
3
+ //# sourceMappingURL=hostUi.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hostUi.js","sourceRoot":"","sources":["../src/hostUi.ts"],"names":[],"mappings":"AAAA,gCAAgC"}
package/esm/index.d.ts CHANGED
@@ -3,8 +3,9 @@
3
3
  *
4
4
  * @packageDocumentation
5
5
  */
6
+ export { DefaultApplicationId } from "./defaultPlatformApplications.js";
6
7
  export { type EmbeddingMode, type IApiTokenAuthCredentials, type IAuthCredentials, type IContextDeferredAuthCredentials, type IJwtAuthCredentials, type IOrganization, type IOrganizationPermissions, type IPlatformContext, type IPlatformContextV1, type IPluggableApplicationNavigation, PantherTier, isPlatformContextV1, } from "./platformContext.js";
7
8
  export { type ILocale } from "@gooddata/sdk-model";
8
9
  export { type IAppHeaderOptions, type IAppInstance, type KnownPluggableAppEventTypeName, type IPluggableApp, type IPluggableApplicationMountHandle, type IPluggableApplicationMountOptions, type IPluggableAppEvent, type IPluggableAppTelemetryCallbacks, type IReloadPlatformContextRequestedEvent, type ITelemetryEventOptions, isReloadPlatformContextRequestedEvent, type PluggableApplicationMount, PluggableAppEventType, type PluggableAppEventTypeName, reloadPlatformContextRequested, type TelemetryChannel, } from "./mount.js";
9
- export { type IShellUiModule, type IShellUiMountHandle, type IShellUiMountOptions, type ShellUiMount, } from "./shellUi.js";
10
+ export { type IHostUiModule, type IHostUiMountHandle, type IHostUiMountOptions, type IHostUiNotification, type INewDeploymentAvailableHostUiNotification, type HostUiMount, } from "./hostUi.js";
10
11
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA;;;;GAIG;AAEH,OAAO,EACH,KAAK,aAAa,EAClB,KAAK,wBAAwB,EAC7B,KAAK,gBAAgB,EACrB,KAAK,+BAA+B,EACpC,KAAK,mBAAmB,EACxB,KAAK,aAAa,EAClB,KAAK,wBAAwB,EAC7B,KAAK,gBAAgB,EACrB,KAAK,kBAAkB,EACvB,KAAK,+BAA+B,EACpC,WAAW,EACX,mBAAmB,GACtB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAEnD,OAAO,EACH,KAAK,iBAAiB,EACtB,KAAK,YAAY,EACjB,KAAK,8BAA8B,EACnC,KAAK,aAAa,EAClB,KAAK,gCAAgC,EACrC,KAAK,iCAAiC,EACtC,KAAK,kBAAkB,EACvB,KAAK,+BAA+B,EACpC,KAAK,oCAAoC,EACzC,KAAK,sBAAsB,EAC3B,qCAAqC,EACrC,KAAK,yBAAyB,EAC9B,qBAAqB,EACrB,KAAK,yBAAyB,EAC9B,8BAA8B,EAC9B,KAAK,gBAAgB,GACxB,MAAM,YAAY,CAAC;AAEpB,OAAO,EACH,KAAK,cAAc,EACnB,KAAK,mBAAmB,EACxB,KAAK,oBAAoB,EACzB,KAAK,YAAY,GACpB,MAAM,cAAc,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA;;;;GAIG;AAEH,OAAO,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAC;AAExE,OAAO,EACH,KAAK,aAAa,EAClB,KAAK,wBAAwB,EAC7B,KAAK,gBAAgB,EACrB,KAAK,+BAA+B,EACpC,KAAK,mBAAmB,EACxB,KAAK,aAAa,EAClB,KAAK,wBAAwB,EAC7B,KAAK,gBAAgB,EACrB,KAAK,kBAAkB,EACvB,KAAK,+BAA+B,EACpC,WAAW,EACX,mBAAmB,GACtB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAEnD,OAAO,EACH,KAAK,iBAAiB,EACtB,KAAK,YAAY,EACjB,KAAK,8BAA8B,EACnC,KAAK,aAAa,EAClB,KAAK,gCAAgC,EACrC,KAAK,iCAAiC,EACtC,KAAK,kBAAkB,EACvB,KAAK,+BAA+B,EACpC,KAAK,oCAAoC,EACzC,KAAK,sBAAsB,EAC3B,qCAAqC,EACrC,KAAK,yBAAyB,EAC9B,qBAAqB,EACrB,KAAK,yBAAyB,EAC9B,8BAA8B,EAC9B,KAAK,gBAAgB,GACxB,MAAM,YAAY,CAAC;AAEpB,OAAO,EACH,KAAK,aAAa,EAClB,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,EACxB,KAAK,mBAAmB,EACxB,KAAK,yCAAyC,EAC9C,KAAK,WAAW,GACnB,MAAM,aAAa,CAAC"}
package/esm/index.js CHANGED
@@ -5,6 +5,7 @@
5
5
  *
6
6
  * @packageDocumentation
7
7
  */
8
+ export { DefaultApplicationId } from "./defaultPlatformApplications.js";
8
9
  export { PantherTier, isPlatformContextV1, } from "./platformContext.js";
9
10
  export { isReloadPlatformContextRequestedEvent, PluggableAppEventType, reloadPlatformContextRequested, } from "./mount.js";
10
11
  //# sourceMappingURL=index.js.map
package/esm/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAEhC,oDAAoD;AAEpD;;;;GAIG;AAEH,OAAO,EAWH,WAAW,EACX,mBAAmB,GACtB,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EAWH,qCAAqC,EAErC,qBAAqB,EAErB,8BAA8B,GAEjC,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAEhC,oDAAoD;AAEpD;;;;GAIG;AAEH,OAAO,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAC;AAExE,OAAO,EAWH,WAAW,EACX,mBAAmB,GACtB,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EAWH,qCAAqC,EAErC,qBAAqB,EAErB,8BAA8B,GAEjC,MAAM,YAAY,CAAC"}
@@ -15,6 +15,24 @@ import { IWorkspacePermissions } from '@gooddata/sdk-model';
15
15
  import { ObjRef } from '@gooddata/sdk-model';
16
16
  import { PluggableApplicationRegistryItem } from '@gooddata/sdk-model';
17
17
 
18
+ /**
19
+ * The object contains constants with IDs of default platform applications.
20
+ * These IDs are used to identify application in the platform registry.
21
+ *
22
+ * They are documented in public documentation and can be used by customers in their manifests to override
23
+ * the default application behavior (for example, to disable it, move it in the navigation menu, etc.).
24
+ *
25
+ * @alpha
26
+ */
27
+ export declare const DefaultApplicationId: {
28
+ HOME_UI: string;
29
+ DASHBOARDS: string;
30
+ ANALYTICAL_DESIGNER: string;
31
+ METRIC_EDITOR: string;
32
+ LDM_MODELER: string;
33
+ WORKSPACE_CATALOG: string;
34
+ };
35
+
18
36
  /**
19
37
  * Pluggable application embedding mode.
20
38
  *
@@ -22,6 +40,21 @@ import { PluggableApplicationRegistryItem } from '@gooddata/sdk-model';
22
40
  */
23
41
  export declare type EmbeddingMode = "none" | "iframe" | "export";
24
42
 
43
+ /**
44
+ * Host UI mount function signature.
45
+ *
46
+ * @remarks
47
+ * A host UI module must export a `mount` function conforming to this signature.
48
+ * The function receives a container element and context data, renders the application
49
+ * host (header, navigation, layout), and returns a handle for lifecycle management.
50
+ *
51
+ * The implementation is framework-agnostic — a module can use React, vanilla DOM,
52
+ * or any other rendering approach internally.
53
+ *
54
+ * @alpha
55
+ */
56
+ export declare type HostUiMount = (options: IHostUiMountOptions) => IHostUiMountHandle;
57
+
25
58
  /**
26
59
  * GoodData API-token authentication.
27
60
  *
@@ -102,6 +135,140 @@ export declare interface IContextDeferredAuthCredentials {
102
135
  externalProviderId?: string;
103
136
  }
104
137
 
138
+ /**
139
+ * Host UI module contract.
140
+ *
141
+ * @remarks
142
+ * Implementations loaded via module federation or provided locally must conform
143
+ * to this interface. The host application uses the `mount` function to render
144
+ * the application chrome and obtain the container for the active pluggable application.
145
+ *
146
+ * @alpha
147
+ */
148
+ export declare interface IHostUiModule {
149
+ mount: HostUiMount;
150
+ }
151
+
152
+ /**
153
+ * Handle returned from a host UI mount for lifecycle management.
154
+ *
155
+ * @alpha
156
+ */
157
+ export declare interface IHostUiMountHandle {
158
+ /**
159
+ * Unmounts the host UI and releases all resources.
160
+ */
161
+ unmount(): void;
162
+ /**
163
+ * Pushes an updated platform context into the host UI.
164
+ *
165
+ * @remarks
166
+ * Called by the host whenever the context changes after initial mount.
167
+ */
168
+ updateContext?(ctx: IPlatformContext): void;
169
+ /**
170
+ * Pushes an updated list of resolved applications into the host UI.
171
+ *
172
+ * @remarks
173
+ * Called by the host whenever the application list changes after initial mount.
174
+ */
175
+ updateApplications?(apps: PluggableApplicationRegistryItem[]): void;
176
+ /**
177
+ * Pushes the current pathname into the host UI.
178
+ *
179
+ * @remarks
180
+ * Called by the host whenever the URL changes (e.g. after navigation or popstate).
181
+ * The host UI uses this to update the active state of navigation items.
182
+ */
183
+ updatePathname?(pathname: string): void;
184
+ /**
185
+ * Pushes updated header options into the host UI.
186
+ *
187
+ * @remarks
188
+ * Called by the host whenever the active pluggable application declares new header
189
+ * options via its `onHeaderChange` callback. The host UI uses this to update
190
+ * the header (e.g. help menu items) to match the active application's preferences.
191
+ * When called with `undefined`, the host UI should revert to its default header configuration.
192
+ */
193
+ updateHeader?(header: IAppHeaderOptions | undefined): void;
194
+ /**
195
+ * Returns the DOM element where the active pluggable application should be rendered.
196
+ *
197
+ * @remarks
198
+ * The host uses this element as the mount container for the currently active
199
+ * pluggable application. The host UI is responsible for creating and managing
200
+ * this element as part of its layout.
201
+ */
202
+ getAppContainer(): HTMLElement;
203
+ /**
204
+ * Receives an out-of-band notification from the host runtime.
205
+ *
206
+ * @remarks
207
+ * The host UI decides how to render the notification (toast, banner, modal, …);
208
+ * implementations may safely no-op for notification types they do not handle.
209
+ */
210
+ notify?(notification: IHostUiNotification): void;
211
+ }
212
+
213
+ /**
214
+ * Options passed by the host into a host UI module's mount function.
215
+ *
216
+ * @alpha
217
+ */
218
+ export declare interface IHostUiMountOptions {
219
+ /**
220
+ * DOM element into which the host UI should render itself.
221
+ */
222
+ container: HTMLElement;
223
+ /**
224
+ * Platform context snapshot provided by the host.
225
+ */
226
+ ctx: IPlatformContext;
227
+ /**
228
+ * Resolved and filtered list of pluggable applications to render in the navigation.
229
+ */
230
+ resolvedApplications: PluggableApplicationRegistryItem[];
231
+ /**
232
+ * Current pathname of the host application.
233
+ *
234
+ * @remarks
235
+ * The host UI uses this to determine which navigation item is active.
236
+ * Updated via {@link IHostUiMountHandle.updatePathname} when the URL changes.
237
+ */
238
+ pathname: string;
239
+ /**
240
+ * Callback for requesting client-side navigation (push).
241
+ *
242
+ * @remarks
243
+ * The host owns the router. When the host UI needs to navigate (e.g. menu item click),
244
+ * it calls this callback and the host performs the actual navigation. The host then pushes
245
+ * the new pathname back via {@link IHostUiMountHandle.updatePathname}.
246
+ */
247
+ navigate: (url: string) => void;
248
+ /**
249
+ * Callback for requesting client-side navigation with history replacement.
250
+ *
251
+ * @remarks
252
+ * Works like {@link IHostUiMountOptions.navigate} but replaces the current history
253
+ * entry instead of pushing a new one.
254
+ */
255
+ replace: (url: string) => void;
256
+ }
257
+
258
+ /**
259
+ * Discriminated union of out-of-band notifications the host runtime can push into the
260
+ * host UI module after mount. Lets the runtime signal events that should affect the UI
261
+ * without coupling it to a specific rendering.
262
+ *
263
+ * @remarks
264
+ * Variants are discriminated by the `type` field. Implementations of
265
+ * {@link IHostUiMountHandle.notify} may safely no-op for notification types they do not
266
+ * handle, so adding a new variant is a backward-compatible change.
267
+ *
268
+ * @alpha
269
+ */
270
+ export declare type IHostUiNotification = INewDeploymentAvailableHostUiNotification;
271
+
105
272
  /**
106
273
  * JWT-based authentication.
107
274
  *
@@ -115,6 +282,30 @@ export declare interface IJwtAuthCredentials {
115
282
 
116
283
  export { ILocale }
117
284
 
285
+ /**
286
+ * Notification dispatched when the host runtime detects that a newer build of the host
287
+ * application has been deployed while the user's tab is still open.
288
+ *
289
+ * @remarks
290
+ * Stale tabs continue to reference content-hashed chunk URLs that no longer exist on the
291
+ * server, so the user must reload to pick up the new build. The host UI module decides
292
+ * how to surface this (e.g. a toast with a reload action).
293
+ *
294
+ * @alpha
295
+ */
296
+ export declare interface INewDeploymentAvailableHostUiNotification {
297
+ /**
298
+ * A new build of the host application has been deployed; the user should reload to
299
+ * avoid loading stale chunks. The host UI is expected to surface this to the user
300
+ * (e.g. as a toast with a reload action).
301
+ */
302
+ type: "newDeploymentAvailable";
303
+ /**
304
+ * Commit hash of the newly deployed build, as detected by the host runtime.
305
+ */
306
+ commitHash: string;
307
+ }
308
+
118
309
  /**
119
310
  * Organization information available in the platform context.
120
311
  *
@@ -328,118 +519,6 @@ export declare interface IReloadPlatformContextRequestedEvent extends IPluggable
328
519
  readonly type: "GDC.PLUGGABLE_APP/EVT.RELOAD_PLATFORM_CONTEXT.REQUESTED";
329
520
  }
330
521
 
331
- /**
332
- * Shell UI module contract.
333
- *
334
- * @remarks
335
- * Implementations loaded via module federation or provided locally must conform
336
- * to this interface. The shell application uses the `mount` function to render
337
- * the application chrome and obtain the container for the active pluggable application.
338
- *
339
- * @alpha
340
- */
341
- export declare interface IShellUiModule {
342
- mount: ShellUiMount;
343
- }
344
-
345
- /**
346
- * Handle returned from a shell UI mount for lifecycle management.
347
- *
348
- * @alpha
349
- */
350
- export declare interface IShellUiMountHandle {
351
- /**
352
- * Unmounts the shell UI and releases all resources.
353
- */
354
- unmount(): void;
355
- /**
356
- * Pushes an updated platform context into the shell UI.
357
- *
358
- * @remarks
359
- * Called by the host whenever the context changes after initial mount.
360
- */
361
- updateContext?(ctx: IPlatformContext): void;
362
- /**
363
- * Pushes an updated list of resolved applications into the shell UI.
364
- *
365
- * @remarks
366
- * Called by the host whenever the application list changes after initial mount.
367
- */
368
- updateApplications?(apps: PluggableApplicationRegistryItem[]): void;
369
- /**
370
- * Pushes the current pathname into the shell UI.
371
- *
372
- * @remarks
373
- * Called by the host whenever the URL changes (e.g. after navigation or popstate).
374
- * The shell UI uses this to update the active state of navigation items.
375
- */
376
- updatePathname?(pathname: string): void;
377
- /**
378
- * Pushes updated header options into the shell UI.
379
- *
380
- * @remarks
381
- * Called by the host whenever the active pluggable application declares new header
382
- * options via its `onHeaderChange` callback. The shell UI uses this to update
383
- * the header (e.g. help menu items) to match the active application's preferences.
384
- * When called with `undefined`, the shell UI should revert to its default header configuration.
385
- */
386
- updateHeader?(header: IAppHeaderOptions | undefined): void;
387
- /**
388
- * Returns the DOM element where the active pluggable application should be rendered.
389
- *
390
- * @remarks
391
- * The host uses this element as the mount container for the currently active
392
- * pluggable application. The shell UI is responsible for creating and managing
393
- * this element as part of its layout.
394
- */
395
- getAppContainer(): HTMLElement;
396
- }
397
-
398
- /**
399
- * Options passed by the host into a shell UI module's mount function.
400
- *
401
- * @alpha
402
- */
403
- export declare interface IShellUiMountOptions {
404
- /**
405
- * DOM element into which the shell UI should render itself.
406
- */
407
- container: HTMLElement;
408
- /**
409
- * Platform context snapshot provided by the host.
410
- */
411
- ctx: IPlatformContext;
412
- /**
413
- * Resolved and filtered list of pluggable applications to render in the navigation.
414
- */
415
- resolvedApplications: PluggableApplicationRegistryItem[];
416
- /**
417
- * Current pathname of the host application.
418
- *
419
- * @remarks
420
- * The shell UI uses this to determine which navigation item is active.
421
- * Updated via {@link IShellUiMountHandle.updatePathname} when the URL changes.
422
- */
423
- pathname: string;
424
- /**
425
- * Callback for requesting client-side navigation (push).
426
- *
427
- * @remarks
428
- * The host owns the router. When the shell UI needs to navigate (e.g. menu item click),
429
- * it calls this callback and the host performs the actual navigation. The host then pushes
430
- * the new pathname back via {@link IShellUiMountHandle.updatePathname}.
431
- */
432
- navigate: (url: string) => void;
433
- /**
434
- * Callback for requesting client-side navigation with history replacement.
435
- *
436
- * @remarks
437
- * Works like {@link IShellUiMountOptions.navigate} but replaces the current history
438
- * entry instead of pushing a new one.
439
- */
440
- replace: (url: string) => void;
441
- }
442
-
443
522
  /**
444
523
  * Type guard for {@link IPlatformContextV1}.
445
524
  *
@@ -523,21 +602,6 @@ export declare type PluggableApplicationMount = (options: IPluggableApplicationM
523
602
  */
524
603
  export declare function reloadPlatformContextRequested(): IReloadPlatformContextRequestedEvent;
525
604
 
526
- /**
527
- * Shell UI mount function signature.
528
- *
529
- * @remarks
530
- * A shell UI module must export a `mount` function conforming to this signature.
531
- * The function receives a container element and context data, renders the application
532
- * shell (header, navigation, layout), and returns a handle for lifecycle management.
533
- *
534
- * The implementation is framework-agnostic — a module can use React, vanilla DOM,
535
- * or any other rendering approach internally.
536
- *
537
- * @alpha
538
- */
539
- export declare type ShellUiMount = (options: IShellUiMountOptions) => IShellUiMountHandle;
540
-
541
605
  /**
542
606
  * Telemetry channel determines which analytics pipeline receives the event.
543
607
  *
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gooddata/sdk-pluggable-application-model",
3
- "version": "11.32.0-alpha.4",
3
+ "version": "11.32.0-alpha.5",
4
4
  "description": "GoodData SDK model contracts for pluggable applications",
5
5
  "license": "MIT",
6
6
  "author": "GoodData Corporation",
@@ -23,8 +23,8 @@
23
23
  "dependencies": {
24
24
  "ts-invariant": "0.10.3",
25
25
  "tslib": "2.8.1",
26
- "@gooddata/sdk-backend-spi": "11.32.0-alpha.4",
27
- "@gooddata/sdk-model": "11.32.0-alpha.4"
26
+ "@gooddata/sdk-backend-spi": "11.32.0-alpha.5",
27
+ "@gooddata/sdk-model": "11.32.0-alpha.5"
28
28
  },
29
29
  "devDependencies": {
30
30
  "@microsoft/api-documenter": "^7.17.0",
@@ -48,8 +48,8 @@
48
48
  "oxlint-tsgolint": "0.11.4",
49
49
  "typescript": "5.9.3",
50
50
  "vitest": "4.1.0",
51
- "@gooddata/oxlint-config": "11.32.0-alpha.4",
52
- "@gooddata/eslint-config": "11.32.0-alpha.4"
51
+ "@gooddata/eslint-config": "11.32.0-alpha.5",
52
+ "@gooddata/oxlint-config": "11.32.0-alpha.5"
53
53
  },
54
54
  "scripts": {
55
55
  "_phase:build": "npm run build",
package/esm/shellUi.d.ts DELETED
@@ -1,127 +0,0 @@
1
- import { type PluggableApplicationRegistryItem } from "@gooddata/sdk-model";
2
- import { type IAppHeaderOptions } from "./mount.js";
3
- import { type IPlatformContext } from "./platformContext.js";
4
- /**
5
- * Options passed by the host into a shell UI module's mount function.
6
- *
7
- * @alpha
8
- */
9
- export interface IShellUiMountOptions {
10
- /**
11
- * DOM element into which the shell UI should render itself.
12
- */
13
- container: HTMLElement;
14
- /**
15
- * Platform context snapshot provided by the host.
16
- */
17
- ctx: IPlatformContext;
18
- /**
19
- * Resolved and filtered list of pluggable applications to render in the navigation.
20
- */
21
- resolvedApplications: PluggableApplicationRegistryItem[];
22
- /**
23
- * Current pathname of the host application.
24
- *
25
- * @remarks
26
- * The shell UI uses this to determine which navigation item is active.
27
- * Updated via {@link IShellUiMountHandle.updatePathname} when the URL changes.
28
- */
29
- pathname: string;
30
- /**
31
- * Callback for requesting client-side navigation (push).
32
- *
33
- * @remarks
34
- * The host owns the router. When the shell UI needs to navigate (e.g. menu item click),
35
- * it calls this callback and the host performs the actual navigation. The host then pushes
36
- * the new pathname back via {@link IShellUiMountHandle.updatePathname}.
37
- */
38
- navigate: (url: string) => void;
39
- /**
40
- * Callback for requesting client-side navigation with history replacement.
41
- *
42
- * @remarks
43
- * Works like {@link IShellUiMountOptions.navigate} but replaces the current history
44
- * entry instead of pushing a new one.
45
- */
46
- replace: (url: string) => void;
47
- }
48
- /**
49
- * Handle returned from a shell UI mount for lifecycle management.
50
- *
51
- * @alpha
52
- */
53
- export interface IShellUiMountHandle {
54
- /**
55
- * Unmounts the shell UI and releases all resources.
56
- */
57
- unmount(): void;
58
- /**
59
- * Pushes an updated platform context into the shell UI.
60
- *
61
- * @remarks
62
- * Called by the host whenever the context changes after initial mount.
63
- */
64
- updateContext?(ctx: IPlatformContext): void;
65
- /**
66
- * Pushes an updated list of resolved applications into the shell UI.
67
- *
68
- * @remarks
69
- * Called by the host whenever the application list changes after initial mount.
70
- */
71
- updateApplications?(apps: PluggableApplicationRegistryItem[]): void;
72
- /**
73
- * Pushes the current pathname into the shell UI.
74
- *
75
- * @remarks
76
- * Called by the host whenever the URL changes (e.g. after navigation or popstate).
77
- * The shell UI uses this to update the active state of navigation items.
78
- */
79
- updatePathname?(pathname: string): void;
80
- /**
81
- * Pushes updated header options into the shell UI.
82
- *
83
- * @remarks
84
- * Called by the host whenever the active pluggable application declares new header
85
- * options via its `onHeaderChange` callback. The shell UI uses this to update
86
- * the header (e.g. help menu items) to match the active application's preferences.
87
- * When called with `undefined`, the shell UI should revert to its default header configuration.
88
- */
89
- updateHeader?(header: IAppHeaderOptions | undefined): void;
90
- /**
91
- * Returns the DOM element where the active pluggable application should be rendered.
92
- *
93
- * @remarks
94
- * The host uses this element as the mount container for the currently active
95
- * pluggable application. The shell UI is responsible for creating and managing
96
- * this element as part of its layout.
97
- */
98
- getAppContainer(): HTMLElement;
99
- }
100
- /**
101
- * Shell UI mount function signature.
102
- *
103
- * @remarks
104
- * A shell UI module must export a `mount` function conforming to this signature.
105
- * The function receives a container element and context data, renders the application
106
- * shell (header, navigation, layout), and returns a handle for lifecycle management.
107
- *
108
- * The implementation is framework-agnostic — a module can use React, vanilla DOM,
109
- * or any other rendering approach internally.
110
- *
111
- * @alpha
112
- */
113
- export type ShellUiMount = (options: IShellUiMountOptions) => IShellUiMountHandle;
114
- /**
115
- * Shell UI module contract.
116
- *
117
- * @remarks
118
- * Implementations loaded via module federation or provided locally must conform
119
- * to this interface. The shell application uses the `mount` function to render
120
- * the application chrome and obtain the container for the active pluggable application.
121
- *
122
- * @alpha
123
- */
124
- export interface IShellUiModule {
125
- mount: ShellUiMount;
126
- }
127
- //# sourceMappingURL=shellUi.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"shellUi.d.ts","sourceRoot":"","sources":["../src/shellUi.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,gCAAgC,EAAE,MAAM,qBAAqB,CAAC;AAE5E,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,YAAY,CAAC;AACpD,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAE7D;;;;GAIG;AACH,MAAM,WAAW,oBAAoB;IACjC;;OAEG;IACH,SAAS,EAAE,WAAW,CAAC;IAEvB;;OAEG;IACH,GAAG,EAAE,gBAAgB,CAAC;IAEtB;;OAEG;IACH,oBAAoB,EAAE,gCAAgC,EAAE,CAAC;IAEzD;;;;;;OAMG;IACH,QAAQ,EAAE,MAAM,CAAC;IAEjB;;;;;;;OAOG;IACH,QAAQ,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAEhC;;;;;;OAMG;IACH,OAAO,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;CAClC;AAED;;;;GAIG;AACH,MAAM,WAAW,mBAAmB;IAChC;;OAEG;IACH,OAAO,IAAI,IAAI,CAAC;IAEhB;;;;;OAKG;IACH,aAAa,CAAC,CAAC,GAAG,EAAE,gBAAgB,GAAG,IAAI,CAAC;IAE5C;;;;;OAKG;IACH,kBAAkB,CAAC,CAAC,IAAI,EAAE,gCAAgC,EAAE,GAAG,IAAI,CAAC;IAEpE;;;;;;OAMG;IACH,cAAc,CAAC,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IAExC;;;;;;;;OAQG;IACH,YAAY,CAAC,CAAC,MAAM,EAAE,iBAAiB,GAAG,SAAS,GAAG,IAAI,CAAC;IAE3D;;;;;;;OAOG;IACH,eAAe,IAAI,WAAW,CAAC;CAClC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,EAAE,oBAAoB,KAAK,mBAAmB,CAAC;AAElF;;;;;;;;;GASG;AACH,MAAM,WAAW,cAAc;IAC3B,KAAK,EAAE,YAAY,CAAC;CACvB"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"shellUi.js","sourceRoot":"","sources":["../src/shellUi.ts"],"names":[],"mappings":"AAAA,gCAAgC"}