@ifc-lite/cache 3.2.0 → 3.4.1

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 (73) hide show
  1. package/README.md +35 -0
  2. package/dist/glb-accessor.d.ts +6 -0
  3. package/dist/glb-accessor.d.ts.map +1 -0
  4. package/dist/glb-accessor.js +157 -0
  5. package/dist/glb-accessor.js.map +1 -0
  6. package/dist/glb-images.d.ts +6 -0
  7. package/dist/glb-images.d.ts.map +1 -0
  8. package/dist/glb-images.js +91 -0
  9. package/dist/glb-images.js.map +1 -0
  10. package/dist/glb-transform.d.ts +15 -0
  11. package/dist/glb-transform.d.ts.map +1 -0
  12. package/dist/glb-transform.js +59 -0
  13. package/dist/glb-transform.js.map +1 -0
  14. package/dist/glb-types.d.ts +111 -0
  15. package/dist/glb-types.d.ts.map +1 -0
  16. package/dist/glb-types.js +5 -0
  17. package/dist/glb-types.js.map +1 -0
  18. package/dist/glb.d.ts +1 -71
  19. package/dist/glb.d.ts.map +1 -1
  20. package/dist/glb.js +61 -192
  21. package/dist/glb.js.map +1 -1
  22. package/dist/index.d.ts +1 -0
  23. package/dist/index.d.ts.map +1 -1
  24. package/dist/index.js +1 -0
  25. package/dist/index.js.map +1 -1
  26. package/dist/sections/appearance-provenance.d.ts +11 -0
  27. package/dist/sections/appearance-provenance.d.ts.map +1 -0
  28. package/dist/sections/appearance-provenance.js +113 -0
  29. package/dist/sections/appearance-provenance.js.map +1 -0
  30. package/dist/sections/entity-index-columns.d.ts +4 -0
  31. package/dist/sections/entity-index-columns.d.ts.map +1 -0
  32. package/dist/sections/entity-index-columns.js +41 -0
  33. package/dist/sections/entity-index-columns.js.map +1 -0
  34. package/dist/sections/entity-index.d.ts.map +1 -1
  35. package/dist/sections/entity-index.js +17 -9
  36. package/dist/sections/entity-index.js.map +1 -1
  37. package/dist/sections/geometry-chunks.d.ts +5 -32
  38. package/dist/sections/geometry-chunks.d.ts.map +1 -1
  39. package/dist/sections/geometry-chunks.js +64 -29
  40. package/dist/sections/geometry-chunks.js.map +1 -1
  41. package/dist/sections/geometry-codec.d.ts +8 -0
  42. package/dist/sections/geometry-codec.d.ts.map +1 -0
  43. package/dist/sections/geometry-codec.js +19 -0
  44. package/dist/sections/geometry-codec.js.map +1 -0
  45. package/dist/sections/geometry.d.ts +6 -5
  46. package/dist/sections/geometry.d.ts.map +1 -1
  47. package/dist/sections/geometry.js +12 -7
  48. package/dist/sections/geometry.js.map +1 -1
  49. package/dist/sections/relationships.js +2 -0
  50. package/dist/sections/relationships.js.map +1 -1
  51. package/dist/types.d.ts +20 -2
  52. package/dist/types.d.ts.map +1 -1
  53. package/dist/types.js +4 -1
  54. package/dist/types.js.map +1 -1
  55. package/dist/workers/geometry-compression-client.d.ts +27 -0
  56. package/dist/workers/geometry-compression-client.d.ts.map +1 -0
  57. package/dist/workers/geometry-compression-client.js +84 -0
  58. package/dist/workers/geometry-compression-client.js.map +1 -0
  59. package/dist/workers/geometry-compression-handler.d.ts +4 -0
  60. package/dist/workers/geometry-compression-handler.d.ts.map +1 -0
  61. package/dist/workers/geometry-compression-handler.js +18 -0
  62. package/dist/workers/geometry-compression-handler.js.map +1 -0
  63. package/dist/workers/geometry-compression-protocol.d.ts +14 -0
  64. package/dist/workers/geometry-compression-protocol.d.ts.map +1 -0
  65. package/dist/workers/geometry-compression-protocol.js +10 -0
  66. package/dist/workers/geometry-compression-protocol.js.map +1 -0
  67. package/dist/workers/geometry-compression.worker.d.ts +2 -0
  68. package/dist/workers/geometry-compression.worker.d.ts.map +1 -0
  69. package/dist/workers/geometry-compression.worker.js +13 -0
  70. package/dist/workers/geometry-compression.worker.js.map +1 -0
  71. package/dist/writer.js +1 -1
  72. package/dist/writer.js.map +1 -1
  73. package/package.json +4 -4
@@ -0,0 +1,113 @@
1
+ const MAX_INDICES = 300_000_000;
2
+ const invalid = () => new Error('Invalid cache: malformed canonical appearance provenance; rebuild this cache.');
3
+ function equal(a, b) {
4
+ return a === b || (a.length === b.length && a.every((value, index) => value === b[index]));
5
+ }
6
+ function validate(mesh) {
7
+ const source = mesh.appearanceSource;
8
+ if (!source)
9
+ return undefined;
10
+ if (source.kind !== 'canonical-item' || source.indices !== mesh.indices || mesh.entityIds ||
11
+ !Number.isSafeInteger(mesh.geometryItemId) || mesh.geometryItemId <= 0 || mesh.geometryItemId >= 0xffffffff ||
12
+ mesh.indices.length === 0 || mesh.indices.length % 3 !== 0 ||
13
+ !(source.sourceIndices instanceof Uint32Array) || source.sourceIndices.length === 0 ||
14
+ source.sourceIndices.length > MAX_INDICES || source.sourceIndices.length % 3 !== 0)
15
+ throw invalid();
16
+ for (const vertex of mesh.indices)
17
+ if (vertex >= mesh.positions.length / 3)
18
+ throw invalid();
19
+ if (source.cornerIndices) {
20
+ if (!(source.cornerIndices instanceof Uint32Array) || source.cornerIndices.length !== mesh.indices.length)
21
+ throw invalid();
22
+ for (const corner of source.cornerIndices)
23
+ if (corner >= source.sourceIndices.length)
24
+ throw invalid();
25
+ }
26
+ else if (source.sourceIndices.length !== mesh.indices.length)
27
+ throw invalid();
28
+ return source;
29
+ }
30
+ function tag(mesh, pool) {
31
+ const source = validate(mesh);
32
+ if (!source)
33
+ return 0;
34
+ if (!source.cornerIndices && equal(source.sourceIndices, mesh.indices))
35
+ return 1;
36
+ if (pool?.has(source.sourceIndices))
37
+ return source.cornerIndices ? 5 : 4;
38
+ return source.cornerIndices ? 3 : 2;
39
+ }
40
+ export function provenanceByteLength(mesh, pool) {
41
+ const mode = tag(mesh, pool), source = mesh.appearanceSource;
42
+ return mode < 2 ? 1 : 5 + (mode < 4 ? source.sourceIndices.byteLength : 0) +
43
+ (source.cornerIndices ? source.cornerIndices.byteLength : 0);
44
+ }
45
+ export function writeProvenance(writer, mesh, pool) {
46
+ const mode = tag(mesh, pool), source = mesh.appearanceSource;
47
+ writer.writeUint8(mode);
48
+ if (mode < 2)
49
+ return;
50
+ writer.writeUint32(mode >= 4 ? pool.get(source.sourceIndices) : source.sourceIndices.length);
51
+ if (mode < 4)
52
+ writer.writeTypedArray(source.sourceIndices);
53
+ if (source.cornerIndices)
54
+ writer.writeTypedArray(source.cornerIndices);
55
+ }
56
+ export function readProvenance(reader, mesh, pool = []) {
57
+ const mode = reader.readUint8();
58
+ if (mode === 0)
59
+ return; // Never infer canonical identity from geometryItemId alone.
60
+ if (mode > 5)
61
+ throw invalid();
62
+ let sourceIndices = mesh.indices;
63
+ if (mode >= 2) {
64
+ const value = reader.readUint32();
65
+ if (mode >= 4) {
66
+ if (!pool[value])
67
+ throw invalid();
68
+ sourceIndices = pool[value];
69
+ }
70
+ else {
71
+ if (value > MAX_INDICES || value === 0 || value % 3 !== 0)
72
+ throw invalid();
73
+ sourceIndices = reader.readUint32Array(value);
74
+ }
75
+ }
76
+ const cornerIndices = mode === 3 || mode === 5 ? reader.readUint32Array(mesh.indices.length) : undefined;
77
+ mesh.appearanceSource = { kind: 'canonical-item', indices: mesh.indices, sourceIndices,
78
+ ...(cornerIndices ? { cornerIndices } : {}) };
79
+ validate(mesh);
80
+ }
81
+ /** Deduplicate by existing source-array identity across every spatial chunk. */
82
+ export function collectSourcePool(meshes) {
83
+ const pool = new Map();
84
+ for (const mesh of meshes) {
85
+ if (tag(mesh) < 2)
86
+ continue;
87
+ const source = mesh.appearanceSource.sourceIndices;
88
+ if (!pool.has(source))
89
+ pool.set(source, pool.size);
90
+ }
91
+ return pool;
92
+ }
93
+ export function writeSourcePool(writer, pool) {
94
+ writer.writeUint32(pool.size);
95
+ for (const source of pool.keys()) {
96
+ writer.writeUint32(source.length);
97
+ writer.writeTypedArray(source);
98
+ }
99
+ }
100
+ export function readSourcePool(reader, meshCount, end) {
101
+ const count = reader.readUint32();
102
+ if (count > meshCount || count > Math.floor((end - reader.position) / 4))
103
+ throw invalid();
104
+ const pool = [];
105
+ for (let i = 0; i < count; i++) {
106
+ const length = reader.readUint32();
107
+ if (!length || length > MAX_INDICES || length % 3 !== 0 || length > Math.floor((end - reader.position) / 4))
108
+ throw invalid();
109
+ pool.push(reader.readUint32Array(length));
110
+ }
111
+ return pool;
112
+ }
113
+ //# sourceMappingURL=appearance-provenance.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"appearance-provenance.js","sourceRoot":"","sources":["../../src/sections/appearance-provenance.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { CacheEntityIndex, CachedEntityIndexColumns } from '../types.js';
2
+ /** #3985: reuse validated numeric backing; retain generic iterable semantics. */
3
+ export declare function prepareBorrowedEntityColumns(byId: CacheEntityIndex['byId']): CachedEntityIndexColumns | undefined;
4
+ //# sourceMappingURL=entity-index-columns.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entity-index-columns.d.ts","sourceRoot":"","sources":["../../src/sections/entity-index-columns.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,gBAAgB,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC;AAE9E,iFAAiF;AACjF,wBAAgB,4BAA4B,CAAC,IAAI,EAAE,gBAAgB,CAAC,MAAM,CAAC,GAAG,wBAAwB,GAAG,SAAS,CAgCjH"}
@@ -0,0 +1,41 @@
1
+ /** #3985: reuse validated numeric backing; retain generic iterable semantics. */
2
+ export function prepareBorrowedEntityColumns(byId) {
3
+ if (typeof byId.getColumns !== 'function')
4
+ return undefined;
5
+ const c = byId.getColumns();
6
+ if (!(c.expressIds instanceof Uint32Array) || !(c.byteOffsets instanceof Uint32Array)
7
+ || !(c.byteLengths instanceof Uint32Array) || !(c.typeIndices instanceof Uint16Array)
8
+ || !Array.isArray(c.typeStrings))
9
+ return undefined;
10
+ const n = c.expressIds.length;
11
+ if (c.byteOffsets.length !== n || c.byteLengths.length !== n || c.typeIndices.length !== n)
12
+ return undefined;
13
+ const remap = new Int32Array(Math.min(c.typeStrings.length, 0x10000)).fill(-1);
14
+ const seen = new Map();
15
+ const typeNames = [];
16
+ const typeIndices = new Uint16Array(n);
17
+ for (let row = 0; row < n; row++) {
18
+ if (row && c.expressIds[row] < c.expressIds[row - 1])
19
+ return undefined;
20
+ const rawTypeIndex = c.typeIndices[row];
21
+ if (rawTypeIndex >= c.typeStrings.length || typeof c.typeStrings[rawTypeIndex] !== 'string')
22
+ return undefined;
23
+ let index = remap[rawTypeIndex];
24
+ if (index === -1) {
25
+ const name = c.typeStrings[rawTypeIndex].toUpperCase();
26
+ let existing = seen.get(name);
27
+ if (existing === undefined) {
28
+ existing = typeNames.length;
29
+ if (existing > 0xffff)
30
+ throw new Error('Entity index has more than 65535 unique IFC type names');
31
+ typeNames.push(name);
32
+ seen.set(name, existing);
33
+ }
34
+ index = existing;
35
+ remap[rawTypeIndex] = index;
36
+ }
37
+ typeIndices[row] = index;
38
+ }
39
+ return { ids: c.expressIds, byteOffsets: c.byteOffsets, byteLengths: c.byteLengths, typeIndices, typeNames };
40
+ }
41
+ //# sourceMappingURL=entity-index-columns.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entity-index-columns.js","sourceRoot":"","sources":["../../src/sections/entity-index-columns.ts"],"names":[],"mappings":"AAKA,iFAAiF;AACjF,MAAM,UAAU,4BAA4B,CAAC,IAA8B;IACzE,IAAI,OAAO,IAAI,CAAC,UAAU,KAAK,UAAU;QAAE,OAAO,SAAS,CAAC;IAC5D,MAAM,CAAC,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;IAC5B,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,YAAY,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,YAAY,WAAW,CAAC;WAChF,CAAC,CAAC,CAAC,CAAC,WAAW,YAAY,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,YAAY,WAAW,CAAC;WAClF,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC;QAAE,OAAO,SAAS,CAAC;IACrD,MAAM,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC;IAC9B,IAAI,CAAC,CAAC,WAAW,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IAC7G,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/E,MAAM,IAAI,GAAG,IAAI,GAAG,EAAkB,CAAC;IACvC,MAAM,SAAS,GAAa,EAAE,CAAC;IAC/B,MAAM,WAAW,GAAG,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC;IACvC,KAAK,IAAI,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC;QACjC,IAAI,GAAG,IAAI,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,GAAG,GAAG,CAAC,CAAC;YAAE,OAAO,SAAS,CAAC;QACvE,MAAM,YAAY,GAAG,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QACxC,IAAI,YAAY,IAAI,CAAC,CAAC,WAAW,CAAC,MAAM,IAAI,OAAO,CAAC,CAAC,WAAW,CAAC,YAAY,CAAC,KAAK,QAAQ;YAAE,OAAO,SAAS,CAAC;QAC9G,IAAI,KAAK,GAAG,KAAK,CAAC,YAAY,CAAC,CAAC;QAChC,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE,CAAC;YACjB,MAAM,IAAI,GAAG,CAAC,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC,WAAW,EAAE,CAAC;YACvD,IAAI,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAC9B,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;gBAC3B,QAAQ,GAAG,SAAS,CAAC,MAAM,CAAC;gBAC5B,IAAI,QAAQ,GAAG,MAAM;oBAAE,MAAM,IAAI,KAAK,CAAC,wDAAwD,CAAC,CAAC;gBACjG,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACrB,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;YAC3B,CAAC;YACD,KAAK,GAAG,QAAQ,CAAC;YACjB,KAAK,CAAC,YAAY,CAAC,GAAG,KAAK,CAAC;QAC9B,CAAC;QACD,WAAW,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;IAC3B,CAAC;IACD,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC,UAAU,EAAE,WAAW,EAAE,CAAC,CAAC,WAAW,EAAE,WAAW,EAAE,CAAC,CAAC,WAAW,EAAE,WAAW,EAAE,SAAS,EAAE,CAAC;AAC/G,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"entity-index.d.ts","sourceRoot":"","sources":["../../src/sections/entity-index.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,gBAAgB,EAAkB,wBAAwB,EAAE,MAAM,aAAa,CAAC;AAC9F,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAEtE,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,YAAY,EAAE,WAAW,EAAE,gBAAgB,GAAG,IAAI,CAsC1F;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,YAAY,GAAG,wBAAwB,CA2B9E"}
1
+ {"version":3,"file":"entity-index.d.ts","sourceRoot":"","sources":["../../src/sections/entity-index.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,gBAAgB,EAAkB,wBAAwB,EAAE,MAAM,aAAa,CAAC;AAC9F,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAGtE,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,YAAY,EAAE,WAAW,EAAE,gBAAgB,GAAG,IAAI,CAmC1F;AAYD,wBAAgB,eAAe,CAAC,MAAM,EAAE,YAAY,GAAG,wBAAwB,CA2B9E"}
@@ -1,7 +1,13 @@
1
1
  /* This Source Code Form is subject to the terms of the Mozilla Public
2
2
  * License, v. 2.0. If a copy of the MPL was not distributed with this
3
3
  * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
4
+ import { prepareBorrowedEntityColumns } from './entity-index-columns.js';
4
5
  export function writeEntityIndex(writer, entityIndex) {
6
+ const columns = prepareBorrowedEntityColumns(entityIndex.byId);
7
+ if (columns) {
8
+ writeColumns(writer, columns);
9
+ return;
10
+ }
5
11
  const refs = Array.from(entityIndex.byId, ([id, ref]) => normalizeRef(id, ref))
6
12
  .sort((a, b) => a.expressId - b.expressId);
7
13
  const typeNameToIndex = new Map();
@@ -26,15 +32,17 @@ export function writeEntityIndex(writer, entityIndex) {
26
32
  }
27
33
  typeIndices[i] = typeIndex;
28
34
  }
29
- writer.writeUint32(refs.length);
30
- writer.writeUint32(typeNames.length);
31
- for (const typeName of typeNames) {
32
- writer.writeString(typeName);
33
- }
34
- writer.writeTypedArray(ids);
35
- writer.writeTypedArray(byteOffsets);
36
- writer.writeTypedArray(byteLengths);
37
- writer.writeTypedArray(typeIndices);
35
+ writeColumns(writer, { ids, byteOffsets, byteLengths, typeIndices, typeNames });
36
+ }
37
+ function writeColumns(writer, columns) {
38
+ writer.writeUint32(columns.ids.length);
39
+ writer.writeUint32(columns.typeNames.length);
40
+ for (const name of columns.typeNames)
41
+ writer.writeString(name);
42
+ writer.writeTypedArray(columns.ids);
43
+ writer.writeTypedArray(columns.byteOffsets);
44
+ writer.writeTypedArray(columns.byteLengths);
45
+ writer.writeTypedArray(columns.typeIndices);
38
46
  }
39
47
  export function readEntityIndex(reader) {
40
48
  const count = reader.readUint32();
@@ -1 +1 @@
1
- {"version":3,"file":"entity-index.js","sourceRoot":"","sources":["../../src/sections/entity-index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"entity-index.js","sourceRoot":"","sources":["../../src/sections/entity-index.ts"],"names":[],"mappings":"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"}
@@ -1,31 +1,4 @@
1
- /**
2
- * v13 chunked geometry section (issue #1682, phase 4).
3
- *
4
- * Layout (all offsets little-endian, relative to the geometry SECTION start):
5
- * headLength: u32 // byte length of everything below
6
- * // up to (not incl.) the first chunk
7
- * meshCount: u32
8
- * totalVertices: u32
9
- * totalTriangles: u32
10
- * coordinateInfo // unchanged, variable length
11
- * chunkCount: u32
12
- * directory: chunkCount × 44 bytes {
13
- * aabbMin f32×3, aabbMax f32×3, // world AABB of the chunk
14
- * byteOffset u32, // chunk record, rel. section start
15
- * byteLength u32, // STORED length (compressed if so)
16
- * uncompressedLength u32,
17
- * meshCount u32,
18
- * flags u32 // GeometryChunkFlags
19
- * }
20
- * ...chunk records at their byteOffsets
21
- *
22
- * A chunk record is a plain concatenation of per-mesh records (identical
23
- * layout to v12 — see geometry.ts writeMeshRecord), optionally deflate-raw
24
- * compressed. Chunks are spatially coherent (grid cell of origin + first
25
- * vertex, soft byte cap; a mesh never splits), so a streamed reader paints
26
- * coherent regions and a future evict-to-disk residency layer can re-read
27
- * one chunk without touching the rest.
28
- */
1
+ import { type AppearanceSourcePool } from './appearance-provenance.js';
29
2
  import type { MeshData, CoordinateInfo } from '@ifc-lite/geometry';
30
3
  import { BufferReader } from '../utils/buffer-utils.js';
31
4
  import { type GeometryChunkInfo } from '../types.js';
@@ -42,20 +15,20 @@ export interface GeometryHead {
42
15
  coordinateInfo: CoordinateInfo;
43
16
  chunks: GeometryChunkInfo[];
44
17
  }
45
- export declare const deflateRaw: (data: Uint8Array) => Promise<Uint8Array>;
46
- export declare const inflateRaw: (data: Uint8Array) => Promise<Uint8Array>;
18
+ export { deflateRaw, inflateRaw } from './geometry-codec.js';
47
19
  /** Group meshes into spatially coherent, byte-capped chunks (order-stable). */
48
- export declare function groupMeshesIntoChunks(meshes: MeshData[], softBytes?: number): MeshData[][];
20
+ export declare function groupMeshesIntoChunks(meshes: MeshData[], softBytes?: number, pool?: AppearanceSourcePool): MeshData[][];
49
21
  /**
50
22
  * Build the complete v13 geometry section buffer. Async because per-chunk
51
23
  * compression uses the (browser/Node-native) CompressionStream.
52
24
  */
53
25
  export declare function buildGeometrySectionV13(meshes: MeshData[], coordinateInfo: CoordinateInfo, options?: {
54
26
  compress?: boolean;
27
+ compressInWorker?: boolean;
55
28
  }): Promise<ArrayBuffer>;
56
29
  /** Parse the v13 geometry head; `reader` must be positioned at the geometry
57
30
  * section start. Cheap: never touches chunk records. */
58
- export declare function readGeometryHeadV13(reader: BufferReader): GeometryHead;
31
+ export declare function readGeometryHeadV13(reader: BufferReader, version?: number): GeometryHead;
59
32
  /** Decode one chunk record's stored bytes into meshes. */
60
33
  export declare function decodeGeometryChunk(stored: Uint8Array, info: GeometryChunkInfo, version: number): Promise<MeshData[]>;
61
34
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"geometry-chunks.d.ts","sourceRoot":"","sources":["../../src/sections/geometry-chunks.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACnE,OAAO,EAAgB,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACtE,OAAO,EAKL,KAAK,iBAAiB,EACvB,MAAM,aAAa,CAAC;AAcrB,6CAA6C;AAC7C,MAAM,WAAW,YAAY;IAC3B;;;oEAGgE;IAChE,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,cAAc,CAAC;IAC/B,MAAM,EAAE,iBAAiB,EAAE,CAAC;CAC7B;AAYD,eAAO,MAAM,UAAU,GAAI,MAAM,UAAU,KAAG,OAAO,CAAC,UAAU,CACP,CAAC;AAE1D,eAAO,MAAM,UAAU,GAAI,MAAM,UAAU,KAAG,OAAO,CAAC,UAAU,CACL,CAAC;AAwB5D,+EAA+E;AAC/E,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,QAAQ,EAAE,EAClB,SAAS,GAAE,MAAkC,GAC5C,QAAQ,EAAE,EAAE,CAsBd;AAqBD;;;GAGG;AACH,wBAAsB,uBAAuB,CAC3C,MAAM,EAAE,QAAQ,EAAE,EAClB,cAAc,EAAE,cAAc,EAC9B,OAAO,GAAE;IAAE,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAO,GACnC,OAAO,CAAC,WAAW,CAAC,CAgFtB;AAID;yDACyD;AACzD,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,YAAY,GAAG,YAAY,CAoBtE;AAED,0DAA0D;AAC1D,wBAAsB,mBAAmB,CACvC,MAAM,EAAE,UAAU,EAClB,IAAI,EAAE,iBAAiB,EACvB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,QAAQ,EAAE,CAAC,CA4BrB;AAED;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,WAAW,EACnB,aAAa,EAAE,MAAM,EACrB,OAAO,EAAE,MAAM,GACd,YAAY,GAAG;IAAE,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAA;CAAE,CAmClE;AAED,mFAAmF;AACnF,wBAAsB,eAAe,CACnC,MAAM,EAAE,WAAW,EACnB,aAAa,EAAE,MAAM,EACrB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC;IAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;IAAC,aAAa,EAAE,MAAM,CAAC;IAAC,cAAc,EAAE,MAAM,CAAC;IAAC,cAAc,EAAE,cAAc,CAAA;CAAE,CAAC,CAYhH"}
1
+ {"version":3,"file":"geometry-chunks.d.ts","sourceRoot":"","sources":["../../src/sections/geometry-chunks.ts"],"names":[],"mappings":"AAmCA,OAAO,EAAsD,KAAK,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAC3H,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACnE,OAAO,EAAgB,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACtE,OAAO,EAKL,KAAK,iBAAiB,EACvB,MAAM,aAAa,CAAC;AAcrB,6CAA6C;AAC7C,MAAM,WAAW,YAAY;IAC3B;;;oEAGgE;IAChE,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,cAAc,CAAC;IAC/B,MAAM,EAAE,iBAAiB,EAAE,CAAC;CAC7B;AAID,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAwB7D,+EAA+E;AAC/E,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,QAAQ,EAAE,EAClB,SAAS,GAAE,MAAkC,EAC7C,IAAI,CAAC,EAAE,oBAAoB,GAC1B,QAAQ,EAAE,EAAE,CAsBd;AAqBD;;;GAGG;AACH,wBAAsB,uBAAuB,CAC3C,MAAM,EAAE,QAAQ,EAAE,EAClB,cAAc,EAAE,cAAc,EAC9B,OAAO,GAAE;IAAE,QAAQ,CAAC,EAAE,OAAO,CAAC;IAAC,gBAAgB,CAAC,EAAE,OAAO,CAAA;CAAO,GAC/D,OAAO,CAAC,WAAW,CAAC,CAsFtB;AAID;yDACyD;AACzD,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,YAAY,EAAE,OAAO,GAAE,MAAuB,GAAG,YAAY,CAuBxG;AAED,0DAA0D;AAC1D,wBAAsB,mBAAmB,CACvC,MAAM,EAAE,UAAU,EAClB,IAAI,EAAE,iBAAiB,EACvB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,QAAQ,EAAE,CAAC,CA4BrB;AAED;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,WAAW,EACnB,aAAa,EAAE,MAAM,EACrB,OAAO,EAAE,MAAM,GACd,YAAY,GAAG;IAAE,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAA;CAAE,CAmClE;AAED,mFAAmF;AACnF,wBAAsB,eAAe,CACnC,MAAM,EAAE,WAAW,EACnB,aAAa,EAAE,MAAM,EACrB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC;IAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;IAAC,aAAa,EAAE,MAAM,CAAC;IAAC,cAAc,EAAE,MAAM,CAAC;IAAC,cAAc,EAAE,cAAc,CAAA;CAAE,CAAC,CAYhH"}
@@ -1,22 +1,46 @@
1
1
  /* This Source Code Form is subject to the terms of the Mozilla Public
2
2
  * License, v. 2.0. If a copy of the MPL was not distributed with this
3
3
  * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
4
+ /**
5
+ * v13 chunked geometry section (issue #1682, phase 4).
6
+ *
7
+ * Layout (all offsets little-endian, relative to the geometry SECTION start):
8
+ * headLength: u32 // byte length of everything below
9
+ * // up to (not incl.) the first chunk
10
+ * meshCount: u32
11
+ * totalVertices: u32
12
+ * totalTriangles: u32
13
+ * coordinateInfo // unchanged, variable length
14
+ * sourceIndexPool (v19+) // count + length-prefixed u32 arrays
15
+ * chunkCount: u32
16
+ * directory: chunkCount × 44 bytes {
17
+ * aabbMin f32×3, aabbMax f32×3, // world AABB of the chunk
18
+ * byteOffset u32, // chunk record, rel. section start
19
+ * byteLength u32, // STORED length (compressed if so)
20
+ * uncompressedLength u32,
21
+ * meshCount u32,
22
+ * flags u32 // GeometryChunkFlags
23
+ * }
24
+ * ...chunk records at their byteOffsets
25
+ *
26
+ * A chunk record is a plain concatenation of per-mesh records (identical
27
+ * versioned layout — see geometry.ts writeMeshRecord), optionally deflate-raw
28
+ * compressed. Chunks are spatially coherent (grid cell of origin + first
29
+ * vertex, soft byte cap; a mesh never splits), so a streamed reader paints
30
+ * coherent regions and a future evict-to-disk residency layer can re-read
31
+ * one chunk without touching the rest.
32
+ */
33
+ import { FORMAT_VERSION } from '../types.js';
34
+ import { collectSourcePool, writeSourcePool, readSourcePool } from './appearance-provenance.js';
4
35
  import { BufferWriter, BufferReader } from '../utils/buffer-utils.js';
5
36
  import { GEOMETRY_CHUNK_CELL_SIZE, GEOMETRY_CHUNK_SOFT_BYTES, GEOMETRY_CHUNK_COMPRESS_MIN_BYTES, GeometryChunkFlags, } from '../types.js';
6
37
  import { validateMeshes, writeMeshRecord, readMeshRecord, meshRecordByteLength, writeCoordinateInfo, readCoordinateInfo, } from './geometry.js';
7
38
  import { validateGeometryDirectory } from './geometry-directory.js';
8
39
  // 6×f32 AABB (24) + 5×u32 (offset, length, uncompressed, meshCount, flags).
9
40
  const DIRECTORY_ENTRY_BYTES = 44;
10
- // ─── codec ────────────────────────────────────────────────────────────────
11
- async function pipeThrough(data, stream) {
12
- // Copy into a fresh standalone buffer: `data` may be a subarray view, and
13
- // Response/Blob would otherwise serialize the WHOLE backing buffer.
14
- const standalone = new Uint8Array(data);
15
- const out = await new Response(new Blob([standalone]).stream().pipeThrough(stream)).arrayBuffer();
16
- return new Uint8Array(out);
17
- }
18
- export const deflateRaw = (data) => pipeThrough(data, new CompressionStream('deflate-raw'));
19
- export const inflateRaw = (data) => pipeThrough(data, new DecompressionStream('deflate-raw'));
41
+ import { chooseStoredGeometryChunk, inflateRaw } from './geometry-codec.js';
42
+ import { GeometryCompressionSession } from '../workers/geometry-compression-client.js';
43
+ export { deflateRaw, inflateRaw } from './geometry-codec.js';
20
44
  // ─── write ────────────────────────────────────────────────────────────────
21
45
  /** Grid cell of a mesh's world anchor (origin + first vertex) — a spatial
22
46
  * grouping heuristic only; readers trust the directory, never this. */
@@ -34,13 +58,13 @@ function cellKeyOf(mesh) {
34
58
  return `${cx},${cy},${cz}`;
35
59
  }
36
60
  /** Group meshes into spatially coherent, byte-capped chunks (order-stable). */
37
- export function groupMeshesIntoChunks(meshes, softBytes = GEOMETRY_CHUNK_SOFT_BYTES) {
61
+ export function groupMeshesIntoChunks(meshes, softBytes = GEOMETRY_CHUNK_SOFT_BYTES, pool) {
38
62
  const open = new Map();
39
63
  const closed = [];
40
64
  for (const mesh of meshes) {
41
65
  const key = cellKeyOf(mesh);
42
66
  let chunk = open.get(key);
43
- const bytes = meshRecordByteLength(mesh);
67
+ const bytes = meshRecordByteLength(mesh, pool);
44
68
  if (chunk && chunk.bytes > 0 && chunk.bytes + bytes > softBytes) {
45
69
  closed.push(chunk.meshes);
46
70
  chunk = undefined;
@@ -95,42 +119,49 @@ function chunkAabb(meshes) {
95
119
  export async function buildGeometrySectionV13(meshes, coordinateInfo, options = {}) {
96
120
  const compress = options.compress ?? true;
97
121
  const { validMeshes, actualTotalVertices, actualTotalTriangles } = validateMeshes(meshes);
98
- const groups = groupMeshesIntoChunks(validMeshes);
122
+ const pool = collectSourcePool(validMeshes);
123
+ const groups = groupMeshesIntoChunks(validMeshes, undefined, pool);
99
124
  // Serialize (and optionally compress) every chunk record. Concurrency is
100
125
  // BOUNDED: a large model produces hundreds of chunks, and an unbounded
101
126
  // Promise.all would hold every raw + compressed buffer plus a
102
127
  // CompressionStream alive simultaneously — a needless memory spike during
103
128
  // the (background) cache write.
104
129
  const CHUNK_BUILD_CONCURRENCY = 4;
130
+ const session = options.compressInWorker ? new GeometryCompressionSession() : undefined;
105
131
  const buildRecord = async (group) => {
106
132
  const w = new BufferWriter(64 * 1024);
107
133
  for (const mesh of group)
108
- writeMeshRecord(w, mesh);
134
+ writeMeshRecord(w, mesh, pool);
109
135
  const raw = new Uint8Array(w.build());
136
+ // Worker compression transfers raw.buffer; save this before detachment.
137
+ const uncompressedLength = raw.byteLength;
110
138
  let bytes = raw;
111
139
  let flags = GeometryChunkFlags.None;
112
- if (compress && raw.byteLength >= GEOMETRY_CHUNK_COMPRESS_MIN_BYTES) {
113
- const deflated = await deflateRaw(raw);
114
- // Keep the raw record when compression doesn't pay (already-dense data).
115
- if (deflated.byteLength < raw.byteLength) {
116
- bytes = deflated;
140
+ if (compress && uncompressedLength >= GEOMETRY_CHUNK_COMPRESS_MIN_BYTES) {
141
+ const stored = await (session ? session.compress(raw) : chooseStoredGeometryChunk(raw));
142
+ bytes = stored.bytes;
143
+ if (stored.compressed)
117
144
  flags = GeometryChunkFlags.DeflateRaw;
118
- }
119
145
  }
120
146
  return {
121
147
  bytes,
122
- uncompressedLength: raw.byteLength,
148
+ uncompressedLength,
123
149
  meshCount: group.length,
124
150
  flags,
125
151
  aabb: chunkAabb(group),
126
152
  };
127
153
  };
128
154
  const records = new Array(groups.length);
129
- for (let i = 0; i < groups.length; i += CHUNK_BUILD_CONCURRENCY) {
130
- const slice = groups.slice(i, i + CHUNK_BUILD_CONCURRENCY);
131
- const built = await Promise.all(slice.map(buildRecord));
132
- for (let j = 0; j < built.length; j++)
133
- records[i + j] = built[j];
155
+ try {
156
+ for (let i = 0; i < groups.length; i += CHUNK_BUILD_CONCURRENCY) {
157
+ const slice = groups.slice(i, i + CHUNK_BUILD_CONCURRENCY);
158
+ const built = await Promise.all(slice.map(buildRecord));
159
+ for (let j = 0; j < built.length; j++)
160
+ records[i + j] = built[j];
161
+ }
162
+ }
163
+ finally {
164
+ session?.close();
134
165
  }
135
166
  // Head: counts + coordinateInfo + directory. Directory offsets need the
136
167
  // head length, which needs the coordinateInfo length — write the variable
@@ -140,6 +171,7 @@ export async function buildGeometrySectionV13(meshes, coordinateInfo, options =
140
171
  headBody.writeUint32(actualTotalVertices);
141
172
  headBody.writeUint32(actualTotalTriangles);
142
173
  writeCoordinateInfo(headBody, coordinateInfo);
174
+ writeSourcePool(headBody, pool);
143
175
  headBody.writeUint32(records.length);
144
176
  const headLength = headBody.position + records.length * DIRECTORY_ENTRY_BYTES;
145
177
  let offset = 4 + headLength; // headLength field itself + head
@@ -168,16 +200,19 @@ export async function buildGeometrySectionV13(meshes, coordinateInfo, options =
168
200
  // ─── read ─────────────────────────────────────────────────────────────────
169
201
  /** Parse the v13 geometry head; `reader` must be positioned at the geometry
170
202
  * section start. Cheap: never touches chunk records. */
171
- export function readGeometryHeadV13(reader) {
203
+ export function readGeometryHeadV13(reader, version = FORMAT_VERSION) {
204
+ const start = reader.position;
172
205
  const headLength = reader.readUint32();
173
206
  const meshCount = reader.readUint32();
174
207
  const totalVertices = reader.readUint32();
175
208
  const totalTriangles = reader.readUint32();
176
209
  const coordinateInfo = readCoordinateInfo(reader, 13);
210
+ const appearanceSources = version >= 19 ? readSourcePool(reader, meshCount, start + 4 + headLength) : undefined;
177
211
  const chunkCount = reader.readUint32();
178
212
  const chunks = [];
179
213
  for (let i = 0; i < chunkCount; i++) {
180
214
  chunks.push({
215
+ ...(appearanceSources ? { appearanceSources } : {}),
181
216
  aabbMin: [reader.readFloat32(), reader.readFloat32(), reader.readFloat32()],
182
217
  aabbMax: [reader.readFloat32(), reader.readFloat32(), reader.readFloat32()],
183
218
  byteOffset: reader.readUint32(),
@@ -202,7 +237,7 @@ export async function decodeGeometryChunk(stored, info, version) {
202
237
  const reader = new BufferReader(buffer);
203
238
  const meshes = [];
204
239
  for (let i = 0; i < info.meshCount; i++) {
205
- meshes.push(readMeshRecord(reader, version, i));
240
+ meshes.push(readMeshRecord(reader, version, i, info.appearanceSources));
206
241
  }
207
242
  // `meshCount` and `uncompressedLength` are two independently-corruptible
208
243
  // directory fields; a lying pair (meshCount inflated, uncompressedLength
@@ -227,7 +262,7 @@ export async function decodeGeometryChunk(stored, info, version) {
227
262
  export function openGeometryChunksV13(buffer, sectionOffset, version) {
228
263
  const reader = new BufferReader(buffer);
229
264
  reader.position = sectionOffset;
230
- const head = readGeometryHeadV13(reader);
265
+ const head = readGeometryHeadV13(reader, version);
231
266
  // `reader.position` here is a STRUCTURAL fact: it's where the parse of
232
267
  // meshCount/totalVertices/totalTriangles/coordinateInfo/chunkCount/
233
268
  // directory actually landed, none of which depend on `head.headLength`.
@@ -1 +1 @@
1
- {"version":3,"file":"geometry-chunks.js","sourceRoot":"","sources":["../../src/sections/geometry-chunks.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"geometry-chunks.js","sourceRoot":"","sources":["../../src/sections/geometry-chunks.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ export declare const deflateRaw: (data: Uint8Array) => Promise<Uint8Array<ArrayBuffer>>;
2
+ export declare const inflateRaw: (data: Uint8Array) => Promise<Uint8Array<ArrayBuffer>>;
3
+ /** Same codec and strictly-smaller selection on either side of the worker boundary. */
4
+ export declare function chooseStoredGeometryChunk(raw: Uint8Array<ArrayBuffer>): Promise<{
5
+ bytes: Uint8Array<ArrayBuffer>;
6
+ compressed: boolean;
7
+ }>;
8
+ //# sourceMappingURL=geometry-codec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"geometry-codec.d.ts","sourceRoot":"","sources":["../../src/sections/geometry-codec.ts"],"names":[],"mappings":"AAWA,eAAO,MAAM,UAAU,GAAI,MAAM,UAAU,KAAG,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,CACpB,CAAC;AAE1D,eAAO,MAAM,UAAU,GAAI,MAAM,UAAU,KAAG,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,CAClB,CAAC;AAE5D,uFAAuF;AACvF,wBAAsB,yBAAyB,CAAC,GAAG,EAAE,UAAU,CAAC,WAAW,CAAC;;;GAK3E"}
@@ -0,0 +1,19 @@
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
+ async function pipeThrough(data, stream) {
5
+ // Copy into an owned ArrayBuffer for Blob, including inputs with shared backing.
6
+ const standalone = new Uint8Array(data);
7
+ const out = await new Response(new Blob([standalone]).stream().pipeThrough(stream)).arrayBuffer();
8
+ return new Uint8Array(out);
9
+ }
10
+ export const deflateRaw = (data) => pipeThrough(data, new CompressionStream('deflate-raw'));
11
+ export const inflateRaw = (data) => pipeThrough(data, new DecompressionStream('deflate-raw'));
12
+ /** Same codec and strictly-smaller selection on either side of the worker boundary. */
13
+ export async function chooseStoredGeometryChunk(raw) {
14
+ const compressed = await deflateRaw(raw);
15
+ return compressed.byteLength < raw.byteLength
16
+ ? { bytes: compressed, compressed: true }
17
+ : { bytes: raw, compressed: false };
18
+ }
19
+ //# sourceMappingURL=geometry-codec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"geometry-codec.js","sourceRoot":"","sources":["../../src/sections/geometry-codec.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAE/D,KAAK,UAAU,WAAW,CAAC,IAAgB,EAAE,MAA+C;IAC1F,iFAAiF;IACjF,MAAM,UAAU,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC;IACxC,MAAM,GAAG,GAAG,MAAM,IAAI,QAAQ,CAAC,IAAI,IAAI,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;IAClG,OAAO,IAAI,UAAU,CAAC,GAAG,CAAC,CAAC;AAC7B,CAAC;AAED,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,IAAgB,EAAoC,EAAE,CAC/E,WAAW,CAAC,IAAI,EAAE,IAAI,iBAAiB,CAAC,aAAa,CAAC,CAAC,CAAC;AAE1D,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,IAAgB,EAAoC,EAAE,CAC/E,WAAW,CAAC,IAAI,EAAE,IAAI,mBAAmB,CAAC,aAAa,CAAC,CAAC,CAAC;AAE5D,uFAAuF;AACvF,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAAC,GAA4B;IAC1E,MAAM,UAAU,GAAG,MAAM,UAAU,CAAC,GAAG,CAAC,CAAC;IACzC,OAAO,UAAU,CAAC,UAAU,GAAG,GAAG,CAAC,UAAU;QAC3C,CAAC,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,IAAI,EAAE;QACzC,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC;AACxC,CAAC"}
@@ -3,6 +3,7 @@
3
3
  */
4
4
  import type { MeshData, CoordinateInfo } from '@ifc-lite/geometry';
5
5
  import { BufferWriter, BufferReader } from '../utils/buffer-utils.js';
6
+ import { type AppearanceSourcePool } from './appearance-provenance.js';
6
7
  /**
7
8
  * Validate + filter meshes (detached buffers / size mismatches / absurd
8
9
  * counts) and recompute the real totals. Used by the v13 chunked writer.
@@ -13,14 +14,14 @@ export declare function validateMeshes(meshes: MeshData[]): {
13
14
  actualTotalTriangles: number;
14
15
  };
15
16
  /**
16
- * One per-mesh record inside a v13 chunk (layout unchanged since the
17
- * pre-v13 sequential format v13 only changed how records are GROUPED).
17
+ * One current-version per-mesh record inside a v13+ chunk. Version 19
18
+ * appends optional canonical appearance provenance after geometry arrays.
18
19
  */
19
- export declare function writeMeshRecord(writer: BufferWriter, mesh: MeshData): void;
20
+ export declare function writeMeshRecord(writer: BufferWriter, mesh: MeshData, pool?: AppearanceSourcePool): void;
20
21
  /** Exact serialized size of one per-mesh record, for chunk byte budgeting. */
21
- export declare function meshRecordByteLength(mesh: MeshData): number;
22
+ export declare function meshRecordByteLength(mesh: MeshData, pool?: AppearanceSourcePool): number;
22
23
  export declare function writeCoordinateInfo(writer: BufferWriter, info: CoordinateInfo): void;
23
24
  /** Read one per-mesh record (see writeMeshRecord for the layout). */
24
- export declare function readMeshRecord(reader: BufferReader, version: number, meshIndex?: number): MeshData;
25
+ export declare function readMeshRecord(reader: BufferReader, version: number, meshIndex?: number, pool?: readonly Uint32Array[]): MeshData;
25
26
  export declare function readCoordinateInfo(reader: BufferReader, version?: number): CoordinateInfo;
26
27
  //# sourceMappingURL=geometry.d.ts.map