@ifc-lite/cli 0.25.2 → 0.26.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.
@@ -0,0 +1,2 @@
1
+ export declare function anonymizeCommand(args: string[]): Promise<void>;
2
+ //# sourceMappingURL=anonymize.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"anonymize.d.ts","sourceRoot":"","sources":["../../src/commands/anonymize.ts"],"names":[],"mappings":"AAwEA,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA+KpE"}
@@ -0,0 +1,221 @@
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
+ * ifc-lite anonymize <file.ifc> --out F
6
+ *
7
+ * "Anonymized isolated export" (#2934): pick a seed selection (`--id`/
8
+ * `--guid`/`--type`/`--storey`, unioned like `extract-entities`), expand it
9
+ * by relationship context (host walls, openings/fillers, type objects,
10
+ * materials, aggregate parents/children, the spatial containment chain up to
11
+ * IfcProject, and optionally structurally connected neighbours), then export
12
+ * EXACTLY that subset as a STEP file with every project-identifying signal
13
+ * removed while the geometry-relevant local transformations (rotations in
14
+ * the placement chain, non-orthogonal cuts) survive — so a parsing-bug
15
+ * reproduction keeps reproducing without the source model that triggered it
16
+ * ever leaving the caller's machine.
17
+ *
18
+ * Thin CLI wiring over `@ifc-lite/export`'s `collectRelatedEntities` /
19
+ * `exportAnonymizedSubset` — the viewer's anonymized-export dialog drives the
20
+ * same two functions directly. See `docs/guide/exporting.md`.
21
+ */
22
+ import { writeFile } from 'node:fs/promises';
23
+ import { EntityNode } from '@ifc-lite/query';
24
+ import { collectRelatedEntities, exportAnonymizedSubset, } from '@ifc-lite/export';
25
+ import { createHeadlessContext } from '../loader.js';
26
+ import { getFlag, getAllFlags, hasFlag, fatal, printJson, validateLimit } from '../output.js';
27
+ const USAGE = 'Usage: ifc-lite anonymize <file.ifc> --out F\n' +
28
+ ' [--id N,...] [--guid G,...] [--type T] [--storey S]\n' +
29
+ ' [--keep-psets] [--keep-names] [--keep-other-names] [--keep-currency]\n' +
30
+ ' [--no-rel-voids-element] [--no-rel-fills-element] [--no-rel-defines-by-type]\n' +
31
+ ' [--no-rel-associates-material] [--no-rel-aggregates] [--no-rel-nests]\n' +
32
+ ' [--connect-depth N] [--guid-map F] [--json]';
33
+ /** Auto-prefix `Ifc` for `--type`, same convention as `export`/`mutate`. */
34
+ function normalizeTypeName(typeStr) {
35
+ return typeStr
36
+ .split(',')
37
+ .map((t) => {
38
+ const trimmed = t.trim();
39
+ if (/^ifc/i.test(trimmed))
40
+ return trimmed;
41
+ const prefixed = 'Ifc' + trimmed;
42
+ process.stderr.write(`Note: Auto-corrected type "${trimmed}" -> "${prefixed}"\n`);
43
+ return prefixed;
44
+ })
45
+ .join(',');
46
+ }
47
+ /**
48
+ * GlobalId -> expressId for the whole store, built once so N `--guid`
49
+ * selectors cost one pass over the store rather than N. Mirrors the
50
+ * precedence-free lookup `packages/mcp/src/tools/util.ts`'s
51
+ * `findByGlobalId` does for a live store, minus the overlay handling this
52
+ * freshly-loaded, unmutated CLI store never needs.
53
+ */
54
+ function buildGlobalIdIndex(store) {
55
+ const index = new Map();
56
+ for (const [, ids] of store.entityIndex.byType) {
57
+ for (const id of ids)
58
+ index.set(new EntityNode(store, id).globalId, id);
59
+ }
60
+ return index;
61
+ }
62
+ export async function anonymizeCommand(args) {
63
+ const filePath = args.find((a) => !a.startsWith('-'));
64
+ if (!filePath) {
65
+ fatal(USAGE);
66
+ return;
67
+ }
68
+ const outPath = getFlag(args, '--out');
69
+ if (!outPath) {
70
+ fatal(`--out is required.\n${USAGE}`);
71
+ return;
72
+ }
73
+ const { bim, store } = await createHeadlessContext(filePath);
74
+ // ── Seed selection — every selector is unioned, and each fails loudly on
75
+ // zero matches (never silently selects nothing), matching extract-entities'
76
+ // `resolveToId` contract. ──
77
+ const seeds = new Set();
78
+ for (const token of getAllFlags(args, '--id').flatMap((v) => v.split(','))) {
79
+ const t = token.trim();
80
+ if (!t)
81
+ continue;
82
+ const expressId = parseInt(t.startsWith('#') ? t.slice(1) : t, 10);
83
+ if (Number.isNaN(expressId) || !bim.entity({ modelId: 'default', expressId })) {
84
+ fatal(`--id: entity not found: ${token}`);
85
+ return;
86
+ }
87
+ seeds.add(expressId);
88
+ }
89
+ const guidTokens = getAllFlags(args, '--guid').flatMap((v) => v.split(','));
90
+ if (guidTokens.length > 0) {
91
+ const guidIndex = buildGlobalIdIndex(store);
92
+ for (const token of guidTokens) {
93
+ const t = token.trim();
94
+ if (!t)
95
+ continue;
96
+ const id = guidIndex.get(t);
97
+ if (id === undefined) {
98
+ fatal(`--guid: GlobalId not found: ${t}`);
99
+ return;
100
+ }
101
+ seeds.add(id);
102
+ }
103
+ }
104
+ const typeFlag = getFlag(args, '--type');
105
+ if (typeFlag) {
106
+ const normalized = normalizeTypeName(typeFlag);
107
+ const matched = bim.query().byType(...normalized.split(',')).toArray();
108
+ if (matched.length === 0) {
109
+ fatal(`--type: no entities matched: ${normalized}`);
110
+ return;
111
+ }
112
+ for (const e of matched)
113
+ seeds.add(e.ref.expressId);
114
+ }
115
+ const storeyFlag = getFlag(args, '--storey');
116
+ if (storeyFlag) {
117
+ const storeys = bim.storeys();
118
+ const matchedStorey = storeys.find((s) => s.globalId === storeyFlag) ??
119
+ storeys.find((s) => String(s.ref.expressId) === storeyFlag) ??
120
+ storeys.find((s) => s.name === storeyFlag) ??
121
+ storeys.find((s) => s.name?.toLowerCase().includes(storeyFlag.toLowerCase()));
122
+ if (!matchedStorey) {
123
+ const names = storeys.map((s) => s.name).filter(Boolean).join(', ');
124
+ fatal(`--storey: not found: ${storeyFlag} (available: ${names || '(none)'})`);
125
+ return;
126
+ }
127
+ const contained = bim.contains(matchedStorey.ref);
128
+ if (contained.length === 0) {
129
+ fatal(`--storey: no entities contained in storey: ${storeyFlag}`);
130
+ return;
131
+ }
132
+ for (const e of contained)
133
+ seeds.add(e.ref.expressId);
134
+ }
135
+ if (seeds.size === 0) {
136
+ fatal(`No entities selected. Use --id, --guid, --type, or --storey.\n${USAGE}`);
137
+ return;
138
+ }
139
+ // ── Relationship expansion (RelatedEntityOptions) ──
140
+ // Flag names are the exact EXPRESS relationship names being toggled off
141
+ // (AGENTS.md "IFC schema fidelity" — full relationship names, never an
142
+ // invented alias like `--no-hosts`), and each relationship gets its own
143
+ // flag: `IfcRelAggregates` and `IfcRelNests` are distinct REL entity types
144
+ // (see `RelatedEntityOptions` in `anonymize-types.ts`) even though the
145
+ // parser folds both into one aggregation edge, so collapsing them onto one
146
+ // `--no-aggregates` switch would silently disable a relationship the flag
147
+ // never named.
148
+ const keepPsets = hasFlag(args, '--keep-psets');
149
+ const connectDepth = validateLimit(getFlag(args, '--connect-depth'), '--connect-depth') ?? 0;
150
+ const relatedOptions = {
151
+ IfcRelVoidsElement: !hasFlag(args, '--no-rel-voids-element'),
152
+ IfcRelFillsElement: !hasFlag(args, '--no-rel-fills-element'),
153
+ IfcRelDefinesByType: !hasFlag(args, '--no-rel-defines-by-type'),
154
+ IfcRelAssociatesMaterial: !hasFlag(args, '--no-rel-associates-material'),
155
+ IfcRelAggregates: hasFlag(args, '--no-rel-aggregates') ? 'none' : 'both',
156
+ IfcRelNests: hasFlag(args, '--no-rel-nests') ? 'none' : 'down',
157
+ IfcRelConnectsPathElementsDepth: connectDepth,
158
+ // `--keep-psets` alone only stops `exportAnonymizedSubset` from clearing
159
+ // `HasPropertySets` on whatever ends up included — it doesn't pull
160
+ // property sets into the selection that were never walked to. Turning
161
+ // the walk on too is what makes `--keep-psets` actually keep anything.
162
+ IfcRelDefinesByProperties: keepPsets,
163
+ };
164
+ const related = collectRelatedEntities(store, seeds, relatedOptions);
165
+ const anonymizeOptions = {
166
+ keepPropertySets: keepPsets,
167
+ // `--keep-names`: IfcRoot Name/LongName/Description/Tag stay as authored.
168
+ pseudonymizeNames: !hasFlag(args, '--keep-names'),
169
+ // `--keep-other-names`: ObjectType, Phase, and non-IfcRoot names (surface
170
+ // styles, materials, layers, profiles, colours) stay as authored.
171
+ pseudonymizeAllNames: !hasFlag(args, '--keep-other-names'),
172
+ // `--keep-currency`: IfcMonetaryUnit.Currency stays as authored instead of USD.
173
+ neutralizeCurrency: !hasFlag(args, '--keep-currency'),
174
+ // Deliberately NOT `filename: basename(outPath)`: `outPath` is whatever
175
+ // the caller chose to name the file on disk (often the client/project
176
+ // name, e.g. `--out Acme-Tower.ifc`), and `AnonymizeOptions.filename`
177
+ // feeds straight into the exported STEP header's `FILE_NAME` field. Using
178
+ // it here would write the identifying name this command exists to strip
179
+ // right back into the file it strips it from. Leave it unset so it falls
180
+ // through to the neutral `'anonymized.ifc'` default.
181
+ };
182
+ let result;
183
+ try {
184
+ result = exportAnonymizedSubset(store, related.all, anonymizeOptions);
185
+ }
186
+ catch (err) {
187
+ fatal(err instanceof Error ? err.message : String(err));
188
+ return;
189
+ }
190
+ await writeFile(outPath, result.content);
191
+ const guidMapPath = getFlag(args, '--guid-map');
192
+ if (guidMapPath) {
193
+ await writeFile(guidMapPath, JSON.stringify(Object.fromEntries(result.guidMap), null, 2));
194
+ }
195
+ if (hasFlag(args, '--json')) {
196
+ printJson({
197
+ seedCount: seeds.size,
198
+ includedCount: related.all.size,
199
+ entityCount: result.stats.entityCount,
200
+ includedRootEntityCount: result.stats.includedRootEntityCount,
201
+ prunedRelationshipIds: result.stats.prunedRelationshipIds,
202
+ zeroedPlacements: result.stats.zeroedPlacements,
203
+ warnings: result.stats.warnings,
204
+ truncated: related.truncated,
205
+ guidMap: guidMapPath ?? null,
206
+ out: outPath,
207
+ });
208
+ return;
209
+ }
210
+ process.stderr.write(`Anonymized ${seeds.size} seed(s) -> ${related.all.size} related entities -> ${result.stats.entityCount} exported entities -> ${outPath}\n`);
211
+ if (related.truncated) {
212
+ process.stderr.write('Warning: related-entity walk hit its work budget before reaching a fixpoint; the result may be an incomplete reproduction.\n');
213
+ }
214
+ for (const w of result.stats.warnings)
215
+ process.stderr.write(`Warning: ${w}\n`);
216
+ if (guidMapPath) {
217
+ process.stderr.write(`GUID map written to ${guidMapPath} — it links back to the original, identifying model; ` +
218
+ `keep it separate from ${outPath} and do not share it alongside it.\n`);
219
+ }
220
+ }
221
+ //# sourceMappingURL=anonymize.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"anonymize.js","sourceRoot":"","sources":["../../src/commands/anonymize.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAE/D;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EACL,sBAAsB,EACtB,sBAAsB,GAGvB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAE9F,MAAM,KAAK,GACT,gDAAgD;IAChD,yDAAyD;IACzD,0EAA0E;IAC1E,kFAAkF;IAClF,2EAA2E;IAC3E,+CAA+C,CAAC;AAElD,4EAA4E;AAC5E,SAAS,iBAAiB,CAAC,OAAe;IACxC,OAAO,OAAO;SACX,KAAK,CAAC,GAAG,CAAC;SACV,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QACT,MAAM,OAAO,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;QACzB,IAAI,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC;YAAE,OAAO,OAAO,CAAC;QAC1C,MAAM,QAAQ,GAAG,KAAK,GAAG,OAAO,CAAC;QACjC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,8BAA8B,OAAO,SAAS,QAAQ,KAAK,CAAC,CAAC;QAClF,OAAO,QAAQ,CAAC;IAClB,CAAC,CAAC;SACD,IAAI,CAAC,GAAG,CAAC,CAAC;AACf,CAAC;AAED;;;;;;GAMG;AACH,SAAS,kBAAkB,CAAC,KAAmB;IAC7C,MAAM,KAAK,GAAG,IAAI,GAAG,EAAkB,CAAC;IACxC,KAAK,MAAM,CAAC,EAAE,GAAG,CAAC,IAAI,KAAK,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC;QAC/C,KAAK,MAAM,EAAE,IAAI,GAAG;YAAE,KAAK,CAAC,GAAG,CAAC,IAAI,UAAU,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;IAC1E,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,IAAc;IACnD,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;IACtD,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,KAAK,CAAC,KAAK,CAAC,CAAC;QACb,OAAO;IACT,CAAC;IACD,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACvC,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,KAAK,CAAC,uBAAuB,KAAK,EAAE,CAAC,CAAC;QACtC,OAAO;IACT,CAAC;IAED,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,MAAM,qBAAqB,CAAC,QAAQ,CAAC,CAAC;IAE7D,0EAA0E;IAC1E,4EAA4E;IAC5E,6BAA6B;IAC7B,MAAM,KAAK,GAAG,IAAI,GAAG,EAAU,CAAC;IAEhC,KAAK,MAAM,KAAK,IAAI,WAAW,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;QAC3E,MAAM,CAAC,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;QACvB,IAAI,CAAC,CAAC;YAAE,SAAS;QACjB,MAAM,SAAS,GAAG,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACnE,IAAI,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC;YAC9E,KAAK,CAAC,2BAA2B,KAAK,EAAE,CAAC,CAAC;YAC1C,OAAO;QACT,CAAC;QACD,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IACvB,CAAC;IAED,MAAM,UAAU,GAAG,WAAW,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;IAC5E,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1B,MAAM,SAAS,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC;QAC5C,KAAK,MAAM,KAAK,IAAI,UAAU,EAAE,CAAC;YAC/B,MAAM,CAAC,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;YACvB,IAAI,CAAC,CAAC;gBAAE,SAAS;YACjB,MAAM,EAAE,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YAC5B,IAAI,EAAE,KAAK,SAAS,EAAE,CAAC;gBACrB,KAAK,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;gBAC1C,OAAO;YACT,CAAC;YACD,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,CAAC;IACH,CAAC;IAED,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IACzC,IAAI,QAAQ,EAAE,CAAC;QACb,MAAM,UAAU,GAAG,iBAAiB,CAAC,QAAQ,CAAC,CAAC;QAC/C,MAAM,OAAO,GAAG,GAAG,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;QACvE,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzB,KAAK,CAAC,gCAAgC,UAAU,EAAE,CAAC,CAAC;YACpD,OAAO;QACT,CAAC;QACD,KAAK,MAAM,CAAC,IAAI,OAAO;YAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IACtD,CAAC;IAED,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IAC7C,IAAI,UAAU,EAAE,CAAC;QACf,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC;QAC9B,MAAM,aAAa,GACjB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,UAAU,CAAC;YAC9C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,UAAU,CAAC;YAC3D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC;YAC1C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,WAAW,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;QAChF,IAAI,CAAC,aAAa,EAAE,CAAC;YACnB,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACpE,KAAK,CAAC,wBAAwB,UAAU,gBAAgB,KAAK,IAAI,QAAQ,GAAG,CAAC,CAAC;YAC9E,OAAO;QACT,CAAC;QACD,MAAM,SAAS,GAAG,GAAG,CAAC,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;QAClD,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC3B,KAAK,CAAC,8CAA8C,UAAU,EAAE,CAAC,CAAC;YAClE,OAAO;QACT,CAAC;QACD,KAAK,MAAM,CAAC,IAAI,SAAS;YAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IACxD,CAAC;IAED,IAAI,KAAK,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;QACrB,KAAK,CAAC,iEAAiE,KAAK,EAAE,CAAC,CAAC;QAChF,OAAO;IACT,CAAC;IAED,sDAAsD;IACtD,wEAAwE;IACxE,uEAAuE;IACvE,wEAAwE;IACxE,2EAA2E;IAC3E,uEAAuE;IACvE,2EAA2E;IAC3E,0EAA0E;IAC1E,eAAe;IACf,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;IAChD,MAAM,YAAY,GAAG,aAAa,CAAC,OAAO,CAAC,IAAI,EAAE,iBAAiB,CAAC,EAAE,iBAAiB,CAAC,IAAI,CAAC,CAAC;IAE7F,MAAM,cAAc,GAAyB;QAC3C,kBAAkB,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,wBAAwB,CAAC;QAC5D,kBAAkB,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,wBAAwB,CAAC;QAC5D,mBAAmB,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,0BAA0B,CAAC;QAC/D,wBAAwB,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,8BAA8B,CAAC;QACxE,gBAAgB,EAAE,OAAO,CAAC,IAAI,EAAE,qBAAqB,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM;QACxE,WAAW,EAAE,OAAO,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM;QAC9D,+BAA+B,EAAE,YAAY;QAC7C,yEAAyE;QACzE,mEAAmE;QACnE,sEAAsE;QACtE,uEAAuE;QACvE,yBAAyB,EAAE,SAAS;KACrC,CAAC;IAEF,MAAM,OAAO,GAAG,sBAAsB,CAAC,KAAK,EAAE,KAAK,EAAE,cAAc,CAAC,CAAC;IAErE,MAAM,gBAAgB,GAAqB;QACzC,gBAAgB,EAAE,SAAS;QAC3B,0EAA0E;QAC1E,iBAAiB,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,cAAc,CAAC;QACjD,0EAA0E;QAC1E,kEAAkE;QAClE,oBAAoB,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,oBAAoB,CAAC;QAC1D,gFAAgF;QAChF,kBAAkB,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,iBAAiB,CAAC;QACrD,wEAAwE;QACxE,sEAAsE;QACtE,sEAAsE;QACtE,0EAA0E;QAC1E,wEAAwE;QACxE,yEAAyE;QACzE,qDAAqD;KACtD,CAAC;IAEF,IAAI,MAAiD,CAAC;IACtD,IAAI,CAAC;QACH,MAAM,GAAG,sBAAsB,CAAC,KAAK,EAAE,OAAO,CAAC,GAAG,EAAE,gBAAgB,CAAC,CAAC;IACxE,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,KAAK,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;QACxD,OAAO;IACT,CAAC;IAED,MAAM,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;IAEzC,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;IAChD,IAAI,WAAW,EAAE,CAAC;QAChB,MAAM,SAAS,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAC5F,CAAC;IAED,IAAI,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,EAAE,CAAC;QAC5B,SAAS,CAAC;YACR,SAAS,EAAE,KAAK,CAAC,IAAI;YACrB,aAAa,EAAE,OAAO,CAAC,GAAG,CAAC,IAAI;YAC/B,WAAW,EAAE,MAAM,CAAC,KAAK,CAAC,WAAW;YACrC,uBAAuB,EAAE,MAAM,CAAC,KAAK,CAAC,uBAAuB;YAC7D,qBAAqB,EAAE,MAAM,CAAC,KAAK,CAAC,qBAAqB;YACzD,gBAAgB,EAAE,MAAM,CAAC,KAAK,CAAC,gBAAgB;YAC/C,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC,QAAQ;YAC/B,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,OAAO,EAAE,WAAW,IAAI,IAAI;YAC5B,GAAG,EAAE,OAAO;SACb,CAAC,CAAC;QACH,OAAO;IACT,CAAC;IAED,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,cAAc,KAAK,CAAC,IAAI,eAAe,OAAO,CAAC,GAAG,CAAC,IAAI,wBAAwB,MAAM,CAAC,KAAK,CAAC,WAAW,yBAAyB,OAAO,IAAI,CAC5I,CAAC;IACF,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;QACtB,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,8HAA8H,CAC/H,CAAC;IACJ,CAAC;IACD,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,QAAQ;QAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;IAC/E,IAAI,WAAW,EAAE,CAAC;QAChB,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,uBAAuB,WAAW,uDAAuD;YACvF,yBAAyB,OAAO,sCAAsC,CACzE,CAAC;IACJ,CAAC;AACH,CAAC"}
package/dist/index.js CHANGED
@@ -15,6 +15,7 @@ import { propsCommand } from './commands/props.js';
15
15
  import { exportCommand } from './commands/export.js';
16
16
  import { diagnoseGeometryCommand } from './commands/diagnose-geometry.js';
17
17
  import { extractEntitiesCommand } from './commands/extract-entities.js';
18
+ import { anonymizeCommand } from './commands/anonymize.js';
18
19
  import { idsCommand } from './commands/ids.js';
19
20
  import { bcfCommand } from './commands/bcf.js';
20
21
  import { clashCommand } from './commands/clash.js';
@@ -61,6 +62,12 @@ const HELP = `
61
62
  [--product ID|GUID] [--type T] Filter worst-hosts detail to one product/type
62
63
  extract-entities <file.ifc> --out F Isolate entities into a small, viewable standalone IFC
63
64
  [--product ID|GUID] [--storey S] [--detect] [--view] by GUID/type/storey or auto-triage
65
+ anonymize <file.ifc> --out F Export selected objects + context as an anonymized IFC
66
+ [--id N,...] [--guid G,...] [--type T] [--storey S]
67
+ [--keep-psets] [--keep-names] [--keep-other-names] [--keep-currency]
68
+ [--no-rel-voids-element] [--no-rel-fills-element] [--no-rel-defines-by-type]
69
+ [--no-rel-associates-material] [--no-rel-aggregates] [--no-rel-nests]
70
+ [--connect-depth N] [--guid-map F] [--json]
64
71
  ids <file.ifc> <rules.ids> Validate against IDS rules
65
72
  bcf <create|list|add-comment> Work with BCF collaboration files
66
73
  clash <file.ifc> [--matrix] [--bcf F] Detect geometric clashes between elements
@@ -238,6 +245,9 @@ async function main() {
238
245
  case 'extract-entities':
239
246
  await extractEntitiesCommand(commandArgs);
240
247
  break;
248
+ case 'anonymize':
249
+ await anonymizeCommand(commandArgs);
250
+ break;
241
251
  case 'ids':
242
252
  await idsCommand(commandArgs);
243
253
  break;
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.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.25.2",
3
+ "version": "0.26.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,30 +20,30 @@
20
20
  "README.md"
21
21
  ],
22
22
  "dependencies": {
23
- "@ifc-lite/bcf": "^2.0.0",
23
+ "@ifc-lite/bcf": "^2.0.1",
24
24
  "@ifc-lite/clash": "^1.9.2",
25
- "@ifc-lite/create": "^2.2.0",
26
- "@ifc-lite/data": "^3.5.0",
27
25
  "@ifc-lite/diff": "^0.7.0",
28
- "@ifc-lite/export": "^3.0.1",
29
- "@ifc-lite/geometry": "^4.1.0",
26
+ "@ifc-lite/create": "^2.2.0",
27
+ "@ifc-lite/data": "^3.5.1",
28
+ "@ifc-lite/export": "^3.1.0",
30
29
  "@ifc-lite/extensions": "^0.5.0",
30
+ "@ifc-lite/geometry": "^4.1.0",
31
31
  "@ifc-lite/ifcx": "^3.0.1",
32
32
  "@ifc-lite/merge": "^0.4.4",
33
- "@ifc-lite/ids": "^1.15.51",
33
+ "@ifc-lite/mcp": "^0.12.0",
34
34
  "@ifc-lite/mutations": "^1.27.0",
35
- "@ifc-lite/sandbox": "^2.2.1",
35
+ "@ifc-lite/ids": "^1.15.52",
36
36
  "@ifc-lite/parser": "^4.3.2",
37
37
  "@ifc-lite/query": "^2.0.0",
38
+ "@ifc-lite/sandbox": "^2.2.1",
38
39
  "@ifc-lite/sdk": "^3.0.0",
39
40
  "@ifc-lite/viewer-core": "^0.2.14",
40
- "@ifc-lite/mcp": "^0.12.0",
41
- "@ifc-lite/wasm": "^6.1.0"
41
+ "@ifc-lite/wasm": "^6.1.1"
42
42
  },
43
43
  "devDependencies": {
44
44
  "@types/node": "^26.2.0",
45
45
  "typescript": "^6.0.3",
46
- "vitest": "^4.1.10"
46
+ "vitest": "^4.1.11"
47
47
  },
48
48
  "engines": {
49
49
  "node": ">=18.0.0"