@ifc-lite/data 3.5.1 → 4.0.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.
Files changed (52) hide show
  1. package/dist/color.d.ts +17 -0
  2. package/dist/color.d.ts.map +1 -0
  3. package/dist/color.js +24 -0
  4. package/dist/color.js.map +1 -0
  5. package/dist/decomposition.d.ts +32 -0
  6. package/dist/decomposition.d.ts.map +1 -0
  7. package/dist/decomposition.js +57 -0
  8. package/dist/decomposition.js.map +1 -0
  9. package/dist/group-property-sets.d.ts +15 -0
  10. package/dist/group-property-sets.d.ts.map +1 -0
  11. package/dist/group-property-sets.js +33 -0
  12. package/dist/group-property-sets.js.map +1 -0
  13. package/dist/group-quantity-sets.d.ts +17 -0
  14. package/dist/group-quantity-sets.d.ts.map +1 -0
  15. package/dist/group-quantity-sets.js +37 -0
  16. package/dist/group-quantity-sets.js.map +1 -0
  17. package/dist/ifc-schema/descendants.d.ts +20 -0
  18. package/dist/ifc-schema/descendants.d.ts.map +1 -0
  19. package/dist/ifc-schema/descendants.js +279 -0
  20. package/dist/ifc-schema/descendants.js.map +1 -0
  21. package/dist/ifc-schema/entity-aliases.d.ts +61 -0
  22. package/dist/ifc-schema/entity-aliases.d.ts.map +1 -0
  23. package/dist/ifc-schema/entity-aliases.js +71 -0
  24. package/dist/ifc-schema/entity-aliases.js.map +1 -0
  25. package/dist/ifc-schema/index.d.ts +1 -0
  26. package/dist/ifc-schema/index.d.ts.map +1 -1
  27. package/dist/ifc-schema/index.js +4 -1
  28. package/dist/ifc-schema/index.js.map +1 -1
  29. package/dist/index.d.ts +9 -1
  30. package/dist/index.d.ts.map +1 -1
  31. package/dist/index.js +7 -1
  32. package/dist/index.js.map +1 -1
  33. package/dist/property-table.d.ts.map +1 -1
  34. package/dist/property-table.js +2 -16
  35. package/dist/property-table.js.map +1 -1
  36. package/dist/quantity-table.d.ts +5 -0
  37. package/dist/quantity-table.d.ts.map +1 -1
  38. package/dist/quantity-table.js +8 -18
  39. package/dist/quantity-table.js.map +1 -1
  40. package/dist/relationship-graph-helpers.d.ts +68 -0
  41. package/dist/relationship-graph-helpers.d.ts.map +1 -0
  42. package/dist/relationship-graph-helpers.js +100 -0
  43. package/dist/relationship-graph-helpers.js.map +1 -0
  44. package/dist/relationship-graph.d.ts +59 -8
  45. package/dist/relationship-graph.d.ts.map +1 -1
  46. package/dist/relationship-graph.js +99 -26
  47. package/dist/relationship-graph.js.map +1 -1
  48. package/dist/step-serializers.d.ts +20 -0
  49. package/dist/step-serializers.d.ts.map +1 -1
  50. package/dist/step-serializers.js +4 -4
  51. package/dist/step-serializers.js.map +1 -1
  52. package/package.json +3 -3
@@ -0,0 +1 @@
1
+ {"version":3,"file":"relationship-graph-helpers.d.ts","sourceRoot":"","sources":["../src/relationship-graph-helpers.ts"],"names":[],"mappings":"AAIA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AACvE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAEnD;;;;;;;;GAQG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,cAAc,EAAE,MAAM,KAAK,OAAO,GAAG,OAAO,CAGhG;AAED,sEAAsE;AACtE,MAAM,WAAW,yBAAyB;IACxC,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,gBAAgB,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;CACxB;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,iBAAiB,GAAG,yBAAyB,EAAE,CAa9F;AAED,mFAAmF;AACnF,MAAM,WAAW,eAAe;IAC9B,iBAAiB,EAAE,WAAW,CAAC;IAC/B,oBAAoB,EAAE,WAAW,CAAC;IAClC,cAAc,EAAE,WAAW,CAAC;CAC7B;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,CAAC,GAAG,eAAe,GAAG,SAAS,CAkBjH;AAED,qFAAqF;AACrF,wBAAgB,eAAe,CAAC,GAAG,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAWxE"}
@@ -0,0 +1,100 @@
1
+ /* This Source Code Form is subject to the terms of the Mozilla Public
2
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
3
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
4
+ /**
5
+ * True if the connection `edge` represents still exists once some
6
+ * `IfcRel*` instances may have been deleted. A deduped edge remembers every
7
+ * `IfcRel*` that named the same (source, target, type) triple — the edge
8
+ * survives a delete as long as any one of `relationshipId` or
9
+ * `shadowedRelationshipIds` is still live. Shared by the CLI and MCP
10
+ * backends so their delete-then-query logic can't drift out of sync with
11
+ * each other or with the graph's own dedupe (#3782 review).
12
+ */
13
+ export function edgeSurvives(edge, isDeleted) {
14
+ if (!isDeleted(edge.relationshipId))
15
+ return true;
16
+ return edge.shadowedRelationshipIds?.some((id) => !isDeleted(id)) ?? false;
17
+ }
18
+ /**
19
+ * Flatten one CSR half (`RelationshipEdges`) to row-based form — one row
20
+ * per `IfcRel*` STEP record that named this (source, target, type) triple,
21
+ * not one row per deduped edge. Two `IfcRel*` instances can legally name
22
+ * the same triple (#3760); `RelationshipGraphBuilder.addEdge` collapses
23
+ * that to one edge and keeps the extra ids in `shadowedRelationshipIds`
24
+ * rather than dropping them, so an exporter that walked the raw
25
+ * `edgeRelIds` column alone (Parquet's `Relationships.parquet`, the DuckDB
26
+ * `relationships` table) would silently drop that STEP record from its
27
+ * output (#3782 review). Both use this shared helper instead of
28
+ * hand-rolling the CSR walk so they cannot drift out of sync on it again.
29
+ *
30
+ * Walks `edges.offsets` to find source ids, so it needs a real CSR half —
31
+ * an accessor that only implements `getEdges`/`getTargets`/`hasAnyEdges`
32
+ * over a facade with empty `offsets`/`counts` (e.g. the server-loaded-model
33
+ * path's hand-rolled `RelationshipEdges`) yields nothing here, regardless
34
+ * of what `getEdges` itself would answer.
35
+ */
36
+ export function flattenRelationshipEdges(edges) {
37
+ const out = [];
38
+ for (const sourceId of edges.offsets.keys()) {
39
+ for (const edge of edges.getEdges(sourceId)) {
40
+ out.push({ sourceId, targetId: edge.target, type: edge.type, relationshipId: edge.relationshipId });
41
+ if (edge.shadowedRelationshipIds) {
42
+ for (const id of edge.shadowedRelationshipIds) {
43
+ out.push({ sourceId, targetId: edge.target, type: edge.type, relationshipId: id });
44
+ }
45
+ }
46
+ }
47
+ }
48
+ return out;
49
+ }
50
+ /**
51
+ * Pack `(edgePosition, extraIds)` pairs collected during a CSR scatter into
52
+ * the three sparse typed-array columns `RelationshipEdges` stores them as.
53
+ * `buildCSR`'s only caller in-package; not re-exported from the package
54
+ * index (see `binarySearchU32`, which the `@ifc-lite/cache` reader does
55
+ * share). `pairs` need not be pre-sorted by position. An entry with an
56
+ * empty `ids` array is dropped rather than packed as an empty group — it
57
+ * would violate `Edge.shadowedRelationshipIds`'s "present implies
58
+ * non-empty" invariant (#3782 review). Returns `undefined` when nothing is
59
+ * left to pack, so a caller can omit the columns entirely rather than
60
+ * write out empty arrays — they're optional on `RelationshipEdges`.
61
+ */
62
+ export function buildShadowedColumns(pairs) {
63
+ const nonEmpty = pairs.filter(([, ids]) => ids.length > 0);
64
+ if (nonEmpty.length === 0)
65
+ return undefined;
66
+ const sorted = nonEmpty.sort((a, b) => a[0] - b[0]);
67
+ const shadowedEdgeIndex = new Uint32Array(sorted.length);
68
+ const shadowedGroupOffsets = new Uint32Array(sorted.length + 1);
69
+ let totalIds = 0;
70
+ for (const [, ids] of sorted)
71
+ totalIds += ids.length;
72
+ const shadowedRelIds = new Uint32Array(totalIds);
73
+ let cursor = 0;
74
+ for (let g = 0; g < sorted.length; g++) {
75
+ const [pos, ids] = sorted[g];
76
+ shadowedEdgeIndex[g] = pos;
77
+ shadowedGroupOffsets[g] = cursor;
78
+ for (const id of ids)
79
+ shadowedRelIds[cursor++] = id;
80
+ }
81
+ shadowedGroupOffsets[sorted.length] = cursor;
82
+ return { shadowedEdgeIndex, shadowedGroupOffsets, shadowedRelIds };
83
+ }
84
+ /** Binary search for `target` in an ascending-sorted `Uint32Array`; -1 if absent. */
85
+ export function binarySearchU32(arr, target) {
86
+ let lo = 0;
87
+ let hi = arr.length - 1;
88
+ while (lo <= hi) {
89
+ const mid = (lo + hi) >>> 1;
90
+ const v = arr[mid];
91
+ if (v === target)
92
+ return mid;
93
+ if (v < target)
94
+ lo = mid + 1;
95
+ else
96
+ hi = mid - 1;
97
+ }
98
+ return -1;
99
+ }
100
+ //# sourceMappingURL=relationship-graph-helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"relationship-graph-helpers.js","sourceRoot":"","sources":["../src/relationship-graph-helpers.ts"],"names":[],"mappings":"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"}
@@ -7,6 +7,17 @@ export interface Edge {
7
7
  target: number;
8
8
  type: RelationshipType;
9
9
  relationshipId: number;
10
+ /**
11
+ * Express ids of other `IfcRel*` instances that named the same
12
+ * (source, target, type) triple and were collapsed into this edge by the
13
+ * dedupe in `RelationshipGraphBuilder.addEdge` (#3760). A consumer that
14
+ * needs to know whether the *connection* still exists after a delete —
15
+ * not just whether `relationshipId` was deleted — must check these too:
16
+ * use `edgeSurvives` (`relationship-graph-helpers.js`) rather than
17
+ * testing `relationshipId` alone. Invariant: present implies non-empty —
18
+ * `undefined` means "nothing collapsed into this edge", never `[]`.
19
+ */
20
+ shadowedRelationshipIds?: number[];
10
21
  }
11
22
  export interface RelationshipEdges {
12
23
  offsets: Map<number, number>;
@@ -14,6 +25,19 @@ export interface RelationshipEdges {
14
25
  edgeTargets: Uint32Array;
15
26
  edgeTypes: Uint16Array;
16
27
  edgeRelIds: Uint32Array;
28
+ /**
29
+ * Sparse "shadowed" ids collapsed by the (source, target, type) dedupe
30
+ * (#3760/#3782): three small, Transferable typed arrays rather than one
31
+ * `(number[] | undefined)[]` slot per edge — the dense shape
32
+ * structured-clones (not transfers) across the worker boundary, measured
33
+ * +1.2s/+190MB on a 12M-edge model for a field that's empty almost
34
+ * everywhere. `shadowedEdgeIndex[g]` (ascending) names the edge whose ids
35
+ * live at `shadowedRelIds[shadowedGroupOffsets[g]..shadowedGroupOffsets[g+1])`.
36
+ * Absent together when nothing was collapsed — read via `?.`.
37
+ */
38
+ shadowedEdgeIndex?: Uint32Array;
39
+ shadowedGroupOffsets?: Uint32Array;
40
+ shadowedRelIds?: Uint32Array;
17
41
  getEdges(entityId: number, type?: RelationshipType): Edge[];
18
42
  getTargets(entityId: number, type?: RelationshipType): number[];
19
43
  hasAnyEdges(entityId: number): boolean;
@@ -29,18 +53,39 @@ export interface RelationshipInfo {
29
53
  relationshipId: number;
30
54
  type: RelationshipType;
31
55
  typeName: string;
56
+ /** See `Edge.shadowedRelationshipIds`. */
57
+ shadowedRelationshipIds?: number[];
32
58
  }
33
- /**
34
- * Structure-of-Arrays relationship graph builder.
35
- * Uses parallel number arrays instead of object arrays to avoid millions of
36
- * small object allocations. Build phase uses counting sort (O(n)) instead
37
- * of comparison sort (O(n log n)) for massive speedup on large files.
38
- */
39
59
  export declare class RelationshipGraphBuilder {
40
60
  private _sources;
41
61
  private _targets;
42
62
  private _types;
43
63
  private _relIds;
64
+ /**
65
+ * Extra `IfcRel*` ids collapsed into an already-recorded edge, keyed by
66
+ * that edge's index in `_sources`/`_targets`/`_types`/`_relIds`. Sparse —
67
+ * only entities with an actual duplicate get an entry — rather than a
68
+ * slot per edge, so a builder that never sees a duplicate pays nothing
69
+ * for this beyond one empty `Map`.
70
+ */
71
+ private _shadowedRelIds;
72
+ /**
73
+ * Edges already recorded, keyed by source, then by `target * TYPE_SPAN + type`,
74
+ * mapping to the edge's index in `_sources`/`_targets`/`_types`/`_relIds`.
75
+ * Nothing in EXPRESS forbids two `IfcRel*` instances from naming the same
76
+ * (relating, related) pair, so a schema-legal file can hand us the same edge
77
+ * twice; every consumer that walks the raw edge list would then count the
78
+ * target twice (#3760).
79
+ */
80
+ private _seen;
81
+ /**
82
+ * Adds one edge, folding a repeat of a `(source, target, type)` triple
83
+ * already present into the surviving edge instead of dropping it outright.
84
+ * The first instance's express id becomes `relationshipId`; later repeats
85
+ * are kept in `_shadowedRelIds` so deleting one of several `IfcRel*`
86
+ * instances that named the same pair doesn't make the connection
87
+ * disappear while a sibling instance still exists (#3782 review).
88
+ */
44
89
  addEdge(source: number, target: number, type: RelationshipType, relId: number): void;
45
90
  build(): RelationshipGraph;
46
91
  }
@@ -55,6 +100,10 @@ export interface RelationshipEdgesColumns {
55
100
  edgeTargets: Uint32Array;
56
101
  edgeTypes: Uint16Array;
57
102
  edgeRelIds: Uint32Array;
103
+ /** See `RelationshipEdges.shadowedEdgeIndex` et al. */
104
+ shadowedEdgeIndex?: Uint32Array;
105
+ shadowedGroupOffsets?: Uint32Array;
106
+ shadowedRelIds?: Uint32Array;
58
107
  }
59
108
  /**
60
109
  * Plain-data representation of a complete bidirectional `RelationshipGraph`.
@@ -71,9 +120,11 @@ export interface RelationshipGraphColumns {
71
120
  *
72
121
  * Exported because the graph can be reconstructed from raw edge arrays
73
122
  * (e.g. when merging or rebuilding a graph) without going through the
74
- * `RelationshipGraphBuilder` mutation API.
123
+ * `RelationshipGraphBuilder` mutation API. `shadowedRelIds` maps a
124
+ * pre-scatter edge index (in `keys`/`values`/`types`/`relIds`) to the extra
125
+ * `IfcRel*` ids collapsed into it; pass an empty `Map` when none.
75
126
  */
76
- export declare function buildCSR(n: number, keys: number[] | Uint32Array, values: number[] | Uint32Array, types: number[] | Uint16Array, relIds: number[] | Uint32Array): RelationshipEdges;
127
+ export declare function buildCSR(n: number, keys: number[] | Uint32Array, values: number[] | Uint32Array, types: number[] | Uint16Array, relIds: number[] | Uint32Array, shadowedRelIds: Map<number, number[]>): RelationshipEdges;
77
128
  /**
78
129
  * Rebuild the closure-bearing `RelationshipEdges` view (one direction of
79
130
  * the graph) from raw CSR columns. Used by both the in-process builder and
@@ -1 +1 @@
1
- {"version":3,"file":"relationship-graph.d.ts","sourceRoot":"","sources":["../src/relationship-graph.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"relationship-graph.d.ts","sourceRoot":"","sources":["../src/relationship-graph.ts"],"names":[],"mappings":"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"}
@@ -6,18 +6,64 @@
6
6
  * Enables fast traversal in both directions
7
7
  */
8
8
  import { RelationshipType } from './types.js';
9
+ import { binarySearchU32, buildShadowedColumns } from './relationship-graph-helpers.js';
9
10
  /**
10
11
  * Structure-of-Arrays relationship graph builder.
11
12
  * Uses parallel number arrays instead of object arrays to avoid millions of
12
13
  * small object allocations. Build phase uses counting sort (O(n)) instead
13
14
  * of comparison sort (O(n log n)) for massive speedup on large files.
14
15
  */
16
+ /** Multiplier that keeps `type` in its own digit range of the dedupe key. */
17
+ const TYPE_SPAN = 1 << 16;
15
18
  export class RelationshipGraphBuilder {
16
19
  _sources = [];
17
20
  _targets = [];
18
21
  _types = [];
19
22
  _relIds = [];
23
+ /**
24
+ * Extra `IfcRel*` ids collapsed into an already-recorded edge, keyed by
25
+ * that edge's index in `_sources`/`_targets`/`_types`/`_relIds`. Sparse —
26
+ * only entities with an actual duplicate get an entry — rather than a
27
+ * slot per edge, so a builder that never sees a duplicate pays nothing
28
+ * for this beyond one empty `Map`.
29
+ */
30
+ _shadowedRelIds = new Map();
31
+ /**
32
+ * Edges already recorded, keyed by source, then by `target * TYPE_SPAN + type`,
33
+ * mapping to the edge's index in `_sources`/`_targets`/`_types`/`_relIds`.
34
+ * Nothing in EXPRESS forbids two `IfcRel*` instances from naming the same
35
+ * (relating, related) pair, so a schema-legal file can hand us the same edge
36
+ * twice; every consumer that walks the raw edge list would then count the
37
+ * target twice (#3760).
38
+ */
39
+ _seen = new Map();
40
+ /**
41
+ * Adds one edge, folding a repeat of a `(source, target, type)` triple
42
+ * already present into the surviving edge instead of dropping it outright.
43
+ * The first instance's express id becomes `relationshipId`; later repeats
44
+ * are kept in `_shadowedRelIds` so deleting one of several `IfcRel*`
45
+ * instances that named the same pair doesn't make the connection
46
+ * disappear while a sibling instance still exists (#3782 review).
47
+ */
20
48
  addEdge(source, target, type, relId) {
49
+ let seenForSource = this._seen.get(source);
50
+ if (seenForSource === undefined) {
51
+ seenForSource = new Map();
52
+ this._seen.set(source, seenForSource);
53
+ }
54
+ // Express ids are u32, so this stays well inside Number.MAX_SAFE_INTEGER.
55
+ const key = target * TYPE_SPAN + type;
56
+ const existingIndex = seenForSource.get(key);
57
+ if (existingIndex !== undefined) {
58
+ let shadowed = this._shadowedRelIds.get(existingIndex);
59
+ if (shadowed === undefined) {
60
+ shadowed = [];
61
+ this._shadowedRelIds.set(existingIndex, shadowed);
62
+ }
63
+ shadowed.push(relId);
64
+ return;
65
+ }
66
+ seenForSource.set(key, this._sources.length);
21
67
  this._sources.push(source);
22
68
  this._targets.push(target);
23
69
  this._types.push(type);
@@ -25,8 +71,8 @@ export class RelationshipGraphBuilder {
25
71
  }
26
72
  build() {
27
73
  const n = this._sources.length;
28
- const forward = buildCSR(n, this._sources, this._targets, this._types, this._relIds);
29
- const inverse = buildCSR(n, this._targets, this._sources, this._types, this._relIds);
74
+ const forward = buildCSR(n, this._sources, this._targets, this._types, this._relIds, this._shadowedRelIds);
75
+ const inverse = buildCSR(n, this._targets, this._sources, this._types, this._relIds, this._shadowedRelIds);
30
76
  return relationshipGraphFromEdges(forward, inverse);
31
77
  }
32
78
  }
@@ -36,9 +82,11 @@ export class RelationshipGraphBuilder {
36
82
  *
37
83
  * Exported because the graph can be reconstructed from raw edge arrays
38
84
  * (e.g. when merging or rebuilding a graph) without going through the
39
- * `RelationshipGraphBuilder` mutation API.
85
+ * `RelationshipGraphBuilder` mutation API. `shadowedRelIds` maps a
86
+ * pre-scatter edge index (in `keys`/`values`/`types`/`relIds`) to the extra
87
+ * `IfcRel*` ids collapsed into it; pass an empty `Map` when none.
40
88
  */
41
- export function buildCSR(n, keys, values, types, relIds) {
89
+ export function buildCSR(n, keys, values, types, relIds, shadowedRelIds) {
42
90
  if (n === 0)
43
91
  return emptyRelationshipEdges();
44
92
  // Step 1: count per key
@@ -64,15 +112,26 @@ export function buildCSR(n, keys, values, types, relIds) {
64
112
  const writePos = new Map();
65
113
  for (const [k, o] of offsets)
66
114
  writePos.set(k, o);
115
+ // Collected in scatter (final-position) order below, then sorted — cheap
116
+ // since this list is expected to stay tiny (rare duplicates) regardless
117
+ // of how large `n` gets.
118
+ const shadowedPairs = [];
67
119
  for (let i = 0; i < n; i++) {
68
120
  const k = keys[i];
69
121
  const pos = writePos.get(k);
70
122
  edgeTargets[pos] = values[i];
71
123
  edgeTypes[pos] = types[i];
72
124
  edgeRelIds[pos] = relIds[i];
125
+ const shadow = shadowedRelIds.get(i);
126
+ if (shadow !== undefined)
127
+ shadowedPairs.push([pos, shadow]);
73
128
  writePos.set(k, pos + 1);
74
129
  }
75
- return relationshipEdgesFromColumns({ offsets, counts, edgeTargets, edgeTypes, edgeRelIds });
130
+ const columns = { offsets, counts, edgeTargets, edgeTypes, edgeRelIds };
131
+ const shadowed = buildShadowedColumns(shadowedPairs);
132
+ if (shadowed)
133
+ Object.assign(columns, shadowed);
134
+ return relationshipEdgesFromColumns(columns);
76
135
  }
77
136
  function emptyRelationshipEdges() {
78
137
  return relationshipEdgesFromColumns({
@@ -89,7 +148,7 @@ function emptyRelationshipEdges() {
89
148
  * the parser-worker transport layer.
90
149
  */
91
150
  export function relationshipEdgesFromColumns(columns) {
92
- const { offsets, counts, edgeTargets, edgeTypes, edgeRelIds } = columns;
151
+ const { offsets, counts, edgeTargets, edgeTypes, edgeRelIds, shadowedEdgeIndex, shadowedGroupOffsets, shadowedRelIds } = columns;
93
152
  const edges = {
94
153
  offsets,
95
154
  counts,
@@ -104,7 +163,15 @@ export function relationshipEdgesFromColumns(columns) {
104
163
  const out = [];
105
164
  for (let i = o; i < o + c; i++) {
106
165
  if (type === undefined || edgeTypes[i] === type) {
107
- out.push({ target: edgeTargets[i], type: edgeTypes[i], relationshipId: edgeRelIds[i] });
166
+ const edge = { target: edgeTargets[i], type: edgeTypes[i], relationshipId: edgeRelIds[i] };
167
+ if (shadowedEdgeIndex !== undefined && shadowedGroupOffsets !== undefined && shadowedRelIds !== undefined) {
168
+ const g = binarySearchU32(shadowedEdgeIndex, i);
169
+ if (g !== -1) {
170
+ // A fresh array, not a view into the shared buffer.
171
+ edge.shadowedRelationshipIds = Array.from(shadowedRelIds.subarray(shadowedGroupOffsets[g], shadowedGroupOffsets[g + 1]));
172
+ }
173
+ }
174
+ out.push(edge);
108
175
  }
109
176
  }
110
177
  return out;
@@ -116,6 +183,8 @@ export function relationshipEdgesFromColumns(columns) {
116
183
  return offsets.has(entityId);
117
184
  },
118
185
  };
186
+ if (shadowedEdgeIndex !== undefined)
187
+ Object.assign(edges, { shadowedEdgeIndex, shadowedGroupOffsets, shadowedRelIds });
119
188
  return edges;
120
189
  }
121
190
  /**
@@ -140,11 +209,12 @@ export function relationshipGraphFromEdges(forward, inverse) {
140
209
  getRelationshipsBetween: (sourceId, targetId) => {
141
210
  return forward.getEdges(sourceId)
142
211
  .filter((edge) => edge.target === targetId)
143
- .map((edge) => ({
144
- relationshipId: edge.relationshipId,
145
- type: edge.type,
146
- typeName: RelationshipTypeToString(edge.type),
147
- }));
212
+ .map((edge) => {
213
+ const info = { relationshipId: edge.relationshipId, type: edge.type, typeName: RelationshipTypeToString(edge.type) };
214
+ if (edge.shadowedRelationshipIds !== undefined)
215
+ info.shadowedRelationshipIds = edge.shadowedRelationshipIds;
216
+ return info;
217
+ });
148
218
  },
149
219
  };
150
220
  }
@@ -161,21 +231,24 @@ export function relationshipGraphFromColumns(columns) {
161
231
  * detach from the source when used in a `postMessage` transfer list.
162
232
  */
163
233
  export function relationshipGraphToColumns(graph) {
234
+ const toColumns = (edges) => {
235
+ const columns = {
236
+ offsets: edges.offsets,
237
+ counts: edges.counts,
238
+ edgeTargets: edges.edgeTargets,
239
+ edgeTypes: edges.edgeTypes,
240
+ edgeRelIds: edges.edgeRelIds,
241
+ };
242
+ if (edges.shadowedEdgeIndex !== undefined) {
243
+ columns.shadowedEdgeIndex = edges.shadowedEdgeIndex;
244
+ columns.shadowedGroupOffsets = edges.shadowedGroupOffsets;
245
+ columns.shadowedRelIds = edges.shadowedRelIds;
246
+ }
247
+ return columns;
248
+ };
164
249
  return {
165
- forward: {
166
- offsets: graph.forward.offsets,
167
- counts: graph.forward.counts,
168
- edgeTargets: graph.forward.edgeTargets,
169
- edgeTypes: graph.forward.edgeTypes,
170
- edgeRelIds: graph.forward.edgeRelIds,
171
- },
172
- inverse: {
173
- offsets: graph.inverse.offsets,
174
- counts: graph.inverse.counts,
175
- edgeTargets: graph.inverse.edgeTargets,
176
- edgeTypes: graph.inverse.edgeTypes,
177
- edgeRelIds: graph.inverse.edgeRelIds,
178
- },
250
+ forward: toColumns(graph.forward),
251
+ inverse: toColumns(graph.inverse),
179
252
  };
180
253
  }
181
254
  function RelationshipTypeToString(type) {
@@ -1 +1 @@
1
- {"version":3,"file":"relationship-graph.js","sourceRoot":"","sources":["../src/relationship-graph.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"relationship-graph.js","sourceRoot":"","sources":["../src/relationship-graph.ts"],"names":[],"mappings":"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"}
@@ -72,6 +72,26 @@ export declare function formatStepReal(value: number): string;
72
72
  * Serialize a single value to STEP format
73
73
  */
74
74
  export declare function serializeValue(value: StepValue): string;
75
+ /**
76
+ * Escape a string for STEP format.
77
+ *
78
+ * Backslash and single-quote are doubled per ISO-10303-21. Control characters
79
+ * (CR/LF and other C0 codes plus DEL) become ONE space EACH, not one per run,
80
+ * so a value cannot inject a line break and split one record across two.
81
+ * Collapsing a run (`/[...]+/`, which this did until #3284) loses length that
82
+ * `ifc_lite_export::step_text::escape` preserves, so the two halves wrote the
83
+ * same value differently. ISO 10303-21 6.3.3.4 mandates neither; per-character
84
+ * is the more faithful, and the parity claim below must be true of one.
85
+ *
86
+ * ISO 10303-21 6.3.3.4 restricts a literal's plain-text bytes to the "basic
87
+ * graphic" range 32-126; anything else is a control directive (`\X\HH`,
88
+ * `\X2\HHHH\X0\`, `\X4\HHHHHHHH\X0\`), never a raw byte, and buildingSMART
89
+ * says the same for IFC2X3/IFC4/IFC4X3. A reader decoding as ISO-8859-1 (what
90
+ * the base standard and most consumers assume) turns raw UTF-8 into mojibake or
91
+ * a broken parse: IfcOpenShell#699/#1016, files rejected by Solibri. The one TS
92
+ * implementation (#3300); export re-exports it, a vector test pins Rust parity.
93
+ */
94
+ export declare function escapeStepString(str: string): string;
75
95
  /**
76
96
  * Serialize an entity to a STEP line, resolving its attribute order from the
77
97
  * supplied schema registry.
@@ -1 +1 @@
1
- {"version":3,"file":"step-serializers.d.ts","sourceRoot":"","sources":["../src/step-serializers.ts"],"names":[],"mappings":"AAkBA;;GAEG;AACH,MAAM,MAAM,SAAS,GACjB,MAAM,GACN,MAAM,GACN,OAAO,GACP,IAAI,GACJ,SAAS,GACT,SAAS,EAAE,GACX,SAAS,GACT,SAAS,CAAC;AAEd;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,GAAG,EAAE,MAAM,CAAC;CACb;AAED;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,wBAAwB;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,oBAAoB;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,uBAAuB;IACvB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED;;;;GAIG;AACH,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,aAAa,CAAC,EAAE,aAAa,CAAC;YAAE,IAAI,EAAE,MAAM,CAAA;SAAE,CAAC,CAAA;KAAE,GAAG,SAAS,CAAC,CAAC;CAC3F;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,SAAS,CAE9D;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,SAAS,CAE9D;AAED;;GAEG;AACH,wBAAgB,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,SAAS,CAEzC;AAED;;GAEG;AACH,wBAAgB,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,CAEhD;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAUpD;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,SAAS,GAAG,MAAM,CAiDvD;AA4CD;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,kBAAkB,EAAE,MAAM,EAAE,UAAU,GAAG,MAAM,CAc/F;AAED;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE;IACtC,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAChC,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC3B,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IACjC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,GAAG,MAAM,CAwBT;AAED;;;GAGG;AACH,wBAAgB,4BAA4B,CAC1C,QAAQ,EAAE,kBAAkB,EAC5B,QAAQ,EAAE,UAAU,EAAE,EACtB,OAAO,EAAE,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC,CAAC,CAAC,GAC5C,MAAM,CAaR;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,CAoDrD"}
1
+ {"version":3,"file":"step-serializers.d.ts","sourceRoot":"","sources":["../src/step-serializers.ts"],"names":[],"mappings":"AAkBA;;GAEG;AACH,MAAM,MAAM,SAAS,GACjB,MAAM,GACN,MAAM,GACN,OAAO,GACP,IAAI,GACJ,SAAS,GACT,SAAS,EAAE,GACX,SAAS,GACT,SAAS,CAAC;AAEd;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,GAAG,EAAE,MAAM,CAAC;CACb;AAED;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,wBAAwB;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,oBAAoB;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,uBAAuB;IACvB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED;;;;GAIG;AACH,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,aAAa,CAAC,EAAE,aAAa,CAAC;YAAE,IAAI,EAAE,MAAM,CAAA;SAAE,CAAC,CAAA;KAAE,GAAG,SAAS,CAAC,CAAC;CAC3F;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,SAAS,CAE9D;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,SAAS,CAE9D;AAED;;GAEG;AACH,wBAAgB,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,SAAS,CAEzC;AAED;;GAEG;AACH,wBAAgB,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,CAEhD;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAUpD;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,SAAS,GAAG,MAAM,CAiDvD;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAqBpD;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,kBAAkB,EAAE,MAAM,EAAE,UAAU,GAAG,MAAM,CAc/F;AAED;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE;IACtC,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAChC,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC3B,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IACjC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,GAAG,MAAM,CAwBT;AAED;;;GAGG;AACH,wBAAgB,4BAA4B,CAC1C,QAAQ,EAAE,kBAAkB,EAC5B,QAAQ,EAAE,UAAU,EAAE,EACtB,OAAO,EAAE,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC,CAAC,CAAC,GAC5C,MAAM,CAaR;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,CAoDrD"}
@@ -124,10 +124,10 @@ export function serializeValue(value) {
124
124
  * `\X2\HHHH\X0\`, `\X4\HHHHHHHH\X0\`), never a raw byte, and buildingSMART
125
125
  * says the same for IFC2X3/IFC4/IFC4X3. A reader decoding as ISO-8859-1 (what
126
126
  * the base standard and most consumers assume) turns raw UTF-8 into mojibake or
127
- * a broken parse: IfcOpenShell#699/#1016, files rejected by Solibri. Matches
128
- * `@ifc-lite/export`'s `escapeStepString`.
127
+ * a broken parse: IfcOpenShell#699/#1016, files rejected by Solibri. The one TS
128
+ * implementation (#3300); export re-exports it, a vector test pins Rust parity.
129
129
  */
130
- function escapeStepString(str) {
130
+ export function escapeStepString(str) {
131
131
  const escaped = str
132
132
  .replace(/\\/g, '\\\\') // Backslash
133
133
  .replace(/'/g, "''") // Single quote
@@ -180,7 +180,7 @@ export function toStepLineWithRegistry(registry, entity) {
180
180
  export function generateHeader(options) {
181
181
  const toList = (v, fallback) => v === undefined ? fallback : Array.isArray(v) ? v : [v];
182
182
  const quoteList = (items) => '(' + items.map(s => "'" + escapeStepString(s) + "'").join(',') + ')';
183
- const now = options.timeStamp ?? new Date().toISOString().replace(/[-:]/g, '').split('.')[0];
183
+ const now = options.timeStamp ?? new Date().toISOString().replace(/\.\d{3}Z$/, ''); // ISO 8601 time_stamp: keep '-'/':', drop only ms+'Z'
184
184
  const description = toList(options.description, ['ViewDefinition [CoordinationView]']);
185
185
  const implementationLevel = options.implementationLevel || '2;1';
186
186
  const authors = toList(options.author, ['']);
@@ -1 +1 @@
1
- {"version":3,"file":"step-serializers.js","sourceRoot":"","sources":["../src/step-serializers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"step-serializers.js","sourceRoot":"","sources":["../src/step-serializers.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ifc-lite/data",
3
- "version": "3.5.1",
3
+ "version": "4.0.0",
4
4
  "description": "Columnar data structures for IFC-Lite",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -13,10 +13,10 @@
13
13
  }
14
14
  },
15
15
  "dependencies": {
16
- "@ifc-lite/encoding": "^2.1.0"
16
+ "@ifc-lite/encoding": "^2.2.0"
17
17
  },
18
18
  "devDependencies": {
19
- "@types/node": "^26.2.0",
19
+ "@types/node": "^26.4.0",
20
20
  "proj4": "^2.21.0",
21
21
  "typescript": "^6.0.3",
22
22
  "vitest": "^4.1.11"