@etohq/utils 1.5.1-alpha.4 → 1.5.1-alpha.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/caching/index.d.ts +27 -0
- package/dist/caching/index.d.ts.map +1 -0
- package/dist/caching/index.js +157 -0
- package/dist/caching/index.js.map +1 -0
- package/dist/common/define-file-config.d.ts +8 -0
- package/dist/common/define-file-config.d.ts.map +1 -0
- package/dist/common/define-file-config.js +34 -0
- package/dist/common/define-file-config.js.map +1 -0
- package/dist/common/errors.d.ts +2 -0
- package/dist/common/errors.d.ts.map +1 -1
- package/dist/common/errors.js +2 -0
- package/dist/common/errors.js.map +1 -1
- package/dist/common/execute-with-concurrency.d.ts +5 -0
- package/dist/common/execute-with-concurrency.d.ts.map +1 -0
- package/dist/common/execute-with-concurrency.js +26 -0
- package/dist/common/execute-with-concurrency.js.map +1 -0
- package/dist/common/index.d.ts +3 -0
- package/dist/common/index.d.ts.map +1 -1
- package/dist/common/index.js +3 -0
- package/dist/common/index.js.map +1 -1
- package/dist/common/parse-stringify-if-necessary.d.ts +5 -0
- package/dist/common/parse-stringify-if-necessary.d.ts.map +1 -0
- package/dist/common/parse-stringify-if-necessary.js +38 -0
- package/dist/common/parse-stringify-if-necessary.js.map +1 -0
- package/dist/dev-server/handlers/job-handler.d.ts +9 -0
- package/dist/dev-server/handlers/job-handler.d.ts.map +1 -0
- package/dist/dev-server/handlers/job-handler.js +33 -0
- package/dist/dev-server/handlers/job-handler.js.map +1 -0
- package/dist/dev-server/handlers/step-handler.d.ts +11 -0
- package/dist/dev-server/handlers/step-handler.d.ts.map +1 -0
- package/dist/dev-server/handlers/step-handler.js +39 -0
- package/dist/dev-server/handlers/step-handler.js.map +1 -0
- package/dist/dev-server/handlers/subscriber-handler.d.ts +9 -0
- package/dist/dev-server/handlers/subscriber-handler.d.ts.map +1 -0
- package/dist/dev-server/handlers/subscriber-handler.js +40 -0
- package/dist/dev-server/handlers/subscriber-handler.js.map +1 -0
- package/dist/dev-server/handlers/workflow-handler.d.ts +9 -0
- package/dist/dev-server/handlers/workflow-handler.d.ts.map +1 -0
- package/dist/dev-server/handlers/workflow-handler.js +30 -0
- package/dist/dev-server/handlers/workflow-handler.js.map +1 -0
- package/dist/dev-server/index.d.ts +8 -0
- package/dist/dev-server/index.d.ts.map +1 -0
- package/dist/dev-server/index.js +50 -0
- package/dist/dev-server/index.js.map +1 -0
- package/dist/dev-server/registry-helpers.d.ts +5 -0
- package/dist/dev-server/registry-helpers.d.ts.map +1 -0
- package/dist/dev-server/registry-helpers.js +23 -0
- package/dist/dev-server/registry-helpers.js.map +1 -0
- package/dist/dev-server/types.d.ts +44 -0
- package/dist/dev-server/types.d.ts.map +1 -0
- package/dist/dev-server/types.js +3 -0
- package/dist/dev-server/types.js.map +1 -0
- package/dist/event-bus/index.d.ts +11 -2
- package/dist/event-bus/index.d.ts.map +1 -1
- package/dist/event-bus/index.js +19 -0
- package/dist/event-bus/index.js.map +1 -1
- package/dist/feature-flags/discover-and-register-feature-flags.d.ts +15 -0
- package/dist/feature-flags/discover-and-register-feature-flags.d.ts.map +1 -0
- package/dist/feature-flags/discover-and-register-feature-flags.js +23 -0
- package/dist/feature-flags/discover-and-register-feature-flags.js.map +1 -0
- package/dist/feature-flags/discover-feature-flags.d.ts +6 -0
- package/dist/feature-flags/discover-feature-flags.d.ts.map +1 -0
- package/dist/feature-flags/discover-feature-flags.js +53 -0
- package/dist/feature-flags/discover-feature-flags.js.map +1 -0
- package/dist/feature-flags/flag-router.d.ts +33 -0
- package/dist/feature-flags/flag-router.d.ts.map +1 -0
- package/dist/feature-flags/flag-router.js +68 -0
- package/dist/feature-flags/flag-router.js.map +1 -0
- package/dist/feature-flags/index.d.ts +2 -0
- package/dist/feature-flags/index.d.ts.map +1 -1
- package/dist/feature-flags/index.js +3 -0
- package/dist/feature-flags/index.js.map +1 -1
- package/dist/feature-flags/register-flag.d.ts +18 -0
- package/dist/feature-flags/register-flag.d.ts.map +1 -0
- package/dist/feature-flags/register-flag.js +41 -0
- package/dist/feature-flags/register-flag.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -1
- package/dist/modules-sdk/definition.js +1 -1
- package/dist/modules-sdk/definition.js.map +1 -1
- package/dist/translations/apply-translations-to-tax-lines.d.ts +17 -0
- package/dist/translations/apply-translations-to-tax-lines.d.ts.map +1 -0
- package/dist/translations/apply-translations-to-tax-lines.js +38 -0
- package/dist/translations/apply-translations-to-tax-lines.js.map +1 -0
- package/dist/translations/apply-translations.d.ts +7 -0
- package/dist/translations/apply-translations.d.ts.map +1 -0
- package/dist/translations/apply-translations.js +104 -0
- package/dist/translations/apply-translations.js.map +1 -0
- package/dist/translations/index.d.ts +3 -0
- package/dist/translations/index.d.ts.map +1 -0
- package/dist/translations/index.js +19 -0
- package/dist/translations/index.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +2 -2
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SubscriberHandler = void 0;
|
|
4
|
+
class SubscriberHandler {
|
|
5
|
+
constructor() {
|
|
6
|
+
this.type = "subscriber";
|
|
7
|
+
}
|
|
8
|
+
validate(data) {
|
|
9
|
+
if (!data.id) {
|
|
10
|
+
throw new Error(`Subscriber registration requires id. Received: ${JSON.stringify(data)}`);
|
|
11
|
+
}
|
|
12
|
+
if (!data.sourcePath) {
|
|
13
|
+
throw new Error(`Subscriber registration requires sourcePath. Received: ${JSON.stringify(data)}`);
|
|
14
|
+
}
|
|
15
|
+
if (!data.subscriberId) {
|
|
16
|
+
throw new Error(`Subscriber registration requires subscriberId. Received: ${JSON.stringify(data)}`);
|
|
17
|
+
}
|
|
18
|
+
if (!data.events) {
|
|
19
|
+
throw new Error(`Subscriber registration requires events. Received: ${JSON.stringify(data)}`);
|
|
20
|
+
}
|
|
21
|
+
if (!Array.isArray(data.events)) {
|
|
22
|
+
throw new Error(`Subscriber registration requires events to be an array. Received: ${JSON.stringify(data)}`);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
resolveSourcePath(data) {
|
|
26
|
+
return data.sourcePath;
|
|
27
|
+
}
|
|
28
|
+
createEntry(data) {
|
|
29
|
+
return {
|
|
30
|
+
id: data.id,
|
|
31
|
+
subscriberId: data.subscriberId,
|
|
32
|
+
events: data.events,
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
getInverseKey(data) {
|
|
36
|
+
return `${this.type}:${data.subscriberId}`;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
exports.SubscriberHandler = SubscriberHandler;
|
|
40
|
+
//# sourceMappingURL=subscriber-handler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"subscriber-handler.js","sourceRoot":"","sources":["../../../src/dev-server/handlers/subscriber-handler.ts"],"names":[],"mappings":";;;AAMA,MAAa,iBAAiB;IAA9B;QAGW,SAAI,GAAG,YAAY,CAAA;IAyD9B,CAAC;IAvDC,QAAQ,CAAC,IAA4B;QACnC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CACb,kDAAkD,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CACzE,CAAA;QACH,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YACrB,MAAM,IAAI,KAAK,CACb,0DAA0D,IAAI,CAAC,SAAS,CACtE,IAAI,CACL,EAAE,CACJ,CAAA;QACH,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;YACvB,MAAM,IAAI,KAAK,CACb,4DAA4D,IAAI,CAAC,SAAS,CACxE,IAAI,CACL,EAAE,CACJ,CAAA;QACH,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CACb,sDAAsD,IAAI,CAAC,SAAS,CAClE,IAAI,CACL,EAAE,CACJ,CAAA;QACH,CAAC;QAED,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;YAChC,MAAM,IAAI,KAAK,CACb,qEAAqE,IAAI,CAAC,SAAS,CACjF,IAAI,CACL,EAAE,CACJ,CAAA;QACH,CAAC;IACH,CAAC;IAED,iBAAiB,CAAC,IAA4B;QAC5C,OAAO,IAAI,CAAC,UAAU,CAAA;IACxB,CAAC;IAED,WAAW,CAAC,IAA4B;QACtC,OAAO;YACL,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,MAAM,EAAE,IAAI,CAAC,MAAM;SACpB,CAAA;IACH,CAAC;IAED,aAAa,CAAC,IAA4B;QACxC,OAAO,GAAG,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,YAAY,EAAE,CAAA;IAC5C,CAAC;CACF;AA5DD,8CA4DC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { ResourceEntry, ResourceTypeHandler, WorkflowResourceData } from "../types";
|
|
2
|
+
export declare class WorkflowHandler implements ResourceTypeHandler<WorkflowResourceData> {
|
|
3
|
+
readonly type = "workflow";
|
|
4
|
+
validate(data: WorkflowResourceData): void;
|
|
5
|
+
resolveSourcePath(data: WorkflowResourceData): string;
|
|
6
|
+
createEntry(data: WorkflowResourceData): ResourceEntry;
|
|
7
|
+
getInverseKey(data: WorkflowResourceData): string;
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=workflow-handler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workflow-handler.d.ts","sourceRoot":"","sources":["../../../src/dev-server/handlers/workflow-handler.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EACb,mBAAmB,EACnB,oBAAoB,EACrB,MAAM,UAAU,CAAA;AAEjB,qBAAa,eACX,YAAW,mBAAmB,CAAC,oBAAoB,CAAC;IAEpD,QAAQ,CAAC,IAAI,cAAa;IAE1B,QAAQ,CAAC,IAAI,EAAE,oBAAoB,GAAG,IAAI;IAgB1C,iBAAiB,CAAC,IAAI,EAAE,oBAAoB,GAAG,MAAM;IAIrD,WAAW,CAAC,IAAI,EAAE,oBAAoB,GAAG,aAAa;IAOtD,aAAa,CAAC,IAAI,EAAE,oBAAoB,GAAG,MAAM;CAGlD"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.WorkflowHandler = void 0;
|
|
4
|
+
class WorkflowHandler {
|
|
5
|
+
constructor() {
|
|
6
|
+
this.type = "workflow";
|
|
7
|
+
}
|
|
8
|
+
validate(data) {
|
|
9
|
+
if (!data.sourcePath) {
|
|
10
|
+
throw new Error(`Workflow registration requires sourcePath. Received: ${JSON.stringify(data)}`);
|
|
11
|
+
}
|
|
12
|
+
if (!data.id) {
|
|
13
|
+
throw new Error(`Workflow registration requires id. Received: ${JSON.stringify(data)}`);
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
resolveSourcePath(data) {
|
|
17
|
+
return data.sourcePath;
|
|
18
|
+
}
|
|
19
|
+
createEntry(data) {
|
|
20
|
+
return {
|
|
21
|
+
id: data.id,
|
|
22
|
+
workflowId: data.id,
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
getInverseKey(data) {
|
|
26
|
+
return `${this.type}:${data.id}`;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
exports.WorkflowHandler = WorkflowHandler;
|
|
30
|
+
//# sourceMappingURL=workflow-handler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workflow-handler.js","sourceRoot":"","sources":["../../../src/dev-server/handlers/workflow-handler.ts"],"names":[],"mappings":";;;AAMA,MAAa,eAAe;IAA5B;QAGW,SAAI,GAAG,UAAU,CAAA;IAgC5B,CAAC;IA9BC,QAAQ,CAAC,IAA0B;QACjC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YACrB,MAAM,IAAI,KAAK,CACb,wDAAwD,IAAI,CAAC,SAAS,CACpE,IAAI,CACL,EAAE,CACJ,CAAA;QACH,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CACb,gDAAgD,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CACvE,CAAA;QACH,CAAC;IACH,CAAC;IAED,iBAAiB,CAAC,IAA0B;QAC1C,OAAO,IAAI,CAAC,UAAU,CAAA;IACxB,CAAC;IAED,WAAW,CAAC,IAA0B;QACpC,OAAO;YACL,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,UAAU,EAAE,IAAI,CAAC,EAAE;SACpB,CAAA;IACH,CAAC;IAED,aAAa,CAAC,IAA0B;QACtC,OAAO,GAAG,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,EAAE,EAAE,CAAA;IAClC,CAAC;CACF;AAnCD,0CAmCC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { BaseResourceData, ResourceMap, ResourceRegistrationData, ResourceTypeHandler } from "./types";
|
|
2
|
+
export type { BaseResourceData, ResourceEntry, ResourceMap, ResourcePath, ResourceType, ResourceTypeHandler, } from "./types";
|
|
3
|
+
export declare const globalDevServerRegistry: Map<string, ResourceMap>;
|
|
4
|
+
export declare const inverseDevServerRegistry: Map<string, string[]>;
|
|
5
|
+
export declare function registerResourceTypeHandler(handler: ResourceTypeHandler): void;
|
|
6
|
+
export declare function registerDevServerResource(data: ResourceRegistrationData): void;
|
|
7
|
+
export declare function registerDevServerResource<T extends BaseResourceData>(data: T): void;
|
|
8
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/dev-server/index.ts"],"names":[],"mappings":"AAUA,OAAO,EACL,gBAAgB,EAChB,WAAW,EAEX,wBAAwB,EACxB,mBAAmB,EACpB,MAAM,SAAS,CAAA;AAEhB,YAAY,EACV,gBAAgB,EAChB,aAAa,EACb,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,mBAAmB,GACpB,MAAM,SAAS,CAAA;AAEhB,eAAO,MAAM,uBAAuB,0BAAuC,CAAA;AAC3E,eAAO,MAAM,wBAAwB,uBAA0C,CAAA;AAI/E,wBAAgB,2BAA2B,CACzC,OAAO,EAAE,mBAAmB,GAC3B,IAAI,CAQN;AAOD,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,wBAAwB,GAAG,IAAI,CAAA;AAC/E,wBAAgB,yBAAyB,CAAC,CAAC,SAAS,gBAAgB,EAClE,IAAI,EAAE,CAAC,GACN,IAAI,CAAA"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.inverseDevServerRegistry = exports.globalDevServerRegistry = void 0;
|
|
4
|
+
exports.registerResourceTypeHandler = registerResourceTypeHandler;
|
|
5
|
+
exports.registerDevServerResource = registerDevServerResource;
|
|
6
|
+
const feature_flags_1 = require("../feature-flags");
|
|
7
|
+
const job_handler_1 = require("./handlers/job-handler");
|
|
8
|
+
const step_handler_1 = require("./handlers/step-handler");
|
|
9
|
+
const subscriber_handler_1 = require("./handlers/subscriber-handler");
|
|
10
|
+
const workflow_handler_1 = require("./handlers/workflow-handler");
|
|
11
|
+
const registry_helpers_1 = require("./registry-helpers");
|
|
12
|
+
exports.globalDevServerRegistry = new Map();
|
|
13
|
+
exports.inverseDevServerRegistry = new Map();
|
|
14
|
+
const resourceHandlers = new Map();
|
|
15
|
+
function registerResourceTypeHandler(handler) {
|
|
16
|
+
if (resourceHandlers.has(handler.type)) {
|
|
17
|
+
console.warn(`Resource type handler for "${handler.type}" is being overridden`);
|
|
18
|
+
}
|
|
19
|
+
resourceHandlers.set(handler.type, handler);
|
|
20
|
+
}
|
|
21
|
+
registerResourceTypeHandler(new workflow_handler_1.WorkflowHandler());
|
|
22
|
+
registerResourceTypeHandler(new step_handler_1.StepHandler(exports.inverseDevServerRegistry));
|
|
23
|
+
registerResourceTypeHandler(new subscriber_handler_1.SubscriberHandler());
|
|
24
|
+
registerResourceTypeHandler(new job_handler_1.JobHandler());
|
|
25
|
+
function registerDevServerResource(data) {
|
|
26
|
+
const isProduction = ["production", "prod"].includes(process.env.NODE_ENV || "");
|
|
27
|
+
if (!feature_flags_1.FeatureFlag.isFeatureEnabled("backend_hmr") || isProduction) {
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
const handler = resourceHandlers.get(data.type);
|
|
31
|
+
if (!handler) {
|
|
32
|
+
throw new Error(`No handler registered for resource type "${data.type}". ` +
|
|
33
|
+
`Available types: ${Array.from(resourceHandlers.keys()).join(", ")}. ` +
|
|
34
|
+
`Use registerResourceTypeHandler() to add support for custom types.`);
|
|
35
|
+
}
|
|
36
|
+
try {
|
|
37
|
+
handler.validate(data);
|
|
38
|
+
const sourcePath = handler.resolveSourcePath(data);
|
|
39
|
+
const registry = (0, registry_helpers_1.getOrCreateRegistry)(exports.globalDevServerRegistry, sourcePath);
|
|
40
|
+
const entry = handler.createEntry(data);
|
|
41
|
+
(0, registry_helpers_1.addToRegistry)(registry, data.type, entry);
|
|
42
|
+
const inverseKey = handler.getInverseKey(data);
|
|
43
|
+
(0, registry_helpers_1.addToInverseRegistry)(exports.inverseDevServerRegistry, inverseKey, sourcePath);
|
|
44
|
+
}
|
|
45
|
+
catch (error) {
|
|
46
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
47
|
+
throw new Error(`Failed to register ${data.type} resource "${data.id}": ${errorMessage}`);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/dev-server/index.ts"],"names":[],"mappings":";;;AAgCA,kEAUC;AAWD,8DAsCC;AA3FD,oDAA8C;AAC9C,wDAAmD;AACnD,0DAAqD;AACrD,sEAAiE;AACjE,kEAA6D;AAC7D,yDAI2B;AAkBd,QAAA,uBAAuB,GAAG,IAAI,GAAG,EAA6B,CAAA;AAC9D,QAAA,wBAAwB,GAAG,IAAI,GAAG,EAAgC,CAAA;AAE/E,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAA+B,CAAA;AAE/D,SAAgB,2BAA2B,CACzC,OAA4B;IAE5B,IAAI,gBAAgB,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QACvC,OAAO,CAAC,IAAI,CACV,8BAA8B,OAAO,CAAC,IAAI,uBAAuB,CAClE,CAAA;IACH,CAAC;IAED,gBAAgB,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;AAC7C,CAAC;AAED,2BAA2B,CAAC,IAAI,kCAAe,EAAE,CAAC,CAAA;AAClD,2BAA2B,CAAC,IAAI,0BAAW,CAAC,gCAAwB,CAAC,CAAC,CAAA;AACtE,2BAA2B,CAAC,IAAI,sCAAiB,EAAE,CAAC,CAAA;AACpD,2BAA2B,CAAC,IAAI,wBAAU,EAAE,CAAC,CAAA;AAM7C,SAAgB,yBAAyB,CACvC,IAAO;IAEP,MAAM,YAAY,GAAG,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC,QAAQ,CAClD,OAAO,CAAC,GAAG,CAAC,QAAQ,IAAI,EAAE,CAC3B,CAAA;IAED,IAAI,CAAC,2BAAW,CAAC,gBAAgB,CAAC,aAAa,CAAC,IAAI,YAAY,EAAE,CAAC;QACjE,OAAM;IACR,CAAC;IAED,MAAM,OAAO,GAAG,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAE/C,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CACb,4CAA4C,IAAI,CAAC,IAAI,KAAK;YACxD,oBAAoB,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;YACtE,oEAAoE,CACvE,CAAA;IACH,CAAC;IAED,IAAI,CAAC;QACH,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;QAEtB,MAAM,UAAU,GAAG,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAA;QAClD,MAAM,QAAQ,GAAG,IAAA,sCAAmB,EAAC,+BAAuB,EAAE,UAAU,CAAC,CAAA;QACzE,MAAM,KAAK,GAAG,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAA;QAEvC,IAAA,gCAAa,EAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;QAEzC,MAAM,UAAU,GAAG,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,CAAA;QAC9C,IAAA,uCAAoB,EAAC,gCAAwB,EAAE,UAAU,EAAE,UAAU,CAAC,CAAA;IACxE,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;QAC3E,MAAM,IAAI,KAAK,CACb,sBAAsB,IAAI,CAAC,IAAI,cAAc,IAAI,CAAC,EAAE,MAAM,YAAY,EAAE,CACzE,CAAA;IACH,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { ResourceEntry, ResourceMap, ResourcePath } from "./types";
|
|
2
|
+
export declare function getOrCreateRegistry(globalRegistry: Map<ResourcePath, ResourceMap>, sourcePath: string): ResourceMap;
|
|
3
|
+
export declare function addToRegistry(registry: ResourceMap, type: string, entry: ResourceEntry): void;
|
|
4
|
+
export declare function addToInverseRegistry(inverseRegistry: Map<string, string[]>, key: string, sourcePath: string): void;
|
|
5
|
+
//# sourceMappingURL=registry-helpers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry-helpers.d.ts","sourceRoot":"","sources":["../../src/dev-server/registry-helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,YAAY,EAAgB,MAAM,SAAS,CAAA;AAEhF,wBAAgB,mBAAmB,CACjC,cAAc,EAAE,GAAG,CAAC,YAAY,EAAE,WAAW,CAAC,EAC9C,UAAU,EAAE,MAAM,GACjB,WAAW,CASb;AAED,wBAAgB,aAAa,CAC3B,QAAQ,EAAE,WAAW,EACrB,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,aAAa,GACnB,IAAI,CAGN;AAED,wBAAgB,oBAAoB,CAClC,eAAe,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,EACtC,GAAG,EAAE,MAAM,EACX,UAAU,EAAE,MAAM,GACjB,IAAI,CAIN"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getOrCreateRegistry = getOrCreateRegistry;
|
|
4
|
+
exports.addToRegistry = addToRegistry;
|
|
5
|
+
exports.addToInverseRegistry = addToInverseRegistry;
|
|
6
|
+
function getOrCreateRegistry(globalRegistry, sourcePath) {
|
|
7
|
+
let registry = globalRegistry.get(sourcePath);
|
|
8
|
+
if (!registry) {
|
|
9
|
+
registry = new Map();
|
|
10
|
+
globalRegistry.set(sourcePath, registry);
|
|
11
|
+
}
|
|
12
|
+
return registry;
|
|
13
|
+
}
|
|
14
|
+
function addToRegistry(registry, type, entry) {
|
|
15
|
+
const entries = registry.get(type) || [];
|
|
16
|
+
registry.set(type, [...entries, entry]);
|
|
17
|
+
}
|
|
18
|
+
function addToInverseRegistry(inverseRegistry, key, sourcePath) {
|
|
19
|
+
const existing = inverseRegistry.get(key) || [];
|
|
20
|
+
const updated = Array.from(new Set([...existing, sourcePath]));
|
|
21
|
+
inverseRegistry.set(key, updated);
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=registry-helpers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry-helpers.js","sourceRoot":"","sources":["../../src/dev-server/registry-helpers.ts"],"names":[],"mappings":";;AAEA,kDAYC;AAED,sCAOC;AAED,oDAQC;AA/BD,SAAgB,mBAAmB,CACjC,cAA8C,EAC9C,UAAkB;IAElB,IAAI,QAAQ,GAAG,cAAc,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;IAE7C,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,QAAQ,GAAG,IAAI,GAAG,EAAiC,CAAA;QACnD,cAAc,CAAC,GAAG,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAA;IAC1C,CAAC;IAED,OAAO,QAAQ,CAAA;AACjB,CAAC;AAED,SAAgB,aAAa,CAC3B,QAAqB,EACrB,IAAY,EACZ,KAAoB;IAEpB,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAA;IACxC,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,GAAG,OAAO,EAAE,KAAK,CAAC,CAAC,CAAA;AACzC,CAAC;AAED,SAAgB,oBAAoB,CAClC,eAAsC,EACtC,GAAW,EACX,UAAkB;IAElB,MAAM,QAAQ,GAAG,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,CAAA;IAC/C,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,QAAQ,EAAE,UAAU,CAAC,CAAC,CAAC,CAAA;IAC9D,eAAe,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAA;AACnC,CAAC"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
export type ResourcePath = string;
|
|
2
|
+
export type ResourceType = string;
|
|
3
|
+
export type ResourceEntry = {
|
|
4
|
+
id: string;
|
|
5
|
+
workflowId?: string;
|
|
6
|
+
[key: string]: unknown;
|
|
7
|
+
};
|
|
8
|
+
export type ResourceMap = Map<ResourceType, ResourceEntry[]>;
|
|
9
|
+
export interface BaseResourceData {
|
|
10
|
+
type: string;
|
|
11
|
+
id: string;
|
|
12
|
+
sourcePath?: string;
|
|
13
|
+
}
|
|
14
|
+
export interface WorkflowResourceData extends BaseResourceData {
|
|
15
|
+
type: "workflow";
|
|
16
|
+
sourcePath: string;
|
|
17
|
+
}
|
|
18
|
+
export interface StepResourceData extends BaseResourceData {
|
|
19
|
+
type: "step";
|
|
20
|
+
workflowId?: string;
|
|
21
|
+
sourcePath?: string;
|
|
22
|
+
}
|
|
23
|
+
export interface SubscriberResourceData extends BaseResourceData {
|
|
24
|
+
type: "subscriber";
|
|
25
|
+
sourcePath: string;
|
|
26
|
+
subscriberId: string;
|
|
27
|
+
events: string[];
|
|
28
|
+
}
|
|
29
|
+
export interface JobResourceData extends BaseResourceData {
|
|
30
|
+
type: "job";
|
|
31
|
+
sourcePath: string;
|
|
32
|
+
config: {
|
|
33
|
+
name: string;
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
export type ResourceRegistrationData = WorkflowResourceData | StepResourceData | SubscriberResourceData | JobResourceData;
|
|
37
|
+
export interface ResourceTypeHandler<T extends BaseResourceData = BaseResourceData> {
|
|
38
|
+
readonly type: string;
|
|
39
|
+
validate(data: T): void;
|
|
40
|
+
resolveSourcePath(data: T): string;
|
|
41
|
+
createEntry(data: T): ResourceEntry;
|
|
42
|
+
getInverseKey(data: T): string;
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/dev-server/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,YAAY,GAAG,MAAM,CAAA;AACjC,MAAM,MAAM,YAAY,GAAG,MAAM,CAAA;AAEjC,MAAM,MAAM,aAAa,GAAG;IAC1B,EAAE,EAAE,MAAM,CAAA;IACV,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CACvB,CAAA;AAED,MAAM,MAAM,WAAW,GAAG,GAAG,CAAC,YAAY,EAAE,aAAa,EAAE,CAAC,CAAA;AAE5D,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAA;IACZ,EAAE,EAAE,MAAM,CAAA;IACV,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAED,MAAM,WAAW,oBAAqB,SAAQ,gBAAgB;IAC5D,IAAI,EAAE,UAAU,CAAA;IAChB,UAAU,EAAE,MAAM,CAAA;CACnB;AAED,MAAM,WAAW,gBAAiB,SAAQ,gBAAgB;IACxD,IAAI,EAAE,MAAM,CAAA;IACZ,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAED,MAAM,WAAW,sBAAuB,SAAQ,gBAAgB;IAC9D,IAAI,EAAE,YAAY,CAAA;IAClB,UAAU,EAAE,MAAM,CAAA;IAClB,YAAY,EAAE,MAAM,CAAA;IACpB,MAAM,EAAE,MAAM,EAAE,CAAA;CACjB;AAED,MAAM,WAAW,eAAgB,SAAQ,gBAAgB;IACvD,IAAI,EAAE,KAAK,CAAA;IACX,UAAU,EAAE,MAAM,CAAA;IAClB,MAAM,EAAE;QACN,IAAI,EAAE,MAAM,CAAA;KACb,CAAA;CACF;AAED,MAAM,MAAM,wBAAwB,GAChC,oBAAoB,GACpB,gBAAgB,GAChB,sBAAsB,GACtB,eAAe,CAAA;AAEnB,MAAM,WAAW,mBAAmB,CAClC,CAAC,SAAS,gBAAgB,GAAG,gBAAgB;IAE7C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IAErB,QAAQ,CAAC,IAAI,EAAE,CAAC,GAAG,IAAI,CAAA;IAEvB,iBAAiB,CAAC,IAAI,EAAE,CAAC,GAAG,MAAM,CAAA;IAElC,WAAW,CAAC,IAAI,EAAE,CAAC,GAAG,aAAa,CAAA;IAEnC,aAAa,CAAC,IAAI,EAAE,CAAC,GAAG,MAAM,CAAA;CAC/B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/dev-server/types.ts"],"names":[],"mappings":""}
|
|
@@ -1,12 +1,15 @@
|
|
|
1
|
-
import { EventBusTypes, InternalModuleDeclaration } from "@etohq/types";
|
|
1
|
+
import { EventBusTypes, InterceptorSubscriber, InternalModuleDeclaration } from "@etohq/types";
|
|
2
2
|
export declare abstract class AbstractEventBusModuleService implements EventBusTypes.IEventBusModuleService {
|
|
3
3
|
protected isWorkerMode: boolean;
|
|
4
4
|
protected eventToSubscribersMap_: Map<string | symbol, EventBusTypes.SubscriberDescriptor[]>;
|
|
5
|
+
protected interceptorSubscribers_: Set<InterceptorSubscriber>;
|
|
5
6
|
get eventToSubscribersMap(): Map<string | symbol, EventBusTypes.SubscriberDescriptor[]>;
|
|
6
7
|
protected constructor(cradle: Record<string, unknown>, moduleOptions: {} | undefined, moduleDeclaration: InternalModuleDeclaration);
|
|
7
8
|
abstract emit<T>(data: EventBusTypes.Message<T> | EventBusTypes.Message<T>[], options: Record<string, unknown>): Promise<void>;
|
|
8
9
|
abstract releaseGroupedEvents(eventGroupId: string): Promise<void>;
|
|
9
|
-
abstract clearGroupedEvents(eventGroupId: string
|
|
10
|
+
abstract clearGroupedEvents(eventGroupId: string, options?: {
|
|
11
|
+
eventNames?: string[];
|
|
12
|
+
}): Promise<void>;
|
|
10
13
|
protected storeSubscribers({ event, subscriberId, subscriber, }: {
|
|
11
14
|
event: string | symbol;
|
|
12
15
|
subscriberId: string;
|
|
@@ -14,6 +17,12 @@ export declare abstract class AbstractEventBusModuleService implements EventBusT
|
|
|
14
17
|
}): void;
|
|
15
18
|
subscribe(eventName: string | symbol, subscriber: EventBusTypes.Subscriber, context?: EventBusTypes.SubscriberContext): this;
|
|
16
19
|
unsubscribe(eventName: string | symbol, subscriber: EventBusTypes.Subscriber, context?: EventBusTypes.SubscriberContext): this;
|
|
20
|
+
addInterceptor(interceptor: InterceptorSubscriber): this;
|
|
21
|
+
removeInterceptor(interceptor: InterceptorSubscriber): this;
|
|
22
|
+
protected callInterceptors<T = unknown>(message: EventBusTypes.Message<T>, context?: {
|
|
23
|
+
isGrouped?: boolean;
|
|
24
|
+
eventGroupId?: string;
|
|
25
|
+
}): Promise<void>;
|
|
17
26
|
}
|
|
18
27
|
export * from "./build-event-messages";
|
|
19
28
|
export * from "./common-events";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/event-bus/index.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/event-bus/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EACb,qBAAqB,EACrB,yBAAyB,EAC1B,MAAM,cAAc,CAAA;AAGrB,8BAAsB,6BACpB,YAAW,aAAa,CAAC,sBAAsB;IAE/C,SAAS,CAAC,YAAY,EAAE,OAAO,CAAO;IAEtC,SAAS,CAAC,sBAAsB,EAAE,GAAG,CACnC,MAAM,GAAG,MAAM,EACf,aAAa,CAAC,oBAAoB,EAAE,CACrC,CAAY;IAEb,SAAS,CAAC,uBAAuB,EAAE,GAAG,CAAC,qBAAqB,CAAC,CAAY;IAEzE,IAAW,qBAAqB,IAAI,GAAG,CACrC,MAAM,GAAG,MAAM,EACf,aAAa,CAAC,oBAAoB,EAAE,CACrC,CAEA;IAED,SAAS,aACP,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,aAAa,gBAAK,EAClB,iBAAiB,EAAE,yBAAyB;IAK9C,QAAQ,CAAC,IAAI,CAAC,CAAC,EACb,IAAI,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAC3D,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC/B,OAAO,CAAC,IAAI,CAAC;IAQhB,QAAQ,CAAC,oBAAoB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAGlE,QAAQ,CAAC,kBAAkB,CACzB,YAAY,EAAE,MAAM,EACpB,OAAO,CAAC,EAAE;QACR,UAAU,CAAC,EAAE,MAAM,EAAE,CAAA;KACtB,GACA,OAAO,CAAC,IAAI,CAAC;IAEhB,SAAS,CAAC,gBAAgB,CAAC,EACzB,KAAK,EACL,YAAY,EACZ,UAAU,GACX,EAAE;QACD,KAAK,EAAE,MAAM,GAAG,MAAM,CAAA;QACtB,YAAY,EAAE,MAAM,CAAA;QACpB,UAAU,EAAE,aAAa,CAAC,UAAU,CAAA;KACrC;IAmBM,SAAS,CACd,SAAS,EAAE,MAAM,GAAG,MAAM,EAC1B,UAAU,EAAE,aAAa,CAAC,UAAU,EACpC,OAAO,CAAC,EAAE,aAAa,CAAC,iBAAiB,GACxC,IAAI;IA2BP,WAAW,CACT,SAAS,EAAE,MAAM,GAAG,MAAM,EAC1B,UAAU,EAAE,aAAa,CAAC,UAAU,EACpC,OAAO,CAAC,EAAE,aAAa,CAAC,iBAAiB,GACxC,IAAI;IAwBA,cAAc,CAAC,WAAW,EAAE,qBAAqB,GAAG,IAAI;IAKxD,iBAAiB,CAAC,WAAW,EAAE,qBAAqB,GAAG,IAAI;cAKlD,gBAAgB,CAAC,CAAC,GAAG,OAAO,EAC1C,OAAO,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,EACjC,OAAO,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,OAAO,CAAC;QAAC,YAAY,CAAC,EAAE,MAAM,CAAA;KAAE,GACvD,OAAO,CAAC,IAAI,CAAC;CASjB;AAED,cAAc,wBAAwB,CAAA;AACtC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,sBAAsB,CAAA;AACpC,cAAc,SAAS,CAAA"}
|
package/dist/event-bus/index.js
CHANGED
|
@@ -23,6 +23,7 @@ class AbstractEventBusModuleService {
|
|
|
23
23
|
constructor(cradle, moduleOptions = {}, moduleDeclaration) {
|
|
24
24
|
this.isWorkerMode = true;
|
|
25
25
|
this.eventToSubscribersMap_ = new Map();
|
|
26
|
+
this.interceptorSubscribers_ = new Set();
|
|
26
27
|
this.isWorkerMode = moduleDeclaration.worker_mode !== "server";
|
|
27
28
|
}
|
|
28
29
|
storeSubscribers({ event, subscriberId, subscriber, }) {
|
|
@@ -74,6 +75,24 @@ class AbstractEventBusModuleService {
|
|
|
74
75
|
}
|
|
75
76
|
return this;
|
|
76
77
|
}
|
|
78
|
+
addInterceptor(interceptor) {
|
|
79
|
+
this.interceptorSubscribers_.add(interceptor);
|
|
80
|
+
return this;
|
|
81
|
+
}
|
|
82
|
+
removeInterceptor(interceptor) {
|
|
83
|
+
this.interceptorSubscribers_.delete(interceptor);
|
|
84
|
+
return this;
|
|
85
|
+
}
|
|
86
|
+
async callInterceptors(message, context) {
|
|
87
|
+
Array.from(this.interceptorSubscribers_).map(async (interceptor) => {
|
|
88
|
+
try {
|
|
89
|
+
await interceptor(message, context);
|
|
90
|
+
}
|
|
91
|
+
catch (error) {
|
|
92
|
+
console.error("Error in event bus interceptor:", error);
|
|
93
|
+
}
|
|
94
|
+
});
|
|
95
|
+
}
|
|
77
96
|
}
|
|
78
97
|
exports.AbstractEventBusModuleService = AbstractEventBusModuleService;
|
|
79
98
|
__exportStar(require("./build-event-messages"), exports);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/event-bus/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/event-bus/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { Logger } from "@etohq/types";
|
|
2
|
+
import { FlagRouter } from "./flag-router";
|
|
3
|
+
export interface DiscoverAndRegisterOptions {
|
|
4
|
+
flagDir: string;
|
|
5
|
+
projectConfigFlags?: Record<string, any>;
|
|
6
|
+
router: FlagRouter;
|
|
7
|
+
logger?: Logger;
|
|
8
|
+
track?: (key: string) => void;
|
|
9
|
+
maxDepth?: number;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Utility function to discover and register feature flags from a directory
|
|
13
|
+
*/
|
|
14
|
+
export declare function discoverAndRegisterFeatureFlags(options: DiscoverAndRegisterOptions): Promise<void>;
|
|
15
|
+
//# sourceMappingURL=discover-and-register-feature-flags.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"discover-and-register-feature-flags.d.ts","sourceRoot":"","sources":["../../src/feature-flags/discover-and-register-feature-flags.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,MAAM,EAAE,MAAM,cAAc,CAAA;AAEnD,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAG1C,MAAM,WAAW,0BAA0B;IACzC,OAAO,EAAE,MAAM,CAAA;IACf,kBAAkB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IACxC,MAAM,EAAE,UAAU,CAAA;IAClB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,KAAK,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAA;IAC7B,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAED;;GAEG;AACH,wBAAsB,+BAA+B,CACnD,OAAO,EAAE,0BAA0B,GAClC,OAAO,CAAC,IAAI,CAAC,CAuBf"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.discoverAndRegisterFeatureFlags = discoverAndRegisterFeatureFlags;
|
|
4
|
+
const discover_feature_flags_1 = require("./discover-feature-flags");
|
|
5
|
+
const register_flag_1 = require("./register-flag");
|
|
6
|
+
/**
|
|
7
|
+
* Utility function to discover and register feature flags from a directory
|
|
8
|
+
*/
|
|
9
|
+
async function discoverAndRegisterFeatureFlags(options) {
|
|
10
|
+
const { flagDir, projectConfigFlags = {}, router, logger, track, maxDepth, } = options;
|
|
11
|
+
const discovered = await (0, discover_feature_flags_1.discoverFeatureFlagsFromDir)(flagDir, maxDepth);
|
|
12
|
+
for (const def of discovered) {
|
|
13
|
+
const registerOptions = {
|
|
14
|
+
flag: def,
|
|
15
|
+
projectConfigFlags,
|
|
16
|
+
router,
|
|
17
|
+
logger,
|
|
18
|
+
track,
|
|
19
|
+
};
|
|
20
|
+
(0, register_flag_1.registerFeatureFlag)(registerOptions);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=discover-and-register-feature-flags.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"discover-and-register-feature-flags.js","sourceRoot":"","sources":["../../src/feature-flags/discover-and-register-feature-flags.ts"],"names":[],"mappings":";;AAiBA,0EAyBC;AAzCD,qEAAsE;AAEtE,mDAAqD;AAWrD;;GAEG;AACI,KAAK,UAAU,+BAA+B,CACnD,OAAmC;IAEnC,MAAM,EACJ,OAAO,EACP,kBAAkB,GAAG,EAAE,EACvB,MAAM,EACN,MAAM,EACN,KAAK,EACL,QAAQ,GACT,GAAG,OAAO,CAAA;IAEX,MAAM,UAAU,GAAG,MAAM,IAAA,oDAA2B,EAAC,OAAO,EAAE,QAAQ,CAAC,CAAA;IAEvE,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;QAC7B,MAAM,eAAe,GAA8C;YACjE,IAAI,EAAE,GAAmB;YACzB,kBAAkB;YAClB,MAAM;YACN,MAAM;YACN,KAAK;SACN,CAAA;QAED,IAAA,mCAAmB,EAAC,eAAe,CAAC,CAAA;IACtC,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { FlagSettings } from "@etohq/types";
|
|
2
|
+
/**
|
|
3
|
+
* Discover feature flag definitions from a directory and subdirectories
|
|
4
|
+
*/
|
|
5
|
+
export declare function discoverFeatureFlagsFromDir(sourcePath?: string, maxDepth?: number): Promise<FlagSettings[]>;
|
|
6
|
+
//# sourceMappingURL=discover-feature-flags.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"discover-feature-flags.d.ts","sourceRoot":"","sources":["../../src/feature-flags/discover-feature-flags.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAa3C;;GAEG;AACH,wBAAsB,2BAA2B,CAC/C,UAAU,CAAC,EAAE,MAAM,EACnB,QAAQ,GAAE,MAAU,GACnB,OAAO,CAAC,YAAY,EAAE,CAAC,CAkDzB"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.discoverFeatureFlagsFromDir = discoverFeatureFlagsFromDir;
|
|
4
|
+
const promises_1 = require("fs/promises");
|
|
5
|
+
const path_1 = require("path");
|
|
6
|
+
const common_1 = require("../common");
|
|
7
|
+
const excludedFiles = ["index.js", "index.ts"];
|
|
8
|
+
const excludedExtensions = [".d.ts", ".d.ts.map", ".js.map"];
|
|
9
|
+
function isFeatureFlag(flag) {
|
|
10
|
+
const f = flag;
|
|
11
|
+
return !!f && (0, common_1.isString)(f.key) && (0, common_1.isString)(f.env_key);
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Discover feature flag definitions from a directory and subdirectories
|
|
15
|
+
*/
|
|
16
|
+
async function discoverFeatureFlagsFromDir(sourcePath, maxDepth = 2) {
|
|
17
|
+
if (!sourcePath) {
|
|
18
|
+
return [];
|
|
19
|
+
}
|
|
20
|
+
const root = (0, path_1.normalize)(sourcePath);
|
|
21
|
+
const discovered = [];
|
|
22
|
+
const allEntries = await (0, common_1.readDirRecursive)(root, {
|
|
23
|
+
ignoreMissing: true,
|
|
24
|
+
maxDepth,
|
|
25
|
+
});
|
|
26
|
+
const featureFlagDirs = allEntries
|
|
27
|
+
.filter((e) => e.isDirectory() && e.name === "feature-flags")
|
|
28
|
+
.map((e) => (0, path_1.join)(e.path, e.name));
|
|
29
|
+
if (!featureFlagDirs.length) {
|
|
30
|
+
return discovered;
|
|
31
|
+
}
|
|
32
|
+
await Promise.all(featureFlagDirs.map(async (scanDir) => {
|
|
33
|
+
const entries = await (0, promises_1.readdir)(scanDir, { withFileTypes: true });
|
|
34
|
+
await Promise.all(entries.map(async (entry) => {
|
|
35
|
+
if (entry.isDirectory()) {
|
|
36
|
+
return;
|
|
37
|
+
}
|
|
38
|
+
if (excludedExtensions.some((ext) => entry.name.endsWith(ext)) ||
|
|
39
|
+
excludedFiles.includes(entry.name)) {
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
const fileExports = await (0, common_1.dynamicImport)((0, path_1.join)(scanDir, entry.name));
|
|
43
|
+
const values = Object.values(fileExports);
|
|
44
|
+
for (const value of values) {
|
|
45
|
+
if (isFeatureFlag(value)) {
|
|
46
|
+
discovered.push(value);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
}));
|
|
50
|
+
}));
|
|
51
|
+
return discovered;
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=discover-feature-flags.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"discover-feature-flags.js","sourceRoot":"","sources":["../../src/feature-flags/discover-feature-flags.ts"],"names":[],"mappings":";;AAgBA,kEAqDC;AApED,0CAAqC;AACrC,+BAAsC;AACtC,sCAAqE;AAErE,MAAM,aAAa,GAAG,CAAC,UAAU,EAAE,UAAU,CAAC,CAAA;AAC9C,MAAM,kBAAkB,GAAG,CAAC,OAAO,EAAE,WAAW,EAAE,SAAS,CAAC,CAAA;AAE5D,SAAS,aAAa,CAAC,IAAa;IAClC,MAAM,CAAC,GAAG,IAAW,CAAA;IACrB,OAAO,CAAC,CAAC,CAAC,IAAI,IAAA,iBAAQ,EAAC,CAAC,CAAC,GAAG,CAAC,IAAI,IAAA,iBAAQ,EAAC,CAAC,CAAC,OAAO,CAAC,CAAA;AACtD,CAAC;AAED;;GAEG;AACI,KAAK,UAAU,2BAA2B,CAC/C,UAAmB,EACnB,WAAmB,CAAC;IAEpB,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,OAAO,EAAE,CAAA;IACX,CAAC;IAED,MAAM,IAAI,GAAG,IAAA,gBAAS,EAAC,UAAU,CAAC,CAAA;IAClC,MAAM,UAAU,GAAmB,EAAE,CAAA;IAErC,MAAM,UAAU,GAAG,MAAM,IAAA,yBAAgB,EAAC,IAAI,EAAE;QAC9C,aAAa,EAAE,IAAI;QACnB,QAAQ;KACT,CAAC,CAAA;IAEF,MAAM,eAAe,GAAG,UAAU;SAC/B,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC,IAAI,KAAK,eAAe,CAAC;SAC5D,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAA,WAAI,EAAE,CAAS,CAAC,IAAc,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAA;IAEtD,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC;QAC5B,OAAO,UAAU,CAAA;IACnB,CAAC;IAED,MAAM,OAAO,CAAC,GAAG,CACf,eAAe,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;QACpC,MAAM,OAAO,GAAG,MAAM,IAAA,kBAAO,EAAC,OAAO,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAA;QAC/D,MAAM,OAAO,CAAC,GAAG,CACf,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;YAC1B,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;gBACxB,OAAM;YACR,CAAC;YAED,IACE,kBAAkB,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;gBAC1D,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,EAClC,CAAC;gBACD,OAAM;YACR,CAAC;YAED,MAAM,WAAW,GAAG,MAAM,IAAA,sBAAa,EAAC,IAAA,WAAI,EAAC,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAA;YAClE,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAA;YACzC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;gBAC3B,IAAI,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC;oBACzB,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;gBACxB,CAAC;YACH,CAAC;QACH,CAAC,CAAC,CACH,CAAA;IACH,CAAC,CAAC,CACH,CAAA;IAED,OAAO,UAAU,CAAA;AACnB,CAAC"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { FeatureFlagTypes } from "@etohq/types";
|
|
2
|
+
export declare class FlagRouter implements FeatureFlagTypes.IFlagRouter {
|
|
3
|
+
private readonly flags;
|
|
4
|
+
constructor(flags: Record<string, boolean | Record<string, boolean>>);
|
|
5
|
+
/**
|
|
6
|
+
* Check if a feature flag is enabled.
|
|
7
|
+
* There are two ways of using this method:
|
|
8
|
+
* 1. `isFeatureEnabled("myFeatureFlag")`
|
|
9
|
+
* 2. `isFeatureEnabled({ myNestedFeatureFlag: "someNestedFlag" })`
|
|
10
|
+
* We use 1. for top-level feature flags and 2. for nested feature flags. Almost all flags are top-level.
|
|
11
|
+
* An example of a nested flag is workflows. To use it, you would do:
|
|
12
|
+
* `isFeatureEnabled({ workflows: Workflows.CreateCart })`
|
|
13
|
+
* @param flag - The flag to check
|
|
14
|
+
* @return {boolean} - Whether the flag is enabled or not
|
|
15
|
+
*/
|
|
16
|
+
isFeatureEnabled(flag: string | string[] | Record<string, string>): boolean;
|
|
17
|
+
/**
|
|
18
|
+
* Sets a feature flag.
|
|
19
|
+
* Flags take two shapes:
|
|
20
|
+
* `setFlag("myFeatureFlag", true)`
|
|
21
|
+
* `setFlag("myFeatureFlag", { nestedFlag: true })`
|
|
22
|
+
* These shapes are used for top-level and nested flags respectively, as explained in isFeatureEnabled.
|
|
23
|
+
* @param key - The key of the flag to set.
|
|
24
|
+
* @param value - The value of the flag to set.
|
|
25
|
+
* @return {void} - void
|
|
26
|
+
*/
|
|
27
|
+
setFlag(key: string, value: boolean | {
|
|
28
|
+
[key: string]: boolean;
|
|
29
|
+
}): void;
|
|
30
|
+
listFlags(): FeatureFlagTypes.FeatureFlagsResponse;
|
|
31
|
+
}
|
|
32
|
+
export declare const FeatureFlag: FlagRouter;
|
|
33
|
+
//# sourceMappingURL=flag-router.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"flag-router.d.ts","sourceRoot":"","sources":["../../src/feature-flags/flag-router.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAA;AAG/C,qBAAa,UAAW,YAAW,gBAAgB,CAAC,WAAW;IAC7D,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAwD;gBAElE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAIpE;;;;;;;;;;OAUG;IACI,gBAAgB,CACrB,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC/C,OAAO;IAkBV;;;;;;;;;OASG;IACI,OAAO,CACZ,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,OAAO,GAAG;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,GAC1C,IAAI;IAgBA,SAAS,IAAI,gBAAgB,CAAC,oBAAoB;CAM1D;AAED,eAAO,MAAM,WAAW,YAAqB,CAAA"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.FeatureFlag = exports.FlagRouter = void 0;
|
|
4
|
+
const common_1 = require("../common");
|
|
5
|
+
class FlagRouter {
|
|
6
|
+
constructor(flags) {
|
|
7
|
+
this.flags = {};
|
|
8
|
+
this.flags = flags;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Check if a feature flag is enabled.
|
|
12
|
+
* There are two ways of using this method:
|
|
13
|
+
* 1. `isFeatureEnabled("myFeatureFlag")`
|
|
14
|
+
* 2. `isFeatureEnabled({ myNestedFeatureFlag: "someNestedFlag" })`
|
|
15
|
+
* We use 1. for top-level feature flags and 2. for nested feature flags. Almost all flags are top-level.
|
|
16
|
+
* An example of a nested flag is workflows. To use it, you would do:
|
|
17
|
+
* `isFeatureEnabled({ workflows: Workflows.CreateCart })`
|
|
18
|
+
* @param flag - The flag to check
|
|
19
|
+
* @return {boolean} - Whether the flag is enabled or not
|
|
20
|
+
*/
|
|
21
|
+
isFeatureEnabled(flag) {
|
|
22
|
+
if ((0, common_1.isObject)(flag)) {
|
|
23
|
+
const [nestedFlag, value] = Object.entries(flag)[0];
|
|
24
|
+
if (typeof this.flags[nestedFlag] === "boolean") {
|
|
25
|
+
return this.flags[nestedFlag];
|
|
26
|
+
}
|
|
27
|
+
return !!this.flags[nestedFlag]?.[value];
|
|
28
|
+
}
|
|
29
|
+
const flags = (Array.isArray(flag) ? flag : [flag]);
|
|
30
|
+
return flags.every((flag_) => {
|
|
31
|
+
if (!(0, common_1.isString)(flag_)) {
|
|
32
|
+
throw Error("Flag must be a string an array of string or an object");
|
|
33
|
+
}
|
|
34
|
+
return !!this.flags[flag_];
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Sets a feature flag.
|
|
39
|
+
* Flags take two shapes:
|
|
40
|
+
* `setFlag("myFeatureFlag", true)`
|
|
41
|
+
* `setFlag("myFeatureFlag", { nestedFlag: true })`
|
|
42
|
+
* These shapes are used for top-level and nested flags respectively, as explained in isFeatureEnabled.
|
|
43
|
+
* @param key - The key of the flag to set.
|
|
44
|
+
* @param value - The value of the flag to set.
|
|
45
|
+
* @return {void} - void
|
|
46
|
+
*/
|
|
47
|
+
setFlag(key, value) {
|
|
48
|
+
if ((0, common_1.isObject)(value)) {
|
|
49
|
+
const existing = this.flags[key];
|
|
50
|
+
if (!existing) {
|
|
51
|
+
this.flags[key] = value;
|
|
52
|
+
return;
|
|
53
|
+
}
|
|
54
|
+
this.flags[key] = { ...this.flags[key], ...value };
|
|
55
|
+
return;
|
|
56
|
+
}
|
|
57
|
+
this.flags[key] = value;
|
|
58
|
+
}
|
|
59
|
+
listFlags() {
|
|
60
|
+
return Object.entries(this.flags || {}).map(([key, value]) => ({
|
|
61
|
+
key,
|
|
62
|
+
value,
|
|
63
|
+
}));
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
exports.FlagRouter = FlagRouter;
|
|
67
|
+
exports.FeatureFlag = new FlagRouter({});
|
|
68
|
+
//# sourceMappingURL=flag-router.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"flag-router.js","sourceRoot":"","sources":["../../src/feature-flags/flag-router.ts"],"names":[],"mappings":";;;AACA,sCAA8C;AAE9C,MAAa,UAAU;IAGrB,YAAY,KAAwD;QAFnD,UAAK,GAAsD,EAAE,CAAA;QAG5E,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;IACpB,CAAC;IAED;;;;;;;;;;OAUG;IACI,gBAAgB,CACrB,IAAgD;QAEhD,IAAI,IAAA,iBAAQ,EAAC,IAAI,CAAC,EAAE,CAAC;YACnB,MAAM,CAAC,UAAU,EAAE,KAAK,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA;YACnD,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,SAAS,EAAE,CAAC;gBAChD,OAAO,IAAI,CAAC,KAAK,CAAC,UAAU,CAAY,CAAA;YAC1C,CAAC;YACD,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC,KAAK,CAAC,CAAA;QAC1C,CAAC;QAED,MAAM,KAAK,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAa,CAAA;QAC/D,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;YAC3B,IAAI,CAAC,IAAA,iBAAQ,EAAC,KAAK,CAAC,EAAE,CAAC;gBACrB,MAAM,KAAK,CAAC,uDAAuD,CAAC,CAAA;YACtE,CAAC;YACD,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;QAC5B,CAAC,CAAC,CAAA;IACJ,CAAC;IAED;;;;;;;;;OASG;IACI,OAAO,CACZ,GAAW,EACX,KAA2C;QAE3C,IAAI,IAAA,iBAAQ,EAAC,KAAK,CAAC,EAAE,CAAC;YACpB,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;YAEhC,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,KAAK,CAAA;gBACvB,OAAM;YACR,CAAC;YAED,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,GAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAY,EAAE,GAAG,KAAK,EAAE,CAAA;YAC9D,OAAM;QACR,CAAC;QAED,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,KAAK,CAAA;IACzB,CAAC;IAEM,SAAS;QACd,OAAO,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;YAC7D,GAAG;YACH,KAAK;SACN,CAAC,CAAC,CAAA;IACL,CAAC;CACF;AAzED,gCAyEC;AAEY,QAAA,WAAW,GAAG,IAAI,UAAU,CAAC,EAAE,CAAC,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/feature-flags/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAA;AAC3B,cAAc,wBAAwB,CAAA;AACtC,cAAc,SAAS,CAAA;AACvB,cAAc,aAAa,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/feature-flags/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAA;AAC3B,cAAc,wBAAwB,CAAA;AACtC,cAAc,SAAS,CAAA;AACvB,cAAc,aAAa,CAAA;AAE3B,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AAEpC,eAAO,MAAM,WAAW,YAAqB,CAAA"}
|
|
@@ -14,8 +14,11 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
14
14
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
exports.FeatureFlag = void 0;
|
|
17
18
|
__exportStar(require("./analytics"), exports);
|
|
18
19
|
__exportStar(require("./publishable-api-keys"), exports);
|
|
19
20
|
__exportStar(require("./utils"), exports);
|
|
20
21
|
__exportStar(require("./workflows"), exports);
|
|
22
|
+
const utils_1 = require("./utils");
|
|
23
|
+
exports.FeatureFlag = new utils_1.FlagRouter({});
|
|
21
24
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/feature-flags/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/feature-flags/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,8CAA2B;AAC3B,yDAAsC;AACtC,0CAAuB;AACvB,8CAA2B;AAE3B,mCAAoC;AAEvB,QAAA,WAAW,GAAG,IAAI,kBAAU,CAAC,EAAE,CAAC,CAAA"}
|