@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,39 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
exports.SUPERSET_DEFAULT_BASE_PATH = exports.buildSupersetEmbedUrl = exports.createSupersetDashboardEmbedPlugin = exports.supersetDashboardEmbedPlugin = exports.SupersetDashboardEmbedPlugin = exports.supersetPatchFiles = exports.buildSupersetManifest = exports.SUPERSET_PLUGIN_VERSION = exports.SUPERSET_APP_ID = exports.SUPERSET_PLUGIN_ID = void 0;
|
|
18
|
+
/**
|
|
19
|
+
* @module integrations/plugins/superset/types
|
|
20
|
+
* @summary Superset embed plugin types.
|
|
21
|
+
* @description Re-exports the shared contract types and Superset-specific
|
|
22
|
+
* constants/types for the org-agnostic dashboard embed plugin.
|
|
23
|
+
*/
|
|
24
|
+
__exportStar(require("./../contract.cjs"), exports);
|
|
25
|
+
var manifest_js_1 = require("./manifest.cjs");
|
|
26
|
+
Object.defineProperty(exports, "SUPERSET_PLUGIN_ID", { enumerable: true, get: function () { return manifest_js_1.SUPERSET_PLUGIN_ID; } });
|
|
27
|
+
Object.defineProperty(exports, "SUPERSET_APP_ID", { enumerable: true, get: function () { return manifest_js_1.SUPERSET_APP_ID; } });
|
|
28
|
+
Object.defineProperty(exports, "SUPERSET_PLUGIN_VERSION", { enumerable: true, get: function () { return manifest_js_1.SUPERSET_PLUGIN_VERSION; } });
|
|
29
|
+
Object.defineProperty(exports, "buildSupersetManifest", { enumerable: true, get: function () { return manifest_js_1.buildSupersetManifest; } });
|
|
30
|
+
var templates_js_1 = require("./templates.cjs");
|
|
31
|
+
Object.defineProperty(exports, "supersetPatchFiles", { enumerable: true, get: function () { return templates_js_1.supersetPatchFiles; } });
|
|
32
|
+
var installer_js_1 = require("./installer.cjs");
|
|
33
|
+
Object.defineProperty(exports, "SupersetDashboardEmbedPlugin", { enumerable: true, get: function () { return installer_js_1.SupersetDashboardEmbedPlugin; } });
|
|
34
|
+
Object.defineProperty(exports, "supersetDashboardEmbedPlugin", { enumerable: true, get: function () { return installer_js_1.supersetDashboardEmbedPlugin; } });
|
|
35
|
+
Object.defineProperty(exports, "createSupersetDashboardEmbedPlugin", { enumerable: true, get: function () { return installer_js_1.createSupersetDashboardEmbedPlugin; } });
|
|
36
|
+
Object.defineProperty(exports, "buildSupersetEmbedUrl", { enumerable: true, get: function () { return installer_js_1.buildSupersetEmbedUrl; } });
|
|
37
|
+
Object.defineProperty(exports, "SUPERSET_DEFAULT_BASE_PATH", { enumerable: true, get: function () { return installer_js_1.SUPERSET_DEFAULT_BASE_PATH; } });
|
|
38
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvcGx1Z2lucy9zdXBlcnNldC90eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7R0FLRztBQUNILGlDQUE0QjtBQUM1QixPQUFPLEVBQ0wsa0JBQWtCLEVBQ2xCLGVBQWUsRUFDZix1QkFBdUIsRUFDdkIscUJBQXFCLEdBRXRCLHNCQUFtQjtBQUNwQixPQUFPLEVBQUUsa0JBQWtCLEVBQTBCLHVCQUFvQjtBQUN6RSxPQUFPLEVBQ0wsNEJBQTRCLEVBQzVCLDRCQUE0QixFQUM1QixrQ0FBa0MsRUFDbEMscUJBQXFCLEVBQ3JCLDBCQUEwQixHQUUzQix1QkFBb0IiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBtb2R1bGUgaW50ZWdyYXRpb25zL3BsdWdpbnMvc3VwZXJzZXQvdHlwZXNcbiAqIEBzdW1tYXJ5IFN1cGVyc2V0IGVtYmVkIHBsdWdpbiB0eXBlcy5cbiAqIEBkZXNjcmlwdGlvbiBSZS1leHBvcnRzIHRoZSBzaGFyZWQgY29udHJhY3QgdHlwZXMgYW5kIFN1cGVyc2V0LXNwZWNpZmljXG4gKiBjb25zdGFudHMvdHlwZXMgZm9yIHRoZSBvcmctYWdub3N0aWMgZGFzaGJvYXJkIGVtYmVkIHBsdWdpbi5cbiAqL1xuZXhwb3J0ICogZnJvbSBcIi4uL2NvbnRyYWN0XCI7XG5leHBvcnQge1xuICBTVVBFUlNFVF9QTFVHSU5fSUQsXG4gIFNVUEVSU0VUX0FQUF9JRCxcbiAgU1VQRVJTRVRfUExVR0lOX1ZFUlNJT04sXG4gIGJ1aWxkU3VwZXJzZXRNYW5pZmVzdCxcbiAgdHlwZSBTdXBlcnNldE1hbmlmZXN0LFxufSBmcm9tIFwiLi9tYW5pZmVzdFwiO1xuZXhwb3J0IHsgc3VwZXJzZXRQYXRjaEZpbGVzLCB0eXBlIFN1cGVyc2V0UGF0Y2hGaWxlIH0gZnJvbSBcIi4vdGVtcGxhdGVzXCI7XG5leHBvcnQge1xuICBTdXBlcnNldERhc2hib2FyZEVtYmVkUGx1Z2luLFxuICBzdXBlcnNldERhc2hib2FyZEVtYmVkUGx1Z2luLFxuICBjcmVhdGVTdXBlcnNldERhc2hib2FyZEVtYmVkUGx1Z2luLFxuICBidWlsZFN1cGVyc2V0RW1iZWRVcmwsXG4gIFNVUEVSU0VUX0RFRkFVTFRfQkFTRV9QQVRILFxuICB0eXBlIFN1cGVyc2V0SW5zdGFsbE9wdGlvbnMsXG59IGZyb20gXCIuL2luc3RhbGxlclwiO1xuIl19
|
|
39
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJ0eXBlcy5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7OztBQUFBOzs7OztHQUtHO0FBQ0gsbURBQWlDO0FBQ2pDLDZDQUFxSDtBQUE1RyxpSEFBQSxrQkFBa0IsT0FBQTtBQUFFLDhHQUFBLGVBQWUsT0FBQTtBQUFFLHNIQUFBLHVCQUF1QixPQUFBO0FBQUUsb0hBQUEscUJBQXFCLE9BQUE7QUFDNUYsK0NBQW9EO0FBQTNDLGtIQUFBLGtCQUFrQixPQUFBO0FBQzNCLCtDQUFvTDtBQUEzSyw0SEFBQSw0QkFBNEIsT0FBQTtBQUFFLDRIQUFBLDRCQUE0QixPQUFBO0FBQUUsa0lBQUEsa0NBQWtDLE9BQUE7QUFBRSxxSEFBQSxxQkFBcUIsT0FBQTtBQUFFLDBIQUFBLDBCQUEwQixPQUFBO0FBQzFKLHMvQ0FBcy9DIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbW9kdWxlIGludGVncmF0aW9ucy9wbHVnaW5zL3N1cGVyc2V0L3R5cGVzXG4gKiBAc3VtbWFyeSBTdXBlcnNldCBlbWJlZCBwbHVnaW4gdHlwZXMuXG4gKiBAZGVzY3JpcHRpb24gUmUtZXhwb3J0cyB0aGUgc2hhcmVkIGNvbnRyYWN0IHR5cGVzIGFuZCBTdXBlcnNldC1zcGVjaWZpY1xuICogY29uc3RhbnRzL3R5cGVzIGZvciB0aGUgb3JnLWFnbm9zdGljIGRhc2hib2FyZCBlbWJlZCBwbHVnaW4uXG4gKi9cbmV4cG9ydCAqIGZyb20gXCIuLy4uL2NvbnRyYWN0LmpzXCI7XG5leHBvcnQgeyBTVVBFUlNFVF9QTFVHSU5fSUQsIFNVUEVSU0VUX0FQUF9JRCwgU1VQRVJTRVRfUExVR0lOX1ZFUlNJT04sIGJ1aWxkU3VwZXJzZXRNYW5pZmVzdCwgfSBmcm9tIFwiLi9tYW5pZmVzdC5qc1wiO1xuZXhwb3J0IHsgc3VwZXJzZXRQYXRjaEZpbGVzIH0gZnJvbSBcIi4vdGVtcGxhdGVzLmpzXCI7XG5leHBvcnQgeyBTdXBlcnNldERhc2hib2FyZEVtYmVkUGx1Z2luLCBzdXBlcnNldERhc2hib2FyZEVtYmVkUGx1Z2luLCBjcmVhdGVTdXBlcnNldERhc2hib2FyZEVtYmVkUGx1Z2luLCBidWlsZFN1cGVyc2V0RW1iZWRVcmwsIFNVUEVSU0VUX0RFRkFVTFRfQkFTRV9QQVRILCB9IGZyb20gXCIuL2luc3RhbGxlci5qc1wiO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pZEhsd1pYTXVhbk1pTENKemIzVnlZMlZTYjI5MElqb2lJaXdpYzI5MWNtTmxjeUk2V3lJdUxpOHVMaTh1TGk4dUxpOXpjbU12Y0d4MVoybHVjeTl6ZFhCbGNuTmxkQzkwZVhCbGN5NTBjeUpkTENKdVlXMWxjeUk2VzEwc0ltMWhjSEJwYm1keklqb2lRVUZCUVRzN096czdSMEZMUnp0QlFVTklMR2xEUVVFMFFqdEJRVU0xUWl4UFFVRlBMRVZCUTB3c2EwSkJRV3RDTEVWQlEyeENMR1ZCUVdVc1JVRkRaaXgxUWtGQmRVSXNSVUZEZGtJc2NVSkJRWEZDTEVkQlJYUkNMSE5DUVVGdFFqdEJRVU53UWl4UFFVRlBMRVZCUVVVc2EwSkJRV3RDTEVWQlFUQkNMSFZDUVVGdlFqdEJRVU42UlN4UFFVRlBMRVZCUTB3c05FSkJRVFJDTEVWQlF6VkNMRFJDUVVFMFFpeEZRVU0xUWl4clEwRkJhME1zUlVGRGJFTXNjVUpCUVhGQ0xFVkJRM0pDTERCQ1FVRXdRaXhIUVVVelFpeDFRa0ZCYjBJaUxDSnpiM1Z5WTJWelEyOXVkR1Z1ZENJNld5SXZLaXBjYmlBcUlFQnRiMlIxYkdVZ2FXNTBaV2R5WVhScGIyNXpMM0JzZFdkcGJuTXZjM1Z3WlhKelpYUXZkSGx3WlhOY2JpQXFJRUJ6ZFcxdFlYSjVJRk4xY0dWeWMyVjBJR1Z0WW1Wa0lIQnNkV2RwYmlCMGVYQmxjeTVjYmlBcUlFQmtaWE5qY21sd2RHbHZiaUJTWlMxbGVIQnZjblJ6SUhSb1pTQnphR0Z5WldRZ1kyOXVkSEpoWTNRZ2RIbHdaWE1nWVc1a0lGTjFjR1Z5YzJWMExYTndaV05wWm1salhHNGdLaUJqYjI1emRHRnVkSE12ZEhsd1pYTWdabTl5SUhSb1pTQnZjbWN0WVdkdWIzTjBhV01nWkdGemFHSnZZWEprSUdWdFltVmtJSEJzZFdkcGJpNWNiaUFxTDF4dVpYaHdiM0owSUNvZ1puSnZiU0JjSWk0dUwyTnZiblJ5WVdOMFhDSTdYRzVsZUhCdmNuUWdlMXh1SUNCVFZWQkZVbE5GVkY5UVRGVkhTVTVmU1VRc1hHNGdJRk5WVUVWU1UwVlVYMEZRVUY5SlJDeGNiaUFnVTFWUVJWSlRSVlJmVUV4VlIwbE9YMVpGVWxOSlQwNHNYRzRnSUdKMWFXeGtVM1Z3WlhKelpYUk5ZVzVwWm1WemRDeGNiaUFnZEhsd1pTQlRkWEJsY25ObGRFMWhibWxtWlhOMExGeHVmU0JtY205dElGd2lMaTl0WVc1cFptVnpkRndpTzF4dVpYaHdiM0owSUhzZ2MzVndaWEp6WlhSUVlYUmphRVpwYkdWekxDQjBlWEJsSUZOMWNHVnljMlYwVUdGMFkyaEdhV3hsSUgwZ1puSnZiU0JjSWk0dmRHVnRjR3hoZEdWelhDSTdYRzVsZUhCdmNuUWdlMXh1SUNCVGRYQmxjbk5sZEVSaGMyaGliMkZ5WkVWdFltVmtVR3gxWjJsdUxGeHVJQ0J6ZFhCbGNuTmxkRVJoYzJoaWIyRnlaRVZ0WW1Wa1VHeDFaMmx1TEZ4dUlDQmpjbVZoZEdWVGRYQmxjbk5sZEVSaGMyaGliMkZ5WkVWdFltVmtVR3gxWjJsdUxGeHVJQ0JpZFdsc1pGTjFjR1Z5YzJWMFJXMWlaV1JWY213c1hHNGdJRk5WVUVWU1UwVlVYMFJGUmtGVlRGUmZRa0ZUUlY5UVFWUklMRnh1SUNCMGVYQmxJRk4xY0dWeWMyVjBTVzV6ZEdGc2JFOXdkR2x2Ym5Nc1hHNTlJR1p5YjIwZ1hDSXVMMmx1YzNSaGJHeGxjbHdpTzF4dUlsMTkiXX0=
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module integrations/feature-flags
|
|
3
|
+
* @summary Feature flag constants and metadata keys.
|
|
4
|
+
*/
|
|
5
|
+
export const FEATURE_FLAG_ENV_ROOT = "featureFlag";
|
|
6
|
+
export const FEATURE_FLAG_ENV_PREFIX = "FEATURE_FLAG";
|
|
7
|
+
export const FEATURE_FLAG_MODEL_KEY = "feature-flags:model";
|
|
8
|
+
export const FEATURE_FLAG_AUTH_KEY = "feature-flags:auth";
|
|
9
|
+
export const FEATURE_FLAG_BLOCK_KEY = "feature-flags:block";
|
|
10
|
+
export const FEATURE_FLAG_RENDER_KEY = "feature-flags:render-if";
|
|
11
|
+
export const FEATURE_FLAG_HIDE_KEY = "feature-flags:hide-on";
|
|
12
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2ZlYXR1cmUtZmxhZ3MvY29uc3RhbnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7R0FHRztBQUVILE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFHLGFBQWEsQ0FBQztBQUNuRCxNQUFNLENBQUMsTUFBTSx1QkFBdUIsR0FBRyxjQUFjLENBQUM7QUFFdEQsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQUcscUJBQXFCLENBQUM7QUFDNUQsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUcsb0JBQW9CLENBQUM7QUFDMUQsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQUcscUJBQXFCLENBQUM7QUFDNUQsTUFBTSxDQUFDLE1BQU0sdUJBQXVCLEdBQUcseUJBQXlCLENBQUM7QUFDakUsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUcsdUJBQXVCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBtb2R1bGUgaW50ZWdyYXRpb25zL2ZlYXR1cmUtZmxhZ3NcbiAqIEBzdW1tYXJ5IEZlYXR1cmUgZmxhZyBjb25zdGFudHMgYW5kIG1ldGFkYXRhIGtleXMuXG4gKi9cblxuZXhwb3J0IGNvbnN0IEZFQVRVUkVfRkxBR19FTlZfUk9PVCA9IFwiZmVhdHVyZUZsYWdcIjtcbmV4cG9ydCBjb25zdCBGRUFUVVJFX0ZMQUdfRU5WX1BSRUZJWCA9IFwiRkVBVFVSRV9GTEFHXCI7XG5cbmV4cG9ydCBjb25zdCBGRUFUVVJFX0ZMQUdfTU9ERUxfS0VZID0gXCJmZWF0dXJlLWZsYWdzOm1vZGVsXCI7XG5leHBvcnQgY29uc3QgRkVBVFVSRV9GTEFHX0FVVEhfS0VZID0gXCJmZWF0dXJlLWZsYWdzOmF1dGhcIjtcbmV4cG9ydCBjb25zdCBGRUFUVVJFX0ZMQUdfQkxPQ0tfS0VZID0gXCJmZWF0dXJlLWZsYWdzOmJsb2NrXCI7XG5leHBvcnQgY29uc3QgRkVBVFVSRV9GTEFHX1JFTkRFUl9LRVkgPSBcImZlYXR1cmUtZmxhZ3M6cmVuZGVyLWlmXCI7XG5leHBvcnQgY29uc3QgRkVBVFVSRV9GTEFHX0hJREVfS0VZID0gXCJmZWF0dXJlLWZsYWdzOmhpZGUtb25cIjtcblxuIl19
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { Metadata, metadata, methodMetadata, propMetadata, } from "@decaf-ts/decoration";
|
|
2
|
+
import { FEATURE_FLAG_AUTH_KEY, FEATURE_FLAG_BLOCK_KEY, FEATURE_FLAG_HIDE_KEY, FEATURE_FLAG_MODEL_KEY, FEATURE_FLAG_RENDER_KEY, } from "./constants.js";
|
|
3
|
+
import { normalizeFeatureRule, isFeatureRuleBlocked, isFeatureRuleSatisfied, readMetadata, } from "./utils.js";
|
|
4
|
+
function featureMetadataKey(key, propertyKey) {
|
|
5
|
+
return typeof propertyKey === "undefined"
|
|
6
|
+
? key
|
|
7
|
+
: Metadata.key(key, propertyKey.toString());
|
|
8
|
+
}
|
|
9
|
+
function applyFeatureDecorator(key, features, match = "any") {
|
|
10
|
+
const rule = normalizeFeatureRule(features, match);
|
|
11
|
+
return function featureDecorator(target, propertyKey, descriptor) {
|
|
12
|
+
if (typeof propertyKey === "undefined") {
|
|
13
|
+
return metadata(key, rule)(target);
|
|
14
|
+
}
|
|
15
|
+
const scopedKey = featureMetadataKey(key, propertyKey);
|
|
16
|
+
if (descriptor) {
|
|
17
|
+
return methodMetadata(scopedKey, rule)(target, propertyKey, descriptor);
|
|
18
|
+
}
|
|
19
|
+
return propMetadata(scopedKey, rule)(target, propertyKey);
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
export function featureFlags(...features) {
|
|
23
|
+
return applyFeatureDecorator(FEATURE_FLAG_MODEL_KEY, features);
|
|
24
|
+
}
|
|
25
|
+
export function featureAuth(...features) {
|
|
26
|
+
return applyFeatureDecorator(FEATURE_FLAG_AUTH_KEY, features);
|
|
27
|
+
}
|
|
28
|
+
export function blockFeatureOperations(...features) {
|
|
29
|
+
return applyFeatureDecorator(FEATURE_FLAG_BLOCK_KEY, features);
|
|
30
|
+
}
|
|
31
|
+
export function renderIfFeature(...features) {
|
|
32
|
+
return applyFeatureDecorator(FEATURE_FLAG_RENDER_KEY, features);
|
|
33
|
+
}
|
|
34
|
+
export function hideOnFeature(...features) {
|
|
35
|
+
return applyFeatureDecorator(FEATURE_FLAG_HIDE_KEY, features);
|
|
36
|
+
}
|
|
37
|
+
export function getFeatureGateMetadata(target, key, propertyKey) {
|
|
38
|
+
return readMetadata(target, featureMetadataKey(key, propertyKey));
|
|
39
|
+
}
|
|
40
|
+
export function shouldExposeForFeatures(target, enabledFeatures, key, propertyKey) {
|
|
41
|
+
const rule = getFeatureGateMetadata(target, key, propertyKey);
|
|
42
|
+
return isFeatureRuleSatisfied(rule, enabledFeatures);
|
|
43
|
+
}
|
|
44
|
+
export function shouldHideForFeatures(target, enabledFeatures, key, propertyKey) {
|
|
45
|
+
const rule = getFeatureGateMetadata(target, key, propertyKey);
|
|
46
|
+
return isFeatureRuleBlocked(rule, enabledFeatures);
|
|
47
|
+
}
|
|
48
|
+
export { FEATURE_FLAG_AUTH_KEY, FEATURE_FLAG_BLOCK_KEY, FEATURE_FLAG_HIDE_KEY, FEATURE_FLAG_MODEL_KEY, FEATURE_FLAG_RENDER_KEY, };
|
|
49
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVjb3JhdG9ycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9mZWF0dXJlLWZsYWdzL2RlY29yYXRvcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFFBQVEsRUFDUixRQUFRLEVBQ1IsY0FBYyxFQUNkLFlBQVksR0FDYixNQUFNLHNCQUFzQixDQUFDO0FBQzlCLE9BQU8sRUFDTCxxQkFBcUIsRUFDckIsc0JBQXNCLEVBQ3RCLHFCQUFxQixFQUNyQixzQkFBc0IsRUFDdEIsdUJBQXVCLEdBQ3hCLHVCQUFvQjtBQUVyQixPQUFPLEVBQ0wsb0JBQW9CLEVBQ3BCLG9CQUFvQixFQUNwQixzQkFBc0IsRUFDdEIsWUFBWSxHQUNiLG1CQUFnQjtBQVNqQixTQUFTLGtCQUFrQixDQUN6QixHQUF3QixFQUN4QixXQUE2QjtJQUU3QixPQUFPLE9BQU8sV0FBVyxLQUFLLFdBQVc7UUFDdkMsQ0FBQyxDQUFDLEdBQUc7UUFDTCxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsV0FBVyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7QUFDaEQsQ0FBQztBQUVELFNBQVMscUJBQXFCLENBQzVCLEdBQXdCLEVBQ3hCLFFBQWtCLEVBQ2xCLFFBQWtDLEtBQUs7SUFFdkMsTUFBTSxJQUFJLEdBQUcsb0JBQW9CLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ25ELE9BQU8sU0FBUyxnQkFBZ0IsQ0FDOUIsTUFBVyxFQUNYLFdBQTZCLEVBQzdCLFVBQStCO1FBRS9CLElBQUksT0FBTyxXQUFXLEtBQUssV0FBVyxFQUFFLENBQUM7WUFDdkMsT0FBTyxRQUFRLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3JDLENBQUM7UUFDRCxNQUFNLFNBQVMsR0FBRyxrQkFBa0IsQ0FBQyxHQUFHLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFDdkQsSUFBSSxVQUFVLEVBQUUsQ0FBQztZQUNmLE9BQU8sY0FBYyxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQUUsV0FBVyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQzFFLENBQUM7UUFDRCxPQUFPLFlBQVksQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLENBQUMsTUFBTSxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBQzVELENBQUMsQ0FBQztBQUNKLENBQUM7QUFFRCxNQUFNLFVBQVUsWUFBWSxDQUFDLEdBQUcsUUFBa0I7SUFDaEQsT0FBTyxxQkFBcUIsQ0FBQyxzQkFBc0IsRUFBRSxRQUFRLENBQUMsQ0FBQztBQUNqRSxDQUFDO0FBRUQsTUFBTSxVQUFVLFdBQVcsQ0FBQyxHQUFHLFFBQWtCO0lBQy9DLE9BQU8scUJBQXFCLENBQUMscUJBQXFCLEVBQUUsUUFBUSxDQUFDLENBQUM7QUFDaEUsQ0FBQztBQUVELE1BQU0sVUFBVSxzQkFBc0IsQ0FBQyxHQUFHLFFBQWtCO0lBQzFELE9BQU8scUJBQXFCLENBQUMsc0JBQXNCLEVBQUUsUUFBUSxDQUFDLENBQUM7QUFDakUsQ0FBQztBQUVELE1BQU0sVUFBVSxlQUFlLENBQUMsR0FBRyxRQUFrQjtJQUNuRCxPQUFPLHFCQUFxQixDQUFDLHVCQUF1QixFQUFFLFFBQVEsQ0FBQyxDQUFDO0FBQ2xFLENBQUM7QUFFRCxNQUFNLFVBQVUsYUFBYSxDQUFDLEdBQUcsUUFBa0I7SUFDakQsT0FBTyxxQkFBcUIsQ0FBQyxxQkFBcUIsRUFBRSxRQUFRLENBQUMsQ0FBQztBQUNoRSxDQUFDO0FBRUQsTUFBTSxVQUFVLHNCQUFzQixDQUNwQyxNQUFjLEVBQ2QsR0FLZ0MsRUFDaEMsV0FBNkI7SUFFN0IsT0FBTyxZQUFZLENBQ2pCLE1BQU0sRUFDTixrQkFBa0IsQ0FBQyxHQUFHLEVBQUUsV0FBVyxDQUFDLENBQ3JDLENBQUM7QUFDSixDQUFDO0FBRUQsTUFBTSxVQUFVLHVCQUF1QixDQUNyQyxNQUFjLEVBQ2QsZUFBd0MsRUFDeEMsR0FLZ0MsRUFDaEMsV0FBNkI7SUFFN0IsTUFBTSxJQUFJLEdBQUcsc0JBQXNCLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxXQUFXLENBQUMsQ0FBQztJQUM5RCxPQUFPLHNCQUFzQixDQUFDLElBQUksRUFBRSxlQUFzQixDQUFDLENBQUM7QUFDOUQsQ0FBQztBQUVELE1BQU0sVUFBVSxxQkFBcUIsQ0FDbkMsTUFBYyxFQUNkLGVBQXdDLEVBQ3hDLEdBS2dDLEVBQ2hDLFdBQTZCO0lBRTdCLE1BQU0sSUFBSSxHQUFHLHNCQUFzQixDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFDOUQsT0FBTyxvQkFBb0IsQ0FBQyxJQUFJLEVBQUUsZUFBc0IsQ0FBQyxDQUFDO0FBQzVELENBQUM7QUFFRCxPQUFPLEVBQ0wscUJBQXFCLEVBQ3JCLHNCQUFzQixFQUN0QixxQkFBcUIsRUFDckIsc0JBQXNCLEVBQ3RCLHVCQUF1QixHQUN4QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgTWV0YWRhdGEsXG4gIG1ldGFkYXRhLFxuICBtZXRob2RNZXRhZGF0YSxcbiAgcHJvcE1ldGFkYXRhLFxufSBmcm9tIFwiQGRlY2FmLXRzL2RlY29yYXRpb25cIjtcbmltcG9ydCB7XG4gIEZFQVRVUkVfRkxBR19BVVRIX0tFWSxcbiAgRkVBVFVSRV9GTEFHX0JMT0NLX0tFWSxcbiAgRkVBVFVSRV9GTEFHX0hJREVfS0VZLFxuICBGRUFUVVJFX0ZMQUdfTU9ERUxfS0VZLFxuICBGRUFUVVJFX0ZMQUdfUkVOREVSX0tFWSxcbn0gZnJvbSBcIi4vY29uc3RhbnRzXCI7XG5pbXBvcnQgdHlwZSB7IEZlYXR1cmVGbGFnUnVsZSB9IGZyb20gXCIuL3R5cGVzXCI7XG5pbXBvcnQge1xuICBub3JtYWxpemVGZWF0dXJlUnVsZSxcbiAgaXNGZWF0dXJlUnVsZUJsb2NrZWQsXG4gIGlzRmVhdHVyZVJ1bGVTYXRpc2ZpZWQsXG4gIHJlYWRNZXRhZGF0YSxcbn0gZnJvbSBcIi4vdXRpbHNcIjtcblxudHlwZSBGZWF0dXJlRGVjb3JhdG9yS2V5ID1cbiAgfCB0eXBlb2YgRkVBVFVSRV9GTEFHX01PREVMX0tFWVxuICB8IHR5cGVvZiBGRUFUVVJFX0ZMQUdfQVVUSF9LRVlcbiAgfCB0eXBlb2YgRkVBVFVSRV9GTEFHX0JMT0NLX0tFWVxuICB8IHR5cGVvZiBGRUFUVVJFX0ZMQUdfUkVOREVSX0tFWVxuICB8IHR5cGVvZiBGRUFUVVJFX0ZMQUdfSElERV9LRVk7XG5cbmZ1bmN0aW9uIGZlYXR1cmVNZXRhZGF0YUtleShcbiAga2V5OiBGZWF0dXJlRGVjb3JhdG9yS2V5LFxuICBwcm9wZXJ0eUtleT86IHN0cmluZyB8IHN5bWJvbFxuKTogc3RyaW5nIHtcbiAgcmV0dXJuIHR5cGVvZiBwcm9wZXJ0eUtleSA9PT0gXCJ1bmRlZmluZWRcIlxuICAgID8ga2V5XG4gICAgOiBNZXRhZGF0YS5rZXkoa2V5LCBwcm9wZXJ0eUtleS50b1N0cmluZygpKTtcbn1cblxuZnVuY3Rpb24gYXBwbHlGZWF0dXJlRGVjb3JhdG9yKFxuICBrZXk6IEZlYXR1cmVEZWNvcmF0b3JLZXksXG4gIGZlYXR1cmVzOiBzdHJpbmdbXSxcbiAgbWF0Y2g6IEZlYXR1cmVGbGFnUnVsZVtcIm1hdGNoXCJdID0gXCJhbnlcIlxuKSB7XG4gIGNvbnN0IHJ1bGUgPSBub3JtYWxpemVGZWF0dXJlUnVsZShmZWF0dXJlcywgbWF0Y2gpO1xuICByZXR1cm4gZnVuY3Rpb24gZmVhdHVyZURlY29yYXRvcihcbiAgICB0YXJnZXQ6IGFueSxcbiAgICBwcm9wZXJ0eUtleT86IHN0cmluZyB8IHN5bWJvbCxcbiAgICBkZXNjcmlwdG9yPzogUHJvcGVydHlEZXNjcmlwdG9yXG4gICkge1xuICAgIGlmICh0eXBlb2YgcHJvcGVydHlLZXkgPT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgIHJldHVybiBtZXRhZGF0YShrZXksIHJ1bGUpKHRhcmdldCk7XG4gICAgfVxuICAgIGNvbnN0IHNjb3BlZEtleSA9IGZlYXR1cmVNZXRhZGF0YUtleShrZXksIHByb3BlcnR5S2V5KTtcbiAgICBpZiAoZGVzY3JpcHRvcikge1xuICAgICAgcmV0dXJuIG1ldGhvZE1ldGFkYXRhKHNjb3BlZEtleSwgcnVsZSkodGFyZ2V0LCBwcm9wZXJ0eUtleSwgZGVzY3JpcHRvcik7XG4gICAgfVxuICAgIHJldHVybiBwcm9wTWV0YWRhdGEoc2NvcGVkS2V5LCBydWxlKSh0YXJnZXQsIHByb3BlcnR5S2V5KTtcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZlYXR1cmVGbGFncyguLi5mZWF0dXJlczogc3RyaW5nW10pIHtcbiAgcmV0dXJuIGFwcGx5RmVhdHVyZURlY29yYXRvcihGRUFUVVJFX0ZMQUdfTU9ERUxfS0VZLCBmZWF0dXJlcyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmZWF0dXJlQXV0aCguLi5mZWF0dXJlczogc3RyaW5nW10pIHtcbiAgcmV0dXJuIGFwcGx5RmVhdHVyZURlY29yYXRvcihGRUFUVVJFX0ZMQUdfQVVUSF9LRVksIGZlYXR1cmVzKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJsb2NrRmVhdHVyZU9wZXJhdGlvbnMoLi4uZmVhdHVyZXM6IHN0cmluZ1tdKSB7XG4gIHJldHVybiBhcHBseUZlYXR1cmVEZWNvcmF0b3IoRkVBVFVSRV9GTEFHX0JMT0NLX0tFWSwgZmVhdHVyZXMpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVuZGVySWZGZWF0dXJlKC4uLmZlYXR1cmVzOiBzdHJpbmdbXSkge1xuICByZXR1cm4gYXBwbHlGZWF0dXJlRGVjb3JhdG9yKEZFQVRVUkVfRkxBR19SRU5ERVJfS0VZLCBmZWF0dXJlcyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBoaWRlT25GZWF0dXJlKC4uLmZlYXR1cmVzOiBzdHJpbmdbXSkge1xuICByZXR1cm4gYXBwbHlGZWF0dXJlRGVjb3JhdG9yKEZFQVRVUkVfRkxBR19ISURFX0tFWSwgZmVhdHVyZXMpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0RmVhdHVyZUdhdGVNZXRhZGF0YShcbiAgdGFyZ2V0OiBvYmplY3QsXG4gIGtleTpcbiAgICB8IHR5cGVvZiBGRUFUVVJFX0ZMQUdfTU9ERUxfS0VZXG4gICAgfCB0eXBlb2YgRkVBVFVSRV9GTEFHX0FVVEhfS0VZXG4gICAgfCB0eXBlb2YgRkVBVFVSRV9GTEFHX0JMT0NLX0tFWVxuICAgIHwgdHlwZW9mIEZFQVRVUkVfRkxBR19SRU5ERVJfS0VZXG4gICAgfCB0eXBlb2YgRkVBVFVSRV9GTEFHX0hJREVfS0VZLFxuICBwcm9wZXJ0eUtleT86IHN0cmluZyB8IHN5bWJvbFxuKTogRmVhdHVyZUZsYWdSdWxlIHwgdW5kZWZpbmVkIHtcbiAgcmV0dXJuIHJlYWRNZXRhZGF0YTxGZWF0dXJlRmxhZ1J1bGU+KFxuICAgIHRhcmdldCxcbiAgICBmZWF0dXJlTWV0YWRhdGFLZXkoa2V5LCBwcm9wZXJ0eUtleSlcbiAgKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNob3VsZEV4cG9zZUZvckZlYXR1cmVzKFxuICB0YXJnZXQ6IG9iamVjdCxcbiAgZW5hYmxlZEZlYXR1cmVzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcbiAga2V5OlxuICAgIHwgdHlwZW9mIEZFQVRVUkVfRkxBR19NT0RFTF9LRVlcbiAgICB8IHR5cGVvZiBGRUFUVVJFX0ZMQUdfQVVUSF9LRVlcbiAgICB8IHR5cGVvZiBGRUFUVVJFX0ZMQUdfQkxPQ0tfS0VZXG4gICAgfCB0eXBlb2YgRkVBVFVSRV9GTEFHX1JFTkRFUl9LRVlcbiAgICB8IHR5cGVvZiBGRUFUVVJFX0ZMQUdfSElERV9LRVksXG4gIHByb3BlcnR5S2V5Pzogc3RyaW5nIHwgc3ltYm9sXG4pIHtcbiAgY29uc3QgcnVsZSA9IGdldEZlYXR1cmVHYXRlTWV0YWRhdGEodGFyZ2V0LCBrZXksIHByb3BlcnR5S2V5KTtcbiAgcmV0dXJuIGlzRmVhdHVyZVJ1bGVTYXRpc2ZpZWQocnVsZSwgZW5hYmxlZEZlYXR1cmVzIGFzIGFueSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzaG91bGRIaWRlRm9yRmVhdHVyZXMoXG4gIHRhcmdldDogb2JqZWN0LFxuICBlbmFibGVkRmVhdHVyZXM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuICBrZXk6XG4gICAgfCB0eXBlb2YgRkVBVFVSRV9GTEFHX01PREVMX0tFWVxuICAgIHwgdHlwZW9mIEZFQVRVUkVfRkxBR19BVVRIX0tFWVxuICAgIHwgdHlwZW9mIEZFQVRVUkVfRkxBR19CTE9DS19LRVlcbiAgICB8IHR5cGVvZiBGRUFUVVJFX0ZMQUdfUkVOREVSX0tFWVxuICAgIHwgdHlwZW9mIEZFQVRVUkVfRkxBR19ISURFX0tFWSxcbiAgcHJvcGVydHlLZXk/OiBzdHJpbmcgfCBzeW1ib2xcbikge1xuICBjb25zdCBydWxlID0gZ2V0RmVhdHVyZUdhdGVNZXRhZGF0YSh0YXJnZXQsIGtleSwgcHJvcGVydHlLZXkpO1xuICByZXR1cm4gaXNGZWF0dXJlUnVsZUJsb2NrZWQocnVsZSwgZW5hYmxlZEZlYXR1cmVzIGFzIGFueSk7XG59XG5cbmV4cG9ydCB7XG4gIEZFQVRVUkVfRkxBR19BVVRIX0tFWSxcbiAgRkVBVFVSRV9GTEFHX0JMT0NLX0tFWSxcbiAgRkVBVFVSRV9GTEFHX0hJREVfS0VZLFxuICBGRUFUVVJFX0ZMQUdfTU9ERUxfS0VZLFxuICBGRUFUVVJFX0ZMQUdfUkVOREVSX0tFWSxcbn07XG4iXX0=
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { LoggedEnvironment } from "@decaf-ts/logging";
|
|
2
|
+
import { FEATURE_FLAG_ENV_ROOT, FEATURE_FLAG_ENV_PREFIX, } from "./constants.js";
|
|
3
|
+
import { normalizeFeatureName, normalizeFeatureRegistry } from "./utils.js";
|
|
4
|
+
export const FeatureFlagEnvironment = LoggedEnvironment.accumulate({
|
|
5
|
+
[FEATURE_FLAG_ENV_ROOT]: {},
|
|
6
|
+
});
|
|
7
|
+
export async function loadFeatureFlagsFromEnvironment(source = FeatureFlagEnvironment) {
|
|
8
|
+
return normalizeFeatureRegistry(source.featureFlag);
|
|
9
|
+
}
|
|
10
|
+
export async function resolveFeatureFlagFromEnvironment(featureName, source = FeatureFlagEnvironment) {
|
|
11
|
+
const registry = await loadFeatureFlagsFromEnvironment(source);
|
|
12
|
+
return registry[normalizeFeatureName(featureName)];
|
|
13
|
+
}
|
|
14
|
+
export async function hasFeatureFlagInEnvironment(featureName, source = FeatureFlagEnvironment) {
|
|
15
|
+
return !!(await resolveFeatureFlagFromEnvironment(featureName, source));
|
|
16
|
+
}
|
|
17
|
+
export { FEATURE_FLAG_ENV_PREFIX, FEATURE_FLAG_ENV_ROOT };
|
|
18
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW52aXJvbm1lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZmVhdHVyZS1mbGFncy9lbnZpcm9ubWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUN0RCxPQUFPLEVBQ0wscUJBQXFCLEVBQ3JCLHVCQUF1QixHQUN4Qix1QkFBb0I7QUFDckIsT0FBTyxFQUFFLG9CQUFvQixFQUFFLHdCQUF3QixFQUFFLG1CQUFnQjtBQU96RSxNQUFNLENBQUMsTUFBTSxzQkFBc0IsR0FBRyxpQkFBaUIsQ0FBQyxVQUFVLENBQUM7SUFDakUsQ0FBQyxxQkFBcUIsQ0FBQyxFQUFFLEVBQUU7Q0FDRyxDQUFDLENBQUM7QUFFbEMsTUFBTSxDQUFDLEtBQUssVUFBVSwrQkFBK0IsQ0FDbkQsU0FBMkQsc0JBQXNCO0lBRWpGLE9BQU8sd0JBQXdCLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0FBQ3RELENBQUM7QUFFRCxNQUFNLENBQUMsS0FBSyxVQUFVLGlDQUFpQyxDQUNyRCxXQUFtQixFQUNuQixTQUEyRCxzQkFBc0I7SUFFakYsTUFBTSxRQUFRLEdBQUcsTUFBTSwrQkFBK0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMvRCxPQUFPLFFBQVEsQ0FBQyxvQkFBb0IsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO0FBQ3JELENBQUM7QUFFRCxNQUFNLENBQUMsS0FBSyxVQUFVLDJCQUEyQixDQUMvQyxXQUFtQixFQUNuQixTQUEyRCxzQkFBc0I7SUFFakYsT0FBTyxDQUFDLENBQUMsQ0FBQyxNQUFNLGlDQUFpQyxDQUFDLFdBQVcsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDO0FBQzFFLENBQUM7QUFFRCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUscUJBQXFCLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IExvZ2dlZEVudmlyb25tZW50IH0gZnJvbSBcIkBkZWNhZi10cy9sb2dnaW5nXCI7XG5pbXBvcnQge1xuICBGRUFUVVJFX0ZMQUdfRU5WX1JPT1QsXG4gIEZFQVRVUkVfRkxBR19FTlZfUFJFRklYLFxufSBmcm9tIFwiLi9jb25zdGFudHNcIjtcbmltcG9ydCB7IG5vcm1hbGl6ZUZlYXR1cmVOYW1lLCBub3JtYWxpemVGZWF0dXJlUmVnaXN0cnkgfSBmcm9tIFwiLi91dGlsc1wiO1xuaW1wb3J0IHR5cGUge1xuICBGZWF0dXJlRmxhZ0Vudmlyb25tZW50U2hhcGUsXG4gIEZlYXR1cmVGbGFnUmVnaXN0cnksXG4gIEZlYXR1cmVGbGFnVmFsdWUsXG59IGZyb20gXCIuL3R5cGVzXCI7XG5cbmV4cG9ydCBjb25zdCBGZWF0dXJlRmxhZ0Vudmlyb25tZW50ID0gTG9nZ2VkRW52aXJvbm1lbnQuYWNjdW11bGF0ZSh7XG4gIFtGRUFUVVJFX0ZMQUdfRU5WX1JPT1RdOiB7fSxcbn0gYXMgRmVhdHVyZUZsYWdFbnZpcm9ubWVudFNoYXBlKTtcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGxvYWRGZWF0dXJlRmxhZ3NGcm9tRW52aXJvbm1lbnQoXG4gIHNvdXJjZTogUGljazxGZWF0dXJlRmxhZ0Vudmlyb25tZW50U2hhcGUsIFwiZmVhdHVyZUZsYWdcIj4gPSBGZWF0dXJlRmxhZ0Vudmlyb25tZW50XG4pOiBQcm9taXNlPEZlYXR1cmVGbGFnUmVnaXN0cnk+IHtcbiAgcmV0dXJuIG5vcm1hbGl6ZUZlYXR1cmVSZWdpc3RyeShzb3VyY2UuZmVhdHVyZUZsYWcpO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmVzb2x2ZUZlYXR1cmVGbGFnRnJvbUVudmlyb25tZW50KFxuICBmZWF0dXJlTmFtZTogc3RyaW5nLFxuICBzb3VyY2U6IFBpY2s8RmVhdHVyZUZsYWdFbnZpcm9ubWVudFNoYXBlLCBcImZlYXR1cmVGbGFnXCI+ID0gRmVhdHVyZUZsYWdFbnZpcm9ubWVudFxuKTogUHJvbWlzZTxGZWF0dXJlRmxhZ1ZhbHVlIHwgdW5kZWZpbmVkPiB7XG4gIGNvbnN0IHJlZ2lzdHJ5ID0gYXdhaXQgbG9hZEZlYXR1cmVGbGFnc0Zyb21FbnZpcm9ubWVudChzb3VyY2UpO1xuICByZXR1cm4gcmVnaXN0cnlbbm9ybWFsaXplRmVhdHVyZU5hbWUoZmVhdHVyZU5hbWUpXTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGhhc0ZlYXR1cmVGbGFnSW5FbnZpcm9ubWVudChcbiAgZmVhdHVyZU5hbWU6IHN0cmluZyxcbiAgc291cmNlOiBQaWNrPEZlYXR1cmVGbGFnRW52aXJvbm1lbnRTaGFwZSwgXCJmZWF0dXJlRmxhZ1wiPiA9IEZlYXR1cmVGbGFnRW52aXJvbm1lbnRcbik6IFByb21pc2U8Ym9vbGVhbj4ge1xuICByZXR1cm4gISEoYXdhaXQgcmVzb2x2ZUZlYXR1cmVGbGFnRnJvbUVudmlyb25tZW50KGZlYXR1cmVOYW1lLCBzb3VyY2UpKTtcbn1cblxuZXhwb3J0IHsgRkVBVFVSRV9GTEFHX0VOVl9QUkVGSVgsIEZFQVRVUkVfRkxBR19FTlZfUk9PVCB9O1xuIl19
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module integrations/feature-flags
|
|
3
|
+
* @summary Feature-flag models, services, decorators, and environment helpers.
|
|
4
|
+
*/
|
|
5
|
+
export * from "./constants.js";
|
|
6
|
+
export * from "./types.js";
|
|
7
|
+
export * from "./utils.js";
|
|
8
|
+
export * from "./environment.js";
|
|
9
|
+
export * from "./models/FeatureFlag.model.js";
|
|
10
|
+
export * from "./models/FeatureFlagAccess.model.js";
|
|
11
|
+
export * from "./readers/index.js";
|
|
12
|
+
export * from "./services/FeatureFlag.service.js";
|
|
13
|
+
export * from "./decorators.js";
|
|
14
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZmVhdHVyZS1mbGFncy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7O0dBR0c7QUFFSCwrQkFBNEI7QUFDNUIsMkJBQXdCO0FBQ3hCLDJCQUF3QjtBQUN4QixpQ0FBOEI7QUFDOUIsOENBQTJDO0FBQzNDLG9EQUFpRDtBQUNqRCxtQ0FBMEI7QUFDMUIsa0RBQStDO0FBQy9DLGdDQUE2QiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQG1vZHVsZSBpbnRlZ3JhdGlvbnMvZmVhdHVyZS1mbGFnc1xuICogQHN1bW1hcnkgRmVhdHVyZS1mbGFnIG1vZGVscywgc2VydmljZXMsIGRlY29yYXRvcnMsIGFuZCBlbnZpcm9ubWVudCBoZWxwZXJzLlxuICovXG5cbmV4cG9ydCAqIGZyb20gXCIuL2NvbnN0YW50c1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vdHlwZXNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3V0aWxzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9lbnZpcm9ubWVudFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vbW9kZWxzL0ZlYXR1cmVGbGFnLm1vZGVsXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9tb2RlbHMvRmVhdHVyZUZsYWdBY2Nlc3MubW9kZWxcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3JlYWRlcnNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3NlcnZpY2VzL0ZlYXR1cmVGbGFnLnNlcnZpY2VcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2RlY29yYXRvcnNcIjtcbiJdfQ==
|
|
@@ -0,0 +1,72 @@
|
|
|
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
|
+
import { BaseModel } from "@decaf-ts/core";
|
|
11
|
+
import { column, createdAt, pk, table, updatedAt, uuid, unique, } from "@decaf-ts/core";
|
|
12
|
+
import { model, required } from "@decaf-ts/decorator-validation";
|
|
13
|
+
let FeatureFlag = class FeatureFlag extends BaseModel {
|
|
14
|
+
constructor(data) {
|
|
15
|
+
super(data);
|
|
16
|
+
this.enabled = true;
|
|
17
|
+
}
|
|
18
|
+
};
|
|
19
|
+
__decorate([
|
|
20
|
+
pk(),
|
|
21
|
+
uuid(),
|
|
22
|
+
__metadata("design:type", String)
|
|
23
|
+
], FeatureFlag.prototype, "id", void 0);
|
|
24
|
+
__decorate([
|
|
25
|
+
unique(),
|
|
26
|
+
required(),
|
|
27
|
+
column(),
|
|
28
|
+
__metadata("design:type", String)
|
|
29
|
+
], FeatureFlag.prototype, "key", void 0);
|
|
30
|
+
__decorate([
|
|
31
|
+
column(),
|
|
32
|
+
__metadata("design:type", Boolean)
|
|
33
|
+
], FeatureFlag.prototype, "enabled", void 0);
|
|
34
|
+
__decorate([
|
|
35
|
+
column(),
|
|
36
|
+
__metadata("design:type", String)
|
|
37
|
+
], FeatureFlag.prototype, "description", void 0);
|
|
38
|
+
__decorate([
|
|
39
|
+
column(),
|
|
40
|
+
__metadata("design:type", String)
|
|
41
|
+
], FeatureFlag.prototype, "scope", void 0);
|
|
42
|
+
__decorate([
|
|
43
|
+
column(),
|
|
44
|
+
__metadata("design:type", Object)
|
|
45
|
+
], FeatureFlag.prototype, "metadata", void 0);
|
|
46
|
+
__decorate([
|
|
47
|
+
column(),
|
|
48
|
+
__metadata("design:type", Object)
|
|
49
|
+
], FeatureFlag.prototype, "config", void 0);
|
|
50
|
+
__decorate([
|
|
51
|
+
column(),
|
|
52
|
+
__metadata("design:type", String)
|
|
53
|
+
], FeatureFlag.prototype, "createdBy", void 0);
|
|
54
|
+
__decorate([
|
|
55
|
+
column(),
|
|
56
|
+
__metadata("design:type", String)
|
|
57
|
+
], FeatureFlag.prototype, "updatedBy", void 0);
|
|
58
|
+
__decorate([
|
|
59
|
+
createdAt(),
|
|
60
|
+
__metadata("design:type", Date)
|
|
61
|
+
], FeatureFlag.prototype, "createdAt", void 0);
|
|
62
|
+
__decorate([
|
|
63
|
+
updatedAt(),
|
|
64
|
+
__metadata("design:type", Date)
|
|
65
|
+
], FeatureFlag.prototype, "updatedAt", void 0);
|
|
66
|
+
FeatureFlag = __decorate([
|
|
67
|
+
table("feature_flags"),
|
|
68
|
+
model(),
|
|
69
|
+
__metadata("design:paramtypes", [Object])
|
|
70
|
+
], FeatureFlag);
|
|
71
|
+
export { FeatureFlag };
|
|
72
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRmVhdHVyZUZsYWcubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZmVhdHVyZS1mbGFncy9tb2RlbHMvRmVhdHVyZUZsYWcubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFDTCxNQUFNLEVBQ04sU0FBUyxFQUNULEVBQUUsRUFDRixLQUFLLEVBQ0wsU0FBUyxFQUNULElBQUksRUFDSixNQUFNLEdBQ1AsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBSzFELElBQU0sV0FBVyxHQUFqQixNQUFNLFdBQVksU0FBUSxTQUFTO0lBQ3hDLFlBQVksSUFBMkI7UUFDckMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBYWQsWUFBTyxHQUFZLElBQUksQ0FBQztJQVp4QixDQUFDO0NBcUNGLENBQUE7QUFqQ0M7SUFGQyxFQUFFLEVBQUU7SUFDSixJQUFJLEVBQUU7O3VDQUNLO0FBS1o7SUFIQyxNQUFNLEVBQUU7SUFDUixRQUFRLEVBQUU7SUFDVixNQUFNLEVBQUU7O3dDQUNJO0FBR2I7SUFEQyxNQUFNLEVBQUU7OzRDQUNlO0FBR3hCO0lBREMsTUFBTSxFQUFFOztnREFDWTtBQUdyQjtJQURDLE1BQU0sRUFBRTs7MENBQ007QUFHZjtJQURDLE1BQU0sRUFBRTs7NkNBQzBCO0FBR25DO0lBREMsTUFBTSxFQUFFOzsyQ0FDa0I7QUFHM0I7SUFEQyxNQUFNLEVBQUU7OzhDQUNVO0FBR25CO0lBREMsTUFBTSxFQUFFOzs4Q0FDVTtBQUduQjtJQURDLFNBQVMsRUFBRTs4QkFDQSxJQUFJOzhDQUFDO0FBR2pCO0lBREMsU0FBUyxFQUFFOzhCQUNBLElBQUk7OENBQUM7QUF2Q04sV0FBVztJQUZ2QixLQUFLLENBQUMsZUFBZSxDQUFDO0lBQ3RCLEtBQUssRUFBRTs7R0FDSyxXQUFXLENBd0N2QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJhc2VNb2RlbCB9IGZyb20gXCJAZGVjYWYtdHMvY29yZVwiO1xuaW1wb3J0IHtcbiAgY29sdW1uLFxuICBjcmVhdGVkQXQsXG4gIHBrLFxuICB0YWJsZSxcbiAgdXBkYXRlZEF0LFxuICB1dWlkLFxuICB1bmlxdWUsXG59IGZyb20gXCJAZGVjYWYtdHMvY29yZVwiO1xuaW1wb3J0IHsgbW9kZWwsIHJlcXVpcmVkIH0gZnJvbSBcIkBkZWNhZi10cy9kZWNvcmF0b3ItdmFsaWRhdGlvblwiO1xuaW1wb3J0IHR5cGUgeyBGZWF0dXJlRmxhZ0NvbmZpZyB9IGZyb20gXCIuLi90eXBlc1wiO1xuXG5AdGFibGUoXCJmZWF0dXJlX2ZsYWdzXCIpXG5AbW9kZWwoKVxuZXhwb3J0IGNsYXNzIEZlYXR1cmVGbGFnIGV4dGVuZHMgQmFzZU1vZGVsIHtcbiAgY29uc3RydWN0b3IoZGF0YT86IFBhcnRpYWw8RmVhdHVyZUZsYWc+KSB7XG4gICAgc3VwZXIoZGF0YSk7XG4gIH1cblxuICBAcGsoKVxuICBAdXVpZCgpXG4gIGlkITogc3RyaW5nO1xuXG4gIEB1bmlxdWUoKVxuICBAcmVxdWlyZWQoKVxuICBAY29sdW1uKClcbiAga2V5ITogc3RyaW5nO1xuXG4gIEBjb2x1bW4oKVxuICBlbmFibGVkOiBib29sZWFuID0gdHJ1ZTtcblxuICBAY29sdW1uKClcbiAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG5cbiAgQGNvbHVtbigpXG4gIHNjb3BlPzogc3RyaW5nO1xuXG4gIEBjb2x1bW4oKVxuICBtZXRhZGF0YT86IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuXG4gIEBjb2x1bW4oKVxuICBjb25maWc/OiBGZWF0dXJlRmxhZ0NvbmZpZztcblxuICBAY29sdW1uKClcbiAgY3JlYXRlZEJ5Pzogc3RyaW5nO1xuXG4gIEBjb2x1bW4oKVxuICB1cGRhdGVkQnk/OiBzdHJpbmc7XG5cbiAgQGNyZWF0ZWRBdCgpXG4gIGNyZWF0ZWRBdCE6IERhdGU7XG5cbiAgQHVwZGF0ZWRBdCgpXG4gIHVwZGF0ZWRBdCE6IERhdGU7XG59XG4iXX0=
|
|
@@ -0,0 +1,69 @@
|
|
|
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
|
+
import { BaseModel } from "@decaf-ts/core";
|
|
11
|
+
import { column, createdAt, pk, table, updatedAt, uuid } from "@decaf-ts/core";
|
|
12
|
+
import { model, required } from "@decaf-ts/decorator-validation";
|
|
13
|
+
let FeatureFlagAccess = class FeatureFlagAccess extends BaseModel {
|
|
14
|
+
constructor(data) {
|
|
15
|
+
super(data);
|
|
16
|
+
this.enabled = true;
|
|
17
|
+
}
|
|
18
|
+
};
|
|
19
|
+
__decorate([
|
|
20
|
+
pk(),
|
|
21
|
+
uuid(),
|
|
22
|
+
__metadata("design:type", String)
|
|
23
|
+
], FeatureFlagAccess.prototype, "id", void 0);
|
|
24
|
+
__decorate([
|
|
25
|
+
required(),
|
|
26
|
+
column(),
|
|
27
|
+
__metadata("design:type", String)
|
|
28
|
+
], FeatureFlagAccess.prototype, "featureKey", void 0);
|
|
29
|
+
__decorate([
|
|
30
|
+
required(),
|
|
31
|
+
column(),
|
|
32
|
+
__metadata("design:type", String)
|
|
33
|
+
], FeatureFlagAccess.prototype, "subjectType", void 0);
|
|
34
|
+
__decorate([
|
|
35
|
+
required(),
|
|
36
|
+
column(),
|
|
37
|
+
__metadata("design:type", String)
|
|
38
|
+
], FeatureFlagAccess.prototype, "subjectKey", void 0);
|
|
39
|
+
__decorate([
|
|
40
|
+
column(),
|
|
41
|
+
__metadata("design:type", Boolean)
|
|
42
|
+
], FeatureFlagAccess.prototype, "enabled", void 0);
|
|
43
|
+
__decorate([
|
|
44
|
+
column(),
|
|
45
|
+
__metadata("design:type", Object)
|
|
46
|
+
], FeatureFlagAccess.prototype, "metadata", void 0);
|
|
47
|
+
__decorate([
|
|
48
|
+
column(),
|
|
49
|
+
__metadata("design:type", String)
|
|
50
|
+
], FeatureFlagAccess.prototype, "createdBy", void 0);
|
|
51
|
+
__decorate([
|
|
52
|
+
column(),
|
|
53
|
+
__metadata("design:type", String)
|
|
54
|
+
], FeatureFlagAccess.prototype, "updatedBy", void 0);
|
|
55
|
+
__decorate([
|
|
56
|
+
createdAt(),
|
|
57
|
+
__metadata("design:type", Date)
|
|
58
|
+
], FeatureFlagAccess.prototype, "createdAt", void 0);
|
|
59
|
+
__decorate([
|
|
60
|
+
updatedAt(),
|
|
61
|
+
__metadata("design:type", Date)
|
|
62
|
+
], FeatureFlagAccess.prototype, "updatedAt", void 0);
|
|
63
|
+
FeatureFlagAccess = __decorate([
|
|
64
|
+
table("feature_flag_access"),
|
|
65
|
+
model(),
|
|
66
|
+
__metadata("design:paramtypes", [Object])
|
|
67
|
+
], FeatureFlagAccess);
|
|
68
|
+
export { FeatureFlagAccess };
|
|
69
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRmVhdHVyZUZsYWdBY2Nlc3MubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZmVhdHVyZS1mbGFncy9tb2RlbHMvRmVhdHVyZUZsYWdBY2Nlc3MubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQy9FLE9BQU8sRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFLMUQsSUFBTSxpQkFBaUIsR0FBdkIsTUFBTSxpQkFBa0IsU0FBUSxTQUFTO0lBQzlDLFlBQVksSUFBaUM7UUFDM0MsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBb0JkLFlBQU8sR0FBWSxJQUFJLENBQUM7SUFuQnhCLENBQUM7Q0FtQ0YsQ0FBQTtBQS9CQztJQUZDLEVBQUUsRUFBRTtJQUNKLElBQUksRUFBRTs7NkNBQ0s7QUFJWjtJQUZDLFFBQVEsRUFBRTtJQUNWLE1BQU0sRUFBRTs7cURBQ1c7QUFJcEI7SUFGQyxRQUFRLEVBQUU7SUFDVixNQUFNLEVBQUU7O3NEQUMyQztBQUlwRDtJQUZDLFFBQVEsRUFBRTtJQUNWLE1BQU0sRUFBRTs7cURBQ1c7QUFHcEI7SUFEQyxNQUFNLEVBQUU7O2tEQUNlO0FBR3hCO0lBREMsTUFBTSxFQUFFOzttREFDMEI7QUFHbkM7SUFEQyxNQUFNLEVBQUU7O29EQUNVO0FBR25CO0lBREMsTUFBTSxFQUFFOztvREFDVTtBQUduQjtJQURDLFNBQVMsRUFBRTs4QkFDQSxJQUFJO29EQUFDO0FBR2pCO0lBREMsU0FBUyxFQUFFOzhCQUNBLElBQUk7b0RBQUM7QUFyQ04saUJBQWlCO0lBRjdCLEtBQUssQ0FBQyxxQkFBcUIsQ0FBQztJQUM1QixLQUFLLEVBQUU7O0dBQ0ssaUJBQWlCLENBc0M3QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJhc2VNb2RlbCB9IGZyb20gXCJAZGVjYWYtdHMvY29yZVwiO1xuaW1wb3J0IHsgY29sdW1uLCBjcmVhdGVkQXQsIHBrLCB0YWJsZSwgdXBkYXRlZEF0LCB1dWlkIH0gZnJvbSBcIkBkZWNhZi10cy9jb3JlXCI7XG5pbXBvcnQgeyBtb2RlbCwgcmVxdWlyZWQgfSBmcm9tIFwiQGRlY2FmLXRzL2RlY29yYXRvci12YWxpZGF0aW9uXCI7XG5pbXBvcnQgdHlwZSB7IEZlYXR1cmVGbGFnQWNjZXNzU3ViamVjdFR5cGUgfSBmcm9tIFwiLi4vdHlwZXNcIjtcblxuQHRhYmxlKFwiZmVhdHVyZV9mbGFnX2FjY2Vzc1wiKVxuQG1vZGVsKClcbmV4cG9ydCBjbGFzcyBGZWF0dXJlRmxhZ0FjY2VzcyBleHRlbmRzIEJhc2VNb2RlbCB7XG4gIGNvbnN0cnVjdG9yKGRhdGE/OiBQYXJ0aWFsPEZlYXR1cmVGbGFnQWNjZXNzPikge1xuICAgIHN1cGVyKGRhdGEpO1xuICB9XG5cbiAgQHBrKClcbiAgQHV1aWQoKVxuICBpZCE6IHN0cmluZztcblxuICBAcmVxdWlyZWQoKVxuICBAY29sdW1uKClcbiAgZmVhdHVyZUtleSE6IHN0cmluZztcblxuICBAcmVxdWlyZWQoKVxuICBAY29sdW1uKClcbiAgc3ViamVjdFR5cGUhOiBGZWF0dXJlRmxhZ0FjY2Vzc1N1YmplY3RUeXBlIHwgc3RyaW5nO1xuXG4gIEByZXF1aXJlZCgpXG4gIEBjb2x1bW4oKVxuICBzdWJqZWN0S2V5ITogc3RyaW5nO1xuXG4gIEBjb2x1bW4oKVxuICBlbmFibGVkOiBib29sZWFuID0gdHJ1ZTtcblxuICBAY29sdW1uKClcbiAgbWV0YWRhdGE/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcblxuICBAY29sdW1uKClcbiAgY3JlYXRlZEJ5Pzogc3RyaW5nO1xuXG4gIEBjb2x1bW4oKVxuICB1cGRhdGVkQnk/OiBzdHJpbmc7XG5cbiAgQGNyZWF0ZWRBdCgpXG4gIGNyZWF0ZWRBdCE6IERhdGU7XG5cbiAgQHVwZGF0ZWRBdCgpXG4gIHVwZGF0ZWRBdCE6IERhdGU7XG59XG4iXX0=
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { FEATURE_FLAG_ENV_ROOT, } from "./../constants.js";
|
|
2
|
+
import { loadFeatureFlagsFromEnvironment, } from "./../environment.js";
|
|
3
|
+
import { normalizeFeatureName } from "./../utils.js";
|
|
4
|
+
export class FeatureFlagReader {
|
|
5
|
+
async readOne(featureName, input) {
|
|
6
|
+
const registry = await this.read(input);
|
|
7
|
+
return registry[normalizeFeatureName(featureName)];
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
export class EnvironmeFlagReader extends FeatureFlagReader {
|
|
11
|
+
async read(input = {}) {
|
|
12
|
+
const environment = input.source ??
|
|
13
|
+
{
|
|
14
|
+
[FEATURE_FLAG_ENV_ROOT]: {},
|
|
15
|
+
};
|
|
16
|
+
return loadFeatureFlagsFromEnvironment(environment);
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRmVhdHVyZUZsYWdSZWFkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZmVhdHVyZS1mbGFncy9yZWFkZXJzL0ZlYXR1cmVGbGFnUmVhZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxxQkFBcUIsR0FDdEIsMEJBQXFCO0FBQ3RCLE9BQU8sRUFDTCwrQkFBK0IsR0FDaEMsNEJBQXVCO0FBT3hCLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxzQkFBaUI7QUFFaEQsTUFBTSxPQUFnQixpQkFBaUI7SUFLckMsS0FBSyxDQUFDLE9BQU8sQ0FDWCxXQUFtQixFQUNuQixLQUE4QjtRQUU5QixNQUFNLFFBQVEsR0FBRyxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDeEMsT0FBTyxRQUFRLENBQUMsb0JBQW9CLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztJQUNyRCxDQUFDO0NBQ0Y7QUFFRCxNQUFNLE9BQU8sbUJBQW9CLFNBQVEsaUJBQWlCO0lBQ3hELEtBQUssQ0FBQyxJQUFJLENBQ1IsUUFBZ0MsRUFBRTtRQUVsQyxNQUFNLFdBQVcsR0FDZCxLQUFLLENBQUMsTUFBa0Q7WUFDeEQ7Z0JBQ0MsQ0FBQyxxQkFBcUIsQ0FBQyxFQUFFLEVBQUU7YUFDSSxDQUFDO1FBQ3BDLE9BQU8sK0JBQStCLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDdEQsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgRkVBVFVSRV9GTEFHX0VOVl9ST09ULFxufSBmcm9tIFwiLi4vY29uc3RhbnRzXCI7XG5pbXBvcnQge1xuICBsb2FkRmVhdHVyZUZsYWdzRnJvbUVudmlyb25tZW50LFxufSBmcm9tIFwiLi4vZW52aXJvbm1lbnRcIjtcbmltcG9ydCB0eXBlIHtcbiAgRmVhdHVyZUZsYWdFbnZpcm9ubWVudFNoYXBlLFxuICBGZWF0dXJlRmxhZ1JlYWRlcklucHV0LFxuICBGZWF0dXJlRmxhZ1JlZ2lzdHJ5LFxuICBGZWF0dXJlRmxhZ1ZhbHVlLFxufSBmcm9tIFwiLi4vdHlwZXNcIjtcbmltcG9ydCB7IG5vcm1hbGl6ZUZlYXR1cmVOYW1lIH0gZnJvbSBcIi4uL3V0aWxzXCI7XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBGZWF0dXJlRmxhZ1JlYWRlciB7XG4gIGFic3RyYWN0IHJlYWQoXG4gICAgaW5wdXQ/OiBGZWF0dXJlRmxhZ1JlYWRlcklucHV0XG4gICk6IFByb21pc2U8RmVhdHVyZUZsYWdSZWdpc3RyeT47XG5cbiAgYXN5bmMgcmVhZE9uZShcbiAgICBmZWF0dXJlTmFtZTogc3RyaW5nLFxuICAgIGlucHV0PzogRmVhdHVyZUZsYWdSZWFkZXJJbnB1dFxuICApOiBQcm9taXNlPEZlYXR1cmVGbGFnVmFsdWUgfCB1bmRlZmluZWQ+IHtcbiAgICBjb25zdCByZWdpc3RyeSA9IGF3YWl0IHRoaXMucmVhZChpbnB1dCk7XG4gICAgcmV0dXJuIHJlZ2lzdHJ5W25vcm1hbGl6ZUZlYXR1cmVOYW1lKGZlYXR1cmVOYW1lKV07XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEVudmlyb25tZUZsYWdSZWFkZXIgZXh0ZW5kcyBGZWF0dXJlRmxhZ1JlYWRlciB7XG4gIGFzeW5jIHJlYWQoXG4gICAgaW5wdXQ6IEZlYXR1cmVGbGFnUmVhZGVySW5wdXQgPSB7fVxuICApOiBQcm9taXNlPEZlYXR1cmVGbGFnUmVnaXN0cnk+IHtcbiAgICBjb25zdCBlbnZpcm9ubWVudCA9XG4gICAgICAoaW5wdXQuc291cmNlIGFzIEZlYXR1cmVGbGFnRW52aXJvbm1lbnRTaGFwZSB8IHVuZGVmaW5lZCkgPz9cbiAgICAgICh7XG4gICAgICAgIFtGRUFUVVJFX0ZMQUdfRU5WX1JPT1RdOiB7fSxcbiAgICAgIH0gYXMgRmVhdHVyZUZsYWdFbnZpcm9ubWVudFNoYXBlKTtcbiAgICByZXR1cm4gbG9hZEZlYXR1cmVGbGFnc0Zyb21FbnZpcm9ubWVudChlbnZpcm9ubWVudCk7XG4gIH1cbn1cblxuZXhwb3J0IHR5cGUgRmVhdHVyZUZsYWdSZWFkZXJDb25zdHJ1Y3RvciA9IG5ldyAoKSA9PiBGZWF0dXJlRmxhZ1JlYWRlcjtcbmV4cG9ydCB0eXBlIEZlYXR1cmVGbGFnUmVhZGVyTGlrZSA9XG4gIHwgRmVhdHVyZUZsYWdSZWFkZXJcbiAgfCBGZWF0dXJlRmxhZ1JlYWRlckNvbnN0cnVjdG9yO1xuIl19
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export * from "./FeatureFlagReader.js";
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZmVhdHVyZS1mbGFncy9yZWFkZXJzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHVDQUFvQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gXCIuL0ZlYXR1cmVGbGFnUmVhZGVyXCI7XG5cbiJdfQ==
|