@ifc-lite/cli 0.24.3 → 0.25.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/commands/analyze.d.ts.map +1 -1
- package/dist/commands/analyze.js +11 -3
- package/dist/commands/analyze.js.map +1 -1
- package/dist/commands/ask.d.ts.map +1 -1
- package/dist/commands/ask.js +4 -0
- package/dist/commands/ask.js.map +1 -1
- package/dist/commands/clash.d.ts +12 -0
- package/dist/commands/clash.d.ts.map +1 -1
- package/dist/commands/clash.js +17 -3
- package/dist/commands/clash.js.map +1 -1
- package/dist/commands/export.d.ts.map +1 -1
- package/dist/commands/export.js +8 -11
- package/dist/commands/export.js.map +1 -1
- package/dist/commands/gym/ops.d.ts.map +1 -1
- package/dist/commands/gym/ops.js +3 -8
- package/dist/commands/gym/ops.js.map +1 -1
- package/dist/commands/ids.d.ts.map +1 -1
- package/dist/commands/ids.js +6 -0
- package/dist/commands/ids.js.map +1 -1
- package/dist/commands/lod.d.ts.map +1 -1
- package/dist/commands/lod.js +2 -15
- package/dist/commands/lod.js.map +1 -1
- package/dist/commands/mcp.d.ts +24 -0
- package/dist/commands/mcp.d.ts.map +1 -1
- package/dist/commands/mcp.js +46 -18
- package/dist/commands/mcp.js.map +1 -1
- package/dist/commands/mutate.d.ts +22 -0
- package/dist/commands/mutate.d.ts.map +1 -1
- package/dist/commands/mutate.js +25 -15
- package/dist/commands/mutate.js.map +1 -1
- package/dist/headless-backend.d.ts +20 -3
- package/dist/headless-backend.d.ts.map +1 -1
- package/dist/headless-backend.js +51 -72
- package/dist/headless-backend.js.map +1 -1
- package/dist/headless-test-helpers.d.ts +25 -0
- package/dist/headless-test-helpers.d.ts.map +1 -0
- package/dist/headless-test-helpers.js +72 -0
- package/dist/headless-test-helpers.js.map +1 -0
- package/package.json +20 -20
package/dist/commands/mcp.d.ts
CHANGED
|
@@ -1,2 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Collect the positional `.ifc` paths from `ifc-lite mcp`'s argv.
|
|
3
|
+
*
|
|
4
|
+
* The naive `args.filter(a => !a.startsWith('-'))` also catches option VALUES
|
|
5
|
+
* (`8765` after `--port`, `/models` after `--allow`) and turns them into bogus
|
|
6
|
+
* IFC paths, so the walk has to skip each value-bearing flag's next token. It
|
|
7
|
+
* needs a list of which flags those are — and that list used to be a local
|
|
8
|
+
* copy of the standalone `ifc-lite-mcp` binary's flag set.
|
|
9
|
+
*
|
|
10
|
+
* The copy drifted. `--allow-origin` was added to the binary and never here,
|
|
11
|
+
* so `ifc-lite mcp --transport http --allow-origin https://app.example.test
|
|
12
|
+
* model.ifc` skipped the flag, failed to skip the origin, and called
|
|
13
|
+
* `resolve('https://app.example.test')` — loading the origin as a model file.
|
|
14
|
+
* `MCP_VALUE_FLAGS` now comes from `@ifc-lite/mcp/cli-args`, where a test
|
|
15
|
+
* drives the binary's real parser against it.
|
|
16
|
+
*
|
|
17
|
+
* Flags this subcommand cannot act on are reported rather than honoured: their
|
|
18
|
+
* values are still skipped (that is the bug above), but the caller warns
|
|
19
|
+
* instead of letting the user believe the flag took effect.
|
|
20
|
+
*/
|
|
21
|
+
export declare function collectModelPaths(args: string[]): {
|
|
22
|
+
files: string[];
|
|
23
|
+
unsupported: string[];
|
|
24
|
+
};
|
|
1
25
|
export declare function mcpCommand(args: string[]): Promise<void>;
|
|
2
26
|
//# sourceMappingURL=mcp.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp.d.ts","sourceRoot":"","sources":["../../src/commands/mcp.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"mcp.d.ts","sourceRoot":"","sources":["../../src/commands/mcp.ts"],"names":[],"mappings":"AA+BA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG;IAAE,KAAK,EAAE,MAAM,EAAE,CAAC;IAAC,WAAW,EAAE,MAAM,EAAE,CAAA;CAAE,CAa5F;AAED,wBAAsB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA2I9D"}
|
package/dist/commands/mcp.js
CHANGED
|
@@ -10,7 +10,44 @@
|
|
|
10
10
|
*/
|
|
11
11
|
import { resolve } from 'node:path';
|
|
12
12
|
import { StdioTransport, HttpTransport, BearerTokenAuth, AllowAllAuth, loadIfcModel, createMCPServer, InMemoryModelRegistry, fullScope, readOnlyScope, VERSION, } from '@ifc-lite/mcp';
|
|
13
|
+
import { isMcpValueFlag, MCP_SUBCOMMAND_UNSUPPORTED_FLAGS } from '@ifc-lite/mcp/cli-args';
|
|
13
14
|
import { fatal, hasFlag, getFlag, getAllFlags } from '../output.js';
|
|
15
|
+
/**
|
|
16
|
+
* Collect the positional `.ifc` paths from `ifc-lite mcp`'s argv.
|
|
17
|
+
*
|
|
18
|
+
* The naive `args.filter(a => !a.startsWith('-'))` also catches option VALUES
|
|
19
|
+
* (`8765` after `--port`, `/models` after `--allow`) and turns them into bogus
|
|
20
|
+
* IFC paths, so the walk has to skip each value-bearing flag's next token. It
|
|
21
|
+
* needs a list of which flags those are — and that list used to be a local
|
|
22
|
+
* copy of the standalone `ifc-lite-mcp` binary's flag set.
|
|
23
|
+
*
|
|
24
|
+
* The copy drifted. `--allow-origin` was added to the binary and never here,
|
|
25
|
+
* so `ifc-lite mcp --transport http --allow-origin https://app.example.test
|
|
26
|
+
* model.ifc` skipped the flag, failed to skip the origin, and called
|
|
27
|
+
* `resolve('https://app.example.test')` — loading the origin as a model file.
|
|
28
|
+
* `MCP_VALUE_FLAGS` now comes from `@ifc-lite/mcp/cli-args`, where a test
|
|
29
|
+
* drives the binary's real parser against it.
|
|
30
|
+
*
|
|
31
|
+
* Flags this subcommand cannot act on are reported rather than honoured: their
|
|
32
|
+
* values are still skipped (that is the bug above), but the caller warns
|
|
33
|
+
* instead of letting the user believe the flag took effect.
|
|
34
|
+
*/
|
|
35
|
+
export function collectModelPaths(args) {
|
|
36
|
+
const files = [];
|
|
37
|
+
const unsupported = [];
|
|
38
|
+
for (let i = 0; i < args.length; i++) {
|
|
39
|
+
const arg = args[i];
|
|
40
|
+
if (arg.startsWith('-')) {
|
|
41
|
+
if (MCP_SUBCOMMAND_UNSUPPORTED_FLAGS.includes(arg))
|
|
42
|
+
unsupported.push(arg);
|
|
43
|
+
if (isMcpValueFlag(arg))
|
|
44
|
+
i++; // consume the value as well
|
|
45
|
+
continue;
|
|
46
|
+
}
|
|
47
|
+
files.push(resolve(arg));
|
|
48
|
+
}
|
|
49
|
+
return { files, unsupported };
|
|
50
|
+
}
|
|
14
51
|
export async function mcpCommand(args) {
|
|
15
52
|
if (args.length === 0 && (process.stdin.isTTY ?? false)) {
|
|
16
53
|
process.stderr.write([
|
|
@@ -49,23 +86,9 @@ export async function mcpCommand(args) {
|
|
|
49
86
|
const openBrowser = hasFlag(args, '--open');
|
|
50
87
|
const viewerPort = Number(getFlag(args, '--viewer-port') ?? 0);
|
|
51
88
|
const allowedPaths = getAllFlags(args, '--allow').map((p) => resolve(p));
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
// each value-bearing flag's next token.
|
|
56
|
-
const VALUE_FLAGS = new Set([
|
|
57
|
-
'--transport', '--port', '--host', '--token', '--bsdd',
|
|
58
|
-
'--allow', '--viewer-port',
|
|
59
|
-
]);
|
|
60
|
-
const files = [];
|
|
61
|
-
for (let i = 0; i < args.length; i++) {
|
|
62
|
-
const arg = args[i];
|
|
63
|
-
if (arg.startsWith('-')) {
|
|
64
|
-
if (VALUE_FLAGS.has(arg))
|
|
65
|
-
i++; // consume the value as well
|
|
66
|
-
continue;
|
|
67
|
-
}
|
|
68
|
-
files.push(resolve(arg));
|
|
89
|
+
const { files, unsupported } = collectModelPaths(args);
|
|
90
|
+
for (const flag of unsupported) {
|
|
91
|
+
process.stderr.write(`[ifc-lite mcp] ${flag} is not honoured by this subcommand — run the standalone \`ifc-lite-mcp\` binary for it.\n`);
|
|
69
92
|
}
|
|
70
93
|
const scope = readOnly ? readOnlyScope() : fullScope();
|
|
71
94
|
if (transport === 'stdio') {
|
|
@@ -141,7 +164,12 @@ export async function mcpCommand(args) {
|
|
|
141
164
|
// Keys per-session state (layer workspaces) and its disposal
|
|
142
165
|
// (#1030); the transport rejects servers built without it.
|
|
143
166
|
sessionId,
|
|
144
|
-
config: {
|
|
167
|
+
config: {
|
|
168
|
+
readOnly,
|
|
169
|
+
bsddEndpoint: bsdd,
|
|
170
|
+
allowedPaths: allowedPaths.length > 0 ? allowedPaths : undefined,
|
|
171
|
+
samplingEnabled: false,
|
|
172
|
+
},
|
|
145
173
|
});
|
|
146
174
|
},
|
|
147
175
|
};
|
package/dist/commands/mcp.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp.js","sourceRoot":"","sources":["../../src/commands/mcp.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAE/D;;;;;;GAMG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EACL,cAAc,EACd,aAAa,EACb,eAAe,EACf,YAAY,EAGZ,YAAY,EACZ,eAAe,EACf,qBAAqB,EACrB,SAAS,EACT,aAAa,EAEb,OAAO,GACR,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAEpE,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,IAAc;IAC7C,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,EAAE,CAAC;QACxD,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB;YACE,sDAAsD;YACtD,EAAE;YACF,UAAU;YACV,+CAA+C;YAC/C,0CAA0C;YAC1C,mDAAmD;YACnD,qGAAqG;YACrG,oDAAoD;YACpD,6EAA6E;YAC7E,iDAAiD;YACjD,sDAAsD;YACtD,mDAAmD;YACnD,4DAA4D;YAC5D,6EAA6E;YAC7E,EAAE;YACF,WAAW;YACX,4BAA4B;YAC5B,wCAAwC;YACxC,qCAAqC;YACrC,mCAAmC;YACnC,qEAAqE;SACtE,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CACpB,CAAC;QACF,OAAO;IACT,CAAC;IAED,MAAM,SAAS,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,aAAa,CAAC,IAAI,OAAO,CAAqB,CAAC;IAChF,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,IAAI,CAAC,CAAC;IACrD,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IACrC,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IACvC,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IACrC,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;IAC9C,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;IAC7C,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,EAAE,UAAU,CAAC,IAAI,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IACxE,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC5C,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC;IAC/D,MAAM,YAAY,GAAG,WAAW,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IACzE,
|
|
1
|
+
{"version":3,"file":"mcp.js","sourceRoot":"","sources":["../../src/commands/mcp.ts"],"names":[],"mappings":"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"}
|
|
@@ -31,6 +31,28 @@ export declare function coerceValue(value: string): {
|
|
|
31
31
|
*/
|
|
32
32
|
export declare function matchesFilter(actual: any, operator: string, expected?: string): boolean;
|
|
33
33
|
export declare function mutateCommand(args: string[]): Promise<void>;
|
|
34
|
+
/**
|
|
35
|
+
* IFC types that define an ObjectType attribute, read from the bundled
|
|
36
|
+
* buildingSMART schema for the file's own version.
|
|
37
|
+
*
|
|
38
|
+
* This used to be a hand-written list of 29 type names. Every entry in it was
|
|
39
|
+
* correct, but IFC4 declares ObjectType on **218** entities, so 189 were
|
|
40
|
+
* missing — `--set ObjectType=...` on an IfcFurniture, IfcStairFlight,
|
|
41
|
+
* IfcPipeSegment or IfcSanitaryTerminal was refused with a "not applicable"
|
|
42
|
+
* warning that was simply wrong. Deriving the set means it cannot fall behind
|
|
43
|
+
* the schema again, and it is schema-aware: IFC2X3 and IFC4 do not declare
|
|
44
|
+
* ObjectType on the same entities.
|
|
45
|
+
*/
|
|
46
|
+
export declare function entitiesWithObjectType(schema: string): Promise<ReadonlySet<string>>;
|
|
47
|
+
/**
|
|
48
|
+
* Apply attribute mutations to STEP content via text replacement.
|
|
49
|
+
* For each target entity, finds its STEP line and replaces the attribute at the known index.
|
|
50
|
+
*/
|
|
51
|
+
export declare function applyAttributeMutations(content: string, mutations: {
|
|
52
|
+
entity: any;
|
|
53
|
+
propName: string;
|
|
54
|
+
value: string;
|
|
55
|
+
}[], objectTypeEntities: ReadonlySet<string>): string;
|
|
34
56
|
/**
|
|
35
57
|
* Split a STEP argument string by commas, respecting nested parens and quoted strings.
|
|
36
58
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mutate.d.ts","sourceRoot":"","sources":["../../src/commands/mutate.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,iBAAiB,
|
|
1
|
+
{"version":3,"file":"mutate.d.ts","sourceRoot":"","sources":["../../src/commands/mutate.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,iBAAiB,EAAwC,MAAM,gBAAgB,CAAC;AAEzF;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAiBzH;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG;IAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,OAAO,CAAA;CAAE,CAyB9H;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG;IAAE,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;IAAC,SAAS,EAAE,iBAAiB,CAAA;CAAE,CAW/G;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAgBvF;AAED,wBAAsB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA0JjE;AAaD;;;;;;;;;;;GAWG;AACH,wBAAsB,sBAAsB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAUzF;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,MAAM,EACf,SAAS,EAAE;IAAE,MAAM,EAAE,GAAG,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,EAAE,EAC7D,kBAAkB,EAAE,WAAW,CAAC,MAAM,CAAC,GACtC,MAAM,CAiDR;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAkCvD"}
|
package/dist/commands/mutate.js
CHANGED
|
@@ -13,7 +13,7 @@ import { getFlag, getAllFlags, hasFlag, fatal, printJson } from '../output.js';
|
|
|
13
13
|
import { MutablePropertyView } from '@ifc-lite/mutations';
|
|
14
14
|
import { StepExporter } from '@ifc-lite/export';
|
|
15
15
|
import { extractPropertiesOnDemand, extractQuantitiesOnDemand } from '@ifc-lite/parser';
|
|
16
|
-
import { PropertyValueType } from '@ifc-lite/data';
|
|
16
|
+
import { PropertyValueType, findAttribute } from '@ifc-lite/data';
|
|
17
17
|
/**
|
|
18
18
|
* Parse a --where filter string.
|
|
19
19
|
*/
|
|
@@ -219,7 +219,7 @@ export async function mutateCommand(args) {
|
|
|
219
219
|
// Apply attribute mutations via STEP text post-processing
|
|
220
220
|
if (attributeMutations.length > 0) {
|
|
221
221
|
const textContent = new TextDecoder().decode(result.content);
|
|
222
|
-
const outputContent = applyAttributeMutations(textContent, attributeMutations);
|
|
222
|
+
const outputContent = applyAttributeMutations(textContent, attributeMutations, await entitiesWithObjectType(schema));
|
|
223
223
|
await writeFile(outPath, outputContent, 'utf-8');
|
|
224
224
|
}
|
|
225
225
|
else {
|
|
@@ -256,23 +256,33 @@ const ATTRIBUTE_INDEX = {
|
|
|
256
256
|
objecttype: 4,
|
|
257
257
|
};
|
|
258
258
|
/**
|
|
259
|
-
* IFC types that
|
|
260
|
-
*
|
|
261
|
-
*
|
|
259
|
+
* IFC types that define an ObjectType attribute, read from the bundled
|
|
260
|
+
* buildingSMART schema for the file's own version.
|
|
261
|
+
*
|
|
262
|
+
* This used to be a hand-written list of 29 type names. Every entry in it was
|
|
263
|
+
* correct, but IFC4 declares ObjectType on **218** entities, so 189 were
|
|
264
|
+
* missing — `--set ObjectType=...` on an IfcFurniture, IfcStairFlight,
|
|
265
|
+
* IfcPipeSegment or IfcSanitaryTerminal was refused with a "not applicable"
|
|
266
|
+
* warning that was simply wrong. Deriving the set means it cannot fall behind
|
|
267
|
+
* the schema again, and it is schema-aware: IFC2X3 and IFC4 do not declare
|
|
268
|
+
* ObjectType on the same entities.
|
|
262
269
|
*/
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
'
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
270
|
+
export async function entitiesWithObjectType(schema) {
|
|
271
|
+
// `findAttribute` only knows the versions it has tables for; anything else
|
|
272
|
+
// (notably IFC5, which StepExporter accepts) falls back to IFC4 rather than
|
|
273
|
+
// throwing, which is what the hand-written list effectively did.
|
|
274
|
+
const known = new Set(['IFC2X3', 'IFC4', 'IFC4X3', 'IFC4X3_ADD2']);
|
|
275
|
+
const version = (known.has(schema) ? schema : 'IFC4');
|
|
276
|
+
const attr = await findAttribute(version, 'ObjectType');
|
|
277
|
+
// An attribute can be declared on an entity as a simple value or as part of
|
|
278
|
+
// a complex type; both mean the slot exists on that entity.
|
|
279
|
+
return new Set([...(attr?.simpleValueEntities ?? []), ...(attr?.complexEntities ?? [])]);
|
|
280
|
+
}
|
|
271
281
|
/**
|
|
272
282
|
* Apply attribute mutations to STEP content via text replacement.
|
|
273
283
|
* For each target entity, finds its STEP line and replaces the attribute at the known index.
|
|
274
284
|
*/
|
|
275
|
-
function applyAttributeMutations(content, mutations) {
|
|
285
|
+
export function applyAttributeMutations(content, mutations, objectTypeEntities) {
|
|
276
286
|
// Group mutations by expressId for efficient single-pass replacement
|
|
277
287
|
const mutationsByEntity = new Map();
|
|
278
288
|
for (const m of mutations) {
|
|
@@ -303,7 +313,7 @@ function applyAttributeMutations(content, mutations) {
|
|
|
303
313
|
const attrIdx = ATTRIBUTE_INDEX[mut.propName.toLowerCase()];
|
|
304
314
|
if (attrIdx !== undefined && attrIdx < args.length) {
|
|
305
315
|
// Validate ObjectType is only written to entities that define it
|
|
306
|
-
if (mut.propName.toLowerCase() === 'objecttype' && !
|
|
316
|
+
if (mut.propName.toLowerCase() === 'objecttype' && !objectTypeEntities.has(entityType)) {
|
|
307
317
|
process.stderr.write(`Warning: attribute "ObjectType" not applicable to ${entityType} #${expressId}, skipping\n`);
|
|
308
318
|
continue;
|
|
309
319
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mutate.js","sourceRoot":"","sources":["../../src/commands/mutate.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"mutate.js","sourceRoot":"","sources":["../../src/commands/mutate.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,10 +5,18 @@
|
|
|
5
5
|
* the standard BimBackend interface. Viewer-specific operations (colorize,
|
|
6
6
|
* flyTo, etc.) are no-ops.
|
|
7
7
|
*/
|
|
8
|
-
import type { BimBackend, BimEventType, ModelBackendMethods, QueryBackendMethods, SelectionBackendMethods, VisibilityBackendMethods, ViewerBackendMethods, MutateBackendMethods, StoreBackendMethods, SpacesBackendMethods, SpatialBackendMethods, ExportBackendMethods, LensBackendMethods, FilesBackendMethods, ScheduleBackendMethods } from '@ifc-lite/sdk';
|
|
8
|
+
import type { BimBackend, BimEventType, ModelBackendMethods, QueryBackendMethods, SelectionBackendMethods, VisibilityBackendMethods, ViewerBackendMethods, MutateBackendMethods, StoreBackendMethods, SpacesBackendMethods, StyleBackendMethods, SpatialBackendMethods, ExportBackendMethods, LensBackendMethods, FilesBackendMethods, ScheduleBackendMethods } from '@ifc-lite/sdk';
|
|
9
9
|
import type { IfcDataStore } from '@ifc-lite/parser';
|
|
10
|
-
|
|
11
|
-
export
|
|
10
|
+
import { expandTypes, isQueryableObjectType } from '@ifc-lite/parser';
|
|
11
|
+
export { expandTypes };
|
|
12
|
+
/**
|
|
13
|
+
* Which classes an unfiltered query answers with.
|
|
14
|
+
*
|
|
15
|
+
* Thin alias: the predicate is schema logic and lives in `@ifc-lite/parser`, so
|
|
16
|
+
* the CLI and MCP backends cannot drift apart on it. Kept as a named export
|
|
17
|
+
* here because both packages already publish it under this name.
|
|
18
|
+
*/
|
|
19
|
+
export declare const isProductType: typeof isQueryableObjectType;
|
|
12
20
|
/**
|
|
13
21
|
* Normalize boolean-like values for comparison.
|
|
14
22
|
* IFC STEP files store booleans as .T./.F., but users pass true/false.
|
|
@@ -29,11 +37,13 @@ export declare class HeadlessBackend implements BimBackend {
|
|
|
29
37
|
readonly files: FilesBackendMethods;
|
|
30
38
|
readonly schedule: ScheduleBackendMethods;
|
|
31
39
|
readonly spaces: SpacesBackendMethods;
|
|
40
|
+
readonly style: StyleBackendMethods;
|
|
32
41
|
private dataStore;
|
|
33
42
|
private modelName;
|
|
34
43
|
private mutationView;
|
|
35
44
|
private storeEditor;
|
|
36
45
|
constructor(store: IfcDataStore, modelName: string);
|
|
46
|
+
private createStyleAdapter;
|
|
37
47
|
private createSpacesAdapter;
|
|
38
48
|
subscribe(_event: BimEventType, _handler: (data: unknown) => void): () => void;
|
|
39
49
|
private createModelAdapter;
|
|
@@ -42,6 +52,13 @@ export declare class HeadlessBackend implements BimBackend {
|
|
|
42
52
|
private createVisibilityAdapter;
|
|
43
53
|
private createViewerAdapter;
|
|
44
54
|
private createMutateAdapter;
|
|
55
|
+
/**
|
|
56
|
+
* The overlay every write goes through, created on first use.
|
|
57
|
+
*
|
|
58
|
+
* Built by `getOrCreateStoreEditor` so the property and quantity extractors
|
|
59
|
+
* are wired exactly once, whichever adapter writes first.
|
|
60
|
+
*/
|
|
61
|
+
private getOrCreateMutationView;
|
|
45
62
|
private getOrCreateStoreEditor;
|
|
46
63
|
private createStoreAdapter;
|
|
47
64
|
private createSpatialAdapter;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"headless-backend.d.ts","sourceRoot":"","sources":["../src/headless-backend.ts"],"names":[],"mappings":"AAIA;;;;;;GAMG;AAEH,OAAO,KAAK,EACV,UAAU,EACV,YAAY,EACZ,mBAAmB,EACnB,mBAAmB,EACnB,uBAAuB,EACvB,wBAAwB,EACxB,oBAAoB,EACpB,oBAAoB,EACpB,mBAAmB,EACnB,oBAAoB,EACpB,qBAAqB,EACrB,oBAAoB,EACpB,kBAAkB,EAClB,mBAAmB,EACnB,sBAAsB,EAavB,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"headless-backend.d.ts","sourceRoot":"","sources":["../src/headless-backend.ts"],"names":[],"mappings":"AAIA;;;;;;GAMG;AAEH,OAAO,KAAK,EACV,UAAU,EACV,YAAY,EACZ,mBAAmB,EACnB,mBAAmB,EACnB,uBAAuB,EACvB,wBAAwB,EACxB,oBAAoB,EACpB,oBAAoB,EACpB,mBAAmB,EACnB,oBAAoB,EACpB,mBAAmB,EACnB,qBAAqB,EACrB,oBAAoB,EACpB,kBAAkB,EAClB,mBAAmB,EACnB,sBAAsB,EAavB,MAAM,eAAe,CAAC;AAEvB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AA+BrD,OAAO,EASL,WAAW,EAGX,qBAAqB,EACtB,MAAM,kBAAkB,CAAC;AAO1B,OAAO,EAAE,WAAW,EAAE,CAAC;AAavB;;;;;;GAMG;AACH,eAAO,MAAM,aAAa,8BAAwB,CAAC;AAEnD;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAI7D;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,CAcvF;AAED,qBAAa,eAAgB,YAAW,UAAU;IAChD,QAAQ,CAAC,KAAK,EAAE,mBAAmB,CAAC;IACpC,QAAQ,CAAC,KAAK,EAAE,mBAAmB,CAAC;IACpC,QAAQ,CAAC,SAAS,EAAE,uBAAuB,CAAC;IAC5C,QAAQ,CAAC,UAAU,EAAE,wBAAwB,CAAC;IAC9C,QAAQ,CAAC,MAAM,EAAE,oBAAoB,CAAC;IACtC,QAAQ,CAAC,MAAM,EAAE,oBAAoB,CAAC;IACtC,QAAQ,CAAC,KAAK,EAAE,mBAAmB,CAAC;IACpC,QAAQ,CAAC,OAAO,EAAE,qBAAqB,CAAC;IACxC,QAAQ,CAAC,MAAM,EAAE,oBAAoB,CAAC;IACtC,QAAQ,CAAC,IAAI,EAAE,kBAAkB,CAAC;IAClC,QAAQ,CAAC,KAAK,EAAE,mBAAmB,CAAC;IACpC,QAAQ,CAAC,QAAQ,EAAE,sBAAsB,CAAC;IAC1C,QAAQ,CAAC,MAAM,EAAE,oBAAoB,CAAC;IACtC,QAAQ,CAAC,KAAK,EAAE,mBAAmB,CAAC;IAEpC,OAAO,CAAC,SAAS,CAAe;IAChC,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,YAAY,CAAoC;IACxD,OAAO,CAAC,WAAW,CAA4B;gBAEnC,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM;IAmBlD,OAAO,CAAC,kBAAkB;IAkB1B,OAAO,CAAC,mBAAmB;IAU3B,SAAS,CAAC,MAAM,EAAE,YAAY,EAAE,QAAQ,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,GAAG,MAAM,IAAI;IAI9E,OAAO,CAAC,kBAAkB;IAoB1B,OAAO,CAAC,kBAAkB;IAoM1B,OAAO,CAAC,sBAAsB;IAQ9B,OAAO,CAAC,uBAAuB;IAS/B,OAAO,CAAC,mBAAmB;IAa3B,OAAO,CAAC,mBAAmB;IAI3B;;;;;OAKG;IACH,OAAO,CAAC,uBAAuB;IAO/B,OAAO,CAAC,sBAAsB;IAoB9B,OAAO,CAAC,kBAAkB;IA6E1B,OAAO,CAAC,oBAAoB;IAQ5B,OAAO,CAAC,mBAAmB;IAuH3B,OAAO,CAAC,iBAAiB;IAUzB,OAAO,CAAC,kBAAkB;IAS1B,OAAO,CAAC,qBAAqB;CA+B9B"}
|
package/dist/headless-backend.js
CHANGED
|
@@ -1,13 +1,17 @@
|
|
|
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 { createHeadlessMutateAdapter } from '@ifc-lite/sdk';
|
|
4
5
|
import { MutablePropertyView, StoreEditor } from '@ifc-lite/mutations';
|
|
5
|
-
import { addBeamToStore, addColumnToStore, addDoorToStore, addMemberToStore, addPlateToStore, addRoofToStore, addSlabToStore, addSpaceToStore, addWallToStore, addWindowToStore, resolveSpatialAnchor, generateSpaces, listStoreys, } from '@ifc-lite/create';
|
|
6
|
+
import { addBeamToStore, addColumnToStore, addDoorToStore, addMemberToStore, addPlateToStore, addRoofToStore, applyStylesInStore, addSlabToStore, addSpaceToStore, addWallToStore, addWindowToStore, resolveSpatialAnchor, generateSpaces, listStoreys, } from '@ifc-lite/create';
|
|
6
7
|
import { EntityNode } from '@ifc-lite/query';
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import { exportToStep, StepExporter } from '@ifc-lite/export';
|
|
8
|
+
import { extractAllEntityAttributes, extractClassificationsOnDemand, extractMaterialsOnDemand, extractPropertiesOnDemand, extractQuantitiesOnDemand, extractTypePropertiesOnDemand, extractDocumentsOnDemand, extractRelationshipsOnDemand, expandTypes, QUERY_REL_TYPE_MAP, extractScheduleOnDemand, isQueryableObjectType, } from '@ifc-lite/parser';
|
|
9
|
+
import { escapeCsvCell, exportToStep, StepExporter } from '@ifc-lite/export';
|
|
10
10
|
import { exportHbjson, exportDfjson } from './energy-export.js';
|
|
11
|
+
// `expandTypes` used to be defined here; it now comes from `@ifc-lite/parser`,
|
|
12
|
+
// shared with the other query backends (see `query-backend-maps.ts`). Re-exported
|
|
13
|
+
// so this module's consumers are unaffected by where it lives.
|
|
14
|
+
export { expandTypes };
|
|
11
15
|
const MODEL_ID = 'default';
|
|
12
16
|
/**
|
|
13
17
|
* Strip a real IFC source-file extension from a filename-derived model name.
|
|
@@ -17,54 +21,14 @@ const MODEL_ID = 'default';
|
|
|
17
21
|
function stripIfcExtension(name) {
|
|
18
22
|
return name.replace(/\.(ifc|ifcx|ifczip)$/i, '');
|
|
19
23
|
}
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
const
|
|
28
|
-
IFCWALL: ['IFCWALLSTANDARDCASE', 'IFCWALLELEMENTEDCASE'],
|
|
29
|
-
IFCBEAM: ['IFCBEAMSTANDARDCASE'],
|
|
30
|
-
IFCCOLUMN: ['IFCCOLUMNSTANDARDCASE'],
|
|
31
|
-
IFCDOOR: ['IFCDOORSTANDARDCASE'],
|
|
32
|
-
IFCWINDOW: ['IFCWINDOWSTANDARDCASE'],
|
|
33
|
-
IFCSLAB: ['IFCSLABSTANDARDCASE', 'IFCSLABELEMENTEDCASE'],
|
|
34
|
-
IFCMEMBER: ['IFCMEMBERSTANDARDCASE'],
|
|
35
|
-
IFCPLATE: ['IFCPLATESTANDARDCASE'],
|
|
36
|
-
IFCOPENINGELEMENT: ['IFCOPENINGSTANDARDCASE'],
|
|
37
|
-
};
|
|
38
|
-
export function expandTypes(types) {
|
|
39
|
-
const result = [];
|
|
40
|
-
for (const type of types) {
|
|
41
|
-
const upper = type.toUpperCase();
|
|
42
|
-
result.push(upper);
|
|
43
|
-
const subtypes = IFC_SUBTYPES[upper];
|
|
44
|
-
if (subtypes) {
|
|
45
|
-
for (const sub of subtypes)
|
|
46
|
-
result.push(sub);
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
return result;
|
|
50
|
-
}
|
|
51
|
-
export function isProductType(type) {
|
|
52
|
-
const enumVal = IfcTypeEnumFromString(type);
|
|
53
|
-
if (enumVal === IfcTypeEnum.Unknown)
|
|
54
|
-
return false;
|
|
55
|
-
const upper = type.toUpperCase();
|
|
56
|
-
if (upper.startsWith('IFCREL'))
|
|
57
|
-
return false;
|
|
58
|
-
if (upper.startsWith('IFCPROPERTY'))
|
|
59
|
-
return false;
|
|
60
|
-
if (upper.startsWith('IFCQUANTITY'))
|
|
61
|
-
return false;
|
|
62
|
-
if (upper === 'IFCELEMENTQUANTITY')
|
|
63
|
-
return false;
|
|
64
|
-
if (upper.endsWith('TYPE'))
|
|
65
|
-
return false;
|
|
66
|
-
return true;
|
|
67
|
-
}
|
|
24
|
+
/**
|
|
25
|
+
* Which classes an unfiltered query answers with.
|
|
26
|
+
*
|
|
27
|
+
* Thin alias: the predicate is schema logic and lives in `@ifc-lite/parser`, so
|
|
28
|
+
* the CLI and MCP backends cannot drift apart on it. Kept as a named export
|
|
29
|
+
* here because both packages already publish it under this name.
|
|
30
|
+
*/
|
|
31
|
+
export const isProductType = isQueryableObjectType;
|
|
68
32
|
/**
|
|
69
33
|
* Normalize boolean-like values for comparison.
|
|
70
34
|
* IFC STEP files store booleans as .T./.F., but users pass true/false.
|
|
@@ -107,6 +71,7 @@ export class HeadlessBackend {
|
|
|
107
71
|
files;
|
|
108
72
|
schedule;
|
|
109
73
|
spaces;
|
|
74
|
+
style;
|
|
110
75
|
dataStore;
|
|
111
76
|
modelName;
|
|
112
77
|
mutationView = null;
|
|
@@ -127,6 +92,19 @@ export class HeadlessBackend {
|
|
|
127
92
|
this.files = this.createFilesAdapter();
|
|
128
93
|
this.schedule = this.createScheduleAdapter();
|
|
129
94
|
this.spaces = this.createSpacesAdapter();
|
|
95
|
+
this.style = this.createStyleAdapter();
|
|
96
|
+
}
|
|
97
|
+
createStyleAdapter() {
|
|
98
|
+
return {
|
|
99
|
+
// Same arrangement as the spaces adapter: the work happens in
|
|
100
|
+
// @ifc-lite/create against the shared StoreEditor, so the new entities
|
|
101
|
+
// land in the overlay this backend's export adapter already reads.
|
|
102
|
+
applyColors: (batches, options) => applyStylesInStore(this.getOrCreateStoreEditor(), this.dataStore, batches.map(batch => ({
|
|
103
|
+
products: batch.refs.map(r => r.expressId),
|
|
104
|
+
color: batch.color,
|
|
105
|
+
name: batch.name,
|
|
106
|
+
})), options),
|
|
107
|
+
};
|
|
130
108
|
}
|
|
131
109
|
createSpacesAdapter() {
|
|
132
110
|
return {
|
|
@@ -347,7 +325,7 @@ export class HeadlessBackend {
|
|
|
347
325
|
return extractRelationshipsOnDemand(store, ref.expressId);
|
|
348
326
|
},
|
|
349
327
|
related(ref, relType, direction) {
|
|
350
|
-
const relEnum =
|
|
328
|
+
const relEnum = QUERY_REL_TYPE_MAP[relType];
|
|
351
329
|
if (relEnum === undefined)
|
|
352
330
|
return [];
|
|
353
331
|
const targets = store.relationships.getRelated(ref.expressId, relEnum, direction);
|
|
@@ -383,15 +361,19 @@ export class HeadlessBackend {
|
|
|
383
361
|
};
|
|
384
362
|
}
|
|
385
363
|
createMutateAdapter() {
|
|
386
|
-
return
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
364
|
+
return createHeadlessMutateAdapter(() => this.getOrCreateMutationView());
|
|
365
|
+
}
|
|
366
|
+
/**
|
|
367
|
+
* The overlay every write goes through, created on first use.
|
|
368
|
+
*
|
|
369
|
+
* Built by `getOrCreateStoreEditor` so the property and quantity extractors
|
|
370
|
+
* are wired exactly once, whichever adapter writes first.
|
|
371
|
+
*/
|
|
372
|
+
getOrCreateMutationView() {
|
|
373
|
+
this.getOrCreateStoreEditor();
|
|
374
|
+
// Non-null immediately after: getOrCreateStoreEditor assigns both fields
|
|
375
|
+
// together and never clears them.
|
|
376
|
+
return this.mutationView;
|
|
395
377
|
}
|
|
396
378
|
getOrCreateStoreEditor() {
|
|
397
379
|
if (this.storeEditor)
|
|
@@ -500,17 +482,14 @@ export class HeadlessBackend {
|
|
|
500
482
|
const store = this.dataStore;
|
|
501
483
|
const modelName = this.modelName;
|
|
502
484
|
const queryAdapter = this.query;
|
|
485
|
+
/**
|
|
486
|
+
* RFC 4180 quoting + the CWE-1236 formula-injection guard, delegated to
|
|
487
|
+
* `@ifc-lite/export`'s single escaper. The copy that used to live here
|
|
488
|
+
* tested the trigger anchored at offset 0, so a BOM/ZWSP/LRM/NBSP/U+2028
|
|
489
|
+
* in front of `=` walked past it.
|
|
490
|
+
*/
|
|
503
491
|
function escapeCsv(value, sep) {
|
|
504
|
-
|
|
505
|
-
// formula trigger so Excel/Sheets treat the cell as text, not a formula.
|
|
506
|
-
let str = value;
|
|
507
|
-
if (/^[=+\-@\t\r]/.test(str)) {
|
|
508
|
-
str = `'${str}`;
|
|
509
|
-
}
|
|
510
|
-
if (str.includes(sep) || str.includes('"') || str.includes('\n') || str.includes('\r')) {
|
|
511
|
-
return `"${str.replace(/"/g, '""')}"`;
|
|
512
|
-
}
|
|
513
|
-
return str;
|
|
492
|
+
return escapeCsvCell(value, { delimiter: sep });
|
|
514
493
|
}
|
|
515
494
|
function resolveColumn(data, col, props, qsets) {
|
|
516
495
|
if (col === 'Name' || col === 'name')
|