@openforis/arena-core 2.3.22 → 2.3.24

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 (40) hide show
  1. package/dist/auth/authorizer.js +4 -3
  2. package/dist/auth/authorizer.js.map +1 -1
  3. package/dist/expression/node.d.ts +1 -1
  4. package/dist/expression/node.js.map +1 -1
  5. package/dist/index.d.ts +14 -12
  6. package/dist/index.js +14 -3
  7. package/dist/index.js.map +1 -1
  8. package/dist/job/JobBase.d.ts +2 -1
  9. package/dist/job/JobBase.js +2 -2
  10. package/dist/job/JobBase.js.map +1 -1
  11. package/dist/node/index.d.ts +1 -1
  12. package/dist/nodeDef/nodeDefs.d.ts +18 -4
  13. package/dist/nodeDef/nodeDefs.js +20 -0
  14. package/dist/nodeDef/nodeDefs.js.map +1 -1
  15. package/dist/nodeDefExpressionEvaluator/index.d.ts +2 -0
  16. package/dist/record/_records/recordNodesIndexUpdater.d.ts +6 -0
  17. package/dist/record/_records/recordNodesIndexUpdater.js +107 -64
  18. package/dist/record/_records/recordNodesIndexUpdater.js.map +1 -1
  19. package/dist/record/_records/recordUpdater.js +12 -2
  20. package/dist/record/_records/recordUpdater.js.map +1 -1
  21. package/dist/record/index.d.ts +2 -0
  22. package/dist/record/index.js.map +1 -1
  23. package/dist/record/recordFixer.js +23 -20
  24. package/dist/record/recordFixer.js.map +1 -1
  25. package/dist/record/recordNodesUpdater/index.d.ts +2 -0
  26. package/dist/record/recordNodesUpdater/index.js.map +1 -1
  27. package/dist/record/recordNodesUpdater/recordNodesDeleter.js +30 -14
  28. package/dist/record/recordNodesUpdater/recordNodesDeleter.js.map +1 -1
  29. package/dist/record/recordValidator/attributeKeyValidator.d.ts +7 -0
  30. package/dist/record/recordValidator/attributeKeyValidator.js +31 -7
  31. package/dist/record/recordValidator/attributeKeyValidator.js.map +1 -1
  32. package/dist/record/recordValidator/attributeValidator.js +3 -1
  33. package/dist/record/recordValidator/attributeValidator.js.map +1 -1
  34. package/dist/record/records.d.ts +1 -1
  35. package/dist/survey/surveys/index.d.ts +1 -1
  36. package/dist/survey/surveys/surveysUtils.d.ts +1 -1
  37. package/dist/taxonomy/taxonomies.d.ts +1 -1
  38. package/dist/validation/validations.js +27 -19
  39. package/dist/validation/validations.js.map +1 -1
  40. package/package.json +1 -1
@@ -26,89 +26,132 @@ const sortNodesByIdOrCreationDate = (nodeA, nodeB) => {
26
26
  return nodeA.dateCreated.localeCompare(nodeB.dateCreated);
27
27
  return 0;
28
28
  };
29
- const _addNodeToCodeDependents = (node, sideEffect) => (index) => {
30
- let indexUpdated = index;
31
- for (const ancestorCodeAttributeUuid of node_1.Nodes.getHierarchyCode(node)) {
32
- indexUpdated = utils_1.Objects.assocPath({
33
- obj: indexUpdated,
34
- path: [keys.nodeCodeDependents, ancestorCodeAttributeUuid, node.uuid],
35
- value: true,
36
- sideEffect,
37
- });
29
+ class NodesIndexDraft {
30
+ constructor(index, sideEffect) {
31
+ this.copiedObjects = new Set();
32
+ this.sideEffect = sideEffect;
33
+ this.index = sideEffect ? index : this.markCopied(Object.assign({}, index));
38
34
  }
39
- return indexUpdated;
40
- };
41
- const _addNodeToIndex = (node, sideEffect = false) => (index) => {
42
- const { uuid: nodeUuid, nodeDefUuid } = node;
43
- let indexUpdated = sideEffect ? index : Object.assign({}, index);
44
- const parentUuid = node.parentUuid;
45
- if (parentUuid) {
46
- indexUpdated = utils_1.Objects.assocPath({
47
- obj: indexUpdated,
48
- path: [keys.nodesByParentAndChildDef, parentUuid, nodeDefUuid, nodeUuid],
49
- value: true,
50
- sideEffect,
51
- });
35
+ markCopied(obj) {
36
+ this.copiedObjects.add(obj);
37
+ return obj;
52
38
  }
53
- else {
54
- indexUpdated.nodeRootUuid = nodeUuid;
39
+ getWritableChild(parent, key, createIfMissing) {
40
+ const child = parent[key];
41
+ if (child === undefined || child === null) {
42
+ if (!createIfMissing)
43
+ return undefined;
44
+ const childCreated = this.markCopied({});
45
+ parent[key] = childCreated;
46
+ return childCreated;
47
+ }
48
+ if (this.sideEffect || this.copiedObjects.has(child))
49
+ return child;
50
+ const childCopy = this.markCopied(Object.assign({}, child));
51
+ parent[key] = childCopy;
52
+ return childCopy;
55
53
  }
56
- indexUpdated = utils_1.Objects.assocPath({
57
- obj: indexUpdated,
58
- path: [keys.nodesByDef, nodeDefUuid, nodeUuid],
59
- value: true,
60
- sideEffect,
61
- });
62
- indexUpdated = _addNodeToCodeDependents(node, sideEffect)(indexUpdated);
63
- return indexUpdated;
64
- };
54
+ set(path, value) {
55
+ let current = this.index;
56
+ for (let i = 0; i < path.length - 1; i++) {
57
+ current = this.getWritableChild(current, path[i], true);
58
+ }
59
+ current[path.at(-1)] = value;
60
+ }
61
+ delete(path) {
62
+ const containers = [this.index];
63
+ let current = this.index;
64
+ for (let i = 0; i < path.length - 1; i++) {
65
+ if (current[path[i]] === undefined)
66
+ return;
67
+ current = this.getWritableChild(current, path[i], false);
68
+ containers.push(current);
69
+ }
70
+ delete current[path.at(-1)];
71
+ for (let i = path.length - 2; i >= 0; i--) {
72
+ if (!utils_1.Objects.isEmpty(containers[i + 1]))
73
+ break;
74
+ delete containers[i][path[i]];
75
+ }
76
+ }
77
+ addNode(node) {
78
+ var _a, _b;
79
+ const { uuid: nodeUuid, nodeDefUuid, parentUuid } = node;
80
+ if (parentUuid) {
81
+ this.set([keys.nodesByParentAndChildDef, parentUuid, nodeDefUuid, nodeUuid], true);
82
+ }
83
+ else {
84
+ this.index.nodeRootUuid = nodeUuid;
85
+ }
86
+ this.set([keys.nodesByDef, nodeDefUuid, nodeUuid], true);
87
+ for (const ancestorCodeAttributeUuid of (_b = (_a = node.meta) === null || _a === void 0 ? void 0 : _a.hCode) !== null && _b !== void 0 ? _b : []) {
88
+ this.set([keys.nodeCodeDependents, ancestorCodeAttributeUuid, nodeUuid], true);
89
+ }
90
+ }
91
+ removeNode(node) {
92
+ const { uuid: nodeUuid, parentUuid, nodeDefUuid } = node;
93
+ if (parentUuid) {
94
+ this.delete([keys.nodesByParentAndChildDef, parentUuid, nodeDefUuid, nodeUuid]);
95
+ }
96
+ else {
97
+ delete this.index.nodeRootUuid;
98
+ }
99
+ this.delete([keys.nodesByDef, nodeDefUuid, nodeUuid]);
100
+ for (const ancestorCodeAttributeUuid of node_1.Nodes.getHierarchyCode(node)) {
101
+ this.delete([keys.nodeCodeDependents, ancestorCodeAttributeUuid, nodeUuid]);
102
+ }
103
+ this.delete([keys.nodeCodeDependents, nodeUuid]);
104
+ }
105
+ }
65
106
  const addNodes = (nodes, sideEffect = false, sortNodes = false) => (index) => {
66
- let indexUpdated = sideEffect ? index : Object.assign({}, index);
107
+ const draft = new NodesIndexDraft(index, sideEffect);
67
108
  const nodesArray = Object.values(nodes);
68
109
  if (sortNodes) {
69
110
  nodesArray.sort(sortNodesByIdOrCreationDate);
70
111
  }
71
112
  for (const node of nodesArray) {
72
- indexUpdated = _addNodeToIndex(node, sideEffect)(indexUpdated);
113
+ draft.addNode(node);
73
114
  }
74
- return indexUpdated;
115
+ return draft.index;
75
116
  };
76
117
  const addNode = (node) => (index) => addNodes({ [node.uuid]: node })(index);
77
118
  const initializeIndex = (record) => { var _a; return addNodes((_a = record.nodes) !== null && _a !== void 0 ? _a : {}, true, true)({}); };
78
- const _removeNodeFromCodeDependentsIndex = (node, sideEffect = false) => (index) => {
79
- let indexUpdated = node_1.Nodes.getHierarchyCode(node).reduce((indexAcc, ancestorCodeAttributeUuid) => utils_1.Objects.dissocPath({
80
- obj: indexAcc,
81
- path: [keys.nodeCodeDependents, ancestorCodeAttributeUuid, node.uuid],
82
- sideEffect,
83
- }), index);
84
- indexUpdated = utils_1.Objects.dissocPath({ obj: indexUpdated, path: [keys.nodeCodeDependents, node.uuid], sideEffect });
85
- return indexUpdated;
86
- };
87
- const removeNode = (node, sideEffect = false) => (index) => {
88
- const { uuid: nodeUuid, parentUuid, nodeDefUuid } = node;
89
- let indexUpdated = sideEffect ? index : Object.assign({}, index);
90
- if (parentUuid) {
91
- indexUpdated = utils_1.Objects.dissocPath({
92
- obj: indexUpdated,
93
- path: [keys.nodesByParentAndChildDef, parentUuid, nodeDefUuid, nodeUuid],
94
- sideEffect,
95
- });
96
- const nodesByParentAndChildDefPath = [keys.nodesByParentAndChildDef, parentUuid, nodeDefUuid];
97
- indexUpdated = utils_1.Objects.dissocPathIfEmpty({ obj: indexUpdated, path: nodesByParentAndChildDefPath, sideEffect });
98
- }
99
- else {
100
- indexUpdated = utils_1.Objects.dissocPath({ obj: indexUpdated, path: [keys.nodeRootUuid], sideEffect });
119
+ const removeNodes = (nodes, sideEffect = false) => (index) => {
120
+ const draft = new NodesIndexDraft(index, sideEffect);
121
+ for (const node of nodes) {
122
+ draft.removeNode(node);
101
123
  }
102
- indexUpdated = utils_1.Objects.dissocPath({ obj: indexUpdated, path: [keys.nodesByDef, nodeDefUuid, nodeUuid], sideEffect });
103
- const nodesByDefPath = [keys.nodesByDef, nodeDefUuid];
104
- indexUpdated = utils_1.Objects.dissocPathIfEmpty({ obj: indexUpdated, path: nodesByDefPath, sideEffect });
105
- indexUpdated = _removeNodeFromCodeDependentsIndex(node, sideEffect)(indexUpdated);
106
- return indexUpdated;
124
+ return draft.index;
125
+ };
126
+ const removeNode = (node, sideEffect = false) => (index) => removeNodes([node], sideEffect)(index);
127
+ const _isSameHierarchyCode = (nodeA, nodeB) => {
128
+ var _a, _b, _c, _d;
129
+ const hCodeA = (_b = (_a = nodeA.meta) === null || _a === void 0 ? void 0 : _a.hCode) !== null && _b !== void 0 ? _b : [];
130
+ const hCodeB = (_d = (_c = nodeB.meta) === null || _c === void 0 ? void 0 : _c.hCode) !== null && _d !== void 0 ? _d : [];
131
+ return hCodeA.length === hCodeB.length && hCodeA.every((uuid, index) => uuid === hCodeB[index]);
132
+ };
133
+ const isNodeIndexUnchanged = (params) => {
134
+ var _a, _b, _c, _d, _e;
135
+ const { index, node, nodePrev } = params;
136
+ if (!nodePrev)
137
+ return false;
138
+ const { uuid, parentUuid, nodeDefUuid } = node;
139
+ if (parentUuid !== nodePrev.parentUuid || nodeDefUuid !== nodePrev.nodeDefUuid)
140
+ return false;
141
+ if (!_isSameHierarchyCode(node, nodePrev))
142
+ return false;
143
+ if (!((_b = (_a = index.nodesByDef) === null || _a === void 0 ? void 0 : _a[nodeDefUuid]) === null || _b === void 0 ? void 0 : _b[uuid]))
144
+ return false;
145
+ return parentUuid
146
+ ? !!((_e = (_d = (_c = index.nodesByParentAndChildDef) === null || _c === void 0 ? void 0 : _c[parentUuid]) === null || _d === void 0 ? void 0 : _d[nodeDefUuid]) === null || _e === void 0 ? void 0 : _e[uuid])
147
+ : index.nodeRootUuid === uuid;
107
148
  };
108
149
  exports.RecordNodesIndexUpdater = {
109
150
  addNode,
110
151
  addNodes,
111
152
  initializeIndex,
153
+ isNodeIndexUnchanged,
112
154
  removeNode,
155
+ removeNodes,
113
156
  };
114
157
  //# sourceMappingURL=recordNodesIndexUpdater.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"recordNodesIndexUpdater.js","sourceRoot":"","sources":["../../../src/record/_records/recordNodesIndexUpdater.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"recordNodesIndexUpdater.js","sourceRoot":"","sources":["../../../src/record/_records/recordNodesIndexUpdater.ts"],"names":[],"mappings":";;;AAAA,qCAAwC;AACxC,uCAAqC;AAGrC,MAAM,IAAI,GAAG;IACX,YAAY,EAAE,cAAc;IAC5B,wBAAwB,EAAE,0BAA0B;IACpD,UAAU,EAAE,YAAY;IACxB,kBAAkB,EAAE,oBAAoB;CACzC,CAAA;AAED,MAAM,2BAA2B,GAAG,CAAC,KAAW,EAAE,KAAW,EAAU,EAAE;;IACvE,IAAI,CAAC,KAAK,CAAC,UAAU;QAAE,OAAO,CAAC,CAAC,CAAA;IAChC,IAAI,CAAC,KAAK,CAAC,UAAU;QAAE,OAAO,CAAC,CAAA;IAE/B,MAAM,eAAe,GAAG,MAAA,MAAA,MAAA,KAAK,CAAC,IAAI,0CAAE,CAAC,0CAAE,MAAM,mCAAI,CAAC,CAAA;IAClD,MAAM,eAAe,GAAG,MAAA,MAAA,MAAA,KAAK,CAAC,IAAI,0CAAE,CAAC,0CAAE,MAAM,mCAAI,CAAC,CAAA;IAClD,MAAM,SAAS,GAAG,eAAe,GAAG,eAAe,CAAA;IACnD,IAAI,SAAS,KAAK,CAAC;QAAE,OAAO,SAAS,CAAA;IACrC,IAAI,KAAK,CAAC,EAAE,IAAI,KAAK,CAAC,EAAE;QAAE,OAAO,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,CAAA;IACpD,IAAI,KAAK,CAAC,WAAW,IAAI,KAAK,CAAC,WAAW;QAAE,OAAO,KAAK,CAAC,WAAW,CAAC,aAAa,CAAC,KAAK,CAAC,WAAW,CAAC,CAAA;IACrG,OAAO,CAAC,CAAA;AACV,CAAC,CAAA;AAOD,MAAM,eAAe;IAKnB,YAAY,KAAuB,EAAE,UAAmB;QAFvC,kBAAa,GAAG,IAAI,GAAG,EAAU,CAAA;QAGhD,IAAI,CAAC,UAAU,GAAG,UAAU,CAAA;QAC5B,IAAI,CAAC,KAAK,GAAG,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,mBAAM,KAAK,EAAG,CAAA;IACjE,CAAC;IAEO,UAAU,CAAmB,GAAM;QACzC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;QAC3B,OAAO,GAAG,CAAA;IACZ,CAAC;IAEO,gBAAgB,CAAC,MAAW,EAAE,GAAW,EAAE,eAAwB;QACzE,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAA;QACzB,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;YAC1C,IAAI,CAAC,eAAe;gBAAE,OAAO,SAAS,CAAA;YACtC,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAA;YACxC,MAAM,CAAC,GAAG,CAAC,GAAG,YAAY,CAAA;YAC1B,OAAO,YAAY,CAAA;QACrB,CAAC;QACD,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC;YAAE,OAAO,KAAK,CAAA;QAClE,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,mBAAM,KAAK,EAAG,CAAA;QAC/C,MAAM,CAAC,GAAG,CAAC,GAAG,SAAS,CAAA;QACvB,OAAO,SAAS,CAAA;IAClB,CAAC;IAED,GAAG,CAAC,IAAc,EAAE,KAAU;QAC5B,IAAI,OAAO,GAAQ,IAAI,CAAC,KAAK,CAAA;QAC7B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YACzC,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAA;QACzD,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAE,CAAC,GAAG,KAAK,CAAA;IAC/B,CAAC;IAKD,MAAM,CAAC,IAAc;QACnB,MAAM,UAAU,GAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QACtC,IAAI,OAAO,GAAQ,IAAI,CAAC,KAAK,CAAA;QAC7B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YACzC,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,SAAS;gBAAE,OAAM;YAC1C,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAA;YACxD,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QAC1B,CAAC;QACD,OAAO,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAE,CAAC,CAAA;QAC5B,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAC1C,IAAI,CAAC,eAAO,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;gBAAE,MAAK;YAC9C,OAAO,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA;QAC/B,CAAC;IACH,CAAC;IAED,OAAO,CAAC,IAAU;;QAChB,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,UAAU,EAAE,GAAG,IAAI,CAAA;QACxD,IAAI,UAAU,EAAE,CAAC;YAEf,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,wBAAwB,EAAE,UAAU,EAAE,WAAW,EAAE,QAAQ,CAAC,EAAE,IAAI,CAAC,CAAA;QACpF,CAAC;aAAM,CAAC;YAEN,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,QAAQ,CAAA;QACpC,CAAC;QAED,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE,WAAW,EAAE,QAAQ,CAAC,EAAE,IAAI,CAAC,CAAA;QAExD,KAAK,MAAM,yBAAyB,IAAI,MAAA,MAAA,IAAI,CAAC,IAAI,0CAAE,KAAK,mCAAI,EAAE,EAAE,CAAC;YAC/D,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,kBAAkB,EAAE,yBAAyB,EAAE,QAAQ,CAAC,EAAE,IAAI,CAAC,CAAA;QAChF,CAAC;IACH,CAAC;IAED,UAAU,CAAC,IAAU;QACnB,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,WAAW,EAAE,GAAG,IAAI,CAAA;QACxD,IAAI,UAAU,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,wBAAwB,EAAE,UAAU,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAA;QACjF,CAAC;aAAM,CAAC;YACN,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAA;QAChC,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAA;QAErD,KAAK,MAAM,yBAAyB,IAAI,YAAK,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC;YACrE,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,kBAAkB,EAAE,yBAAyB,EAAE,QAAQ,CAAC,CAAC,CAAA;QAC7E,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,kBAAkB,EAAE,QAAQ,CAAC,CAAC,CAAA;IAClD,CAAC;CACF;AAED,MAAM,QAAQ,GACZ,CAAC,KAA8B,EAAE,UAAU,GAAG,KAAK,EAAE,SAAS,GAAG,KAAK,EAAE,EAAE,CAC1E,CAAC,KAAuB,EAAoB,EAAE;IAC5C,MAAM,KAAK,GAAG,IAAI,eAAe,CAAC,KAAK,EAAE,UAAU,CAAC,CAAA;IACpD,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;IACvC,IAAI,SAAS,EAAE,CAAC;QACd,UAAU,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAA;IAC9C,CAAC;IACD,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;QAC9B,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;IACrB,CAAC;IACD,OAAO,KAAK,CAAC,KAAK,CAAA;AACpB,CAAC,CAAA;AAEH,MAAM,OAAO,GACX,CAAC,IAAU,EAAE,EAAE,CACf,CAAC,KAAuB,EAAoB,EAAE,CAC5C,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAA;AAE1C,MAAM,eAAe,GAAG,CAAC,MAAc,EAAoB,EAAE,WAAC,OAAA,QAAQ,CAAC,MAAA,MAAM,CAAC,KAAK,mCAAI,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,CAAA,EAAA,CAAA;AAE1G,MAAM,WAAW,GACf,CAAC,KAAa,EAAE,UAAU,GAAG,KAAK,EAAE,EAAE,CACtC,CAAC,KAAuB,EAAoB,EAAE;IAC5C,MAAM,KAAK,GAAG,IAAI,eAAe,CAAC,KAAK,EAAE,UAAU,CAAC,CAAA;IACpD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAA;IACxB,CAAC;IACD,OAAO,KAAK,CAAC,KAAK,CAAA;AACpB,CAAC,CAAA;AAEH,MAAM,UAAU,GACd,CAAC,IAAU,EAAE,UAAU,GAAG,KAAK,EAAE,EAAE,CACnC,CAAC,KAAuB,EAAoB,EAAE,CAC5C,WAAW,CAAC,CAAC,IAAI,CAAC,EAAE,UAAU,CAAC,CAAC,KAAK,CAAC,CAAA;AAE1C,MAAM,oBAAoB,GAAG,CAAC,KAAW,EAAE,KAAW,EAAW,EAAE;;IACjE,MAAM,MAAM,GAAG,MAAA,MAAA,KAAK,CAAC,IAAI,0CAAE,KAAK,mCAAI,EAAE,CAAA;IACtC,MAAM,MAAM,GAAG,MAAA,MAAA,KAAK,CAAC,IAAI,0CAAE,KAAK,mCAAI,EAAE,CAAA;IACtC,OAAO,MAAM,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,KAAK,MAAM,CAAC,KAAK,CAAC,CAAC,CAAA;AACjG,CAAC,CAAA;AAKD,MAAM,oBAAoB,GAAG,CAAC,MAAgE,EAAW,EAAE;;IACzG,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,MAAM,CAAA;IACxC,IAAI,CAAC,QAAQ;QAAE,OAAO,KAAK,CAAA;IAC3B,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,GAAG,IAAI,CAAA;IAC9C,IAAI,UAAU,KAAK,QAAQ,CAAC,UAAU,IAAI,WAAW,KAAK,QAAQ,CAAC,WAAW;QAAE,OAAO,KAAK,CAAA;IAC5F,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,QAAQ,CAAC;QAAE,OAAO,KAAK,CAAA;IACvD,IAAI,CAAC,CAAA,MAAA,MAAA,KAAK,CAAC,UAAU,0CAAG,WAAW,CAAC,0CAAG,IAAI,CAAC,CAAA;QAAE,OAAO,KAAK,CAAA;IAC1D,OAAO,UAAU;QACf,CAAC,CAAC,CAAC,CAAC,CAAA,MAAA,MAAA,MAAA,KAAK,CAAC,wBAAwB,0CAAG,UAAU,CAAC,0CAAG,WAAW,CAAC,0CAAG,IAAI,CAAC,CAAA;QACvE,CAAC,CAAC,KAAK,CAAC,YAAY,KAAK,IAAI,CAAA;AACjC,CAAC,CAAA;AAEY,QAAA,uBAAuB,GAAG;IACrC,OAAO;IACP,QAAQ;IACR,eAAe;IACf,oBAAoB;IACpB,UAAU;IACV,WAAW;CACZ,CAAA"}
@@ -42,14 +42,24 @@ const addNodes = (nodes, options = recordUpdateOptions_1.RecordUpdateOptionsDefa
42
42
  const { sideEffect, updateNodesIndex, sortNodes } = Object.assign(Object.assign({}, recordUpdateOptions_1.RecordUpdateOptionsDefaults), options);
43
43
  const recordUpdated = sideEffect ? record : Object.assign({}, record);
44
44
  const recordNodes = RecordGetters.getNodes(recordUpdated);
45
+ const index = (_a = recordUpdated._nodesIndex) !== null && _a !== void 0 ? _a : {};
46
+ const nodesToIndex = {};
47
+ if (updateNodesIndex) {
48
+ for (const [nodeUuid, node] of Object.entries(nodes)) {
49
+ const nodePrev = recordNodes[nodeUuid];
50
+ if (!recordNodesIndexUpdater_1.RecordNodesIndexUpdater.isNodeIndexUnchanged({ index, node, nodePrev })) {
51
+ nodesToIndex[nodeUuid] = node;
52
+ }
53
+ }
54
+ }
45
55
  if (sideEffect) {
46
56
  recordUpdated.nodes = Object.assign(recordNodes, nodes);
47
57
  }
48
58
  else {
49
59
  recordUpdated.nodes = Object.assign(Object.assign({}, recordNodes), nodes);
50
60
  }
51
- if (updateNodesIndex) {
52
- recordUpdated._nodesIndex = recordNodesIndexUpdater_1.RecordNodesIndexUpdater.addNodes(nodes, sideEffect, sortNodes)((_a = recordUpdated._nodesIndex) !== null && _a !== void 0 ? _a : {});
61
+ if (updateNodesIndex && Object.keys(nodesToIndex).length > 0) {
62
+ recordUpdated._nodesIndex = recordNodesIndexUpdater_1.RecordNodesIndexUpdater.addNodes(nodesToIndex, sideEffect, sortNodes)(index);
53
63
  }
54
64
  return recordUpdated;
55
65
  };
@@ -1 +1 @@
1
- {"version":3,"file":"recordUpdater.js","sourceRoot":"","sources":["../../../src/record/_records/recordUpdater.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,+DAAgD;AAChD,uEAAmE;AACnE,+DAAwF;AAEjF,MAAM,QAAQ,GACnB,CAAC,KAA8B,EAAE,UAA+B,iDAA2B,EAAE,EAAE,CAC/F,CAAC,MAAc,EAAU,EAAE;;IACzB,MAAM,EAAE,UAAU,EAAE,gBAAgB,EAAE,SAAS,EAAE,mCAAQ,iDAA2B,GAAK,OAAO,CAAE,CAAA;IAElG,MAAM,aAAa,GAAG,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,mBAAM,MAAM,CAAE,CAAA;IACzD,MAAM,WAAW,GAAG,aAAa,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAA;IAEzD,IAAI,UAAU,EAAE,CAAC;QACf,aAAa,CAAC,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,KAAK,CAAC,CAAA;IACzD,CAAC;SAAM,CAAC;QACN,aAAa,CAAC,KAAK,mCAAQ,WAAW,GAAK,KAAK,CAAE,CAAA;IACpD,CAAC;IACD,IAAI,gBAAgB,EAAE,CAAC;QACrB,aAAa,CAAC,WAAW,GAAG,iDAAuB,CAAC,QAAQ,CAC1D,KAAK,EACL,UAAU,EACV,SAAS,CACV,CAAC,MAAA,aAAa,CAAC,WAAW,mCAAI,EAAE,CAAC,CAAA;IACpC,CAAC;IACD,OAAO,aAAa,CAAA;AACtB,CAAC,CAAA;AArBU,QAAA,QAAQ,YAqBlB;AAEI,MAAM,OAAO,GAClB,CAAC,IAAU,EAAE,UAA+B,iDAA2B,EAAE,EAAE,CAC3E,CAAC,MAAc,EAAE,EAAE,CACjB,IAAA,gBAAQ,EAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,OAAO,CAAC,CAAC,MAAM,CAAC,CAAA;AAHvC,QAAA,OAAO,WAGgC"}
1
+ {"version":3,"file":"recordUpdater.js","sourceRoot":"","sources":["../../../src/record/_records/recordUpdater.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,+DAAgD;AAChD,uEAAmE;AACnE,+DAAwF;AAEjF,MAAM,QAAQ,GACnB,CAAC,KAA8B,EAAE,UAA+B,iDAA2B,EAAE,EAAE,CAC/F,CAAC,MAAc,EAAU,EAAE;;IACzB,MAAM,EAAE,UAAU,EAAE,gBAAgB,EAAE,SAAS,EAAE,mCAAQ,iDAA2B,GAAK,OAAO,CAAE,CAAA;IAElG,MAAM,aAAa,GAAG,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,mBAAM,MAAM,CAAE,CAAA;IACzD,MAAM,WAAW,GAAG,aAAa,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAA;IACzD,MAAM,KAAK,GAAG,MAAA,aAAa,CAAC,WAAW,mCAAI,EAAE,CAAA;IAI7C,MAAM,YAAY,GAA4B,EAAE,CAAA;IAChD,IAAI,gBAAgB,EAAE,CAAC;QACrB,KAAK,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACrD,MAAM,QAAQ,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAA;YACtC,IAAI,CAAC,iDAAuB,CAAC,oBAAoB,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC;gBAC7E,YAAY,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAA;YAC/B,CAAC;QACH,CAAC;IACH,CAAC;IAED,IAAI,UAAU,EAAE,CAAC;QACf,aAAa,CAAC,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,KAAK,CAAC,CAAA;IACzD,CAAC;SAAM,CAAC;QACN,aAAa,CAAC,KAAK,mCAAQ,WAAW,GAAK,KAAK,CAAE,CAAA;IACpD,CAAC;IACD,IAAI,gBAAgB,IAAI,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC7D,aAAa,CAAC,WAAW,GAAG,iDAAuB,CAAC,QAAQ,CAAC,YAAY,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC,KAAK,CAAC,CAAA;IAC1G,CAAC;IACD,OAAO,aAAa,CAAA;AACtB,CAAC,CAAA;AA9BU,QAAA,QAAQ,YA8BlB;AAEI,MAAM,OAAO,GAClB,CAAC,IAAU,EAAE,UAA+B,iDAA2B,EAAE,EAAE,CAC3E,CAAC,MAAc,EAAE,EAAE,CACjB,IAAA,gBAAQ,EAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,OAAO,CAAC,CAAC,MAAM,CAAC,CAAA;AAHvC,QAAA,OAAO,WAGgC"}
@@ -6,8 +6,10 @@ export { Records } from './records';
6
6
  export type { RecordUpdateOptions } from './records';
7
7
  export { RecordCloner } from './recordCloner';
8
8
  export { RecordExpressionEvaluator } from './recordExpressionEvaluator';
9
+ export type { RecordExpressionContext } from './recordExpressionEvaluator';
9
10
  export { RecordFixer } from './recordFixer';
10
11
  export { RecordNodesUpdater, RecordUpdateResult } from './recordNodesUpdater';
12
+ export type { NodeCreateParams, NodesUpdateParams, RecordExpressionEvaluationContext } from './recordNodesUpdater';
11
13
  export { RecordUpdater } from './recordUpdater';
12
14
  export { RecordValidator } from './recordValidator';
13
15
  export type { AttributeValidatorParams, AttributesValidatorParams, RecordValidatorParams, SortedAttributesValidatorParams, } from './recordValidator';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/record/index.ts"],"names":[],"mappings":";;;AAAA,+CAA6C;AAApC,4GAAA,YAAY,OAAA;AAIrB,mCAA8C;AAArC,6GAAA,mBAAmB,OAAA;AAE5B,qCAAmC;AAA1B,kGAAA,OAAO,OAAA;AAGhB,+CAA6C;AAApC,4GAAA,YAAY,OAAA;AACrB,yEAAuE;AAA9D,sIAAA,yBAAyB,OAAA;AAClC,6CAA2C;AAAlC,0GAAA,WAAW,OAAA;AACpB,2DAA6E;AAApE,wHAAA,kBAAkB,OAAA;AAAE,wHAAA,kBAAkB,OAAA;AAC/C,iDAA+C;AAAtC,8GAAA,aAAa,OAAA;AACtB,qDAAmD;AAA1C,kHAAA,eAAe,OAAA;AAOxB,yDAAuD;AAA9C,sHAAA,iBAAiB,OAAA;AAE1B,qCAAyC;AAAhC,wGAAA,aAAa,OAAA;AAGtB,6DAA2D;AAAlD,0HAAA,mBAAmB,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/record/index.ts"],"names":[],"mappings":";;;AAAA,+CAA6C;AAApC,4GAAA,YAAY,OAAA;AAIrB,mCAA8C;AAArC,6GAAA,mBAAmB,OAAA;AAE5B,qCAAmC;AAA1B,kGAAA,OAAO,OAAA;AAGhB,+CAA6C;AAApC,4GAAA,YAAY,OAAA;AACrB,yEAAuE;AAA9D,sIAAA,yBAAyB,OAAA;AAElC,6CAA2C;AAAlC,0GAAA,WAAW,OAAA;AACpB,2DAA6E;AAApE,wHAAA,kBAAkB,OAAA;AAAE,wHAAA,kBAAkB,OAAA;AAE/C,iDAA+C;AAAtC,8GAAA,aAAa,OAAA;AACtB,qDAAmD;AAA1C,kHAAA,eAAe,OAAA;AAOxB,yDAAuD;AAA9C,sHAAA,iBAAiB,OAAA;AAE1B,qCAAyC;AAAhC,wGAAA,aAAa,OAAA;AAGtB,6DAA2D;AAAlD,0HAAA,mBAAmB,OAAA"}
@@ -93,29 +93,32 @@ const deleteNodesByDefUuid = (params) => {
93
93
  const fixRecord = (params) => {
94
94
  const { survey, record, sideEffect = false } = params;
95
95
  const result = new recordNodesUpdater_1.RecordUpdateResult({ record });
96
- for (const node of records_1.Records.getNodesArray(record)) {
97
- if (result.nodesDeleted[node.uuid])
98
- continue;
99
- const { nodeDefUuid } = node;
100
- const nodeDef = survey_1.Surveys.findNodeDefByUuid({ survey, uuid: nodeDefUuid });
101
- if (nodeDef) {
102
- let nodeUpdated = node_1.Nodes.removeStatusFlags({ node, sideEffect });
103
- if (nodeDef.type === nodeDef_1.NodeDefType.code) {
104
- nodeUpdated = fixCodeAttribute({
105
- survey,
106
- nodeDef: nodeDef,
107
- record: result.record,
108
- node: nodeUpdated,
109
- sideEffect,
110
- });
111
- }
112
- result.addNode(nodeUpdated, { sideEffect });
96
+ const missingNodeDefUuids = new Set();
97
+ for (const { nodeDefUuid } of records_1.Records.getNodesArray(record)) {
98
+ if (!survey_1.Surveys.findNodeDefByUuid({ survey, uuid: nodeDefUuid })) {
99
+ missingNodeDefUuids.add(nodeDefUuid);
113
100
  }
114
- else {
115
- const nodesDeletedUpdatedResult = deleteNodesByDefUuid({ record: result.record, nodeDefUuid, sideEffect });
116
- result.merge(nodesDeletedUpdatedResult);
101
+ }
102
+ for (const nodeDefUuid of missingNodeDefUuids) {
103
+ result.merge(deleteNodesByDefUuid({ record: result.record, nodeDefUuid, sideEffect }));
104
+ }
105
+ const nodesUpdated = {};
106
+ for (const node of records_1.Records.getNodesArray(result.record)) {
107
+ const nodeDef = survey_1.Surveys.getNodeDefByUuid({ survey, uuid: node.nodeDefUuid });
108
+ let nodeUpdated = node_1.Nodes.removeStatusFlags({ node, sideEffect });
109
+ if (nodeDef.type === nodeDef_1.NodeDefType.code) {
110
+ nodeUpdated = fixCodeAttribute({
111
+ survey,
112
+ nodeDef: nodeDef,
113
+ record: result.record,
114
+ node: nodeUpdated,
115
+ sideEffect,
116
+ });
117
117
  }
118
+ nodesUpdated[nodeUpdated.uuid] = nodeUpdated;
118
119
  }
120
+ const recordWithNodesUpdated = records_1.Records.addNodes(nodesUpdated, { sideEffect })(result.record);
121
+ result.merge(new recordNodesUpdater_1.RecordUpdateResult({ record: recordWithNodesUpdated, nodes: nodesUpdated }));
119
122
  const missingNodesUpdateResult = insertMissingSingleNodes({ survey, record: result.record, sideEffect });
120
123
  result.merge(missingNodesUpdateResult);
121
124
  return result;
@@ -1 +1 @@
1
- {"version":3,"file":"recordFixer.js","sourceRoot":"","sources":["../../src/record/recordFixer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"recordFixer.js","sourceRoot":"","sources":["../../src/record/recordFixer.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,6 @@
1
1
  export { RecordUpdateResult } from './recordUpdateResult';
2
+ export type { RecordExpressionEvaluationContext } from './recordExpressionEvaluationContext';
3
+ export type { NodeCreateParams, NodesUpdateParams } from './recordNodesCreator';
2
4
  export declare const RecordNodesUpdater: {
3
5
  createDescendants: (params: import("./recordNodesCreator").NodeCreateParams) => Promise<import("./recordUpdateResult").RecordUpdateResult>;
4
6
  createNodeAndDescendants: (params: import("./recordNodesCreator").NodeCreateParams) => Promise<import("./recordUpdateResult").RecordUpdateResult>;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/record/recordNodesUpdater/index.ts"],"names":[],"mappings":";;;AAAA,6DAAkF;AAClF,6DAA4D;AAC5D,6DAA8D;AAE9D,2DAAyD;AAAhD,wHAAA,kBAAkB,OAAA;AAEd,QAAA,kBAAkB,GAAG;IAChC,iBAAiB,EAAjB,sCAAiB;IACjB,wBAAwB,EAAxB,6CAAwB;IACxB,qBAAqB,EAArB,0CAAqB;IACrB,UAAU,EAAV,+BAAU;IACV,WAAW,EAAX,gCAAW;CACZ,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/record/recordNodesUpdater/index.ts"],"names":[],"mappings":";;;AAAA,6DAAkF;AAClF,6DAA4D;AAC5D,6DAA8D;AAE9D,2DAAyD;AAAhD,wHAAA,kBAAkB,OAAA;AAId,QAAA,kBAAkB,GAAG;IAChC,iBAAiB,EAAjB,sCAAiB;IACjB,wBAAwB,EAAxB,6CAAwB;IACxB,qBAAqB,EAArB,0CAAqB;IACrB,UAAU,EAAV,+BAAU;IACV,WAAW,EAAX,gCAAW;CACZ,CAAA"}
@@ -40,6 +40,30 @@ const recordNodesIndexUpdater_1 = require("../_records/recordNodesIndexUpdater")
40
40
  const recordUpdateOptions_1 = require("../_records/recordUpdateOptions");
41
41
  const recordValidations_1 = require("../recordValidations");
42
42
  const recordUpdateResult_1 = require("./recordUpdateResult");
43
+ const _getChildrenCountValidationParentUuid = (fieldKey) => {
44
+ if (!recordValidations_1.RecordValidations.isValidationChildrenCountKey(fieldKey))
45
+ return undefined;
46
+ const keyWithoutPrefix = fieldKey.substring(recordValidations_1.RecordValidations.prefixValidationFieldChildrenCount.length);
47
+ const separatorIndex = keyWithoutPrefix.indexOf('_');
48
+ return separatorIndex >= 0 ? keyWithoutPrefix.substring(0, separatorIndex) : keyWithoutPrefix;
49
+ };
50
+ const _dissocValidationFieldsOfDeletedNodes = (params) => {
51
+ var _a;
52
+ const { validation, nodesDeleted, sideEffect } = params;
53
+ const fields = validation_1.Validations.getFieldValidations(validation);
54
+ const fieldsUpdated = sideEffect ? fields : Object.assign({}, fields);
55
+ for (const fieldKey of Object.keys(fieldsUpdated)) {
56
+ const nodeUuid = (_a = _getChildrenCountValidationParentUuid(fieldKey)) !== null && _a !== void 0 ? _a : fieldKey;
57
+ if (nodesDeleted[nodeUuid]) {
58
+ delete fieldsUpdated[fieldKey];
59
+ }
60
+ }
61
+ if (sideEffect) {
62
+ validation.fields = fieldsUpdated;
63
+ return validation;
64
+ }
65
+ return Object.assign(Object.assign({}, validation), { fields: fieldsUpdated });
66
+ };
43
67
  const deleteNodes = (nodeUuids, options = recordUpdateOptions_1.RecordUpdateOptionsDefaults) => (record) => {
44
68
  var _a;
45
69
  const { sideEffect, updateNodesIndex } = Object.assign(Object.assign({}, recordUpdateOptions_1.RecordUpdateOptionsDefaults), options);
@@ -47,11 +71,6 @@ const deleteNodes = (nodeUuids, options = recordUpdateOptions_1.RecordUpdateOpti
47
71
  const recordNodes = RecordGetters.getNodes(recordUpdated);
48
72
  const nodesDeleted = {};
49
73
  const recordNodesUpdated = sideEffect ? recordNodes : Object.assign({}, recordNodes);
50
- let recordNodesIndex = (_a = record._nodesIndex) !== null && _a !== void 0 ? _a : {};
51
- const recordValidation = validation_1.Validations.getValidation(record);
52
- let recordValidationUpdated = sideEffect
53
- ? recordValidation
54
- : Object.assign(Object.assign({}, recordValidation), { fields: Object.assign({}, validation_1.Validations.getFieldValidations(recordValidation)) });
55
74
  const deleteDescendantNode = (visitedNode) => {
56
75
  const visitedNodeUuid = visitedNode.uuid;
57
76
  if (nodesDeleted[visitedNodeUuid])
@@ -60,12 +79,6 @@ const deleteNodes = (nodeUuids, options = recordUpdateOptions_1.RecordUpdateOpti
60
79
  const visitedNodeUpdated = sideEffect ? visitedNode : Object.assign({}, visitedNode);
61
80
  visitedNodeUpdated.deleted = true;
62
81
  nodesDeleted[visitedNodeUuid] = visitedNodeUpdated;
63
- const doCleanup = false;
64
- recordValidationUpdated = validation_1.Validations.dissocFieldValidation(visitedNodeUuid, sideEffect, doCleanup)(recordValidationUpdated);
65
- recordValidationUpdated = validation_1.Validations.dissocFieldValidationsStartingWith(`${recordValidations_1.RecordValidations.prefixValidationFieldChildrenCount}${visitedNodeUuid}`, sideEffect, doCleanup)(recordValidationUpdated);
66
- if (updateNodesIndex) {
67
- recordNodesIndex = recordNodesIndexUpdater_1.RecordNodesIndexUpdater.removeNode(visitedNode, sideEffect)(recordNodesIndex);
68
- }
69
82
  };
70
83
  nodeUuids.forEach((nodeUuid) => {
71
84
  const node = recordNodesUpdated[nodeUuid];
@@ -77,11 +90,14 @@ const deleteNodes = (nodeUuids, options = recordUpdateOptions_1.RecordUpdateOpti
77
90
  visitor: deleteDescendantNode,
78
91
  });
79
92
  });
80
- recordValidationUpdated = validation_1.Validations.cleanup(recordValidationUpdated);
93
+ recordUpdated.validation = validation_1.Validations.cleanup(_dissocValidationFieldsOfDeletedNodes({
94
+ validation: validation_1.Validations.getValidation(record),
95
+ nodesDeleted,
96
+ sideEffect: !!sideEffect,
97
+ }));
81
98
  recordUpdated.nodes = recordNodesUpdated;
82
- recordUpdated.validation = recordValidationUpdated;
83
99
  if (updateNodesIndex) {
84
- recordUpdated._nodesIndex = recordNodesIndex;
100
+ recordUpdated._nodesIndex = recordNodesIndexUpdater_1.RecordNodesIndexUpdater.removeNodes(Object.values(nodesDeleted), sideEffect)((_a = record._nodesIndex) !== null && _a !== void 0 ? _a : {});
85
101
  }
86
102
  return new recordUpdateResult_1.RecordUpdateResult({ record: recordUpdated, nodes: nodesDeleted, nodesDeleted });
87
103
  };
@@ -1 +1 @@
1
- {"version":3,"file":"recordNodesDeleter.js","sourceRoot":"","sources":["../../../src/record/recordNodesUpdater/recordNodesDeleter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"recordNodesDeleter.js","sourceRoot":"","sources":["../../../src/record/recordNodesUpdater/recordNodesDeleter.ts"],"names":[],"mappings":"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"}
@@ -3,10 +3,17 @@ import { NodeDef, NodeDefProps, NodeDefType } from '../../nodeDef';
3
3
  import { Node } from '../../node';
4
4
  import { ValidationResult } from '../../validation';
5
5
  import { Survey } from '../../survey';
6
+ import { Dictionary } from '../../common';
7
+ export type EntityKeysCache = {
8
+ keyDefsByEntityDefUuid: Map<string, NodeDef<NodeDefType, NodeDefProps>[]>;
9
+ keyValuesByEntityUuid: Map<string, Dictionary<any>>;
10
+ };
11
+ export declare const createEntityKeysCache: () => EntityKeysCache;
6
12
  export declare const AttributeKeyValidator: {
7
13
  validateAttributeKey: (params: {
8
14
  survey: Survey;
9
15
  record: Record;
10
16
  nodeDef: NodeDef<NodeDefType, NodeDefProps>;
17
+ entityKeysCache?: EntityKeysCache;
11
18
  }) => (_propName: string, node: Node) => Promise<ValidationResult>;
12
19
  };
@@ -1,31 +1,55 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.AttributeKeyValidator = void 0;
3
+ exports.AttributeKeyValidator = exports.createEntityKeysCache = void 0;
4
4
  const records_1 = require("../records");
5
5
  const nodeDef_1 = require("../../nodeDef");
6
6
  const node_1 = require("../../node");
7
7
  const validation_1 = require("../../validation");
8
8
  const survey_1 = require("../../survey");
9
9
  const utils_1 = require("../../utils");
10
+ const createEntityKeysCache = () => ({
11
+ keyDefsByEntityDefUuid: new Map(),
12
+ keyValuesByEntityUuid: new Map(),
13
+ });
14
+ exports.createEntityKeysCache = createEntityKeysCache;
15
+ const _getKeyDefs = (params) => {
16
+ const { survey, entityDef, cache } = params;
17
+ let keyDefs = cache === null || cache === void 0 ? void 0 : cache.keyDefsByEntityDefUuid.get(entityDef.uuid);
18
+ if (!keyDefs) {
19
+ keyDefs = survey_1.Surveys.getNodeDefKeys({ survey, nodeDef: entityDef });
20
+ cache === null || cache === void 0 ? void 0 : cache.keyDefsByEntityDefUuid.set(entityDef.uuid, keyDefs);
21
+ }
22
+ return keyDefs;
23
+ };
24
+ const _getKeyValuesByDefUuid = (params) => {
25
+ const { survey, record, entity, keyDefs, cache } = params;
26
+ let keyValues = cache === null || cache === void 0 ? void 0 : cache.keyValuesByEntityUuid.get(entity.uuid);
27
+ if (!keyValues) {
28
+ keyValues = records_1.Records.getEntityKeyValuesByDefUuid({ survey, record, entity, keyDefs });
29
+ cache === null || cache === void 0 ? void 0 : cache.keyValuesByEntityUuid.set(entity.uuid, keyValues);
30
+ }
31
+ return keyValues;
32
+ };
10
33
  const _isEntityDuplicate = (params) => {
11
- const { survey, entity, record } = params;
34
+ const { survey, entity, record, entityKeysCache: cache } = params;
12
35
  const nodeParent = records_1.Records.getParent(entity)(record);
13
36
  if (!nodeParent)
14
37
  return false;
15
38
  const siblingEntities = records_1.Records.getChildren(nodeParent, entity.nodeDefUuid)(record).filter((node) => !node_1.Nodes.areEqual(entity, node));
16
39
  const entityDef = survey_1.Surveys.getNodeDefByUuid({ survey, uuid: entity.nodeDefUuid });
17
- const keyDefs = survey_1.Surveys.getNodeDefKeys({ survey, nodeDef: entityDef });
40
+ const keyDefs = _getKeyDefs({ survey, entityDef, cache });
18
41
  if (utils_1.Objects.isEmpty(siblingEntities) || utils_1.Objects.isEmpty(keyDefs)) {
19
42
  return false;
20
43
  }
21
- const keyValuesByDefUuid = records_1.Records.getEntityKeyValuesByDefUuid({ survey, record, entity, keyDefs });
44
+ const keyValuesByDefUuid = _getKeyValuesByDefUuid({ survey, record, entity, keyDefs, cache });
22
45
  return (!utils_1.Objects.isEmpty(keyValuesByDefUuid) &&
23
46
  siblingEntities.some((sibilingEntity) => {
24
- const siblingKeyValuesByDefUuid = records_1.Records.getEntityKeyValuesByDefUuid({
47
+ const siblingKeyValuesByDefUuid = _getKeyValuesByDefUuid({
25
48
  survey,
26
49
  record,
27
50
  entity: sibilingEntity,
28
51
  keyDefs,
52
+ cache,
29
53
  });
30
54
  return keyDefs.every((keyDef) => {
31
55
  const keyValue = keyValuesByDefUuid[keyDef.uuid];
@@ -47,10 +71,10 @@ const isNodeDefToBeValidated = (params) => {
47
71
  return !!nodeDefParent && !nodeDef_1.NodeDefs.isRoot(nodeDefParent);
48
72
  };
49
73
  const validateAttributeKey = (params) => (_propName, node) => {
50
- const { survey, nodeDef, record } = params;
74
+ const { survey, nodeDef, record, entityKeysCache } = params;
51
75
  if (isNodeDefToBeValidated({ survey, nodeDef })) {
52
76
  const entity = records_1.Records.getParent(node)(record);
53
- if (entity && _isEntityDuplicate({ survey, record, entity })) {
77
+ if (entity && _isEntityDuplicate({ survey, record, entity, entityKeysCache })) {
54
78
  return Promise.resolve(validation_1.ValidationResultFactory.createInstance({
55
79
  valid: false,
56
80
  severity: validation_1.ValidationSeverity.error,
@@ -1 +1 @@
1
- {"version":3,"file":"attributeKeyValidator.js","sourceRoot":"","sources":["../../../src/record/recordValidator/attributeKeyValidator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"attributeKeyValidator.js","sourceRoot":"","sources":["../../../src/record/recordValidator/attributeKeyValidator.ts"],"names":[],"mappings":"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"}
@@ -184,10 +184,12 @@ const findSortedNodesToValidate = (params) => {
184
184
  const validateSelfAndDependentSortedAttributes = (params) => __awaiter(void 0, void 0, void 0, function* () {
185
185
  const nodesToValidate = findSortedNodesToValidate(params);
186
186
  const validationsByNodeUuid = {};
187
+ const entityKeysCache = (0, attributeKeyValidator_1.createEntityKeysCache)();
187
188
  for (const nodeToValidate of nodesToValidate) {
188
189
  const nodeUuid = nodeToValidate.uuid;
189
190
  if (!nodeToValidate.deleted && !validationsByNodeUuid[nodeUuid]) {
190
- validationsByNodeUuid[nodeUuid] = yield validateAttribute(Object.assign(Object.assign({}, params), { attribute: nodeToValidate }));
191
+ const attributeValidatorParams = Object.assign(Object.assign({}, params), { attribute: nodeToValidate, entityKeysCache });
192
+ validationsByNodeUuid[nodeUuid] = yield validateAttribute(attributeValidatorParams);
191
193
  }
192
194
  }
193
195
  return validationsByNodeUuid;