@ifc-lite/cache 2.0.10 → 2.1.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 +36 -16
- package/dist/reader.d.ts +6 -1
- package/dist/reader.d.ts.map +1 -1
- package/dist/reader.js +14 -3
- package/dist/reader.js.map +1 -1
- package/dist/sections/header.d.ts.map +1 -1
- package/dist/sections/header.js +1 -0
- package/dist/sections/header.js.map +1 -1
- package/dist/types.d.ts +40 -2
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +21 -1
- package/dist/types.js.map +1 -1
- package/dist/writer.d.ts.map +1 -1
- package/dist/writer.js +8 -3
- package/dist/writer.js.map +1 -1
- package/package.json +3 -3
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# @ifc-lite/cache
|
|
2
2
|
|
|
3
|
-
Binary cache format for IFClite. Caches parsed geometry
|
|
3
|
+
Binary cache format for IFClite. Caches the parsed data store and geometry in a compact binary format so a previously-loaded IFC reopens in milliseconds instead of re-running the full parse + tessellation pipeline. Content-addressable (xxHash64 of the source IFC), so cache invalidation is automatic.
|
|
4
4
|
|
|
5
5
|
## Installation
|
|
6
6
|
|
|
@@ -12,30 +12,31 @@ npm install @ifc-lite/cache
|
|
|
12
12
|
|
|
13
13
|
```typescript
|
|
14
14
|
import {
|
|
15
|
-
|
|
15
|
+
xxhash64Hex,
|
|
16
16
|
BinaryCacheReader,
|
|
17
17
|
BinaryCacheWriter,
|
|
18
|
-
loadGLBToMeshData,
|
|
19
18
|
} from '@ifc-lite/cache';
|
|
20
19
|
|
|
21
20
|
const ifcBuffer = await file.arrayBuffer();
|
|
22
|
-
const cacheKey =
|
|
21
|
+
const cacheKey = xxhash64Hex(ifcBuffer);
|
|
23
22
|
|
|
24
23
|
// Try cache first
|
|
25
24
|
const cached = await myStorage.get(cacheKey); // your IndexedDB / fs / S3 lookup
|
|
26
25
|
if (cached) {
|
|
27
|
-
const reader = new BinaryCacheReader(
|
|
28
|
-
const
|
|
29
|
-
renderer.loadGeometry(meshes);
|
|
26
|
+
const reader = new BinaryCacheReader();
|
|
27
|
+
const { geometry } = await reader.read(cached);
|
|
28
|
+
renderer.loadGeometry(geometry?.meshes ?? []);
|
|
30
29
|
return; // first triangles in milliseconds
|
|
31
30
|
}
|
|
32
31
|
|
|
33
|
-
// Cold path — full parse, then write the cache
|
|
34
|
-
|
|
32
|
+
// Cold path — full parse + tessellation, then write the cache.
|
|
33
|
+
// dataStore comes from the parser; process() returns a GeometryResult.
|
|
34
|
+
const dataStore = await parser.parseColumnar(new Uint8Array(ifcBuffer));
|
|
35
|
+
const geometry = await geometryProcessor.process(new Uint8Array(ifcBuffer));
|
|
35
36
|
|
|
36
37
|
const writer = new BinaryCacheWriter();
|
|
37
|
-
writer.
|
|
38
|
-
await myStorage.put(cacheKey,
|
|
38
|
+
const cacheBuffer = await writer.write(dataStore, geometry, ifcBuffer, { includeGeometry: true });
|
|
39
|
+
await myStorage.put(cacheKey, cacheBuffer);
|
|
39
40
|
```
|
|
40
41
|
|
|
41
42
|
## Pure GLB read
|
|
@@ -49,7 +50,7 @@ const meshes = await loadGLBToMeshData(glbBuffer);
|
|
|
49
50
|
// → MeshData[] ready to feed into @ifc-lite/renderer
|
|
50
51
|
|
|
51
52
|
// Or get the parsed GLB structure if you need lower-level access
|
|
52
|
-
const { json, bin
|
|
53
|
+
const { json, bin } = parseGLB(glbBuffer);
|
|
53
54
|
```
|
|
54
55
|
|
|
55
56
|
## Hashing utilities
|
|
@@ -57,13 +58,32 @@ const { json, bin, mapping } = parseGLB(glbBuffer);
|
|
|
57
58
|
Two hash functions are exposed for cache key generation:
|
|
58
59
|
|
|
59
60
|
```typescript
|
|
60
|
-
import {
|
|
61
|
+
import { xxhash64, xxhash64Hex } from '@ifc-lite/cache';
|
|
61
62
|
|
|
62
|
-
const
|
|
63
|
-
const
|
|
63
|
+
const hexKey = xxhash64Hex(buffer); // ~5 GB/s, 16-char hex string
|
|
64
|
+
const rawKey = xxhash64(buffer); // same hash as a bigint
|
|
64
65
|
```
|
|
65
66
|
|
|
66
|
-
|
|
67
|
+
The cache keys models by the xxHash64 of the source IFC, and `reader.validate(cacheBuffer, sourceBuffer)` uses the same hash to detect when the source has changed.
|
|
68
|
+
|
|
69
|
+
## Source-hash contract (and `omitSourceHash`)
|
|
70
|
+
|
|
71
|
+
By default the header stores the full-file `xxhash64` of the source in `sourceHash`, and `reader.validate()` / `read({ sourceBuffer })` compare against it. Hashing a large source can be a multi-second main-thread cost, so a caller that validates the source **another way** (e.g. an application-layer content hash plus a file modified-time guard, as the viewer's source-decoupled cache tier does) can pass `omitSourceHash: true`:
|
|
72
|
+
|
|
73
|
+
```typescript
|
|
74
|
+
// Skip the full-file hash; validate the source at the application layer instead.
|
|
75
|
+
const cacheBuffer = await writer.write(dataStore, geometry, ifcBuffer, {
|
|
76
|
+
includeGeometry: true,
|
|
77
|
+
omitSourceHash: true,
|
|
78
|
+
});
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
Such an entry stores `sourceHash = 0n` and sets `HeaderFlags.SourceHashUnset`. Read it back via `CacheHeaderInfo.hasSourceHash`:
|
|
82
|
+
|
|
83
|
+
- `hasSourceHash === true` → `sourceHash` is a real full-file hash; `validate()` and `read({ sourceBuffer })` work as usual.
|
|
84
|
+
- `hasSourceHash === false` → `sourceHash` is unset. `read({ sourceBuffer })` **skips** header validation (it does not fail-close on a valid cache), and `validate()` **throws** a clear error instead of returning a misleading `false`. Validate the source yourself (e.g. compare a stored content hash / mtime).
|
|
85
|
+
|
|
86
|
+
This is backward compatible: entries written before the flag existed have it unset-as-in-absent, so their `sourceHash` remains a real hash and continues to validate normally.
|
|
67
87
|
|
|
68
88
|
## API
|
|
69
89
|
|
package/dist/reader.d.ts
CHANGED
|
@@ -5,7 +5,12 @@ export declare class BinaryCacheReader {
|
|
|
5
5
|
*/
|
|
6
6
|
readHeader(buffer: ArrayBuffer): CacheHeaderInfo;
|
|
7
7
|
/**
|
|
8
|
-
* Validate cache against source file
|
|
8
|
+
* Validate cache against source file.
|
|
9
|
+
*
|
|
10
|
+
* Throws when the entry was written with {@link HeaderFlags.SourceHashUnset}
|
|
11
|
+
* (its `sourceHash` is not a real full-file hash), so the caller cannot
|
|
12
|
+
* accidentally read this as a mismatch and silently discard a valid cache —
|
|
13
|
+
* it must validate the source another way (see the header note).
|
|
9
14
|
*/
|
|
10
15
|
validate(cacheBuffer: ArrayBuffer, sourceBuffer: ArrayBuffer): boolean;
|
|
11
16
|
/**
|
package/dist/reader.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reader.d.ts","sourceRoot":"","sources":["../src/reader.ts"],"names":[],"mappings":"AASA,OAAO,EAEL,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACrB,KAAK,eAAe,EAErB,MAAM,YAAY,CAAC;AAapB,qBAAa,iBAAiB;IAC5B;;OAEG;IACH,UAAU,CAAC,MAAM,EAAE,WAAW,GAAG,eAAe;IAKhD
|
|
1
|
+
{"version":3,"file":"reader.d.ts","sourceRoot":"","sources":["../src/reader.ts"],"names":[],"mappings":"AASA,OAAO,EAEL,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACrB,KAAK,eAAe,EAErB,MAAM,YAAY,CAAC;AAapB,qBAAa,iBAAiB;IAC5B;;OAEG;IACH,UAAU,CAAC,MAAM,EAAE,WAAW,GAAG,eAAe;IAKhD;;;;;;;OAOG;IACH,QAAQ,CAAC,WAAW,EAAE,WAAW,EAAE,YAAY,EAAE,WAAW,GAAG,OAAO;IAWtE;;OAEG;IACG,IAAI,CACR,MAAM,EAAE,WAAW,EACnB,OAAO,GAAE,gBAAqB,GAC7B,OAAO,CAAC,eAAe,CAAC;CAgG5B"}
|
package/dist/reader.js
CHANGED
|
@@ -22,10 +22,18 @@ export class BinaryCacheReader {
|
|
|
22
22
|
return readHeader(reader);
|
|
23
23
|
}
|
|
24
24
|
/**
|
|
25
|
-
* Validate cache against source file
|
|
25
|
+
* Validate cache against source file.
|
|
26
|
+
*
|
|
27
|
+
* Throws when the entry was written with {@link HeaderFlags.SourceHashUnset}
|
|
28
|
+
* (its `sourceHash` is not a real full-file hash), so the caller cannot
|
|
29
|
+
* accidentally read this as a mismatch and silently discard a valid cache —
|
|
30
|
+
* it must validate the source another way (see the header note).
|
|
26
31
|
*/
|
|
27
32
|
validate(cacheBuffer, sourceBuffer) {
|
|
28
33
|
const header = this.readHeader(cacheBuffer);
|
|
34
|
+
if (!header.hasSourceHash) {
|
|
35
|
+
throw new Error('Cache entry has no full-file source hash (SourceHashUnset); validate the source at the application layer instead of reader.validate().');
|
|
36
|
+
}
|
|
29
37
|
const sourceHash = xxhash64(sourceBuffer);
|
|
30
38
|
return header.sourceHash === sourceHash;
|
|
31
39
|
}
|
|
@@ -36,8 +44,11 @@ export class BinaryCacheReader {
|
|
|
36
44
|
const { skipGeometry = false, sourceBuffer } = options;
|
|
37
45
|
const reader = new BufferReader(buffer);
|
|
38
46
|
const header = readHeader(reader);
|
|
39
|
-
// Validate source if provided
|
|
40
|
-
|
|
47
|
+
// Validate source if provided AND this entry actually carries a full-file
|
|
48
|
+
// hash. Entries written with SourceHashUnset (their `sourceHash` is 0n)
|
|
49
|
+
// are validated by the application layer — skip here so a provided
|
|
50
|
+
// `sourceBuffer` can't spuriously fail-close a valid cache.
|
|
51
|
+
if (sourceBuffer && header.hasSourceHash) {
|
|
41
52
|
const sourceHash = xxhash64(sourceBuffer);
|
|
42
53
|
if (header.sourceHash !== sourceHash) {
|
|
43
54
|
throw new Error('Cache validation failed: source file has changed');
|
package/dist/reader.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reader.js","sourceRoot":"","sources":["../src/reader.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAO/D,OAAO,EACL,WAAW,GAKZ,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AACrE,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAE7D,MAAM,OAAO,iBAAiB;IAC5B;;OAEG;IACH,UAAU,CAAC,MAAmB;QAC5B,MAAM,MAAM,GAAG,IAAI,YAAY,CAAC,MAAM,CAAC,CAAC;QACxC,OAAO,UAAU,CAAC,MAAM,CAAC,CAAC;IAC5B,CAAC;IAED
|
|
1
|
+
{"version":3,"file":"reader.js","sourceRoot":"","sources":["../src/reader.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"header.d.ts","sourceRoot":"","sources":["../../src/sections/header.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAKL,KAAK,WAAW,EAChB,KAAK,YAAY,EACjB,KAAK,eAAe,EAGrB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAEtE;;GAEG;AACH,wBAAgB,WAAW,CACzB,MAAM,EAAE,YAAY,EACpB,MAAM,EAAE,WAAW,EACnB,QAAQ,EAAE,YAAY,EAAE,GACvB,IAAI,CAuCN;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,YAAY,GAAG,eAAe,
|
|
1
|
+
{"version":3,"file":"header.d.ts","sourceRoot":"","sources":["../../src/sections/header.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAKL,KAAK,WAAW,EAChB,KAAK,YAAY,EACjB,KAAK,eAAe,EAGrB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAEtE;;GAEG;AACH,wBAAgB,WAAW,CACzB,MAAM,EAAE,YAAY,EACpB,MAAM,EAAE,WAAW,EACnB,QAAQ,EAAE,YAAY,EAAE,GACvB,IAAI,CAuCN;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,YAAY,GAAG,eAAe,CA0DhE"}
|
package/dist/sections/header.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"header.js","sourceRoot":"","sources":["../../src/sections/header.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"header.js","sourceRoot":"","sources":["../../src/sections/header.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -54,7 +54,18 @@ export declare const MAGIC = 1279477321;
|
|
|
54
54
|
* would render stale geometry and the compare/diff feature would flag those hosts as
|
|
55
55
|
* changed. The bump invalidates pre-#1432 caches so they re-mesh.
|
|
56
56
|
*/
|
|
57
|
-
|
|
57
|
+
/**
|
|
58
|
+
* v11→v12: source vertex weld. Every element mesh is now welded at the source
|
|
59
|
+
* (`build_mesh_data`): coincident vertices sharing a position + normal (+ UV)
|
|
60
|
+
* are collapsed and indices remapped, and the per-EXPORT welds (GLB `to_yup` /
|
|
61
|
+
* from-meshes) were removed as redundant. A v11 cache holds pre-weld
|
|
62
|
+
* (per-face-duplicated) geometry; restoring it and exporting would now emit an
|
|
63
|
+
* unwelded, 3-6x larger GLB (regressing the #1553 export-weld win for
|
|
64
|
+
* cached-model users) and yields non-watertight raw MeshData. The byte layout
|
|
65
|
+
* is unchanged, but the vertex/index buffers differ, so the bump invalidates
|
|
66
|
+
* pre-weld caches to re-mesh (welded).
|
|
67
|
+
*/
|
|
68
|
+
export declare const FORMAT_VERSION = 12;
|
|
58
69
|
/** Section types in the binary format */
|
|
59
70
|
export declare enum SectionType {
|
|
60
71
|
Strings = 1,
|
|
@@ -79,7 +90,16 @@ export declare enum HeaderFlags {
|
|
|
79
90
|
None = 0,
|
|
80
91
|
Compressed = 1,
|
|
81
92
|
HasGeometry = 2,
|
|
82
|
-
HasSpatial = 4
|
|
93
|
+
HasSpatial = 4,
|
|
94
|
+
/**
|
|
95
|
+
* The `sourceHash` field is NOT a full-file `xxhash64` — it is unset (0) and
|
|
96
|
+
* must not be used to validate the source. Set by writers that validate the
|
|
97
|
+
* source by another means (see `omitSourceHash`), so `reader.validate()` /
|
|
98
|
+
* `read({ sourceBuffer })` can fail LOUD (or skip) instead of silently
|
|
99
|
+
* fail-closing on a real match. Backward-compatible: entries written before
|
|
100
|
+
* this flag existed have it unset, so their `sourceHash` stays a real hash.
|
|
101
|
+
*/
|
|
102
|
+
SourceHashUnset = 8
|
|
83
103
|
}
|
|
84
104
|
/** Section flags */
|
|
85
105
|
export declare enum SectionFlags {
|
|
@@ -120,6 +140,17 @@ export interface CacheWriteOptions {
|
|
|
120
140
|
includeSpatialHierarchy?: boolean;
|
|
121
141
|
/** Compress sections (default: false, future feature) */
|
|
122
142
|
compress?: boolean;
|
|
143
|
+
/**
|
|
144
|
+
* Skip the header's full-file `xxhash64(sourceBuffer)`: store `sourceHash = 0n`
|
|
145
|
+
* and set {@link HeaderFlags.SourceHashUnset}. Use when the caller validates
|
|
146
|
+
* the source by another means (e.g. an application-layer content hash), so a
|
|
147
|
+
* large source pays NO full-file main-thread hash on write. Consumers that
|
|
148
|
+
* would validate against the header (`reader.validate()` / `read({
|
|
149
|
+
* sourceBuffer })`) can then detect the absence via {@link
|
|
150
|
+
* CacheHeaderInfo.hasSourceHash} instead of silently fail-closing. Default
|
|
151
|
+
* `false` (the writer hashes the whole `sourceBuffer`, unchanged).
|
|
152
|
+
*/
|
|
153
|
+
omitSourceHash?: boolean;
|
|
123
154
|
}
|
|
124
155
|
/**
|
|
125
156
|
* Options for reading cache
|
|
@@ -138,7 +169,14 @@ export interface CacheReadOptions {
|
|
|
138
169
|
export interface CacheHeaderInfo {
|
|
139
170
|
version: number;
|
|
140
171
|
schema: SchemaVersion;
|
|
172
|
+
/**
|
|
173
|
+
* Full-file `xxhash64` of the source — VALID only when {@link hasSourceHash}
|
|
174
|
+
* is true. When false it is `0n` and carries no meaning (see
|
|
175
|
+
* {@link HeaderFlags.SourceHashUnset}).
|
|
176
|
+
*/
|
|
141
177
|
sourceHash: bigint;
|
|
178
|
+
/** Is {@link sourceHash} a real full-file hash (vs. an unset `0n`)? */
|
|
179
|
+
hasSourceHash: boolean;
|
|
142
180
|
entityCount: number;
|
|
143
181
|
totalVertices: number;
|
|
144
182
|
totalTriangles: number;
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,aAAa,EAAE,iBAAiB,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClI,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEnE,0BAA0B;AAC1B,eAAO,MAAM,KAAK,aAAa,CAAC;AAEhC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH;;;;;;GAMG;AACH;;;;;;;;;;GAUG;AACH,eAAO,MAAM,cAAc,KAAK,CAAC;AAEjC,yCAAyC;AACzC,oBAAY,WAAW;IACrB,OAAO,IAAI;IACX,QAAQ,IAAI;IACZ,UAAU,IAAI;IACd,UAAU,IAAI;IACd,aAAa,IAAI;IACjB,QAAQ,IAAI;IACZ,OAAO,IAAI;IACX,MAAM,IAAI;IACV,WAAW,IAAI;IACf,eAAe,KAAK;CACrB;AAED,yBAAyB;AACzB,oBAAY,aAAa;IACvB,MAAM,IAAI;IACV,IAAI,IAAI;IACR,MAAM,IAAI;CACX;AAED,mBAAmB;AACnB,oBAAY,WAAW;IACrB,IAAI,IAAI;IACR,UAAU,IAAS;IACnB,WAAW,IAAS;IACpB,UAAU,IAAS;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/dist/types.js
CHANGED
|
@@ -52,7 +52,18 @@ export const MAGIC = 0x4C434649; // "IFCL" in little-endian
|
|
|
52
52
|
* would render stale geometry and the compare/diff feature would flag those hosts as
|
|
53
53
|
* changed. The bump invalidates pre-#1432 caches so they re-mesh.
|
|
54
54
|
*/
|
|
55
|
-
|
|
55
|
+
/**
|
|
56
|
+
* v11→v12: source vertex weld. Every element mesh is now welded at the source
|
|
57
|
+
* (`build_mesh_data`): coincident vertices sharing a position + normal (+ UV)
|
|
58
|
+
* are collapsed and indices remapped, and the per-EXPORT welds (GLB `to_yup` /
|
|
59
|
+
* from-meshes) were removed as redundant. A v11 cache holds pre-weld
|
|
60
|
+
* (per-face-duplicated) geometry; restoring it and exporting would now emit an
|
|
61
|
+
* unwelded, 3-6x larger GLB (regressing the #1553 export-weld win for
|
|
62
|
+
* cached-model users) and yields non-watertight raw MeshData. The byte layout
|
|
63
|
+
* is unchanged, but the vertex/index buffers differ, so the bump invalidates
|
|
64
|
+
* pre-weld caches to re-mesh (welded).
|
|
65
|
+
*/
|
|
66
|
+
export const FORMAT_VERSION = 12;
|
|
56
67
|
/** Section types in the binary format */
|
|
57
68
|
export var SectionType;
|
|
58
69
|
(function (SectionType) {
|
|
@@ -81,6 +92,15 @@ export var HeaderFlags;
|
|
|
81
92
|
HeaderFlags[HeaderFlags["Compressed"] = 1] = "Compressed";
|
|
82
93
|
HeaderFlags[HeaderFlags["HasGeometry"] = 2] = "HasGeometry";
|
|
83
94
|
HeaderFlags[HeaderFlags["HasSpatial"] = 4] = "HasSpatial";
|
|
95
|
+
/**
|
|
96
|
+
* The `sourceHash` field is NOT a full-file `xxhash64` — it is unset (0) and
|
|
97
|
+
* must not be used to validate the source. Set by writers that validate the
|
|
98
|
+
* source by another means (see `omitSourceHash`), so `reader.validate()` /
|
|
99
|
+
* `read({ sourceBuffer })` can fail LOUD (or skip) instead of silently
|
|
100
|
+
* fail-closing on a real match. Backward-compatible: entries written before
|
|
101
|
+
* this flag existed have it unset, so their `sourceHash` stays a real hash.
|
|
102
|
+
*/
|
|
103
|
+
HeaderFlags[HeaderFlags["SourceHashUnset"] = 8] = "SourceHashUnset";
|
|
84
104
|
})(HeaderFlags || (HeaderFlags = {}));
|
|
85
105
|
/** Section flags */
|
|
86
106
|
export var SectionFlags;
|
package/dist/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAS/D,0BAA0B;AAC1B,MAAM,CAAC,MAAM,KAAK,GAAG,UAAU,CAAC,CAAC,0BAA0B;AAE3D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH;;;;;;GAMG;AACH;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,EAAE,CAAC;AAEjC,yCAAyC;AACzC,MAAM,CAAN,IAAY,WAWX;AAXD,WAAY,WAAW;IACrB,mDAAW,CAAA;IACX,qDAAY,CAAA;IACZ,yDAAc,CAAA;IACd,yDAAc,CAAA;IACd,+DAAiB,CAAA;IACjB,qDAAY,CAAA;IACZ,mDAAW,CAAA;IACX,iDAAU,CAAA;IACV,2DAAe,CAAA;IACf,oEAAoB,CAAA;AACtB,CAAC,EAXW,WAAW,KAAX,WAAW,QAWtB;AAED,yBAAyB;AACzB,MAAM,CAAN,IAAY,aAIX;AAJD,WAAY,aAAa;IACvB,qDAAU,CAAA;IACV,iDAAQ,CAAA;IACR,qDAAU,CAAA;AACZ,CAAC,EAJW,aAAa,KAAb,aAAa,QAIxB;AAED,mBAAmB;AACnB,MAAM,CAAN,IAAY,
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAS/D,0BAA0B;AAC1B,MAAM,CAAC,MAAM,KAAK,GAAG,UAAU,CAAC,CAAC,0BAA0B;AAE3D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH;;;;;;GAMG;AACH;;;;;;;;;;GAUG;AACH;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,EAAE,CAAC;AAEjC,yCAAyC;AACzC,MAAM,CAAN,IAAY,WAWX;AAXD,WAAY,WAAW;IACrB,mDAAW,CAAA;IACX,qDAAY,CAAA;IACZ,yDAAc,CAAA;IACd,yDAAc,CAAA;IACd,+DAAiB,CAAA;IACjB,qDAAY,CAAA;IACZ,mDAAW,CAAA;IACX,iDAAU,CAAA;IACV,2DAAe,CAAA;IACf,oEAAoB,CAAA;AACtB,CAAC,EAXW,WAAW,KAAX,WAAW,QAWtB;AAED,yBAAyB;AACzB,MAAM,CAAN,IAAY,aAIX;AAJD,WAAY,aAAa;IACvB,qDAAU,CAAA;IACV,iDAAQ,CAAA;IACR,qDAAU,CAAA;AACZ,CAAC,EAJW,aAAa,KAAb,aAAa,QAIxB;AAED,mBAAmB;AACnB,MAAM,CAAN,IAAY,WAcX;AAdD,WAAY,WAAW;IACrB,6CAAQ,CAAA;IACR,yDAAmB,CAAA;IACnB,2DAAoB,CAAA;IACpB,yDAAmB,CAAA;IACnB;;;;;;;OAOG;IACH,mEAAwB,CAAA;AAC1B,CAAC,EAdW,WAAW,KAAX,WAAW,QActB;AAED,oBAAoB;AACpB,MAAM,CAAN,IAAY,YAGX;AAHD,WAAY,YAAY;IACtB,+CAAQ,CAAA;IACR,2DAAmB,CAAA;AACrB,CAAC,EAHW,YAAY,KAAZ,YAAY,QAGvB;AA2ID,2BAA2B;AAC3B,MAAM,CAAC,MAAM,WAAW,GAAG,EAAE,CAAC;AAE9B,kCAAkC;AAClC,MAAM,CAAC,MAAM,kBAAkB,GAAG,EAAE,CAAC"}
|
package/dist/writer.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"writer.d.ts","sourceRoot":"","sources":["../src/writer.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACnE,OAAO,EASL,KAAK,iBAAiB,EACtB,KAAK,cAAc,EACpB,MAAM,YAAY,CAAC;AAapB,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,QAAQ,EAAE,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,cAAc,CAAC;IAC/B;;0FAEsF;IACtF,eAAe,CAAC,EAAE,WAAW,EAAE,CAAC;CACjC;AAED,qBAAa,iBAAiB;IAC5B;;;;;;;OAOG;IACG,KAAK,CACT,SAAS,EAAE,cAAc,EACzB,QAAQ,EAAE,YAAY,GAAG,SAAS,EAClC,YAAY,EAAE,WAAW,EACzB,OAAO,GAAE,iBAAsB,GAC9B,OAAO,CAAC,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"writer.d.ts","sourceRoot":"","sources":["../src/writer.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACnE,OAAO,EASL,KAAK,iBAAiB,EACtB,KAAK,cAAc,EACpB,MAAM,YAAY,CAAC;AAapB,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,QAAQ,EAAE,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,cAAc,CAAC;IAC/B;;0FAEsF;IACtF,eAAe,CAAC,EAAE,WAAW,EAAE,CAAC;CACjC;AAED,qBAAa,iBAAiB;IAC5B;;;;;;;OAOG;IACG,KAAK,CACT,SAAS,EAAE,cAAc,EACzB,QAAQ,EAAE,YAAY,GAAG,SAAS,EAClC,YAAY,EAAE,WAAW,EACzB,OAAO,GAAE,iBAAsB,GAC9B,OAAO,CAAC,WAAW,CAAC;IAuJvB,OAAO,CAAC,YAAY;CAGrB"}
|
package/dist/writer.js
CHANGED
|
@@ -23,9 +23,11 @@ export class BinaryCacheWriter {
|
|
|
23
23
|
* @returns ArrayBuffer containing the binary cache
|
|
24
24
|
*/
|
|
25
25
|
async write(dataStore, geometry, sourceBuffer, options = {}) {
|
|
26
|
-
const { includeGeometry = true, includeSpatialHierarchy = true, } = options;
|
|
27
|
-
//
|
|
28
|
-
|
|
26
|
+
const { includeGeometry = true, includeSpatialHierarchy = true, omitSourceHash = false, } = options;
|
|
27
|
+
// Source hash: `omitSourceHash` skips the full-file main-thread `xxhash64`
|
|
28
|
+
// for large sources (the caller validates the source another way and flags
|
|
29
|
+
// the header as unset); otherwise hash the whole buffer as before.
|
|
30
|
+
const sourceHash = omitSourceHash ? 0n : xxhash64(sourceBuffer);
|
|
29
31
|
// Build sections
|
|
30
32
|
const sectionBuffers = [];
|
|
31
33
|
// Strings section (always required)
|
|
@@ -116,6 +118,9 @@ export class BinaryCacheWriter {
|
|
|
116
118
|
if (includeSpatialHierarchy && dataStore.spatialHierarchy) {
|
|
117
119
|
headerFlags |= HeaderFlags.HasSpatial;
|
|
118
120
|
}
|
|
121
|
+
if (omitSourceHash) {
|
|
122
|
+
headerFlags |= HeaderFlags.SourceHashUnset;
|
|
123
|
+
}
|
|
119
124
|
const header = {
|
|
120
125
|
magic: 0x4C434649,
|
|
121
126
|
version: FORMAT_VERSION,
|
package/dist/writer.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"writer.js","sourceRoot":"","sources":["../src/writer.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAO/D,OAAO,EACL,cAAc,EACd,WAAW,EACX,kBAAkB,EAClB,WAAW,EACX,WAAW,EACX,YAAY,GAKb,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AACtE,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAa9D,MAAM,OAAO,iBAAiB;IAC5B;;;;;;;OAOG;IACH,KAAK,CAAC,KAAK,CACT,SAAyB,EACzB,QAAkC,EAClC,YAAyB,EACzB,UAA6B,EAAE;QAE/B,MAAM,EACJ,eAAe,GAAG,IAAI,EACtB,uBAAuB,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"writer.js","sourceRoot":"","sources":["../src/writer.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ifc-lite/cache",
|
|
3
|
-
"version": "2.0
|
|
3
|
+
"version": "2.1.0",
|
|
4
4
|
"description": "Binary cache format for IFC-Lite - fast model loading",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -13,8 +13,8 @@
|
|
|
13
13
|
}
|
|
14
14
|
},
|
|
15
15
|
"dependencies": {
|
|
16
|
-
"@ifc-lite/data": "^2.
|
|
17
|
-
"@ifc-lite/geometry": "^3.
|
|
16
|
+
"@ifc-lite/data": "^2.4.0",
|
|
17
|
+
"@ifc-lite/geometry": "^3.1.1"
|
|
18
18
|
},
|
|
19
19
|
"devDependencies": {
|
|
20
20
|
"typescript": "^6.0.3",
|