@acorex-platform/framework-shared 0.0.14 → 0.0.18
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/background-job/src/lib/background-job.constants.d.ts +5 -2
- package/background-job/src/lib/background-job.constants.d.ts.map +1 -1
- package/background-job/src/lib/background-job.constants.js +6 -3
- package/background-job/src/lib/background-job.constants.js.map +1 -1
- package/core/src/lib/expression-evaluator/expression-evaluator-scope.types.d.ts +20 -0
- package/core/src/lib/expression-evaluator/expression-evaluator-scope.types.d.ts.map +1 -0
- package/core/src/lib/expression-evaluator/expression-evaluator-scope.types.js +25 -0
- package/core/src/lib/expression-evaluator/expression-evaluator-scope.types.js.map +1 -0
- package/core/src/lib/expression-evaluator/expression-evaluator.engine.d.ts +29 -0
- package/core/src/lib/expression-evaluator/expression-evaluator.engine.d.ts.map +1 -0
- package/core/src/lib/expression-evaluator/expression-evaluator.engine.js +111 -0
- package/core/src/lib/expression-evaluator/expression-evaluator.engine.js.map +1 -0
- package/core/src/lib/expression-evaluator/index.d.ts +3 -0
- package/core/src/lib/expression-evaluator/index.d.ts.map +1 -0
- package/core/src/lib/expression-evaluator/index.js +6 -0
- package/core/src/lib/expression-evaluator/index.js.map +1 -0
- package/core/src/lib/index.d.ts +1 -0
- package/core/src/lib/index.d.ts.map +1 -1
- package/core/src/lib/index.js +1 -0
- package/core/src/lib/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -26,8 +26,11 @@ export declare const AXP_BACKGROUND_JOB_EXECUTE = "background-job.execute";
|
|
|
26
26
|
export declare const AXP_BACKGROUND_JOB_SCHEDULER_LEADER_LOCK = "bg-job:scheduler:leader";
|
|
27
27
|
/** Prevents duplicate creation of the same scheduled occurrence (short-lived). */
|
|
28
28
|
export declare function backgroundJobScheduleFireLockKey(scheduleId: string, scheduledOccurrence: string): string;
|
|
29
|
-
/**
|
|
30
|
-
|
|
29
|
+
/**
|
|
30
|
+
* Prevents concurrent execution of the same business operation.
|
|
31
|
+
* Tenant-scoped so bare idempotency keys cannot collide across tenants.
|
|
32
|
+
*/
|
|
33
|
+
export declare function backgroundJobRunLockKey(tenantId: string, idempotencyKey: string): string;
|
|
31
34
|
export declare const AXPBackgroundJobCommandKeys: {
|
|
32
35
|
readonly JobCreate: "BackgroundJobManagement:Job:Create";
|
|
33
36
|
readonly JobCancel: "BackgroundJobManagement:Job:Cancel";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"background-job.constants.d.ts","sourceRoot":"","sources":["../../../../../../../libs/framework/shared/background-job/src/lib/background-job.constants.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,yBAAyB,4BAA4B,CAAC;AAEnE,eAAO,MAAM,yBAAyB,0CAA0C,CAAC;AAEjF,eAAO,MAAM,iCAAiC,iDAAiD,CAAC;AAEhG,eAAO,MAAM,kCAAkC,kDAAkD,CAAC;AAElG,kDAAkD;AAClD,eAAO,MAAM,yCAAyC,EAAG,QAAiB,CAAC;AAE3E,+DAA+D;AAC/D,eAAO,MAAM,iDAAiD,6DACF,CAAC;AAE7D,qDAAqD;AACrD,eAAO,MAAM,iCAAiC,EAAG,SAAkB,CAAC;AAEpE,yEAAyE;AACzE,eAAO,MAAM,wCAAwC,oDACF,CAAC;AAEpD,0FAA0F;AAC1F,eAAO,MAAM,yCAAyC,2BAA2B,CAAC;AAElF,mEAAmE;AACnE,eAAO,MAAM,kDAAkD;;;;CAI9D,CAAC;AAMF,4DAA4D;AAC5D,eAAO,MAAM,yBAAyB,oBAAoB,CAAC;AAE3D,6CAA6C;AAC7C,eAAO,MAAM,0BAA0B,2BAA2B,CAAC;AAMnE,+CAA+C;AAC/C,eAAO,MAAM,wCAAwC,4BAA4B,CAAC;AAElF,kFAAkF;AAClF,wBAAgB,gCAAgC,CAC9C,UAAU,EAAE,MAAM,EAClB,mBAAmB,EAAE,MAAM,GAC1B,MAAM,CAER;AAED
|
|
1
|
+
{"version":3,"file":"background-job.constants.d.ts","sourceRoot":"","sources":["../../../../../../../libs/framework/shared/background-job/src/lib/background-job.constants.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,yBAAyB,4BAA4B,CAAC;AAEnE,eAAO,MAAM,yBAAyB,0CAA0C,CAAC;AAEjF,eAAO,MAAM,iCAAiC,iDAAiD,CAAC;AAEhG,eAAO,MAAM,kCAAkC,kDAAkD,CAAC;AAElG,kDAAkD;AAClD,eAAO,MAAM,yCAAyC,EAAG,QAAiB,CAAC;AAE3E,+DAA+D;AAC/D,eAAO,MAAM,iDAAiD,6DACF,CAAC;AAE7D,qDAAqD;AACrD,eAAO,MAAM,iCAAiC,EAAG,SAAkB,CAAC;AAEpE,yEAAyE;AACzE,eAAO,MAAM,wCAAwC,oDACF,CAAC;AAEpD,0FAA0F;AAC1F,eAAO,MAAM,yCAAyC,2BAA2B,CAAC;AAElF,mEAAmE;AACnE,eAAO,MAAM,kDAAkD;;;;CAI9D,CAAC;AAMF,4DAA4D;AAC5D,eAAO,MAAM,yBAAyB,oBAAoB,CAAC;AAE3D,6CAA6C;AAC7C,eAAO,MAAM,0BAA0B,2BAA2B,CAAC;AAMnE,+CAA+C;AAC/C,eAAO,MAAM,wCAAwC,4BAA4B,CAAC;AAElF,kFAAkF;AAClF,wBAAgB,gCAAgC,CAC9C,UAAU,EAAE,MAAM,EAClB,mBAAmB,EAAE,MAAM,GAC1B,MAAM,CAER;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,MAAM,CAExF;AAMD,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;CAa9B,CAAC;AAEX,eAAO,MAAM,yBAAyB;;;;;;;;;;CAU5B,CAAC;AAEX,8EAA8E;AAC9E,eAAO,MAAM,8BAA8B;;;;;;;;;;;;;;CAcjC,CAAC;AAEX,uEAAuE;AACvE,eAAO,MAAM,wCAAwC,4BAA4B,CAAC;AAElF;;;GAGG;AACH,eAAO,MAAM,qCAAqC,yCAAyC,CAAC;AAE5F,gEAAgE;AAChE,eAAO,MAAM,iDAAiD,mCAAmC,CAAC"}
|
|
@@ -38,9 +38,12 @@ exports.AXP_BACKGROUND_JOB_SCHEDULER_LEADER_LOCK = 'bg-job:scheduler:leader';
|
|
|
38
38
|
function backgroundJobScheduleFireLockKey(scheduleId, scheduledOccurrence) {
|
|
39
39
|
return `bg-job:schedule-fire:${scheduleId}:${scheduledOccurrence}`;
|
|
40
40
|
}
|
|
41
|
-
/**
|
|
42
|
-
|
|
43
|
-
|
|
41
|
+
/**
|
|
42
|
+
* Prevents concurrent execution of the same business operation.
|
|
43
|
+
* Tenant-scoped so bare idempotency keys cannot collide across tenants.
|
|
44
|
+
*/
|
|
45
|
+
function backgroundJobRunLockKey(tenantId, idempotencyKey) {
|
|
46
|
+
return `bg-job:run:${tenantId.trim()}:${idempotencyKey}`;
|
|
44
47
|
}
|
|
45
48
|
//#endregion
|
|
46
49
|
//#region ---- Client / gateway command and query keys ----
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"background-job.constants.js","sourceRoot":"","sources":["../../../../../../../libs/framework/shared/background-job/src/lib/background-job.constants.ts"],"names":[],"mappings":";AAAA,sCAAsC;;;AAoDtC,4EAKC;
|
|
1
|
+
{"version":3,"file":"background-job.constants.js","sourceRoot":"","sources":["../../../../../../../libs/framework/shared/background-job/src/lib/background-job.constants.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { AXPExpressionEvaluatorScope } from './expression-evaluator.engine';
|
|
2
|
+
/**
|
|
3
|
+
* Portable scope provider contract used by Angular and Nest.
|
|
4
|
+
* Framework DI / registry wiring stays platform-specific.
|
|
5
|
+
*/
|
|
6
|
+
export interface AXPExpressionEvaluatorScopeProvider {
|
|
7
|
+
provide(context: AXPExpressionEvaluatorScopeProviderContext): Promise<void>;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Mutable collector while scopes are assembled for one evaluation pass.
|
|
11
|
+
* Providers may stash per-eval caches in {@link bag}.
|
|
12
|
+
*/
|
|
13
|
+
export declare class AXPExpressionEvaluatorScopeProviderContext {
|
|
14
|
+
private readonly scopes;
|
|
15
|
+
/** Shared scratch space for the current provider aggregation call. */
|
|
16
|
+
readonly bag: Record<string, unknown>;
|
|
17
|
+
addScope(namespace: string, members: Record<string, unknown>): void;
|
|
18
|
+
getScopes(): AXPExpressionEvaluatorScope;
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=expression-evaluator-scope.types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"expression-evaluator-scope.types.d.ts","sourceRoot":"","sources":["../../../../../../../../libs/framework/shared/core/src/lib/expression-evaluator/expression-evaluator-scope.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AAIjF;;;GAGG;AACH,MAAM,WAAW,mCAAmC;IAClD,OAAO,CAAC,OAAO,EAAE,0CAA0C,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC7E;AAED;;;GAGG;AACH,qBAAa,0CAA0C;IACrD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAmC;IAE1D,sEAAsE;IACtE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAM;IAE3C,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAKnE,SAAS,IAAI,2BAA2B;CAGzC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AXPExpressionEvaluatorScopeProviderContext = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Mutable collector while scopes are assembled for one evaluation pass.
|
|
6
|
+
* Providers may stash per-eval caches in {@link bag}.
|
|
7
|
+
*/
|
|
8
|
+
class AXPExpressionEvaluatorScopeProviderContext {
|
|
9
|
+
constructor() {
|
|
10
|
+
this.scopes = {};
|
|
11
|
+
/** Shared scratch space for the current provider aggregation call. */
|
|
12
|
+
this.bag = {};
|
|
13
|
+
}
|
|
14
|
+
addScope(namespace, members) {
|
|
15
|
+
var _a;
|
|
16
|
+
const existing = (_a = this.scopes[namespace]) !== null && _a !== void 0 ? _a : {};
|
|
17
|
+
this.scopes[namespace] = Object.assign(Object.assign({}, existing), members);
|
|
18
|
+
}
|
|
19
|
+
getScopes() {
|
|
20
|
+
return this.scopes;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
exports.AXPExpressionEvaluatorScopeProviderContext = AXPExpressionEvaluatorScopeProviderContext;
|
|
24
|
+
//#endregion
|
|
25
|
+
//# sourceMappingURL=expression-evaluator-scope.types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"expression-evaluator-scope.types.js","sourceRoot":"","sources":["../../../../../../../../libs/framework/shared/core/src/lib/expression-evaluator/expression-evaluator-scope.types.ts"],"names":[],"mappings":";;;AAYA;;;GAGG;AACH,MAAa,0CAA0C;IAAvD;QACmB,WAAM,GAAgC,EAAE,CAAC;QAE1D,sEAAsE;QAC7D,QAAG,GAA4B,EAAE,CAAC;IAU7C,CAAC;IARC,QAAQ,CAAC,SAAiB,EAAE,OAAgC;;QAC1D,MAAM,QAAQ,GAAG,MAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAyC,mCAAI,EAAE,CAAC;QACvF,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,mCAAQ,QAAQ,GAAK,OAAO,CAAE,CAAC;IACvD,CAAC;IAED,SAAS;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;CACF;AAdD,gGAcC;AAED,YAAY"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/** Expression evaluation scope (namespaces with values and/or functions). */
|
|
2
|
+
export type AXPExpressionEvaluatorScope = Record<string, unknown>;
|
|
3
|
+
export interface AXPExpressionEvaluateOptions {
|
|
4
|
+
/**
|
|
5
|
+
* Optional pre-processor applied to string templates before evaluation.
|
|
6
|
+
* Client UI uses this for display-template normalization; server usually omits it.
|
|
7
|
+
*/
|
|
8
|
+
normalizeTemplate?: (template: string) => string;
|
|
9
|
+
/** When true (default), evaluation errors return `false` instead of throwing. */
|
|
10
|
+
swallowErrors?: boolean;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Portable `{{ … }}` expression engine shared by Angular and Nest.
|
|
14
|
+
* Framework wiring (scopes, session, tokens) stays outside this class.
|
|
15
|
+
*/
|
|
16
|
+
export declare class ExpressionEvaluatorEngine {
|
|
17
|
+
private readonly expressionCache;
|
|
18
|
+
private getOrCompileFunction;
|
|
19
|
+
evaluate(source: unknown, scope?: AXPExpressionEvaluatorScope, options?: AXPExpressionEvaluateOptions): Promise<unknown>;
|
|
20
|
+
private evaluateStringExpression;
|
|
21
|
+
isExpression(expression: unknown): boolean;
|
|
22
|
+
}
|
|
23
|
+
/** Shared singleton for callers that do not need an isolated cache. */
|
|
24
|
+
export declare const sharedExpressionEvaluatorEngine: ExpressionEvaluatorEngine;
|
|
25
|
+
/**
|
|
26
|
+
* Convenience wrapper around {@link sharedExpressionEvaluatorEngine}.
|
|
27
|
+
*/
|
|
28
|
+
export declare function evaluateExpression(source: unknown, scope?: AXPExpressionEvaluatorScope, options?: AXPExpressionEvaluateOptions): Promise<unknown>;
|
|
29
|
+
//# sourceMappingURL=expression-evaluator.engine.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"expression-evaluator.engine.d.ts","sourceRoot":"","sources":["../../../../../../../../libs/framework/shared/core/src/lib/expression-evaluator/expression-evaluator.engine.ts"],"names":[],"mappings":"AAEA,6EAA6E;AAC7E,MAAM,MAAM,2BAA2B,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAElE,MAAM,WAAW,4BAA4B;IAC3C;;;OAGG;IACH,iBAAiB,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,MAAM,CAAC;IACjD,iFAAiF;IACjF,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAMD;;;GAGG;AACH,qBAAa,yBAAyB;IACpC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAA+B;IAE/D,OAAO,CAAC,oBAAoB;IAWtB,QAAQ,CACZ,MAAM,EAAE,OAAO,EACf,KAAK,GAAE,2BAAgC,EACvC,OAAO,GAAE,4BAAiC,GACzC,OAAO,CAAC,OAAO,CAAC;YAkCL,wBAAwB;IAyCtC,YAAY,CAAC,UAAU,EAAE,OAAO,GAAG,OAAO;CAO3C;AAED,uEAAuE;AACvE,eAAO,MAAM,+BAA+B,2BAAkC,CAAC;AAE/E;;GAEG;AACH,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,OAAO,EACf,KAAK,GAAE,2BAAgC,EACvC,OAAO,GAAE,4BAAiC,GACzC,OAAO,CAAC,OAAO,CAAC,CAElB"}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
//#region ----- Types -----
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.sharedExpressionEvaluatorEngine = exports.ExpressionEvaluatorEngine = void 0;
|
|
5
|
+
exports.evaluateExpression = evaluateExpression;
|
|
6
|
+
const tslib_1 = require("tslib");
|
|
7
|
+
//#endregion
|
|
8
|
+
//#region ----- Shared expression engine -----
|
|
9
|
+
/**
|
|
10
|
+
* Portable `{{ … }}` expression engine shared by Angular and Nest.
|
|
11
|
+
* Framework wiring (scopes, session, tokens) stays outside this class.
|
|
12
|
+
*/
|
|
13
|
+
class ExpressionEvaluatorEngine {
|
|
14
|
+
constructor() {
|
|
15
|
+
this.expressionCache = new Map();
|
|
16
|
+
}
|
|
17
|
+
getOrCompileFunction(expression) {
|
|
18
|
+
if (!this.expressionCache.has(expression)) {
|
|
19
|
+
const hasMultipleStatements = expression.includes(';') || expression.includes('\n');
|
|
20
|
+
const fn = hasMultipleStatements
|
|
21
|
+
? new Function('scope', `with (scope) { return (async function() { ${expression} })(); }`)
|
|
22
|
+
: new Function('scope', `with (scope) { return (async function() { return ${expression}; })(); }`);
|
|
23
|
+
this.expressionCache.set(expression, fn);
|
|
24
|
+
}
|
|
25
|
+
return this.expressionCache.get(expression);
|
|
26
|
+
}
|
|
27
|
+
evaluate(source_1) {
|
|
28
|
+
return tslib_1.__awaiter(this, arguments, void 0, function* (source, scope = {}, options = {}) {
|
|
29
|
+
const swallowErrors = options.swallowErrors !== false;
|
|
30
|
+
try {
|
|
31
|
+
if (typeof source === 'string' && source.includes('{{')) {
|
|
32
|
+
return yield this.evaluateStringExpression(source, scope, options);
|
|
33
|
+
}
|
|
34
|
+
if (Array.isArray(source)) {
|
|
35
|
+
const evaluated = [];
|
|
36
|
+
for (const item of source) {
|
|
37
|
+
evaluated.push(yield this.evaluate(item, scope, options));
|
|
38
|
+
}
|
|
39
|
+
return evaluated;
|
|
40
|
+
}
|
|
41
|
+
if (typeof source === 'object' && source !== null) {
|
|
42
|
+
const evaluatedObject = {};
|
|
43
|
+
for (const key of Object.keys(source)) {
|
|
44
|
+
evaluatedObject[key] = yield this.evaluate(source[key], scope, options);
|
|
45
|
+
}
|
|
46
|
+
return evaluatedObject;
|
|
47
|
+
}
|
|
48
|
+
return source;
|
|
49
|
+
}
|
|
50
|
+
catch (error) {
|
|
51
|
+
if (!swallowErrors) {
|
|
52
|
+
throw error;
|
|
53
|
+
}
|
|
54
|
+
console.error('Expression evaluator - Error evaluating expression:', source, error);
|
|
55
|
+
return false;
|
|
56
|
+
}
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
evaluateStringExpression(templateExpression, scope, options) {
|
|
60
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
61
|
+
const normalizedTemplate = options.normalizeTemplate
|
|
62
|
+
? options.normalizeTemplate(templateExpression)
|
|
63
|
+
: templateExpression;
|
|
64
|
+
const exactMatch = normalizedTemplate.match(/^\s*\{\{\s*([\s\S]*?)\s*\}\}\s*$/);
|
|
65
|
+
if (exactMatch) {
|
|
66
|
+
const sandbox = this.getOrCompileFunction(exactMatch[1]);
|
|
67
|
+
return yield sandbox(scope);
|
|
68
|
+
}
|
|
69
|
+
const regex = /\{\{\s*([\s\S]*?)\s*\}\}/g;
|
|
70
|
+
const matches = [];
|
|
71
|
+
let match;
|
|
72
|
+
while ((match = regex.exec(normalizedTemplate)) !== null) {
|
|
73
|
+
matches.push({ expression: match[1], start: match.index, end: regex.lastIndex });
|
|
74
|
+
}
|
|
75
|
+
const values = yield Promise.all(matches.map((m) => tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
76
|
+
const sandbox = this.getOrCompileFunction(m.expression);
|
|
77
|
+
return yield sandbox(scope);
|
|
78
|
+
})));
|
|
79
|
+
let result = '';
|
|
80
|
+
let lastIndex = 0;
|
|
81
|
+
matches.forEach((m, i) => {
|
|
82
|
+
result += normalizedTemplate.slice(lastIndex, m.start);
|
|
83
|
+
const value = values[i];
|
|
84
|
+
result += value !== undefined && value !== null ? String(value) : '';
|
|
85
|
+
lastIndex = m.end;
|
|
86
|
+
});
|
|
87
|
+
result += normalizedTemplate.slice(lastIndex);
|
|
88
|
+
return result;
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
isExpression(expression) {
|
|
92
|
+
if (typeof expression === 'string') {
|
|
93
|
+
const trimmed = expression.trim();
|
|
94
|
+
return trimmed.startsWith('{{') && trimmed.endsWith('}}');
|
|
95
|
+
}
|
|
96
|
+
return false;
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
exports.ExpressionEvaluatorEngine = ExpressionEvaluatorEngine;
|
|
100
|
+
/** Shared singleton for callers that do not need an isolated cache. */
|
|
101
|
+
exports.sharedExpressionEvaluatorEngine = new ExpressionEvaluatorEngine();
|
|
102
|
+
/**
|
|
103
|
+
* Convenience wrapper around {@link sharedExpressionEvaluatorEngine}.
|
|
104
|
+
*/
|
|
105
|
+
function evaluateExpression(source_1) {
|
|
106
|
+
return tslib_1.__awaiter(this, arguments, void 0, function* (source, scope = {}, options = {}) {
|
|
107
|
+
return exports.sharedExpressionEvaluatorEngine.evaluate(source, scope, options);
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
//#endregion
|
|
111
|
+
//# sourceMappingURL=expression-evaluator.engine.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"expression-evaluator.engine.js","sourceRoot":"","sources":["../../../../../../../../libs/framework/shared/core/src/lib/expression-evaluator/expression-evaluator.engine.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../../libs/framework/shared/core/src/lib/expression-evaluator/index.ts"],"names":[],"mappings":"AAAA,cAAc,+BAA+B,CAAC;AAC9C,cAAc,oCAAoC,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const tslib_1 = require("tslib");
|
|
4
|
+
tslib_1.__exportStar(require("./expression-evaluator.engine"), exports);
|
|
5
|
+
tslib_1.__exportStar(require("./expression-evaluator-scope.types"), exports);
|
|
6
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../../libs/framework/shared/core/src/lib/expression-evaluator/index.ts"],"names":[],"mappings":";;;AAAA,wEAA8C;AAC9C,6EAAmD"}
|
package/core/src/lib/index.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../libs/framework/shared/core/src/lib/index.ts"],"names":[],"mappings":"AAEA,cAAc,QAAQ,CAAC;AACvB,cAAc,SAAS,CAAC;AACxB,cAAc,yBAAyB,CAAC;AACxC,cAAc,QAAQ,CAAC;AACvB,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC;AACvB,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../libs/framework/shared/core/src/lib/index.ts"],"names":[],"mappings":"AAEA,cAAc,QAAQ,CAAC;AACvB,cAAc,SAAS,CAAC;AACxB,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AACxC,cAAc,QAAQ,CAAC;AACvB,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC;AACvB,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC"}
|
package/core/src/lib/index.js
CHANGED
|
@@ -4,6 +4,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
4
4
|
const tslib_1 = require("tslib");
|
|
5
5
|
tslib_1.__exportStar(require("./core"), exports);
|
|
6
6
|
tslib_1.__exportStar(require("./utils"), exports);
|
|
7
|
+
tslib_1.__exportStar(require("./expression-evaluator"), exports);
|
|
7
8
|
tslib_1.__exportStar(require("./multi-language-string"), exports);
|
|
8
9
|
tslib_1.__exportStar(require("./data"), exports);
|
|
9
10
|
tslib_1.__exportStar(require("./property"), exports);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../libs/framework/shared/core/src/lib/index.ts"],"names":[],"mappings":";AAAA,oCAAoC;;;AAEpC,iDAAuB;AACvB,kDAAwB;AACxB,kEAAwC;AACxC,iDAAuB;AACvB,qDAA2B;AAC3B,wDAA8B;AAC9B,oDAA0B;AAC1B,qDAA2B;AAC3B,mDAAyB;AACzB,mDAAyB;AACzB,iDAAuB;AACvB,iDAAuB;AACvB,wDAA8B;AAC9B,uDAA6B;AAC7B,qDAA2B;AAE3B,YAAY"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../libs/framework/shared/core/src/lib/index.ts"],"names":[],"mappings":";AAAA,oCAAoC;;;AAEpC,iDAAuB;AACvB,kDAAwB;AACxB,iEAAuC;AACvC,kEAAwC;AACxC,iDAAuB;AACvB,qDAA2B;AAC3B,wDAA8B;AAC9B,oDAA0B;AAC1B,qDAA2B;AAC3B,mDAAyB;AACzB,mDAAyB;AACzB,iDAAuB;AACvB,iDAAuB;AACvB,wDAA8B;AAC9B,uDAA6B;AAC7B,qDAA2B;AAE3B,YAAY"}
|