@data7expressions/3xpr 5.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +78 -0
- package/LICENSE +201 -0
- package/README.md +144 -0
- package/expression/application/expressions.d.ts +69 -0
- package/expression/application/expressions.d.ts.map +1 -0
- package/expression/application/expressions.js +157 -0
- package/expression/application/expressions.js.map +1 -0
- package/expression/application/index.d.ts +4 -0
- package/expression/application/index.d.ts.map +1 -0
- package/expression/application/index.js +20 -0
- package/expression/application/index.js.map +1 -0
- package/expression/application/useCases/convert.d.ts +8 -0
- package/expression/application/useCases/convert.d.ts.map +1 -0
- package/expression/application/useCases/convert.js +25 -0
- package/expression/application/useCases/convert.js.map +1 -0
- package/expression/application/useCases/executor.d.ts +11 -0
- package/expression/application/useCases/executor.d.ts.map +1 -0
- package/expression/application/useCases/executor.js +23 -0
- package/expression/application/useCases/executor.js.map +1 -0
- package/expression/application/useCases/executorObserveDecorator.d.ts +16 -0
- package/expression/application/useCases/executorObserveDecorator.d.ts.map +1 -0
- package/expression/application/useCases/executorObserveDecorator.js +98 -0
- package/expression/application/useCases/executorObserveDecorator.js.map +1 -0
- package/expression/domain/expressions.d.ts +29 -0
- package/expression/domain/expressions.d.ts.map +1 -0
- package/expression/domain/expressions.js +3 -0
- package/expression/domain/expressions.js.map +1 -0
- package/expression/domain/index.d.ts +2 -0
- package/expression/domain/index.d.ts.map +1 -0
- package/expression/domain/index.js +18 -0
- package/expression/domain/index.js.map +1 -0
- package/expression/infrastructure/convertFrom/convertFromFunction.d.ts +15 -0
- package/expression/infrastructure/convertFrom/convertFromFunction.d.ts.map +1 -0
- package/expression/infrastructure/convertFrom/convertFromFunction.js +45 -0
- package/expression/infrastructure/convertFrom/convertFromFunction.js.map +1 -0
- package/expression/infrastructure/convertFrom/convertFromGraphql.d.ts +5 -0
- package/expression/infrastructure/convertFrom/convertFromGraphql.d.ts.map +1 -0
- package/expression/infrastructure/convertFrom/convertFromGraphql.js +96 -0
- package/expression/infrastructure/convertFrom/convertFromGraphql.js.map +1 -0
- package/expression/infrastructure/expressionsBuilder.d.ts +8 -0
- package/expression/infrastructure/expressionsBuilder.d.ts.map +1 -0
- package/expression/infrastructure/expressionsBuilder.js +28 -0
- package/expression/infrastructure/expressionsBuilder.js.map +1 -0
- package/expression/infrastructure/helper.d.ts +7 -0
- package/expression/infrastructure/helper.d.ts.map +1 -0
- package/expression/infrastructure/helper.js +34 -0
- package/expression/infrastructure/helper.js.map +1 -0
- package/expression/infrastructure/index.d.ts +2 -0
- package/expression/infrastructure/index.d.ts.map +1 -0
- package/expression/infrastructure/index.js +18 -0
- package/expression/infrastructure/index.js.map +1 -0
- package/expression/infrastructure/library.d.ts +30 -0
- package/expression/infrastructure/library.d.ts.map +1 -0
- package/expression/infrastructure/library.js +1813 -0
- package/expression/infrastructure/library.js.map +1 -0
- package/index.d.ts +31 -0
- package/index.d.ts.map +1 -0
- package/index.js +64 -0
- package/index.js.map +1 -0
- package/jest-unit-config.json +15 -0
- package/model/application/index.d.ts +2 -0
- package/model/application/index.d.ts.map +1 -0
- package/model/application/index.js +18 -0
- package/model/application/index.js.map +1 -0
- package/model/application/modelService.d.ts +42 -0
- package/model/application/modelService.d.ts.map +1 -0
- package/model/application/modelService.js +329 -0
- package/model/application/modelService.js.map +1 -0
- package/model/domain/index.d.ts +3 -0
- package/model/domain/index.d.ts.map +1 -0
- package/model/domain/index.js +19 -0
- package/model/domain/index.js.map +1 -0
- package/model/domain/library.d.ts +5 -0
- package/model/domain/library.d.ts.map +1 -0
- package/model/domain/library.js +3 -0
- package/model/domain/library.js.map +1 -0
- package/model/domain/services.d.ts +32 -0
- package/model/domain/services.d.ts.map +1 -0
- package/model/domain/services.js +3 -0
- package/model/domain/services.js.map +1 -0
- package/operand/application/facade.d.ts +27 -0
- package/operand/application/facade.d.ts.map +1 -0
- package/operand/application/facade.js +42 -0
- package/operand/application/facade.js.map +1 -0
- package/operand/application/index.d.ts +15 -0
- package/operand/application/index.d.ts.map +1 -0
- package/operand/application/index.js +31 -0
- package/operand/application/index.js.map +1 -0
- package/operand/application/services/builder.d.ts +17 -0
- package/operand/application/services/builder.d.ts.map +1 -0
- package/operand/application/services/builder.js +30 -0
- package/operand/application/services/builder.js.map +1 -0
- package/operand/application/services/builderCacheDecorator.d.ts +14 -0
- package/operand/application/services/builderCacheDecorator.d.ts.map +1 -0
- package/operand/application/services/builderCacheDecorator.js +29 -0
- package/operand/application/services/builderCacheDecorator.js.map +1 -0
- package/operand/application/services/factory.d.ts +10 -0
- package/operand/application/services/factory.d.ts.map +1 -0
- package/operand/application/services/factory.js +24 -0
- package/operand/application/services/factory.js.map +1 -0
- package/operand/application/services/normalizer.d.ts +4 -0
- package/operand/application/services/normalizer.d.ts.map +1 -0
- package/operand/application/services/normalizer.js +51 -0
- package/operand/application/services/normalizer.js.map +1 -0
- package/operand/application/services/parameterService.d.ts +6 -0
- package/operand/application/services/parameterService.d.ts.map +1 -0
- package/operand/application/services/parameterService.js +23 -0
- package/operand/application/services/parameterService.js.map +1 -0
- package/operand/application/services/parser.d.ts +49 -0
- package/operand/application/services/parser.d.ts.map +1 -0
- package/operand/application/services/parser.js +751 -0
- package/operand/application/services/parser.js.map +1 -0
- package/operand/application/services/serializer.d.ts +10 -0
- package/operand/application/services/serializer.d.ts.map +1 -0
- package/operand/application/services/serializer.js +40 -0
- package/operand/application/services/serializer.js.map +1 -0
- package/operand/application/services/typeService.d.ts +37 -0
- package/operand/application/services/typeService.d.ts.map +1 -0
- package/operand/application/services/typeService.js +392 -0
- package/operand/application/services/typeService.js.map +1 -0
- package/operand/application/useCases/build.d.ts +10 -0
- package/operand/application/useCases/build.d.ts.map +1 -0
- package/operand/application/useCases/build.js +25 -0
- package/operand/application/useCases/build.js.map +1 -0
- package/operand/application/useCases/clone.d.ts +10 -0
- package/operand/application/useCases/clone.d.ts.map +1 -0
- package/operand/application/useCases/clone.js +34 -0
- package/operand/application/useCases/clone.js.map +1 -0
- package/operand/application/useCases/complete.d.ts +9 -0
- package/operand/application/useCases/complete.d.ts.map +1 -0
- package/operand/application/useCases/complete.js +26 -0
- package/operand/application/useCases/complete.js.map +1 -0
- package/operand/application/useCases/normalize.d.ts +9 -0
- package/operand/application/useCases/normalize.d.ts.map +1 -0
- package/operand/application/useCases/normalize.js +43 -0
- package/operand/application/useCases/normalize.js.map +1 -0
- package/operand/application/useCases/reduce.d.ts +11 -0
- package/operand/application/useCases/reduce.d.ts.map +1 -0
- package/operand/application/useCases/reduce.js +57 -0
- package/operand/application/useCases/reduce.js.map +1 -0
- package/operand/domain/constBuilder.d.ts +5 -0
- package/operand/domain/constBuilder.d.ts.map +1 -0
- package/operand/domain/constBuilder.js +3 -0
- package/operand/domain/constBuilder.js.map +1 -0
- package/operand/domain/entities.d.ts +60 -0
- package/operand/domain/entities.d.ts.map +1 -0
- package/operand/domain/entities.js +38 -0
- package/operand/domain/entities.js.map +1 -0
- package/operand/domain/index.d.ts +4 -0
- package/operand/domain/index.d.ts.map +1 -0
- package/operand/domain/index.js +20 -0
- package/operand/domain/index.js.map +1 -0
- package/operand/domain/services.d.ts +39 -0
- package/operand/domain/services.d.ts.map +1 -0
- package/operand/domain/services.js +3 -0
- package/operand/domain/services.js.map +1 -0
- package/operand/infrastructure/constBuilder.d.ts +6 -0
- package/operand/infrastructure/constBuilder.d.ts.map +1 -0
- package/operand/infrastructure/constBuilder.js +15 -0
- package/operand/infrastructure/constBuilder.js.map +1 -0
- package/operand/infrastructure/executors/expression.d.ts +34 -0
- package/operand/infrastructure/executors/expression.d.ts.map +1 -0
- package/operand/infrastructure/executors/expression.js +534 -0
- package/operand/infrastructure/executors/expression.js.map +1 -0
- package/operand/infrastructure/executors/task.d.ts +8 -0
- package/operand/infrastructure/executors/task.d.ts.map +1 -0
- package/operand/infrastructure/executors/task.js +492 -0
- package/operand/infrastructure/executors/task.js.map +1 -0
- package/operand/infrastructure/facadeBuilder.d.ts +10 -0
- package/operand/infrastructure/facadeBuilder.d.ts.map +1 -0
- package/operand/infrastructure/facadeBuilder.js +35 -0
- package/operand/infrastructure/facadeBuilder.js.map +1 -0
- package/operand/infrastructure/helper.d.ts +20 -0
- package/operand/infrastructure/helper.d.ts.map +1 -0
- package/operand/infrastructure/helper.js +272 -0
- package/operand/infrastructure/helper.js.map +1 -0
- package/operand/infrastructure/index.d.ts +4 -0
- package/operand/infrastructure/index.d.ts.map +1 -0
- package/operand/infrastructure/index.js +20 -0
- package/operand/infrastructure/index.js.map +1 -0
- package/package.json +39 -0
- package/shared/domain/base.d.ts +32 -0
- package/shared/domain/base.d.ts.map +1 -0
- package/shared/domain/base.js +12 -0
- package/shared/domain/base.js.map +1 -0
- package/shared/domain/context.d.ts +37 -0
- package/shared/domain/context.d.ts.map +1 -0
- package/shared/domain/context.js +93 -0
- package/shared/domain/context.js.map +1 -0
- package/shared/domain/index.d.ts +6 -0
- package/shared/domain/index.d.ts.map +1 -0
- package/shared/domain/index.js +22 -0
- package/shared/domain/index.js.map +1 -0
- package/shared/domain/observer.d.ts +15 -0
- package/shared/domain/observer.d.ts.map +1 -0
- package/shared/domain/observer.js +11 -0
- package/shared/domain/observer.js.map +1 -0
- package/shared/domain/operand.d.ts +55 -0
- package/shared/domain/operand.d.ts.map +1 -0
- package/shared/domain/operand.js +69 -0
- package/shared/domain/operand.js.map +1 -0
- package/shared/domain/signals.d.ts +8 -0
- package/shared/domain/signals.d.ts.map +1 -0
- package/shared/domain/signals.js +3 -0
- package/shared/domain/signals.js.map +1 -0
- package/shared/infrastructure/helper.d.ts +9 -0
- package/shared/infrastructure/helper.d.ts.map +1 -0
- package/shared/infrastructure/helper.js +16 -0
- package/shared/infrastructure/helper.js.map +1 -0
- package/shared/infrastructure/index.d.ts +2 -0
- package/shared/infrastructure/index.d.ts.map +1 -0
- package/shared/infrastructure/index.js +18 -0
- package/shared/infrastructure/index.js.map +1 -0
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { EvaluatorFactory, OperandCloner } from '../../domain';
|
|
2
|
+
import { Operand } from '../../../shared/domain';
|
|
3
|
+
export declare class OperandClone implements OperandCloner {
|
|
4
|
+
private readonly factories;
|
|
5
|
+
constructor(factories: [string, EvaluatorFactory][]);
|
|
6
|
+
private getFactory;
|
|
7
|
+
clone(operand: Operand, type: string): Operand;
|
|
8
|
+
private _clone;
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=clone.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"clone.d.ts","sourceRoot":"","sources":["../../../../../../src/lib/operand/application/useCases/clone.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAC9D,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAA;AAChD,qBAAa,YAAa,YAAW,aAAa;IAEpC,OAAO,CAAC,QAAQ,CAAC,SAAS;gBAAT,SAAS,EAAC,CAAC,MAAM,EAAE,gBAAgB,CAAC,EAAE;IAEpE,OAAO,CAAC,UAAU;IAQX,KAAK,CAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAC,MAAM,GAAG,OAAO;IAKrD,OAAO,CAAC,MAAM;CAUd"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.OperandClone = void 0;
|
|
4
|
+
const domain_1 = require("../../../shared/domain");
|
|
5
|
+
class OperandClone {
|
|
6
|
+
// eslint-disable-next-line no-useless-constructor
|
|
7
|
+
constructor(factories) {
|
|
8
|
+
this.factories = factories;
|
|
9
|
+
}
|
|
10
|
+
getFactory(key) {
|
|
11
|
+
var _a;
|
|
12
|
+
const factory = (_a = this.factories.find(p => p[0] === key)) === null || _a === void 0 ? void 0 : _a[1];
|
|
13
|
+
if (factory === undefined) {
|
|
14
|
+
throw new Error(`Factory ${key} not found`);
|
|
15
|
+
}
|
|
16
|
+
return factory;
|
|
17
|
+
}
|
|
18
|
+
clone(operand, type) {
|
|
19
|
+
const factory = this.getFactory(type);
|
|
20
|
+
return this._clone(operand, factory);
|
|
21
|
+
}
|
|
22
|
+
_clone(source, factory) {
|
|
23
|
+
const children = [];
|
|
24
|
+
for (const child of source.children) {
|
|
25
|
+
children.push(this._clone(child, factory));
|
|
26
|
+
}
|
|
27
|
+
const target = new domain_1.Operand(source.pos, source.name, source.type, children, source.returnType);
|
|
28
|
+
target.id = source.id;
|
|
29
|
+
target.evaluator = factory.create(target);
|
|
30
|
+
return target;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
exports.OperandClone = OperandClone;
|
|
34
|
+
//# sourceMappingURL=clone.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"clone.js","sourceRoot":"","sources":["../../../../../../src/lib/operand/application/useCases/clone.ts"],"names":[],"mappings":";;;AACA,mDAAgD;AAChD,MAAa,YAAY;IACxB,kDAAkD;IAClD,YAA8B,SAAsC;QAAtC,cAAS,GAAT,SAAS,CAA6B;IAAG,CAAC;IAEhE,UAAU,CAAE,GAAU;;QAC7B,MAAM,OAAO,GAAG,MAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,0CAAG,CAAC,CAAC,CAAA;QAC3D,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YAC3B,MAAM,IAAI,KAAK,CAAC,WAAW,GAAG,YAAY,CAAC,CAAA;QAC5C,CAAC;QACD,OAAO,OAAO,CAAA;IACf,CAAC;IAEM,KAAK,CAAE,OAAgB,EAAE,IAAW;QAC1C,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAA;QACrC,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;IACrC,CAAC;IAEO,MAAM,CAAE,MAAe,EAAE,OAAwB;QACxD,MAAM,QAAQ,GAAc,EAAE,CAAA;QAC9B,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;YACrC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAA;QAC3C,CAAC;QACD,MAAM,MAAM,GAAG,IAAI,gBAAO,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,CAAC,UAAU,CAAC,CAAA;QAC7F,MAAM,CAAC,EAAE,GAAG,MAAM,CAAC,EAAE,CAAA;QACrB,MAAM,CAAC,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;QACzC,OAAO,MAAM,CAAA;IACd,CAAC;CACD;AA3BD,oCA2BC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { EvaluatorFactory } from '../../domain';
|
|
2
|
+
import { Operand } from '../../../shared/domain';
|
|
3
|
+
export declare class OperandComplete {
|
|
4
|
+
private readonly evaluatorFactory;
|
|
5
|
+
constructor(evaluatorFactory: EvaluatorFactory);
|
|
6
|
+
complete(operand: Operand): Operand;
|
|
7
|
+
private _complete;
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=complete.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"complete.d.ts","sourceRoot":"","sources":["../../../../../../src/lib/operand/application/useCases/complete.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAA;AAC/C,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAA;AAEhD,qBAAa,eAAe;IAEd,OAAO,CAAC,QAAQ,CAAC,gBAAgB;gBAAhB,gBAAgB,EAAC,gBAAgB;IAExD,QAAQ,CAAE,OAAO,EAAC,OAAO,GAAG,OAAO;IAK1C,OAAO,CAAC,SAAS;CAWjB"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.OperandComplete = void 0;
|
|
4
|
+
class OperandComplete {
|
|
5
|
+
// eslint-disable-next-line no-useless-constructor
|
|
6
|
+
constructor(evaluatorFactory) {
|
|
7
|
+
this.evaluatorFactory = evaluatorFactory;
|
|
8
|
+
}
|
|
9
|
+
complete(operand) {
|
|
10
|
+
this._complete(operand);
|
|
11
|
+
return operand;
|
|
12
|
+
}
|
|
13
|
+
_complete(operand, index = 0, parentId) {
|
|
14
|
+
const id = parentId ? parentId + '.' + index : index.toString();
|
|
15
|
+
if (operand.children) {
|
|
16
|
+
for (let i = 0; i < operand.children.length; i++) {
|
|
17
|
+
const child = operand.children[i];
|
|
18
|
+
this._complete(child, i, id);
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
operand.id = id;
|
|
22
|
+
operand.evaluator = this.evaluatorFactory.create(operand);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
exports.OperandComplete = OperandComplete;
|
|
26
|
+
//# sourceMappingURL=complete.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"complete.js","sourceRoot":"","sources":["../../../../../../src/lib/operand/application/useCases/complete.ts"],"names":[],"mappings":";;;AAIA,MAAa,eAAe;IAC3B,kDAAkD;IAClD,YAA8B,gBAAiC;QAAjC,qBAAgB,GAAhB,gBAAgB,CAAiB;IAAG,CAAC;IAE5D,QAAQ,CAAE,OAAe;QAC/B,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAA;QACvB,OAAO,OAAO,CAAA;IACf,CAAC;IAEO,SAAS,CAAE,OAAgB,EAAE,KAAK,GAAG,CAAC,EAAE,QAAgB;QAC/D,MAAM,EAAE,GAAG,QAAQ,CAAC,CAAC,CAAC,QAAQ,GAAG,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAA;QAC/D,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;YACtB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBAClD,MAAM,KAAK,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAA;gBACjC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,CAAA;YAC7B,CAAC;QACF,CAAC;QACD,OAAO,CAAC,EAAE,GAAG,EAAE,CAAA;QACf,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;IAC1D,CAAC;CACD;AApBD,0CAoBC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { ModelService } from '../../../model/domain';
|
|
2
|
+
import { Operand } from '../../../shared/domain';
|
|
3
|
+
export declare class OperandNormalize {
|
|
4
|
+
private readonly model;
|
|
5
|
+
constructor(model: ModelService);
|
|
6
|
+
normalize(operand: Operand): Operand;
|
|
7
|
+
protected normalizeOperand(operand: Operand): void;
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=normalize.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"normalize.d.ts","sourceRoot":"","sources":["../../../../../../src/lib/operand/application/useCases/normalize.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;AACpD,OAAO,EAAE,OAAO,EAAe,MAAM,wBAAwB,CAAA;AAE7D,qBAAa,gBAAgB;IAEf,OAAO,CAAC,QAAQ,CAAC,KAAK;gBAAL,KAAK,EAAE,YAAY;IAE1C,SAAS,CAAE,OAAO,EAAE,OAAO,GAAG,OAAO;IAc5C,SAAS,CAAC,gBAAgB,CAAE,OAAO,EAAE,OAAO,GAAG,IAAI;CAgBnD"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.OperandNormalize = void 0;
|
|
4
|
+
const domain_1 = require("../../../shared/domain");
|
|
5
|
+
class OperandNormalize {
|
|
6
|
+
// eslint-disable-next-line no-useless-constructor
|
|
7
|
+
constructor(model) {
|
|
8
|
+
this.model = model;
|
|
9
|
+
}
|
|
10
|
+
normalize(operand) {
|
|
11
|
+
if (operand.type === domain_1.OperandType.Var && operand.children.length === 0) {
|
|
12
|
+
// Example: Products => Products.map(p=>p)
|
|
13
|
+
const arrowVariable = new domain_1.Operand(operand.pos, 'p', domain_1.OperandType.Var);
|
|
14
|
+
const allFields = new domain_1.Operand(operand.pos, 'p', domain_1.OperandType.Var);
|
|
15
|
+
const map = new domain_1.Operand(operand.pos, 'map', domain_1.OperandType.Arrow, [operand, arrowVariable, allFields]);
|
|
16
|
+
this.normalizeOperand(map);
|
|
17
|
+
return map;
|
|
18
|
+
}
|
|
19
|
+
else {
|
|
20
|
+
this.normalizeOperand(operand);
|
|
21
|
+
return operand;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
normalizeOperand(operand) {
|
|
25
|
+
if (operand.type === domain_1.OperandType.Arrow || operand.type === domain_1.OperandType.ChildFunc || operand.type === domain_1.OperandType.CallFunc) {
|
|
26
|
+
const alias = this.model.functionAlias.find(p => p[0] === operand.name);
|
|
27
|
+
if (alias) {
|
|
28
|
+
operand.name = alias[1];
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
else if (operand.type === domain_1.OperandType.Operator) {
|
|
32
|
+
const alias = this.model.operatorAlias.find(p => p[0] === operand.name);
|
|
33
|
+
if (alias) {
|
|
34
|
+
operand.name = alias[1];
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
for (const child of operand.children) {
|
|
38
|
+
this.normalizeOperand(child);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
exports.OperandNormalize = OperandNormalize;
|
|
43
|
+
//# sourceMappingURL=normalize.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"normalize.js","sourceRoot":"","sources":["../../../../../../src/lib/operand/application/useCases/normalize.ts"],"names":[],"mappings":";;;AAEA,mDAA6D;AAE7D,MAAa,gBAAgB;IAC5B,kDAAkD;IAClD,YAA8B,KAAmB;QAAnB,UAAK,GAAL,KAAK,CAAc;IAAG,CAAC;IAE9C,SAAS,CAAE,OAAgB;QACjC,IAAI,OAAO,CAAC,IAAI,KAAK,oBAAW,CAAC,GAAG,IAAI,OAAO,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvE,0CAA0C;YAC1C,MAAM,aAAa,GAAG,IAAI,gBAAO,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,oBAAW,CAAC,GAAG,CAAC,CAAA;YACpE,MAAM,SAAS,GAAG,IAAI,gBAAO,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,oBAAW,CAAC,GAAG,CAAC,CAAA;YAChE,MAAM,GAAG,GAAG,IAAI,gBAAO,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,EAAE,oBAAW,CAAC,KAAK,EAAE,CAAC,OAAO,EAAE,aAAa,EAAE,SAAS,CAAC,CAAC,CAAA;YACnG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAA;YAC1B,OAAO,GAAG,CAAA;QACX,CAAC;aAAM,CAAC;YACP,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAA;YAC9B,OAAO,OAAO,CAAA;QACf,CAAC;IACF,CAAC;IAES,gBAAgB,CAAE,OAAgB;QAC3C,IAAI,OAAO,CAAC,IAAI,KAAK,oBAAW,CAAC,KAAK,IAAI,OAAO,CAAC,IAAI,KAAK,oBAAW,CAAC,SAAS,IAAI,OAAO,CAAC,IAAI,KAAK,oBAAW,CAAC,QAAQ,EAAE,CAAC;YAC3H,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;YACvE,IAAI,KAAK,EAAE,CAAC;gBACX,OAAO,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAA;YACxB,CAAC;QACF,CAAC;aAAM,IAAI,OAAO,CAAC,IAAI,KAAK,oBAAW,CAAC,QAAQ,EAAE,CAAC;YAClD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;YACvE,IAAI,KAAK,EAAE,CAAC;gBACX,OAAO,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAA;YACxB,CAAC;QACF,CAAC;QACD,KAAK,MAAM,KAAK,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;YACtC,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAA;QAC7B,CAAC;IACF,CAAC;CACD;AAlCD,4CAkCC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { ModelService } from '../../../model/domain';
|
|
2
|
+
import { Operand } from '../../../shared/domain';
|
|
3
|
+
import { ConstBuilder } from '../../domain/constBuilder';
|
|
4
|
+
export declare class OperandReduce {
|
|
5
|
+
private readonly model;
|
|
6
|
+
private readonly constBuilder;
|
|
7
|
+
constructor(model: ModelService, constBuilder: ConstBuilder);
|
|
8
|
+
reduce(operand: Operand): Operand;
|
|
9
|
+
protected reduceOperand(operand: Operand): Operand;
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=reduce.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reduce.d.ts","sourceRoot":"","sources":["../../../../../../src/lib/operand/application/useCases/reduce.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;AACpD,OAAO,EAAE,OAAO,EAAwB,MAAM,wBAAwB,CAAA;AACtE,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAExD,qBAAa,aAAa;IAEZ,OAAO,CAAC,QAAQ,CAAC,KAAK;IAClC,OAAO,CAAC,QAAQ,CAAC,YAAY;gBADA,KAAK,EAAE,YAAY,EAC/B,YAAY,EAAE,YAAY;IAErC,MAAM,CAAE,OAAO,EAAE,OAAO,GAAG,OAAO;IAqBzC,SAAS,CAAC,aAAa,CAAE,OAAO,EAAE,OAAO,GAAG,OAAO;CAqBnD"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.OperandReduce = void 0;
|
|
4
|
+
const domain_1 = require("../../../shared/domain");
|
|
5
|
+
class OperandReduce {
|
|
6
|
+
// eslint-disable-next-line no-useless-constructor
|
|
7
|
+
constructor(model, constBuilder) {
|
|
8
|
+
this.model = model;
|
|
9
|
+
this.constBuilder = constBuilder;
|
|
10
|
+
}
|
|
11
|
+
reduce(operand) {
|
|
12
|
+
if (operand.type === domain_1.OperandType.Operator) {
|
|
13
|
+
return this.reduceOperand(operand);
|
|
14
|
+
}
|
|
15
|
+
else if (operand.type === domain_1.OperandType.CallFunc) {
|
|
16
|
+
let funcMetadata = null;
|
|
17
|
+
if (this.model.isFunction(operand.name)) {
|
|
18
|
+
// Example: orm.execute(expression, data, options)
|
|
19
|
+
funcMetadata = this.model.getFunction(operand.name);
|
|
20
|
+
}
|
|
21
|
+
else {
|
|
22
|
+
// Example: .[0].states.filter() where function name is states.filter
|
|
23
|
+
const names = operand.name.split('.');
|
|
24
|
+
const funcName = names[names.length - 1];
|
|
25
|
+
funcMetadata = this.model.getFunction(funcName);
|
|
26
|
+
}
|
|
27
|
+
if (funcMetadata && funcMetadata.deterministic) {
|
|
28
|
+
return this.reduceOperand(operand);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
return operand;
|
|
32
|
+
}
|
|
33
|
+
reduceOperand(operand) {
|
|
34
|
+
let allConstants = true;
|
|
35
|
+
for (const child of operand.children) {
|
|
36
|
+
if (!(child.type === domain_1.OperandType.Const)) {
|
|
37
|
+
allConstants = false;
|
|
38
|
+
break;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
if (allConstants) {
|
|
42
|
+
const value = operand.eval(new domain_1.Context());
|
|
43
|
+
const constant = this.constBuilder.build(operand.pos, value);
|
|
44
|
+
constant.id = operand.id;
|
|
45
|
+
return constant;
|
|
46
|
+
}
|
|
47
|
+
else {
|
|
48
|
+
for (let i = 0; i < operand.children.length; i++) {
|
|
49
|
+
const child = operand.children[i];
|
|
50
|
+
operand.children[i] = this.reduce(child);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
return operand;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
exports.OperandReduce = OperandReduce;
|
|
57
|
+
//# sourceMappingURL=reduce.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reduce.js","sourceRoot":"","sources":["../../../../../../src/lib/operand/application/useCases/reduce.ts"],"names":[],"mappings":";;;AAEA,mDAAsE;AAGtE,MAAa,aAAa;IACzB,kDAAkD;IAClD,YAA8B,KAAmB,EAC/B,YAA0B;QADd,UAAK,GAAL,KAAK,CAAc;QAC/B,iBAAY,GAAZ,YAAY,CAAc;IAAG,CAAC;IAEzC,MAAM,CAAE,OAAgB;QAC9B,IAAI,OAAO,CAAC,IAAI,KAAK,oBAAW,CAAC,QAAQ,EAAE,CAAC;YAC3C,OAAO,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAA;QACnC,CAAC;aAAM,IAAI,OAAO,CAAC,IAAI,KAAK,oBAAW,CAAC,QAAQ,EAAE,CAAC;YAClD,IAAI,YAAY,GAAO,IAAI,CAAA;YAC3B,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;gBACzC,kDAAkD;gBAClD,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;YACpD,CAAC;iBAAM,CAAC;gBACP,qEAAqE;gBACrE,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;gBACrC,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;gBACxC,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAA;YAChD,CAAC;YACD,IAAI,YAAY,IAAI,YAAY,CAAC,aAAa,EAAE,CAAC;gBAChD,OAAO,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAA;YACnC,CAAC;QACF,CAAC;QACD,OAAO,OAAO,CAAA;IACf,CAAC;IAES,aAAa,CAAE,OAAgB;QACxC,IAAI,YAAY,GAAG,IAAI,CAAA;QACvB,KAAK,MAAM,KAAK,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;YACtC,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,KAAK,oBAAW,CAAC,KAAK,CAAC,EAAE,CAAC;gBACzC,YAAY,GAAG,KAAK,CAAA;gBACpB,MAAK;YACN,CAAC;QACF,CAAC;QACD,IAAI,YAAY,EAAE,CAAC;YAClB,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,gBAAO,EAAE,CAAC,CAAA;YACzC,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;YAC5D,QAAQ,CAAC,EAAE,GAAG,OAAO,CAAC,EAAE,CAAA;YACxB,OAAO,QAAQ,CAAA;QAChB,CAAC;aAAM,CAAC;YACP,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBAClD,MAAM,KAAK,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAA;gBACjC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;YACzC,CAAC;QACF,CAAC;QACD,OAAO,OAAO,CAAA;IACf,CAAC;CACD;AA/CD,sCA+CC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constBuilder.d.ts","sourceRoot":"","sources":["../../../../../src/lib/operand/domain/constBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAEvD,MAAM,WAAW,YAAY;IAC5B,KAAK,CAAE,GAAG,EAAC,QAAQ,EAAE,KAAK,EAAC,GAAG,GAAG,OAAO,CAAA;CACxC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constBuilder.js","sourceRoot":"","sources":["../../../../../src/lib/operand/domain/constBuilder.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { Context, Parameter, Position, IEvaluator, Operand, OperandType } from '../../shared/domain';
|
|
2
|
+
export interface ParameterDoc {
|
|
3
|
+
name: string;
|
|
4
|
+
description: string;
|
|
5
|
+
}
|
|
6
|
+
export interface OperatorDoc {
|
|
7
|
+
description: string;
|
|
8
|
+
params?: ParameterDoc[];
|
|
9
|
+
}
|
|
10
|
+
export interface OperatorAdditionalInfo {
|
|
11
|
+
priority: number;
|
|
12
|
+
description: string;
|
|
13
|
+
doc?: OperatorDoc;
|
|
14
|
+
async?: boolean;
|
|
15
|
+
}
|
|
16
|
+
export interface FunctionAdditionalInfo {
|
|
17
|
+
deterministic?: boolean;
|
|
18
|
+
description: string;
|
|
19
|
+
doc?: OperatorDoc;
|
|
20
|
+
async?: boolean;
|
|
21
|
+
}
|
|
22
|
+
export declare abstract class Evaluator implements IEvaluator {
|
|
23
|
+
protected readonly operand: Operand;
|
|
24
|
+
constructor(operand: Operand);
|
|
25
|
+
abstract eval(context: Context): any;
|
|
26
|
+
abstract evalAsync(context: Context): Promise<any>;
|
|
27
|
+
protected evalAsyncChildren(context: Context): Promise<any>;
|
|
28
|
+
isAsync(): boolean;
|
|
29
|
+
}
|
|
30
|
+
export interface EvaluatorBuilder {
|
|
31
|
+
build(operand: Operand): IEvaluator;
|
|
32
|
+
}
|
|
33
|
+
export declare abstract class PrototypeEvaluator implements IEvaluator {
|
|
34
|
+
protected operand?: Operand | undefined;
|
|
35
|
+
constructor(operand?: Operand | undefined);
|
|
36
|
+
abstract clone(operand: Operand): IEvaluator;
|
|
37
|
+
abstract eval(context: Context): any;
|
|
38
|
+
abstract evalAsync(context: Context): Promise<any>;
|
|
39
|
+
protected get op(): Operand;
|
|
40
|
+
}
|
|
41
|
+
export interface OperandMetadata {
|
|
42
|
+
pos: Position;
|
|
43
|
+
type: OperandType;
|
|
44
|
+
name: string;
|
|
45
|
+
children?: OperandMetadata[];
|
|
46
|
+
returnType?: string;
|
|
47
|
+
number?: number;
|
|
48
|
+
}
|
|
49
|
+
export interface OperatorMetadata {
|
|
50
|
+
params: Parameter[];
|
|
51
|
+
deterministic: boolean;
|
|
52
|
+
operands: number;
|
|
53
|
+
returnType: string;
|
|
54
|
+
doc: OperatorDoc;
|
|
55
|
+
priority?: number;
|
|
56
|
+
function?: Function;
|
|
57
|
+
custom?: PrototypeEvaluator;
|
|
58
|
+
async: boolean;
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=entities.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"entities.d.ts","sourceRoot":"","sources":["../../../../../src/lib/operand/domain/entities.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AAEpG,MAAM,WAAW,YAAY;IAC5B,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,CAAA;CACnB;AACD,MAAM,WAAW,WAAW;IAC3B,WAAW,EAAE,MAAM,CAAA;IACnB,MAAM,CAAC,EAAC,YAAY,EAAE,CAAA;CACtB;AAED,MAAM,WAAW,sBAAsB;IACtC,QAAQ,EAAE,MAAM,CAAA;IAChB,WAAW,EAAE,MAAM,CAAA;IACnB,GAAG,CAAC,EAAE,WAAW,CAAA;IACjB,KAAK,CAAC,EAAE,OAAO,CAAA;CACf;AAED,MAAM,WAAW,sBAAsB;IACtC,aAAa,CAAC,EAAC,OAAO,CAAA;IACtB,WAAW,EAAE,MAAM,CAAA;IACnB,GAAG,CAAC,EAAE,WAAW,CAAA;IACjB,KAAK,CAAC,EAAE,OAAO,CAAA;CACf;AAED,8BAAsB,SAAU,YAAW,UAAU;IAEhC,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,OAAO;gBAAhB,OAAO,EAAE,OAAO;aACvC,IAAI,CAAC,OAAO,EAAE,OAAO,GAAG,GAAG;aAC3B,SAAS,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC;cACzC,iBAAiB,CAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC;IAQ3D,OAAO,IAAK,OAAO;CAM1B;AAED,MAAM,WAAW,gBAAgB;IAChC,KAAK,CAAC,OAAO,EAAC,OAAO,GAAE,UAAU,CAAA;CACjC;AAGD,8BAAsB,kBAAmB,YAAW,UAAU;IAEzC,SAAS,CAAC,OAAO,CAAC,EAAE,OAAO;gBAAjB,OAAO,CAAC,EAAE,OAAO,YAAA;aAC/B,KAAK,CAAC,OAAO,EAAE,OAAO,GAAE,UAAU;aAClC,IAAI,CAAC,OAAO,EAAE,OAAO,GAAG,GAAG;aAC3B,SAAS,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC;IACzD,SAAS,KAAK,EAAE,IAAK,OAAO,CAG3B;CACD;AAED,MAAM,WAAW,eAAe;IAC/B,GAAG,EAAC,QAAQ,CAAC;IACb,IAAI,EAAE,WAAW,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,eAAe,EAAE,CAAC;IAC7B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAA;CACf;AACD,MAAM,WAAW,gBAAgB;IAChC,MAAM,EAAE,SAAS,EAAE,CAAA;IACnB,aAAa,EAAC,OAAO,CAAA;IACrB,QAAQ,EAAE,MAAM,CAAA;IAChB,UAAU,EAAC,MAAM,CAAA;IACjB,GAAG,EAAE,WAAW,CAAA;IAChB,QAAQ,CAAC,EAAC,MAAM,CAAA;IAEhB,QAAQ,CAAC,EAAE,QAAQ,CAAA;IACnB,MAAM,CAAC,EAAE,kBAAkB,CAAA;IAC3B,KAAK,EAAE,OAAO,CAAA;CACd"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.PrototypeEvaluator = exports.Evaluator = void 0;
|
|
4
|
+
class Evaluator {
|
|
5
|
+
// eslint-disable-next-line no-useless-constructor
|
|
6
|
+
constructor(operand) {
|
|
7
|
+
this.operand = operand;
|
|
8
|
+
}
|
|
9
|
+
async evalAsyncChildren(context) {
|
|
10
|
+
const promises = [];
|
|
11
|
+
for (const child of this.operand.children) {
|
|
12
|
+
promises.push(child.evalAsync(context));
|
|
13
|
+
}
|
|
14
|
+
return Promise.all(promises);
|
|
15
|
+
}
|
|
16
|
+
isAsync() {
|
|
17
|
+
for (const child of this.operand.children) {
|
|
18
|
+
if (child.isAsync())
|
|
19
|
+
return true;
|
|
20
|
+
}
|
|
21
|
+
return false;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
exports.Evaluator = Evaluator;
|
|
25
|
+
// https://www.sourcecodeexamples.net/2020/08/typescript-prototype-pattern-example.html
|
|
26
|
+
class PrototypeEvaluator {
|
|
27
|
+
// eslint-disable-next-line no-useless-constructor
|
|
28
|
+
constructor(operand) {
|
|
29
|
+
this.operand = operand;
|
|
30
|
+
}
|
|
31
|
+
get op() {
|
|
32
|
+
if (this.operand === undefined)
|
|
33
|
+
throw new Error('Operand undefined');
|
|
34
|
+
return this.operand;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
exports.PrototypeEvaluator = PrototypeEvaluator;
|
|
38
|
+
//# sourceMappingURL=entities.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"entities.js","sourceRoot":"","sources":["../../../../../src/lib/operand/domain/entities.ts"],"names":[],"mappings":";;;AAyBA,MAAsB,SAAS;IAC9B,kDAAkD;IAClD,YAAuC,OAAgB;QAAhB,YAAO,GAAP,OAAO,CAAS;IAAG,CAAC;IAGjD,KAAK,CAAC,iBAAiB,CAAE,OAAgB;QAClD,MAAM,QAAQ,GAAG,EAAE,CAAA;QACnB,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;YAC3C,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAA;QACxC,CAAC;QACD,OAAO,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;IAC7B,CAAC;IAEM,OAAO;QACb,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;YAC3C,IAAI,KAAK,CAAC,OAAO,EAAE;gBAAE,OAAO,IAAI,CAAA;QACjC,CAAC;QACD,OAAO,KAAK,CAAA;IACb,CAAC;CACD;AAnBD,8BAmBC;AAMD,uFAAuF;AACvF,MAAsB,kBAAkB;IACvC,kDAAkD;IAClD,YAA8B,OAAiB;QAAjB,YAAO,GAAP,OAAO,CAAU;IAAG,CAAC;IAInD,IAAc,EAAE;QACf,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS;YAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAA;QACpE,OAAO,IAAI,CAAC,OAAO,CAAA;IACpB,CAAC;CACD;AAVD,gDAUC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/lib/operand/domain/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAA;AAC1B,cAAc,YAAY,CAAA;AAC1B,cAAc,gBAAgB,CAAA"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./services"), exports);
|
|
18
|
+
__exportStar(require("./entities"), exports);
|
|
19
|
+
__exportStar(require("./constBuilder"), exports);
|
|
20
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/lib/operand/domain/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,6CAA0B;AAC1B,6CAA0B;AAC1B,iDAA8B"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { IEvaluator, Operand, Parameter } from '../../shared/domain';
|
|
2
|
+
import { Type } from '@data7expressions/typ3s';
|
|
3
|
+
import { EvaluatorBuilder } from './entities';
|
|
4
|
+
import { ConstBuilder } from './constBuilder';
|
|
5
|
+
export interface EvaluatorFactory {
|
|
6
|
+
add(key: string, evaluator: EvaluatorBuilder): EvaluatorFactory;
|
|
7
|
+
get(key: string): EvaluatorBuilder | undefined;
|
|
8
|
+
create(operand: Operand): IEvaluator | undefined;
|
|
9
|
+
}
|
|
10
|
+
export interface OperandBuilder {
|
|
11
|
+
evaluatorFactory: EvaluatorFactory;
|
|
12
|
+
build(expression: string): Operand;
|
|
13
|
+
}
|
|
14
|
+
export interface OperandBuildOptions {
|
|
15
|
+
type: string;
|
|
16
|
+
cache?: boolean;
|
|
17
|
+
}
|
|
18
|
+
export interface TypeService {
|
|
19
|
+
getType(operand: Operand): Type;
|
|
20
|
+
}
|
|
21
|
+
export interface ParameterService {
|
|
22
|
+
parameters(operand: Operand): Parameter[];
|
|
23
|
+
}
|
|
24
|
+
export interface OperandSerializer {
|
|
25
|
+
clone(sentence: Operand): Operand;
|
|
26
|
+
serialize(sentence: Operand): string;
|
|
27
|
+
deserialize(value: string): Operand;
|
|
28
|
+
}
|
|
29
|
+
export interface OperandCloner {
|
|
30
|
+
clone(source: Operand, key?: string): Operand;
|
|
31
|
+
}
|
|
32
|
+
export interface OperandFacade extends OperandCloner {
|
|
33
|
+
constBuilder: ConstBuilder;
|
|
34
|
+
getBuilder(key: string): OperandBuilder;
|
|
35
|
+
parameters(expression: string): Parameter[];
|
|
36
|
+
type(expression: string): string;
|
|
37
|
+
build(expression: string, key?: string): Operand;
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=services.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"services.d.ts","sourceRoot":"","sources":["../../../../../src/lib/operand/domain/services.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAA;AACpE,OAAO,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAA;AAC9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAE7C,MAAM,WAAW,gBAAgB;IAChC,GAAG,CAAE,GAAG,EAAC,MAAM,EAAE,SAAS,EAAC,gBAAgB,GAAE,gBAAgB,CAAA;IAC7D,GAAG,CAAE,GAAG,EAAC,MAAM,GAAE,gBAAgB,GAAC,SAAS,CAAA;IAC3C,MAAM,CAAE,OAAO,EAAC,OAAO,GAAG,UAAU,GAAC,SAAS,CAAA;CAC9C;AACD,MAAM,WAAW,cAAc;IAC9B,gBAAgB,EAAC,gBAAgB,CAAA;IACjC,KAAK,CAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAA;CACnC;AACD,MAAM,WAAW,mBAAmB;IACnC,IAAI,EAAC,MAAM,CAAA;IACX,KAAK,CAAC,EAAC,OAAO,CAAA;CACd;AAED,MAAM,WAAW,WAAW;IAC3B,OAAO,CAAE,OAAO,EAAE,OAAO,GAAE,IAAI,CAAA;CAC/B;AAED,MAAM,WAAW,gBAAgB;IAChC,UAAU,CAAE,OAAO,EAAE,OAAO,GAAG,SAAS,EAAE,CAAA;CAC1C;AAED,MAAM,WAAW,iBAAiB;IACjC,KAAK,CAAE,QAAQ,EAAE,OAAO,GAAG,OAAO,CAAA;IAClC,SAAS,CAAE,QAAQ,EAAE,OAAO,GAAG,MAAM,CAAA;IACrC,WAAW,CAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAA;CACpC;AAED,MAAM,WAAW,aAAa;IAC7B,KAAK,CAAE,MAAM,EAAC,OAAO,EAAE,GAAG,CAAC,EAAC,MAAM,GAAE,OAAO,CAAA;CAC3C;AAED,MAAM,WAAW,aAAc,SAAQ,aAAa;IACnD,YAAY,EAAE,YAAY,CAAA;IAC1B,UAAU,CAAE,GAAG,EAAC,MAAM,GAAE,cAAc,CAAA;IACtC,UAAU,CAAE,UAAU,EAAE,MAAM,GAAG,SAAS,EAAE,CAAA;IAC5C,IAAI,CAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAAA;IACjC,KAAK,CAAE,UAAU,EAAE,MAAM,EAAE,GAAG,CAAC,EAAC,MAAM,GAAE,OAAO,CAAA;CAC/C"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"services.js","sourceRoot":"","sources":["../../../../../src/lib/operand/domain/services.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constBuilder.d.ts","sourceRoot":"","sources":["../../../../../src/lib/operand/infrastructure/constBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAGpE,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AAExC,qBAAa,gBAAiB,YAAW,YAAY;IAC7C,KAAK,CAAE,GAAG,EAAC,QAAQ,EAAE,KAAK,EAAC,GAAG,GAAG,OAAO;CAK/C"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ConstBuilderImpl = void 0;
|
|
4
|
+
const domain_1 = require("../../shared/domain");
|
|
5
|
+
const typ3s_1 = require("@data7expressions/typ3s");
|
|
6
|
+
const expression_1 = require("./executors/expression");
|
|
7
|
+
class ConstBuilderImpl {
|
|
8
|
+
build(pos, value) {
|
|
9
|
+
const operand = new domain_1.Operand(pos, value, domain_1.OperandType.Const, [], typ3s_1.Type.get(value));
|
|
10
|
+
operand.evaluator = new expression_1.ConstEvaluator(operand);
|
|
11
|
+
return operand;
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
exports.ConstBuilderImpl = ConstBuilderImpl;
|
|
15
|
+
//# sourceMappingURL=constBuilder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constBuilder.js","sourceRoot":"","sources":["../../../../../src/lib/operand/infrastructure/constBuilder.ts"],"names":[],"mappings":";;;AAAA,gDAAoE;AACpE,mDAA8C;AAC9C,uDAAuD;AAGvD,MAAa,gBAAgB;IACrB,KAAK,CAAE,GAAY,EAAE,KAAS;QACpC,MAAM,OAAO,GAAG,IAAI,gBAAO,CAAC,GAAG,EAAE,KAAK,EAAE,oBAAW,CAAC,KAAK,EAAE,EAAE,EAAE,YAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAA;QAC/E,OAAO,CAAC,SAAS,GAAG,IAAI,2BAAc,CAAC,OAAO,CAAC,CAAA;QAC/C,OAAO,OAAO,CAAA;IACf,CAAC;CACD;AAND,4CAMC"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { Context } from '../../../shared/domain';
|
|
2
|
+
import { Evaluator, EvaluatorFactory } from '../../domain';
|
|
3
|
+
import { ModelService } from '../../../model/domain';
|
|
4
|
+
export declare class ConstEvaluator extends Evaluator {
|
|
5
|
+
eval(): any;
|
|
6
|
+
evalAsync(): Promise<any>;
|
|
7
|
+
isAsync(): boolean;
|
|
8
|
+
}
|
|
9
|
+
export declare class VarEvaluator extends Evaluator {
|
|
10
|
+
eval(context: Context): any;
|
|
11
|
+
evalAsync(context: Context): Promise<any>;
|
|
12
|
+
isAsync(): boolean;
|
|
13
|
+
}
|
|
14
|
+
export declare class EnvEvaluator extends Evaluator {
|
|
15
|
+
eval(): any;
|
|
16
|
+
evalAsync(): Promise<any>;
|
|
17
|
+
isAsync(): boolean;
|
|
18
|
+
}
|
|
19
|
+
export declare class TemplateEvaluator extends Evaluator {
|
|
20
|
+
eval(context: Context): any;
|
|
21
|
+
evalAsync(context: Context): Promise<any>;
|
|
22
|
+
isAsync(): boolean;
|
|
23
|
+
}
|
|
24
|
+
export declare class NotImplementedEvaluator extends Evaluator {
|
|
25
|
+
eval(): any;
|
|
26
|
+
evalAsync(): Promise<any>;
|
|
27
|
+
isAsync(): boolean;
|
|
28
|
+
}
|
|
29
|
+
export declare class ExpressionEvaluatorFactoryBuilder {
|
|
30
|
+
private readonly model;
|
|
31
|
+
constructor(model: ModelService);
|
|
32
|
+
build(): EvaluatorFactory;
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=expression.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"expression.d.ts","sourceRoot":"","sources":["../../../../../../src/lib/operand/infrastructure/executors/expression.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAoC,MAAM,wBAAwB,CAAA;AAClF,OAAO,EAAE,SAAS,EAAoB,gBAAgB,EAAE,MAAM,cAAc,CAAA;AAC5E,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;AAIpD,qBAAa,cAAe,SAAQ,SAAS;IACrC,IAAI,IAAK,GAAG;IAiBN,SAAS,IAAK,OAAO,CAAC,GAAG,CAAC;IAIhC,OAAO,IAAK,OAAO;CAG1B;AAQD,qBAAa,YAAa,SAAQ,SAAS;IACnC,IAAI,CAAE,OAAO,EAAE,OAAO,GAAG,GAAG;IAItB,SAAS,CAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC;IAIhD,OAAO,IAAK,OAAO;CAG1B;AAkED,qBAAa,YAAa,SAAQ,SAAS;IACnC,IAAI,IAAK,GAAG;IAIN,SAAS,IAAK,OAAO,CAAC,GAAG,CAAC;IAIhC,OAAO,IAAK,OAAO;CAG1B;AAqBD,qBAAa,iBAAkB,SAAQ,SAAS;IACxC,IAAI,CAAE,OAAO,EAAE,OAAO,GAAG,GAAG;IAItB,SAAS,CAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC;IAIhD,OAAO,IAAK,OAAO;CAG1B;AA8RD,qBAAa,uBAAwB,SAAQ,SAAS;IAC9C,IAAI,IAAK,GAAG;IAIN,SAAS,IAAK,OAAO,CAAC,GAAG,CAAC;IAIhC,OAAO,IAAK,OAAO;CAG1B;AA0ED,qBAAa,iCAAiC;IAEhC,OAAO,CAAC,QAAQ,CAAC,KAAK;gBAAL,KAAK,EAAE,YAAY;IAE1C,KAAK,IAAK,gBAAgB;CAgCjC"}
|