@ifc-lite/pointcloud 0.2.0 → 0.3.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.
- package/README.md +28 -0
- package/dist/formats/ascii-points.d.ts +61 -0
- package/dist/formats/ascii-points.d.ts.map +1 -0
- package/dist/formats/ascii-points.js +243 -0
- package/dist/formats/ascii-points.js.map +1 -0
- package/dist/formats/e57-decode.d.ts +28 -0
- package/dist/formats/e57-decode.d.ts.map +1 -0
- package/dist/formats/e57-decode.js +425 -0
- package/dist/formats/e57-decode.js.map +1 -0
- package/dist/formats/e57-page.d.ts +42 -0
- package/dist/formats/e57-page.d.ts.map +1 -0
- package/dist/formats/e57-page.js +107 -0
- package/dist/formats/e57-page.js.map +1 -0
- package/dist/formats/e57-xml.d.ts +55 -0
- package/dist/formats/e57-xml.d.ts.map +1 -0
- package/dist/formats/e57-xml.js +127 -0
- package/dist/formats/e57-xml.js.map +1 -0
- package/dist/formats/e57.d.ts +29 -117
- package/dist/formats/e57.d.ts.map +1 -1
- package/dist/formats/e57.js +51 -444
- package/dist/formats/e57.js.map +1 -1
- package/dist/formats/ifcx-points.js +13 -1
- package/dist/formats/ifcx-points.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/streaming/ascii-points-source.d.ts +31 -0
- package/dist/streaming/ascii-points-source.d.ts.map +1 -0
- package/dist/streaming/ascii-points-source.js +83 -0
- package/dist/streaming/ascii-points-source.js.map +1 -0
- package/dist/streaming/decode-worker.js +41 -18
- package/dist/streaming/decode-worker.js.map +1 -1
- package/dist/streaming/e57-source.js +6 -1
- package/dist/streaming/e57-source.js.map +1 -1
- package/dist/streaming/inline-worker.d.ts +21 -0
- package/dist/streaming/inline-worker.d.ts.map +1 -0
- package/dist/streaming/inline-worker.js +5 -0
- package/dist/streaming/inline-worker.js.map +1 -0
- package/dist/streaming/laz-source.d.ts.map +1 -1
- package/dist/streaming/laz-source.js +33 -1
- package/dist/streaming/laz-source.js.map +1 -1
- package/dist/streaming/protocol.d.ts +1 -1
- package/dist/streaming/protocol.d.ts.map +1 -1
- package/dist/streaming/worker-client.d.ts +16 -3
- package/dist/streaming/worker-client.d.ts.map +1 -1
- package/dist/streaming/worker-client.js +77 -23
- package/dist/streaming/worker-client.js.map +1 -1
- package/package.json +3 -2
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"inline-worker.js","sourceRoot":"","sources":["../../src/streaming/inline-worker.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAE/D;;;;;;;;;;;;;;;;;;GAkBG;AAEH,MAAM,CAAC,MAAM,kBAAkB,GAAkB,IAAI,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"laz-source.d.ts","sourceRoot":"","sources":["../../src/streaming/laz-source.ts"],"names":[],"mappings":"AAIA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAOrD,OAAO,KAAK,EACV,cAAc,EACd,eAAe,EACf,oBAAoB,EACrB,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"laz-source.d.ts","sourceRoot":"","sources":["../../src/streaming/laz-source.ts"],"names":[],"mappings":"AAIA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAOrD,OAAO,KAAK,EACV,cAAc,EACd,eAAe,EACf,oBAAoB,EACrB,MAAM,YAAY,CAAC;AAyFpB,qBAAa,kBAAmB,YAAW,oBAAoB;IAC7D,OAAO,CAAC,IAAI,CAAO;IACnB,OAAO,CAAC,UAAU,CAAiB;IACnC,OAAO,CAAC,KAAK,CAAC,CAAS;IAGvB,OAAO,CAAC,GAAG,CAA8B;IACzC,OAAO,CAAC,MAAM,CAA+B;IAC7C,OAAO,CAAC,MAAM,CAA0B;IACxC,OAAO,CAAC,SAAS,CAA2B;IAC5C,OAAO,CAAC,OAAO,CAAK;IACpB,OAAO,CAAC,QAAQ,CAAK;IACrB,OAAO,CAAC,WAAW,CAA2B;IAC9C,OAAO,CAAC,MAAM,CAAK;IACnB,OAAO,CAAC,QAAQ,CAAK;gBAET,IAAI,EAAE,IAAI,EAAE,OAAO,GAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,cAAc,CAAA;KAAO;IAM/E,IAAI,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,eAAe,CAAC;IAwEpD,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC;IAoCtF,KAAK,IAAI,IAAI;IAsBb,OAAO,CAAC,MAAM;CAWf"}
|
|
@@ -6,6 +6,17 @@ let modulePromise = null;
|
|
|
6
6
|
async function loadLazPerf() {
|
|
7
7
|
if (!modulePromise) {
|
|
8
8
|
modulePromise = (async () => {
|
|
9
|
+
// The shipped `laz-perf.js` shim resolves the wasm via emscripten's
|
|
10
|
+
// `locateFile` and tries `fetch("laz-perf.wasm")` relative to the
|
|
11
|
+
// worker's script directory — which under Vite ends up at
|
|
12
|
+
// `/assets/<chunk>.wasm` (404) or `/laz-perf.wasm` (404 → SPA index
|
|
13
|
+
// HTML served as text/plain, which is what triggered the
|
|
14
|
+
// "MIME type 'text/plain'" failure on autzen-classified.laz).
|
|
15
|
+
//
|
|
16
|
+
// Pre-fetch the wasm via Vite's `?url` asset pipeline (hashed,
|
|
17
|
+
// served with `application/wasm`) and hand the bytes to emscripten
|
|
18
|
+
// as `Module.wasmBinary` so its own fetch is skipped entirely.
|
|
19
|
+
const wasmBinary = await fetchLazPerfWasm();
|
|
9
20
|
// Dynamic import keeps `laz-perf` out of bundles that don't touch
|
|
10
21
|
// LAZ. The package is shipped as CommonJS (`lib/{node,web}/index.js`),
|
|
11
22
|
// and Vite/webpack wrap CJS imports under `.default` — but the way
|
|
@@ -28,11 +39,32 @@ async function loadLazPerf() {
|
|
|
28
39
|
const keys = Object.keys(ns).join(', ');
|
|
29
40
|
throw new Error(`laz-perf: could not find createLazPerf factory (saw keys: ${keys || '<empty>'})`);
|
|
30
41
|
}
|
|
31
|
-
return factory();
|
|
42
|
+
return factory({ wasmBinary });
|
|
32
43
|
})();
|
|
33
44
|
}
|
|
34
45
|
return modulePromise;
|
|
35
46
|
}
|
|
47
|
+
async function fetchLazPerfWasm() {
|
|
48
|
+
// `?url` triggers Vite's asset pipeline so the .wasm ends up in the
|
|
49
|
+
// build output with the right MIME type. Wrapped in a try/catch so
|
|
50
|
+
// non-Vite hosts (e.g. node-side tests) can fall back to the package's
|
|
51
|
+
// own `locateFile` resolution.
|
|
52
|
+
let wasmUrl;
|
|
53
|
+
try {
|
|
54
|
+
const mod = (await import('laz-perf/lib/web/laz-perf.wasm?url'));
|
|
55
|
+
wasmUrl = mod.default;
|
|
56
|
+
}
|
|
57
|
+
catch (err) {
|
|
58
|
+
throw new Error(`laz-perf: could not resolve wasm asset URL (${err instanceof Error ? err.message : String(err)}). `
|
|
59
|
+
+ 'Ensure the bundler treats `laz-perf/lib/web/laz-perf.wasm?url` as a static asset.');
|
|
60
|
+
}
|
|
61
|
+
const response = await fetch(wasmUrl);
|
|
62
|
+
if (!response.ok) {
|
|
63
|
+
throw new Error(`laz-perf: wasm fetch failed (${response.status} ${response.statusText}) for ${wasmUrl}`);
|
|
64
|
+
}
|
|
65
|
+
const buffer = await response.arrayBuffer();
|
|
66
|
+
return new Uint8Array(buffer);
|
|
67
|
+
}
|
|
36
68
|
export class LazStreamingSource {
|
|
37
69
|
blob;
|
|
38
70
|
downsample;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"laz-source.js","sourceRoot":"","sources":["../../src/streaming/laz-source.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAc/D,OAAO,EACL,eAAe,EACf,cAAc,EACd,mBAAmB,GAEpB,MAAM,mBAAmB,CAAC;AAuB3B,IAAI,aAAa,GAAkC,IAAI,CAAC;AAExD,KAAK,UAAU,WAAW;IACxB,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,aAAa,GAAG,CAAC,KAAK,IAAI,EAAE;YAC1B,kEAAkE;YAClE,uEAAuE;YACvE,mEAAmE;YACnE,0DAA0D;YAC1D,6DAA6D;YAC7D,mEAAmE;YACnE,sEAAsE;YACtE,wEAAwE;YACxE,MAAM,EAAE,GAAG,CAAC,MAAM,MAAM,CAAC,UAAU,CAAC,CAAuC,CAAC;YAE5E,MAAM,IAAI,GAAG,EAAE,CAAC,OAAgE,CAAC;YACjF,MAAM,UAAU,GAAmB;gBACjC,EAAE,CAAC,aAAa;gBAChB,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI,CAAC,CAAC,CAAE,IAAgC,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS;gBACvG,IAAI;gBACJ,sEAAsE;gBACtE,EAAE;aACH,CAAC;YACF,MAAM,OAAO,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,UAAU,CAAwB,CAAC;YACvF,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,EAA6B,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACnE,MAAM,IAAI,KAAK,CACb,6DAA6D,IAAI,IAAI,SAAS,GAAG,CAClF,CAAC;YACJ,CAAC;YACD,OAAO,OAAO,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"laz-source.js","sourceRoot":"","sources":["../../src/streaming/laz-source.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
*/
|
|
7
7
|
import type { DecodedPointChunk, PointCloudBBox } from '../types.js';
|
|
8
8
|
import type { PointSourceInfo } from './types.js';
|
|
9
|
-
export type WorkerSourceFormat = 'las' | 'laz' | 'ply' | 'pcd' | 'e57';
|
|
9
|
+
export type WorkerSourceFormat = 'las' | 'laz' | 'ply' | 'pcd' | 'e57' | 'pts' | 'xyz';
|
|
10
10
|
/** main → worker */
|
|
11
11
|
export type WorkerRequest = {
|
|
12
12
|
kind: 'open';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../../src/streaming/protocol.ts"],"names":[],"mappings":"AAIA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AACrE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAElD,MAAM,MAAM,kBAAkB,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../../src/streaming/protocol.ts"],"names":[],"mappings":"AAIA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AACrE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAElD,MAAM,MAAM,kBAAkB,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC;AAEvF,oBAAoB;AACpB,MAAM,MAAM,aAAa,GACrB;IACE,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,kBAAkB,CAAC;IAC3B,IAAI,EAAE,IAAI,CAAC;IACX,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB,GACD;IACE,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB,GACD;IACE,IAAI,EAAE,OAAO,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;CAClB,GACD;IACE,IAAI,EAAE,OAAO,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAEN,oBAAoB;AACpB,MAAM,MAAM,cAAc,GACtB;IACE,IAAI,EAAE,QAAQ,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,eAAe,CAAC;CACvB,GACD;IACE,IAAI,EAAE,OAAO,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,eAAe,GAAG,IAAI,CAAC;CAC/B,GACD;IACE,IAAI,EAAE,OAAO,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEN,mFAAmF;AACnF,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,WAAW,CAAC;IACvB,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,eAAe,CAAC,EAAE,WAAW,CAAC;IAC9B,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,cAAc,CAAC;CACtB;AAED,wEAAwE;AACxE,wBAAgB,WAAW,CAAC,KAAK,EAAE,iBAAiB,GAAG;IACrD,OAAO,EAAE,eAAe,CAAC;IACzB,QAAQ,EAAE,WAAW,EAAE,CAAC;CACzB,CA4BA;AAED,gCAAgC;AAChC,wBAAgB,aAAa,CAAC,OAAO,EAAE,eAAe,GAAG,iBAAiB,CASzE"}
|
|
@@ -1,9 +1,22 @@
|
|
|
1
1
|
import type { StreamingPointSource } from './types.js';
|
|
2
|
-
export type DecodeWorkerFormat = 'las' | 'laz' | 'ply' | 'pcd' | 'e57';
|
|
2
|
+
export type DecodeWorkerFormat = 'las' | 'laz' | 'ply' | 'pcd' | 'e57' | 'pts' | 'xyz';
|
|
3
3
|
export interface DecodeWorkerOptions {
|
|
4
|
-
/**
|
|
5
|
-
|
|
4
|
+
/**
|
|
5
|
+
* Override the worker constructor — useful for tests or custom bundlers.
|
|
6
|
+
* May return a Worker synchronously or a Promise resolving to one; the
|
|
7
|
+
* client handles both. Sync callbacks remain the common case and stay
|
|
8
|
+
* type-compatible with the previous signature.
|
|
9
|
+
*/
|
|
10
|
+
spawn?: () => Worker | Promise<Worker>;
|
|
6
11
|
}
|
|
12
|
+
/**
|
|
13
|
+
* Reset hook for the module-level cache. Exported only for tests so the
|
|
14
|
+
* "construction does not trigger spawn" and "rejected cache is cleared"
|
|
15
|
+
* regression tests can start from a known clean slate.
|
|
16
|
+
*
|
|
17
|
+
* @internal
|
|
18
|
+
*/
|
|
19
|
+
export declare function __resetSharedSessionForTests(): void;
|
|
7
20
|
export interface CreateDecodeWorkerSourceOptions extends DecodeWorkerOptions {
|
|
8
21
|
format: DecodeWorkerFormat;
|
|
9
22
|
blob: Blob;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"worker-client.d.ts","sourceRoot":"","sources":["../../src/streaming/worker-client.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"worker-client.d.ts","sourceRoot":"","sources":["../../src/streaming/worker-client.ts"],"names":[],"mappings":"AAoCA,OAAO,KAAK,EAEV,oBAAoB,EACrB,MAAM,YAAY,CAAC;AAEpB,MAAM,MAAM,kBAAkB,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC;AAEvF,MAAM,WAAW,mBAAmB;IAClC;;;;;OAKG;IACH,KAAK,CAAC,EAAE,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CACxC;AAmFD;;;;;;GAMG;AACH,wBAAgB,4BAA4B,IAAI,IAAI,CAEnD;AA4BD,MAAM,WAAW,+BAAgC,SAAQ,mBAAmB;IAC1E,MAAM,EAAE,kBAAkB,CAAC;IAC3B,IAAI,EAAE,IAAI,CAAC;IACX,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,mEAAmE;IACnE,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;;GAIG;AACH,wBAAgB,wBAAwB,CACtC,IAAI,EAAE,+BAA+B,GACpC,oBAAoB,CA2FtB"}
|
|
@@ -2,26 +2,28 @@
|
|
|
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
4
|
import { chunkFromWire, } from './protocol.js';
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
5
|
+
async function defaultSpawn() {
|
|
6
|
+
// Prefer the published inline bundle. The dynamic import resolves to a
|
|
7
|
+
// non-null `INLINE_WORKER_CODE` only in the published dist; in the
|
|
8
|
+
// workspace src tree (and in unit tests) it resolves to `null` and we
|
|
9
|
+
// fall through to the `new URL(...)` spawn path.
|
|
10
|
+
const { INLINE_WORKER_CODE } = await import('./inline-worker.js');
|
|
11
|
+
if (INLINE_WORKER_CODE) {
|
|
12
|
+
const blob = new Blob([INLINE_WORKER_CODE], { type: 'application/javascript' });
|
|
13
|
+
const url = URL.createObjectURL(blob);
|
|
14
|
+
const worker = new Worker(url, { name: 'ifclite-pointcloud-decode' });
|
|
15
|
+
// The Worker ctor reads the URL synchronously, so revoking right after
|
|
16
|
+
// is safe and avoids leaking ~tens of MB of Blob URLs per spawn over a
|
|
17
|
+
// long-running session.
|
|
18
|
+
queueMicrotask(() => URL.revokeObjectURL(url));
|
|
19
|
+
return worker;
|
|
20
|
+
}
|
|
21
|
+
// Dev fallback — Vite's `worker-import-meta-url` plugin handles this.
|
|
14
22
|
return new Worker(new URL('./decode-worker.js', import.meta.url), {
|
|
15
23
|
type: 'module',
|
|
16
24
|
name: 'ifclite-pointcloud-decode',
|
|
17
25
|
});
|
|
18
26
|
}
|
|
19
|
-
function getSharedWorker(spawn) {
|
|
20
|
-
if (!sharedWorker) {
|
|
21
|
-
sharedWorker = spawn();
|
|
22
|
-
}
|
|
23
|
-
return sharedWorker;
|
|
24
|
-
}
|
|
25
27
|
class WorkerSession {
|
|
26
28
|
worker;
|
|
27
29
|
requests = new Map();
|
|
@@ -63,12 +65,43 @@ class WorkerSession {
|
|
|
63
65
|
this.worker.postMessage(req);
|
|
64
66
|
}
|
|
65
67
|
}
|
|
66
|
-
let
|
|
68
|
+
let sharedSessionPromise = null;
|
|
69
|
+
/**
|
|
70
|
+
* Reset hook for the module-level cache. Exported only for tests so the
|
|
71
|
+
* "construction does not trigger spawn" and "rejected cache is cleared"
|
|
72
|
+
* regression tests can start from a known clean slate.
|
|
73
|
+
*
|
|
74
|
+
* @internal
|
|
75
|
+
*/
|
|
76
|
+
export function __resetSharedSessionForTests() {
|
|
77
|
+
sharedSessionPromise = null;
|
|
78
|
+
}
|
|
67
79
|
function getSharedSession(spawn) {
|
|
68
|
-
if (
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
80
|
+
if (sharedSessionPromise)
|
|
81
|
+
return sharedSessionPromise;
|
|
82
|
+
// Wrap in an async IIFE so sync throws from a custom `spawn` callback
|
|
83
|
+
// route through the same catch path as async rejections — without this,
|
|
84
|
+
// a synchronous throw would propagate before we attached the
|
|
85
|
+
// cache-reset handler below.
|
|
86
|
+
const p = (async () => {
|
|
87
|
+
const worker = await spawn();
|
|
88
|
+
return new WorkerSession(worker);
|
|
89
|
+
})();
|
|
90
|
+
// Clear the cache on rejection so consumers can recover. Without this,
|
|
91
|
+
// a single failure (CSP blocks `blob:` workers, no `Worker` global at
|
|
92
|
+
// SSR, the inline-worker dynamic import fails) would poison every
|
|
93
|
+
// subsequent `createDecodeWorkerSource()` call — even ones using the
|
|
94
|
+
// documented custom-`spawn` escape hatch.
|
|
95
|
+
//
|
|
96
|
+
// Critical: `.catch` is attached as a side handler (we don't return its
|
|
97
|
+
// result), so the rejection still propagates to whichever `await` is
|
|
98
|
+
// waiting on `p`. We only erase the module-level reference.
|
|
99
|
+
p.catch(() => {
|
|
100
|
+
if (sharedSessionPromise === p)
|
|
101
|
+
sharedSessionPromise = null;
|
|
102
|
+
});
|
|
103
|
+
sharedSessionPromise = p;
|
|
104
|
+
return p;
|
|
72
105
|
}
|
|
73
106
|
/**
|
|
74
107
|
* Build a `StreamingPointSource` that runs decode work in the shared
|
|
@@ -76,7 +109,22 @@ function getSharedSession(spawn) {
|
|
|
76
109
|
* like the in-process `LasStreamingSource`.
|
|
77
110
|
*/
|
|
78
111
|
export function createDecodeWorkerSource(opts) {
|
|
79
|
-
|
|
112
|
+
// Truly lazy — no spawn, no inline-worker import, no Worker global
|
|
113
|
+
// touch at construction time. Hosts that build a source speculatively
|
|
114
|
+
// but never open it don't pay for the worker bundle; SSR/test paths
|
|
115
|
+
// that import this file but never call `open()` don't crash on a
|
|
116
|
+
// missing `Worker` constructor.
|
|
117
|
+
//
|
|
118
|
+
// The per-source `sessionPromise` is a captured reference so `close()`
|
|
119
|
+
// doesn't have to reach back into the module-level cache (which the
|
|
120
|
+
// failure-reset above may have cleared by the time close() runs).
|
|
121
|
+
let sessionPromise = null;
|
|
122
|
+
const ensureSession = () => {
|
|
123
|
+
if (!sessionPromise) {
|
|
124
|
+
sessionPromise = getSharedSession(opts.spawn ?? defaultSpawn);
|
|
125
|
+
}
|
|
126
|
+
return sessionPromise;
|
|
127
|
+
};
|
|
80
128
|
let sourceId = null;
|
|
81
129
|
let info = null;
|
|
82
130
|
return {
|
|
@@ -84,6 +132,7 @@ export function createDecodeWorkerSource(opts) {
|
|
|
84
132
|
if (info)
|
|
85
133
|
return info;
|
|
86
134
|
abortIfAborted(signal);
|
|
135
|
+
const session = await ensureSession();
|
|
87
136
|
const resp = await session.send((requestId) => ({
|
|
88
137
|
kind: 'open',
|
|
89
138
|
requestId,
|
|
@@ -101,6 +150,7 @@ export function createDecodeWorkerSource(opts) {
|
|
|
101
150
|
throw new Error('decode-worker source not opened');
|
|
102
151
|
}
|
|
103
152
|
abortIfAborted(signal);
|
|
153
|
+
const session = await ensureSession();
|
|
104
154
|
const id = sourceId;
|
|
105
155
|
// Propagate aborts that fire WHILE the worker is decoding —
|
|
106
156
|
// without this, cancel() returns immediately to the caller but
|
|
@@ -132,8 +182,12 @@ export function createDecodeWorkerSource(opts) {
|
|
|
132
182
|
}
|
|
133
183
|
},
|
|
134
184
|
close() {
|
|
135
|
-
if (sourceId !== null) {
|
|
136
|
-
|
|
185
|
+
if (sourceId !== null && sessionPromise) {
|
|
186
|
+
const id = sourceId;
|
|
187
|
+
// Fire-and-forget — close() stays sync for callers. We only enter
|
|
188
|
+
// this branch if `open()` previously assigned `sourceId`, which
|
|
189
|
+
// means `sessionPromise` is already resolved (open awaited it).
|
|
190
|
+
void sessionPromise.then((session) => session.notify({ kind: 'close', sourceId: id }));
|
|
137
191
|
sourceId = null;
|
|
138
192
|
}
|
|
139
193
|
// Clear cached open()-result too so a subsequent open() actually
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"worker-client.js","sourceRoot":"","sources":["../../src/streaming/worker-client.ts"],"names":[],"mappings":"AAAA;;+DAE+D;
|
|
1
|
+
{"version":3,"file":"worker-client.js","sourceRoot":"","sources":["../../src/streaming/worker-client.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ifc-lite/pointcloud",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.1",
|
|
4
4
|
"description": "Point cloud decoders and types for IFC-Lite",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -15,6 +15,7 @@
|
|
|
15
15
|
"laz-perf": "^0.0.6"
|
|
16
16
|
},
|
|
17
17
|
"devDependencies": {
|
|
18
|
+
"esbuild": "^0.21.0",
|
|
18
19
|
"typescript": "^5.3.0",
|
|
19
20
|
"vitest": "^1.6.0"
|
|
20
21
|
},
|
|
@@ -44,7 +45,7 @@
|
|
|
44
45
|
"README.md"
|
|
45
46
|
],
|
|
46
47
|
"scripts": {
|
|
47
|
-
"build": "pnpm exec tsc && node -e \"const f='dist/streaming/worker-client.js';require('fs').writeFileSync(f,require('fs').readFileSync(f,'utf8').replace(/decode-worker\\.ts/g,'decode-worker.js'))\"",
|
|
48
|
+
"build": "pnpm exec tsc && node -e \"const f='dist/streaming/worker-client.js';require('fs').writeFileSync(f,require('fs').readFileSync(f,'utf8').replace(/decode-worker\\.ts/g,'decode-worker.js'))\" && node scripts/build-worker-bundle.mjs",
|
|
48
49
|
"dev": "pnpm exec tsc --watch",
|
|
49
50
|
"test": "vitest run"
|
|
50
51
|
}
|