@ifc-lite/parser 4.3.1 → 5.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/attribute-helpers.d.ts +38 -4
- package/dist/attribute-helpers.d.ts.map +1 -1
- package/dist/attribute-helpers.js +71 -4
- package/dist/attribute-helpers.js.map +1 -1
- package/dist/columnar-parser-attributes.d.ts.map +1 -1
- package/dist/columnar-parser-attributes.js +35 -5
- package/dist/columnar-parser-attributes.js.map +1 -1
- package/dist/columnar-parser-indexes.d.ts.map +1 -1
- package/dist/columnar-parser-indexes.js +17 -2
- package/dist/columnar-parser-indexes.js.map +1 -1
- package/dist/columnar-parser-relationships.d.ts.map +1 -1
- package/dist/columnar-parser-relationships.js +6 -1
- package/dist/columnar-parser-relationships.js.map +1 -1
- package/dist/columnar-parser.d.ts +3 -1
- package/dist/columnar-parser.d.ts.map +1 -1
- package/dist/columnar-parser.js +27 -76
- package/dist/columnar-parser.js.map +1 -1
- package/dist/compact-entity-index-transport.d.ts +23 -0
- package/dist/compact-entity-index-transport.d.ts.map +1 -0
- package/dist/compact-entity-index-transport.js +28 -0
- package/dist/compact-entity-index-transport.js.map +1 -0
- package/dist/compact-entity-index.d.ts +0 -10
- package/dist/compact-entity-index.d.ts.map +1 -1
- package/dist/compact-entity-index.js +31 -24
- package/dist/compact-entity-index.js.map +1 -1
- package/dist/data-store-transport.d.ts +2 -12
- package/dist/data-store-transport.d.ts.map +1 -1
- package/dist/data-store-transport.js +7 -20
- package/dist/data-store-transport.js.map +1 -1
- package/dist/entity-extractor.d.ts.map +1 -1
- package/dist/entity-extractor.js +101 -6
- package/dist/entity-extractor.js.map +1 -1
- package/dist/entity-refs-from-index.d.ts.map +1 -1
- package/dist/entity-refs-from-index.js +12 -2
- package/dist/entity-refs-from-index.js.map +1 -1
- package/dist/entity-scanner.d.ts +63 -0
- package/dist/entity-scanner.d.ts.map +1 -1
- package/dist/entity-scanner.js +79 -2
- package/dist/entity-scanner.js.map +1 -1
- package/dist/express-id.d.ts +47 -0
- package/dist/express-id.d.ts.map +1 -0
- package/dist/express-id.js +57 -0
- package/dist/express-id.js.map +1 -0
- package/dist/generated/entities.d.ts +1 -1
- package/dist/generated/entities.d.ts.map +1 -1
- package/dist/generated/schema-registry.js +146 -146
- package/dist/generated/schema-registry.js.map +1 -1
- package/dist/georef-epset.d.ts +25 -0
- package/dist/georef-epset.d.ts.map +1 -0
- package/dist/georef-epset.js +214 -0
- package/dist/georef-epset.js.map +1 -0
- package/dist/georef-extractor.d.ts +9 -12
- package/dist/georef-extractor.d.ts.map +1 -1
- package/dist/georef-extractor.js +66 -304
- package/dist/georef-extractor.js.map +1 -1
- package/dist/georef-map-conversion.d.ts +29 -0
- package/dist/georef-map-conversion.d.ts.map +1 -0
- package/dist/georef-map-conversion.js +75 -0
- package/dist/georef-map-conversion.js.map +1 -0
- package/dist/georef-transform.d.ts +25 -0
- package/dist/georef-transform.d.ts.map +1 -0
- package/dist/georef-transform.js +97 -0
- package/dist/georef-transform.js.map +1 -0
- package/dist/ifc-schema.d.ts +4 -2
- package/dist/ifc-schema.d.ts.map +1 -1
- package/dist/ifc-schema.js +15 -5
- package/dist/ifc-schema.js.map +1 -1
- package/dist/index.d.ts +5 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -2
- package/dist/index.js.map +1 -1
- package/dist/map-unit-label.d.ts +43 -0
- package/dist/map-unit-label.d.ts.map +1 -0
- package/dist/map-unit-label.js +140 -0
- package/dist/map-unit-label.js.map +1 -0
- package/dist/material-extractor.d.ts +2 -17
- package/dist/material-extractor.d.ts.map +1 -1
- package/dist/material-extractor.js +12 -37
- package/dist/material-extractor.js.map +1 -1
- package/dist/material-layer-reader.d.ts +45 -0
- package/dist/material-layer-reader.d.ts.map +1 -0
- package/dist/material-layer-reader.js +63 -0
- package/dist/material-layer-reader.js.map +1 -0
- package/dist/material-resolver.d.ts.map +1 -1
- package/dist/material-resolver.js +14 -14
- package/dist/material-resolver.js.map +1 -1
- package/dist/measure-unit-scale.d.ts +41 -0
- package/dist/measure-unit-scale.d.ts.map +1 -0
- package/dist/measure-unit-scale.js +53 -0
- package/dist/measure-unit-scale.js.map +1 -0
- package/dist/on-demand-cache.d.ts +3 -0
- package/dist/on-demand-cache.d.ts.map +1 -0
- package/dist/on-demand-cache.js +25 -0
- package/dist/on-demand-cache.js.map +1 -0
- package/dist/on-demand-extractors.d.ts +5 -21
- package/dist/on-demand-extractors.d.ts.map +1 -1
- package/dist/on-demand-extractors.js +64 -437
- package/dist/on-demand-extractors.js.map +1 -1
- package/dist/on-demand-georeferencing.d.ts +19 -0
- package/dist/on-demand-georeferencing.d.ts.map +1 -0
- package/dist/on-demand-georeferencing.js +139 -0
- package/dist/on-demand-georeferencing.js.map +1 -0
- package/dist/owning-project.d.ts +54 -0
- package/dist/owning-project.d.ts.map +1 -0
- package/dist/owning-project.js +76 -0
- package/dist/owning-project.js.map +1 -0
- package/dist/parser.worker.d.ts +14 -0
- package/dist/parser.worker.d.ts.map +1 -1
- package/dist/parser.worker.js +2 -0
- package/dist/parser.worker.js.map +1 -1
- package/dist/project-units-symbols.d.ts +33 -0
- package/dist/project-units-symbols.d.ts.map +1 -0
- package/dist/project-units-symbols.js +265 -0
- package/dist/project-units-symbols.js.map +1 -0
- package/dist/project-units.d.ts +11 -19
- package/dist/project-units.d.ts.map +1 -1
- package/dist/project-units.js +9 -267
- package/dist/project-units.js.map +1 -1
- package/dist/property-set-merge.d.ts +65 -8
- package/dist/property-set-merge.d.ts.map +1 -1
- package/dist/property-set-merge.js +130 -29
- package/dist/property-set-merge.js.map +1 -1
- package/dist/property-value-parser.d.ts +55 -0
- package/dist/property-value-parser.d.ts.map +1 -0
- package/dist/property-value-parser.js +277 -0
- package/dist/property-value-parser.js.map +1 -0
- package/dist/quantity-collect.d.ts +135 -0
- package/dist/quantity-collect.d.ts.map +1 -0
- package/dist/quantity-collect.js +253 -0
- package/dist/quantity-collect.js.map +1 -0
- package/dist/query-backend-maps.d.ts +5 -8
- package/dist/query-backend-maps.d.ts.map +1 -1
- package/dist/query-backend-maps.js +159 -15
- package/dist/query-backend-maps.js.map +1 -1
- package/dist/relationship-extractor.d.ts.map +1 -1
- package/dist/relationship-extractor.js +18 -0
- package/dist/relationship-extractor.js.map +1 -1
- package/dist/scan-entities-balanced.d.ts +38 -0
- package/dist/scan-entities-balanced.d.ts.map +1 -0
- package/dist/scan-entities-balanced.js +258 -0
- package/dist/scan-entities-balanced.js.map +1 -0
- package/dist/scan-worker-inline.d.ts +17 -11
- package/dist/scan-worker-inline.d.ts.map +1 -1
- package/dist/scan-worker-inline.js +9 -235
- package/dist/scan-worker-inline.js.map +1 -1
- package/dist/scan-worker-source.d.ts +9 -0
- package/dist/scan-worker-source.d.ts.map +1 -0
- package/dist/scan-worker-source.js +383 -0
- package/dist/scan-worker-source.js.map +1 -0
- package/dist/source-header.d.ts +23 -1
- package/dist/source-header.d.ts.map +1 -1
- package/dist/source-header.js +133 -43
- package/dist/source-header.js.map +1 -1
- package/dist/spatial-hierarchy-builder.js +3 -3
- package/dist/spatial-hierarchy-builder.js.map +1 -1
- package/dist/step-lexing.d.ts +94 -0
- package/dist/step-lexing.d.ts.map +1 -1
- package/dist/step-lexing.js +292 -25
- package/dist/step-lexing.js.map +1 -1
- package/dist/step-trivia.d.ts +60 -0
- package/dist/step-trivia.d.ts.map +1 -0
- package/dist/step-trivia.js +63 -0
- package/dist/step-trivia.js.map +1 -0
- package/dist/tokenizer.d.ts +20 -21
- package/dist/tokenizer.d.ts.map +1 -1
- package/dist/tokenizer.js +164 -203
- package/dist/tokenizer.js.map +1 -1
- package/dist/unit-extractor.d.ts +56 -1
- package/dist/unit-extractor.d.ts.map +1 -1
- package/dist/unit-extractor.js +80 -6
- package/dist/unit-extractor.js.map +1 -1
- package/dist/worker-parser.d.ts +11 -1
- package/dist/worker-parser.d.ts.map +1 -1
- package/dist/worker-parser.js +16 -2
- package/dist/worker-parser.js.map +1 -1
- package/package.json +6 -6
|
@@ -19,24 +19,9 @@
|
|
|
19
19
|
*/
|
|
20
20
|
import { StringTable, entityTableFromColumns, entityTableToColumns, propertyTableFromColumns, propertyTableToColumns, quantityTableFromColumns, quantityTableToColumns, relationshipGraphFromColumns, relationshipGraphToColumns, findStoreyByElevation, } from '@ifc-lite/data';
|
|
21
21
|
import { CompactEntityIndex } from './compact-entity-index.js';
|
|
22
|
+
import { compactEntityIndexFromColumns, compactEntityIndexToColumns, } from './compact-entity-index-transport.js';
|
|
22
23
|
import { asSourceBytes } from './source-bytes.js';
|
|
23
24
|
import { attachDataStoreAccessors } from './data-store-accessors.js';
|
|
24
|
-
function compactEntityIndexToColumns(index) {
|
|
25
|
-
// CompactEntityIndex stores its arrays as private fields; access them
|
|
26
|
-
// through the prototype's documented columns. We rely on the public
|
|
27
|
-
// constructor's parameter order to define this contract.
|
|
28
|
-
const internal = index;
|
|
29
|
-
return {
|
|
30
|
-
expressIds: internal.expressIds,
|
|
31
|
-
byteOffsets: internal.byteOffsets,
|
|
32
|
-
byteLengths: internal.byteLengths,
|
|
33
|
-
typeIndices: internal.typeIndices,
|
|
34
|
-
typeStrings: internal.typeStrings.slice(),
|
|
35
|
-
};
|
|
36
|
-
}
|
|
37
|
-
function compactEntityIndexFromColumns(columns) {
|
|
38
|
-
return new CompactEntityIndex(columns.expressIds, columns.byteOffsets, columns.byteLengths, columns.typeIndices, columns.typeStrings);
|
|
39
|
-
}
|
|
40
25
|
function serializeSpatialNode(node) {
|
|
41
26
|
return {
|
|
42
27
|
expressId: node.expressId,
|
|
@@ -194,6 +179,7 @@ export function collectTransferables(payload) {
|
|
|
194
179
|
for (const arr of [
|
|
195
180
|
payload.quantities.entityId,
|
|
196
181
|
payload.quantities.qsetName,
|
|
182
|
+
payload.quantities.qsetGlobalId,
|
|
197
183
|
payload.quantities.quantityName,
|
|
198
184
|
payload.quantities.quantityType,
|
|
199
185
|
payload.quantities.value,
|
|
@@ -201,11 +187,12 @@ export function collectTransferables(payload) {
|
|
|
201
187
|
payload.quantities.formula,
|
|
202
188
|
])
|
|
203
189
|
push(arr.buffer);
|
|
204
|
-
// RelationshipGraphColumns
|
|
190
|
+
// RelationshipGraphColumns. shadowed* (#3782) are absent unless an edge
|
|
191
|
+
// collapsed more than one IfcRel* instance.
|
|
205
192
|
for (const half of [payload.relationships.forward, payload.relationships.inverse]) {
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
193
|
+
for (const arr of [half.edgeTargets, half.edgeTypes, half.edgeRelIds, half.shadowedEdgeIndex, half.shadowedGroupOffsets, half.shadowedRelIds])
|
|
194
|
+
if (arr)
|
|
195
|
+
push(arr.buffer);
|
|
209
196
|
}
|
|
210
197
|
// De-duplicate: a typed array sliced from another aliases the same
|
|
211
198
|
// buffer, and listing the same Transferable twice throws.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data-store-transport.js","sourceRoot":"","sources":["../src/data-store-transport.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"data-store-transport.js","sourceRoot":"","sources":["../src/data-store-transport.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entity-extractor.d.ts","sourceRoot":"","sources":["../src/entity-extractor.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"entity-extractor.d.ts","sourceRoot":"","sources":["../src/entity-extractor.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACvD,OAAO,EAAiB,KAAK,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEvE,YAAY,EAAE,SAAS,EAAE,CAAC;AA+C1B,qBAAa,eAAe;IAC1B,OAAO,CAAC,MAAM,CAAiB;IAE/B;;;;;OAKG;gBACS,MAAM,EAAE,UAAU,GAAG,cAAc;IAI/C;;OAEG;IACH,aAAa,CAAC,GAAG,EAAE,SAAS,GAAG,SAAS,GAAG,IAAI;IAsD/C,OAAO,CAAC,eAAe;IAiFvB,OAAO,CAAC,mBAAmB;CA8J5B"}
|
package/dist/entity-extractor.js
CHANGED
|
@@ -6,10 +6,26 @@
|
|
|
6
6
|
*/
|
|
7
7
|
import { createLogger } from '@ifc-lite/data';
|
|
8
8
|
import { decodeIfcString } from '@ifc-lite/encoding';
|
|
9
|
+
import { isIndexableExpressId } from './express-id.js';
|
|
10
|
+
import { StepTextScan } from './step-lexing.js';
|
|
11
|
+
import { STEP_TRIVIA } from './step-trivia.js';
|
|
9
12
|
import { asSourceBytes } from './source-bytes.js';
|
|
10
13
|
const log = createLogger('EntityExtractor');
|
|
11
14
|
/** Maximum recursion depth for parsing nested structures (prevents DoS via deeply nested data) */
|
|
12
15
|
const MAX_PARSE_DEPTH = 100;
|
|
16
|
+
/**
|
|
17
|
+
* `#ID = TYPE(attr1, attr2, ...)`, with STEP trivia (whitespace and/or a
|
|
18
|
+
* `/* ... */` comment, #3789) tolerated between the type name and its `(`.
|
|
19
|
+
* Compiled once: `extractEntity` is on the hot path for every entity in a
|
|
20
|
+
* model.
|
|
21
|
+
*/
|
|
22
|
+
const ENTITY_RECORD_RE = new RegExp(`^#(\\d+)\\s*=\\s*(\\w+)${STEP_TRIVIA}\\(([\\s\\S]*)\\)`);
|
|
23
|
+
/**
|
|
24
|
+
* `TYPE(inner)` for a positional typed-value attribute, same trivia
|
|
25
|
+
* tolerance as {@link ENTITY_RECORD_RE}. Case-insensitive and dot-all
|
|
26
|
+
* (`is`) to match the regex it replaces.
|
|
27
|
+
*/
|
|
28
|
+
const TYPED_VALUE_RE = new RegExp(`^([A-Z][A-Z0-9_]*)${STEP_TRIVIA}\\((.+)\\)$`, 'is');
|
|
13
29
|
/**
|
|
14
30
|
* Is this raw source token a bare STEP enumeration token (`.USERDEFINED.`,
|
|
15
31
|
* `.T.`, `.FLAT_ROOF.`)? Mirrors the Rust tokenizer's `enum_value` rule —
|
|
@@ -56,10 +72,23 @@ export class EntityExtractor {
|
|
|
56
72
|
// source lines still match — `.` stops at the first newline and made
|
|
57
73
|
// extractEntity return null for ANY multi-line STEP record (lost
|
|
58
74
|
// storey/covering names + the on-demand attribute fallback).
|
|
59
|
-
|
|
75
|
+
// Trivia (whitespace and/or a comment) between the type name and `(`
|
|
76
|
+
// mirrors the Rust tokenizer's `ws` before its typed-value/entity
|
|
77
|
+
// paren (#3205): a STEP writer's line wrap, or a `/* ... */` comment,
|
|
78
|
+
// can land exactly there (e.g. `IFCSURFACESTYLERENDERING\r\n(#4,0.)`),
|
|
79
|
+
// and without it this regex returned null, silently hiding the
|
|
80
|
+
// entity from every downstream extractor keyed on extractEntity.
|
|
81
|
+
const match = entityText.match(ENTITY_RECORD_RE);
|
|
60
82
|
if (!match)
|
|
61
83
|
return null;
|
|
84
|
+
// `\d+` guarantees this is not NaN, but not that the id fits the 32-bit
|
|
85
|
+
// express-id columns every store below keys on: ids above 2^32 truncate
|
|
86
|
+
// mod 2^32 and collide with a real low id, and ids past 2^53 collide with
|
|
87
|
+
// each other while still accumulating. Refuse the record either way; see
|
|
88
|
+
// express-id.ts (#3395).
|
|
62
89
|
const expressId = parseInt(match[1], 10);
|
|
90
|
+
if (!isIndexableExpressId(expressId))
|
|
91
|
+
return null;
|
|
63
92
|
const type = match[2];
|
|
64
93
|
const paramsText = match[3];
|
|
65
94
|
// Parse attributes (simplified - handles basic types)
|
|
@@ -97,8 +126,27 @@ export class EntityExtractor {
|
|
|
97
126
|
let depth = 0;
|
|
98
127
|
let current = '';
|
|
99
128
|
let inString = false;
|
|
129
|
+
// Shared with source-header.ts's HEADER prescan: one comment-skip rule for
|
|
130
|
+
// decoded STEP text, not a fourth hand-rolled copy of it (#3673's
|
|
131
|
+
// follow-up). A comment's ',', "'", '(' or ')' must not be read as
|
|
132
|
+
// structure -- `#1=IFCWALL('a', /* rev; b */ $)` is one attribute pair,
|
|
133
|
+
// not a truncated one polluted with the comment's own text.
|
|
134
|
+
const trivia = new StepTextScan(paramsText);
|
|
100
135
|
for (let i = 0; i < paramsText.length; i++) {
|
|
101
136
|
const char = paramsText[i];
|
|
137
|
+
if (!inString && char === '/' && paramsText[i + 1] === '*') {
|
|
138
|
+
const end = trivia.skipLexicalAt(i);
|
|
139
|
+
if (end > i) {
|
|
140
|
+
// A comment is trivia, collapsed to one separator like whitespace --
|
|
141
|
+
// not omitted outright, so two tokens a comment sits between
|
|
142
|
+
// (`5/* c */6`) don't get spliced into one (`56`).
|
|
143
|
+
current += ' ';
|
|
144
|
+
i = end - 1;
|
|
145
|
+
continue;
|
|
146
|
+
}
|
|
147
|
+
// Unterminated: not a comment, per StepTextScan -- falls through and
|
|
148
|
+
// the lone '/' is read as ordinary text below.
|
|
149
|
+
}
|
|
102
150
|
if (char === "'") {
|
|
103
151
|
if (inString) {
|
|
104
152
|
// Check for escaped quote ('') - STEP uses doubled quotes
|
|
@@ -165,7 +213,13 @@ export class EntityExtractor {
|
|
|
165
213
|
// e.g. an IFCLABEL/IFCTEXT string an authoring tool broke across physical
|
|
166
214
|
// lines — is still unwrapped. Without it the match fails and the raw
|
|
167
215
|
// `IFCLABEL('...')` literal (mis-typed as a plain string) leaks to callers.
|
|
168
|
-
|
|
216
|
+
// Trivia between the type name and `(` handles the same wrap (or an
|
|
217
|
+
// embedded comment) landing there instead of inside the value (e.g.
|
|
218
|
+
// `IFCPOSITIVELENGTHMEASURE\r\n(1.)`); without it this fell through to
|
|
219
|
+
// the plain-string branch below, and a downstream conversion-unit reader
|
|
220
|
+
// (unit-extractor.ts) then defaulted an unreadable ValueComponent to
|
|
221
|
+
// conversionValue 1.0 instead of the real one.
|
|
222
|
+
const typedValueMatch = value.match(TYPED_VALUE_RE);
|
|
169
223
|
if (typedValueMatch) {
|
|
170
224
|
const typeName = typedValueMatch[1];
|
|
171
225
|
const innerValue = typedValueMatch[2].trim();
|
|
@@ -183,8 +237,19 @@ export class EntityExtractor {
|
|
|
183
237
|
let parenDepth = 0;
|
|
184
238
|
let current = '';
|
|
185
239
|
let inString = false;
|
|
240
|
+
// Same rule as parseAttributes above: a comment nested inside a list is
|
|
241
|
+
// trivia too, e.g. `(#1, /* skip */ #2)`.
|
|
242
|
+
const listTrivia = new StepTextScan(listContent);
|
|
186
243
|
for (let i = 0; i < listContent.length; i++) {
|
|
187
244
|
const char = listContent[i];
|
|
245
|
+
if (!inString && char === '/' && listContent[i + 1] === '*') {
|
|
246
|
+
const end = listTrivia.skipLexicalAt(i);
|
|
247
|
+
if (end > i) {
|
|
248
|
+
current += ' ';
|
|
249
|
+
i = end - 1;
|
|
250
|
+
continue;
|
|
251
|
+
}
|
|
252
|
+
}
|
|
188
253
|
if (char === "'") {
|
|
189
254
|
if (inString) {
|
|
190
255
|
// Check for escaped quote ('') - STEP uses doubled quotes
|
|
@@ -232,7 +297,11 @@ export class EntityExtractor {
|
|
|
232
297
|
// Reference: #123
|
|
233
298
|
if (value.startsWith('#')) {
|
|
234
299
|
const id = parseInt(value.substring(1), 10);
|
|
235
|
-
|
|
300
|
+
// An out-of-contract reference is a dangling reference, not a number to
|
|
301
|
+
// carry: `Infinity` names no entity, two ids past 2^53 accumulate to the
|
|
302
|
+
// same double and would resolve to the same wrong entity, and an id above
|
|
303
|
+
// 2^32 can never be indexed at all (express-id.ts, #3395).
|
|
304
|
+
return isIndexableExpressId(id) ? id : null;
|
|
236
305
|
}
|
|
237
306
|
// String: 'text'
|
|
238
307
|
if (value.startsWith("'") && value.endsWith("'")) {
|
|
@@ -241,12 +310,38 @@ export class EntityExtractor {
|
|
|
241
310
|
// Decode IFC STEP encoded characters (\X2\00FC\X0\ -> ü, etc.)
|
|
242
311
|
return decodeIfcString(raw);
|
|
243
312
|
}
|
|
244
|
-
// Number
|
|
313
|
+
// Number.
|
|
314
|
+
//
|
|
315
|
+
// Number.isFinite, not !isNaN: a STEP real whose exponent overflows the
|
|
316
|
+
// IEEE-754 double range (`1.0E400`) parses to `Infinity`, and
|
|
317
|
+
// `isNaN(Infinity)` is `false`, so the old guard admitted it. From the
|
|
318
|
+
// property table a non-finite number reaches every writer, where
|
|
319
|
+
// `JSON.stringify(Infinity)` is `null` — the file loses the value with no
|
|
320
|
+
// diagnostic anywhere along the way.
|
|
321
|
+
//
|
|
322
|
+
// Falling through preserves the literal as the raw token (the branch
|
|
323
|
+
// below), which is what this function already does for every other token
|
|
324
|
+
// it cannot represent as a number. That keeps the data the file actually
|
|
325
|
+
// contained — a reader can still see `1.0E400`. Rejecting the attribute
|
|
326
|
+
// outright would drop data the file did contain; clamping would invent a
|
|
327
|
+
// value.
|
|
328
|
+
//
|
|
329
|
+
// This is NOT by itself enough to say "nothing is silently dropped".
|
|
330
|
+
// Preserving the string only helps consumers whose value type admits a
|
|
331
|
+
// string — the property table's `PropertyValue` union does. A consumer
|
|
332
|
+
// whose field is typed `number` sees the preserved string fail its
|
|
333
|
+
// `typeof x === 'number'` test and falls back to whatever default it has,
|
|
334
|
+
// which is how `quantity-collect` and `georef-extractor` turned an
|
|
335
|
+
// unreadable value into a plausible `0`. Absence is detectable; a zero
|
|
336
|
+
// easting is a coordinate. Both now refuse and warn instead of
|
|
337
|
+
// substituting — see `isOverflowingNumericLiteral` in
|
|
338
|
+
// `attribute-helpers.ts` and its two call sites. Any NEW `number`-typed
|
|
339
|
+
// consumer of this function's output owes the same decision.
|
|
245
340
|
const num = parseFloat(value);
|
|
246
|
-
if (
|
|
341
|
+
if (Number.isFinite(num)) {
|
|
247
342
|
return num;
|
|
248
343
|
}
|
|
249
|
-
// Enumeration or other identifier
|
|
344
|
+
// Enumeration, non-finite numeric literal, or other identifier: the raw token.
|
|
250
345
|
return value;
|
|
251
346
|
}
|
|
252
347
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entity-extractor.js","sourceRoot":"","sources":["../src/entity-extractor.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAE/D;;GAEG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"entity-extractor.js","sourceRoot":"","sources":["../src/entity-extractor.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entity-refs-from-index.d.ts","sourceRoot":"","sources":["../src/entity-refs-from-index.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAiB,KAAK,cAAc,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"entity-refs-from-index.d.ts","sourceRoot":"","sources":["../src/entity-refs-from-index.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAiB,KAAK,cAAc,EAAE,MAAM,mBAAmB,CAAC;AA2BvE,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,UAAU,GAAG,cAAc,EACnC,GAAG,EAAE,WAAW,EAChB,MAAM,EAAE,WAAW,EACnB,OAAO,EAAE,WAAW,GACnB,SAAS,EAAE,CA2Fb"}
|
|
@@ -8,6 +8,13 @@ const SPACE = 0x20;
|
|
|
8
8
|
const TAB = 0x09;
|
|
9
9
|
const LF = 0x0a;
|
|
10
10
|
const CR = 0x0d;
|
|
11
|
+
// Kept in sync with isSpaceByte in step-lexing.ts. Without these two, a form
|
|
12
|
+
// feed or vertical tab right after '=' stays attached to the type token this
|
|
13
|
+
// function extracts, so the pre-pass fast path would read a wall's type as
|
|
14
|
+
// e.g. "\fIFCWALL" instead of "IFCWALL" while the full scanner path reads it
|
|
15
|
+
// correctly -- same rule, two byte sets, one wrong answer.
|
|
16
|
+
const FORM_FEED = 0x0c;
|
|
17
|
+
const VTAB = 0x0b;
|
|
11
18
|
function bytesToAsciiKey(bytes, start, end) {
|
|
12
19
|
// String.fromCharCode loop is the fastest portable way to build a short
|
|
13
20
|
// ASCII string from a byte range without allocating an intermediate
|
|
@@ -67,7 +74,8 @@ export function buildEntityRefsFromIndex(source, ids, starts, lengths) {
|
|
|
67
74
|
p++;
|
|
68
75
|
p++;
|
|
69
76
|
while (p < limit
|
|
70
|
-
&& (record[p] === SPACE || record[p] === TAB || record[p] === LF || record[p] === CR
|
|
77
|
+
&& (record[p] === SPACE || record[p] === TAB || record[p] === LF || record[p] === CR
|
|
78
|
+
|| record[p] === FORM_FEED || record[p] === VTAB))
|
|
71
79
|
p++;
|
|
72
80
|
const typeStart = p;
|
|
73
81
|
while (p < limit
|
|
@@ -75,7 +83,9 @@ export function buildEntityRefsFromIndex(source, ids, starts, lengths) {
|
|
|
75
83
|
&& record[p] !== SPACE
|
|
76
84
|
&& record[p] !== TAB
|
|
77
85
|
&& record[p] !== LF
|
|
78
|
-
&& record[p] !== CR
|
|
86
|
+
&& record[p] !== CR
|
|
87
|
+
&& record[p] !== FORM_FEED
|
|
88
|
+
&& record[p] !== VTAB)
|
|
79
89
|
p++;
|
|
80
90
|
const typeEnd = p;
|
|
81
91
|
const key = bytesToAsciiKey(record, typeStart, typeEnd);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entity-refs-from-index.js","sourceRoot":"","sources":["../src/entity-refs-from-index.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAmB/D,OAAO,EAAE,aAAa,EAAuB,MAAM,mBAAmB,CAAC;AAEvE,MAAM,EAAE,GAAG,IAAI,CAAC;AAChB,MAAM,MAAM,GAAG,IAAI,CAAC;AACpB,MAAM,KAAK,GAAG,IAAI,CAAC;AACnB,MAAM,GAAG,GAAG,IAAI,CAAC;AACjB,MAAM,EAAE,GAAG,IAAI,CAAC;AAChB,MAAM,EAAE,GAAG,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"entity-refs-from-index.js","sourceRoot":"","sources":["../src/entity-refs-from-index.ts"],"names":[],"mappings":"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"}
|
package/dist/entity-scanner.d.ts
CHANGED
|
@@ -4,6 +4,32 @@ export interface PreScannedEntityIndex {
|
|
|
4
4
|
ids: Uint32Array;
|
|
5
5
|
starts: Uint32Array;
|
|
6
6
|
lengths: Uint32Array;
|
|
7
|
+
/**
|
|
8
|
+
* How many records the pre-pass that produced these columns refused because
|
|
9
|
+
* their express id is outside the u32 storage contract (#3395).
|
|
10
|
+
*
|
|
11
|
+
* It has to travel with the columns: a refused record is absent from `ids`
|
|
12
|
+
* by construction, so this side cannot recount it. Optional because a host
|
|
13
|
+
* on an older wasm build sends the three columns and nothing else — treat
|
|
14
|
+
* `undefined` as "this producer does not report", which is not the same
|
|
15
|
+
* claim as `0`, and is why the wasm pre-pass now always sets it.
|
|
16
|
+
*/
|
|
17
|
+
oversizedIdCount?: number;
|
|
18
|
+
/**
|
|
19
|
+
* Whether the pre-pass that produced these columns stopped early at a
|
|
20
|
+
* malformed record -- a quoted string or block comment that never closed
|
|
21
|
+
* (#3790). 0 or 1, never a count: a scan that stops has no reliable place to
|
|
22
|
+
* resume, so every record from that byte on is missing from the columns too.
|
|
23
|
+
*
|
|
24
|
+
* It has to travel with them for the same reason `oversizedIdCount` does,
|
|
25
|
+
* only more so: the refusal drops one record, this drops the whole tail, and
|
|
26
|
+
* neither is recoverable from `ids` on this side.
|
|
27
|
+
*
|
|
28
|
+
* Optional because a host on an older build sends the three columns and
|
|
29
|
+
* nothing else -- `undefined` means "this producer does not report", which
|
|
30
|
+
* is not the claim `0` makes.
|
|
31
|
+
*/
|
|
32
|
+
malformedRecordCount?: number;
|
|
7
33
|
}
|
|
8
34
|
export interface WasmScanApi {
|
|
9
35
|
scanEntitiesFastBytes?: (data: Uint8Array) => unknown;
|
|
@@ -24,6 +50,43 @@ export interface EntityScanResult {
|
|
|
24
50
|
processed: number;
|
|
25
51
|
elapsedMs: number;
|
|
26
52
|
scanPath: EntityScanPath;
|
|
53
|
+
/**
|
|
54
|
+
* How many records the scan refused because their express id is outside the
|
|
55
|
+
* u32 storage contract (#3395).
|
|
56
|
+
*
|
|
57
|
+
* Counted on every path but one. `worker` and `tokenizer` count here;
|
|
58
|
+
* `pre-scanned` carries the count from the geometry pre-pass through the
|
|
59
|
+
* `set-entity-index` handoff (`PreScannedEntityIndex.oversizedIdCount`),
|
|
60
|
+
* which is the path the viewer takes for every SAB-backed worker load of a
|
|
61
|
+
* file at or above 2 MB (`useIfcLoader.ts`'s `geometryWillEmitEntityIndex`).
|
|
62
|
+
*
|
|
63
|
+
* The one exception is `wasm`: `scanEntitiesFast` returns entity refs and
|
|
64
|
+
* nothing else, so the count does not cross that boundary. Rust reports the
|
|
65
|
+
* refusal itself there, to the browser console
|
|
66
|
+
* (`rust/wasm-bindings/src/api/parsing.rs`), so it is visible even though
|
|
67
|
+
* the number is not — a zero on THAT path still is not proof of none.
|
|
68
|
+
*/
|
|
69
|
+
oversizedIdCount: number;
|
|
70
|
+
/**
|
|
71
|
+
* 0 or 1, never a count of how many: whether the scan stopped early
|
|
72
|
+
* because a quoted string or a block comment opened and never closed
|
|
73
|
+
* before end of buffer, or a `#id=TYPE(` declaration was cut off
|
|
74
|
+
* before its own '(' was found. Once any of those happens there is no
|
|
75
|
+
* reliable place to resume, so the scan stops there rather than guessing
|
|
76
|
+
* -- every entity after that point, even a well-formed one later in an
|
|
77
|
+
* otherwise-intact file, is NOT in `entityRefs` either. Before this field
|
|
78
|
+
* existed, that stop was completely silent -- a shorter `entityRefs` with
|
|
79
|
+
* no signal that anything went wrong at all.
|
|
80
|
+
*
|
|
81
|
+
* `pre-scanned` carries it when the producer reports one
|
|
82
|
+
* (`PreScannedEntityIndex.malformedRecordCount`, #3790) -- the geometry
|
|
83
|
+
* pre-pass path the viewer takes for every SAB-backed worker load at or
|
|
84
|
+
* above 2 MB. A producer built before that field sends none, and reads as
|
|
85
|
+
* `0`. `wasm` does not carry it at all:
|
|
86
|
+
* `scanEntitiesFast`/`scanEntitiesFastBytes` return refs and nothing else,
|
|
87
|
+
* so a `0` on THAT path is not proof of a clean scan.
|
|
88
|
+
*/
|
|
89
|
+
malformedRecordCount: number;
|
|
27
90
|
}
|
|
28
91
|
export declare function scanIfcEntities(buffer: ArrayBuffer | SharedArrayBuffer, options?: EntityScanOptions): Promise<EntityScanResult>;
|
|
29
92
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entity-scanner.d.ts","sourceRoot":"","sources":["../src/entity-scanner.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"entity-scanner.d.ts","sourceRoot":"","sources":["../src/entity-scanner.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAE5C,MAAM,MAAM,cAAc,GAAG,QAAQ,GAAG,MAAM,GAAG,WAAW,GAAG,aAAa,CAAC;AAE7E,MAAM,WAAW,qBAAqB;IACpC,GAAG,EAAE,WAAW,CAAC;IACjB,MAAM,EAAE,WAAW,CAAC;IACpB,OAAO,EAAE,WAAW,CAAC;IACrB;;;;;;;;;OASG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B;;;;;;;;;;;;;OAaG;IACH,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED,MAAM,WAAW,WAAW;IAC1B,qBAAqB,CAAC,EAAE,CAAC,IAAI,EAAE,UAAU,KAAK,OAAO,CAAC;IACtD,gBAAgB,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC;CACjD;AAED,MAAM,WAAW,iBAAiB;IAChC,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;IACpE,YAAY,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACzC,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,qBAAqB,CAAC,EAAE,qBAAqB,CAAC;CAC/C;AAED,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE,SAAS,EAAE,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,cAAc,CAAC;IACzB;;;;;;;;;;;;;;;OAeG;IACH,gBAAgB,EAAE,MAAM,CAAC;IACzB;;;;;;;;;;;;;;;;;;OAkBG;IACH,oBAAoB,EAAE,MAAM,CAAC;CAC9B;AAMD,wBAAsB,eAAe,CACnC,MAAM,EAAE,WAAW,GAAG,iBAAiB,EACvC,OAAO,GAAE,iBAAsB,GAC9B,OAAO,CAAC,gBAAgB,CAAC,CAyJ3B;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAEhE"}
|
package/dist/entity-scanner.js
CHANGED
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
|
|
4
4
|
import { safeUtf8Decode } from '@ifc-lite/data';
|
|
5
5
|
import { buildEntityRefsFromIndex } from './entity-refs-from-index.js';
|
|
6
|
+
import { MAX_EXPRESS_ID } from './express-id.js';
|
|
6
7
|
import { scanEntitiesInWorker } from './scan-worker-inline.js';
|
|
7
8
|
import { StepTokenizer } from './tokenizer.js';
|
|
8
9
|
const HUGE_STRING_SCAN_BYTES = 256 * 1024 * 1024;
|
|
@@ -14,15 +15,33 @@ export async function scanIfcEntities(buffer, options = {}) {
|
|
|
14
15
|
let entityRefs = [];
|
|
15
16
|
let processed = 0;
|
|
16
17
|
let scanPath = 'tokenizer';
|
|
18
|
+
let oversizedIdCount = 0;
|
|
19
|
+
let malformedRecordCount = 0;
|
|
20
|
+
let preScanCountUnreported = false;
|
|
17
21
|
if (options.preScannedEntityIndex) {
|
|
18
22
|
const { ids, starts, lengths } = options.preScannedEntityIndex;
|
|
19
23
|
entityRefs = buildEntityRefsFromIndex(uint8Buffer, ids, starts, lengths);
|
|
20
24
|
processed = entityRefs.length;
|
|
21
25
|
scanPath = 'pre-scanned';
|
|
26
|
+
// `undefined` means this producer does not report, which the field's own
|
|
27
|
+
// doc says is NOT the claim `0` makes. Coercing it here would turn "not
|
|
28
|
+
// counted" into "none refused" — the exact conflation #3395 exists to
|
|
29
|
+
// remove, reintroduced at the handoff. The number still reads 0 because the
|
|
30
|
+
// contract is `number`, so the honesty has to live in the REPORT: an
|
|
31
|
+
// unreported count is announced rather than passed off as a clean scan.
|
|
32
|
+
oversizedIdCount = options.preScannedEntityIndex.oversizedIdCount ?? 0;
|
|
33
|
+
preScanCountUnreported = options.preScannedEntityIndex.oversizedIdCount === undefined;
|
|
34
|
+
// Same handoff, worse consequence: a stop means the columns are missing
|
|
35
|
+
// everything after it, not one refused record. Reported through the
|
|
36
|
+
// existing diagnostic below rather than a second channel (#3790).
|
|
37
|
+
malformedRecordCount = options.preScannedEntityIndex.malformedRecordCount ?? 0;
|
|
22
38
|
}
|
|
23
39
|
if (entityRefs.length === 0 && !options.disableWorkerScan && typeof Worker !== 'undefined') {
|
|
24
40
|
try {
|
|
25
|
-
|
|
41
|
+
const scan = await scanEntitiesInWorker(buffer);
|
|
42
|
+
entityRefs = scan.refs;
|
|
43
|
+
oversizedIdCount = scan.oversizedIdCount;
|
|
44
|
+
malformedRecordCount = scan.malformedRecordCount;
|
|
26
45
|
processed = entityRefs.length;
|
|
27
46
|
scanPath = 'worker';
|
|
28
47
|
}
|
|
@@ -30,6 +49,8 @@ export async function scanIfcEntities(buffer, options = {}) {
|
|
|
30
49
|
console.warn('[IfcParser] Worker scan failed, falling back to main thread:', error);
|
|
31
50
|
entityRefs = [];
|
|
32
51
|
processed = 0;
|
|
52
|
+
oversizedIdCount = 0;
|
|
53
|
+
malformedRecordCount = 0;
|
|
33
54
|
}
|
|
34
55
|
}
|
|
35
56
|
const wasmScanFn = selectWasmScanFunction(options.wasmApi, uint8Buffer);
|
|
@@ -38,6 +59,16 @@ export async function scanIfcEntities(buffer, options = {}) {
|
|
|
38
59
|
entityRefs = normalizeWasmEntityRefs(wasmScanFn());
|
|
39
60
|
processed = entityRefs.length;
|
|
40
61
|
scanPath = 'wasm';
|
|
62
|
+
// Cleared, not carried: `scanEntitiesFast` hands back refs and nothing
|
|
63
|
+
// else, so this path has no count of its own (Rust reports both
|
|
64
|
+
// refusals straight to the console instead). Leaving an earlier path's
|
|
65
|
+
// number here would attribute it to a scan that never produced it --
|
|
66
|
+
// the worker branch above may have run first, found zero refs, and set
|
|
67
|
+
// `malformedRecordCount` to 1 before falling through to this one. The
|
|
68
|
+
// two sibling branches already set their own; this one says zero out
|
|
69
|
+
// loud rather than by omission (#3395).
|
|
70
|
+
oversizedIdCount = 0;
|
|
71
|
+
malformedRecordCount = 0;
|
|
41
72
|
}
|
|
42
73
|
catch (error) {
|
|
43
74
|
console.warn('[IfcParser] WASM scan failed, falling back to TypeScript:', error);
|
|
@@ -64,11 +95,57 @@ export async function scanIfcEntities(buffer, options = {}) {
|
|
|
64
95
|
await new Promise((resolve) => setTimeout(resolve, 0));
|
|
65
96
|
}
|
|
66
97
|
}
|
|
98
|
+
oversizedIdCount = tokenizer.oversizedIdCount;
|
|
99
|
+
malformedRecordCount = tokenizer.malformedRecordCount;
|
|
100
|
+
}
|
|
101
|
+
// A refused record is a record the caller will not find. Say so on both
|
|
102
|
+
// channels the loader already watches, rather than letting the model come
|
|
103
|
+
// back quietly short (#3395).
|
|
104
|
+
if (oversizedIdCount > 0) {
|
|
105
|
+
const message = `scan: skipped ${oversizedIdCount} record(s) with an express id above ${MAX_EXPRESS_ID} (#3395)`;
|
|
106
|
+
console.warn(`[IfcParser] ${message}`);
|
|
107
|
+
options.onDiagnostic?.(message);
|
|
108
|
+
}
|
|
109
|
+
// Worse than the oversized-id case: this is not "one record the caller
|
|
110
|
+
// will not find", it is "scanning stopped here", so every entity after the
|
|
111
|
+
// break, however well-formed, is also missing from this scan's result.
|
|
112
|
+
// Before this diagnostic existed, that stop was entirely silent: fewer
|
|
113
|
+
// entities came back, and nothing said the file might be incomplete.
|
|
114
|
+
//
|
|
115
|
+
// Deliberately singular and generic, not "N record(s)": the scan always
|
|
116
|
+
// stops at the first one it hits (there is no reliable place to resume),
|
|
117
|
+
// so malformedRecordCount is 0 or 1, never a density, and it covers three
|
|
118
|
+
// shapes -- an unterminated string, an unterminated comment, and a
|
|
119
|
+
// declaration cut off before its own '(' -- collapsed into one flag, so a
|
|
120
|
+
// message naming only one of them would misdescribe the other two every
|
|
121
|
+
// time it fires.
|
|
122
|
+
if (malformedRecordCount > 0) {
|
|
123
|
+
const message = 'scan: stopped early, a record had a string literal or comment that never closed, or ' +
|
|
124
|
+
'was cut off, before end of input, so scanning could not continue past it; the entities ' +
|
|
125
|
+
'returned may be an incomplete view of this file';
|
|
126
|
+
console.warn(`[IfcParser] ${message}`);
|
|
127
|
+
options.onDiagnostic?.(message);
|
|
128
|
+
}
|
|
129
|
+
// Independent of the branch above, not chained onto it (#3790 round 2).
|
|
130
|
+
// These two say different things about different numbers, and both can be
|
|
131
|
+
// true at once: a pre-pass that stopped at a malformed record AND reports
|
|
132
|
+
// no refusal count. The `else if` this replaces was safe only while the
|
|
133
|
+
// pre-scanned path had no way to set `malformedRecordCount` at all -- the
|
|
134
|
+
// moment it did, the load that most needs both warnings got exactly one.
|
|
135
|
+
if (preScanCountUnreported && scanPath === 'pre-scanned') {
|
|
136
|
+
// Absence has to look different from success. This producer sent the
|
|
137
|
+
// columns without a refusal count, so a zero here is not evidence of
|
|
138
|
+
// none, say that, rather than returning a result that reads like a clean
|
|
139
|
+
// scan.
|
|
140
|
+
const message = 'scan: the pre-pass that produced this entity index does not report refused ' +
|
|
141
|
+
`express ids (#3395), so a count of 0 is not proof that none were skipped`;
|
|
142
|
+
console.warn(`[IfcParser] ${message}`);
|
|
143
|
+
options.onDiagnostic?.(message);
|
|
67
144
|
}
|
|
68
145
|
const elapsedMs = performance.now() - scanStartTime;
|
|
69
146
|
options.onDiagnostic?.(`scan complete: entities=${processed} elapsed=${elapsedMs.toFixed(0)}ms`);
|
|
70
147
|
options.onProgress?.({ phase: 'scanning', percent: 100 });
|
|
71
|
-
return { entityRefs, processed, elapsedMs, scanPath };
|
|
148
|
+
return { entityRefs, processed, elapsedMs, scanPath, oversizedIdCount, malformedRecordCount };
|
|
72
149
|
}
|
|
73
150
|
/**
|
|
74
151
|
* Whether the byte-level WASM scan may run for a source of this size.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entity-scanner.js","sourceRoot":"","sources":["../src/entity-scanner.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAE/D,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,wBAAwB,EAAE,MAAM,6BAA6B,CAAC;AACvE,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"entity-scanner.js","sourceRoot":"","sources":["../src/entity-scanner.ts"],"names":[],"mappings":"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"}
|