@decaf-ts/integrations 0.3.12 → 0.4.1-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/README.md +11 -3
- package/dist/integrations.cjs +445 -7
- package/dist/integrations.js +479 -8
- package/jest.config.cjs +1 -1
- package/lib/cjs/feature-flags/constants.cjs +16 -0
- package/lib/cjs/feature-flags/decorators.cjs +65 -0
- package/lib/cjs/feature-flags/environment.cjs +26 -0
- package/lib/cjs/feature-flags/index.cjs +31 -0
- package/lib/cjs/feature-flags/models/FeatureFlag.model.cjs +81 -0
- package/lib/cjs/feature-flags/models/FeatureFlagAccess.model.cjs +78 -0
- package/lib/cjs/feature-flags/readers/FeatureFlagReader.cjs +25 -0
- package/lib/cjs/feature-flags/readers/index.cjs +19 -0
- package/lib/cjs/feature-flags/services/FeatureFlag.service.cjs +259 -0
- package/lib/cjs/feature-flags/types.cjs +4 -0
- package/lib/cjs/feature-flags/utils.cjs +141 -0
- package/lib/cjs/graph/engine/execution/SwitchGraphNodeExecutor.cjs +9 -9
- package/lib/cjs/graph/shared/nodes/flow-control.cjs +4 -3
- package/lib/cjs/graph/shared/types.cjs +2 -2
- package/lib/cjs/index.cjs +6 -5
- package/lib/cjs/kibana/builders/KibanaIndexBuilder.cjs +329 -0
- package/lib/cjs/kibana/builders/KibanaIndexBuilderCollection.cjs +37 -0
- package/lib/cjs/kibana/builders/index.cjs +20 -0
- package/lib/cjs/kibana/helpers.cjs +20 -16
- package/lib/cjs/kibana/index.cjs +3 -2
- package/lib/cjs/kibana/types.cjs +11 -2
- package/lib/cjs/loader/ObjectLoader.cjs +154 -0
- package/lib/cjs/loader/families.cjs +78 -0
- package/lib/cjs/loader/index.cjs +28 -0
- package/lib/cjs/loader/types.cjs +4 -0
- package/lib/cjs/nest/decorators.cjs +17 -0
- package/lib/cjs/nest/index.cjs +3 -3
- package/lib/cjs/nest/keycloakAuthHandler.cjs +74 -35
- package/lib/cjs/nest/keycloakModule.cjs +7 -10
- package/lib/cjs/nest/types.cjs +2 -2
- package/lib/cjs/nest/utils.cjs +58 -50
- package/lib/cjs/plugins/contract.cjs +76 -0
- package/lib/cjs/plugins/index.cjs +35 -0
- package/lib/cjs/plugins/kibana/host.cjs +24 -0
- package/lib/cjs/plugins/kibana/index.cjs +38 -0
- package/lib/cjs/plugins/kibana/installer.cjs +180 -0
- package/lib/cjs/plugins/kibana/manifest.cjs +33 -0
- package/lib/cjs/plugins/kibana/templates.cjs +503 -0
- package/lib/cjs/plugins/kibana/types.cjs +33 -0
- package/lib/cjs/plugins/superset/host.cjs +26 -0
- package/lib/cjs/plugins/superset/index.cjs +40 -0
- package/lib/cjs/plugins/superset/installer.cjs +232 -0
- package/lib/cjs/plugins/superset/manifest.cjs +35 -0
- package/lib/cjs/plugins/superset/templates.cjs +844 -0
- package/lib/cjs/plugins/superset/types.cjs +39 -0
- package/lib/esm/feature-flags/constants.js +12 -0
- package/lib/esm/feature-flags/decorators.js +49 -0
- package/lib/esm/feature-flags/environment.js +18 -0
- package/lib/esm/feature-flags/index.js +14 -0
- package/lib/esm/feature-flags/models/FeatureFlag.model.js +72 -0
- package/lib/esm/feature-flags/models/FeatureFlagAccess.model.js +69 -0
- package/lib/esm/feature-flags/readers/FeatureFlagReader.js +19 -0
- package/lib/esm/feature-flags/readers/index.js +2 -0
- package/lib/esm/feature-flags/services/FeatureFlag.service.js +250 -0
- package/lib/esm/feature-flags/types.js +2 -0
- package/lib/esm/feature-flags/utils.js +126 -0
- package/lib/esm/graph/engine/execution/SwitchGraphNodeExecutor.js +8 -8
- package/lib/esm/graph/shared/nodes/flow-control.js +3 -2
- package/lib/esm/graph/shared/types.js +1 -1
- package/lib/esm/index.js +5 -4
- package/lib/esm/kibana/builders/KibanaIndexBuilder.js +319 -0
- package/lib/esm/kibana/builders/KibanaIndexBuilderCollection.js +32 -0
- package/lib/esm/kibana/builders/index.js +3 -0
- package/lib/esm/kibana/helpers.js +19 -15
- package/lib/esm/kibana/index.js +2 -1
- package/lib/esm/kibana/types.js +13 -2
- package/lib/esm/loader/ObjectLoader.js +115 -0
- package/lib/esm/loader/families.js +66 -0
- package/lib/esm/loader/index.js +11 -0
- package/lib/esm/loader/types.js +2 -0
- package/lib/esm/nest/decorators.js +12 -0
- package/lib/esm/nest/index.js +2 -2
- package/lib/esm/nest/keycloakAuthHandler.js +67 -35
- package/lib/esm/nest/keycloakModule.js +7 -10
- package/lib/esm/nest/types.js +1 -1
- package/lib/esm/nest/utils.js +55 -46
- package/lib/esm/plugins/contract.js +68 -0
- package/lib/esm/plugins/index.js +18 -0
- package/lib/esm/plugins/kibana/host.js +19 -0
- package/lib/esm/plugins/kibana/index.js +14 -0
- package/lib/esm/plugins/kibana/installer.js +140 -0
- package/lib/esm/plugins/kibana/manifest.js +32 -0
- package/lib/esm/plugins/kibana/templates.js +499 -0
- package/lib/esm/plugins/kibana/types.js +10 -0
- package/lib/esm/plugins/superset/host.js +21 -0
- package/lib/esm/plugins/superset/index.js +16 -0
- package/lib/esm/plugins/superset/installer.js +192 -0
- package/lib/esm/plugins/superset/manifest.js +30 -0
- package/lib/esm/plugins/superset/templates.js +840 -0
- package/lib/esm/plugins/superset/types.js +11 -0
- package/lib/types/feature-flags/constants.d.cts +11 -0
- package/lib/types/feature-flags/constants.d.mts +11 -0
- package/lib/types/feature-flags/decorators.d.cts +11 -0
- package/lib/types/feature-flags/decorators.d.mts +11 -0
- package/lib/types/feature-flags/environment.d.cts +11 -0
- package/lib/types/feature-flags/environment.d.mts +11 -0
- package/lib/types/feature-flags/index.d.cts +13 -0
- package/lib/types/feature-flags/index.d.mts +13 -0
- package/lib/types/feature-flags/models/FeatureFlag.model.d.cts +16 -0
- package/lib/types/feature-flags/models/FeatureFlag.model.d.mts +16 -0
- package/lib/types/feature-flags/models/FeatureFlagAccess.model.d.cts +15 -0
- package/lib/types/feature-flags/models/FeatureFlagAccess.model.d.mts +15 -0
- package/lib/types/feature-flags/readers/FeatureFlagReader.d.cts +10 -0
- package/lib/types/feature-flags/readers/FeatureFlagReader.d.mts +10 -0
- package/lib/types/feature-flags/readers/index.d.cts +1 -0
- package/lib/types/feature-flags/readers/index.d.mts +1 -0
- package/lib/types/feature-flags/services/FeatureFlag.service.d.cts +43 -0
- package/lib/types/feature-flags/services/FeatureFlag.service.d.mts +43 -0
- package/lib/types/feature-flags/types.d.cts +39 -0
- package/lib/types/feature-flags/types.d.mts +39 -0
- package/lib/types/feature-flags/utils.d.cts +13 -0
- package/lib/types/feature-flags/utils.d.mts +13 -0
- package/lib/types/graph/engine/execution/SwitchGraphNodeExecutor.d.cts +2 -2
- package/lib/types/graph/engine/execution/SwitchGraphNodeExecutor.d.mts +2 -2
- package/lib/types/graph/shared/types.d.cts +3 -3
- package/lib/types/graph/shared/types.d.mts +3 -3
- package/lib/types/index.d.cts +3 -2
- package/lib/types/index.d.mts +3 -2
- package/lib/types/kibana/builders/KibanaIndexBuilder.d.cts +67 -0
- package/lib/types/kibana/builders/KibanaIndexBuilder.d.mts +67 -0
- package/lib/types/kibana/builders/KibanaIndexBuilderCollection.d.cts +17 -0
- package/lib/types/kibana/builders/KibanaIndexBuilderCollection.d.mts +17 -0
- package/lib/types/kibana/builders/index.d.cts +2 -0
- package/lib/types/kibana/builders/index.d.mts +2 -0
- package/lib/types/kibana/index.d.cts +1 -0
- package/lib/types/kibana/index.d.mts +1 -0
- package/lib/types/kibana/types.d.cts +11 -0
- package/lib/types/kibana/types.d.mts +11 -0
- package/lib/types/loader/ObjectLoader.d.cts +27 -0
- package/lib/types/loader/ObjectLoader.d.mts +27 -0
- package/lib/types/loader/families.d.cts +34 -0
- package/lib/types/loader/families.d.mts +34 -0
- package/lib/types/loader/index.d.cts +10 -0
- package/lib/types/loader/index.d.mts +10 -0
- package/lib/types/loader/types.d.cts +24 -0
- package/lib/types/loader/types.d.mts +24 -0
- package/lib/types/nest/decorators.d.cts +8 -0
- package/lib/types/nest/decorators.d.mts +8 -0
- package/lib/types/nest/index.d.cts +1 -1
- package/lib/types/nest/index.d.mts +1 -1
- package/lib/types/nest/keycloakAuthHandler.d.cts +19 -42
- package/lib/types/nest/keycloakAuthHandler.d.mts +19 -42
- package/lib/types/nest/keycloakModule.d.cts +3 -5
- package/lib/types/nest/keycloakModule.d.mts +3 -5
- package/lib/types/nest/types.d.cts +2 -0
- package/lib/types/nest/types.d.mts +2 -0
- package/lib/types/nest/utils.d.cts +3 -4
- package/lib/types/nest/utils.d.mts +3 -4
- package/lib/types/plugins/contract.d.cts +180 -0
- package/lib/types/plugins/contract.d.mts +180 -0
- package/lib/types/plugins/index.d.cts +17 -0
- package/lib/types/plugins/index.d.mts +17 -0
- package/lib/types/plugins/kibana/host.d.cts +18 -0
- package/lib/types/plugins/kibana/host.d.mts +18 -0
- package/lib/types/plugins/kibana/index.d.cts +13 -0
- package/lib/types/plugins/kibana/index.d.mts +13 -0
- package/lib/types/plugins/kibana/installer.d.cts +45 -0
- package/lib/types/plugins/kibana/installer.d.mts +45 -0
- package/lib/types/plugins/kibana/manifest.d.cts +31 -0
- package/lib/types/plugins/kibana/manifest.d.mts +31 -0
- package/lib/types/plugins/kibana/templates.d.cts +12 -0
- package/lib/types/plugins/kibana/templates.d.mts +12 -0
- package/lib/types/plugins/kibana/types.d.cts +9 -0
- package/lib/types/plugins/kibana/types.d.mts +9 -0
- package/lib/types/plugins/superset/host.d.cts +20 -0
- package/lib/types/plugins/superset/host.d.mts +20 -0
- package/lib/types/plugins/superset/index.d.cts +15 -0
- package/lib/types/plugins/superset/index.d.mts +15 -0
- package/lib/types/plugins/superset/installer.d.cts +70 -0
- package/lib/types/plugins/superset/installer.d.mts +70 -0
- package/lib/types/plugins/superset/manifest.d.cts +28 -0
- package/lib/types/plugins/superset/manifest.d.mts +28 -0
- package/lib/types/plugins/superset/templates.d.cts +12 -0
- package/lib/types/plugins/superset/templates.d.mts +12 -0
- package/lib/types/plugins/superset/types.d.cts +10 -0
- package/lib/types/plugins/superset/types.d.mts +10 -0
- package/package.json +62 -3
- package/plugins/kibana/.gitignore +16 -0
- package/plugins/kibana/Dockerfile +19 -0
- package/plugins/kibana/docker-compose.yml +50 -0
- package/plugins/kibana/host/index.html +101 -0
- package/plugins/kibana/setup-dashboards.sh +84 -0
- package/plugins/superset/.gitignore +17 -0
- package/plugins/superset/Dockerfile +79 -0
- package/plugins/superset/docker-compose.yml +62 -0
- package/plugins/superset/host/index.html +168 -0
- package/plugins/superset/setup-dashboards.sh +106 -0
- package/plugins/superset/superset_config.py +49 -0
- package/lib/cjs/nest/authService.cjs +0 -91
- package/lib/esm/nest/authService.js +0 -86
- package/lib/types/nest/authService.d.cts +0 -63
- package/lib/types/nest/authService.d.mts +0 -63
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export * from "./KibanaIndexBuilder.js";
|
|
2
|
+
export * from "./KibanaIndexBuilderCollection.js";
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMva2liYW5hL2J1aWxkZXJzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHdDQUFxQztBQUNyQyxrREFBK0MiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tIFwiLi9LaWJhbmFJbmRleEJ1aWxkZXJcIjtcbmV4cG9ydCAqIGZyb20gXCIuL0tpYmFuYUluZGV4QnVpbGRlckNvbGxlY3Rpb25cIjtcbiJdfQ==
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { KibanaIndexMatchMode } from "./types.js";
|
|
2
|
+
import { KibanaIndexBuilder } from "./builders/KibanaIndexBuilder.js";
|
|
1
3
|
export function createDefaultKibanaSpaceConfig(realm) {
|
|
2
4
|
return {
|
|
3
5
|
id: realm.toLowerCase(),
|
|
@@ -10,20 +12,22 @@ export function createDefaultKibanaSpaceConfig(realm) {
|
|
|
10
12
|
export function createDefaultKibanaDataViewConfigs(realm) {
|
|
11
13
|
const suffix = realm.toLowerCase();
|
|
12
14
|
return [
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
15
|
+
new KibanaIndexBuilder()
|
|
16
|
+
.setMatchMode(KibanaIndexMatchMode.PREFIX)
|
|
17
|
+
.setPrefix(`filebeat-pla-${suffix}`)
|
|
18
|
+
.setId(`filebeat_pla_${suffix}`)
|
|
19
|
+
.setName(`PLA Filebeat Logs (${realm})`)
|
|
20
|
+
.setTimeFieldName("@timestamp")
|
|
21
|
+
.setAllowNoIndex(true)
|
|
22
|
+
.build(),
|
|
23
|
+
new KibanaIndexBuilder()
|
|
24
|
+
.setMatchMode(KibanaIndexMatchMode.PREFIX)
|
|
25
|
+
.setPrefix(`metricbeat-pla-${suffix}`)
|
|
26
|
+
.setId(`logs_pla_${suffix}`)
|
|
27
|
+
.setName(`PLA Metricbeat Logs (${realm})`)
|
|
28
|
+
.setTimeFieldName("@timestamp")
|
|
29
|
+
.setAllowNoIndex(true)
|
|
30
|
+
.build(),
|
|
27
31
|
];
|
|
28
32
|
}
|
|
29
33
|
export function createDefaultKibanaRoleConfig(realm) {
|
|
@@ -53,4 +57,4 @@ export function createDefaultKibanaRoleConfig(realm) {
|
|
|
53
57
|
metadata: {},
|
|
54
58
|
};
|
|
55
59
|
}
|
|
56
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
60
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9raWJhbmEvaGVscGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFVQSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsbUJBQWdCO0FBQy9DLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSx5Q0FBc0M7QUFFbkUsTUFBTSxVQUFVLDhCQUE4QixDQUFDLEtBQWE7SUFDMUQsT0FBTztRQUNMLEVBQUUsRUFBRSxLQUFLLENBQUMsV0FBVyxFQUFFO1FBQ3ZCLElBQUksRUFBRSxLQUFLLENBQUMsV0FBVyxFQUFFO1FBQ3pCLFdBQVcsRUFBRSxvQkFBb0IsS0FBSyxDQUFDLFdBQVcsRUFBRSxzQkFBc0I7UUFDMUUsUUFBUSxFQUFFLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRTtRQUN6QyxnQkFBZ0IsRUFBRSxFQUFFO0tBQ3JCLENBQUM7QUFDSixDQUFDO0FBRUQsTUFBTSxVQUFVLGtDQUFrQyxDQUFDLEtBQWE7SUFDOUQsTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ25DLE9BQU87UUFDTCxJQUFJLGtCQUFrQixFQUFFO2FBQ3JCLFlBQVksQ0FBQyxvQkFBb0IsQ0FBQyxNQUFNLENBQUM7YUFDekMsU0FBUyxDQUFDLGdCQUFnQixNQUFNLEVBQUUsQ0FBQzthQUNuQyxLQUFLLENBQUMsZ0JBQWdCLE1BQU0sRUFBRSxDQUFDO2FBQy9CLE9BQU8sQ0FBQyxzQkFBc0IsS0FBSyxHQUFHLENBQUM7YUFDdkMsZ0JBQWdCLENBQUMsWUFBWSxDQUFDO2FBQzlCLGVBQWUsQ0FBQyxJQUFJLENBQUM7YUFDckIsS0FBSyxFQUFFO1FBQ1YsSUFBSSxrQkFBa0IsRUFBRTthQUNyQixZQUFZLENBQUMsb0JBQW9CLENBQUMsTUFBTSxDQUFDO2FBQ3pDLFNBQVMsQ0FBQyxrQkFBa0IsTUFBTSxFQUFFLENBQUM7YUFDckMsS0FBSyxDQUFDLFlBQVksTUFBTSxFQUFFLENBQUM7YUFDM0IsT0FBTyxDQUFDLHdCQUF3QixLQUFLLEdBQUcsQ0FBQzthQUN6QyxnQkFBZ0IsQ0FBQyxZQUFZLENBQUM7YUFDOUIsZUFBZSxDQUFDLElBQUksQ0FBQzthQUNyQixLQUFLLEVBQUU7S0FDWCxDQUFDO0FBQ0osQ0FBQztBQUVELE1BQU0sVUFBVSw2QkFBNkIsQ0FBQyxLQUFhO0lBQ3pELE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNuQyxPQUFPO1FBQ0wsSUFBSSxFQUFFLE9BQU8sTUFBTSxTQUFTO1FBQzVCLE9BQU8sRUFBRTtZQUNQO2dCQUNFLEtBQUssRUFBRSxDQUFDLGdCQUFnQixNQUFNLElBQUksRUFBRSxrQkFBa0IsTUFBTSxJQUFJLENBQUM7Z0JBQ2pFLFVBQVUsRUFBRSxDQUFDLE1BQU0sRUFBRSxxQkFBcUIsQ0FBQztnQkFDM0Msd0JBQXdCLEVBQUUsS0FBSzthQUNoQztTQUNGO1FBQ0QsWUFBWSxFQUFFO1lBQ1o7Z0JBQ0UsV0FBVyxFQUFFLGdCQUFnQjtnQkFDN0IsVUFBVSxFQUFFLENBQUMsdUJBQXVCLEVBQUUsd0JBQXdCLENBQUM7Z0JBQy9ELFNBQVMsRUFBRSxDQUFDLFNBQVMsS0FBSyxFQUFFLENBQUM7YUFDOUI7U0FDRjtRQUNELE1BQU0sRUFBRTtZQUNOO2dCQUNFLE1BQU0sRUFBRSxDQUFDLEtBQUssQ0FBQztnQkFDZixJQUFJLEVBQUUsQ0FBQyxNQUFNLENBQUM7YUFDZjtTQUNGO1FBQ0QsUUFBUSxFQUFFLEVBQUU7S0FDYixDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQG1vZHVsZSBpbnRlZ3JhdGlvbnMva2liYW5hL2hlbHBlcnNcbiAqIEBzdW1tYXJ5IEtpYmFuYSBjb25maWd1cmF0aW9uIGhlbHBlcnMuXG4gKiBAZGVzY3JpcHRpb24gQ29udmVuaWVuY2UgYnVpbGRlcnMgZm9yIGRlZmF1bHQgS2liYW5hIHNwYWNlcywgZGF0YSB2aWV3cywgYW5kIHJvbGUgY29uZmlndXJhdGlvbnMuXG4gKi9cbmltcG9ydCB0eXBlIHtcbiAgS2liYW5hRGF0YVZpZXdDb25maWcsXG4gIEtpYmFuYVJvbGVDb25maWcsXG4gIEtpYmFuYVNwYWNlQ29uZmlnLFxufSBmcm9tIFwiLi90eXBlc1wiO1xuaW1wb3J0IHsgS2liYW5hSW5kZXhNYXRjaE1vZGUgfSBmcm9tIFwiLi90eXBlc1wiO1xuaW1wb3J0IHsgS2liYW5hSW5kZXhCdWlsZGVyIH0gZnJvbSBcIi4vYnVpbGRlcnMvS2liYW5hSW5kZXhCdWlsZGVyXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVEZWZhdWx0S2liYW5hU3BhY2VDb25maWcocmVhbG06IHN0cmluZyk6IEtpYmFuYVNwYWNlQ29uZmlnIHtcbiAgcmV0dXJuIHtcbiAgICBpZDogcmVhbG0udG9Mb3dlckNhc2UoKSxcbiAgICBuYW1lOiByZWFsbS50b1VwcGVyQ2FzZSgpLFxuICAgIGRlc2NyaXB0aW9uOiBgVGVuYW50IHNwYWNlIGZvciAke3JlYWxtLnRvVXBwZXJDYXNlKCl9IGRhc2hib2FyZHMgYW5kIGxvZ3NgLFxuICAgIGluaXRpYWxzOiByZWFsbS5zbGljZSgwLCAyKS50b1VwcGVyQ2FzZSgpLFxuICAgIGRpc2FibGVkRmVhdHVyZXM6IFtdLFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlRGVmYXVsdEtpYmFuYURhdGFWaWV3Q29uZmlncyhyZWFsbTogc3RyaW5nKTogS2liYW5hRGF0YVZpZXdDb25maWdbXSB7XG4gIGNvbnN0IHN1ZmZpeCA9IHJlYWxtLnRvTG93ZXJDYXNlKCk7XG4gIHJldHVybiBbXG4gICAgbmV3IEtpYmFuYUluZGV4QnVpbGRlcigpXG4gICAgICAuc2V0TWF0Y2hNb2RlKEtpYmFuYUluZGV4TWF0Y2hNb2RlLlBSRUZJWClcbiAgICAgIC5zZXRQcmVmaXgoYGZpbGViZWF0LXBsYS0ke3N1ZmZpeH1gKVxuICAgICAgLnNldElkKGBmaWxlYmVhdF9wbGFfJHtzdWZmaXh9YClcbiAgICAgIC5zZXROYW1lKGBQTEEgRmlsZWJlYXQgTG9ncyAoJHtyZWFsbX0pYClcbiAgICAgIC5zZXRUaW1lRmllbGROYW1lKFwiQHRpbWVzdGFtcFwiKVxuICAgICAgLnNldEFsbG93Tm9JbmRleCh0cnVlKVxuICAgICAgLmJ1aWxkKCksXG4gICAgbmV3IEtpYmFuYUluZGV4QnVpbGRlcigpXG4gICAgICAuc2V0TWF0Y2hNb2RlKEtpYmFuYUluZGV4TWF0Y2hNb2RlLlBSRUZJWClcbiAgICAgIC5zZXRQcmVmaXgoYG1ldHJpY2JlYXQtcGxhLSR7c3VmZml4fWApXG4gICAgICAuc2V0SWQoYGxvZ3NfcGxhXyR7c3VmZml4fWApXG4gICAgICAuc2V0TmFtZShgUExBIE1ldHJpY2JlYXQgTG9ncyAoJHtyZWFsbX0pYClcbiAgICAgIC5zZXRUaW1lRmllbGROYW1lKFwiQHRpbWVzdGFtcFwiKVxuICAgICAgLnNldEFsbG93Tm9JbmRleCh0cnVlKVxuICAgICAgLmJ1aWxkKCksXG4gIF07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVEZWZhdWx0S2liYW5hUm9sZUNvbmZpZyhyZWFsbTogc3RyaW5nKTogS2liYW5hUm9sZUNvbmZpZyB7XG4gIGNvbnN0IHN1ZmZpeCA9IHJlYWxtLnRvTG93ZXJDYXNlKCk7XG4gIHJldHVybiB7XG4gICAgbmFtZTogYHBsYV8ke3N1ZmZpeH1fcmVhZGVyYCxcbiAgICBpbmRpY2VzOiBbXG4gICAgICB7XG4gICAgICAgIG5hbWVzOiBbYGZpbGViZWF0LXBsYS0ke3N1ZmZpeH0tKmAsIGBtZXRyaWNiZWF0LXBsYS0ke3N1ZmZpeH0tKmBdLFxuICAgICAgICBwcml2aWxlZ2VzOiBbXCJyZWFkXCIsIFwidmlld19pbmRleF9tZXRhZGF0YVwiXSxcbiAgICAgICAgYWxsb3dfcmVzdHJpY3RlZF9pbmRpY2VzOiBmYWxzZSxcbiAgICAgIH0sXG4gICAgXSxcbiAgICBhcHBsaWNhdGlvbnM6IFtcbiAgICAgIHtcbiAgICAgICAgYXBwbGljYXRpb246IFwia2liYW5hLS5raWJhbmFcIixcbiAgICAgICAgcHJpdmlsZWdlczogW1wiZmVhdHVyZV9kaXNjb3Zlci5yZWFkXCIsIFwiZmVhdHVyZV9kYXNoYm9hcmQucmVhZFwiXSxcbiAgICAgICAgcmVzb3VyY2VzOiBbYHNwYWNlOiR7cmVhbG19YF0sXG4gICAgICB9LFxuICAgIF0sXG4gICAga2liYW5hOiBbXG4gICAgICB7XG4gICAgICAgIHNwYWNlczogW3JlYWxtXSxcbiAgICAgICAgYmFzZTogW1wicmVhZFwiXSxcbiAgICAgIH0sXG4gICAgXSxcbiAgICBtZXRhZGF0YToge30sXG4gIH07XG59XG4iXX0=
|
package/lib/esm/kibana/index.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
export * from "./types.js";
|
|
2
2
|
export * from "./helpers.js";
|
|
3
|
+
export * from "./builders/index.js";
|
|
3
4
|
export * from "./services/index.js";
|
|
4
5
|
/**
|
|
5
6
|
* @summary Kibana integrations.
|
|
@@ -7,4 +8,4 @@ export * from "./services/index.js";
|
|
|
7
8
|
* @namespace kibana
|
|
8
9
|
* @memberOf module:integrations
|
|
9
10
|
*/
|
|
10
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
11
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMva2liYW5hL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDJCQUF3QjtBQUN4Qiw2QkFBMEI7QUFDMUIsb0NBQTJCO0FBQzNCLG9DQUEyQjtBQUUzQjs7Ozs7R0FLRyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gXCIuL3R5cGVzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9oZWxwZXJzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9idWlsZGVyc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vc2VydmljZXNcIjtcblxuLyoqXG4gKiBAc3VtbWFyeSBLaWJhbmEgaW50ZWdyYXRpb25zLlxuICogQGRlc2NyaXB0aW9uIEhlbHBlcnMgZm9yIHByb3Zpc2lvbmluZyBLaWJhbmEgc3BhY2VzLCBkYXRhIHZpZXdzLCBhbmQgZGFzaGJvYXJkcy5cbiAqIEBuYW1lc3BhY2Uga2liYW5hXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmludGVncmF0aW9uc1xuICovXG4iXX0=
|
package/lib/esm/kibana/types.js
CHANGED
|
@@ -1,2 +1,13 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
/**
|
|
2
|
+
* Matching strategy for composing Kibana index pattern titles.
|
|
3
|
+
*/
|
|
4
|
+
export var KibanaIndexMatchMode;
|
|
5
|
+
(function (KibanaIndexMatchMode) {
|
|
6
|
+
/** Single, fully-qualified index name — no wildcards. */
|
|
7
|
+
KibanaIndexMatchMode["EXACT"] = "exact";
|
|
8
|
+
/** Wildcard pattern matching all indices with a shared prefix (e.g. "filebeat-*"). */
|
|
9
|
+
KibanaIndexMatchMode["PREFIX"] = "prefix";
|
|
10
|
+
/** Index name segments derived from registered LogParameterDescriptor keys. */
|
|
11
|
+
KibanaIndexMatchMode["LOGGER_GENERATED"] = "logger-generated";
|
|
12
|
+
})(KibanaIndexMatchMode || (KibanaIndexMatchMode = {}));
|
|
13
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMva2liYW5hL3R5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQTBDQTs7R0FFRztBQUNILE1BQU0sQ0FBTixJQUFZLG9CQU9YO0FBUEQsV0FBWSxvQkFBb0I7SUFDOUIseURBQXlEO0lBQ3pELHVDQUFlLENBQUE7SUFDZixzRkFBc0Y7SUFDdEYseUNBQWlCLENBQUE7SUFDakIsK0VBQStFO0lBQy9FLDZEQUFxQyxDQUFBO0FBQ3ZDLENBQUMsRUFQVyxvQkFBb0IsS0FBcEIsb0JBQW9CLFFBTy9CIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBLaWJhbmFVc2VyIHtcbiAgdXNlcm5hbWU6IHN0cmluZztcbiAgcGFzc3dvcmQ6IHN0cmluZztcbiAgZnVsbF9uYW1lPzogc3RyaW5nO1xuICBlbWFpbD86IHN0cmluZztcbiAgZW5hYmxlZD86IGJvb2xlYW47XG4gIHJvbGVzPzogc3RyaW5nW107XG4gIG1ldGFkYXRhPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgS2liYW5hRGFzaGJvYXJkVGFyZ2V0cyB7XG4gIFtrZXk6IHN0cmluZ106IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBLaWJhbmFTcGFjZUNvbmZpZyB7XG4gIGlkOiBzdHJpbmc7XG4gIG5hbWU6IHN0cmluZztcbiAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gIGluaXRpYWxzPzogc3RyaW5nO1xuICBjb2xvcj86IHN0cmluZztcbiAgZGlzYWJsZWRGZWF0dXJlcz86IHN0cmluZ1tdO1xuICBzb2x1dGlvbj86IHN0cmluZztcbiAgaW1hZ2VVcmw/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogQG1vZHVsZSBpbnRlZ3JhdGlvbnMva2liYW5hL3R5cGVzXG4gKiBAc3VtbWFyeSBLaWJhbmEgY29uZmlndXJhdGlvbiBhbmQgcGF5bG9hZCB0eXBlcy5cbiAqIEBkZXNjcmlwdGlvbiBTaGFyZWQgdHlwZSBkZWZpbml0aW9ucyBmb3IgS2liYW5hIHByb3Zpc2lvbmluZyBzZXJ2aWNlcyBhbmQgc2V0dXAgcGF5bG9hZHMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgS2liYW5hRGF0YVZpZXdDb25maWcge1xuICBpZDogc3RyaW5nO1xuICBuYW1lOiBzdHJpbmc7XG4gIHRpdGxlOiBzdHJpbmc7XG4gIHRpbWVGaWVsZE5hbWU/OiBzdHJpbmc7XG4gIG5hbWVzcGFjZXM/OiBzdHJpbmdbXTtcbiAgc291cmNlRmlsdGVycz86IEFycmF5PHsgdmFsdWU6IHN0cmluZyB9PjtcbiAgcnVudGltZUZpZWxkTWFwPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gIGZpZWxkQXR0cnM/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgYWxsb3dOb0luZGV4PzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBNYXRjaGluZyBzdHJhdGVneSBmb3IgY29tcG9zaW5nIEtpYmFuYSBpbmRleCBwYXR0ZXJuIHRpdGxlcy5cbiAqL1xuZXhwb3J0IGVudW0gS2liYW5hSW5kZXhNYXRjaE1vZGUge1xuICAvKiogU2luZ2xlLCBmdWxseS1xdWFsaWZpZWQgaW5kZXggbmFtZSDigJQgbm8gd2lsZGNhcmRzLiAqL1xuICBFWEFDVCA9IFwiZXhhY3RcIixcbiAgLyoqIFdpbGRjYXJkIHBhdHRlcm4gbWF0Y2hpbmcgYWxsIGluZGljZXMgd2l0aCBhIHNoYXJlZCBwcmVmaXggKGUuZy4gXCJmaWxlYmVhdC0qXCIpLiAqL1xuICBQUkVGSVggPSBcInByZWZpeFwiLFxuICAvKiogSW5kZXggbmFtZSBzZWdtZW50cyBkZXJpdmVkIGZyb20gcmVnaXN0ZXJlZCBMb2dQYXJhbWV0ZXJEZXNjcmlwdG9yIGtleXMuICovXG4gIExPR0dFUl9HRU5FUkFURUQgPSBcImxvZ2dlci1nZW5lcmF0ZWRcIixcbn1cblxuZXhwb3J0IGludGVyZmFjZSBLaWJhbmFSb2xlQ29uZmlnIHtcbiAgbmFtZTogc3RyaW5nO1xuICBpbmRpY2VzPzogQXJyYXk8e1xuICAgIG5hbWVzOiBzdHJpbmdbXTtcbiAgICBwcml2aWxlZ2VzOiBzdHJpbmdbXTtcbiAgICBhbGxvd19yZXN0cmljdGVkX2luZGljZXM/OiBib29sZWFuO1xuICB9PjtcbiAgYXBwbGljYXRpb25zPzogQXJyYXk8e1xuICAgIGFwcGxpY2F0aW9uOiBzdHJpbmc7XG4gICAgcHJpdmlsZWdlczogc3RyaW5nW107XG4gICAgcmVzb3VyY2VzOiBzdHJpbmdbXTtcbiAgfT47XG4gIGtpYmFuYT86IEFycmF5PHtcbiAgICBiYXNlPzogc3RyaW5nW107XG4gICAgZmVhdHVyZT86IFJlY29yZDxzdHJpbmcsIHN0cmluZ1tdPjtcbiAgICBzcGFjZXM/OiBzdHJpbmdbXTtcbiAgfT47XG4gIG1ldGFkYXRhPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgS2liYW5hU2V0dXBDb25maWcge1xuICBpZDogc3RyaW5nO1xuICBob3N0OiBzdHJpbmc7XG4gIGVzX2hvc3Q6IHN0cmluZztcbiAgcHJvdG9jb2w6IFwiaHR0cFwiIHwgXCJodHRwc1wiO1xuICByZWFsbTogc3RyaW5nO1xuICBzcGFjZT86IFBhcnRpYWw8S2liYW5hU3BhY2VDb25maWc+O1xuICBkYXRhVmlld3M/OiBLaWJhbmFEYXRhVmlld0NvbmZpZ1tdO1xuICByb2xlPzogUGFydGlhbDxLaWJhbmFSb2xlQ29uZmlnPjtcbiAgZGFzaGJvYXJkcz86IEtpYmFuYURhc2hib2FyZFRhcmdldHM7XG4gIGFkbWluQXBpVXNlcj86IEtpYmFuYVVzZXI7XG4gIHJlYWxtQXBpVXNlcjogS2liYW5hVXNlcjtcbiAgZGFzaGJvYXJkSW1wb3J0UGF0aD86IHN0cmluZztcbiAgZGFzaGJvYXJkSW1wb3J0T3ZlcndyaXRlPzogYm9vbGVhbjtcbiAgYXNzZXRzPzogc3RyaW5nO1xufVxuIl19
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
import { isAbsolute, resolve } from "path";
|
|
2
|
+
import { pathToFileURL } from "url";
|
|
3
|
+
function isPathLikeSource(source) {
|
|
4
|
+
return (source.startsWith(".") ||
|
|
5
|
+
source.startsWith("/") ||
|
|
6
|
+
isAbsolute(source) ||
|
|
7
|
+
/^[A-Za-z]:[\\/]/.test(source));
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* @module integrations/loader
|
|
11
|
+
* @summary Dynamic TypeScript object loader utilities.
|
|
12
|
+
* @description Base loader and concrete family loaders for dynamically
|
|
13
|
+
* resolving Decaf integration objects without forcing callers to duplicate
|
|
14
|
+
* import, selection, or post-load hook logic.
|
|
15
|
+
*/
|
|
16
|
+
export class ObjectLoader {
|
|
17
|
+
constructor(options = {}) {
|
|
18
|
+
this.family = options.family ?? "generic";
|
|
19
|
+
this.defaultExportName = options.defaultExportName ?? "default";
|
|
20
|
+
this.hooks = options.hooks ?? [];
|
|
21
|
+
}
|
|
22
|
+
normalizeSource(source) {
|
|
23
|
+
if (source instanceof URL) {
|
|
24
|
+
return source.href;
|
|
25
|
+
}
|
|
26
|
+
if (source.startsWith("file:") || source.startsWith("data:")) {
|
|
27
|
+
return source;
|
|
28
|
+
}
|
|
29
|
+
if (isPathLikeSource(source)) {
|
|
30
|
+
return pathToFileURL(resolve(source)).href;
|
|
31
|
+
}
|
|
32
|
+
return source;
|
|
33
|
+
}
|
|
34
|
+
async importModule(source) {
|
|
35
|
+
const normalized = this.normalizeSource(source);
|
|
36
|
+
return (await import(normalized));
|
|
37
|
+
}
|
|
38
|
+
resolveExport(module, exportName, source) {
|
|
39
|
+
const exportedNames = Object.keys(module).filter((key) => key !== "__esModule");
|
|
40
|
+
if (exportName === "default") {
|
|
41
|
+
if ("default" in module) {
|
|
42
|
+
return module.default;
|
|
43
|
+
}
|
|
44
|
+
if (exportedNames.length === 1) {
|
|
45
|
+
return module[exportedNames[0]];
|
|
46
|
+
}
|
|
47
|
+
throw new Error(`Module "${source}" does not expose a default export.`);
|
|
48
|
+
}
|
|
49
|
+
if (!(exportName in module)) {
|
|
50
|
+
throw new Error(`Module "${source}" does not export "${exportName}".`);
|
|
51
|
+
}
|
|
52
|
+
return module[exportName];
|
|
53
|
+
}
|
|
54
|
+
async applyHooks(value, context, hooks) {
|
|
55
|
+
let current = value;
|
|
56
|
+
for (const hook of hooks) {
|
|
57
|
+
const next = await hook(current, context);
|
|
58
|
+
if (typeof next !== "undefined") {
|
|
59
|
+
current = next;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
return current;
|
|
63
|
+
}
|
|
64
|
+
createInstance(options) {
|
|
65
|
+
const Loader = this.constructor;
|
|
66
|
+
return new Loader(options);
|
|
67
|
+
}
|
|
68
|
+
async loadModule(source) {
|
|
69
|
+
return this.importModule(source);
|
|
70
|
+
}
|
|
71
|
+
async loadExport(source, exportName = this.defaultExportName, options = {}) {
|
|
72
|
+
const normalizedSource = this.normalizeSource(source);
|
|
73
|
+
const module = await this.importModule(normalizedSource);
|
|
74
|
+
const resolved = this.resolveExport(module, exportName, normalizedSource);
|
|
75
|
+
const hookContext = {
|
|
76
|
+
family: this.family,
|
|
77
|
+
source: normalizedSource,
|
|
78
|
+
exportName,
|
|
79
|
+
module,
|
|
80
|
+
loaderName: this.constructor.name,
|
|
81
|
+
};
|
|
82
|
+
const hooks = [...this.hooks, ...(options.hooks ?? [])];
|
|
83
|
+
return this.applyHooks(resolved, hookContext, hooks);
|
|
84
|
+
}
|
|
85
|
+
async loadDefault(source, options = {}) {
|
|
86
|
+
return this.loadExport(source, this.defaultExportName, options);
|
|
87
|
+
}
|
|
88
|
+
async load(source, options = {}) {
|
|
89
|
+
return this.loadDefault(source, options);
|
|
90
|
+
}
|
|
91
|
+
withHooks(...hooks) {
|
|
92
|
+
return this.createInstance({
|
|
93
|
+
family: this.family,
|
|
94
|
+
defaultExportName: this.defaultExportName,
|
|
95
|
+
hooks: [...this.hooks, ...hooks],
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
withOptions(options) {
|
|
99
|
+
return this.createInstance({
|
|
100
|
+
family: options.family ?? this.family,
|
|
101
|
+
defaultExportName: options.defaultExportName ?? this.defaultExportName,
|
|
102
|
+
hooks: [...this.hooks, ...(options.hooks ?? [])],
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
export function createLoaderHookContext(loader, module, source, exportName) {
|
|
107
|
+
return {
|
|
108
|
+
family: loader.family,
|
|
109
|
+
source,
|
|
110
|
+
exportName,
|
|
111
|
+
module,
|
|
112
|
+
loaderName: loader.constructor.name,
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiT2JqZWN0TG9hZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xvYWRlci9PYmplY3RMb2FkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDM0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLEtBQUssQ0FBQztBQVlwQyxTQUFTLGdCQUFnQixDQUFDLE1BQWM7SUFDdEMsT0FBTyxDQUNMLE1BQU0sQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDO1FBQ3RCLE1BQU0sQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDO1FBQ3RCLFVBQVUsQ0FBQyxNQUFNLENBQUM7UUFDbEIsaUJBQWlCLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUMvQixDQUFDO0FBQ0osQ0FBQztBQUVEOzs7Ozs7R0FNRztBQUNILE1BQU0sT0FBTyxZQUFZO0lBT3ZCLFlBQW1CLFVBQStCLEVBQUU7UUFDbEQsSUFBSSxDQUFDLE1BQU0sR0FBRyxPQUFPLENBQUMsTUFBTSxJQUFJLFNBQVMsQ0FBQztRQUMxQyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsT0FBTyxDQUFDLGlCQUFpQixJQUFJLFNBQVMsQ0FBQztRQUNoRSxJQUFJLENBQUMsS0FBSyxHQUFHLE9BQU8sQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDO0lBQ25DLENBQUM7SUFFUyxlQUFlLENBQUMsTUFBMEI7UUFDbEQsSUFBSSxNQUFNLFlBQVksR0FBRyxFQUFFLENBQUM7WUFDMUIsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDO1FBQ3JCLENBQUM7UUFFRCxJQUFJLE1BQU0sQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLElBQUksTUFBTSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQzdELE9BQU8sTUFBTSxDQUFDO1FBQ2hCLENBQUM7UUFFRCxJQUFJLGdCQUFnQixDQUFDLE1BQU0sQ0FB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QUFDLENBQUM7U0FDakQsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUNGO0FBRUQsTUFBTSxVQUFVLHVCQUF1QixDQUNyQyxNQUFvQixFQUNwQixNQUF5QyxFQUN6QyxNQUFjLEVBQ2QsVUFBa0I7SUFFbEIsT0FBTztRQUNMLE1BQU0sRUFBRSxNQUFNLENBQUMsTUFBTTtRQUNyQixNQUFNO1FBQ04sVUFBVTtRQUNWLE1BQU07UUFDTixVQUFVLEVBQUUsTUFBTSxDQUFDLFdBQVcsQ0FBQyxJQUFJO0tBQ3BDLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaXNBYnNvbHV0ZSwgcmVzb2x2ZSB9IGZyb20gXCJwYXRoXCI7XG5pbXBvcnQgeyBwYXRoVG9GaWxlVVJMIH0gZnJvbSBcInVybFwiO1xuXG5pbXBvcnQgdHlwZSB7XG4gIE9iamVjdExvYWRlckV4cG9ydFNlbGVjdGlvbixcbiAgT2JqZWN0TG9hZGVyRmFtaWx5LFxuICBPYmplY3RMb2FkZXJIb29rLFxuICBPYmplY3RMb2FkZXJIb29rQ29udGV4dCxcbiAgT2JqZWN0TG9hZGVyTG9hZE9wdGlvbnMsXG4gIE9iamVjdExvYWRlck9wdGlvbnMsXG4gIE9iamVjdExvYWRlclNvdXJjZSxcbn0gZnJvbSBcIi4vdHlwZXNcIjtcblxuZnVuY3Rpb24gaXNQYXRoTGlrZVNvdXJjZShzb3VyY2U6IHN0cmluZyk6IGJvb2xlYW4ge1xuICByZXR1cm4gKFxuICAgIHNvdXJjZS5zdGFydHNXaXRoKFwiLlwiKSB8fFxuICAgIHNvdXJjZS5zdGFydHNXaXRoKFwiL1wiKSB8fFxuICAgIGlzQWJzb2x1dGUoc291cmNlKSB8fFxuICAgIC9eW0EtWmEtel06W1xcXFwvXS8udGVzdChzb3VyY2UpXG4gICk7XG59XG5cbi8qKlxuICogQG1vZHVsZSBpbnRlZ3JhdGlvbnMvbG9hZGVyXG4gKiBAc3VtbWFyeSBEeW5hbWljIFR5cGVTY3JpcHQgb2JqZWN0IGxvYWRlciB1dGlsaXRpZXMuXG4gKiBAZGVzY3JpcHRpb24gQmFzZSBsb2FkZXIgYW5kIGNvbmNyZXRlIGZhbWlseSBsb2FkZXJzIGZvciBkeW5hbWljYWxseVxuICogcmVzb2x2aW5nIERlY2FmIGludGVncmF0aW9uIG9iamVjdHMgd2l0aG91dCBmb3JjaW5nIGNhbGxlcnMgdG8gZHVwbGljYXRlXG4gKiBpbXBvcnQsIHNlbGVjdGlvbiwgb3IgcG9zdC1sb2FkIGhvb2sgbG9naWMuXG4gKi9cbmV4cG9ydCBjbGFzcyBPYmplY3RMb2FkZXIge1xuICBwdWJsaWMgcmVhZG9ubHkgZmFtaWx5OiBPYmplY3RMb2FkZXJGYW1pbHk7XG5cbiAgcHVibGljIHJlYWRvbmx5IGRlZmF1bHRFeHBvcnROYW1lOiBzdHJpbmc7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGhvb2tzOiByZWFkb25seSBPYmplY3RMb2FkZXJIb29rW107XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKG9wdGlvbnM6IE9iamVjdExvYWRlck9wdGlvbnMgPSB7fSkge1xuICAgIHRoaXMuZmFtaWx5ID0gb3B0aW9ucy5mYW1pbHkgPz8gXCJnZW5lcmljXCI7XG4gICAgdGhpcy5kZWZhdWx0RXhwb3J0TmFtZSA9IG9wdGlvbnMuZGVmYXVsdEV4cG9ydE5hbWUgPz8gXCJkZWZhdWx0XCI7XG4gICAgdGhpcy5ob29rcyA9IG9wdGlvbnMuaG9va3MgPz8gW107XG4gIH1cblxuICBwcm90ZWN0ZWQgbm9ybWFsaXplU291cmNlKHNvdXJjZTogT2JqZWN0TG9hZGVyU291cmNlKTogc3RyaW5nIHtcbiAgICBpZiAoc291cmNlIGluc3RhbmNlb2YgVVJMKSB7XG4gICAgICByZXR1cm4gc291cmNlLmhyZWY7XG4gICAgfVxuXG4gICAgaWYgKHNvdXJjZS5zdGFydHNXaXRoKFwiZmlsZTpcIikgfHwgc291cmNlLnN0YXJ0c1dpdGgoXCJkYXRhOlwiKSkge1xuICAgICAgcmV0dXJuIHNvdXJjZTtcbiAgICB9XG5cbiAgICBpZiAoaXNQYXRoTGlrZVNvdXJjZShzb3VyY2UpKSB7XG4gICAgICByZXR1cm4gcGF0aFRvRmlsZVVSTChyZXNvbHZlKHNvdXJjZSkpLmhyZWY7XG4gICAgfVxuXG4gICAgcmV0dXJuIHNvdXJjZTtcbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyBpbXBvcnRNb2R1bGUoXG4gICAgc291cmNlOiBPYmplY3RMb2FkZXJTb3VyY2VcbiAgKTogUHJvbWlzZTxSZWFkb25seTxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4+IHtcbiAgICBjb25zdCBub3JtYWxpemVkID0gdGhpcy5ub3JtYWxpemVTb3VyY2Uoc291cmNlKTtcbiAgICByZXR1cm4gKGF3YWl0IGltcG9ydChub3JtYWxpemVkKSkgYXMgUmVhZG9ubHk8UmVjb3JkPHN0cmluZywgdW5rbm93bj4+O1xuICB9XG5cbiAgcHJvdGVjdGVkIHJlc29sdmVFeHBvcnQoXG4gICAgbW9kdWxlOiBSZWFkb25seTxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4sXG4gICAgZXhwb3J0TmFtZTogc3RyaW5nLFxuICAgIHNvdXJjZTogc3RyaW5nXG4gICk6IHVua25vd24ge1xuICAgIGNvbnN0IGV4cG9ydGVkTmFtZXMgPSBPYmplY3Qua2V5cyhtb2R1bGUpLmZpbHRlcihcbiAgICAgIChrZXkpID0+IGtleSAhPT0gXCJfX2VzTW9kdWxlXCJcbiAgICApO1xuXG4gICAgaWYgKGV4cG9ydE5hbWUgPT09IFwiZGVmYXVsdFwiKSB7XG4gICAgICBpZiAoXCJkZWZhdWx0XCIgaW4gbW9kdWxlKSB7XG4gICAgICAgIHJldHVybiBtb2R1bGUuZGVmYXVsdDtcbiAgICAgIH1cblxuICAgICAgaWYgKGV4cG9ydGVkTmFtZXMubGVuZ3RoID09PSAxKSB7XG4gICAgICAgIHJldHVybiBtb2R1bGVbZXhwb3J0ZWROYW1lc1swXV07XG4gICAgICB9XG5cbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYE1vZHVsZSBcIiR7c291cmNlfVwiIGRvZXMgbm90IGV4cG9zZSBhIGRlZmF1bHQgZXhwb3J0LmBcbiAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKCEoZXhwb3J0TmFtZSBpbiBtb2R1bGUpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYE1vZHVsZSBcIiR7c291cmNlfVwiIGRvZXMgbm90IGV4cG9ydCBcIiR7ZXhwb3J0TmFtZX1cIi5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbW9kdWxlW2V4cG9ydE5hbWVdO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIGFwcGx5SG9va3M8VD4oXG4gICAgdmFsdWU6IFQsXG4gICAgY29udGV4dDogT2JqZWN0TG9hZGVySG9va0NvbnRleHQsXG4gICAgaG9va3M6IHJlYWRvbmx5IE9iamVjdExvYWRlckhvb2tbXVxuICApOiBQcm9taXNlPFQ+IHtcbiAgICBsZXQgY3VycmVudCA9IHZhbHVlO1xuXG4gICAgZm9yIChjb25zdCBob29rIG9mIGhvb2tzKSB7XG4gICAgICBjb25zdCBuZXh0ID0gYXdhaXQgaG9vayhjdXJyZW50LCBjb250ZXh0KTtcbiAgICAgIGlmICh0eXBlb2YgbmV4dCAhPT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgICBjdXJyZW50ID0gbmV4dCBhcyBUO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBjdXJyZW50O1xuICB9XG5cbiAgcHJvdGVjdGVkIGNyZWF0ZUluc3RhbmNlKG9wdGlvbnM6IE9iamVjdExvYWRlck9wdGlvbnMpOiB0aGlzIHtcbiAgICBjb25zdCBMb2FkZXIgPSB0aGlzLmNvbnN0cnVjdG9yIGFzIG5ldyAoXG4gICAgICBvcHRpb25zPzogT2JqZWN0TG9hZGVyT3B0aW9uc1xuICAgICkgPT4gT2JqZWN0TG9hZGVyO1xuICAgIHJldHVybiBuZXcgTG9hZGVyKG9wdGlvbnMpIGFzIHRoaXM7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgbG9hZE1vZHVsZShcbiAgICBzb3VyY2U6IE9iamVjdExvYWRlclNvdXJjZVxuICApOiBQcm9taXNlPFJlYWRvbmx5PFJlY29yZDxzdHJpbmcsIHVua25vd24+Pj4ge1xuICAgIHJldHVybiB0aGlzLmltcG9ydE1vZHVsZShzb3VyY2UpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGxvYWRFeHBvcnQ8VCA9IHVua25vd24+KFxuICAgIHNvdXJjZTogT2JqZWN0TG9hZGVyU291cmNlLFxuICAgIGV4cG9ydE5hbWU6IHN0cmluZyA9IHRoaXMuZGVmYXVsdEV4cG9ydE5hbWUsXG4gICAgb3B0aW9uczogT2JqZWN0TG9hZGVyTG9hZE9wdGlvbnMgPSB7fVxuICApOiBQcm9taXNlPFQ+IHtcbiAgICBjb25zdCBub3JtYWxpemVkU291cmNlID0gdGhpcy5ub3JtYWxpemVTb3VyY2Uoc291cmNlKTtcbiAgICBjb25zdCBtb2R1bGUgPSBhd2FpdCB0aGlzLmltcG9ydE1vZHVsZShub3JtYWxpemVkU291cmNlKTtcbiAgICBjb25zdCByZXNvbHZlZCA9IHRoaXMucmVzb2x2ZUV4cG9ydChtb2R1bGUsIGV4cG9ydE5hbWUsIG5vcm1hbGl6ZWRTb3VyY2UpO1xuICAgIGNvbnN0IGhvb2tDb250ZXh0OiBPYmplY3RMb2FkZXJIb29rQ29udGV4dCA9IHtcbiAgICAgIGZhbWlseTogdGhpcy5mYW1pbHksXG4gICAgICBzb3VyY2U6IG5vcm1hbGl6ZWRTb3VyY2UsXG4gICAgICBleHBvcnROYW1lLFxuICAgICAgbW9kdWxlLFxuICAgICAgbG9hZGVyTmFtZTogdGhpcy5jb25zdHJ1Y3Rvci5uYW1lLFxuICAgIH07XG5cbiAgICBjb25zdCBob29rcyA9IFsuLi50aGlzLmhvb2tzLCAuLi4ob3B0aW9ucy5ob29rcyA/PyBbXSldO1xuICAgIHJldHVybiB0aGlzLmFwcGx5SG9va3MocmVzb2x2ZWQgYXMgVCwgaG9va0NvbnRleHQsIGhvb2tzKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBsb2FkRGVmYXVsdDxUID0gdW5rbm93bj4oXG4gICAgc291cmNlOiBPYmplY3RMb2FkZXJTb3VyY2UsXG4gICAgb3B0aW9uczogT2JqZWN0TG9hZGVyTG9hZE9wdGlvbnMgPSB7fVxuICApOiBQcm9taXNlPFQ+IHtcbiAgICByZXR1cm4gdGhpcy5sb2FkRXhwb3J0PFQ+KHNvdXJjZSwgdGhpcy5kZWZhdWx0RXhwb3J0TmFtZSwgb3B0aW9ucyk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgbG9hZDxUID0gdW5rbm93bj4oXG4gICAgc291cmNlOiBPYmplY3RMb2FkZXJTb3VyY2UsXG4gICAgb3B0aW9uczogT2JqZWN0TG9hZGVyTG9hZE9wdGlvbnMgPSB7fVxuICApOiBQcm9taXNlPFQ+IHtcbiAgICByZXR1cm4gdGhpcy5sb2FkRGVmYXVsdDxUPihzb3VyY2UsIG9wdGlvbnMpO1xuICB9XG5cbiAgcHVibGljIHdpdGhIb29rcyguLi5ob29rczogT2JqZWN0TG9hZGVySG9va1tdKTogdGhpcyB7XG4gICAgcmV0dXJuIHRoaXMuY3JlYXRlSW5zdGFuY2Uoe1xuICAgICAgZmFtaWx5OiB0aGlzLmZhbWlseSxcbiAgICAgIGRlZmF1bHRFeHBvcnROYW1lOiB0aGlzLmRlZmF1bHRFeHBvcnROYW1lLFxuICAgICAgaG9va3M6IFsuLi50aGlzLmhvb2tzLCAuLi5ob29rc10sXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgd2l0aE9wdGlvbnMob3B0aW9uczogUGFydGlhbDxPYmplY3RMb2FkZXJPcHRpb25zPik6IHRoaXMge1xuICAgIHJldHVybiB0aGlzLmNyZWF0ZUluc3RhbmNlKHtcbiAgICAgIGZhbWlseTogb3B0aW9ucy5mYW1pbHkgPz8gdGhpcy5mYW1pbHksXG4gICAgICBkZWZhdWx0RXhwb3J0TmFtZTpcbiAgICAgICAgb3B0aW9ucy5kZWZhdWx0RXhwb3J0TmFtZSA/PyB0aGlzLmRlZmF1bHRFeHBvcnROYW1lLFxuICAgICAgaG9va3M6IFsuLi50aGlzLmhvb2tzLCAuLi4ob3B0aW9ucy5ob29rcyA/PyBbXSldLFxuICAgIH0pO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVMb2FkZXJIb29rQ29udGV4dChcbiAgbG9hZGVyOiBPYmplY3RMb2FkZXIsXG4gIG1vZHVsZTogUmVhZG9ubHk8UmVjb3JkPHN0cmluZywgdW5rbm93bj4+LFxuICBzb3VyY2U6IHN0cmluZyxcbiAgZXhwb3J0TmFtZTogc3RyaW5nXG4pOiBPYmplY3RMb2FkZXJIb29rQ29udGV4dCB7XG4gIHJldHVybiB7XG4gICAgZmFtaWx5OiBsb2FkZXIuZmFtaWx5LFxuICAgIHNvdXJjZSxcbiAgICBleHBvcnROYW1lLFxuICAgIG1vZHVsZSxcbiAgICBsb2FkZXJOYW1lOiBsb2FkZXIuY29uc3RydWN0b3IubmFtZSxcbiAgfTtcbn1cblxuZXhwb3J0IHR5cGUgeyBPYmplY3RMb2FkZXJFeHBvcnRTZWxlY3Rpb24gfTtcbiJdfQ==
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { ObjectLoader } from "./ObjectLoader.js";
|
|
2
|
+
export class ModelObjectLoader extends ObjectLoader {
|
|
3
|
+
constructor(options = {}) {
|
|
4
|
+
super({ ...options, family: "model" });
|
|
5
|
+
}
|
|
6
|
+
async loadModel(source, exportName = this.defaultExportName, options = {}) {
|
|
7
|
+
return this.loadExport(source, exportName, options);
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
export class AdapterObjectLoader extends ObjectLoader {
|
|
11
|
+
constructor(options = {}) {
|
|
12
|
+
super({ ...options, family: "adapter" });
|
|
13
|
+
}
|
|
14
|
+
async loadAdapter(source, exportName = this.defaultExportName, options = {}) {
|
|
15
|
+
return this.loadExport(source, exportName, options);
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
export class RepositoryObjectLoader extends ObjectLoader {
|
|
19
|
+
constructor(options = {}) {
|
|
20
|
+
super({ ...options, family: "repository" });
|
|
21
|
+
}
|
|
22
|
+
async loadRepository(source, exportName = this.defaultExportName, options = {}) {
|
|
23
|
+
return this.loadExport(source, exportName, options);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
export class ServiceObjectLoader extends ObjectLoader {
|
|
27
|
+
constructor(options = {}) {
|
|
28
|
+
super({ ...options, family: "service" });
|
|
29
|
+
}
|
|
30
|
+
async loadService(source, exportName = this.defaultExportName, options = {}) {
|
|
31
|
+
return this.loadExport(source, exportName, options);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
export class ControllerObjectLoader extends ObjectLoader {
|
|
35
|
+
constructor(options = {}) {
|
|
36
|
+
super({ ...options, family: "controller" });
|
|
37
|
+
}
|
|
38
|
+
async loadController(source, exportName = this.defaultExportName, options = {}) {
|
|
39
|
+
return this.loadExport(source, exportName, options);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
export class EnvironmentObjectLoader extends ObjectLoader {
|
|
43
|
+
constructor(options = {}) {
|
|
44
|
+
super({ ...options, family: "environment" });
|
|
45
|
+
}
|
|
46
|
+
async loadEnvironment(source, exportName = this.defaultExportName, options = {}) {
|
|
47
|
+
return this.loadExport(source, exportName, options);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
export class AngularComponentObjectLoader extends ObjectLoader {
|
|
51
|
+
constructor(options = {}) {
|
|
52
|
+
super({ ...options, family: "component" });
|
|
53
|
+
}
|
|
54
|
+
async loadComponent(source, exportName = this.defaultExportName, options = {}) {
|
|
55
|
+
return this.loadExport(source, exportName, options);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
export class GraphNodeObjectLoader extends ObjectLoader {
|
|
59
|
+
constructor(options = {}) {
|
|
60
|
+
super({ ...options, family: "node" });
|
|
61
|
+
}
|
|
62
|
+
async loadNode(source, exportName = this.defaultExportName, options = {}) {
|
|
63
|
+
return this.loadExport(source, exportName, options);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFtaWxpZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbG9hZGVyL2ZhbWlsaWVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsMEJBQXVCO0FBTzlDLE1BQU0sT0FBTyxpQkFBa0IsU0FBUSxZQUFZO0lBQ2pELFlBQW1CLFVBQStCLEVBQUU7UUFDbEQsS0FBSyxDQUFDLEVBQUUsR0FBRyxPQUFPLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUM7SUFDekMsQ0FBQztJQUVNLEtBQUssQ0FBQyxTQUFTLENBQ3BCLE1BQTBCLEVBQzFCLGFBQXFCLElBQUksQ0FBQyxpQkFBaUIsRUFDM0MsVUFBbUMsRUFBRTtRQUVyQyxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUksTUFBTSxFQUFFLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUN6RCxDQUFDO0NBQ0Y7QUFFRCxNQUFNLE9BQU8sbUJBQW9CLFNBQVEsWUFBWTtJQUNuRCxZQUFtQixVQUErQixFQUFFO1FBQ2xELEtBQUssQ0FBQyxFQUFFLEdBQUcsT0FBTyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDO0lBQzNDLENBQUM7SUFFTSxLQUFLLENBQUMsV0FBVyxDQUN0QixNQUEwQixFQUMxQixhQUFxQixJQUFJLENBQUMsaUJBQWlCLEVBQzNDLFVBQW1DLEVBQUU7UUFFckMsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFJLE1BQU0sRUFBRSxVQUFVLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDekQsQ0FBQztDQUNGO0FBRUQsTUFBTSxPQUFPLHNCQUF1QixTQUFRLFlBQVk7SUFDdEQsWUFBbUIsVUFBK0IsRUFBRTtRQUNsRCxLQUFLLENBQUMsRUFBRSxHQUFHLE9BQU8sRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLENBQUMsQ0FBQztJQUM5QyxDQUFDO0lBRU0sS0FBSyxDQUFDLGNBQWMsQ0FDekIsTUFBMEIsRUFDMUIsYUFBcUIsSUFBSSxDQUFDLGlCQUFpQixFQUMzQyxVQUFtQyxFQUFFO1FBRXJDLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBSSxNQUFNLEVBQUUsVUFBVSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3pELENBQUM7Q0FDRjtBQUVELE1BQU0sT0FBTyxtQkFBb0IsU0FBUSxZQUFZO0lBQ25ELFlBQW1CLFVBQStCLEVBQUU7UUFDbEQsS0FBSyxDQUFDLEVBQUUsR0FBRyxPQUFPLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUVNLEtBQUssQ0FBQyxXQUFXLENBQ3RCLE1BQTBCLEVBQzFCLGFBQXFCLElBQUksQ0FBQyxpQkFBaUIsRUFDM0MsVUFBbUMsRUFBRTtRQUVyQyxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUksTUFBTSxFQUFFLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUN6RCxDQUFDO0NBQ0Y7QUFFRCxNQUFNLE9BQU8sc0JBQXVCLFNBQVEsWUFBWTtJQUN0RCxZQUFtQixVQUErQixFQUFFO1FBQ2xELEtBQUssQ0FBQyxFQUFFLEdBQUcsT0FBTyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFFTSxLQUFLLENBQUMsY0FBYyxDQUN6QixNQUEwQixFQUMxQixhQUFxQixJQUFJLENBQUMsaUJBQWlCLEVBQzNDLFVBQW1DLEVBQUU7UUFFckMsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFJLE1BQU0sRUFBRSxVQUFVLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDekQsQ0FBQztDQUNGO0FBRUQsTUFBTSxPQUFPLHVCQUF3QixTQUFRLFlBQVk7SUFDdkQsWUFBbUIsVUFBK0IsRUFBRTtRQUNsRCxLQUFLLENBQUMsRUFBRSxHQUFHLE9BQU8sRUFBRSxNQUFNLEVBQUUsYUFBYSxFQUFFLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBRU0sS0FBSyxDQUFDLGVBQWUsQ0FDMUIsTUFBMEIsRUFDMUIsYUFBcUIsSUFBSSxDQUFDLGlCQUFpQixFQUMzQyxVQUFtQyxFQUFFO1FBRXJDLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBSSxNQUFNLEVBQUUsVUFBVSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3pELENBQUM7Q0FDRjtBQUVELE1BQU0sT0FBTyw0QkFBNkIsU0FBUSxZQUFZO0lBQzVELFlBQW1CLFVBQStCLEVBQUU7UUFDbEQsS0FBSyxDQUFDLEVBQUUsR0FBRyxPQUFPLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVNLEtBQUssQ0FBQyxhQUFhLENBQ3hCLE1BQTBCLEVBQzFCLGFBQXFCLElBQUksQ0FBQyxpQkFBaUIsRUFDM0MsVUFBbUMsRUFBRTtRQUVyQyxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUksTUFBTSxFQUFFLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUN6RCxDQUFDO0NBQ0Y7QUFFRCxNQUFNLE9BQU8scUJBQXNCLFNBQVEsWUFBWTtJQUNyRCxZQUFtQixVQUErQixFQUFFO1FBQ2xELEtBQUssQ0FBQyxFQUFFLEdBQUcsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDO0lBQ3hDLENBQUM7SUFFTSxLQUFLLENBQUMsUUFBUSxDQUNuQixNQUEwQixFQUMxQixhQUFxQixJQUFJLENBQUMsaUJBQWlCLEVBQzNDLFVBQW1DLEVBQUU7UUFFckMsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFJLE1BQU0sRUFBRSxVQUFVLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDekQsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT2JqZWN0TG9hZGVyIH0gZnJvbSBcIi4vT2JqZWN0TG9hZGVyXCI7XG5pbXBvcnQgdHlwZSB7XG4gIE9iamVjdExvYWRlckxvYWRPcHRpb25zLFxuICBPYmplY3RMb2FkZXJPcHRpb25zLFxuICBPYmplY3RMb2FkZXJTb3VyY2UsXG59IGZyb20gXCIuL3R5cGVzXCI7XG5cbmV4cG9ydCBjbGFzcyBNb2RlbE9iamVjdExvYWRlciBleHRlbmRzIE9iamVjdExvYWRlciB7XG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihvcHRpb25zOiBPYmplY3RMb2FkZXJPcHRpb25zID0ge30pIHtcbiAgICBzdXBlcih7IC4uLm9wdGlvbnMsIGZhbWlseTogXCJtb2RlbFwiIH0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGxvYWRNb2RlbDxUID0gdW5rbm93bj4oXG4gICAgc291cmNlOiBPYmplY3RMb2FkZXJTb3VyY2UsXG4gICAgZXhwb3J0TmFtZTogc3RyaW5nID0gdGhpcy5kZWZhdWx0RXhwb3J0TmFtZSxcbiAgICBvcHRpb25zOiBPYmplY3RMb2FkZXJMb2FkT3B0aW9ucyA9IHt9XG4gICk6IFByb21pc2U8VD4ge1xuICAgIHJldHVybiB0aGlzLmxvYWRFeHBvcnQ8VD4oc291cmNlLCBleHBvcnROYW1lLCBvcHRpb25zKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgQWRhcHRlck9iamVjdExvYWRlciBleHRlbmRzIE9iamVjdExvYWRlciB7XG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihvcHRpb25zOiBPYmplY3RMb2FkZXJPcHRpb25zID0ge30pIHtcbiAgICBzdXBlcih7IC4uLm9wdGlvbnMsIGZhbWlseTogXCJhZGFwdGVyXCIgfSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgbG9hZEFkYXB0ZXI8VCA9IHVua25vd24+KFxuICAgIHNvdXJjZTogT2JqZWN0TG9hZGVyU291cmNlLFxuICAgIGV4cG9ydE5hbWU6IHN0cmluZyA9IHRoaXMuZGVmYXVsdEV4cG9ydE5hbWUsXG4gICAgb3B0aW9uczogT2JqZWN0TG9hZGVyTG9hZE9wdGlvbnMgPSB7fVxuICApOiBQcm9taXNlPFQ+IHtcbiAgICByZXR1cm4gdGhpcy5sb2FkRXhwb3J0PFQ+KHNvdXJjZSwgZXhwb3J0TmFtZSwgb3B0aW9ucyk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFJlcG9zaXRvcnlPYmplY3RMb2FkZXIgZXh0ZW5kcyBPYmplY3RMb2FkZXIge1xuICBwdWJsaWMgY29uc3RydWN0b3Iob3B0aW9uczogT2JqZWN0TG9hZGVyT3B0aW9ucyA9IHt9KSB7XG4gICAgc3VwZXIoeyAuLi5vcHRpb25zLCBmYW1pbHk6IFwicmVwb3NpdG9yeVwiIH0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGxvYWRSZXBvc2l0b3J5PFQgPSB1bmtub3duPihcbiAgICBzb3VyY2U6IE9iamVjdExvYWRlclNvdXJjZSxcbiAgICBleHBvcnROYW1lOiBzdHJpbmcgPSB0aGlzLmRlZmF1bHRFeHBvcnROYW1lLFxuICAgIG9wdGlvbnM6IE9iamVjdExvYWRlckxvYWRPcHRpb25zID0ge31cbiAgKTogUHJvbWlzZTxUPiB7XG4gICAgcmV0dXJuIHRoaXMubG9hZEV4cG9ydDxUPihzb3VyY2UsIGV4cG9ydE5hbWUsIG9wdGlvbnMpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBTZXJ2aWNlT2JqZWN0TG9hZGVyIGV4dGVuZHMgT2JqZWN0TG9hZGVyIHtcbiAgcHVibGljIGNvbnN0cnVjdG9yKG9wdGlvbnM6IE9iamVjdExvYWRlck9wdGlvbnMgPSB7fSkge1xuICAgIHN1cGVyKHsgLi4ub3B0aW9ucywgZmFtaWx5OiBcInNlcnZpY2VcIiB9KTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBsb2FkU2VydmljZTxUID0gdW5rbm93bj4oXG4gICAgc291cmNlOiBPYmplY3RMb2FkZXJTb3VyY2UsXG4gICAgZXhwb3J0TmFtZTogc3RyaW5nID0gdGhpcy5kZWZhdWx0RXhwb3J0TmFtZSxcbiAgICBvcHRpb25zOiBPYmplY3RMb2FkZXJMb2FkT3B0aW9ucyA9IHt9XG4gICk6IFByb21pc2U8VD4ge1xuICAgIHJldHVybiB0aGlzLmxvYWRFeHBvcnQ8VD4oc291cmNlLCBleHBvcnROYW1lLCBvcHRpb25zKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgQ29udHJvbGxlck9iamVjdExvYWRlciBleHRlbmRzIE9iamVjdExvYWRlciB7XG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihvcHRpb25zOiBPYmplY3RMb2FkZXJPcHRpb25zID0ge30pIHtcbiAgICBzdXBlcih7IC4uLm9wdGlvbnMsIGZhbWlseTogXCJjb250cm9sbGVyXCIgfSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgbG9hZENvbnRyb2xsZXI8VCA9IHVua25vd24+KFxuICAgIHNvdXJjZTogT2JqZWN0TG9hZGVyU291cmNlLFxuICAgIGV4cG9ydE5hbWU6IHN0cmluZyA9IHRoaXMuZGVmYXVsdEV4cG9ydE5hbWUsXG4gICAgb3B0aW9uczogT2JqZWN0TG9hZGVyTG9hZE9wdGlvbnMgPSB7fVxuICApOiBQcm9taXNlPFQ+IHtcbiAgICByZXR1cm4gdGhpcy5sb2FkRXhwb3J0PFQ+KHNvdXJjZSwgZXhwb3J0TmFtZSwgb3B0aW9ucyk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEVudmlyb25tZW50T2JqZWN0TG9hZGVyIGV4dGVuZHMgT2JqZWN0TG9hZGVyIHtcbiAgcHVibGljIGNvbnN0cnVjdG9yKG9wdGlvbnM6IE9iamVjdExvYWRlck9wdGlvbnMgPSB7fSkge1xuICAgIHN1cGVyKHsgLi4ub3B0aW9ucywgZmFtaWx5OiBcImVudmlyb25tZW50XCIgfSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgbG9hZEVudmlyb25tZW50PFQgPSB1bmtub3duPihcbiAgICBzb3VyY2U6IE9iamVjdExvYWRlclNvdXJjZSxcbiAgICBleHBvcnROYW1lOiBzdHJpbmcgPSB0aGlzLmRlZmF1bHRFeHBvcnROYW1lLFxuICAgIG9wdGlvbnM6IE9iamVjdExvYWRlckxvYWRPcHRpb25zID0ge31cbiAgKTogUHJvbWlzZTxUPiB7XG4gICAgcmV0dXJuIHRoaXMubG9hZEV4cG9ydDxUPihzb3VyY2UsIGV4cG9ydE5hbWUsIG9wdGlvbnMpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBBbmd1bGFyQ29tcG9uZW50T2JqZWN0TG9hZGVyIGV4dGVuZHMgT2JqZWN0TG9hZGVyIHtcbiAgcHVibGljIGNvbnN0cnVjdG9yKG9wdGlvbnM6IE9iamVjdExvYWRlck9wdGlvbnMgPSB7fSkge1xuICAgIHN1cGVyKHsgLi4ub3B0aW9ucywgZmFtaWx5OiBcImNvbXBvbmVudFwiIH0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGxvYWRDb21wb25lbnQ8VCA9IHVua25vd24+KFxuICAgIHNvdXJjZTogT2JqZWN0TG9hZGVyU291cmNlLFxuICAgIGV4cG9ydE5hbWU6IHN0cmluZyA9IHRoaXMuZGVmYXVsdEV4cG9ydE5hbWUsXG4gICAgb3B0aW9uczogT2JqZWN0TG9hZGVyTG9hZE9wdGlvbnMgPSB7fVxuICApOiBQcm9taXNlPFQ+IHtcbiAgICByZXR1cm4gdGhpcy5sb2FkRXhwb3J0PFQ+KHNvdXJjZSwgZXhwb3J0TmFtZSwgb3B0aW9ucyk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEdyYXBoTm9kZU9iamVjdExvYWRlciBleHRlbmRzIE9iamVjdExvYWRlciB7XG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihvcHRpb25zOiBPYmplY3RMb2FkZXJPcHRpb25zID0ge30pIHtcbiAgICBzdXBlcih7IC4uLm9wdGlvbnMsIGZhbWlseTogXCJub2RlXCIgfSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgbG9hZE5vZGU8VCA9IHVua25vd24+KFxuICAgIHNvdXJjZTogT2JqZWN0TG9hZGVyU291cmNlLFxuICAgIGV4cG9ydE5hbWU6IHN0cmluZyA9IHRoaXMuZGVmYXVsdEV4cG9ydE5hbWUsXG4gICAgb3B0aW9uczogT2JqZWN0TG9hZGVyTG9hZE9wdGlvbnMgPSB7fVxuICApOiBQcm9taXNlPFQ+IHtcbiAgICByZXR1cm4gdGhpcy5sb2FkRXhwb3J0PFQ+KHNvdXJjZSwgZXhwb3J0TmFtZSwgb3B0aW9ucyk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module integrations/loader
|
|
3
|
+
* @summary Dynamic TypeScript object loader exports.
|
|
4
|
+
* @description Dedicated loader surface for resolving Decaf integration
|
|
5
|
+
* objects with reusable post-load hooks. This subpath intentionally keeps the
|
|
6
|
+
* loader code isolated from the package root export surface.
|
|
7
|
+
*/
|
|
8
|
+
export * from "./types.js";
|
|
9
|
+
export * from "./ObjectLoader.js";
|
|
10
|
+
export * from "./families.js";
|
|
11
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbG9hZGVyL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUNILDJCQUF3QjtBQUN4QixrQ0FBK0I7QUFDL0IsOEJBQTJCIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbW9kdWxlIGludGVncmF0aW9ucy9sb2FkZXJcbiAqIEBzdW1tYXJ5IER5bmFtaWMgVHlwZVNjcmlwdCBvYmplY3QgbG9hZGVyIGV4cG9ydHMuXG4gKiBAZGVzY3JpcHRpb24gRGVkaWNhdGVkIGxvYWRlciBzdXJmYWNlIGZvciByZXNvbHZpbmcgRGVjYWYgaW50ZWdyYXRpb25cbiAqIG9iamVjdHMgd2l0aCByZXVzYWJsZSBwb3N0LWxvYWQgaG9va3MuIFRoaXMgc3VicGF0aCBpbnRlbnRpb25hbGx5IGtlZXBzIHRoZVxuICogbG9hZGVyIGNvZGUgaXNvbGF0ZWQgZnJvbSB0aGUgcGFja2FnZSByb290IGV4cG9ydCBzdXJmYWNlLlxuICovXG5leHBvcnQgKiBmcm9tIFwiLi90eXBlc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vT2JqZWN0TG9hZGVyXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9mYW1pbGllc1wiO1xuIl19
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbG9hZGVyL3R5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IENvbnN0cnVjdG9yIH0gZnJvbSBcIkBkZWNhZi10cy9kZWNvcmF0aW9uXCI7XG5cbmV4cG9ydCB0eXBlIE9iamVjdExvYWRlckZhbWlseSA9XG4gIHwgXCJnZW5lcmljXCJcbiAgfCBcIm1vZGVsXCJcbiAgfCBcImFkYXB0ZXJcIlxuICB8IFwicmVwb3NpdG9yeVwiXG4gIHwgXCJzZXJ2aWNlXCJcbiAgfCBcImNvbnRyb2xsZXJcIlxuICB8IFwiZW52aXJvbm1lbnRcIlxuICB8IFwiY29tcG9uZW50XCJcbiAgfCBcIm5vZGVcIjtcblxuZXhwb3J0IHR5cGUgT2JqZWN0TG9hZGVyU291cmNlID0gc3RyaW5nIHwgVVJMO1xuXG5leHBvcnQgdHlwZSBNYXliZVByb21pc2U8VD4gPSBUIHwgUHJvbWlzZTxUPjtcblxuZXhwb3J0IGludGVyZmFjZSBPYmplY3RMb2FkZXJIb29rQ29udGV4dCB7XG4gIHJlYWRvbmx5IGZhbWlseTogT2JqZWN0TG9hZGVyRmFtaWx5O1xuICByZWFkb25seSBzb3VyY2U6IHN0cmluZztcbiAgcmVhZG9ubHkgZXhwb3J0TmFtZTogc3RyaW5nO1xuICByZWFkb25seSBtb2R1bGU6IFJlYWRvbmx5PFJlY29yZDxzdHJpbmcsIHVua25vd24+PjtcbiAgcmVhZG9ubHkgbG9hZGVyTmFtZTogc3RyaW5nO1xufVxuXG5leHBvcnQgdHlwZSBPYmplY3RMb2FkZXJIb29rID0gKFxuICB2YWx1ZTogdW5rbm93bixcbiAgY29udGV4dDogT2JqZWN0TG9hZGVySG9va0NvbnRleHRcbikgPT4gTWF5YmVQcm9taXNlPHVua25vd24gfCB2b2lkPjtcblxuZXhwb3J0IGludGVyZmFjZSBPYmplY3RMb2FkZXJPcHRpb25zIHtcbiAgcmVhZG9ubHkgZmFtaWx5PzogT2JqZWN0TG9hZGVyRmFtaWx5O1xuICByZWFkb25seSBob29rcz86IHJlYWRvbmx5IE9iamVjdExvYWRlckhvb2tbXTtcbiAgcmVhZG9ubHkgZGVmYXVsdEV4cG9ydE5hbWU/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgT2JqZWN0TG9hZGVyTG9hZE9wdGlvbnMge1xuICByZWFkb25seSBob29rcz86IHJlYWRvbmx5IE9iamVjdExvYWRlckhvb2tbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBPYmplY3RMb2FkZXJFeHBvcnRTZWxlY3Rpb24ge1xuICByZWFkb25seSBleHBvcnROYW1lPzogc3RyaW5nO1xufVxuXG5leHBvcnQgdHlwZSBPYmplY3RMb2FkZXJDb25zdHJ1Y3RvcjxUID0gb2JqZWN0PiA9IENvbnN0cnVjdG9yPFQ+O1xuIl19
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { metadata } from "@decaf-ts/decoration";
|
|
2
|
+
export const AUTH_NAMESPACE_KEY = "auth-namespace";
|
|
3
|
+
/**
|
|
4
|
+
* Marks a model as namespace-scoped for auth handlers.
|
|
5
|
+
*
|
|
6
|
+
* This decorator mirrors the role metadata pattern, but stores namespace scopes
|
|
7
|
+
* that downstream auth handlers compare against the authenticated principal.
|
|
8
|
+
*/
|
|
9
|
+
export function namespace(namespaces) {
|
|
10
|
+
return metadata(AUTH_NAMESPACE_KEY, namespaces);
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVjb3JhdG9ycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9uZXN0L2RlY29yYXRvcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRWhELE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHLGdCQUFnQixDQUFDO0FBRW5EOzs7OztHQUtHO0FBQ0gsTUFBTSxVQUFVLFNBQVMsQ0FBQyxVQUFvQjtJQUM1QyxPQUFPLFFBQVEsQ0FBQyxrQkFBa0IsRUFBRSxVQUFVLENBQUMsQ0FBQztBQUNsRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgbWV0YWRhdGEgfSBmcm9tIFwiQGRlY2FmLXRzL2RlY29yYXRpb25cIjtcblxuZXhwb3J0IGNvbnN0IEFVVEhfTkFNRVNQQUNFX0tFWSA9IFwiYXV0aC1uYW1lc3BhY2VcIjtcblxuLyoqXG4gKiBNYXJrcyBhIG1vZGVsIGFzIG5hbWVzcGFjZS1zY29wZWQgZm9yIGF1dGggaGFuZGxlcnMuXG4gKlxuICogVGhpcyBkZWNvcmF0b3IgbWlycm9ycyB0aGUgcm9sZSBtZXRhZGF0YSBwYXR0ZXJuLCBidXQgc3RvcmVzIG5hbWVzcGFjZSBzY29wZXNcbiAqIHRoYXQgZG93bnN0cmVhbSBhdXRoIGhhbmRsZXJzIGNvbXBhcmUgYWdhaW5zdCB0aGUgYXV0aGVudGljYXRlZCBwcmluY2lwYWwuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBuYW1lc3BhY2UobmFtZXNwYWNlczogc3RyaW5nW10pIHtcbiAgcmV0dXJuIG1ldGFkYXRhKEFVVEhfTkFNRVNQQUNFX0tFWSwgbmFtZXNwYWNlcyk7XG59XG4iXX0=
|
package/lib/esm/nest/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export * from "./types.js";
|
|
2
2
|
export * from "./utils.js";
|
|
3
|
-
export * from "./
|
|
3
|
+
export * from "./decorators.js";
|
|
4
4
|
export * from "./keycloakAuthHandler.js";
|
|
5
5
|
export * from "./keycloakModule.js";
|
|
6
6
|
import "./logging.js";
|
|
@@ -11,4 +11,4 @@ import "./logging.js";
|
|
|
11
11
|
* @namespace nest
|
|
12
12
|
* @memberOf module:integrations
|
|
13
13
|
*/
|
|
14
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
14
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbmVzdC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwyQkFBd0I7QUFDeEIsMkJBQXdCO0FBQ3hCLGdDQUE2QjtBQUM3Qix5Q0FBc0M7QUFDdEMsb0NBQWlDO0FBRWpDLHNCQUFtQjtBQUVuQjs7Ozs7O0dBTUciLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tIFwiLi90eXBlc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vdXRpbHNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2RlY29yYXRvcnNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2tleWNsb2FrQXV0aEhhbmRsZXJcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2tleWNsb2FrTW9kdWxlXCI7XG5cbmltcG9ydCBcIi4vbG9nZ2luZ1wiO1xuXG4vKipcbiAqIEBzdW1tYXJ5IE5lc3Qtc3R5bGUgYXV0aCBpbnRlZ3JhdGlvbnMuXG4gKiBAZGVzY3JpcHRpb24gRnJhbWV3b3JrLWFnbm9zdGljIGF1dGggaGVscGVycyBjb21wYXRpYmxlIHdpdGggRGVjYWYgcmVxdWVzdCBjb250ZXh0IGhhbmRsaW5nLlxuICogSW1wb3J0cyB0aGUgYHVzZXJgL2Bvcmdhbml6YXRpb25gIGxvZyBwYXJhbWV0ZXIgcmVnaXN0cmF0aW9ucyBhcyBhIHNpZGUgZWZmZWN0LlxuICogQG5hbWVzcGFjZSBuZXN0XG4gKiBAbWVtYmVyT2YgbW9kdWxlOmludGVncmF0aW9uc1xuICovXG4iXX0=
|
|
@@ -1,45 +1,84 @@
|
|
|
1
|
-
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
8
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
9
|
+
};
|
|
10
|
+
/**
|
|
11
|
+
* @module integrations/nest/keycloakAuthHandler
|
|
12
|
+
* @summary Keycloak request auth handler.
|
|
13
|
+
* @description Translates Keycloak JWT payloads into Decaf-friendly auth data.
|
|
14
|
+
* The base implementation handles the request-to-context plumbing, logger binding,
|
|
15
|
+
* and role checks. Namespace extraction is intentionally split into a dedicated
|
|
16
|
+
* subclass so provider-specific scope handling can be swapped independently.
|
|
17
|
+
*/
|
|
18
|
+
import { AuthorizationError, service } from "@decaf-ts/core";
|
|
19
|
+
import { InternalError } from "@decaf-ts/db-decorators";
|
|
2
20
|
import { AuthHandler } from "@decaf-ts/for-http/server";
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
21
|
+
import { JwtService } from "@decaf-ts/crypto/integration/services/jwt";
|
|
22
|
+
import { extractKeycloakRoles, extractKeycloakNamespaces, getRealmFromIssuer, } from "./utils.js";
|
|
5
23
|
export class KeycloakAuthHandler extends AuthHandler {
|
|
6
|
-
|
|
7
|
-
* @param authService An {@link AuthService} configured with JWKS verification
|
|
8
|
-
* options. When omitted a default decode-only service is
|
|
9
|
-
* used.
|
|
10
|
-
* @param authServiceOptions Convenience: if `authService` is omitted, these
|
|
11
|
-
* options are used to construct one.
|
|
12
|
-
*/
|
|
13
|
-
constructor(authService, authServiceOptions) {
|
|
24
|
+
constructor() {
|
|
14
25
|
super();
|
|
15
|
-
this.authService =
|
|
16
|
-
authService ?? new AuthService(authServiceOptions ?? {});
|
|
17
26
|
}
|
|
18
|
-
|
|
19
|
-
|
|
27
|
+
jwt() {
|
|
28
|
+
if (!this.jwtService) {
|
|
29
|
+
throw new InternalError("JwtService is not available. Make sure the handler is created through Decaf service injection or assign a test double explicitly.");
|
|
30
|
+
}
|
|
31
|
+
return this.jwtService;
|
|
32
|
+
}
|
|
33
|
+
requestFromContext(ctx) {
|
|
34
|
+
return ctx.switchToHttp().getRequest();
|
|
35
|
+
}
|
|
36
|
+
isPublicRequest(request) {
|
|
37
|
+
return isPublicRoute(request);
|
|
38
|
+
}
|
|
39
|
+
parseFromRequest(request) {
|
|
20
40
|
if (isPublicRoute(request)) {
|
|
21
41
|
return { roles: [], token: "", isPublic: true };
|
|
22
42
|
}
|
|
23
43
|
const token = getToken(request);
|
|
24
44
|
if (!token)
|
|
25
45
|
throw new AuthorizationError("Token not found");
|
|
26
|
-
|
|
27
|
-
|
|
46
|
+
const payload = this.jwt().decodePayload(token);
|
|
47
|
+
if (!payload)
|
|
48
|
+
throw new AuthorizationError("Invalid token");
|
|
28
49
|
const roles = extractKeycloakRoles(payload);
|
|
29
|
-
const organization =
|
|
50
|
+
const organization = payload.aud || payload.azp || getRealmFromIssuer(token);
|
|
30
51
|
const user = payload?.email ?? payload?.preferred_username;
|
|
31
52
|
return { user, organization, roles, token, isPublic: false };
|
|
32
53
|
}
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
*/
|
|
38
|
-
async validate(data, routeRoles, model, ...args) {
|
|
54
|
+
extractFromRequest(request) {
|
|
55
|
+
return this.parseFromRequest(request);
|
|
56
|
+
}
|
|
57
|
+
async validateAuth(data, _request) {
|
|
39
58
|
if (data.isPublic)
|
|
40
59
|
return;
|
|
41
|
-
|
|
42
|
-
|
|
60
|
+
if (!data.token)
|
|
61
|
+
throw new AuthorizationError("Token not found");
|
|
62
|
+
await this.jwt().decodeAuthToken(data.token);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
__decorate([
|
|
66
|
+
service(JwtService),
|
|
67
|
+
__metadata("design:type", JwtService)
|
|
68
|
+
], KeycloakAuthHandler.prototype, "jwtService", void 0);
|
|
69
|
+
/**
|
|
70
|
+
* Keycloak handler variant that also extracts namespace scopes from the token.
|
|
71
|
+
*/
|
|
72
|
+
export class KeycloakNamespaceAuthHandler extends KeycloakAuthHandler {
|
|
73
|
+
parseFromRequest(request) {
|
|
74
|
+
const data = super.parseFromRequest(request);
|
|
75
|
+
if (data.isPublic)
|
|
76
|
+
return data;
|
|
77
|
+
const payload = this.jwt().decodePayload(data.token);
|
|
78
|
+
return {
|
|
79
|
+
...data,
|
|
80
|
+
namespaces: extractKeycloakNamespaces(payload),
|
|
81
|
+
};
|
|
43
82
|
}
|
|
44
83
|
}
|
|
45
84
|
function isPublicRoute(req) {
|
|
@@ -54,12 +93,5 @@ function getToken(req) {
|
|
|
54
93
|
return undefined;
|
|
55
94
|
return token.startsWith("Bearer ") ? token.slice("Bearer ".length) : token;
|
|
56
95
|
}
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
return payload.aud;
|
|
60
|
-
if (payload?.azp)
|
|
61
|
-
return payload.azp;
|
|
62
|
-
return getRealmFromIssuer(token);
|
|
63
|
-
}
|
|
64
|
-
export { getClientRoles };
|
|
65
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2V5Y2xvYWtBdXRoSGFuZGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9uZXN0L2tleWNsb2FrQXV0aEhhbmRsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBaUJBLE9BQU8sRUFBRSxrQkFBa0IsRUFBMkIsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3RSxPQUFPLEVBQUUsV0FBVyxFQUFZLE1BQU0sMkJBQTJCLENBQUM7QUFFbEUsT0FBTyxFQUFFLFdBQVcsRUFBMkIseUJBQXNCO0FBRXJFLE9BQU8sRUFDTCxrQkFBa0IsRUFDbEIsZUFBZSxFQUNmLG9CQUFvQixFQUNwQixjQUFjLEdBQ2YsbUJBQWdCO0FBZWpCLE1BQU0sT0FBTyxtQkFBb0IsU0FBUSxXQUl4QztJQUNDOzs7Ozs7T0FNRztJQUNILFlBQ0UsV0FBeUIsRUFDekIsa0JBQXVDO1FBRXZDLEtBQUssRUFBRSxDQUFDO1FBQ1IsSUFBSSxDQUFDLFdBQVc7WUFDZCxXQUFXLElBQUksSUFBSSxXQUFXLENBQUMsa0JBQWtCLElBQUksRUFBRSxDQUFDLENBQUM7SUFDN0QsQ0FBQztJQUlTLGVBQWUsQ0FBQyxHQUE2QjtRQUNyRCxNQUFNLE9BQU8sR0FBRyxHQUFHLENBQUMsWUFBWSxFQUFFLENBQUMsVUFBVSxFQUFtQixDQUFDO1FBRWpFLElBQUksYUFBYSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDM0IsT0FBTyxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUM7UUFDbEQsQ0FBQztRQUVELE1BQU0sS0FBSyxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNoQyxJQUFJLENBQUMsS0FBSztZQUFFLE1BQU0sSUFBSSxrQkFBa0IsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBRTVELGlEQUFpRDtRQUNqRCxNQUFNLE9BQU8sR0FBRyxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDdkMsTUFBTSxLQUFLLEdBQUcsb0JBQW9CLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDNUMsTUFBTSxZQUFZLEdBQUcsbUJBQW1CLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ3pELE1BQU0sSUFBSSxHQUFHLE9BQU8sRUFBRSxLQUFLLElBQUksT0FBTyxFQUFFLGtCQUFrQixDQUFDO1FBRTNELE9BQU8sRUFBRSxJQUFJLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxDQUFDO0lBQy9ELENBQUM7SUFFRDs7OztPQUlHO0lBQ2dCLEtBQUssQ0FBQyxRQUFRLENBQy9CLElBQXNCLEVBQ3RCLFVBQWdDLEVBQ2hDLEtBQTJCLEVBQzNCLEdBQUcsSUFBNkI7UUFFaEMsSUFBSSxJQUFJLENBQUMsUUFBUTtZQUFFLE9BQU87UUFDMUIsTUFBTSxJQUFJLENBQUMsV0FBVyxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNwRCxNQUFNLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQztJQUN6RCxDQUFDO0NBQ0Y7QUFFRCxTQUFTLGFBQWEsQ0FBQyxHQUFvQjtJQUN6QyxJQUFJLEdBQUcsQ0FBQyxJQUFJLEVBQUUsVUFBVSxDQUFDLFNBQVMsQ0FBQztRQUFFLE9BQU8sSUFBSSxDQUFDO0lBQ2pELE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQztBQUVELFNBQVMsUUFBUSxDQUFDLEdBQW9CO0lBQ3BDLE1BQU0sS0FBSyxHQUFHLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxDQUFDLDZCQUE2QixDQUFDO1FBQ3pELEdBQUcsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxlQUFlLENBQUMsQ0FBdUIsQ0FBQztJQUN4RCxJQUFJLENBQUMsS0FBSztRQUFFLE9BQU8sU0FBUyxDQUFDO0lBQzdCLE9BQU8sS0FBSyxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztBQUM3RSxDQUFDO0FBRUQsU0FBUyxtQkFBbUIsQ0FDMUIsT0FBOEMsRUFDOUMsS0FBYTtJQUViLElBQUksT0FBTyxFQUFFLEdBQUc7UUFBRSxPQUFPLE9BQU8sQ0FBQyxHQUFHLENBQUM7SUFDckMsSUFBSSxPQUFPLEVBQUUsR0FBRztRQUFFLE9BQU8sT0FBTyxDQUFDLEdBQUcsQ0FBQztJQUNyQyxPQUFPLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ25DLENBQUM7QUFFRCxPQUFPLEVBQUUsY0FBYyxFQUFFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBtb2R1bGUgaW50ZWdyYXRpb25zL25lc3Qva2V5Y2xvYWtBdXRoSGFuZGxlclxuICogQHN1bW1hcnkgS2V5Y2xvYWsgcmVxdWVzdCBhdXRoIGhhbmRsZXIuXG4gKiBAZGVzY3JpcHRpb24gVHJhbnNsYXRlcyBLZXljbG9hayBKV1QgcGF5bG9hZHMgaW50byBEZWNhZi1mcmllbmRseSBhdXRoIGRhdGEuXG4gKiBFeHRlbmRzIHRoZSBmcmFtZXdvcmstYWdub3N0aWMge0BsaW5rIEF1dGhIYW5kbGVyfSBmcm9tIGBAZGVjYWYtdHMvZm9yLWh0dHAvc2VydmVyYC5cbiAqXG4gKiBPbmx5IG92ZXJyaWRlcyB0aGUgdHdvIGV4dGVuc2lvbiBwb2ludHM6XG4gKiAtIHtAbGluayBLZXljbG9ha0F1dGhIYW5kbGVyLmV4dHJhY3RGcm9tQXV0aH0g4oCUIGRlY29kZXMgdGhlIEpXVCBhbmQgcmV0dXJucyBhdXRoIGRhdGEgKG5vIHZhbGlkYXRpb24pLlxuICogICBSZXR1cm5zIGVtcHR5IGRhdGEgZm9yIHB1YmxpYyByb3V0ZXMgd2l0aG91dCByZXF1aXJpbmcgYSB0b2tlbi5cbiAqIC0ge0BsaW5rIEtleWNsb2FrQXV0aEhhbmRsZXIudmFsaWRhdGV9IOKAlCB2YWxpZGF0ZXMgdGhlIEpXVCB2aWEge0BsaW5rIEF1dGhTZXJ2aWNlLmFzc2VydFZhbGlkVG9rZW59LFxuICogICB0aGVuIGRlbGVnYXRlcyB0byB0aGUgYmFzZSBjbGFzcyBmb3Igcm91dGUtbGV2ZWwgYW5kIG1vZGVsLWxldmVsIHJvbGUgY2hlY2tzLlxuICogICBTa2lwcyBlbnRpcmVseSBmb3IgcHVibGljIHJvdXRlcy5cbiAqXG4gKiBEb2VzIE5PVCBvdmVycmlkZSBgYmluZFRvQ29udGV4dGAg4oCUIHRoZSBiYXNlIGNsYXNzIGRlZmF1bHQgYGN0eC5hY2N1bXVsYXRlKGRhdGEpYFxuICogaXMgc3VmZmljaWVudC4gRG9lcyBOT1Qgb3ZlcnJpZGUgYGF1dGhvcml6ZWAuXG4gKi9cbmltcG9ydCB0eXBlIHsgQ29uc3RydWN0b3IgfSBmcm9tIFwiQGRlY2FmLXRzL2RlY29yYXRpb25cIjtcbmltcG9ydCB7IEF1dGhvcml6YXRpb25FcnJvciwgQ29udGV4dCwgQ29udGV4dHVhbEFyZ3MgfSBmcm9tIFwiQGRlY2FmLXRzL2NvcmVcIjtcbmltcG9ydCB7IEF1dGhIYW5kbGVyLCBBdXRoRGF0YSB9IGZyb20gXCJAZGVjYWYtdHMvZm9yLWh0dHAvc2VydmVyXCI7XG5cbmltcG9ydCB7IEF1dGhTZXJ2aWNlLCB0eXBlIEF1dGhTZXJ2aWNlT3B0aW9ucyB9IGZyb20gXCIuL2F1dGhTZXJ2aWNlXCI7XG5pbXBvcnQgdHlwZSB7IEF1dGhFeGVjdXRpb25Db250ZXh0TGlrZSwgQXV0aFJlcXVlc3RMaWtlIH0gZnJvbSBcIi4vdHlwZXNcIjtcbmltcG9ydCB7XG4gIGdldFJlYWxtRnJvbUlzc3VlcixcbiAgZ2V0VG9rZW5QYXlsb2FkLFxuICBleHRyYWN0S2V5Y2xvYWtSb2xlcyxcbiAgZ2V0Q2xpZW50Um9sZXMsXG59IGZyb20gXCIuL3V0aWxzXCI7XG5cbi8qKlxuICogQXV0aCBkYXRhIHJldHVybmVkIGJ5IHtAbGluayBLZXljbG9ha0F1dGhIYW5kbGVyLmV4dHJhY3RGcm9tQXV0aH0uXG4gKlxuICogQ2FycmllcyB0aGUgcmF3IEpXVCBgdG9rZW5gIHNvIHRoYXQge0BsaW5rIEtleWNsb2FrQXV0aEhhbmRsZXIudmFsaWRhdGV9IGNhblxuICogdmFsaWRhdGUgaXQgYWdhaW5zdCB0aGUgS2V5Y2xvYWsgaW5zdGFuY2UgKHNpZ25hdHVyZSwgZXhwaXJ5LCByZXZvY2F0aW9uLCBldGMuKS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBLZXljbG9ha0F1dGhEYXRhIGV4dGVuZHMgQXV0aERhdGEge1xuICAvKiogVGhlIHJhdyBKV1QgZXh0cmFjdGVkIGZyb20gdGhlIHJlcXVlc3QuIEVtcHR5IGZvciBwdWJsaWMgcm91dGVzLiAqL1xuICB0b2tlbjogc3RyaW5nO1xuICAvKiogV2hldGhlciB0aGUgcmVxdWVzdCB0YXJnZXRzIGEgcHVibGljIHJvdXRlIChza2lwcyB2YWxpZGF0aW9uKS4gKi9cbiAgaXNQdWJsaWM6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBjbGFzcyBLZXljbG9ha0F1dGhIYW5kbGVyIGV4dGVuZHMgQXV0aEhhbmRsZXI8XG4gIEF1dGhFeGVjdXRpb25Db250ZXh0TGlrZSxcbiAgQ29udGV4dCxcbiAgS2V5Y2xvYWtBdXRoRGF0YVxuPiB7XG4gIC8qKlxuICAgKiBAcGFyYW0gYXV0aFNlcnZpY2UgIEFuIHtAbGluayBBdXRoU2VydmljZX0gY29uZmlndXJlZCB3aXRoIEpXS1MgdmVyaWZpY2F0aW9uXG4gICAqICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy4gIFdoZW4gb21pdHRlZCBhIGRlZmF1bHQgZGVjb2RlLW9ubHkgc2VydmljZSBpc1xuICAgKiAgICAgICAgICAgICAgICAgICAgIHVzZWQuXG4gICAqIEBwYXJhbSBhdXRoU2VydmljZU9wdGlvbnMgIENvbnZlbmllbmNlOiBpZiBgYXV0aFNlcnZpY2VgIGlzIG9taXR0ZWQsIHRoZXNlXG4gICAqICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucyBhcmUgdXNlZCB0byBjb25zdHJ1Y3Qgb25lLlxuICAgKi9cbiAgY29uc3RydWN0b3IoXG4gICAgYXV0aFNlcnZpY2U/OiBBdXRoU2VydmljZSxcbiAgICBhdXRoU2VydmljZU9wdGlvbnM/OiBBdXRoU2VydmljZU9wdGlvbnNcbiAgKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLmF1dGhTZXJ2aWNlID1cbiAgICAgIGF1dGhTZXJ2aWNlID8/IG5ldyBBdXRoU2VydmljZShhdXRoU2VydmljZU9wdGlvbnMgPz8ge30pO1xuICB9XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGF1dGhTZXJ2aWNlOiBBdXRoU2VydmljZTtcblxuICBwcm90ZWN0ZWQgZXh0cmFjdEZyb21BdXRoKGN0eDogQXV0aEV4ZWN1dGlvbkNvbnRleHRMaWtlKTogS2V5Y2xvYWtBdXRoRGF0YSB7XG4gICAgY29uc3QgcmVxdWVzdCA9IGN0eC5zd2l0Y2hUb0h0dHAoKS5nZXRSZXF1ZXN0PEF1dGhSZXF1ZXN0TGlrZT4oKTtcblxuICAgIGlmIChpc1B1YmxpY1JvdXRlKHJlcXVlc3QpKSB7XG4gICAgICByZXR1cm4geyByb2xlczogW10sIHRva2VuOiBcIlwiLCBpc1B1YmxpYzogdHJ1ZSB9O1xuICAgIH1cblxuICAgIGNvbnN0IHRva2VuID0gZ2V0VG9rZW4ocmVxdWVzdCk7XG4gICAgaWYgKCF0b2tlbikgdGhyb3cgbmV3IEF1dGhvcml6YXRpb25FcnJvcihcIlRva2VuIG5vdCBmb3VuZFwiKTtcblxuICAgIC8vIERlY29kZSBvbmx5IOKAlCB2YWxpZGF0aW9uIGhhcHBlbnMgaW4gYHZhbGlkYXRlYFxuICAgIGNvbnN0IHBheWxvYWQgPSBnZXRUb2tlblBheWxvYWQodG9rZW4pO1xuICAgIGNvbnN0IHJvbGVzID0gZXh0cmFjdEtleWNsb2FrUm9sZXMocGF5bG9hZCk7XG4gICAgY29uc3Qgb3JnYW5pemF0aW9uID0gcmVzb2x2ZU9yZ2FuaXphdGlvbihwYXlsb2FkLCB0b2tlbik7XG4gICAgY29uc3QgdXNlciA9IHBheWxvYWQ/LmVtYWlsID8/IHBheWxvYWQ/LnByZWZlcnJlZF91c2VybmFtZTtcblxuICAgIHJldHVybiB7IHVzZXIsIG9yZ2FuaXphdGlvbiwgcm9sZXMsIHRva2VuLCBpc1B1YmxpYzogZmFsc2UgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZXMgdGhlIEpXVCBhZ2FpbnN0IHRoZSBLZXljbG9hayBpbnN0YW5jZSAoc2lnbmF0dXJlLCBleHBpcnksIGV0Yy4pXG4gICAqIHZpYSB7QGxpbmsgQXV0aFNlcnZpY2UuYXNzZXJ0VmFsaWRUb2tlbn0sIHRoZW4gZGVsZWdhdGVzIHRvIHRoZSBiYXNlIGNsYXNzXG4gICAqIGZvciByb3V0ZS1sZXZlbCBhbmQgbW9kZWwtbGV2ZWwgcm9sZSBjaGVja3MuIFNraXBzIGVudGlyZWx5IGZvciBwdWJsaWMgcm91dGVzLlxuICAgKi9cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIGFzeW5jIHZhbGlkYXRlKFxuICAgIGRhdGE6IEtleWNsb2FrQXV0aERhdGEsXG4gICAgcm91dGVSb2xlczogc3RyaW5nW10gfCB1bmRlZmluZWQsXG4gICAgbW9kZWw6IHN0cmluZyB8IENvbnN0cnVjdG9yLFxuICAgIC4uLmFyZ3M6IENvbnRleHR1YWxBcmdzPENvbnRleHQ+XG4gICk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmIChkYXRhLmlzUHVibGljKSByZXR1cm47XG4gICAgYXdhaXQgdGhpcy5hdXRoU2VydmljZS5hc3NlcnRWYWxpZFRva2VuKGRhdGEudG9rZW4pO1xuICAgIGF3YWl0IHN1cGVyLnZhbGlkYXRlKGRhdGEsIHJvdXRlUm9sZXMsIG1vZGVsLCAuLi5hcmdzKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBpc1B1YmxpY1JvdXRlKHJlcTogQXV0aFJlcXVlc3RMaWtlKTogYm9vbGVhbiB7XG4gIGlmIChyZXEucGF0aD8uc3RhcnRzV2l0aChcIi9wdWJsaWNcIikpIHJldHVybiB0cnVlO1xuICByZXR1cm4gZmFsc2U7XG59XG5cbmZ1bmN0aW9uIGdldFRva2VuKHJlcTogQXV0aFJlcXVlc3RMaWtlKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgY29uc3QgdG9rZW4gPSAocmVxLmhlYWRlcnM/LltcIngtYXV0aC1yZXF1ZXN0LWFjY2Vzcy10b2tlblwiXSA/P1xuICAgIHJlcS5oZWFkZXJzPy5bXCJhdXRob3JpemF0aW9uXCJdKSBhcyBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIGlmICghdG9rZW4pIHJldHVybiB1bmRlZmluZWQ7XG4gIHJldHVybiB0b2tlbi5zdGFydHNXaXRoKFwiQmVhcmVyIFwiKSA/IHRva2VuLnNsaWNlKFwiQmVhcmVyIFwiLmxlbmd0aCkgOiB0b2tlbjtcbn1cblxuZnVuY3Rpb24gcmVzb2x2ZU9yZ2FuaXphdGlvbihcbiAgcGF5bG9hZDogeyBhdWQ/OiBzdHJpbmc7IGF6cD86IHN0cmluZyB9IHwgbnVsbCxcbiAgdG9rZW46IHN0cmluZ1xuKTogc3RyaW5nIHtcbiAgaWYgKHBheWxvYWQ/LmF1ZCkgcmV0dXJuIHBheWxvYWQuYXVkO1xuICBpZiAocGF5bG9hZD8uYXpwKSByZXR1cm4gcGF5bG9hZC5henA7XG4gIHJldHVybiBnZXRSZWFsbUZyb21Jc3N1ZXIodG9rZW4pO1xufVxuXG5leHBvcnQgeyBnZXRDbGllbnRSb2xlcyB9O1xuIl19
|
|
96
|
+
export { getClientRoles } from "./utils.js";
|
|
97
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2V5Y2xvYWtBdXRoSGFuZGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9uZXN0L2tleWNsb2FrQXV0aEhhbmRsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUE7Ozs7Ozs7R0FPRztBQUNILE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxPQUFPLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDeEQsT0FBTyxFQUFFLFdBQVcsRUFBWSxNQUFNLDJCQUEyQixDQUFDO0FBRWxFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQU92RSxPQUFPLEVBQ0wsb0JBQW9CLEVBQ3BCLHlCQUF5QixFQUN6QixrQkFBa0IsR0FDbkIsbUJBQWdCO0FBWWpCLE1BQU0sT0FBTyxtQkFBb0IsU0FBUSxXQUl4QztJQUNDO1FBQ0UsS0FBSyxFQUFFLENBQUM7SUFDVixDQUFDO0lBS1MsR0FBRztRQUNYLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDckIsTUFBTSxJQUFJLGFBQWEsQ0FDckIsbUlBQW1JLENBQ3BJLENBQUM7UUFDSixDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDO0lBQ3pCLENBQUM7SUFFUyxrQkFBa0IsQ0FBQyxHQUE2QjtRQUN4RCxPQUFPLEdBQUcsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxVQUFVLEVBQW1CLENBQUM7SUFDMUQsQ0FBQztJQUVrQixlQUFlLENBQUMsT0FBd0I7UUFDekQsT0FBTyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUVTLGdCQUFnQixDQUFDLE9BQXdCO1FBQ2pELElBQUksYUFBYSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDM0IsT0FBTyxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxR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bGUgaW50ZWdyYXRpb25zL25lc3Qva2V5Y2xvYWtBdXRoSGFuZGxlclxuICogQHN1bW1hcnkgS2V5Y2xvYWsgcmVxdWVzdCBhdXRoIGhhbmRsZXIuXG4gKiBAZGVzY3JpcHRpb24gVHJhbnNsYXRlcyBLZXljbG9hayBKV1QgcGF5bG9hZHMgaW50byBEZWNhZi1mcmllbmRseSBhdXRoIGRhdGEuXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBoYW5kbGVzIHRoZSByZXF1ZXN0LXRvLWNvbnRleHQgcGx1bWJpbmcsIGxvZ2dlciBiaW5kaW5nLFxuICogYW5kIHJvbGUgY2hlY2tzLiBOYW1lc3BhY2UgZXh0cmFjdGlvbiBpcyBpbnRlbnRpb25hbGx5IHNwbGl0IGludG8gYSBkZWRpY2F0ZWRcbiAqIHN1YmNsYXNzIHNvIHByb3ZpZGVyLXNwZWNpZmljIHNjb3BlIGhhbmRsaW5nIGNhbiBiZSBzd2FwcGVkIGluZGVwZW5kZW50bHkuXG4gKi9cbmltcG9ydCB7IEF1dGhvcml6YXRpb25FcnJvciwgc2VydmljZSB9IGZyb20gXCJAZGVjYWYtdHMvY29yZVwiO1xuaW1wb3J0IHsgSW50ZXJuYWxFcnJvciB9IGZyb20gXCJAZGVjYWYtdHMvZGItZGVjb3JhdG9yc1wiO1xuaW1wb3J0IHsgQXV0aEhhbmRsZXIsIEF1dGhEYXRhIH0gZnJvbSBcIkBkZWNhZi10cy9mb3ItaHR0cC9zZXJ2ZXJcIjtcbmltcG9ydCB0eXBlIHsgQ29udGV4dCB9IGZyb20gXCJAZGVjYWYtdHMvY29yZVwiO1xuaW1wb3J0IHsgSnd0U2VydmljZSB9IGZyb20gXCJAZGVjYWYtdHMvY3J5cHRvL2ludGVncmF0aW9uL3NlcnZpY2VzL2p3dFwiO1xuXG5pbXBvcnQgdHlwZSB7XG4gIEF1dGhFeGVjdXRpb25Db250ZXh0TGlrZSxcbiAgQXV0aFJlcXVlc3RMaWtlLFxuICBLZXljbG9ha0FjY2Vzc1Rva2VuUGF5bG9hZCxcbn0gZnJvbSBcIi4vdHlwZXNcIjtcbmltcG9ydCB7XG4gIGV4dHJhY3RLZXljbG9ha1JvbGVzLFxuICBleHRyYWN0S2V5Y2xvYWtOYW1lc3BhY2VzLFxuICBnZXRSZWFsbUZyb21Jc3N1ZXIsXG59IGZyb20gXCIuL3V0aWxzXCI7XG5cbi8qKlxuICogQXV0aCBkYXRhIHJldHVybmVkIGJ5IHtAbGluayBLZXljbG9ha0F1dGhIYW5kbGVyLmV4dHJhY3RGcm9tUmVxdWVzdH0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgS2V5Y2xvYWtBdXRoRGF0YSBleHRlbmRzIEF1dGhEYXRhIHtcbiAgLyoqIFRoZSByYXcgSldUIGV4dHJhY3RlZCBmcm9tIHRoZSByZXF1ZXN0LiBFbXB0eSBmb3IgcHVibGljIHJvdXRlcy4gKi9cbiAgdG9rZW46IHN0cmluZztcbiAgLyoqIFdoZXRoZXIgdGhlIHJlcXVlc3QgdGFyZ2V0cyBhIHB1YmxpYyByb3V0ZSAoc2tpcHMgdmFsaWRhdGlvbikuICovXG4gIGlzUHVibGljOiBib29sZWFuO1xufVxuXG5leHBvcnQgY2xhc3MgS2V5Y2xvYWtBdXRoSGFuZGxlciBleHRlbmRzIEF1dGhIYW5kbGVyPFxuICBBdXRoRXhlY3V0aW9uQ29udGV4dExpa2UsXG4gIENvbnRleHQsXG4gIEtleWNsb2FrQXV0aERhdGFcbj4ge1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgQHNlcnZpY2UoSnd0U2VydmljZSlcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGp3dFNlcnZpY2U/OiBKd3RTZXJ2aWNlO1xuXG4gIHByb3RlY3RlZCBqd3QoKTogSnd0U2VydmljZSB7XG4gICAgaWYgKCF0aGlzLmp3dFNlcnZpY2UpIHtcbiAgICAgIHRocm93IG5ldyBJbnRlcm5hbEVycm9yKFxuICAgICAgICBcIkp3dFNlcnZpY2UgaXMgbm90IGF2YWlsYWJsZS4gTWFrZSBzdXJlIHRoZSBoYW5kbGVyIGlzIGNyZWF0ZWQgdGhyb3VnaCBEZWNhZiBzZXJ2aWNlIGluamVjdGlvbiBvciBhc3NpZ24gYSB0ZXN0IGRvdWJsZSBleHBsaWNpdGx5LlwiXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5qd3RTZXJ2aWNlO1xuICB9XG5cbiAgcHJvdGVjdGVkIHJlcXVlc3RGcm9tQ29udGV4dChjdHg6IEF1dGhFeGVjdXRpb25Db250ZXh0TGlrZSk6IEF1dGhSZXF1ZXN0TGlrZSB7XG4gICAgcmV0dXJuIGN0eC5zd2l0Y2hUb0h0dHAoKS5nZXRSZXF1ZXN0PEF1dGhSZXF1ZXN0TGlrZT4oKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSBpc1B1YmxpY1JlcXVlc3QocmVxdWVzdDogQXV0aFJlcXVlc3RMaWtlKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGlzUHVibGljUm91dGUocmVxdWVzdCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgcGFyc2VGcm9tUmVxdWVzdChyZXF1ZXN0OiBBdXRoUmVxdWVzdExpa2UpOiBLZXljbG9ha0F1dGhEYXRhIHtcbiAgICBpZiAoaXNQdWJsaWNSb3V0ZShyZXF1ZXN0KSkge1xuICAgICAgcmV0dXJuIHsgcm9sZXM6IFtdLCB0b2tlbjogXCJcIiwgaXNQdWJsaWM6IHRydWUgfTtcbiAgICB9XG5cbiAgICBjb25zdCB0b2tlbiA9IGdldFRva2VuKHJlcXVlc3QpO1xuICAgIGlmICghdG9rZW4pIHRocm93IG5ldyBBdXRob3JpemF0aW9uRXJyb3IoXCJUb2tlbiBub3QgZm91bmRcIik7XG5cbiAgICBjb25zdCBwYXlsb2FkID0gdGhpcy5qd3QoKS5kZWNvZGVQYXlsb2FkPEtleWNsb2FrQWNjZXNzVG9rZW5QYXlsb2FkPih0b2tlbik7XG4gICAgaWYgKCFwYXlsb2FkKSB0aHJvdyBuZXcgQXV0aG9yaXphdGlvbkVycm9yKFwiSW52YWxpZCB0b2tlblwiKTtcblxuICAgIGNvbnN0IHJvbGVzID0gZXh0cmFjdEtleWNsb2FrUm9sZXMocGF5bG9hZCk7XG4gICAgY29uc3Qgb3JnYW5pemF0aW9uID0gcGF5bG9hZC5hdWQgfHwgcGF5bG9hZC5henAgfHwgZ2V0UmVhbG1Gcm9tSXNzdWVyKHRva2VuKTtcbiAgICBjb25zdCB1c2VyID0gcGF5bG9hZD8uZW1haWwgPz8gcGF5bG9hZD8ucHJlZmVycmVkX3VzZXJuYW1lO1xuXG4gICAgcmV0dXJuIHsgdXNlciwgb3JnYW5pemF0aW9uLCByb2xlcywgdG9rZW4sIGlzUHVibGljOiBmYWxzZSB9O1xuICB9XG5cbiAgcHJvdGVjdGVkIGV4dHJhY3RGcm9tUmVxdWVzdChyZXF1ZXN0OiBBdXRoUmVxdWVzdExpa2UpOiBLZXljbG9ha0F1dGhEYXRhIHtcbiAgICByZXR1cm4gdGhpcy5wYXJzZUZyb21SZXF1ZXN0KHJlcXVlc3QpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIGFzeW5jIHZhbGlkYXRlQXV0aChcbiAgICBkYXRhOiBLZXljbG9ha0F1dGhEYXRhLFxuICAgIF9yZXF1ZXN0OiBBdXRoUmVxdWVzdExpa2VcbiAgKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKGRhdGEuaXNQdWJsaWMpIHJldHVybjtcbiAgICBpZiAoIWRhdGEudG9rZW4pIHRocm93IG5ldyBBdXRob3JpemF0aW9uRXJyb3IoXCJUb2tlbiBub3QgZm91bmRcIik7XG4gICAgYXdhaXQgdGhpcy5qd3QoKS5kZWNvZGVBdXRoVG9rZW48S2V5Y2xvYWtBY2Nlc3NUb2tlblBheWxvYWQ+KGRhdGEudG9rZW4pO1xuICB9XG59XG5cbi8qKlxuICogS2V5Y2xvYWsgaGFuZGxlciB2YXJpYW50IHRoYXQgYWxzbyBleHRyYWN0cyBuYW1lc3BhY2Ugc2NvcGVzIGZyb20gdGhlIHRva2VuLlxuICovXG5leHBvcnQgY2xhc3MgS2V5Y2xvYWtOYW1lc3BhY2VBdXRoSGFuZGxlciBleHRlbmRzIEtleWNsb2FrQXV0aEhhbmRsZXIge1xuICBwcm90ZWN0ZWQgcGFyc2VGcm9tUmVxdWVzdChyZXF1ZXN0OiBBdXRoUmVxdWVzdExpa2UpOiBLZXljbG9ha0F1dGhEYXRhIHtcbiAgICBjb25zdCBkYXRhID0gc3VwZXIucGFyc2VGcm9tUmVxdWVzdChyZXF1ZXN0KTtcbiAgICBpZiAoZGF0YS5pc1B1YmxpYykgcmV0dXJuIGRhdGE7XG5cbiAgICBjb25zdCBwYXlsb2FkID0gdGhpcy5qd3QoKS5kZWNvZGVQYXlsb2FkPEtleWNsb2FrQWNjZXNzVG9rZW5QYXlsb2FkPihkYXRhLnRva2VuKTtcbiAgICByZXR1cm4ge1xuICAgICAgLi4uZGF0YSxcbiAgICAgIG5hbWVzcGFjZXM6IGV4dHJhY3RLZXljbG9ha05hbWVzcGFjZXMocGF5bG9hZCksXG4gICAgfTtcbiAgfVxufVxuXG5mdW5jdGlvbiBpc1B1YmxpY1JvdXRlKHJlcTogQXV0aFJlcXVlc3RMaWtlKTogYm9vbGVhbiB7XG4gIGlmIChyZXEucGF0aD8uc3RhcnRzV2l0aChcIi9wdWJsaWNcIikpIHJldHVybiB0cnVlO1xuICByZXR1cm4gZmFsc2U7XG59XG5cbmZ1bmN0aW9uIGdldFRva2VuKHJlcTogQXV0aFJlcXVlc3RMaWtlKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgY29uc3QgdG9rZW4gPSAocmVxLmhlYWRlcnM/LltcIngtYXV0aC1yZXF1ZXN0LWFjY2Vzcy10b2tlblwiXSA/P1xuICAgIHJlcS5oZWFkZXJzPy5bXCJhdXRob3JpemF0aW9uXCJdKSBhcyBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIGlmICghdG9rZW4pIHJldHVybiB1bmRlZmluZWQ7XG4gIHJldHVybiB0b2tlbi5zdGFydHNXaXRoKFwiQmVhcmVyIFwiKSA/IHRva2VuLnNsaWNlKFwiQmVhcmVyIFwiLmxlbmd0aCkgOiB0b2tlbjtcbn1cblxuZXhwb3J0IHsgZ2V0Q2xpZW50Um9sZXMgfSBmcm9tIFwiLi91dGlsc1wiO1xuIl19
|
|
@@ -1,21 +1,18 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @module integrations/nest/keycloakModule
|
|
3
3
|
* @summary Nest module wiring for Keycloak auth.
|
|
4
|
-
* @description Exposes the Nest module setup for the
|
|
4
|
+
* @description Exposes the Nest module setup for the Keycloak auth handlers.
|
|
5
5
|
*/
|
|
6
|
-
import {
|
|
7
|
-
import { KeycloakAuthHandler } from "./keycloakAuthHandler.js";
|
|
6
|
+
import { KeycloakNamespaceAuthHandler } from "./keycloakAuthHandler.js";
|
|
8
7
|
export class KeycloakModule {
|
|
9
|
-
constructor(
|
|
10
|
-
this.authService = authService;
|
|
8
|
+
constructor(authHandler) {
|
|
11
9
|
this.authHandler = authHandler;
|
|
12
10
|
}
|
|
13
|
-
static create(
|
|
14
|
-
const
|
|
15
|
-
|
|
16
|
-
return new KeycloakModule(authService, authHandler);
|
|
11
|
+
static create() {
|
|
12
|
+
const authHandler = new KeycloakNamespaceAuthHandler();
|
|
13
|
+
return new KeycloakModule(authHandler);
|
|
17
14
|
}
|
|
18
15
|
}
|
|
19
16
|
export class AuthModule extends KeycloakModule {
|
|
20
17
|
}
|
|
21
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
18
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2V5Y2xvYWtNb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbmVzdC9rZXljbG9ha01vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7OztHQUlHO0FBQ0gsT0FBTyxFQUF1Qiw0QkFBNEIsRUFBRSxpQ0FBOEI7QUFFMUYsTUFBTSxPQUFPLGNBQWM7SUFDekIsWUFDa0IsV0FBZ0M7UUFBaEMsZ0JBQVcsR0FBWCxXQUFXLENBQXFCO0lBQy9DLENBQUM7SUFFSixNQUFNLENBQUMsTUFBTTtRQUNYLE1BQU0sV0FBVyxHQUFHLElBQUksNEJBQTRCLEVBQUUsQ0FBQztRQUN2RCxPQUFPLElBQUksY0FBYyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3pDLENBQUM7Q0FDRjtBQUVELE1BQU0sT0FBTyxVQUFXLFNBQVEsY0FBYztDQUFHIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbW9kdWxlIGludGVncmF0aW9ucy9uZXN0L2tleWNsb2FrTW9kdWxlXG4gKiBAc3VtbWFyeSBOZXN0IG1vZHVsZSB3aXJpbmcgZm9yIEtleWNsb2FrIGF1dGguXG4gKiBAZGVzY3JpcHRpb24gRXhwb3NlcyB0aGUgTmVzdCBtb2R1bGUgc2V0dXAgZm9yIHRoZSBLZXljbG9hayBhdXRoIGhhbmRsZXJzLlxuICovXG5pbXBvcnQgeyBLZXljbG9ha0F1dGhIYW5kbGVyLCBLZXljbG9ha05hbWVzcGFjZUF1dGhIYW5kbGVyIH0gZnJvbSBcIi4va2V5Y2xvYWtBdXRoSGFuZGxlclwiO1xuXG5leHBvcnQgY2xhc3MgS2V5Y2xvYWtNb2R1bGUge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgcmVhZG9ubHkgYXV0aEhhbmRsZXI6IEtleWNsb2FrQXV0aEhhbmRsZXJcbiAgKSB7fVxuXG4gIHN0YXRpYyBjcmVhdGUoKTogS2V5Y2xvYWtNb2R1bGUge1xuICAgIGNvbnN0IGF1dGhIYW5kbGVyID0gbmV3IEtleWNsb2FrTmFtZXNwYWNlQXV0aEhhbmRsZXIoKTtcbiAgICByZXR1cm4gbmV3IEtleWNsb2FrTW9kdWxlKGF1dGhIYW5kbGVyKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgQXV0aE1vZHVsZSBleHRlbmRzIEtleWNsb2FrTW9kdWxlIHt9XG4iXX0=
|
package/lib/esm/nest/types.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbmVzdC90eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbW9kdWxlIGludGVncmF0aW9ucy9uZXN0L3R5cGVzXG4gKiBAc3VtbWFyeSBOZXN0IGludGVncmF0aW9uIHR5cGVzLlxuICogQGRlc2NyaXB0aW9uIEtleWNsb2FrLXNwZWNpZmljIHBheWxvYWQgdHlwZXMsIGEgcGxhdGZvcm0tc3BlY2lmaWMgZXhlY3V0aW9uIGNvbnRleHRcbiAqIHR5cGUsIGFuZCByZS1leHBvcnRzIG9mIHRoZSBmcmFtZXdvcmstYWdub3N0aWMgYXV0aCBwcmltaXRpdmVzIGZyb21cbiAqIGBAZGVjYWYtdHMvZm9yLWh0dHAvc2VydmVyYC5cbiAqL1xuaW1wb3J0IHR5cGUgeyBBdXRoRGF0YSwgQXV0aFJlcXVlc3RMaWtlLCBVc2VyRGF0YSB9IGZyb20gXCJAZGVjYWYtdHMvZm9yLWh0dHAvc2VydmVyXCI7XG5cbmV4cG9ydCB0eXBlIHsgQXV0aERhdGEsIEF1dGhSZXF1ZXN0TGlrZSwgVXNlckRhdGEgfTtcblxuLyoqXG4gKiBTdHJ1Y3R1cmFsIHN1YnNldCBvZiBhIE5lc3RKUy1saWtlIGV4ZWN1dGlvbiBjb250ZXh0IHRoYXQgZXhwb3NlcyB0aGUgSFRUUCByZXF1ZXN0LlxuICpcbiAqIERlZmluZWQgaGVyZSAobm90IGluIGZvci1odHRwKSBiZWNhdXNlIHRoZSBiYXNlIGBBdXRoSGFuZGxlcmAgY2xhc3MgaXMgaW50ZW50aW9uYWxseVxuICogZ2VuZXJpYyBvdmVyIGl0cyBleGVjdXRpb24gY29udGV4dCDigJQgb25seSB0aGUgcGxhdGZvcm0gdGhhdCBjb25zdW1lcyBpdCBuZWVkcyB0byBrbm93XG4gKiB0aGUgY29uY3JldGUgc2hhcGUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQXV0aEV4ZWN1dGlvbkNvbnRleHRMaWtlIHtcbiAgc3dpdGNoVG9IdHRwKCk6IHsgZ2V0UmVxdWVzdDxUID0gQXV0aFJlcXVlc3RMaWtlPigpOiBUIH07XG4gIGdldEhhbmRsZXI/KCk6IHsgbmFtZT86IHN0cmluZyB9O1xuICBnZXRDbGFzcz8oKTogeyBuYW1lPzogc3RyaW5nIH07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgS2V5Y2xvYWtBY2Nlc3NUb2tlblBheWxvYWQge1xuICBwcmVmZXJyZWRfdXNlcm5hbWU/OiBzdHJpbmc7XG4gIGVtYWlsPzogc3RyaW5nO1xuICBlbWFpbF92ZXJpZmllZD86IGJvb2xlYW47XG4gIG5hbWU/OiBzdHJpbmc7XG4gIGdpdmVuX25hbWU/OiBzdHJpbmc7XG4gIGZhbWlseV9uYW1lPzogc3RyaW5nO1xuICBpc3M/
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbmVzdC90eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbW9kdWxlIGludGVncmF0aW9ucy9uZXN0L3R5cGVzXG4gKiBAc3VtbWFyeSBOZXN0IGludGVncmF0aW9uIHR5cGVzLlxuICogQGRlc2NyaXB0aW9uIEtleWNsb2FrLXNwZWNpZmljIHBheWxvYWQgdHlwZXMsIGEgcGxhdGZvcm0tc3BlY2lmaWMgZXhlY3V0aW9uIGNvbnRleHRcbiAqIHR5cGUsIGFuZCByZS1leHBvcnRzIG9mIHRoZSBmcmFtZXdvcmstYWdub3N0aWMgYXV0aCBwcmltaXRpdmVzIGZyb21cbiAqIGBAZGVjYWYtdHMvZm9yLWh0dHAvc2VydmVyYC5cbiAqL1xuaW1wb3J0IHR5cGUgeyBBdXRoRGF0YSwgQXV0aFJlcXVlc3RMaWtlLCBVc2VyRGF0YSB9IGZyb20gXCJAZGVjYWYtdHMvZm9yLWh0dHAvc2VydmVyXCI7XG5cbmV4cG9ydCB0eXBlIHsgQXV0aERhdGEsIEF1dGhSZXF1ZXN0TGlrZSwgVXNlckRhdGEgfTtcblxuLyoqXG4gKiBTdHJ1Y3R1cmFsIHN1YnNldCBvZiBhIE5lc3RKUy1saWtlIGV4ZWN1dGlvbiBjb250ZXh0IHRoYXQgZXhwb3NlcyB0aGUgSFRUUCByZXF1ZXN0LlxuICpcbiAqIERlZmluZWQgaGVyZSAobm90IGluIGZvci1odHRwKSBiZWNhdXNlIHRoZSBiYXNlIGBBdXRoSGFuZGxlcmAgY2xhc3MgaXMgaW50ZW50aW9uYWxseVxuICogZ2VuZXJpYyBvdmVyIGl0cyBleGVjdXRpb24gY29udGV4dCDigJQgb25seSB0aGUgcGxhdGZvcm0gdGhhdCBjb25zdW1lcyBpdCBuZWVkcyB0byBrbm93XG4gKiB0aGUgY29uY3JldGUgc2hhcGUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQXV0aEV4ZWN1dGlvbkNvbnRleHRMaWtlIHtcbiAgc3dpdGNoVG9IdHRwKCk6IHsgZ2V0UmVxdWVzdDxUID0gQXV0aFJlcXVlc3RMaWtlPigpOiBUIH07XG4gIGdldEhhbmRsZXI/KCk6IHsgbmFtZT86IHN0cmluZyB9O1xuICBnZXRDbGFzcz8oKTogeyBuYW1lPzogc3RyaW5nIH07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgS2V5Y2xvYWtBY2Nlc3NUb2tlblBheWxvYWQge1xuICBwcmVmZXJyZWRfdXNlcm5hbWU/OiBzdHJpbmc7XG4gIGVtYWlsPzogc3RyaW5nO1xuICBlbWFpbF92ZXJpZmllZD86IGJvb2xlYW47XG4gIG5hbWU/OiBzdHJpbmc7XG4gIGdpdmVuX25hbWU/OiBzdHJpbmc7XG4gIGZhbWlseV9uYW1lPzogc3RyaW5nO1xuICBpc3M/OiBzdHJpbmc7XG4gIGF1ZD86IHN0cmluZztcbiAgYXpwPzogc3RyaW5nO1xuICBuYW1lc3BhY2U/OiBzdHJpbmcgfCBzdHJpbmdbXTtcbiAgbmFtZXNwYWNlcz86IHN0cmluZ1tdO1xuICByZWFsbV9hY2Nlc3M/OiB7IHJvbGVzPzogc3RyaW5nW10gfTtcbiAgcmVzb3VyY2VfYWNjZXNzPzogUmVjb3JkPHN0cmluZywgeyByb2xlcz86IHN0cmluZ1tdIH0+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEtleWNsb2FrVXNlciB7XG4gIHByZWZlcnJlZF91c2VybmFtZT86IHN0cmluZztcbiAgZW1haWw/OiBzdHJpbmc7XG4gIGVtYWlsX3ZlcmlmaWVkPzogYm9vbGVhbjtcbiAgbmFtZT86IHN0cmluZztcbiAgZ2l2ZW5fbmFtZT86IHN0cmluZztcbiAgZmFtaWx5X25hbWU/OiBzdHJpbmc7XG4gIHJlYWxtPzogc3RyaW5nO1xufVxuIl19
|