@ifc-lite/clash 2.1.2 → 2.2.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,66 @@
1
+ import { type Clash, type ClashElementRef, type ClashGroup, type ClashReview, type ClashReviewStatus, type ClashSeverity, type ClashStatus } from '../types.js';
2
+ export interface ClashTableRow {
3
+ /** `Clash.id` — durable within a run (two keys + rule). */
4
+ ClashId: string;
5
+ Rule: string;
6
+ /** Detection classification: `hard` / `clearance` / `touch`. */
7
+ Status: ClashStatus;
8
+ Severity: ClashSeverity;
9
+ /** Coordinator triage (`open` / `resolved` / `accepted`); `open` when never reviewed. */
10
+ Review: ClashReviewStatus;
11
+ ReviewComment: string;
12
+ /** ISO-8601 instant of the last review edit; empty when never reviewed. */
13
+ ReviewUpdatedAt: string;
14
+ /** Bare IfcGUID of element A, or empty when the element has none (synthetic key). */
15
+ GlobalIdA: string;
16
+ GlobalIdB: string;
17
+ /** The adapter's durable key — IfcGUID, `IfcGUID:occurrence`, `expressid:…` or a USD prim path. */
18
+ KeyA: string;
19
+ KeyB: string;
20
+ ModelA: string;
21
+ ModelB: string;
22
+ TypeA: string;
23
+ TypeB: string;
24
+ NameA: string;
25
+ NameB: string;
26
+ StoreyA: string;
27
+ StoreyB: string;
28
+ /** Contact point (hard) or closest-point midpoint, in the run's world frame. */
29
+ PointX: number;
30
+ PointY: number;
31
+ PointZ: number;
32
+ /** Signed: `<0` penetration depth, `>0` gap. */
33
+ Distance: number;
34
+ /** `mesh` / `estimate`, or empty for a run recorded before the field existed. */
35
+ DistanceKind: string;
36
+ /** Title of the group this clash was clustered into, when groups were computed. */
37
+ Group: string;
38
+ }
39
+ /** Column order, which is also the CSV header order. */
40
+ export declare const CLASH_TABLE_COLUMNS: ReadonlyArray<keyof ClashTableRow>;
41
+ export interface ClashTableOptions {
42
+ /** Review state per `clashReviewKey`; a clash absent from the map is `open`. */
43
+ reviews?: ReadonlyMap<string, ClashReview>;
44
+ /** Storey name for an element, or empty/undefined when unknown. */
45
+ storeyOf?: (ref: ClashElementRef) => string | undefined;
46
+ /** Human model name for a model id; defaults to the id itself. */
47
+ modelNameOf?: (modelId: string) => string | undefined;
48
+ /** Groups the clashes were clustered into; fills the `Group` column. */
49
+ groups?: readonly ClashGroup[];
50
+ }
51
+ /**
52
+ * The bare IfcGUID behind an adapter key, or empty when the key is not one.
53
+ *
54
+ * The STEP adapter keys an element on its GlobalId, suffixed with
55
+ * `:<occurrence>` for a GPU-instanced occurrence, and falls back to
56
+ * `expressid:<model>:<n>` when the entity has no GlobalId; the IFCX adapter
57
+ * keys on a USD prim path. Only the first form is a GUID a reader can join on,
58
+ * so the others yield an empty cell rather than a string that LOOKS joinable.
59
+ * Validity is the encoder's own rule (`isValidIfcGuid`: 22 chars of the IFC
60
+ * base-64 alphabet whose first character encodes only 2 bits, so `0`–`3`) —
61
+ * a malformed file's `Z000…` GlobalId is kept as the run's key but is not
62
+ * offered as a GUID.
63
+ */
64
+ export declare function bareIfcGuid(key: string): string;
65
+ export declare function clashTableRows(clashes: readonly Clash[], options?: ClashTableOptions): ClashTableRow[];
66
+ //# sourceMappingURL=table.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"table.d.ts","sourceRoot":"","sources":["../../src/export/table.ts"],"names":[],"mappings":"AAqBA,OAAO,EAEL,KAAK,KAAK,EACV,KAAK,eAAe,EACpB,KAAK,UAAU,EACf,KAAK,WAAW,EAChB,KAAK,iBAAiB,EACtB,KAAK,aAAa,EAClB,KAAK,WAAW,EACjB,MAAM,aAAa,CAAC;AAErB,MAAM,WAAW,aAAa;IAC5B,2DAA2D;IAC3D,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,gEAAgE;IAChE,MAAM,EAAE,WAAW,CAAC;IACpB,QAAQ,EAAE,aAAa,CAAC;IACxB,yFAAyF;IACzF,MAAM,EAAE,iBAAiB,CAAC;IAC1B,aAAa,EAAE,MAAM,CAAC;IACtB,2EAA2E;IAC3E,eAAe,EAAE,MAAM,CAAC;IACxB,qFAAqF;IACrF,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,mGAAmG;IACnG,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,gFAAgF;IAChF,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,gDAAgD;IAChD,QAAQ,EAAE,MAAM,CAAC;IACjB,iFAAiF;IACjF,YAAY,EAAE,MAAM,CAAC;IACrB,mFAAmF;IACnF,KAAK,EAAE,MAAM,CAAC;CACf;AAED,wDAAwD;AACxD,eAAO,MAAM,mBAAmB,EAAE,aAAa,CAAC,MAAM,aAAa,CAKlE,CAAC;AAEF,MAAM,WAAW,iBAAiB;IAChC,gFAAgF;IAChF,OAAO,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IAC3C,mEAAmE;IACnE,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,eAAe,KAAK,MAAM,GAAG,SAAS,CAAC;IACxD,kEAAkE;IAClE,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC;IACtD,wEAAwE;IACxE,MAAM,CAAC,EAAE,SAAS,UAAU,EAAE,CAAC;CAChC;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAI/C;AAED,wBAAgB,cAAc,CAC5B,OAAO,EAAE,SAAS,KAAK,EAAE,EACzB,OAAO,GAAE,iBAAsB,GAC9B,aAAa,EAAE,CAuCjB"}
@@ -0,0 +1,87 @@
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
+ * A clash run as a flat table — one row per clash, both elements' identities
6
+ * on the row — for CSV / spreadsheet / BI consumption (#3944).
7
+ *
8
+ * This is the shape a coordinator loads into Power BI or Excel: every column is
9
+ * a scalar, the two IfcGUIDs are bare so they JOIN back to the model's own
10
+ * element tables, and the coordinator's review state is on the same row as the
11
+ * detection so the export is the report, not half of one.
12
+ *
13
+ * Headless and pure: the viewer and the CLI both build rows here and only
14
+ * differ in how they resolve a model NAME and a STOREY for an element (the
15
+ * result carries a model id and no storey — `ClashElementRef` drops the
16
+ * storey the adapter saw, and a synthetic model id is not a name a reader
17
+ * recognises). Serialisation is `tableToCsv` from `@ifc-lite/export`.
18
+ */
19
+ import { isValidIfcGuid } from '@ifc-lite/encoding';
20
+ import { clashReviewKey } from '../review.js';
21
+ import { DEFAULT_CLASH_REVIEW_STATUS, } from '../types.js';
22
+ /** Column order, which is also the CSV header order. */
23
+ export const CLASH_TABLE_COLUMNS = [
24
+ 'ClashId', 'Rule', 'Status', 'Severity', 'Review', 'ReviewComment', 'ReviewUpdatedAt',
25
+ 'GlobalIdA', 'GlobalIdB', 'KeyA', 'KeyB', 'ModelA', 'ModelB',
26
+ 'TypeA', 'TypeB', 'NameA', 'NameB', 'StoreyA', 'StoreyB',
27
+ 'PointX', 'PointY', 'PointZ', 'Distance', 'DistanceKind', 'Group',
28
+ ];
29
+ /**
30
+ * The bare IfcGUID behind an adapter key, or empty when the key is not one.
31
+ *
32
+ * The STEP adapter keys an element on its GlobalId, suffixed with
33
+ * `:<occurrence>` for a GPU-instanced occurrence, and falls back to
34
+ * `expressid:<model>:<n>` when the entity has no GlobalId; the IFCX adapter
35
+ * keys on a USD prim path. Only the first form is a GUID a reader can join on,
36
+ * so the others yield an empty cell rather than a string that LOOKS joinable.
37
+ * Validity is the encoder's own rule (`isValidIfcGuid`: 22 chars of the IFC
38
+ * base-64 alphabet whose first character encodes only 2 bits, so `0`–`3`) —
39
+ * a malformed file's `Z000…` GlobalId is kept as the run's key but is not
40
+ * offered as a GUID.
41
+ */
42
+ export function bareIfcGuid(key) {
43
+ const colon = key.indexOf(':');
44
+ const candidate = colon === -1 ? key : key.slice(0, colon);
45
+ return isValidIfcGuid(candidate) ? candidate : '';
46
+ }
47
+ export function clashTableRows(clashes, options = {}) {
48
+ const { reviews, storeyOf, modelNameOf, groups } = options;
49
+ const groupOf = new Map();
50
+ for (const group of groups ?? []) {
51
+ for (const member of group.members)
52
+ groupOf.set(member.id, group.title);
53
+ }
54
+ const modelName = (id) => modelNameOf?.(id) ?? id;
55
+ const storey = (ref) => storeyOf?.(ref) ?? '';
56
+ return clashes.map((clash) => {
57
+ const review = reviews?.get(clashReviewKey(clash));
58
+ return {
59
+ ClashId: clash.id,
60
+ Rule: clash.rule,
61
+ Status: clash.status,
62
+ Severity: clash.severity,
63
+ Review: review?.status ?? DEFAULT_CLASH_REVIEW_STATUS,
64
+ ReviewComment: review?.comment ?? '',
65
+ ReviewUpdatedAt: review?.updatedAt != null ? new Date(review.updatedAt).toISOString() : '',
66
+ GlobalIdA: bareIfcGuid(clash.a.key),
67
+ GlobalIdB: bareIfcGuid(clash.b.key),
68
+ KeyA: clash.a.key,
69
+ KeyB: clash.b.key,
70
+ ModelA: modelName(clash.a.model),
71
+ ModelB: modelName(clash.b.model),
72
+ TypeA: clash.a.tag,
73
+ TypeB: clash.b.tag,
74
+ NameA: clash.a.name ?? '',
75
+ NameB: clash.b.name ?? '',
76
+ StoreyA: storey(clash.a),
77
+ StoreyB: storey(clash.b),
78
+ PointX: clash.point[0],
79
+ PointY: clash.point[1],
80
+ PointZ: clash.point[2],
81
+ Distance: clash.distance,
82
+ DistanceKind: clash.distanceKind ?? '',
83
+ Group: groupOf.get(clash.id) ?? '',
84
+ };
85
+ });
86
+ }
87
+ //# sourceMappingURL=table.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"table.js","sourceRoot":"","sources":["../../src/export/table.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -8,6 +8,7 @@
8
8
  * rather than a rewrite.
9
9
  */
10
10
  export * from './types.js';
11
+ export { clashTableRows, bareIfcGuid, CLASH_TABLE_COLUMNS, type ClashTableRow, type ClashTableOptions } from './export/table.js';
11
12
  export { matchesSelector } from './selectors.js';
12
13
  export { clashMemberKey, clashMemberSet, inClashSet } from './members.js';
13
14
  export { DISCIPLINES, CLASH_RULE_PRESETS, inferClashSeverity, disciplineMatrixRules, rulesFromPresets, type Discipline, type DisciplineInfo, type ClashRulePreset, } from './disciplines.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA;;;;;;;;GAQG;AAEH,cAAc,YAAY,CAAC;AAC3B,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1E,OAAO,EACL,WAAW,EACX,kBAAkB,EAClB,kBAAkB,EAClB,qBAAqB,EACrB,gBAAgB,EAChB,KAAK,UAAU,EACf,KAAK,cAAc,EACnB,KAAK,eAAe,GACrB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,iBAAiB,EAAE,KAAK,WAAW,EAAE,KAAK,YAAY,EAAE,KAAK,wBAAwB,EAAE,MAAM,aAAa,CAAC;AACpH,OAAO,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AACtE,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACnF,OAAO,EACL,uBAAuB,EACvB,sBAAsB,EACtB,mBAAmB,EACnB,KAAK,iBAAiB,GACvB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,YAAY,EAAE,4BAA4B,EAAE,KAAK,YAAY,EAAE,MAAM,eAAe,CAAC;AAC9F,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EACL,cAAc,EACd,qBAAqB,EACrB,4BAA4B,GAC7B,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,gBAAgB,EAAE,KAAK,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAC1E,OAAO,EACL,qBAAqB,EACrB,KAAK,iBAAiB,EACtB,KAAK,uBAAuB,EAC5B,KAAK,oBAAoB,GAC1B,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,aAAa,EACb,gBAAgB,EAChB,gBAAgB,EAChB,UAAU,EACV,WAAW,EACX,gBAAgB,EAChB,cAAc,EACd,oBAAoB,EACpB,sBAAsB,EACtB,KAAK,WAAW,EAChB,KAAK,mBAAmB,GACzB,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,cAAc,EACd,eAAe,EACf,KAAK,gBAAgB,GACtB,MAAM,iBAAiB,CAAC;AACzB;;;;;;;GAOG;AACH,OAAO,EACL,YAAY,EACZ,KAAK,QAAQ,GACd,MAAM,uBAAuB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA;;;;;;;;GAQG;AAEH,cAAc,YAAY,CAAC;AAC3B,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,mBAAmB,EAAE,KAAK,aAAa,EAAE,KAAK,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACjI,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1E,OAAO,EACL,WAAW,EACX,kBAAkB,EAClB,kBAAkB,EAClB,qBAAqB,EACrB,gBAAgB,EAChB,KAAK,UAAU,EACf,KAAK,cAAc,EACnB,KAAK,eAAe,GACrB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,iBAAiB,EAAE,KAAK,WAAW,EAAE,KAAK,YAAY,EAAE,KAAK,wBAAwB,EAAE,MAAM,aAAa,CAAC;AACpH,OAAO,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AACtE,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACnF,OAAO,EACL,uBAAuB,EACvB,sBAAsB,EACtB,mBAAmB,EACnB,KAAK,iBAAiB,GACvB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,YAAY,EAAE,4BAA4B,EAAE,KAAK,YAAY,EAAE,MAAM,eAAe,CAAC;AAC9F,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EACL,cAAc,EACd,qBAAqB,EACrB,4BAA4B,GAC7B,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,gBAAgB,EAAE,KAAK,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAC1E,OAAO,EACL,qBAAqB,EACrB,KAAK,iBAAiB,EACtB,KAAK,uBAAuB,EAC5B,KAAK,oBAAoB,GAC1B,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,aAAa,EACb,gBAAgB,EAChB,gBAAgB,EAChB,UAAU,EACV,WAAW,EACX,gBAAgB,EAChB,cAAc,EACd,oBAAoB,EACpB,sBAAsB,EACtB,KAAK,WAAW,EAChB,KAAK,mBAAmB,GACzB,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,cAAc,EACd,eAAe,EACf,KAAK,gBAAgB,GACtB,MAAM,iBAAiB,CAAC;AACzB;;;;;;;GAOG;AACH,OAAO,EACL,YAAY,EACZ,KAAK,QAAQ,GACd,MAAM,uBAAuB,CAAC"}
package/dist/index.js CHANGED
@@ -11,6 +11,7 @@
11
11
  * rather than a rewrite.
12
12
  */
13
13
  export * from './types.js';
14
+ export { clashTableRows, bareIfcGuid, CLASH_TABLE_COLUMNS } from './export/table.js';
14
15
  export { matchesSelector } from './selectors.js';
15
16
  export { clashMemberKey, clashMemberSet, inClashSet } from './members.js';
16
17
  export { DISCIPLINES, CLASH_RULE_PRESETS, inferClashSeverity, disciplineMatrixRules, rulesFromPresets, } from './disciplines.js';
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAE/D;;;;;;;;GAQG;AAEH,cAAc,YAAY,CAAC;AAC3B,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1E,OAAO,EACL,WAAW,EACX,kBAAkB,EAClB,kBAAkB,EAClB,qBAAqB,EACrB,gBAAgB,GAIjB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,iBAAiB,EAAsE,MAAM,aAAa,CAAC;AACpH,OAAO,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AACtE,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACnF,OAAO,EACL,uBAAuB,EACvB,sBAAsB,EACtB,mBAAmB,GAEpB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,YAAY,EAAE,4BAA4B,EAAqB,MAAM,eAAe,CAAC;AAC9F,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EACL,cAAc,EACd,qBAAqB,EACrB,4BAA4B,GAC7B,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,gBAAgB,EAA0B,MAAM,gBAAgB,CAAC;AAC1E,OAAO,EACL,qBAAqB,GAItB,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,aAAa,EACb,gBAAgB,EAChB,gBAAgB,EAChB,UAAU,EACV,WAAW,EACX,gBAAgB,EAChB,cAAc,EACd,oBAAoB,EACpB,sBAAsB,GAGvB,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,cAAc,EACd,eAAe,GAEhB,MAAM,iBAAiB,CAAC;AACzB;;;;;;;GAOG;AACH,OAAO,EACL,YAAY,GAEb,MAAM,uBAAuB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAE/D;;;;;;;;GAQG;AAEH,cAAc,YAAY,CAAC;AAC3B,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,mBAAmB,EAA8C,MAAM,mBAAmB,CAAC;AACjI,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1E,OAAO,EACL,WAAW,EACX,kBAAkB,EAClB,kBAAkB,EAClB,qBAAqB,EACrB,gBAAgB,GAIjB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,iBAAiB,EAAsE,MAAM,aAAa,CAAC;AACpH,OAAO,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AACtE,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACnF,OAAO,EACL,uBAAuB,EACvB,sBAAsB,EACtB,mBAAmB,GAEpB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,YAAY,EAAE,4BAA4B,EAAqB,MAAM,eAAe,CAAC;AAC9F,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EACL,cAAc,EACd,qBAAqB,EACrB,4BAA4B,GAC7B,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,gBAAgB,EAA0B,MAAM,gBAAgB,CAAC;AAC1E,OAAO,EACL,qBAAqB,GAItB,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,aAAa,EACb,gBAAgB,EAChB,gBAAgB,EAChB,UAAU,EACV,WAAW,EACX,gBAAgB,EAChB,cAAc,EACd,oBAAoB,EACpB,sBAAsB,GAGvB,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,cAAc,EACd,eAAe,GAEhB,MAAM,iBAAiB,CAAC;AACzB;;;;;;;GAOG;AACH,OAAO,EACL,YAAY,GAEb,MAAM,uBAAuB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ifc-lite/clash",
3
- "version": "2.1.2",
3
+ "version": "2.2.0",
4
4
  "description": "Clash detection for IFC-Lite — representation-agnostic core engine + source adapters",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -35,17 +35,18 @@
35
35
  "dependencies": {
36
36
  "@ifc-lite/bcf": "^4.0.0",
37
37
  "@ifc-lite/encoding": "^2.2.0",
38
- "@ifc-lite/parser": "^6.1.0",
39
- "@ifc-lite/geometry": "^5.0.0",
40
- "@ifc-lite/ifcx": "^4.1.0",
41
- "@ifc-lite/query": "^2.3.1",
42
- "@ifc-lite/spatial": "^1.14.17",
43
- "@ifc-lite/wasm": "^7.0.0"
38
+ "@ifc-lite/geometry": "^6.0.0",
39
+ "@ifc-lite/parser": "^6.2.1",
40
+ "@ifc-lite/ifcx": "^4.1.1",
41
+ "@ifc-lite/query": "^2.3.2",
42
+ "@ifc-lite/spatial": "^1.14.18",
43
+ "@ifc-lite/wasm": "^8.0.1"
44
44
  },
45
45
  "devDependencies": {
46
46
  "typescript": "^6.0.3",
47
47
  "vitest": "^4.1.11",
48
- "@ifc-lite/world-frame-fixtures": "^0.1.2"
48
+ "@ifc-lite/export": "^4.3.1",
49
+ "@ifc-lite/world-frame-fixtures": "^0.1.3"
49
50
  },
50
51
  "license": "MPL-2.0",
51
52
  "author": "Louis True",