@bldrs-ai/conway 0.14.835 → 0.15.838

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.
@@ -0,0 +1,378 @@
1
+ #!/usr/bin/env node
2
+ import fs from 'fs';
3
+ import { exit } from 'process';
4
+ import EntityTypesIfc from '../src/ifc/ifc4_gen/entity_types_ifc.gen';
5
+ import IfcStepParser from '../src/ifc/ifc_step_parser';
6
+ import Logger from '../src/logging/logger';
7
+ import ParsingBuffer from '../src/parsing/parsing_buffer';
8
+ import { ParseResult } from '../src/step/parsing/step_parser';
9
+ import Environment from '../src/utilities/environment';
10
+ /**
11
+ * IFC Model Validator
12
+ *
13
+ * @see Validtor.md
14
+ */
15
+ // ---------------------------------------------------------------------
16
+ // 1. Parse Command-Line Args
17
+ // ---------------------------------------------------------------------
18
+ Environment.checkEnvironment();
19
+ Logger.initializeWasmCallbacks();
20
+ const maxCommandArgs = 4;
21
+ if (process.argv.length < maxCommandArgs) {
22
+ // eslint-disable-next-line max-len
23
+ console.error(`Usage: validator <path_to_model>.ifc "IFCCLASS[#OptionalID].property <operator> value"`);
24
+ exit(1);
25
+ }
26
+ const modelPath = process.argv[2];
27
+ const query = process.argv[3];
28
+ // ---------------------------------------------------------------------
29
+ // 2. Load & Parse the IFC
30
+ // ---------------------------------------------------------------------
31
+ let ifcBuffer;
32
+ try {
33
+ ifcBuffer = fs.readFileSync(modelPath);
34
+ }
35
+ catch (err) {
36
+ Logger.error(`Error reading "${modelPath}": ${err}`);
37
+ exit(1);
38
+ }
39
+ Logger.createStatistics(0);
40
+ const parser = IfcStepParser.Instance;
41
+ const bufferInput = new ParsingBuffer(ifcBuffer);
42
+ // eslint-disable-next-line no-unused-vars
43
+ const [stepHeader, resultHeader] = parser.parseHeader(bufferInput);
44
+ const [parseResult, model] = parser.parseDataToModel(bufferInput);
45
+ switch (parseResult) {
46
+ case ParseResult.COMPLETE:
47
+ break;
48
+ case ParseResult.INCOMPLETE:
49
+ Logger.warning('Parse incomplete but no errors reported.');
50
+ break;
51
+ case ParseResult.INVALID_STEP:
52
+ Logger.error('Invalid STEP detected.');
53
+ exit(1);
54
+ break;
55
+ case ParseResult.MISSING_TYPE:
56
+ Logger.error('Missing STEP type.');
57
+ exit(1);
58
+ break;
59
+ case ParseResult.SYNTAX_ERROR:
60
+ Logger.error(`Syntax error at line ${bufferInput.lineCount}.`);
61
+ exit(1);
62
+ break;
63
+ default:
64
+ }
65
+ if (!model) {
66
+ Logger.error('Failed to load model.');
67
+ exit(1);
68
+ }
69
+ // ---------------------------------------------------------------------
70
+ // 3. Build arrays for IFC classes & entity types
71
+ // ---------------------------------------------------------------------
72
+ const nonEmptyTypeIDNoSubtypes = model.nonEmptyTypeIDs();
73
+ const ifcClasses = Array.from(nonEmptyTypeIDNoSubtypes || []).map((item) => String(EntityTypesIfc[item]));
74
+ const entityTypes = Array.from(nonEmptyTypeIDNoSubtypes || []);
75
+ /**
76
+ * Parses a query string used for querying IFC classes, properties, and values.
77
+ *
78
+ * @param {string} query_ - The query string to be parsed.
79
+ * @return {ParsedQuery} An object containing:
80
+ * @throws {Error} If the query string contains multiple operators or has an invalid format.
81
+ */
82
+ function parseQueryString(query_) {
83
+ // This pattern finds any of these operators: <= >= < > == != === !==
84
+ const operatorPatternGlobal = /(<=|>=|<|>|==|!=|===|!==)/g;
85
+ const matches = [...query_.matchAll(operatorPatternGlobal)];
86
+ if (matches.length > 1) {
87
+ // If we detect more than 1 operator, we stop and notify the user
88
+ const found = matches.map((m) => m[0]).join(' ');
89
+ throw new Error(`Multiple operators found in query: ${found}`);
90
+ }
91
+ // Now handle the single operator (or none) with your existing logic
92
+ if (matches.length === 1) {
93
+ // e.g. "IFCWINDOW.OverallHeight <= 5"
94
+ // operator = "<="
95
+ // we can split around that operator or do a single match pattern
96
+ const operatorPattern = /\s(<=|>=|<|>|==|!=|===|!==)\s/;
97
+ const opMatch = query_.match(operatorPattern);
98
+ if (!opMatch) {
99
+ throw new Error(`Could not split query around operator.`);
100
+ }
101
+ const operator = opMatch[1];
102
+ // Split out the left and right sides
103
+ const parts = query_.split(operatorPattern).map((s) => s.trim()).filter(Boolean);
104
+ // e.g. ["IFCWINDOW.OverallHeight", "<=", "5"]
105
+ // eslint-disable-next-line no-magic-numbers
106
+ if (parts.length < 3) {
107
+ throw new Error(`Invalid query format around operator "${operator}"`);
108
+ }
109
+ const classAndPropPart = parts[0];
110
+ // eslint-disable-next-line no-magic-numbers
111
+ const valueStr = parts.slice(2).join(' '); // e.g. "5" (or "myStringValue")
112
+ // parse left side => "IFCWINDOW.OverallHeight"
113
+ const match = classAndPropPart.match(/^([A-Za-z0-9_]+)(\[#(\d+)\])?(?:\.(.+))?$/);
114
+ if (!match) {
115
+ throw new Error(`Invalid left side: "${classAndPropPart}"`);
116
+ }
117
+ const classNameRaw = match[1].toUpperCase();
118
+ const expressIDStr = match[3];
119
+ const propertyName = match[4];
120
+ let expressID;
121
+ if (expressIDStr !== undefined) {
122
+ expressID = parseInt(expressIDStr, 10);
123
+ }
124
+ return {
125
+ className: classNameRaw,
126
+ expressID,
127
+ property: propertyName,
128
+ operator,
129
+ value: valueStr,
130
+ };
131
+ }
132
+ else {
133
+ // No operator => user might just be checking for "IFCWINDOW" or "IFCWINDOW[#15].Height"
134
+ // We'll parse that similarly:
135
+ const match = query_.match(/^([A-Za-z0-9_]+)(\[#(\d+)\])?(?:\.(.+))?$/);
136
+ if (!match) {
137
+ throw new Error(`Invalid query format (no operator, unable to parse): "${query_}"`);
138
+ }
139
+ const classNameRaw = match[1].toUpperCase();
140
+ const expressIDStr = match[3];
141
+ const propertyName = match[4];
142
+ let expressID;
143
+ if (expressIDStr !== undefined) {
144
+ expressID = parseInt(expressIDStr, 10);
145
+ }
146
+ // Return with no operator or value
147
+ return {
148
+ className: classNameRaw,
149
+ expressID,
150
+ property: propertyName,
151
+ operator: undefined,
152
+ value: undefined,
153
+ };
154
+ }
155
+ }
156
+ // ---------------------------------------------------------------------
157
+ // 5. Utility to read a property from an IFC entity
158
+ // We want "entity[propertyName]" or entity.orderedFields, but ignoring case
159
+ // ---------------------------------------------------------------------
160
+ /**
161
+ * Retrieves an array of local fields from the given IFC entity along with
162
+ * their descriptions and associated data.
163
+ *
164
+ * @param {StepEntityBase<EntityTypesIfc>} entity - The IFC entity from which
165
+ * to extract fields and their data.
166
+ * @return {[string, EntityFieldDescription<EntityTypesIfc>, unknown][]}
167
+ * An array of tuples, where each tuple contains:
168
+ * - The field name as a string.
169
+ * - The field description object.
170
+ * - The associated data for the field.
171
+ */
172
+ function getLocalFieldsWithData(entity) {
173
+ return entity.orderedFields.reduce((acc, [fieldName, fieldDesc]) => {
174
+ try {
175
+ // Attempt to access the field
176
+ const data = entity[fieldName];
177
+ acc.push([fieldName, fieldDesc, data]);
178
+ }
179
+ catch (err) {
180
+ // If an error occurs while accessing the field, skip it
181
+ // Optionally, log or handle the error:
182
+ // console.warn(`Skipping field ${fieldName}: ${err}`);
183
+ }
184
+ return acc;
185
+ }, []);
186
+ }
187
+ /**
188
+ * Retrieves the value of a specified property from the given IFC entity.
189
+ *
190
+ * @param {StepEntityBase<EntityTypesIfc>} entity - The IFC entity containing the property.
191
+ * @param {string} propertyName - The name of the property to retrieve
192
+ * @return {any} The value of the specified property, or `undefined`
193
+ * if the property is not found.
194
+ */
195
+ function getPropertyValue(entity, propertyName) {
196
+ // We do a case-insensitive match on the name
197
+ const fields = getLocalFieldsWithData(entity);
198
+ const found = fields.find(([fName]) => fName.toLowerCase() === propertyName.toLowerCase());
199
+ if (!found) {
200
+ return undefined;
201
+ }
202
+ // eslint-disable-next-line no-unused-vars
203
+ const [_, _desc, data] = found;
204
+ // If it's an array, you might want to handle it specifically.
205
+ // For example, returning the first element or the entire array.
206
+ // For now, let's just return the raw data.
207
+ return data;
208
+ }
209
+ // ---------------------------------------------------------------------
210
+ // 6. Perform Validation
211
+ // ---------------------------------------------------------------------
212
+ /**
213
+ * Validates an IFC model against a parsed query to check class existence,
214
+ * property values, or specific conditions.
215
+ *
216
+ * @param {IfcStepModel} model_ - The IFC model to validate.
217
+ * @param {ParsedQuery} query_ - The parsed query containing class, property,
218
+ * and condition details.
219
+ * @return {void} Outputs validation results directly to the console.
220
+ *
221
+ * - Checks if the specified class and instance(s) exist in the model.
222
+ * - Validates property existence or evaluates conditions using operators and values.
223
+ * - Provides a summary of passing and failing entities.
224
+ */
225
+ function validateModel(model_, query_) {
226
+ const { className, expressID, property, operator, value } = query_;
227
+ // 1) Check if the class exists in the model
228
+ const clsIndex = ifcClasses.indexOf(className);
229
+ if (clsIndex < 0) {
230
+ console.error(`❌ IFC class "${className}" does not exist in this model.`);
231
+ return;
232
+ }
233
+ // Get the type + constructor
234
+ const elementTypeID = entityTypes[clsIndex];
235
+ const ctor = model_.schema.constructors[elementTypeID];
236
+ if (!ctor) {
237
+ console.error(`❌ IFC class "${className}" not recognized in schema (missing constructor).`);
238
+ return;
239
+ }
240
+ // 2) Gather relevant entities
241
+ let entities = [];
242
+ if (expressID !== undefined) {
243
+ // Single entity check
244
+ const all = Array.from(model_.types(ctor));
245
+ const found = all.find((e) => e.expressID === expressID);
246
+ if (!found) {
247
+ console.error(`❌ No instance with Express ID #${expressID} found for class ${className}`);
248
+ return;
249
+ }
250
+ entities.push(found);
251
+ }
252
+ else {
253
+ // Convert the iterator to an array explicitly
254
+ const allEntities = Array.from(model_.types(ctor));
255
+ if (!allEntities.length) {
256
+ console.error(`❌ No instances of class "${className}" found in model.`);
257
+ return;
258
+ }
259
+ entities = allEntities;
260
+ }
261
+ // If user only specified className (and possibly ID), with no property or operator =>
262
+ // That might mean "check existence" or do nothing but list them.
263
+ if (!property && !operator && !value) {
264
+ console.log(`✅ Found ${entities.length} instance(s) of ${className}:`);
265
+ for (const e of entities) {
266
+ const id = e.expressID;
267
+ console.log(` - ${className}[#${id}]`);
268
+ }
269
+ return;
270
+ }
271
+ if (property && !operator) {
272
+ console.log(`Checking if property "${property}" exists on ${className}`);
273
+ let passCount = 0;
274
+ for (const e of entities) {
275
+ const id = e.expressID;
276
+ const val = getPropertyValue(e, property);
277
+ if (val !== undefined) {
278
+ passCount++;
279
+ console.log(` ✔️ ${className}[#${id}] has .${property} = ${JSON.stringify(val)}`);
280
+ }
281
+ else {
282
+ console.log(` ❌ ${className}[#${id}] has no .${property}`);
283
+ }
284
+ }
285
+ console.log(`\nProperty existence check: ${passCount} / ${entities.length} have property "${property}"`);
286
+ return;
287
+ }
288
+ // Otherwise, user specified property + operator + value => do a pass/fail
289
+ if (!property || !operator || value === undefined) {
290
+ console.error(`❌ Invalid query format. Please provide "Class.Property <operator> <value>"`);
291
+ return;
292
+ }
293
+ const numericValue = tryParseNumber(value);
294
+ // eslint-disable-next-line no-unused-vars
295
+ const isNumeric = numericValue !== null;
296
+ let passCount = 0;
297
+ let failCount = 0;
298
+ const passes = [];
299
+ const fails = [];
300
+ console.log(`\nValidation Report for Query: ${className}${expressID !==
301
+ undefined ? `[#${expressID}]` : ''}.${property} ${operator} ${value}`);
302
+ for (const e of entities) {
303
+ const id = e.expressID;
304
+ const propVal = getPropertyValue(e, property);
305
+ // If property is undefined => automatically fail
306
+ if (propVal === undefined || propVal === null) {
307
+ fails.push({ id, propVal, reason: `no "${property}" property` });
308
+ failCount++;
309
+ continue;
310
+ }
311
+ const leftSide = JSON.stringify(propVal);
312
+ const rightSide = value;
313
+ let pass;
314
+ try {
315
+ const expression = `${leftSide} ${operator} ${rightSide}`;
316
+ // eslint-disable-next-line no-eval
317
+ pass = eval(expression);
318
+ }
319
+ catch (err) {
320
+ fails.push({ id, propVal, reason: `eval error: ${err}` });
321
+ failCount++;
322
+ continue;
323
+ }
324
+ if (pass) {
325
+ passes.push({ id, propVal });
326
+ passCount++;
327
+ }
328
+ else {
329
+ fails.push({ id, propVal,
330
+ reason: `failed comparison (${property}: ${JSON.stringify(propVal)})` });
331
+ failCount++;
332
+ }
333
+ }
334
+ // Sort by expressID
335
+ passes.sort((a, b) => a.id - b.id);
336
+ fails.sort((a, b) => a.id - b.id);
337
+ // Print passes
338
+ console.log(`\n✔️ Passing Entries:`);
339
+ for (const { id, propVal } of passes) {
340
+ console.log(`✔️ ${className}[#${id}] => PASSED (${property}: ${JSON.stringify(propVal)})`);
341
+ }
342
+ // Print fails
343
+ console.log(`\n❌ Failing Entries:`);
344
+ // eslint-disable-next-line no-unused-vars
345
+ for (const { id, propVal, reason } of fails) {
346
+ console.log(`❌ ${className}[#${id}] => FAILED (${reason})`);
347
+ }
348
+ // Summary
349
+ console.log(`\n✅ Total Passing: ${passCount}`);
350
+ console.log(`❌ Total Failing: ${failCount}`);
351
+ }
352
+ /**
353
+ * Attempts to parse a given string as a number, returning `null` if the parsing fails.
354
+ *
355
+ * @param {string} text - The input string to be parsed.
356
+ * @return {number | null} The parsed number, or `null` if the input is not a valid number.
357
+ */
358
+ function tryParseNumber(text) {
359
+ // e.g. "3.14" => 3.14
360
+ // e.g. "5" => 5
361
+ // e.g. "abc" => null
362
+ // We also want to ignore quotes like "3.14" => might become NaN if we don't strip them
363
+ const cleaned = text.trim().replace(/^['"]+|['"]+$/g, ''); // remove surrounding quotes
364
+ const val = parseFloat(cleaned);
365
+ return Number.isNaN(val) ? null : val;
366
+ }
367
+ // ---------------------------------------------------------------------
368
+ // 7. Run the validator
369
+ // ---------------------------------------------------------------------
370
+ let parsedQuery;
371
+ try {
372
+ parsedQuery = parseQueryString(query);
373
+ }
374
+ catch (err) {
375
+ console.error(`❌ Error parsing query: ${err.message}`);
376
+ exit(1);
377
+ }
378
+ validateModel(model, parsedQuery);
@@ -463,16 +463,6 @@ export declare class IfcGeometryExtraction {
463
463
  * @return {Float32Array}
464
464
  */
465
465
  flattenPointsToFloat64Array(points: IfcCartesianPoint[], dimensions: number): Float64Array;
466
- /**
467
- * Efficiently flatten the points into a Float64Array while skipping
468
- * consecutive points with the same localID.
469
- *
470
- * @param points - Array of IfcCartesianPoint
471
- * @param dimensions - Number of coordinates per point (e.g. 3 for x,y,z)
472
- * @param reverse - reverse the points order
473
- * @return {Float64Array}
474
- */
475
- flattenCartesianPointsToFloat64ArrayFiltered(points: IfcCartesianPoint[], dimensions: number): Float64Array;
476
466
  /**
477
467
  *
478
468
  * @param from
@@ -1 +1 @@
1
- {"version":3,"file":"ifc_geometry_extraction.d.ts","sourceRoot":"","sources":["../../../src/ifc/ifc_geometry_extraction.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ifc_geometry_extraction.d.ts","sourceRoot":"","sources":["../../../src/ifc/ifc_geometry_extraction.ts"],"names":[],"mappings":"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"}
@@ -2417,41 +2417,6 @@ export class IfcGeometryExtraction {
2417
2417
  });
2418
2418
  return flatCoordinates;
2419
2419
  }
2420
- /**
2421
- * Efficiently flatten the points into a Float64Array while skipping
2422
- * consecutive points with the same localID.
2423
- *
2424
- * @param points - Array of IfcCartesianPoint
2425
- * @param dimensions - Number of coordinates per point (e.g. 3 for x,y,z)
2426
- * @param reverse - reverse the points order
2427
- * @return {Float64Array}
2428
- */
2429
- flattenCartesianPointsToFloat64ArrayFiltered(points, dimensions) {
2430
- // 1) First pass: figure out how many points *actually* get included
2431
- // (skipping consecutive duplicates by localID)
2432
- let uniqueCount = 0;
2433
- for (let i = 0; i < points.length; i++) {
2434
- if (i === 0 || points[i].localID !== points[i - 1].localID) {
2435
- uniqueCount++;
2436
- }
2437
- }
2438
- // 2) Knowing how many we'll include, allocate the final TypedArray
2439
- const totalCoordinates = uniqueCount * dimensions;
2440
- const flatCoordinates = new Float64Array(totalCoordinates);
2441
- // 3) Second pass: populate flatCoordinates
2442
- let offset = 0;
2443
- let prevLocalID = -1;
2444
- for (let i = 0; i < points.length; i++) {
2445
- const point = points[i];
2446
- if (i === 0 || point.localID !== prevLocalID) {
2447
- // Copy only if localID changed
2448
- flatCoordinates.set(point.Coordinates, offset);
2449
- offset += point.Coordinates.length; // or offset += dimensions if all are guaranteed
2450
- prevLocalID = point.localID;
2451
- }
2452
- }
2453
- return flatCoordinates;
2454
- }
2455
2420
  /**
2456
2421
  *
2457
2422
  * @param from
@@ -3119,7 +3084,7 @@ export class IfcGeometryExtraction {
3119
3084
  coordParseBuffer.resize(0);
3120
3085
  }
3121
3086
  vec3Array = this.wasmModule.parseVertexVector(coordParseBuffer);
3122
- conwayModel.freeParseBuffer(coordParseBuffer);
3087
+ this.wasmModule.freeParseBuffer(coordParseBuffer);
3123
3088
  }
3124
3089
  else if (innerBound instanceof IfcEdgeLoop) {
3125
3090
  vec3Array = this.nativeVectorGlmdVec3();
@@ -3402,15 +3367,40 @@ export class IfcGeometryExtraction {
3402
3367
  if (from.Bounds.length > 0) {
3403
3368
  const bound3DVector = this.nativeBound3DVector();
3404
3369
  for (let boundIndex = 0; boundIndex < from.Bounds.length; ++boundIndex) {
3370
+ const vec3Array = this.nativeVectorGlmdVec3();
3405
3371
  const bound = from.Bounds[boundIndex];
3406
- const innerBound = bound.Bound;
3407
- if (innerBound instanceof IfcPolyLoop) {
3408
- const pointsFlattened = this.flattenCartesianPointsToFloat64ArrayFiltered(innerBound.Polygon, 3);
3409
- const pointsPtr = this.arrayToWasmHeap(pointsFlattened);
3410
- const bound3D = this.wasmModule.createSimpleBound3D(pointsPtr, pointsFlattened.length, bound.Orientation, (bound.type === EntityTypesIfc.IFCFACEOUTERBOUND) ? 0 : 1);
3411
- bound3DVector.push_back(bound3D);
3412
- this.wasmModule._free(pointsPtr);
3372
+ if (bound.Bound instanceof IfcPolyLoop) {
3373
+ let prevLocalID = -1;
3374
+ for (let pointIndex = 0; pointIndex < bound.Bound.Polygon.length; ++pointIndex) {
3375
+ const vec3 = {
3376
+ x: bound.Bound.Polygon[pointIndex].Coordinates[0],
3377
+ y: bound.Bound.Polygon[pointIndex].Coordinates[1],
3378
+ z: bound.Bound.Polygon[pointIndex].Coordinates[2],
3379
+ };
3380
+ const currentLocalID = bound.Bound.Polygon[pointIndex].localID;
3381
+ if (currentLocalID !== prevLocalID) {
3382
+ vec3Array.push_back(vec3);
3383
+ prevLocalID = currentLocalID;
3384
+ }
3385
+ }
3413
3386
  }
3387
+ const edgesDummy = this.nativeVectorCurve();
3388
+ // get curve
3389
+ const parameters = {
3390
+ points: vec3Array,
3391
+ edges: edgesDummy,
3392
+ };
3393
+ const curve = this.conwayModel.getLoop(parameters);
3394
+ // create bound vector
3395
+ const parametersCreateBounds3D = {
3396
+ curve: curve,
3397
+ orientation: bound.Orientation,
3398
+ type: (bound.type === EntityTypesIfc.IFCFACEOUTERBOUND) ? 0 : 1,
3399
+ };
3400
+ const bound3D = this.conwayModel.createBound3D(parametersCreateBounds3D);
3401
+ bound3DVector.push_back(bound3D);
3402
+ vec3Array.delete();
3403
+ edgesDummy.delete();
3414
3404
  }
3415
3405
  // add face to geometry
3416
3406
  const defaultSurface = (new (this.wasmModule.IfcSurface));
@@ -25,6 +25,7 @@ export default class IfcStepModel extends StepModelBase<EntityTypesIfc> {
25
25
  * Construct this model given a buffer containing the data and the parsed data index on that,
26
26
  * adding the typeIndex on top of that.
27
27
  *
28
+ * @param wasmModule
28
29
  * @param buffer The buffer to values from.
29
30
  * @param elementIndex The parsed index to elements in the STEP.
30
31
  */
@@ -1 +1 @@
1
- {"version":3,"file":"ifc_step_model.d.ts","sourceRoot":"","sources":["../../../src/ifc/ifc_step_model.ts"],"names":[],"mappings":"AAAA,OAAO,cAAqC,MAAM,iCAAiC,CAAA;AACnF,OAAO,aAAa,MAAM,yBAAyB,CAAA;AAEnD,OAAO,EAAC,cAAc,EAAC,MAAM,6BAA6B,CAAA;AAE1D,OAAO,EAAC,aAAa,EAAC,MAAM,6BAA6B,CAAA;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AACrD,OAAO,sBAAsB,MAAM,6BAA6B,CAAA;AAChE,OAAO,cAAc,MAAM,oBAAoB,CAAA;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AAKvD;;GAEG;AACH,MAAM,CAAC,OAAO,OAAO,YAAa,SAAQ,aAAa,CAAE,cAAc,CAAE;IAEvE,SAAgB,SAAS,EAAE,aAAa,CAAE,cAAc,CAAE,CAAA;IAC1D,SAAgB,mBAAmB,gCAAyB;IAC5D,SAAgB,QAAQ,mBAA+B;IACvD,SAAgB,YAAY,mBAAqC;IACjE,SAAgB,QAAQ,kBAA4B;IACpD,SAAgB,MAAM,iBAA2B;IACjD,SAAgB,aAAa,iBAAuB;IACpD,SAAgB,SAAS,mBAA+B;IACxD,SAAgB,aAAa,mBAAqC;IAElE;;;;;;OAMG;gBAEC,MAAM,EAAE,UAAU,EAClB,YAAY,EAAE,cAAc,CAAE,cAAc,CAAE,EAAE;CAKrD"}
1
+ {"version":3,"file":"ifc_step_model.d.ts","sourceRoot":"","sources":["../../../src/ifc/ifc_step_model.ts"],"names":[],"mappings":"AAAA,OAAO,cAAqC,MAAM,iCAAiC,CAAA;AACnF,OAAO,aAAa,MAAM,yBAAyB,CAAA;AAEnD,OAAO,EAAC,cAAc,EAAC,MAAM,6BAA6B,CAAA;AAE1D,OAAO,EAAC,aAAa,EAAC,MAAM,6BAA6B,CAAA;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AACrD,OAAO,sBAAsB,MAAM,6BAA6B,CAAA;AAChE,OAAO,cAAc,MAAM,oBAAoB,CAAA;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AAKvD;;GAEG;AACH,MAAM,CAAC,OAAO,OAAO,YAAa,SAAQ,aAAa,CAAE,cAAc,CAAE;IAEvE,SAAgB,SAAS,EAAE,aAAa,CAAE,cAAc,CAAE,CAAA;IAC1D,SAAgB,mBAAmB,gCAAyB;IAC5D,SAAgB,QAAQ,mBAA+B;IACvD,SAAgB,YAAY,mBAAqC;IACjE,SAAgB,QAAQ,kBAA4B;IACpD,SAAgB,MAAM,iBAA2B;IACjD,SAAgB,aAAa,iBAAuB;IACpD,SAAgB,SAAS,mBAA+B;IACxD,SAAgB,aAAa,mBAAqC;IAElE;;;;;;;OAOG;gBAEC,MAAM,EAAE,UAAU,EAClB,YAAY,EAAE,cAAc,CAAE,cAAc,CAAE,EAAE;CAKrD"}
@@ -17,6 +17,7 @@ export default class IfcStepModel extends StepModelBase {
17
17
  * Construct this model given a buffer containing the data and the parsed data index on that,
18
18
  * adding the typeIndex on top of that.
19
19
  *
20
+ * @param wasmModule
20
21
  * @param buffer The buffer to values from.
21
22
  * @param elementIndex The parsed index to elements in the STEP.
22
23
  */
@@ -20,6 +20,7 @@ export default class IfcStepParser extends StepParser<EntityTypesIfc> {
20
20
  /**
21
21
  * Parse data to the model
22
22
  *
23
+ * @param wasmModule A conway-geom wasm module environnment for this.
23
24
  * @param input The parsing buffer, set to user data, to read.
24
25
  * @return {[ParseResult, IfcStepModel | undefined]} The parse result as well as the model,
25
26
  * if it can be extracted.
@@ -1 +1 @@
1
- {"version":3,"file":"ifc_step_parser.d.ts","sourceRoot":"","sources":["../../../src/ifc/ifc_step_parser.ts"],"names":[],"mappings":"AAAA,OAAO,aAAa,MAAM,2BAA2B,CAAA;AACrD,OAAO,UAAU,EAAE,EAAC,WAAW,EAAC,MAAM,6BAA6B,CAAA;AACnE,OAAO,cAAc,MAAM,iCAAiC,CAAA;AAE5D,OAAO,YAAY,MAAM,kBAAkB,CAAA;AAE3C;;GAEG;AACH,MAAM,CAAC,OAAO,OAAO,aAAc,SAAQ,UAAU,CAAE,cAAc,CAAE;IACrE;;OAEG;;IAKH;;;;;OAKG;IACH,gBAAuB,QAAQ,gBAAsB;IAErD;;;;;;OAMG;IACI,gBAAgB,CACnB,KAAK,EAAE,aAAa,GAAI,CAAC,WAAW,EAAE,YAAY,GAAG,SAAS,CAAC;CAKpE"}
1
+ {"version":3,"file":"ifc_step_parser.d.ts","sourceRoot":"","sources":["../../../src/ifc/ifc_step_parser.ts"],"names":[],"mappings":"AAAA,OAAO,aAAa,MAAM,2BAA2B,CAAA;AACrD,OAAO,UAAU,EAAE,EAAC,WAAW,EAAC,MAAM,6BAA6B,CAAA;AACnE,OAAO,cAAc,MAAM,iCAAiC,CAAA;AAE5D,OAAO,YAAY,MAAM,kBAAkB,CAAA;AAE3C;;GAEG;AACH,MAAM,CAAC,OAAO,OAAO,aAAc,SAAQ,UAAU,CAAE,cAAc,CAAE;IACrE;;OAEG;;IAKH;;;;;OAKG;IACH,gBAAuB,QAAQ,gBAAsB;IAErD;;;;;;;OAOG;IACI,gBAAgB,CACnB,KAAK,EAAE,aAAa,GAAI,CAAC,WAAW,EAAE,YAAY,GAAG,SAAS,CAAC;CAKpE"}
@@ -14,6 +14,7 @@ export default class IfcStepParser extends StepParser {
14
14
  /**
15
15
  * Parse data to the model
16
16
  *
17
+ * @param wasmModule A conway-geom wasm module environnment for this.
17
18
  * @param input The parsing buffer, set to user data, to read.
18
19
  * @return {[ParseResult, IfcStepModel | undefined]} The parse result as well as the model,
19
20
  * if it can be extracted.
@@ -1,2 +1,2 @@
1
- const versionString = 'Conway Web-Ifc Shim v0.14.835';
1
+ const versionString = 'Conway Web-Ifc Shim v0.13.835';
2
2
  export { versionString };