@ifc-lite/cli 0.33.1 → 0.34.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/README.md +8 -1
- package/dist/commands/diff-content-io.d.ts +50 -0
- package/dist/commands/diff-content-io.d.ts.map +1 -0
- package/dist/commands/diff-content-io.js +104 -0
- package/dist/commands/diff-content-io.js.map +1 -0
- package/dist/commands/diff-content-report.d.ts +23 -0
- package/dist/commands/diff-content-report.d.ts.map +1 -0
- package/dist/commands/diff-content-report.js +67 -0
- package/dist/commands/diff-content-report.js.map +1 -0
- package/dist/commands/diff-content.d.ts +19 -0
- package/dist/commands/diff-content.d.ts.map +1 -1
- package/dist/commands/diff-content.js +120 -129
- package/dist/commands/diff-content.js.map +1 -1
- package/dist/commands/diff-engine.d.ts +32 -1
- package/dist/commands/diff-engine.d.ts.map +1 -1
- package/dist/commands/diff-engine.js +75 -15
- package/dist/commands/diff-engine.js.map +1 -1
- package/dist/commands/diff-geometry.d.ts +107 -0
- package/dist/commands/diff-geometry.d.ts.map +1 -0
- package/dist/commands/diff-geometry.js +262 -0
- package/dist/commands/diff-geometry.js.map +1 -0
- package/dist/commands/diff-lineage-io.d.ts +23 -0
- package/dist/commands/diff-lineage-io.d.ts.map +1 -0
- package/dist/commands/diff-lineage-io.js +119 -0
- package/dist/commands/diff-lineage-io.js.map +1 -0
- package/dist/commands/diff.d.ts.map +1 -1
- package/dist/commands/diff.js +34 -3
- package/dist/commands/diff.js.map +1 -1
- package/dist/commands/rekey.d.ts +27 -0
- package/dist/commands/rekey.d.ts.map +1 -0
- package/dist/commands/rekey.js +192 -0
- package/dist/commands/rekey.js.map +1 -0
- package/dist/commands/validate.d.ts.map +1 -1
- package/dist/commands/validate.js +2 -1
- package/dist/commands/validate.js.map +1 -1
- package/dist/headless-backend.d.ts.map +1 -1
- package/dist/headless-backend.js +31 -23
- package/dist/headless-backend.js.map +1 -1
- package/dist/index.js +10 -0
- package/dist/index.js.map +1 -1
- package/dist/query-overlay-relations.d.ts +8 -28
- package/dist/query-overlay-relations.d.ts.map +1 -1
- package/dist/query-overlay-relations.js +68 -78
- package/dist/query-overlay-relations.js.map +1 -1
- package/dist/query-overlay.d.ts +6 -2
- package/dist/query-overlay.d.ts.map +1 -1
- package/dist/query-overlay.js +61 -5
- package/dist/query-overlay.js.map +1 -1
- package/package.json +18 -18
package/dist/query-overlay.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
2
2
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
3
3
|
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
|
|
4
|
+
import { getAttributeNamesForSchema, normalizeIfcTypeName, resolveEffectiveEntityRecord } from '@ifc-lite/parser';
|
|
4
5
|
function scalarAttr(value) {
|
|
5
6
|
if (typeof value !== 'string')
|
|
6
7
|
return '';
|
|
@@ -27,29 +28,84 @@ function createdEntityData(entity, modelId) {
|
|
|
27
28
|
objectType: '',
|
|
28
29
|
};
|
|
29
30
|
}
|
|
31
|
+
/** The created entity as export writes it: effective class, name-relaid attributes, edits applied. */
|
|
32
|
+
function effectiveCreatedEntity(view, entity, schemaVersion) {
|
|
33
|
+
const record = resolveEffectiveEntityRecord(entity, {
|
|
34
|
+
retype: view.getEntityTypeMutation(entity.expressId)?.newType,
|
|
35
|
+
named: view.getAttributeMutationsForEntity(entity.expressId).map(({ name, value }) => [name, value]),
|
|
36
|
+
positional: view.getPositionalMutationsForEntity(entity.expressId) ?? [],
|
|
37
|
+
}, schemaVersion);
|
|
38
|
+
return { ...entity, type: record.type, attributes: record.attributes };
|
|
39
|
+
}
|
|
40
|
+
/** The class a queued `setEntityType` gives the entity, in `IfcWall` spelling. */
|
|
41
|
+
export function effectiveEntityType(view, expressId) {
|
|
42
|
+
const retype = view.getEntityTypeMutation(expressId)?.newType;
|
|
43
|
+
return retype ? normalizeIfcTypeName(retype) : null;
|
|
44
|
+
}
|
|
45
|
+
/** Apply the export's named-then-positional precedence to parsed root fields. */
|
|
46
|
+
export function applyParsedEntityOverrides(view, expressId, type, schemaVersion, data) {
|
|
47
|
+
if (!view)
|
|
48
|
+
return data;
|
|
49
|
+
const effectiveType = effectiveEntityType(view, expressId);
|
|
50
|
+
// Positional slots are named by the effective class, as export lays them out.
|
|
51
|
+
const names = getAttributeNamesForSchema(effectiveType ?? type, schemaVersion);
|
|
52
|
+
const next = { ...data, type: effectiveType ?? data.type };
|
|
53
|
+
// A retype re-lays the record out by name: a header slot the effective
|
|
54
|
+
// class does not declare is gone from the saved file, so it is gone here.
|
|
55
|
+
if (effectiveType && names.length > 0 && !names.includes('ObjectType'))
|
|
56
|
+
next.objectType = '';
|
|
57
|
+
const apply = (name, value) => {
|
|
58
|
+
const text = scalarAttr(value);
|
|
59
|
+
switch (name) {
|
|
60
|
+
case 'GlobalId':
|
|
61
|
+
next.globalId = text;
|
|
62
|
+
break;
|
|
63
|
+
case 'Name':
|
|
64
|
+
next.name = text;
|
|
65
|
+
break;
|
|
66
|
+
case 'Description':
|
|
67
|
+
next.description = text;
|
|
68
|
+
break;
|
|
69
|
+
case 'ObjectType':
|
|
70
|
+
next.objectType = text;
|
|
71
|
+
break;
|
|
72
|
+
}
|
|
73
|
+
};
|
|
74
|
+
for (const { name, value } of view.getAttributeMutationsForEntity(expressId))
|
|
75
|
+
apply(name, value);
|
|
76
|
+
for (const [index, value] of view.getPositionalMutationsForEntity(expressId) ?? []) {
|
|
77
|
+
const name = names[index];
|
|
78
|
+
if (name)
|
|
79
|
+
apply(name, value);
|
|
80
|
+
}
|
|
81
|
+
return next;
|
|
82
|
+
}
|
|
30
83
|
/**
|
|
31
84
|
* `getEntityData(ref)`'s overlay half: `null` means deleted this session,
|
|
32
85
|
* `undefined` means "not in the overlay, fall through to the parsed store".
|
|
33
86
|
*/
|
|
34
|
-
export function overlayEntityData(view, ref) {
|
|
87
|
+
export function overlayEntityData(view, ref, schemaVersion) {
|
|
35
88
|
if (!view)
|
|
36
89
|
return undefined;
|
|
37
90
|
if (view.isDeleted(ref.expressId))
|
|
38
91
|
return null;
|
|
39
92
|
const created = view.getNewEntity(ref.expressId);
|
|
40
|
-
|
|
93
|
+
if (!created)
|
|
94
|
+
return undefined;
|
|
95
|
+
return createdEntityData(effectiveCreatedEntity(view, created, schemaVersion), ref.modelId);
|
|
41
96
|
}
|
|
42
97
|
/** This session's overlay-only entities matching an `entities()` query's type criteria. */
|
|
43
|
-
export function foldNewEntities(view, types, expandTypes, isProductType, modelId) {
|
|
98
|
+
export function foldNewEntities(view, types, expandTypes, isProductType, modelId, schemaVersion) {
|
|
44
99
|
const wantedTypes = types && types.length > 0 ? new Set(expandTypes(types)) : null;
|
|
45
100
|
const out = [];
|
|
46
101
|
for (const created of view.getNewEntities()) {
|
|
47
102
|
if (view.isDeleted(created.expressId))
|
|
48
103
|
continue;
|
|
49
|
-
const
|
|
104
|
+
const effective = effectiveCreatedEntity(view, created, schemaVersion);
|
|
105
|
+
const upperType = effective.type.toUpperCase();
|
|
50
106
|
const matches = wantedTypes ? wantedTypes.has(upperType) : isProductType(upperType);
|
|
51
107
|
if (matches)
|
|
52
|
-
out.push(createdEntityData(
|
|
108
|
+
out.push(createdEntityData(effective, modelId));
|
|
53
109
|
}
|
|
54
110
|
return out;
|
|
55
111
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"query-overlay.js","sourceRoot":"","sources":["../src/query-overlay.ts"],"names":[],"mappings":"AAAA;;+DAE+D;
|
|
1
|
+
{"version":3,"file":"query-overlay.js","sourceRoot":"","sources":["../src/query-overlay.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ifc-lite/cli",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.34.0",
|
|
4
4
|
"description": "CLI toolkit for IFC files — query, validate, export, create, and script BIM data",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -20,25 +20,25 @@
|
|
|
20
20
|
"README.md"
|
|
21
21
|
],
|
|
22
22
|
"dependencies": {
|
|
23
|
-
"@ifc-lite/clash": "^2.3.0",
|
|
24
|
-
"@ifc-lite/data": "^4.5.0",
|
|
25
|
-
"@ifc-lite/create": "^2.6.0",
|
|
26
|
-
"@ifc-lite/diff": "^0.8.0",
|
|
27
23
|
"@ifc-lite/bcf": "^4.1.0",
|
|
28
|
-
"@ifc-lite/
|
|
29
|
-
"@ifc-lite/
|
|
30
|
-
"@ifc-lite/
|
|
31
|
-
"@ifc-lite/
|
|
32
|
-
"@ifc-lite/
|
|
33
|
-
"@ifc-lite/
|
|
34
|
-
"@ifc-lite/
|
|
35
|
-
"@ifc-lite/
|
|
36
|
-
"@ifc-lite/
|
|
37
|
-
"@ifc-lite/
|
|
38
|
-
"@ifc-lite/
|
|
24
|
+
"@ifc-lite/clash": "^2.3.1",
|
|
25
|
+
"@ifc-lite/create": "^2.7.0",
|
|
26
|
+
"@ifc-lite/diff": "^0.9.0",
|
|
27
|
+
"@ifc-lite/data": "^5.0.0",
|
|
28
|
+
"@ifc-lite/export": "^4.5.0",
|
|
29
|
+
"@ifc-lite/extensions": "^0.8.0",
|
|
30
|
+
"@ifc-lite/geometry": "^7.4.0",
|
|
31
|
+
"@ifc-lite/ids": "^1.17.4",
|
|
32
|
+
"@ifc-lite/ifcx": "^4.1.2",
|
|
33
|
+
"@ifc-lite/mcp": "^0.18.0",
|
|
34
|
+
"@ifc-lite/mutations": "^2.5.0",
|
|
35
|
+
"@ifc-lite/merge": "^0.4.6",
|
|
36
|
+
"@ifc-lite/parser": "^8.0.0",
|
|
37
|
+
"@ifc-lite/query": "^2.5.0",
|
|
38
|
+
"@ifc-lite/sdk": "^6.4.0",
|
|
39
|
+
"@ifc-lite/wasm": "^9.2.0",
|
|
39
40
|
"@ifc-lite/viewer-core": "^0.2.20",
|
|
40
|
-
"@ifc-lite/
|
|
41
|
-
"@ifc-lite/sdk": "^6.3.0"
|
|
41
|
+
"@ifc-lite/sandbox": "^2.6.0"
|
|
42
42
|
},
|
|
43
43
|
"devDependencies": {
|
|
44
44
|
"@types/node": "^26.4.1",
|