@ifc-lite/sdk 6.2.0 → 6.4.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.
Files changed (42) hide show
  1. package/dist/cost-backend.d.ts +26 -0
  2. package/dist/cost-backend.d.ts.map +1 -1
  3. package/dist/cost-backend.js +61 -7
  4. package/dist/cost-backend.js.map +1 -1
  5. package/dist/cost-reference-scan.d.ts +12 -0
  6. package/dist/cost-reference-scan.d.ts.map +1 -0
  7. package/dist/cost-reference-scan.js +96 -0
  8. package/dist/cost-reference-scan.js.map +1 -0
  9. package/dist/cost-removal-reference-guard.d.ts +4 -0
  10. package/dist/cost-removal-reference-guard.d.ts.map +1 -0
  11. package/dist/cost-removal-reference-guard.js +37 -0
  12. package/dist/cost-removal-reference-guard.js.map +1 -0
  13. package/dist/cost-store-backend.d.ts +24 -0
  14. package/dist/cost-store-backend.d.ts.map +1 -0
  15. package/dist/cost-store-backend.js +368 -0
  16. package/dist/cost-store-backend.js.map +1 -0
  17. package/dist/cost-types.d.ts +26 -7
  18. package/dist/cost-types.d.ts.map +1 -1
  19. package/dist/index.d.ts +4 -1
  20. package/dist/index.d.ts.map +1 -1
  21. package/dist/index.js +1 -0
  22. package/dist/index.js.map +1 -1
  23. package/dist/namespaces/cost.d.ts +15 -8
  24. package/dist/namespaces/cost.d.ts.map +1 -1
  25. package/dist/namespaces/cost.js +12 -5
  26. package/dist/namespaces/cost.js.map +1 -1
  27. package/dist/namespaces/query.d.ts +3 -2
  28. package/dist/namespaces/query.d.ts.map +1 -1
  29. package/dist/namespaces/query.js +24 -4
  30. package/dist/namespaces/query.js.map +1 -1
  31. package/dist/namespaces/store.d.ts +31 -0
  32. package/dist/namespaces/store.d.ts.map +1 -1
  33. package/dist/namespaces/store.js +49 -0
  34. package/dist/namespaces/store.js.map +1 -1
  35. package/dist/store-cost-types.d.ts +36 -0
  36. package/dist/store-cost-types.d.ts.map +1 -0
  37. package/dist/store-cost-types.js +5 -0
  38. package/dist/store-cost-types.js.map +1 -0
  39. package/dist/types.d.ts +15 -1
  40. package/dist/types.d.ts.map +1 -1
  41. package/dist/types.js.map +1 -1
  42. package/package.json +10 -10
@@ -1,9 +1,35 @@
1
1
  import { type IfcDataStore } from '@ifc-lite/parser';
2
+ import type { MutablePropertyView } from '@ifc-lite/mutations';
2
3
  import type { CostBackendMethods } from './cost-types.js';
3
4
  export interface ResolvedCostModel {
4
5
  modelId: string;
5
6
  store: IfcDataStore;
7
+ /**
8
+ * The model's pending edits — the same `MutablePropertyView` `bim.export.ifc()`
9
+ * writes through — when it has any (#4857). A host with no loaded-model
10
+ * editing (the CLI and MCP headless backends) returns none, and every read
11
+ * takes the cached on-disk path exactly as before.
12
+ */
13
+ mutationView?: MutablePropertyView;
6
14
  }
7
15
  export type CostModelResolver = (modelId?: string) => ResolvedCostModel;
16
+ /**
17
+ * THE cost read entry point, and the one cache between an edit and a read.
18
+ *
19
+ * The cache holds the UNMUTATED graph and nothing else. It is keyed on the
20
+ * store's `source` / `schemaVersion` / `entityIndex` identities — all three
21
+ * replaced wholesale when a model is reloaded and none of them touched by a
22
+ * pending edit — so what it holds cannot go stale under editing: a pending
23
+ * edit never enters it.
24
+ *
25
+ * A read that observes pending edits therefore does not consult the cache at
26
+ * all; it re-extracts through the overlay (#4857). That is the deliberate
27
+ * trade. A second cache keyed on "the overlay as it stood" would need a
28
+ * revision signal bumped at every one of `MutablePropertyView`'s mutation
29
+ * entry points, and one missed entry point is a read that silently reports a
30
+ * pre-edit cost graph — the failure this repo has shipped before. Re-reading
31
+ * costs one cost-scoped extraction per call and only on models that actually
32
+ * have an overlay; being wrong costs a wrong number in a tender.
33
+ */
8
34
  export declare function createCostBackend(resolveModel: CostModelResolver): CostBackendMethods;
9
35
  //# sourceMappingURL=cost-backend.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"cost-backend.d.ts","sourceRoot":"","sources":["../src/cost-backend.ts"],"names":[],"mappings":"AAIA,OAAO,EAGgD,KAAK,YAAY,EACvE,MAAM,kBAAkB,CAAC;AAE1B,OAAO,KAAK,EACY,kBAAkB,EAGzC,MAAM,iBAAiB,CAAC;AAEzB,MAAM,WAAW,iBAAiB;IAAG,OAAO,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,YAAY,CAAA;CAAE;AAC3E,MAAM,MAAM,iBAAiB,GAAG,CAAC,OAAO,CAAC,EAAE,MAAM,KAAK,iBAAiB,CAAC;AA+HxE,wBAAgB,iBAAiB,CAAC,YAAY,EAAE,iBAAiB,GAAG,kBAAkB,CAuCrF"}
1
+ {"version":3,"file":"cost-backend.d.ts","sourceRoot":"","sources":["../src/cost-backend.ts"],"names":[],"mappings":"AAIA,OAAO,EAG0E,KAAK,YAAY,EACjG,MAAM,kBAAkB,CAAC;AAE1B,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAE/D,OAAO,KAAK,EACY,kBAAkB,EAGzC,MAAM,iBAAiB,CAAC;AAEzB,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,YAAY,CAAC;IACpB;;;;;OAKG;IACH,YAAY,CAAC,EAAE,mBAAmB,CAAC;CACpC;AA2BD,MAAM,MAAM,iBAAiB,GAAG,CAAC,OAAO,CAAC,EAAE,MAAM,KAAK,iBAAiB,CAAC;AA+HxE;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,iBAAiB,CAAC,YAAY,EAAE,iBAAiB,GAAG,kBAAkB,CAgDrF"}
@@ -2,6 +2,33 @@
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
4
  import { evaluateCostItem, evaluateCostValue, extractCostOnDemand, } from '@ifc-lite/parser';
5
+ import { effectiveCreatedRecord, effectiveSourceRecord } from '@ifc-lite/export';
6
+ /**
7
+ * The cost read model's view of `view`: tombstones and retypes straight off the
8
+ * view, and every record as `effectiveSourceRecord` — the exporter's own
9
+ * pipeline — writes it. No edit kind is re-serialized here.
10
+ */
11
+ function costOverlay(view, store) {
12
+ return {
13
+ isDeleted: id => view.isDeleted(id),
14
+ retypes: () => new Map([...view.getTypeMutations()].map(([id, mutation]) => [id, mutation.newType])),
15
+ effectiveRecord: (id, text, type) => effectiveSourceRecord(view, id, text, type, store.schemaVersion),
16
+ created: () => view.getNewEntities().map(entity => {
17
+ try {
18
+ const effective = effectiveCreatedRecord(view, entity.expressId, store.schemaVersion);
19
+ return effective
20
+ ? { expressId: entity.expressId, ...effective }
21
+ : { expressId: entity.expressId, error: `Created entity #${entity.expressId} disappeared from the mutation overlay` };
22
+ }
23
+ catch (error) {
24
+ return {
25
+ expressId: entity.expressId,
26
+ error: error instanceof Error ? error.message : String(error),
27
+ };
28
+ }
29
+ }),
30
+ };
31
+ }
5
32
  function ref(modelId, expressId) { return { modelId, expressId }; }
6
33
  function refs(modelId, ids) { return ids.map(expressId => ref(modelId, expressId)); }
7
34
  function projectDiagnostic(modelId, value) {
@@ -121,13 +148,37 @@ function validateEvaluationOptions(options) {
121
148
  throw new Error('bim.cost evaluation Precision must be an integer from 1 through 10000');
122
149
  }
123
150
  }
151
+ /**
152
+ * THE cost read entry point, and the one cache between an edit and a read.
153
+ *
154
+ * The cache holds the UNMUTATED graph and nothing else. It is keyed on the
155
+ * store's `source` / `schemaVersion` / `entityIndex` identities — all three
156
+ * replaced wholesale when a model is reloaded and none of them touched by a
157
+ * pending edit — so what it holds cannot go stale under editing: a pending
158
+ * edit never enters it.
159
+ *
160
+ * A read that observes pending edits therefore does not consult the cache at
161
+ * all; it re-extracts through the overlay (#4857). That is the deliberate
162
+ * trade. A second cache keyed on "the overlay as it stood" would need a
163
+ * revision signal bumped at every one of `MutablePropertyView`'s mutation
164
+ * entry points, and one missed entry point is a read that silently reports a
165
+ * pre-edit cost graph — the failure this repo has shipped before. Re-reading
166
+ * costs one cost-scoped extraction per call and only on models that actually
167
+ * have an overlay; being wrong costs a wrong number in a tender.
168
+ */
124
169
  export function createCostBackend(resolveModel) {
125
170
  const cache = new WeakMap();
126
- const resolve = (modelId) => {
171
+ const resolve = (modelId, options) => {
127
172
  const resolved = resolveModel(modelId);
128
173
  if (!resolved.store.source || resolved.store.source.byteLength === 0) {
129
174
  throw new Error(`bim.cost requires loaded IFC source bytes for model '${resolved.modelId}'`);
130
175
  }
176
+ const view = options?.includeMutations === false ? undefined : resolved.mutationView;
177
+ if (view) {
178
+ // Pending edits are live state: extract fresh, and never write the
179
+ // result into the unmutated-graph cache above.
180
+ return { ...resolved, graph: extractCostOnDemand(resolved.store, { overlay: costOverlay(view, resolved.store) }) };
181
+ }
131
182
  let cached = cache.get(resolved.store);
132
183
  if (!cached || cached.source !== resolved.store.source
133
184
  || cached.schemaVersion !== resolved.store.schemaVersion
@@ -140,22 +191,25 @@ export function createCostBackend(resolveModel) {
140
191
  }
141
192
  return { ...resolved, graph: cached.graph };
142
193
  };
143
- const data = (modelId) => { const value = resolve(modelId); return projectCostGraph(value.modelId, value.graph); };
194
+ const data = (modelId, options) => {
195
+ const value = resolve(modelId, options);
196
+ return projectCostGraph(value.modelId, value.graph);
197
+ };
144
198
  return {
145
199
  data,
146
- schedules: modelId => data(modelId).CostSchedules,
147
- items: modelId => data(modelId).CostItems,
148
- values: modelId => data(modelId).CostValues,
200
+ schedules: (modelId, options) => data(modelId, options).CostSchedules,
201
+ items: (modelId, options) => data(modelId, options).CostItems,
202
+ values: (modelId, options) => data(modelId, options).CostValues,
149
203
  evaluateItem: (target, options) => {
150
204
  validateEvaluationTarget(target);
151
205
  validateEvaluationOptions(options);
152
- const value = resolve(target.modelId);
206
+ const value = resolve(target.modelId, options);
153
207
  return projectEvaluation(value.modelId, evaluateCostItem(value.graph, target.expressId, options));
154
208
  },
155
209
  evaluateValue: (target, options) => {
156
210
  validateEvaluationTarget(target);
157
211
  validateEvaluationOptions(options);
158
- const value = resolve(target.modelId);
212
+ const value = resolve(target.modelId, options);
159
213
  return projectEvaluation(value.modelId, evaluateCostValue(value.graph, target.expressId, options));
160
214
  },
161
215
  };
@@ -1 +1 @@
1
- {"version":3,"file":"cost-backend.js","sourceRoot":"","sources":["../src/cost-backend.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cost-backend.js","sourceRoot":"","sources":["../src/cost-backend.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import type { MutablePropertyView } from '@ifc-lite/mutations';
2
+ import type { IfcDataStore } from '@ifc-lite/parser';
3
+ /**
4
+ * Index effective records that point at any target id. One pass covers the
5
+ * entity being removed and every candidate cascade value, so deletion cost is
6
+ * linear in model size rather than one full-model scan per cost value.
7
+ * Non-relationship SELECT references such as
8
+ * `IfcMetric.DataValue -> IfcCostValue` therefore cannot be orphaned.
9
+ */
10
+ export declare function effectiveCostReferenceOccurrences(store: IfcDataStore, view: MutablePropertyView, targetIds: ReadonlySet<number>): Map<number, Map<number, number>>;
11
+ export declare function effectiveCostReferrers(store: IfcDataStore, view: MutablePropertyView, targetIds: ReadonlySet<number>): Map<number, number[]>;
12
+ //# sourceMappingURL=cost-reference-scan.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cost-reference-scan.d.ts","sourceRoot":"","sources":["../src/cost-reference-scan.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC/D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAyCrD;;;;;;GAMG;AACH,wBAAgB,iCAAiC,CAC/C,KAAK,EAAE,YAAY,EACnB,IAAI,EAAE,mBAAmB,EACzB,SAAS,EAAE,WAAW,CAAC,MAAM,CAAC,GAC7B,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CA6BlC;AAED,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,YAAY,EACnB,IAAI,EAAE,mBAAmB,EACzB,SAAS,EAAE,WAAW,CAAC,MAAM,CAAC,GAC7B,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAKvB"}
@@ -0,0 +1,96 @@
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
+ /** Full-model incoming-reference guard for destructive cost authoring. */
5
+ import { effectiveCreatedRecord, effectiveSourceRecord } from '@ifc-lite/export';
6
+ function referencedTargetCounts(text, targetIds) {
7
+ const found = new Map();
8
+ let inString = false;
9
+ let inComment = false;
10
+ for (let i = 0; i < text.length; i++) {
11
+ if (inComment) {
12
+ if (text[i] === '*' && text[i + 1] === '/') {
13
+ inComment = false;
14
+ i++;
15
+ }
16
+ continue;
17
+ }
18
+ if (!inString && text[i] === '/' && text[i + 1] === '*') {
19
+ inComment = true;
20
+ i++;
21
+ continue;
22
+ }
23
+ if (text[i] === "'") {
24
+ if (inString && text[i + 1] === "'") {
25
+ i++;
26
+ }
27
+ else {
28
+ inString = !inString;
29
+ }
30
+ continue;
31
+ }
32
+ if (inString || text[i] !== '#')
33
+ continue;
34
+ let value = 0;
35
+ let cursor = i + 1;
36
+ if (cursor >= text.length || text[cursor] < '0' || text[cursor] > '9')
37
+ continue;
38
+ while (cursor < text.length && text[cursor] >= '0' && text[cursor] <= '9') {
39
+ value = value * 10 + Number(text[cursor]);
40
+ cursor++;
41
+ }
42
+ if (targetIds.has(value))
43
+ found.set(value, (found.get(value) ?? 0) + 1);
44
+ i = cursor - 1;
45
+ }
46
+ return found;
47
+ }
48
+ /**
49
+ * Index effective records that point at any target id. One pass covers the
50
+ * entity being removed and every candidate cascade value, so deletion cost is
51
+ * linear in model size rather than one full-model scan per cost value.
52
+ * Non-relationship SELECT references such as
53
+ * `IfcMetric.DataValue -> IfcCostValue` therefore cannot be orphaned.
54
+ */
55
+ export function effectiveCostReferenceOccurrences(store, view, targetIds) {
56
+ const referrers = new Map();
57
+ const seen = new Set();
58
+ const visitSource = (id, ref) => {
59
+ if (seen.has(id) || view.isDeleted(id))
60
+ return;
61
+ seen.add(id);
62
+ const sourceText = store.source.decodeUtf8(ref.byteOffset, ref.byteOffset + ref.byteLength);
63
+ const record = effectiveSourceRecord(view, id, sourceText, ref.type, store.schemaVersion);
64
+ for (const [targetId, count] of referencedTargetCounts(record.text, targetIds)) {
65
+ if (targetId === id)
66
+ continue;
67
+ const incoming = referrers.get(targetId) ?? new Map();
68
+ incoming.set(id, count);
69
+ referrers.set(targetId, incoming);
70
+ }
71
+ };
72
+ for (const [id, ref] of store.entityIndex.byId)
73
+ visitSource(id, ref);
74
+ for (const [id, ref] of store.deferredEntityIndex ?? [])
75
+ visitSource(id, ref);
76
+ for (const entity of view.getNewEntities()) {
77
+ if (seen.has(entity.expressId))
78
+ continue;
79
+ const record = effectiveCreatedRecord(view, entity.expressId, store.schemaVersion);
80
+ if (!record)
81
+ continue;
82
+ for (const [targetId, count] of referencedTargetCounts(record.text, targetIds)) {
83
+ if (targetId === entity.expressId)
84
+ continue;
85
+ const incoming = referrers.get(targetId) ?? new Map();
86
+ incoming.set(entity.expressId, count);
87
+ referrers.set(targetId, incoming);
88
+ }
89
+ }
90
+ return referrers;
91
+ }
92
+ export function effectiveCostReferrers(store, view, targetIds) {
93
+ return new Map([...effectiveCostReferenceOccurrences(store, view, targetIds)]
94
+ .map(([targetId, occurrences]) => [targetId, [...occurrences.keys()]]));
95
+ }
96
+ //# sourceMappingURL=cost-reference-scan.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cost-reference-scan.js","sourceRoot":"","sources":["../src/cost-reference-scan.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { CostRemovalReferrers } from '@ifc-lite/create';
2
+ export declare function knownReferrerIds(referrers: CostRemovalReferrers): Set<number>;
3
+ export declare function knownReferenceCount(referrers: CostRemovalReferrers, targetId: number, referrerId: number): number;
4
+ //# sourceMappingURL=cost-removal-reference-guard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cost-removal-reference-guard.d.ts","sourceRoot":"","sources":["../src/cost-removal-reference-guard.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAE7D,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,oBAAoB,GAAG,GAAG,CAAC,MAAM,CAAC,CAY7E;AAED,wBAAgB,mBAAmB,CACjC,SAAS,EAAE,oBAAoB,EAC/B,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,GACjB,MAAM,CAeR"}
@@ -0,0 +1,37 @@
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
+ export function knownReferrerIds(referrers) {
5
+ return new Set([
6
+ ...(referrers.itemCostValues?.keys() ?? []),
7
+ ...(referrers.valueComponents?.keys() ?? []),
8
+ ...(referrers.valueAppliedValueRef?.keys() ?? []),
9
+ ...(referrers.nestRelatedObjects?.keys() ?? []),
10
+ ...(referrers.assignmentRelatedObjects?.keys() ?? []),
11
+ ...(referrers.nestsAsParent ?? []),
12
+ ...(referrers.assignmentsAsControl ?? []),
13
+ ...(referrers.otherRelationshipLists ?? []).map(ref => ref.relId),
14
+ ...(referrers.otherRelationships ?? []),
15
+ ]);
16
+ }
17
+ export function knownReferenceCount(referrers, targetId, referrerId) {
18
+ const count = (values) => values?.filter(id => id === targetId).length ?? 0;
19
+ let total = count(referrers.itemCostValues?.get(referrerId));
20
+ total += count(referrers.valueComponents?.get(referrerId));
21
+ if (referrers.valueAppliedValueRef?.get(referrerId) === targetId)
22
+ total++;
23
+ total += count(referrers.nestRelatedObjects?.get(referrerId));
24
+ total += count(referrers.assignmentRelatedObjects?.get(referrerId));
25
+ for (const ref of referrers.otherRelationshipLists ?? []) {
26
+ if (ref.relId === referrerId)
27
+ total += count(ref.relatedIds);
28
+ }
29
+ if ((referrers.nestsAsParent ?? []).includes(referrerId))
30
+ total++;
31
+ if ((referrers.assignmentsAsControl ?? []).includes(referrerId))
32
+ total++;
33
+ if ((referrers.otherRelationships ?? []).includes(referrerId))
34
+ total++;
35
+ return total;
36
+ }
37
+ //# sourceMappingURL=cost-removal-reference-guard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cost-removal-reference-guard.js","sourceRoot":"","sources":["../src/cost-removal-reference-guard.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAI/D,MAAM,UAAU,gBAAgB,CAAC,SAA+B;IAC9D,OAAO,IAAI,GAAG,CAAC;QACb,GAAG,CAAC,SAAS,CAAC,cAAc,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;QAC3C,GAAG,CAAC,SAAS,CAAC,eAAe,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;QAC5C,GAAG,CAAC,SAAS,CAAC,oBAAoB,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;QACjD,GAAG,CAAC,SAAS,CAAC,kBAAkB,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;QAC/C,GAAG,CAAC,SAAS,CAAC,wBAAwB,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;QACrD,GAAG,CAAC,SAAS,CAAC,aAAa,IAAI,EAAE,CAAC;QAClC,GAAG,CAAC,SAAS,CAAC,oBAAoB,IAAI,EAAE,CAAC;QACzC,GAAG,CAAC,SAAS,CAAC,sBAAsB,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC;QACjE,GAAG,CAAC,SAAS,CAAC,kBAAkB,IAAI,EAAE,CAAC;KACxC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,mBAAmB,CACjC,SAA+B,EAC/B,QAAgB,EAChB,UAAkB;IAElB,MAAM,KAAK,GAAG,CAAC,MAAqC,EAAE,EAAE,CACtD,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,QAAQ,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC;IACpD,IAAI,KAAK,GAAG,KAAK,CAAC,SAAS,CAAC,cAAc,EAAE,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC;IAC7D,KAAK,IAAI,KAAK,CAAC,SAAS,CAAC,eAAe,EAAE,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC;IAC3D,IAAI,SAAS,CAAC,oBAAoB,EAAE,GAAG,CAAC,UAAU,CAAC,KAAK,QAAQ;QAAE,KAAK,EAAE,CAAC;IAC1E,KAAK,IAAI,KAAK,CAAC,SAAS,CAAC,kBAAkB,EAAE,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC;IAC9D,KAAK,IAAI,KAAK,CAAC,SAAS,CAAC,wBAAwB,EAAE,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC;IACpE,KAAK,MAAM,GAAG,IAAI,SAAS,CAAC,sBAAsB,IAAI,EAAE,EAAE,CAAC;QACzD,IAAI,GAAG,CAAC,KAAK,KAAK,UAAU;YAAE,KAAK,IAAI,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAC/D,CAAC;IACD,IAAI,CAAC,SAAS,CAAC,aAAa,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC;QAAE,KAAK,EAAE,CAAC;IAClE,IAAI,CAAC,SAAS,CAAC,oBAAoB,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC;QAAE,KAAK,EAAE,CAAC;IACzE,IAAI,CAAC,SAAS,CAAC,kBAAkB,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC;QAAE,KAAK,EAAE,CAAC;IACvE,OAAO,KAAK,CAAC;AACf,CAAC"}
@@ -0,0 +1,24 @@
1
+ import type { MutablePropertyView, StoreEditor } from '@ifc-lite/mutations';
2
+ import type { IfcDataStore } from '@ifc-lite/parser';
3
+ import type { CostStoreBackendMethods } from './store-cost-types.js';
4
+ import type { CostBackendMethods } from './cost-types.js';
5
+ /** What a host resolves per call: the model's store, its `StoreEditor` (already
6
+ * wired to the same `MutablePropertyView` `bim.cost` reads), and its owner history. */
7
+ export interface CostStoreModelResolution {
8
+ modelId: string;
9
+ store: IfcDataStore;
10
+ editor: StoreEditor;
11
+ mutationView: MutablePropertyView;
12
+ ownerHistoryId: number | null;
13
+ }
14
+ export type CostStoreModelResolver = (modelId?: string) => CostStoreModelResolution;
15
+ /** First `IfcOwnerHistory` still live in the overlay, skipping ids the caller already tombstoned (else export dangles). */
16
+ export declare function resolveLiveOwnerHistoryId(store: IfcDataStore, editor: StoreEditor): number | null;
17
+ /**
18
+ * Build `bim.store`'s cost-authoring methods. `cost` is the model's
19
+ * `CostBackendMethods` (from `createCostBackend`) — reads through it are
20
+ * always mutation-aware (`includeMutations: true`) so a rel this session
21
+ * already authored is visible to the very next authoring call.
22
+ */
23
+ export declare function createCostStoreBackend(resolve: CostStoreModelResolver, cost: Pick<CostBackendMethods, 'data'>, onRelationshipMutation?: (modelId: string) => void): CostStoreBackendMethods;
24
+ //# sourceMappingURL=cost-store-backend.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cost-store-backend.d.ts","sourceRoot":"","sources":["../src/cost-store-backend.ts"],"names":[],"mappings":"AAyBA,OAAO,KAAK,EAAE,mBAAmB,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAC5E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAErD,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AACrE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAK1D;wFACwF;AACxF,MAAM,WAAW,wBAAwB;IACvC,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,YAAY,CAAC;IACpB,MAAM,EAAE,WAAW,CAAC;IACpB,YAAY,EAAE,mBAAmB,CAAC;IAClC,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/B;AAED,MAAM,MAAM,sBAAsB,GAAG,CAAC,OAAO,CAAC,EAAE,MAAM,KAAK,wBAAwB,CAAC;AAEpF,2HAA2H;AAC3H,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,WAAW,GAAG,MAAM,GAAG,IAAI,CAGjG;AAuND;;;;;GAKG;AACH,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,sBAAsB,EAC/B,IAAI,EAAE,IAAI,CAAC,kBAAkB,EAAE,MAAM,CAAC,EACtC,sBAAsB,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,GACjD,uBAAuB,CA0HzB"}