@ifc-lite/export 2.9.0 → 2.9.2
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/columns-to-parquet.d.ts +7 -1
- package/dist/columns-to-parquet.d.ts.map +1 -1
- package/dist/columns-to-parquet.js +17 -3
- package/dist/columns-to-parquet.js.map +1 -1
- package/dist/effective-index.d.ts +63 -0
- package/dist/effective-index.d.ts.map +1 -1
- package/dist/effective-index.js +180 -6
- package/dist/effective-index.js.map +1 -1
- package/dist/merged-exporter.d.ts +12 -1
- package/dist/merged-exporter.d.ts.map +1 -1
- package/dist/merged-exporter.js +40 -11
- package/dist/merged-exporter.js.map +1 -1
- package/dist/parquet-exporter.d.ts +27 -0
- package/dist/parquet-exporter.d.ts.map +1 -1
- package/dist/parquet-exporter.js +33 -1
- package/dist/parquet-exporter.js.map +1 -1
- package/dist/reference-collector.d.ts +59 -3
- package/dist/reference-collector.d.ts.map +1 -1
- package/dist/reference-collector.js +300 -4
- package/dist/reference-collector.js.map +1 -1
- package/dist/step-exporter.d.ts.map +1 -1
- package/dist/step-exporter.js +24 -11
- package/dist/step-exporter.js.map +1 -1
- package/package.json +4 -4
|
@@ -16,8 +16,14 @@
|
|
|
16
16
|
* @param floatColumns names that must be Float64 even when every value in the
|
|
17
17
|
* sample happens to be a whole number - content inference alone would demote
|
|
18
18
|
* `3.0` to Int32, losing the schema and risking wrap beyond 2^31
|
|
19
|
+
* @param uintColumns names whose domain is an UNSIGNED 32-bit integer.
|
|
20
|
+
* Inference reaches for Int32 on any whole number, which wraps a value at or
|
|
21
|
+
* above 2_147_483_648 to a negative one. An IFC express id is a `u32`
|
|
22
|
+
* everywhere else in this codebase - `Uint32Array` in the parser's entity
|
|
23
|
+
* index and its transports, `u32` in the Rust crates - so without this the
|
|
24
|
+
* export was the one place narrowing that domain.
|
|
19
25
|
*/
|
|
20
|
-
export declare function columnsToParquet(columns: Record<string, any[]>, floatColumns?: Set<string>): Promise<Uint8Array>;
|
|
26
|
+
export declare function columnsToParquet(columns: Record<string, any[]>, floatColumns?: Set<string>, uintColumns?: ReadonlySet<string>): Promise<Uint8Array>;
|
|
21
27
|
/**
|
|
22
28
|
* Are these bytes actually Parquet, or the Arrow IPC fallback?
|
|
23
29
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"columns-to-parquet.d.ts","sourceRoot":"","sources":["../src/columns-to-parquet.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;GAYG;AAIH
|
|
1
|
+
{"version":3,"file":"columns-to-parquet.d.ts","sourceRoot":"","sources":["../src/columns-to-parquet.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;GAYG;AAIH;;;;;;;;;;;GAWG;AACH,wBAAsB,gBAAgB,CAClC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,EAC9B,YAAY,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,EAC1B,WAAW,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,GAClC,OAAO,CAAC,UAAU,CAAC,CAyGrB;AAKD;;;;;;GAMG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAKpD"}
|
|
@@ -20,8 +20,14 @@
|
|
|
20
20
|
* @param floatColumns names that must be Float64 even when every value in the
|
|
21
21
|
* sample happens to be a whole number - content inference alone would demote
|
|
22
22
|
* `3.0` to Int32, losing the schema and risking wrap beyond 2^31
|
|
23
|
+
* @param uintColumns names whose domain is an UNSIGNED 32-bit integer.
|
|
24
|
+
* Inference reaches for Int32 on any whole number, which wraps a value at or
|
|
25
|
+
* above 2_147_483_648 to a negative one. An IFC express id is a `u32`
|
|
26
|
+
* everywhere else in this codebase - `Uint32Array` in the parser's entity
|
|
27
|
+
* index and its transports, `u32` in the Rust crates - so without this the
|
|
28
|
+
* export was the one place narrowing that domain.
|
|
23
29
|
*/
|
|
24
|
-
export async function columnsToParquet(columns, floatColumns) {
|
|
30
|
+
export async function columnsToParquet(columns, floatColumns, uintColumns) {
|
|
25
31
|
try {
|
|
26
32
|
// Dynamic imports for better tree-shaking. The package's
|
|
27
33
|
// browser/node exports map keeps `Arrow.dom.mjs` opaque to
|
|
@@ -39,7 +45,9 @@ export async function columnsToParquet(columns, floatColumns) {
|
|
|
39
45
|
// which the Parquet writer rejects.
|
|
40
46
|
vectors[name] = floatColumns?.has(name)
|
|
41
47
|
? arrow.vectorFromArray([], new arrow.Float64())
|
|
42
|
-
:
|
|
48
|
+
: uintColumns?.has(name)
|
|
49
|
+
? arrow.vectorFromArray([], new arrow.Uint32())
|
|
50
|
+
: arrow.vectorFromArray([], new arrow.Utf8());
|
|
43
51
|
continue;
|
|
44
52
|
}
|
|
45
53
|
// Infer type from first non-null element
|
|
@@ -53,7 +61,9 @@ export async function columnsToParquet(columns, floatColumns) {
|
|
|
53
61
|
// here whenever no element in a zone set could be measured.
|
|
54
62
|
vectors[name] = floatColumns?.has(name)
|
|
55
63
|
? arrow.vectorFromArray(data, new arrow.Float64())
|
|
56
|
-
:
|
|
64
|
+
: uintColumns?.has(name)
|
|
65
|
+
? arrow.vectorFromArray(data, new arrow.Uint32())
|
|
66
|
+
: arrow.vectorFromArray(data, new arrow.Utf8());
|
|
57
67
|
}
|
|
58
68
|
else if (typeof sample === 'number') {
|
|
59
69
|
// Columns declared as REAL-typed by the caller (e.g. ValueReal,
|
|
@@ -64,6 +74,10 @@ export async function columnsToParquet(columns, floatColumns) {
|
|
|
64
74
|
vectors[name] = arrow.vectorFromArray(data, new arrow.Float64());
|
|
65
75
|
continue;
|
|
66
76
|
}
|
|
77
|
+
if (uintColumns?.has(name)) {
|
|
78
|
+
vectors[name] = arrow.vectorFromArray(data, new arrow.Uint32());
|
|
79
|
+
continue;
|
|
80
|
+
}
|
|
67
81
|
// Otherwise check if it's integer or float by content.
|
|
68
82
|
const isFloat = data.some((v) => typeof v === 'number' && !Number.isInteger(v));
|
|
69
83
|
if (isFloat) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"columns-to-parquet.js","sourceRoot":"","sources":["../src/columns-to-parquet.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAE/D;;;;;;;;;;;;GAYG;AAEH,uDAAuD;AAEvD
|
|
1
|
+
{"version":3,"file":"columns-to-parquet.js","sourceRoot":"","sources":["../src/columns-to-parquet.ts"],"names":[],"mappings":"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"}
|
|
@@ -65,6 +65,57 @@ export interface EffectiveEntityIndex extends CompleteEntityIndex {
|
|
|
65
65
|
/** Outgoing `#id` references of an OVERLAY-created record, or undefined when
|
|
66
66
|
* the id has source bytes to scan instead. */
|
|
67
67
|
refsOf(id: number): readonly number[] | undefined;
|
|
68
|
+
/**
|
|
69
|
+
* The same references as {@link refsOf}, GROUPED by authored attribute
|
|
70
|
+
* instead of flattened — a SET/LIST-valued attribute (`RelatedObjects`, …)
|
|
71
|
+
* as a nested array of ids, a single-valued attribute (`RelatingType`, …)
|
|
72
|
+
* as a bare id. `refsOf`'s flat list cannot tell those apart, and the
|
|
73
|
+
* closure walk needs to: it decides whether an overlay-created `IFCREL*`
|
|
74
|
+
* may bridge into what it references using the exact same list-vs-bare
|
|
75
|
+
* distinction `filterHiddenRefsFromRelationshipLine` makes for a
|
|
76
|
+
* source-backed relationship's OUTPUT line (see
|
|
77
|
+
* `relationshipRefsSurviveExclusion` in `reference-collector.ts`) — without
|
|
78
|
+
* this, the authored path could only ask "is EVERY id excluded", which
|
|
79
|
+
* wrongly permits bridging when a relationship's sole SUBJECT is hidden but
|
|
80
|
+
* its unrelated TARGET (a pset id, never itself excludable) survives (#2548).
|
|
81
|
+
* Optional: undefined for the id, or when the caller has no overlay.
|
|
82
|
+
*
|
|
83
|
+
* `sourceGroups` is the SAME grouped shape, already parsed from a
|
|
84
|
+
* SOURCE-backed entity's raw STEP line by the caller (`reference-collector.ts`
|
|
85
|
+
* has no other way to get one — this class has no bytes to read). When `id`
|
|
86
|
+
* is source-backed (not overlay-created) and carries a queued positional or
|
|
87
|
+
* named-attribute mutation, this splices that mutation's EFFECTIVE value in
|
|
88
|
+
* at the right group before returning — otherwise the caller's raw-text
|
|
89
|
+
* parse is stale where an edit retargeted a reference the source bytes
|
|
90
|
+
* never show (#2637 follow-up). Ignored (and safe to omit) for an
|
|
91
|
+
* overlay-created id, which always has its own authored payload to start
|
|
92
|
+
* from instead.
|
|
93
|
+
*/
|
|
94
|
+
refGroupsOf?(id: number, sourceGroups?: ReadonlyArray<number | readonly number[] | undefined>): ReadonlyArray<number | readonly number[]> | undefined;
|
|
95
|
+
/**
|
|
96
|
+
* Cheap existence check — no decode, no parse — for "does this SOURCE-backed
|
|
97
|
+
* id carry ANY queued positional or named-attribute mutation at all". False
|
|
98
|
+
* for an overlay-created id (its refs come from {@link refsOf} instead) and
|
|
99
|
+
* for a tombstoned one.
|
|
100
|
+
*
|
|
101
|
+
* `collectReferencedEntityIds` in `reference-collector.ts` only pays for
|
|
102
|
+
* decoding a SOURCE-backed entity's STEP line and re-deriving mutation-aware
|
|
103
|
+
* groups (via {@link refGroupsOf}) on the `IFCREL*` bridge path, because
|
|
104
|
+
* that path already needs the parse for its own bridge decision regardless
|
|
105
|
+
* of whether a mutation exists. An ordinary PRODUCT never takes that path,
|
|
106
|
+
* so a plain `setPositionalAttribute`/`setAttribute` retargeting one of its
|
|
107
|
+
* references onto an id the source bytes never named was invisible to the
|
|
108
|
+
* closure — the byte scan of the original bytes has no way to see it — while
|
|
109
|
+
* emission (which does apply the mutation) still wrote the new id into the
|
|
110
|
+
* output line: a dangling ref with no `visibleOnly` involved (#2637
|
|
111
|
+
* follow-up, round 6: found via a retype-out-of-`IFCREL*` fused with a
|
|
112
|
+
* same-record retarget, but reproduces identically with NO retype at all —
|
|
113
|
+
* it is a general gap in the closure, not a retype-specific one). This
|
|
114
|
+
* method exists so the walk can gate the SAME per-entity decode/parse cost
|
|
115
|
+
* behind a cheap map lookup for every OTHER entity type too, instead of
|
|
116
|
+
* paying it unconditionally for every source-backed entity in the file.
|
|
117
|
+
*/
|
|
118
|
+
hasSourceMutation?(id: number): boolean;
|
|
68
119
|
/**
|
|
69
120
|
* The effective `#id` value of ONE NAMED attribute of an OVERLAY-created
|
|
70
121
|
* record, or undefined when the id was not created by this overlay, the
|
|
@@ -93,6 +144,18 @@ export interface EffectiveEntityIndex extends CompleteEntityIndex {
|
|
|
93
144
|
* overlay that has queued nothing structural (no creates, no deletes, no
|
|
94
145
|
* retypes) takes the same fast path: attribute and property edits do not change
|
|
95
146
|
* which entities exist or what class they are.
|
|
147
|
+
*
|
|
148
|
+
* "Fast path" means `byType`/`size`/`get`/`has` stay pointer-identical to the
|
|
149
|
+
* source view's own — no id's existence or class can differ when nothing
|
|
150
|
+
* structural is queued, so there is nothing there for a wrapper to change.
|
|
151
|
+
* `refGroupsOf` is a different question: a source-backed `IFCREL*`'s
|
|
152
|
+
* reference can absolutely differ from its raw bytes when the ONLY thing
|
|
153
|
+
* queued is a positional/named-attribute edit retargeting it — the exact
|
|
154
|
+
* case with no create, delete or retype to trigger the `OverlayIndex` branch
|
|
155
|
+
* below. `sourceOnly` still answers that one from `view` when a view is
|
|
156
|
+
* available, so a `visibleOnly` closure walk sees it even on this fast path
|
|
157
|
+
* (#2637 follow-up: CodeRabbit found the closure could keep judging such an
|
|
158
|
+
* id by its stale, pre-edit reference).
|
|
96
159
|
*/
|
|
97
160
|
export declare function getEffectiveEntityIndex(dataStore: IfcDataStore, mutationView: MutablePropertyView | null | undefined, applyMutations: boolean): EffectiveEntityIndex;
|
|
98
161
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"effective-index.d.ts","sourceRoot":"","sources":["../src/effective-index.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AAEH,OAAO,
|
|
1
|
+
{"version":3,"file":"effective-index.d.ts","sourceRoot":"","sources":["../src/effective-index.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AAEH,OAAO,EAAkC,KAAK,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACrF,OAAO,EAEL,KAAK,iBAAiB,EACtB,KAAK,mBAAmB,EAEzB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAEL,KAAK,mBAAmB,EAEzB,MAAM,uBAAuB,CAAC;AAE/B;;;;GAIG;AACH,MAAM,WAAW,oBAAqB,SAAQ,mBAAmB;IAC/D;qEACiE;IACjE,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;IACvC;;;;;;;OAOG;IACH,aAAa,CAAC,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAAC;IACtD,8DAA8D;IAC9D,gBAAgB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC;IACtC;mEAC+D;IAC/D,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC;IAC/B;mDAC+C;IAC/C,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;IAClD;;;;;;;;;;;;;;;;;;;;;;;;;OAyBG;IACH,WAAW,CAAC,CACV,EAAE,EAAE,MAAM,EACV,YAAY,CAAC,EAAE,aAAa,CAAC,MAAM,GAAG,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC,GACnE,aAAa,CAAC,MAAM,GAAG,SAAS,MAAM,EAAE,CAAC,GAAG,SAAS,CAAC;IACzD;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACH,iBAAiB,CAAC,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC;IACxC;;;;;;;;;;;;;OAaG;IACH,qBAAqB,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;IACxE;oDACgD;IAChD,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;CACxC;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,uBAAuB,CACrC,SAAS,EAAE,YAAY,EACvB,YAAY,EAAE,mBAAmB,GAAG,IAAI,GAAG,SAAS,EACpD,cAAc,EAAE,OAAO,GACtB,oBAAoB,CAiBtB;AA0SD;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,iBAAiB,GAAG,MAAM,GAAG,SAAS,GAAG,MAAM,EAAE,CAQ1F"}
|
package/dist/effective-index.js
CHANGED
|
@@ -39,7 +39,7 @@
|
|
|
39
39
|
* read from its authored attributes by {@link EffectiveEntityIndex.refsOf}
|
|
40
40
|
* instead of scanned out of the source buffer.
|
|
41
41
|
*/
|
|
42
|
-
import {
|
|
42
|
+
import { getAttributeNamesAcrossSchemas } from '@ifc-lite/parser';
|
|
43
43
|
import { OVERLAY_BYTE_OFFSET, } from '@ifc-lite/mutations';
|
|
44
44
|
import { getCompleteEntityIndex, } from './entity-iteration.js';
|
|
45
45
|
/**
|
|
@@ -51,6 +51,18 @@ import { getCompleteEntityIndex, } from './entity-iteration.js';
|
|
|
51
51
|
* overlay that has queued nothing structural (no creates, no deletes, no
|
|
52
52
|
* retypes) takes the same fast path: attribute and property edits do not change
|
|
53
53
|
* which entities exist or what class they are.
|
|
54
|
+
*
|
|
55
|
+
* "Fast path" means `byType`/`size`/`get`/`has` stay pointer-identical to the
|
|
56
|
+
* source view's own — no id's existence or class can differ when nothing
|
|
57
|
+
* structural is queued, so there is nothing there for a wrapper to change.
|
|
58
|
+
* `refGroupsOf` is a different question: a source-backed `IFCREL*`'s
|
|
59
|
+
* reference can absolutely differ from its raw bytes when the ONLY thing
|
|
60
|
+
* queued is a positional/named-attribute edit retargeting it — the exact
|
|
61
|
+
* case with no create, delete or retype to trigger the `OverlayIndex` branch
|
|
62
|
+
* below. `sourceOnly` still answers that one from `view` when a view is
|
|
63
|
+
* available, so a `visibleOnly` closure walk sees it even on this fast path
|
|
64
|
+
* (#2637 follow-up: CodeRabbit found the closure could keep judging such an
|
|
65
|
+
* id by its stale, pre-edit reference).
|
|
54
66
|
*/
|
|
55
67
|
export function getEffectiveEntityIndex(dataStore, mutationView, applyMutations) {
|
|
56
68
|
const base = getCompleteEntityIndex(dataStore);
|
|
@@ -63,15 +75,34 @@ export function getEffectiveEntityIndex(dataStore, mutationView, applyMutations)
|
|
|
63
75
|
const tombstones = view && typeof view.getTombstones === 'function' ? view.getTombstones() : EMPTY_IDS;
|
|
64
76
|
const retypes = view && typeof view.getTypeMutations === 'function' ? view.getTypeMutations() : EMPTY_RETYPES;
|
|
65
77
|
if (created.size === 0 && tombstones.size === 0 && retypes.size === 0) {
|
|
66
|
-
return sourceOnly(base, dataStore.entityIndex.byType);
|
|
78
|
+
return sourceOnly(base, dataStore.entityIndex.byType, view);
|
|
67
79
|
}
|
|
68
80
|
return new OverlayIndex(base, dataStore.entityIndex.byType, view, created, tombstones, retypes);
|
|
69
81
|
}
|
|
70
82
|
const EMPTY_IDS = new Set();
|
|
71
83
|
const EMPTY_RETYPES = new Map();
|
|
84
|
+
/** Shared by {@link sourceOnly} and {@link OverlayIndex}'s `hasSourceMutation` —
|
|
85
|
+
* see that method's doc on `EffectiveEntityIndex` for why this needs to stay
|
|
86
|
+
* a cheap map-lookup-only check with no decode or parse. */
|
|
87
|
+
function hasQueuedSourceMutation(view, id) {
|
|
88
|
+
const positional = typeof view.getPositionalMutationsForEntity === 'function'
|
|
89
|
+
? view.getPositionalMutationsForEntity(id)
|
|
90
|
+
: null;
|
|
91
|
+
if (positional && positional.size > 0)
|
|
92
|
+
return true;
|
|
93
|
+
const attributeMutations = typeof view.getAttributeMutationsForEntity === 'function'
|
|
94
|
+
? view.getAttributeMutationsForEntity(id)
|
|
95
|
+
: [];
|
|
96
|
+
return attributeMutations.length > 0;
|
|
97
|
+
}
|
|
72
98
|
/** The no-overlay answer: the source view, with the extra questions answered
|
|
73
|
-
* the only way the buffer can answer them.
|
|
74
|
-
|
|
99
|
+
* the only way the buffer can answer them.
|
|
100
|
+
*
|
|
101
|
+
* `view` is still threaded through (not discarded, despite there being no
|
|
102
|
+
* create/delete/retype to react to) purely so `refGroupsOf` can resolve a
|
|
103
|
+
* source-backed id's positional/named-attribute mutations — see this
|
|
104
|
+
* function's own doc for why that is a real, reachable gap otherwise. */
|
|
105
|
+
function sourceOnly(base, byType, view) {
|
|
75
106
|
return {
|
|
76
107
|
get: (id) => base.get(id),
|
|
77
108
|
has: (id) => base.has(id),
|
|
@@ -84,6 +115,10 @@ function sourceOnly(base, byType) {
|
|
|
84
115
|
isOverlayCreated: () => false,
|
|
85
116
|
isDeleted: () => false,
|
|
86
117
|
refsOf: () => undefined,
|
|
118
|
+
refGroupsOf: view
|
|
119
|
+
? (id, sourceGroups) => sourceBackedRefGroups(view, base, EMPTY_RETYPES, id, sourceGroups)
|
|
120
|
+
: undefined,
|
|
121
|
+
hasSourceMutation: view ? (id) => hasQueuedSourceMutation(view, id) : undefined,
|
|
87
122
|
effectiveAttributeRef: () => undefined,
|
|
88
123
|
byType,
|
|
89
124
|
};
|
|
@@ -184,6 +219,71 @@ class OverlayIndex {
|
|
|
184
219
|
this.cachedRefs.set(id, out);
|
|
185
220
|
return out;
|
|
186
221
|
}
|
|
222
|
+
/**
|
|
223
|
+
* See the interface doc: unlike {@link refsOf} (a deliberate UNION — see its
|
|
224
|
+
* own doc for why over-inclusion is harmless there), this is the EFFECTIVE
|
|
225
|
+
* groups: an override REPLACES its slot's group rather than adding a second
|
|
226
|
+
* one alongside it. `refsOf`'s union is safe only for a consumer that treats
|
|
227
|
+
* extra ids as harmless closure growth; `relationshipRefsSurviveExclusion`
|
|
228
|
+
* is a BLOCKING predicate, so a stale, since-superseded group (e.g. a
|
|
229
|
+
* `RelatedObjects` list retargeted away from a hidden entity by a later
|
|
230
|
+
* `setPositionalAttribute`) must not still be able to veto bridging on the
|
|
231
|
+
* value it was overridden away from.
|
|
232
|
+
*
|
|
233
|
+
* Resolved per authored attribute SLOT, same precedence
|
|
234
|
+
* {@link effectiveAttributeRef} uses for one named attribute: a
|
|
235
|
+
* `getAttributeMutationsForEntity` override (most specific — names the slot
|
|
236
|
+
* by schema attribute name) wins, else a `getPositionalMutationsForEntity`
|
|
237
|
+
* override at that index, else the creation payload's own value at that
|
|
238
|
+
* index. Not cached: only called for `IFCREL*` entities, and only when a
|
|
239
|
+
* `visibleOnly`/deletion filter is active, so the extra pass is rare.
|
|
240
|
+
*/
|
|
241
|
+
refGroupsOf(id, sourceGroups) {
|
|
242
|
+
const entity = this.created.get(id);
|
|
243
|
+
if (entity) {
|
|
244
|
+
if (this.tombstones.has(id))
|
|
245
|
+
return undefined;
|
|
246
|
+
const effective = entity.attributes.slice();
|
|
247
|
+
if (typeof this.view.getPositionalMutationsForEntity === 'function') {
|
|
248
|
+
const positional = this.view.getPositionalMutationsForEntity(id);
|
|
249
|
+
if (positional)
|
|
250
|
+
for (const [index, value] of positional)
|
|
251
|
+
effective[index] = value;
|
|
252
|
+
}
|
|
253
|
+
if (typeof this.view.getAttributeMutationsForEntity === 'function') {
|
|
254
|
+
const effectiveType = this.retypes.get(id)?.newType ?? entity.type;
|
|
255
|
+
// Cross-schema, not the IFC4 pin — see `applyAttributeMutations` in
|
|
256
|
+
// `step-exporter.ts` for why: an IFC4X3-only class resolves no slots
|
|
257
|
+
// under the pin, so a named override on one was silently ignored
|
|
258
|
+
// here while emission (which already uses this resolver) applied it,
|
|
259
|
+
// leaving `refGroupsOf` answering from the STALE, pre-override value
|
|
260
|
+
// (#2637 follow-up).
|
|
261
|
+
const names = getAttributeNamesAcrossSchemas(effectiveType);
|
|
262
|
+
for (const { name, value } of this.view.getAttributeMutationsForEntity(id)) {
|
|
263
|
+
const index = names.indexOf(name);
|
|
264
|
+
if (index >= 0)
|
|
265
|
+
effective[index] = value;
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
return groupsFromAttributeValues(effective);
|
|
269
|
+
}
|
|
270
|
+
// Source-backed: this class has no parsed attribute list of its own —
|
|
271
|
+
// delegate to the shared resolver both this branch and `sourceOnly`'s
|
|
272
|
+
// wiring use, since a source-backed id's mutations answer identically
|
|
273
|
+
// either way (structural overlay activity elsewhere in the model has no
|
|
274
|
+
// bearing on THIS id's own positional/attribute edits).
|
|
275
|
+
if (this.tombstones.has(id))
|
|
276
|
+
return undefined;
|
|
277
|
+
return sourceBackedRefGroups(this.view, this.base, this.retypes, id, sourceGroups);
|
|
278
|
+
}
|
|
279
|
+
hasSourceMutation(id) {
|
|
280
|
+
// Overlay-created ids answer through `refsOf` instead — see that method's
|
|
281
|
+
// own doc for why its UNION is the right answer there. A tombstoned id
|
|
282
|
+
// has no line to walk into regardless of what it once carried.
|
|
283
|
+
if (this.created.has(id) || this.tombstones.has(id))
|
|
284
|
+
return false;
|
|
285
|
+
return hasQueuedSourceMutation(this.view, id);
|
|
286
|
+
}
|
|
187
287
|
effectiveAttributeRef(id, attrName) {
|
|
188
288
|
const entity = this.created.get(id);
|
|
189
289
|
if (!entity || this.tombstones.has(id))
|
|
@@ -199,9 +299,10 @@ class OverlayIndex {
|
|
|
199
299
|
}
|
|
200
300
|
// No named override — fall back to the positional slot the schema says
|
|
201
301
|
// this attribute lives at, so a positional mutation (or the untouched
|
|
202
|
-
// creation payload) still answers correctly.
|
|
302
|
+
// creation payload) still answers correctly. Cross-schema resolver — see
|
|
303
|
+
// the identical note in `refGroupsOf` above.
|
|
203
304
|
const effectiveType = this.retypes.get(id)?.newType ?? entity.type;
|
|
204
|
-
const index =
|
|
305
|
+
const index = getAttributeNamesAcrossSchemas(effectiveType).indexOf(attrName);
|
|
205
306
|
if (index < 0)
|
|
206
307
|
return undefined;
|
|
207
308
|
if (typeof this.view.getPositionalMutationsForEntity === 'function') {
|
|
@@ -283,4 +384,77 @@ export function authoredEntityRefs(value) {
|
|
|
283
384
|
const id = Number.parseInt(digits, 10);
|
|
284
385
|
return Number.isInteger(id) && id > 0 && String(id) === digits ? [id] : [];
|
|
285
386
|
}
|
|
387
|
+
/** One authored attribute's contribution to `refGroupsOf`'s grouped shape: a
|
|
388
|
+
* bare id for a single-valued attribute, an array (even an empty one, once
|
|
389
|
+
* it's known to be list-valued) for a SET/LIST, or `undefined` when the
|
|
390
|
+
* value carries no reference at all — matching `relationshipRefsSurviveExclusion`'s
|
|
391
|
+
* own "no group == does not participate" reading. */
|
|
392
|
+
function groupFromAttributeValue(value) {
|
|
393
|
+
const ids = authoredEntityRefs(value);
|
|
394
|
+
if (ids.length === 0)
|
|
395
|
+
return undefined;
|
|
396
|
+
return Array.isArray(value) || ids.length > 1 ? ids : ids[0];
|
|
397
|
+
}
|
|
398
|
+
/** {@link groupFromAttributeValue}, applied over a whole authored attribute
|
|
399
|
+
* list — the shared tail of `refGroupsOf`'s overlay-created branch. */
|
|
400
|
+
function groupsFromAttributeValues(values) {
|
|
401
|
+
const groups = [];
|
|
402
|
+
for (const value of values) {
|
|
403
|
+
const group = groupFromAttributeValue(value);
|
|
404
|
+
if (group !== undefined)
|
|
405
|
+
groups.push(group);
|
|
406
|
+
}
|
|
407
|
+
return groups;
|
|
408
|
+
}
|
|
409
|
+
/**
|
|
410
|
+
* `refGroupsOf` for a SOURCE-backed id (one with no `NewEntity` creation
|
|
411
|
+
* payload) — shared by `OverlayIndex.refGroupsOf`'s source-backed branch and
|
|
412
|
+
* `sourceOnly`'s wiring, since neither has a parsed attribute list of its
|
|
413
|
+
* own to start from: `sourceGroups`, already parsed from the raw STEP line
|
|
414
|
+
* by the caller (`reference-collector.ts`), is the only starting point
|
|
415
|
+
* either has. Splices in a queued positional or named-attribute mutation at
|
|
416
|
+
* the position it names, same precedence as the overlay-created branch: a
|
|
417
|
+
* `getAttributeMutationsForEntity` override (resolved to a slot via
|
|
418
|
+
* {@link getAttributeNamesAcrossSchemas}, cross-schema for the identical
|
|
419
|
+
* reason `applyAttributeMutations` in `step-exporter.ts` is) wins, else a
|
|
420
|
+
* `getPositionalMutationsForEntity` override at that index, else the raw
|
|
421
|
+
* text's own group stands.
|
|
422
|
+
*
|
|
423
|
+
* Returns undefined — not `sourceGroups` verbatim — when `id` has no
|
|
424
|
+
* mutation at all (the overwhelmingly common case for an `IFCREL*` entity),
|
|
425
|
+
* so a caller with no override to apply keeps using its own
|
|
426
|
+
* already-computed answer instead of paying for a copy that changes nothing.
|
|
427
|
+
*/
|
|
428
|
+
function sourceBackedRefGroups(view, base, retypes, id, sourceGroups) {
|
|
429
|
+
if (!sourceGroups)
|
|
430
|
+
return undefined;
|
|
431
|
+
const positional = typeof view.getPositionalMutationsForEntity === 'function'
|
|
432
|
+
? view.getPositionalMutationsForEntity(id)
|
|
433
|
+
: null;
|
|
434
|
+
const attributeMutations = typeof view.getAttributeMutationsForEntity === 'function'
|
|
435
|
+
? view.getAttributeMutationsForEntity(id)
|
|
436
|
+
: [];
|
|
437
|
+
if ((!positional || positional.size === 0) && attributeMutations.length === 0)
|
|
438
|
+
return undefined;
|
|
439
|
+
const record = base.get(id);
|
|
440
|
+
const effective = sourceGroups.slice();
|
|
441
|
+
if (positional) {
|
|
442
|
+
for (const [index, value] of positional)
|
|
443
|
+
effective[index] = groupFromAttributeValue(value);
|
|
444
|
+
}
|
|
445
|
+
if (attributeMutations.length > 0 && record) {
|
|
446
|
+
const effectiveType = retypes.get(id)?.newType ?? record.type;
|
|
447
|
+
const names = getAttributeNamesAcrossSchemas(effectiveType);
|
|
448
|
+
for (const { name, value } of attributeMutations) {
|
|
449
|
+
const index = names.indexOf(name);
|
|
450
|
+
if (index >= 0)
|
|
451
|
+
effective[index] = groupFromAttributeValue(value);
|
|
452
|
+
}
|
|
453
|
+
}
|
|
454
|
+
const out = [];
|
|
455
|
+
for (const group of effective)
|
|
456
|
+
if (group !== undefined)
|
|
457
|
+
out.push(group);
|
|
458
|
+
return out;
|
|
459
|
+
}
|
|
286
460
|
//# sourceMappingURL=effective-index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"effective-index.js","sourceRoot":"","sources":["../src/effective-index.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAE/D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AAEH,OAAO,EAAE,yBAAyB,EAAqB,MAAM,kBAAkB,CAAC;AAChF,OAAO,EACL,mBAAmB,GAIpB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,sBAAsB,GAGvB,MAAM,uBAAuB,CAAC;AAgD/B;;;;;;;;;GASG;AACH,MAAM,UAAU,uBAAuB,CACrC,SAAuB,EACvB,YAAoD,EACpD,cAAuB;IAEvB,MAAM,IAAI,GAAG,sBAAsB,CAAC,SAAS,CAAC,CAAC;IAC/C,MAAM,IAAI,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC,YAAY,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAE5D,MAAM,OAAO,GAAG,IAAI,GAAG,EAAqB,CAAC;IAC7C,IAAI,IAAI,IAAI,OAAO,IAAI,CAAC,cAAc,KAAK,UAAU,EAAE,CAAC;QACtD,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,cAAc,EAAE;YAAE,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;IACpF,CAAC;IACD,MAAM,UAAU,GACd,IAAI,IAAI,OAAO,IAAI,CAAC,aAAa,KAAK,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;IACtF,MAAM,OAAO,GACX,IAAI,IAAI,OAAO,IAAI,CAAC,gBAAgB,KAAK,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC;IAEhG,IAAI,OAAO,CAAC,IAAI,KAAK,CAAC,IAAI,UAAU,CAAC,IAAI,KAAK,CAAC,IAAI,OAAO,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;QACtE,OAAO,UAAU,CAAC,IAAI,EAAE,SAAS,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IACxD,CAAC;IACD,OAAO,IAAI,YAAY,CAAC,IAAI,EAAE,SAAS,CAAC,WAAW,CAAC,MAAM,EAAE,IAAK,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;AACnG,CAAC;AAED,MAAM,SAAS,GAAwB,IAAI,GAAG,EAAU,CAAC;AACzD,MAAM,aAAa,GAA6C,IAAI,GAAG,EAAE,CAAC;AAE1E;+CAC+C;AAC/C,SAAS,UAAU,CAAC,IAAyB,EAAE,MAA6B;IAC1E,OAAO;QACL,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QACzB,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QACzB,IAAI,IAAI;YACN,OAAO,IAAI,CAAC,IAAI,CAAC;QACnB,CAAC;QACD,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE;QAChD,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,WAAW,EAAE;QAChD,aAAa,EAAE,CAAC,GAAG,EAAE,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,WAAW,EAAE;QAC5D,gBAAgB,EAAE,GAAG,EAAE,CAAC,KAAK;QAC7B,SAAS,EAAE,GAAG,EAAE,CAAC,KAAK;QACtB,MAAM,EAAE,GAAG,EAAE,CAAC,SAAS;QACvB,qBAAqB,EAAE,GAAG,EAAE,CAAC,SAAS;QACtC,MAAM;KACP,CAAC;AACJ,CAAC;AAED,MAAM,YAAY;IACC,IAAI,CAAsB;IAC1B,YAAY,CAAwB;IACpC,IAAI,CAAsB;IAC1B,OAAO,CAAyB;IAChC,UAAU,CAAsB;IAChC,OAAO,CAA2C;IAC3D,YAAY,GAAiC,IAAI,CAAC;IACzC,UAAU,GAAG,IAAI,GAAG,EAA6B,CAAC;IAEnE,YACE,IAAyB,EACzB,YAAmC,EACnC,IAAyB,EACzB,OAA+B,EAC/B,UAA+B,EAC/B,OAAiD;QAEjD,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QACjC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAED,GAAG,CAAC,EAAU;QACZ,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YAAE,OAAO,SAAS,CAAC;QAC9C,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACrC,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,UAAU,EAAE,mBAAmB,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC;QAChF,CAAC;QACD,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAC3B,CAAC;IAED,GAAG,CAAC,EAAU;QACZ,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YAAE,OAAO,KAAK,CAAC;QAC1C,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACnD,CAAC;IAED,IAAI,IAAI;QACN,IAAI,IAAI,GAAG,CAAC,CAAC;QACb,KAAK,MAAM,EAAE,IAAI,IAAI,CAAC,UAAU;YAAE,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;gBAAE,IAAI,EAAE,CAAC;QAChE,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;IACnD,CAAC;IAED,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC;QAChB,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YAC9B,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBAAE,SAAS;YAC5C,MAAM,KAAK,CAAC;QACd,CAAC;QACD,KAAK,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACxC,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,UAAU,EAAE,mBAAmB,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC,CAAC;QACpF,CAAC;IACH,CAAC;IAED,MAAM,CAAC,EAAU;QACf,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACzB,IAAI,CAAC,GAAG;YAAE,OAAO,SAAS,CAAC;QAC3B,OAAO,IAAI,CAAC,aAAa,CAAC,EAAE,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IAC1C,CAAC;IAED,aAAa,CAAC,EAAU,EAAE,UAAkB;QAC1C,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,OAAO,IAAI,UAAU,CAAC,CAAC,WAAW,EAAE,CAAC;IACrE,CAAC;IAED,gBAAgB,CAAC,EAAU;QACzB,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAC9B,CAAC;IAED,SAAS,CAAC,EAAU;QAClB,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACjC,CAAC;IAED;;;;;;;;OAQG;IACH,MAAM,CAAC,EAAU;QACf,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACpC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YAAE,OAAO,SAAS,CAAC;QACzD,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACvC,IAAI,MAAM;YAAE,OAAO,MAAM,CAAC;QAC1B,MAAM,GAAG,GAAa,EAAE,CAAC;QACzB,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,UAAU;YAAE,GAAG,CAAC,IAAI,CAAC,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC;QAC9E,IAAI,OAAO,IAAI,CAAC,IAAI,CAAC,+BAA+B,KAAK,UAAU,EAAE,CAAC;YACpE,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;YACjE,IAAI,UAAU;gBAAE,KAAK,MAAM,KAAK,IAAI,UAAU,CAAC,MAAM,EAAE;oBAAE,GAAG,CAAC,IAAI,CAAC,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC;QAClG,CAAC;QACD,IAAI,OAAO,IAAI,CAAC,IAAI,CAAC,8BAA8B,KAAK,UAAU,EAAE,CAAC;YACnE,KAAK,MAAM,EAAE,KAAK,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,8BAA8B,CAAC,EAAE,CAAC,EAAE,CAAC;gBACrE,GAAG,CAAC,IAAI,CAAC,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC;YACzC,CAAC;QACH,CAAC;QACD,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;QAC7B,OAAO,GAAG,CAAC;IACb,CAAC;IAED,qBAAqB,CAAC,EAAU,EAAE,QAAgB;QAChD,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACpC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YAAE,OAAO,SAAS,CAAC;QAEzD,0EAA0E;QAC1E,wEAAwE;QACxE,+DAA+D;QAC/D,IAAI,OAAO,IAAI,CAAC,IAAI,CAAC,8BAA8B,KAAK,UAAU,EAAE,CAAC;YACnE,KAAK,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,8BAA8B,CAAC,EAAE,CAAC,EAAE,CAAC;gBAC3E,IAAI,IAAI,KAAK,QAAQ;oBAAE,OAAO,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YAC7D,CAAC;QACH,CAAC;QAED,uEAAuE;QACvE,sEAAsE;QACtE,6CAA6C;QAC7C,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC;QACnE,MAAM,KAAK,GAAG,yBAAyB,CAAC,aAAa,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC;QACnG,IAAI,KAAK,GAAG,CAAC;YAAE,OAAO,SAAS,CAAC;QAEhC,IAAI,OAAO,IAAI,CAAC,IAAI,CAAC,+BAA+B,KAAK,UAAU,EAAE,CAAC;YACpE,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;YACjE,MAAM,KAAK,GAAG,UAAU,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;YACrC,IAAI,KAAK,KAAK,SAAS;gBAAE,OAAO,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/D,CAAC;QAED,OAAO,kBAAkB,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACzD,CAAC;IAED,IAAI,MAAM;QACR,IAAI,IAAI,CAAC,YAAY;YAAE,OAAO,IAAI,CAAC,YAAY,CAAC;QAChD,0EAA0E;QAC1E,0EAA0E;QAC1E,sCAAsC;QACtC,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAEvC,MAAM,YAAY,GAAG,IAAI,GAAG,EAAuB,CAAC;QACpD,MAAM,WAAW,GAAG,CAAC,EAAU,EAAQ,EAAE;YACvC,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC;YACzD,IAAI,CAAC,UAAU;gBAAE,OAAO;YACxB,IAAI,MAAM,GAAG,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;YAC1C,IAAI,CAAC,MAAM;gBAAE,YAAY,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC,MAAM,GAAG,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC;YAChE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACjB,CAAC,CAAC;QACF,KAAK,MAAM,EAAE,IAAI,IAAI,CAAC,UAAU;YAAE,WAAW,CAAC,EAAE,CAAC,CAAC;QAClD,KAAK,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACxC,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;gBAAE,SAAS;YACnC,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,WAAW,EAAE,KAAK,MAAM,CAAC,OAAO,CAAC,WAAW,EAAE;gBAAE,WAAW,CAAC,EAAE,CAAC,CAAC;QAC9F,CAAC;QACD,KAAK,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,YAAY,EAAE,CAAC;YACvC,MAAM,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAC1B,IAAI,GAAG;gBAAE,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAC3D,CAAC;QAED,MAAM,MAAM,GAAG,CAAC,IAAY,EAAE,EAAU,EAAQ,EAAE;YAChD,MAAM,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAC1B,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC3C,CAAC,CAAC;QACF,KAAK,MAAM,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;YACrC,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YAC7B,IAAI,IAAI;gBAAE,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QAC7B,CAAC;QACD,KAAK,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACxC,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;gBAAE,SAAS;YACpF,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;YAC5C,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,WAAW,EAAE,KAAK,MAAM;gBAAE,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QAC3E,CAAC;QAED,IAAI,CAAC,YAAY,GAAG,GAAG,CAAC;QACxB,OAAO,GAAG,CAAC;IACb,CAAC;CACF;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,kBAAkB,CAAC,KAA6C;IAC9E,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC;IACnF,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,EAAE,CAAC;IACzC,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IAC7B,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,GAAG;QAAE,OAAO,EAAE,CAAC;IACxD,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAChC,MAAM,EAAE,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IACvC,OAAO,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,EAAE,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AAC7E,CAAC"}
|
|
1
|
+
{"version":3,"file":"effective-index.js","sourceRoot":"","sources":["../src/effective-index.ts"],"names":[],"mappings":"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"}
|
|
@@ -331,6 +331,15 @@ export declare class MergedExporter {
|
|
|
331
331
|
/**
|
|
332
332
|
* Resolve the set of express ids to include for a model under visibility
|
|
333
333
|
* filtering, or `null` when no filtering is requested (include everything).
|
|
334
|
+
*
|
|
335
|
+
* Also returns `hiddenProductIds` (`null` alongside a `null` `included`):
|
|
336
|
+
* `renderEntity` needs it to withhold-or-narrow a relationship's own OUTPUT
|
|
337
|
+
* line the same way `StepExporter` does (`isExcludedFromRelationshipRefs` /
|
|
338
|
+
* `step-exporter.ts:1181`,`:1486`) — `collectReferencedEntityIds` already
|
|
339
|
+
* refuses to WALK INTO a relationship whose sole subject is hidden (#2548),
|
|
340
|
+
* but that only keeps the closure from growing past it; a root's own bytes
|
|
341
|
+
* are still copied to the output verbatim unless something narrows them
|
|
342
|
+
* too, which is the #2398 dangling-`#N` shape.
|
|
334
343
|
*/
|
|
335
344
|
private computeIncludedEntityIds;
|
|
336
345
|
/**
|
|
@@ -353,7 +362,9 @@ export declare class MergedExporter {
|
|
|
353
362
|
* Render one source entity into its final STEP line: apply id offset + shared
|
|
354
363
|
* remaps, re-stamp a federated GlobalId if needed, apply schema conversion,
|
|
355
364
|
* and register the emitted GlobalId so later models can reconcile against it.
|
|
356
|
-
* Returns `null` when schema conversion drops the entity
|
|
365
|
+
* Returns `null` when schema conversion drops the entity, OR when
|
|
366
|
+
* `hiddenProductIds` withholds a relationship whose every named subject was
|
|
367
|
+
* hidden (below).
|
|
357
368
|
*/
|
|
358
369
|
private renderEntity;
|
|
359
370
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"merged-exporter.d.ts","sourceRoot":"","sources":["../src/merged-exporter.ts"],"names":[],"mappings":"AAIA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAkB,MAAM,kBAAkB,CAAC;AAGrE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"merged-exporter.d.ts","sourceRoot":"","sources":["../src/merged-exporter.ts"],"names":[],"mappings":"AAIA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAkB,MAAM,kBAAkB,CAAC;AAGrE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAsM/D;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,8BAA8B;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,mBAAmB;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,sDAAsD;IACtD,SAAS,EAAE,YAAY,CAAC;IACxB;;;;;;;;;OASG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IAEzB;;;;;;;;;;OAUG;IACH,YAAY,CAAC,EAAE,mBAAmB,CAAC;CACpC;AAoCD;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,mFAAmF;IACnF,MAAM,EAAE,QAAQ,GAAG,MAAM,GAAG,QAAQ,GAAG,MAAM,CAAC;IAC9C,uBAAuB;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,kBAAkB;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,wBAAwB;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,gDAAgD;IAChD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,sBAAsB;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;;OAGG;IACH,eAAe,CAAC,EAAE,YAAY,CAAC;IAE/B;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA4BG;IACH,kBAAkB,CAAC,EAAE,MAAM,GAAG,WAAW,GAAG,eAAe,CAAC;IAE5D;;;;;;;;;;;OAWG;IACH,UAAU,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAC;IAElC,4EAA4E;IAC5E,cAAc,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAC;IAEtC;;;;;;;;;OASG;IACH,YAAY,CAAC,EAAE,SAAS,GAAG,cAAc,GAAG,wBAAwB,CAAC;IAErE,8DAA8D;IAC9D,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,qDAAqD;IACrD,sBAAsB,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;IAClD,0DAA0D;IAC1D,wBAAwB,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC;IAE3D,yCAAyC;IACzC,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,cAAc,KAAK,IAAI,CAAC;CACjD;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,8BAA8B;IAC9B,KAAK,EAAE,WAAW,GAAG,UAAU,GAAG,YAAY,CAAC;IAC/C,mBAAmB;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,0CAA0C;IAC1C,iBAAiB,EAAE,MAAM,CAAC;IAC1B,gCAAgC;IAChC,aAAa,EAAE,MAAM,CAAC;IACtB,wDAAwD;IACxD,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,iFAAiF;IACjF,OAAO,EAAE,UAAU,CAAC;IACpB,iBAAiB;IACjB,KAAK,EAAE;QACL,8BAA8B;QAC9B,UAAU,EAAE,MAAM,CAAC;QACnB,mCAAmC;QACnC,gBAAgB,EAAE,MAAM,CAAC;QACzB,yBAAyB;QACzB,QAAQ,EAAE,MAAM,CAAC;QACjB;;;WAGG;QACH,mBAAmB,EAAE,MAAM,CAAC;QAC5B;;;;WAIG;QACH,oBAAoB,EAAE,MAAM,CAAC;QAC7B;;;;WAIG;QACH,QAAQ,EAAE,MAAM,EAAE,CAAC;KACpB,CAAC;CACH;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,qBAAqB;IACpC,gFAAgF;IAChF,OAAO,EAAE,IAAI,CAAC;IACd,kFAAkF;IAClF,KAAK,EAAE,iBAAiB,CAAC,OAAO,CAAC,CAAC;CACnC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,MAAM,CAAoB;gBAEtB,MAAM,EAAE,eAAe,EAAE;IAOrC,MAAM,CAAC,OAAO,EAAE,kBAAkB,GAAG,iBAAiB;IAiEtD;;;;OAIG;IACG,WAAW,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAY1E;;;;;;;;;OASG;IACG,eAAe,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAYlF;;;;;;;;OAQG;YACW,qBAAqB;IAuGnC;;;;;;;;;OASG;YACW,iBAAiB;IAkC/B;;OAEG;IACH,OAAO,CAAC,UAAU;IAsBlB;;;;;OAKG;IACH,OAAO,CAAC,uBAAuB;IAkB/B;;;;OAIG;IACH,OAAO,CAAC,WAAW;IAWnB;;;OAGG;IACH,OAAO,CAAC,eAAe;IA+BvB;;;;;;;;;;;;;;;;OAgBG;IACH,OAAO,CAAC,gBAAgB;IAwBxB;;;;;;OAMG;IACH,OAAO,CAAC,uBAAuB;IAgD/B,mFAAmF;IACnF,OAAO,CAAC,aAAa;IAIrB,6FAA6F;IAC7F,OAAO,CAAC,kBAAkB;IAO1B;;;;OAIG;IACH,OAAO,CAAC,gBAAgB;IAQxB,4EAA4E;IAC5E,OAAO,CAAC,eAAe;IAOvB;;;;;;;;;;;;OAYG;IACH,OAAO,CAAC,wBAAwB;IAmBhC;;;;;;;;;;;;;;OAcG;IACH,OAAO,CAAC,SAAS;IAkFjB;;;;;;;OAOG;IACH,OAAO,CAAC,YAAY;IA8EpB;;;;;OAKG;IACH,OAAO,CAAC,eAAe;IAWvB;;;;;;OAMG;IACH,OAAO,CAAC,cAAc;IAetB;;;;OAIG;IACH,OAAO,CAAC,mBAAmB;IAsB3B;;;OAGG;IACH,OAAO,CAAC,eAAe;IAUvB;;;;;;;OAOG;IACH,OAAO,CAAC,eAAe;IAsDvB;;;OAGG;IACH,OAAO,CAAC,0BAA0B;IAelC;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAI1B;;;OAGG;IACH,OAAO,CAAC,kBAAkB;IAkC1B;;;;;;;;;;;;;OAaG;IACH,OAAO,CAAC,oBAAoB;IAoF5B;;;;;;;;;;;;OAYG;IACH,OAAO,CAAC,kBAAkB;IA0B1B;;;;;;;;;OASG;IACH,OAAO,CAAC,0BAA0B;IA8BlC;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAazB;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAa9B;;;OAGG;IACH,OAAO,CAAC,oBAAoB;CA0D7B"}
|
package/dist/merged-exporter.js
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
|
|
4
4
|
import { generateHeader, deterministicGlobalId, IfcParser, asSourceBytes } from '@ifc-lite/parser';
|
|
5
5
|
import { decodeIfcString } from '@ifc-lite/encoding';
|
|
6
|
-
import { collectReferencedEntityIds, getVisibleEntityIds, collectStyleEntities } from './reference-collector.js';
|
|
6
|
+
import { collectReferencedEntityIds, getVisibleEntityIds, collectStyleEntities, filterHiddenRefsFromRelationshipLine, } from './reference-collector.js';
|
|
7
7
|
import { convertStepLine, needsConversion } from './schema-converter.js';
|
|
8
8
|
import { assembleStepBytes, assembleStepBlob } from './step-file-assembly.js';
|
|
9
9
|
import { getCompleteEntityIndex, getMaxExpressId } from './entity-iteration.js';
|
|
@@ -198,7 +198,7 @@ export class MergedExporter {
|
|
|
198
198
|
// Complete view over byId + any deferred property atoms, so the closure
|
|
199
199
|
// walk and the emit loop both reach every entity the source defines.
|
|
200
200
|
const completeIndex = getCompleteEntityIndex(model.dataStore);
|
|
201
|
-
const
|
|
201
|
+
const visibility = this.computeIncludedEntityIds(model, options, completeIndex, source);
|
|
202
202
|
const mode = this.resolveModelMode(model, isFirstModel, setup);
|
|
203
203
|
if (!isFirstModel && !mode.compatible)
|
|
204
204
|
federatedModelCount++;
|
|
@@ -209,11 +209,11 @@ export class MergedExporter {
|
|
|
209
209
|
const plan = this.planModel(model, completeIndex, isFirstModel, mode.compatible, mode.lengthFactor, setup, guidToFinalId);
|
|
210
210
|
const sourceSchema = model.dataStore.schemaVersion || 'IFC4';
|
|
211
211
|
for (const [expressId, entityRef] of completeIndex) {
|
|
212
|
-
if (
|
|
212
|
+
if (visibility !== null && !visibility.included.has(expressId))
|
|
213
213
|
continue;
|
|
214
214
|
if (plan.skipEntityIds.has(expressId))
|
|
215
215
|
continue;
|
|
216
|
-
const line = this.renderEntity(expressId, entityRef, source, offset, plan, sourceSchema, schema, guidToFinalId, mode);
|
|
216
|
+
const line = this.renderEntity(expressId, entityRef, source, offset, plan, sourceSchema, schema, guidToFinalId, mode, visibility?.hiddenProductIds ?? null, completeIndex);
|
|
217
217
|
if (line !== null)
|
|
218
218
|
allEntityLines.push(line);
|
|
219
219
|
}
|
|
@@ -315,7 +315,7 @@ export class MergedExporter {
|
|
|
315
315
|
});
|
|
316
316
|
}
|
|
317
317
|
const completeIndex = getCompleteEntityIndex(model.dataStore);
|
|
318
|
-
const
|
|
318
|
+
const visibility = this.computeIncludedEntityIds(model, options, completeIndex, source);
|
|
319
319
|
const mode = this.resolveModelMode(model, isFirstModel, setup);
|
|
320
320
|
if (!isFirstModel && !mode.compatible)
|
|
321
321
|
federatedModelCount++;
|
|
@@ -327,11 +327,11 @@ export class MergedExporter {
|
|
|
327
327
|
const sourceSchema = model.dataStore.schemaVersion || 'IFC4';
|
|
328
328
|
let entityCount = 0;
|
|
329
329
|
for (const [expressId, entityRef] of completeIndex) {
|
|
330
|
-
if (
|
|
330
|
+
if (visibility !== null && !visibility.included.has(expressId))
|
|
331
331
|
continue;
|
|
332
332
|
if (plan.skipEntityIds.has(expressId))
|
|
333
333
|
continue;
|
|
334
|
-
const line = this.renderEntity(expressId, entityRef, source, offset, plan, sourceSchema, schema, guidToFinalId, mode);
|
|
334
|
+
const line = this.renderEntity(expressId, entityRef, source, offset, plan, sourceSchema, schema, guidToFinalId, mode, visibility?.hiddenProductIds ?? null, completeIndex);
|
|
335
335
|
if (line !== null)
|
|
336
336
|
allEntityLines.push(line);
|
|
337
337
|
entityCount++;
|
|
@@ -614,6 +614,15 @@ export class MergedExporter {
|
|
|
614
614
|
/**
|
|
615
615
|
* Resolve the set of express ids to include for a model under visibility
|
|
616
616
|
* filtering, or `null` when no filtering is requested (include everything).
|
|
617
|
+
*
|
|
618
|
+
* Also returns `hiddenProductIds` (`null` alongside a `null` `included`):
|
|
619
|
+
* `renderEntity` needs it to withhold-or-narrow a relationship's own OUTPUT
|
|
620
|
+
* line the same way `StepExporter` does (`isExcludedFromRelationshipRefs` /
|
|
621
|
+
* `step-exporter.ts:1181`,`:1486`) — `collectReferencedEntityIds` already
|
|
622
|
+
* refuses to WALK INTO a relationship whose sole subject is hidden (#2548),
|
|
623
|
+
* but that only keeps the closure from growing past it; a root's own bytes
|
|
624
|
+
* are still copied to the output verbatim unless something narrows them
|
|
625
|
+
* too, which is the #2398 dangling-`#N` shape.
|
|
617
626
|
*/
|
|
618
627
|
computeIncludedEntityIds(model, options, completeIndex, source) {
|
|
619
628
|
if (!options.visibleOnly)
|
|
@@ -627,7 +636,7 @@ export class MergedExporter {
|
|
|
627
636
|
byId: completeIndex,
|
|
628
637
|
byType: model.dataStore.entityIndex.byType,
|
|
629
638
|
});
|
|
630
|
-
return included;
|
|
639
|
+
return { included, hiddenProductIds };
|
|
631
640
|
}
|
|
632
641
|
/**
|
|
633
642
|
* Plan how a model's entities are remapped, skipped, or re-stamped, given
|
|
@@ -717,10 +726,30 @@ export class MergedExporter {
|
|
|
717
726
|
* Render one source entity into its final STEP line: apply id offset + shared
|
|
718
727
|
* remaps, re-stamp a federated GlobalId if needed, apply schema conversion,
|
|
719
728
|
* and register the emitted GlobalId so later models can reconcile against it.
|
|
720
|
-
* Returns `null` when schema conversion drops the entity
|
|
729
|
+
* Returns `null` when schema conversion drops the entity, OR when
|
|
730
|
+
* `hiddenProductIds` withholds a relationship whose every named subject was
|
|
731
|
+
* hidden (below).
|
|
721
732
|
*/
|
|
722
|
-
renderEntity(localId, entityRef, source, offset, plan, sourceSchema, targetSchema, guidToFinalId, mode) {
|
|
723
|
-
|
|
733
|
+
renderEntity(localId, entityRef, source, offset, plan, sourceSchema, targetSchema, guidToFinalId, mode, hiddenProductIds, completeIndex) {
|
|
734
|
+
let entityText = decodeRange(source, entityRef.byteOffset, entityRef.byteOffset + entityRef.byteLength);
|
|
735
|
+
// A `visibleOnly` export must narrow — or entirely withhold — a
|
|
736
|
+
// relationship's own OUTPUT line the same way `StepExporter` does
|
|
737
|
+
// (`isExcludedFromRelationshipRefs`, `step-exporter.ts:1181`/`:1486`).
|
|
738
|
+
// `collectReferencedEntityIds` already refuses to WALK INTO a relationship
|
|
739
|
+
// whose sole subject is hidden (#2548), but a root's own bytes are still
|
|
740
|
+
// copied to the output verbatim unless narrowed here too — without this,
|
|
741
|
+
// a hidden id survived as a dangling `#N` with no `#N=` line (the #2398
|
|
742
|
+
// shape), which is exactly what closing the #2548 closure leak would
|
|
743
|
+
// otherwise have traded it for. Runs in LOCAL id space, before the remap
|
|
744
|
+
// below, because `hiddenProductIds` and `completeIndex` are both local to
|
|
745
|
+
// this model.
|
|
746
|
+
if (hiddenProductIds !== null && isRelationshipType(entityRef.type.toUpperCase())) {
|
|
747
|
+
const isExcluded = (id) => hiddenProductIds.has(id) || !completeIndex.has(id);
|
|
748
|
+
const filtered = filterHiddenRefsFromRelationshipLine(entityText, isExcluded);
|
|
749
|
+
if (filtered === null)
|
|
750
|
+
return null;
|
|
751
|
+
entityText = filtered;
|
|
752
|
+
}
|
|
724
753
|
// Remap ids. Fast path: the first model (offset 0, no remaps) is byte-identical.
|
|
725
754
|
let finalText;
|
|
726
755
|
if (offset === 0 && plan.sharedRemap.size === 0) {
|