@ifc-lite/cli 0.28.1 → 0.30.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/dist/commands/analyze.d.ts.map +1 -1
- package/dist/commands/analyze.js +9 -2
- package/dist/commands/analyze.js.map +1 -1
- package/dist/commands/clash-csv.d.ts +4 -0
- package/dist/commands/clash-csv.d.ts.map +1 -0
- package/dist/commands/clash-csv.js +26 -0
- package/dist/commands/clash-csv.js.map +1 -0
- package/dist/commands/clash.d.ts.map +1 -1
- package/dist/commands/clash.js +18 -3
- package/dist/commands/clash.js.map +1 -1
- package/dist/commands/diff-test-helpers.d.ts +7 -4
- package/dist/commands/diff-test-helpers.d.ts.map +1 -1
- package/dist/commands/diff-test-helpers.js +7 -4
- package/dist/commands/diff-test-helpers.js.map +1 -1
- package/dist/commands/export-rust-formats.d.ts.map +1 -1
- package/dist/commands/export-rust-formats.js +27 -3
- package/dist/commands/export-rust-formats.js.map +1 -1
- package/dist/commands/export.d.ts +9 -0
- package/dist/commands/export.d.ts.map +1 -1
- package/dist/commands/export.js +5 -3
- package/dist/commands/export.js.map +1 -1
- package/dist/commands/extract-entities.d.ts +17 -5
- package/dist/commands/extract-entities.d.ts.map +1 -1
- package/dist/commands/extract-entities.js +68 -126
- package/dist/commands/extract-entities.js.map +1 -1
- package/dist/commands/info.d.ts.map +1 -1
- package/dist/commands/info.js +56 -0
- package/dist/commands/info.js.map +1 -1
- package/dist/commands/mutate-step-record.d.ts +33 -0
- package/dist/commands/mutate-step-record.d.ts.map +1 -0
- package/dist/commands/mutate-step-record.js +267 -0
- package/dist/commands/mutate-step-record.js.map +1 -0
- package/dist/commands/mutate.d.ts +2 -25
- package/dist/commands/mutate.d.ts.map +1 -1
- package/dist/commands/mutate.js +4 -97
- package/dist/commands/mutate.js.map +1 -1
- package/dist/commands/query-output.d.ts.map +1 -1
- package/dist/commands/query-output.js +33 -6
- package/dist/commands/query-output.js.map +1 -1
- package/dist/commands/spatial-ancestors.d.ts +26 -0
- package/dist/commands/spatial-ancestors.d.ts.map +1 -0
- package/dist/commands/spatial-ancestors.js +102 -0
- package/dist/commands/spatial-ancestors.js.map +1 -0
- package/dist/commands/step-args.d.ts +33 -7
- package/dist/commands/step-args.d.ts.map +1 -1
- package/dist/commands/step-args.js +71 -26
- package/dist/commands/step-args.js.map +1 -1
- package/dist/commands/storey-selection.d.ts +6 -0
- package/dist/commands/storey-selection.d.ts.map +1 -0
- package/dist/commands/storey-selection.js +90 -0
- package/dist/commands/storey-selection.js.map +1 -0
- package/dist/commands/subset-relations.d.ts +88 -11
- package/dist/commands/subset-relations.d.ts.map +1 -1
- package/dist/commands/subset-relations.js +66 -62
- package/dist/commands/subset-relations.js.map +1 -1
- package/dist/commands/where-filter.d.ts +1 -0
- package/dist/commands/where-filter.d.ts.map +1 -1
- package/dist/commands/where-filter.js +7 -3
- package/dist/commands/where-filter.js.map +1 -1
- package/package.json +18 -18
|
@@ -37,8 +37,8 @@
|
|
|
37
37
|
* and dropping there was the orphaned-storey symptom again (#4126). This
|
|
38
38
|
* function still takes no `parsed`, so it cannot close over such a
|
|
39
39
|
* reference; it REPORTS it in {@link SpatialRelationPlan.blockedOn} and the
|
|
40
|
-
* caller, which does have `parsed`,
|
|
41
|
-
* `blockedOn` is a finding, not a mutation.
|
|
40
|
+
* caller, which does have `parsed`, decides whether to keep it and replan.
|
|
41
|
+
* Purity is intact: `blockedOn` is a finding, not a mutation.
|
|
42
42
|
*
|
|
43
43
|
* A KNOWN gap: {@link keepWhole}, the fallback for a record this module could
|
|
44
44
|
* not read as its six attributes, still drops on the same private
|
|
@@ -69,8 +69,8 @@
|
|
|
69
69
|
* picks which lines it sees. Widening the type set is the separate decision,
|
|
70
70
|
* and that is the one that changes which relations survive an extraction.
|
|
71
71
|
* Consolidation follow-up: #4125.
|
|
72
|
-
* - `splitTopLevelStepArguments` (`step-argument-parser.ts`)
|
|
73
|
-
* {@link splitTopLevelArgs}.
|
|
72
|
+
* - `splitTopLevelStepArguments` (`step-argument-parser.ts`) and
|
|
73
|
+
* `skipStepComment` (`step-comment-skip.ts`): see {@link splitTopLevelArgs}.
|
|
74
74
|
* - `STRUCTURE_RELATIONS` (`merged-empty-containers.ts`): three lines, see
|
|
75
75
|
* below.
|
|
76
76
|
*/
|
|
@@ -104,15 +104,48 @@ export interface SpatialRelationPlan {
|
|
|
104
104
|
/** Relation id → rewritten record text, for the ones that lost a member. */
|
|
105
105
|
rewritten: Map<number, string>;
|
|
106
106
|
/**
|
|
107
|
-
*
|
|
108
|
-
*
|
|
109
|
-
*
|
|
110
|
-
*
|
|
111
|
-
*
|
|
112
|
-
* other drop is final and reports nothing here.
|
|
107
|
+
* One entry per relation this plan dropped for ONE reason alone: unkept non-SET references,
|
|
108
|
+
* in practice a relation-private `OwnerHistory`. Its relating parent is kept and its member
|
|
109
|
+
* intersection is non-empty, so keeping EVERY id in the entry is all that stands between it
|
|
110
|
+
* and surviving. Grouped per relation, because keeping only SOME of one relation's blockers
|
|
111
|
+
* leaves it dropped and those ids orphaned (#4150). A caller with the parsed model closes
|
|
112
|
+
* over a group and replans (#4126). Every other drop is final and reports nothing here.
|
|
113
113
|
*/
|
|
114
|
-
blockedOn: number[];
|
|
114
|
+
blockedOn: number[][];
|
|
115
115
|
}
|
|
116
|
+
/**
|
|
117
|
+
* Spatial-structure relations, as `[relatingAttributeIndex, relatedAttributeIndex]`.
|
|
118
|
+
* `IfcRelAggregates` names the whole (`RelatingObject`) first; the two containment
|
|
119
|
+
* relations name the parts (`RelatedElements`) first. Same table as `STRUCTURE_RELATIONS`
|
|
120
|
+
* in `@ifc-lite/export`'s `merged-empty-containers.ts`, which reads the same three
|
|
121
|
+
* records, copied rather than imported because that module is internal to
|
|
122
|
+
* `@ifc-lite/export` and exporting it would widen a published API surface for a
|
|
123
|
+
* three-line constant.
|
|
124
|
+
*
|
|
125
|
+
* `IfcRelReferencedInSpatialStructure` is here for the same reason the other two are:
|
|
126
|
+
* same shape (one relating parent, one related SET), same one-per-storey authoring,
|
|
127
|
+
* same claim in the command's own docs that the output "parses and renders on its
|
|
128
|
+
* own". It used to be missing entirely, so a referenced-but-not-contained product was
|
|
129
|
+
* always orphaned.
|
|
130
|
+
*/
|
|
131
|
+
export declare const STRUCTURE_RELATIONS: Record<string, [number, number]>;
|
|
132
|
+
/**
|
|
133
|
+
* All three are `GlobalId, OwnerHistory, Name, Description` plus the relating/related
|
|
134
|
+
* pair: exactly 6 attributes in every schema that defines them. A record that does not
|
|
135
|
+
* split into 6 was mis-scanned (or is not the entity the type name claims), so it falls
|
|
136
|
+
* back to keep-whole-or-drop-whole rather than having a slot index written into
|
|
137
|
+
* whatever it did split into.
|
|
138
|
+
*
|
|
139
|
+
* A relation type with a different attribute COUNT (`IfcRelAssignsToGroup` has 7)
|
|
140
|
+
* therefore cannot simply be added as a row above: it would fail this check on every
|
|
141
|
+
* record and fall silently back to keep-whole-or-drop-whole, which is the bug this
|
|
142
|
+
* module exists to fix. Such a type needs the count moved into the table value first,
|
|
143
|
+
* or the whole table derived from the schema registry, which returns 7 for that entity
|
|
144
|
+
* and would make row four safe rather than forbidden. Filed as #4123.
|
|
145
|
+
*/
|
|
146
|
+
export declare const STRUCTURE_RELATION_ATTRS = 6;
|
|
147
|
+
/** A single `#id` and nothing else: an object reference in one slot. */
|
|
148
|
+
export declare const SINGLE_REF_RE: RegExp;
|
|
116
149
|
/**
|
|
117
150
|
* Decide every spatial-structure relation against a kept-id set.
|
|
118
151
|
*
|
|
@@ -121,4 +154,48 @@ export interface SpatialRelationPlan {
|
|
|
121
154
|
* spatial containers and an OwnerHistory, never another relation.
|
|
122
155
|
*/
|
|
123
156
|
export declare function planSpatialRelations(instances: Iterable<StepRecord>, keep: ReadonlySet<number>): SpatialRelationPlan;
|
|
157
|
+
/**
|
|
158
|
+
* The `#id` object references in one argument, ignoring any that sit inside a
|
|
159
|
+
* STEP string literal.
|
|
160
|
+
*
|
|
161
|
+
* A relation's `Name` and `Description` are free TEXT, and free text contains
|
|
162
|
+
* `#`; `parseStep` tokenizes rather than regexes precisely because Revit
|
|
163
|
+
* writes names like that. Read raw, the `#99` in `'Level #99 contents'` looks
|
|
164
|
+
* like a reference to entity 99, and one unkept lookalike drops the WHOLE
|
|
165
|
+
* relation: the orphaned-storey bug this module exists to fix, re-created for
|
|
166
|
+
* any model that names a relation that way.
|
|
167
|
+
*
|
|
168
|
+
* Correct only on an argument whose split VALIDATED, so the quote boundaries
|
|
169
|
+
* are the record's own. {@link keepWhole} deliberately does NOT use this. It
|
|
170
|
+
* runs when the split FAILED, and also when it succeeded but the record is not
|
|
171
|
+
* the six-attribute shape this module rewrites, so its boundaries are not
|
|
172
|
+
* established in general. There, over-counting references (drop the record) is
|
|
173
|
+
* the safe error, while under-counting (emit a dangling `#id`) is not.
|
|
174
|
+
*
|
|
175
|
+
* Exported for `extract-entities.ts`'s `forwardClosure`, which has the same
|
|
176
|
+
* hazard scanning a whole record body for its reference closure: nothing here
|
|
177
|
+
* assumes `arg` is one split ARGUMENT rather than a whole body, since a comma
|
|
178
|
+
* or `)` outside a string does not affect the in-string/out-of-string state
|
|
179
|
+
* this walks.
|
|
180
|
+
*/
|
|
181
|
+
export declare function refsOutsideStrings(arg: string): number[];
|
|
182
|
+
/**
|
|
183
|
+
* Split a STEP argument list on top-level commas, respecting nested parens,
|
|
184
|
+
* quoted strings, doubled-quote escapes, and `/* ... *\/` comments (#4227).
|
|
185
|
+
* Returns null on an unterminated string, an unbalanced paren depth, or a
|
|
186
|
+
* depth that ever goes negative -- {@link relationLine} writes a slot by
|
|
187
|
+
* index (#2470), so a mis-scanned list must not hand back parts that look
|
|
188
|
+
* like success. A comma/paren/quote inside a comment is skipped with it (see
|
|
189
|
+
* {@link skipStepComment}): unskipped, its comma shifts every later slot
|
|
190
|
+
* boundary and `relationLine` either mis-splices a member or falls back to
|
|
191
|
+
* {@link keepWhole}, dropping a relation that should have survived -- the
|
|
192
|
+
* orphaned-storey symptom (#4126) this module exists to fix, by a different
|
|
193
|
+
* route. An EMPTY INTERIOR slot (`a,,b`) is one part, not rejected.
|
|
194
|
+
*
|
|
195
|
+
* Near-twin of `@ifc-lite/export`'s `splitTopLevelStepArguments` (see the
|
|
196
|
+
* module header). Two differences: each part is `trim`med (because
|
|
197
|
+
* {@link SINGLE_REF_RE} is anchored), and a TRAILING empty slot (`a,b,`)
|
|
198
|
+
* yields 2 parts, not 3.
|
|
199
|
+
*/
|
|
200
|
+
export declare function splitTopLevelArgs(text: string): string[] | null;
|
|
124
201
|
//# sourceMappingURL=subset-relations.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"subset-relations.d.ts","sourceRoot":"","sources":["../../src/commands/subset-relations.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2EG;AAEH;;;;;GAKG;AACH,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,uDAAuD;IACvD,IAAI,EAAE,MAAM,CAAC;IACb,2CAA2C;IAC3C,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;;;GAIG;AACH,MAAM,WAAW,MAAM;IACrB,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAClB,SAAS,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACxC;AAED,iFAAiF;AACjF,MAAM,WAAW,mBAAmB;IAClC,yCAAyC;IACzC,GAAG,EAAE,MAAM,EAAE,CAAC;IACd,4EAA4E;IAC5E,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B;;;;;;;OAOG;IACH,SAAS,EAAE,MAAM,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"subset-relations.d.ts","sourceRoot":"","sources":["../../src/commands/subset-relations.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2EG;AAEH;;;;;GAKG;AACH,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,uDAAuD;IACvD,IAAI,EAAE,MAAM,CAAC;IACb,2CAA2C;IAC3C,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;;;GAIG;AACH,MAAM,WAAW,MAAM;IACrB,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAClB,SAAS,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACxC;AAED,iFAAiF;AACjF,MAAM,WAAW,mBAAmB;IAClC,yCAAyC;IACzC,GAAG,EAAE,MAAM,EAAE,CAAC;IACd,4EAA4E;IAC5E,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B;;;;;;;OAOG;IACH,SAAS,EAAE,MAAM,EAAE,EAAE,CAAC;CACvB;AAED;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAIhE,CAAC;AAEF;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,wBAAwB,IAAI,CAAC;AAE1C,wEAAwE;AACxE,eAAO,MAAM,aAAa,QAAa,CAAC;AAExC;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAClC,SAAS,EAAE,QAAQ,CAAC,UAAU,CAAC,EAC/B,IAAI,EAAE,WAAW,CAAC,MAAM,CAAC,GACxB,mBAAmB,CAarB;AA8DD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,CAsBxD;AAgDD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI,CAuC/D"}
|
|
@@ -2,44 +2,42 @@
|
|
|
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
|
/**
|
|
5
|
-
* Spatial-structure relations, as `[relatingAttributeIndex,
|
|
6
|
-
*
|
|
7
|
-
* (`
|
|
8
|
-
*
|
|
9
|
-
* `@ifc-lite/export`'s `merged-empty-containers.ts`, which reads the same three
|
|
5
|
+
* Spatial-structure relations, as `[relatingAttributeIndex, relatedAttributeIndex]`.
|
|
6
|
+
* `IfcRelAggregates` names the whole (`RelatingObject`) first; the two containment
|
|
7
|
+
* relations name the parts (`RelatedElements`) first. Same table as `STRUCTURE_RELATIONS`
|
|
8
|
+
* in `@ifc-lite/export`'s `merged-empty-containers.ts`, which reads the same three
|
|
10
9
|
* records, copied rather than imported because that module is internal to
|
|
11
10
|
* `@ifc-lite/export` and exporting it would widen a published API surface for a
|
|
12
11
|
* three-line constant.
|
|
13
12
|
*
|
|
14
|
-
* `IfcRelReferencedInSpatialStructure` is here for the same reason the other
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
*
|
|
13
|
+
* `IfcRelReferencedInSpatialStructure` is here for the same reason the other two are:
|
|
14
|
+
* same shape (one relating parent, one related SET), same one-per-storey authoring,
|
|
15
|
+
* same claim in the command's own docs that the output "parses and renders on its
|
|
16
|
+
* own". It used to be missing entirely, so a referenced-but-not-contained product was
|
|
17
|
+
* always orphaned.
|
|
19
18
|
*/
|
|
20
|
-
const STRUCTURE_RELATIONS = {
|
|
19
|
+
export const STRUCTURE_RELATIONS = {
|
|
21
20
|
IFCRELAGGREGATES: [4, 5],
|
|
22
21
|
IFCRELCONTAINEDINSPATIALSTRUCTURE: [5, 4],
|
|
23
22
|
IFCRELREFERENCEDINSPATIALSTRUCTURE: [5, 4],
|
|
24
23
|
};
|
|
25
24
|
/**
|
|
26
|
-
* All three are `GlobalId, OwnerHistory, Name, Description` plus the
|
|
27
|
-
*
|
|
28
|
-
*
|
|
29
|
-
*
|
|
30
|
-
*
|
|
25
|
+
* All three are `GlobalId, OwnerHistory, Name, Description` plus the relating/related
|
|
26
|
+
* pair: exactly 6 attributes in every schema that defines them. A record that does not
|
|
27
|
+
* split into 6 was mis-scanned (or is not the entity the type name claims), so it falls
|
|
28
|
+
* back to keep-whole-or-drop-whole rather than having a slot index written into
|
|
29
|
+
* whatever it did split into.
|
|
31
30
|
*
|
|
32
|
-
* A relation type with a different attribute COUNT (`IfcRelAssignsToGroup` has
|
|
33
|
-
*
|
|
34
|
-
*
|
|
35
|
-
*
|
|
36
|
-
*
|
|
37
|
-
*
|
|
38
|
-
* Filed as #4123.
|
|
31
|
+
* A relation type with a different attribute COUNT (`IfcRelAssignsToGroup` has 7)
|
|
32
|
+
* therefore cannot simply be added as a row above: it would fail this check on every
|
|
33
|
+
* record and fall silently back to keep-whole-or-drop-whole, which is the bug this
|
|
34
|
+
* module exists to fix. Such a type needs the count moved into the table value first,
|
|
35
|
+
* or the whole table derived from the schema registry, which returns 7 for that entity
|
|
36
|
+
* and would make row four safe rather than forbidden. Filed as #4123.
|
|
39
37
|
*/
|
|
40
|
-
const STRUCTURE_RELATION_ATTRS = 6;
|
|
38
|
+
export const STRUCTURE_RELATION_ATTRS = 6;
|
|
41
39
|
/** A single `#id` and nothing else: an object reference in one slot. */
|
|
42
|
-
const SINGLE_REF_RE = /^#(\d+)$/;
|
|
40
|
+
export const SINGLE_REF_RE = /^#(\d+)$/;
|
|
43
41
|
/**
|
|
44
42
|
* Decide every spatial-structure relation against a kept-id set.
|
|
45
43
|
*
|
|
@@ -66,9 +64,9 @@ export function planSpatialRelations(instances, keep) {
|
|
|
66
64
|
}
|
|
67
65
|
/**
|
|
68
66
|
* The record text this relation contributes to the subset, or null to drop it.
|
|
69
|
-
* Returns `inst.full` unchanged when nothing was filtered out. Appends
|
|
70
|
-
* `blocked` when the ONLY thing standing in the way is
|
|
71
|
-
*
|
|
67
|
+
* Returns `inst.full` unchanged when nothing was filtered out. Appends ONE entry
|
|
68
|
+
* to `blocked` when the ONLY thing standing in the way is unkept non-SET
|
|
69
|
+
* references; see {@link SpatialRelationPlan.blockedOn}.
|
|
72
70
|
*/
|
|
73
71
|
function relationLine(inst, [relatingIdx, relatedIdx], keep, blocked) {
|
|
74
72
|
// A null is a REJECTED scan, not an empty list: its parts are wherever the
|
|
@@ -115,7 +113,7 @@ function relationLine(inst, [relatingIdx, relatedIdx], keep, blocked) {
|
|
|
115
113
|
}
|
|
116
114
|
}
|
|
117
115
|
if (unkept.length > 0) {
|
|
118
|
-
blocked.push(
|
|
116
|
+
blocked.push(unkept);
|
|
119
117
|
return null;
|
|
120
118
|
}
|
|
121
119
|
if (kept.length === memberIds.length)
|
|
@@ -139,8 +137,14 @@ function relationLine(inst, [relatingIdx, relatedIdx], keep, blocked) {
|
|
|
139
137
|
* the six-attribute shape this module rewrites, so its boundaries are not
|
|
140
138
|
* established in general. There, over-counting references (drop the record) is
|
|
141
139
|
* the safe error, while under-counting (emit a dangling `#id`) is not.
|
|
140
|
+
*
|
|
141
|
+
* Exported for `extract-entities.ts`'s `forwardClosure`, which has the same
|
|
142
|
+
* hazard scanning a whole record body for its reference closure: nothing here
|
|
143
|
+
* assumes `arg` is one split ARGUMENT rather than a whole body, since a comma
|
|
144
|
+
* or `)` outside a string does not affect the in-string/out-of-string state
|
|
145
|
+
* this walks.
|
|
142
146
|
*/
|
|
143
|
-
function refsOutsideStrings(arg) {
|
|
147
|
+
export function refsOutsideStrings(arg) {
|
|
144
148
|
const ids = [];
|
|
145
149
|
let inString = false;
|
|
146
150
|
for (let i = 0; i < arg.length; i++) {
|
|
@@ -198,39 +202,34 @@ function spliceArgument(inst, args, index, replacement) {
|
|
|
198
202
|
return inst.full.slice(0, open + 1) + next.join(',') + inst.full.slice(open + 1 + inst.body.length);
|
|
199
203
|
}
|
|
200
204
|
/**
|
|
201
|
-
*
|
|
202
|
-
*
|
|
203
|
-
*
|
|
204
|
-
*
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
*
|
|
212
|
-
*
|
|
213
|
-
*
|
|
214
|
-
*
|
|
215
|
-
*
|
|
216
|
-
*
|
|
217
|
-
*
|
|
218
|
-
*
|
|
219
|
-
*
|
|
220
|
-
*
|
|
221
|
-
*
|
|
205
|
+
* Skip a `/* ... *\/` comment atomically: index of `/` in, index past its
|
|
206
|
+
* close marker (or end-of-text when unterminated) out. Byte-identical copy of
|
|
207
|
+
* `@ifc-lite/export`'s `skipStepComment` (not imported, see the module
|
|
208
|
+
* header): #4227's third copy of the same missing logic.
|
|
209
|
+
*/
|
|
210
|
+
function skipStepComment(text, i) {
|
|
211
|
+
const end = text.indexOf('*/', i + 2);
|
|
212
|
+
return end === -1 ? text.length : end + 2;
|
|
213
|
+
}
|
|
214
|
+
/**
|
|
215
|
+
* Split a STEP argument list on top-level commas, respecting nested parens,
|
|
216
|
+
* quoted strings, doubled-quote escapes, and `/* ... *\/` comments (#4227).
|
|
217
|
+
* Returns null on an unterminated string, an unbalanced paren depth, or a
|
|
218
|
+
* depth that ever goes negative -- {@link relationLine} writes a slot by
|
|
219
|
+
* index (#2470), so a mis-scanned list must not hand back parts that look
|
|
220
|
+
* like success. A comma/paren/quote inside a comment is skipped with it (see
|
|
221
|
+
* {@link skipStepComment}): unskipped, its comma shifts every later slot
|
|
222
|
+
* boundary and `relationLine` either mis-splices a member or falls back to
|
|
223
|
+
* {@link keepWhole}, dropping a relation that should have survived -- the
|
|
224
|
+
* orphaned-storey symptom (#4126) this module exists to fix, by a different
|
|
225
|
+
* route. An EMPTY INTERIOR slot (`a,,b`) is one part, not rejected.
|
|
222
226
|
*
|
|
223
|
-
* Near-twin
|
|
224
|
-
*
|
|
225
|
-
*
|
|
226
|
-
*
|
|
227
|
-
* - a TRAILING empty slot (`a,b,`) yields 2 parts, not 3. So a SIX-attribute
|
|
228
|
-
* record with a stray trailing comma still counts as six, is rewritten, and
|
|
229
|
-
* loses that comma in the output; a five-attribute one is rejected by the
|
|
230
|
-
* attribute-count check instead. Invalid STEP in, valid STEP out, and the
|
|
231
|
-
* slot indices are the ones the record meant either way.
|
|
227
|
+
* Near-twin of `@ifc-lite/export`'s `splitTopLevelStepArguments` (see the
|
|
228
|
+
* module header). Two differences: each part is `trim`med (because
|
|
229
|
+
* {@link SINGLE_REF_RE} is anchored), and a TRAILING empty slot (`a,b,`)
|
|
230
|
+
* yields 2 parts, not 3.
|
|
232
231
|
*/
|
|
233
|
-
function splitTopLevelArgs(text) {
|
|
232
|
+
export function splitTopLevelArgs(text) {
|
|
234
233
|
const parts = [];
|
|
235
234
|
let start = 0;
|
|
236
235
|
let depth = 0;
|
|
@@ -247,7 +246,12 @@ function splitTopLevelArgs(text) {
|
|
|
247
246
|
}
|
|
248
247
|
continue;
|
|
249
248
|
}
|
|
250
|
-
if (char ===
|
|
249
|
+
if (char === '/' && text[i + 1] === '*') {
|
|
250
|
+
// See skipStepComment's docstring: its content is skipped as one unit,
|
|
251
|
+
// not read as argument-list structure.
|
|
252
|
+
i = skipStepComment(text, i) - 1;
|
|
253
|
+
}
|
|
254
|
+
else if (char === "'") {
|
|
251
255
|
inString = true;
|
|
252
256
|
}
|
|
253
257
|
else if (char === '(') {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"subset-relations.js","sourceRoot":"","sources":["../../src/commands/subset-relations.ts"],"names":[],"mappings":"AAAA,sEAAsE;AACtE,sEAAsE;AACtE,4DAA4D;AAyH5D
|
|
1
|
+
{"version":3,"file":"subset-relations.js","sourceRoot":"","sources":["../../src/commands/subset-relations.ts"],"names":[],"mappings":"AAAA,sEAAsE;AACtE,sEAAsE;AACtE,4DAA4D;AAyH5D;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAqC;IACnE,gBAAgB,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;IACxB,iCAAiC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;IACzC,kCAAkC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;CAC3C,CAAC;AAEF;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,CAAC;AAE1C,wEAAwE;AACxE,MAAM,CAAC,MAAM,aAAa,GAAG,UAAU,CAAC;AAExC;;;;;;GAMG;AACH,MAAM,UAAU,oBAAoB,CAClC,SAA+B,EAC/B,IAAyB;IAEzB,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,MAAM,SAAS,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC5C,MAAM,SAAS,GAAe,EAAE,CAAC;IACjC,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE,CAAC;QAC7B,MAAM,KAAK,GAAG,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC7C,IAAI,KAAK,KAAK,SAAS;YAAE,SAAS;QAClC,MAAM,IAAI,GAAG,YAAY,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;QACxD,IAAI,IAAI,KAAK,IAAI;YAAE,SAAS;QAC5B,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAClB,IAAI,IAAI,KAAK,IAAI,CAAC,IAAI;YAAE,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;IACvD,CAAC;IACD,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC;AACvC,CAAC;AAED;;;;;GAKG;AACH,SAAS,YAAY,CACnB,IAAgB,EAChB,CAAC,WAAW,EAAE,UAAU,CAAmB,EAC3C,IAAyB,EACzB,OAAmB;IAEnB,2EAA2E;IAC3E,oEAAoE;IACpE,yEAAyE;IACzE,MAAM,IAAI,GAAG,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1C,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,wBAAwB;QAAE,OAAO,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAE5F,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC;IACjC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC;QAAE,OAAO,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACrF,MAAM,OAAO,GAAG,iBAAiB,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACxD,IAAI,OAAO,KAAK,IAAI;QAAE,OAAO,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACnD,MAAM,SAAS,GAAa,EAAE,CAAC;IAC/B,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,MAAM,GAAG,GAAG,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACvC,0EAA0E;QAC1E,0DAA0D;QAC1D,IAAI,GAAG,KAAK,IAAI;YAAE,OAAO,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC/C,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACjC,CAAC;IAED,2EAA2E;IAC3E,0EAA0E;IAC1E,yCAAyC;IACzC,MAAM,QAAQ,GAAG,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;IACvD,IAAI,QAAQ,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IAErE,MAAM,IAAI,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;IACpD,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAEnC,2EAA2E;IAC3E,6EAA6E;IAC7E,8EAA8E;IAC9E,wDAAwD;IACxD,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,IAAI,CAAC,KAAK,UAAU;YAAE,SAAS;QAC/B,KAAK,MAAM,EAAE,IAAI,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAC7C,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;gBAAE,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACrC,CAAC;IACH,CAAC;IACD,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtB,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACrB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC,IAAI,CAAC;IACvD,OAAO,cAAc,CAAC,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAC7F,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,UAAU,kBAAkB,CAAC,GAAW;IAC5C,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,IAAI,QAAQ,GAAG,KAAK,CAAC;IACrB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACpC,MAAM,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;QACpB,IAAI,QAAQ,EAAE,CAAC;YACb,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;gBACjB,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG;oBAAE,CAAC,EAAE,CAAC;;oBACvB,QAAQ,GAAG,KAAK,CAAC;YACxB,CAAC;YACD,SAAS;QACX,CAAC;QACD,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;YACjB,QAAQ,GAAG,IAAI,CAAC;QAClB,CAAC;aAAM,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;YACxB,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;YAChB,OAAO,GAAG,GAAG,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,IAAI,GAAG;gBAAE,GAAG,EAAE,CAAC;YACrE,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC;gBAAE,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;YACzD,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;QACd,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;;GAKG;AACH,SAAS,SAAS,CAAC,IAAgB,EAAE,IAAyB;IAC5D,MAAM,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACzE,OAAO,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;AAC9E,CAAC;AAED;;;;;GAKG;AACH,SAAS,cAAc,CACrB,IAAgB,EAChB,IAAc,EACd,KAAa,EACb,WAAmB;IAEnB,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACpC,8EAA8E;IAC9E,4EAA4E;IAC5E,0EAA0E;IAC1E,6EAA6E;IAC7E,2CAA2C;IAC3C,IAAI,IAAI,GAAG,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IAClG,MAAM,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC;IACvB,IAAI,CAAC,KAAK,CAAC,GAAG,WAAW,CAAC;IAC1B,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACtG,CAAC;AAED;;;;;GAKG;AACH,SAAS,eAAe,CAAC,IAAY,EAAE,CAAS;IAC9C,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACtC,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC;AAC5C,CAAC;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,iBAAiB,CAAC,IAAY;IAC5C,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,QAAQ,GAAG,KAAK,CAAC;IAErB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QAErB,IAAI,QAAQ,EAAE,CAAC;YACb,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;gBACjB,kEAAkE;gBAClE,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG;oBAAE,CAAC,EAAE,CAAC;;oBACxB,QAAQ,GAAG,KAAK,CAAC;YACxB,CAAC;YACD,SAAS;QACX,CAAC;QAED,IAAI,IAAI,KAAK,GAAG,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;YACxC,uEAAuE;YACvE,uCAAuC;YACvC,CAAC,GAAG,eAAe,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;QACnC,CAAC;aAAM,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;YACxB,QAAQ,GAAG,IAAI,CAAC;QAClB,CAAC;aAAM,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;YACxB,KAAK,EAAE,CAAC;QACV,CAAC;aAAM,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;YACxB,KAAK,EAAE,CAAC;YACR,IAAI,KAAK,GAAG,CAAC;gBAAE,OAAO,IAAI,CAAC;QAC7B,CAAC;aAAM,IAAI,IAAI,KAAK,GAAG,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC;YACvC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;YACxC,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC;QAChB,CAAC;IACH,CAAC;IAED,IAAI,QAAQ,IAAI,KAAK,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACzC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;IACtC,IAAI,IAAI;QAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC3B,OAAO,KAAK,CAAC;AACf,CAAC"}
|
|
@@ -14,6 +14,7 @@ import { normalizeBooleanValue } from '@ifc-lite/query';
|
|
|
14
14
|
* PsetName.PropName>=Value (greater or equal)
|
|
15
15
|
* PsetName.PropName<=Value (less or equal)
|
|
16
16
|
* PsetName.PropName~Value (contains)
|
|
17
|
+
* PsetName.PropName~=Pattern (regex match — see `matches` on FilterComparisonOp)
|
|
17
18
|
* PsetName.PropName (exists)
|
|
18
19
|
*/
|
|
19
20
|
export declare function parseWhereFilter(filter: string): {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"where-filter.d.ts","sourceRoot":"","sources":["../../src/commands/where-filter.ts"],"names":[],"mappings":"AAIA;;;;GAIG;AAEH,OAAO,EAIL,qBAAqB,EAEtB,MAAM,iBAAiB,CAAC;AAGzB
|
|
1
|
+
{"version":3,"file":"where-filter.d.ts","sourceRoot":"","sources":["../../src/commands/where-filter.ts"],"names":[],"mappings":"AAIA;;;;GAIG;AAEH,OAAO,EAIL,qBAAqB,EAEtB,MAAM,iBAAiB,CAAC;AAGzB;;;;;;;;;;;;GAYG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAyBzH;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,GAAG,EAAE,EAAE,MAAM,EAAE,UAAU,CAAC,OAAO,gBAAgB,CAAC,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,CAoB9G;AAMD,wBAAgB,aAAa,CAAC,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAGlG;AAED,OAAO,EAAE,qBAAqB,EAAE,CAAC"}
|
|
@@ -18,6 +18,7 @@ import { fatal } from '../output.js';
|
|
|
18
18
|
* PsetName.PropName>=Value (greater or equal)
|
|
19
19
|
* PsetName.PropName<=Value (less or equal)
|
|
20
20
|
* PsetName.PropName~Value (contains)
|
|
21
|
+
* PsetName.PropName~=Pattern (regex match — see `matches` on FilterComparisonOp)
|
|
21
22
|
* PsetName.PropName (exists)
|
|
22
23
|
*/
|
|
23
24
|
export function parseWhereFilter(filter) {
|
|
@@ -27,13 +28,16 @@ export function parseWhereFilter(filter) {
|
|
|
27
28
|
}
|
|
28
29
|
const psetName = filter.slice(0, dotIdx);
|
|
29
30
|
const rest = filter.slice(dotIdx + 1);
|
|
30
|
-
// Try multi-char operators first, then single-char
|
|
31
|
-
|
|
31
|
+
// Try multi-char operators first, then single-char. `~=` MUST be checked
|
|
32
|
+
// before both `=` and `~` — either alone would split "Prop~=pattern" wrong
|
|
33
|
+
// (matching bare `=` mid-token, or bare `~` and leaving a stray `=` in the
|
|
34
|
+
// value).
|
|
35
|
+
for (const op of ['!=', '>=', '<=', '~=', '>', '<', '=', '~']) {
|
|
32
36
|
const opIdx = rest.indexOf(op);
|
|
33
37
|
if (opIdx > 0) {
|
|
34
38
|
const propName = rest.slice(0, opIdx);
|
|
35
39
|
const value = rest.slice(opIdx + op.length);
|
|
36
|
-
const mappedOp = op === '~' ? 'contains' : op;
|
|
40
|
+
const mappedOp = op === '~' ? 'contains' : op === '~=' ? 'matches' : op;
|
|
37
41
|
return { psetName, propName, operator: mappedOp, value };
|
|
38
42
|
}
|
|
39
43
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"where-filter.js","sourceRoot":"","sources":["../../src/commands/where-filter.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAE/D;;;;GAIG;AAEH,OAAO,EACL,uBAAuB,EACvB,uBAAuB,EACvB,kBAAkB,EAClB,qBAAqB,GAEtB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AAErC
|
|
1
|
+
{"version":3,"file":"where-filter.js","sourceRoot":"","sources":["../../src/commands/where-filter.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ifc-lite/cli",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.30.0",
|
|
4
4
|
"description": "CLI toolkit for IFC files — query, validate, export, create, and script BIM data",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -20,25 +20,25 @@
|
|
|
20
20
|
"README.md"
|
|
21
21
|
],
|
|
22
22
|
"dependencies": {
|
|
23
|
-
"@ifc-lite/bcf": "^
|
|
24
|
-
"@ifc-lite/
|
|
25
|
-
"@ifc-lite/
|
|
23
|
+
"@ifc-lite/bcf": "^4.0.0",
|
|
24
|
+
"@ifc-lite/clash": "^2.2.0",
|
|
25
|
+
"@ifc-lite/create": "^2.4.0",
|
|
26
|
+
"@ifc-lite/data": "^4.2.1",
|
|
26
27
|
"@ifc-lite/diff": "^0.8.0",
|
|
27
|
-
"@ifc-lite/
|
|
28
|
-
"@ifc-lite/
|
|
29
|
-
"@ifc-lite/
|
|
30
|
-
"@ifc-lite/ids": "^1.16.
|
|
31
|
-
"@ifc-lite/
|
|
32
|
-
"@ifc-lite/ifcx": "^4.0.0",
|
|
28
|
+
"@ifc-lite/export": "^4.3.1",
|
|
29
|
+
"@ifc-lite/extensions": "^0.7.0",
|
|
30
|
+
"@ifc-lite/geometry": "^6.0.0",
|
|
31
|
+
"@ifc-lite/ids": "^1.16.4",
|
|
32
|
+
"@ifc-lite/ifcx": "^4.1.1",
|
|
33
33
|
"@ifc-lite/merge": "^0.4.5",
|
|
34
|
-
"@ifc-lite/
|
|
35
|
-
"@ifc-lite/
|
|
36
|
-
"@ifc-lite/parser": "^
|
|
37
|
-
"@ifc-lite/query": "^2.2
|
|
38
|
-
"@ifc-lite/sandbox": "^2.2.
|
|
39
|
-
"@ifc-lite/
|
|
40
|
-
"@ifc-lite/
|
|
41
|
-
"@ifc-lite/wasm": "^
|
|
34
|
+
"@ifc-lite/mutations": "^2.3.0",
|
|
35
|
+
"@ifc-lite/mcp": "^0.14.2",
|
|
36
|
+
"@ifc-lite/parser": "^6.2.1",
|
|
37
|
+
"@ifc-lite/query": "^2.3.2",
|
|
38
|
+
"@ifc-lite/sandbox": "^2.2.4",
|
|
39
|
+
"@ifc-lite/sdk": "^5.0.0",
|
|
40
|
+
"@ifc-lite/viewer-core": "^0.2.17",
|
|
41
|
+
"@ifc-lite/wasm": "^8.0.1"
|
|
42
42
|
},
|
|
43
43
|
"devDependencies": {
|
|
44
44
|
"@types/node": "^26.4.1",
|