@bldrs-ai/conway 1.372.1179 → 1.373.1180
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 +1 -1
- package/compiled/examples/cli-bundled.cjs +1 -1
- package/compiled/examples/cli-step-bundled.cjs +1 -1
- package/compiled/examples/validator-bundled.cjs +1 -1
- package/compiled/src/compat/web-ifc/ap214_properties.d.ts +2 -2
- package/compiled/src/compat/web-ifc/ap214_properties.d.ts.map +1 -1
- package/compiled/src/compat/web-ifc/ap214_properties.js +6 -1
- package/compiled/src/compat/web-ifc/ifc_api.d.ts +11 -0
- package/compiled/src/compat/web-ifc/ifc_api.d.ts.map +1 -1
- package/compiled/src/compat/web-ifc/ifc_api.js +18 -0
- package/compiled/src/compat/web-ifc/ifc_api_model_passthrough.d.ts +5 -0
- package/compiled/src/compat/web-ifc/ifc_api_model_passthrough.d.ts.map +1 -1
- package/compiled/src/compat/web-ifc/ifc_api_proxy_ap214.d.ts +6 -0
- package/compiled/src/compat/web-ifc/ifc_api_proxy_ap214.d.ts.map +1 -1
- package/compiled/src/compat/web-ifc/ifc_api_proxy_ap214.js +8 -0
- package/compiled/src/compat/web-ifc/ifc_api_proxy_ifc.d.ts +27 -0
- package/compiled/src/compat/web-ifc/ifc_api_proxy_ifc.d.ts.map +1 -1
- package/compiled/src/compat/web-ifc/ifc_api_proxy_ifc.js +48 -0
- package/compiled/src/compat/web-ifc/ifc_properties.d.ts +2 -2
- package/compiled/src/compat/web-ifc/ifc_properties.d.ts.map +1 -1
- package/compiled/src/compat/web-ifc/ifc_properties.js +9 -1
- package/compiled/src/compat/web-ifc/ifc_properties_names_mode.test.d.ts +2 -0
- package/compiled/src/compat/web-ifc/ifc_properties_names_mode.test.d.ts.map +1 -0
- package/compiled/src/compat/web-ifc/ifc_properties_names_mode.test.js +97 -0
- package/compiled/src/compat/web-ifc/properties.d.ts +2 -1
- package/compiled/src/compat/web-ifc/properties.d.ts.map +1 -1
- package/compiled/src/compat/web-ifc/properties_passthrough.d.ts +22 -1
- package/compiled/src/compat/web-ifc/properties_passthrough.d.ts.map +1 -1
- package/compiled/src/version/version.js +1 -1
- package/compiled/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
|
@@ -69714,7 +69714,7 @@ IfcStepParser.Instance = new IfcStepParser();
|
|
|
69714
69714
|
var ifc_step_parser_default = IfcStepParser;
|
|
69715
69715
|
|
|
69716
69716
|
// compiled/src/version/version.js
|
|
69717
|
-
var versionString = "Conway Web-Ifc Shim v1.
|
|
69717
|
+
var versionString = "Conway Web-Ifc Shim v1.373.1180";
|
|
69718
69718
|
|
|
69719
69719
|
// compiled/src/statistics/statistics.js
|
|
69720
69720
|
var Statistics = class {
|
|
@@ -85955,7 +85955,7 @@ var IfcSceneBuilder = class {
|
|
|
85955
85955
|
};
|
|
85956
85956
|
|
|
85957
85957
|
// compiled/src/version/version.js
|
|
85958
|
-
var versionString = "Conway Web-Ifc Shim v1.
|
|
85958
|
+
var versionString = "Conway Web-Ifc Shim v1.373.1180";
|
|
85959
85959
|
|
|
85960
85960
|
// compiled/src/statistics/statistics.js
|
|
85961
85961
|
var Statistics = class {
|
|
@@ -79406,7 +79406,7 @@ var ExtractResult;
|
|
|
79406
79406
|
})(ExtractResult || (ExtractResult = {}));
|
|
79407
79407
|
|
|
79408
79408
|
// compiled/src/version/version.js
|
|
79409
|
-
var versionString = "Conway Web-Ifc Shim v1.
|
|
79409
|
+
var versionString = "Conway Web-Ifc Shim v1.373.1180";
|
|
79410
79410
|
|
|
79411
79411
|
// compiled/src/statistics/statistics.js
|
|
79412
79412
|
var Statistics = class {
|
|
@@ -69712,7 +69712,7 @@ IfcStepParser.Instance = new IfcStepParser();
|
|
|
69712
69712
|
var ifc_step_parser_default = IfcStepParser;
|
|
69713
69713
|
|
|
69714
69714
|
// compiled/src/version/version.js
|
|
69715
|
-
var versionString = "Conway Web-Ifc Shim v1.
|
|
69715
|
+
var versionString = "Conway Web-Ifc Shim v1.373.1180";
|
|
69716
69716
|
|
|
69717
69717
|
// compiled/src/statistics/statistics.js
|
|
69718
69718
|
var Statistics = class {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { IfcApiProxyAP214 } from "./ifc_api_proxy_ap214.js";
|
|
2
|
-
import { Node } from "./properties_passthrough.js";
|
|
2
|
+
import { IncludeProperties, Node } from "./properties_passthrough.js";
|
|
3
3
|
/**
|
|
4
4
|
* web-ifc-compatible property/spatial surface over an AP214/AP242 step model.
|
|
5
5
|
*
|
|
@@ -88,7 +88,7 @@ export declare class AP214Properties {
|
|
|
88
88
|
* @return {Promise<Node>} The root node. A single-root file returns its root
|
|
89
89
|
* directly; a multi-root file is wrapped in a synthetic container root.
|
|
90
90
|
*/
|
|
91
|
-
getSpatialStructure(includeProperties?:
|
|
91
|
+
getSpatialStructure(includeProperties?: IncludeProperties): Promise<Node>;
|
|
92
92
|
/**
|
|
93
93
|
* Get every element of a STEP entity type, backed by the model type index.
|
|
94
94
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ap214_properties.d.ts","sourceRoot":"","sources":["../../../../src/compat/web-ifc/ap214_properties.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AACxD,OAAO,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAA;
|
|
1
|
+
{"version":3,"file":"ap214_properties.d.ts","sourceRoot":"","sources":["../../../../src/compat/web-ifc/ap214_properties.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AACxD,OAAO,EAAE,iBAAiB,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAA;AAuGlE;;;;;;;;;;;GAWG;AACH,qBAAa,eAAe;IAWb,OAAO,CAAC,GAAG;IATxB,OAAO,CAAC,eAAe,CAAC,CAAwB;IAChD,OAAO,CAAC,YAAY,CAAC,CAAsB;IAC3C,OAAO,CAAC,iBAAiB,CAAC,CAAqB;IAC/C,OAAO,CAAC,oBAAoB,CAAC,CAAqB;IAClD,OAAO,CAAC,iBAAiB,CAAC,CAAgC;IAE1D;;OAEG;gBACkB,GAAG,EAAE,gBAAgB;IAG1C;;;;;;OAMG;IACH,UAAU,CAAE,IAAI,EAAE,MAAM,GAAI,MAAM;IAIlC;;;;;;;;;;;;;;;;;;OAkBG;IACG,iBAAiB,CAAE,EAAE,EAAE,MAAM,EAAE,SAAS,UAAQ,GAAI,OAAO,CAAC,MAAM,CAAC;IAoBzE;;;;;;;;;;;OAWG;IACG,eAAe,CAAE,SAAS,EAAE,MAAM,EAAE,SAAS,UAAQ,GAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IAkD7E;;;;;;OAMG;IACG,iBAAiB,CAAE,SAAS,EAAE,MAAM,EAAE,SAAS,UAAQ,GAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IAI/E;;;;;;OAMG;IACG,sBAAsB,CAAE,SAAS,EAAE,MAAM,EAAE,SAAS,UAAQ,GAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IAIpF;;;;;;;OAOG;IACG,mBAAmB,CAAE,iBAAiB,CAAC,EAAE,iBAAiB,GAAI,OAAO,CAAC,IAAI,CAAC;IAuBjF;;;;;;OAMG;IACG,iBAAiB,CAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IAmBzE;;;;;;;OAOG;YACW,aAAa;IA4B3B;;;;;;OAMG;IACH,OAAO,CAAC,cAAc;IAmBtB;;;;;;;;;OASG;IACH,OAAO,CAAC,YAAY;IA6BpB;;;;;OAKG;IACH,OAAO,CAAC,UAAU;IAUlB;;;;OAIG;IACH,OAAO,CAAC,gBAAgB;IAKxB;;;;OAIG;IACH,OAAO,CAAC,UAAU;CAQnB"}
|
|
@@ -217,7 +217,12 @@ export class AP214Properties {
|
|
|
217
217
|
occurrencePath: node.occurrencePath,
|
|
218
218
|
children,
|
|
219
219
|
};
|
|
220
|
-
if (includeProperties) {
|
|
220
|
+
if (includeProperties === "names") {
|
|
221
|
+
// Satisfied by the unconditional Name handle above.
|
|
222
|
+
}
|
|
223
|
+
else if (includeProperties) {
|
|
224
|
+
// Truthy semantics match the IFC path (web-ifc parity for untyped
|
|
225
|
+
// JS callers passing truthy non-booleans).
|
|
221
226
|
const properties = await this.getItemProperties(node.expressID);
|
|
222
227
|
spatialNode = { ...properties, ...spatialNode };
|
|
223
228
|
}
|
|
@@ -132,6 +132,17 @@ export declare class IfcAPI {
|
|
|
132
132
|
* @return {any} line data
|
|
133
133
|
*/
|
|
134
134
|
GetLine(modelID: number, expressID: number, flatten?: boolean): string | void;
|
|
135
|
+
/**
|
|
136
|
+
* Conway extension (no web-ifc equivalent): drop the model's
|
|
137
|
+
* materialised entity/descriptor caches, returning that memory to the
|
|
138
|
+
* JS heap. Entities and attributes rematerialise transparently on the
|
|
139
|
+
* next property access, so callers can invoke this between UI
|
|
140
|
+
* interactions to keep the property working set bounded to what the
|
|
141
|
+
* active UI is touching.
|
|
142
|
+
*
|
|
143
|
+
* @param modelID
|
|
144
|
+
*/
|
|
145
|
+
ReleaseEntityCache(modelID: number): void;
|
|
135
146
|
/**
|
|
136
147
|
*
|
|
137
148
|
* @param modelID
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ifc_api.d.ts","sourceRoot":"","sources":["../../../../src/compat/web-ifc/ifc_api.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ifc_api.d.ts","sourceRoot":"","sources":["../../../../src/compat/web-ifc/ifc_api.ts"],"names":[],"mappings":"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"}
|
|
@@ -154,6 +154,24 @@ export class IfcAPI {
|
|
|
154
154
|
}
|
|
155
155
|
return result.getLine(expressID, flatten);
|
|
156
156
|
}
|
|
157
|
+
/**
|
|
158
|
+
* Conway extension (no web-ifc equivalent): drop the model's
|
|
159
|
+
* materialised entity/descriptor caches, returning that memory to the
|
|
160
|
+
* JS heap. Entities and attributes rematerialise transparently on the
|
|
161
|
+
* next property access, so callers can invoke this between UI
|
|
162
|
+
* interactions to keep the property working set bounded to what the
|
|
163
|
+
* active UI is touching.
|
|
164
|
+
*
|
|
165
|
+
* @param modelID
|
|
166
|
+
*/
|
|
167
|
+
ReleaseEntityCache(modelID) {
|
|
168
|
+
const result = this.models.get(modelID);
|
|
169
|
+
if (result === void 0) {
|
|
170
|
+
Logger.error("[ReleaseEntityCache]: model === undefined");
|
|
171
|
+
return;
|
|
172
|
+
}
|
|
173
|
+
result.releaseEntityCache?.();
|
|
174
|
+
}
|
|
157
175
|
/**
|
|
158
176
|
*
|
|
159
177
|
* @param modelID
|
|
@@ -13,5 +13,10 @@ export interface IfcApiModelPassthrough {
|
|
|
13
13
|
flattenLine(line: any): void;
|
|
14
14
|
getLine(expressID: number, flatten?: boolean): string | void;
|
|
15
15
|
getGeometry(geometryExpressID: number): IfcGeometry;
|
|
16
|
+
/**
|
|
17
|
+
* Optional: drop the model's materialised entity/descriptor caches,
|
|
18
|
+
* returning that memory. Entities rematerialise on next access.
|
|
19
|
+
*/
|
|
20
|
+
releaseEntityCache?(): void;
|
|
16
21
|
}
|
|
17
22
|
//# sourceMappingURL=ifc_api_model_passthrough.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ifc_api_model_passthrough.d.ts","sourceRoot":"","sources":["../../../../src/compat/web-ifc/ifc_api_model_passthrough.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AACtE,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAA;AAGhE,MAAM,WAAW,sBAAsB;IAErC,UAAU,EAAE,qBAAqB,CAAA;IAEjC,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,QAAQ,CAAA;IACxC,eAAe,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAA;IACnC,wBAAwB,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,YAAY,EAAE,CAAC,IAAI,EAAE,QAAQ,KAAK,IAAI,GAAG,IAAI,CAAA;IACvF,eAAe,CAAC,YAAY,EAAE,CAAC,IAAI,EAAE,QAAQ,KAAK,IAAI,GAAG,IAAI,CAAA;IAC7D,qBAAqB,IAAI,MAAM,EAAE,CAAA;IACjC,WAAW,IAAI,MAAM,CAAC,MAAM,CAAC,CAAA;IAC7B,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAA;IAChD,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,WAAW,CAAA;IAC9C,WAAW,CAAC,IAAI,EAAE,GAAG,GAAG,IAAI,CAAA;IAC5B,OAAO,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAAA;IAC5D,WAAW,CAAC,iBAAiB,EAAE,MAAM,GAAG,WAAW,CAAA;
|
|
1
|
+
{"version":3,"file":"ifc_api_model_passthrough.d.ts","sourceRoot":"","sources":["../../../../src/compat/web-ifc/ifc_api_model_passthrough.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AACtE,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAA;AAGhE,MAAM,WAAW,sBAAsB;IAErC,UAAU,EAAE,qBAAqB,CAAA;IAEjC,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,QAAQ,CAAA;IACxC,eAAe,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAA;IACnC,wBAAwB,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,YAAY,EAAE,CAAC,IAAI,EAAE,QAAQ,KAAK,IAAI,GAAG,IAAI,CAAA;IACvF,eAAe,CAAC,YAAY,EAAE,CAAC,IAAI,EAAE,QAAQ,KAAK,IAAI,GAAG,IAAI,CAAA;IAC7D,qBAAqB,IAAI,MAAM,EAAE,CAAA;IACjC,WAAW,IAAI,MAAM,CAAC,MAAM,CAAC,CAAA;IAC7B,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAA;IAChD,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,WAAW,CAAA;IAC9C,WAAW,CAAC,IAAI,EAAE,GAAG,GAAG,IAAI,CAAA;IAC5B,OAAO,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAAA;IAC5D,WAAW,CAAC,iBAAiB,EAAE,MAAM,GAAG,WAAW,CAAA;IAEnD;;;OAGG;IACH,kBAAkB,CAAC,IAAI,IAAI,CAAA;CAC5B"}
|
|
@@ -39,6 +39,12 @@ export declare class IfcApiProxyAP214 implements IfcApiModelPassthrough {
|
|
|
39
39
|
* @return {AP214StepModel} The underlying step model.
|
|
40
40
|
*/
|
|
41
41
|
get StepModel(): AP214StepModel;
|
|
42
|
+
/**
|
|
43
|
+
* Drop this model's materialised entity/descriptor cache (and lazily
|
|
44
|
+
* rebuilt vtable data), returning that memory to the JS heap. Entities
|
|
45
|
+
* rematerialise transparently on next access.
|
|
46
|
+
*/
|
|
47
|
+
releaseEntityCache(): void;
|
|
42
48
|
/**
|
|
43
49
|
* Contains all the logic and methods regarding properties, psets, qsets, etc.
|
|
44
50
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ifc_api_proxy_ap214.d.ts","sourceRoot":"","sources":["../../../../src/compat/web-ifc/ifc_api_proxy_ap214.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,cAAc,EACf,MAAM,aAAa,CAAA;AAEpB,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AAC/C,OAAO,EACL,QAAQ,EACR,WAAW,EACX,WAAW,EACX,cAAc,EACd,cAAc,EACd,WAAW,EACX,MAAM,EACP,MAAM,WAAW,CAAA;AAClB,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAA;AACpE,OAAO,KAAK,QAAQ,MAAM,WAAW,CAAA;AAOrC,OAAO,cAAc,MAAM,qCAAqC,CAAA;AAChE,OAAO,EAAE,iBAAiB,EAAE,MAAM,wCAAwC,CAAA;AAG1E,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AAGpD;GACG;AACH,qBAAa,gBAAiB,YAAW,sBAAsB;
|
|
1
|
+
{"version":3,"file":"ifc_api_proxy_ap214.d.ts","sourceRoot":"","sources":["../../../../src/compat/web-ifc/ifc_api_proxy_ap214.ts"],"names":[],"mappings":"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"}
|
|
@@ -21,6 +21,14 @@ export class IfcApiProxyAP214 {
|
|
|
21
21
|
get StepModel() {
|
|
22
22
|
return this.model[0];
|
|
23
23
|
}
|
|
24
|
+
/**
|
|
25
|
+
* Drop this model's materialised entity/descriptor cache (and lazily
|
|
26
|
+
* rebuilt vtable data), returning that memory to the JS heap. Entities
|
|
27
|
+
* rematerialise transparently on next access.
|
|
28
|
+
*/
|
|
29
|
+
releaseEntityCache() {
|
|
30
|
+
this.model[0].invalidate(true);
|
|
31
|
+
}
|
|
24
32
|
/**
|
|
25
33
|
* Construct wwih a wasm module.
|
|
26
34
|
*
|
|
@@ -4,6 +4,7 @@ import { IfcSceneBuilder } from "../../ifc/ifc_scene_builder.js";
|
|
|
4
4
|
import IfcStepModel from "../../ifc/ifc_step_model.js";
|
|
5
5
|
import { FlatMesh, IfcGeometry, LoaderError, Loadersettings, PlacedGeometry, RawLineData, Vector } from "./ifc_api.js";
|
|
6
6
|
import { IfcApiModelPassthrough } from "./ifc_api_model_passthrough.js";
|
|
7
|
+
import { NodeValueHandle } from "./properties_passthrough.js";
|
|
7
8
|
import * as glmatrix from "gl-matrix";
|
|
8
9
|
import { IfcProperties } from "./ifc_properties.js";
|
|
9
10
|
/**
|
|
@@ -79,6 +80,32 @@ export declare class IfcApiProxyIfc implements IfcApiModelPassthrough {
|
|
|
79
80
|
* @return {any} line data
|
|
80
81
|
*/
|
|
81
82
|
getLine(expressID: number, flatten?: boolean): any;
|
|
83
|
+
/**
|
|
84
|
+
* Light attribute read: Name / LongName / GlobalId as web-ifc value
|
|
85
|
+
* handles, WITHOUT materialising the entity's full flattened record.
|
|
86
|
+
* Reads go through the typed entity's lazy per-field getters — the
|
|
87
|
+
* first access tokenizes the record's field offsets into the shared
|
|
88
|
+
* vtable, but only these attributes' values are deserialized. Used by
|
|
89
|
+
* the spatial structure's `'names'` mode.
|
|
90
|
+
*
|
|
91
|
+
* @param expressID
|
|
92
|
+
* @return {object} `{ Name?, LongName?, GlobalId? }` string handles
|
|
93
|
+
* (`{type: 1, value}`), each present only when the attribute exists
|
|
94
|
+
* and is non-null on the entity.
|
|
95
|
+
*/
|
|
96
|
+
getLineNameAttributes(expressID: number): {
|
|
97
|
+
Name?: NodeValueHandle;
|
|
98
|
+
LongName?: NodeValueHandle;
|
|
99
|
+
GlobalId?: NodeValueHandle;
|
|
100
|
+
};
|
|
101
|
+
/**
|
|
102
|
+
* Drop this model's materialised entity/descriptor cache (and lazily
|
|
103
|
+
* rebuilt vtable data), returning that memory to the JS heap. Entities
|
|
104
|
+
* and attributes rematerialise transparently on next access, so this is
|
|
105
|
+
* safe to call between UI interactions to keep the property working set
|
|
106
|
+
* bounded to what the active UI has touched.
|
|
107
|
+
*/
|
|
108
|
+
releaseEntityCache(): void;
|
|
82
109
|
/**
|
|
83
110
|
*
|
|
84
111
|
* @param modelID
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ifc_api_proxy_ifc.d.ts","sourceRoot":"","sources":["../../../../src/compat/web-ifc/ifc_api_proxy_ifc.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ifc_api_proxy_ifc.d.ts","sourceRoot":"","sources":["../../../../src/compat/web-ifc/ifc_api_proxy_ifc.ts"],"names":[],"mappings":"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"}
|
|
@@ -296,6 +296,54 @@ export class IfcApiProxyIfc {
|
|
|
296
296
|
}
|
|
297
297
|
return lineData;
|
|
298
298
|
}
|
|
299
|
+
/**
|
|
300
|
+
* Light attribute read: Name / LongName / GlobalId as web-ifc value
|
|
301
|
+
* handles, WITHOUT materialising the entity's full flattened record.
|
|
302
|
+
* Reads go through the typed entity's lazy per-field getters — the
|
|
303
|
+
* first access tokenizes the record's field offsets into the shared
|
|
304
|
+
* vtable, but only these attributes' values are deserialized. Used by
|
|
305
|
+
* the spatial structure's `'names'` mode.
|
|
306
|
+
*
|
|
307
|
+
* @param expressID
|
|
308
|
+
* @return {object} `{ Name?, LongName?, GlobalId? }` string handles
|
|
309
|
+
* (`{type: 1, value}`), each present only when the attribute exists
|
|
310
|
+
* and is non-null on the entity.
|
|
311
|
+
*/
|
|
312
|
+
getLineNameAttributes(expressID) {
|
|
313
|
+
const result = {};
|
|
314
|
+
const entity = this.model[0].getElementByExpressID(expressID);
|
|
315
|
+
if (entity === void 0) {
|
|
316
|
+
return result;
|
|
317
|
+
}
|
|
318
|
+
// web-ifc tape type 1 = string; ifclib's deref switches on this code.
|
|
319
|
+
const WEB_IFC_STRING_TYPE = 1;
|
|
320
|
+
// Absent attributes (e.g. LongName on non-spatial types) read as
|
|
321
|
+
// undefined and are omitted via the typeof check. The catch guards
|
|
322
|
+
// malformed records: field extraction throws on truncated records
|
|
323
|
+
// regardless of the model's nullOnErrors setting.
|
|
324
|
+
for (const attribute of ["Name", "LongName", "GlobalId"]) {
|
|
325
|
+
try {
|
|
326
|
+
const value = entity[attribute];
|
|
327
|
+
if (typeof value === "string") {
|
|
328
|
+
result[attribute] = { type: WEB_IFC_STRING_TYPE, value };
|
|
329
|
+
}
|
|
330
|
+
}
|
|
331
|
+
catch (e) {
|
|
332
|
+
Logger.warning(`[getLineNameAttributes]: unreadable ${attribute} for expressID: ${expressID}`);
|
|
333
|
+
}
|
|
334
|
+
}
|
|
335
|
+
return result;
|
|
336
|
+
}
|
|
337
|
+
/**
|
|
338
|
+
* Drop this model's materialised entity/descriptor cache (and lazily
|
|
339
|
+
* rebuilt vtable data), returning that memory to the JS heap. Entities
|
|
340
|
+
* and attributes rematerialise transparently on next access, so this is
|
|
341
|
+
* safe to call between UI interactions to keep the property working set
|
|
342
|
+
* bounded to what the active UI has touched.
|
|
343
|
+
*/
|
|
344
|
+
releaseEntityCache() {
|
|
345
|
+
this.model[0].invalidate(true);
|
|
346
|
+
}
|
|
299
347
|
/**
|
|
300
348
|
*
|
|
301
349
|
* @param modelID
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { IfcApiProxyIfc } from "./ifc_api_proxy_ifc.js";
|
|
2
|
-
import { Node, PropertiesPassthrough } from "./properties_passthrough.js";
|
|
2
|
+
import { IncludeProperties, Node, PropertiesPassthrough } from "./properties_passthrough.js";
|
|
3
3
|
export declare class IfcProperties implements PropertiesPassthrough {
|
|
4
4
|
private api;
|
|
5
5
|
private types;
|
|
@@ -9,7 +9,7 @@ export declare class IfcProperties implements PropertiesPassthrough {
|
|
|
9
9
|
getPropertySets(elementID: number, recursive?: boolean): Promise<any[]>;
|
|
10
10
|
getTypeProperties(elementID: number, recursive?: boolean): Promise<any[]>;
|
|
11
11
|
getMaterialsProperties(elementID: number, recursive?: boolean): Promise<any[]>;
|
|
12
|
-
getSpatialStructure(includeProperties?:
|
|
12
|
+
getSpatialStructure(includeProperties?: IncludeProperties): Promise<Node>;
|
|
13
13
|
getAllItemsOfType(type: number, verbose: boolean): Promise<any[]>;
|
|
14
14
|
private getProperty;
|
|
15
15
|
private getChunks;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ifc_properties.d.ts","sourceRoot":"","sources":["../../../../src/compat/web-ifc/ifc_properties.ts"],"names":[],"mappings":"AAYA,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,IAAI,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"ifc_properties.d.ts","sourceRoot":"","sources":["../../../../src/compat/web-ifc/ifc_properties.ts"],"names":[],"mappings":"AAYA,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,iBAAiB,EAAE,IAAI,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AA6C1F,qBAAa,aAAc,YAAW,qBAAqB;IAI7C,OAAO,CAAC,GAAG;IAFvB,OAAO,CAAC,KAAK,CAAK;gBAEE,GAAG,EAAE,cAAc;IAGvC,UAAU,CAAC,IAAI,EAAE,MAAM;IAIjB,iBAAiB,CAAC,EAAE,EAAE,MAAM,EAAE,SAAS,UAAQ;IAI/C,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,UAAQ;IAIpD,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,UAAQ;IAItD,sBAAsB,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,UAAQ;IAI3D,mBAAmB,CAAC,iBAAiB,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAE,IAAI,CAAE;IAc3E,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO;YAgBxC,WAAW;YASX,SAAS;IAQvB,OAAO,CAAC,MAAM,CAAC,SAAS;IASxB,OAAO,CAAC,MAAM,CAAC,aAAa;YAQd,cAAc;YAKd,WAAW;IAwBzB,OAAO,CAAC,OAAO;IASf,OAAO,CAAC,WAAW;YAKL,oBAAoB;IAOlC,OAAO,CAAC,SAAS;IAUjB,OAAO,CAAC,UAAU;YASJ,wBAAwB;IAatC,OAAO,CAAC,YAAY;YAIN,kBAAkB;CAcjC"}
|
|
@@ -64,6 +64,9 @@ export class IfcProperties {
|
|
|
64
64
|
const allLines = await this.api.getLineIDsWithType(IFCPROJECT);
|
|
65
65
|
const projectID = allLines.get(0);
|
|
66
66
|
const project = IfcProperties.newIfcProject(projectID);
|
|
67
|
+
if (includeProperties === "names") {
|
|
68
|
+
Object.assign(project, this.api.getLineNameAttributes(projectID));
|
|
69
|
+
}
|
|
67
70
|
await this.getSpatialNode(project, chunks, includeProperties);
|
|
68
71
|
this.cleanupTypes();
|
|
69
72
|
return project;
|
|
@@ -127,7 +130,12 @@ export class IfcProperties {
|
|
|
127
130
|
for (let i = 0; i < children.length; i++) {
|
|
128
131
|
const child = children[i];
|
|
129
132
|
let node = this.newNode(child);
|
|
130
|
-
if (includeProperties) {
|
|
133
|
+
if (includeProperties === "names") {
|
|
134
|
+
// Light mode: Name/LongName/GlobalId handles only — decodes just
|
|
135
|
+
// those vtable slots instead of flattening the whole record.
|
|
136
|
+
Object.assign(node, this.api.getLineNameAttributes(node.expressID));
|
|
137
|
+
}
|
|
138
|
+
else if (includeProperties) {
|
|
131
139
|
const properties = await this.getItemProperties(node.expressID);
|
|
132
140
|
node = { ...properties, ...node };
|
|
133
141
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ifc_properties_names_mode.test.d.ts","sourceRoot":"","sources":["../../../../src/compat/web-ifc/ifc_properties_names_mode.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
// Tests for the spatial structure's `'names'` mode and the
|
|
2
|
+
// ReleaseEntityCache extension.
|
|
3
|
+
//
|
|
4
|
+
// `'names'` returns nodes carrying only Name/LongName/GlobalId value
|
|
5
|
+
// handles (read via the typed entities' lazy per-field getters), where
|
|
6
|
+
// `true` spreads each node's full flattened attribute record — the
|
|
7
|
+
// web-ifc-era eager visit Share is moving off of. Parity requirement:
|
|
8
|
+
// `true`-mode output is unchanged by the feature, and `'names'` nodes
|
|
9
|
+
// agree with `true` nodes on the attributes they do carry.
|
|
10
|
+
import * as fs from "fs";
|
|
11
|
+
import { beforeAll, describe, expect, test } from "@jest/globals";
|
|
12
|
+
import { IfcAPI } from "./ifc_api.js";
|
|
13
|
+
const SETTINGS = { COORDINATE_TO_ORIGIN: true, USE_FAST_BOOLS: true };
|
|
14
|
+
let api;
|
|
15
|
+
let modelID;
|
|
16
|
+
beforeAll(async () => {
|
|
17
|
+
api = new IfcAPI();
|
|
18
|
+
await api.Init();
|
|
19
|
+
const buffer = new Uint8Array(fs.readFileSync("data/index.ifc"));
|
|
20
|
+
modelID = api.OpenModel(buffer, SETTINGS);
|
|
21
|
+
}, 120000);
|
|
22
|
+
/** Flatten a spatial tree into a node list, depth first. */
|
|
23
|
+
function collect(root) {
|
|
24
|
+
const out = [];
|
|
25
|
+
const stack = [root];
|
|
26
|
+
while (stack.length > 0) {
|
|
27
|
+
const node = stack.pop();
|
|
28
|
+
out.push(node);
|
|
29
|
+
stack.push(...(node.children ?? []));
|
|
30
|
+
}
|
|
31
|
+
return out;
|
|
32
|
+
}
|
|
33
|
+
describe("getSpatialStructure names mode", () => {
|
|
34
|
+
test("names mode returns name handles without full records", async () => {
|
|
35
|
+
const tree = await api.properties.getSpatialStructure(modelID, "names");
|
|
36
|
+
if (tree === undefined) {
|
|
37
|
+
throw new Error("getSpatialStructure returned undefined");
|
|
38
|
+
}
|
|
39
|
+
const nodes = collect(tree);
|
|
40
|
+
expect(nodes.length).toBeGreaterThan(1);
|
|
41
|
+
// At least one node carries a Name handle in web-ifc shape.
|
|
42
|
+
const named = nodes.filter((n) => n.Name !== undefined);
|
|
43
|
+
expect(named.length).toBeGreaterThan(0);
|
|
44
|
+
for (const node of named) {
|
|
45
|
+
expect(node.Name).toEqual({ type: 1, value: expect.any(String) });
|
|
46
|
+
}
|
|
47
|
+
// Non-project nodes are products with GlobalIds.
|
|
48
|
+
const withGlobalId = nodes.filter((n) => n.GlobalId !== undefined);
|
|
49
|
+
expect(withGlobalId.length).toBeGreaterThan(0);
|
|
50
|
+
// Light means light: no node carries full-record fields that only the
|
|
51
|
+
// flattened `true` mode spreads in (e.g. OwnerHistory / Description).
|
|
52
|
+
for (const node of nodes) {
|
|
53
|
+
expect(node.OwnerHistory).toBeUndefined();
|
|
54
|
+
expect(node.Description).toBeUndefined();
|
|
55
|
+
}
|
|
56
|
+
}, 120000);
|
|
57
|
+
test("names mode agrees with true mode where they overlap", async () => {
|
|
58
|
+
const namesTree = await api.properties.getSpatialStructure(modelID, "names");
|
|
59
|
+
const fullTree = await api.properties.getSpatialStructure(modelID, true);
|
|
60
|
+
if (namesTree === undefined || fullTree === undefined) {
|
|
61
|
+
throw new Error("getSpatialStructure returned undefined");
|
|
62
|
+
}
|
|
63
|
+
const namesByID = new Map(collect(namesTree).map((n) => [n.expressID, n]));
|
|
64
|
+
const fullNodes = collect(fullTree);
|
|
65
|
+
// Same tree shape.
|
|
66
|
+
expect(namesByID.size).toBe(fullNodes.length);
|
|
67
|
+
// Full mode still carries full records (parity with the old behavior)...
|
|
68
|
+
const fullWithOwnerHistory = fullNodes.filter((n) => n.OwnerHistory !== undefined);
|
|
69
|
+
expect(fullWithOwnerHistory.length).toBeGreaterThan(0);
|
|
70
|
+
// ...and wherever full mode has a Name value, names mode has the same one.
|
|
71
|
+
for (const fullNode of fullNodes) {
|
|
72
|
+
const fullName = fullNode.Name;
|
|
73
|
+
if (fullName === null || fullName === undefined) {
|
|
74
|
+
continue;
|
|
75
|
+
}
|
|
76
|
+
const namesNode = namesByID.get(fullNode.expressID);
|
|
77
|
+
expect(namesNode.Name?.value).toBe(fullName.value);
|
|
78
|
+
}
|
|
79
|
+
}, 120000);
|
|
80
|
+
test("ReleaseEntityCache frees and property access rematerialises", async () => {
|
|
81
|
+
const before = await api.properties.getItemProperties(modelID, await rootID());
|
|
82
|
+
api.ReleaseEntityCache(modelID);
|
|
83
|
+
const after = await api.properties.getItemProperties(modelID, await rootID());
|
|
84
|
+
expect(after).toEqual(before);
|
|
85
|
+
// The spatial structure still resolves post-release too.
|
|
86
|
+
const tree = await api.properties.getSpatialStructure(modelID, "names");
|
|
87
|
+
expect(tree?.children.length).toBeGreaterThan(0);
|
|
88
|
+
}, 120000);
|
|
89
|
+
});
|
|
90
|
+
/** Get the IfcProject root express ID. */
|
|
91
|
+
async function rootID() {
|
|
92
|
+
const tree = await api.properties.getSpatialStructure(modelID);
|
|
93
|
+
if (tree === undefined) {
|
|
94
|
+
throw new Error("getSpatialStructure returned undefined");
|
|
95
|
+
}
|
|
96
|
+
return tree.expressID;
|
|
97
|
+
}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { IfcAPI } from "./ifc_api.js";
|
|
2
|
+
import { IncludeProperties } from "./properties_passthrough.js";
|
|
2
3
|
export declare class Properties {
|
|
3
4
|
private api;
|
|
4
5
|
private types;
|
|
@@ -8,7 +9,7 @@ export declare class Properties {
|
|
|
8
9
|
getPropertySets(modelID: number, elementID: number, recursive?: boolean): Promise<any[] | undefined>;
|
|
9
10
|
getTypeProperties(modelID: number, elementID: number, recursive?: boolean): Promise<any[] | undefined>;
|
|
10
11
|
getMaterialsProperties(modelID: number, elementID: number, recursive?: boolean): Promise<any[] | undefined>;
|
|
11
|
-
getSpatialStructure(modelID: number, includeProperties?:
|
|
12
|
+
getSpatialStructure(modelID: number, includeProperties?: IncludeProperties): Promise<import("./properties_passthrough.js").Node | undefined>;
|
|
12
13
|
getAllItemsOfType(modelID: number, type: number, verbose: boolean): Promise<any[] | undefined>;
|
|
13
14
|
}
|
|
14
15
|
//# sourceMappingURL=properties.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"properties.d.ts","sourceRoot":"","sources":["../../../../src/compat/web-ifc/properties.ts"],"names":[],"mappings":"AACA,OAAO,EACL,MAAM,EACP,MAAM,WAAW,CAAA;
|
|
1
|
+
{"version":3,"file":"properties.d.ts","sourceRoot":"","sources":["../../../../src/compat/web-ifc/properties.ts"],"names":[],"mappings":"AACA,OAAO,EACL,MAAM,EACP,MAAM,WAAW,CAAA;AAElB,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAA;AAG5D,qBAAa,UAAU;IAIT,OAAO,CAAC,GAAG;IAFvB,OAAO,CAAC,KAAK,CAAK;gBAEE,GAAG,EAAE,MAAM;IAG/B,UAAU,CAAC,IAAI,EAAE,MAAM;IAIjB,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,SAAS,UAAQ;IAIhE,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,UAAQ;IAIrE,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,UAAQ;IAIvE,sBAAsB,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,UAAQ;IAI5E,mBAAmB,CAAC,OAAO,EAAE,MAAM,EAAE,iBAAiB,CAAC,EAAE,iBAAiB;IAK1E,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO;CAIxE"}
|
|
@@ -1,15 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A web-ifc tape value handle — `{ type: 1, value: 'str' }` for strings.
|
|
3
|
+
* Consumers (e.g. `@bldrs-ai/ifclib`'s `deref`) switch on the tape type
|
|
4
|
+
* code, so bare `{ value }` objects are not interchangeable with these.
|
|
5
|
+
*/
|
|
6
|
+
export interface NodeValueHandle {
|
|
7
|
+
type: number;
|
|
8
|
+
value: string | number;
|
|
9
|
+
}
|
|
1
10
|
export interface Node {
|
|
2
11
|
expressID: number;
|
|
3
12
|
type: string;
|
|
4
13
|
children: Node[];
|
|
14
|
+
Name?: NodeValueHandle;
|
|
15
|
+
LongName?: NodeValueHandle;
|
|
16
|
+
GlobalId?: NodeValueHandle;
|
|
5
17
|
}
|
|
18
|
+
/**
|
|
19
|
+
* Spatial-structure property inclusion mode:
|
|
20
|
+
* - `false`/`undefined` — bare nodes (expressID/type/children).
|
|
21
|
+
* - `'names'` — bare nodes plus Name/LongName/GlobalId value handles,
|
|
22
|
+
* read without materialising each node's full attribute record.
|
|
23
|
+
* - `true` — full flattened attribute record spread into each node
|
|
24
|
+
* (web-ifc parity behavior).
|
|
25
|
+
*/
|
|
26
|
+
export type IncludeProperties = boolean | 'names';
|
|
6
27
|
export interface PropertiesPassthrough {
|
|
7
28
|
getIfcType(type: number): string | undefined;
|
|
8
29
|
getItemProperties(id: number, recursive?: boolean): Promise<any>;
|
|
9
30
|
getPropertySets(elementID: number, recursive?: boolean): Promise<any[]>;
|
|
10
31
|
getTypeProperties(elementID: number, recursive?: boolean): Promise<any[]>;
|
|
11
32
|
getMaterialsProperties(elementID: number, recursive?: boolean): Promise<any[]>;
|
|
12
|
-
getSpatialStructure(includeProperties?:
|
|
33
|
+
getSpatialStructure(includeProperties?: IncludeProperties): Promise<Node>;
|
|
13
34
|
getAllItemsOfType(type: number, verbose: boolean): Promise<any[]>;
|
|
14
35
|
}
|
|
15
36
|
//# sourceMappingURL=properties_passthrough.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"properties_passthrough.d.ts","sourceRoot":"","sources":["../../../../src/compat/web-ifc/properties_passthrough.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,IAAI;IACnB,SAAS,EAAE,MAAM,CAAA;IACjB,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,IAAI,EAAE,CAAA;
|
|
1
|
+
{"version":3,"file":"properties_passthrough.d.ts","sourceRoot":"","sources":["../../../../src/compat/web-ifc/properties_passthrough.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,GAAG,MAAM,CAAA;CACvB;AAED,MAAM,WAAW,IAAI;IACnB,SAAS,EAAE,MAAM,CAAA;IACjB,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,IAAI,EAAE,CAAA;IAIhB,IAAI,CAAC,EAAE,eAAe,CAAA;IACtB,QAAQ,CAAC,EAAE,eAAe,CAAA;IAC1B,QAAQ,CAAC,EAAE,eAAe,CAAA;CAC3B;AAED;;;;;;;GAOG;AACH,MAAM,MAAM,iBAAiB,GAAG,OAAO,GAAG,OAAO,CAAA;AAEjD,MAAM,WAAW,qBAAqB;IAEpC,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAA;IAE5C,iBAAiB,CAAC,EAAE,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,OAAO,GAAI,OAAO,CAAE,GAAG,CAAE,CAAA;IAEnE,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,OAAO,GAAI,OAAO,CAAE,GAAG,EAAE,CAAE,CAAA;IAE1E,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,OAAO,GAAI,OAAO,CAAE,GAAG,EAAE,CAAE,CAAA;IAE5E,sBAAsB,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,OAAO,GAAG,OAAO,CAAE,GAAG,EAAE,CAAE,CAAA;IAEhF,mBAAmB,CAAC,iBAAiB,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAE,IAAI,CAAE,CAAA;IAE3E,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAE,GAAG,EAAE,CAAE,CAAA;CACpE"}
|
|
@@ -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 Web-Ifc Shim v1.
|
|
8
|
+
const versionString = 'Conway Web-Ifc Shim v1.373.1180';
|
|
9
9
|
export { versionString };
|