@ifc-lite/collab 0.4.2 → 0.6.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/branch/branch.d.ts.map +1 -1
- package/dist/branch/branch.js +16 -7
- package/dist/branch/branch.js.map +1 -1
- package/dist/doc/entity.d.ts +12 -6
- package/dist/doc/entity.d.ts.map +1 -1
- package/dist/doc/entity.js +23 -2
- package/dist/doc/entity.js.map +1 -1
- package/dist/doc/geometry.d.ts +33 -0
- package/dist/doc/geometry.d.ts.map +1 -1
- package/dist/doc/geometry.js +53 -0
- package/dist/doc/geometry.js.map +1 -1
- package/dist/geometry/blob-store.d.ts +20 -3
- package/dist/geometry/blob-store.d.ts.map +1 -1
- package/dist/geometry/blob-store.js +10 -4
- package/dist/geometry/blob-store.js.map +1 -1
- package/dist/geometry/gc.d.ts +15 -1
- package/dist/geometry/gc.d.ts.map +1 -1
- package/dist/geometry/gc.js +15 -5
- package/dist/geometry/gc.js.map +1 -1
- package/dist/session.d.ts.map +1 -1
- package/dist/session.js +44 -20
- package/dist/session.js.map +1 -1
- package/dist/snapshot/from-ifcx.d.ts +35 -0
- package/dist/snapshot/from-ifcx.d.ts.map +1 -1
- package/dist/snapshot/from-ifcx.js +243 -62
- package/dist/snapshot/from-ifcx.js.map +1 -1
- package/dist/snapshot/from-step.d.ts.map +1 -1
- package/dist/snapshot/from-step.js +7 -2
- package/dist/snapshot/from-step.js.map +1 -1
- package/dist/snapshot/index.d.ts +1 -1
- package/dist/snapshot/index.d.ts.map +1 -1
- package/dist/snapshot/index.js +1 -1
- package/dist/snapshot/index.js.map +1 -1
- package/dist/snapshot/structured-attrs.d.ts +18 -0
- package/dist/snapshot/structured-attrs.d.ts.map +1 -1
- package/dist/snapshot/structured-attrs.js +49 -0
- package/dist/snapshot/structured-attrs.js.map +1 -1
- package/dist/snapshot/to-ifcx.d.ts.map +1 -1
- package/dist/snapshot/to-ifcx.js +16 -2
- package/dist/snapshot/to-ifcx.js.map +1 -1
- package/package.json +8 -7
package/dist/geometry/gc.js
CHANGED
|
@@ -67,6 +67,7 @@ export async function planBlobSweep(store, referenced, options = {}) {
|
|
|
67
67
|
const now = options.now ? options.now() : Date.now();
|
|
68
68
|
const all = await store.list();
|
|
69
69
|
const drop = [];
|
|
70
|
+
const dropByteLengths = {};
|
|
70
71
|
let reclaim = 0;
|
|
71
72
|
for (const hash of all) {
|
|
72
73
|
if (referenced.has(hash))
|
|
@@ -83,16 +84,18 @@ export async function planBlobSweep(store, referenced, options = {}) {
|
|
|
83
84
|
if (!options.sweepUnknownAge)
|
|
84
85
|
continue;
|
|
85
86
|
drop.push(hash);
|
|
87
|
+
dropByteLengths[hash] = meta.byteLength;
|
|
86
88
|
reclaim += meta.byteLength;
|
|
87
89
|
continue;
|
|
88
90
|
}
|
|
89
91
|
const ageMs = Math.max(0, now - new Date(meta.uploadedAt).getTime());
|
|
90
92
|
if (ageMs >= epochMs) {
|
|
91
93
|
drop.push(hash);
|
|
94
|
+
dropByteLengths[hash] = meta.byteLength;
|
|
92
95
|
reclaim += meta.byteLength;
|
|
93
96
|
}
|
|
94
97
|
}
|
|
95
|
-
return { drop, reclaimBytes: reclaim };
|
|
98
|
+
return { drop, reclaimBytes: reclaim, dropByteLengths };
|
|
96
99
|
}
|
|
97
100
|
async function metaFromGet(store, hash) {
|
|
98
101
|
// Prefer cheap stat() if the backend offers it (size + uploadedAt
|
|
@@ -113,15 +116,22 @@ async function metaFromGet(store, hash) {
|
|
|
113
116
|
// `sweepUnknownAge`. See planBlobSweep.
|
|
114
117
|
};
|
|
115
118
|
}
|
|
116
|
-
/**
|
|
119
|
+
/**
|
|
120
|
+
* Apply a sweep decision: delete the candidates from `store`.
|
|
121
|
+
*
|
|
122
|
+
* Returns the bytes actually reclaimed — i.e. only for hashes whose
|
|
123
|
+
* `store.delete()` reported success. A failed delete (backend race,
|
|
124
|
+
* 404, transient error) must not be counted as freed: callers use this
|
|
125
|
+
* return value for capacity accounting, and overstating it hides a
|
|
126
|
+
* blob that is still consuming storage.
|
|
127
|
+
*/
|
|
117
128
|
export async function sweepBlobs(store, decision) {
|
|
118
129
|
let freed = 0;
|
|
119
130
|
for (const hash of decision.drop) {
|
|
120
131
|
const ok = await store.delete(hash);
|
|
121
132
|
if (ok)
|
|
122
|
-
freed +=
|
|
133
|
+
freed += decision.dropByteLengths[hash] ?? 0;
|
|
123
134
|
}
|
|
124
|
-
|
|
125
|
-
return decision.reclaimBytes;
|
|
135
|
+
return freed;
|
|
126
136
|
}
|
|
127
137
|
//# sourceMappingURL=gc.js.map
|
package/dist/geometry/gc.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gc.js","sourceRoot":"","sources":["../../src/geometry/gc.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AA4B/D,OAAO,EACL,UAAU,EACV,YAAY,EACZ,WAAW,EACX,WAAW,GACZ,MAAM,kBAAkB,CAAC;AAG1B;;;;;;;;GAQG;AACH,MAAM,UAAU,2BAA2B,CAAC,GAAU;IACpD,MAAM,UAAU,GAAG,IAAI,GAAG,EAAY,CAAC;IACvC,MAAM,IAAI,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;IAC9B,MAAM,IAAI,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;IAE9B,mEAAmE;IACnE,IAAI,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE,EAAE;QAC1B,MAAM,MAAM,GAAG,UAA4B,CAAC;QAC5C,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,YAAY,CAA+B,CAAC;QACjF,IAAI,CAAC,MAAM;YAAE,OAAO;QACpB,yEAAyE;QACzE,sDAAsD;QACtD,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACrC,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;YACnC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC;YAC1D,CAAC,CAAC,OAAO,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,QAAQ;gBACxC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAW,CAAC;gBAClC,CAAC,CAAC,EAAE,CAAC;QACT,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,yBAAyB,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAA+B,EAAE,UAAU,CAAC,CAAC;QACxF,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,mEAAmE;IACnE,sEAAsE;IACtE,qEAAqE;IACrE,4BAA4B;IAC5B,IAAI,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,EAAE;QAC3B,yBAAyB,CAAC,WAA6B,EAAE,UAAU,CAAC,CAAC;IACvE,CAAC,CAAC,CAAC;IAEH,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,SAAS,yBAAyB,CAChC,IAAgC,EAChC,GAAkB;IAElB,IAAI,CAAC,IAAI;QAAE,OAAO;IAClB,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;IAClD,IAAI,OAAO,QAAQ,KAAK,QAAQ;QAAE,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACpD,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,MAAM,CAA+B,CAAC;IAC3E,IAAI,CAAC,MAAM;QAAE,OAAO;IACpB,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;QACvB,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC;YAAE,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAChF,CAAC,CAAC,CAAC;AACL,CAAC;
|
|
1
|
+
{"version":3,"file":"gc.js","sourceRoot":"","sources":["../../src/geometry/gc.ts"],"names":[],"mappings":"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"}
|
package/dist/session.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"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"}
|
package/dist/session.js
CHANGED
|
@@ -33,27 +33,51 @@ export async function createCollabSession(opts) {
|
|
|
33
33
|
statusListeners.forEach((l) => l(s));
|
|
34
34
|
};
|
|
35
35
|
const synced = [];
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
36
|
+
// `presence` (and its live awareness-eviction timers, started the moment
|
|
37
|
+
// `createPresence` ran above) is constructed before either provider. If a
|
|
38
|
+
// provider fails to come up — e.g. `createIndexedDbProvider` throwing in a
|
|
39
|
+
// non-browser test harness where `indexedDB` is undefined — this function
|
|
40
|
+
// rejects and its caller never receives a `session` to call `.dispose()`
|
|
41
|
+
// on. Nothing else references `presence`, so its two `setInterval`s (the
|
|
42
|
+
// eviction sweep in presence.ts and y-protocols' own outdated-clients
|
|
43
|
+
// timer inside `new Awareness`) keep running forever, which is exactly
|
|
44
|
+
// the leak that kept a Node test process alive indefinitely (never
|
|
45
|
+
// observed in the browser, where a page unload reclaims everything).
|
|
46
|
+
// Dispose what we've built so far before propagating the failure.
|
|
47
|
+
try {
|
|
48
|
+
if (providerKind === 'indexeddb' || providerKind === 'indexeddb+websocket') {
|
|
49
|
+
idb = await createIndexedDbProvider(doc, opts.roomId, { dbName: opts.dbName });
|
|
50
|
+
synced.push(idb.whenSynced);
|
|
51
|
+
}
|
|
52
|
+
else if (providerKind === 'memory') {
|
|
53
|
+
idb = createMemoryProvider(doc, opts.roomId);
|
|
54
|
+
synced.push(idb.whenSynced);
|
|
47
55
|
}
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
56
|
+
if (providerKind === 'websocket' || providerKind === 'indexeddb+websocket') {
|
|
57
|
+
if (!opts.serverUrl) {
|
|
58
|
+
throw new Error('@ifc-lite/collab: serverUrl is required for websocket providers');
|
|
59
|
+
}
|
|
60
|
+
ws = await createWebSocketProvider(doc, opts.roomId, opts.serverUrl, {
|
|
61
|
+
WebSocketPolyfill: opts.WebSocketPolyfill,
|
|
62
|
+
token: opts.token,
|
|
63
|
+
awareness: presence.awareness,
|
|
64
|
+
connect: opts.connect ?? true,
|
|
65
|
+
disableBc: opts.disableBc,
|
|
66
|
+
});
|
|
67
|
+
ws.onStatus(setStatus);
|
|
68
|
+
synced.push(ws.whenSynced);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
catch (err) {
|
|
72
|
+
if (ownsPresence)
|
|
73
|
+
presence.dispose();
|
|
74
|
+
undoController.destroy();
|
|
75
|
+
conflicts.destroy();
|
|
76
|
+
if (idb)
|
|
77
|
+
idb.destroy();
|
|
78
|
+
if (ws)
|
|
79
|
+
ws.destroy();
|
|
80
|
+
throw err;
|
|
57
81
|
}
|
|
58
82
|
const session = {
|
|
59
83
|
roomId: opts.roomId,
|
package/dist/session.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session.js","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAW/D,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;AACzB,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAChE,OAAO,EACL,sBAAsB,GAGvB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,cAAc,EAAoC,MAAM,yBAAyB,CAAC;AAC3F,OAAO,EACL,uBAAuB,EACvB,oBAAoB,GAErB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,uBAAuB,GAGxB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,cAAc,EAAwB,MAAM,uBAAuB,CAAC;AAC7E,OAAO,EAAE,YAAY,EAAoC,MAAM,yBAAyB,CAAC;AACzF,OAAO,EACL,eAAe,IAAI,iBAAiB,EACpC,gBAAgB,IAAI,qBAAqB,GAC1C,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,iBAAiB,EAAuB,MAAM,WAAW,CAAC;AA8EnE,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,IAA0B;IAClE,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,eAAe,EAAE,CAAC;IAE1C,0EAA0E;IAC1E,mEAAmE;IACnE,MAAM,YAAY,GAAG,CAAC,IAAI,CAAC,gBAAgB,CAAC;IAC5C,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,IAAI,cAAc,CAAC,GAAG,EAAE,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC;IACnF,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC5B,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;IAE7B,MAAM,cAAc,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAC;IAC9C,MAAM,SAAS,GAAG,sBAAsB,CAAC,GAAG,CAAC,CAAC;IAE9C,MAAM,YAAY,GAAiB,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC;IAC7D,IAAI,GAAkC,CAAC;IACvC,IAAI,EAAiC,CAAC;IAEtC,IAAI,aAAa,GACf,YAAY,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC;IACrD,MAAM,eAAe,GAAG,IAAI,GAAG,EAAyD,CAAC;IACzF,MAAM,SAAS,GAAG,CAAC,CAA2C,EAAE,EAAE;QAChE,IAAI,CAAC,KAAK,aAAa;YAAE,OAAO;QAChC,aAAa,GAAG,CAAC,CAAC;QAClB,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACvC,CAAC,CAAC;IAEF,MAAM,MAAM,GAAoB,EAAE,CAAC;IAEnC,IAAI,YAAY,KAAK,WAAW,IAAI,YAAY,KAAK,qBAAqB,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"session.js","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"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"}
|
|
@@ -21,4 +21,39 @@ export declare function parseIfcxInput(input: IfcxInput): IfcxFile;
|
|
|
21
21
|
* for callers that want to inspect headers / schemas.
|
|
22
22
|
*/
|
|
23
23
|
export declare function seedFromIfcx(doc: Y.Doc, input: IfcxInput, opts?: SeedOptions): IfcxFile;
|
|
24
|
+
export interface OverlayOptions {
|
|
25
|
+
/** Origin tag for the overlay transaction. Defaults to SEED_ORIGIN. */
|
|
26
|
+
origin?: unknown;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Apply an IFCX file to `doc` as a *layer of opinions* rather than as a
|
|
30
|
+
* seed.
|
|
31
|
+
*
|
|
32
|
+
* `seedFromIfcx` routes every node through `createEntity`, which is a
|
|
33
|
+
* deliberate no-op on a path the doc already has — right for seeding a
|
|
34
|
+
* doc from a snapshot, wrong for merging a layer whose whole purpose is
|
|
35
|
+
* to modify entities that already exist. This applier creates missing
|
|
36
|
+
* entities exactly as the seeder does, and for entities that are already
|
|
37
|
+
* present it writes the node's opinions on top: values overwrite, and
|
|
38
|
+
* anything the node says nothing about is left alone.
|
|
39
|
+
*
|
|
40
|
+
* `null` removes a FLAT attribute, child or inherit ONLY: a nulled
|
|
41
|
+
* pset/quantity property survives, silently. Measured, and pinned with the
|
|
42
|
+
* reason, in `test/apply-ifcx-overlay.test.ts`.
|
|
43
|
+
*
|
|
44
|
+
* Deliberately NOT part of `seedFromIfcx`'s option surface: the seeder's
|
|
45
|
+
* additive-and-idempotent contract is what `apps/viewer` and
|
|
46
|
+
* `snapshot/worker.ts` rely on when seeding a live session doc, and this
|
|
47
|
+
* function is a different operation, not a mode of that one.
|
|
48
|
+
*
|
|
49
|
+
* Deletion opinions are honoured where the layer states them: an
|
|
50
|
+
* `ifclite::deleted: true` node removes the entity, matching what
|
|
51
|
+
* composition, `bakeLayers` and the MCP layer store already do. Note the
|
|
52
|
+
* limit of the *representation* though, not of this code: a full IFCX
|
|
53
|
+
* snapshot emits only what an entity has, so a key or entity deleted in
|
|
54
|
+
* the source doc is simply absent rather than nulled or tombstoned, and
|
|
55
|
+
* an overlay cannot tell that apart from "no opinion". Deletions
|
|
56
|
+
* therefore propagate only from layers that state them explicitly.
|
|
57
|
+
*/
|
|
58
|
+
export declare function applyIfcxOverlay(doc: Y.Doc, input: IfcxInput, opts?: OverlayOptions): IfcxFile;
|
|
24
59
|
//# sourceMappingURL=from-ifcx.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"from-ifcx.d.ts","sourceRoot":"","sources":["../../src/snapshot/from-ifcx.ts"],"names":[],"mappings":"AAIA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,QAAQ,
|
|
1
|
+
{"version":3,"file":"from-ifcx.d.ts","sourceRoot":"","sources":["../../src/snapshot/from-ifcx.ts"],"names":[],"mappings":"AAIA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAY,MAAM,gBAAgB,CAAC;AAEzD,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;AA2BzB,MAAM,WAAW,WAAW;IAC1B,uEAAuE;IACvE,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,kEAAkE;IAClE,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,MAAM,SAAS,GAAG,WAAW,GAAG,UAAU,GAAG,MAAM,GAAG,QAAQ,CAAC;AAErE,kEAAkE;AAClE,wBAAgB,cAAc,CAAC,KAAK,EAAE,SAAS,GAAG,QAAQ,CAazD;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,GAAE,WAAgB,GAAG,QAAQ,CA6B3F;AA2ID,MAAM,WAAW,cAAc;IAC7B,uEAAuE;IACvE,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,wBAAgB,gBAAgB,CAC9B,GAAG,EAAE,CAAC,CAAC,GAAG,EACV,KAAK,EAAE,SAAS,EAChB,IAAI,GAAE,cAAmB,GACxB,QAAQ,CAiCV"}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
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
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
4
|
+
import { IFCLITE_ATTR } from '@ifc-lite/ifcx';
|
|
5
|
+
import { createEntity, deleteAttribute, deleteEntity, getEntity, hasEntity, removeChild, removeInherit, setAttribute, setChild, setGeometryRef, setInherit, setPropertyValue, setQuantityValue, } from '../doc/entity.js';
|
|
6
|
+
import { createGeometry, upsertGeometry } from '../doc/geometry.js';
|
|
7
|
+
import { ENTITY_KEY, SEED_ORIGIN, assertSchemaInvariants, metaMap, } from '../doc/schema.js';
|
|
7
8
|
import { inflateStructuredAttributes } from './structured-attrs.js';
|
|
8
9
|
/** Decode whatever the caller hands us into a parsed IfcxFile. */
|
|
9
10
|
export function parseIfcxInput(input) {
|
|
@@ -45,71 +46,251 @@ export function seedFromIfcx(doc, input, opts = {}) {
|
|
|
45
46
|
if (file.schemas)
|
|
46
47
|
meta.set('schemas', file.schemas);
|
|
47
48
|
for (const node of file.data ?? []) {
|
|
48
|
-
const
|
|
49
|
-
if (!
|
|
49
|
+
const decoded = decodeNode(node, false);
|
|
50
|
+
if (!decoded)
|
|
51
|
+
continue;
|
|
52
|
+
restoreGeometryCarriers(doc, decoded, createGeometry);
|
|
53
|
+
createNodeEntity(doc, decoded);
|
|
54
|
+
}
|
|
55
|
+
}, opts.origin ?? SEED_ORIGIN);
|
|
56
|
+
return file;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* `stripTombstone` splits the two readers apart. The overlay applier
|
|
60
|
+
* acts on `ifclite::deleted` and must not leave the marker behind as an
|
|
61
|
+
* ordinary attribute (the same reason `bakeLayers` strips it from
|
|
62
|
+
* survivors). `seedFromIfcx` has never interpreted it and must keep
|
|
63
|
+
* storing it verbatim: it seeds live session docs in `apps/viewer` and
|
|
64
|
+
* `snapshot/worker.ts`, and quietly dropping an attribute there would be
|
|
65
|
+
* a behaviour change on a far more common path than this fix touches.
|
|
66
|
+
*/
|
|
67
|
+
function decodeNode(node, stripTombstone) {
|
|
68
|
+
const rawNode = node;
|
|
69
|
+
const path = rawNode.path;
|
|
70
|
+
if (!path)
|
|
71
|
+
return undefined;
|
|
72
|
+
// Null attribute values are removal opinions (minimal layers); with
|
|
73
|
+
// nothing beneath them to remove, they mean "absent" — never store
|
|
74
|
+
// them as values.
|
|
75
|
+
const rawAttributes = {};
|
|
76
|
+
const removedAttributes = [];
|
|
77
|
+
let tombstone;
|
|
78
|
+
for (const [key, value] of Object.entries(rawNode.attributes ?? {})) {
|
|
79
|
+
if (key === IFCLITE_ATTR.DELETED) {
|
|
80
|
+
if (typeof value === 'boolean')
|
|
81
|
+
tombstone = value;
|
|
82
|
+
if (stripTombstone)
|
|
83
|
+
continue;
|
|
84
|
+
}
|
|
85
|
+
if (value === null)
|
|
86
|
+
removedAttributes.push(key);
|
|
87
|
+
else
|
|
88
|
+
rawAttributes[key] = value;
|
|
89
|
+
}
|
|
90
|
+
// Re-inflate structured branches the snapshot writer folded into
|
|
91
|
+
// namespaced attributes (#1031); the shape-gated remainder stays
|
|
92
|
+
// in the flat attributes branch.
|
|
93
|
+
const inflated = inflateStructuredAttributes(rawAttributes);
|
|
94
|
+
const children = {};
|
|
95
|
+
const removedChildren = [];
|
|
96
|
+
for (const [role, target] of Object.entries(rawNode.children ?? {})) {
|
|
97
|
+
if (typeof target === 'string')
|
|
98
|
+
children[role] = target;
|
|
99
|
+
else if (target === null)
|
|
100
|
+
removedChildren.push(role);
|
|
101
|
+
}
|
|
102
|
+
const inherits = {};
|
|
103
|
+
const removedInherits = [];
|
|
104
|
+
for (const [role, target] of Object.entries(rawNode.inherits ?? {})) {
|
|
105
|
+
if (typeof target === 'string')
|
|
106
|
+
inherits[role] = target;
|
|
107
|
+
else if (target === null)
|
|
108
|
+
removedInherits.push(role);
|
|
109
|
+
}
|
|
110
|
+
return {
|
|
111
|
+
path,
|
|
112
|
+
ifcClass: readIfcClass(rawNode.attributes),
|
|
113
|
+
inflated,
|
|
114
|
+
children,
|
|
115
|
+
inherits,
|
|
116
|
+
tombstone,
|
|
117
|
+
removedAttributes,
|
|
118
|
+
removedChildren,
|
|
119
|
+
removedInherits,
|
|
120
|
+
};
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* A carrier with the embedded geometry record recreates the geometry map
|
|
124
|
+
* entry, so the restored ref is never dangling. Bare-id carriers keep
|
|
125
|
+
* pointing at out-of-band hydrated geometry.
|
|
126
|
+
*/
|
|
127
|
+
function restoreGeometryCarriers(doc, decoded, write) {
|
|
128
|
+
for (const carrier of decoded.inflated.geometryCarriers) {
|
|
129
|
+
if (typeof carrier.type !== 'string' || typeof carrier.source !== 'string')
|
|
130
|
+
continue;
|
|
131
|
+
write(doc, carrier.geomId, {
|
|
132
|
+
type: carrier.type,
|
|
133
|
+
source: carrier.source,
|
|
134
|
+
blobHash: carrier.blobHash,
|
|
135
|
+
params: carrier.params,
|
|
136
|
+
bbox: carrier.bbox,
|
|
137
|
+
});
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
function createNodeEntity(doc, decoded) {
|
|
141
|
+
const { ifcClass, inflated } = decoded;
|
|
142
|
+
createEntity(doc, decoded.path, {
|
|
143
|
+
ifcClass,
|
|
144
|
+
attributes: inflated.attributes,
|
|
145
|
+
children: decoded.children,
|
|
146
|
+
inherits: decoded.inherits,
|
|
147
|
+
psets: inflated.psets,
|
|
148
|
+
quantities: inflated.quantities,
|
|
149
|
+
classifications: inflated.classifications,
|
|
150
|
+
materials: inflated.materials,
|
|
151
|
+
geometryRef: inflated.geometryRefRecord,
|
|
152
|
+
// Provenance comes from the node's own `ifclite::meta` carrier and
|
|
153
|
+
// from nowhere else (#3092). The file header describes the FILE, and a
|
|
154
|
+
// snapshot of a collab doc puts the snapshotter's own name and write
|
|
155
|
+
// clock there; copying that onto every node fabricated a `createdBy`/
|
|
156
|
+
// `createdAt` indistinguishable from real attribution. Absent reads as
|
|
157
|
+
// "unknown"; invented gets trusted.
|
|
158
|
+
stampCreatedAt: false,
|
|
159
|
+
meta: {
|
|
160
|
+
ifcClass,
|
|
161
|
+
schemaVersion: 'ifc5',
|
|
162
|
+
...inflated.meta,
|
|
163
|
+
},
|
|
164
|
+
});
|
|
165
|
+
}
|
|
166
|
+
/**
|
|
167
|
+
* Apply an IFCX file to `doc` as a *layer of opinions* rather than as a
|
|
168
|
+
* seed.
|
|
169
|
+
*
|
|
170
|
+
* `seedFromIfcx` routes every node through `createEntity`, which is a
|
|
171
|
+
* deliberate no-op on a path the doc already has — right for seeding a
|
|
172
|
+
* doc from a snapshot, wrong for merging a layer whose whole purpose is
|
|
173
|
+
* to modify entities that already exist. This applier creates missing
|
|
174
|
+
* entities exactly as the seeder does, and for entities that are already
|
|
175
|
+
* present it writes the node's opinions on top: values overwrite, and
|
|
176
|
+
* anything the node says nothing about is left alone.
|
|
177
|
+
*
|
|
178
|
+
* `null` removes a FLAT attribute, child or inherit ONLY: a nulled
|
|
179
|
+
* pset/quantity property survives, silently. Measured, and pinned with the
|
|
180
|
+
* reason, in `test/apply-ifcx-overlay.test.ts`.
|
|
181
|
+
*
|
|
182
|
+
* Deliberately NOT part of `seedFromIfcx`'s option surface: the seeder's
|
|
183
|
+
* additive-and-idempotent contract is what `apps/viewer` and
|
|
184
|
+
* `snapshot/worker.ts` rely on when seeding a live session doc, and this
|
|
185
|
+
* function is a different operation, not a mode of that one.
|
|
186
|
+
*
|
|
187
|
+
* Deletion opinions are honoured where the layer states them: an
|
|
188
|
+
* `ifclite::deleted: true` node removes the entity, matching what
|
|
189
|
+
* composition, `bakeLayers` and the MCP layer store already do. Note the
|
|
190
|
+
* limit of the *representation* though, not of this code: a full IFCX
|
|
191
|
+
* snapshot emits only what an entity has, so a key or entity deleted in
|
|
192
|
+
* the source doc is simply absent rather than nulled or tombstoned, and
|
|
193
|
+
* an overlay cannot tell that apart from "no opinion". Deletions
|
|
194
|
+
* therefore propagate only from layers that state them explicitly.
|
|
195
|
+
*/
|
|
196
|
+
export function applyIfcxOverlay(doc, input, opts = {}) {
|
|
197
|
+
const file = parseIfcxInput(input);
|
|
198
|
+
assertSchemaInvariants(doc);
|
|
199
|
+
doc.transact(() => {
|
|
200
|
+
const meta = metaMap(doc);
|
|
201
|
+
if (file.header)
|
|
202
|
+
meta.set('header', file.header);
|
|
203
|
+
if (file.imports)
|
|
204
|
+
meta.set('imports', file.imports);
|
|
205
|
+
if (file.schemas)
|
|
206
|
+
meta.set('schemas', file.schemas);
|
|
207
|
+
// Composition resolves `ifclite::deleted` after every node in the
|
|
208
|
+
// layer has been applied — the strongest (last) opinion wins — so a
|
|
209
|
+
// base → delete → resurrect sequence within one file must seed the
|
|
210
|
+
// entity's state first and only then act on the final verdict.
|
|
211
|
+
const tombstoned = new Map();
|
|
212
|
+
for (const node of file.data ?? []) {
|
|
213
|
+
const decoded = decodeNode(node, true);
|
|
214
|
+
if (!decoded)
|
|
215
|
+
continue;
|
|
216
|
+
const opinion = decoded.tombstone;
|
|
217
|
+
if (opinion !== undefined)
|
|
218
|
+
tombstoned.set(decoded.path, opinion);
|
|
219
|
+
restoreGeometryCarriers(doc, decoded, upsertGeometry);
|
|
220
|
+
if (!hasEntity(doc, decoded.path)) {
|
|
221
|
+
createNodeEntity(doc, decoded);
|
|
50
222
|
continue;
|
|
51
|
-
// Null attribute values are removal opinions (minimal layers); with
|
|
52
|
-
// nothing beneath them to remove, they mean "absent" — never store
|
|
53
|
-
// them as values.
|
|
54
|
-
const rawAttributes = {};
|
|
55
|
-
for (const [key, value] of Object.entries(node.attributes ?? {})) {
|
|
56
|
-
if (value !== null)
|
|
57
|
-
rawAttributes[key] = value;
|
|
58
|
-
}
|
|
59
|
-
// Re-inflate structured branches the snapshot writer folded into
|
|
60
|
-
// namespaced attributes (#1031); the shape-gated remainder stays
|
|
61
|
-
// in the flat attributes branch.
|
|
62
|
-
const inflated = inflateStructuredAttributes(rawAttributes);
|
|
63
|
-
const children = {};
|
|
64
|
-
if (node.children) {
|
|
65
|
-
for (const [role, target] of Object.entries(node.children)) {
|
|
66
|
-
if (typeof target === 'string')
|
|
67
|
-
children[role] = target;
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
const inherits = {};
|
|
71
|
-
if (node.inherits) {
|
|
72
|
-
for (const [role, target] of Object.entries(node.inherits)) {
|
|
73
|
-
if (typeof target === 'string')
|
|
74
|
-
inherits[role] = target;
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
const ifcClass = readIfcClass(node.attributes);
|
|
78
|
-
// A carrier with the embedded geometry record recreates the
|
|
79
|
-
// geometry map entry, so the restored ref is never dangling.
|
|
80
|
-
// Bare-id carriers keep pointing at out-of-band hydrated geometry.
|
|
81
|
-
for (const carrier of inflated.geometryCarriers) {
|
|
82
|
-
if (typeof carrier.type !== 'string' || typeof carrier.source !== 'string')
|
|
83
|
-
continue;
|
|
84
|
-
createGeometry(doc, carrier.geomId, {
|
|
85
|
-
type: carrier.type,
|
|
86
|
-
source: carrier.source,
|
|
87
|
-
blobHash: carrier.blobHash,
|
|
88
|
-
params: carrier.params,
|
|
89
|
-
bbox: carrier.bbox,
|
|
90
|
-
});
|
|
91
223
|
}
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
psets: inflated.psets,
|
|
98
|
-
quantities: inflated.quantities,
|
|
99
|
-
classifications: inflated.classifications,
|
|
100
|
-
materials: inflated.materials,
|
|
101
|
-
geometryRef: inflated.geometryRefRecord,
|
|
102
|
-
meta: {
|
|
103
|
-
ifcClass,
|
|
104
|
-
schemaVersion: 'ifc5',
|
|
105
|
-
createdAt: file.header?.timestamp ?? new Date().toISOString(),
|
|
106
|
-
createdBy: file.header?.author,
|
|
107
|
-
},
|
|
108
|
-
});
|
|
224
|
+
overlayEntity(doc, decoded);
|
|
225
|
+
}
|
|
226
|
+
for (const [path, deleted] of tombstoned) {
|
|
227
|
+
if (deleted)
|
|
228
|
+
deleteEntity(doc, path);
|
|
109
229
|
}
|
|
110
230
|
}, opts.origin ?? SEED_ORIGIN);
|
|
111
231
|
return file;
|
|
112
232
|
}
|
|
233
|
+
function overlayEntity(doc, decoded) {
|
|
234
|
+
const { path, inflated } = decoded;
|
|
235
|
+
for (const [key, value] of Object.entries(inflated.attributes)) {
|
|
236
|
+
setAttribute(doc, path, key, value);
|
|
237
|
+
}
|
|
238
|
+
for (const key of decoded.removedAttributes)
|
|
239
|
+
deleteAttribute(doc, path, key);
|
|
240
|
+
for (const [role, target] of Object.entries(decoded.children)) {
|
|
241
|
+
setChild(doc, path, role, target);
|
|
242
|
+
}
|
|
243
|
+
for (const role of decoded.removedChildren)
|
|
244
|
+
removeChild(doc, path, role);
|
|
245
|
+
for (const [role, target] of Object.entries(decoded.inherits)) {
|
|
246
|
+
setInherit(doc, path, role, target);
|
|
247
|
+
}
|
|
248
|
+
for (const role of decoded.removedInherits)
|
|
249
|
+
removeInherit(doc, path, role);
|
|
250
|
+
for (const [psetName, props] of Object.entries(inflated.psets)) {
|
|
251
|
+
for (const [propName, value] of Object.entries(props)) {
|
|
252
|
+
setPropertyValue(doc, path, psetName, propName, value);
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
for (const [qsetName, qtys] of Object.entries(inflated.quantities)) {
|
|
256
|
+
for (const [qtyName, value] of Object.entries(qtys)) {
|
|
257
|
+
setQuantityValue(doc, path, qsetName, qtyName, value);
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
// Lists are single-valued opinions: a node that carries one replaces
|
|
261
|
+
// the doc's list wholesale, a node that carries none says nothing and
|
|
262
|
+
// must leave the doc's list untouched.
|
|
263
|
+
if (inflated.classifications.length > 0) {
|
|
264
|
+
setClassifications(doc, path, inflated.classifications);
|
|
265
|
+
}
|
|
266
|
+
if (inflated.materials.length > 0) {
|
|
267
|
+
setMaterials(doc, path, inflated.materials);
|
|
268
|
+
}
|
|
269
|
+
if (inflated.geometryRefRecord && inflated.geometryRefRecord.geomIds.length > 0) {
|
|
270
|
+
setGeometryRef(doc, path, inflated.geometryRefRecord);
|
|
271
|
+
}
|
|
272
|
+
// `meta.ifcClass` mirrors the class attribute; keep the two in step.
|
|
273
|
+
if (decoded.ifcClass) {
|
|
274
|
+
const entityMeta = getEntity(doc, path)?.get(ENTITY_KEY.META);
|
|
275
|
+
entityMeta?.set('ifcClass', decoded.ifcClass);
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
function setClassifications(doc, path, refs) {
|
|
279
|
+
const arr = getEntity(doc, path)?.get(ENTITY_KEY.CLASSIFICATIONS);
|
|
280
|
+
if (!arr)
|
|
281
|
+
return;
|
|
282
|
+
if (arr.length > 0)
|
|
283
|
+
arr.delete(0, arr.length);
|
|
284
|
+
arr.push([...refs]);
|
|
285
|
+
}
|
|
286
|
+
function setMaterials(doc, path, assignments) {
|
|
287
|
+
const arr = getEntity(doc, path)?.get(ENTITY_KEY.MATERIALS);
|
|
288
|
+
if (!arr)
|
|
289
|
+
return;
|
|
290
|
+
if (arr.length > 0)
|
|
291
|
+
arr.delete(0, arr.length);
|
|
292
|
+
arr.push([...assignments]);
|
|
293
|
+
}
|
|
113
294
|
/** Read the IfcClass code out of the well-known `bsi::ifc::class` attribute. */
|
|
114
295
|
function readIfcClass(attributes) {
|
|
115
296
|
if (!attributes)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"from-ifcx.js","sourceRoot":"","sources":["../../src/snapshot/from-ifcx.ts"],"names":[],"mappings":"AAAA;;+DAE+D;
|
|
1
|
+
{"version":3,"file":"from-ifcx.js","sourceRoot":"","sources":["../../src/snapshot/from-ifcx.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"from-step.d.ts","sourceRoot":"","sources":["../../src/snapshot/from-step.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,KAAK,CAAC,MAAM,KAAK,CAAC;AAG9B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEtD,uEAAuE;AACvE,MAAM,MAAM,mBAAmB,GAAG,MAAM,GAAG,QAAQ,GAAG,MAAM,CAAC;AAkB7D,2DAA2D;AAC3D,MAAM,WAAW,cAAc;IAC7B,uEAAuE;IACvE,IAAI,EAAE,MAAM,CAAC;IACb,kDAAkD;IAClD,QAAQ,EAAE,MAAM,CAAC;IACjB;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACrC;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAClC,kDAAkD;IAClD,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC;CACvD;AAED,oFAAoF;AACpF,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,QAAQ,CAAC,cAAc,CAAC,CAAC;IACnC,mEAAmE;IACnE,MAAM,CAAC,EAAE;QACP,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,CAAC;CACH;AAED,MAAM,WAAW,mBAAmB;IAClC,yEAAyE;IACzE,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB;;;OAGG;IACH,gBAAgB,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,KAAK,mBAAmB,CAAC;CACxE;AAED,MAAM,WAAW,kBAAkB;IACjC,qDAAqD;IACrD,MAAM,EAAE,MAAM,CAAC;IACf,mDAAmD;IACnD,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,oFAAoF;AACpF,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE/C;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAC1B,GAAG,EAAE,CAAC,CAAC,GAAG,EACV,MAAM,EAAE,cAAc,EACtB,IAAI,GAAE,mBAAwB,GAC7B,kBAAkB,
|
|
1
|
+
{"version":3,"file":"from-step.d.ts","sourceRoot":"","sources":["../../src/snapshot/from-step.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,KAAK,CAAC,MAAM,KAAK,CAAC;AAG9B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEtD,uEAAuE;AACvE,MAAM,MAAM,mBAAmB,GAAG,MAAM,GAAG,QAAQ,GAAG,MAAM,CAAC;AAkB7D,2DAA2D;AAC3D,MAAM,WAAW,cAAc;IAC7B,uEAAuE;IACvE,IAAI,EAAE,MAAM,CAAC;IACb,kDAAkD;IAClD,QAAQ,EAAE,MAAM,CAAC;IACjB;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACrC;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAClC,kDAAkD;IAClD,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC;CACvD;AAED,oFAAoF;AACpF,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,QAAQ,CAAC,cAAc,CAAC,CAAC;IACnC,mEAAmE;IACnE,MAAM,CAAC,EAAE;QACP,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,CAAC;CACH;AAED,MAAM,WAAW,mBAAmB;IAClC,yEAAyE;IACzE,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB;;;OAGG;IACH,gBAAgB,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,KAAK,mBAAmB,CAAC;CACxE;AAED,MAAM,WAAW,kBAAkB;IACjC,qDAAqD;IACrD,MAAM,EAAE,MAAM,CAAC;IACf,mDAAmD;IACnD,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,oFAAoF;AACpF,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE/C;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAC1B,GAAG,EAAE,CAAC,CAAC,GAAG,EACV,MAAM,EAAE,cAAc,EACtB,IAAI,GAAE,mBAAwB,GAC7B,kBAAkB,CAgDpB"}
|
|
@@ -48,11 +48,16 @@ export function seedFromStep(doc, source, opts = {}) {
|
|
|
48
48
|
attributes: ent.attributes ?? {},
|
|
49
49
|
children: ent.children,
|
|
50
50
|
schemaVersion,
|
|
51
|
+
// Same rule as `from-ifcx.ts`: the STEP header names whoever
|
|
52
|
+
// wrote the file, not whoever authored each entity, and its
|
|
53
|
+
// timestamp is the file's, not the entity's. Stamping either
|
|
54
|
+
// onto every node manufactures per-entity provenance that reads
|
|
55
|
+
// as genuine. The header itself stays available under
|
|
56
|
+
// `meta.stepHeader`.
|
|
57
|
+
stampCreatedAt: false,
|
|
51
58
|
meta: {
|
|
52
59
|
ifcClass: ent.ifcClass,
|
|
53
60
|
schemaVersion,
|
|
54
|
-
createdAt: source.header?.timestamp ?? new Date().toISOString(),
|
|
55
|
-
createdBy: source.header?.author,
|
|
56
61
|
},
|
|
57
62
|
});
|
|
58
63
|
if (ent.psets) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"from-step.js","sourceRoot":"","sources":["../../src/snapshot/from-step.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAoB/D,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAClE,OAAO,EAAE,WAAW,EAAE,sBAAsB,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAMhF;;;;GAIG;AACH,SAAS,oBAAoB,CAAC,MAA0B;IACtD,QAAQ,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC;QACrC,KAAK,QAAQ;YACX,OAAO,QAAQ,CAAC;QAClB,KAAK,MAAM;YACT,OAAO,MAAM,CAAC;QAChB;YACE,OAAO,MAAM,CAAC;IAClB,CAAC;AACH,CAAC;AAqDD,oFAAoF;AACpF,MAAM,UAAU,UAAU,CAAC,IAAY;IACrC,OAAO,IAAI,IAAI,EAAE,CAAC;AACpB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,YAAY,CAC1B,GAAU,EACV,MAAsB,EACtB,OAA4B,EAAE;IAE9B,sBAAsB,CAAC,GAAG,CAAC,CAAC;IAC5B,MAAM,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,IAAI,oBAAoB,CAAC;IACvE,MAAM,aAAa,GAAG,gBAAgB,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAE9D,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,IAAI,OAAO,GAAG,CAAC,CAAC;IAEhB,GAAG,CAAC,QAAQ,CAAC,GAAG,EAAE;QAChB,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;QAC1B,IAAI,MAAM,CAAC,MAAM;YAAE,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;QAEzD,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;YAClC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;gBACd,OAAO,EAAE,CAAC;gBACV,SAAS;YACX,CAAC;YACD,MAAM,IAAI,GAAG,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAClC,YAAY,CAAC,GAAG,EAAE,IAAI,EAAE;gBACtB,QAAQ,EAAE,GAAG,CAAC,QAAQ;gBACtB,UAAU,EAAE,GAAG,CAAC,UAAU,IAAI,EAAE;gBAChC,QAAQ,EAAE,GAAG,CAAC,QAAQ;gBACtB,aAAa;gBACb,
|
|
1
|
+
{"version":3,"file":"from-step.js","sourceRoot":"","sources":["../../src/snapshot/from-step.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAoB/D,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAClE,OAAO,EAAE,WAAW,EAAE,sBAAsB,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAMhF;;;;GAIG;AACH,SAAS,oBAAoB,CAAC,MAA0B;IACtD,QAAQ,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC;QACrC,KAAK,QAAQ;YACX,OAAO,QAAQ,CAAC;QAClB,KAAK,MAAM;YACT,OAAO,MAAM,CAAC;QAChB;YACE,OAAO,MAAM,CAAC;IAClB,CAAC;AACH,CAAC;AAqDD,oFAAoF;AACpF,MAAM,UAAU,UAAU,CAAC,IAAY;IACrC,OAAO,IAAI,IAAI,EAAE,CAAC;AACpB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,YAAY,CAC1B,GAAU,EACV,MAAsB,EACtB,OAA4B,EAAE;IAE9B,sBAAsB,CAAC,GAAG,CAAC,CAAC;IAC5B,MAAM,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,IAAI,oBAAoB,CAAC;IACvE,MAAM,aAAa,GAAG,gBAAgB,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAE9D,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,IAAI,OAAO,GAAG,CAAC,CAAC;IAEhB,GAAG,CAAC,QAAQ,CAAC,GAAG,EAAE;QAChB,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;QAC1B,IAAI,MAAM,CAAC,MAAM;YAAE,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;QAEzD,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;YAClC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;gBACd,OAAO,EAAE,CAAC;gBACV,SAAS;YACX,CAAC;YACD,MAAM,IAAI,GAAG,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAClC,YAAY,CAAC,GAAG,EAAE,IAAI,EAAE;gBACtB,QAAQ,EAAE,GAAG,CAAC,QAAQ;gBACtB,UAAU,EAAE,GAAG,CAAC,UAAU,IAAI,EAAE;gBAChC,QAAQ,EAAE,GAAG,CAAC,QAAQ;gBACtB,aAAa;gBACb,6DAA6D;gBAC7D,4DAA4D;gBAC5D,6DAA6D;gBAC7D,gEAAgE;gBAChE,sDAAsD;gBACtD,qBAAqB;gBACrB,cAAc,EAAE,KAAK;gBACrB,IAAI,EAAE;oBACJ,QAAQ,EAAE,GAAG,CAAC,QAAQ;oBACtB,aAAa;iBACd;aACF,CAAC,CAAC;YAEH,IAAI,GAAG,CAAC,KAAK,EAAE,CAAC;gBACd,KAAK,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;oBAC1D,KAAK,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;wBACtD,gBAAgB,CAAC,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;oBACzD,CAAC;gBACH,CAAC;YACH,CAAC;YACD,MAAM,EAAE,CAAC;QACX,CAAC;IACH,CAAC,EAAE,IAAI,CAAC,MAAM,IAAI,WAAW,CAAC,CAAC;IAE/B,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;AAC7B,CAAC"}
|