@bldrs-ai/conway 1.529.1492 → 1.530.1503
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 +19 -19
- package/compiled/examples/cli-bundled.cjs +19 -19
- package/compiled/examples/cli-step-bundled.cjs +17 -15
- package/compiled/examples/validator-bundled.cjs +19 -19
- package/compiled/src/ifc/ifc_spatial_skeleton.d.ts +145 -0
- package/compiled/src/ifc/ifc_spatial_skeleton.d.ts.map +1 -0
- package/compiled/src/ifc/ifc_spatial_skeleton.js +266 -0
- package/compiled/src/ifc/ifc_spatial_skeleton.test.d.ts +2 -0
- package/compiled/src/ifc/ifc_spatial_skeleton.test.d.ts.map +1 -0
- package/compiled/src/ifc/ifc_spatial_skeleton.test.js +199 -0
- package/compiled/src/ifc/ifc_stream_open.d.ts +41 -5
- package/compiled/src/ifc/ifc_stream_open.d.ts.map +1 -1
- package/compiled/src/ifc/ifc_stream_open.js +29 -2
- package/compiled/src/ifc/ifc_stream_open.test.js +26 -1
- package/compiled/src/index.d.ts +7 -3
- package/compiled/src/index.d.ts.map +1 -1
- package/compiled/src/index.js +6 -2
- package/compiled/src/namespace_surface.test.js +6 -1
- package/compiled/src/step/parsing/prefix_type_index.d.ts +124 -0
- package/compiled/src/step/parsing/prefix_type_index.d.ts.map +1 -0
- package/compiled/src/step/parsing/prefix_type_index.js +207 -0
- package/compiled/src/step/parsing/prefix_type_index.test.d.ts +2 -0
- package/compiled/src/step/parsing/prefix_type_index.test.d.ts.map +1 -0
- package/compiled/src/step/parsing/prefix_type_index.test.js +298 -0
- package/compiled/src/step/parsing/record_event.d.ts +23 -0
- package/compiled/src/step/parsing/record_event.d.ts.map +1 -0
- package/compiled/src/step/parsing/record_event.js +1 -0
- package/compiled/src/step/parsing/record_field_cursor.d.ts +94 -0
- package/compiled/src/step/parsing/record_field_cursor.d.ts.map +1 -0
- package/compiled/src/step/parsing/record_field_cursor.js +189 -0
- package/compiled/src/step/parsing/step_parser.d.ts +9 -6
- package/compiled/src/step/parsing/step_parser.d.ts.map +1 -1
- package/compiled/src/step/parsing/step_parser.js +21 -14
- package/compiled/src/step/parsing/streaming_index_builder.d.ts +13 -5
- package/compiled/src/step/parsing/streaming_index_builder.d.ts.map +1 -1
- package/compiled/src/step/parsing/streaming_index_builder.js +9 -4
- package/compiled/src/step/parsing/streaming_record_dispatcher.d.ts +24 -8
- package/compiled/src/step/parsing/streaming_record_dispatcher.d.ts.map +1 -1
- package/compiled/src/step/parsing/streaming_record_dispatcher.js +34 -13
- package/compiled/src/stream/index.d.ts +12 -5
- package/compiled/src/stream/index.d.ts.map +1 -1
- package/compiled/src/stream/index.js +11 -4
- package/compiled/src/version/version.js +1 -1
- package/compiled/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
- package/compiled/src/step/parsing/incremental_type_index.d.ts +0 -64
- package/compiled/src/step/parsing/incremental_type_index.d.ts.map +0 -1
- package/compiled/src/step/parsing/incremental_type_index.js +0 -92
- package/compiled/src/step/parsing/incremental_type_index.test.d.ts +0 -2
- package/compiled/src/step/parsing/incremental_type_index.test.d.ts.map +0 -1
- package/compiled/src/step/parsing/incremental_type_index.test.js +0 -55
|
@@ -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.530.1503";
|
|
34
34
|
|
|
35
35
|
// compiled/dependencies/conway-geom/interface/conway_geometry.js
|
|
36
36
|
var wasmType = "";
|
|
@@ -2626,10 +2626,12 @@ var StepParser = class extends StepHeaderParser {
|
|
|
2626
2626
|
* buffer; the callback may rebase the buffer's window in place. Must be
|
|
2627
2627
|
* synchronous on this driver — a returned Promise is a caller bug.
|
|
2628
2628
|
* @param onRecordIndexed Called as each top-level record is indexed, with
|
|
2629
|
-
* its localID, expressID
|
|
2630
|
-
*
|
|
2631
|
-
*
|
|
2632
|
-
*
|
|
2629
|
+
* its localID, expressID, typeID (0 for external-mapping records) and the
|
|
2630
|
+
* record's bytes as an un-materialised `(buffer, byteOffset, byteLength)`
|
|
2631
|
+
* window view — the seam for incremental semantic consumers (type index,
|
|
2632
|
+
* roots registry, names skeleton). See {@link RecordEventHandler} for the
|
|
2633
|
+
* window-lifetime rule. Must be synchronous and cheap; expensive work
|
|
2634
|
+
* belongs on a demand queue, not the parse path.
|
|
2633
2635
|
* @param onProgress Optional byte-cursor progress callback.
|
|
2634
2636
|
* @return {BlockParseResult} The parsing result, including the index and result enum.
|
|
2635
2637
|
*/
|
|
@@ -2913,11 +2915,6 @@ var StepParser = class extends StepHeaderParser {
|
|
|
2913
2915
|
if (!charws(SEMICOLON)) {
|
|
2914
2916
|
return syntaxError();
|
|
2915
2917
|
}
|
|
2916
|
-
{
|
|
2917
|
-
const recordLen = input2.address - startElement2;
|
|
2918
|
-
onRecordIndexed?.(topLevelCount, expressID, 0, input2.buffer.subarray(input2.cursor - recordLen, input2.cursor));
|
|
2919
|
-
}
|
|
2920
|
-
++topLevelCount;
|
|
2921
2918
|
pushEntry({
|
|
2922
2919
|
address: startElement2,
|
|
2923
2920
|
length: input2.address - startElement2,
|
|
@@ -2927,6 +2924,11 @@ var StepParser = class extends StepHeaderParser {
|
|
|
2927
2924
|
inlineEntities: inlineElements,
|
|
2928
2925
|
multiMapping: multiElements
|
|
2929
2926
|
});
|
|
2927
|
+
{
|
|
2928
|
+
const recordLen = input2.address - startElement2;
|
|
2929
|
+
onRecordIndexed?.(topLevelCount, expressID, 0, input2.buffer, input2.cursor - recordLen, recordLen);
|
|
2930
|
+
}
|
|
2931
|
+
++topLevelCount;
|
|
2930
2932
|
multiElements = void 0;
|
|
2931
2933
|
continue;
|
|
2932
2934
|
}
|
|
@@ -3006,11 +3008,6 @@ var StepParser = class extends StepHeaderParser {
|
|
|
3006
3008
|
if (!charws(SEMICOLON)) {
|
|
3007
3009
|
return syntaxError();
|
|
3008
3010
|
}
|
|
3009
|
-
{
|
|
3010
|
-
const recordLen = input2.address - startElement;
|
|
3011
|
-
onRecordIndexed?.(topLevelCount, expressID, foundItem, input2.buffer.subarray(input2.cursor - recordLen, input2.cursor));
|
|
3012
|
-
}
|
|
3013
|
-
++topLevelCount;
|
|
3014
3011
|
pushEntry({
|
|
3015
3012
|
address: startElement,
|
|
3016
3013
|
length: input2.address - startElement,
|
|
@@ -3018,6 +3015,11 @@ var StepParser = class extends StepHeaderParser {
|
|
|
3018
3015
|
expressID,
|
|
3019
3016
|
inlineEntities: inlineElements
|
|
3020
3017
|
});
|
|
3018
|
+
{
|
|
3019
|
+
const recordLen = input2.address - startElement;
|
|
3020
|
+
onRecordIndexed?.(topLevelCount, expressID, foundItem, input2.buffer, input2.cursor - recordLen, recordLen);
|
|
3021
|
+
}
|
|
3022
|
+
++topLevelCount;
|
|
3021
3023
|
}
|
|
3022
3024
|
return parseResult2(ParseResult.INCOMPLETE);
|
|
3023
3025
|
}
|
|
@@ -72163,13 +72165,11 @@ async function buildIndexStreamingAsync(source, parser211, pool3, onRecordIndexe
|
|
|
72163
72165
|
};
|
|
72164
72166
|
}
|
|
72165
72167
|
}
|
|
72166
|
-
function buildColumnarIndexStreaming(source, parser211, pool3, onRecordIndexed) {
|
|
72167
|
-
const sink = new ColumnarIndexSink();
|
|
72168
|
+
function buildColumnarIndexStreaming(source, parser211, pool3, onRecordIndexed, sink = new ColumnarIndexSink()) {
|
|
72168
72169
|
const { header, result, stats } = buildIndexStreaming(source, parser211, pool3, onRecordIndexed, sink);
|
|
72169
72170
|
return { header, columns: sink.finalize(), result, stats };
|
|
72170
72171
|
}
|
|
72171
|
-
async function buildColumnarIndexStreamingAsync(source, parser211, pool3, onRecordIndexed, onProgress, yieldIntervalMs) {
|
|
72172
|
-
const sink = new ColumnarIndexSink();
|
|
72172
|
+
async function buildColumnarIndexStreamingAsync(source, parser211, pool3, onRecordIndexed, onProgress, yieldIntervalMs, sink = new ColumnarIndexSink()) {
|
|
72173
72173
|
const { header, result, stats } = await buildIndexStreamingAsync(source, parser211, pool3, onRecordIndexed, sink, onProgress, yieldIntervalMs);
|
|
72174
72174
|
return { header, columns: sink.finalize(), result, stats };
|
|
72175
72175
|
}
|
|
@@ -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.530.1503";
|
|
14969
14969
|
|
|
14970
14970
|
// compiled/dependencies/conway-geom/interface/conway_geometry.js
|
|
14971
14971
|
function pThreadsAllowed() {
|
|
@@ -18462,10 +18462,12 @@ var StepParser = class extends StepHeaderParser {
|
|
|
18462
18462
|
* buffer; the callback may rebase the buffer's window in place. Must be
|
|
18463
18463
|
* synchronous on this driver — a returned Promise is a caller bug.
|
|
18464
18464
|
* @param onRecordIndexed Called as each top-level record is indexed, with
|
|
18465
|
-
* its localID, expressID
|
|
18466
|
-
*
|
|
18467
|
-
*
|
|
18468
|
-
*
|
|
18465
|
+
* its localID, expressID, typeID (0 for external-mapping records) and the
|
|
18466
|
+
* record's bytes as an un-materialised `(buffer, byteOffset, byteLength)`
|
|
18467
|
+
* window view — the seam for incremental semantic consumers (type index,
|
|
18468
|
+
* roots registry, names skeleton). See {@link RecordEventHandler} for the
|
|
18469
|
+
* window-lifetime rule. Must be synchronous and cheap; expensive work
|
|
18470
|
+
* belongs on a demand queue, not the parse path.
|
|
18469
18471
|
* @param onProgress Optional byte-cursor progress callback.
|
|
18470
18472
|
* @return {BlockParseResult} The parsing result, including the index and result enum.
|
|
18471
18473
|
*/
|
|
@@ -18749,11 +18751,6 @@ var StepParser = class extends StepHeaderParser {
|
|
|
18749
18751
|
if (!charws(SEMICOLON)) {
|
|
18750
18752
|
return syntaxError();
|
|
18751
18753
|
}
|
|
18752
|
-
{
|
|
18753
|
-
const recordLen = input.address - startElement2;
|
|
18754
|
-
onRecordIndexed?.(topLevelCount, expressID, 0, input.buffer.subarray(input.cursor - recordLen, input.cursor));
|
|
18755
|
-
}
|
|
18756
|
-
++topLevelCount;
|
|
18757
18754
|
pushEntry({
|
|
18758
18755
|
address: startElement2,
|
|
18759
18756
|
length: input.address - startElement2,
|
|
@@ -18763,6 +18760,11 @@ var StepParser = class extends StepHeaderParser {
|
|
|
18763
18760
|
inlineEntities: inlineElements,
|
|
18764
18761
|
multiMapping: multiElements
|
|
18765
18762
|
});
|
|
18763
|
+
{
|
|
18764
|
+
const recordLen = input.address - startElement2;
|
|
18765
|
+
onRecordIndexed?.(topLevelCount, expressID, 0, input.buffer, input.cursor - recordLen, recordLen);
|
|
18766
|
+
}
|
|
18767
|
+
++topLevelCount;
|
|
18766
18768
|
multiElements = void 0;
|
|
18767
18769
|
continue;
|
|
18768
18770
|
}
|
|
@@ -18842,11 +18844,6 @@ var StepParser = class extends StepHeaderParser {
|
|
|
18842
18844
|
if (!charws(SEMICOLON)) {
|
|
18843
18845
|
return syntaxError();
|
|
18844
18846
|
}
|
|
18845
|
-
{
|
|
18846
|
-
const recordLen = input.address - startElement;
|
|
18847
|
-
onRecordIndexed?.(topLevelCount, expressID, foundItem, input.buffer.subarray(input.cursor - recordLen, input.cursor));
|
|
18848
|
-
}
|
|
18849
|
-
++topLevelCount;
|
|
18850
18847
|
pushEntry({
|
|
18851
18848
|
address: startElement,
|
|
18852
18849
|
length: input.address - startElement,
|
|
@@ -18854,6 +18851,11 @@ var StepParser = class extends StepHeaderParser {
|
|
|
18854
18851
|
expressID,
|
|
18855
18852
|
inlineEntities: inlineElements
|
|
18856
18853
|
});
|
|
18854
|
+
{
|
|
18855
|
+
const recordLen = input.address - startElement;
|
|
18856
|
+
onRecordIndexed?.(topLevelCount, expressID, foundItem, input.buffer, input.cursor - recordLen, recordLen);
|
|
18857
|
+
}
|
|
18858
|
+
++topLevelCount;
|
|
18857
18859
|
}
|
|
18858
18860
|
return parseResult(ParseResult.INCOMPLETE);
|
|
18859
18861
|
}
|
|
@@ -88131,13 +88133,11 @@ async function buildIndexStreamingAsync(source, parser210, pool3, onRecordIndexe
|
|
|
88131
88133
|
};
|
|
88132
88134
|
}
|
|
88133
88135
|
}
|
|
88134
|
-
function buildColumnarIndexStreaming(source, parser210, pool3, onRecordIndexed) {
|
|
88135
|
-
const sink = new ColumnarIndexSink();
|
|
88136
|
+
function buildColumnarIndexStreaming(source, parser210, pool3, onRecordIndexed, sink = new ColumnarIndexSink()) {
|
|
88136
88137
|
const { header, result, stats } = buildIndexStreaming(source, parser210, pool3, onRecordIndexed, sink);
|
|
88137
88138
|
return { header, columns: sink.finalize(), result, stats };
|
|
88138
88139
|
}
|
|
88139
|
-
async function buildColumnarIndexStreamingAsync(source, parser210, pool3, onRecordIndexed, onProgress, yieldIntervalMs) {
|
|
88140
|
-
const sink = new ColumnarIndexSink();
|
|
88140
|
+
async function buildColumnarIndexStreamingAsync(source, parser210, pool3, onRecordIndexed, onProgress, yieldIntervalMs, sink = new ColumnarIndexSink()) {
|
|
88141
88141
|
const { header, result, stats } = await buildIndexStreamingAsync(source, parser210, pool3, onRecordIndexed, sink, onProgress, yieldIntervalMs);
|
|
88142
88142
|
return { header, columns: sink.finalize(), result, stats };
|
|
88143
88143
|
}
|
|
@@ -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.530.1503";
|
|
15947
15947
|
|
|
15948
15948
|
// compiled/dependencies/conway-geom/interface/conway_geometry.js
|
|
15949
15949
|
function pThreadsAllowed() {
|
|
@@ -18365,10 +18365,12 @@ var StepParser = class extends StepHeaderParser {
|
|
|
18365
18365
|
* buffer; the callback may rebase the buffer's window in place. Must be
|
|
18366
18366
|
* synchronous on this driver — a returned Promise is a caller bug.
|
|
18367
18367
|
* @param onRecordIndexed Called as each top-level record is indexed, with
|
|
18368
|
-
* its localID, expressID
|
|
18369
|
-
*
|
|
18370
|
-
*
|
|
18371
|
-
*
|
|
18368
|
+
* its localID, expressID, typeID (0 for external-mapping records) and the
|
|
18369
|
+
* record's bytes as an un-materialised `(buffer, byteOffset, byteLength)`
|
|
18370
|
+
* window view — the seam for incremental semantic consumers (type index,
|
|
18371
|
+
* roots registry, names skeleton). See {@link RecordEventHandler} for the
|
|
18372
|
+
* window-lifetime rule. Must be synchronous and cheap; expensive work
|
|
18373
|
+
* belongs on a demand queue, not the parse path.
|
|
18372
18374
|
* @param onProgress Optional byte-cursor progress callback.
|
|
18373
18375
|
* @return {BlockParseResult} The parsing result, including the index and result enum.
|
|
18374
18376
|
*/
|
|
@@ -18652,11 +18654,6 @@ var StepParser = class extends StepHeaderParser {
|
|
|
18652
18654
|
if (!charws(SEMICOLON)) {
|
|
18653
18655
|
return syntaxError();
|
|
18654
18656
|
}
|
|
18655
|
-
{
|
|
18656
|
-
const recordLen = input.address - startElement2;
|
|
18657
|
-
onRecordIndexed?.(topLevelCount, expressID, 0, input.buffer.subarray(input.cursor - recordLen, input.cursor));
|
|
18658
|
-
}
|
|
18659
|
-
++topLevelCount;
|
|
18660
18657
|
pushEntry({
|
|
18661
18658
|
address: startElement2,
|
|
18662
18659
|
length: input.address - startElement2,
|
|
@@ -18666,6 +18663,11 @@ var StepParser = class extends StepHeaderParser {
|
|
|
18666
18663
|
inlineEntities: inlineElements,
|
|
18667
18664
|
multiMapping: multiElements
|
|
18668
18665
|
});
|
|
18666
|
+
{
|
|
18667
|
+
const recordLen = input.address - startElement2;
|
|
18668
|
+
onRecordIndexed?.(topLevelCount, expressID, 0, input.buffer, input.cursor - recordLen, recordLen);
|
|
18669
|
+
}
|
|
18670
|
+
++topLevelCount;
|
|
18669
18671
|
multiElements = void 0;
|
|
18670
18672
|
continue;
|
|
18671
18673
|
}
|
|
@@ -18745,11 +18747,6 @@ var StepParser = class extends StepHeaderParser {
|
|
|
18745
18747
|
if (!charws(SEMICOLON)) {
|
|
18746
18748
|
return syntaxError();
|
|
18747
18749
|
}
|
|
18748
|
-
{
|
|
18749
|
-
const recordLen = input.address - startElement;
|
|
18750
|
-
onRecordIndexed?.(topLevelCount, expressID, foundItem, input.buffer.subarray(input.cursor - recordLen, input.cursor));
|
|
18751
|
-
}
|
|
18752
|
-
++topLevelCount;
|
|
18753
18750
|
pushEntry({
|
|
18754
18751
|
address: startElement,
|
|
18755
18752
|
length: input.address - startElement,
|
|
@@ -18757,6 +18754,11 @@ var StepParser = class extends StepHeaderParser {
|
|
|
18757
18754
|
expressID,
|
|
18758
18755
|
inlineEntities: inlineElements
|
|
18759
18756
|
});
|
|
18757
|
+
{
|
|
18758
|
+
const recordLen = input.address - startElement;
|
|
18759
|
+
onRecordIndexed?.(topLevelCount, expressID, foundItem, input.buffer, input.cursor - recordLen, recordLen);
|
|
18760
|
+
}
|
|
18761
|
+
++topLevelCount;
|
|
18760
18762
|
}
|
|
18761
18763
|
return parseResult(ParseResult.INCOMPLETE);
|
|
18762
18764
|
}
|
|
@@ -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.530.1503";
|
|
948
948
|
|
|
949
949
|
// compiled/dependencies/conway-geom/interface/conway_geometry.js
|
|
950
950
|
var wasmType = "";
|
|
@@ -3540,10 +3540,12 @@ var StepParser = class extends StepHeaderParser {
|
|
|
3540
3540
|
* buffer; the callback may rebase the buffer's window in place. Must be
|
|
3541
3541
|
* synchronous on this driver — a returned Promise is a caller bug.
|
|
3542
3542
|
* @param onRecordIndexed Called as each top-level record is indexed, with
|
|
3543
|
-
* its localID, expressID
|
|
3544
|
-
*
|
|
3545
|
-
*
|
|
3546
|
-
*
|
|
3543
|
+
* its localID, expressID, typeID (0 for external-mapping records) and the
|
|
3544
|
+
* record's bytes as an un-materialised `(buffer, byteOffset, byteLength)`
|
|
3545
|
+
* window view — the seam for incremental semantic consumers (type index,
|
|
3546
|
+
* roots registry, names skeleton). See {@link RecordEventHandler} for the
|
|
3547
|
+
* window-lifetime rule. Must be synchronous and cheap; expensive work
|
|
3548
|
+
* belongs on a demand queue, not the parse path.
|
|
3547
3549
|
* @param onProgress Optional byte-cursor progress callback.
|
|
3548
3550
|
* @return {BlockParseResult} The parsing result, including the index and result enum.
|
|
3549
3551
|
*/
|
|
@@ -3827,11 +3829,6 @@ var StepParser = class extends StepHeaderParser {
|
|
|
3827
3829
|
if (!charws(SEMICOLON)) {
|
|
3828
3830
|
return syntaxError();
|
|
3829
3831
|
}
|
|
3830
|
-
{
|
|
3831
|
-
const recordLen = input.address - startElement2;
|
|
3832
|
-
onRecordIndexed?.(topLevelCount, expressID, 0, input.buffer.subarray(input.cursor - recordLen, input.cursor));
|
|
3833
|
-
}
|
|
3834
|
-
++topLevelCount;
|
|
3835
3832
|
pushEntry({
|
|
3836
3833
|
address: startElement2,
|
|
3837
3834
|
length: input.address - startElement2,
|
|
@@ -3841,6 +3838,11 @@ var StepParser = class extends StepHeaderParser {
|
|
|
3841
3838
|
inlineEntities: inlineElements,
|
|
3842
3839
|
multiMapping: multiElements
|
|
3843
3840
|
});
|
|
3841
|
+
{
|
|
3842
|
+
const recordLen = input.address - startElement2;
|
|
3843
|
+
onRecordIndexed?.(topLevelCount, expressID, 0, input.buffer, input.cursor - recordLen, recordLen);
|
|
3844
|
+
}
|
|
3845
|
+
++topLevelCount;
|
|
3844
3846
|
multiElements = void 0;
|
|
3845
3847
|
continue;
|
|
3846
3848
|
}
|
|
@@ -3920,11 +3922,6 @@ var StepParser = class extends StepHeaderParser {
|
|
|
3920
3922
|
if (!charws(SEMICOLON)) {
|
|
3921
3923
|
return syntaxError();
|
|
3922
3924
|
}
|
|
3923
|
-
{
|
|
3924
|
-
const recordLen = input.address - startElement;
|
|
3925
|
-
onRecordIndexed?.(topLevelCount, expressID, foundItem, input.buffer.subarray(input.cursor - recordLen, input.cursor));
|
|
3926
|
-
}
|
|
3927
|
-
++topLevelCount;
|
|
3928
3925
|
pushEntry({
|
|
3929
3926
|
address: startElement,
|
|
3930
3927
|
length: input.address - startElement,
|
|
@@ -3932,6 +3929,11 @@ var StepParser = class extends StepHeaderParser {
|
|
|
3932
3929
|
expressID,
|
|
3933
3930
|
inlineEntities: inlineElements
|
|
3934
3931
|
});
|
|
3932
|
+
{
|
|
3933
|
+
const recordLen = input.address - startElement;
|
|
3934
|
+
onRecordIndexed?.(topLevelCount, expressID, foundItem, input.buffer, input.cursor - recordLen, recordLen);
|
|
3935
|
+
}
|
|
3936
|
+
++topLevelCount;
|
|
3935
3937
|
}
|
|
3936
3938
|
return parseResult2(ParseResult.INCOMPLETE);
|
|
3937
3939
|
}
|
|
@@ -72161,13 +72163,11 @@ async function buildIndexStreamingAsync(source, parser211, pool3, onRecordIndexe
|
|
|
72161
72163
|
};
|
|
72162
72164
|
}
|
|
72163
72165
|
}
|
|
72164
|
-
function buildColumnarIndexStreaming(source, parser211, pool3, onRecordIndexed) {
|
|
72165
|
-
const sink = new ColumnarIndexSink();
|
|
72166
|
+
function buildColumnarIndexStreaming(source, parser211, pool3, onRecordIndexed, sink = new ColumnarIndexSink()) {
|
|
72166
72167
|
const { header, result, stats } = buildIndexStreaming(source, parser211, pool3, onRecordIndexed, sink);
|
|
72167
72168
|
return { header, columns: sink.finalize(), result, stats };
|
|
72168
72169
|
}
|
|
72169
|
-
async function buildColumnarIndexStreamingAsync(source, parser211, pool3, onRecordIndexed, onProgress, yieldIntervalMs) {
|
|
72170
|
-
const sink = new ColumnarIndexSink();
|
|
72170
|
+
async function buildColumnarIndexStreamingAsync(source, parser211, pool3, onRecordIndexed, onProgress, yieldIntervalMs, sink = new ColumnarIndexSink()) {
|
|
72171
72171
|
const { header, result, stats } = await buildIndexStreamingAsync(source, parser211, pool3, onRecordIndexed, sink, onProgress, yieldIntervalMs);
|
|
72172
72172
|
return { header, columns: sink.finalize(), result, stats };
|
|
72173
72173
|
}
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
import EntityTypesIfc from "./ifc4_gen/entity_types_ifc.gen.js";
|
|
2
|
+
import IfcStepParser from "./ifc_step_parser.js";
|
|
3
|
+
import { StreamingRecordDispatcher } from "../step/parsing/streaming_record_dispatcher.js";
|
|
4
|
+
/** One node of the skeleton: what a tree row needs, and nothing else. */
|
|
5
|
+
export interface SkeletonNode {
|
|
6
|
+
/** The record's express ID. */
|
|
7
|
+
expressID: number;
|
|
8
|
+
/** The record's concrete type. */
|
|
9
|
+
type: EntityTypesIfc;
|
|
10
|
+
/** `Name`, when the record carried one. */
|
|
11
|
+
name?: string;
|
|
12
|
+
/** `LongName`, for spatial elements that carried one. */
|
|
13
|
+
longName?: string;
|
|
14
|
+
/** `GlobalId`, when the record carried one. */
|
|
15
|
+
globalId?: string;
|
|
16
|
+
/** Children, in the order their relationships were parsed. */
|
|
17
|
+
children: SkeletonNode[];
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* The spatial **names skeleton** (M2, issue #393): project → site → building →
|
|
21
|
+
* storey → product, with names, built from the streaming parse's record events
|
|
22
|
+
* so the tree can be shown while the model is still loading.
|
|
23
|
+
*
|
|
24
|
+
* This is the one standard consumer that genuinely belongs on the event path,
|
|
25
|
+
* and the reason is the record's *bytes*. Everything else M2 wanted —
|
|
26
|
+
* membership, counts, ids — is in the columnar index and is cheaper (and, for
|
|
27
|
+
* complex records, only correct) when derived from a prefix snapshot; see
|
|
28
|
+
* {@link import('../step/parsing/prefix_type_index').PrefixTypeIndex}. Names
|
|
29
|
+
* and relationship edges are not in the columns, and after the parse they cost
|
|
30
|
+
* a second pass that pages every relationship and every named record back in
|
|
31
|
+
* through the windowed provider — which is exactly what Share's post-parse
|
|
32
|
+
* `'names'` sweep does today.
|
|
33
|
+
*
|
|
34
|
+
* What runs per record is deliberately small: tokenize the record's attribute
|
|
35
|
+
* list, copy out at most three short strings, and append two integers per
|
|
36
|
+
* edge. Nothing is resolved and no tree is built until {@link tree} is called —
|
|
37
|
+
* "resolvable" therefore means "present when you asked", and a file that
|
|
38
|
+
* forward-references its way through the spatial hierarchy simply resolves at
|
|
39
|
+
* end of stream, with no pending-reference table to maintain.
|
|
40
|
+
*
|
|
41
|
+
* Idempotence: the streaming builder's grow-and-restart re-fires records from
|
|
42
|
+
* localID 0. A non-ascending localID is taken as that restart and clears both
|
|
43
|
+
* the nodes and the edge columns, so a restarted parse rebuilds rather than
|
|
44
|
+
* doubling its edges.
|
|
45
|
+
*/
|
|
46
|
+
export declare class IfcSpatialSkeleton {
|
|
47
|
+
private readonly nodes_;
|
|
48
|
+
private edgeParents_;
|
|
49
|
+
private edgeChildren_;
|
|
50
|
+
private edgeCount_;
|
|
51
|
+
private readonly cursor_;
|
|
52
|
+
private lastLocalID_;
|
|
53
|
+
/**
|
|
54
|
+
* @param parser The IFC parser whose tokenizer reads the record bytes.
|
|
55
|
+
* Defaults to the singleton the streaming open uses.
|
|
56
|
+
*/
|
|
57
|
+
constructor(parser?: IfcStepParser);
|
|
58
|
+
/**
|
|
59
|
+
* Subscribe this skeleton to a dispatcher — the object definitions it names
|
|
60
|
+
* and the two relationship types it draws edges from.
|
|
61
|
+
*
|
|
62
|
+
* @param dispatcher The dispatcher fed by the streaming parse.
|
|
63
|
+
*/
|
|
64
|
+
subscribe(dispatcher: StreamingRecordDispatcher<EntityTypesIfc>): void;
|
|
65
|
+
/**
|
|
66
|
+
* @return {number} Nodes seen so far (children not yet linked).
|
|
67
|
+
*/
|
|
68
|
+
get nodeCount(): number;
|
|
69
|
+
/**
|
|
70
|
+
* @return {number} Containment edges captured so far.
|
|
71
|
+
*/
|
|
72
|
+
get edgeCount(): number;
|
|
73
|
+
/**
|
|
74
|
+
* Record a named object definition. Bound for direct use as a subscription.
|
|
75
|
+
*
|
|
76
|
+
* @param localID The record's dense local ID.
|
|
77
|
+
* @param expressID The record's express ID.
|
|
78
|
+
* @param typeID The record's concrete type.
|
|
79
|
+
* @param buffer The live parse window holding the record.
|
|
80
|
+
* @param byteOffset Offset of the record's attribute list in `buffer`.
|
|
81
|
+
* @param byteLength Length of the attribute list.
|
|
82
|
+
*/
|
|
83
|
+
private readonly handleObject;
|
|
84
|
+
/**
|
|
85
|
+
* Where this type keeps `LongName`, if it has one.
|
|
86
|
+
*
|
|
87
|
+
* @param typeID The record's concrete type.
|
|
88
|
+
* @return {number | undefined} The attribute index, or undefined for types
|
|
89
|
+
* that carry no `LongName` at all.
|
|
90
|
+
*/
|
|
91
|
+
private longNameAttribute;
|
|
92
|
+
/**
|
|
93
|
+
* Record the containment edges of one relationship. Bound for direct use as
|
|
94
|
+
* a subscription.
|
|
95
|
+
*
|
|
96
|
+
* @param localID The record's dense local ID.
|
|
97
|
+
* @param expressID The record's express ID.
|
|
98
|
+
* @param typeID The record's concrete type.
|
|
99
|
+
* @param buffer The live parse window holding the record.
|
|
100
|
+
* @param byteOffset Offset of the record's attribute list in `buffer`.
|
|
101
|
+
* @param byteLength Length of the attribute list.
|
|
102
|
+
*/
|
|
103
|
+
private readonly handleRelationship;
|
|
104
|
+
/**
|
|
105
|
+
* Reset if the parse restarted. localIDs ascend strictly within a run, so a
|
|
106
|
+
* localID that does not exceed the last one seen means the streaming
|
|
107
|
+
* builder hit its grow-and-restart valve and is re-firing from 0. Testing
|
|
108
|
+
* for `localID === 0` would not do: this consumer only sees its subscribed
|
|
109
|
+
* types, and record 0 is rarely one of them.
|
|
110
|
+
*
|
|
111
|
+
* @param localID The record's dense local ID.
|
|
112
|
+
*/
|
|
113
|
+
private noteRestart;
|
|
114
|
+
/**
|
|
115
|
+
* Append one containment edge, growing the columns as needed.
|
|
116
|
+
*
|
|
117
|
+
* @param parent Express ID of the containing entity.
|
|
118
|
+
* @param child Express ID of the contained entity.
|
|
119
|
+
*/
|
|
120
|
+
private pushEdge;
|
|
121
|
+
/**
|
|
122
|
+
* Look one node up without building the tree.
|
|
123
|
+
*
|
|
124
|
+
* @param expressID The express ID.
|
|
125
|
+
* @return {SkeletonNode | undefined} The node, if it has been parsed.
|
|
126
|
+
*/
|
|
127
|
+
node(expressID: number): SkeletonNode | undefined;
|
|
128
|
+
/**
|
|
129
|
+
* Build the tree over everything parsed so far and return its roots — nodes
|
|
130
|
+
* that are nobody's child. That is the project once it has been seen, plus
|
|
131
|
+
* whatever a prefix has not reached the parent of yet, plus the object
|
|
132
|
+
* definitions that genuinely hang outside the spatial hierarchy (type
|
|
133
|
+
* objects, ungrouped actors); a caller that wants strictly the spatial tree
|
|
134
|
+
* should walk down from the project's express ID rather than treat every
|
|
135
|
+
* root as spatial.
|
|
136
|
+
*
|
|
137
|
+
* Each call relinks children from the edge columns, so a caller may call it
|
|
138
|
+
* repeatedly as the parse advances; the returned nodes are the live ones, so
|
|
139
|
+
* a previously returned tree is not a snapshot.
|
|
140
|
+
*
|
|
141
|
+
* @return {SkeletonNode[]} The roots, in parse order.
|
|
142
|
+
*/
|
|
143
|
+
tree(): SkeletonNode[];
|
|
144
|
+
}
|
|
145
|
+
//# sourceMappingURL=ifc_spatial_skeleton.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ifc_spatial_skeleton.d.ts","sourceRoot":"","sources":["../../../src/ifc/ifc_spatial_skeleton.ts"],"names":[],"mappings":"AAEA,OAAO,cAAc,MAAM,iCAAiC,CAAA;AAQ5D,OAAO,aAAa,MAAM,mBAAmB,CAAA;AAC7C,OAAO,EAAE,yBAAyB,EAAE,MAAM,6CAA6C,CAAA;AAwCvF,yEAAyE;AACzE,MAAM,WAAW,YAAY;IAE3B,+BAA+B;IAC/B,SAAS,EAAE,MAAM,CAAA;IAEjB,kCAAkC;IAClC,IAAI,EAAE,cAAc,CAAA;IAEpB,2CAA2C;IAC3C,IAAI,CAAC,EAAE,MAAM,CAAA;IAEb,yDAAyD;IACzD,QAAQ,CAAC,EAAE,MAAM,CAAA;IAEjB,+CAA+C;IAC/C,QAAQ,CAAC,EAAE,MAAM,CAAA;IAEjB,8DAA8D;IAC9D,QAAQ,EAAE,YAAY,EAAE,CAAA;CACzB;AAGD;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,qBAAa,kBAAkB;IAE7B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAkC;IAEzD,OAAO,CAAC,YAAY,CAAmC;IAEvD,OAAO,CAAC,aAAa,CAAmC;IAExD,OAAO,CAAC,UAAU,CAAI;IAEtB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAmC;IAE3D,OAAO,CAAC,YAAY,CAAK;IAEzB;;;OAGG;gBACU,MAAM,GAAE,aAAsC;IAI3D;;;;;OAKG;IACI,SAAS,CAAE,UAAU,EAAE,yBAAyB,CAAC,cAAc,CAAC,GAAI,IAAI;IAM/E;;OAEG;IACH,IAAW,SAAS,IAAI,MAAM,CAE7B;IAED;;OAEG;IACH,IAAW,SAAS,IAAI,MAAM,CAE7B;IAED;;;;;;;;;OASG;IACH,OAAO,CAAC,QAAQ,CAAC,YAAY,CA6C5B;IAED;;;;;;OAMG;IACH,OAAO,CAAC,iBAAiB;IAQzB;;;;;;;;;;OAUG;IACH,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAoClC;IAED;;;;;;;;OAQG;IACH,OAAO,CAAC,WAAW;IASnB;;;;;OAKG;IACH,OAAO,CAAC,QAAQ;IAiBhB;;;;;OAKG;IACI,IAAI,CAAE,SAAS,EAAE,MAAM,GAAI,YAAY,GAAG,SAAS;IAI1D;;;;;;;;;;;;;;OAcG;IACI,IAAI,IAAI,YAAY,EAAE;CAgC9B"}
|