@ifc-lite/cli 0.33.1 → 0.36.1
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 +9 -2
- package/dist/commands/anonymize.d.ts.map +1 -1
- package/dist/commands/anonymize.js +1 -0
- package/dist/commands/anonymize.js.map +1 -1
- package/dist/commands/check.d.ts +2 -0
- package/dist/commands/check.d.ts.map +1 -0
- package/dist/commands/check.js +119 -0
- package/dist/commands/check.js.map +1 -0
- package/dist/commands/convert.d.ts.map +1 -1
- package/dist/commands/convert.js +28 -8
- package/dist/commands/convert.js.map +1 -1
- package/dist/commands/create.d.ts.map +1 -1
- package/dist/commands/create.js +6 -0
- package/dist/commands/create.js.map +1 -1
- package/dist/commands/delivery-checks-rules.d.ts +37 -0
- package/dist/commands/delivery-checks-rules.d.ts.map +1 -0
- package/dist/commands/delivery-checks-rules.js +76 -0
- package/dist/commands/delivery-checks-rules.js.map +1 -0
- package/dist/commands/delivery-checks.d.ts +12 -0
- package/dist/commands/delivery-checks.d.ts.map +1 -1
- package/dist/commands/delivery-checks.js +16 -5
- package/dist/commands/delivery-checks.js.map +1 -1
- package/dist/commands/delivery-recipe.d.ts +13 -2
- package/dist/commands/delivery-recipe.d.ts.map +1 -1
- package/dist/commands/delivery-recipe.js +29 -17
- package/dist/commands/delivery-recipe.js.map +1 -1
- package/dist/commands/delivery-report.d.ts +2 -2
- package/dist/commands/delivery-report.d.ts.map +1 -1
- package/dist/commands/delivery-report.js +14 -4
- package/dist/commands/delivery-report.js.map +1 -1
- package/dist/commands/delivery.d.ts.map +1 -1
- package/dist/commands/delivery.js +17 -5
- package/dist/commands/delivery.js.map +1 -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 +76 -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-scope.d.ts.map +1 -1
- package/dist/commands/diff-scope.js +2 -0
- package/dist/commands/diff-scope.js.map +1 -1
- package/dist/commands/diff.d.ts.map +1 -1
- package/dist/commands/diff.js +36 -3
- package/dist/commands/diff.js.map +1 -1
- package/dist/commands/export.d.ts.map +1 -1
- package/dist/commands/export.js +13 -0
- package/dist/commands/export.js.map +1 -1
- package/dist/commands/ext.js +26 -10
- package/dist/commands/ext.js.map +1 -1
- package/dist/commands/extract-entities.d.ts.map +1 -1
- package/dist/commands/extract-entities.js +26 -8
- package/dist/commands/extract-entities.js.map +1 -1
- package/dist/commands/flow-tracking.d.ts +20 -0
- package/dist/commands/flow-tracking.d.ts.map +1 -0
- package/dist/commands/flow-tracking.js +86 -0
- package/dist/commands/flow-tracking.js.map +1 -0
- package/dist/commands/flow.d.ts +2 -0
- package/dist/commands/flow.d.ts.map +1 -0
- package/dist/commands/flow.js +229 -0
- package/dist/commands/flow.js.map +1 -0
- package/dist/commands/gym/channels.d.ts.map +1 -1
- package/dist/commands/gym/channels.js +10 -2
- package/dist/commands/gym/channels.js.map +1 -1
- package/dist/commands/gym.d.ts.map +1 -1
- package/dist/commands/gym.js +5 -1
- package/dist/commands/gym.js.map +1 -1
- package/dist/commands/ids.d.ts.map +1 -1
- package/dist/commands/ids.js +36 -3
- package/dist/commands/ids.js.map +1 -1
- package/dist/commands/info.d.ts.map +1 -1
- package/dist/commands/info.js +20 -5
- package/dist/commands/info.js.map +1 -1
- package/dist/commands/layer-publish.d.ts.map +1 -1
- package/dist/commands/layer-publish.js +6 -0
- package/dist/commands/layer-publish.js.map +1 -1
- package/dist/commands/lod.d.ts.map +1 -1
- package/dist/commands/lod.js +4 -1
- package/dist/commands/lod.js.map +1 -1
- package/dist/commands/mutate-step-record.d.ts +25 -1
- package/dist/commands/mutate-step-record.d.ts.map +1 -1
- package/dist/commands/mutate-step-record.js +17 -22
- package/dist/commands/mutate-step-record.js.map +1 -1
- package/dist/commands/mutate.d.ts +2 -1
- package/dist/commands/mutate.d.ts.map +1 -1
- package/dist/commands/mutate.js +27 -2
- package/dist/commands/mutate.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 +213 -0
- package/dist/commands/rekey.js.map +1 -0
- package/dist/commands/simplify.d.ts.map +1 -1
- package/dist/commands/simplify.js +4 -1
- package/dist/commands/simplify.js.map +1 -1
- package/dist/commands/validate.d.ts +5 -14
- package/dist/commands/validate.d.ts.map +1 -1
- package/dist/commands/validate.js +13 -15
- package/dist/commands/validate.js.map +1 -1
- package/dist/headless-backend-store-authoring.d.ts +28 -0
- package/dist/headless-backend-store-authoring.d.ts.map +1 -0
- package/dist/headless-backend-store-authoring.js +34 -0
- package/dist/headless-backend-store-authoring.js.map +1 -0
- package/dist/headless-backend.d.ts +7 -0
- package/dist/headless-backend.d.ts.map +1 -1
- package/dist/headless-backend.js +78 -66
- package/dist/headless-backend.js.map +1 -1
- package/dist/help.d.ts +22 -0
- package/dist/help.d.ts.map +1 -0
- package/dist/help.js +260 -0
- package/dist/help.js.map +1 -0
- package/dist/index.js +45 -183
- package/dist/index.js.map +1 -1
- package/dist/loader.d.ts +2 -0
- package/dist/loader.d.ts.map +1 -1
- package/dist/loader.js +30 -1
- package/dist/loader.js.map +1 -1
- package/dist/out-flag-commands.d.ts +12 -0
- package/dist/out-flag-commands.d.ts.map +1 -0
- package/dist/out-flag-commands.js +19 -0
- package/dist/out-flag-commands.js.map +1 -0
- 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 +5 -3
- package/dist/query-overlay.d.ts.map +1 -1
- package/dist/query-overlay.js +57 -16
- package/dist/query-overlay.js.map +1 -1
- package/package.json +26 -22
- package/dist/version.d.ts +0 -14
- package/dist/version.d.ts.map +0 -1
- package/dist/version.js +0 -38
- package/dist/version.js.map +0 -1
package/dist/loader.js
CHANGED
|
@@ -50,6 +50,35 @@ export async function loadIfcBytes(bytes, label = 'input') {
|
|
|
50
50
|
process.stderr.write(`Error: ${label} is not a valid IFC/STEP file\n`);
|
|
51
51
|
process.exit(1);
|
|
52
52
|
}
|
|
53
|
+
// A STEP file ends with `END-ISO-10303-21;`. Its absence means the bytes are
|
|
54
|
+
// truncated -- a half-finished download, a killed export, a partial upload --
|
|
55
|
+
// and a truncated file does not fail to parse: it parses to a PREFIX. The
|
|
56
|
+
// scan stops wherever the bytes stop and reports whatever it got, so
|
|
57
|
+
// `ifc-lite info` answered "Entities: 59" and exited 0 for the first 4 KB of a
|
|
58
|
+
// real model, and "Schema: IFC4" for a 22-byte stub with no FILE_SCHEMA at
|
|
59
|
+
// all (#5532). A confidently wrong answer is worse than an error, because
|
|
60
|
+
// nothing downstream can tell it apart from a small model.
|
|
61
|
+
//
|
|
62
|
+
// Only the tail is decoded: these files reach hundreds of MB.
|
|
63
|
+
const tailStart = Math.max(0, bytes.byteLength - 256);
|
|
64
|
+
const tailSnippet = new TextDecoder('latin1').decode(bytes.subarray(tailStart));
|
|
65
|
+
if (!tailSnippet.includes('END-ISO-10303-21;')) {
|
|
66
|
+
process.stderr.write(`Error: ${label} is truncated: it starts like a STEP file but has no ` +
|
|
67
|
+
`END-ISO-10303-21; terminator, so any entity count or schema read from it ` +
|
|
68
|
+
`would describe only the part that arrived.\n`);
|
|
69
|
+
process.exit(1);
|
|
70
|
+
}
|
|
71
|
+
// A file with a header and no DATA section carries no entities at all. It is
|
|
72
|
+
// well-formed STEP, so the terminator check above passes; it is still not a
|
|
73
|
+
// model, and reporting a schema for it asserts something the file never said.
|
|
74
|
+
// Bounded, like the header scan: `DATA;` follows the header, and these files
|
|
75
|
+
// reach hundreds of MB -- decoding one whole would also risk V8's max string
|
|
76
|
+
// length. 64 KB is far more header than any exporter writes.
|
|
77
|
+
const headText = new TextDecoder('latin1').decode(bytes.subarray(0, Math.min(bytes.byteLength, 64 * 1024)));
|
|
78
|
+
if (!/^\s*DATA\s*;/m.test(headText)) {
|
|
79
|
+
process.stderr.write(`Error: ${label} has no DATA section, so it contains no IFC entities.\n`);
|
|
80
|
+
process.exit(1);
|
|
81
|
+
}
|
|
53
82
|
const parser = new IfcParser();
|
|
54
83
|
// Capture the parser's internal console.log/warn during parsing and route
|
|
55
84
|
// them to logger.debug: silent by default (stdout stays clean for payloads),
|
|
@@ -88,7 +117,7 @@ export async function createHeadlessContext(filePath) {
|
|
|
88
117
|
const store = await loadIfcFile(filePath);
|
|
89
118
|
const backend = new HeadlessBackend(store, basename(filePath));
|
|
90
119
|
const bim = createBimContext({ backend });
|
|
91
|
-
return { bim, store };
|
|
120
|
+
return { bim, store, backend };
|
|
92
121
|
}
|
|
93
122
|
/**
|
|
94
123
|
* Create a BimContext that streams viewer commands to a running `ifc-lite view` server.
|
package/dist/loader.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loader.js","sourceRoot":"","sources":["../src/loader.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"loader.js","sourceRoot":"","sources":["../src/loader.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAE/D;;GAEG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAqB,MAAM,kBAAkB,CAAC;AAClF,OAAO,EAAE,gBAAgB,EAA6E,MAAM,eAAe,CAAC;AAC5H,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,4BAA4B,EAAE,gCAAgC,EAAE,MAAM,uBAAuB,CAAC;AAEvG;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,QAAgB;IAChD,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACxC,OAAO,YAAY,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;AACxC,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,KAAiB,EACjB,KAAK,GAAG,OAAO;IAEf,uCAAuC;IACvC,IAAI,KAAK,CAAC,UAAU,KAAK,CAAC,EAAE,CAAC;QAC3B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,KAAK,uBAAuB,CAAC,CAAC;QAC7D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,2EAA2E;IAC3E,yEAAyE;IACzE,2EAA2E;IAC3E,2EAA2E;IAC3E,IAAI,CAAC;QACH,KAAK,GAAG,IAAI,UAAU,CAAC,MAAM,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC;IACxD,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,KAAK,KAAM,GAAa,CAAC,OAAO,IAAI,CAAC,CAAC;QACrE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,yEAAyE;IACzE,0EAA0E;IAC1E,MAAM,aAAa,GAAG,IAAI,WAAW,CAAC,QAAQ,CAAC,CAAC,MAAM,CACpD,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC,CACnD,CAAC;IACF,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;QAC5C,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,KAAK,iCAAiC,CAAC,CAAC;QACvE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,6EAA6E;IAC7E,8EAA8E;IAC9E,0EAA0E;IAC1E,qEAAqE;IACrE,+EAA+E;IAC/E,2EAA2E;IAC3E,0EAA0E;IAC1E,2DAA2D;IAC3D,EAAE;IACF,8DAA8D;IAC9D,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,UAAU,GAAG,GAAG,CAAC,CAAC;IACtD,MAAM,WAAW,GAAG,IAAI,WAAW,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC;IAChF,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,mBAAmB,CAAC,EAAE,CAAC;QAC/C,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,UAAU,KAAK,uDAAuD;YACpE,2EAA2E;YAC3E,8CAA8C,CACjD,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,6EAA6E;IAC7E,4EAA4E;IAC5E,8EAA8E;IAC9E,6EAA6E;IAC7E,6EAA6E;IAC7E,6DAA6D;IAC7D,MAAM,QAAQ,GAAG,IAAI,WAAW,CAAC,QAAQ,CAAC,CAAC,MAAM,CAC/C,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,EAAE,EAAE,GAAG,IAAI,CAAC,CAAC,CACzD,CAAC;IACF,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;QACpC,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,UAAU,KAAK,yDAAyD,CACzE,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,SAAS,EAAE,CAAC;IAE/B,0EAA0E;IAC1E,6EAA6E;IAC7E,wEAAwE;IACxE,yEAAyE;IACzE,wBAAwB;IACxB,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC;IAC5B,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAC9B,OAAO,CAAC,GAAG,GAAG,CAAC,GAAG,KAAgB,EAAE,EAAE;QACpC,MAAM,CAAC,KAAK,CAAC,WAAW,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACzD,CAAC,CAAC;IACF,OAAO,CAAC,IAAI,GAAG,CAAC,GAAG,KAAgB,EAAE,EAAE;QACrC,MAAM,CAAC,KAAK,CAAC,WAAW,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACzD,CAAC,CAAC;IACF,IAAI,CAAC;QACH,0EAA0E;QAC1E,2EAA2E;QAC3E,SAAS;QACT,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CACpC,KAAK,CAAC,UAAU,EAChB,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC,UAAU,CACrB,CAAC;QACjB,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,WAAW,EAAE;YACpD,wDAAwD;YACxD,YAAY,EAAE,CAAC,CAAS,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC;SAC1D,CAAC,CAAC;QACH,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,UAAU,CAAC;QAClC,OAAO,KAAK,CAAC;IACf,CAAC;YAAS,CAAC;QACT,OAAO,CAAC,GAAG,GAAG,OAAO,CAAC;QACtB,OAAO,CAAC,IAAI,GAAG,QAAQ,CAAC;IAC1B,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,QAAgB;IAC1D,MAAM,KAAK,GAAG,MAAM,WAAW,CAAC,QAAQ,CAAC,CAAC;IAC1C,MAAM,OAAO,GAAG,IAAI,eAAe,CAAC,KAAK,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC/D,MAAM,GAAG,GAAG,gBAAgB,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;IAC1C,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;AACjC,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,QAAgB,EAChB,UAAkB;IAElB,MAAM,KAAK,GAAG,MAAM,WAAW,CAAC,QAAQ,CAAC,CAAC;IAC1C,MAAM,OAAO,GAAG,IAAI,eAAe,CAAC,KAAK,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;IAE/D,mEAAmE;IAClE,OAAuD,CAAC,MAAM,GAAG,4BAA4B,CAAC,UAAU,CAAC,CAAC;IAC1G,OAA+D,CAAC,UAAU,GAAG,gCAAgC,CAAC,UAAU,CAAC,CAAC;IAE3H,MAAM,GAAG,GAAG,gBAAgB,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;IAC1C,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC;AACxB,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Commands that write their result to a path given by `--out`.
|
|
3
|
+
*
|
|
4
|
+
* `--out` was listed under the global `Options:` block, and is not global: the
|
|
5
|
+
* 21 commands not named here parse no such flag, so `info --json --out f.json`
|
|
6
|
+
* wrote to stdout, created nothing and exited 0 (#5528). It is documented per
|
|
7
|
+
* command instead -- each of these already shows `--out F` on its own line in
|
|
8
|
+
* `Commands:` -- and passing it to any other command is refused rather than
|
|
9
|
+
* swallowed.
|
|
10
|
+
*/
|
|
11
|
+
export declare const COMMANDS_WITH_OUT: Set<string>;
|
|
12
|
+
//# sourceMappingURL=out-flag-commands.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"out-flag-commands.d.ts","sourceRoot":"","sources":["../src/out-flag-commands.ts"],"names":[],"mappings":"AAIA;;;;;;;;;GASG;AACH,eAAO,MAAM,iBAAiB,aAI5B,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
2
|
+
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
3
|
+
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
|
|
4
|
+
/**
|
|
5
|
+
* Commands that write their result to a path given by `--out`.
|
|
6
|
+
*
|
|
7
|
+
* `--out` was listed under the global `Options:` block, and is not global: the
|
|
8
|
+
* 21 commands not named here parse no such flag, so `info --json --out f.json`
|
|
9
|
+
* wrote to stdout, created nothing and exited 0 (#5528). It is documented per
|
|
10
|
+
* command instead -- each of these already shows `--out F` on its own line in
|
|
11
|
+
* `Commands:` -- and passing it to any other command is refused rather than
|
|
12
|
+
* swallowed.
|
|
13
|
+
*/
|
|
14
|
+
export const COMMANDS_WITH_OUT = new Set([
|
|
15
|
+
'export', 'diagnose-geometry', 'extract-entities', 'anonymize', 'bcf', 'create',
|
|
16
|
+
'merge', 'convert', 'rekey', 'mutate', 'generate-spaces', 'analyze', 'lod',
|
|
17
|
+
'simplify', 'delivery', 'flow',
|
|
18
|
+
]);
|
|
19
|
+
//# sourceMappingURL=out-flag-commands.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"out-flag-commands.js","sourceRoot":"","sources":["../src/out-flag-commands.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAE/D;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAAC;IACvC,QAAQ,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,WAAW,EAAE,KAAK,EAAE,QAAQ;IAC/E,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,iBAAiB,EAAE,SAAS,EAAE,KAAK;IAC1E,UAAU,EAAE,UAAU,EAAE,MAAM;CAC/B,CAAC,CAAC"}
|
|
@@ -1,29 +1,9 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
*
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
* `bim.related(wall, 'IfcRelContainedInSpatialStructure', 'inverse')` to confirm
|
|
10
|
-
* where its own wall landed got back nothing — the query answered about the file
|
|
11
|
-
* as parsed, not as the session had just changed it.
|
|
12
|
-
*
|
|
13
|
-
* `@ifc-lite/mcp`'s parallel `HeadlessLikeBackend` already folds queued
|
|
14
|
-
* relationships into `related()` for this exact reason (`packages/mcp/src/overlay.ts`,
|
|
15
|
-
* #2014). This ports that half — reading relations back out of newly-created
|
|
16
|
-
* `IfcRel…` entities — to the CLI, via `MutablePropertyView`'s own public
|
|
17
|
-
* `getNewEntities()`/`isDeleted()`.
|
|
18
|
-
*/
|
|
19
|
-
import type { NewEntity } from '@ifc-lite/mutations';
|
|
20
|
-
/**
|
|
21
|
-
* This session's queued `relType` relationships touching `expressId`, in the
|
|
22
|
-
* given `direction` — the overlay half of `related()`. `newEntities` and
|
|
23
|
-
* `isDeleted` come straight from `MutablePropertyView`, so a relationship
|
|
24
|
-
* whose `IfcRel…` record was itself deleted this session (or whose far end
|
|
25
|
-
* was) answers nothing, same as `related()`'s parsed-store half already does
|
|
26
|
-
* for a queued edge that never got authored in the first place.
|
|
27
|
-
*/
|
|
28
|
-
export declare function foldQueuedRelated(newEntities: readonly NewEntity[], isDeleted: (expressId: number) => boolean, relType: string, direction: 'forward' | 'inverse', expressId: number): number[];
|
|
1
|
+
import type { MutablePropertyView } from '@ifc-lite/mutations';
|
|
2
|
+
import { type IfcDataStore } from '@ifc-lite/parser';
|
|
3
|
+
import type { EntityData, EntityRef, EntityRelationshipsData } from '@ifc-lite/sdk';
|
|
4
|
+
/** Apply queued relationship creates, endpoint edits and deletes to every
|
|
5
|
+
* relationship projection exposed by the public CLI backend. */
|
|
6
|
+
export declare function foldQueuedRelationshipData(store: IfcDataStore, view: MutablePropertyView, result: EntityRelationshipsData, ref: EntityRef, entityData: (ref: EntityRef) => EntityData | null): EntityRelationshipsData;
|
|
7
|
+
export declare function foldQueuedRelated(store: IfcDataStore, view: MutablePropertyView, relType: string, direction: 'forward' | 'inverse', expressId: number): number[];
|
|
8
|
+
export declare function supersededRelationshipIds(store: IfcDataStore, view: MutablePropertyView): ReadonlySet<number>;
|
|
29
9
|
//# sourceMappingURL=query-overlay-relations.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"query-overlay-relations.d.ts","sourceRoot":"","sources":["../src/query-overlay-relations.ts"],"names":[],"mappings":"AAIA
|
|
1
|
+
{"version":3,"file":"query-overlay-relations.d.ts","sourceRoot":"","sources":["../src/query-overlay-relations.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC/D,OAAO,EAGL,KAAK,YAAY,EAClB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AAcpF;gEACgE;AAChE,wBAAgB,0BAA0B,CACxC,KAAK,EAAE,YAAY,EACnB,IAAI,EAAE,mBAAmB,EACzB,MAAM,EAAE,uBAAuB,EAC/B,GAAG,EAAE,SAAS,EACd,UAAU,EAAE,CAAC,GAAG,EAAE,SAAS,KAAK,UAAU,GAAG,IAAI,GAChD,uBAAuB,CA8CzB;AAED,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,YAAY,EACnB,IAAI,EAAE,mBAAmB,EACzB,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,SAAS,GAAG,SAAS,EAChC,SAAS,EAAE,MAAM,GAChB,MAAM,EAAE,CAIV;AAED,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,mBAAmB,GAAG,WAAW,CAAC,MAAM,CAAC,CAE7G"}
|
|
@@ -1,88 +1,78 @@
|
|
|
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 {
|
|
5
|
-
|
|
6
|
-
function
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
}
|
|
15
|
-
if (Array.isArray(value))
|
|
16
|
-
return value.flatMap((item) => refIds(item));
|
|
17
|
-
return [];
|
|
4
|
+
import { effectiveRelationshipEdges, resolveEffectiveRelationshipOverlay, } from '@ifc-lite/parser';
|
|
5
|
+
import { effectiveEntityType } from './query-overlay.js';
|
|
6
|
+
function effective(store, view) {
|
|
7
|
+
return resolveEffectiveRelationshipOverlay(store, {
|
|
8
|
+
createdEntities: () => view.getNewEntities(),
|
|
9
|
+
mutatedEntityIds: () => view.getEffectiveChanges().map(change => change.entityId),
|
|
10
|
+
namedAttributes: id => view.getAttributeMutationsForEntity(id).map(({ name, value }) => [name, value]),
|
|
11
|
+
positionalAttributes: id => view.getPositionalMutationsForEntity(id) ?? [],
|
|
12
|
+
entityType: id => view.getEntityTypeMutation(id)?.newType,
|
|
13
|
+
isDeleted: id => view.isDeleted(id),
|
|
14
|
+
});
|
|
18
15
|
}
|
|
19
|
-
/**
|
|
20
|
-
*
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
const
|
|
32
|
-
if (!
|
|
33
|
-
|
|
34
|
-
const
|
|
35
|
-
if (
|
|
16
|
+
/** Apply queued relationship creates, endpoint edits and deletes to every
|
|
17
|
+
* relationship projection exposed by the public CLI backend. */
|
|
18
|
+
export function foldQueuedRelationshipData(store, view, result, ref, entityData) {
|
|
19
|
+
if (view.isDeleted(ref.expressId)) {
|
|
20
|
+
return { voids: [], fills: [], groups: [], connections: [], relations: [] };
|
|
21
|
+
}
|
|
22
|
+
const overlay = effective(store, view);
|
|
23
|
+
const seen = new Set();
|
|
24
|
+
const relations = (result.relations ?? []).flatMap((edge) => {
|
|
25
|
+
if (view.isDeleted(edge.relationshipId) || overlay.supersededSourceIds.has(edge.relationshipId)
|
|
26
|
+
|| view.isDeleted(edge.entity.id))
|
|
27
|
+
return [];
|
|
28
|
+
const target = entityData({ modelId: ref.modelId, expressId: edge.entity.id });
|
|
29
|
+
if (!target)
|
|
30
|
+
return [];
|
|
31
|
+
const key = `${edge.direction}:${edge.relationshipId}:${edge.entity.id}`;
|
|
32
|
+
if (seen.has(key))
|
|
33
|
+
return [];
|
|
34
|
+
seen.add(key);
|
|
35
|
+
// Parsed rows carry the exact subtype (IfcDoorStandardCase); only a queued retype replaces it.
|
|
36
|
+
const type = effectiveEntityType(view, edge.entity.id) ?? edge.entity.type;
|
|
37
|
+
return [{ ...edge, entity: { id: edge.entity.id, name: target.name || undefined, type } }];
|
|
38
|
+
});
|
|
39
|
+
for (const edge of effectiveRelationshipEdges(overlay, id => view.isDeleted(id), ref.expressId)) {
|
|
40
|
+
const key = `${edge.direction}:${edge.relationshipId}:${edge.targetId}`;
|
|
41
|
+
if (seen.has(key))
|
|
36
42
|
continue;
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
for (let i = 0; i < names.length; i++) {
|
|
40
|
-
if (names[i].startsWith('Related'))
|
|
41
|
-
related ??= refIds(entity.attributes[i]);
|
|
42
|
-
else if (names[i].startsWith('Relating'))
|
|
43
|
-
relating ??= refIds(entity.attributes[i])[0];
|
|
44
|
-
}
|
|
45
|
-
if (relating === undefined || related === undefined || related.length === 0)
|
|
43
|
+
const target = entityData({ modelId: ref.modelId, expressId: edge.targetId });
|
|
44
|
+
if (!target)
|
|
46
45
|
continue;
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
46
|
+
seen.add(key);
|
|
47
|
+
relations.push({
|
|
48
|
+
relationshipId: edge.relationshipId,
|
|
49
|
+
relationshipType: edge.relationshipType,
|
|
50
|
+
direction: edge.direction,
|
|
51
|
+
entity: { id: edge.targetId, name: target.name || undefined, type: target.type },
|
|
52
|
+
});
|
|
53
53
|
}
|
|
54
|
-
|
|
54
|
+
const entities = (types, directions) => relations
|
|
55
|
+
.filter(edge => types.includes(edge.relationshipType.toUpperCase()) && directions.includes(edge.direction))
|
|
56
|
+
.map(edge => edge.entity);
|
|
57
|
+
return {
|
|
58
|
+
voids: entities(['IFCRELVOIDSELEMENT'], ['forward'])
|
|
59
|
+
.filter((entity, index, all) => all.findIndex(other => other.id === entity.id) === index),
|
|
60
|
+
fills: entities(['IFCRELFILLSELEMENT'], ['inverse'])
|
|
61
|
+
.filter((entity, index, all) => all.findIndex(other => other.id === entity.id) === index),
|
|
62
|
+
groups: entities(['IFCRELASSIGNSTOGROUP', 'IFCRELASSIGNSTOGROUPBYFACTOR'], ['inverse'])
|
|
63
|
+
.filter((entity, index, all) => all.findIndex(other => other.id === entity.id) === index),
|
|
64
|
+
connections: entities(['IFCRELCONNECTSPATHELEMENTS'], ['forward', 'inverse'])
|
|
65
|
+
.filter((entity, index, all) => entity.id !== ref.expressId
|
|
66
|
+
&& all.findIndex(other => other.id === entity.id) === index),
|
|
67
|
+
relations,
|
|
68
|
+
};
|
|
55
69
|
}
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
*/
|
|
64
|
-
export function foldQueuedRelated(newEntities, isDeleted, relType, direction, expressId) {
|
|
65
|
-
const byType = indexQueuedRelations(newEntities);
|
|
66
|
-
const relations = byType.get(relType.toUpperCase()) ?? [];
|
|
67
|
-
const out = [];
|
|
68
|
-
for (const relation of relations) {
|
|
69
|
-
if (isDeleted(relation.relationshipId))
|
|
70
|
-
continue;
|
|
71
|
-
if (direction === 'forward') {
|
|
72
|
-
if (relation.relating !== expressId)
|
|
73
|
-
continue;
|
|
74
|
-
for (const target of relation.related) {
|
|
75
|
-
if (!isDeleted(target))
|
|
76
|
-
out.push(target);
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
else {
|
|
80
|
-
if (!relation.related.includes(expressId))
|
|
81
|
-
continue;
|
|
82
|
-
if (!isDeleted(relation.relating))
|
|
83
|
-
out.push(relation.relating);
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
return out;
|
|
70
|
+
export function foldQueuedRelated(store, view, relType, direction, expressId) {
|
|
71
|
+
return effectiveRelationshipEdges(effective(store, view), id => view.isDeleted(id), expressId, relType)
|
|
72
|
+
.filter(edge => edge.direction === direction)
|
|
73
|
+
.map(edge => edge.targetId);
|
|
74
|
+
}
|
|
75
|
+
export function supersededRelationshipIds(store, view) {
|
|
76
|
+
return effective(store, view).supersededSourceIds;
|
|
87
77
|
}
|
|
88
78
|
//# sourceMappingURL=query-overlay-relations.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"query-overlay-relations.js","sourceRoot":"","sources":["../src/query-overlay-relations.ts"],"names":[],"mappings":"AAAA;;+DAE+D;
|
|
1
|
+
{"version":3,"file":"query-overlay-relations.js","sourceRoot":"","sources":["../src/query-overlay-relations.ts"],"names":[],"mappings":"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"}
|
package/dist/query-overlay.d.ts
CHANGED
|
@@ -13,13 +13,15 @@
|
|
|
13
13
|
*/
|
|
14
14
|
import type { EntityData, EntityRef, PropertySetData, QuantitySetData } from '@ifc-lite/sdk';
|
|
15
15
|
import type { MutablePropertyView } from '@ifc-lite/mutations';
|
|
16
|
+
/** The class a queued `setEntityType` gives the entity, in `IfcWall` spelling. */
|
|
17
|
+
export declare function effectiveEntityType(view: MutablePropertyView, expressId: number): string | null;
|
|
18
|
+
/** Apply the export's named-then-positional precedence to parsed root fields. */
|
|
19
|
+
export declare function applyParsedEntityOverrides(view: MutablePropertyView | null, expressId: number, type: string, schemaVersion: string, data: EntityData): EntityData;
|
|
16
20
|
/**
|
|
17
21
|
* `getEntityData(ref)`'s overlay half: `null` means deleted this session,
|
|
18
22
|
* `undefined` means "not in the overlay, fall through to the parsed store".
|
|
19
23
|
*/
|
|
20
|
-
export declare function overlayEntityData(view: MutablePropertyView | null, ref: EntityRef): EntityData | null | undefined;
|
|
21
|
-
/** This session's overlay-only entities matching an `entities()` query's type criteria. */
|
|
22
|
-
export declare function foldNewEntities(view: MutablePropertyView, types: string[] | undefined, expandTypes: (types: string[]) => string[], isProductType: (upperType: string) => boolean, modelId: string): EntityData[];
|
|
24
|
+
export declare function overlayEntityData(view: MutablePropertyView | null, ref: EntityRef, schemaVersion: string): EntityData | null | undefined;
|
|
23
25
|
/**
|
|
24
26
|
* `getProperties`/`getQuantities`'s overlay half. Unlike {@link overlayEntityData},
|
|
25
27
|
* this has no per-entity "not in the overlay" case to fall through on:
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"query-overlay.d.ts","sourceRoot":"","sources":["../src/query-overlay.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAC7F,OAAO,KAAK,EAAE,mBAAmB,EAAa,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"query-overlay.d.ts","sourceRoot":"","sources":["../src/query-overlay.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAC7F,OAAO,KAAK,EAAE,mBAAmB,EAAa,MAAM,qBAAqB,CAAC;AA2C1E,kFAAkF;AAClF,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,mBAAmB,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAG/F;AAED,iFAAiF;AACjF,wBAAgB,0BAA0B,CACxC,IAAI,EAAE,mBAAmB,GAAG,IAAI,EAChC,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,EACZ,aAAa,EAAE,MAAM,EACrB,IAAI,EAAE,UAAU,GACf,UAAU,CAwBZ;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,mBAAmB,GAAG,IAAI,EAChC,GAAG,EAAE,SAAS,EACd,aAAa,EAAE,MAAM,GACpB,UAAU,GAAG,IAAI,GAAG,SAAS,CAM/B;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,mBAAmB,GAAG,IAAI,EAAE,GAAG,EAAE,SAAS,GAAG,eAAe,EAAE,GAAG,SAAS,CAYjH;AAED,sEAAsE;AACtE,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,mBAAmB,GAAG,IAAI,EAAE,GAAG,EAAE,SAAS,GAAG,eAAe,EAAE,GAAG,SAAS,CAOjH"}
|
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,31 +28,71 @@ 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
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
export function foldNewEntities(view, types, expandTypes, isProductType, modelId) {
|
|
44
|
-
const wantedTypes = types && types.length > 0 ? new Set(expandTypes(types)) : null;
|
|
45
|
-
const out = [];
|
|
46
|
-
for (const created of view.getNewEntities()) {
|
|
47
|
-
if (view.isDeleted(created.expressId))
|
|
48
|
-
continue;
|
|
49
|
-
const upperType = created.type.toUpperCase();
|
|
50
|
-
const matches = wantedTypes ? wantedTypes.has(upperType) : isProductType(upperType);
|
|
51
|
-
if (matches)
|
|
52
|
-
out.push(createdEntityData(created, modelId));
|
|
53
|
-
}
|
|
54
|
-
return out;
|
|
93
|
+
if (!created)
|
|
94
|
+
return undefined;
|
|
95
|
+
return createdEntityData(effectiveCreatedEntity(view, created, schemaVersion), ref.modelId);
|
|
55
96
|
}
|
|
56
97
|
/**
|
|
57
98
|
* `getProperties`/`getQuantities`'s overlay half. Unlike {@link overlayEntityData},
|
|
@@ -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.36.1",
|
|
4
4
|
"description": "CLI toolkit for IFC files — query, validate, export, create, and script BIM data",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -20,30 +20,34 @@
|
|
|
20
20
|
"README.md"
|
|
21
21
|
],
|
|
22
22
|
"dependencies": {
|
|
23
|
-
"@ifc-lite/
|
|
24
|
-
"@ifc-lite/
|
|
25
|
-
"@ifc-lite/create": "^2.
|
|
26
|
-
"@ifc-lite/
|
|
27
|
-
"@ifc-lite/
|
|
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/
|
|
39
|
-
"@ifc-lite/
|
|
40
|
-
"@ifc-lite/
|
|
41
|
-
"@ifc-lite/
|
|
23
|
+
"@ifc-lite/bcf": "^4.2.0",
|
|
24
|
+
"@ifc-lite/cache": "^3.6.0",
|
|
25
|
+
"@ifc-lite/create": "^2.9.2",
|
|
26
|
+
"@ifc-lite/data": "^5.3.0",
|
|
27
|
+
"@ifc-lite/clash": "^2.4.0",
|
|
28
|
+
"@ifc-lite/diff": "^0.10.0",
|
|
29
|
+
"@ifc-lite/extensions": "^0.9.0",
|
|
30
|
+
"@ifc-lite/export": "^4.7.2",
|
|
31
|
+
"@ifc-lite/flow": "^0.3.0",
|
|
32
|
+
"@ifc-lite/geometry": "^7.5.1",
|
|
33
|
+
"@ifc-lite/ids": "^3.0.2",
|
|
34
|
+
"@ifc-lite/flow-nodes": "^0.3.1",
|
|
35
|
+
"@ifc-lite/mcp": "^0.20.2",
|
|
36
|
+
"@ifc-lite/merge": "^0.4.7",
|
|
37
|
+
"@ifc-lite/ifcx": "^4.2.0",
|
|
38
|
+
"@ifc-lite/mutations": "^2.7.0",
|
|
39
|
+
"@ifc-lite/rules": "^0.3.2",
|
|
40
|
+
"@ifc-lite/sdk": "^7.1.1",
|
|
41
|
+
"@ifc-lite/wasm": "^10.1.0",
|
|
42
|
+
"@ifc-lite/query": "^2.5.0",
|
|
43
|
+
"@ifc-lite/viewer-core": "^0.2.22",
|
|
44
|
+
"@ifc-lite/parser": "^8.2.0",
|
|
45
|
+
"@ifc-lite/sandbox": "^2.6.1"
|
|
42
46
|
},
|
|
43
47
|
"devDependencies": {
|
|
44
|
-
"@types/node": "^26.
|
|
48
|
+
"@types/node": "^26.6.1",
|
|
45
49
|
"typescript": "^6.0.3",
|
|
46
|
-
"vitest": "^
|
|
50
|
+
"vitest": "^5.0.1"
|
|
47
51
|
},
|
|
48
52
|
"engines": {
|
|
49
53
|
"node": ">=18.0.0"
|
package/dist/version.d.ts
DELETED
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
/** Reported when `package.json` can't be read — deliberately not a plausible
|
|
2
|
-
* version number, so a bug report never carries a fabricated one. */
|
|
3
|
-
export declare const UNKNOWN_VERSION = "0.0.0-unknown";
|
|
4
|
-
/**
|
|
5
|
-
* Read `version` from the package manifest at `pkgPath`.
|
|
6
|
-
*
|
|
7
|
-
* A failure here is a broken install (missing/unreadable/corrupt
|
|
8
|
-
* `package.json`), not a normal condition: it used to fall back to a
|
|
9
|
-
* hard-coded `'0.4.0'`, which by 0.22.0 meant `--version` confidently
|
|
10
|
-
* reported a version the binary had not been for eighteen releases. Report
|
|
11
|
-
* the failure on stderr and return a value that reads as unknown.
|
|
12
|
-
*/
|
|
13
|
-
export declare function readCliVersion(pkgPath: string): string;
|
|
14
|
-
//# sourceMappingURL=version.d.ts.map
|
package/dist/version.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAaA;qEACqE;AACrE,eAAO,MAAM,eAAe,kBAAkB,CAAC;AAE/C;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAgBtD"}
|
package/dist/version.js
DELETED
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
2
|
-
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
3
|
-
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
|
|
4
|
-
/**
|
|
5
|
-
* The CLI's own version, read from its `package.json` at startup.
|
|
6
|
-
*
|
|
7
|
-
* Kept out of `index.ts` so the read can be tested without executing the
|
|
8
|
-
* CLI's top-level `main()`.
|
|
9
|
-
*/
|
|
10
|
-
import { readFileSync } from 'node:fs';
|
|
11
|
-
/** Reported when `package.json` can't be read — deliberately not a plausible
|
|
12
|
-
* version number, so a bug report never carries a fabricated one. */
|
|
13
|
-
export const UNKNOWN_VERSION = '0.0.0-unknown';
|
|
14
|
-
/**
|
|
15
|
-
* Read `version` from the package manifest at `pkgPath`.
|
|
16
|
-
*
|
|
17
|
-
* A failure here is a broken install (missing/unreadable/corrupt
|
|
18
|
-
* `package.json`), not a normal condition: it used to fall back to a
|
|
19
|
-
* hard-coded `'0.4.0'`, which by 0.22.0 meant `--version` confidently
|
|
20
|
-
* reported a version the binary had not been for eighteen releases. Report
|
|
21
|
-
* the failure on stderr and return a value that reads as unknown.
|
|
22
|
-
*/
|
|
23
|
-
export function readCliVersion(pkgPath) {
|
|
24
|
-
try {
|
|
25
|
-
const pkg = JSON.parse(readFileSync(pkgPath, 'utf-8'));
|
|
26
|
-
if (typeof pkg.version === 'string' && pkg.version.length > 0)
|
|
27
|
-
return pkg.version;
|
|
28
|
-
process.stderr.write(`Warning: ${pkgPath} declares no "version"; reporting ${UNKNOWN_VERSION}.\n`);
|
|
29
|
-
return UNKNOWN_VERSION;
|
|
30
|
-
}
|
|
31
|
-
catch (err) {
|
|
32
|
-
process.stderr.write(`Warning: could not read the CLI version from ${pkgPath} ` +
|
|
33
|
-
`(${err instanceof Error ? err.message : String(err)}); ` +
|
|
34
|
-
`reporting ${UNKNOWN_VERSION}.\n`);
|
|
35
|
-
return UNKNOWN_VERSION;
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
//# sourceMappingURL=version.js.map
|