@bldrs-ai/conway 1.502.1421 → 1.509.1435
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/Dist/ConwayGeomWasmNode.js +0 -0
- package/compiled/Dist/ConwayGeomWasmNodeMT.js +0 -0
- package/compiled/Dist/ConwayGeomWasmWeb.js +0 -0
- package/compiled/Dist/ConwayGeomWasmWebMT.js +1 -1
- package/compiled/Dist/ConwayGeomWasmWebMT.wasm +0 -0
- package/compiled/dependencies/conway-geom/Dist/ConwayGeomWasmNode.js +0 -0
- package/compiled/dependencies/conway-geom/Dist/ConwayGeomWasmNodeMT.js +0 -0
- package/compiled/dependencies/conway-geom/Dist/ConwayGeomWasmWeb.js +0 -0
- package/compiled/dependencies/conway-geom/Dist/ConwayGeomWasmWebMT.js +1 -1
- package/compiled/dependencies/conway-geom/Dist/ConwayGeomWasmWebMT.wasm +0 -0
- package/compiled/dependencies/conway-geom/interface/conway_geometry.d.ts +19 -0
- package/compiled/dependencies/conway-geom/interface/conway_geometry.d.ts.map +1 -1
- package/compiled/dependencies/conway-geom/interface/conway_geometry.js +17 -0
- package/compiled/examples/browser-bundled.cjs +132 -21
- package/compiled/examples/cli-bundled.cjs +189 -57
- package/compiled/examples/cli-step-bundled.cjs +156 -28
- package/compiled/examples/validator-bundled.cjs +132 -21
- package/compiled/src/compat/web-ifc/coordination_export_order.test.d.ts +2 -0
- package/compiled/src/compat/web-ifc/coordination_export_order.test.d.ts.map +1 -0
- package/compiled/src/compat/web-ifc/coordination_export_order.test.js +110 -0
- package/compiled/src/compat/web-ifc/coordination_f64.d.ts +60 -1
- package/compiled/src/compat/web-ifc/coordination_f64.d.ts.map +1 -1
- package/compiled/src/compat/web-ifc/coordination_f64.js +103 -8
- package/compiled/src/compat/web-ifc/coordination_f64.test.js +115 -30
- package/compiled/src/ifc/ifc_geometry_extraction.d.ts +0 -1
- package/compiled/src/ifc/ifc_geometry_extraction.d.ts.map +1 -1
- package/compiled/src/ifc/ifc_geometry_extraction.js +34 -44
- package/compiled/src/step/parsing/uint32_sink.d.ts +20 -0
- package/compiled/src/step/parsing/uint32_sink.d.ts.map +1 -1
- package/compiled/src/step/parsing/uint32_sink.js +95 -0
- package/compiled/src/step/parsing/uint32_sink.test.js +41 -1
- package/compiled/src/step/step_model_base.d.ts +32 -13
- package/compiled/src/step/step_model_base.d.ts.map +1 -1
- package/compiled/src/step/step_model_base.js +64 -24
- package/compiled/src/version/version.js +1 -1
- package/compiled/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
|
@@ -91,33 +91,52 @@ export default abstract class StepModelBase<EntityTypeIDs extends number, BaseEn
|
|
|
91
91
|
*/
|
|
92
92
|
invalidate(dropVtable?: boolean): void;
|
|
93
93
|
/**
|
|
94
|
-
*
|
|
94
|
+
* Resolve an express ID to a local ID, using `hintLocalID + 1` when
|
|
95
|
+
* the next record is the one we want. Tessellated Faces lists are
|
|
96
|
+
* sequential (PSB: every faceset), so this turns 9.1M interpolation
|
|
97
|
+
* searches into one per faceset.
|
|
95
98
|
*
|
|
96
|
-
* @param
|
|
97
|
-
* @
|
|
99
|
+
* @param expressID The referenced record.
|
|
100
|
+
* @param hintLocalID Local ID of the previous resolve, if any.
|
|
101
|
+
* @return {number | undefined} The local ID, or undefined if unknown.
|
|
98
102
|
*/
|
|
103
|
+
resolveExpressID(expressID: number, hintLocalID?: number): number | undefined;
|
|
99
104
|
/**
|
|
100
|
-
* Append a
|
|
101
|
-
* without
|
|
102
|
-
*
|
|
103
|
-
* This is the reference-level twin of
|
|
105
|
+
* Append a local record's unsigned-integer list field into `sink`
|
|
106
|
+
* without an express-ID lookup. The reference-level twin of
|
|
104
107
|
* `StepEntityBase.extractIntegerArrayInto`, for hot loops that walk
|
|
105
108
|
* millions of small records (tessellated facesets) where constructing
|
|
106
109
|
* an entity per record dominates. It deliberately handles only the
|
|
107
110
|
* simple case and reports failure otherwise, so callers keep a
|
|
108
111
|
* correct fallback rather than this growing subtle special cases:
|
|
109
|
-
* the
|
|
110
|
-
*
|
|
111
|
-
*
|
|
112
|
-
*
|
|
113
|
-
*
|
|
112
|
+
* the record must be single-class (no multi-mapping) and exactly
|
|
113
|
+
* `expectedTypeID`.
|
|
114
|
+
*
|
|
115
|
+
* Field 0 is the data-block start the parser stored in `address_`
|
|
116
|
+
* (after `TYPE(`). Reading it from the columns skips the descriptor
|
|
117
|
+
* and vtable `entry()` would retain — on a 9 M-face model those are
|
|
118
|
+
* the objects the faceset path is trying not to build. Non-zero
|
|
119
|
+
* offsets still go through a vtable, because only field 0 has that
|
|
120
|
+
* address identity.
|
|
121
|
+
*
|
|
122
|
+
* @param localID The record's local ID.
|
|
123
|
+
* @param offset The field's vtable offset.
|
|
124
|
+
* @param expectedTypeID The type the record must be.
|
|
125
|
+
* @param sink Receives the appended values.
|
|
126
|
+
* @return {number | undefined} Count appended, or undefined when the
|
|
127
|
+
* fast path does not apply.
|
|
128
|
+
*/
|
|
129
|
+
extractIntegerArrayByLocalIDInto(localID: number, offset: number, expectedTypeID: EntityTypeIDs, sink: Uint32Sink): number | undefined;
|
|
130
|
+
/**
|
|
131
|
+
* Append a referenced record's unsigned-integer list field into `sink`
|
|
132
|
+
* without materialising the referenced entity.
|
|
114
133
|
*
|
|
115
134
|
* @param expressID The referenced record's express ID.
|
|
116
135
|
* @param offset The field's vtable offset within the record.
|
|
117
136
|
* @param expectedTypeID The type the record must be.
|
|
118
137
|
* @param sink Receives the appended values.
|
|
119
138
|
* @return {number | undefined} Count appended, or undefined when the
|
|
120
|
-
* fast path does not apply
|
|
139
|
+
* fast path does not apply.
|
|
121
140
|
*/
|
|
122
141
|
extractIntegerArrayByExpressIDInto(expressID: number, offset: number, expectedTypeID: EntityTypeIDs, sink: Uint32Sink): number | undefined;
|
|
123
142
|
populateVtableEntryRaw(element: StepEntityInternalReference<EntityTypeIDs>): boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"step_model_base.d.ts","sourceRoot":"","sources":["../../../src/step/step_model_base.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAA;AAE3D,OAAO,EAEL,kBAAkB,EAClB,qBAAqB,EAEtB,MAAM,wBAAwB,CAAA;AAE/B,OAAO,cAAc,MAAM,oBAAoB,CAAA;AAC/C,OAAO,gBAAgB,MAAM,sBAAsB,CAAA;AACnD,OAAO,EAAE,UAAU,EAAyB,MAAM,uBAAuB,CAAA;AACzE,OAAO,2BAAmE,MAAM,kCAAkC,CAAA;AAClH,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAA;AAE5D,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAA;AAC3D,OAAO,qBAAqB,EAAE,EAAE,6BAA6B,EAAE,MAAM,2BAA2B,CAAA;AAChG,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AACpD,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAA;AAGlE,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAA;AAC9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAA;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAA;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAA;AAGxD;;GAEG;AACH,MAAM,CAAC,OAAO,CAAC,QAAQ,OAAO,aAAa,CACzC,aAAa,SAAS,MAAM,EAC5B,UAAU,SAAS,cAAc,CAAC,aAAa,CAAC,GAAG,cAAc,CAAC,aAAa,CAAC,CAClF,YAAW,QAAQ,CAAC,UAAU,CAAC,EAAE,KAAK;aA+ElB,MAAM,EAAE,gBAAgB,CAAE,aAAa,EAAE,UAAU,CAAE;IACrE,OAAO,CAAC,OAAO;IA/EjB,kBAAyB,SAAS,EAAE,aAAa,CAAC,aAAa,CAAC,CAAA;IAChE,kBAAyB,mBAAmB,EAAE,qBAAqB,CAAE,aAAa,EAAE,UAAU,CAAE,CAAA;IAEhG,OAAO,CAAC,QAAQ,CAAC,cAAc,CAA6C;IAC5E,OAAO,CAAC,QAAQ,CAAC,aAAa,CAA4B;IAC1D,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAA4B;IAW9D,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAa;IACtC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAa;IACrC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAY;IACpC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAa;IACxC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAQ;IAC/B,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAQ;IAM5C,OAAO,CAAC,gBAAgB,CACgE;IAIxF,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC,CAC+C;IAQhF,OAAO,CAAC,eAAe,CAAoB;IAE3C;;;;;;;OAOG;IACI,kBAAkB,EAAE,OAAO,CAAO;IAEzC;;;OAGG;IACI,YAAY,EAAE,OAAO,CAAO;IAEnC,kBAAyB,SAAS,CAAC,EAAE,cAAc,CAAA;IAEnD,kBAAyB,QAAQ,CAAC,EAAE,aAAa,CAAA;IAEjD;;;;;;;;;;;;;OAaG;gBAEe,MAAM,EAAE,gBAAgB,CAAE,aAAa,EAAE,UAAU,CAAE,EAC7D,OAAO,EAAE,UAAU,GAAG,SAAS,EACvC,YAAY,EAAE,cAAc,CAAC,aAAa,CAAC,EAAE,GAAG,gBAAgB,CAAC,aAAa,CAAC,EAC/E,QAAQ,CAAC,EAAE,kBAAkB;IAuJ/B;;;;;;;OAOG;IACH,OAAO,CAAC,cAAc;IActB;;;;;;;OAOG;IACH,OAAO,CAAC,KAAK;IAsBb;;;;;OAKG;IACI,UAAU,CAAE,UAAU,GAAE,OAAe,GAAI,IAAI;IAsEtD
|
|
1
|
+
{"version":3,"file":"step_model_base.d.ts","sourceRoot":"","sources":["../../../src/step/step_model_base.ts"],"names":[],"mappings":"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"}
|
|
@@ -242,45 +242,67 @@ export default class StepModelBase {
|
|
|
242
242
|
}
|
|
243
243
|
}
|
|
244
244
|
/**
|
|
245
|
-
*
|
|
246
|
-
*
|
|
247
|
-
*
|
|
248
|
-
*
|
|
249
|
-
|
|
245
|
+
* Resolve an express ID to a local ID, using `hintLocalID + 1` when
|
|
246
|
+
* the next record is the one we want. Tessellated Faces lists are
|
|
247
|
+
* sequential (PSB: every faceset), so this turns 9.1M interpolation
|
|
248
|
+
* searches into one per faceset.
|
|
249
|
+
*
|
|
250
|
+
* @param expressID The referenced record.
|
|
251
|
+
* @param hintLocalID Local ID of the previous resolve, if any.
|
|
252
|
+
* @return {number | undefined} The local ID, or undefined if unknown.
|
|
253
|
+
*/
|
|
254
|
+
resolveExpressID(expressID, hintLocalID) {
|
|
255
|
+
if (hintLocalID !== void 0) {
|
|
256
|
+
const next = hintLocalID + 1;
|
|
257
|
+
if (next < this.firstInlineElement_ &&
|
|
258
|
+
this.expressID_[next] === expressID) {
|
|
259
|
+
return next;
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
return this.expressIDMap_.get(expressID);
|
|
263
|
+
}
|
|
250
264
|
/**
|
|
251
|
-
* Append a
|
|
252
|
-
* without
|
|
253
|
-
*
|
|
254
|
-
* This is the reference-level twin of
|
|
265
|
+
* Append a local record's unsigned-integer list field into `sink`
|
|
266
|
+
* without an express-ID lookup. The reference-level twin of
|
|
255
267
|
* `StepEntityBase.extractIntegerArrayInto`, for hot loops that walk
|
|
256
268
|
* millions of small records (tessellated facesets) where constructing
|
|
257
269
|
* an entity per record dominates. It deliberately handles only the
|
|
258
270
|
* simple case and reports failure otherwise, so callers keep a
|
|
259
271
|
* correct fallback rather than this growing subtle special cases:
|
|
260
|
-
* the
|
|
261
|
-
*
|
|
262
|
-
*
|
|
263
|
-
*
|
|
264
|
-
*
|
|
265
|
-
*
|
|
266
|
-
*
|
|
267
|
-
*
|
|
272
|
+
* the record must be single-class (no multi-mapping) and exactly
|
|
273
|
+
* `expectedTypeID`.
|
|
274
|
+
*
|
|
275
|
+
* Field 0 is the data-block start the parser stored in `address_`
|
|
276
|
+
* (after `TYPE(`). Reading it from the columns skips the descriptor
|
|
277
|
+
* and vtable `entry()` would retain — on a 9 M-face model those are
|
|
278
|
+
* the objects the faceset path is trying not to build. Non-zero
|
|
279
|
+
* offsets still go through a vtable, because only field 0 has that
|
|
280
|
+
* address identity.
|
|
281
|
+
*
|
|
282
|
+
* @param localID The record's local ID.
|
|
283
|
+
* @param offset The field's vtable offset.
|
|
268
284
|
* @param expectedTypeID The type the record must be.
|
|
269
285
|
* @param sink Receives the appended values.
|
|
270
286
|
* @return {number | undefined} Count appended, or undefined when the
|
|
271
|
-
* fast path does not apply
|
|
287
|
+
* fast path does not apply.
|
|
272
288
|
*/
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
if (localID === void 0 || localID >= this.count_) {
|
|
289
|
+
extractIntegerArrayByLocalIDInto(localID, offset, expectedTypeID, sink) {
|
|
290
|
+
if (localID >= this.count_) {
|
|
276
291
|
return void 0;
|
|
277
292
|
}
|
|
278
|
-
const element = this.entry(localID);
|
|
279
293
|
// Multi-mapped records need per-depth base offsets; leave them to
|
|
280
|
-
// the generated getters.
|
|
281
|
-
if (
|
|
294
|
+
// the generated getters. typeID_ is -1 when unset.
|
|
295
|
+
if (this.complexEntries_?.has(localID) ||
|
|
296
|
+
this.typeID_[localID] !== expectedTypeID) {
|
|
282
297
|
return void 0;
|
|
283
298
|
}
|
|
299
|
+
if (offset === 0) {
|
|
300
|
+
const address = this.address_[localID];
|
|
301
|
+
const acquisition = this.bufferProvider_.acquire(address, this.length_[localID]);
|
|
302
|
+
const viewAddress = address - acquisition.offset;
|
|
303
|
+
return extractIntegerArrayAt(acquisition.buffer, viewAddress, acquisition.buffer.length, sink);
|
|
304
|
+
}
|
|
305
|
+
const element = this.entry(localID);
|
|
284
306
|
if (element.vtableIndex === void 0 && !this.populateVtableEntryRaw(element)) {
|
|
285
307
|
return void 0;
|
|
286
308
|
}
|
|
@@ -294,6 +316,24 @@ export default class StepModelBase {
|
|
|
294
316
|
// same end bound the generated array getters use.
|
|
295
317
|
return extractIntegerArrayAt(buffer, vtable[element.vtableIndex + offset], buffer.length, sink);
|
|
296
318
|
}
|
|
319
|
+
/**
|
|
320
|
+
* Append a referenced record's unsigned-integer list field into `sink`
|
|
321
|
+
* without materialising the referenced entity.
|
|
322
|
+
*
|
|
323
|
+
* @param expressID The referenced record's express ID.
|
|
324
|
+
* @param offset The field's vtable offset within the record.
|
|
325
|
+
* @param expectedTypeID The type the record must be.
|
|
326
|
+
* @param sink Receives the appended values.
|
|
327
|
+
* @return {number | undefined} Count appended, or undefined when the
|
|
328
|
+
* fast path does not apply.
|
|
329
|
+
*/
|
|
330
|
+
extractIntegerArrayByExpressIDInto(expressID, offset, expectedTypeID, sink) {
|
|
331
|
+
const localID = this.expressIDMap_.get(expressID);
|
|
332
|
+
if (localID === void 0) {
|
|
333
|
+
return void 0;
|
|
334
|
+
}
|
|
335
|
+
return this.extractIntegerArrayByLocalIDInto(localID, offset, expectedTypeID, sink);
|
|
336
|
+
}
|
|
297
337
|
populateVtableEntryRaw(element) {
|
|
298
338
|
if (element.vtableIndex !== void 0 || element.typeID === 0) {
|
|
299
339
|
return true;
|
|
@@ -5,5 +5,5 @@
|
|
|
5
5
|
// only the first segment (major) is meaningful and is the one CI carries forward.
|
|
6
6
|
// Must stay in `vN.N.N` shape: the CI stamp regex, scripts/updateVersion.mjs, and
|
|
7
7
|
// statistics.ts all match `v\d+\.\d+\.\d+`.
|
|
8
|
-
const versionString = 'Conway v1.
|
|
8
|
+
const versionString = 'Conway v1.509.1435';
|
|
9
9
|
export { versionString };
|