@gooddata/sdk-pluggable-application-model 11.25.0-alpha.2
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/LICENSE +19 -0
- package/README.md +10 -0
- package/esm/index.d.ts +9 -0
- package/esm/index.d.ts.map +1 -0
- package/esm/index.js +9 -0
- package/esm/index.js.map +1 -0
- package/esm/mount.d.ts +91 -0
- package/esm/mount.d.ts.map +1 -0
- package/esm/mount.js +3 -0
- package/esm/mount.js.map +1 -0
- package/esm/platformContext.d.ts +88 -0
- package/esm/platformContext.d.ts.map +1 -0
- package/esm/platformContext.js +27 -0
- package/esm/platformContext.js.map +1 -0
- package/esm/sdk-pluggable-application-model.d.ts +207 -0
- package/esm/tsdoc-metadata.json +11 -0
- package/package.json +73 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
Copyright (c) 2026 GoodData Corporation
|
|
2
|
+
|
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
4
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
5
|
+
in the Software without restriction, including without limitation the rights
|
|
6
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
7
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
8
|
+
furnished to do so, subject to the following conditions:
|
|
9
|
+
|
|
10
|
+
The above copyright notice and this permission notice shall be included in all
|
|
11
|
+
copies or substantial portions of the Software.
|
|
12
|
+
|
|
13
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
14
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
15
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
16
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
17
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
18
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
19
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
# GoodData.UI SDK - Pluggable Application Model
|
|
2
|
+
|
|
3
|
+
This package is a part of the [GoodData.UI SDK](https://sdk.gooddata.com/gooddata-ui/docs/about_gooddataui.html).
|
|
4
|
+
It provides model contracts used to integrate pluggable applications with host applications.
|
|
5
|
+
|
|
6
|
+
## License
|
|
7
|
+
|
|
8
|
+
(C) 2026 GoodData Corporation
|
|
9
|
+
|
|
10
|
+
This project is under MIT License. See `LICENSE`.
|
package/esm/index.d.ts
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Model contracts for pluggable application integration.
|
|
3
|
+
*
|
|
4
|
+
* @packageDocumentation
|
|
5
|
+
*/
|
|
6
|
+
export { type EmbeddingMode, type IOrganization, type IOrganizationPermissions, type IPlatformContext, type IPlatformContextV1, type IPluggableApplicationNavigation, PantherTier, isPlatformContextV1, } from "./platformContext.js";
|
|
7
|
+
export { type ILocale } from "@gooddata/sdk-model";
|
|
8
|
+
export { type IAppInstance, type IPluggableApp, type IPluggableApplicationMountHandle, type IPluggableApplicationMountOptions, type IPluggableAppEvent, type PluggableApplicationMount, } from "./mount.js";
|
|
9
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA;;;;GAIG;AAEH,OAAO,EACH,KAAK,aAAa,EAClB,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,YAAY,EACjB,KAAK,aAAa,EAClB,KAAK,gCAAgC,EACrC,KAAK,iCAAiC,EACtC,KAAK,kBAAkB,EACvB,KAAK,yBAAyB,GACjC,MAAM,YAAY,CAAC"}
|
package/esm/index.js
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
// (C) 2026 GoodData Corporation
|
|
2
|
+
/* oxlint-disable no-barrel-files/no-barrel-files */
|
|
3
|
+
/**
|
|
4
|
+
* Model contracts for pluggable application integration.
|
|
5
|
+
*
|
|
6
|
+
* @packageDocumentation
|
|
7
|
+
*/
|
|
8
|
+
export { PantherTier, isPlatformContextV1, } from "./platformContext.js";
|
|
9
|
+
//# sourceMappingURL=index.js.map
|
package/esm/index.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAEhC,oDAAoD;AAEpD;;;;GAIG;AAEH,OAAO,EAOH,WAAW,EACX,mBAAmB,GACtB,MAAM,sBAAsB,CAAC"}
|
package/esm/mount.d.ts
ADDED
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import { type IPlatformContext } from "./platformContext.js";
|
|
2
|
+
/**
|
|
3
|
+
* Event emitted by the pluggable application towards the host.
|
|
4
|
+
*
|
|
5
|
+
* @remarks
|
|
6
|
+
* The host is the single writer of the canonical platform context. Use these events to request changes;
|
|
7
|
+
* the host decides what (if anything) to apply and then pushes updated context down via the `updateContext` callback
|
|
8
|
+
* on the mounted instance.
|
|
9
|
+
*
|
|
10
|
+
* @alpha
|
|
11
|
+
*/
|
|
12
|
+
export interface IPluggableAppEvent {
|
|
13
|
+
type: string;
|
|
14
|
+
payload?: unknown;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Options passed by the host into a pluggable application's mount function.
|
|
18
|
+
*
|
|
19
|
+
* @alpha
|
|
20
|
+
*/
|
|
21
|
+
export interface IPluggableApplicationMountOptions {
|
|
22
|
+
/**
|
|
23
|
+
* Unique application instance identifier.
|
|
24
|
+
*/
|
|
25
|
+
id: string;
|
|
26
|
+
/**
|
|
27
|
+
* DOM element into which the pluggable application should render itself.
|
|
28
|
+
*/
|
|
29
|
+
container: HTMLElement;
|
|
30
|
+
/**
|
|
31
|
+
* Platform context snapshot provided by the host.
|
|
32
|
+
*/
|
|
33
|
+
ctx: IPlatformContext;
|
|
34
|
+
/**
|
|
35
|
+
* Base path under which the pluggable application should consider itself mounted.
|
|
36
|
+
*
|
|
37
|
+
* @example
|
|
38
|
+
* `/organization/someOrg/apps/someApp`
|
|
39
|
+
*/
|
|
40
|
+
basePath: string;
|
|
41
|
+
/**
|
|
42
|
+
* Callback invoked by the pluggable application to emit events.
|
|
43
|
+
*
|
|
44
|
+
* @remarks
|
|
45
|
+
* The host remains the single writer of the canonical platform context; pluggable application emits events
|
|
46
|
+
* and host applies changes (if any) and publishes updated context via the `updateContext` callback on the mounted
|
|
47
|
+
* instance.
|
|
48
|
+
*/
|
|
49
|
+
onEvent?: (e: IPluggableAppEvent) => void;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Handle returned from mount for lifecycle management and host -\> module interaction.
|
|
53
|
+
*
|
|
54
|
+
* @alpha
|
|
55
|
+
*/
|
|
56
|
+
export interface IPluggableApplicationMountHandle {
|
|
57
|
+
/**
|
|
58
|
+
* Unmounts the pluggable application and releases all resources.
|
|
59
|
+
*/
|
|
60
|
+
unmount(): void;
|
|
61
|
+
/**
|
|
62
|
+
* Updates context snapshot in the pluggable application.
|
|
63
|
+
*
|
|
64
|
+
* @remarks
|
|
65
|
+
* Host uses this to push down context changes after initial mount.
|
|
66
|
+
*/
|
|
67
|
+
updateContext?: (ctx: IPlatformContext) => void;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Pluggable application mount function signature.
|
|
71
|
+
*
|
|
72
|
+
* @alpha
|
|
73
|
+
*/
|
|
74
|
+
export type PluggableApplicationMount = (options: IPluggableApplicationMountOptions) => IPluggableApplicationMountHandle;
|
|
75
|
+
/**
|
|
76
|
+
* Mounted application instance.
|
|
77
|
+
*
|
|
78
|
+
* @alpha
|
|
79
|
+
*/
|
|
80
|
+
export interface IAppInstance extends IPluggableApplicationMountHandle {
|
|
81
|
+
id: string;
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Pluggable application entrypoint.
|
|
85
|
+
*
|
|
86
|
+
* @alpha
|
|
87
|
+
*/
|
|
88
|
+
export interface IPluggableApp {
|
|
89
|
+
mount: PluggableApplicationMount;
|
|
90
|
+
}
|
|
91
|
+
//# sourceMappingURL=mount.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mount.d.ts","sourceRoot":"","sources":["../src/mount.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAE7D;;;;;;;;;GASG;AACH,MAAM,WAAW,kBAAkB;IAE/B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,OAAO,CAAC;CACrB;AAED;;;;GAIG;AACH,MAAM,WAAW,iCAAiC;IAC9C;;OAEG;IACH,EAAE,EAAE,MAAM,CAAC;IAEX;;OAEG;IACH,SAAS,EAAE,WAAW,CAAC;IAEvB;;OAEG;IACH,GAAG,EAAE,gBAAgB,CAAC;IAEtB;;;;;OAKG;IACH,QAAQ,EAAE,MAAM,CAAC;IAEjB;;;;;;;OAOG;IACH,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE,kBAAkB,KAAK,IAAI,CAAC;CAC7C;AAED;;;;GAIG;AACH,MAAM,WAAW,gCAAgC;IAC7C;;OAEG;IACH,OAAO,IAAI,IAAI,CAAC;IAEhB;;;;;OAKG;IACH,aAAa,CAAC,EAAE,CAAC,GAAG,EAAE,gBAAgB,KAAK,IAAI,CAAC;CACnD;AAED;;;;GAIG;AACH,MAAM,MAAM,yBAAyB,GAAG,CACpC,OAAO,EAAE,iCAAiC,KACzC,gCAAgC,CAAC;AAEtC;;;;GAIG;AACH,MAAM,WAAW,YAAa,SAAQ,gCAAgC;IAClE,EAAE,EAAE,MAAM,CAAC;CACd;AAED;;;;GAIG;AACH,MAAM,WAAW,aAAa;IAC1B,KAAK,EAAE,yBAAyB,CAAC;CACpC"}
|
package/esm/mount.js
ADDED
package/esm/mount.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mount.js","sourceRoot":"","sources":["../src/mount.ts"],"names":[],"mappings":"AAAA,gCAAgC"}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import { type IAnalyticalBackend, type IUserSettings } from "@gooddata/sdk-backend-spi";
|
|
2
|
+
import { type IEntitlementDescriptor, type ILocale, type ITheme, type IUser, type IWhiteLabeling, type IWorkspacePermissions, type ObjRef } from "@gooddata/sdk-model";
|
|
3
|
+
/**
|
|
4
|
+
* Pluggable application embedding mode.
|
|
5
|
+
*
|
|
6
|
+
* @alpha
|
|
7
|
+
*/
|
|
8
|
+
export type EmbeddingMode = "none" | "iframe" | "export";
|
|
9
|
+
/**
|
|
10
|
+
* Panther tier.
|
|
11
|
+
*
|
|
12
|
+
* @alpha
|
|
13
|
+
*/
|
|
14
|
+
export declare enum PantherTier {
|
|
15
|
+
TRIAL = "TRIAL",
|
|
16
|
+
INTERNAL = "INTERNAL",
|
|
17
|
+
POC = "POC",
|
|
18
|
+
LABS = "LABS",
|
|
19
|
+
DEMO = "DEMO"
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Organization information available in the platform context.
|
|
23
|
+
*
|
|
24
|
+
* @alpha
|
|
25
|
+
*/
|
|
26
|
+
export interface IOrganization {
|
|
27
|
+
id: string;
|
|
28
|
+
title?: string;
|
|
29
|
+
bootstrapUser?: ObjRef;
|
|
30
|
+
bootstrapUserGroup?: ObjRef;
|
|
31
|
+
identityProviderType?: string;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Organization-level permissions.
|
|
35
|
+
*
|
|
36
|
+
* @remarks
|
|
37
|
+
* There is no canonical org-permissions type in `@gooddata/sdk-model` today; this interface is intentionally minimal
|
|
38
|
+
* and expected to evolve.
|
|
39
|
+
*
|
|
40
|
+
* @alpha
|
|
41
|
+
*/
|
|
42
|
+
export interface IOrganizationPermissions {
|
|
43
|
+
canManageOrganization?: boolean;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Navigation facade exposed to pluggable applications.
|
|
47
|
+
*
|
|
48
|
+
* @alpha
|
|
49
|
+
*/
|
|
50
|
+
export interface IPluggableApplicationNavigation {
|
|
51
|
+
go(to: string): void;
|
|
52
|
+
openApp(id: string, path?: string): void;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Platform context contract version 1.0.
|
|
56
|
+
*
|
|
57
|
+
* @alpha
|
|
58
|
+
*/
|
|
59
|
+
export interface IPlatformContextV1 {
|
|
60
|
+
version: "1.0";
|
|
61
|
+
backend: IAnalyticalBackend;
|
|
62
|
+
user: IUser;
|
|
63
|
+
organization?: IOrganization;
|
|
64
|
+
organizationPermissions?: IOrganizationPermissions;
|
|
65
|
+
workspacePermissions?: IWorkspacePermissions;
|
|
66
|
+
entitlements?: IEntitlementDescriptor[];
|
|
67
|
+
userSettings: IUserSettings;
|
|
68
|
+
whiteLabeling: IWhiteLabeling | undefined;
|
|
69
|
+
preferredLocale?: ILocale;
|
|
70
|
+
pantherTier?: PantherTier;
|
|
71
|
+
theme?: ITheme;
|
|
72
|
+
currentPath?: string;
|
|
73
|
+
currentWorkspaceId?: string;
|
|
74
|
+
embeddingMode: EmbeddingMode;
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Platform context contract.
|
|
78
|
+
*
|
|
79
|
+
* @alpha
|
|
80
|
+
*/
|
|
81
|
+
export type IPlatformContext = IPlatformContextV1;
|
|
82
|
+
/**
|
|
83
|
+
* Type guard for {@link IPlatformContextV1}.
|
|
84
|
+
*
|
|
85
|
+
* @alpha
|
|
86
|
+
*/
|
|
87
|
+
export declare function isPlatformContextV1(context: unknown): context is IPlatformContextV1;
|
|
88
|
+
//# sourceMappingURL=platformContext.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"platformContext.d.ts","sourceRoot":"","sources":["../src/platformContext.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,kBAAkB,EAAE,KAAK,aAAa,EAAE,MAAM,2BAA2B,CAAC;AACxF,OAAO,EACH,KAAK,sBAAsB,EAC3B,KAAK,OAAO,EACZ,KAAK,MAAM,EACX,KAAK,KAAK,EACV,KAAK,cAAc,EACnB,KAAK,qBAAqB,EAC1B,KAAK,MAAM,EACd,MAAM,qBAAqB,CAAC;AAE7B;;;;GAIG;AACH,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAEzD;;;;GAIG;AACH,oBAAY,WAAW;IACnB,KAAK,UAAU;IACf,QAAQ,aAAa;IACrB,GAAG,QAAQ;IACX,IAAI,SAAS;IACb,IAAI,SAAS;CAChB;AAED;;;;GAIG;AACH,MAAM,WAAW,aAAa;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,oBAAoB,CAAC,EAAE,MAAM,CAAC;CACjC;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,wBAAwB;IACrC,qBAAqB,CAAC,EAAE,OAAO,CAAC;CACnC;AAED;;;;GAIG;AACH,MAAM,WAAW,+BAA+B;IAC5C,EAAE,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,OAAO,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5C;AAED;;;;GAIG;AACH,MAAM,WAAW,kBAAkB;IAC/B,OAAO,EAAE,KAAK,CAAC;IAEf,OAAO,EAAE,kBAAkB,CAAC;IAC5B,IAAI,EAAE,KAAK,CAAC;IACZ,YAAY,CAAC,EAAE,aAAa,CAAC;IAE7B,uBAAuB,CAAC,EAAE,wBAAwB,CAAC;IACnD,oBAAoB,CAAC,EAAE,qBAAqB,CAAC;IAE7C,YAAY,CAAC,EAAE,sBAAsB,EAAE,CAAC;IAExC,YAAY,EAAE,aAAa,CAAC;IAE5B,aAAa,EAAE,cAAc,GAAG,SAAS,CAAC;IAC1C,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAE5B,aAAa,EAAE,aAAa,CAAC;CAChC;AAED;;;;GAIG;AACH,MAAM,MAAM,gBAAgB,GAAG,kBAAkB,CAAC;AAElD;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,IAAI,kBAAkB,CAOnF"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
// (C) 2026 GoodData Corporation
|
|
2
|
+
export { PantherTier };
|
|
3
|
+
/**
|
|
4
|
+
* Panther tier.
|
|
5
|
+
*
|
|
6
|
+
* @alpha
|
|
7
|
+
*/
|
|
8
|
+
var PantherTier;
|
|
9
|
+
(function (PantherTier) {
|
|
10
|
+
PantherTier["TRIAL"] = "TRIAL";
|
|
11
|
+
PantherTier["INTERNAL"] = "INTERNAL";
|
|
12
|
+
PantherTier["POC"] = "POC";
|
|
13
|
+
PantherTier["LABS"] = "LABS";
|
|
14
|
+
PantherTier["DEMO"] = "DEMO";
|
|
15
|
+
})(PantherTier || (PantherTier = {}));
|
|
16
|
+
/**
|
|
17
|
+
* Type guard for {@link IPlatformContextV1}.
|
|
18
|
+
*
|
|
19
|
+
* @alpha
|
|
20
|
+
*/
|
|
21
|
+
export function isPlatformContextV1(context) {
|
|
22
|
+
return (typeof context === "object" &&
|
|
23
|
+
context !== null &&
|
|
24
|
+
"version" in context &&
|
|
25
|
+
context.version === "1.0");
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=platformContext.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"platformContext.js","sourceRoot":"","sources":["../src/platformContext.ts"],"names":[],"mappings":"AAAA,gCAAgC;SAyBpB,WAAW;AALvB;;;;GAIG;AACH,IAAY,WAMX;AAND,WAAY,WAAW;IACnB,8BAAe,CAAA;IACf,oCAAqB,CAAA;IACrB,0BAAW,CAAA;IACX,4BAAa,CAAA;IACb,4BAAa,CAAA;AAAC,CAClB,EANY,WAAW,KAAX,WAAW,QAMtB;AA2ED;;;;GAIG;AACH,MAAM,UAAU,mBAAmB,CAAC,OAAgB,EAAiC;IACjF,OAAO,CACH,OAAO,OAAO,KAAK,QAAQ;QAC3B,OAAO,KAAK,IAAI;QAChB,SAAS,IAAI,OAAO;QACnB,OAAiC,CAAC,OAAO,KAAK,KAAK,CACvD,CAAC;AAAA,CACL"}
|
|
@@ -0,0 +1,207 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Model contracts for pluggable application integration.
|
|
3
|
+
*
|
|
4
|
+
* @packageDocumentation
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
import { IAnalyticalBackend } from '@gooddata/sdk-backend-spi';
|
|
8
|
+
import { IEntitlementDescriptor } from '@gooddata/sdk-model';
|
|
9
|
+
import { ILocale } from '@gooddata/sdk-model';
|
|
10
|
+
import { ITheme } from '@gooddata/sdk-model';
|
|
11
|
+
import { IUser } from '@gooddata/sdk-model';
|
|
12
|
+
import { IUserSettings } from '@gooddata/sdk-backend-spi';
|
|
13
|
+
import { IWhiteLabeling } from '@gooddata/sdk-model';
|
|
14
|
+
import { IWorkspacePermissions } from '@gooddata/sdk-model';
|
|
15
|
+
import { ObjRef } from '@gooddata/sdk-model';
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* Pluggable application embedding mode.
|
|
19
|
+
*
|
|
20
|
+
* @alpha
|
|
21
|
+
*/
|
|
22
|
+
export declare type EmbeddingMode = "none" | "iframe" | "export";
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* Mounted application instance.
|
|
26
|
+
*
|
|
27
|
+
* @alpha
|
|
28
|
+
*/
|
|
29
|
+
export declare interface IAppInstance extends IPluggableApplicationMountHandle {
|
|
30
|
+
id: string;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
export { ILocale }
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* Organization information available in the platform context.
|
|
37
|
+
*
|
|
38
|
+
* @alpha
|
|
39
|
+
*/
|
|
40
|
+
export declare interface IOrganization {
|
|
41
|
+
id: string;
|
|
42
|
+
title?: string;
|
|
43
|
+
bootstrapUser?: ObjRef;
|
|
44
|
+
bootstrapUserGroup?: ObjRef;
|
|
45
|
+
identityProviderType?: string;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* Organization-level permissions.
|
|
50
|
+
*
|
|
51
|
+
* @remarks
|
|
52
|
+
* There is no canonical org-permissions type in `@gooddata/sdk-model` today; this interface is intentionally minimal
|
|
53
|
+
* and expected to evolve.
|
|
54
|
+
*
|
|
55
|
+
* @alpha
|
|
56
|
+
*/
|
|
57
|
+
export declare interface IOrganizationPermissions {
|
|
58
|
+
canManageOrganization?: boolean;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
/**
|
|
62
|
+
* Platform context contract.
|
|
63
|
+
*
|
|
64
|
+
* @alpha
|
|
65
|
+
*/
|
|
66
|
+
export declare type IPlatformContext = IPlatformContextV1;
|
|
67
|
+
|
|
68
|
+
/**
|
|
69
|
+
* Platform context contract version 1.0.
|
|
70
|
+
*
|
|
71
|
+
* @alpha
|
|
72
|
+
*/
|
|
73
|
+
export declare interface IPlatformContextV1 {
|
|
74
|
+
version: "1.0";
|
|
75
|
+
backend: IAnalyticalBackend;
|
|
76
|
+
user: IUser;
|
|
77
|
+
organization?: IOrganization;
|
|
78
|
+
organizationPermissions?: IOrganizationPermissions;
|
|
79
|
+
workspacePermissions?: IWorkspacePermissions;
|
|
80
|
+
entitlements?: IEntitlementDescriptor[];
|
|
81
|
+
userSettings: IUserSettings;
|
|
82
|
+
whiteLabeling: IWhiteLabeling | undefined;
|
|
83
|
+
preferredLocale?: ILocale;
|
|
84
|
+
pantherTier?: PantherTier;
|
|
85
|
+
theme?: ITheme;
|
|
86
|
+
currentPath?: string;
|
|
87
|
+
currentWorkspaceId?: string;
|
|
88
|
+
embeddingMode: EmbeddingMode;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
/**
|
|
92
|
+
* Pluggable application entrypoint.
|
|
93
|
+
*
|
|
94
|
+
* @alpha
|
|
95
|
+
*/
|
|
96
|
+
export declare interface IPluggableApp {
|
|
97
|
+
mount: PluggableApplicationMount;
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
/**
|
|
101
|
+
* Event emitted by the pluggable application towards the host.
|
|
102
|
+
*
|
|
103
|
+
* @remarks
|
|
104
|
+
* The host is the single writer of the canonical platform context. Use these events to request changes;
|
|
105
|
+
* the host decides what (if anything) to apply and then pushes updated context down via the `updateContext` callback
|
|
106
|
+
* on the mounted instance.
|
|
107
|
+
*
|
|
108
|
+
* @alpha
|
|
109
|
+
*/
|
|
110
|
+
export declare interface IPluggableAppEvent {
|
|
111
|
+
type: string;
|
|
112
|
+
payload?: unknown;
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
/**
|
|
116
|
+
* Handle returned from mount for lifecycle management and host -\> module interaction.
|
|
117
|
+
*
|
|
118
|
+
* @alpha
|
|
119
|
+
*/
|
|
120
|
+
export declare interface IPluggableApplicationMountHandle {
|
|
121
|
+
/**
|
|
122
|
+
* Unmounts the pluggable application and releases all resources.
|
|
123
|
+
*/
|
|
124
|
+
unmount(): void;
|
|
125
|
+
/**
|
|
126
|
+
* Updates context snapshot in the pluggable application.
|
|
127
|
+
*
|
|
128
|
+
* @remarks
|
|
129
|
+
* Host uses this to push down context changes after initial mount.
|
|
130
|
+
*/
|
|
131
|
+
updateContext?: (ctx: IPlatformContext) => void;
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
/**
|
|
135
|
+
* Options passed by the host into a pluggable application's mount function.
|
|
136
|
+
*
|
|
137
|
+
* @alpha
|
|
138
|
+
*/
|
|
139
|
+
export declare interface IPluggableApplicationMountOptions {
|
|
140
|
+
/**
|
|
141
|
+
* Unique application instance identifier.
|
|
142
|
+
*/
|
|
143
|
+
id: string;
|
|
144
|
+
/**
|
|
145
|
+
* DOM element into which the pluggable application should render itself.
|
|
146
|
+
*/
|
|
147
|
+
container: HTMLElement;
|
|
148
|
+
/**
|
|
149
|
+
* Platform context snapshot provided by the host.
|
|
150
|
+
*/
|
|
151
|
+
ctx: IPlatformContext;
|
|
152
|
+
/**
|
|
153
|
+
* Base path under which the pluggable application should consider itself mounted.
|
|
154
|
+
*
|
|
155
|
+
* @example
|
|
156
|
+
* `/organization/someOrg/apps/someApp`
|
|
157
|
+
*/
|
|
158
|
+
basePath: string;
|
|
159
|
+
/**
|
|
160
|
+
* Callback invoked by the pluggable application to emit events.
|
|
161
|
+
*
|
|
162
|
+
* @remarks
|
|
163
|
+
* The host remains the single writer of the canonical platform context; pluggable application emits events
|
|
164
|
+
* and host applies changes (if any) and publishes updated context via the `updateContext` callback on the mounted
|
|
165
|
+
* instance.
|
|
166
|
+
*/
|
|
167
|
+
onEvent?: (e: IPluggableAppEvent) => void;
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
/**
|
|
171
|
+
* Navigation facade exposed to pluggable applications.
|
|
172
|
+
*
|
|
173
|
+
* @alpha
|
|
174
|
+
*/
|
|
175
|
+
export declare interface IPluggableApplicationNavigation {
|
|
176
|
+
go(to: string): void;
|
|
177
|
+
openApp(id: string, path?: string): void;
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
/**
|
|
181
|
+
* Type guard for {@link IPlatformContextV1}.
|
|
182
|
+
*
|
|
183
|
+
* @alpha
|
|
184
|
+
*/
|
|
185
|
+
export declare function isPlatformContextV1(context: unknown): context is IPlatformContextV1;
|
|
186
|
+
|
|
187
|
+
/**
|
|
188
|
+
* Panther tier.
|
|
189
|
+
*
|
|
190
|
+
* @alpha
|
|
191
|
+
*/
|
|
192
|
+
export declare enum PantherTier {
|
|
193
|
+
TRIAL = "TRIAL",
|
|
194
|
+
INTERNAL = "INTERNAL",
|
|
195
|
+
POC = "POC",
|
|
196
|
+
LABS = "LABS",
|
|
197
|
+
DEMO = "DEMO"
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
/**
|
|
201
|
+
* Pluggable application mount function signature.
|
|
202
|
+
*
|
|
203
|
+
* @alpha
|
|
204
|
+
*/
|
|
205
|
+
export declare type PluggableApplicationMount = (options: IPluggableApplicationMountOptions) => IPluggableApplicationMountHandle;
|
|
206
|
+
|
|
207
|
+
export { }
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
// This file is read by tools that parse documentation comments conforming to the TSDoc standard.
|
|
2
|
+
// It should be published with your NPM package. It should not be tracked by Git.
|
|
3
|
+
{
|
|
4
|
+
"tsdocVersion": "0.12",
|
|
5
|
+
"toolPackages": [
|
|
6
|
+
{
|
|
7
|
+
"packageName": "@microsoft/api-extractor",
|
|
8
|
+
"packageVersion": "7.55.2"
|
|
9
|
+
}
|
|
10
|
+
]
|
|
11
|
+
}
|
package/package.json
ADDED
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@gooddata/sdk-pluggable-application-model",
|
|
3
|
+
"version": "11.25.0-alpha.2",
|
|
4
|
+
"description": "GoodData SDK model contracts for pluggable applications",
|
|
5
|
+
"license": "MIT",
|
|
6
|
+
"author": "GoodData Corporation",
|
|
7
|
+
"repository": {
|
|
8
|
+
"type": "git",
|
|
9
|
+
"url": "https://github.com/gooddata/gooddata-ui-sdk.git",
|
|
10
|
+
"directory": "libs/sdk-pluggable-application-model"
|
|
11
|
+
},
|
|
12
|
+
"files": [
|
|
13
|
+
"esm/**/*.js",
|
|
14
|
+
"esm/**/*.json",
|
|
15
|
+
"esm/**/*.d.ts",
|
|
16
|
+
"esm/**/*.map"
|
|
17
|
+
],
|
|
18
|
+
"type": "module",
|
|
19
|
+
"sideEffects": false,
|
|
20
|
+
"browser": "./esm/index.js",
|
|
21
|
+
"types": "./esm/index.d.ts",
|
|
22
|
+
"exports": "./esm/index.js",
|
|
23
|
+
"dependencies": {
|
|
24
|
+
"ts-invariant": "0.10.3",
|
|
25
|
+
"tslib": "2.8.1",
|
|
26
|
+
"@gooddata/sdk-backend-spi": "11.25.0-alpha.2",
|
|
27
|
+
"@gooddata/sdk-model": "11.25.0-alpha.2"
|
|
28
|
+
},
|
|
29
|
+
"devDependencies": {
|
|
30
|
+
"@microsoft/api-documenter": "^7.17.0",
|
|
31
|
+
"@microsoft/api-extractor": "^7.55.2",
|
|
32
|
+
"@types/node": "22.13.0",
|
|
33
|
+
"@typescript-eslint/eslint-plugin": "8.52.0",
|
|
34
|
+
"@typescript-eslint/parser": "8.52.0",
|
|
35
|
+
"@typescript/native-preview": "7.0.0-dev.20260202.1",
|
|
36
|
+
"dependency-cruiser": "^14.1.2",
|
|
37
|
+
"eslint": "^9.39.2",
|
|
38
|
+
"eslint-import-resolver-typescript": "4.4.4",
|
|
39
|
+
"eslint-plugin-headers": "1.3.3",
|
|
40
|
+
"eslint-plugin-import-esm": "1.2.1",
|
|
41
|
+
"eslint-plugin-import-x": "4.16.1",
|
|
42
|
+
"eslint-plugin-jsdoc": "62.1.0",
|
|
43
|
+
"eslint-plugin-no-barrel-files": "1.2.2",
|
|
44
|
+
"eslint-plugin-sonarjs": "3.0.6",
|
|
45
|
+
"npm-run-all": "^4.1.5",
|
|
46
|
+
"oxfmt": "0.27.0",
|
|
47
|
+
"oxlint": "^1.43.0",
|
|
48
|
+
"oxlint-tsgolint": "0.11.4",
|
|
49
|
+
"typescript": "5.9.3",
|
|
50
|
+
"vitest": "4.0.8",
|
|
51
|
+
"@gooddata/eslint-config": "11.25.0-alpha.2",
|
|
52
|
+
"@gooddata/oxlint-config": "11.25.0-alpha.2"
|
|
53
|
+
},
|
|
54
|
+
"scripts": {
|
|
55
|
+
"_phase:build": "npm run build",
|
|
56
|
+
"_phase:test": "echo \"No tests for @gooddata/sdk-pluggable-application-model\"",
|
|
57
|
+
"_phase:validate": "npm run validate",
|
|
58
|
+
"api-extractor": "mkdir -p api && [ -z \"${CI}\" ] && (api-extractor run -l) || (api-extractor run)",
|
|
59
|
+
"build": "npm-run-all -p build-check build-ts && npm run api-extractor",
|
|
60
|
+
"build-check": "tsgo",
|
|
61
|
+
"build-ts": "tsgo -p tsconfig.build.json",
|
|
62
|
+
"clean": "../../common/scripts/clean-command-state.sh && rm -rf ci dist esm coverage *.log tsconfig.tsbuildinfo",
|
|
63
|
+
"dep-cruiser": "depcruise --validate .dependency-cruiser.cjs --output-type err-long src/",
|
|
64
|
+
"format-check": "oxfmt --check .",
|
|
65
|
+
"format-write": "oxfmt .",
|
|
66
|
+
"lint": "oxlint . --type-aware --quiet && eslint .",
|
|
67
|
+
"lint-fix": "oxlint . --type-aware --quiet --fix && eslint . --fix",
|
|
68
|
+
"test": "vitest watch",
|
|
69
|
+
"test-once": "vitest run --passWithNoTests",
|
|
70
|
+
"validate": "npm run lint && npm run dep-cruiser && npm run format-check",
|
|
71
|
+
"validate-esm": "node --input-type=module --eval 'import \"@gooddata/sdk-pluggable-application-model\"'"
|
|
72
|
+
}
|
|
73
|
+
}
|