@ifc-lite/sdk 9.3.0 → 9.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.
package/README.md CHANGED
@@ -91,6 +91,12 @@ coverage when native evaluated counts cover the population. Existing
91
91
  model-name card keys do not establish durable source or captured-run identity.
92
92
  See the [SDK guide](https://ifclite.dev/docs/guide/scripting-sdk/#native-review-normalization).
93
93
 
94
+ `clashFindings`, `clashGlobalId`, `clashDisciplineCandidates`, and
95
+ `clashOccurrenceKey` share the existing viewer clash projection and occurrence
96
+ identity. `savedValidationFacts` projects saved IDS failure rows; callers supply
97
+ actual re-examination outcomes. Imported rows remain historical and incomplete,
98
+ and discipline candidates remain hints rather than verified responsibilities.
99
+
94
100
  ## Links
95
101
 
96
102
  - Docs: https://ifclite.dev/docs/
@@ -0,0 +1,9 @@
1
+ import { type Clash } from '@ifc-lite/clash';
2
+ /** Native selector candidates remain hints, never verified responsibilities. */
3
+ export declare function clashDisciplineCandidates(clash: Pick<Clash, 'a' | 'b'>): {
4
+ a: string[];
5
+ b: string[];
6
+ };
7
+ /** Exact occurrence identity, distinct from model-independent human review keys. */
8
+ export declare function clashOccurrenceKey(clash: Pick<Clash, 'rule' | 'a' | 'b'>): string;
9
+ //# sourceMappingURL=clash-identity.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clash-identity.d.ts","sourceRoot":"","sources":["../../src/review/clash-identity.ts"],"names":[],"mappings":"AAIA,OAAO,EAAgC,KAAK,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAE3E,gFAAgF;AAChF,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,GAAG,GAAG,GAAG,CAAC;;;EAKtE;AAED,oFAAoF;AACpF,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,MAAM,CAIjF"}
@@ -0,0 +1,18 @@
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
+ import { DISCIPLINES, matchesSelector } from '@ifc-lite/clash';
5
+ /** Native selector candidates remain hints, never verified responsibilities. */
6
+ export function clashDisciplineCandidates(clash) {
7
+ function candidates(tag) {
8
+ return Object.values(DISCIPLINES).filter(discipline => matchesSelector(tag, discipline.selector)).map(discipline => discipline.code);
9
+ }
10
+ return { a: candidates(clash.a.tag), b: candidates(clash.b.tag) };
11
+ }
12
+ /** Exact occurrence identity, distinct from model-independent human review keys. */
13
+ export function clashOccurrenceKey(clash) {
14
+ const elements = [clash.a, clash.b].map(element => [element.model, element.key])
15
+ .sort(([modelA, keyA], [modelB, keyB]) => modelA < modelB ? -1 : modelA > modelB ? 1 : keyA < keyB ? -1 : keyA > keyB ? 1 : 0);
16
+ return JSON.stringify([clash.rule, ...elements]);
17
+ }
18
+ //# sourceMappingURL=clash-identity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clash-identity.js","sourceRoot":"","sources":["../../src/review/clash-identity.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAE/D,OAAO,EAAE,WAAW,EAAE,eAAe,EAAc,MAAM,iBAAiB,CAAC;AAE3E,gFAAgF;AAChF,MAAM,UAAU,yBAAyB,CAAC,KAA6B;IACrE,SAAS,UAAU,CAAC,GAAW;QAC7B,OAAO,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC,eAAe,CAAC,GAAG,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IACvI,CAAC;IACD,OAAO,EAAE,CAAC,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;AACpE,CAAC;AAED,oFAAoF;AACpF,MAAM,UAAU,kBAAkB,CAAC,KAAsC;IACvE,MAAM,QAAQ,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,GAAG,CAAU,CAAC;SACtF,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACjI,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,QAAQ,CAAC,CAAC,CAAC;AACnD,CAAC"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Clash findings: the live run is current; the saved revision baseline is
3
+ * historical. Absence is decided by the native `compareClashRevisions`
4
+ * (skipped rules, empty-match rules, lost models and unre-examined elements
5
+ * stay `unretested`), and additionally never from a truncated or stale run.
6
+ */
7
+ import { type ClashElementRef, type ClashResult } from '@ifc-lite/clash';
8
+ import type { FindingSourceResult, ReviewModel, ReviewMessage } from './types.js';
9
+ export interface ClashFindingInput {
10
+ /** The live run with exclusions applied, and whether edits since make it stale. */
11
+ current: {
12
+ result: ClashResult;
13
+ stale: boolean;
14
+ } | null;
15
+ /** The saved baseline: its result plus the durable model names of its ephemeral model ids. */
16
+ baseline: {
17
+ result: ClashResult;
18
+ modelNames: Readonly<Record<string, string>>;
19
+ takenAt: number;
20
+ } | null;
21
+ }
22
+ /** Instanced occurrences fold `:<occurrenceKey>` into the key; GlobalIds never contain ':'. */
23
+ export declare function clashGlobalId(ref: Pick<ClashElementRef, 'key'>): string;
24
+ export declare function clashFindings<Message extends ReviewMessage = ReviewMessage>(input: ClashFindingInput, models: readonly ReviewModel[]): FindingSourceResult<Message>;
25
+ //# sourceMappingURL=clash.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clash.d.ts","sourceRoot":"","sources":["../../src/review/clash.ts"],"names":[],"mappings":"AAIA;;;;;GAKG;AAEH,OAAO,EAAqD,KAAK,eAAe,EAAE,KAAK,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAG5H,OAAO,KAAK,EAAgD,mBAAmB,EAAiB,WAAW,EAAU,aAAa,EAAE,MAAM,YAAY,CAAC;AAEvJ,MAAM,WAAW,iBAAiB;IAChC,mFAAmF;IACnF,OAAO,EAAE;QAAE,MAAM,EAAE,WAAW,CAAC;QAAC,KAAK,EAAE,OAAO,CAAA;KAAE,GAAG,IAAI,CAAC;IACxD,8FAA8F;IAC9F,QAAQ,EAAE;QAAE,MAAM,EAAE,WAAW,CAAC;QAAC,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;CACzG;AAED,+FAA+F;AAC/F,wBAAgB,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,eAAe,EAAE,KAAK,CAAC,GAAG,MAAM,CAGvE;AA+CD,wBAAgB,aAAa,CAAC,OAAO,SAAS,aAAa,GAAG,aAAa,EAAE,KAAK,EAAE,iBAAiB,EAAE,MAAM,EAAE,SAAS,WAAW,EAAE,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAsCnK"}
@@ -0,0 +1,97 @@
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
+ * Clash findings: the live run is current; the saved revision baseline is
6
+ * historical. Absence is decided by the native `compareClashRevisions`
7
+ * (skipped rules, empty-match rules, lost models and unre-examined elements
8
+ * stay `unretested`), and additionally never from a truncated or stale run.
9
+ */
10
+ import { clashReviewKey, compareClashRevisions } from '@ifc-lite/clash';
11
+ import { clashDisciplineCandidates } from './clash-identity.js';
12
+ import { clashOccurrenceKey as manualClashOccurrenceKey } from './clash-identity.js';
13
+ /** Instanced occurrences fold `:<occurrenceKey>` into the key; GlobalIds never contain ':'. */
14
+ export function clashGlobalId(ref) {
15
+ const at = ref.key.indexOf(':');
16
+ return at < 0 ? ref.key : ref.key.slice(0, at);
17
+ }
18
+ function ruleLabel(result) {
19
+ const names = result.rulesRun.map(rule => rule.name).filter(Boolean);
20
+ return names.length ? names.slice(0, 3).join(', ') + (names.length > 3 ? ` +${names.length - 3}` : '') : 'Clash detection';
21
+ }
22
+ function gaps(result, stale) {
23
+ return [
24
+ ...(result.truncated ? [{ code: 'truncated', detail: result.truncated.reason }] : []),
25
+ ...(stale ? [{ code: 'stale' }] : []),
26
+ ];
27
+ }
28
+ function storeyOf(element, models) {
29
+ const model = models.find(candidate => candidate.id === element.modelId);
30
+ if (!model?.storeyOf)
31
+ return [];
32
+ const expressId = model.expressIdOf(element.globalId);
33
+ const storey = expressId > 0 ? model.storeyOf(expressId) : null;
34
+ return storey ? [storey] : [];
35
+ }
36
+ function finding(clash, run, names, models, lifecycle, historical) {
37
+ const element = (ref) => ({
38
+ globalId: clashGlobalId(ref),
39
+ // A historical model id belonged to an earlier session; only its durable name identifies it now.
40
+ modelId: historical ? null : ref.model,
41
+ modelName: names[ref.model] ?? null,
42
+ ifcType: ref.tag,
43
+ ...(ref.name ? { name: ref.name } : {}),
44
+ });
45
+ const elements = [element(clash.a), element(clash.b)];
46
+ const candidates = clashDisciplineCandidates(clash);
47
+ const reviewKey = clashReviewKey(clash);
48
+ const distance = Number.isFinite(clash.distance) ? `${Number(clash.distance.toPrecision(3))}` : 'n/a';
49
+ return {
50
+ id: `${run.id}#${clash.id}`, lineage: `clash|${reviewKey}`, source: 'clash', run, elements,
51
+ nativeStatus: clash.status, title: `${clash.a.tag} × ${clash.b.tag}`,
52
+ detail: [`rule ${clash.rule}`, `severity ${clash.severity}`, `distance ${distance}${clash.distanceKind ? ` (${clash.distanceKind})` : ''}`],
53
+ lifecycle, disciplines: [...new Set([...candidates.a, ...candidates.b])],
54
+ storeys: [...new Set(elements.flatMap(item => storeyOf(item, models)))],
55
+ evidence: historical ? { kind: 'clash-baseline', reviewKey }
56
+ : { kind: 'clash', clashId: clash.id, occurrenceKey: manualClashOccurrenceKey(clash), reviewKey },
57
+ };
58
+ }
59
+ export function clashFindings(input, models) {
60
+ const liveNames = Object.fromEntries(models.map(model => [model.id, model.name]));
61
+ const runs = [];
62
+ const findings = [];
63
+ const { current, baseline } = input;
64
+ const currentRun = current ? {
65
+ id: 'clash:current', source: 'clash', temporal: 'current', label: ruleLabel(current.result), capturedAt: null,
66
+ incomplete: gaps(current.result, current.stale), complete: gaps(current.result, current.stale).length === 0,
67
+ models: [...new Set(current.result.clashes.flatMap(clash => [liveNames[clash.a.model], liveNames[clash.b.model]]).filter(Boolean))],
68
+ } : null;
69
+ const baselineRun = baseline ? {
70
+ id: 'clash:baseline', source: 'clash', temporal: 'historical', label: ruleLabel(baseline.result),
71
+ capturedAt: new Date(baseline.takenAt).toISOString(), incomplete: gaps(baseline.result, false),
72
+ complete: !baseline.result.truncated, models: [...new Set(Object.values(baseline.modelNames))],
73
+ } : null;
74
+ const revision = current && baseline ? compareClashRevisions({ result: baseline.result, modelNames: baseline.modelNames }, { result: current.result, modelNames: liveNames }) : null;
75
+ const added = new Set(revision?.added.map(clash => clash.id));
76
+ const resolvedIds = new Set(revision?.resolved.map(clash => clash.id));
77
+ const currentLineages = new Set(current?.result.clashes.map(clash => `clash|${clashReviewKey(clash)}`));
78
+ if (current && currentRun) {
79
+ runs.push(currentRun);
80
+ for (const clash of current.result.clashes) {
81
+ const lifecycle = !revision ? 'observed' : added.has(clash.id) ? 'new' : 'persistent';
82
+ findings.push(finding(clash, currentRun, liveNames, models, lifecycle, false));
83
+ }
84
+ }
85
+ if (baseline && baselineRun) {
86
+ runs.push(baselineRun);
87
+ for (const clash of baseline.result.clashes) {
88
+ const lineage = `clash|${clashReviewKey(clash)}`;
89
+ // Only a complete current run may turn native `resolved` into a resolution candidate.
90
+ const lifecycle = currentLineages.has(lineage) ? 'persistent'
91
+ : resolvedIds.has(clash.id) && currentRun?.complete ? 'no-longer-observed' : 'not-evaluated';
92
+ findings.push(finding(clash, baselineRun, baseline.modelNames, models, lifecycle, true));
93
+ }
94
+ }
95
+ return { runs, findings };
96
+ }
97
+ //# sourceMappingURL=clash.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clash.js","sourceRoot":"","sources":["../../src/review/clash.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import type { SavedValidationReport } from './portable-saved-validation.js';
2
+ import type { SavedValidationElement } from './portable-validation-evidence.js';
3
+ import type { FindingLifecycle, FindingSourceResult, ReviewMessage, RunGap } from './types.js';
4
+ /** One projection of the actual saved failure rows. Re-examination and human
5
+ * decisions remain with the native caller; importing alone supplies neither.
6
+ */
7
+ export declare function savedValidationFacts<Message extends ReviewMessage = ReviewMessage>(saved: SavedValidationReport, options?: {
8
+ incomplete?: RunGap<Message>[];
9
+ outcome?: (row: SavedValidationElement) => {
10
+ lifecycle: FindingLifecycle;
11
+ notes?: Message[];
12
+ } | undefined;
13
+ }): FindingSourceResult<Message>;
14
+ //# sourceMappingURL=saved-validation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"saved-validation.d.ts","sourceRoot":"","sources":["../../src/review/saved-validation.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,gCAAgC,CAAC;AAC5E,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,mCAAmC,CAAC;AAChF,OAAO,KAAK,EAAE,gBAAgB,EAAc,mBAAmB,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAG3G;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,SAAS,aAAa,GAAG,aAAa,EAAE,KAAK,EAAE,qBAAqB,EAC9G,OAAO,GAAE;IAAE,UAAU,CAAC,EAAE,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;IACxC,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,sBAAsB,KAAK;QAAE,SAAS,EAAE,gBAAgB,CAAC;QAAC,KAAK,CAAC,EAAE,OAAO,EAAE,CAAA;KAAE,GAAG,SAAS,CAAA;CAAO,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAyBlJ"}
@@ -0,0 +1,31 @@
1
+ import { typeDisciplines } from './disciplines.js';
2
+ /** One projection of the actual saved failure rows. Re-examination and human
3
+ * decisions remain with the native caller; importing alone supplies neither.
4
+ */
5
+ export function savedValidationFacts(saved, options = {}) {
6
+ const snapshot = saved.snapshot;
7
+ if (snapshot.kind !== 'ids-report')
8
+ return { runs: [], findings: [] };
9
+ const captured = snapshot.elementEvidence;
10
+ const run = { id: JSON.stringify(['saved-validation', saved.id]), source: 'validation', temporal: 'historical',
11
+ label: snapshot.sourceName, capturedAt: snapshot.generatedAt, complete: false,
12
+ models: snapshot.reportModels?.map(model => model.name) ?? [],
13
+ incomplete: [...(options.incomplete ?? [{ code: 'partial-source', detail: 'Imported history is not independent native execution.' }]),
14
+ ...(captured?.gaps.map(detail => ({ code: 'partial-source', detail })) ?? [])] };
15
+ return { runs: [run], findings: (captured?.rows ?? []).map(row => {
16
+ const outcome = options.outcome?.(row);
17
+ const identityAvailable = !!row.GlobalId && !!row.modelName;
18
+ return { id: JSON.stringify([run.id, row.id]),
19
+ lineage: JSON.stringify(['saved-validation', snapshot.sourceName, row.specificationId, row.modelName, row.GlobalId, row.id]),
20
+ source: 'validation', run, elements: row.GlobalId ? [{ globalId: row.GlobalId, modelId: null, modelName: row.modelName,
21
+ ifcType: row.ifcType, ...(row.Name !== undefined ? { name: row.Name } : {}),
22
+ ...(!identityAvailable ? { nativeUnresolved: 'unmatched' } : {}) }] : [],
23
+ nativeStatus: row.nativeStatus, title: row.title, detail: [...row.detail,
24
+ ...(row.modelFingerprint ? [`source fingerprint ${row.modelFingerprint}`] : []),
25
+ ...(!identityAvailable ? ['Saved durable identity unavailable'] : [])],
26
+ ...(outcome?.notes ? { notes: outcome.notes } : {}),
27
+ lifecycle: outcome?.lifecycle ?? 'not-evaluated', disciplines: typeDisciplines(row.ifcType), storeys: [],
28
+ evidence: { kind: 'saved-validation', reportId: saved.id, rowId: row.id }, };
29
+ }) };
30
+ }
31
+ //# sourceMappingURL=saved-validation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"saved-validation.js","sourceRoot":"","sources":["../../src/review/saved-validation.ts"],"names":[],"mappings":"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"}
package/dist/review.d.ts CHANGED
@@ -24,4 +24,7 @@ export type { IdsReportCheckSummary, IdsReportRuleSummary, IdsReportCardinality,
24
24
  export { validateManualReportBlock } from './review/portable-manual-report.js';
25
25
  export type { ManualReportVerdict, ManualReportCounts, ManualReportItem, ManualReportBlock } from './review/portable-manual-report.js';
26
26
  export * from './review/portable-saved-validation.js';
27
+ export { clashFindings, clashGlobalId } from './review/clash.js';
28
+ export { clashDisciplineCandidates, clashOccurrenceKey } from './review/clash-identity.js';
29
+ export { savedValidationFacts } from './review/saved-validation.js';
27
30
  //# sourceMappingURL=review.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"review.d.ts","sourceRoot":"","sources":["../src/review.ts"],"names":[],"mappings":"AAIA,uFAAuF;AACvF,OAAO,EAAE,oBAAoB,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACxE,YAAY,EAAE,iBAAiB,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,EAAE,cAAc,EAAE,eAAe,EAC9F,gBAAgB,EAAE,aAAa,EAAE,mBAAmB,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAC9G,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAC/D,YAAY,EAAE,WAAW,EAAE,SAAS,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAChG,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAClE,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,KAAK,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEzE,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACnE,YAAY,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AACvF,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAG/D,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AACvE,YAAY,EAAE,gBAAgB,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AAE5J,OAAO,EAAE,uBAAuB,EAAE,wBAAwB,EAAE,+BAA+B,EAAE,MAAM,0CAA0C,CAAC;AAC9I,YAAY,EAAE,sBAAsB,EAAE,yBAAyB,EAAE,uBAAuB,EAAE,MAAM,0CAA0C,CAAC;AAE3I,OAAO,EAAE,uBAAuB,EAAE,MAAM,uCAAuC,CAAC;AAChF,YAAY,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,uCAAuC,CAAC;AAE1F,cAAc,4CAA4C,CAAC;AAC3D,cAAc,sCAAsC,CAAC;AACrD,OAAO,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AAChG,YAAY,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AAC3J,OAAO,EAAE,yBAAyB,EAAE,MAAM,oCAAoC,CAAC;AAC/E,YAAY,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AACvI,cAAc,uCAAuC,CAAC"}
1
+ {"version":3,"file":"review.d.ts","sourceRoot":"","sources":["../src/review.ts"],"names":[],"mappings":"AAIA,uFAAuF;AACvF,OAAO,EAAE,oBAAoB,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACxE,YAAY,EAAE,iBAAiB,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,EAAE,cAAc,EAAE,eAAe,EAC9F,gBAAgB,EAAE,aAAa,EAAE,mBAAmB,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAC9G,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAC/D,YAAY,EAAE,WAAW,EAAE,SAAS,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAChG,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAClE,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,KAAK,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEzE,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACnE,YAAY,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AACvF,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAG/D,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AACvE,YAAY,EAAE,gBAAgB,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AAE5J,OAAO,EAAE,uBAAuB,EAAE,wBAAwB,EAAE,+BAA+B,EAAE,MAAM,0CAA0C,CAAC;AAC9I,YAAY,EAAE,sBAAsB,EAAE,yBAAyB,EAAE,uBAAuB,EAAE,MAAM,0CAA0C,CAAC;AAE3I,OAAO,EAAE,uBAAuB,EAAE,MAAM,uCAAuC,CAAC;AAChF,YAAY,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,uCAAuC,CAAC;AAE1F,cAAc,4CAA4C,CAAC;AAC3D,cAAc,sCAAsC,CAAC;AACrD,OAAO,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AAChG,YAAY,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AAC3J,OAAO,EAAE,yBAAyB,EAAE,MAAM,oCAAoC,CAAC;AAC/E,YAAY,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AACvI,cAAc,uCAAuC,CAAC;AAEtD,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACjE,OAAO,EAAE,yBAAyB,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAC3F,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC"}
package/dist/review.js CHANGED
@@ -20,4 +20,7 @@ export * from './review/portable-report-metadata.js';
20
20
  export { reportBlockSourceKind, validateIdsReportBlock } from './review/portable-ids-report.js';
21
21
  export { validateManualReportBlock } from './review/portable-manual-report.js';
22
22
  export * from './review/portable-saved-validation.js';
23
+ export { clashFindings, clashGlobalId } from './review/clash.js';
24
+ export { clashDisciplineCandidates, clashOccurrenceKey } from './review/clash-identity.js';
25
+ export { savedValidationFacts } from './review/saved-validation.js';
23
26
  //# sourceMappingURL=review.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"review.js","sourceRoot":"","sources":["../src/review.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAE/D,uFAAuF;AACvF,OAAO,EAAE,oBAAoB,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAGxE,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAE/D,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAClE,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAuB,MAAM,sBAAsB,CAAC;AAEzE,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAEnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAE/D,0FAA0F;AAC1F,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AAGvE,OAAO,EAAE,uBAAuB,EAAE,wBAAwB,EAAE,+BAA+B,EAAE,MAAM,0CAA0C,CAAC;AAG9I,OAAO,EAAE,uBAAuB,EAAE,MAAM,uCAAuC,CAAC;AAGhF,cAAc,4CAA4C,CAAC;AAC3D,cAAc,sCAAsC,CAAC;AACrD,OAAO,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AAEhG,OAAO,EAAE,yBAAyB,EAAE,MAAM,oCAAoC,CAAC;AAE/E,cAAc,uCAAuC,CAAC"}
1
+ {"version":3,"file":"review.js","sourceRoot":"","sources":["../src/review.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAE/D,uFAAuF;AACvF,OAAO,EAAE,oBAAoB,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAGxE,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAE/D,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAClE,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAuB,MAAM,sBAAsB,CAAC;AAEzE,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAEnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAE/D,0FAA0F;AAC1F,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AAGvE,OAAO,EAAE,uBAAuB,EAAE,wBAAwB,EAAE,+BAA+B,EAAE,MAAM,0CAA0C,CAAC;AAG9I,OAAO,EAAE,uBAAuB,EAAE,MAAM,uCAAuC,CAAC;AAGhF,cAAc,4CAA4C,CAAC;AAC3D,cAAc,sCAAsC,CAAC;AACrD,OAAO,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AAEhG,OAAO,EAAE,yBAAyB,EAAE,MAAM,oCAAoC,CAAC;AAE/E,cAAc,uCAAuC,CAAC;AAEtD,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACjE,OAAO,EAAE,yBAAyB,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAC3F,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ifc-lite/sdk",
3
- "version": "9.3.0",
3
+ "version": "9.4.0",
4
4
  "description": "Scripting SDK for ifc-lite — the bim.* API for BIM automation",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -22,17 +22,17 @@
22
22
  "@ifc-lite/clash": "^2.4.4",
23
23
  "@ifc-lite/create": "^5.1.0",
24
24
  "@ifc-lite/drawing-2d": "^4.2.0",
25
- "@ifc-lite/data": "^6.2.0",
26
25
  "@ifc-lite/encoding": "^2.3.0",
26
+ "@ifc-lite/data": "^6.2.0",
27
27
  "@ifc-lite/ids": "^3.3.3",
28
+ "@ifc-lite/export": "^4.11.0",
28
29
  "@ifc-lite/lens": "^2.2.0",
29
30
  "@ifc-lite/ids-authoring": "^0.2.3",
30
- "@ifc-lite/export": "^4.11.0",
31
31
  "@ifc-lite/lists": "^3.1.3",
32
- "@ifc-lite/parser": "^9.5.0",
33
32
  "@ifc-lite/mutations": "^3.2.0",
34
- "@ifc-lite/spatial": "^1.15.0",
35
- "@ifc-lite/query": "^2.5.2"
33
+ "@ifc-lite/parser": "^9.5.0",
34
+ "@ifc-lite/query": "^2.5.2",
35
+ "@ifc-lite/spatial": "^1.15.0"
36
36
  },
37
37
  "devDependencies": {
38
38
  "typescript": "^6.0.3",