@bluealba/pae-bootstrap-lib 2.1.3-develop-92 → 2.1.3-develop-94

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.
Files changed (49) hide show
  1. package/dist/src/bootstrap/bootstrap-platform.d.ts +0 -4
  2. package/dist/src/bootstrap/bootstrap-platform.d.ts.map +1 -1
  3. package/dist/src/bootstrap/bootstrap-platform.js +0 -4
  4. package/dist/src/bootstrap/bootstrap-platform.js.map +1 -1
  5. package/dist/src/expression-language/expression-engine.d.ts +3 -0
  6. package/dist/src/expression-language/expression-engine.d.ts.map +1 -0
  7. package/dist/src/expression-language/expression-engine.js +80 -0
  8. package/dist/src/expression-language/expression-engine.js.map +1 -0
  9. package/dist/src/expression-language/expression-engine.test.d.ts +2 -0
  10. package/dist/src/expression-language/expression-engine.test.d.ts.map +1 -0
  11. package/dist/src/expression-language/expression-engine.test.js +107 -0
  12. package/dist/src/expression-language/expression-engine.test.js.map +1 -0
  13. package/dist/src/expression-language/index.d.ts +5 -0
  14. package/dist/src/expression-language/index.d.ts.map +1 -0
  15. package/dist/src/expression-language/index.js +14 -0
  16. package/dist/src/expression-language/index.js.map +1 -0
  17. package/dist/src/expression-language/resolve-deep.d.ts +2 -0
  18. package/dist/src/expression-language/resolve-deep.d.ts.map +1 -0
  19. package/dist/src/expression-language/resolve-deep.js +21 -0
  20. package/dist/src/expression-language/resolve-deep.js.map +1 -0
  21. package/dist/src/expression-language/resolve-deep.test.d.ts +2 -0
  22. package/dist/src/expression-language/resolve-deep.test.d.ts.map +1 -0
  23. package/dist/src/expression-language/resolve-deep.test.js +117 -0
  24. package/dist/src/expression-language/resolve-deep.test.js.map +1 -0
  25. package/dist/src/expression-language/resolvers/env.resolver.d.ts +3 -0
  26. package/dist/src/expression-language/resolvers/env.resolver.d.ts.map +1 -0
  27. package/dist/src/expression-language/resolvers/env.resolver.js +14 -0
  28. package/dist/src/expression-language/resolvers/env.resolver.js.map +1 -0
  29. package/dist/src/expression-language/resolvers/env.resolver.test.d.ts +2 -0
  30. package/dist/src/expression-language/resolvers/env.resolver.test.d.ts.map +1 -0
  31. package/dist/src/expression-language/resolvers/env.resolver.test.js +23 -0
  32. package/dist/src/expression-language/resolvers/env.resolver.test.js.map +1 -0
  33. package/dist/src/expression-language/resolvers/index.d.ts +8 -0
  34. package/dist/src/expression-language/resolvers/index.d.ts.map +1 -0
  35. package/dist/src/expression-language/resolvers/index.js +12 -0
  36. package/dist/src/expression-language/resolvers/index.js.map +1 -0
  37. package/dist/src/expression-language/resolvers/resolver.interface.d.ts +5 -0
  38. package/dist/src/expression-language/resolvers/resolver.interface.d.ts.map +1 -0
  39. package/dist/src/expression-language/resolvers/resolver.interface.js +3 -0
  40. package/dist/src/expression-language/resolvers/resolver.interface.js.map +1 -0
  41. package/dist/src/index.d.ts +1 -0
  42. package/dist/src/index.d.ts.map +1 -1
  43. package/dist/src/index.js +1 -0
  44. package/dist/src/index.js.map +1 -1
  45. package/dist/src/utils/io.d.ts +1 -1
  46. package/dist/src/utils/io.d.ts.map +1 -1
  47. package/dist/src/utils/io.js +4 -1
  48. package/dist/src/utils/io.js.map +1 -1
  49. package/package.json +1 -1
@@ -26,10 +26,6 @@ export type BootstrapOptions = {
26
26
  /**
27
27
  * Reads the current application src/data folder assembles all the platform definitions
28
28
  * and sends them to the gateway's /bootstrap/sync endpoint for synchronization.
29
- *
30
- * @deprecated The synchronization logic has been moved to the gateway service for centralization.
31
- * This function now acts as a client that delegates to the gateway endpoint.
32
- * The function signature remains unchanged for backward compatibility.
33
29
  */
34
30
  export declare const bootstrapPlatform: (options: BootstrapOptions) => Promise<void>;
35
31
  //# sourceMappingURL=bootstrap-platform.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"bootstrap-platform.d.ts","sourceRoot":"","sources":["../../../src/bootstrap/bootstrap-platform.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,4CAA4C,CAAC;AAE7E;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG;IAC7B;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IAEnB;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;IAEjB;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,CAAC,OAAO,EAAE,eAAe,EAAE,KAAK,eAAe,EAAE,CAAC;CACtE,CAAA;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,iBAAiB,GAAU,SAAS,gBAAgB,kBAsEhE,CAAC"}
1
+ {"version":3,"file":"bootstrap-platform.d.ts","sourceRoot":"","sources":["../../../src/bootstrap/bootstrap-platform.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,4CAA4C,CAAC;AAE7E;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG;IAC7B;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IAEnB;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;IAEjB;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,CAAC,OAAO,EAAE,eAAe,EAAE,KAAK,eAAe,EAAE,CAAC;CACtE,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,iBAAiB,GAAU,SAAS,gBAAgB,kBAsEhE,CAAC"}
@@ -15,10 +15,6 @@ const read_bootstrap_applications_1 = require("./read-bootstrap-applications");
15
15
  /**
16
16
  * Reads the current application src/data folder assembles all the platform definitions
17
17
  * and sends them to the gateway's /bootstrap/sync endpoint for synchronization.
18
- *
19
- * @deprecated The synchronization logic has been moved to the gateway service for centralization.
20
- * This function now acts as a client that delegates to the gateway endpoint.
21
- * The function signature remains unchanged for backward compatibility.
22
18
  */
23
19
  const bootstrapPlatform = (options) => __awaiter(void 0, void 0, void 0, function* () {
24
20
  var _a, _b, _c, _d;
@@ -1 +1 @@
1
- {"version":3,"file":"bootstrap-platform.js","sourceRoot":"","sources":["../../../src/bootstrap/bootstrap-platform.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"bootstrap-platform.js","sourceRoot":"","sources":["../../../src/bootstrap/bootstrap-platform.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export declare const containsExpression: (value: string) => boolean;
2
+ export declare const resolveString: (value: string, registry?: Map<string, import("./resolvers").Resolver>) => unknown;
3
+ //# sourceMappingURL=expression-engine.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"expression-engine.d.ts","sourceRoot":"","sources":["../../../src/expression-language/expression-engine.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,kBAAkB,GAAI,OAAO,MAAM,KAAG,OAAgC,CAAC;AA4DpF,eAAO,MAAM,aAAa,GACxB,OAAO,MAAM,EACb,sDAAkC,KACjC,OAeF,CAAC"}
@@ -0,0 +1,80 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.resolveString = exports.containsExpression = void 0;
4
+ const resolvers_1 = require("./resolvers");
5
+ const EXPRESSION_REGEX = /\{\{(\$[^}]+)\}\}/g;
6
+ const FULL_EXPRESSION_REGEX = /^\{\{(\$[^}]+)\}\}$/;
7
+ const SEGMENT_REGEX = /^\$([A-Z_]+)\.([A-Za-z_][A-Za-z0-9_]*)$/;
8
+ const containsExpression = (value) => value.includes('{{$');
9
+ exports.containsExpression = containsExpression;
10
+ const coerce = (value) => {
11
+ if (value === 'true')
12
+ return true;
13
+ if (value === 'false')
14
+ return false;
15
+ const num = Number(value);
16
+ if (!isNaN(num) && value.trim() !== '')
17
+ return num;
18
+ return value;
19
+ };
20
+ const resolveExpressionContent = (content, registry) => {
21
+ let body = content;
22
+ let isOptional = false;
23
+ // Trailing `?` (not preceded by `=`) marks the expression as optional
24
+ if (body.endsWith('?') && !body.endsWith('?=')) {
25
+ isOptional = true;
26
+ body = body.slice(0, -1);
27
+ }
28
+ const segments = body.split('?=');
29
+ let firstError = null;
30
+ for (const segment of segments) {
31
+ if (segment.startsWith('$')) {
32
+ // Reference segment: $NAMESPACE.KEY
33
+ const match = SEGMENT_REGEX.exec(segment);
34
+ if (!match) {
35
+ throw new Error(`Expression syntax error: invalid reference '${segment}' in '{{${content}}}'`);
36
+ }
37
+ const [, namespace, key] = match;
38
+ const resolver = registry.get(namespace);
39
+ if (!resolver) {
40
+ throw new Error(`Expression resolution failed: unknown namespace '${namespace}'. Available: ${[...registry.keys()].join(', ')}`);
41
+ }
42
+ try {
43
+ return resolver.resolve(key);
44
+ }
45
+ catch (err) {
46
+ if (!firstError)
47
+ firstError = err;
48
+ // Continue to next fallback segment
49
+ }
50
+ }
51
+ else {
52
+ // Literal segment: always succeeds
53
+ return segment;
54
+ }
55
+ }
56
+ // All segments failed (or no segments resolved)
57
+ if (isOptional)
58
+ return undefined;
59
+ if (firstError)
60
+ throw firstError;
61
+ throw new Error(`Expression resolution failed: no resolvable segments in '{{${content}}}'`);
62
+ };
63
+ const resolveString = (value, registry = resolvers_1.defaultResolverRegistry) => {
64
+ // Full-value expression: entire string is one {{...}} — coerce result type
65
+ const fullMatch = FULL_EXPRESSION_REGEX.exec(value);
66
+ if (fullMatch) {
67
+ const [, content] = fullMatch;
68
+ const resolved = resolveExpressionContent(content, registry);
69
+ if (resolved === undefined)
70
+ return undefined;
71
+ return coerce(resolved);
72
+ }
73
+ // Inline expression: mixed with other text — always returns string
74
+ return value.replace(EXPRESSION_REGEX, (_, content) => {
75
+ const resolved = resolveExpressionContent(content, registry);
76
+ return resolved !== null && resolved !== void 0 ? resolved : '';
77
+ });
78
+ };
79
+ exports.resolveString = resolveString;
80
+ //# sourceMappingURL=expression-engine.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"expression-engine.js","sourceRoot":"","sources":["../../../src/expression-language/expression-engine.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=expression-engine.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"expression-engine.test.d.ts","sourceRoot":"","sources":["../../../src/expression-language/expression-engine.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,107 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const expression_engine_1 = require("./expression-engine");
4
+ const resolvers_1 = require("./resolvers");
5
+ const stubResolver = {
6
+ namespace: 'STUB',
7
+ resolve: (key) => {
8
+ const values = {
9
+ HOST: 'localhost',
10
+ PORT: '8080',
11
+ DEBUG: 'true',
12
+ NAME: 'my-service',
13
+ };
14
+ if (!(key in values))
15
+ throw new Error(`STUB.${key} not found`);
16
+ return values[key];
17
+ },
18
+ };
19
+ const registry = (0, resolvers_1.createResolverRegistry)([stubResolver]);
20
+ describe('containsExpression', () => {
21
+ it('returns true when {{$ present', () => {
22
+ expect((0, expression_engine_1.containsExpression)('{{$STUB.HOST}}')).toBe(true);
23
+ });
24
+ it('returns false when no {{$ present', () => {
25
+ expect((0, expression_engine_1.containsExpression)('hello')).toBe(false);
26
+ });
27
+ });
28
+ describe('resolveString', () => {
29
+ it('resolves full-value string expression', () => {
30
+ expect((0, expression_engine_1.resolveString)('{{$STUB.HOST}}', registry)).toBe('localhost');
31
+ });
32
+ it('coerces full-value number expression', () => {
33
+ expect((0, expression_engine_1.resolveString)('{{$STUB.PORT}}', registry)).toBe(8080);
34
+ });
35
+ it('coerces full-value boolean expression (true)', () => {
36
+ expect((0, expression_engine_1.resolveString)('{{$STUB.DEBUG}}', registry)).toBe(true);
37
+ });
38
+ it('resolves inline expression (mixed text)', () => {
39
+ expect((0, expression_engine_1.resolveString)('http://{{$STUB.HOST}}:{{$STUB.PORT}}', registry)).toBe('http://localhost:8080');
40
+ });
41
+ it('passes through strings without expressions', () => {
42
+ expect((0, expression_engine_1.resolveString)('plain-value', registry)).toBe('plain-value');
43
+ });
44
+ it('throws on unknown namespace', () => {
45
+ expect(() => (0, expression_engine_1.resolveString)('{{$UNKNOWN.KEY}}', registry)).toThrow("unknown namespace 'UNKNOWN'");
46
+ });
47
+ it('throws on missing key (delegates to resolver)', () => {
48
+ expect(() => (0, expression_engine_1.resolveString)('{{$STUB.MISSING}}', registry)).toThrow('STUB.MISSING');
49
+ });
50
+ describe('optional expressions (?)', () => {
51
+ it('resolves normally when key exists and ? is present', () => {
52
+ expect((0, expression_engine_1.resolveString)('{{$STUB.HOST?}}', registry)).toBe('localhost');
53
+ });
54
+ it('returns undefined for missing key with ? suffix', () => {
55
+ expect((0, expression_engine_1.resolveString)('{{$STUB.MISSING?}}', registry)).toBeUndefined();
56
+ });
57
+ it('collapses to empty string in inline mode when optional key is missing', () => {
58
+ expect((0, expression_engine_1.resolveString)('http://{{$STUB.HOST?}}:{{$STUB.PORT}}', registry)).toBe('http://localhost:8080');
59
+ });
60
+ it('collapses to empty string in inline mode when optional key is missing (HOST missing)', () => {
61
+ const registryNoHost = (0, resolvers_1.createResolverRegistry)([{
62
+ namespace: 'STUB',
63
+ resolve: (key) => {
64
+ const values = { PORT: '8080' };
65
+ if (!(key in values))
66
+ throw new Error(`STUB.${key} not found`);
67
+ return values[key];
68
+ },
69
+ }]);
70
+ expect((0, expression_engine_1.resolveString)('http://{{$STUB.HOST?}}:{{$STUB.PORT}}', registryNoHost)).toBe('http://:8080');
71
+ });
72
+ });
73
+ describe('default value expressions (?=value)', () => {
74
+ it('returns literal default when key is missing', () => {
75
+ expect((0, expression_engine_1.resolveString)('{{$STUB.MISSING?=fallback}}', registry)).toBe('fallback');
76
+ });
77
+ it('coerces numeric literal default in full-value mode', () => {
78
+ expect((0, expression_engine_1.resolveString)('{{$STUB.MISSING?=8080}}', registry)).toBe(8080);
79
+ });
80
+ it('coerces boolean literal default (true) in full-value mode', () => {
81
+ expect((0, expression_engine_1.resolveString)('{{$STUB.MISSING?=true}}', registry)).toBe(true);
82
+ });
83
+ it('uses resolver value over default when key exists', () => {
84
+ expect((0, expression_engine_1.resolveString)('{{$STUB.HOST?=default-host}}', registry)).toBe('localhost');
85
+ });
86
+ });
87
+ describe('fallback chains (?=ref?=ref?=literal)', () => {
88
+ it('falls back to second reference when first is missing', () => {
89
+ expect((0, expression_engine_1.resolveString)('{{$STUB.MISSING?=$STUB.HOST}}', registry)).toBe('localhost');
90
+ });
91
+ it('falls through to literal when all references are missing', () => {
92
+ expect((0, expression_engine_1.resolveString)('{{$STUB.MISSING?=$STUB.ALSO_MISSING?=default}}', registry)).toBe('default');
93
+ });
94
+ it('returns undefined for optional chain when all references are missing', () => {
95
+ expect((0, expression_engine_1.resolveString)('{{$STUB.MISSING?=$STUB.ALSO_MISSING?}}', registry)).toBeUndefined();
96
+ });
97
+ });
98
+ describe('error cases', () => {
99
+ it('throws on unknown namespace in fallback reference', () => {
100
+ expect(() => (0, expression_engine_1.resolveString)('{{$STUB.MISSING?=$UNKNOWN.KEY}}', registry)).toThrow("unknown namespace 'UNKNOWN'");
101
+ });
102
+ it('throws on invalid segment syntax', () => {
103
+ expect(() => (0, expression_engine_1.resolveString)('{{$STUB.?=x}}', registry)).toThrow('Expression syntax error');
104
+ });
105
+ });
106
+ });
107
+ //# sourceMappingURL=expression-engine.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"expression-engine.test.js","sourceRoot":"","sources":["../../../src/expression-language/expression-engine.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ export { resolveString, containsExpression } from './expression-engine';
2
+ export { resolveDeep } from './resolve-deep';
3
+ export { createResolverRegistry, DEFAULT_RESOLVERS, defaultResolverRegistry, envResolver } from './resolvers';
4
+ export type { Resolver } from './resolvers/resolver.interface';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/expression-language/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACxE,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,sBAAsB,EAAE,iBAAiB,EAAE,uBAAuB,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC9G,YAAY,EAAE,QAAQ,EAAE,MAAM,gCAAgC,CAAC"}
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.envResolver = exports.defaultResolverRegistry = exports.DEFAULT_RESOLVERS = exports.createResolverRegistry = exports.resolveDeep = exports.containsExpression = exports.resolveString = void 0;
4
+ var expression_engine_1 = require("./expression-engine");
5
+ Object.defineProperty(exports, "resolveString", { enumerable: true, get: function () { return expression_engine_1.resolveString; } });
6
+ Object.defineProperty(exports, "containsExpression", { enumerable: true, get: function () { return expression_engine_1.containsExpression; } });
7
+ var resolve_deep_1 = require("./resolve-deep");
8
+ Object.defineProperty(exports, "resolveDeep", { enumerable: true, get: function () { return resolve_deep_1.resolveDeep; } });
9
+ var resolvers_1 = require("./resolvers");
10
+ Object.defineProperty(exports, "createResolverRegistry", { enumerable: true, get: function () { return resolvers_1.createResolverRegistry; } });
11
+ Object.defineProperty(exports, "DEFAULT_RESOLVERS", { enumerable: true, get: function () { return resolvers_1.DEFAULT_RESOLVERS; } });
12
+ Object.defineProperty(exports, "defaultResolverRegistry", { enumerable: true, get: function () { return resolvers_1.defaultResolverRegistry; } });
13
+ Object.defineProperty(exports, "envResolver", { enumerable: true, get: function () { return resolvers_1.envResolver; } });
14
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/expression-language/index.ts"],"names":[],"mappings":";;;AAAA,yDAAwE;AAA/D,kHAAA,aAAa,OAAA;AAAE,uHAAA,kBAAkB,OAAA;AAC1C,+CAA6C;AAApC,2GAAA,WAAW,OAAA;AACpB,yCAA8G;AAArG,mHAAA,sBAAsB,OAAA;AAAE,8GAAA,iBAAiB,OAAA;AAAE,oHAAA,uBAAuB,OAAA;AAAE,wGAAA,WAAW,OAAA"}
@@ -0,0 +1,2 @@
1
+ export declare const resolveDeep: (value: unknown, registry?: Map<string, import("./resolvers").Resolver>) => unknown;
2
+ //# sourceMappingURL=resolve-deep.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolve-deep.d.ts","sourceRoot":"","sources":["../../../src/expression-language/resolve-deep.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,WAAW,GAAI,OAAO,OAAO,EAAE,sDAAkC,KAAG,OAehF,CAAC"}
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.resolveDeep = void 0;
4
+ const expression_engine_1 = require("./expression-engine");
5
+ const resolvers_1 = require("./resolvers");
6
+ const resolveDeep = (value, registry = resolvers_1.defaultResolverRegistry) => {
7
+ if (typeof value === 'string') {
8
+ return (0, expression_engine_1.containsExpression)(value) ? (0, expression_engine_1.resolveString)(value, registry) : value;
9
+ }
10
+ if (Array.isArray(value)) {
11
+ return value.map(item => (0, exports.resolveDeep)(item, registry));
12
+ }
13
+ if (value !== null && typeof value === 'object') {
14
+ return Object.fromEntries(Object.entries(value)
15
+ .map(([k, v]) => [k, (0, exports.resolveDeep)(v, registry)])
16
+ .filter(([, v]) => v !== undefined));
17
+ }
18
+ return value;
19
+ };
20
+ exports.resolveDeep = resolveDeep;
21
+ //# sourceMappingURL=resolve-deep.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolve-deep.js","sourceRoot":"","sources":["../../../src/expression-language/resolve-deep.ts"],"names":[],"mappings":";;;AAAA,2DAAwE;AACxE,2CAAsD;AAE/C,MAAM,WAAW,GAAG,CAAC,KAAc,EAAE,QAAQ,GAAG,mCAAuB,EAAW,EAAE;IACzF,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,IAAA,sCAAkB,EAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAA,iCAAa,EAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IAC5E,CAAC;IACD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAA,mBAAW,EAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC;IACxD,CAAC;IACD,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAChD,OAAO,MAAM,CAAC,WAAW,CACvB,MAAM,CAAC,OAAO,CAAC,KAAgC,CAAC;aAC7C,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,IAAA,mBAAW,EAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC;aAC9C,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,SAAS,CAAC,CACtC,CAAC;IACJ,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AAfW,QAAA,WAAW,eAetB"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=resolve-deep.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolve-deep.test.d.ts","sourceRoot":"","sources":["../../../src/expression-language/resolve-deep.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,117 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const resolve_deep_1 = require("./resolve-deep");
4
+ const resolvers_1 = require("./resolvers");
5
+ const stubResolver = {
6
+ namespace: 'STUB',
7
+ resolve: (key) => {
8
+ const values = {
9
+ HOST: 'myhost',
10
+ PORT: '9000',
11
+ ENABLED: 'true',
12
+ };
13
+ if (!(key in values))
14
+ throw new Error(`STUB.${key} not found`);
15
+ return values[key];
16
+ },
17
+ };
18
+ const registry = (0, resolvers_1.createResolverRegistry)([stubResolver]);
19
+ describe('resolveDeep', () => {
20
+ it('resolves string values', () => {
21
+ expect((0, resolve_deep_1.resolveDeep)('{{$STUB.HOST}}', registry)).toBe('myhost');
22
+ });
23
+ it('passes through non-expression strings', () => {
24
+ expect((0, resolve_deep_1.resolveDeep)('plain', registry)).toBe('plain');
25
+ });
26
+ it('passes through numbers', () => {
27
+ expect((0, resolve_deep_1.resolveDeep)(42, registry)).toBe(42);
28
+ });
29
+ it('passes through booleans', () => {
30
+ expect((0, resolve_deep_1.resolveDeep)(false, registry)).toBe(false);
31
+ });
32
+ it('passes through null', () => {
33
+ expect((0, resolve_deep_1.resolveDeep)(null, registry)).toBe(null);
34
+ });
35
+ it('resolves strings inside arrays', () => {
36
+ expect((0, resolve_deep_1.resolveDeep)(['{{$STUB.HOST}}', 'static'], registry)).toEqual(['myhost', 'static']);
37
+ });
38
+ it('resolves strings inside objects', () => {
39
+ expect((0, resolve_deep_1.resolveDeep)({ host: '{{$STUB.HOST}}', port: '{{$STUB.PORT}}' }, registry)).toEqual({
40
+ host: 'myhost',
41
+ port: 9000,
42
+ });
43
+ });
44
+ it('resolves deeply nested objects', () => {
45
+ const input = {
46
+ service: {
47
+ host: '{{$STUB.HOST}}',
48
+ port: '{{$STUB.PORT}}',
49
+ },
50
+ enabled: '{{$STUB.ENABLED}}',
51
+ };
52
+ expect((0, resolve_deep_1.resolveDeep)(input, registry)).toEqual({
53
+ service: {
54
+ host: 'myhost',
55
+ port: 9000,
56
+ },
57
+ enabled: true,
58
+ });
59
+ });
60
+ it('resolves taskConfig-style deep nesting', () => {
61
+ const input = {
62
+ taskConfig: {
63
+ cronExpression: '0 * * * *',
64
+ target: {
65
+ host: '{{$STUB.HOST}}',
66
+ port: '{{$STUB.PORT}}',
67
+ },
68
+ },
69
+ };
70
+ expect((0, resolve_deep_1.resolveDeep)(input, registry)).toEqual({
71
+ taskConfig: {
72
+ cronExpression: '0 * * * *',
73
+ target: {
74
+ host: 'myhost',
75
+ port: 9000,
76
+ },
77
+ },
78
+ });
79
+ });
80
+ it('propagates errors from resolver', () => {
81
+ expect(() => (0, resolve_deep_1.resolveDeep)({ key: '{{$STUB.MISSING}}' }, registry)).toThrow('STUB.MISSING');
82
+ });
83
+ describe('optional expressions in objects', () => {
84
+ it('omits key when optional expression resolves to undefined', () => {
85
+ expect((0, resolve_deep_1.resolveDeep)({ host: '{{$STUB.HOST}}', missing: '{{$STUB.MISSING?}}' }, registry)).toEqual({
86
+ host: 'myhost',
87
+ });
88
+ });
89
+ it('includes key when optional expression resolves to a value', () => {
90
+ expect((0, resolve_deep_1.resolveDeep)({ host: '{{$STUB.HOST?}}' }, registry)).toEqual({ host: 'myhost' });
91
+ });
92
+ it('uses default value when key is missing', () => {
93
+ expect((0, resolve_deep_1.resolveDeep)({ host: '{{$STUB.HOST}}', port: '{{$STUB.MISSING?=9999}}' }, registry)).toEqual({
94
+ host: 'myhost',
95
+ port: 9999,
96
+ });
97
+ });
98
+ it('handles nested objects with mix of optional and required', () => {
99
+ const input = {
100
+ service: {
101
+ host: '{{$STUB.HOST}}',
102
+ port: '{{$STUB.PORT}}',
103
+ debug: '{{$STUB.MISSING?}}',
104
+ },
105
+ enabled: '{{$STUB.ENABLED}}',
106
+ };
107
+ expect((0, resolve_deep_1.resolveDeep)(input, registry)).toEqual({
108
+ service: {
109
+ host: 'myhost',
110
+ port: 9000,
111
+ },
112
+ enabled: true,
113
+ });
114
+ });
115
+ });
116
+ });
117
+ //# sourceMappingURL=resolve-deep.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolve-deep.test.js","sourceRoot":"","sources":["../../../src/expression-language/resolve-deep.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Resolver } from './resolver.interface';
2
+ export declare const envResolver: Resolver;
3
+ //# sourceMappingURL=env.resolver.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"env.resolver.d.ts","sourceRoot":"","sources":["../../../../src/expression-language/resolvers/env.resolver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAEhD,eAAO,MAAM,WAAW,EAAE,QASzB,CAAC"}
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.envResolver = void 0;
4
+ exports.envResolver = {
5
+ namespace: 'ENV',
6
+ resolve: (key) => {
7
+ const value = process.env[key];
8
+ if (value === undefined) {
9
+ throw new Error(`Expression resolution failed: {{$ENV.${key}}} is not defined in environment variables`);
10
+ }
11
+ return value;
12
+ },
13
+ };
14
+ //# sourceMappingURL=env.resolver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"env.resolver.js","sourceRoot":"","sources":["../../../../src/expression-language/resolvers/env.resolver.ts"],"names":[],"mappings":";;;AAEa,QAAA,WAAW,GAAa;IACnC,SAAS,EAAE,KAAK;IAChB,OAAO,EAAE,CAAC,GAAW,EAAU,EAAE;QAC/B,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC/B,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,MAAM,IAAI,KAAK,CAAC,wCAAwC,GAAG,4CAA4C,CAAC,CAAC;QAC3G,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;CACF,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=env.resolver.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"env.resolver.test.d.ts","sourceRoot":"","sources":["../../../../src/expression-language/resolvers/env.resolver.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const env_resolver_1 = require("./env.resolver");
4
+ describe('envResolver', () => {
5
+ it('resolves an existing env var', () => {
6
+ process.env.TEST_VAR = 'hello';
7
+ expect(env_resolver_1.envResolver.resolve('TEST_VAR')).toBe('hello');
8
+ delete process.env.TEST_VAR;
9
+ });
10
+ it('allows empty string values', () => {
11
+ process.env.EMPTY_VAR = '';
12
+ expect(env_resolver_1.envResolver.resolve('EMPTY_VAR')).toBe('');
13
+ delete process.env.EMPTY_VAR;
14
+ });
15
+ it('throws for missing env var with correct message', () => {
16
+ delete process.env.MISSING_VAR;
17
+ expect(() => env_resolver_1.envResolver.resolve('MISSING_VAR')).toThrow('{{$ENV.MISSING_VAR}}');
18
+ });
19
+ it('has namespace ENV', () => {
20
+ expect(env_resolver_1.envResolver.namespace).toBe('ENV');
21
+ });
22
+ });
23
+ //# sourceMappingURL=env.resolver.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"env.resolver.test.js","sourceRoot":"","sources":["../../../../src/expression-language/resolvers/env.resolver.test.ts"],"names":[],"mappings":";;AAAA,iDAA6C;AAE7C,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;IAC3B,EAAE,CAAC,8BAA8B,EAAE,GAAG,EAAE;QACtC,OAAO,CAAC,GAAG,CAAC,QAAQ,GAAG,OAAO,CAAC;QAC/B,MAAM,CAAC,0BAAW,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACtD,OAAO,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC;IAC9B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4BAA4B,EAAE,GAAG,EAAE;QACpC,OAAO,CAAC,GAAG,CAAC,SAAS,GAAG,EAAE,CAAC;QAC3B,MAAM,CAAC,0BAAW,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAClD,OAAO,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC;IAC/B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iDAAiD,EAAE,GAAG,EAAE;QACzD,OAAO,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC;QAC/B,MAAM,CAAC,GAAG,EAAE,CAAC,0BAAW,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC;IACnF,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mBAAmB,EAAE,GAAG,EAAE;QAC3B,MAAM,CAAC,0BAAW,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC5C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,8 @@
1
+ import { Resolver } from './resolver.interface';
2
+ import { envResolver } from './env.resolver';
3
+ export declare const createResolverRegistry: (resolvers: Resolver[]) => Map<string, Resolver>;
4
+ export declare const DEFAULT_RESOLVERS: Resolver[];
5
+ export declare const defaultResolverRegistry: Map<string, Resolver>;
6
+ export { envResolver };
7
+ export type { Resolver };
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/expression-language/resolvers/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7C,eAAO,MAAM,sBAAsB,GAAI,WAAW,QAAQ,EAAE,KAAG,GAAG,CAAC,MAAM,EAAE,QAAQ,CAElF,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,QAAQ,EAAkB,CAAC;AAE3D,eAAO,MAAM,uBAAuB,uBAA4C,CAAC;AAEjF,OAAO,EAAE,WAAW,EAAE,CAAC;AACvB,YAAY,EAAE,QAAQ,EAAE,CAAC"}
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.envResolver = exports.defaultResolverRegistry = exports.DEFAULT_RESOLVERS = exports.createResolverRegistry = void 0;
4
+ const env_resolver_1 = require("./env.resolver");
5
+ Object.defineProperty(exports, "envResolver", { enumerable: true, get: function () { return env_resolver_1.envResolver; } });
6
+ const createResolverRegistry = (resolvers) => {
7
+ return new Map(resolvers.map(r => [r.namespace, r]));
8
+ };
9
+ exports.createResolverRegistry = createResolverRegistry;
10
+ exports.DEFAULT_RESOLVERS = [env_resolver_1.envResolver];
11
+ exports.defaultResolverRegistry = (0, exports.createResolverRegistry)(exports.DEFAULT_RESOLVERS);
12
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/expression-language/resolvers/index.ts"],"names":[],"mappings":";;;AACA,iDAA6C;AAUpC,4FAVA,0BAAW,OAUA;AARb,MAAM,sBAAsB,GAAG,CAAC,SAAqB,EAAyB,EAAE;IACrF,OAAO,IAAI,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AACvD,CAAC,CAAC;AAFW,QAAA,sBAAsB,0BAEjC;AAEW,QAAA,iBAAiB,GAAe,CAAC,0BAAW,CAAC,CAAC;AAE9C,QAAA,uBAAuB,GAAG,IAAA,8BAAsB,EAAC,yBAAiB,CAAC,CAAC"}
@@ -0,0 +1,5 @@
1
+ export type Resolver = {
2
+ readonly namespace: string;
3
+ resolve: (key: string) => string;
4
+ };
5
+ //# sourceMappingURL=resolver.interface.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolver.interface.d.ts","sourceRoot":"","sources":["../../../../src/expression-language/resolvers/resolver.interface.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,QAAQ,GAAG;IACrB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,OAAO,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,CAAC;CAClC,CAAC"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=resolver.interface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolver.interface.js","sourceRoot":"","sources":["../../../../src/expression-language/resolvers/resolver.interface.ts"],"names":[],"mappings":""}
@@ -2,4 +2,5 @@ export * from './bootstrap/domain';
2
2
  export * from './bootstrap/bootstrap-platform';
3
3
  export * from './bootstrap/entity-synchronizer';
4
4
  export { default as compareListsBy } from './utils/compare-lists-by';
5
+ export * from './expression-language';
5
6
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,gCAAgC,CAAA;AAC9C,cAAc,iCAAiC,CAAC;AAChD,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,0BAA0B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,gCAAgC,CAAA;AAC9C,cAAc,iCAAiC,CAAC;AAChD,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,0BAA0B,CAAC;AACrE,cAAc,uBAAuB,CAAC"}
package/dist/src/index.js CHANGED
@@ -23,4 +23,5 @@ __exportStar(require("./bootstrap/bootstrap-platform"), exports);
23
23
  __exportStar(require("./bootstrap/entity-synchronizer"), exports);
24
24
  var compare_lists_by_1 = require("./utils/compare-lists-by");
25
25
  Object.defineProperty(exports, "compareListsBy", { enumerable: true, get: function () { return __importDefault(compare_lists_by_1).default; } });
26
+ __exportStar(require("./expression-language"), exports);
26
27
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA,qDAAmC;AACnC,iEAA8C;AAC9C,kEAAgD;AAChD,6DAAqE;AAA5D,mIAAA,OAAO,OAAkB"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA,qDAAmC;AACnC,iEAA8C;AAC9C,kEAAgD;AAChD,6DAAqE;AAA5D,mIAAA,OAAO,OAAkB;AAClC,wDAAsC"}
@@ -1,3 +1,3 @@
1
1
  export declare const fileExists: (path: string) => boolean;
2
- export declare const readJSONFile: (path: string) => any;
2
+ export declare const readJSONFile: (path: string) => unknown;
3
3
  //# sourceMappingURL=io.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"io.d.ts","sourceRoot":"","sources":["../../../src/utils/io.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,UAAU,GAAI,MAAM,MAAM,YAAwB,CAAC;AAOhE,eAAO,MAAM,YAAY,SAHV,MAAM,QAGkC,CAAC"}
1
+ {"version":3,"file":"io.d.ts","sourceRoot":"","sources":["../../../src/utils/io.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,UAAU,GAAI,MAAM,MAAM,YAAwB,CAAC;AAShE,eAAO,MAAM,YAAY,GAAI,MAAM,MAAM,KAAG,OACH,CAAC"}
@@ -5,9 +5,12 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.readJSONFile = exports.fileExists = void 0;
7
7
  const node_fs_1 = __importDefault(require("node:fs"));
8
+ const expression_language_1 = require("../expression-language");
8
9
  const parseJSON = JSON.parse;
9
10
  const fileExists = (path) => node_fs_1.default.existsSync(path);
10
11
  exports.fileExists = fileExists;
11
12
  const readAndParseFile = (parser) => (path) => parser(node_fs_1.default.readFileSync(path, 'utf8'));
12
- exports.readJSONFile = readAndParseFile(parseJSON);
13
+ const readAndParseJSONFile = readAndParseFile(parseJSON);
14
+ const readJSONFile = (path) => (0, expression_language_1.resolveDeep)(readAndParseJSONFile(path));
15
+ exports.readJSONFile = readJSONFile;
13
16
  //# sourceMappingURL=io.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"io.js","sourceRoot":"","sources":["../../../src/utils/io.ts"],"names":[],"mappings":";;;;;;AAAA,sDAAyB;AAEzB,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC;AAEtB,MAAM,UAAU,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,iBAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AAAnD,QAAA,UAAU,cAAyC;AAEhE,MAAM,gBAAgB,GAClB,CAAI,MAA8B,EAAE,EAAE,CAClC,CAAC,IAAY,EAAK,EAAE,CAChB,MAAM,CAAC,iBAAE,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;AAErC,QAAA,YAAY,GAAG,gBAAgB,CAAC,SAAS,CAAC,CAAC"}
1
+ {"version":3,"file":"io.js","sourceRoot":"","sources":["../../../src/utils/io.ts"],"names":[],"mappings":";;;;;;AAAA,sDAAyB;AACzB,gEAAqD;AAErD,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC;AAEtB,MAAM,UAAU,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,iBAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AAAnD,QAAA,UAAU,cAAyC;AAEhE,MAAM,gBAAgB,GAClB,CAAI,MAA8B,EAAE,EAAE,CAClC,CAAC,IAAY,EAAK,EAAE,CAChB,MAAM,CAAC,iBAAE,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;AAElD,MAAM,oBAAoB,GAAG,gBAAgB,CAAC,SAAS,CAAC,CAAC;AAElD,MAAM,YAAY,GAAG,CAAC,IAAY,EAAW,EAAE,CACpD,IAAA,iCAAW,EAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,CAAC;AAD7B,QAAA,YAAY,gBACiB"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@bluealba/pae-bootstrap-lib",
3
3
  "description": "PAE library for bootstrapping platforms",
4
- "version": "2.1.3-develop-92",
4
+ "version": "2.1.3-develop-94",
5
5
  "main": "./dist/src/index.js",
6
6
  "types": "./dist/src/index.d.ts",
7
7
  "files": [