@ifc-lite/mutations 2.1.0 → 2.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bulk-query-engine.d.ts +2 -4
- package/dist/bulk-query-engine.d.ts.map +1 -1
- package/dist/bulk-query-engine.js +2 -1
- package/dist/bulk-query-engine.js.map +1 -1
- package/dist/cooperative-clone.d.ts +4 -0
- package/dist/cooperative-clone.d.ts.map +1 -0
- package/dist/cooperative-clone.js +93 -0
- package/dist/cooperative-clone.js.map +1 -0
- package/dist/cooperative-control.d.ts +17 -0
- package/dist/cooperative-control.d.ts.map +1 -0
- package/dist/cooperative-control.js +67 -0
- package/dist/cooperative-control.js.map +1 -0
- package/dist/cooperative-operation-types.d.ts +53 -0
- package/dist/cooperative-operation-types.d.ts.map +1 -0
- package/dist/cooperative-operation-types.js +2 -0
- package/dist/cooperative-operation-types.js.map +1 -0
- package/dist/cooperative-overlay-access.d.ts +14 -0
- package/dist/cooperative-overlay-access.d.ts.map +1 -0
- package/dist/cooperative-overlay-access.js +12 -0
- package/dist/cooperative-overlay-access.js.map +1 -0
- package/dist/execute-entity-operation.d.ts +6 -0
- package/dist/execute-entity-operation.d.ts.map +1 -0
- package/dist/execute-entity-operation.js +39 -0
- package/dist/execute-entity-operation.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/mutable-overlay-state.d.ts +143 -0
- package/dist/mutable-overlay-state.d.ts.map +1 -0
- package/dist/mutable-overlay-state.js +115 -0
- package/dist/mutable-overlay-state.js.map +1 -0
- package/dist/mutable-property-view.d.ts +22 -84
- package/dist/mutable-property-view.d.ts.map +1 -1
- package/dist/mutable-property-view.js +86 -75
- package/dist/mutable-property-view.js.map +1 -1
- package/dist/overlay-value-equality.d.ts +3 -0
- package/dist/overlay-value-equality.d.ts.map +1 -0
- package/dist/overlay-value-equality.js +52 -0
- package/dist/overlay-value-equality.js.map +1 -0
- package/dist/prepare-entity-operations.d.ts +7 -0
- package/dist/prepare-entity-operations.d.ts.map +1 -0
- package/dist/prepare-entity-operations.js +117 -0
- package/dist/prepare-entity-operations.js.map +1 -0
- package/dist/store-editor.d.ts +12 -14
- package/dist/store-editor.d.ts.map +1 -1
- package/dist/store-editor.js +42 -0
- package/dist/store-editor.js.map +1 -1
- package/package.json +3 -2
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Bulk Query Engine
|
|
3
|
-
*
|
|
4
|
-
* Provides SQL-like query capabilities for selecting and modifying
|
|
5
|
-
* multiple IFC entities at once.
|
|
2
|
+
* Bulk Query Engine: SQL-like selection and modification for multiple
|
|
3
|
+
* IFC entities at once.
|
|
6
4
|
*/
|
|
7
5
|
import type { EntityTable, SpatialHierarchy, PropertyTable } from '@ifc-lite/data';
|
|
8
6
|
import { PropertyValueType } from '@ifc-lite/data';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bulk-query-engine.d.ts","sourceRoot":"","sources":["../src/bulk-query-engine.ts"],"names":[],"mappings":"AAIA
|
|
1
|
+
{"version":3,"file":"bulk-query-engine.d.ts","sourceRoot":"","sources":["../src/bulk-query-engine.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
3
3
|
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
|
|
4
4
|
import { checkMutationGuard } from './mutation-guard.js';
|
|
5
|
+
import { compileGuardedRegex } from '@ifc-lite/regex-guard';
|
|
5
6
|
/**
|
|
6
7
|
* Bulk Query Engine for mass property updates
|
|
7
8
|
*/
|
|
@@ -131,7 +132,7 @@ export class BulkQueryEngine {
|
|
|
131
132
|
}
|
|
132
133
|
// Filter by name pattern
|
|
133
134
|
if (criteria.namePattern && this.strings) {
|
|
134
|
-
const regex =
|
|
135
|
+
const regex = compileGuardedRegex(criteria.namePattern, 'i'); // caller-supplied: guard against ReDoS
|
|
135
136
|
candidates = candidates.filter((id) => {
|
|
136
137
|
const idx = this.findEntityIndex(id);
|
|
137
138
|
if (idx === -1)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bulk-query-engine.js","sourceRoot":"","sources":["../src/bulk-query-engine.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"bulk-query-engine.js","sourceRoot":"","sources":["../src/bulk-query-engine.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { CooperativeControl } from './cooperative-control.js';
|
|
2
|
+
/** The overlay's data vocabulary, not a polyfill for every structuredClone host type. */
|
|
3
|
+
export declare function cloneCooperatively<T>(input: T, control: CooperativeControl): Promise<T>;
|
|
4
|
+
//# sourceMappingURL=cooperative-clone.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cooperative-clone.d.ts","sourceRoot":"","sources":["../src/cooperative-clone.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAK9D,yFAAyF;AACzF,wBAAsB,kBAAkB,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,CAAC,CAAC,CAiE7F"}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
/** The overlay's data vocabulary, not a polyfill for every structuredClone host type. */
|
|
2
|
+
export async function cloneCooperatively(input, control) {
|
|
3
|
+
const memo = new WeakMap();
|
|
4
|
+
const frames = [];
|
|
5
|
+
let shouldPause = false;
|
|
6
|
+
const charge = (bytes) => {
|
|
7
|
+
const due = control.step(bytes);
|
|
8
|
+
shouldPause = shouldPause || due;
|
|
9
|
+
};
|
|
10
|
+
const copy = value => {
|
|
11
|
+
if (value === null || value === undefined || typeof value === 'boolean' || typeof value === 'number') {
|
|
12
|
+
charge(16);
|
|
13
|
+
return value;
|
|
14
|
+
}
|
|
15
|
+
if (typeof value === 'string') {
|
|
16
|
+
charge(16 + value.length * 2);
|
|
17
|
+
return value;
|
|
18
|
+
}
|
|
19
|
+
if (typeof value !== 'object')
|
|
20
|
+
throw new TypeError('Unsupported value in cooperative entity preparation.');
|
|
21
|
+
const known = memo.get(value);
|
|
22
|
+
if (known) {
|
|
23
|
+
charge(8);
|
|
24
|
+
return known;
|
|
25
|
+
}
|
|
26
|
+
charge(128);
|
|
27
|
+
if (value instanceof Map) {
|
|
28
|
+
const result = new Map();
|
|
29
|
+
memo.set(value, result);
|
|
30
|
+
frames.push((function* () {
|
|
31
|
+
for (const [key, item] of value) {
|
|
32
|
+
if (key !== null && typeof key === 'object')
|
|
33
|
+
throw new TypeError('Mutable map keys are unsupported during cooperative entity preparation.');
|
|
34
|
+
result.set(copy(key), copy(item));
|
|
35
|
+
yield;
|
|
36
|
+
}
|
|
37
|
+
})());
|
|
38
|
+
return result;
|
|
39
|
+
}
|
|
40
|
+
if (value instanceof Set) {
|
|
41
|
+
const result = new Set();
|
|
42
|
+
memo.set(value, result);
|
|
43
|
+
frames.push((function* () {
|
|
44
|
+
for (const item of value) {
|
|
45
|
+
if (item !== null && typeof item === 'object')
|
|
46
|
+
throw new TypeError('Mutable set members are unsupported during cooperative entity preparation.');
|
|
47
|
+
result.add(copy(item));
|
|
48
|
+
yield;
|
|
49
|
+
}
|
|
50
|
+
})());
|
|
51
|
+
return result;
|
|
52
|
+
}
|
|
53
|
+
const array = Array.isArray(value);
|
|
54
|
+
const prototype = Object.getPrototypeOf(value);
|
|
55
|
+
if (!array && prototype !== Object.prototype && prototype !== null) {
|
|
56
|
+
throw new TypeError('Cooperative entity preparation supports plain values, arrays, maps and sets only.');
|
|
57
|
+
}
|
|
58
|
+
if (array)
|
|
59
|
+
charge(value.length * 8);
|
|
60
|
+
const result = (array ? new Array(value.length) : Object.create(prototype));
|
|
61
|
+
memo.set(value, result);
|
|
62
|
+
frames.push((function* () {
|
|
63
|
+
// Incremental own-property enumeration preserves sparse arrays and extra
|
|
64
|
+
// enumerable properties without constructing Object.keys(hugeArray).
|
|
65
|
+
for (const key in value) {
|
|
66
|
+
charge(48 + key.length * 2);
|
|
67
|
+
if (!Object.hasOwn(value, key)) {
|
|
68
|
+
yield;
|
|
69
|
+
continue;
|
|
70
|
+
}
|
|
71
|
+
const descriptor = Object.getOwnPropertyDescriptor(value, key);
|
|
72
|
+
if (!descriptor || !('value' in descriptor))
|
|
73
|
+
throw new TypeError('Accessors are unsupported during cooperative entity preparation.');
|
|
74
|
+
Object.defineProperty(result, key, { value: copy(descriptor.value), enumerable: true, writable: true, configurable: true });
|
|
75
|
+
yield;
|
|
76
|
+
}
|
|
77
|
+
})());
|
|
78
|
+
return result;
|
|
79
|
+
};
|
|
80
|
+
const result = copy(input);
|
|
81
|
+
while (frames.length || shouldPause) {
|
|
82
|
+
if (shouldPause) {
|
|
83
|
+
shouldPause = false;
|
|
84
|
+
await control.pause();
|
|
85
|
+
}
|
|
86
|
+
control.checkAbort();
|
|
87
|
+
const frame = frames[frames.length - 1];
|
|
88
|
+
if (frame && frame.next().done)
|
|
89
|
+
frames.pop();
|
|
90
|
+
}
|
|
91
|
+
return result;
|
|
92
|
+
}
|
|
93
|
+
//# sourceMappingURL=cooperative-clone.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cooperative-clone.js","sourceRoot":"","sources":["../src/cooperative-clone.ts"],"names":[],"mappings":"AAQA,yFAAyF;AACzF,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAI,KAAQ,EAAE,OAA2B;IAC/E,MAAM,IAAI,GAAG,IAAI,OAAO,EAAkB,CAAC;IAC3C,MAAM,MAAM,GAAY,EAAE,CAAC;IAC3B,IAAI,WAAW,GAAG,KAAK,CAAC;IACxB,MAAM,MAAM,GAAG,CAAC,KAAa,EAAE,EAAE;QAC/B,MAAM,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAChC,WAAW,GAAG,WAAW,IAAI,GAAG,CAAC;IACnC,CAAC,CAAC;IACF,MAAM,IAAI,GAAS,KAAK,CAAC,EAAE;QACzB,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,IAAI,OAAO,KAAK,KAAK,SAAS,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YACrG,MAAM,CAAC,EAAE,CAAC,CAAC;YAAC,OAAO,KAAK,CAAC;QAC3B,CAAC;QACD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAAC,MAAM,CAAC,EAAE,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YAAC,OAAO,KAAK,CAAC;QAAC,CAAC;QAC/E,IAAI,OAAO,KAAK,KAAK,QAAQ;YAAE,MAAM,IAAI,SAAS,CAAC,sDAAsD,CAAC,CAAC;QAC3G,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAC9B,IAAI,KAAK,EAAE,CAAC;YAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YAAC,OAAO,KAAK,CAAC;QAAC,CAAC;QACvC,MAAM,CAAC,GAAG,CAAC,CAAC;QACZ,IAAI,KAAK,YAAY,GAAG,EAAE,CAAC;YACzB,MAAM,MAAM,GAAG,IAAI,GAAG,EAAoB,CAAC;YAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;YACpE,MAAM,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC;gBACpB,KAAK,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,KAAK,EAAE,CAAC;oBAChC,IAAI,GAAG,KAAK,IAAI,IAAI,OAAO,GAAG,KAAK,QAAQ;wBAAE,MAAM,IAAI,SAAS,CAAC,yEAAyE,CAAC,CAAC;oBAC5I,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;oBAAC,KAAK,CAAC;gBAC3C,CAAC;YACH,CAAC,CAAC,EAAE,CAAC,CAAC;YACN,OAAO,MAAM,CAAC;QAChB,CAAC;QACD,IAAI,KAAK,YAAY,GAAG,EAAE,CAAC;YACzB,MAAM,MAAM,GAAG,IAAI,GAAG,EAAW,CAAC;YAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;YAC3D,MAAM,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC;gBAAM,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;oBACrD,IAAI,IAAI,KAAK,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ;wBAAE,MAAM,IAAI,SAAS,CAAC,4EAA4E,CAAC,CAAC;oBACjJ,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;oBAAC,KAAK,CAAC;gBAChC,CAAC;YAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YACR,OAAO,MAAM,CAAC;QAChB,CAAC;QACD,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACnC,MAAM,SAAS,GAAG,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QAC/C,IAAI,CAAC,KAAK,IAAI,SAAS,KAAK,MAAM,CAAC,SAAS,IAAI,SAAS,KAAK,IAAI,EAAE,CAAC;YACnE,MAAM,IAAI,SAAS,CAAC,mFAAmF,CAAC,CAAC;QAC3G,CAAC;QACD,IAAI,KAAK;YAAE,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QACpC,MAAM,MAAM,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAA4B,CAAC;QACvG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QACxB,MAAM,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC;YACpB,yEAAyE;YACzE,qEAAqE;YACrE,KAAK,MAAM,GAAG,IAAI,KAAK,EAAE,CAAC;gBACxB,MAAM,CAAC,EAAE,GAAG,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;gBAC5B,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,CAAC;oBAAC,KAAK,CAAC;oBAAC,SAAS;gBAAC,CAAC;gBACpD,MAAM,UAAU,GAAG,MAAM,CAAC,wBAAwB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;gBAC/D,IAAI,CAAC,UAAU,IAAI,CAAC,CAAC,OAAO,IAAI,UAAU,CAAC;oBAAE,MAAM,IAAI,SAAS,CAAC,kEAAkE,CAAC,CAAC;gBACrI,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC;gBAC5H,KAAK,CAAC;YACR,CAAC;QACH,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC;IACF,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;IAC3B,OAAO,MAAM,CAAC,MAAM,IAAI,WAAW,EAAE,CAAC;QACpC,IAAI,WAAW,EAAE,CAAC;YAAC,WAAW,GAAG,KAAK,CAAC;YAAC,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;QAAC,CAAC;QAChE,OAAO,CAAC,UAAU,EAAE,CAAC;QACrB,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QACxC,IAAI,KAAK,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,IAAI;YAAE,MAAM,CAAC,GAAG,EAAE,CAAC;IAC/C,CAAC;IACD,OAAO,MAAW,CAAC;AACrB,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { EntityPreparationOptions } from './cooperative-operation-types.js';
|
|
2
|
+
export declare class CooperativeControl {
|
|
3
|
+
private work;
|
|
4
|
+
private bytes;
|
|
5
|
+
private sliceWork;
|
|
6
|
+
private deadline;
|
|
7
|
+
private readonly maxWork;
|
|
8
|
+
private readonly maxBytes;
|
|
9
|
+
private readonly sliceMs;
|
|
10
|
+
private readonly signal;
|
|
11
|
+
private readonly yieldTask;
|
|
12
|
+
constructor(options: EntityPreparationOptions);
|
|
13
|
+
checkAbort(): void;
|
|
14
|
+
step(bytes?: number): boolean;
|
|
15
|
+
pause(): Promise<void>;
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=cooperative-control.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cooperative-control.d.ts","sourceRoot":"","sources":["../src/cooperative-control.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAEjF,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,IAAI,CAAK;IACjB,OAAO,CAAC,KAAK,CAAK;IAClB,OAAO,CAAC,SAAS,CAAK;IACtB,OAAO,CAAC,QAAQ,CAAK;IACrB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA0B;IACjD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAsB;gBAEpC,OAAO,EAAE,wBAAwB;IAe7C,UAAU,IAAI,IAAI;IAIlB,IAAI,CAAC,KAAK,SAAI,GAAG,OAAO;IAalB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAmB7B"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
export class CooperativeControl {
|
|
2
|
+
work = 0;
|
|
3
|
+
bytes = 0;
|
|
4
|
+
sliceWork = 0;
|
|
5
|
+
deadline = 0;
|
|
6
|
+
maxWork;
|
|
7
|
+
maxBytes;
|
|
8
|
+
sliceMs;
|
|
9
|
+
signal;
|
|
10
|
+
yieldTask;
|
|
11
|
+
constructor(options) {
|
|
12
|
+
this.signal = options.signal;
|
|
13
|
+
this.maxWork = options.maxWork ?? 16_000_000;
|
|
14
|
+
this.maxBytes = options.maxBytes ?? 512 * 1024 * 1024;
|
|
15
|
+
this.sliceMs = options.maxSliceMs ?? 4;
|
|
16
|
+
if (!Number.isSafeInteger(this.maxWork) || this.maxWork <= 0
|
|
17
|
+
|| !Number.isSafeInteger(this.maxBytes) || this.maxBytes <= 0
|
|
18
|
+
|| !Number.isFinite(this.sliceMs) || this.sliceMs <= 0) {
|
|
19
|
+
throw new RangeError('Cooperative preparation budgets must be finite and positive.');
|
|
20
|
+
}
|
|
21
|
+
this.yieldTask = options.yieldTask ?? (() => new Promise(resolve => setTimeout(resolve, 0)));
|
|
22
|
+
this.deadline = performance.now() + this.sliceMs;
|
|
23
|
+
this.checkAbort();
|
|
24
|
+
}
|
|
25
|
+
checkAbort() {
|
|
26
|
+
if (this.signal?.aborted)
|
|
27
|
+
throw new DOMException('Entity preparation was cancelled.', 'AbortError');
|
|
28
|
+
}
|
|
29
|
+
step(bytes = 0) {
|
|
30
|
+
this.checkAbort();
|
|
31
|
+
this.work++;
|
|
32
|
+
this.bytes += bytes;
|
|
33
|
+
if (this.work > this.maxWork || this.bytes > this.maxBytes) {
|
|
34
|
+
throw new RangeError('Entity preparation exceeds its work or allocation budget.');
|
|
35
|
+
}
|
|
36
|
+
if (++this.sliceWork >= 256 && (this.sliceWork >= 4096 || performance.now() >= this.deadline)) {
|
|
37
|
+
return true;
|
|
38
|
+
}
|
|
39
|
+
return false;
|
|
40
|
+
}
|
|
41
|
+
async pause() {
|
|
42
|
+
this.checkAbort();
|
|
43
|
+
const signal = this.signal;
|
|
44
|
+
let onAbort;
|
|
45
|
+
try {
|
|
46
|
+
await new Promise((resolve, reject) => {
|
|
47
|
+
onAbort = () => reject(new DOMException('Entity preparation was cancelled.', 'AbortError'));
|
|
48
|
+
signal?.addEventListener('abort', onAbort, { once: true });
|
|
49
|
+
// Handle both a thrown scheduler error and abort inside the scheduler.
|
|
50
|
+
try {
|
|
51
|
+
Promise.resolve(this.yieldTask()).then(resolve, reject);
|
|
52
|
+
}
|
|
53
|
+
catch (error) {
|
|
54
|
+
reject(error);
|
|
55
|
+
}
|
|
56
|
+
});
|
|
57
|
+
this.checkAbort();
|
|
58
|
+
}
|
|
59
|
+
finally {
|
|
60
|
+
if (onAbort)
|
|
61
|
+
signal?.removeEventListener('abort', onAbort);
|
|
62
|
+
}
|
|
63
|
+
this.sliceWork = 0;
|
|
64
|
+
this.deadline = performance.now() + this.sliceMs;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
//# sourceMappingURL=cooperative-control.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cooperative-control.js","sourceRoot":"","sources":["../src/cooperative-control.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import type { IfcAttributeValue, Mutation, NewEntity } from './types.js';
|
|
2
|
+
export type EntityOperation = {
|
|
3
|
+
kind: 'create';
|
|
4
|
+
expressId: number;
|
|
5
|
+
type: string;
|
|
6
|
+
attributes: IfcAttributeValue[];
|
|
7
|
+
} | {
|
|
8
|
+
kind: 'setPositionalAttribute';
|
|
9
|
+
expressId: number;
|
|
10
|
+
index: number;
|
|
11
|
+
value: IfcAttributeValue;
|
|
12
|
+
skipHistory?: boolean;
|
|
13
|
+
} | {
|
|
14
|
+
kind: 'remove';
|
|
15
|
+
expressId: number;
|
|
16
|
+
};
|
|
17
|
+
export type EntityOperationEffect = {
|
|
18
|
+
kind: 'create';
|
|
19
|
+
entity: NewEntity;
|
|
20
|
+
} | {
|
|
21
|
+
kind: 'setPositionalAttribute';
|
|
22
|
+
expressId: number;
|
|
23
|
+
index: number;
|
|
24
|
+
present: boolean;
|
|
25
|
+
value: IfcAttributeValue | undefined;
|
|
26
|
+
} | {
|
|
27
|
+
kind: 'remove';
|
|
28
|
+
expressId: number;
|
|
29
|
+
entity: NewEntity | null;
|
|
30
|
+
};
|
|
31
|
+
export interface EntityPreparationOptions {
|
|
32
|
+
signal?: AbortSignal;
|
|
33
|
+
/** Must yield to a browser/host task, not only a microtask. No draft is passed. */
|
|
34
|
+
yieldTask?: () => Promise<void>;
|
|
35
|
+
/** Cooperative target, not a guarantee for uninterruptible host operations. Default 4ms. */
|
|
36
|
+
maxSliceMs?: number;
|
|
37
|
+
/** Cumulative visited values/entries across all snapshots. Default 16 million. */
|
|
38
|
+
maxWork?: number;
|
|
39
|
+
/** Conservative cumulative allocation accounting; not measured JS heap size. Default 512MiB. */
|
|
40
|
+
maxBytes?: number;
|
|
41
|
+
}
|
|
42
|
+
export interface PreparedEntityOperations {
|
|
43
|
+
/** Detached caller-owned records; changing these cannot edit publication/checkpoints. */
|
|
44
|
+
readonly effects: readonly EntityOperationEffect[];
|
|
45
|
+
readonly mutations: readonly Mutation[];
|
|
46
|
+
/** Exact synchronous live-overlay AND operation-input fence. Linear in their size. */
|
|
47
|
+
validate(): void;
|
|
48
|
+
commit(): void;
|
|
49
|
+
rollback(): void;
|
|
50
|
+
/** Idempotent. Before commit discards work; after commit relinquishes rollback. */
|
|
51
|
+
dispose(): void;
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=cooperative-operation-types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cooperative-operation-types.d.ts","sourceRoot":"","sources":["../src/cooperative-operation-types.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,iBAAiB,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAEzE,MAAM,MAAM,eAAe,GACvB;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,iBAAiB,EAAE,CAAA;CAAE,GACpF;IAAE,IAAI,EAAE,wBAAwB,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,iBAAiB,CAAC;IAAC,WAAW,CAAC,EAAE,OAAO,CAAA;CAAE,GACrH;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC;AAE1C,MAAM,MAAM,qBAAqB,GAC7B;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,MAAM,EAAE,SAAS,CAAA;CAAE,GACrC;IAAE,IAAI,EAAE,wBAAwB,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,iBAAiB,GAAG,SAAS,CAAA;CAAE,GAC5H;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAAA;CAAE,CAAC;AAEpE,MAAM,WAAW,wBAAwB;IACvC,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,mFAAmF;IACnF,SAAS,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAChC,4FAA4F;IAC5F,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,kFAAkF;IAClF,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,gGAAgG;IAChG,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,wBAAwB;IACvC,yFAAyF;IACzF,QAAQ,CAAC,OAAO,EAAE,SAAS,qBAAqB,EAAE,CAAC;IACnD,QAAQ,CAAC,SAAS,EAAE,SAAS,QAAQ,EAAE,CAAC;IACxC,sFAAsF;IACtF,QAAQ,IAAI,IAAI,CAAC;IACjB,MAAM,IAAI,IAAI,CAAC;IACf,QAAQ,IAAI,IAAI,CAAC;IACjB,mFAAmF;IACnF,OAAO,IAAI,IAAI,CAAC;CACjB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cooperative-operation-types.js","sourceRoot":"","sources":["../src/cooperative-operation-types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { MutablePropertyView } from './mutable-property-view.js';
|
|
2
|
+
import type { MutableOverlayState } from './mutable-overlay-state.js';
|
|
3
|
+
export type OverlaySnapshot = ReturnType<MutableOverlayState['copyOverlayState']>;
|
|
4
|
+
interface OverlayAccess {
|
|
5
|
+
capture(): OverlaySnapshot;
|
|
6
|
+
matches(snapshot: OverlaySnapshot): boolean;
|
|
7
|
+
draft(snapshot: OverlaySnapshot): MutablePropertyView;
|
|
8
|
+
publish(snapshot: OverlaySnapshot): void;
|
|
9
|
+
}
|
|
10
|
+
/** Package-private capability; no mutable graph is exposed by the public handle. */
|
|
11
|
+
export declare function registerCooperativeOverlay(view: MutablePropertyView, capabilities: OverlayAccess): void;
|
|
12
|
+
export declare function cooperativeOverlay(view: MutablePropertyView): OverlayAccess;
|
|
13
|
+
export {};
|
|
14
|
+
//# sourceMappingURL=cooperative-overlay-access.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cooperative-overlay-access.d.ts","sourceRoot":"","sources":["../src/cooperative-overlay-access.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAEtE,MAAM,MAAM,eAAe,GAAG,UAAU,CAAC,mBAAmB,CAAC,kBAAkB,CAAC,CAAC,CAAC;AAClF,UAAU,aAAa;IACrB,OAAO,IAAI,eAAe,CAAC;IAC3B,OAAO,CAAC,QAAQ,EAAE,eAAe,GAAG,OAAO,CAAC;IAC5C,KAAK,CAAC,QAAQ,EAAE,eAAe,GAAG,mBAAmB,CAAC;IACtD,OAAO,CAAC,QAAQ,EAAE,eAAe,GAAG,IAAI,CAAC;CAC1C;AAED,oFAAoF;AACpF,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,mBAAmB,EAAE,YAAY,EAAE,aAAa,GAAG,IAAI,CAEvG;AACD,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,mBAAmB,GAAG,aAAa,CAI3E"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
const access = new WeakMap();
|
|
2
|
+
/** Package-private capability; no mutable graph is exposed by the public handle. */
|
|
3
|
+
export function registerCooperativeOverlay(view, capabilities) {
|
|
4
|
+
access.set(view, capabilities);
|
|
5
|
+
}
|
|
6
|
+
export function cooperativeOverlay(view) {
|
|
7
|
+
const result = access.get(view);
|
|
8
|
+
if (!result)
|
|
9
|
+
throw new Error('Unregistered mutation view.');
|
|
10
|
+
return result;
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=cooperative-overlay-access.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cooperative-overlay-access.js","sourceRoot":"","sources":["../src/cooperative-overlay-access.ts"],"names":[],"mappings":"AAaA,MAAM,MAAM,GAAG,IAAI,OAAO,EAAsC,CAAC;AACjE,oFAAoF;AACpF,MAAM,UAAU,0BAA0B,CAAC,IAAyB,EAAE,YAA2B;IAC/F,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;AACjC,CAAC;AACD,MAAM,UAAU,kBAAkB,CAAC,IAAyB;IAC1D,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAChC,IAAI,CAAC,MAAM;QAAE,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;IAC5D,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { StoreEditor } from './store-editor.js';
|
|
2
|
+
import type { MutablePropertyView } from './mutable-property-view.js';
|
|
3
|
+
import type { EntityOperation, EntityOperationEffect } from './cooperative-operation-types.js';
|
|
4
|
+
/** Reuse the canonical editor, including type normalization, allocation and removal rules. */
|
|
5
|
+
export declare function executeEntityOperation(editor: StoreEditor, view: MutablePropertyView, operation: EntityOperation): EntityOperationEffect;
|
|
6
|
+
//# sourceMappingURL=execute-entity-operation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"execute-entity-operation.d.ts","sourceRoot":"","sources":["../src/execute-entity-operation.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,KAAK,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AAE/F,8FAA8F;AAC9F,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,mBAAmB,EAAE,SAAS,EAAE,eAAe,GAAG,qBAAqB,CAgCxI"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/** Reuse the canonical editor, including type normalization, allocation and removal rules. */
|
|
2
|
+
export function executeEntityOperation(editor, view, operation) {
|
|
3
|
+
if (!operation || !Number.isSafeInteger(operation.expressId) || operation.expressId <= 0) {
|
|
4
|
+
throw new TypeError('Entity operations require a positive integral expressId.');
|
|
5
|
+
}
|
|
6
|
+
switch (operation.kind) {
|
|
7
|
+
case 'create': {
|
|
8
|
+
if (operation.expressId !== view.peekNextExpressId() || !Array.isArray(operation.attributes)) {
|
|
9
|
+
throw new Error('Entity operation allocation changed or attributes are invalid.');
|
|
10
|
+
}
|
|
11
|
+
const entity = editor.addEntity(operation.type, operation.attributes);
|
|
12
|
+
if (entity.expressId !== operation.expressId)
|
|
13
|
+
throw new Error('Entity operation allocation changed.');
|
|
14
|
+
return { kind: 'create', entity: editor.getNewEntity(entity.expressId) };
|
|
15
|
+
}
|
|
16
|
+
case 'setPositionalAttribute': {
|
|
17
|
+
if (!editor.hasEntity(operation.expressId) || !Number.isSafeInteger(operation.index) || operation.index < 0) {
|
|
18
|
+
throw new Error('Invalid positional entity operation target.');
|
|
19
|
+
}
|
|
20
|
+
const attributes = view.getPositionalMutationsForEntity(operation.expressId);
|
|
21
|
+
const effect = { kind: operation.kind, expressId: operation.expressId,
|
|
22
|
+
index: operation.index, present: attributes?.has(operation.index) ?? false, value: attributes?.get(operation.index) };
|
|
23
|
+
// The view owns skip-history semantics; StoreEditor owns ordinary writes.
|
|
24
|
+
if (operation.skipHistory)
|
|
25
|
+
view.setPositionalAttribute(operation.expressId, operation.index, operation.value, true);
|
|
26
|
+
else
|
|
27
|
+
editor.setPositionalAttribute(operation.expressId, operation.index, operation.value);
|
|
28
|
+
return effect;
|
|
29
|
+
}
|
|
30
|
+
case 'remove': {
|
|
31
|
+
const entity = editor.getNewEntity(operation.expressId);
|
|
32
|
+
if (!editor.removeEntity(operation.expressId))
|
|
33
|
+
throw new Error(`Cannot remove missing IFC entity #${operation.expressId}.`);
|
|
34
|
+
return { kind: operation.kind, expressId: operation.expressId, entity };
|
|
35
|
+
}
|
|
36
|
+
default: throw new TypeError('Unsupported entity operation.');
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=execute-entity-operation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"execute-entity-operation.js","sourceRoot":"","sources":["../src/execute-entity-operation.ts"],"names":[],"mappings":"AAOA,8FAA8F;AAC9F,MAAM,UAAU,sBAAsB,CAAC,MAAmB,EAAE,IAAyB,EAAE,SAA0B;IAC/G,IAAI,CAAC,SAAS,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,SAAS,CAAC,SAAS,IAAI,CAAC,EAAE,CAAC;QACzF,MAAM,IAAI,SAAS,CAAC,0DAA0D,CAAC,CAAC;IAClF,CAAC;IACD,QAAQ,SAAS,CAAC,IAAI,EAAE,CAAC;QACvB,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,IAAI,SAAS,CAAC,SAAS,KAAK,IAAI,CAAC,iBAAiB,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE,CAAC;gBAC7F,MAAM,IAAI,KAAK,CAAC,gEAAgE,CAAC,CAAC;YACpF,CAAC;YACD,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC,UAAU,CAAC,CAAC;YACtE,IAAI,MAAM,CAAC,SAAS,KAAK,SAAS,CAAC,SAAS;gBAAE,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;YACtG,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,SAAS,CAAE,EAAE,CAAC;QAC5E,CAAC;QACD,KAAK,wBAAwB,CAAC,CAAC,CAAC;YAC9B,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,SAAS,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC;gBAC5G,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;YACjE,CAAC;YACD,MAAM,UAAU,GAAG,IAAI,CAAC,+BAA+B,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;YAC7E,MAAM,MAAM,GAA0B,EAAE,IAAI,EAAE,SAAS,CAAC,IAAI,EAAE,SAAS,EAAE,SAAS,CAAC,SAAS;gBAC1F,KAAK,EAAE,SAAS,CAAC,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;YACxH,0EAA0E;YAC1E,IAAI,SAAS,CAAC,WAAW;gBAAE,IAAI,CAAC,sBAAsB,CAAC,SAAS,CAAC,SAAS,EAAE,SAAS,CAAC,KAAK,EAAE,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;;gBAC/G,MAAM,CAAC,sBAAsB,CAAC,SAAS,CAAC,SAAS,EAAE,SAAS,CAAC,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC;YAC1F,OAAO,MAAM,CAAC;QAChB,CAAC;QACD,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,MAAM,MAAM,GAAG,MAAM,CAAC,YAAY,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;YACxD,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,SAAS,CAAC,SAAS,CAAC;gBAAE,MAAM,IAAI,KAAK,CAAC,qCAAqC,SAAS,CAAC,SAAS,GAAG,CAAC,CAAC;YAC5H,OAAO,EAAE,IAAI,EAAE,SAAS,CAAC,IAAI,EAAE,SAAS,EAAE,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,CAAC;QAC1E,CAAC;QACD,OAAO,CAAC,CAAC,MAAM,IAAI,SAAS,CAAC,+BAA+B,CAAC,CAAC;IAChE,CAAC;AACH,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -9,4 +9,5 @@ export { MutationGuardError, type MutationGuard } from './mutation-guard.js';
|
|
|
9
9
|
export { BulkQueryEngine, type SelectionCriteria, type BulkAction, type BulkQuery, type BulkQueryPreview, type BulkQueryResult, type PropertyFilter, type FilterOperator, } from './bulk-query-engine.js';
|
|
10
10
|
export { CsvConnector, type CsvRow, type MatchStrategy, type PropertyMapping, type DataMapping, type MatchResult, type ImportStats, type ImportProgress, type CsvParseOptions, } from './csv-connector.js';
|
|
11
11
|
export { changeSetToOps, deriveEntityIdentity, type ChangeSetOp, type ChangeSetOpsResult, type DerivedIdentityEntry, type EntityIdentityResolver, } from './change-set-to-ops.js';
|
|
12
|
+
export type { EntityOperation, EntityOperationEffect, EntityPreparationOptions, PreparedEntityOperations } from './cooperative-operation-types.js';
|
|
12
13
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,cAAc,YAAY,CAAC;AAC3B,OAAO,EACL,mBAAmB,EACnB,KAAK,iBAAiB,EACtB,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,GACxB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACL,WAAW,EACX,mBAAmB,EACnB,uBAAuB,EACvB,KAAK,oBAAoB,GAC1B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,kBAAkB,EAAE,KAAK,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAC7E,OAAO,EACL,eAAe,EACf,KAAK,iBAAiB,EACtB,KAAK,UAAU,EACf,KAAK,SAAS,EACd,KAAK,gBAAgB,EACrB,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,KAAK,cAAc,GACpB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,YAAY,EACZ,KAAK,MAAM,EACX,KAAK,aAAa,EAClB,KAAK,eAAe,EACpB,KAAK,WAAW,EAChB,KAAK,WAAW,EAChB,KAAK,WAAW,EAChB,KAAK,cAAc,EACnB,KAAK,eAAe,GACrB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,cAAc,EACd,oBAAoB,EACpB,KAAK,WAAW,EAChB,KAAK,kBAAkB,EACvB,KAAK,oBAAoB,EACzB,KAAK,sBAAsB,GAC5B,MAAM,wBAAwB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,cAAc,YAAY,CAAC;AAC3B,OAAO,EACL,mBAAmB,EACnB,KAAK,iBAAiB,EACtB,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,GACxB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACL,WAAW,EACX,mBAAmB,EACnB,uBAAuB,EACvB,KAAK,oBAAoB,GAC1B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,kBAAkB,EAAE,KAAK,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAC7E,OAAO,EACL,eAAe,EACf,KAAK,iBAAiB,EACtB,KAAK,UAAU,EACf,KAAK,SAAS,EACd,KAAK,gBAAgB,EACrB,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,KAAK,cAAc,GACpB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,YAAY,EACZ,KAAK,MAAM,EACX,KAAK,aAAa,EAClB,KAAK,eAAe,EACpB,KAAK,WAAW,EAChB,KAAK,WAAW,EAChB,KAAK,WAAW,EAChB,KAAK,cAAc,EACnB,KAAK,eAAe,GACrB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,cAAc,EACd,oBAAoB,EACpB,KAAK,WAAW,EAChB,KAAK,kBAAkB,EACvB,KAAK,oBAAoB,EACzB,KAAK,sBAAsB,GAC5B,MAAM,wBAAwB,CAAC;AAEhC,YAAY,EAAE,eAAe,EAAE,qBAAqB,EAAE,wBAAwB,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC"}
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
import type { PropertySet, QuantitySet } from '@ifc-lite/data';
|
|
2
|
+
import type { IfcAttributeValue, PropertyMutation, QuantityMutation, AttributeMutation, EntityTypeMutation, Mutation, NewEntity } from './types.js';
|
|
3
|
+
/**
|
|
4
|
+
* Everything `deleteEntity` purges out of the live overlay maps for a
|
|
5
|
+
* forgotten-created entity, captured so `restoreNewEntity` can put it all
|
|
6
|
+
* back. See the field doc on `MutablePropertyView.forgottenEntityOverlay`.
|
|
7
|
+
*/
|
|
8
|
+
export interface ForgottenEntityOverlay {
|
|
9
|
+
propertyEntries: Array<[key: string, mutation: PropertyMutation]>;
|
|
10
|
+
quantityEntries: Array<[key: string, mutation: QuantityMutation]>;
|
|
11
|
+
attributeEntries: Array<[key: string, mutation: AttributeMutation]>;
|
|
12
|
+
positionalAttrs: Map<number, IfcAttributeValue> | null;
|
|
13
|
+
typeMutation: EntityTypeMutation | null;
|
|
14
|
+
newPsets: Map<string, PropertySet> | null;
|
|
15
|
+
newQsets: Map<string, QuantitySet> | null;
|
|
16
|
+
deletedPsetKeys: string[];
|
|
17
|
+
deletedQsetKeys: string[];
|
|
18
|
+
/** This entity's own records, removed from the append-only `mutationHistory`. */
|
|
19
|
+
historyEntries: Mutation[];
|
|
20
|
+
}
|
|
21
|
+
/** Internal mutable overlay state; source tables and extractors are never copied. */
|
|
22
|
+
export declare class MutableOverlayState {
|
|
23
|
+
protected propertyMutations: Map<string, PropertyMutation>;
|
|
24
|
+
protected quantityMutations: Map<string, QuantityMutation>;
|
|
25
|
+
/**
|
|
26
|
+
* Secondary indices: entityId → mutation keys for that entity.
|
|
27
|
+
*
|
|
28
|
+
* `getForEntity` previously iterated the entire `propertyMutations` /
|
|
29
|
+
* `quantityMutations` map per pset to find newly-added properties — O(M·P)
|
|
30
|
+
* per call. These indices keep that step O(M_entity) instead.
|
|
31
|
+
*/
|
|
32
|
+
protected propertyKeysByEntity: Map<number, Set<string>>;
|
|
33
|
+
protected quantityKeysByEntity: Map<number, Set<string>>;
|
|
34
|
+
protected attributeKeysByEntity: Map<number, Set<string>>;
|
|
35
|
+
protected deletedPsets: Set<string>;
|
|
36
|
+
protected deletedQsets: Set<string>;
|
|
37
|
+
protected newPsets: Map<number, Map<string, PropertySet>>;
|
|
38
|
+
protected newQsets: Map<number, Map<string, QuantitySet>>;
|
|
39
|
+
protected attributeMutations: Map<string, AttributeMutation>;
|
|
40
|
+
protected positionalAttrMutations: Map<number, Map<number, IfcAttributeValue>>;
|
|
41
|
+
protected typeMutations: Map<number, EntityTypeMutation>;
|
|
42
|
+
protected newEntities: Map<number, NewEntity>;
|
|
43
|
+
protected tombstones: Set<number>;
|
|
44
|
+
/**
|
|
45
|
+
* Ids `createEntity` allocated and `deleteEntity` then forgot (removed from
|
|
46
|
+
* `newEntities`, per that method's "existing entities are tombstoned; new
|
|
47
|
+
* entities are simply forgotten" contract). Tracked separately so
|
|
48
|
+
* `getEffectiveChanges()` / `collectEffectiveChanges` can tell "overlay-created
|
|
49
|
+
* then forgotten" apart from "an ordinary source-buffer entity" — both are
|
|
50
|
+
* otherwise indistinguishable, being simply absent from `newEntities`.
|
|
51
|
+
* `restoreNewEntity` (the undo-of-delete counterpart) clears the id back out.
|
|
52
|
+
*/
|
|
53
|
+
protected forgottenCreatedEntities: Set<number>;
|
|
54
|
+
/**
|
|
55
|
+
* Snapshot of a forgotten-created entity's overlay rows, stashed by
|
|
56
|
+
* `deleteEntity` and restored by `restoreNewEntity`.
|
|
57
|
+
*
|
|
58
|
+
* `deleteEntity` on an overlay-created entity does more than drop it from
|
|
59
|
+
* `newEntities` — it also PURGES every other overlay entry the entity left
|
|
60
|
+
* behind (property/quantity/attribute/positional/type mutations, its
|
|
61
|
+
* `newPsets`/`newQsets` entries, and its own `mutationHistory` records).
|
|
62
|
+
* Without that purge, an entity that was created, edited, then deleted
|
|
63
|
+
* before export left a dangling reference: `StepExporter` derives its
|
|
64
|
+
* property/quantity work list from `getMutations()` (the append-only
|
|
65
|
+
* history) and reads `getForEntity()` / `getQuantitiesForEntity()` straight
|
|
66
|
+
* off `newPsets` / `newQsets` — neither of which the review-side
|
|
67
|
+
* `forgottenCreatedEntities` filter in `effective-changes.ts` touches. The
|
|
68
|
+
* review dialog looked clean while the exported file still contained an
|
|
69
|
+
* `IFCPROPERTYSET` + `IFCRELDEFINESBYPROPERTIES` pointing at an expressId
|
|
70
|
+
* that was never actually created (maintainer finding on #1967).
|
|
71
|
+
*
|
|
72
|
+
* The purged data is captured here, not discarded, because `restoreNewEntity`
|
|
73
|
+
* (undo of the delete) must bring it all back — rows AND count AND what the
|
|
74
|
+
* exporter would see — not just re-add the bare `NewEntity` record.
|
|
75
|
+
*/
|
|
76
|
+
protected forgottenEntityOverlay: Map<number, ForgottenEntityOverlay>;
|
|
77
|
+
/**
|
|
78
|
+
* Overlay-entity → source-entity aliases for property/quantity reads.
|
|
79
|
+
*
|
|
80
|
+
* When the viewer duplicates an existing entity, the new entity has
|
|
81
|
+
* no row in the parsed property table — `getBasePropertiesForEntity`
|
|
82
|
+
* would return `[]` and the property panel would show "No property
|
|
83
|
+
* sets". Aliasing redirects the BASE read to the source entity so
|
|
84
|
+
* the duplicate inherits its psets / qsets visually, while overlay
|
|
85
|
+
* mutations (overrides, creates, deletes) stay scoped to the
|
|
86
|
+
* overlay-entity's own id — so editing a property on the duplicate
|
|
87
|
+
* doesn't bleed into the source.
|
|
88
|
+
*
|
|
89
|
+
* Aliases follow at most one hop (no chains). They never affect
|
|
90
|
+
* STEP export — the export overlay emits the duplicate exactly as
|
|
91
|
+
* the StoreEditor recorded it, with whatever new IfcRel*ByProperties
|
|
92
|
+
* the caller chose to add.
|
|
93
|
+
*/
|
|
94
|
+
protected entityAliases: Map<number, number>;
|
|
95
|
+
protected nextAllocatedId: number;
|
|
96
|
+
protected mutationHistory: Mutation[];
|
|
97
|
+
/** Borrowed only for synchronous comparison; never returned to callers. */
|
|
98
|
+
protected overlayState(): {
|
|
99
|
+
propertyMutations: Map<string, PropertyMutation>;
|
|
100
|
+
quantityMutations: Map<string, QuantityMutation>;
|
|
101
|
+
propertyKeysByEntity: Map<number, Set<string>>;
|
|
102
|
+
quantityKeysByEntity: Map<number, Set<string>>;
|
|
103
|
+
attributeKeysByEntity: Map<number, Set<string>>;
|
|
104
|
+
deletedPsets: Set<string>;
|
|
105
|
+
deletedQsets: Set<string>;
|
|
106
|
+
newPsets: Map<number, Map<string, PropertySet>>;
|
|
107
|
+
newQsets: Map<number, Map<string, QuantitySet>>;
|
|
108
|
+
attributeMutations: Map<string, AttributeMutation>;
|
|
109
|
+
positionalAttrMutations: Map<number, Map<number, IfcAttributeValue>>;
|
|
110
|
+
typeMutations: Map<number, EntityTypeMutation>;
|
|
111
|
+
newEntities: Map<number, NewEntity>;
|
|
112
|
+
tombstones: Set<number>;
|
|
113
|
+
forgottenCreatedEntities: Set<number>;
|
|
114
|
+
forgottenEntityOverlay: Map<number, ForgottenEntityOverlay>;
|
|
115
|
+
entityAliases: Map<number, number>;
|
|
116
|
+
nextAllocatedId: number;
|
|
117
|
+
mutationHistory: Mutation[];
|
|
118
|
+
};
|
|
119
|
+
protected copyOverlayState(): {
|
|
120
|
+
propertyMutations: Map<string, PropertyMutation>;
|
|
121
|
+
quantityMutations: Map<string, QuantityMutation>;
|
|
122
|
+
propertyKeysByEntity: Map<number, Set<string>>;
|
|
123
|
+
quantityKeysByEntity: Map<number, Set<string>>;
|
|
124
|
+
attributeKeysByEntity: Map<number, Set<string>>;
|
|
125
|
+
deletedPsets: Set<string>;
|
|
126
|
+
deletedQsets: Set<string>;
|
|
127
|
+
newPsets: Map<number, Map<string, PropertySet>>;
|
|
128
|
+
newQsets: Map<number, Map<string, QuantitySet>>;
|
|
129
|
+
attributeMutations: Map<string, AttributeMutation>;
|
|
130
|
+
positionalAttrMutations: Map<number, Map<number, IfcAttributeValue>>;
|
|
131
|
+
typeMutations: Map<number, EntityTypeMutation>;
|
|
132
|
+
newEntities: Map<number, NewEntity>;
|
|
133
|
+
tombstones: Set<number>;
|
|
134
|
+
forgottenCreatedEntities: Set<number>;
|
|
135
|
+
forgottenEntityOverlay: Map<number, ForgottenEntityOverlay>;
|
|
136
|
+
entityAliases: Map<number, number>;
|
|
137
|
+
nextAllocatedId: number;
|
|
138
|
+
mutationHistory: Mutation[];
|
|
139
|
+
};
|
|
140
|
+
protected restoreOverlayState(state: ReturnType<MutableOverlayState['copyOverlayState']>): void;
|
|
141
|
+
protected matchesOverlayState(state: ReturnType<MutableOverlayState['copyOverlayState']>): boolean;
|
|
142
|
+
}
|
|
143
|
+
//# sourceMappingURL=mutable-overlay-state.d.ts.map
|