@ifc-lite/server-client 1.23.1 → 2.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 (50) hide show
  1. package/README.md +28 -1
  2. package/dist/client.d.ts +29 -3
  3. package/dist/client.d.ts.map +1 -1
  4. package/dist/client.js +89 -162
  5. package/dist/client.js.map +1 -1
  6. package/dist/data-model-decoder.d.ts +4 -0
  7. package/dist/data-model-decoder.d.ts.map +1 -1
  8. package/dist/data-model-decoder.js +14 -8
  9. package/dist/data-model-decoder.js.map +1 -1
  10. package/dist/geometry-diagnostics-types.d.ts +124 -0
  11. package/dist/geometry-diagnostics-types.d.ts.map +1 -0
  12. package/dist/geometry-diagnostics-types.js +5 -0
  13. package/dist/geometry-diagnostics-types.js.map +1 -0
  14. package/dist/parquet-columns.d.ts +81 -0
  15. package/dist/parquet-columns.d.ts.map +1 -0
  16. package/dist/parquet-columns.js +97 -0
  17. package/dist/parquet-columns.js.map +1 -0
  18. package/dist/parquet-decoder.d.ts +3 -1
  19. package/dist/parquet-decoder.d.ts.map +1 -1
  20. package/dist/parquet-decoder.js +40 -70
  21. package/dist/parquet-decoder.js.map +1 -1
  22. package/dist/parquet-nullable.d.ts +26 -0
  23. package/dist/parquet-nullable.d.ts.map +1 -0
  24. package/dist/parquet-nullable.js +36 -0
  25. package/dist/parquet-nullable.js.map +1 -0
  26. package/dist/parquet-rotation.d.ts +70 -0
  27. package/dist/parquet-rotation.d.ts.map +1 -0
  28. package/dist/parquet-rotation.js +96 -0
  29. package/dist/parquet-rotation.js.map +1 -0
  30. package/dist/parquet-stream-events.d.ts +23 -0
  31. package/dist/parquet-stream-events.d.ts.map +1 -0
  32. package/dist/parquet-stream-events.js +133 -0
  33. package/dist/parquet-stream-events.js.map +1 -0
  34. package/dist/parquet-tables.d.ts +11 -1
  35. package/dist/parquet-tables.d.ts.map +1 -1
  36. package/dist/parquet-tables.js +54 -94
  37. package/dist/parquet-tables.js.map +1 -1
  38. package/dist/parse-query.d.ts +18 -0
  39. package/dist/parse-query.d.ts.map +1 -0
  40. package/dist/parse-query.js +21 -0
  41. package/dist/parse-query.js.map +1 -0
  42. package/dist/symbolic-types.d.ts +168 -0
  43. package/dist/symbolic-types.d.ts.map +1 -0
  44. package/dist/symbolic-types.js +5 -0
  45. package/dist/symbolic-types.js.map +1 -0
  46. package/dist/types.d.ts +29 -205
  47. package/dist/types.d.ts.map +1 -1
  48. package/dist/types.js +2 -1
  49. package/dist/types.js.map +1 -1
  50. package/package.json +4 -3
@@ -5,6 +5,7 @@
5
5
  * Decode Parquet-encoded data model from server.
6
6
  */
7
7
  import { ensureParquetInit } from './parquet-decoder.js';
8
+ import { nullableFloat64Column } from './parquet-nullable.js';
8
9
  /**
9
10
  * Columnar entity index for the server data model (issue #1841).
10
11
  *
@@ -155,11 +156,10 @@ export class ServerEntityIndex {
155
156
  }
156
157
  }
157
158
  /**
158
- * Decode data model from Parquet buffer.
159
- *
160
- * OPTIMIZED: Uses toArray() for bulk string extraction instead of per-element .get() calls.
161
- * Arrow's .get(i) is slow for strings (offset lookup + UTF-8 decode per call).
162
- * toArray() decodes all strings in one pass which is 10-20x faster for large datasets.
159
+ * Decode data model from Parquet buffer. Bulk string columns use toArray()
160
+ * instead of per-element .get() (10-20x faster, no per-row UTF-8 decode); a
161
+ * NULLABLE numeric column is the exception — see `nullableFloat64Column` in
162
+ * `parquet-nullable.ts` for why toArray() alone silently turns a null into 0.
163
163
  *
164
164
  * Format: [entities_len][entities_data][properties_len][properties_data][quantities_len][quantities_data][relationships_len][relationships_data][spatial_len][spatial_data]
165
165
  */
@@ -350,6 +350,10 @@ export async function decodeDataModel(data) {
350
350
  const relTypesArr = relationshipsArrow.getChild('rel_type')?.toArray();
351
351
  const relatingIds = relationshipsArrow.getChild('relating_id')?.toArray();
352
352
  const relatedIds = relationshipsArrow.getChild('related_id')?.toArray();
353
+ // rel_id arrives with the v6 payload (issue #3860). An older server sends no
354
+ // such column: leave the field absent rather than defaulting to 0, so a
355
+ // caller can tell "no id on the wire" from the genuine 0 on synthetic rows.
356
+ const relIds = relationshipsArrow.getChild('rel_id')?.toArray();
353
357
  // Pre-allocate array for better performance
354
358
  const relationships = new Array(relatingIds.length);
355
359
  for (let i = 0; i < relatingIds.length; i++) {
@@ -358,6 +362,8 @@ export async function decodeDataModel(data) {
358
362
  relating_id: relatingIds[i],
359
363
  related_id: relatedIds[i],
360
364
  };
365
+ if (relIds !== undefined)
366
+ relationships[i].rel_id = relIds[i];
361
367
  }
362
368
  // Parse spatial hierarchy - format: [nodes_len][nodes_data][element_to_storey_len][element_to_storey_data]...
363
369
  const spatialView = new DataView(spatialData.buffer, spatialData.byteOffset, spatialData.byteLength);
@@ -391,7 +397,7 @@ export async function decodeDataModel(data) {
391
397
  const pathsArr = nodesArrow.getChild('path')?.toArray();
392
398
  const spatialTypeNamesArr = nodesArrow.getChild('type_name')?.toArray();
393
399
  const spatialNamesArr = nodesArrow.getChild('name')?.toArray();
394
- const elevationsArr = nodesArrow.getChild('elevation')?.toArray();
400
+ const elevationsArr = nullableFloat64Column(nodesArrow, 'elevation');
395
401
  const childrenIdsList = nodesArrow.getChild('children_ids');
396
402
  const elementIdsList = nodesArrow.getChild('element_ids');
397
403
  // Pre-allocate array for spatial nodes
@@ -421,7 +427,7 @@ export async function decodeDataModel(data) {
421
427
  path: pathsArr[i] ?? '',
422
428
  type_name: spatialTypeNamesArr[i] ?? '',
423
429
  name: spatialNamesArr[i] || undefined,
424
- elevation: elevationsArr[i] ?? undefined,
430
+ elevation: elevationsArr?.[i] ?? undefined,
425
431
  children_ids: childrenIds,
426
432
  element_ids: elementIds,
427
433
  };
@@ -473,7 +479,7 @@ export async function decodeDataModel(data) {
473
479
  const setNames = t.getChild('set_name')?.toArray();
474
480
  const layerIndices = t.getChild('layer_index')?.toArray();
475
481
  const materialNames = t.getChild('material_name')?.toArray();
476
- const thicknesses = t.getChild('thickness')?.toArray();
482
+ const thicknesses = nullableFloat64Column(t, 'thickness');
477
483
  const ventChild = t.getChild('is_ventilated');
478
484
  const categories = t.getChild('category')?.toArray();
479
485
  for (let i = 0; i < elementIds.length; i++) {
@@ -1 +1 @@
1
- {"version":3,"file":"data-model-decoder.js","sourceRoot":"","sources":["../src/data-model-decoder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"data-model-decoder.js","sourceRoot":"","sources":["../src/data-model-decoder.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,124 @@
1
+ /**
2
+ * The CSG / opening diagnostics wire shape of the parse response.
3
+ *
4
+ * WHY THIS IS A COPY. `@ifc-lite/geometry` owns the canonical
5
+ * `GeometryDiagnostics` (packages/geometry/src/diagnostics.ts), and re-exporting
6
+ * it would be the obvious way to have one definition. This package deliberately
7
+ * ships with an empty `dependencies` map: it is the thin HTTP client, usable in
8
+ * a browser or a Node service that never loads the geometry stack, and
9
+ * `@ifc-lite/geometry` pulls in `@ifc-lite/wasm` (a cargo/wasm-pack build) plus
10
+ * `@ifc-lite/data`. A type-only import would not stay type-only either -
11
+ * declaration emit writes the cross-package reference into `dist/index.d.ts`,
12
+ * so every consumer would have to have the geometry package installed to
13
+ * typecheck. The copy is the cheaper trade.
14
+ *
15
+ * WHAT KEEPS THE COPY HONEST. `geometry-diagnostics-contract.test.ts` compares
16
+ * this interface with the canonical one field by field at COMPILE TIME, so a
17
+ * field added on either side fails `pnpm typecheck` instead of drifting the way
18
+ * this file drifted through #3691, #3752 and #3766 (issue #3857).
19
+ *
20
+ * Split out of `types.ts` under the module-size ratchet, following the
21
+ * `symbolic-types.ts` precedent (#3199); `types.ts` re-exports it, so the
22
+ * package's public surface is unchanged.
23
+ *
24
+ * Field names are camelCase because the Rust producer's `rename_all` says so -
25
+ * unlike the snake_case response envelope this type sits inside.
26
+ */
27
+ /**
28
+ * CSG / opening diagnostics for a geometry pass. Mirrors the Rust
29
+ * `GeometryDiagnostics` (camelCase serde) the server and the WASM batch path both
30
+ * emit. `totalCsgFailures` and the classification counts are exact;
31
+ * `productsWithFailures`, `hostsWithOpenings` and `silentNoOps` are batch-summed
32
+ * upper bounds.
33
+ */
34
+ export interface GeometryDiagnostics {
35
+ /**
36
+ * Contract version handshake (mirrors Rust
37
+ * `GEOMETRY_DIAGNOSTICS_SCHEMA_VERSION`, currently 3). Bumped on field
38
+ * renames/removals and count-semantics changes; also on an additive field
39
+ * whose absence a consumer must tell apart from a real zero, which is why 3
40
+ * (added `totalUnsupportedItems`) bumped. A purely additive optional field
41
+ * that no consumer gates on does not bump. Kept worded the same as the
42
+ * canonical copy in `@ifc-lite/geometry`: the structural contract test cannot
43
+ * see comments, so a rule stated two ways here is drift nothing catches.
44
+ *
45
+ * REQUIRED, not optional: the Rust field is a plain `u32` serialized
46
+ * unconditionally, so every producer since #1514 writes the key. A value of
47
+ * `0` is what Rust's `#[serde(default)]` yields when it READS a payload
48
+ * written before #1514, and is the only "pre-versioned producer" signal a
49
+ * consumer sees.
50
+ */
51
+ schemaVersion: number;
52
+ /** Total CSG boolean failures (un-cut openings, emptied hosts, kernel fallbacks). */
53
+ totalCsgFailures: number;
54
+ /** Distinct products with at least one failure (batch-summed upper bound). */
55
+ productsWithFailures: number;
56
+ /** Hosts that had openings processed (batch-summed upper bound). */
57
+ hostsWithOpenings: number;
58
+ /** Opening-classifier outcome counts. */
59
+ classification: {
60
+ rectangular: number;
61
+ diagonal: number;
62
+ nonRectangular: number;
63
+ total: number;
64
+ };
65
+ /** Failure counts by stable reason label, sorted desc by count. */
66
+ failuresByReason: Array<{
67
+ reason: string;
68
+ count: number;
69
+ }>;
70
+ /**
71
+ * Hosts where rectangular cutters ran, the triangle count was unchanged, and NO
72
+ * failure was recorded (cut attempted, geometry not modified). Batch-summed
73
+ * upper bound.
74
+ */
75
+ silentNoOps: number;
76
+ /** rect_fast fast-path engagement (perf observability). */
77
+ rectFast: {
78
+ fired: number;
79
+ openingsCut: number;
80
+ deferHostNotBox: number;
81
+ deferNotThrough: number;
82
+ deferOffFace: number;
83
+ deferNearEdge: number;
84
+ deferNoOpenings: number;
85
+ /** Optional: absent on payloads produced before this counter existed (#1649). */
86
+ deferTooManyOpenings?: number;
87
+ };
88
+ /**
89
+ * Content-hash references the geometry pass refused because they exceeded
90
+ * `u32::MAX` (#3421 / #3752). Nonzero means some instancing was skipped, not
91
+ * that geometry is wrong. Optional: absent on payloads from producers
92
+ * predating the counter.
93
+ */
94
+ oversizedRefDrops?: number;
95
+ /** Bounded top-N worst-failing hosts (opt-in per-product detail). */
96
+ worstHosts: Array<{
97
+ productId: number;
98
+ ifcType: string;
99
+ openings: number;
100
+ csgFailures: number;
101
+ firstFailureLabel?: string;
102
+ /** World-space AABB of the host mesh, when a void cut captured it.
103
+ * Mirrors the `{min, max}` shape used by `MeshData.localBounds`. */
104
+ bbox?: {
105
+ min: [number, number, number];
106
+ max: [number, number, number];
107
+ };
108
+ /** Final triangle count of the host's mesh (post-cut when a void
109
+ * subtraction ran, otherwise the pre-cut count). */
110
+ triangleCount?: number;
111
+ }>;
112
+ /**
113
+ * Representation items dropped from the mesh output because no processor is
114
+ * registered for the item's type, or the registered processor errored (#3691).
115
+ * Optional: absent on payloads from producers predating the counter.
116
+ */
117
+ totalUnsupportedItems?: number;
118
+ /** `totalUnsupportedItems` broken down by IFC type, sorted desc by count. */
119
+ unsupportedItemsByType?: Array<{
120
+ reason: string;
121
+ count: number;
122
+ }>;
123
+ }
124
+ //# sourceMappingURL=geometry-diagnostics-types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"geometry-diagnostics-types.d.ts","sourceRoot":"","sources":["../src/geometry-diagnostics-types.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH;;;;;;GAMG;AACH,MAAM,WAAW,mBAAmB;IAClC;;;;;;;;;;;;;;;OAeG;IACH,aAAa,EAAE,MAAM,CAAC;IACtB,qFAAqF;IACrF,gBAAgB,EAAE,MAAM,CAAC;IACzB,8EAA8E;IAC9E,oBAAoB,EAAE,MAAM,CAAC;IAC7B,oEAAoE;IACpE,iBAAiB,EAAE,MAAM,CAAC;IAC1B,yCAAyC;IACzC,cAAc,EAAE;QACd,WAAW,EAAE,MAAM,CAAC;QACpB,QAAQ,EAAE,MAAM,CAAC;QACjB,cAAc,EAAE,MAAM,CAAC;QACvB,KAAK,EAAE,MAAM,CAAC;KACf,CAAC;IACF,mEAAmE;IACnE,gBAAgB,EAAE,KAAK,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC3D;;;;OAIG;IACH,WAAW,EAAE,MAAM,CAAC;IACpB,2DAA2D;IAC3D,QAAQ,EAAE;QACR,KAAK,EAAE,MAAM,CAAC;QACd,WAAW,EAAE,MAAM,CAAC;QACpB,eAAe,EAAE,MAAM,CAAC;QACxB,eAAe,EAAE,MAAM,CAAC;QACxB,YAAY,EAAE,MAAM,CAAC;QACrB,aAAa,EAAE,MAAM,CAAC;QACtB,eAAe,EAAE,MAAM,CAAC;QACxB,iFAAiF;QACjF,oBAAoB,CAAC,EAAE,MAAM,CAAC;KAC/B,CAAC;IACF;;;;;OAKG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,qEAAqE;IACrE,UAAU,EAAE,KAAK,CAAC;QAChB,SAAS,EAAE,MAAM,CAAC;QAClB,OAAO,EAAE,MAAM,CAAC;QAChB,QAAQ,EAAE,MAAM,CAAC;QACjB,WAAW,EAAE,MAAM,CAAC;QACpB,iBAAiB,CAAC,EAAE,MAAM,CAAC;QAC3B;6EACqE;QACrE,IAAI,CAAC,EAAE;YAAE,GAAG,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;YAAC,GAAG,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;SAAE,CAAC;QACxE;6DACqD;QACrD,aAAa,CAAC,EAAE,MAAM,CAAC;KACxB,CAAC,CAAC;IACH;;;;OAIG;IACH,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,6EAA6E;IAC7E,sBAAsB,CAAC,EAAE,KAAK,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACnE"}
@@ -0,0 +1,5 @@
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
+ export {};
5
+ //# sourceMappingURL=geometry-diagnostics-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"geometry-diagnostics-types.js","sourceRoot":"","sources":["../src/geometry-diagnostics-types.ts"],"names":[],"mappings":"AAAA;;+DAE+D"}
@@ -0,0 +1,81 @@
1
+ /**
2
+ * The column layer shared by both Parquet decoders.
3
+ *
4
+ * Split out of `parquet-tables.ts` when #3215 pushed that file past its
5
+ * module-size budget. The gate's default is shrink or split; a raise is
6
+ * sanctioned but wants a per-file justification in the PR, and none was needed
7
+ * here, because the seam was already there: the two decoders differ in row
8
+ * count and identity column, but resolve the SAME additive trailing block,
9
+ * which the server builds from one `shared_trailing_fields()` in
10
+ * `apps/server/src/services/parquet_schema.rs`.
11
+ */
12
+ import type { MeshData } from './types.js';
13
+ import type { ArrowTableLike } from './parquet-tables.js';
14
+ /**
15
+ * Absent marker for the two source ids; mirrors the constants in
16
+ * `apps/server/src/services/parquet_schema.rs` and
17
+ * `packages/cache/src/sections/geometry.ts`.
18
+ *
19
+ * IT IS A REAL COLLISION, not a theoretical one, and the trade is deliberate.
20
+ * `#4294967295` is a legal STEP instance name: `fast_parse_tests.rs:57` asserts
21
+ * u32::MAX parses as a valid express id, and `step_tests.rs:436` writes one. A
22
+ * mesh whose source item is exactly that id decodes here as ABSENT and loses
23
+ * its drill target.
24
+ *
25
+ * Taken anyway, because the alternative is worse in the direction that matters.
26
+ * The realistic encodings are: `0` (reachable — `IfcMaterialLayer.Material` is
27
+ * OPTIONAL and an air gap arrives as 0, which is why `with_style_metadata`
28
+ * filters it), a nullable column (whose values buffer parquet-wasm 0.7.x fills
29
+ * with the NEIGHBOURING row's id — a wrong drill target, worse than none), or
30
+ * a parallel presence column per id (two more columns on every mesh row to
31
+ * disambiguate one value in 4.29 billion). This loses provenance for one
32
+ * unreachable id; the others corrupt it or cost every row.
33
+ *
34
+ * Note `packages/cache/src/sections/geometry.ts:165` states the stronger claim
35
+ * — "No STEP express id can reach 0xFFFFFFFF" — which is false for the same
36
+ * reason. That is pre-existing and out of scope here, but it is the same
37
+ * assumption and should be corrected there too.
38
+ */
39
+ export declare const ABSENT_SOURCE_ID = 4294967295;
40
+ /** Read a numeric column, or `undefined` when the table does not carry it. */
41
+ export declare function numericColumn(table: ArrowTableLike, name: string): ArrayLike<number> | undefined;
42
+ /**
43
+ * A column present AND parallel to the rows, else `undefined`. Folding the
44
+ * guard into the lookup is what lets callers take plain optional columns
45
+ * instead of `(column, hasColumn)` pairs. A short column is a truncated
46
+ * payload, and trusting it hands one row's value to another.
47
+ */
48
+ export declare function usableColumn(table: ArrowTableLike, name: string, rowCount: number): ArrayLike<number> | undefined;
49
+ /**
50
+ * Every additive per-mesh column, resolved and guarded once. Both transports
51
+ * carry the same trailing block (`shared_trailing_fields` in
52
+ * `apps/server/src/services/parquet_schema.rs`) and differ only in row count,
53
+ * which is why that is a parameter.
54
+ */
55
+ export declare function meshColumns(table: ArrowTableLike, rowCount: number): {
56
+ originX: ArrayLike<number> | undefined;
57
+ originY: ArrayLike<number> | undefined;
58
+ originZ: ArrayLike<number> | undefined;
59
+ geometryClass: ArrayLike<number> | undefined;
60
+ geometryItemId: ArrayLike<number> | undefined;
61
+ materialId: ArrayLike<number> | undefined;
62
+ };
63
+ /** One source-id column at one row, or `undefined` when absent. */
64
+ export declare function readSourceId(column: ArrayLike<number> | undefined, index: number): number | undefined;
65
+ /**
66
+ * The canonical per-mesh transform metadata, spread into the `MeshData` literal.
67
+ *
68
+ * `origin` is omitted when the frame IS the world origin and `geometry_class`
69
+ * when it is 0 (occurrence), so a world-baked mesh decodes to exactly the shape
70
+ * it had before these columns existed — and to the same shape on every
71
+ * transport (JSON, standard Parquet, optimized Parquet).
72
+ */
73
+ export declare function transformFields(index: number, cols: {
74
+ originX?: ArrayLike<number>;
75
+ originY?: ArrayLike<number>;
76
+ originZ?: ArrayLike<number>;
77
+ geometryClass?: ArrayLike<number>;
78
+ geometryItemId?: ArrayLike<number>;
79
+ materialId?: ArrayLike<number>;
80
+ }): Partial<MeshData>;
81
+ //# sourceMappingURL=parquet-columns.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parquet-columns.d.ts","sourceRoot":"","sources":["../src/parquet-columns.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAE1D;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,eAAO,MAAM,gBAAgB,aAAa,CAAC;AAE3C,8EAA8E;AAC9E,wBAAgB,aAAa,CAAC,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC,GAAG,SAAS,CAEhG;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAC1B,KAAK,EAAE,cAAc,EACrB,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,GACf,SAAS,CAAC,MAAM,CAAC,GAAG,SAAS,CAG/B;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM;;;;;;;EASlE;AAED,mEAAmE;AACnE,wBAAgB,YAAY,CAAC,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,GAAG,SAAS,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAGrG;AAED;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAC7B,KAAK,EAAE,MAAM,EACb,IAAI,EAAE;IACJ,OAAO,CAAC,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;IAC5B,OAAO,CAAC,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;IAC5B,OAAO,CAAC,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;IAC5B,aAAa,CAAC,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;IAClC,cAAc,CAAC,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;IACnC,UAAU,CAAC,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;CAChC,GACA,OAAO,CAAC,QAAQ,CAAC,CA0BnB"}
@@ -0,0 +1,97 @@
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
+ * Absent marker for the two source ids; mirrors the constants in
6
+ * `apps/server/src/services/parquet_schema.rs` and
7
+ * `packages/cache/src/sections/geometry.ts`.
8
+ *
9
+ * IT IS A REAL COLLISION, not a theoretical one, and the trade is deliberate.
10
+ * `#4294967295` is a legal STEP instance name: `fast_parse_tests.rs:57` asserts
11
+ * u32::MAX parses as a valid express id, and `step_tests.rs:436` writes one. A
12
+ * mesh whose source item is exactly that id decodes here as ABSENT and loses
13
+ * its drill target.
14
+ *
15
+ * Taken anyway, because the alternative is worse in the direction that matters.
16
+ * The realistic encodings are: `0` (reachable — `IfcMaterialLayer.Material` is
17
+ * OPTIONAL and an air gap arrives as 0, which is why `with_style_metadata`
18
+ * filters it), a nullable column (whose values buffer parquet-wasm 0.7.x fills
19
+ * with the NEIGHBOURING row's id — a wrong drill target, worse than none), or
20
+ * a parallel presence column per id (two more columns on every mesh row to
21
+ * disambiguate one value in 4.29 billion). This loses provenance for one
22
+ * unreachable id; the others corrupt it or cost every row.
23
+ *
24
+ * Note `packages/cache/src/sections/geometry.ts:165` states the stronger claim
25
+ * — "No STEP express id can reach 0xFFFFFFFF" — which is false for the same
26
+ * reason. That is pre-existing and out of scope here, but it is the same
27
+ * assumption and should be corrected there too.
28
+ */
29
+ export const ABSENT_SOURCE_ID = 0xffffffff;
30
+ /** Read a numeric column, or `undefined` when the table does not carry it. */
31
+ export function numericColumn(table, name) {
32
+ return table.getChild(name)?.toArray();
33
+ }
34
+ /**
35
+ * A column present AND parallel to the rows, else `undefined`. Folding the
36
+ * guard into the lookup is what lets callers take plain optional columns
37
+ * instead of `(column, hasColumn)` pairs. A short column is a truncated
38
+ * payload, and trusting it hands one row's value to another.
39
+ */
40
+ export function usableColumn(table, name, rowCount) {
41
+ const c = numericColumn(table, name);
42
+ return c && c.length === rowCount ? c : undefined;
43
+ }
44
+ /**
45
+ * Every additive per-mesh column, resolved and guarded once. Both transports
46
+ * carry the same trailing block (`shared_trailing_fields` in
47
+ * `apps/server/src/services/parquet_schema.rs`) and differ only in row count,
48
+ * which is why that is a parameter.
49
+ */
50
+ export function meshColumns(table, rowCount) {
51
+ return {
52
+ originX: usableColumn(table, 'origin_x', rowCount),
53
+ originY: usableColumn(table, 'origin_y', rowCount),
54
+ originZ: usableColumn(table, 'origin_z', rowCount),
55
+ geometryClass: usableColumn(table, 'geometry_class', rowCount),
56
+ geometryItemId: usableColumn(table, 'geometry_item_id', rowCount),
57
+ materialId: usableColumn(table, 'material_id', rowCount),
58
+ };
59
+ }
60
+ /** One source-id column at one row, or `undefined` when absent. */
61
+ export function readSourceId(column, index) {
62
+ const v = column?.[index];
63
+ return v && v !== ABSENT_SOURCE_ID ? v : undefined;
64
+ }
65
+ /**
66
+ * The canonical per-mesh transform metadata, spread into the `MeshData` literal.
67
+ *
68
+ * `origin` is omitted when the frame IS the world origin and `geometry_class`
69
+ * when it is 0 (occurrence), so a world-baked mesh decodes to exactly the shape
70
+ * it had before these columns existed — and to the same shape on every
71
+ * transport (JSON, standard Parquet, optimized Parquet).
72
+ */
73
+ export function transformFields(index, cols) {
74
+ // A usable column can still carry a non-finite VALUE at this row. `||` alone
75
+ // misses it: an all-NaN triplet is already dropped, but a PARTIAL one
76
+ // (`[NaN, 5, 0]`) is truthy and the NaN would poison bounds math. Not a
77
+ // throw -- this file throws only for STRUCTURAL malformation.
78
+ const ox = cols.originX?.[index];
79
+ const oy = cols.originY?.[index];
80
+ const oz = cols.originZ?.[index];
81
+ const originFinite = Number.isFinite(ox) && Number.isFinite(oy) && Number.isFinite(oz);
82
+ const origin = originFinite && (ox || oy || oz) ? [ox, oy, oz] : undefined;
83
+ const geometry_class = cols.geometryClass?.[index] || undefined;
84
+ // Sentinel, not null (#3215): a nullable column's values buffer is undefined
85
+ // at null rows and parquet-wasm 0.7.x leaks the NEIGHBOURING row's id into it
86
+ // -- a material-less mesh decoded as `material_id: 902`, a real-looking id
87
+ // for another entity. Non-nullable means no validity bitmap to leak.
88
+ const geometry_item_id = readSourceId(cols.geometryItemId, index);
89
+ const material_id = readSourceId(cols.materialId, index);
90
+ return {
91
+ ...(origin ? { origin } : {}),
92
+ ...(geometry_class ? { geometry_class } : {}),
93
+ ...(geometry_item_id ? { geometry_item_id } : {}),
94
+ ...(material_id ? { material_id } : {}),
95
+ };
96
+ }
97
+ //# sourceMappingURL=parquet-columns.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parquet-columns.js","sourceRoot":"","sources":["../src/parquet-columns.ts"],"names":[],"mappings":"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"}
@@ -5,13 +5,14 @@
5
5
  * Uses parquet-wasm for efficient Parquet parsing in the browser.
6
6
  */
7
7
  import type { MeshData } from './types.js';
8
+ type ParquetModule = typeof import('parquet-wasm');
8
9
  /**
9
10
  * Ensure parquet-wasm WASM module is initialized.
10
11
  * This MUST be called before using any parquet functions.
11
12
  *
12
13
  * @returns Initialized parquet-wasm module
13
14
  */
14
- export declare function ensureParquetInit(): Promise<typeof import("parquet-wasm/esm/arrow2.js")>;
15
+ export declare function ensureParquetInit(): Promise<ParquetModule>;
15
16
  /**
16
17
  * Decode a Parquet geometry response from the server.
17
18
  *
@@ -49,4 +50,5 @@ export declare function isParquetAvailable(): Promise<boolean>;
49
50
  * @returns Decoded MeshData array
50
51
  */
51
52
  export declare function decodeOptimizedParquetGeometry(data: ArrayBuffer, vertexMultiplier?: number): Promise<MeshData[]>;
53
+ export {};
52
54
  //# sourceMappingURL=parquet-decoder.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"parquet-decoder.d.ts","sourceRoot":"","sources":["../src/parquet-decoder.ts"],"names":[],"mappings":"AAIA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAS3C;;;;;GAKG;AACH,wBAAsB,iBAAiB,yDA6EtC;AAkBD;;;;;;;;;;GAUG;AACH,wBAAsB,qBAAqB,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC,CA2ClF;AAED;;;;GAIG;AACH,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,OAAO,CAAC,CAS3D;AAMD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAsB,8BAA8B,CAClD,IAAI,EAAE,WAAW,EACjB,gBAAgB,GAAE,MAAc,GAC/B,OAAO,CAAC,QAAQ,EAAE,CAAC,CAqErB"}
1
+ {"version":3,"file":"parquet-decoder.d.ts","sourceRoot":"","sources":["../src/parquet-decoder.ts"],"names":[],"mappings":"AAIA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAQ3C,KAAK,aAAa,GAAG,cAAc,cAAc,CAAC,CAAC;AAGnD;;;;;GAKG;AACH,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,aAAa,CAAC,CAQhE;AAkDD;;;;;;;;;;GAUG;AACH,wBAAsB,qBAAqB,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC,CA2ClF;AAED;;;;GAIG;AACH,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,OAAO,CAAC,CAS3D;AAMD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAsB,8BAA8B,CAClD,IAAI,EAAE,WAAW,EACjB,gBAAgB,GAAE,MAAc,GAC/B,OAAO,CAAC,QAAQ,EAAE,CAAC,CA4ErB"}