@bldrs-ai/conway 1.418.1264 → 1.421.1270
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/compiled/examples/browser-bundled.cjs +34 -1
- package/compiled/examples/cli-bundled.cjs +34 -1
- package/compiled/examples/cli-step-bundled.cjs +34 -1
- package/compiled/examples/validator-bundled.cjs +34 -1
- package/compiled/src/compat/web-ifc/ifc_api.d.ts +12 -0
- package/compiled/src/compat/web-ifc/ifc_api.d.ts.map +1 -1
- package/compiled/src/compat/web-ifc/ifc_api.js +42 -1
- package/compiled/src/compat/web-ifc/ifc_api_proxy_ifc.d.ts +7 -6
- package/compiled/src/compat/web-ifc/ifc_api_proxy_ifc.d.ts.map +1 -1
- package/compiled/src/compat/web-ifc/ifc_api_proxy_ifc.js +11 -8
- package/compiled/src/compat/web-ifc/web_wasm_directory.test.d.ts +2 -0
- package/compiled/src/compat/web-ifc/web_wasm_directory.test.d.ts.map +1 -0
- package/compiled/src/compat/web-ifc/web_wasm_directory.test.js +22 -0
- package/compiled/src/demand/index.d.ts +23 -0
- package/compiled/src/demand/index.d.ts.map +1 -0
- package/compiled/src/demand/index.js +22 -0
- package/compiled/src/index.d.ts +2 -1
- package/compiled/src/index.d.ts.map +1 -1
- package/compiled/src/index.js +7 -1
- package/compiled/src/mem/index.d.ts +17 -0
- package/compiled/src/mem/index.d.ts.map +1 -0
- package/compiled/src/mem/index.js +16 -0
- package/compiled/src/namespace_surface.test.d.ts +2 -0
- package/compiled/src/namespace_surface.test.d.ts.map +1 -0
- package/compiled/src/namespace_surface.test.js +35 -0
- package/compiled/src/step/parsing/step_parser.d.ts +19 -0
- package/compiled/src/step/parsing/step_parser.d.ts.map +1 -1
- package/compiled/src/step/parsing/step_parser.js +33 -0
- package/compiled/src/step/parsing/streaming_index_builder.d.ts +36 -0
- package/compiled/src/step/parsing/streaming_index_builder.d.ts.map +1 -1
- package/compiled/src/step/parsing/streaming_index_builder.js +109 -0
- package/compiled/src/step/parsing/streaming_index_builder_async.test.d.ts +2 -0
- package/compiled/src/step/parsing/streaming_index_builder_async.test.d.ts.map +1 -0
- package/compiled/src/step/parsing/streaming_index_builder_async.test.js +97 -0
- package/compiled/src/stream/index.d.ts +26 -0
- package/compiled/src/stream/index.d.ts.map +1 -0
- package/compiled/src/stream/index.js +24 -0
- package/compiled/src/version/version.js +1 -1
- package/compiled/tsconfig.tsbuildinfo +1 -1
- package/package.json +16 -1
|
@@ -30,7 +30,7 @@ var import_node_process = require("node:process");
|
|
|
30
30
|
var readline = __toESM(require("node:readline"), 1);
|
|
31
31
|
|
|
32
32
|
// compiled/src/version/version.js
|
|
33
|
-
var versionString = "Conway v1.
|
|
33
|
+
var versionString = "Conway v1.421.1270";
|
|
34
34
|
|
|
35
35
|
// compiled/dependencies/conway-geom/interface/conway_geometry.js
|
|
36
36
|
var wasmType = "";
|
|
@@ -2597,6 +2597,39 @@ var StepParser = class extends StepHeaderParser {
|
|
|
2597
2597
|
onProgress?.(next.value);
|
|
2598
2598
|
}
|
|
2599
2599
|
}
|
|
2600
|
+
/**
|
|
2601
|
+
* Cooperative variant of parseDataBlockStreamed: identical parse and
|
|
2602
|
+
* window-slide behaviour (same generator body, same boundary callback),
|
|
2603
|
+
* but periodically awaits a macrotask so the event loop can run —
|
|
2604
|
+
* browsers repaint progress UI during a large streamed parse instead of
|
|
2605
|
+
* flagging the tab as stalled. Issue #301 §2 for the streamed path.
|
|
2606
|
+
*
|
|
2607
|
+
* @param input The input parsing buffer, positioned at the data section.
|
|
2608
|
+
* @param onRecordBoundary Called at each top-level record boundary with the
|
|
2609
|
+
* buffer; the callback may rebase the buffer's window in place.
|
|
2610
|
+
* @param onRecordIndexed Called as each top-level record is indexed — see
|
|
2611
|
+
* parseDataBlockStreamed.
|
|
2612
|
+
* @param onProgress Optional byte-cursor progress callback.
|
|
2613
|
+
* @param sink Optional index sink (columnar builds).
|
|
2614
|
+
* @param yieldIntervalMs Minimum ms between event-loop yields.
|
|
2615
|
+
* @return {Promise<BlockParseResult>} The parsing result, including the
|
|
2616
|
+
* index and result enum.
|
|
2617
|
+
*/
|
|
2618
|
+
async parseDataBlockStreamedAsync(input2, onRecordBoundary, onRecordIndexed, onProgress, sink, yieldIntervalMs = DEFAULT_PARSE_YIELD_INTERVAL_MS) {
|
|
2619
|
+
const parser211 = this.parseDataBlockIncremental(input2, onRecordBoundary, onRecordIndexed, sink);
|
|
2620
|
+
let lastYield = Date.now();
|
|
2621
|
+
while (true) {
|
|
2622
|
+
const next = parser211.next();
|
|
2623
|
+
if (next.done === true) {
|
|
2624
|
+
return next.value;
|
|
2625
|
+
}
|
|
2626
|
+
onProgress?.(next.value);
|
|
2627
|
+
if (Date.now() - lastYield >= yieldIntervalMs) {
|
|
2628
|
+
await yieldToEventLoop();
|
|
2629
|
+
lastYield = Date.now();
|
|
2630
|
+
}
|
|
2631
|
+
}
|
|
2632
|
+
}
|
|
2600
2633
|
/**
|
|
2601
2634
|
* Cooperative variant of parseDataBlock: identical parse (same generator
|
|
2602
2635
|
* body), but periodically awaits a macrotask so the event loop can run —
|
|
@@ -14965,7 +14965,7 @@ ${t5.join("\n")}` : "";
|
|
|
14965
14965
|
var import_process = require("process");
|
|
14966
14966
|
|
|
14967
14967
|
// compiled/src/version/version.js
|
|
14968
|
-
var versionString = "Conway v1.
|
|
14968
|
+
var versionString = "Conway v1.421.1270";
|
|
14969
14969
|
|
|
14970
14970
|
// compiled/dependencies/conway-geom/interface/conway_geometry.js
|
|
14971
14971
|
function pThreadsAllowed() {
|
|
@@ -18411,6 +18411,39 @@ var StepParser = class extends StepHeaderParser {
|
|
|
18411
18411
|
onProgress?.(next.value);
|
|
18412
18412
|
}
|
|
18413
18413
|
}
|
|
18414
|
+
/**
|
|
18415
|
+
* Cooperative variant of parseDataBlockStreamed: identical parse and
|
|
18416
|
+
* window-slide behaviour (same generator body, same boundary callback),
|
|
18417
|
+
* but periodically awaits a macrotask so the event loop can run —
|
|
18418
|
+
* browsers repaint progress UI during a large streamed parse instead of
|
|
18419
|
+
* flagging the tab as stalled. Issue #301 §2 for the streamed path.
|
|
18420
|
+
*
|
|
18421
|
+
* @param input The input parsing buffer, positioned at the data section.
|
|
18422
|
+
* @param onRecordBoundary Called at each top-level record boundary with the
|
|
18423
|
+
* buffer; the callback may rebase the buffer's window in place.
|
|
18424
|
+
* @param onRecordIndexed Called as each top-level record is indexed — see
|
|
18425
|
+
* parseDataBlockStreamed.
|
|
18426
|
+
* @param onProgress Optional byte-cursor progress callback.
|
|
18427
|
+
* @param sink Optional index sink (columnar builds).
|
|
18428
|
+
* @param yieldIntervalMs Minimum ms between event-loop yields.
|
|
18429
|
+
* @return {Promise<BlockParseResult>} The parsing result, including the
|
|
18430
|
+
* index and result enum.
|
|
18431
|
+
*/
|
|
18432
|
+
async parseDataBlockStreamedAsync(input, onRecordBoundary, onRecordIndexed, onProgress, sink, yieldIntervalMs = DEFAULT_PARSE_YIELD_INTERVAL_MS) {
|
|
18433
|
+
const parser210 = this.parseDataBlockIncremental(input, onRecordBoundary, onRecordIndexed, sink);
|
|
18434
|
+
let lastYield = Date.now();
|
|
18435
|
+
while (true) {
|
|
18436
|
+
const next = parser210.next();
|
|
18437
|
+
if (next.done === true) {
|
|
18438
|
+
return next.value;
|
|
18439
|
+
}
|
|
18440
|
+
onProgress?.(next.value);
|
|
18441
|
+
if (Date.now() - lastYield >= yieldIntervalMs) {
|
|
18442
|
+
await yieldToEventLoop();
|
|
18443
|
+
lastYield = Date.now();
|
|
18444
|
+
}
|
|
18445
|
+
}
|
|
18446
|
+
}
|
|
18414
18447
|
/**
|
|
18415
18448
|
* Cooperative variant of parseDataBlock: identical parse (same generator
|
|
18416
18449
|
* body), but periodically awaits a macrotask so the event loop can run —
|
|
@@ -15943,7 +15943,7 @@ var ParsingBuffer = class {
|
|
|
15943
15943
|
};
|
|
15944
15944
|
|
|
15945
15945
|
// compiled/src/version/version.js
|
|
15946
|
-
var versionString = "Conway v1.
|
|
15946
|
+
var versionString = "Conway v1.421.1270";
|
|
15947
15947
|
|
|
15948
15948
|
// compiled/dependencies/conway-geom/interface/conway_geometry.js
|
|
15949
15949
|
function pThreadsAllowed() {
|
|
@@ -18319,6 +18319,39 @@ var StepParser = class extends StepHeaderParser {
|
|
|
18319
18319
|
onProgress?.(next.value);
|
|
18320
18320
|
}
|
|
18321
18321
|
}
|
|
18322
|
+
/**
|
|
18323
|
+
* Cooperative variant of parseDataBlockStreamed: identical parse and
|
|
18324
|
+
* window-slide behaviour (same generator body, same boundary callback),
|
|
18325
|
+
* but periodically awaits a macrotask so the event loop can run —
|
|
18326
|
+
* browsers repaint progress UI during a large streamed parse instead of
|
|
18327
|
+
* flagging the tab as stalled. Issue #301 §2 for the streamed path.
|
|
18328
|
+
*
|
|
18329
|
+
* @param input The input parsing buffer, positioned at the data section.
|
|
18330
|
+
* @param onRecordBoundary Called at each top-level record boundary with the
|
|
18331
|
+
* buffer; the callback may rebase the buffer's window in place.
|
|
18332
|
+
* @param onRecordIndexed Called as each top-level record is indexed — see
|
|
18333
|
+
* parseDataBlockStreamed.
|
|
18334
|
+
* @param onProgress Optional byte-cursor progress callback.
|
|
18335
|
+
* @param sink Optional index sink (columnar builds).
|
|
18336
|
+
* @param yieldIntervalMs Minimum ms between event-loop yields.
|
|
18337
|
+
* @return {Promise<BlockParseResult>} The parsing result, including the
|
|
18338
|
+
* index and result enum.
|
|
18339
|
+
*/
|
|
18340
|
+
async parseDataBlockStreamedAsync(input, onRecordBoundary, onRecordIndexed, onProgress, sink, yieldIntervalMs = DEFAULT_PARSE_YIELD_INTERVAL_MS) {
|
|
18341
|
+
const parser28 = this.parseDataBlockIncremental(input, onRecordBoundary, onRecordIndexed, sink);
|
|
18342
|
+
let lastYield = Date.now();
|
|
18343
|
+
while (true) {
|
|
18344
|
+
const next = parser28.next();
|
|
18345
|
+
if (next.done === true) {
|
|
18346
|
+
return next.value;
|
|
18347
|
+
}
|
|
18348
|
+
onProgress?.(next.value);
|
|
18349
|
+
if (Date.now() - lastYield >= yieldIntervalMs) {
|
|
18350
|
+
await yieldToEventLoop();
|
|
18351
|
+
lastYield = Date.now();
|
|
18352
|
+
}
|
|
18353
|
+
}
|
|
18354
|
+
}
|
|
18322
18355
|
/**
|
|
18323
18356
|
* Cooperative variant of parseDataBlock: identical parse (same generator
|
|
18324
18357
|
* body), but periodically awaits a macrotask so the event loop can run —
|
|
@@ -944,7 +944,7 @@ var EntityTypesIfcCount = 909;
|
|
|
944
944
|
var entity_types_ifc_gen_default = EntityTypesIfc;
|
|
945
945
|
|
|
946
946
|
// compiled/src/version/version.js
|
|
947
|
-
var versionString = "Conway v1.
|
|
947
|
+
var versionString = "Conway v1.421.1270";
|
|
948
948
|
|
|
949
949
|
// compiled/dependencies/conway-geom/interface/conway_geometry.js
|
|
950
950
|
var wasmType = "";
|
|
@@ -3511,6 +3511,39 @@ var StepParser = class extends StepHeaderParser {
|
|
|
3511
3511
|
onProgress?.(next.value);
|
|
3512
3512
|
}
|
|
3513
3513
|
}
|
|
3514
|
+
/**
|
|
3515
|
+
* Cooperative variant of parseDataBlockStreamed: identical parse and
|
|
3516
|
+
* window-slide behaviour (same generator body, same boundary callback),
|
|
3517
|
+
* but periodically awaits a macrotask so the event loop can run —
|
|
3518
|
+
* browsers repaint progress UI during a large streamed parse instead of
|
|
3519
|
+
* flagging the tab as stalled. Issue #301 §2 for the streamed path.
|
|
3520
|
+
*
|
|
3521
|
+
* @param input The input parsing buffer, positioned at the data section.
|
|
3522
|
+
* @param onRecordBoundary Called at each top-level record boundary with the
|
|
3523
|
+
* buffer; the callback may rebase the buffer's window in place.
|
|
3524
|
+
* @param onRecordIndexed Called as each top-level record is indexed — see
|
|
3525
|
+
* parseDataBlockStreamed.
|
|
3526
|
+
* @param onProgress Optional byte-cursor progress callback.
|
|
3527
|
+
* @param sink Optional index sink (columnar builds).
|
|
3528
|
+
* @param yieldIntervalMs Minimum ms between event-loop yields.
|
|
3529
|
+
* @return {Promise<BlockParseResult>} The parsing result, including the
|
|
3530
|
+
* index and result enum.
|
|
3531
|
+
*/
|
|
3532
|
+
async parseDataBlockStreamedAsync(input, onRecordBoundary, onRecordIndexed, onProgress, sink, yieldIntervalMs = DEFAULT_PARSE_YIELD_INTERVAL_MS) {
|
|
3533
|
+
const parser211 = this.parseDataBlockIncremental(input, onRecordBoundary, onRecordIndexed, sink);
|
|
3534
|
+
let lastYield = Date.now();
|
|
3535
|
+
while (true) {
|
|
3536
|
+
const next = parser211.next();
|
|
3537
|
+
if (next.done === true) {
|
|
3538
|
+
return next.value;
|
|
3539
|
+
}
|
|
3540
|
+
onProgress?.(next.value);
|
|
3541
|
+
if (Date.now() - lastYield >= yieldIntervalMs) {
|
|
3542
|
+
await yieldToEventLoop();
|
|
3543
|
+
lastYield = Date.now();
|
|
3544
|
+
}
|
|
3545
|
+
}
|
|
3546
|
+
}
|
|
3514
3547
|
/**
|
|
3515
3548
|
* Cooperative variant of parseDataBlock: identical parse (same generator
|
|
3516
3549
|
* body), but periodically awaits a macrotask so the event loop can run —
|
|
@@ -50,6 +50,18 @@ export declare enum LogLevel {
|
|
|
50
50
|
LOG_LEVEL_ERROR = 4,
|
|
51
51
|
LOG_LEVEL_OFF = 5
|
|
52
52
|
}
|
|
53
|
+
/**
|
|
54
|
+
* Normalize an embedder wasm directory (the SetWasmPath value) to the
|
|
55
|
+
* absolute site path the web engine modules are served from — the
|
|
56
|
+
* runtime module prefix isolated (multithreaded) contexts import the
|
|
57
|
+
* engine from. Web wasm paths are site-root-relative by convention
|
|
58
|
+
* ('./static/js/'); missing input falls back to the same '/static/js/'
|
|
59
|
+
* directory conway-geom's web init already uses to locate wasm.
|
|
60
|
+
*
|
|
61
|
+
* @param wasmPath The embedder-configured wasm directory, if any.
|
|
62
|
+
* @return {string} Absolute directory with a trailing slash.
|
|
63
|
+
*/
|
|
64
|
+
export declare function webWasmDirectory(wasmPath: string | undefined): string;
|
|
53
65
|
export interface Vector<T> {
|
|
54
66
|
get(index: number): T;
|
|
55
67
|
push(parameter: T): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ifc_api.d.ts","sourceRoot":"","sources":["../../../../src/compat/web-ifc/ifc_api.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,mBAAmB,IAAI,mBAAmB,
|
|
1
|
+
{"version":3,"file":"ifc_api.d.ts","sourceRoot":"","sources":["../../../../src/compat/web-ifc/ifc_api.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ConwayGeometry, } from "../../index.js";
|
|
1
|
+
import { ConwayGeometry, setModulePrefix, } from "../../index.js";
|
|
2
2
|
import { versionString } from "../../version/version.js";
|
|
3
3
|
import Logger, { LogLevel as ConwayLogLevel } from "../../logging/logger.js";
|
|
4
4
|
import Environment from "../../utilities/environment.js";
|
|
@@ -36,6 +36,34 @@ const CONWAY_LOG_LEVEL_BY_WEBIFC = {
|
|
|
36
36
|
[LogLevel.LOG_LEVEL_ERROR]: ConwayLogLevel.ERROR,
|
|
37
37
|
[LogLevel.LOG_LEVEL_OFF]: ConwayLogLevel.OFF,
|
|
38
38
|
};
|
|
39
|
+
// The directory conway-geom's web init locates wasm from when no
|
|
40
|
+
// embedder path is configured — also the conventional serve location
|
|
41
|
+
// (Share copies Dist/* there at build time).
|
|
42
|
+
const DEFAULT_WEB_WASM_DIRECTORY = "/static/js/";
|
|
43
|
+
/**
|
|
44
|
+
* Normalize an embedder wasm directory (the SetWasmPath value) to the
|
|
45
|
+
* absolute site path the web engine modules are served from — the
|
|
46
|
+
* runtime module prefix isolated (multithreaded) contexts import the
|
|
47
|
+
* engine from. Web wasm paths are site-root-relative by convention
|
|
48
|
+
* ('./static/js/'); missing input falls back to the same '/static/js/'
|
|
49
|
+
* directory conway-geom's web init already uses to locate wasm.
|
|
50
|
+
*
|
|
51
|
+
* @param wasmPath The embedder-configured wasm directory, if any.
|
|
52
|
+
* @return {string} Absolute directory with a trailing slash.
|
|
53
|
+
*/
|
|
54
|
+
export function webWasmDirectory(wasmPath) {
|
|
55
|
+
let directory = wasmPath ?? "";
|
|
56
|
+
if (directory === "") {
|
|
57
|
+
return DEFAULT_WEB_WASM_DIRECTORY;
|
|
58
|
+
}
|
|
59
|
+
if (directory.startsWith("./")) {
|
|
60
|
+
directory = directory.substring(1);
|
|
61
|
+
}
|
|
62
|
+
else if (!directory.startsWith("/")) {
|
|
63
|
+
directory = `/${directory}`;
|
|
64
|
+
}
|
|
65
|
+
return directory.endsWith("/") ? directory : `${directory}/`;
|
|
66
|
+
}
|
|
39
67
|
/**
|
|
40
68
|
* @return {number} current time in ms
|
|
41
69
|
*/
|
|
@@ -83,6 +111,19 @@ export class IfcAPI {
|
|
|
83
111
|
Environment.checkEnvironment();
|
|
84
112
|
Logger.initializeWasmCallbacks();
|
|
85
113
|
Logger.info(versionString);
|
|
114
|
+
// Cross-origin-isolated web contexts select the multithreaded wasm,
|
|
115
|
+
// whose pthread workers resolve their worker script from the engine
|
|
116
|
+
// module's own import.meta.url. A bundler-inlined copy of the glue
|
|
117
|
+
// gives workers a wrong URL (the worker script 404s and MT init dies
|
|
118
|
+
// with a bare error Event — Share #1610). Setting a runtime module
|
|
119
|
+
// prefix makes conway-geom import the engine module from the
|
|
120
|
+
// directory it is actually served from, so import.meta.url — and
|
|
121
|
+
// therefore the worker script URL — is correct. Web wasm paths are
|
|
122
|
+
// site-root-relative by convention; no-op outside isolated windows.
|
|
123
|
+
if (typeof window !== "undefined" &&
|
|
124
|
+
window.crossOriginIsolated === true) {
|
|
125
|
+
setModulePrefix(webWasmDirectory(this.wasmPath));
|
|
126
|
+
}
|
|
86
127
|
const locateFileHandler = (path, prefix) => {
|
|
87
128
|
// when the wasm module requests the wasm file, we redirect to include the user specified path
|
|
88
129
|
if (path.endsWith(".wasm")) {
|
|
@@ -138,12 +138,13 @@ export declare class IfcApiProxyIfc implements IfcApiModelPassthrough {
|
|
|
138
138
|
* classic open, and `spillSourceToExternalStore` works afterwards as
|
|
139
139
|
* usual.
|
|
140
140
|
*
|
|
141
|
-
* The columnar build is
|
|
142
|
-
*
|
|
143
|
-
*
|
|
144
|
-
*
|
|
145
|
-
*
|
|
146
|
-
* classic path, which tolerates
|
|
141
|
+
* The columnar build is cooperative (periodic event-loop yields, like
|
|
142
|
+
* the classic parseDataBlockAsync) with absolute byte-cursor progress
|
|
143
|
+
* ticks, and extraction is cooperative too — the streamed open keeps
|
|
144
|
+
* the repaint/no-stall property of OpenModelAsync (#301 §2). Throws
|
|
145
|
+
* when the streamed parse is anything but COMPLETE — the caller
|
|
146
|
+
* (OpenModelStreamed) falls back to the classic path, which tolerates
|
|
147
|
+
* recoverable parses.
|
|
147
148
|
*
|
|
148
149
|
* @param modelID The model ID being opened.
|
|
149
150
|
* @param data The IFC data buffer.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ifc_api_proxy_ifc.d.ts","sourceRoot":"","sources":["../../../../src/compat/web-ifc/ifc_api_proxy_ifc.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,cAAc,EACf,MAAM,aAAa,CAAA;AAEpB,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAA;AAC7D,OAAO,YAAY,MAAM,0BAA0B,CAAA;AACnD,OAAO,EACL,QAAQ,EACR,WAAW,EACX,WAAW,EACX,cAAc,EACd,cAAc,EACd,WAAW,EACX,MAAM,EACP,MAAM,WAAW,CAAA;AAClB,OAAO,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAA;AACvE,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAA;AACpE,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAA;AAC1D,OAAO,KAAK,QAAQ,MAAM,WAAW,CAAA;AACrC,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AAWhD,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAA;AAE3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAA;AAezE;;;;;GAKG;AACH,UAAU,iBAAiB;IACzB,UAAU,EAAE,cAAc,CAAA;IAC1B,YAAY,EAAE,MAAM,CAAA;IACpB,UAAU,EAAE,UAAU,CAAA;IACtB,KAAK,EAAE,YAAY,CAAA;IACnB,KAAK,EAAE,eAAe,CAAA;IACtB,cAAc,EAAE,qBAAqB,CAAA;IACrC,gBAAgB,EAAE,MAAM,CAAA;CACzB;AAED;;GAEG;AACH,qBAAa,cAAe,YAAW,sBAAsB;aAoCvC,OAAO,EAAE,MAAM;IAE/B,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC;IArC9B,EAAE,CAAC,EAAE,GAAG,CAAY;IAEpB,KAAK,EACH;QAAC,YAAY;QACX,eAAe;QACf,GAAG,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,cAAc,CAAC,EAAE,QAAQ,CAAC,CAAC;QAC/C,GAAG,CAAC,MAAM,EAAE,CAAC,cAAc,EAAE,iBAAiB,EAAE,MAAM,EAAE,CAAC,CAAC;QAE1D,MAAM,CAAC,QAAQ,CAAC;QAAE,QAAQ,CAAC,IAAI;KAAC,CAAA;IACpC,UAAU,EAAE,cAAc,CAAA;IAC1B,cAAc,EAAE,OAAO,CAAQ;IAC/B,mBAAmB,EAAE,MAAM,CAAI;IAC/B,QAAQ,EAAE,MAAM,EAAE,CAAmD;IAGrE,YAAY,EAAE,QAAQ,CAAC,IAAI,CAK1B;IAED;;OAEG;IACH,UAAU,gBAA0B;IAEpC;;;;OAIG;gBAGiB,OAAO,EAAE,MAAM,EAC/B,IAAI,EAAE,UAAU,EACC,UAAU,EAAE,GAAG,EACf,QAAQ,CAAC,EAAE,cAAc,YAAA,EAC1C,WAAW,CAAC,EAAE,iBAAiB;IAuJnC;;;;;;;;;;OAUG;WACiB,WAAW,CAC3B,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,UAAU,EAChB,UAAU,EAAE,GAAG,EACf,QAAQ,CAAC,EAAE,cAAc,GAAI,OAAO,CAAC,cAAc,CAAC;IAQxD;;;;;;;;;;;;;;;OAeG;WACiB,cAAc,CAC9B,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,UAAU,EAChB,UAAU,EAAE,GAAG,EACf,QAAQ,CAAC,EAAE,cAAc,GAAI,OAAO,CAAC,cAAc,CAAC;IAQxD;;;;;;OAMG;IACH,OAAO,CAAC,MAAM,CAAC,uBAAuB;IAwCtC;;;;;;OAMG;IACH,OAAO,CAAC,MAAM,CAAC,WAAW;IAU1B;;;;;;;;OAQG;IACH,OAAO,CAAC,MAAM,CAAC,eAAe;IAsF9B;;;;;;;;;OASG;mBACkB,oBAAoB;IAsFzC
|
|
1
|
+
{"version":3,"file":"ifc_api_proxy_ifc.d.ts","sourceRoot":"","sources":["../../../../src/compat/web-ifc/ifc_api_proxy_ifc.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,7 +9,7 @@ import { extractModelInfo } from "../../loaders/loading_utilities.js";
|
|
|
9
9
|
import IfcStepParser from "../../ifc/ifc_step_parser.js";
|
|
10
10
|
import ParsingBuffer from "../../parsing/parsing_buffer.js";
|
|
11
11
|
import { BufferByteSource } from "../../step/parsing/byte_source.js";
|
|
12
|
-
import {
|
|
12
|
+
import { buildColumnarIndexStreamingAsync, } from "../../step/parsing/streaming_index_builder.js";
|
|
13
13
|
import { ExtractResult } from "../../index.js";
|
|
14
14
|
import { IfcGeometryExtraction } from "../../ifc/ifc_geometry_extraction.js";
|
|
15
15
|
import { ParseResult } from "../../index.js";
|
|
@@ -379,12 +379,13 @@ export class IfcApiProxyIfc {
|
|
|
379
379
|
* classic open, and `spillSourceToExternalStore` works afterwards as
|
|
380
380
|
* usual.
|
|
381
381
|
*
|
|
382
|
-
* The columnar build is
|
|
383
|
-
*
|
|
384
|
-
*
|
|
385
|
-
*
|
|
386
|
-
*
|
|
387
|
-
* classic path, which tolerates
|
|
382
|
+
* The columnar build is cooperative (periodic event-loop yields, like
|
|
383
|
+
* the classic parseDataBlockAsync) with absolute byte-cursor progress
|
|
384
|
+
* ticks, and extraction is cooperative too — the streamed open keeps
|
|
385
|
+
* the repaint/no-stall property of OpenModelAsync (#301 §2). Throws
|
|
386
|
+
* when the streamed parse is anything but COMPLETE — the caller
|
|
387
|
+
* (OpenModelStreamed) falls back to the classic path, which tolerates
|
|
388
|
+
* recoverable parses.
|
|
388
389
|
*
|
|
389
390
|
* @param modelID The model ID being opened.
|
|
390
391
|
* @param data The IFC data buffer.
|
|
@@ -409,8 +410,10 @@ export class IfcApiProxyIfc {
|
|
|
409
410
|
Logger.info(formatModelLine(modelInfo));
|
|
410
411
|
settings?.ON_MODEL_INFO?.(modelInfo);
|
|
411
412
|
tracker?.beginPhase("dataParse", "bytes", data.length);
|
|
413
|
+
const parseTick = tracker !== void 0 ?
|
|
414
|
+
(cursorBytes) => tracker.update(cursorBytes) : void 0;
|
|
412
415
|
const parseStartTime = Date.now();
|
|
413
|
-
const { columns, result } =
|
|
416
|
+
const { columns, result } = await buildColumnarIndexStreamingAsync(new BufferByteSource(data), parser, STREAMED_PARSE_POOL_BYTES, void 0, parseTick);
|
|
414
417
|
const parseEndTime = Date.now();
|
|
415
418
|
tracker?.endPhase(data.length);
|
|
416
419
|
if (result !== ParseResult.COMPLETE) {
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"web_wasm_directory.test.d.ts","sourceRoot":"","sources":["../../../../src/compat/web-ifc/web_wasm_directory.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
// The wasm-directory normalization behind the isolated-context module
|
|
2
|
+
// prefix (Share #1610): embedder SetWasmPath values are site-root-
|
|
3
|
+
// relative by convention and must come out as absolute directories,
|
|
4
|
+
// since they become runtime dynamic-import prefixes whose resolution
|
|
5
|
+
// must not depend on the page or bundle URL (the pthread worker script
|
|
6
|
+
// URL derives from the imported module's import.meta.url).
|
|
7
|
+
import { describe, expect, test } from "@jest/globals";
|
|
8
|
+
import { webWasmDirectory } from "./ifc_api.js";
|
|
9
|
+
describe("webWasmDirectory", () => {
|
|
10
|
+
test("site-root-relative convention absolutizes", () => {
|
|
11
|
+
expect(webWasmDirectory("./static/js/")).toBe("/static/js/");
|
|
12
|
+
expect(webWasmDirectory("static/js/")).toBe("/static/js/");
|
|
13
|
+
});
|
|
14
|
+
test("absolute paths pass through with a trailing slash ensured", () => {
|
|
15
|
+
expect(webWasmDirectory("/static/js/")).toBe("/static/js/");
|
|
16
|
+
expect(webWasmDirectory("/wasm")).toBe("/wasm/");
|
|
17
|
+
});
|
|
18
|
+
test("missing input falls back to the conventional serve directory", () => {
|
|
19
|
+
expect(webWasmDirectory(undefined)).toBe("/static/js/");
|
|
20
|
+
expect(webWasmDirectory("")).toBe("/static/js/");
|
|
21
|
+
});
|
|
22
|
+
});
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `@bldrs-ai/conway/demand` — demand-driven geometry residency (epic #390;
|
|
3
|
+
* design/new/streaming-federated-loader.md, "two regimes").
|
|
4
|
+
*
|
|
5
|
+
* The synchronous half: a priority {@link DemandGeometryQueue} admits
|
|
6
|
+
* instances under a byte budget against {@link GeometryTiles} — in
|
|
7
|
+
* production the wasm-backed {@link GeometryTilePool} composition created
|
|
8
|
+
* by {@link createWasmTileBackend}, extracting through
|
|
9
|
+
* {@link IfcTileAssetExtractor} into the conway-geom TilePool. The
|
|
10
|
+
* asynchronous half: {@link DemandResidencyPump} pages source-byte ranges
|
|
11
|
+
* in (via the stream plane's windowed provider) before forwarding demand,
|
|
12
|
+
* so a pump cycle never hits a non-resident range mid-extract.
|
|
13
|
+
*
|
|
14
|
+
* Conway-native namespace; see `@bldrs-ai/conway/stream` for the parse
|
|
15
|
+
* plane and `@bldrs-ai/conway/mem` for the general pool primitives this
|
|
16
|
+
* builds on.
|
|
17
|
+
*/
|
|
18
|
+
export { DemandGeometryQueue, GeometryTiles, DemandQueueStats, } from "../core/demand_geometry_queue.js";
|
|
19
|
+
export { DemandResidencyPump, ResidencyPrefetcher, PumpResult, } from "../core/demand_residency_pump.js";
|
|
20
|
+
export { GeometryTilePool, InstanceAssetSource, GeometryAsset, } from "../core/geometry_tile_pool.js";
|
|
21
|
+
export { GeometryTilePoolBindings, TileAssetExtractor, WasmTileBackend, createWasmTileBackend, readGeometryTilePayload, GeometryTilePayload, } from "../core/geometry_tile_bindings.js";
|
|
22
|
+
export { IfcTileAssetExtractor, TileCommitBindings } from "../ifc/ifc_tile_extractor.js";
|
|
23
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/demand/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,EACL,mBAAmB,EACnB,aAAa,EACb,gBAAgB,GACjB,MAAM,+BAA+B,CAAA;AACtC,OAAO,EACL,mBAAmB,EACnB,mBAAmB,EACnB,UAAU,GACX,MAAM,+BAA+B,CAAA;AACtC,OAAO,EACL,gBAAgB,EAChB,mBAAmB,EACnB,aAAa,GACd,MAAM,4BAA4B,CAAA;AACnC,OAAO,EACL,wBAAwB,EACxB,kBAAkB,EAClB,eAAe,EACf,qBAAqB,EACrB,uBAAuB,EACvB,mBAAmB,GACpB,MAAM,gCAAgC,CAAA;AACvC,OAAO,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAA"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `@bldrs-ai/conway/demand` — demand-driven geometry residency (epic #390;
|
|
3
|
+
* design/new/streaming-federated-loader.md, "two regimes").
|
|
4
|
+
*
|
|
5
|
+
* The synchronous half: a priority {@link DemandGeometryQueue} admits
|
|
6
|
+
* instances under a byte budget against {@link GeometryTiles} — in
|
|
7
|
+
* production the wasm-backed {@link GeometryTilePool} composition created
|
|
8
|
+
* by {@link createWasmTileBackend}, extracting through
|
|
9
|
+
* {@link IfcTileAssetExtractor} into the conway-geom TilePool. The
|
|
10
|
+
* asynchronous half: {@link DemandResidencyPump} pages source-byte ranges
|
|
11
|
+
* in (via the stream plane's windowed provider) before forwarding demand,
|
|
12
|
+
* so a pump cycle never hits a non-resident range mid-extract.
|
|
13
|
+
*
|
|
14
|
+
* Conway-native namespace; see `@bldrs-ai/conway/stream` for the parse
|
|
15
|
+
* plane and `@bldrs-ai/conway/mem` for the general pool primitives this
|
|
16
|
+
* builds on.
|
|
17
|
+
*/
|
|
18
|
+
export { DemandGeometryQueue, } from "../core/demand_geometry_queue.js";
|
|
19
|
+
export { DemandResidencyPump, } from "../core/demand_residency_pump.js";
|
|
20
|
+
export { GeometryTilePool, } from "../core/geometry_tile_pool.js";
|
|
21
|
+
export { createWasmTileBackend, readGeometryTilePayload, } from "../core/geometry_tile_bindings.js";
|
|
22
|
+
export { IfcTileAssetExtractor } from "../ifc/ifc_tile_extractor.js";
|
package/compiled/src/index.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
export { ParseResult } from "./step/parsing/step_parser.js";
|
|
2
2
|
export { IfcGeometryExtraction } from "./ifc/ifc_geometry_extraction.js";
|
|
3
3
|
export { IfcPropertyExtraction } from "./ifc/ifc_property_extraction.js";
|
|
4
|
-
export { ConwayGeometry, GeometryObject, FileHandlerFunction } from "../dependencies/conway-geom/index.js";
|
|
4
|
+
export { ConwayGeometry, GeometryObject, FileHandlerFunction, setModulePrefix, } from "../dependencies/conway-geom/index.js";
|
|
5
5
|
export { versionString } from "./version/version.js";
|
|
6
6
|
export { default as Logger, LogLevel, LogEntry, LoggingProxy, LogSink } from "./logging/logger.js";
|
|
7
7
|
export { product, shape_definition_representation } from "./AP214E3_2010/AP214E3_2010_gen/index.js";
|
|
@@ -12,6 +12,7 @@ export { ProgressEvent, ProgressCallback, ProgressPhase, ProgressUnit, ProgressT
|
|
|
12
12
|
export { ModelLoadOptions } from "./loaders/conway_model_loader.js";
|
|
13
13
|
export { LoadLogAccumulator, ModelInfo, ProgressEventLike, formatBar, formatMb, formatModelLine, formatSeconds, stageLabel, } from "./core/progress_log.js";
|
|
14
14
|
export { openStreamedIfcModel, StreamedIfcOpen, StreamedIfcOpenOptions } from "./ifc/ifc_stream_open.js";
|
|
15
|
+
export { buildColumnarIndexStreaming, buildColumnarIndexStreamingAsync, } from "./step/parsing/streaming_index_builder.js";
|
|
15
16
|
export { ByteSource, BufferByteSource } from "./step/parsing/byte_source.js";
|
|
16
17
|
export { StepExternalByteStore, InMemoryStepByteStore, StepBufferProvider, WindowedStepBufferProvider, } from "./step/step_buffer_provider.js";
|
|
17
18
|
export { StepIndexColumns } from "./step/parsing/columnar_index.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAA;AACxD,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAA;AACrE,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAA;AACrE,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAA;AACxD,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAA;AACrE,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAA;AACrE,OAAO,EACL,cAAc,EACd,cAAc,EACd,mBAAmB,EACnB,eAAe,GAChB,MAAM,6BAA6B,CAAA;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAEjD,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAA;AAE/F,OAAO,EAAE,OAAO,EAAE,+BAA+B,EAAE,MAAM,iCAAiC,CAAA;AAC1F,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAA;AACzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAA;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAA;AACvD,OAAO,EACL,aAAa,EACb,gBAAgB,EAChB,aAAa,EACb,YAAY,EACZ,eAAe,EACf,qBAAqB,EACrB,gBAAgB,GACjB,MAAM,iBAAiB,CAAA;AACxB,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAA;AAChE,OAAO,EACL,kBAAkB,EAClB,SAAS,EACT,iBAAiB,EACjB,SAAS,EACT,QAAQ,EACR,eAAe,EACf,aAAa,EACb,UAAU,GACX,MAAM,qBAAqB,CAAA;AAU5B,OAAO,EAAE,oBAAoB,EAAE,eAAe,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAA;AACrG,OAAO,EACL,2BAA2B,EAC3B,gCAAgC,GACjC,MAAM,wCAAwC,CAAA;AAC/C,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAA;AACzE,OAAO,EACL,qBAAqB,EACrB,qBAAqB,EACrB,kBAAkB,EAClB,0BAA0B,GAC3B,MAAM,6BAA6B,CAAA;AACpC,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAA;AAChE,OAAO,EACL,gCAAgC,EAChC,gCAAgC,EAChC,oBAAoB,EACpB,UAAU,GACX,MAAM,8BAA8B,CAAA;AACrC,OAAO,EAAE,yBAAyB,EAAE,aAAa,EAAE,MAAM,4CAA4C,CAAA;AACrG,OAAO,EAAE,oBAAoB,EAAE,MAAM,uCAAuC,CAAA;AAC5E,OAAO,EAAE,mBAAmB,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAA;AACnG,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAA;AACnG,OAAO,EACL,wBAAwB,EACxB,kBAAkB,EAClB,eAAe,EACf,qBAAqB,EACrB,uBAAuB,EACvB,mBAAmB,GACpB,MAAM,+BAA+B,CAAA;AACtC,OAAO,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAA;AACpF,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AAChE,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAA;AAC9D,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAA"}
|
package/compiled/src/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
export { ParseResult } from "./step/parsing/step_parser.js";
|
|
2
2
|
export { IfcGeometryExtraction } from "./ifc/ifc_geometry_extraction.js";
|
|
3
3
|
export { IfcPropertyExtraction } from "./ifc/ifc_property_extraction.js";
|
|
4
|
-
export { ConwayGeometry } from "../dependencies/conway-geom/index.js";
|
|
4
|
+
export { ConwayGeometry, setModulePrefix, } from "../dependencies/conway-geom/index.js";
|
|
5
5
|
export { versionString } from "./version/version.js";
|
|
6
6
|
// Replace your current Logger export with this
|
|
7
7
|
export { default as Logger, LogLevel } from "./logging/logger.js";
|
|
@@ -13,7 +13,13 @@ export { LoadLogAccumulator, formatBar, formatMb, formatModelLine, formatSeconds
|
|
|
13
13
|
// --- Streaming / demand-geometry surface (epic #390; design doc
|
|
14
14
|
// design/new/streaming-federated-loader.md). The release-facing API for
|
|
15
15
|
// fixed-memory opens and demand-driven residency.
|
|
16
|
+
//
|
|
17
|
+
// Canonical homes are the plane subpath modules — `@bldrs-ai/conway/stream`,
|
|
18
|
+
// `/demand`, and `/mem` — which is where new conway-native APIs land (the
|
|
19
|
+
// web-ifc compat shim stays an adapter and is headed for retirement). The
|
|
20
|
+
// flat re-exports below are kept for root-import compatibility.
|
|
16
21
|
export { openStreamedIfcModel } from "./ifc/ifc_stream_open.js";
|
|
22
|
+
export { buildColumnarIndexStreaming, buildColumnarIndexStreamingAsync, } from "./step/parsing/streaming_index_builder.js";
|
|
17
23
|
export { BufferByteSource } from "./step/parsing/byte_source.js";
|
|
18
24
|
export { InMemoryStepByteStore, WindowedStepBufferProvider, } from "./step/step_buffer_provider.js";
|
|
19
25
|
export { serializeIndexSidecarFromColumns, deserializeIndexSidecarToColumns, sidecarMatchesSource, hashSource, } from "./step/parsing/index_sidecar.js";
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `@bldrs-ai/conway/mem` — the general memory system (src/core/mem;
|
|
3
|
+
* design/new/streaming-federated-loader.md, resident-memory design).
|
|
4
|
+
*
|
|
5
|
+
* Domain-neutral primitives for explicitly budgeted residency:
|
|
6
|
+
* {@link ChunkedPool} (accounting-only fixed-chunk freelist),
|
|
7
|
+
* {@link SharedAssetPool} (refcounted instance⇄asset sharing), and
|
|
8
|
+
* {@link SharedByteBudget} (a byte budget shareable across consumers).
|
|
9
|
+
* The geometry narrowing over these lives in `@bldrs-ai/conway/demand`
|
|
10
|
+
* ({@link import('../core/geometry_tile_pool').GeometryTilePool}); other
|
|
11
|
+
* asset domains (textures, property blocks) are expected to narrow the
|
|
12
|
+
* same way.
|
|
13
|
+
*/
|
|
14
|
+
export { ChunkedPool, ChunkSpan } from "../core/mem/chunked_pool.js";
|
|
15
|
+
export { SharedAssetPool } from "../core/mem/shared_asset_pool.js";
|
|
16
|
+
export { SharedByteBudget } from "../core/shared_byte_budget.js";
|
|
17
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/mem/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAA;AACjE,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAA;AAC/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAA"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `@bldrs-ai/conway/mem` — the general memory system (src/core/mem;
|
|
3
|
+
* design/new/streaming-federated-loader.md, resident-memory design).
|
|
4
|
+
*
|
|
5
|
+
* Domain-neutral primitives for explicitly budgeted residency:
|
|
6
|
+
* {@link ChunkedPool} (accounting-only fixed-chunk freelist),
|
|
7
|
+
* {@link SharedAssetPool} (refcounted instance⇄asset sharing), and
|
|
8
|
+
* {@link SharedByteBudget} (a byte budget shareable across consumers).
|
|
9
|
+
* The geometry narrowing over these lives in `@bldrs-ai/conway/demand`
|
|
10
|
+
* ({@link import('../core/geometry_tile_pool').GeometryTilePool}); other
|
|
11
|
+
* asset domains (textures, property blocks) are expected to narrow the
|
|
12
|
+
* same way.
|
|
13
|
+
*/
|
|
14
|
+
export { ChunkedPool } from "../core/mem/chunked_pool.js";
|
|
15
|
+
export { SharedAssetPool } from "../core/mem/shared_asset_pool.js";
|
|
16
|
+
export { SharedByteBudget } from "../core/shared_byte_budget.js";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"namespace_surface.test.d.ts","sourceRoot":"","sources":["../../src/namespace_surface.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
// Pins the conway-native plane namespaces (`@bldrs-ai/conway/stream`,
|
|
2
|
+
// `/demand`, `/mem`): each module must expose its plane's key runtime
|
|
3
|
+
// symbols. Guards the packaging contract — a refactor that moves or
|
|
4
|
+
// renames an export breaks embedders through these subpaths first.
|
|
5
|
+
import { describe, expect, test } from "@jest/globals";
|
|
6
|
+
import * as demand from "./demand/index.js";
|
|
7
|
+
import * as mem from "./mem/index.js";
|
|
8
|
+
import * as stream from "./stream/index.js";
|
|
9
|
+
describe("plane namespace surface", () => {
|
|
10
|
+
test("stream exposes the fixed-memory open plane", () => {
|
|
11
|
+
expect(typeof stream.openStreamedIfcModel).toBe("function");
|
|
12
|
+
expect(typeof stream.BufferByteSource).toBe("function");
|
|
13
|
+
expect(typeof stream.InMemoryStepByteStore).toBe("function");
|
|
14
|
+
expect(typeof stream.WindowedStepBufferProvider).toBe("function");
|
|
15
|
+
expect(typeof stream.serializeIndexSidecarFromColumns).toBe("function");
|
|
16
|
+
expect(typeof stream.deserializeIndexSidecarToColumns).toBe("function");
|
|
17
|
+
expect(typeof stream.sidecarMatchesSource).toBe("function");
|
|
18
|
+
expect(typeof stream.hashSource).toBe("function");
|
|
19
|
+
expect(typeof stream.StreamingRecordDispatcher).toBe("function");
|
|
20
|
+
expect(typeof stream.IncrementalTypeIndex).toBe("function");
|
|
21
|
+
});
|
|
22
|
+
test("demand exposes the residency/extraction plane", () => {
|
|
23
|
+
expect(typeof demand.DemandGeometryQueue).toBe("function");
|
|
24
|
+
expect(typeof demand.DemandResidencyPump).toBe("function");
|
|
25
|
+
expect(typeof demand.GeometryTilePool).toBe("function");
|
|
26
|
+
expect(typeof demand.createWasmTileBackend).toBe("function");
|
|
27
|
+
expect(typeof demand.readGeometryTilePayload).toBe("function");
|
|
28
|
+
expect(typeof demand.IfcTileAssetExtractor).toBe("function");
|
|
29
|
+
});
|
|
30
|
+
test("mem exposes the general pool primitives", () => {
|
|
31
|
+
expect(typeof mem.ChunkedPool).toBe("function");
|
|
32
|
+
expect(typeof mem.SharedAssetPool).toBe("function");
|
|
33
|
+
expect(typeof mem.SharedByteBudget).toBe("function");
|
|
34
|
+
});
|
|
35
|
+
});
|