@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.
Files changed (151) hide show
  1. package/README.md +9 -2
  2. package/dist/commands/anonymize.d.ts.map +1 -1
  3. package/dist/commands/anonymize.js +1 -0
  4. package/dist/commands/anonymize.js.map +1 -1
  5. package/dist/commands/check.d.ts +2 -0
  6. package/dist/commands/check.d.ts.map +1 -0
  7. package/dist/commands/check.js +119 -0
  8. package/dist/commands/check.js.map +1 -0
  9. package/dist/commands/convert.d.ts.map +1 -1
  10. package/dist/commands/convert.js +28 -8
  11. package/dist/commands/convert.js.map +1 -1
  12. package/dist/commands/create.d.ts.map +1 -1
  13. package/dist/commands/create.js +6 -0
  14. package/dist/commands/create.js.map +1 -1
  15. package/dist/commands/delivery-checks-rules.d.ts +37 -0
  16. package/dist/commands/delivery-checks-rules.d.ts.map +1 -0
  17. package/dist/commands/delivery-checks-rules.js +76 -0
  18. package/dist/commands/delivery-checks-rules.js.map +1 -0
  19. package/dist/commands/delivery-checks.d.ts +12 -0
  20. package/dist/commands/delivery-checks.d.ts.map +1 -1
  21. package/dist/commands/delivery-checks.js +16 -5
  22. package/dist/commands/delivery-checks.js.map +1 -1
  23. package/dist/commands/delivery-recipe.d.ts +13 -2
  24. package/dist/commands/delivery-recipe.d.ts.map +1 -1
  25. package/dist/commands/delivery-recipe.js +29 -17
  26. package/dist/commands/delivery-recipe.js.map +1 -1
  27. package/dist/commands/delivery-report.d.ts +2 -2
  28. package/dist/commands/delivery-report.d.ts.map +1 -1
  29. package/dist/commands/delivery-report.js +14 -4
  30. package/dist/commands/delivery-report.js.map +1 -1
  31. package/dist/commands/delivery.d.ts.map +1 -1
  32. package/dist/commands/delivery.js +17 -5
  33. package/dist/commands/delivery.js.map +1 -1
  34. package/dist/commands/diff-content-io.d.ts +50 -0
  35. package/dist/commands/diff-content-io.d.ts.map +1 -0
  36. package/dist/commands/diff-content-io.js +104 -0
  37. package/dist/commands/diff-content-io.js.map +1 -0
  38. package/dist/commands/diff-content-report.d.ts +23 -0
  39. package/dist/commands/diff-content-report.d.ts.map +1 -0
  40. package/dist/commands/diff-content-report.js +67 -0
  41. package/dist/commands/diff-content-report.js.map +1 -0
  42. package/dist/commands/diff-content.d.ts +19 -0
  43. package/dist/commands/diff-content.d.ts.map +1 -1
  44. package/dist/commands/diff-content.js +120 -129
  45. package/dist/commands/diff-content.js.map +1 -1
  46. package/dist/commands/diff-engine.d.ts +32 -1
  47. package/dist/commands/diff-engine.d.ts.map +1 -1
  48. package/dist/commands/diff-engine.js +76 -15
  49. package/dist/commands/diff-engine.js.map +1 -1
  50. package/dist/commands/diff-geometry.d.ts +107 -0
  51. package/dist/commands/diff-geometry.d.ts.map +1 -0
  52. package/dist/commands/diff-geometry.js +262 -0
  53. package/dist/commands/diff-geometry.js.map +1 -0
  54. package/dist/commands/diff-lineage-io.d.ts +23 -0
  55. package/dist/commands/diff-lineage-io.d.ts.map +1 -0
  56. package/dist/commands/diff-lineage-io.js +119 -0
  57. package/dist/commands/diff-lineage-io.js.map +1 -0
  58. package/dist/commands/diff-scope.d.ts.map +1 -1
  59. package/dist/commands/diff-scope.js +2 -0
  60. package/dist/commands/diff-scope.js.map +1 -1
  61. package/dist/commands/diff.d.ts.map +1 -1
  62. package/dist/commands/diff.js +36 -3
  63. package/dist/commands/diff.js.map +1 -1
  64. package/dist/commands/export.d.ts.map +1 -1
  65. package/dist/commands/export.js +13 -0
  66. package/dist/commands/export.js.map +1 -1
  67. package/dist/commands/ext.js +26 -10
  68. package/dist/commands/ext.js.map +1 -1
  69. package/dist/commands/extract-entities.d.ts.map +1 -1
  70. package/dist/commands/extract-entities.js +26 -8
  71. package/dist/commands/extract-entities.js.map +1 -1
  72. package/dist/commands/flow-tracking.d.ts +20 -0
  73. package/dist/commands/flow-tracking.d.ts.map +1 -0
  74. package/dist/commands/flow-tracking.js +86 -0
  75. package/dist/commands/flow-tracking.js.map +1 -0
  76. package/dist/commands/flow.d.ts +2 -0
  77. package/dist/commands/flow.d.ts.map +1 -0
  78. package/dist/commands/flow.js +229 -0
  79. package/dist/commands/flow.js.map +1 -0
  80. package/dist/commands/gym/channels.d.ts.map +1 -1
  81. package/dist/commands/gym/channels.js +10 -2
  82. package/dist/commands/gym/channels.js.map +1 -1
  83. package/dist/commands/gym.d.ts.map +1 -1
  84. package/dist/commands/gym.js +5 -1
  85. package/dist/commands/gym.js.map +1 -1
  86. package/dist/commands/ids.d.ts.map +1 -1
  87. package/dist/commands/ids.js +36 -3
  88. package/dist/commands/ids.js.map +1 -1
  89. package/dist/commands/info.d.ts.map +1 -1
  90. package/dist/commands/info.js +20 -5
  91. package/dist/commands/info.js.map +1 -1
  92. package/dist/commands/layer-publish.d.ts.map +1 -1
  93. package/dist/commands/layer-publish.js +6 -0
  94. package/dist/commands/layer-publish.js.map +1 -1
  95. package/dist/commands/lod.d.ts.map +1 -1
  96. package/dist/commands/lod.js +4 -1
  97. package/dist/commands/lod.js.map +1 -1
  98. package/dist/commands/mutate-step-record.d.ts +25 -1
  99. package/dist/commands/mutate-step-record.d.ts.map +1 -1
  100. package/dist/commands/mutate-step-record.js +17 -22
  101. package/dist/commands/mutate-step-record.js.map +1 -1
  102. package/dist/commands/mutate.d.ts +2 -1
  103. package/dist/commands/mutate.d.ts.map +1 -1
  104. package/dist/commands/mutate.js +27 -2
  105. package/dist/commands/mutate.js.map +1 -1
  106. package/dist/commands/rekey.d.ts +27 -0
  107. package/dist/commands/rekey.d.ts.map +1 -0
  108. package/dist/commands/rekey.js +213 -0
  109. package/dist/commands/rekey.js.map +1 -0
  110. package/dist/commands/simplify.d.ts.map +1 -1
  111. package/dist/commands/simplify.js +4 -1
  112. package/dist/commands/simplify.js.map +1 -1
  113. package/dist/commands/validate.d.ts +5 -14
  114. package/dist/commands/validate.d.ts.map +1 -1
  115. package/dist/commands/validate.js +13 -15
  116. package/dist/commands/validate.js.map +1 -1
  117. package/dist/headless-backend-store-authoring.d.ts +28 -0
  118. package/dist/headless-backend-store-authoring.d.ts.map +1 -0
  119. package/dist/headless-backend-store-authoring.js +34 -0
  120. package/dist/headless-backend-store-authoring.js.map +1 -0
  121. package/dist/headless-backend.d.ts +7 -0
  122. package/dist/headless-backend.d.ts.map +1 -1
  123. package/dist/headless-backend.js +78 -66
  124. package/dist/headless-backend.js.map +1 -1
  125. package/dist/help.d.ts +22 -0
  126. package/dist/help.d.ts.map +1 -0
  127. package/dist/help.js +260 -0
  128. package/dist/help.js.map +1 -0
  129. package/dist/index.js +45 -183
  130. package/dist/index.js.map +1 -1
  131. package/dist/loader.d.ts +2 -0
  132. package/dist/loader.d.ts.map +1 -1
  133. package/dist/loader.js +30 -1
  134. package/dist/loader.js.map +1 -1
  135. package/dist/out-flag-commands.d.ts +12 -0
  136. package/dist/out-flag-commands.d.ts.map +1 -0
  137. package/dist/out-flag-commands.js +19 -0
  138. package/dist/out-flag-commands.js.map +1 -0
  139. package/dist/query-overlay-relations.d.ts +8 -28
  140. package/dist/query-overlay-relations.d.ts.map +1 -1
  141. package/dist/query-overlay-relations.js +68 -78
  142. package/dist/query-overlay-relations.js.map +1 -1
  143. package/dist/query-overlay.d.ts +5 -3
  144. package/dist/query-overlay.d.ts.map +1 -1
  145. package/dist/query-overlay.js +57 -16
  146. package/dist/query-overlay.js.map +1 -1
  147. package/package.json +26 -22
  148. package/dist/version.d.ts +0 -14
  149. package/dist/version.d.ts.map +0 -1
  150. package/dist/version.js +0 -38
  151. package/dist/version.js.map +0 -1
@@ -0,0 +1,27 @@
1
+ import { parseLineageSidecar, type RekeyPolicy } from '@ifc-lite/diff';
2
+ type Row = Record<string, string>;
3
+ /** RFC 4180-ish CSV: quoted fields, doubled quotes, CRLF or LF. */
4
+ export declare function parseCsv(text: string): {
5
+ header: string[];
6
+ rows: Row[];
7
+ };
8
+ export declare function serializeCsv(header: string[], rows: Row[]): string;
9
+ export interface RekeyOutcome {
10
+ rows: Row[];
11
+ orphans: Row[];
12
+ counts: {
13
+ input: number;
14
+ rekeyed: number;
15
+ duplicated: number;
16
+ orphaned: number;
17
+ };
18
+ }
19
+ /**
20
+ * Rekey rows in memory. A row whose key maps to k successors under the policy
21
+ * is emitted k times, once per successor, with `lineage_relation` and
22
+ * `lineage_from` columns recording where each copy came from.
23
+ */
24
+ export declare function rekeyRows(rows: Row[], keyColumn: string, lineage: ReturnType<typeof parseLineageSidecar>, policy: RekeyPolicy): RekeyOutcome;
25
+ export declare function rekeyCommand(args: string[]): Promise<void>;
26
+ export {};
27
+ //# sourceMappingURL=rekey.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rekey.d.ts","sourceRoot":"","sources":["../../src/commands/rekey.ts"],"names":[],"mappings":"AA6BA,OAAO,EAAE,mBAAmB,EAAkB,KAAK,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAWvF,KAAK,GAAG,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAElC,mEAAmE;AACnE,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG;IAAE,MAAM,EAAE,MAAM,EAAE,CAAC;IAAC,IAAI,EAAE,GAAG,EAAE,CAAA;CAAE,CAqCxE;AAOD,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,MAAM,CAIlE;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,GAAG,EAAE,CAAC;IACZ,OAAO,EAAE,GAAG,EAAE,CAAC;IACf,MAAM,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;CAClF;AAED;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,CAAC,OAAO,mBAAmB,CAAC,EAAE,MAAM,EAAE,WAAW,GAAG,YAAY,CA0B5I;AAwBD,wBAAsB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA8EhE"}
@@ -0,0 +1,213 @@
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 rekey` (issue #4955): carry an external table keyed on one
6
+ * revision's element keys across to the next revision, through a lineage
7
+ * sidecar `ifc-lite diff --lineage-out` (or the viewer) wrote.
8
+ *
9
+ * The table is the user's own data — cost lines, inspection records, room
10
+ * bookings — in CSV or a JSON array of objects. One column holds the old key.
11
+ * Each row is answered by `rekeyByLineage`: it gets one or more new keys (a
12
+ * split under `copy-to-all` duplicates the row), or it is orphaned, and the
13
+ * orphans are written to their own file rather than dropped, because a row
14
+ * that has nowhere to go is exactly the one a human needs to look at.
15
+ * `--orphans` names that file; without it, a non-empty orphan set goes to
16
+ * `<out>.orphans.<ext>` beside the output — never silently to nowhere.
17
+ *
18
+ * A key the lineage does not mention keeps its key (`unchanged`) unless the
19
+ * lineage's `deleted` list names it: a lineage records changes, and a cost
20
+ * table is mostly unchanged elements.
21
+ *
22
+ * Nothing about the lineage is re-derived or verified here beyond its own
23
+ * structure: it was pinned to two model digests when it was written, and this
24
+ * command has neither model. A caller who wants that check runs `diff
25
+ * --lineage-in` against the files.
26
+ */
27
+ import { readFile, writeFile } from 'node:fs/promises';
28
+ import { parseLineageSidecar, rekeyByLineage } from '@ifc-lite/diff';
29
+ import { escapeCsvCell } from '@ifc-lite/export';
30
+ import { fatal, getFlag, hasFlag, printJson } from '../output.js';
31
+ const USAGE = 'Usage: ifc-lite rekey <table.csv|table.json> --lineage <lineage.json> --out <file>\n' +
32
+ ' [--key-column <name>] [--policy copy-to-all|largest-share|orphan-on-split]\n' +
33
+ ' [--orphans <file> (default: <out>.orphans.<ext> when any)] [--json]';
34
+ const POLICIES = new Set(['copy-to-all', 'largest-share', 'orphan-on-split']);
35
+ /** RFC 4180-ish CSV: quoted fields, doubled quotes, CRLF or LF. */
36
+ export function parseCsv(text) {
37
+ const records = [];
38
+ let field = '';
39
+ let record = [];
40
+ let quoted = false;
41
+ for (let i = 0; i < text.length; i++) {
42
+ const c = text[i];
43
+ if (quoted) {
44
+ if (c === '"') {
45
+ if (text[i + 1] === '"') {
46
+ field += '"';
47
+ i++;
48
+ }
49
+ else
50
+ quoted = false;
51
+ }
52
+ else
53
+ field += c;
54
+ continue;
55
+ }
56
+ if (c === '"')
57
+ quoted = true;
58
+ else if (c === ',') {
59
+ record.push(field);
60
+ field = '';
61
+ }
62
+ else if (c === '\n' || c === '\r') {
63
+ if (c === '\r' && text[i + 1] === '\n')
64
+ i++;
65
+ record.push(field);
66
+ field = '';
67
+ records.push(record);
68
+ record = [];
69
+ }
70
+ else
71
+ field += c;
72
+ }
73
+ if (field.length > 0 || record.length > 0) {
74
+ record.push(field);
75
+ records.push(record);
76
+ }
77
+ const header = records.shift() ?? [];
78
+ const rows = records
79
+ .filter((cells) => cells.some((cell) => cell.length > 0))
80
+ .map((cells) => Object.fromEntries(header.map((name, index) => [name, cells[index] ?? ''])));
81
+ return { header, rows };
82
+ }
83
+ /** The one canonical escaper: RFC 4180 quoting plus the spreadsheet-formula guard. */
84
+ function csvField(value) {
85
+ return escapeCsvCell(value, { delimiter: ',' });
86
+ }
87
+ export function serializeCsv(header, rows) {
88
+ const lines = [header.map(csvField).join(',')];
89
+ for (const row of rows)
90
+ lines.push(header.map((name) => csvField(row[name] ?? '')).join(','));
91
+ return `${lines.join('\n')}\n`;
92
+ }
93
+ /**
94
+ * Rekey rows in memory. A row whose key maps to k successors under the policy
95
+ * is emitted k times, once per successor, with `lineage_relation` and
96
+ * `lineage_from` columns recording where each copy came from.
97
+ */
98
+ export function rekeyRows(rows, keyColumn, lineage, policy) {
99
+ const answers = new Map(rekeyByLineage(rows.map((row) => row[keyColumn] ?? ''), lineage, policy).map((r) => [r.key, r]));
100
+ const out = [];
101
+ const orphans = [];
102
+ let rekeyed = 0;
103
+ let duplicated = 0;
104
+ for (const row of rows) {
105
+ const key = row[keyColumn] ?? '';
106
+ const answer = answers.get(key);
107
+ if (!answer || answer.orphan) {
108
+ orphans.push({ ...row, lineage_relation: answer?.relation ?? '' });
109
+ continue;
110
+ }
111
+ rekeyed++;
112
+ if (answer.successors.length > 1)
113
+ duplicated += answer.successors.length - 1;
114
+ for (const successor of answer.successors) {
115
+ out.push({ ...row, [keyColumn]: successor, lineage_relation: answer.relation ?? '', lineage_from: key });
116
+ }
117
+ }
118
+ return {
119
+ rows: out,
120
+ orphans,
121
+ counts: { input: rows.length, rekeyed, duplicated, orphaned: orphans.length },
122
+ };
123
+ }
124
+ /** Flags that consume the following argument, so it is never mistaken for the
125
+ * positional table path. `--lineage lineage.json table.csv --out out.json`
126
+ * would otherwise have the naive `args.filter(a => !a.startsWith('-'))`
127
+ * idiom capture `lineage.json` as `positional[0]` and silently drop the real
128
+ * table path (same trap diff.ts's `VALUE_FLAGS` / mcp.ts's
129
+ * `MCP_VALUE_FLAGS` / ids.ts's `VALUE_FLAGS` fix elsewhere in this
130
+ * package). */
131
+ const VALUE_FLAGS = new Set(['--lineage', '--out', '--key-column', '--policy', '--orphans']);
132
+ function rekeyPositionals(args) {
133
+ const positional = [];
134
+ for (let i = 0; i < args.length; i++) {
135
+ const arg = args[i];
136
+ if (arg.startsWith('-')) {
137
+ if (VALUE_FLAGS.has(arg))
138
+ i++;
139
+ continue;
140
+ }
141
+ positional.push(arg);
142
+ }
143
+ return positional;
144
+ }
145
+ export async function rekeyCommand(args) {
146
+ const positional = rekeyPositionals(args);
147
+ const tablePath = positional[0];
148
+ const lineagePath = getFlag(args, '--lineage');
149
+ const outPath = getFlag(args, '--out');
150
+ if (!tablePath || !lineagePath || !outPath)
151
+ fatal(USAGE);
152
+ const keyColumn = getFlag(args, '--key-column') ?? 'GlobalId';
153
+ const policyFlag = getFlag(args, '--policy') ?? 'copy-to-all';
154
+ if (!POLICIES.has(policyFlag))
155
+ fatal(`--policy must be one of ${[...POLICIES].join(', ')}`);
156
+ const policy = policyFlag;
157
+ const explicitOrphans = getFlag(args, '--orphans');
158
+ let lineage;
159
+ try {
160
+ lineage = parseLineageSidecar(await readFile(lineagePath, 'utf-8'));
161
+ }
162
+ catch (error) {
163
+ return fatal(`Cannot read lineage ${lineagePath}: ${error.message}`);
164
+ }
165
+ let text;
166
+ try {
167
+ text = await readFile(tablePath, 'utf-8');
168
+ }
169
+ catch (error) {
170
+ return fatal(`Cannot read ${tablePath}: ${error.message}`);
171
+ }
172
+ const isJson = tablePath.toLowerCase().endsWith('.json');
173
+ let header;
174
+ let rows;
175
+ if (isJson) {
176
+ let parsed;
177
+ try {
178
+ parsed = JSON.parse(text);
179
+ }
180
+ catch (error) {
181
+ return fatal(`${tablePath} is not JSON: ${error.message}`);
182
+ }
183
+ if (!Array.isArray(parsed) || !parsed.every((r) => typeof r === 'object' && r !== null)) {
184
+ return fatal(`${tablePath} must be a JSON array of objects`);
185
+ }
186
+ rows = parsed.map((r) => Object.fromEntries(Object.entries(r).map(([k, v]) => [k, v == null ? '' : String(v)])));
187
+ header = [...new Set(rows.flatMap((r) => Object.keys(r)))];
188
+ }
189
+ else {
190
+ ({ header, rows } = parseCsv(text));
191
+ }
192
+ if (!header.includes(keyColumn)) {
193
+ return fatal(`${tablePath} has no "${keyColumn}" column (columns: ${header.join(', ')}). Use --key-column.`);
194
+ }
195
+ const outcome = rekeyRows(rows, keyColumn, lineage, policy);
196
+ // Orphans are never dropped: no --orphans and a non-empty set means a
197
+ // default file beside the output.
198
+ const orphansPath = explicitOrphans ?? (outcome.orphans.length > 0 ? outPath.replace(/(\.[^./\\]+)?$/, '.orphans$1') : undefined);
199
+ const outHeader = [...header, 'lineage_relation', 'lineage_from'];
200
+ await writeFile(outPath, isJson ? `${JSON.stringify(outcome.rows, null, 2)}\n` : serializeCsv(outHeader, outcome.rows), 'utf-8');
201
+ if (orphansPath) {
202
+ await writeFile(orphansPath, isJson ? `${JSON.stringify(outcome.orphans, null, 2)}\n` : serializeCsv([...header, 'lineage_relation'], outcome.orphans), 'utf-8');
203
+ }
204
+ if (hasFlag(args, '--json')) {
205
+ printJson({ out: outPath, orphans: orphansPath ?? null, policy, keyColumn, counts: outcome.counts });
206
+ return;
207
+ }
208
+ const { counts } = outcome;
209
+ process.stdout.write(`\n Rows in: ${counts.input}\n Rekeyed: ${counts.rekeyed}` +
210
+ (counts.duplicated ? ` (+${counts.duplicated} copies from splits)` : '') +
211
+ `\n Orphaned: ${counts.orphaned}${orphansPath ? ` -> ${orphansPath}` : ''}\n Written: ${outPath}\n\n`);
212
+ }
213
+ //# sourceMappingURL=rekey.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rekey.js","sourceRoot":"","sources":["../../src/commands/rekey.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"simplify.d.ts","sourceRoot":"","sources":["../../src/commands/simplify.ts"],"names":[],"mappings":"AAoBA,wBAAsB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAsFnE"}
1
+ {"version":3,"file":"simplify.d.ts","sourceRoot":"","sources":["../../src/commands/simplify.ts"],"names":[],"mappings":"AAoBA,wBAAsB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAyFnE"}
@@ -13,9 +13,12 @@
13
13
  * is simplified.
14
14
  */
15
15
  import { readFile, writeFile } from 'node:fs/promises';
16
- import { getFlag, hasFlag, fatal, printJson } from '../output.js';
16
+ import { getFlag, hasFlag, fatal, printJson, routeConsoleDiagnosticsToStderr } from '../output.js';
17
17
  import { DemeshSession } from '@ifc-lite/export';
18
18
  export async function simplifyCommand(args) {
19
+ // stdout carries this command's payload, so redirect console diagnostics
20
+ // BEFORE the first parse/geometry init (see the function's own docstring).
21
+ routeConsoleDiagnosticsToStderr();
19
22
  const filePath = args.find((a) => !a.startsWith('-'));
20
23
  if (!filePath) {
21
24
  fatal('Usage: ifc-lite simplify <file.ifc> --out light.ifc [--level 1..5] [--ids 1,2,3] [--json]');
@@ -1 +1 @@
1
- {"version":3,"file":"simplify.js","sourceRoot":"","sources":["../../src/commands/simplify.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"simplify.js","sourceRoot":"","sources":["../../src/commands/simplify.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAE/D;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,+BAA+B,EAAE,MAAM,cAAc,CAAC;AACnG,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,IAAc;IAClD,yEAAyE;IACzE,2EAA2E;IAC3E,+BAA+B,EAAE,CAAC;IAClC,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,2FAA2F,CAAC,CAAC;IACrG,CAAC;IACD,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IAC1C,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACvC,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACtC,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAE3C,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,IAAI,GAAG,CAAC,CAAC;IACtC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;QACvD,KAAK,CAAC,uFAAuF,CAAC,CAAC;IACjG,CAAC;IACD,IAAI,CAAC,OAAO;QAAE,KAAK,CAAC,8CAA8C,CAAC,CAAC;IAEpE,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,MAAM,QAAQ,CAAC,QAAS,CAAC,CAAC,CAAC;IACzD,MAAM,OAAO,GAAG,IAAI,aAAa,CAAC,MAAM,CAAC,CAAC;IAC1C,IAAI,CAAC;QACH,IAAI,GAAa,CAAC;QAClB,IAAI,MAAM,EAAE,CAAC;YACX,mEAAmE;YACnE,qEAAqE;YACrE,qEAAqE;YACrE,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YAClF,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBACrH,KAAK,CAAC,sEAAsE,CAAC,CAAC;YAChF,CAAC;YACD,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QACrC,CAAC;aAAM,CAAC;YACN,wDAAwD;YACxD,GAAG,GAAG,CAAC,MAAM,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;YAChF,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC;gBAAE,KAAK,CAAC,4CAA4C,CAAC,CAAC;QAC5E,CAAC;QAED,MAAM,UAAU,GAAG,MAAM,OAAO,CAAC,QAAQ,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QACtD,IAAI,UAAU,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACrC,KAAK,CAAC,oCAAoC,UAAU,CAAC,OAAO,CAAC,MAAM,YAAY,CAAC,CAAC;QACnF,CAAC;QACD,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,SAAS,EAAE,CAAC;QAC3C,uEAAuE;QACvE,qEAAqE;QACrE,sEAAsE;QACtE,mEAAmE;QACnE,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;QACjD,IAAI,QAAQ,KAAK,CAAC,EAAE,CAAC;YACnB,KAAK,CACH,cAAc,UAAU,CAAC,QAAQ,CAAC,MAAM,gDAAgD;gBACxF,IAAI,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,oCAAoC,OAAO,GAAG,CACjF,CAAC;QACJ,CAAC;QACD,MAAM,SAAS,CAAC,OAAQ,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;QAE1C,MAAM,UAAU,GAAG,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;QAC7E,MAAM,SAAS,GAAG,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;QAC3E,IAAI,UAAU,EAAE,CAAC;YACf,SAAS,CAAC;gBACR,KAAK;gBACL,UAAU,EAAE,UAAU,CAAC,QAAQ,CAAC,MAAM;gBACtC,QAAQ;gBACR,OAAO,EAAE,UAAU,CAAC,OAAO;gBAC3B,aAAa,EAAE,QAAQ,CAAC,MAAM,CAAC,OAAO;gBACtC,eAAe,EAAE,UAAU;gBAC3B,cAAc,EAAE,SAAS;gBACzB,eAAe,EAAE,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC;gBAC/E,cAAc,EAAE,QAAQ,CAAC,MAAM,CAAC,iBAAiB;gBACjD,gBAAgB,EAAE,QAAQ,CAAC,MAAM,CAAC,oBAAoB;gBACtD,WAAW,EAAE,QAAQ,CAAC,WAAW;gBACjC,WAAW,EAAE,QAAQ,CAAC,WAAW;gBACjC,UAAU,EAAE,QAAQ,CAAC,UAAU;gBAC/B,MAAM,EAAE,OAAO;aAChB,CAAC,CAAC;QACL,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,cAAc,UAAU,CAAC,QAAQ,CAAC,MAAM,oBAAoB,KAAK,GAAG;gBACpE,IAAI,UAAU,CAAC,OAAO,CAAC,MAAM,cAAc,QAAQ,2BAA2B;gBAC9E,GAAG,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,qBAAqB,CAAC,CAAC,CAAC,EAAE,IAAI;gBACzG,cAAc,UAAU,OAAO,SAAS,IAAI;gBAC5C,cAAc,QAAQ,CAAC,WAAW,OAAO,QAAQ,CAAC,UAAU,QAAQ;gBACpE,GAAG,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,+BAA+B,CAAC,CAAC,CAAC,EAAE,IAAI;gBAClE,cAAc,OAAO,IAAI,CAC1B,CAAC;QACJ,CAAC;IACH,CAAC;YAAS,CAAC;QACT,OAAO,CAAC,OAAO,EAAE,CAAC;IACpB,CAAC;AACH,CAAC"}
@@ -53,21 +53,12 @@ export declare const QUANTIFIABLE_BASE_TYPES: readonly string[];
53
53
  export declare const namedElementTypes: (schemaVersion: string | undefined) => readonly string[];
54
54
  /** `QUANTIFIABLE_BASE_TYPES` plus every subtype this store's schema declares under one. */
55
55
  export declare const quantifiableTypes: (schemaVersion: string | undefined) => readonly string[];
56
- /**
57
- * Walk every indexed entity record and collect `#N` references whose target
58
- * does not exist in the file (rule `reference-integrity`). Uses the parsed
59
- * entity index for both iteration and existence checks; entities held in the
60
- * deferred index (lazily-parsed property entities) count as existing and are
61
- * scanned too.
62
- */
56
+ /** Check source `#N` references against the parsed and deferred file indexes
57
+ * (rule `reference-integrity`), scanning records in both indexes. */
63
58
  export declare function collectDanglingReferences(store: IfcDataStore): DanglingReference[];
64
- /**
65
- * Run the structural validation checks (required entities, storeys, GlobalId
66
- * uniqueness, naming, schema version, quantity completeness, reference
67
- * integrity) against an already-parsed store. Pulled out of
68
- * {@link validateCommand} so other consumers (tests, harnesses) reuse the
69
- * exact same rules instead of re-implementing them.
70
- */
59
+ /** Shared structural checks for a parsed store: required entities, storeys,
60
+ * GlobalId uniqueness, naming, schema, quantities and reference integrity.
61
+ * {@link validateCommand}, tests and harnesses all use these rules. */
71
62
  export declare function computeValidationIssues(store: IfcDataStore): ValidationIssue[];
72
63
  export declare function validateCommand(args: string[]): Promise<void>;
73
64
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../src/commands/validate.ts"],"names":[],"mappings":"AAmBA,OAAO,EAAgE,KAAK,YAAY,EAAuC,MAAM,kBAAkB,CAAC;AAExJ,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,OAAO,GAAG,SAAS,GAAG,MAAM,CAAC;IACvC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,4FAA4F;IAC5F,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,gGAAgG;IAChG,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,gEAAgE;IAChE,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,4EAA4E;AAC5E,UAAU,iBAAiB;IACzB,wDAAwD;IACxD,QAAQ,EAAE,MAAM,CAAC;IACjB,wEAAwE;IACxE,UAAU,EAAE,MAAM,CAAC;IACnB,4GAA4G;IAC5G,cAAc,EAAE,MAAM,CAAC;IACvB,8CAA8C;IAC9C,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,eAAO,MAAM,wBAAwB,EAAE,SAAS,MAAM,EAC2D,CAAC;AAElH,oCAAoC;AACpC,eAAO,MAAM,uBAAuB,EAAE,SAAS,MAAM,EAC8C,CAAC;AAEpG,4FAA4F;AAC5F,eAAO,MAAM,iBAAiB,GAAI,eAAe,MAAM,GAAG,SAAS,KAAG,SAAS,MAAM,EAC1B,CAAC;AAE5D,2FAA2F;AAC3F,eAAO,MAAM,iBAAiB,GAAI,eAAe,MAAM,GAAG,SAAS,KAAG,SAAS,MAAM,EAC3B,CAAC;AAoG3D;;;;;;GAMG;AACH,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,YAAY,GAAG,iBAAiB,EAAE,CAmBlF;AAED;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,YAAY,GAAG,eAAe,EAAE,CA6I9E;AAED,wBAAsB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAmCnE"}
1
+ {"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../src/commands/validate.ts"],"names":[],"mappings":"AAmBA,OAAO,EAAgE,KAAK,YAAY,EAAuC,MAAM,kBAAkB,CAAC;AAGxJ,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,OAAO,GAAG,SAAS,GAAG,MAAM,CAAC;IACvC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,4FAA4F;IAC5F,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,gGAAgG;IAChG,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,gEAAgE;IAChE,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,4EAA4E;AAC5E,UAAU,iBAAiB;IACzB,wDAAwD;IACxD,QAAQ,EAAE,MAAM,CAAC;IACjB,wEAAwE;IACxE,UAAU,EAAE,MAAM,CAAC;IACnB,4GAA4G;IAC5G,cAAc,EAAE,MAAM,CAAC;IACvB,8CAA8C;IAC9C,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,eAAO,MAAM,wBAAwB,EAAE,SAAS,MAAM,EAC2D,CAAC;AAElH,oCAAoC;AACpC,eAAO,MAAM,uBAAuB,EAAE,SAAS,MAAM,EAC8C,CAAC;AAEpG,4FAA4F;AAC5F,eAAO,MAAM,iBAAiB,GAAI,eAAe,MAAM,GAAG,SAAS,KAAG,SAAS,MAAM,EAC1B,CAAC;AAE5D,2FAA2F;AAC3F,eAAO,MAAM,iBAAiB,GAAI,eAAe,MAAM,GAAG,SAAS,KAAG,SAAS,MAAM,EAC3B,CAAC;AAoG3D;qEACqE;AACrE,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,YAAY,GAAG,iBAAiB,EAAE,CAoBlF;AAED;;uEAEuE;AACvE,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,YAAY,GAAG,eAAe,EAAE,CAkJ9E;AAED,wBAAsB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAmCnE"}
@@ -16,6 +16,7 @@ import { loadIfcFile } from '../loader.js';
16
16
  import { hasFlag, fatal, printJson } from '../output.js';
17
17
  import { EntityNode } from '@ifc-lite/query';
18
18
  import { expandTypes, getInheritanceChainAcrossSchemas, asSourceBytes } from '@ifc-lite/parser';
19
+ import { resolvedTypeName } from '@ifc-lite/data';
19
20
  /**
20
21
  * The building-element types the `named-elements` and `quantity-completeness`
21
22
  * rules scan, as base types only.
@@ -142,15 +143,11 @@ function scanRecordForDanglingRefs(source, ref, exists, out) {
142
143
  i++;
143
144
  }
144
145
  }
145
- /**
146
- * Walk every indexed entity record and collect `#N` references whose target
147
- * does not exist in the file (rule `reference-integrity`). Uses the parsed
148
- * entity index for both iteration and existence checks; entities held in the
149
- * deferred index (lazily-parsed property entities) count as existing and are
150
- * scanned too.
151
- */
146
+ /** Check source `#N` references against the parsed and deferred file indexes
147
+ * (rule `reference-integrity`), scanning records in both indexes. */
152
148
  export function collectDanglingReferences(store) {
153
149
  const source = store.source;
150
+ // @raw-entity-enumeration-ok reference-integrity checks the source bytes against their parsed source index
154
151
  const byId = store.entityIndex.byId;
155
152
  const deferred = store.deferredEntityIndex;
156
153
  if (!source || source.byteLength === 0 || !byId)
@@ -169,18 +166,15 @@ export function collectDanglingReferences(store) {
169
166
  }
170
167
  return out;
171
168
  }
172
- /**
173
- * Run the structural validation checks (required entities, storeys, GlobalId
174
- * uniqueness, naming, schema version, quantity completeness, reference
175
- * integrity) against an already-parsed store. Pulled out of
176
- * {@link validateCommand} so other consumers (tests, harnesses) reuse the
177
- * exact same rules instead of re-implementing them.
178
- */
169
+ /** Shared structural checks for a parsed store: required entities, storeys,
170
+ * GlobalId uniqueness, naming, schema, quantities and reference integrity.
171
+ * {@link validateCommand}, tests and harnesses all use these rules. */
179
172
  export function computeValidationIssues(store) {
180
173
  const issues = [];
181
174
  // 1. Check required spatial entities
182
175
  const requiredTypes = ['IFCPROJECT', 'IFCSITE', 'IFCBUILDING'];
183
176
  for (const reqType of requiredTypes) {
177
+ // @raw-entity-enumeration-ok CLI validation reads a freshly loaded file without a mutation view
184
178
  const ids = store.entityIndex.byType.get(reqType) ?? [];
185
179
  if (ids.length === 0) {
186
180
  issues.push({ severity: 'error', rule: 'required-entity', message: `Missing required entity: ${reqType}` });
@@ -190,6 +184,7 @@ export function computeValidationIssues(store) {
190
184
  }
191
185
  }
192
186
  // 2. Check storeys
187
+ // @raw-entity-enumeration-ok structural validation reports the parsed file snapshot
193
188
  const storeyIds = store.entityIndex.byType.get('IFCBUILDINGSTOREY') ?? [];
194
189
  if (storeyIds.length === 0) {
195
190
  issues.push({ severity: 'warning', rule: 'has-storeys', message: 'No IfcBuildingStorey entities found' });
@@ -220,6 +215,7 @@ export function computeValidationIssues(store) {
220
215
  // `IfcMaterial` or `IfcSurfaceStyle` here would report two same-named
221
216
  // materials as a duplicate GlobalId.
222
217
  const globalIds = new Map();
218
+ // @raw-entity-enumeration-ok GlobalId uniqueness is checked on the parsed file being validated
223
219
  for (const [typeName, ids] of store.entityIndex.byType) {
224
220
  const chain = getInheritanceChainAcrossSchemas(typeName);
225
221
  if (!chain.includes('IfcRoot'))
@@ -249,6 +245,7 @@ export function computeValidationIssues(store) {
249
245
  // 4. Check for unnamed elements
250
246
  let unnamedCount = 0;
251
247
  for (const pt of namedElementTypes(store.schemaVersion)) {
248
+ // @raw-entity-enumeration-ok naming validation scans the parsed file with no overlay
252
249
  const ids = store.entityIndex.byType.get(pt) ?? [];
253
250
  for (const id of ids) {
254
251
  const node = new EntityNode(store, id);
@@ -267,6 +264,7 @@ export function computeValidationIssues(store) {
267
264
  let withQuantities = 0;
268
265
  let withoutQuantities = 0;
269
266
  for (const qt of quantifiableTypes(store.schemaVersion)) {
267
+ // @raw-entity-enumeration-ok quantity completeness scans the parsed source file
270
268
  const ids = store.entityIndex.byType.get(qt) ?? [];
271
269
  for (const id of ids) {
272
270
  const node = new EntityNode(store, id);
@@ -296,7 +294,7 @@ export function computeValidationIssues(store) {
296
294
  for (const d of dangling.slice(0, DANGLING_REF_ISSUE_CAP)) {
297
295
  // Display names render in IFC PascalCase (IfcWall, not IFCWALL); the
298
296
  // collector carries the raw STEP token, so resolve through the table.
299
- const typeName = store.entities.getTypeName(d.entityId) || d.entityType;
297
+ const typeName = resolvedTypeName(store.entities, d.entityId) ?? d.entityType;
300
298
  issues.push({
301
299
  severity: 'error',
302
300
  rule: 'reference-integrity',
@@ -1 +1 @@
1
- {"version":3,"file":"validate.js","sourceRoot":"","sources":["../../src/commands/validate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"validate.js","sourceRoot":"","sources":["../../src/commands/validate.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * The `bim.store` authoring surfaces the CLI backend composes from shared SDK
3
+ * factories rather than hand-written methods: cost (#4857) and structural
4
+ * analysis (#5167 S.1).
5
+ *
6
+ * Both take the SAME per-call resolution, and that is the point of keeping
7
+ * them together: an entity authored through one surface must be visible to the
8
+ * next call on the other, which only holds while both resolve the same
9
+ * `StoreEditor` and the same `MutablePropertyView`. Two separately-written
10
+ * resolvers would satisfy the types and drift on exactly that.
11
+ *
12
+ * It also keeps `headless-backend.ts` inside its module-size budget.
13
+ */
14
+ import { type CostBackendMethods, type CostStoreBackendMethods, type StructuralStoreBackendMethods } from '@ifc-lite/sdk';
15
+ import type { IfcDataStore } from '@ifc-lite/parser';
16
+ import type { MutablePropertyView, StoreEditor } from '@ifc-lite/mutations';
17
+ export interface StoreAuthoringDeps {
18
+ /** Throws when the caller names a model this backend does not answer for. */
19
+ assertModel(modelId: string): void;
20
+ defaultModelId: string;
21
+ dataStore(): IfcDataStore;
22
+ editor(): StoreEditor;
23
+ mutationView(): MutablePropertyView;
24
+ ownerHistoryId(): number | null;
25
+ cost: Pick<CostBackendMethods, 'data'>;
26
+ }
27
+ export declare function createStoreAuthoring(deps: StoreAuthoringDeps): CostStoreBackendMethods & StructuralStoreBackendMethods;
28
+ //# sourceMappingURL=headless-backend-store-authoring.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"headless-backend-store-authoring.d.ts","sourceRoot":"","sources":["../src/headless-backend-store-authoring.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAGL,KAAK,kBAAkB,EACvB,KAAK,uBAAuB,EAC5B,KAAK,6BAA6B,EACnC,MAAM,eAAe,CAAC;AACvB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,KAAK,EAAE,mBAAmB,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAE5E,MAAM,WAAW,kBAAkB;IACjC,6EAA6E;IAC7E,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,IAAI,YAAY,CAAC;IAC1B,MAAM,IAAI,WAAW,CAAC;IACtB,YAAY,IAAI,mBAAmB,CAAC;IACpC,cAAc,IAAI,MAAM,GAAG,IAAI,CAAC;IAChC,IAAI,EAAE,IAAI,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAAC;CACxC;AAED,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,kBAAkB,GACvB,uBAAuB,GAAG,6BAA6B,CAezD"}
@@ -0,0 +1,34 @@
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 `bim.store` authoring surfaces the CLI backend composes from shared SDK
6
+ * factories rather than hand-written methods: cost (#4857) and structural
7
+ * analysis (#5167 S.1).
8
+ *
9
+ * Both take the SAME per-call resolution, and that is the point of keeping
10
+ * them together: an entity authored through one surface must be visible to the
11
+ * next call on the other, which only holds while both resolve the same
12
+ * `StoreEditor` and the same `MutablePropertyView`. Two separately-written
13
+ * resolvers would satisfy the types and drift on exactly that.
14
+ *
15
+ * It also keeps `headless-backend.ts` inside its module-size budget.
16
+ */
17
+ import { createCostStoreBackend, createStructuralStoreBackend, } from '@ifc-lite/sdk';
18
+ export function createStoreAuthoring(deps) {
19
+ const resolve = (modelId) => {
20
+ deps.assertModel(modelId ?? '');
21
+ return {
22
+ modelId: modelId ?? deps.defaultModelId,
23
+ store: deps.dataStore(),
24
+ editor: deps.editor(),
25
+ mutationView: deps.mutationView(),
26
+ ownerHistoryId: deps.ownerHistoryId(),
27
+ };
28
+ };
29
+ return {
30
+ ...createCostStoreBackend(resolve, deps.cost),
31
+ ...createStructuralStoreBackend(resolve),
32
+ };
33
+ }
34
+ //# sourceMappingURL=headless-backend-store-authoring.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"headless-backend-store-authoring.js","sourceRoot":"","sources":["../src/headless-backend-store-authoring.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAE/D;;;;;;;;;;;;GAYG;AAEH,OAAO,EACL,sBAAsB,EACtB,4BAA4B,GAI7B,MAAM,eAAe,CAAC;AAevB,MAAM,UAAU,oBAAoB,CAClC,IAAwB;IAExB,MAAM,OAAO,GAAG,CAAC,OAAgB,EAAE,EAAE;QACnC,IAAI,CAAC,WAAW,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;QAChC,OAAO;YACL,OAAO,EAAE,OAAO,IAAI,IAAI,CAAC,cAAc;YACvC,KAAK,EAAE,IAAI,CAAC,SAAS,EAAE;YACvB,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE;YACrB,YAAY,EAAE,IAAI,CAAC,YAAY,EAAE;YACjC,cAAc,EAAE,IAAI,CAAC,cAAc,EAAE;SACtC,CAAC;IACJ,CAAC,CAAC;IACF,OAAO;QACL,GAAG,sBAAsB,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC;QAC7C,GAAG,4BAA4B,CAAC,OAAO,CAAC;KACzC,CAAC;AACJ,CAAC"}
@@ -1,6 +1,7 @@
1
1
  /** Headless `BimBackend` implementation for the CLI (no renderer). */
2
2
  import type { BimBackend, BimEventType, ModelBackendMethods, QueryBackendMethods, SelectionBackendMethods, VisibilityBackendMethods, ViewerBackendMethods, MutateBackendMethods, StoreBackendMethods, SpacesBackendMethods, StyleBackendMethods, SpatialBackendMethods, ExportBackendMethods, LensBackendMethods, FilesBackendMethods, ScheduleBackendMethods, StructuralBackendMethods, CostBackendMethods } from '@ifc-lite/sdk';
3
3
  import type { IfcDataStore } from '@ifc-lite/parser';
4
+ import type { TableAccess } from '@ifc-lite/flow-nodes';
4
5
  import { normalizeBooleanValue } from '@ifc-lite/query';
5
6
  import { expandTypes, isQueryableObjectType } from '@ifc-lite/parser';
6
7
  export { expandTypes };
@@ -70,6 +71,12 @@ export declare class HeadlessBackend implements BimBackend {
70
71
  * `getOrCreateStoreEditor` so its extractors are wired exactly once.
71
72
  */
72
73
  private getOrCreateMutationView;
74
+ /**
75
+ * The bulk entity-table access `table.joinByKey` needs to reuse
76
+ * `@ifc-lite/mutations`' `csv-match.ts` tag/property index (#5167, #5230)
77
+ * rather than re-implement it. Same lazily-created overlay as `bim.cost`.
78
+ */
79
+ tableAccess(modelId?: string): TableAccess;
73
80
  private getOrCreateStoreEditor;
74
81
  private createStoreAdapter;
75
82
  private createSpatialAdapter;
@@ -1 +1 @@
1
- {"version":3,"file":"headless-backend.d.ts","sourceRoot":"","sources":["../src/headless-backend.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"headless-backend.d.ts","sourceRoot":"","sources":["../src/headless-backend.ts"],"names":[],"mappings":"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"}