@openforis/arena-core 2.3.21 → 2.3.22

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.
@@ -38,6 +38,22 @@ const defaultEvaluators = {
38
38
  [node_1.ExpressionNodeType.This]: this_1.ThisEvaluator,
39
39
  [node_1.ExpressionNodeType.Unary]: unary_1.UnaryEvaluator,
40
40
  };
41
+ const PARSED_EXPRESSIONS_CACHE_MAX_SIZE = 1000;
42
+ const parsedExpressionsCache = new Map();
43
+ const expressionParser = new parser_1.JavascriptExpressionParser();
44
+ const parseExpression = (expression) => {
45
+ let expressionNode = parsedExpressionsCache.get(expression);
46
+ if (!expressionNode) {
47
+ expressionNode = expressionParser.parse(expression);
48
+ if (parsedExpressionsCache.size >= PARSED_EXPRESSIONS_CACHE_MAX_SIZE) {
49
+ const oldestExpression = parsedExpressionsCache.keys().next().value;
50
+ if (oldestExpression !== undefined)
51
+ parsedExpressionsCache.delete(oldestExpression);
52
+ }
53
+ parsedExpressionsCache.set(expression, expressionNode);
54
+ }
55
+ return expressionNode;
56
+ };
41
57
  class JavascriptExpressionEvaluator {
42
58
  constructor(functions = {}, evaluators = {}) {
43
59
  this.evaluators = Object.assign(Object.assign({}, defaultEvaluators), evaluators);
@@ -45,8 +61,7 @@ class JavascriptExpressionEvaluator {
45
61
  }
46
62
  evaluate(expression, context) {
47
63
  return __awaiter(this, void 0, void 0, function* () {
48
- const parser = new parser_1.JavascriptExpressionParser();
49
- return this.evaluateNode(parser.parse(expression), context !== null && context !== void 0 ? context : {});
64
+ return this.evaluateNode(parseExpression(expression), context !== null && context !== void 0 ? context : {});
50
65
  });
51
66
  }
52
67
  evaluateNode(expressionNode, context) {
@@ -1 +1 @@
1
- {"version":3,"file":"evaluator.js","sourceRoot":"","sources":["../../../src/expression/javascript/evaluator.ts"],"names":[],"mappings":";;;;;;;;;;;;AAGA,kCAAgG;AAChG,uCAAyC;AAEzC,yDAAqD;AACrD,wCAA6C;AAC7C,0CAA+C;AAC/C,sCAA2C;AAC3C,8CAAmD;AACnD,oDAAyD;AACzD,kDAAuD;AACvD,4CAAiD;AACjD,0CAA+C;AAC/C,8CAAmD;AACnD,sCAA2C;AAC3C,wCAA6C;AAC7C,4CAA4D;AAM5D,MAAM,iBAAiB,GAAG;IACxB,CAAC,yBAAkB,CAAC,KAAK,CAAC,EAAE,sBAAc;IAC1C,CAAC,yBAAkB,CAAC,MAAM,CAAC,EAAE,wBAAe;IAC5C,CAAC,yBAAkB,CAAC,IAAI,CAAC,EAAE,oBAAa;IACxC,CAAC,yBAAkB,CAAC,QAAQ,CAAC,EAAE,4BAAiB;IAChD,CAAC,yBAAkB,CAAC,WAAW,CAAC,EAAE,kCAAoB;IACtD,CAAC,yBAAkB,CAAC,UAAU,CAAC,EAAE,gCAAmB;IACpD,CAAC,yBAAkB,CAAC,OAAO,CAAC,EAAE,0BAAgB;IAC9C,CAAC,yBAAkB,CAAC,MAAM,CAAC,EAAE,wBAAe;IAC5C,CAAC,yBAAkB,CAAC,QAAQ,CAAC,EAAE,4BAAiB;IAChD,CAAC,yBAAkB,CAAC,IAAI,CAAC,EAAE,oBAAa;IACxC,CAAC,yBAAkB,CAAC,KAAK,CAAC,EAAE,sBAAc;CAC3C,CAAA;AAED,MAAa,6BAA6B;IAIxC,YAAY,YAAoC,EAAE,EAAE,aAA4B,EAAE;QAChF,IAAI,CAAC,UAAU,mCAAQ,iBAAiB,GAAK,UAAU,CAAE,CAAA;QACzD,IAAI,CAAC,SAAS,mCAAQ,mCAAgB,GAAK,SAAS,CAAE,CAAA;IACxD,CAAC;IAEK,QAAQ,CAAC,UAAkB,EAAE,OAAW;;YAC5C,MAAM,MAAM,GAAG,IAAI,mCAA0B,EAAE,CAAA;YAC/C,OAAO,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,OAAO,aAAP,OAAO,cAAP,OAAO,GAAK,EAAQ,CAAC,CAAA;QAC1E,CAAC;KAAA;IAEK,YAAY,CAAC,cAAkD,EAAE,OAAU;;YAC/E,MAAM,EAAE,IAAI,EAAE,GAAG,cAAc,CAAA;YAE/B,MAAM,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAA;YAC3C,IAAI,CAAC,aAAa,EAAE,CAAC;gBACnB,MAAM,IAAI,mBAAW,CAAC,oCAAoC,EAAE,EAAE,IAAI,EAAE,CAAC,CAAA;YACvE,CAAC;YACD,OAAO,IAAI,aAAa,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAA;QAClE,CAAC;KAAA;CACF;AAvBD,sEAuBC"}
1
+ {"version":3,"file":"evaluator.js","sourceRoot":"","sources":["../../../src/expression/javascript/evaluator.ts"],"names":[],"mappings":"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"}
@@ -9,6 +9,16 @@ const srs_1 = require("../../srs");
9
9
  const pointFactory_1 = require("../pointFactory");
10
10
  const isFilled_1 = require("./isFilled");
11
11
  const getSrs_1 = require("./getSrs");
12
+ const convertersCache = new Map();
13
+ const getConverter = (wktFrom, wktTo) => {
14
+ const key = `${wktFrom}\n${wktTo}`;
15
+ let converter = convertersCache.get(key);
16
+ if (!converter) {
17
+ converter = (0, proj4_1.default)(wktFrom, wktTo);
18
+ convertersCache.set(key, converter);
19
+ }
20
+ return converter;
21
+ };
12
22
  const transform = (point, srsCodeTo, srsIndex = srs_1.DEFAULT_SRS_INDEX) => {
13
23
  if (!(0, isFilled_1.isFilled)(point))
14
24
  return null;
@@ -26,7 +36,7 @@ const transform = (point, srsCodeTo, srsIndex = srs_1.DEFAULT_SRS_INDEX) => {
26
36
  }
27
37
  try {
28
38
  const { x, y } = point;
29
- const [long, lat] = (0, proj4_1.default)(srsFrom.wkt, srsTo.wkt, [Number(x), Number(y)]);
39
+ const [long, lat] = getConverter(srsFrom.wkt, srsTo.wkt).forward([Number(x), Number(y)]);
30
40
  return pointFactory_1.PointFactory.createInstance(Object.assign(Object.assign({}, point), { srs: srsCodeTo, x: long, y: lat }));
31
41
  }
32
42
  catch (_a) {
@@ -1 +1 @@
1
- {"version":3,"file":"transform.js","sourceRoot":"","sources":["../../../src/geo/points/transform.ts"],"names":[],"mappings":";;;;;;AAAA,kDAAyB;AAEzB,mCAAuD;AAEvD,kDAA8C;AAC9C,yCAAqC;AACrC,qCAAiC;AAU1B,MAAM,SAAS,GAAG,CAAC,KAAY,EAAE,SAAiB,EAAE,WAAqB,uBAAiB,EAAgB,EAAE;IACjH,IAAI,CAAC,IAAA,mBAAQ,EAAC,KAAK,CAAC;QAAE,OAAO,IAAI,CAAA;IAEjC,MAAM,EAAE,GAAG,EAAE,WAAW,EAAE,GAAG,KAAK,CAAA;IAElC,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;QAE9B,OAAO,KAAK,CAAA;IACd,CAAC;IACD,MAAM,OAAO,GAAG,IAAA,eAAM,EAAC,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAC,CAAA;IACvD,IAAI,CAAC,OAAO,EAAE,CAAC;QAEb,OAAO,IAAI,CAAA;IACb,CAAC;IAED,MAAM,KAAK,GAAG,IAAA,eAAM,EAAC,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,CAAA;IACnD,IAAI,CAAC,KAAK,EAAE,CAAC;QAEX,OAAO,IAAI,CAAA;IACb,CAAC;IACD,IAAI,CAAC;QACH,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,KAAK,CAAA;QACtB,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,IAAA,eAAK,EAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;QAEzE,OAAO,2BAAY,CAAC,cAAc,iCAAM,KAAK,KAAE,GAAG,EAAE,SAAS,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,IAAG,CAAA;IACnF,CAAC;IAAC,WAAM,CAAC;QACP,OAAO,IAAI,CAAA;IACb,CAAC;AACH,CAAC,CAAA;AA5BY,QAAA,SAAS,aA4BrB"}
1
+ {"version":3,"file":"transform.js","sourceRoot":"","sources":["../../../src/geo/points/transform.ts"],"names":[],"mappings":";;;;;;AAAA,kDAAyB;AAEzB,mCAAuD;AAEvD,kDAA8C;AAC9C,yCAAqC;AACrC,qCAAiC;AAGjC,MAAM,eAAe,GAAG,IAAI,GAAG,EAA2B,CAAA;AAE1D,MAAM,YAAY,GAAG,CAAC,OAAe,EAAE,KAAa,EAAmB,EAAE;IACvE,MAAM,GAAG,GAAG,GAAG,OAAO,KAAK,KAAK,EAAE,CAAA;IAClC,IAAI,SAAS,GAAG,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;IACxC,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,SAAS,GAAG,IAAA,eAAK,EAAC,OAAO,EAAE,KAAK,CAAC,CAAA;QACjC,eAAe,CAAC,GAAG,CAAC,GAAG,EAAE,SAAS,CAAC,CAAA;IACrC,CAAC;IACD,OAAO,SAAS,CAAA;AAClB,CAAC,CAAA;AAUM,MAAM,SAAS,GAAG,CAAC,KAAY,EAAE,SAAiB,EAAE,WAAqB,uBAAiB,EAAgB,EAAE;IACjH,IAAI,CAAC,IAAA,mBAAQ,EAAC,KAAK,CAAC;QAAE,OAAO,IAAI,CAAA;IAEjC,MAAM,EAAE,GAAG,EAAE,WAAW,EAAE,GAAG,KAAK,CAAA;IAElC,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;QAE9B,OAAO,KAAK,CAAA;IACd,CAAC;IACD,MAAM,OAAO,GAAG,IAAA,eAAM,EAAC,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAC,CAAA;IACvD,IAAI,CAAC,OAAO,EAAE,CAAC;QAEb,OAAO,IAAI,CAAA;IACb,CAAC;IAED,MAAM,KAAK,GAAG,IAAA,eAAM,EAAC,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,CAAA;IACnD,IAAI,CAAC,KAAK,EAAE,CAAC;QAEX,OAAO,IAAI,CAAA;IACb,CAAC;IACD,IAAI,CAAC;QACH,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,KAAK,CAAA;QACtB,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,YAAY,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;QAExF,OAAO,2BAAY,CAAC,cAAc,iCAAM,KAAK,KAAE,GAAG,EAAE,SAAS,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,IAAG,CAAA;IACnF,CAAC;IAAC,WAAM,CAAC;QACP,OAAO,IAAI,CAAA;IACb,CAAC;AACH,CAAC,CAAA;AA5BY,QAAA,SAAS,aA4BrB"}
@@ -4,7 +4,9 @@ import { NodeDefExpressionContext } from '../context';
4
4
  import { IdentifierExpression } from '../../expression';
5
5
  export declare class NodeDefIdentifierEvaluator extends IdentifierEvaluator<NodeDefExpressionContext> {
6
6
  evaluate(expressionNode: IdentifierExpression): Promise<any>;
7
+ private evaluateIdentifier;
7
8
  private addReferencedNodeDefUuid;
8
9
  protected findIdentifierAmongReachableNodeDefs(expressionNode: IdentifierExpression): NodeDef<NodeDefType, NodeDefProps> | undefined;
9
10
  protected getReachableNodeDefs(): NodeDef<NodeDefType, NodeDefProps>[];
11
+ private iterateReachableNodeDefs;
10
12
  }
@@ -1,13 +1,4 @@
1
1
  "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
2
  Object.defineProperty(exports, "__esModule", { value: true });
12
3
  exports.NodeDefIdentifierEvaluator = void 0;
13
4
  const nodeDefs_1 = require("../../survey/surveys/nodeDefs");
@@ -34,50 +25,51 @@ const findActualContextNode = (params) => {
34
25
  };
35
26
  class NodeDefIdentifierEvaluator extends identifier_1.IdentifierEvaluator {
36
27
  evaluate(expressionNode) {
37
- const _super = Object.create(null, {
38
- evaluate: { get: () => super.evaluate }
39
- });
40
- return __awaiter(this, void 0, void 0, function* () {
41
- var _a, _b, _c, _d;
42
- const { context } = this;
43
- const { nodeDefContext, nodeDefCurrent, selfReferenceAllowed, object: objectContext, itemsFilter } = context;
44
- const { name: exprName } = expressionNode;
45
- if (exprName === expression_1.ExpressionVariable.CONTEXT) {
46
- if (nodeDefContext) {
47
- this.addReferencedNodeDefUuid(nodeDefContext.uuid);
48
- }
49
- return nodeDefContext;
50
- }
51
- try {
52
- const identifierAsGlobalObject = yield _super.evaluate.call(this, expressionNode);
53
- return identifierAsGlobalObject;
54
- }
55
- catch (_e) {
56
- }
57
- if (itemsFilter) {
58
- const prop = ((_a = objectContext === null || objectContext === void 0 ? void 0 : objectContext.props) === null || _a === void 0 ? void 0 : _a[exprName]) || ((_c = (_b = objectContext === null || objectContext === void 0 ? void 0 : objectContext.props) === null || _b === void 0 ? void 0 : _b.extra) === null || _c === void 0 ? void 0 : _c[exprName]);
59
- if (!utils_1.Objects.isEmpty(prop)) {
60
- return prop;
61
- }
62
- }
63
- if (nodeDefExpressionNativeProperties_1.NodeNativeProperties.hasNativeProperty({ nodeDefOrValue: objectContext, propName: exprName })) {
64
- return nodeDefExpressionNativeProperties_1.NodeNativeProperties.evalNodeDefProperty({ nodeDefOrValue: objectContext, propName: exprName });
28
+ try {
29
+ return Promise.resolve(this.evaluateIdentifier(expressionNode));
30
+ }
31
+ catch (error) {
32
+ return Promise.reject(error);
33
+ }
34
+ }
35
+ evaluateIdentifier(expressionNode) {
36
+ var _a, _b, _c, _d;
37
+ const { context } = this;
38
+ const { nodeDefContext, nodeDefCurrent, selfReferenceAllowed, object: objectContext, itemsFilter } = context;
39
+ const { name: exprName } = expressionNode;
40
+ if (exprName === expression_1.ExpressionVariable.CONTEXT) {
41
+ if (nodeDefContext) {
42
+ this.addReferencedNodeDefUuid(nodeDefContext.uuid);
65
43
  }
66
- if (nodeDefs_2.NodeDefs.isAttribute(objectContext) && nodeValues_1.NodeValues.isValueProp({ nodeDef: objectContext, prop: exprName })) {
67
- return objectContext;
44
+ return nodeDefContext;
45
+ }
46
+ const globalOrNativeProperty = this.findGlobalOrNativeProperty(expressionNode);
47
+ if (globalOrNativeProperty) {
48
+ return globalOrNativeProperty.value;
49
+ }
50
+ if (itemsFilter) {
51
+ const prop = ((_a = objectContext === null || objectContext === void 0 ? void 0 : objectContext.props) === null || _a === void 0 ? void 0 : _a[exprName]) || ((_c = (_b = objectContext === null || objectContext === void 0 ? void 0 : objectContext.props) === null || _b === void 0 ? void 0 : _b.extra) === null || _c === void 0 ? void 0 : _c[exprName]);
52
+ if (!utils_1.Objects.isEmpty(prop)) {
53
+ return prop;
68
54
  }
69
- const referencedNodeDef = this.findIdentifierAmongReachableNodeDefs(expressionNode);
70
- if (referencedNodeDef) {
71
- if (!selfReferenceAllowed && referencedNodeDef.uuid === (nodeDefCurrent === null || nodeDefCurrent === void 0 ? void 0 : nodeDefCurrent.uuid)) {
72
- throw new error_1.SystemError(validation_1.ValidatorErrorKeys.expressions.cannotUseCurrentNode, { name: exprName });
73
- }
74
- this.addReferencedNodeDefUuid(referencedNodeDef.uuid);
75
- return referencedNodeDef;
55
+ }
56
+ if (nodeDefExpressionNativeProperties_1.NodeNativeProperties.hasNativeProperty({ nodeDefOrValue: objectContext, propName: exprName })) {
57
+ return nodeDefExpressionNativeProperties_1.NodeNativeProperties.evalNodeDefProperty({ nodeDefOrValue: objectContext, propName: exprName });
58
+ }
59
+ if (nodeDefs_2.NodeDefs.isAttribute(objectContext) && nodeValues_1.NodeValues.isValueProp({ nodeDef: objectContext, prop: exprName })) {
60
+ return objectContext;
61
+ }
62
+ const referencedNodeDef = this.findIdentifierAmongReachableNodeDefs(expressionNode);
63
+ if (referencedNodeDef) {
64
+ if (!selfReferenceAllowed && referencedNodeDef.uuid === (nodeDefCurrent === null || nodeDefCurrent === void 0 ? void 0 : nodeDefCurrent.uuid)) {
65
+ throw new error_1.SystemError(validation_1.ValidatorErrorKeys.expressions.cannotUseCurrentNode, { name: exprName });
76
66
  }
77
- throw new error_1.SystemError('expression.identifierNotFound', {
78
- name: exprName,
79
- contextObject: (_d = objectContext === null || objectContext === void 0 ? void 0 : objectContext.props) === null || _d === void 0 ? void 0 : _d.name,
80
- });
67
+ this.addReferencedNodeDefUuid(referencedNodeDef.uuid);
68
+ return referencedNodeDef;
69
+ }
70
+ throw new error_1.SystemError('expression.identifierNotFound', {
71
+ name: exprName,
72
+ contextObject: (_d = objectContext === null || objectContext === void 0 ? void 0 : objectContext.props) === null || _d === void 0 ? void 0 : _d.name,
81
73
  });
82
74
  }
83
75
  addReferencedNodeDefUuid(uuid) {
@@ -87,40 +79,52 @@ class NodeDefIdentifierEvaluator extends identifier_1.IdentifierEvaluator {
87
79
  }
88
80
  findIdentifierAmongReachableNodeDefs(expressionNode) {
89
81
  const { object: contextObject } = this.context;
90
- if (contextObject) {
91
- const reachableNodeDefs = this.getReachableNodeDefs();
92
- return reachableNodeDefs.find((reachableNodeDef) => reachableNodeDef.props.name === expressionNode.name);
82
+ if (!contextObject)
83
+ return undefined;
84
+ for (const reachableNodeDef of this.iterateReachableNodeDefs()) {
85
+ if (reachableNodeDef.props.name === expressionNode.name) {
86
+ return reachableNodeDef;
87
+ }
93
88
  }
94
89
  return undefined;
95
90
  }
96
91
  getReachableNodeDefs() {
92
+ return Array.from(this.iterateReachableNodeDefs());
93
+ }
94
+ *iterateReachableNodeDefs() {
97
95
  const { context } = this;
98
96
  const { survey, includeAnalysis } = context;
99
- const reachableNodeDefsByUuid = {};
97
+ const reachableNodeDefUuids = new Set();
98
+ const visitedUuids = new Set();
100
99
  const queue = new utils_1.Queue();
101
- const visitedUuids = [];
102
100
  const actualContextNode = findActualContextNode({ context });
103
101
  if (actualContextNode) {
104
102
  queue.enqueue(actualContextNode);
105
- reachableNodeDefsByUuid[actualContextNode.uuid] = actualContextNode;
103
+ reachableNodeDefUuids.add(actualContextNode.uuid);
104
+ yield actualContextNode;
106
105
  }
107
106
  while (!queue.isEmpty()) {
108
107
  const entityDefCurrent = queue.dequeue();
109
108
  const entityDefCurrentChildren = (0, nodeDefs_1.getNodeDefChildren)({ survey, nodeDef: entityDefCurrent, includeAnalysis });
110
109
  for (const childDef of entityDefCurrentChildren) {
111
- reachableNodeDefsByUuid[childDef.uuid] = childDef;
110
+ if (!reachableNodeDefUuids.has(childDef.uuid)) {
111
+ reachableNodeDefUuids.add(childDef.uuid);
112
+ yield childDef;
113
+ }
112
114
  }
113
115
  queue.enqueueItems(entityDefCurrentChildren.filter(nodeDefs_2.NodeDefs.isSingleEntity));
114
- if (!visitedUuids.includes(entityDefCurrent.uuid)) {
116
+ if (!visitedUuids.has(entityDefCurrent.uuid)) {
115
117
  const entityDefCurrentParent = (0, nodeDefs_1.getNodeDefParent)({ survey, nodeDef: entityDefCurrent });
116
118
  if (entityDefCurrentParent) {
117
119
  queue.enqueue(entityDefCurrentParent);
118
120
  }
119
- reachableNodeDefsByUuid[entityDefCurrent.uuid] = entityDefCurrent;
120
- visitedUuids.push(entityDefCurrent.uuid);
121
+ if (!reachableNodeDefUuids.has(entityDefCurrent.uuid)) {
122
+ reachableNodeDefUuids.add(entityDefCurrent.uuid);
123
+ yield entityDefCurrent;
124
+ }
125
+ visitedUuids.add(entityDefCurrent.uuid);
121
126
  }
122
127
  }
123
- return Object.values(reachableNodeDefsByUuid);
124
128
  }
125
129
  }
126
130
  exports.NodeDefIdentifierEvaluator = NodeDefIdentifierEvaluator;
@@ -1 +1 @@
1
- {"version":3,"file":"identifier.js","sourceRoot":"","sources":["../../../src/nodeDefExpressionEvaluator/node/identifier.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"identifier.js","sourceRoot":"","sources":["../../../src/nodeDefExpressionEvaluator/node/identifier.ts"],"names":[],"mappings":"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"}
@@ -1,30 +1,18 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.assocPath = void 0;
4
- const assocPath = (params) => {
5
- const { obj, path, value, sideEffect = false } = params;
6
- let objUpdated = sideEffect ? obj : Object.assign({}, obj);
7
- if (path.length === 0)
8
- return objUpdated;
9
- const [firstPathPart, ...otherPathParts] = path;
10
- if (path.length === 1) {
11
- objUpdated[firstPathPart] = value;
4
+ const _assocPath = (obj, path, pathIndex, value, sideEffect) => {
5
+ const objUpdated = sideEffect ? obj : Object.assign({}, obj);
6
+ if (pathIndex >= path.length)
12
7
  return objUpdated;
13
- }
14
- const objPart = obj[firstPathPart] || {};
15
- const objPartUpdated = (0, exports.assocPath)({
16
- obj: sideEffect ? objPart : Object.assign({}, objPart),
17
- path: otherPathParts,
18
- value,
19
- sideEffect,
20
- });
21
- if (sideEffect) {
22
- objUpdated[firstPathPart] = objPartUpdated;
23
- }
24
- else {
25
- objUpdated = Object.assign(Object.assign({}, obj), { [firstPathPart]: objPartUpdated });
26
- }
8
+ const pathPart = path[pathIndex];
9
+ objUpdated[pathPart] =
10
+ pathIndex === path.length - 1 ? value : _assocPath((obj === null || obj === void 0 ? void 0 : obj[pathPart]) || {}, path, pathIndex + 1, value, sideEffect);
27
11
  return objUpdated;
28
12
  };
13
+ const assocPath = (params) => {
14
+ const { obj, path, value, sideEffect = false } = params;
15
+ return _assocPath(obj, path, 0, value, sideEffect);
16
+ };
29
17
  exports.assocPath = assocPath;
30
18
  //# sourceMappingURL=assocPath.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"assocPath.js","sourceRoot":"","sources":["../../../src/utils/_objects/assocPath.ts"],"names":[],"mappings":";;;AAAO,MAAM,SAAS,GAAG,CAAC,MAAsE,EAAO,EAAE;IACvG,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,UAAU,GAAG,KAAK,EAAE,GAAG,MAAM,CAAA;IAEvD,IAAI,UAAU,GAAG,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,mBAAM,GAAG,CAAE,CAAA;IAE9C,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,UAAU,CAAA;IAExC,MAAM,CAAC,aAAa,EAAE,GAAG,cAAc,CAAC,GAAG,IAAI,CAAA;IAE/C,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,UAAU,CAAC,aAAa,CAAC,GAAG,KAAK,CAAA;QACjC,OAAO,UAAU,CAAA;IACnB,CAAC;IAED,MAAM,OAAO,GAAG,GAAG,CAAC,aAAa,CAAC,IAAI,EAAE,CAAA;IACxC,MAAM,cAAc,GAAG,IAAA,iBAAS,EAAC;QAC/B,GAAG,EAAE,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,mBAAM,OAAO,CAAE;QAC1C,IAAI,EAAE,cAAc;QACpB,KAAK;QACL,UAAU;KACX,CAAC,CAAA;IAEF,IAAI,UAAU,EAAE,CAAC;QACf,UAAU,CAAC,aAAa,CAAC,GAAG,cAAc,CAAA;IAC5C,CAAC;SAAM,CAAC;QACN,UAAU,mCACL,GAAG,KACN,CAAC,aAAa,CAAC,EAAE,cAAc,GAChC,CAAA;IACH,CAAC;IACD,OAAO,UAAU,CAAA;AACnB,CAAC,CAAA;AA/BY,QAAA,SAAS,aA+BrB"}
1
+ {"version":3,"file":"assocPath.js","sourceRoot":"","sources":["../../../src/utils/_objects/assocPath.ts"],"names":[],"mappings":";;;AAAA,MAAM,UAAU,GAAG,CAAC,GAAQ,EAAE,IAAc,EAAE,SAAiB,EAAE,KAAU,EAAE,UAAmB,EAAO,EAAE;IAEvG,MAAM,UAAU,GAAG,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,mBAAM,GAAG,CAAE,CAAA;IAChD,IAAI,SAAS,IAAI,IAAI,CAAC,MAAM;QAAE,OAAO,UAAU,CAAA;IAE/C,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,CAAA;IAChC,UAAU,CAAC,QAAQ,CAAC;QAClB,SAAS,KAAK,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,CAAA,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAG,QAAQ,CAAC,KAAI,EAAE,EAAE,IAAI,EAAE,SAAS,GAAG,CAAC,EAAE,KAAK,EAAE,UAAU,CAAC,CAAA;IACnH,OAAO,UAAU,CAAA;AACnB,CAAC,CAAA;AAEM,MAAM,SAAS,GAAG,CAAC,MAAsE,EAAO,EAAE;IACvG,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,UAAU,GAAG,KAAK,EAAE,GAAG,MAAM,CAAA;IACvD,OAAO,UAAU,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,UAAU,CAAC,CAAA;AACpD,CAAC,CAAA;AAHY,QAAA,SAAS,aAGrB"}
@@ -15,7 +15,7 @@ const dissocPath = (params) => {
15
15
  delete objUpdated[firstPathPart];
16
16
  return objUpdated;
17
17
  }
18
- const objPartUpdated = (0, exports.dissocPath)({ obj: sideEffect ? objPart : Object.assign({}, objPart), path: otherPathParts, sideEffect });
18
+ const objPartUpdated = (0, exports.dissocPath)({ obj: objPart, path: otherPathParts, sideEffect });
19
19
  if ((0, isEmpty_1.isEmpty)(objPartUpdated)) {
20
20
  delete objUpdated[firstPathPart];
21
21
  return objUpdated;
@@ -1 +1 @@
1
- {"version":3,"file":"dissocPath.js","sourceRoot":"","sources":["../../../src/utils/_objects/dissocPath.ts"],"names":[],"mappings":";;;AAAA,uCAAmC;AAE5B,MAAM,UAAU,GAAG,CAAmB,MAAwD,EAAK,EAAE;IAC1G,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,UAAU,GAAG,KAAK,EAAE,GAAG,MAAM,CAAA;IAChD,MAAM,UAAU,GAAG,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,mBAAM,GAAG,CAAE,CAAA;IAEhD,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,OAAO,UAAU,CAAA;IACnB,CAAC;IAED,MAAM,CAAC,mBAAmB,EAAE,GAAG,cAAc,CAAC,GAAG,IAAI,CAAA;IACrD,MAAM,aAAa,GAAG,mBAA8C,CAAA;IAEpE,MAAM,OAAO,GAAQ,UAAU,CAAC,aAAa,CAAC,CAAA;IAE9C,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,IAAI,IAAA,iBAAO,EAAC,OAAO,CAAC,EAAE,CAAC;QACpD,OAAO,UAAU,CAAC,aAAa,CAAC,CAAA;QAChC,OAAO,UAAU,CAAA;IACnB,CAAC;IAED,MAAM,cAAc,GAAG,IAAA,kBAAU,EAAC,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,mBAAM,OAAO,CAAE,EAAE,IAAI,EAAE,cAAc,EAAE,UAAU,EAAE,CAAC,CAAA;IAEnH,IAAI,IAAA,iBAAO,EAAC,cAAc,CAAC,EAAE,CAAC;QAC5B,OAAO,UAAU,CAAC,aAAa,CAAC,CAAA;QAChC,OAAO,UAAU,CAAA;IACnB,CAAC;IAED,UAAU,CAAC,aAAa,CAAC,GAAG,cAAc,CAAA;IAC1C,OAAO,UAAU,CAAA;AACnB,CAAC,CAAA;AA3BY,QAAA,UAAU,cA2BtB"}
1
+ {"version":3,"file":"dissocPath.js","sourceRoot":"","sources":["../../../src/utils/_objects/dissocPath.ts"],"names":[],"mappings":";;;AAAA,uCAAmC;AAE5B,MAAM,UAAU,GAAG,CAAmB,MAAwD,EAAK,EAAE;IAC1G,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,UAAU,GAAG,KAAK,EAAE,GAAG,MAAM,CAAA;IAChD,MAAM,UAAU,GAAG,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,mBAAM,GAAG,CAAE,CAAA;IAEhD,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,OAAO,UAAU,CAAA;IACnB,CAAC;IAED,MAAM,CAAC,mBAAmB,EAAE,GAAG,cAAc,CAAC,GAAG,IAAI,CAAA;IACrD,MAAM,aAAa,GAAG,mBAA8C,CAAA;IAEpE,MAAM,OAAO,GAAQ,UAAU,CAAC,aAAa,CAAC,CAAA;IAE9C,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,IAAI,IAAA,iBAAO,EAAC,OAAO,CAAC,EAAE,CAAC;QACpD,OAAO,UAAU,CAAC,aAAa,CAAC,CAAA;QAChC,OAAO,UAAU,CAAA;IACnB,CAAC;IAGD,MAAM,cAAc,GAAG,IAAA,kBAAU,EAAC,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,UAAU,EAAE,CAAC,CAAA;IAErF,IAAI,IAAA,iBAAO,EAAC,cAAc,CAAC,EAAE,CAAC;QAC5B,OAAO,UAAU,CAAC,aAAa,CAAC,CAAA;QAChC,OAAO,UAAU,CAAA;IACnB,CAAC;IAED,UAAU,CAAC,aAAa,CAAC,GAAG,cAAc,CAAA;IAC1C,OAAO,UAAU,CAAA;AACnB,CAAC,CAAA;AA5BY,QAAA,UAAU,cA4BtB"}
package/package.json CHANGED
@@ -4,7 +4,7 @@
4
4
  "name": "OpenForis",
5
5
  "email": "openforis.arena@gmail.com"
6
6
  },
7
- "version": "2.3.21",
7
+ "version": "2.3.22",
8
8
  "description": "Arena core module",
9
9
  "main": "dist/index.js",
10
10
  "types": "dist/index.d.ts",