@polintpro/proposit-core 0.8.4 → 0.8.5
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/dist/lib/core/argument-engine.d.ts +3 -0
- package/dist/lib/core/argument-engine.d.ts.map +1 -1
- package/dist/lib/core/argument-engine.js +18 -35
- package/dist/lib/core/argument-engine.js.map +1 -1
- package/dist/lib/core/claim-library.d.ts +14 -22
- package/dist/lib/core/claim-library.d.ts.map +1 -1
- package/dist/lib/core/claim-library.js +10 -185
- package/dist/lib/core/claim-library.js.map +1 -1
- package/dist/lib/core/claim-source-library.d.ts +1 -0
- package/dist/lib/core/claim-source-library.d.ts.map +1 -1
- package/dist/lib/core/claim-source-library.js +1 -0
- package/dist/lib/core/claim-source-library.js.map +1 -1
- package/dist/lib/core/expression-manager.d.ts +22 -0
- package/dist/lib/core/expression-manager.d.ts.map +1 -1
- package/dist/lib/core/expression-manager.js +67 -151
- package/dist/lib/core/expression-manager.js.map +1 -1
- package/dist/lib/core/fork-library.d.ts +9 -0
- package/dist/lib/core/fork-library.d.ts.map +1 -1
- package/dist/lib/core/fork-library.js +9 -0
- package/dist/lib/core/fork-library.js.map +1 -1
- package/dist/lib/core/fork-namespace.d.ts +13 -0
- package/dist/lib/core/fork-namespace.d.ts.map +1 -1
- package/dist/lib/core/fork-namespace.js +13 -0
- package/dist/lib/core/fork-namespace.js.map +1 -1
- package/dist/lib/core/invariant-violation-error.d.ts +4 -0
- package/dist/lib/core/invariant-violation-error.d.ts.map +1 -1
- package/dist/lib/core/invariant-violation-error.js +4 -0
- package/dist/lib/core/invariant-violation-error.js.map +1 -1
- package/dist/lib/core/parser/formula.d.ts +1 -0
- package/dist/lib/core/parser/formula.d.ts.map +1 -1
- package/dist/lib/core/parser/formula.js +1 -0
- package/dist/lib/core/parser/formula.js.map +1 -1
- package/dist/lib/core/premise-engine.d.ts +2 -0
- package/dist/lib/core/premise-engine.d.ts.map +1 -1
- package/dist/lib/core/premise-engine.js +35 -100
- package/dist/lib/core/premise-engine.js.map +1 -1
- package/dist/lib/core/source-library.d.ts +14 -22
- package/dist/lib/core/source-library.d.ts.map +1 -1
- package/dist/lib/core/source-library.js +10 -185
- package/dist/lib/core/source-library.js.map +1 -1
- package/dist/lib/core/versioned-library.d.ts +52 -0
- package/dist/lib/core/versioned-library.d.ts.map +1 -0
- package/dist/lib/core/versioned-library.js +192 -0
- package/dist/lib/core/versioned-library.js.map +1 -0
- package/dist/lib/index.d.ts +2 -0
- package/dist/lib/index.d.ts.map +1 -1
- package/dist/lib/index.js +1 -0
- package/dist/lib/index.js.map +1 -1
- package/dist/lib/parsing/schemata.d.ts +2 -0
- package/dist/lib/parsing/schemata.d.ts.map +1 -1
- package/dist/lib/parsing/schemata.js +2 -0
- package/dist/lib/parsing/schemata.js.map +1 -1
- package/dist/lib/schemata/shared.d.ts +3 -0
- package/dist/lib/schemata/shared.d.ts.map +1 -1
- package/dist/lib/schemata/shared.js +3 -0
- package/dist/lib/schemata/shared.js.map +1 -1
- package/dist/lib/utils/position.d.ts +1 -0
- package/dist/lib/utils/position.d.ts.map +1 -1
- package/dist/lib/utils/position.js +1 -0
- package/dist/lib/utils/position.js.map +1 -1
- package/package.json +4 -2
|
@@ -1,196 +1,21 @@
|
|
|
1
|
-
import { Value } from "typebox/value";
|
|
2
1
|
import { CoreClaimSchema } from "../schemata/claim.js";
|
|
3
|
-
import { DEFAULT_CHECKSUM_CONFIG } from "../consts.js";
|
|
4
|
-
import { entityChecksum } from "./checksum.js";
|
|
5
2
|
import { CLAIM_SCHEMA_INVALID, CLAIM_FROZEN_NO_SUCCESSOR, } from "../types/validation.js";
|
|
6
|
-
import {
|
|
7
|
-
export class ClaimLibrary {
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
restoreFromSnapshot(snap) {
|
|
15
|
-
this.entities = new Map();
|
|
16
|
-
for (const entity of snap.claims) {
|
|
17
|
-
let versions = this.entities.get(entity.id);
|
|
18
|
-
if (!versions) {
|
|
19
|
-
versions = new Map();
|
|
20
|
-
this.entities.set(entity.id, versions);
|
|
21
|
-
}
|
|
22
|
-
versions.set(entity.version, entity);
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
withValidation(fn) {
|
|
26
|
-
const snap = this.snapshot();
|
|
27
|
-
try {
|
|
28
|
-
const result = fn();
|
|
29
|
-
const validation = this.validate();
|
|
30
|
-
if (!validation.ok) {
|
|
31
|
-
this.restoreFromSnapshot(snap);
|
|
32
|
-
throw new InvariantViolationError(validation.violations);
|
|
33
|
-
}
|
|
34
|
-
return result;
|
|
35
|
-
}
|
|
36
|
-
catch (e) {
|
|
37
|
-
if (!(e instanceof InvariantViolationError)) {
|
|
38
|
-
this.restoreFromSnapshot(snap);
|
|
39
|
-
}
|
|
40
|
-
throw e;
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
create(claim) {
|
|
44
|
-
return this.withValidation(() => {
|
|
45
|
-
if (this.entities.has(claim.id)) {
|
|
46
|
-
throw new Error(`Claim with ID "${claim.id}" already exists.`);
|
|
47
|
-
}
|
|
48
|
-
const full = {
|
|
49
|
-
...claim,
|
|
50
|
-
version: 0,
|
|
51
|
-
frozen: false,
|
|
52
|
-
checksum: "",
|
|
53
|
-
};
|
|
54
|
-
full.checksum = this.computeChecksum(full);
|
|
55
|
-
const versions = new Map();
|
|
56
|
-
versions.set(0, full);
|
|
57
|
-
this.entities.set(full.id, versions);
|
|
58
|
-
return full;
|
|
59
|
-
});
|
|
60
|
-
}
|
|
61
|
-
update(id, updates) {
|
|
62
|
-
return this.withValidation(() => {
|
|
63
|
-
const versions = this.entities.get(id);
|
|
64
|
-
if (!versions) {
|
|
65
|
-
throw new Error(`Claim "${id}" does not exist.`);
|
|
66
|
-
}
|
|
67
|
-
const maxVersion = this.maxVersion(versions);
|
|
68
|
-
const current = versions.get(maxVersion);
|
|
69
|
-
if (current.frozen) {
|
|
70
|
-
throw new Error(`Claim "${id}" version ${maxVersion} is frozen and cannot be updated.`);
|
|
71
|
-
}
|
|
72
|
-
const updated = {
|
|
73
|
-
...current,
|
|
74
|
-
...updates,
|
|
75
|
-
id: current.id,
|
|
76
|
-
version: current.version,
|
|
77
|
-
frozen: current.frozen,
|
|
78
|
-
checksum: "",
|
|
79
|
-
};
|
|
80
|
-
updated.checksum = this.computeChecksum(updated);
|
|
81
|
-
versions.set(maxVersion, updated);
|
|
82
|
-
return updated;
|
|
83
|
-
});
|
|
84
|
-
}
|
|
85
|
-
freeze(id) {
|
|
86
|
-
return this.withValidation(() => {
|
|
87
|
-
const versions = this.entities.get(id);
|
|
88
|
-
if (!versions) {
|
|
89
|
-
throw new Error(`Claim "${id}" does not exist.`);
|
|
90
|
-
}
|
|
91
|
-
const maxVersion = this.maxVersion(versions);
|
|
92
|
-
const current = versions.get(maxVersion);
|
|
93
|
-
if (current.frozen) {
|
|
94
|
-
throw new Error(`Claim "${id}" version ${maxVersion} is already frozen.`);
|
|
95
|
-
}
|
|
96
|
-
const frozenEntity = {
|
|
97
|
-
...current,
|
|
98
|
-
frozen: true,
|
|
99
|
-
checksum: "",
|
|
100
|
-
};
|
|
101
|
-
frozenEntity.checksum = this.computeChecksum(frozenEntity);
|
|
102
|
-
versions.set(maxVersion, frozenEntity);
|
|
103
|
-
const nextVersion = maxVersion + 1;
|
|
104
|
-
const nextEntity = {
|
|
105
|
-
...current,
|
|
106
|
-
version: nextVersion,
|
|
107
|
-
frozen: false,
|
|
108
|
-
checksum: "",
|
|
109
|
-
};
|
|
110
|
-
nextEntity.checksum = this.computeChecksum(nextEntity);
|
|
111
|
-
versions.set(nextVersion, nextEntity);
|
|
112
|
-
return { frozen: frozenEntity, current: nextEntity };
|
|
113
|
-
});
|
|
114
|
-
}
|
|
115
|
-
get(id, version) {
|
|
116
|
-
return this.entities.get(id)?.get(version);
|
|
117
|
-
}
|
|
118
|
-
getCurrent(id) {
|
|
119
|
-
const versions = this.entities.get(id);
|
|
120
|
-
if (!versions)
|
|
121
|
-
return undefined;
|
|
122
|
-
return versions.get(this.maxVersion(versions));
|
|
123
|
-
}
|
|
124
|
-
getAll() {
|
|
125
|
-
const result = [];
|
|
126
|
-
for (const versions of this.entities.values()) {
|
|
127
|
-
for (const entity of versions.values()) {
|
|
128
|
-
result.push(entity);
|
|
129
|
-
}
|
|
130
|
-
}
|
|
131
|
-
return result;
|
|
132
|
-
}
|
|
133
|
-
getVersions(id) {
|
|
134
|
-
const versions = this.entities.get(id);
|
|
135
|
-
if (!versions)
|
|
136
|
-
return [];
|
|
137
|
-
return Array.from(versions.values()).sort((a, b) => a.version - b.version);
|
|
138
|
-
}
|
|
3
|
+
import { VersionedLibrary } from "./versioned-library.js";
|
|
4
|
+
export class ClaimLibrary extends VersionedLibrary {
|
|
5
|
+
entityLabel = "Claim";
|
|
6
|
+
entityType = "claim";
|
|
7
|
+
schema = CoreClaimSchema;
|
|
8
|
+
checksumFieldsKey = "claimFields";
|
|
9
|
+
schemaInvalidCode = CLAIM_SCHEMA_INVALID;
|
|
10
|
+
frozenSuccessorCode = CLAIM_FROZEN_NO_SUCCESSOR;
|
|
139
11
|
snapshot() {
|
|
140
12
|
return { claims: this.getAll() };
|
|
141
13
|
}
|
|
14
|
+
/** Restores a claim library from a previously captured snapshot. */
|
|
142
15
|
static fromSnapshot(snapshot, options) {
|
|
143
16
|
const lib = new ClaimLibrary(options);
|
|
144
|
-
|
|
145
|
-
let versions = lib.entities.get(entity.id);
|
|
146
|
-
if (!versions) {
|
|
147
|
-
versions = new Map();
|
|
148
|
-
lib.entities.set(entity.id, versions);
|
|
149
|
-
}
|
|
150
|
-
versions.set(entity.version, entity);
|
|
151
|
-
}
|
|
17
|
+
lib.restoreFromEntities(snapshot.claims);
|
|
152
18
|
return lib;
|
|
153
19
|
}
|
|
154
|
-
validate() {
|
|
155
|
-
const violations = [];
|
|
156
|
-
for (const [id, versions] of this.entities) {
|
|
157
|
-
const sortedVersions = [...versions.entries()].sort(([a], [b]) => a - b);
|
|
158
|
-
for (const [version, claim] of sortedVersions) {
|
|
159
|
-
if (!Value.Check(CoreClaimSchema, claim)) {
|
|
160
|
-
violations.push({
|
|
161
|
-
code: CLAIM_SCHEMA_INVALID,
|
|
162
|
-
message: `Claim "${id}" version ${version} does not conform to schema`,
|
|
163
|
-
entityType: "claim",
|
|
164
|
-
entityId: id,
|
|
165
|
-
});
|
|
166
|
-
}
|
|
167
|
-
if (claim.frozen) {
|
|
168
|
-
const maxVer = this.maxVersion(versions);
|
|
169
|
-
if (version < maxVer && !versions.has(version + 1)) {
|
|
170
|
-
violations.push({
|
|
171
|
-
code: CLAIM_FROZEN_NO_SUCCESSOR,
|
|
172
|
-
message: `Claim "${id}" version ${version} is frozen but has no successor version`,
|
|
173
|
-
entityType: "claim",
|
|
174
|
-
entityId: id,
|
|
175
|
-
});
|
|
176
|
-
}
|
|
177
|
-
}
|
|
178
|
-
}
|
|
179
|
-
}
|
|
180
|
-
return { ok: violations.length === 0, violations };
|
|
181
|
-
}
|
|
182
|
-
maxVersion(versions) {
|
|
183
|
-
let max = -1;
|
|
184
|
-
for (const v of versions.keys()) {
|
|
185
|
-
if (v > max)
|
|
186
|
-
max = v;
|
|
187
|
-
}
|
|
188
|
-
return max;
|
|
189
|
-
}
|
|
190
|
-
computeChecksum(entity) {
|
|
191
|
-
const fields = this.checksumConfig?.claimFields ??
|
|
192
|
-
DEFAULT_CHECKSUM_CONFIG.claimFields;
|
|
193
|
-
return entityChecksum(entity, fields);
|
|
194
|
-
}
|
|
195
20
|
}
|
|
196
21
|
//# sourceMappingURL=claim-library.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"claim-library.js","sourceRoot":"","sources":["../../../src/lib/core/claim-library.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"claim-library.js","sourceRoot":"","sources":["../../../src/lib/core/claim-library.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAMtD,OAAO,EACH,oBAAoB,EACpB,yBAAyB,GAC5B,MAAM,wBAAwB,CAAA;AAC/B,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AAEzD,MAAM,OAAO,YACT,SAAQ,gBAAwB;IAGb,WAAW,GAAG,OAAO,CAAA;IACrB,UAAU,GAAG,OAAgB,CAAA;IAC7B,MAAM,GAAG,eAAe,CAAA;IACxB,iBAAiB,GAAG,aAAsB,CAAA;IAC1C,iBAAiB,GAAG,oBAAoB,CAAA;IACxC,mBAAmB,GAAG,yBAAyB,CAAA;IAE3D,QAAQ;QACX,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,EAAE,CAAA;IACpC,CAAC;IAED,oEAAoE;IAC7D,MAAM,CAAC,YAAY,CACtB,QAAuC,EACvC,OAAkD;QAElD,MAAM,GAAG,GAAG,IAAI,YAAY,CAAS,OAAO,CAAC,CAAA;QAC7C,GAAG,CAAC,mBAAmB,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;QACxC,OAAO,GAAG,CAAA;IACd,CAAC;CACJ"}
|
|
@@ -22,6 +22,7 @@ export declare class ClaimSourceLibrary<TAssoc extends TCoreClaimSourceAssociati
|
|
|
22
22
|
getAll(): TAssoc[];
|
|
23
23
|
filter(predicate: (a: TAssoc) => boolean): TAssoc[];
|
|
24
24
|
snapshot(): TClaimSourceLibrarySnapshot<TAssoc>;
|
|
25
|
+
/** Restores a claim-source library from a snapshot, re-indexing all associations. */
|
|
25
26
|
static fromSnapshot<TAssoc extends TCoreClaimSourceAssociation = TCoreClaimSourceAssociation>(snapshot: TClaimSourceLibrarySnapshot<TAssoc>, claimLookup: TClaimLookup, sourceLookup: TSourceLookup, options?: {
|
|
26
27
|
checksumConfig?: TCoreChecksumConfig;
|
|
27
28
|
}): ClaimSourceLibrary<TAssoc>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"claim-source-library.d.ts","sourceRoot":"","sources":["../../../src/lib/core/claim-source-library.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,uBAAuB,CAAA;AAExE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAA;AAG/D,OAAO,KAAK,EACR,YAAY,EACZ,aAAa,EACb,6BAA6B,EAC7B,2BAA2B,EAC9B,MAAM,oCAAoC,CAAA;AAC3C,OAAO,KAAK,EACR,0BAA0B,EAE7B,MAAM,wBAAwB,CAAA;AAQ/B,qBAAa,kBAAkB,CAC3B,MAAM,SAAS,2BAA2B,GAAG,2BAA2B,CAC1E,YAAW,6BAA6B,CAAC,MAAM,CAAC;IAC9C,OAAO,CAAC,YAAY,CAAqB;IACzC,OAAO,CAAC,mBAAmB,CAA0B;IACrD,OAAO,CAAC,oBAAoB,CAA0B;IACtD,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,cAAc,CAAC,CAAqB;gBAGxC,WAAW,EAAE,YAAY,EACzB,YAAY,EAAE,aAAa,EAC3B,OAAO,CAAC,EAAE;QAAE,cAAc,CAAC,EAAE,mBAAmB,CAAA;KAAE;IAUtD,OAAO,CAAC,mBAAmB;IAwB3B,OAAO,CAAC,cAAc;IAkBf,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,UAAU,CAAC,GAAG,MAAM;IAmD5C,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM;IAuB1B,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE;IAQtC,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE;IAQxC,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAInC,MAAM,IAAI,MAAM,EAAE;IAIlB,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,OAAO,GAAG,MAAM,EAAE;IAInD,QAAQ,IAAI,2BAA2B,CAAC,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"claim-source-library.d.ts","sourceRoot":"","sources":["../../../src/lib/core/claim-source-library.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,uBAAuB,CAAA;AAExE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAA;AAG/D,OAAO,KAAK,EACR,YAAY,EACZ,aAAa,EACb,6BAA6B,EAC7B,2BAA2B,EAC9B,MAAM,oCAAoC,CAAA;AAC3C,OAAO,KAAK,EACR,0BAA0B,EAE7B,MAAM,wBAAwB,CAAA;AAQ/B,qBAAa,kBAAkB,CAC3B,MAAM,SAAS,2BAA2B,GAAG,2BAA2B,CAC1E,YAAW,6BAA6B,CAAC,MAAM,CAAC;IAC9C,OAAO,CAAC,YAAY,CAAqB;IACzC,OAAO,CAAC,mBAAmB,CAA0B;IACrD,OAAO,CAAC,oBAAoB,CAA0B;IACtD,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,cAAc,CAAC,CAAqB;gBAGxC,WAAW,EAAE,YAAY,EACzB,YAAY,EAAE,aAAa,EAC3B,OAAO,CAAC,EAAE;QAAE,cAAc,CAAC,EAAE,mBAAmB,CAAA;KAAE;IAUtD,OAAO,CAAC,mBAAmB;IAwB3B,OAAO,CAAC,cAAc;IAkBf,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,UAAU,CAAC,GAAG,MAAM;IAmD5C,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM;IAuB1B,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE;IAQtC,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE;IAQxC,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAInC,MAAM,IAAI,MAAM,EAAE;IAIlB,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,OAAO,GAAG,MAAM,EAAE;IAInD,QAAQ,IAAI,2BAA2B,CAAC,MAAM,CAAC;IAItD,qFAAqF;WACvE,YAAY,CACtB,MAAM,SAAS,2BAA2B,GACtC,2BAA2B,EAE/B,QAAQ,EAAE,2BAA2B,CAAC,MAAM,CAAC,EAC7C,WAAW,EAAE,YAAY,EACzB,YAAY,EAAE,aAAa,EAC3B,OAAO,CAAC,EAAE;QAAE,cAAc,CAAC,EAAE,mBAAmB,CAAA;KAAE,GACnD,kBAAkB,CAAC,MAAM,CAAC;IA0BtB,QAAQ,IAAI,0BAA0B;IA+B7C,OAAO,CAAC,eAAe;CAS1B"}
|
|
@@ -134,6 +134,7 @@ export class ClaimSourceLibrary {
|
|
|
134
134
|
snapshot() {
|
|
135
135
|
return { claimSourceAssociations: this.getAll() };
|
|
136
136
|
}
|
|
137
|
+
/** Restores a claim-source library from a snapshot, re-indexing all associations. */
|
|
137
138
|
static fromSnapshot(snapshot, claimLookup, sourceLookup, options) {
|
|
138
139
|
const lib = new ClaimSourceLibrary(claimLookup, sourceLookup, options);
|
|
139
140
|
for (const assoc of snapshot.claimSourceAssociations) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"claim-source-library.js","sourceRoot":"","sources":["../../../src/lib/core/claim-source-library.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"claim-source-library.js","sourceRoot":"","sources":["../../../src/lib/core/claim-source-library.ts"],"names":[],"mappings":"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"}
|
|
@@ -39,6 +39,28 @@ export declare class ExpressionManager<TExpr extends TCorePropositionalExpressio
|
|
|
39
39
|
constructor(config?: TLogicEngineOptions);
|
|
40
40
|
private get grammarConfig();
|
|
41
41
|
private attachChecksum;
|
|
42
|
+
/**
|
|
43
|
+
* Creates and registers a formula-buffer expression in the three internal
|
|
44
|
+
* maps (`expressions`, `childExpressionIdsByParentId`,
|
|
45
|
+
* `childPositionsByParentId`) and notifies the change collector.
|
|
46
|
+
*
|
|
47
|
+
* Used by `addExpression`, `insertExpression`, and `wrapExpression` to
|
|
48
|
+
* auto-insert formula nodes between operators when
|
|
49
|
+
* `grammarConfig.autoNormalize` is enabled.
|
|
50
|
+
*
|
|
51
|
+
* @returns The generated formula expression ID.
|
|
52
|
+
*/
|
|
53
|
+
private registerFormulaBuffer;
|
|
54
|
+
/**
|
|
55
|
+
* Removes an expression from the three internal maps: deletes it from
|
|
56
|
+
* the main `expressions` store, removes it from its parent's child-id
|
|
57
|
+
* and position indexes, and deletes its own child-id and position
|
|
58
|
+
* indexes.
|
|
59
|
+
*
|
|
60
|
+
* Callers remain responsible for collector notification, dirty-set
|
|
61
|
+
* cleanup, and parent dirtying — timing for those varies by call site.
|
|
62
|
+
*/
|
|
63
|
+
private detachExpression;
|
|
42
64
|
/**
|
|
43
65
|
* Marks an expression and all its ancestors as dirty for hierarchical
|
|
44
66
|
* checksum recomputation. Stops early when it reaches an expression
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"expression-manager.d.ts","sourceRoot":"","sources":["../../../src/lib/core/expression-manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACR,wBAAwB,EACxB,4BAA4B,EAC/B,MAAM,sBAAsB,CAAA;AAE7B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AAQ5D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAA;AAO/D,OAAO,EAEH,KAAK,cAAc,EACtB,MAAM,qBAAqB,CAAA;AAE5B,OAAO,KAAK,EAER,0BAA0B,EAC7B,MAAM,wBAAwB,CAAA;AAe/B,MAAM,MAAM,gBAAgB,CACxB,KAAK,SAAS,4BAA4B,GAAG,4BAA4B,IACzE,KAAK,SAAS,MAAM,CAAC,GACnB,CAAC,SAAS,4BAA4B,GAClC,IAAI,CAAC,CAAC,EAAE,UAAU,GAAG,oBAAoB,GAAG,kBAAkB,CAAC,GAC/D,KAAK,GACT,KAAK,CAAA;AAEX,MAAM,MAAM,0BAA0B,CAClC,KAAK,SAAS,4BAA4B,GAAG,4BAA4B,IACzE,KAAK,SAAS,MAAM,CAAC,GACnB,CAAC,SAAS,4BAA4B,GAClC,IAAI,CACA,CAAC,EACC,UAAU,GACV,UAAU,GACV,oBAAoB,GACpB,kBAAkB,CACvB,GACD,KAAK,GACT,KAAK,CAAA;AAEX,MAAM,MAAM,0BAA0B,CAClC,KAAK,SAAS,4BAA4B,GAAG,4BAA4B,IACzE;IACA,WAAW,EAAE,KAAK,EAAE,CAAA;IACpB,MAAM,CAAC,EAAE,mBAAmB,CAAA;CAC/B,CAAA;AAED,4DAA4D;AAC5D,MAAM,MAAM,iBAAiB,GAAG;IAC5B,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,EAAE,wBAAwB,CAAA;CACtC,CAAA;AASD;;;;;;;;;;GAUG;AACH,qBAAa,iBAAiB,CAC1B,KAAK,SAAS,4BAA4B,GAAG,4BAA4B;IAEzE,OAAO,CAAC,WAAW,CAAoB;IACvC,OAAO,CAAC,4BAA4B,CAAiC;IACrE,OAAO,CAAC,wBAAwB,CAAiC;IACjE,OAAO,CAAC,cAAc,CAAqB;IAC3C,OAAO,CAAC,MAAM,CAAC,CAAqB;IACpC,OAAO,CAAC,UAAU,CAAc;IAChC,OAAO,CAAC,SAAS,CAA+B;IAChD,OAAO,CAAC,kBAAkB,CAAoB;IAE9C,YAAY,CAAC,SAAS,EAAE,eAAe,GAAG,IAAI,GAAG,IAAI;gBAIzC,MAAM,CAAC,EAAE,mBAAmB;IASxC,OAAO,KAAK,aAAa,GAExB;IAED,OAAO,CAAC,cAAc;IAgBtB;;;;OAIG;IACI,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAUhD;;;;OAIG;IACI,wBAAwB,IAAI,IAAI;IA6EvC;;;OAGG;IACI,wBAAwB,CAAC,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,IAAI;IAM9D,qEAAqE;IAC9D,OAAO,IAAI,KAAK,EAAE;IAMzB;;;;;;;;;OASG;IACI,aAAa,CAAC,KAAK,EAAE,gBAAgB,CAAC,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"expression-manager.d.ts","sourceRoot":"","sources":["../../../src/lib/core/expression-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -58,6 +58,57 @@ export class ExpressionManager {
|
|
|
58
58
|
combinedChecksum: checksum,
|
|
59
59
|
};
|
|
60
60
|
}
|
|
61
|
+
/**
|
|
62
|
+
* Creates and registers a formula-buffer expression in the three internal
|
|
63
|
+
* maps (`expressions`, `childExpressionIdsByParentId`,
|
|
64
|
+
* `childPositionsByParentId`) and notifies the change collector.
|
|
65
|
+
*
|
|
66
|
+
* Used by `addExpression`, `insertExpression`, and `wrapExpression` to
|
|
67
|
+
* auto-insert formula nodes between operators when
|
|
68
|
+
* `grammarConfig.autoNormalize` is enabled.
|
|
69
|
+
*
|
|
70
|
+
* @returns The generated formula expression ID.
|
|
71
|
+
*/
|
|
72
|
+
registerFormulaBuffer(sourceExpr, parentId, position, formulaId) {
|
|
73
|
+
formulaId ??= this.generateId();
|
|
74
|
+
const formulaExpr = this.attachChecksum({
|
|
75
|
+
id: formulaId,
|
|
76
|
+
type: "formula",
|
|
77
|
+
argumentId: sourceExpr.argumentId,
|
|
78
|
+
argumentVersion: sourceExpr.argumentVersion,
|
|
79
|
+
premiseId: sourceExpr
|
|
80
|
+
.premiseId,
|
|
81
|
+
parentId,
|
|
82
|
+
position,
|
|
83
|
+
});
|
|
84
|
+
this.expressions.set(formulaId, formulaExpr);
|
|
85
|
+
this.collector?.addedExpression({
|
|
86
|
+
...formulaExpr,
|
|
87
|
+
});
|
|
88
|
+
getOrCreate(this.childExpressionIdsByParentId, parentId, () => new Set()).add(formulaId);
|
|
89
|
+
getOrCreate(this.childPositionsByParentId, parentId, () => new Set()).add(position);
|
|
90
|
+
return formulaId;
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Removes an expression from the three internal maps: deletes it from
|
|
94
|
+
* the main `expressions` store, removes it from its parent's child-id
|
|
95
|
+
* and position indexes, and deletes its own child-id and position
|
|
96
|
+
* indexes.
|
|
97
|
+
*
|
|
98
|
+
* Callers remain responsible for collector notification, dirty-set
|
|
99
|
+
* cleanup, and parent dirtying — timing for those varies by call site.
|
|
100
|
+
*/
|
|
101
|
+
detachExpression(expressionId, expression) {
|
|
102
|
+
this.expressions.delete(expressionId);
|
|
103
|
+
this.childExpressionIdsByParentId
|
|
104
|
+
.get(expression.parentId)
|
|
105
|
+
?.delete(expressionId);
|
|
106
|
+
this.childPositionsByParentId
|
|
107
|
+
.get(expression.parentId)
|
|
108
|
+
?.delete(expression.position);
|
|
109
|
+
this.childExpressionIdsByParentId.delete(expressionId);
|
|
110
|
+
this.childPositionsByParentId.delete(expressionId);
|
|
111
|
+
}
|
|
61
112
|
/**
|
|
62
113
|
* Marks an expression and all its ancestors as dirty for hierarchical
|
|
63
114
|
* checksum recomputation. Stops early when it reaches an expression
|
|
@@ -193,23 +244,7 @@ export class ExpressionManager {
|
|
|
193
244
|
// Check original parent can accept the formula as a new child.
|
|
194
245
|
this.assertChildLimit(parent.operator, expression.parentId);
|
|
195
246
|
// Auto-insert a formula buffer between parent and expression.
|
|
196
|
-
const formulaId = this.
|
|
197
|
-
const formulaExpr = this.attachChecksum({
|
|
198
|
-
id: formulaId,
|
|
199
|
-
type: "formula",
|
|
200
|
-
argumentId: expression.argumentId,
|
|
201
|
-
argumentVersion: expression.argumentVersion,
|
|
202
|
-
premiseId: expression.premiseId,
|
|
203
|
-
parentId: expression.parentId,
|
|
204
|
-
position: expression.position,
|
|
205
|
-
});
|
|
206
|
-
// Register formula directly in stores.
|
|
207
|
-
this.expressions.set(formulaId, formulaExpr);
|
|
208
|
-
this.collector?.addedExpression({
|
|
209
|
-
...formulaExpr,
|
|
210
|
-
});
|
|
211
|
-
getOrCreate(this.childExpressionIdsByParentId, expression.parentId, () => new Set()).add(formulaId);
|
|
212
|
-
getOrCreate(this.childPositionsByParentId, expression.parentId, () => new Set()).add(expression.position);
|
|
247
|
+
const formulaId = this.registerFormulaBuffer(expression, expression.parentId, expression.position);
|
|
213
248
|
// Rewrite expression to be child of formula.
|
|
214
249
|
expression = {
|
|
215
250
|
...expression,
|
|
@@ -217,7 +252,7 @@ export class ExpressionManager {
|
|
|
217
252
|
position: 0,
|
|
218
253
|
};
|
|
219
254
|
// Update parent reference for subsequent checks.
|
|
220
|
-
parent =
|
|
255
|
+
parent = this.expressions.get(formulaId);
|
|
221
256
|
}
|
|
222
257
|
else {
|
|
223
258
|
throw new Error(`Non-not operator expressions cannot be direct children of operator expressions — wrap in a formula node`);
|
|
@@ -447,15 +482,7 @@ export class ExpressionManager {
|
|
|
447
482
|
this.collector?.removedExpression({
|
|
448
483
|
...expression,
|
|
449
484
|
});
|
|
450
|
-
this.
|
|
451
|
-
this.childExpressionIdsByParentId
|
|
452
|
-
.get(expression.parentId)
|
|
453
|
-
?.delete(id);
|
|
454
|
-
this.childPositionsByParentId
|
|
455
|
-
.get(expression.parentId)
|
|
456
|
-
?.delete(expression.position);
|
|
457
|
-
this.childExpressionIdsByParentId.delete(id);
|
|
458
|
-
this.childPositionsByParentId.delete(id);
|
|
485
|
+
this.detachExpression(id, expression);
|
|
459
486
|
}
|
|
460
487
|
// Prune deleted expressions from the dirty set and mark the surviving parent dirty.
|
|
461
488
|
this.pruneDeletedFromDirtySet(toRemove);
|
|
@@ -476,13 +503,7 @@ export class ExpressionManager {
|
|
|
476
503
|
this.collector?.removedExpression({
|
|
477
504
|
...target,
|
|
478
505
|
});
|
|
479
|
-
this.
|
|
480
|
-
this.childExpressionIdsByParentId
|
|
481
|
-
.get(parentId)
|
|
482
|
-
?.delete(expressionId);
|
|
483
|
-
this.childPositionsByParentId.get(parentId)?.delete(target.position);
|
|
484
|
-
this.childExpressionIdsByParentId.delete(expressionId);
|
|
485
|
-
this.childPositionsByParentId.delete(expressionId);
|
|
506
|
+
this.detachExpression(expressionId, target);
|
|
486
507
|
// Prune deleted expression from dirty set and mark surviving parent dirty.
|
|
487
508
|
this.dirtyExpressionIds.delete(expressionId);
|
|
488
509
|
if (parentId !== null) {
|
|
@@ -556,15 +577,7 @@ export class ExpressionManager {
|
|
|
556
577
|
this.collector?.removedExpression({
|
|
557
578
|
...operator,
|
|
558
579
|
});
|
|
559
|
-
this.
|
|
560
|
-
this.childExpressionIdsByParentId
|
|
561
|
-
.get(grandparentId)
|
|
562
|
-
?.delete(operatorId);
|
|
563
|
-
this.childPositionsByParentId
|
|
564
|
-
.get(grandparentId)
|
|
565
|
-
?.delete(operator.position);
|
|
566
|
-
this.childExpressionIdsByParentId.delete(operatorId);
|
|
567
|
-
this.childPositionsByParentId.delete(operatorId);
|
|
580
|
+
this.detachExpression(operatorId, operator);
|
|
568
581
|
// Prune collapsed formula from dirty set and propagate to grandparent.
|
|
569
582
|
this.dirtyExpressionIds.delete(operatorId);
|
|
570
583
|
if (grandparentId !== null) {
|
|
@@ -579,19 +592,10 @@ export class ExpressionManager {
|
|
|
579
592
|
const children = this.getChildExpressions(operatorId);
|
|
580
593
|
if (children.length === 0) {
|
|
581
594
|
const grandparentId = operator.parentId;
|
|
582
|
-
const grandparentPosition = operator.position;
|
|
583
595
|
this.collector?.removedExpression({
|
|
584
596
|
...operator,
|
|
585
597
|
});
|
|
586
|
-
this.
|
|
587
|
-
this.childExpressionIdsByParentId
|
|
588
|
-
.get(grandparentId)
|
|
589
|
-
?.delete(operatorId);
|
|
590
|
-
this.childPositionsByParentId
|
|
591
|
-
.get(grandparentId)
|
|
592
|
-
?.delete(grandparentPosition);
|
|
593
|
-
this.childExpressionIdsByParentId.delete(operatorId);
|
|
594
|
-
this.childPositionsByParentId.delete(operatorId);
|
|
598
|
+
this.detachExpression(operatorId, operator);
|
|
595
599
|
// Prune collapsed operator from dirty set and propagate to grandparent.
|
|
596
600
|
this.dirtyExpressionIds.delete(operatorId);
|
|
597
601
|
if (grandparentId !== null) {
|
|
@@ -961,23 +965,7 @@ export class ExpressionManager {
|
|
|
961
965
|
let finalParentId = anchorParentId;
|
|
962
966
|
let finalPosition = anchorPosition;
|
|
963
967
|
if (needsParentFormulaBuffer) {
|
|
964
|
-
const formulaId = this.
|
|
965
|
-
const formulaExpr = this.attachChecksum({
|
|
966
|
-
id: formulaId,
|
|
967
|
-
type: "formula",
|
|
968
|
-
argumentId: expression.argumentId,
|
|
969
|
-
argumentVersion: expression.argumentVersion,
|
|
970
|
-
premiseId: expression
|
|
971
|
-
.premiseId,
|
|
972
|
-
parentId: anchorParentId,
|
|
973
|
-
position: anchorPosition,
|
|
974
|
-
});
|
|
975
|
-
this.expressions.set(formulaId, formulaExpr);
|
|
976
|
-
this.collector?.addedExpression({
|
|
977
|
-
...formulaExpr,
|
|
978
|
-
});
|
|
979
|
-
getOrCreate(this.childExpressionIdsByParentId, anchorParentId, () => new Set()).add(formulaId);
|
|
980
|
-
getOrCreate(this.childPositionsByParentId, anchorParentId, () => new Set()).add(anchorPosition);
|
|
968
|
+
const formulaId = this.registerFormulaBuffer(expression, anchorParentId, anchorPosition);
|
|
981
969
|
finalParentId = formulaId;
|
|
982
970
|
finalPosition = 0;
|
|
983
971
|
}
|
|
@@ -998,27 +986,12 @@ export class ExpressionManager {
|
|
|
998
986
|
for (const childId of childrenNeedingFormulaBuffer) {
|
|
999
987
|
const child = this.expressions.get(childId);
|
|
1000
988
|
const childPosition = child.position;
|
|
1001
|
-
const formulaId = this.generateId();
|
|
1002
989
|
// Reparent the child under the formula first. This detaches the child
|
|
1003
990
|
// from expression.id's tracking (removing its position from the set).
|
|
991
|
+
// registerFormulaBuffer then occupies the freed position.
|
|
992
|
+
const formulaId = this.generateId();
|
|
1004
993
|
this.reparent(childId, formulaId, 0);
|
|
1005
|
-
|
|
1006
|
-
const formulaExpr = this.attachChecksum({
|
|
1007
|
-
id: formulaId,
|
|
1008
|
-
type: "formula",
|
|
1009
|
-
argumentId: expression.argumentId,
|
|
1010
|
-
argumentVersion: expression.argumentVersion,
|
|
1011
|
-
premiseId: expression
|
|
1012
|
-
.premiseId,
|
|
1013
|
-
parentId: expression.id,
|
|
1014
|
-
position: childPosition,
|
|
1015
|
-
});
|
|
1016
|
-
this.expressions.set(formulaId, formulaExpr);
|
|
1017
|
-
this.collector?.addedExpression({
|
|
1018
|
-
...formulaExpr,
|
|
1019
|
-
});
|
|
1020
|
-
getOrCreate(this.childExpressionIdsByParentId, expression.id, () => new Set()).add(formulaId);
|
|
1021
|
-
getOrCreate(this.childPositionsByParentId, expression.id, () => new Set()).add(childPosition);
|
|
994
|
+
this.registerFormulaBuffer(expression, expression.id, childPosition, formulaId);
|
|
1022
995
|
}
|
|
1023
996
|
// Mark the new expression and its ancestors dirty for hierarchical checksum recomputation.
|
|
1024
997
|
// Note: reparent() already marks children dirty, so this propagates from the new expression up.
|
|
@@ -1163,23 +1136,7 @@ export class ExpressionManager {
|
|
|
1163
1136
|
let operatorParentId = anchorParentId;
|
|
1164
1137
|
let operatorPosition = anchorPosition;
|
|
1165
1138
|
if (needsParentFormulaBuffer) {
|
|
1166
|
-
const formulaId = this.
|
|
1167
|
-
const formulaExpr = this.attachChecksum({
|
|
1168
|
-
id: formulaId,
|
|
1169
|
-
type: "formula",
|
|
1170
|
-
argumentId: operator.argumentId,
|
|
1171
|
-
argumentVersion: operator.argumentVersion,
|
|
1172
|
-
premiseId: operator
|
|
1173
|
-
.premiseId,
|
|
1174
|
-
parentId: anchorParentId,
|
|
1175
|
-
position: anchorPosition,
|
|
1176
|
-
});
|
|
1177
|
-
this.expressions.set(formulaId, formulaExpr);
|
|
1178
|
-
this.collector?.addedExpression({
|
|
1179
|
-
...formulaExpr,
|
|
1180
|
-
});
|
|
1181
|
-
getOrCreate(this.childExpressionIdsByParentId, anchorParentId, () => new Set()).add(formulaId);
|
|
1182
|
-
getOrCreate(this.childPositionsByParentId, anchorParentId, () => new Set()).add(anchorPosition);
|
|
1139
|
+
const formulaId = this.registerFormulaBuffer(operator, anchorParentId, anchorPosition);
|
|
1183
1140
|
operatorParentId = formulaId;
|
|
1184
1141
|
operatorPosition = 0;
|
|
1185
1142
|
}
|
|
@@ -1201,24 +1158,9 @@ export class ExpressionManager {
|
|
|
1201
1158
|
const childPosition = existingChild.position;
|
|
1202
1159
|
const formulaId = this.generateId();
|
|
1203
1160
|
// Reparent existing node under formula first (frees position in operator's tracking).
|
|
1161
|
+
// registerFormulaBuffer then occupies the freed position.
|
|
1204
1162
|
this.reparent(existingNodeId, formulaId, 0);
|
|
1205
|
-
|
|
1206
|
-
const formulaExpr = this.attachChecksum({
|
|
1207
|
-
id: formulaId,
|
|
1208
|
-
type: "formula",
|
|
1209
|
-
argumentId: operator.argumentId,
|
|
1210
|
-
argumentVersion: operator.argumentVersion,
|
|
1211
|
-
premiseId: operator
|
|
1212
|
-
.premiseId,
|
|
1213
|
-
parentId: operator.id,
|
|
1214
|
-
position: childPosition,
|
|
1215
|
-
});
|
|
1216
|
-
this.expressions.set(formulaId, formulaExpr);
|
|
1217
|
-
this.collector?.addedExpression({
|
|
1218
|
-
...formulaExpr,
|
|
1219
|
-
});
|
|
1220
|
-
getOrCreate(this.childExpressionIdsByParentId, operator.id, () => new Set()).add(formulaId);
|
|
1221
|
-
getOrCreate(this.childPositionsByParentId, operator.id, () => new Set()).add(childPosition);
|
|
1163
|
+
this.registerFormulaBuffer(operator, operator.id, childPosition, formulaId);
|
|
1222
1164
|
}
|
|
1223
1165
|
// Site 3: auto-insert formula buffer between operator and new sibling.
|
|
1224
1166
|
if (siblingNeedsFormulaBuffer) {
|
|
@@ -1226,24 +1168,9 @@ export class ExpressionManager {
|
|
|
1226
1168
|
const childPosition = siblingChild.position;
|
|
1227
1169
|
const formulaId = this.generateId();
|
|
1228
1170
|
// Reparent sibling under formula first (frees position in operator's tracking).
|
|
1171
|
+
// registerFormulaBuffer then occupies the freed position.
|
|
1229
1172
|
this.reparent(newSibling.id, formulaId, 0);
|
|
1230
|
-
|
|
1231
|
-
const formulaExpr = this.attachChecksum({
|
|
1232
|
-
id: formulaId,
|
|
1233
|
-
type: "formula",
|
|
1234
|
-
argumentId: operator.argumentId,
|
|
1235
|
-
argumentVersion: operator.argumentVersion,
|
|
1236
|
-
premiseId: operator
|
|
1237
|
-
.premiseId,
|
|
1238
|
-
parentId: operator.id,
|
|
1239
|
-
position: childPosition,
|
|
1240
|
-
});
|
|
1241
|
-
this.expressions.set(formulaId, formulaExpr);
|
|
1242
|
-
this.collector?.addedExpression({
|
|
1243
|
-
...formulaExpr,
|
|
1244
|
-
});
|
|
1245
|
-
getOrCreate(this.childExpressionIdsByParentId, operator.id, () => new Set()).add(formulaId);
|
|
1246
|
-
getOrCreate(this.childPositionsByParentId, operator.id, () => new Set()).add(childPosition);
|
|
1173
|
+
this.registerFormulaBuffer(operator, operator.id, childPosition, formulaId);
|
|
1247
1174
|
}
|
|
1248
1175
|
// Mark the new operator (and ancestors), the new sibling, and the reparented existing node dirty.
|
|
1249
1176
|
// reparent() already marks the existing node dirty; mark the operator and sibling as well.
|
|
@@ -1273,18 +1200,7 @@ export class ExpressionManager {
|
|
|
1273
1200
|
if (children.length > 0) {
|
|
1274
1201
|
throw new Error(`Cannot delete expression "${expressionId}" — it still has ${children.length} children. Reparent them first.`);
|
|
1275
1202
|
}
|
|
1276
|
-
|
|
1277
|
-
this.childExpressionIdsByParentId
|
|
1278
|
-
.get(expression.parentId)
|
|
1279
|
-
?.delete(expressionId);
|
|
1280
|
-
this.childPositionsByParentId
|
|
1281
|
-
.get(expression.parentId)
|
|
1282
|
-
?.delete(expression.position);
|
|
1283
|
-
// Remove own tracking
|
|
1284
|
-
this.childExpressionIdsByParentId.delete(expressionId);
|
|
1285
|
-
this.childPositionsByParentId.delete(expressionId);
|
|
1286
|
-
// Remove from store
|
|
1287
|
-
this.expressions.delete(expressionId);
|
|
1203
|
+
this.detachExpression(expressionId, expression);
|
|
1288
1204
|
// Notify collector
|
|
1289
1205
|
this.collector?.removedExpression({
|
|
1290
1206
|
...expression,
|