@ifc-lite/cache 3.1.0 → 3.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +63 -23
- package/dist/adapt.d.ts +72 -0
- package/dist/adapt.d.ts.map +1 -0
- package/dist/adapt.js +68 -0
- package/dist/adapt.js.map +1 -0
- package/dist/glb-color.d.ts +15 -0
- package/dist/glb-color.d.ts.map +1 -0
- package/dist/glb-color.js +18 -0
- package/dist/glb-color.js.map +1 -0
- package/dist/glb.d.ts.map +1 -1
- package/dist/glb.js +3 -3
- package/dist/glb.js.map +1 -1
- package/dist/index.d.ts +18 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +17 -5
- package/dist/index.js.map +1 -1
- package/dist/reader.js +1 -1
- package/dist/reader.js.map +1 -1
- package/dist/sections/entity-index-columns.d.ts +4 -0
- package/dist/sections/entity-index-columns.d.ts.map +1 -0
- package/dist/sections/entity-index-columns.js +41 -0
- package/dist/sections/entity-index-columns.js.map +1 -0
- package/dist/sections/entity-index.d.ts.map +1 -1
- package/dist/sections/entity-index.js +17 -9
- package/dist/sections/entity-index.js.map +1 -1
- package/dist/sections/geometry-chunks.d.ts +2 -2
- package/dist/sections/geometry-chunks.d.ts.map +1 -1
- package/dist/sections/geometry-chunks.js +21 -22
- package/dist/sections/geometry-chunks.js.map +1 -1
- package/dist/sections/geometry-codec.d.ts +8 -0
- package/dist/sections/geometry-codec.d.ts.map +1 -0
- package/dist/sections/geometry-codec.js +19 -0
- package/dist/sections/geometry-codec.js.map +1 -0
- package/dist/sections/geometry.d.ts.map +1 -1
- package/dist/sections/geometry.js +49 -0
- package/dist/sections/geometry.js.map +1 -1
- package/dist/sections/properties.d.ts.map +1 -1
- package/dist/sections/properties.js +23 -26
- package/dist/sections/properties.js.map +1 -1
- package/dist/sections/quantities.d.ts.map +1 -1
- package/dist/sections/quantities.js +26 -25
- package/dist/sections/quantities.js.map +1 -1
- package/dist/sections/relationships.d.ts +25 -2
- package/dist/sections/relationships.d.ts.map +1 -1
- package/dist/sections/relationships.js +150 -16
- package/dist/sections/relationships.js.map +1 -1
- package/dist/types.d.ts +51 -2
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +37 -1
- package/dist/types.js.map +1 -1
- package/dist/workers/geometry-compression-client.d.ts +27 -0
- package/dist/workers/geometry-compression-client.d.ts.map +1 -0
- package/dist/workers/geometry-compression-client.js +84 -0
- package/dist/workers/geometry-compression-client.js.map +1 -0
- package/dist/workers/geometry-compression-handler.d.ts +4 -0
- package/dist/workers/geometry-compression-handler.d.ts.map +1 -0
- package/dist/workers/geometry-compression-handler.js +18 -0
- package/dist/workers/geometry-compression-handler.js.map +1 -0
- package/dist/workers/geometry-compression-protocol.d.ts +14 -0
- package/dist/workers/geometry-compression-protocol.d.ts.map +1 -0
- package/dist/workers/geometry-compression-protocol.js +10 -0
- package/dist/workers/geometry-compression-protocol.js.map +1 -0
- package/dist/workers/geometry-compression.worker.d.ts +2 -0
- package/dist/workers/geometry-compression.worker.d.ts.map +1 -0
- package/dist/workers/geometry-compression.worker.js +13 -0
- package/dist/workers/geometry-compression.worker.js.map +1 -0
- package/dist/writer.js +1 -1
- package/dist/writer.js.map +1 -1
- package/package.json +5 -4
|
@@ -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;
|
|
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
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
writer.writeTypedArray(
|
|
37
|
-
writer.writeTypedArray(
|
|
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":"AAAA;;+DAE+D;
|
|
1
|
+
{"version":3,"file":"entity-index.js","sourceRoot":"","sources":["../../src/sections/entity-index.ts"],"names":[],"mappings":"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"}
|
|
@@ -42,8 +42,7 @@ export interface GeometryHead {
|
|
|
42
42
|
coordinateInfo: CoordinateInfo;
|
|
43
43
|
chunks: GeometryChunkInfo[];
|
|
44
44
|
}
|
|
45
|
-
export
|
|
46
|
-
export declare const inflateRaw: (data: Uint8Array) => Promise<Uint8Array>;
|
|
45
|
+
export { deflateRaw, inflateRaw } from './geometry-codec.js';
|
|
47
46
|
/** Group meshes into spatially coherent, byte-capped chunks (order-stable). */
|
|
48
47
|
export declare function groupMeshesIntoChunks(meshes: MeshData[], softBytes?: number): MeshData[][];
|
|
49
48
|
/**
|
|
@@ -52,6 +51,7 @@ export declare function groupMeshesIntoChunks(meshes: MeshData[], softBytes?: nu
|
|
|
52
51
|
*/
|
|
53
52
|
export declare function buildGeometrySectionV13(meshes: MeshData[], coordinateInfo: CoordinateInfo, options?: {
|
|
54
53
|
compress?: boolean;
|
|
54
|
+
compressInWorker?: boolean;
|
|
55
55
|
}): Promise<ArrayBuffer>;
|
|
56
56
|
/** Parse the v13 geometry head; `reader` must be positioned at the geometry
|
|
57
57
|
* section start. Cheap: never touches chunk records. */
|
|
@@ -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;
|
|
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;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,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,CAAC;IAAC,gBAAgB,CAAC,EAAE,OAAO,CAAA;CAAO,GAC/D,OAAO,CAAC,WAAW,CAAC,CAoFtB;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"}
|
|
@@ -7,16 +7,9 @@ import { validateMeshes, writeMeshRecord, readMeshRecord, meshRecordByteLength,
|
|
|
7
7
|
import { validateGeometryDirectory } from './geometry-directory.js';
|
|
8
8
|
// 6×f32 AABB (24) + 5×u32 (offset, length, uncompressed, meshCount, flags).
|
|
9
9
|
const DIRECTORY_ENTRY_BYTES = 44;
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
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'));
|
|
10
|
+
import { chooseStoredGeometryChunk, inflateRaw } from './geometry-codec.js';
|
|
11
|
+
import { GeometryCompressionSession } from '../workers/geometry-compression-client.js';
|
|
12
|
+
export { deflateRaw, inflateRaw } from './geometry-codec.js';
|
|
20
13
|
// ─── write ────────────────────────────────────────────────────────────────
|
|
21
14
|
/** Grid cell of a mesh's world anchor (origin + first vertex) — a spatial
|
|
22
15
|
* grouping heuristic only; readers trust the directory, never this. */
|
|
@@ -102,35 +95,41 @@ export async function buildGeometrySectionV13(meshes, coordinateInfo, options =
|
|
|
102
95
|
// CompressionStream alive simultaneously — a needless memory spike during
|
|
103
96
|
// the (background) cache write.
|
|
104
97
|
const CHUNK_BUILD_CONCURRENCY = 4;
|
|
98
|
+
const session = options.compressInWorker ? new GeometryCompressionSession() : undefined;
|
|
105
99
|
const buildRecord = async (group) => {
|
|
106
100
|
const w = new BufferWriter(64 * 1024);
|
|
107
101
|
for (const mesh of group)
|
|
108
102
|
writeMeshRecord(w, mesh);
|
|
109
103
|
const raw = new Uint8Array(w.build());
|
|
104
|
+
// Worker compression transfers raw.buffer; save this before detachment.
|
|
105
|
+
const uncompressedLength = raw.byteLength;
|
|
110
106
|
let bytes = raw;
|
|
111
107
|
let flags = GeometryChunkFlags.None;
|
|
112
|
-
if (compress &&
|
|
113
|
-
const
|
|
114
|
-
|
|
115
|
-
if (
|
|
116
|
-
bytes = deflated;
|
|
108
|
+
if (compress && uncompressedLength >= GEOMETRY_CHUNK_COMPRESS_MIN_BYTES) {
|
|
109
|
+
const stored = await (session ? session.compress(raw) : chooseStoredGeometryChunk(raw));
|
|
110
|
+
bytes = stored.bytes;
|
|
111
|
+
if (stored.compressed)
|
|
117
112
|
flags = GeometryChunkFlags.DeflateRaw;
|
|
118
|
-
}
|
|
119
113
|
}
|
|
120
114
|
return {
|
|
121
115
|
bytes,
|
|
122
|
-
uncompressedLength
|
|
116
|
+
uncompressedLength,
|
|
123
117
|
meshCount: group.length,
|
|
124
118
|
flags,
|
|
125
119
|
aabb: chunkAabb(group),
|
|
126
120
|
};
|
|
127
121
|
};
|
|
128
122
|
const records = new Array(groups.length);
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
123
|
+
try {
|
|
124
|
+
for (let i = 0; i < groups.length; i += CHUNK_BUILD_CONCURRENCY) {
|
|
125
|
+
const slice = groups.slice(i, i + CHUNK_BUILD_CONCURRENCY);
|
|
126
|
+
const built = await Promise.all(slice.map(buildRecord));
|
|
127
|
+
for (let j = 0; j < built.length; j++)
|
|
128
|
+
records[i + j] = built[j];
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
finally {
|
|
132
|
+
session?.close();
|
|
134
133
|
}
|
|
135
134
|
// Head: counts + coordinateInfo + directory. Directory offsets need the
|
|
136
135
|
// head length, which needs the coordinateInfo length — write the variable
|
|
@@ -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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"geometry.d.ts","sourceRoot":"","sources":["../../src/sections/geometry.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAc,MAAM,oBAAoB,CAAC;AAC/E,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAEtE;;;GAGG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,QAAQ,EAAE,GAAG;IAClD,WAAW,EAAE,QAAQ,EAAE,CAAC;IACxB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,oBAAoB,EAAE,MAAM,CAAC;CAC9B,CA6BA;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,GAAG,IAAI,CAsD1E;AAED,8EAA8E;AAC9E,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM,CAW3D;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,cAAc,GAAG,IAAI,CA0BpF;
|
|
1
|
+
{"version":3,"file":"geometry.d.ts","sourceRoot":"","sources":["../../src/sections/geometry.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAc,MAAM,oBAAoB,CAAC;AAC/E,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAEtE;;;GAGG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,QAAQ,EAAE,GAAG;IAClD,WAAW,EAAE,QAAQ,EAAE,CAAC;IACxB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,oBAAoB,EAAE,MAAM,CAAC;CAC9B,CA6BA;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,GAAG,IAAI,CAsD1E;AAED,8EAA8E;AAC9E,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM,CAW3D;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,cAAc,GAAG,IAAI,CA0BpF;AAgED,qEAAqE;AACrE,wBAAgB,cAAc,CAAC,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,GAAE,MAAU,GAAG,QAAQ,CA2FrG;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,YAAY,EAAE,OAAO,GAAE,MAAU,GAAG,cAAc,CA2B5F"}
|
|
@@ -130,6 +130,39 @@ const ABSENT_SOURCE_ID = 0xffffffff;
|
|
|
130
130
|
// Maximum reasonable values for sanity checking
|
|
131
131
|
const MAX_VERTEX_COUNT = 100_000_000; // 100M vertices max per mesh
|
|
132
132
|
const MAX_INDEX_COUNT = 300_000_000; // 300M indices max per mesh
|
|
133
|
+
/** IEEE-754 single-precision: a value is NaN or ±Infinity exactly when its
|
|
134
|
+
* 8 exponent bits are all set, regardless of sign or mantissa. */
|
|
135
|
+
const FLOAT32_EXPONENT_MASK = 0x7f800000;
|
|
136
|
+
/**
|
|
137
|
+
* Throw if any value in a decoded vertex-data array is non-finite (NaN or
|
|
138
|
+
* ±Infinity). A legitimately-produced mesh never contains one (the WASM
|
|
139
|
+
* geometry pipeline does not emit NaN/Infinity vertices), so a hit here means
|
|
140
|
+
* corrupted or adversarial cache bytes, not a valid-but-unusual model.
|
|
141
|
+
*
|
|
142
|
+
* Checked via the raw bit pattern (a `Uint32Array` VIEW over the same buffer,
|
|
143
|
+
* no copy) rather than `Number.isFinite(values[i])` or a chain of
|
|
144
|
+
* `v !== v || v === Infinity || v === -Infinity` float comparisons: this
|
|
145
|
+
* runs on every cache read's hot path (once per mesh, over every
|
|
146
|
+
* position/normal float). Measured on a real 5,927-mesh/473K-vertex fixture
|
|
147
|
+
* (dental_clinic.ifc, `pnpm --filter @ifc-lite/cache exec node` a throwaway
|
|
148
|
+
* write+read harness, 20 iterations after 4 warmup reads): the bitwise
|
|
149
|
+
* exponent test was the fastest of the three forms tried, but a full linear
|
|
150
|
+
* scan of every position/normal float still measured ~15-20% over an
|
|
151
|
+
* unguarded read's ~30ms baseline for this fixture (see the changeset for
|
|
152
|
+
* the exact before/after numbers). Kept despite the cost: it is the only
|
|
153
|
+
* guard in this package that closes a mis-parse (not just a bounds/shape)
|
|
154
|
+
* class of corruption, and the viewer's cache-restore path already falls
|
|
155
|
+
* back to a fresh parse on any reader throw (see `readMeshRecord`'s callers).
|
|
156
|
+
*/
|
|
157
|
+
function assertFiniteVertexData(values, field, meshIndex, expressId) {
|
|
158
|
+
const bits = new Uint32Array(values.buffer, values.byteOffset, values.length);
|
|
159
|
+
for (let i = 0; i < bits.length; i++) {
|
|
160
|
+
if ((bits[i] & FLOAT32_EXPONENT_MASK) === FLOAT32_EXPONENT_MASK) {
|
|
161
|
+
throw new Error(`Invalid cache: mesh ${meshIndex} (expressId=${expressId}) has a non-finite value ` +
|
|
162
|
+
`(${values[i]}) in ${field}[${i}]. Cache may be corrupted.`);
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
}
|
|
133
166
|
/** Read one per-mesh record (see writeMeshRecord for the layout). */
|
|
134
167
|
export function readMeshRecord(reader, version, meshIndex = 0) {
|
|
135
168
|
const expressId = reader.readUint32();
|
|
@@ -186,6 +219,22 @@ export function readMeshRecord(reader, version, meshIndex = 0) {
|
|
|
186
219
|
const positions = reader.readFloat32Array(vertexCount * 3);
|
|
187
220
|
const normals = reader.readFloat32Array(vertexCount * 3);
|
|
188
221
|
const indices = reader.readUint32Array(indexCount);
|
|
222
|
+
// Reject a NaN/Infinity-bombed vertex region instead of letting it flow
|
|
223
|
+
// downstream unfiltered. Structural guards elsewhere in this package (the
|
|
224
|
+
// chunk directory's contiguity check, string-offset monotonicity, row-index
|
|
225
|
+
// bounds) all validate that declared SHAPES are self-consistent, but none of
|
|
226
|
+
// them constrain the numeric DOMAIN of a position/normal float once its
|
|
227
|
+
// slot is legitimately in range -- a byte-flip that lands inside the
|
|
228
|
+
// position array itself passes every existing check and decodes as a
|
|
229
|
+
// syntactically valid, semantically poisoned float. Left unchecked, that
|
|
230
|
+
// reaches `packages/spatial`'s BVH (a NaN aggregate bound silently hides
|
|
231
|
+
// valid SIBLING meshes under the same node until #3547's NaN-safe compare)
|
|
232
|
+
// and the renderer/picking path, neither of which re-validates cache input.
|
|
233
|
+
// Failing here, at the boundary where untrusted bytes become a MeshData,
|
|
234
|
+
// keeps that contract in one place instead of relying on every downstream
|
|
235
|
+
// consumer to defend itself.
|
|
236
|
+
assertFiniteVertexData(positions, 'positions', meshIndex, expressId);
|
|
237
|
+
assertFiniteVertexData(normals, 'normals', meshIndex, expressId);
|
|
189
238
|
return {
|
|
190
239
|
expressId,
|
|
191
240
|
positions,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"geometry.js","sourceRoot":"","sources":["../../src/sections/geometry.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"geometry.js","sourceRoot":"","sources":["../../src/sections/geometry.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAS/D;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,MAAkB;IAK/C,MAAM,WAAW,GAAe,EAAE,CAAC;IACnC,IAAI,mBAAmB,GAAG,CAAC,CAAC;IAC5B,IAAI,oBAAoB,GAAG,CAAC,CAAC;IAE7B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACvC,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QACvB,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC;QAC9C,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;QAEvC,yDAAyD;QACzD,IAAI,WAAW,GAAG,gBAAgB,IAAI,UAAU,GAAG,eAAe,EAAE,CAAC;YACnE,OAAO,CAAC,IAAI,CAAC,kCAAkC,CAAC,eAAe,IAAI,CAAC,SAAS,wBAAwB,CAAC,CAAC;YACvG,SAAS;QACX,CAAC;QAED,yEAAyE;QACzE,+EAA+E;QAC/E,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC;YAClD,OAAO,CAAC,IAAI,CAAC,kCAAkC,CAAC,eAAe,IAAI,CAAC,SAAS,uCAAuC,IAAI,CAAC,OAAO,CAAC,MAAM,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC;YACxK,SAAS;QACX,CAAC;QAED,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACvB,mBAAmB,IAAI,WAAW,CAAC;QACnC,oBAAoB,IAAI,UAAU,GAAG,CAAC,CAAC;IACzC,CAAC;IAED,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,CAAC;AACpE,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,MAAoB,EAAE,IAAc;IAClE,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAEnC,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC;IAC9C,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;IAEvC,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;IAChC,MAAM,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;IAE/B,qBAAqB;IACrB,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACnC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACnC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACnC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAEnC,iDAAiD;IACjD,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC;IACnC,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;IAE5B,2EAA2E;IAC3E,wEAAwE;IACxE,2EAA2E;IAC3E,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,aAAa,IAAI,CAAC,CAAC,CAAC;IAE3C,2EAA2E;IAC3E,4EAA4E;IAC5E,8DAA8D;IAC9D,EAAE;IACF,4EAA4E;IAC5E,6EAA6E;IAC7E,4EAA4E;IAC5E,4EAA4E;IAC5E,0CAA0C;IAC1C,EAAE;IACF,8EAA8E;IAC9E,wEAAwE;IACxE,8EAA8E;IAC9E,0EAA0E;IAC1E,6DAA6D;IAC7D,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,cAAc,IAAI,gBAAgB,CAAC,CAAC;IAC5D,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,IAAI,gBAAgB,CAAC,CAAC;IAExD,sEAAsE;IACtE,mEAAmE;IACnE,yEAAyE;IACzE,+CAA+C;IAC/C,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACtD,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACtD,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAEtD,wBAAwB;IACxB,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACvC,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACrC,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACvC,CAAC;AAED,8EAA8E;AAC9E,MAAM,UAAU,oBAAoB,CAAC,IAAc;IACjD,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IACtF,OAAO,CACL,CAAC,GAAG,CAAC,GAAG,CAAC,GAAc,qCAAqC;QAC5D,EAAE,GAAqB,cAAc;QACrC,CAAC,GAAG,YAAY,GAAO,iBAAiB;QACxC,CAAC,GAAsB,gBAAgB;QACvC,CAAC,GAAsB,2CAA2C;QAClE,EAAE,GAAqB,eAAe;QACtC,IAAI,CAAC,SAAS,CAAC,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAC9E,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,MAAoB,EAAE,IAAoB;IAC5E,eAAe;IACf,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;IAEpC,kBAAkB;IAClB,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;IAEvC,iBAAiB;IACjB,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;IAEtC,4DAA4D;IAC5D,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAEpD,iCAAiC;IACjC,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,KAAK,SAAS,CAAC;IACpD,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACtC,IAAI,UAAU,EAAE,CAAC;QACf,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,aAAc,CAAC,CAAC;IACzC,CAAC;IAED,oCAAoC;IACpC,MAAM,mBAAmB,GAAG,IAAI,CAAC,gBAAgB,KAAK,SAAS,CAAC;IAChE,MAAM,CAAC,UAAU,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/C,IAAI,mBAAmB,EAAE,CAAC;QACxB,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,gBAAiB,CAAC,CAAC;IAC9C,CAAC;AACH,CAAC;AAED,SAAS,SAAS,CAAC,MAAoB,EAAE,CAAO;IAC9C,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACzB,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACzB,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3B,CAAC;AAED,SAAS,SAAS,CAAC,MAAoB,EAAE,IAAU;IACjD,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;IAC5B,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;AAC9B,CAAC;AAED;;wBAEwB;AACxB,MAAM,gBAAgB,GAAG,UAAU,CAAC;AAEpC,gDAAgD;AAChD,MAAM,gBAAgB,GAAG,WAAW,CAAC,CAAC,6BAA6B;AACnE,MAAM,eAAe,GAAG,WAAW,CAAC,CAAC,4BAA4B;AAEjE;mEACmE;AACnE,MAAM,qBAAqB,GAAG,UAAU,CAAC;AAEzC;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,SAAS,sBAAsB,CAC7B,MAAoB,EACpB,KAA8B,EAC9B,SAAiB,EACjB,SAAiB;IAEjB,MAAM,IAAI,GAAG,IAAI,WAAW,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;IAC9E,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,qBAAqB,CAAC,KAAK,qBAAqB,EAAE,CAAC;YAChE,MAAM,IAAI,KAAK,CACb,uBAAuB,SAAS,eAAe,SAAS,2BAA2B;gBACjF,IAAI,MAAM,CAAC,CAAC,CAAC,QAAQ,KAAK,IAAI,CAAC,4BAA4B,CAC9D,CAAC;QACJ,CAAC;IACH,CAAC;AACH,CAAC;AAED,qEAAqE;AACrE,MAAM,UAAU,cAAc,CAAC,MAAoB,EAAE,OAAe,EAAE,YAAoB,CAAC;IACzF,MAAM,SAAS,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC;IACtC,MAAM,WAAW,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC;IACxC,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC;IAEvC,mCAAmC;IACnC,IAAI,WAAW,GAAG,gBAAgB,EAAE,CAAC;QACnC,MAAM,IAAI,KAAK,CAAC,8BAA8B,WAAW,oBAAoB,gBAAgB,YAAY,SAAS,wDAAwD,CAAC,CAAC;IAC9K,CAAC;IACD,IAAI,UAAU,GAAG,eAAe,EAAE,CAAC;QACjC,MAAM,IAAI,KAAK,CAAC,6BAA6B,UAAU,oBAAoB,eAAe,YAAY,SAAS,wDAAwD,CAAC,CAAC;IAC3K,CAAC;IAED,MAAM,KAAK,GAAqC;QAC9C,MAAM,CAAC,WAAW,EAAE;QACpB,MAAM,CAAC,WAAW,EAAE;QACpB,MAAM,CAAC,WAAW,EAAE;QACpB,MAAM,CAAC,WAAW,EAAE;KACrB,CAAC;IAEF,oCAAoC;IACpC,IAAI,OAAO,GAAuB,SAAS,CAAC;IAC5C,IAAI,OAAO,IAAI,CAAC,EAAE,CAAC;QACjB,OAAO,GAAG,MAAM,CAAC,UAAU,EAAE,IAAI,SAAS,CAAC;IAC7C,CAAC;IAED,qEAAqE;IACrE,yEAAyE;IACzE,0EAA0E;IAC1E,MAAM,aAAa,GAAG,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAE5D,6DAA6D;IAC7D,yEAAyE;IACzE,8EAA8E;IAC9E,8EAA8E;IAC9E,gEAAgE;IAChE,IAAI,cAAkC,CAAC;IACvC,IAAI,UAA8B,CAAC;IACnC,IAAI,OAAO,IAAI,EAAE,EAAE,CAAC;QAClB,MAAM,GAAG,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC;QAChC,MAAM,GAAG,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC;QAChC,mEAAmE;QACnE,kEAAkE;QAClE,IAAI,GAAG,KAAK,gBAAgB;YAAE,cAAc,GAAG,GAAG,CAAC;QACnD,IAAI,GAAG,KAAK,gBAAgB;YAAE,UAAU,GAAG,GAAG,CAAC;IACjD,CAAC;IAED,+EAA+E;IAC/E,IAAI,MAA4C,CAAC;IACjD,IAAI,OAAO,IAAI,CAAC,EAAE,CAAC;QACjB,MAAM,EAAE,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC;QAChC,MAAM,EAAE,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC;QAChC,MAAM,EAAE,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC;QAChC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE;YAAE,MAAM,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IAC5C,CAAC;IAED,MAAM,SAAS,GAAG,MAAM,CAAC,gBAAgB,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC;IAC3D,MAAM,OAAO,GAAG,MAAM,CAAC,gBAAgB,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC;IACzD,MAAM,OAAO,GAAG,MAAM,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;IAEnD,wEAAwE;IACxE,0EAA0E;IAC1E,4EAA4E;IAC5E,6EAA6E;IAC7E,wEAAwE;IACxE,qEAAqE;IACrE,qEAAqE;IACrE,yEAAyE;IACzE,yEAAyE;IACzE,2EAA2E;IAC3E,4EAA4E;IAC5E,yEAAyE;IACzE,0EAA0E;IAC1E,6BAA6B;IAC7B,sBAAsB,CAAC,SAAS,EAAE,WAAW,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;IACrE,sBAAsB,CAAC,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;IAEjE,OAAO;QACL,SAAS;QACT,SAAS;QACT,OAAO;QACP,OAAO;QACP,KAAK;QACL,OAAO;QACP,aAAa;QACb,4EAA4E;QAC5E,qDAAqD;QACrD,GAAG,CAAC,cAAc,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3D,GAAG,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACnD,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC9B,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,MAAoB,EAAE,UAAkB,CAAC;IAC1E,MAAM,WAAW,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;IACrC,MAAM,cAAc,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;IACxC,MAAM,aAAa,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;IACvC,MAAM,mBAAmB,GAAG,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IAErD,mCAAmC;IACnC,IAAI,aAA+B,CAAC;IACpC,IAAI,gBAAoC,CAAC;IAEzC,IAAI,OAAO,IAAI,CAAC,EAAE,CAAC;QACjB,IAAI,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,EAAE,CAAC;YAC7B,aAAa,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;QACnC,CAAC;QACD,IAAI,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,EAAE,CAAC;YAC7B,gBAAgB,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC;QAC1C,CAAC;IACH,CAAC;IAED,OAAO;QACL,WAAW;QACX,cAAc;QACd,aAAa;QACb,mBAAmB;QACnB,aAAa;QACb,gBAAgB;KACjB,CAAC;AACJ,CAAC;AAED,SAAS,QAAQ,CAAC,MAAoB;IACpC,OAAO;QACL,CAAC,EAAE,MAAM,CAAC,WAAW,EAAE;QACvB,CAAC,EAAE,MAAM,CAAC,WAAW,EAAE;QACvB,CAAC,EAAE,MAAM,CAAC,WAAW,EAAE;KACxB,CAAC;AACJ,CAAC;AAED,SAAS,QAAQ,CAAC,MAAoB;IACpC,OAAO;QACL,GAAG,EAAE,QAAQ,CAAC,MAAM,CAAC;QACrB,GAAG,EAAE,QAAQ,CAAC,MAAM,CAAC;KACtB,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"properties.d.ts","sourceRoot":"","sources":["../../src/sections/properties.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,KAAK,EAAE,aAAa,
|
|
1
|
+
{"version":3,"file":"properties.d.ts","sourceRoot":"","sources":["../../src/sections/properties.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAiB,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAEhF,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAStE,iFAAiF;AACjF,wBAAgB,4BAA4B,IAAI,IAAI,CAEnD;AAYD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,YAAY,EAAE,UAAU,EAAE,aAAa,GAAG,IAAI,CAoBrF;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,WAAW,GAAG,aAAa,CAgIxF"}
|
|
@@ -1,7 +1,7 @@
|
|
|
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 { comparePropertyValues, PropertyValueType } from '@ifc-lite/data';
|
|
4
|
+
import { comparePropertyValues, groupPropertySetsByInstance, PropertyValueType } from '@ifc-lite/data';
|
|
5
5
|
/**
|
|
6
6
|
* List-value parse failures are per-property on a cache-rehydration path, so
|
|
7
7
|
* the warning is latched: a corrupt cache would otherwise emit one line per
|
|
@@ -69,9 +69,9 @@ export function readProperties(reader, strings) {
|
|
|
69
69
|
const valueInt = reader.readInt32Array(count);
|
|
70
70
|
const valueBool = reader.readUint8Array(count);
|
|
71
71
|
const unitId = reader.readInt32Array(count);
|
|
72
|
-
const entityIndex = readIndex(reader);
|
|
73
|
-
const psetIndex = readIndex(reader);
|
|
74
|
-
const propIndex = readIndex(reader);
|
|
72
|
+
const entityIndex = readIndex(reader, count, 'entityIndex');
|
|
73
|
+
const psetIndex = readIndex(reader, count, 'psetIndex');
|
|
74
|
+
const propIndex = readIndex(reader, count, 'propIndex');
|
|
75
75
|
const getPropertyValue = (idx) => {
|
|
76
76
|
const type = propType[idx];
|
|
77
77
|
switch (type) {
|
|
@@ -135,26 +135,7 @@ export function readProperties(reader, strings) {
|
|
|
135
135
|
propIndex,
|
|
136
136
|
getForEntity: (id) => {
|
|
137
137
|
const rowIndices = entityIndex.get(id) || [];
|
|
138
|
-
|
|
139
|
-
for (const idx of rowIndices) {
|
|
140
|
-
const psetNameStr = strings.get(psetName[idx]);
|
|
141
|
-
const psetGlobalIdStr = strings.get(psetGlobalId[idx]);
|
|
142
|
-
if (!psets.has(psetNameStr)) {
|
|
143
|
-
psets.set(psetNameStr, {
|
|
144
|
-
name: psetNameStr,
|
|
145
|
-
globalId: psetGlobalIdStr,
|
|
146
|
-
properties: [],
|
|
147
|
-
});
|
|
148
|
-
}
|
|
149
|
-
const pset = psets.get(psetNameStr);
|
|
150
|
-
const propNameStr = strings.get(propName[idx]);
|
|
151
|
-
pset.properties.push({
|
|
152
|
-
name: propNameStr,
|
|
153
|
-
type: propType[idx],
|
|
154
|
-
value: getPropertyValue(idx),
|
|
155
|
-
});
|
|
156
|
-
}
|
|
157
|
-
return Array.from(psets.values());
|
|
138
|
+
return groupPropertySetsByInstance(rowIndices, psetName, psetGlobalId, propName, propType, strings, (idx) => getPropertyValue(idx));
|
|
158
139
|
},
|
|
159
140
|
getPropertyValue: (id, pset, prop) => {
|
|
160
141
|
const rowIndices = entityIndex.get(id) || [];
|
|
@@ -200,7 +181,18 @@ function writeIndex(writer, index) {
|
|
|
200
181
|
}
|
|
201
182
|
}
|
|
202
183
|
}
|
|
203
|
-
|
|
184
|
+
/**
|
|
185
|
+
* Read a row-index table (entityIndex/psetIndex/propIndex): key -> row
|
|
186
|
+
* indices into the parallel column arrays. Each row index MUST be < rowCount
|
|
187
|
+
* — the column arrays (entityId, psetName, propType, valueString, ...) are
|
|
188
|
+
* fixed-size `Uint32Array`/`Float64Array`s, so an out-of-range read returns
|
|
189
|
+
* `undefined` instead of throwing (`arr[idx]` on a typed array never throws).
|
|
190
|
+
* A corrupt cache with an inflated row index would otherwise flow `undefined`
|
|
191
|
+
* names and types into `getForEntity` results silently instead of failing the
|
|
192
|
+
* cache load. Same defect shape, and same fix, as `entity-index.ts`'s
|
|
193
|
+
* `typeIndex` bounds check.
|
|
194
|
+
*/
|
|
195
|
+
function readIndex(reader, rowCount, name) {
|
|
204
196
|
const size = reader.readUint32();
|
|
205
197
|
const index = new Map();
|
|
206
198
|
for (let i = 0; i < size; i++) {
|
|
@@ -208,7 +200,12 @@ function readIndex(reader) {
|
|
|
208
200
|
const valueCount = reader.readUint32();
|
|
209
201
|
const values = [];
|
|
210
202
|
for (let j = 0; j < valueCount; j++) {
|
|
211
|
-
|
|
203
|
+
const rowIndex = reader.readUint32();
|
|
204
|
+
if (rowIndex >= rowCount) {
|
|
205
|
+
throw new Error(`Corrupt cache PropertyTable ${name}: row index ${rowIndex} for key ${key} ` +
|
|
206
|
+
`exceeds row count ${rowCount}`);
|
|
207
|
+
}
|
|
208
|
+
values.push(rowIndex);
|
|
212
209
|
}
|
|
213
210
|
index.set(key, values);
|
|
214
211
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"properties.js","sourceRoot":"","sources":["../../src/sections/properties.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAO/D,OAAO,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"properties.js","sourceRoot":"","sources":["../../src/sections/properties.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAO/D,OAAO,EAAE,qBAAqB,EAAE,2BAA2B,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAGvG;;;;GAIG;AACH,IAAI,qBAAqB,GAAG,KAAK,CAAC;AAElC,iFAAiF;AACjF,MAAM,UAAU,4BAA4B;IAC1C,qBAAqB,GAAG,KAAK,CAAC;AAChC,CAAC;AAED,SAAS,wBAAwB,CAAC,OAAe,EAAE,GAAY;IAC7D,IAAI,qBAAqB;QAAE,OAAO;IAClC,qBAAqB,GAAG,IAAI,CAAC;IAC7B,OAAO,CAAC,IAAI,CACV,2EAA2E;QACzE,gDAAgD,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,EACzF,GAAG,CACJ,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,eAAe,CAAC,MAAoB,EAAE,UAAyB;IAC7E,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC;IAE/B,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;IAE1B,MAAM,CAAC,eAAe,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;IAC5C,MAAM,CAAC,eAAe,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;IAC5C,MAAM,CAAC,eAAe,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;IAChD,MAAM,CAAC,eAAe,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;IAC5C,MAAM,CAAC,eAAe,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;IAC5C,MAAM,CAAC,eAAe,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;IAC/C,MAAM,CAAC,eAAe,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;IAC7C,MAAM,CAAC,eAAe,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;IAC5C,MAAM,CAAC,eAAe,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;IAC7C,MAAM,CAAC,eAAe,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;IAE1C,qBAAqB;IACrB,UAAU,CAAC,MAAM,EAAE,UAAU,CAAC,WAAW,CAAC,CAAC;IAC3C,UAAU,CAAC,MAAM,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC;IACzC,UAAU,CAAC,MAAM,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC;AAC3C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,MAAoB,EAAE,OAAoB;IACvE,MAAM,KAAK,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC;IAElC,MAAM,QAAQ,GAAG,MAAM,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;IAC/C,MAAM,QAAQ,GAAG,MAAM,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;IAC/C,MAAM,YAAY,GAAG,MAAM,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;IACnD,MAAM,QAAQ,GAAG,MAAM,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;IAC/C,MAAM,QAAQ,GAAG,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;IAC9C,MAAM,WAAW,GAAG,MAAM,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;IAClD,MAAM,SAAS,GAAG,MAAM,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;IACjD,MAAM,QAAQ,GAAG,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;IAC9C,MAAM,SAAS,GAAG,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;IAC/C,MAAM,MAAM,GAAG,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;IAE5C,MAAM,WAAW,GAAG,SAAS,CAAC,MAAM,EAAE,KAAK,EAAE,aAAa,CAAC,CAAC;IAC5D,MAAM,SAAS,GAAG,SAAS,CAAC,MAAM,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC;IACxD,MAAM,SAAS,GAAG,SAAS,CAAC,MAAM,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC;IAExD,MAAM,gBAAgB,GAAG,CAAC,GAAW,EAAiB,EAAE;QACtD,MAAM,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;QAC3B,QAAQ,IAAI,EAAE,CAAC;YACb,KAAK,iBAAiB,CAAC,MAAM,CAAC;YAC9B,KAAK,iBAAiB,CAAC,KAAK,CAAC;YAC7B,KAAK,iBAAiB,CAAC,UAAU,CAAC;YAClC,KAAK,iBAAiB,CAAC,IAAI,CAAC;YAC5B,KAAK,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC;gBAC5B,mEAAmE;gBACnE,uEAAuE;gBACvE,mEAAmE;gBACnE,MAAM,EAAE,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;gBAC5B,OAAO,EAAE,IAAI,CAAC,IAAI,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YAChE,CAAC;YACD,KAAK,iBAAiB,CAAC,IAAI;gBACzB,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC;YACxB,KAAK,iBAAiB,CAAC,OAAO;gBAC5B,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC;YACvB,KAAK,iBAAiB,CAAC,OAAO,CAAC;YAC/B,KAAK,iBAAiB,CAAC,OAAO;gBAC5B,MAAM,OAAO,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;gBAC/B,OAAO,OAAO,KAAK,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,KAAK,CAAC,CAAC;YAChD,KAAK,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC;gBAC5B,wDAAwD;gBACxD,oEAAoE;gBACpE,qEAAqE;gBACrE,mEAAmE;gBACnE,+CAA+C;gBAC/C,MAAM,EAAE,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;gBAC5B,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC;oBAAE,OAAO,IAAI,CAAC;gBAClD,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBAChC,IAAI,OAAO,KAAK,EAAE;oBAAE,OAAO,IAAI,CAAC;gBAChC,IAAI,CAAC;oBACH,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;gBAC7B,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,wBAAwB,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;oBACvC,OAAO,EAAE,CAAC;gBACZ,CAAC;YACH,CAAC;YACD;gBACE,OAAO,IAAI,CAAC;QAChB,CAAC;IACH,CAAC,CAAC;IAEF,OAAO;QACL,KAAK;QACL,QAAQ;QACR,QAAQ;QACR,YAAY;QACZ,QAAQ;QACR,QAAQ;QACR,WAAW;QACX,SAAS;QACT,QAAQ;QACR,SAAS;QACT,MAAM;QACN,WAAW;QACX,SAAS;QACT,SAAS;QAET,YAAY,EAAE,CAAC,EAAE,EAAE,EAAE;YACnB,MAAM,UAAU,GAAG,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC;YAC7C,OAAO,2BAA2B,CAChC,UAAU,EACV,QAAQ,EACR,YAAY,EACZ,QAAQ,EACR,QAAQ,EACR,OAAO,EACP,CAAC,GAAG,EAAE,EAAE,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAC/B,CAAC;QACJ,CAAC;QAED,gBAAgB,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE;YACnC,MAAM,UAAU,GAAG,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC;YAC7C,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YACtC,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAEtC,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;gBAC7B,IAAI,QAAQ,CAAC,GAAG,CAAC,KAAK,OAAO,IAAI,QAAQ,CAAC,GAAG,CAAC,KAAK,OAAO,EAAE,CAAC;oBAC3D,OAAO,gBAAgB,CAAC,GAAG,CAAC,CAAC;gBAC/B,CAAC;YACH,CAAC;YAED,OAAO,IAAI,CAAC;QACd,CAAC;QAED,cAAc,EAAE,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;YAC9C,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YACtC,IAAI,OAAO,GAAG,CAAC;gBAAE,OAAO,EAAE,CAAC;YAE3B,2EAA2E;YAC3E,2EAA2E;YAC3E,MAAM,OAAO,GAAG,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAChE,IAAI,IAAI,KAAK,SAAS,IAAI,OAAO,GAAG,CAAC;gBAAE,OAAO,EAAE,CAAC;YAEjD,MAAM,UAAU,GAAG,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;YAChD,MAAM,OAAO,GAAa,EAAE,CAAC;YAE7B,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;gBAC7B,IAAI,OAAO,IAAI,CAAC,IAAI,QAAQ,CAAC,GAAG,CAAC,KAAK,OAAO;oBAAE,SAAS;gBACxD,MAAM,SAAS,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC;gBACxC,IAAI,qBAAqB,CAAC,SAAS,EAAE,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC;oBACtD,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;gBAC9B,CAAC;YACH,CAAC;YAED,OAAO,OAAO,CAAC;QACjB,CAAC;KACF,CAAC;AACJ,CAAC;AAED,SAAS,UAAU,CAAC,MAAoB,EAAE,KAA4B;IACpE,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC/B,KAAK,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;QAClC,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QACxB,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAClC,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;YACvB,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;QACxB,CAAC;IACH,CAAC;AACH,CAAC;AAED;;;;;;;;;;GAUG;AACH,SAAS,SAAS,CAAC,MAAoB,EAAE,QAAgB,EAAE,IAAY;IACrE,MAAM,IAAI,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC;IACjC,MAAM,KAAK,GAAG,IAAI,GAAG,EAAoB,CAAC;IAC1C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC;QAC9B,MAAM,GAAG,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC;QAChC,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC;QACvC,MAAM,MAAM,GAAa,EAAE,CAAC;QAC5B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,EAAE,CAAC,EAAE,EAAE,CAAC;YACpC,MAAM,QAAQ,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC;YACrC,IAAI,QAAQ,IAAI,QAAQ,EAAE,CAAC;gBACzB,MAAM,IAAI,KAAK,CACb,+BAA+B,IAAI,eAAe,QAAQ,YAAY,GAAG,GAAG;oBAC1E,qBAAqB,QAAQ,EAAE,CAClC,CAAC;YACJ,CAAC;YACD,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACxB,CAAC;QACD,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IACzB,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"quantities.d.ts","sourceRoot":"","sources":["../../src/sections/quantities.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,KAAK,EAAE,aAAa,
|
|
1
|
+
{"version":3,"file":"quantities.d.ts","sourceRoot":"","sources":["../../src/sections/quantities.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAEjE,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAEtE;;GAEG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,YAAY,EAAE,UAAU,EAAE,aAAa,GAAG,IAAI,CAkBrF;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,WAAW,GAAG,aAAa,CA4GxF"}
|
|
@@ -1,7 +1,7 @@
|
|
|
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 { comparePropertyValues } from '@ifc-lite/data';
|
|
4
|
+
import { comparePropertyValues, groupQuantitySetsByInstance } from '@ifc-lite/data';
|
|
5
5
|
/**
|
|
6
6
|
* Write QuantityTable to buffer
|
|
7
7
|
*/
|
|
@@ -10,6 +10,7 @@ export function writeQuantities(writer, quantities) {
|
|
|
10
10
|
writer.writeUint32(count);
|
|
11
11
|
writer.writeTypedArray(quantities.entityId);
|
|
12
12
|
writer.writeTypedArray(quantities.qsetName);
|
|
13
|
+
writer.writeTypedArray(quantities.qsetGlobalId);
|
|
13
14
|
writer.writeTypedArray(quantities.quantityName);
|
|
14
15
|
writer.writeTypedArray(quantities.quantityType);
|
|
15
16
|
writer.writeTypedArray(quantities.value);
|
|
@@ -27,18 +28,20 @@ export function readQuantities(reader, strings) {
|
|
|
27
28
|
const count = reader.readUint32();
|
|
28
29
|
const entityId = reader.readUint32Array(count);
|
|
29
30
|
const qsetName = reader.readUint32Array(count);
|
|
31
|
+
const qsetGlobalId = reader.readUint32Array(count);
|
|
30
32
|
const quantityName = reader.readUint32Array(count);
|
|
31
33
|
const quantityType = reader.readUint8Array(count);
|
|
32
34
|
const value = reader.readFloat64Array(count);
|
|
33
35
|
const unitId = reader.readInt32Array(count);
|
|
34
36
|
const formula = reader.readUint32Array(count);
|
|
35
|
-
const entityIndex = readIndex(reader);
|
|
36
|
-
const qsetIndex = readIndex(reader);
|
|
37
|
-
const quantityIndex = readIndex(reader);
|
|
37
|
+
const entityIndex = readIndex(reader, count, 'entityIndex');
|
|
38
|
+
const qsetIndex = readIndex(reader, count, 'qsetIndex');
|
|
39
|
+
const quantityIndex = readIndex(reader, count, 'quantityIndex');
|
|
38
40
|
return {
|
|
39
41
|
count,
|
|
40
42
|
entityId,
|
|
41
43
|
qsetName,
|
|
44
|
+
qsetGlobalId,
|
|
42
45
|
quantityName,
|
|
43
46
|
quantityType,
|
|
44
47
|
value,
|
|
@@ -49,25 +52,7 @@ export function readQuantities(reader, strings) {
|
|
|
49
52
|
quantityIndex,
|
|
50
53
|
getForEntity: (id) => {
|
|
51
54
|
const rowIndices = entityIndex.get(id) || [];
|
|
52
|
-
|
|
53
|
-
for (const idx of rowIndices) {
|
|
54
|
-
const qsetNameStr = strings.get(qsetName[idx]);
|
|
55
|
-
if (!qsets.has(qsetNameStr)) {
|
|
56
|
-
qsets.set(qsetNameStr, {
|
|
57
|
-
name: qsetNameStr,
|
|
58
|
-
quantities: [],
|
|
59
|
-
});
|
|
60
|
-
}
|
|
61
|
-
const qset = qsets.get(qsetNameStr);
|
|
62
|
-
const quantNameStr = strings.get(quantityName[idx]);
|
|
63
|
-
qset.quantities.push({
|
|
64
|
-
name: quantNameStr,
|
|
65
|
-
type: quantityType[idx],
|
|
66
|
-
value: value[idx],
|
|
67
|
-
formula: formula[idx] > 0 ? strings.get(formula[idx]) : undefined,
|
|
68
|
-
});
|
|
69
|
-
}
|
|
70
|
-
return Array.from(qsets.values());
|
|
55
|
+
return groupQuantitySetsByInstance(rowIndices, qsetName, qsetGlobalId, quantityName, quantityType, value, formula, strings);
|
|
71
56
|
},
|
|
72
57
|
getQuantityValue: (id, qset, quant) => {
|
|
73
58
|
const rowIndices = entityIndex.get(id) || [];
|
|
@@ -135,7 +120,18 @@ function writeIndex(writer, index) {
|
|
|
135
120
|
}
|
|
136
121
|
}
|
|
137
122
|
}
|
|
138
|
-
|
|
123
|
+
/**
|
|
124
|
+
* Read a row-index table (entityIndex/qsetIndex/quantityIndex): key -> row
|
|
125
|
+
* indices into the parallel column arrays. Each row index MUST be < rowCount
|
|
126
|
+
* — the column arrays (entityId, qsetName, quantityType, value, ...) are
|
|
127
|
+
* fixed-size typed arrays, so an out-of-range read returns `undefined`
|
|
128
|
+
* instead of throwing. A corrupt cache with an inflated row index would
|
|
129
|
+
* otherwise flow `undefined` names and values into `getForEntity` results and
|
|
130
|
+
* `NaN` into `sumByType` silently instead of failing the cache load. Same
|
|
131
|
+
* defect shape, and same fix, as `entity-index.ts`'s `typeIndex` bounds
|
|
132
|
+
* check and `properties.ts`'s equivalent guard.
|
|
133
|
+
*/
|
|
134
|
+
function readIndex(reader, rowCount, name) {
|
|
139
135
|
const size = reader.readUint32();
|
|
140
136
|
const index = new Map();
|
|
141
137
|
for (let i = 0; i < size; i++) {
|
|
@@ -143,7 +139,12 @@ function readIndex(reader) {
|
|
|
143
139
|
const valueCount = reader.readUint32();
|
|
144
140
|
const values = [];
|
|
145
141
|
for (let j = 0; j < valueCount; j++) {
|
|
146
|
-
|
|
142
|
+
const rowIndex = reader.readUint32();
|
|
143
|
+
if (rowIndex >= rowCount) {
|
|
144
|
+
throw new Error(`Corrupt cache QuantityTable ${name}: row index ${rowIndex} for key ${key} ` +
|
|
145
|
+
`exceeds row count ${rowCount}`);
|
|
146
|
+
}
|
|
147
|
+
values.push(rowIndex);
|
|
147
148
|
}
|
|
148
149
|
index.set(key, values);
|
|
149
150
|
}
|