@ifc-lite/query 2.1.0 → 2.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/duckdb-integration.js +3 -3
- package/dist/duckdb-integration.js.map +1 -1
- package/dist/entity-node.d.ts +9 -0
- package/dist/entity-node.d.ts.map +1 -1
- package/dist/entity-node.js +11 -0
- package/dist/entity-node.js.map +1 -1
- package/dist/filter-predicate.d.ts +22 -1
- package/dist/filter-predicate.d.ts.map +1 -1
- package/dist/filter-predicate.js +166 -0
- package/dist/filter-predicate.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/selector/ast.d.ts +106 -0
- package/dist/selector/ast.d.ts.map +1 -0
- package/dist/selector/ast.js +5 -0
- package/dist/selector/ast.js.map +1 -0
- package/dist/selector/parse.d.ts +20 -0
- package/dist/selector/parse.d.ts.map +1 -0
- package/dist/selector/parse.js +227 -0
- package/dist/selector/parse.js.map +1 -0
- package/dist/selector/tokenize.d.ts +47 -0
- package/dist/selector/tokenize.d.ts.map +1 -0
- package/dist/selector/tokenize.js +147 -0
- package/dist/selector/tokenize.js.map +1 -0
- package/package.json +6 -5
|
@@ -276,6 +276,7 @@ export class DuckDBIntegration {
|
|
|
276
276
|
const relTypeNames = {
|
|
277
277
|
[RelationshipType.ContainsElements]: 'ContainsElements',
|
|
278
278
|
[RelationshipType.Aggregates]: 'Aggregates',
|
|
279
|
+
[RelationshipType.Nests]: 'IfcRelNests', // matches the other 3 RelationshipType->string maps (#4205 review)
|
|
279
280
|
[RelationshipType.DefinesByProperties]: 'DefinesByProperties',
|
|
280
281
|
[RelationshipType.DefinesByType]: 'DefinesByType',
|
|
281
282
|
[RelationshipType.AssociatesMaterial]: 'AssociatesMaterial',
|
|
@@ -286,12 +287,11 @@ export class DuckDBIntegration {
|
|
|
286
287
|
[RelationshipType.ConnectsElements]: 'ConnectsElements',
|
|
287
288
|
[RelationshipType.SpaceBoundary]: 'SpaceBoundary',
|
|
288
289
|
[RelationshipType.AssignsToGroup]: 'AssignsToGroup',
|
|
290
|
+
[RelationshipType.AssignsToGroupByFactor]: 'IfcRelAssignsToGroupByFactor',
|
|
289
291
|
[RelationshipType.AssignsToProduct]: 'AssignsToProduct',
|
|
290
292
|
[RelationshipType.ReferencedInSpatialStructure]: 'ReferencedInSpatialStructure',
|
|
291
293
|
};
|
|
292
|
-
// One row per `IfcRel*` STEP record,
|
|
293
|
-
// edge's `shadowedRelationshipIds` (#3760/#3782) — not one row per
|
|
294
|
-
// deduped edge; see `flattenRelationshipEdges`'s doc comment.
|
|
294
|
+
// One row per `IfcRel*` STEP record, not one row per deduped edge; see `flattenRelationshipEdges`'s doc comment.
|
|
295
295
|
const rows = flattenRelationshipEdges(relationships.forward).map((row) => ({
|
|
296
296
|
sourceId: row.sourceId,
|
|
297
297
|
targetId: row.targetId,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"duckdb-integration.js","sourceRoot":"","sources":["../src/duckdb-integration.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"duckdb-integration.js","sourceRoot":"","sources":["../src/duckdb-integration.ts"],"names":[],"mappings":"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"}
|
package/dist/entity-node.d.ts
CHANGED
|
@@ -34,6 +34,15 @@ export declare class EntityNode {
|
|
|
34
34
|
get type(): string;
|
|
35
35
|
contains(): EntityNode[];
|
|
36
36
|
containedIn(): EntityNode | null;
|
|
37
|
+
/**
|
|
38
|
+
* True when this element has more than one direct
|
|
39
|
+
* `IfcRelContainedInSpatialStructure` edge, i.e. `containedIn()`'s answer
|
|
40
|
+
* (first-declared wins) was a tie-break rather than the only candidate the
|
|
41
|
+
* source file declared (#4311). Duplicate edges naming the SAME structure
|
|
42
|
+
* collapse to one before either method ever sees them (relationship-graph
|
|
43
|
+
* dedupe), so this only fires on genuinely different candidates.
|
|
44
|
+
*/
|
|
45
|
+
containedInAmbiguous(): boolean;
|
|
37
46
|
decomposes(): EntityNode[];
|
|
38
47
|
decomposedBy(): EntityNode | null;
|
|
39
48
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entity-node.d.ts","sourceRoot":"","sources":["../src/entity-node.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,KAAK,EAAE,YAAY,IAAI,YAAY,EAAE,SAAS,EAAqB,WAAW,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAG1I,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AA0BlD,wBAAgB,oCAAoC,CAClD,MAAM,EAAE,SAAS,GAChB,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAA;CAAE,CAAC,CAO3D;AAED,qBAAa,UAAU;IACrB,OAAO,CAAC,KAAK,CAAe;IAC5B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,OAAO,CAAC,iBAAiB,CAAyG;gBAEtH,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM;IAKlD;;;OAGG;IACH,OAAO,CAAC,qBAAqB;IAa7B,IAAI,QAAQ,IAAI,MAAM,CAMrB;IAED,IAAI,IAAI,IAAI,MAAM,CAMjB;IAED,IAAI,WAAW,IAAI,MAAM,CAMxB;IAED,IAAI,UAAU,IAAI,MAAM,CAMvB;IAED,IAAI,GAAG,IAAI,MAAM,CAGhB;IAED;;;;OAIG;IACH,aAAa,IAAI,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAA;KAAE,CAAC;IAe1E,IAAI,IAAI,IAAI,MAAM,CAEjB;IAID,QAAQ,IAAI,UAAU,EAAE;IAIxB,WAAW,IAAI,UAAU,GAAG,IAAI;
|
|
1
|
+
{"version":3,"file":"entity-node.d.ts","sourceRoot":"","sources":["../src/entity-node.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,KAAK,EAAE,YAAY,IAAI,YAAY,EAAE,SAAS,EAAqB,WAAW,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAG1I,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AA0BlD,wBAAgB,oCAAoC,CAClD,MAAM,EAAE,SAAS,GAChB,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAA;CAAE,CAAC,CAO3D;AAED,qBAAa,UAAU;IACrB,OAAO,CAAC,KAAK,CAAe;IAC5B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,OAAO,CAAC,iBAAiB,CAAyG;gBAEtH,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM;IAKlD;;;OAGG;IACH,OAAO,CAAC,qBAAqB;IAa7B,IAAI,QAAQ,IAAI,MAAM,CAMrB;IAED,IAAI,IAAI,IAAI,MAAM,CAMjB;IAED,IAAI,WAAW,IAAI,MAAM,CAMxB;IAED,IAAI,UAAU,IAAI,MAAM,CAMvB;IAED,IAAI,GAAG,IAAI,MAAM,CAGhB;IAED;;;;OAIG;IACH,aAAa,IAAI,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAA;KAAE,CAAC;IAe1E,IAAI,IAAI,IAAI,MAAM,CAEjB;IAID,QAAQ,IAAI,UAAU,EAAE;IAIxB,WAAW,IAAI,UAAU,GAAG,IAAI;IAKhC;;;;;;;OAOG;IACH,oBAAoB,IAAI,OAAO;IAK/B,UAAU,IAAI,UAAU,EAAE;IAI1B,YAAY,IAAI,UAAU,GAAG,IAAI;IAMjC;;;;;;;;OAQG;IACH,YAAY,IAAI,UAAU,GAAG,IAAI;IAKjC,4EAA4E;IAC5E,SAAS,IAAI,UAAU,EAAE;IAKzB,KAAK,IAAI,UAAU,EAAE;IAIrB;;;;;;;OAOG;IACH,QAAQ,IAAI,UAAU,EAAE;IAKxB,QAAQ,CAAC,OAAO,EAAE,gBAAgB,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,GAAE,SAAS,GAAG,SAAqB,GAAG,UAAU,EAAE;IA+B9G,QAAQ,IAAI,UAAU,GAAG,IAAI;IAY7B,MAAM,IAAI,UAAU,GAAG,IAAI;IAa3B,UAAU,IAAI,WAAW,EAAE;IAI3B,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI;IAgBlE,UAAU,IAAI,WAAW,EAAE;IAI3B,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAW/D,OAAO,CAAC,UAAU;CAInB"}
|
package/dist/entity-node.js
CHANGED
|
@@ -137,6 +137,17 @@ export class EntityNode {
|
|
|
137
137
|
const nodes = this.getRelated(RelationshipType.ContainsElements, 'inverse');
|
|
138
138
|
return nodes[0] ?? null;
|
|
139
139
|
}
|
|
140
|
+
/**
|
|
141
|
+
* True when this element has more than one direct
|
|
142
|
+
* `IfcRelContainedInSpatialStructure` edge, i.e. `containedIn()`'s answer
|
|
143
|
+
* (first-declared wins) was a tie-break rather than the only candidate the
|
|
144
|
+
* source file declared (#4311). Duplicate edges naming the SAME structure
|
|
145
|
+
* collapse to one before either method ever sees them (relationship-graph
|
|
146
|
+
* dedupe), so this only fires on genuinely different candidates.
|
|
147
|
+
*/
|
|
148
|
+
containedInAmbiguous() {
|
|
149
|
+
return this.getRelated(RelationshipType.ContainsElements, 'inverse').length > 1;
|
|
150
|
+
}
|
|
140
151
|
// Aggregation
|
|
141
152
|
decomposes() {
|
|
142
153
|
return this.getRelated(RelationshipType.Aggregates, 'forward');
|
package/dist/entity-node.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entity-node.js","sourceRoot":"","sources":["../src/entity-node.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"entity-node.js","sourceRoot":"","sources":["../src/entity-node.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
* matched fewer rows there than in the CLI/MCP. This module is the single
|
|
10
10
|
* home for that comparison so the four call sites can't drift apart again.
|
|
11
11
|
*/
|
|
12
|
-
export type FilterComparisonOp = '=' | '!=' | '>' | '<' | '>=' | '<=' | 'contains' | 'exists';
|
|
12
|
+
export type FilterComparisonOp = '=' | '!=' | '>' | '<' | '>=' | '<=' | 'contains' | 'exists' | 'matches';
|
|
13
13
|
/**
|
|
14
14
|
* Normalize boolean-like values for comparison. IFC STEP encodes booleans as
|
|
15
15
|
* `.T.`/`.F.` tokens; parsed property values are typically real JS booleans
|
|
@@ -19,6 +19,19 @@ export type FilterComparisonOp = '=' | '!=' | '>' | '<' | '>=' | '<=' | 'contain
|
|
|
19
19
|
* `String(a) === String(b)` comparisons below treat them all as equal.
|
|
20
20
|
*/
|
|
21
21
|
export declare function normalizeBooleanValue(value: unknown): unknown;
|
|
22
|
+
/** Thrown by {@link compileFilterPattern} for a pattern this module refuses
|
|
23
|
+
* to compile, whether because it is not valid regex syntax or because it
|
|
24
|
+
* matches a known catastrophic-backtracking shape. Named so a caller that
|
|
25
|
+
* wants to distinguish "your pattern was rejected" from other errors can
|
|
26
|
+
* `instanceof` it; every current caller lets it propagate as a loud failure
|
|
27
|
+
* (the CLI's top-level `main().catch` prints `Error [<command>]: <message>`
|
|
28
|
+
* and exits 1; the MCP server's generic tool-call catch turns it into an
|
|
29
|
+
* `isError: true` result; the viewer SDK adapter's `entities()` already
|
|
30
|
+
* throws `TypeError` for other invalid input in this same method, so this
|
|
31
|
+
* joins that precedent rather than inventing a new one). */
|
|
32
|
+
export declare class InvalidFilterPatternError extends Error {
|
|
33
|
+
constructor(message: string);
|
|
34
|
+
}
|
|
22
35
|
/**
|
|
23
36
|
* Evaluate a single comparison operator against a stored value and a
|
|
24
37
|
* filter value. Booleans are normalized first (see {@link normalizeBooleanValue}),
|
|
@@ -30,6 +43,14 @@ export declare function normalizeBooleanValue(value: unknown): unknown;
|
|
|
30
43
|
* confirmed the property was found (e.g. `IFCPROPERTYSINGLEVALUE('FireRating',
|
|
31
44
|
* $,$,$)` is present in its pset with a `$` nominal value, which parses to
|
|
32
45
|
* `null`; it still exists). So `exists` is unconditional true once reached.
|
|
46
|
+
*
|
|
47
|
+
* `matches` is a regex test — see {@link matchesRegex} for the exact
|
|
48
|
+
* delimiter/flag/error contract. It is NOT boolean-normalized: normalizing
|
|
49
|
+
* `true`/`false` to the strings `'true'`/`'false'` before every other
|
|
50
|
+
* operator exists so `.T.`/`true`/`TRUE` compare as equal, which has nothing
|
|
51
|
+
* to do with regex matching, and normalizing first would only make a pattern
|
|
52
|
+
* like `/^\.T\.$/` (deliberately matching the raw STEP token) silently see
|
|
53
|
+
* `'true'` instead.
|
|
33
54
|
*/
|
|
34
55
|
export declare function compareFilterValue(actual: unknown, operator: FilterComparisonOp, expected: unknown): boolean;
|
|
35
56
|
//# sourceMappingURL=filter-predicate.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filter-predicate.d.ts","sourceRoot":"","sources":["../src/filter-predicate.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"filter-predicate.d.ts","sourceRoot":"","sources":["../src/filter-predicate.ts"],"names":[],"mappings":"AAMA;;;;;;;;;;GAUG;AAEH,MAAM,MAAM,kBAAkB,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,UAAU,GAAG,QAAQ,GAAG,SAAS,CAAC;AAE1G;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAI7D;AA6DD;;;;;;;;;4DAS4D;AAC5D,qBAAa,yBAA0B,SAAQ,KAAK;gBACtC,OAAO,EAAE,MAAM;CAI5B;AA6FD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,kBAAkB,EAAE,QAAQ,EAAE,OAAO,GAAG,OAAO,CAe5G"}
|
package/dist/filter-predicate.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
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
|
+
import { hasCatastrophicBacktrackingShape } from '@ifc-lite/regex-guard';
|
|
4
5
|
/**
|
|
5
6
|
* Normalize boolean-like values for comparison. IFC STEP encodes booleans as
|
|
6
7
|
* `.T.`/`.F.` tokens; parsed property values are typically real JS booleans
|
|
@@ -16,6 +17,161 @@ export function normalizeBooleanValue(value) {
|
|
|
16
17
|
return 'false';
|
|
17
18
|
return value;
|
|
18
19
|
}
|
|
20
|
+
/**
|
|
21
|
+
* `matches`'s `expected` side is a bare regex *source* — no `/…/` delimiters,
|
|
22
|
+
* no flag suffix. That is deliberately the same shape `SelectorText`'s
|
|
23
|
+
* `{ kind: 'regex', source }` carries in `packages/query/src/selector/ast.ts`
|
|
24
|
+
* (`readRegex` in `tokenize.ts` already strips the delimiters and unescapes
|
|
25
|
+
* `\/`), so a selector adapter can hand a parsed regex filter's `source`
|
|
26
|
+
* straight to this operator without re-deriving delimiter stripping.
|
|
27
|
+
* Matching is case-sensitive by construction (no implicit `i` flag, unlike
|
|
28
|
+
* `contains`, which lowercases both sides) — the pattern's author controls
|
|
29
|
+
* case sensitivity, not this function.
|
|
30
|
+
*
|
|
31
|
+
* `expected` is caller-supplied — the CLI `--where ~=` flag and, more
|
|
32
|
+
* pointedly, the MCP `query_entities` tool's `property.value`, which is
|
|
33
|
+
* agent/LLM-influenced input running synchronously on the MCP server's one
|
|
34
|
+
* main thread. `new RegExp(source).test(actual)` is not a safe operation on
|
|
35
|
+
* untrusted `source`: a pattern shaped like `^(a+)+$` against a
|
|
36
|
+
* non-matching subject is exponential in subject length in V8's backtracking
|
|
37
|
+
* engine (measured: a 35-character non-matching subject already exceeds
|
|
38
|
+
* 30s; see `filter-predicate.test.ts`'s catastrophic-pattern test for the
|
|
39
|
+
* reproduction). `compileFilterPattern` below rejects patterns matching that
|
|
40
|
+
* shape, and any other invalid pattern, *before* compiling — loudly, by
|
|
41
|
+
* throwing, not by returning `false`. That intentionally changes this
|
|
42
|
+
* function's contract from "never throws" (the shape every other
|
|
43
|
+
* `compareFilterValue` branch keeps: `>` against a non-numeric `expected` is
|
|
44
|
+
* `Number(x) > NaN`, already `false`, never a throw) to "throws on a
|
|
45
|
+
* rejected or malformed pattern" — the two are different failure classes.
|
|
46
|
+
* Silently returning `false` for an operator-coercion mismatch (a caller
|
|
47
|
+
* error at the value level) is fine; silently returning `false` for a
|
|
48
|
+
* pattern this repo refuses to run is not, per this repo's existing
|
|
49
|
+
* fail-loud precedent for caller-supplied input (`--limit`/`--offset`
|
|
50
|
+
* validate up front with `fatal()` rather than silently clamping). A caller
|
|
51
|
+
* that wants to reject a pattern even earlier (e.g. a selector adapter
|
|
52
|
+
* validating user input before a query starts) still can — that guidance
|
|
53
|
+
* from the previous version of this comment still holds — but it is no
|
|
54
|
+
* longer required for safety, because this layer now refuses unsafe input
|
|
55
|
+
* itself.
|
|
56
|
+
*
|
|
57
|
+
* This is a heuristic input constraint, not a proof of linear-time
|
|
58
|
+
* execution — see `compileFilterPattern`'s own doc comment for what it does
|
|
59
|
+
* and does not catch, and the PR description for the alternatives (a
|
|
60
|
+
* wall-clock timeout, a linear-time engine) this environment ruled out.
|
|
61
|
+
*/
|
|
62
|
+
function matchesRegex(actual, expected) {
|
|
63
|
+
const re = compileFilterPattern(String(expected));
|
|
64
|
+
return re.test(String(actual));
|
|
65
|
+
}
|
|
66
|
+
/** Upper bound on a `matches` pattern's source length. Chosen to comfortably
|
|
67
|
+
* cover realistic IFC identifier/name/type patterns (`^IfcWall`,
|
|
68
|
+
* `Pset_.*Common`, GlobalId-shaped alternations) while still being short
|
|
69
|
+
* enough that {@link hasNestedQuantifier}'s O(n^2) scan and any surviving
|
|
70
|
+
* backtracking risk stay cheap. NOTE: this cap alone does not neutralize
|
|
71
|
+
* catastrophic backtracking — the measured repro's worst timing (>30s,
|
|
72
|
+
* killed) came from a 35-character pattern/subject, far under any length
|
|
73
|
+
* cap generous enough to be usable. Length is a blunt secondary control;
|
|
74
|
+
* {@link hasNestedQuantifier} is the control actually aimed at the measured
|
|
75
|
+
* failure shape. */
|
|
76
|
+
const MAX_FILTER_PATTERN_LENGTH = 200;
|
|
77
|
+
/** Thrown by {@link compileFilterPattern} for a pattern this module refuses
|
|
78
|
+
* to compile, whether because it is not valid regex syntax or because it
|
|
79
|
+
* matches a known catastrophic-backtracking shape. Named so a caller that
|
|
80
|
+
* wants to distinguish "your pattern was rejected" from other errors can
|
|
81
|
+
* `instanceof` it; every current caller lets it propagate as a loud failure
|
|
82
|
+
* (the CLI's top-level `main().catch` prints `Error [<command>]: <message>`
|
|
83
|
+
* and exits 1; the MCP server's generic tool-call catch turns it into an
|
|
84
|
+
* `isError: true` result; the viewer SDK adapter's `entities()` already
|
|
85
|
+
* throws `TypeError` for other invalid input in this same method, so this
|
|
86
|
+
* joins that precedent rather than inventing a new one). */
|
|
87
|
+
export class InvalidFilterPatternError extends Error {
|
|
88
|
+
constructor(message) {
|
|
89
|
+
super(message);
|
|
90
|
+
this.name = 'InvalidFilterPatternError';
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Detect the specific catastrophic-backtracking shape this module measured
|
|
95
|
+
* and is defending against: a quantified group (`(...)+`, `(...)*`,
|
|
96
|
+
* `(...){m,n}`) whose own contents contain another quantifier at the same
|
|
97
|
+
* nesting depth, e.g. `(a+)+`, `(a*)*`, `(a+){2,}`. Ambiguous nested
|
|
98
|
+
* repetition is the textbook cause of exponential backtracking in a
|
|
99
|
+
* backtracking (non-linear-time) engine like V8's — each extra repeat of
|
|
100
|
+
* the outer quantifier multiplies the number of ways the inner one can
|
|
101
|
+
* partition the same input, and on a non-matching subject the engine tries
|
|
102
|
+
* all of them before giving up.
|
|
103
|
+
*
|
|
104
|
+
* Delegates to `@ifc-lite/regex-guard`'s `hasCatastrophicBacktrackingShape`
|
|
105
|
+
* rather than carrying its own copy of the scan. This module used to hand-roll
|
|
106
|
+
* a paren-depth scan here, independently of the shared guard package added
|
|
107
|
+
* for #4259 (`packages/regex-guard`) — two implementations wrong in the same
|
|
108
|
+
* way for different reasons (see #4318): this module's scan tracked `(`/`)`
|
|
109
|
+
* depth with no awareness of character classes, so a `)` written inside
|
|
110
|
+
* `[...]` (e.g. `^(a+[)]?a+)+$`) desynced the depth count and the check never
|
|
111
|
+
* fired on a genuinely catastrophic pattern. The shared guard now has the
|
|
112
|
+
* same fix (a manual scan that skips from an unescaped `[` to its closing
|
|
113
|
+
* `]`), so routing through it here closes the same bypass without
|
|
114
|
+
* maintaining a second copy.
|
|
115
|
+
*
|
|
116
|
+
* This is still a heuristic, not a backtracking-complexity analyzer: it will
|
|
117
|
+
* reject some patterns that would in fact run fine (a false positive — the
|
|
118
|
+
* user hits a "pattern rejected" error for a pattern that was actually
|
|
119
|
+
* safe), and it will not catch every ReDoS-capable shape (e.g. overlapping
|
|
120
|
+
* alternation like `(a|a)*`). Given this environment cannot add a
|
|
121
|
+
* linear-time regex engine (no dependency install available) or move
|
|
122
|
+
* `.test()` off the main thread onto a wall-clock timeout (a much larger,
|
|
123
|
+
* async-ifying change — see the PR description), this heuristic plus the
|
|
124
|
+
* length cap is the practical, dependency-free mitigation available;
|
|
125
|
+
* residual risk from a shape it misses is real and is stated as such rather
|
|
126
|
+
* than implied away. See {@link compileFilterPattern}, the sole call site.
|
|
127
|
+
*/
|
|
128
|
+
const hasNestedQuantifier = hasCatastrophicBacktrackingShape;
|
|
129
|
+
/** Bounded so a pattern this module has already validated once (the common
|
|
130
|
+
* case: the same `matches` pattern is compiled once, then tested against
|
|
131
|
+
* every candidate entity in a `where`/`--where` query — see
|
|
132
|
+
* `applyWhereFilter`, `matchesPropertyFilter` in both the CLI and MCP
|
|
133
|
+
* packages, and the viewer SDK adapter, none of which vary the pattern
|
|
134
|
+
* per-entity) is compiled exactly once, not once per entity, without
|
|
135
|
+
* requiring every call site to remember to hoist the compile out of its
|
|
136
|
+
* loop itself. Cleared wholesale rather than evicted LRU-style once it
|
|
137
|
+
* would grow past a bound — simpler, and a cache clear just means the next
|
|
138
|
+
* lookup re-validates and re-compiles, which is correct, only slower. */
|
|
139
|
+
const FILTER_PATTERN_CACHE_LIMIT = 500;
|
|
140
|
+
const filterPatternCache = new Map();
|
|
141
|
+
/**
|
|
142
|
+
* Validate and compile a `matches` pattern, or throw
|
|
143
|
+
* {@link InvalidFilterPatternError} naming why. See {@link hasNestedQuantifier}
|
|
144
|
+
* and {@link MAX_FILTER_PATTERN_LENGTH} for what is rejected and why;
|
|
145
|
+
* neither rejection depends on ever running the pattern against a subject,
|
|
146
|
+
* so a rejected pattern fails in roughly constant time regardless of how
|
|
147
|
+
* long its would-be matching would have taken.
|
|
148
|
+
*/
|
|
149
|
+
function compileFilterPattern(pattern) {
|
|
150
|
+
const cached = filterPatternCache.get(pattern);
|
|
151
|
+
if (cached)
|
|
152
|
+
return cached;
|
|
153
|
+
if (pattern.length > MAX_FILTER_PATTERN_LENGTH) {
|
|
154
|
+
throw new InvalidFilterPatternError(`matches: pattern rejected -- ${pattern.length} characters exceeds the ` +
|
|
155
|
+
`${MAX_FILTER_PATTERN_LENGTH}-character limit for a "matches" pattern.`);
|
|
156
|
+
}
|
|
157
|
+
if (hasNestedQuantifier(pattern)) {
|
|
158
|
+
throw new InvalidFilterPatternError(`matches: pattern rejected -- it contains a quantified group with another ` +
|
|
159
|
+
`quantifier inside it (e.g. "(a+)+"), a shape that can take exponential ` +
|
|
160
|
+
`time to fail to match on adversarial input. Rewrite the pattern without ` +
|
|
161
|
+
`nesting a quantifier inside a quantified group.`);
|
|
162
|
+
}
|
|
163
|
+
let re;
|
|
164
|
+
try {
|
|
165
|
+
re = new RegExp(pattern);
|
|
166
|
+
}
|
|
167
|
+
catch (err) {
|
|
168
|
+
throw new InvalidFilterPatternError(`matches: invalid regular expression ${JSON.stringify(pattern)}: ${err.message}`);
|
|
169
|
+
}
|
|
170
|
+
if (filterPatternCache.size >= FILTER_PATTERN_CACHE_LIMIT)
|
|
171
|
+
filterPatternCache.clear();
|
|
172
|
+
filterPatternCache.set(pattern, re);
|
|
173
|
+
return re;
|
|
174
|
+
}
|
|
19
175
|
/**
|
|
20
176
|
* Evaluate a single comparison operator against a stored value and a
|
|
21
177
|
* filter value. Booleans are normalized first (see {@link normalizeBooleanValue}),
|
|
@@ -27,10 +183,20 @@ export function normalizeBooleanValue(value) {
|
|
|
27
183
|
* confirmed the property was found (e.g. `IFCPROPERTYSINGLEVALUE('FireRating',
|
|
28
184
|
* $,$,$)` is present in its pset with a `$` nominal value, which parses to
|
|
29
185
|
* `null`; it still exists). So `exists` is unconditional true once reached.
|
|
186
|
+
*
|
|
187
|
+
* `matches` is a regex test — see {@link matchesRegex} for the exact
|
|
188
|
+
* delimiter/flag/error contract. It is NOT boolean-normalized: normalizing
|
|
189
|
+
* `true`/`false` to the strings `'true'`/`'false'` before every other
|
|
190
|
+
* operator exists so `.T.`/`true`/`TRUE` compare as equal, which has nothing
|
|
191
|
+
* to do with regex matching, and normalizing first would only make a pattern
|
|
192
|
+
* like `/^\.T\.$/` (deliberately matching the raw STEP token) silently see
|
|
193
|
+
* `'true'` instead.
|
|
30
194
|
*/
|
|
31
195
|
export function compareFilterValue(actual, operator, expected) {
|
|
32
196
|
if (operator === 'exists')
|
|
33
197
|
return true;
|
|
198
|
+
if (operator === 'matches')
|
|
199
|
+
return matchesRegex(actual, expected);
|
|
34
200
|
const normActual = normalizeBooleanValue(actual);
|
|
35
201
|
const normExpected = normalizeBooleanValue(expected);
|
|
36
202
|
switch (operator) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filter-predicate.js","sourceRoot":"","sources":["../src/filter-predicate.ts"],"names":[],"mappings":"AAAA;;+DAE+D;
|
|
1
|
+
{"version":3,"file":"filter-predicate.js","sourceRoot":"","sources":["../src/filter-predicate.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -11,4 +11,6 @@ export { QueryResultEntity } from './query-result-entity.js';
|
|
|
11
11
|
export { DuckDBIntegration, type SQLResult } from './duckdb-integration.js';
|
|
12
12
|
export { findPropertyInSets, findQuantityInSets, findAllPropertiesInSets, findAllQuantitiesInSets } from './pset-lookup.js';
|
|
13
13
|
export { normalizeBooleanValue, compareFilterValue, type FilterComparisonOp } from './filter-predicate.js';
|
|
14
|
+
export { parseSelector } from './selector/parse.js';
|
|
15
|
+
export type { SelectorOp, SelectorText, SelectorValue, SelectorFilter, SelectorQuery, SelectorParseError, SelectorParseResult, } from './selector/ast.js';
|
|
14
16
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAC/D,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,KAAK,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACzE,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,KAAK,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAC5E,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAC5H,OAAO,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,KAAK,kBAAkB,EAAE,MAAM,uBAAuB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAC/D,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,KAAK,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACzE,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,KAAK,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAC5E,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAC5H,OAAO,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,KAAK,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3G,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAIpD,YAAY,EACV,UAAU,EACV,YAAY,EACZ,aAAa,EACb,cAAc,EACd,aAAa,EACb,kBAAkB,EAClB,mBAAmB,GACpB,MAAM,mBAAmB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -14,4 +14,5 @@ export { QueryResultEntity } from './query-result-entity.js';
|
|
|
14
14
|
export { DuckDBIntegration } from './duckdb-integration.js';
|
|
15
15
|
export { findPropertyInSets, findQuantityInSets, findAllPropertiesInSets, findAllQuantitiesInSets } from './pset-lookup.js';
|
|
16
16
|
export { normalizeBooleanValue, compareFilterValue } from './filter-predicate.js';
|
|
17
|
+
export { parseSelector } from './selector/parse.js';
|
|
17
18
|
//# sourceMappingURL=index.js.map
|
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;;GAEG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAC/D,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,WAAW,EAA2B,MAAM,mBAAmB,CAAC;AACzE,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAkB,MAAM,yBAAyB,CAAC;AAC5E,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAC5H,OAAO,EAAE,qBAAqB,EAAE,kBAAkB,EAA2B,MAAM,uBAAuB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAE/D;;GAEG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAC/D,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,WAAW,EAA2B,MAAM,mBAAmB,CAAC;AACzE,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAkB,MAAM,yBAAyB,CAAC;AAC5E,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAC5H,OAAO,EAAE,qBAAqB,EAAE,kBAAkB,EAA2B,MAAM,uBAAuB,CAAC;AAC3G,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC"}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AST for the IfcOpenShell selector (filter) syntax.
|
|
3
|
+
*
|
|
4
|
+
* The AST is the seam: {@link parseSelector} understands the whole grammar,
|
|
5
|
+
* and each surface (the viewer's rule builder today, the CLI/MCP/SDK query
|
|
6
|
+
* descriptor next) is an adapter from this tree onto its own representation.
|
|
7
|
+
* The parser therefore accepts constructs no adapter can evaluate yet — an
|
|
8
|
+
* adapter reports those back rather than dropping them, which is why every
|
|
9
|
+
* node carries {@link SelectorFilterBase.text}, the exact source substring the
|
|
10
|
+
* user typed.
|
|
11
|
+
*/
|
|
12
|
+
/** Comparison operators the grammar defines. `*=` is "contains". */
|
|
13
|
+
export type SelectorOp = '=' | '!=' | '>' | '>=' | '<' | '<=' | '*=' | '!*=';
|
|
14
|
+
/** A literal name or value: a plain string, or a `/…/` regular expression. */
|
|
15
|
+
export type SelectorText = {
|
|
16
|
+
kind: 'string';
|
|
17
|
+
text: string;
|
|
18
|
+
} | {
|
|
19
|
+
kind: 'regex';
|
|
20
|
+
source: string;
|
|
21
|
+
};
|
|
22
|
+
/** A comparison right-hand side. Bare `NULL` (any case) is the null literal. */
|
|
23
|
+
export type SelectorValue = SelectorText | {
|
|
24
|
+
kind: 'null';
|
|
25
|
+
};
|
|
26
|
+
/** Keyword filters that compare one derived attribute of an element. */
|
|
27
|
+
export type SelectorKeywordKind = 'type' | 'material' | 'classification' | 'location' | 'parent';
|
|
28
|
+
interface SelectorFilterBase {
|
|
29
|
+
/** The exact source substring this filter was parsed from. */
|
|
30
|
+
text: string;
|
|
31
|
+
}
|
|
32
|
+
/** `IfcWall` / `! IfcWall` — the class and all its subclasses. */
|
|
33
|
+
interface SelectorClassFilter extends SelectorFilterBase {
|
|
34
|
+
kind: 'class';
|
|
35
|
+
name: string;
|
|
36
|
+
negate: boolean;
|
|
37
|
+
}
|
|
38
|
+
/** `325Q7Fhnf67OZC$$r43uzK` / `! 325Q7Fhnf67OZC$$r43uzK` — one element. */
|
|
39
|
+
interface SelectorGlobalIdFilter extends SelectorFilterBase {
|
|
40
|
+
kind: 'globalId';
|
|
41
|
+
id: string;
|
|
42
|
+
negate: boolean;
|
|
43
|
+
}
|
|
44
|
+
/** `Name=Foo` — an IFC attribute of the element itself. */
|
|
45
|
+
interface SelectorAttributeFilter extends SelectorFilterBase {
|
|
46
|
+
kind: 'attribute';
|
|
47
|
+
name: string;
|
|
48
|
+
op: SelectorOp;
|
|
49
|
+
value: SelectorValue;
|
|
50
|
+
}
|
|
51
|
+
/** `Pset_WallCommon.FireRating=2HR` — a property in a property set. */
|
|
52
|
+
interface SelectorPropertyFilter extends SelectorFilterBase {
|
|
53
|
+
kind: 'property';
|
|
54
|
+
pset: SelectorText;
|
|
55
|
+
prop: SelectorText;
|
|
56
|
+
op: SelectorOp;
|
|
57
|
+
value: SelectorValue;
|
|
58
|
+
}
|
|
59
|
+
/** `type=WT01`, `material=concrete`, `location="Level 3"`, … */
|
|
60
|
+
interface SelectorKeywordFilter extends SelectorFilterBase {
|
|
61
|
+
kind: SelectorKeywordKind;
|
|
62
|
+
op: SelectorOp;
|
|
63
|
+
value: SelectorValue;
|
|
64
|
+
}
|
|
65
|
+
/** `query:types.count=0` — a value-query key path. */
|
|
66
|
+
interface SelectorQueryFilter extends SelectorFilterBase {
|
|
67
|
+
kind: 'query';
|
|
68
|
+
keys: string;
|
|
69
|
+
op: SelectorOp;
|
|
70
|
+
value: SelectorValue;
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Every filter the grammar can express. The member interfaces stay
|
|
74
|
+
* module-internal: a consumer narrows on `filter.kind` off this union rather
|
|
75
|
+
* than naming one, and an exported type nothing consumes is semver liability
|
|
76
|
+
* with no reader.
|
|
77
|
+
*/
|
|
78
|
+
export type SelectorFilter = SelectorClassFilter | SelectorGlobalIdFilter | SelectorAttributeFilter | SelectorPropertyFilter | SelectorKeywordFilter | SelectorQueryFilter;
|
|
79
|
+
/**
|
|
80
|
+
* Filters chained with `,`. They narrow left to right (AND).
|
|
81
|
+
*
|
|
82
|
+
* Not re-exported from the package index: a caller reaches one through
|
|
83
|
+
* {@link SelectorQuery.groups}, and an export nothing consumes is permanent
|
|
84
|
+
* semver liability.
|
|
85
|
+
*/
|
|
86
|
+
export interface SelectorGroup {
|
|
87
|
+
filters: SelectorFilter[];
|
|
88
|
+
}
|
|
89
|
+
/** Groups joined with `+`. Their results are unioned. */
|
|
90
|
+
export interface SelectorQuery {
|
|
91
|
+
groups: SelectorGroup[];
|
|
92
|
+
}
|
|
93
|
+
export interface SelectorParseError {
|
|
94
|
+
message: string;
|
|
95
|
+
/** 0-based character offset into the input where the problem starts. */
|
|
96
|
+
offset: number;
|
|
97
|
+
}
|
|
98
|
+
export type SelectorParseResult = {
|
|
99
|
+
ok: true;
|
|
100
|
+
query: SelectorQuery;
|
|
101
|
+
} | {
|
|
102
|
+
ok: false;
|
|
103
|
+
error: SelectorParseError;
|
|
104
|
+
};
|
|
105
|
+
export {};
|
|
106
|
+
//# sourceMappingURL=ast.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ast.d.ts","sourceRoot":"","sources":["../../src/selector/ast.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;GAUG;AAEH,oEAAoE;AACpE,MAAM,MAAM,UAAU,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,KAAK,CAAC;AAE7E,8EAA8E;AAC9E,MAAM,MAAM,YAAY,GACpB;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAChC;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAEtC,gFAAgF;AAChF,MAAM,MAAM,aAAa,GAAG,YAAY,GAAG;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAE5D,wEAAwE;AACxE,MAAM,MAAM,mBAAmB,GAC3B,MAAM,GACN,UAAU,GACV,gBAAgB,GAChB,UAAU,GACV,QAAQ,CAAC;AAEb,UAAU,kBAAkB;IAC1B,8DAA8D;IAC9D,IAAI,EAAE,MAAM,CAAC;CACd;AAED,kEAAkE;AAClE,UAAU,mBAAoB,SAAQ,kBAAkB;IACtD,IAAI,EAAE,OAAO,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,OAAO,CAAC;CACjB;AAED,2EAA2E;AAC3E,UAAU,sBAAuB,SAAQ,kBAAkB;IACzD,IAAI,EAAE,UAAU,CAAC;IACjB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,OAAO,CAAC;CACjB;AAED,2DAA2D;AAC3D,UAAU,uBAAwB,SAAQ,kBAAkB;IAC1D,IAAI,EAAE,WAAW,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,UAAU,CAAC;IACf,KAAK,EAAE,aAAa,CAAC;CACtB;AAED,uEAAuE;AACvE,UAAU,sBAAuB,SAAQ,kBAAkB;IACzD,IAAI,EAAE,UAAU,CAAC;IACjB,IAAI,EAAE,YAAY,CAAC;IACnB,IAAI,EAAE,YAAY,CAAC;IACnB,EAAE,EAAE,UAAU,CAAC;IACf,KAAK,EAAE,aAAa,CAAC;CACtB;AAED,gEAAgE;AAChE,UAAU,qBAAsB,SAAQ,kBAAkB;IACxD,IAAI,EAAE,mBAAmB,CAAC;IAC1B,EAAE,EAAE,UAAU,CAAC;IACf,KAAK,EAAE,aAAa,CAAC;CACtB;AAED,sDAAsD;AACtD,UAAU,mBAAoB,SAAQ,kBAAkB;IACtD,IAAI,EAAE,OAAO,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,UAAU,CAAC;IACf,KAAK,EAAE,aAAa,CAAC;CACtB;AAED;;;;;GAKG;AACH,MAAM,MAAM,cAAc,GACtB,mBAAmB,GACnB,sBAAsB,GACtB,uBAAuB,GACvB,sBAAsB,GACtB,qBAAqB,GACrB,mBAAmB,CAAC;AAExB;;;;;;GAMG;AACH,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,cAAc,EAAE,CAAC;CAC3B;AAED,yDAAyD;AACzD,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,aAAa,EAAE,CAAC;CACzB;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,wEAAwE;IACxE,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,MAAM,mBAAmB,GAC3B;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,aAAa,CAAA;CAAE,GAClC;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,kBAAkB,CAAA;CAAE,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ast.js","sourceRoot":"","sources":["../../src/selector/ast.ts"],"names":[],"mappings":"AAAA;;+DAE+D"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Recursive-descent parser for the IfcOpenShell selector syntax.
|
|
3
|
+
*
|
|
4
|
+
* query := group ("+" group)* groups are unioned
|
|
5
|
+
* group := filter ("," filter)* filters narrow left to right
|
|
6
|
+
* filter := "!"? (class | globalId)
|
|
7
|
+
* | word ("." name)? op value
|
|
8
|
+
* | (string | regex) "." name op value
|
|
9
|
+
* | word "." (string | regex) op value
|
|
10
|
+
*
|
|
11
|
+
* The parser is deliberately more capable than any single adapter: it accepts
|
|
12
|
+
* every construct the page documents, so an adapter can name what it cannot
|
|
13
|
+
* evaluate instead of silently matching nothing — the defect behind #4091.
|
|
14
|
+
*
|
|
15
|
+
* See {@link tokenizeSelector} for the lexical rules and where they are ifc-lite's
|
|
16
|
+
* reading rather than the page's words.
|
|
17
|
+
*/
|
|
18
|
+
import type { SelectorParseResult } from './ast.js';
|
|
19
|
+
export declare function parseSelector(text: string): SelectorParseResult;
|
|
20
|
+
//# sourceMappingURL=parse.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parse.d.ts","sourceRoot":"","sources":["../../src/selector/parse.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,EAMV,mBAAmB,EAGpB,MAAM,UAAU,CAAC;AAqBlB,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,mBAAmB,CAe/D"}
|
|
@@ -0,0 +1,227 @@
|
|
|
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 { tokenizeSelector } from './tokenize.js';
|
|
5
|
+
const KEYWORDS = new Map([
|
|
6
|
+
['type', 'type'],
|
|
7
|
+
['material', 'material'],
|
|
8
|
+
['classification', 'classification'],
|
|
9
|
+
['location', 'location'],
|
|
10
|
+
['parent', 'parent'],
|
|
11
|
+
]);
|
|
12
|
+
const QUERY_PREFIX = 'query:';
|
|
13
|
+
const GLOBAL_ID = /^[0-9A-Za-z_$]{22}$/;
|
|
14
|
+
class ParseFailure extends Error {
|
|
15
|
+
error;
|
|
16
|
+
constructor(error) {
|
|
17
|
+
super(error.message);
|
|
18
|
+
this.error = error;
|
|
19
|
+
this.name = 'ParseFailure';
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
export function parseSelector(text) {
|
|
23
|
+
const lexed = tokenizeSelector(text);
|
|
24
|
+
if (!lexed.ok)
|
|
25
|
+
return { ok: false, error: lexed.error };
|
|
26
|
+
if (lexed.tokens.length === 0) {
|
|
27
|
+
return {
|
|
28
|
+
ok: false,
|
|
29
|
+
error: { message: 'empty selector: type a class name such as IfcWall', offset: 0 },
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
try {
|
|
33
|
+
return { ok: true, query: { groups: new Parser(text, lexed.tokens).parseQuery() } };
|
|
34
|
+
}
|
|
35
|
+
catch (err) {
|
|
36
|
+
if (err instanceof ParseFailure)
|
|
37
|
+
return { ok: false, error: err.error };
|
|
38
|
+
throw err;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
class Parser {
|
|
42
|
+
source;
|
|
43
|
+
tokens;
|
|
44
|
+
pos = 0;
|
|
45
|
+
constructor(source, tokens) {
|
|
46
|
+
this.source = source;
|
|
47
|
+
this.tokens = tokens;
|
|
48
|
+
}
|
|
49
|
+
parseQuery() {
|
|
50
|
+
const groups = [this.parseGroup()];
|
|
51
|
+
while (this.peek()?.kind === 'plus') {
|
|
52
|
+
this.advance();
|
|
53
|
+
groups.push(this.parseGroup());
|
|
54
|
+
}
|
|
55
|
+
const trailing = this.peek();
|
|
56
|
+
if (trailing)
|
|
57
|
+
this.fail(`unexpected "${trailing.value}"`, trailing.start);
|
|
58
|
+
return groups;
|
|
59
|
+
}
|
|
60
|
+
parseGroup() {
|
|
61
|
+
const filters = [this.parseFilter()];
|
|
62
|
+
while (this.peek()?.kind === 'comma') {
|
|
63
|
+
this.advance();
|
|
64
|
+
filters.push(this.parseFilter());
|
|
65
|
+
}
|
|
66
|
+
return { filters };
|
|
67
|
+
}
|
|
68
|
+
parseFilter() {
|
|
69
|
+
const first = this.require('expected a filter');
|
|
70
|
+
let negate = false;
|
|
71
|
+
let head = first;
|
|
72
|
+
if (first.kind === 'bang') {
|
|
73
|
+
negate = true;
|
|
74
|
+
this.advance();
|
|
75
|
+
head = this.require('expected a class name or GlobalId after "!"');
|
|
76
|
+
}
|
|
77
|
+
if (head.kind !== 'word' && head.kind !== 'string' && head.kind !== 'regex') {
|
|
78
|
+
this.fail(`unexpected "${head.value}"`, head.start);
|
|
79
|
+
}
|
|
80
|
+
this.advance();
|
|
81
|
+
const after = this.peek();
|
|
82
|
+
if (after?.kind === 'dot') {
|
|
83
|
+
if (negate)
|
|
84
|
+
this.failNegate(first);
|
|
85
|
+
this.advance();
|
|
86
|
+
return this.finishProperty(first, nameOf(head));
|
|
87
|
+
}
|
|
88
|
+
// `Pset_BeamCommon."IsExternal"` — a bare-word property set keeps its '.'
|
|
89
|
+
// inside the word (that is what keeps a decimal like `1.5` one token), so
|
|
90
|
+
// the separator never reaches the branch above and the quoted property
|
|
91
|
+
// name arrives as the NEXT token. Without this, only the regex spelling
|
|
92
|
+
// `/Pset_.*Common/."IsExternal"` parsed, and the literal one failed with a
|
|
93
|
+
// message about a missing operator (#4091).
|
|
94
|
+
if (head.kind === 'word' &&
|
|
95
|
+
head.value.length > 1 &&
|
|
96
|
+
head.value.endsWith('.') &&
|
|
97
|
+
(after?.kind === 'string' || after?.kind === 'regex')) {
|
|
98
|
+
if (negate)
|
|
99
|
+
this.failNegate(first);
|
|
100
|
+
return this.finishProperty(first, { kind: 'string', text: head.value.slice(0, -1) });
|
|
101
|
+
}
|
|
102
|
+
if (after?.kind === 'op') {
|
|
103
|
+
if (negate)
|
|
104
|
+
this.failNegate(first);
|
|
105
|
+
if (head.kind !== 'word') {
|
|
106
|
+
this.fail('a quoted name or regular expression is only valid as a property-set or property name, e.g. /Pset_.*Common/.FireRating=2HR', head.start);
|
|
107
|
+
}
|
|
108
|
+
return this.finishKeyed(first, head);
|
|
109
|
+
}
|
|
110
|
+
return this.finishBare(first, head, negate);
|
|
111
|
+
}
|
|
112
|
+
/** `<pset> . <prop> <op> <value>`, the pset already consumed. */
|
|
113
|
+
finishProperty(first, pset) {
|
|
114
|
+
const propTok = this.require('expected a property name after "."');
|
|
115
|
+
if (propTok.kind !== 'word' && propTok.kind !== 'string' && propTok.kind !== 'regex') {
|
|
116
|
+
this.fail(`expected a property name after "." but found "${propTok.value}"`, propTok.start);
|
|
117
|
+
}
|
|
118
|
+
this.advance();
|
|
119
|
+
const op = this.requireOp();
|
|
120
|
+
const value = this.requireValue(op);
|
|
121
|
+
return {
|
|
122
|
+
kind: 'property',
|
|
123
|
+
pset,
|
|
124
|
+
prop: nameOf(propTok),
|
|
125
|
+
op: op.value,
|
|
126
|
+
value,
|
|
127
|
+
text: this.spanFrom(first),
|
|
128
|
+
};
|
|
129
|
+
}
|
|
130
|
+
/** `<word> <op> <value>` — property with an inline dot, keyword, query or attribute. */
|
|
131
|
+
finishKeyed(first, head) {
|
|
132
|
+
const key = head.value;
|
|
133
|
+
const op = this.requireOp();
|
|
134
|
+
const value = this.requireValue(op);
|
|
135
|
+
const text = this.spanFrom(first);
|
|
136
|
+
if (key.toLowerCase().startsWith(QUERY_PREFIX)) {
|
|
137
|
+
const keys = key.slice(QUERY_PREFIX.length);
|
|
138
|
+
if (keys.length === 0)
|
|
139
|
+
this.fail('expected a key path after "query:"', head.start);
|
|
140
|
+
return { kind: 'query', keys, op: op.value, value, text };
|
|
141
|
+
}
|
|
142
|
+
const dot = key.indexOf('.');
|
|
143
|
+
if (dot >= 0) {
|
|
144
|
+
const pset = key.slice(0, dot);
|
|
145
|
+
const prop = key.slice(dot + 1);
|
|
146
|
+
if (pset.length === 0 || prop.length === 0) {
|
|
147
|
+
this.fail(`"${key}" is not a property set and property name, e.g. Pset_WallCommon.FireRating`, head.start);
|
|
148
|
+
}
|
|
149
|
+
return {
|
|
150
|
+
kind: 'property',
|
|
151
|
+
pset: { kind: 'string', text: pset },
|
|
152
|
+
prop: { kind: 'string', text: prop },
|
|
153
|
+
op: op.value,
|
|
154
|
+
value,
|
|
155
|
+
text,
|
|
156
|
+
};
|
|
157
|
+
}
|
|
158
|
+
const keyword = KEYWORDS.get(key.toLowerCase());
|
|
159
|
+
if (keyword)
|
|
160
|
+
return { kind: keyword, op: op.value, value, text };
|
|
161
|
+
return { kind: 'attribute', name: key, op: op.value, value, text };
|
|
162
|
+
}
|
|
163
|
+
/** A filter with no operator: a class name or a GlobalId. */
|
|
164
|
+
finishBare(first, head, negate) {
|
|
165
|
+
if (head.kind !== 'word') {
|
|
166
|
+
this.fail(`"${head.value}" is not a filter: a quoted value or regular expression needs an attribute or property to compare, e.g. Name=${head.kind === 'regex' ? `/${head.value}/` : `"${head.value}"`}`, head.start);
|
|
167
|
+
}
|
|
168
|
+
const text = this.spanFrom(first);
|
|
169
|
+
if (head.value.includes('.')) {
|
|
170
|
+
this.fail(`"${head.value}" reads as a property set and property name, so it needs one of the operators = != > >= < <= *= !*= and a value`, head.start);
|
|
171
|
+
}
|
|
172
|
+
if (head.value.toLowerCase().startsWith('ifc')) {
|
|
173
|
+
return { kind: 'class', name: head.value, negate, text };
|
|
174
|
+
}
|
|
175
|
+
if (GLOBAL_ID.test(head.value)) {
|
|
176
|
+
return { kind: 'globalId', id: head.value, negate, text };
|
|
177
|
+
}
|
|
178
|
+
this.fail(`"${head.value}" is not an IFC class name (those start with "Ifc"), a 22-character GlobalId, or a comparison such as Name=${head.value}`, head.start);
|
|
179
|
+
}
|
|
180
|
+
// ── Token helpers ───────────────────────────────────────────────────────
|
|
181
|
+
peek() {
|
|
182
|
+
return this.tokens[this.pos];
|
|
183
|
+
}
|
|
184
|
+
advance() {
|
|
185
|
+
this.pos += 1;
|
|
186
|
+
}
|
|
187
|
+
require(message) {
|
|
188
|
+
const tok = this.peek();
|
|
189
|
+
if (!tok || tok.kind === 'comma' || tok.kind === 'plus') {
|
|
190
|
+
this.fail(message, tok ? tok.start : this.source.length);
|
|
191
|
+
}
|
|
192
|
+
return tok;
|
|
193
|
+
}
|
|
194
|
+
requireOp() {
|
|
195
|
+
const tok = this.peek();
|
|
196
|
+
if (!tok || tok.kind !== 'op') {
|
|
197
|
+
this.fail('expected one of the operators = != > >= < <= *= !*=', tok ? tok.start : this.source.length);
|
|
198
|
+
}
|
|
199
|
+
this.advance();
|
|
200
|
+
return tok;
|
|
201
|
+
}
|
|
202
|
+
requireValue(op) {
|
|
203
|
+
const tok = this.peek();
|
|
204
|
+
if (!tok || (tok.kind !== 'word' && tok.kind !== 'string' && tok.kind !== 'regex')) {
|
|
205
|
+
this.fail(`expected a value after "${op.value}"`, tok ? tok.start : this.source.length);
|
|
206
|
+
}
|
|
207
|
+
this.advance();
|
|
208
|
+
if (tok.kind === 'word' && tok.value.toUpperCase() === 'NULL')
|
|
209
|
+
return { kind: 'null' };
|
|
210
|
+
return nameOf(tok);
|
|
211
|
+
}
|
|
212
|
+
/** The source text from `first` through the token just consumed. */
|
|
213
|
+
spanFrom(first) {
|
|
214
|
+
const last = this.tokens[this.pos - 1];
|
|
215
|
+
return this.source.slice(first.start, last.end);
|
|
216
|
+
}
|
|
217
|
+
failNegate(first) {
|
|
218
|
+
this.fail('"!" may only negate a class name or a GlobalId', first.start);
|
|
219
|
+
}
|
|
220
|
+
fail(message, offset) {
|
|
221
|
+
throw new ParseFailure({ message, offset });
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
function nameOf(tok) {
|
|
225
|
+
return tok.kind === 'regex' ? { kind: 'regex', source: tok.value } : { kind: 'string', text: tok.value };
|
|
226
|
+
}
|
|
227
|
+
//# sourceMappingURL=parse.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parse.js","sourceRoot":"","sources":["../../src/selector/parse.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Lexer for the IfcOpenShell selector syntax.
|
|
3
|
+
*
|
|
4
|
+
* The rules below are ifc-lite's reading of
|
|
5
|
+
* <https://docs.ifcopenshell.org/ifcopenshell-python/selector_syntax.html>,
|
|
6
|
+
* stated here because the page describes the language in prose rather than a
|
|
7
|
+
* grammar:
|
|
8
|
+
*
|
|
9
|
+
* - Whitespace is insignificant outside quotes.
|
|
10
|
+
* - `,` separates filters within a group, `+` separates groups.
|
|
11
|
+
* - `!` immediately followed by `=` is the `!=` operator, followed by `*=` is
|
|
12
|
+
* `!*=`, and otherwise negates the class or GlobalId that follows.
|
|
13
|
+
* - `*` is only ever part of `*=`. A trailing `*` is NOT a glob in this
|
|
14
|
+
* grammar, so `IfcWall*` is a lexical error rather than a silent no-match —
|
|
15
|
+
* the exact shape reported in #4091.
|
|
16
|
+
* - `"…"` quotes a value; `\"` and `\\` escape inside it.
|
|
17
|
+
* - `/…/` is a regular expression; `\/` escapes a slash inside the body. No
|
|
18
|
+
* trailing flags: the grammar has none, so `/foo/i` is a lexical error at
|
|
19
|
+
* the `i` rather than a silently different match.
|
|
20
|
+
* - A bare word runs until whitespace or one of `,+=!<>*"/`, and may not start
|
|
21
|
+
* with `.`; a `.` in that leading position is the property-set separator, so
|
|
22
|
+
* both `Pset_WallCommon.FireRating` (one word, split by the parser) and
|
|
23
|
+
* `/Pset_.*Common/.FireRating` (regex, dot, word) read correctly while a
|
|
24
|
+
* decimal value such as `1.5` stays one word.
|
|
25
|
+
*/
|
|
26
|
+
import type { SelectorParseError } from './ast.js';
|
|
27
|
+
/** Lexeme classes. Not exported: `Token` is the only shape callers name. */
|
|
28
|
+
type TokenKind = 'word' | 'string' | 'regex' | 'op' | 'comma' | 'plus' | 'bang' | 'dot';
|
|
29
|
+
export interface Token {
|
|
30
|
+
kind: TokenKind;
|
|
31
|
+
/** Word text, string/regex body, or the operator spelling. */
|
|
32
|
+
value: string;
|
|
33
|
+
/** 0-based offset of the token's first character. */
|
|
34
|
+
start: number;
|
|
35
|
+
/** 0-based offset one past the token's last character. */
|
|
36
|
+
end: number;
|
|
37
|
+
}
|
|
38
|
+
export type TokenizeResult = {
|
|
39
|
+
ok: true;
|
|
40
|
+
tokens: Token[];
|
|
41
|
+
} | {
|
|
42
|
+
ok: false;
|
|
43
|
+
error: SelectorParseError;
|
|
44
|
+
};
|
|
45
|
+
export declare function tokenizeSelector(text: string): TokenizeResult;
|
|
46
|
+
export {};
|
|
47
|
+
//# sourceMappingURL=tokenize.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tokenize.d.ts","sourceRoot":"","sources":["../../src/selector/tokenize.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAEnD,4EAA4E;AAC5E,KAAK,SAAS,GACV,MAAM,GACN,QAAQ,GACR,OAAO,GACP,IAAI,GACJ,OAAO,GACP,MAAM,GACN,MAAM,GACN,KAAK,CAAC;AAEV,MAAM,WAAW,KAAK;IACpB,IAAI,EAAE,SAAS,CAAC;IAChB,8DAA8D;IAC9D,KAAK,EAAE,MAAM,CAAC;IACd,qDAAqD;IACrD,KAAK,EAAE,MAAM,CAAC;IACd,0DAA0D;IAC1D,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,MAAM,cAAc,GACtB;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,MAAM,EAAE,KAAK,EAAE,CAAA;CAAE,GAC7B;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,kBAAkB,CAAA;CAAE,CAAC;AAa7C,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,CA2E7D"}
|
|
@@ -0,0 +1,147 @@
|
|
|
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
|
+
/** Characters that end a bare word. */
|
|
5
|
+
const WORD_BREAK = new Set([',', '+', '=', '!', '<', '>', '*', '"', '/']);
|
|
6
|
+
function isSpace(ch) {
|
|
7
|
+
return ch === ' ' || ch === '\t' || ch === '\n' || ch === '\r' || ch === '\f' || ch === '\v';
|
|
8
|
+
}
|
|
9
|
+
function fail(message, offset) {
|
|
10
|
+
return { ok: false, error: { message, offset } };
|
|
11
|
+
}
|
|
12
|
+
export function tokenizeSelector(text) {
|
|
13
|
+
const tokens = [];
|
|
14
|
+
let i = 0;
|
|
15
|
+
while (i < text.length) {
|
|
16
|
+
const ch = text[i];
|
|
17
|
+
if (isSpace(ch)) {
|
|
18
|
+
i += 1;
|
|
19
|
+
continue;
|
|
20
|
+
}
|
|
21
|
+
if (ch === ',') {
|
|
22
|
+
tokens.push({ kind: 'comma', value: ',', start: i, end: i + 1 });
|
|
23
|
+
i += 1;
|
|
24
|
+
continue;
|
|
25
|
+
}
|
|
26
|
+
if (ch === '+') {
|
|
27
|
+
tokens.push({ kind: 'plus', value: '+', start: i, end: i + 1 });
|
|
28
|
+
i += 1;
|
|
29
|
+
continue;
|
|
30
|
+
}
|
|
31
|
+
if (ch === '.') {
|
|
32
|
+
tokens.push({ kind: 'dot', value: '.', start: i, end: i + 1 });
|
|
33
|
+
i += 1;
|
|
34
|
+
continue;
|
|
35
|
+
}
|
|
36
|
+
if (ch === '!') {
|
|
37
|
+
if (text[i + 1] === '=') {
|
|
38
|
+
tokens.push({ kind: 'op', value: '!=', start: i, end: i + 2 });
|
|
39
|
+
i += 2;
|
|
40
|
+
}
|
|
41
|
+
else if (text[i + 1] === '*' && text[i + 2] === '=') {
|
|
42
|
+
tokens.push({ kind: 'op', value: '!*=', start: i, end: i + 3 });
|
|
43
|
+
i += 3;
|
|
44
|
+
}
|
|
45
|
+
else {
|
|
46
|
+
tokens.push({ kind: 'bang', value: '!', start: i, end: i + 1 });
|
|
47
|
+
i += 1;
|
|
48
|
+
}
|
|
49
|
+
continue;
|
|
50
|
+
}
|
|
51
|
+
if (ch === '*') {
|
|
52
|
+
if (text[i + 1] !== '=') {
|
|
53
|
+
return fail(`"*" is only valid as part of the "*=" (contains) operator; this grammar has no "*" wildcard. Use a regular expression such as /Ifc.*Wall/ instead.`, i);
|
|
54
|
+
}
|
|
55
|
+
tokens.push({ kind: 'op', value: '*=', start: i, end: i + 2 });
|
|
56
|
+
i += 2;
|
|
57
|
+
continue;
|
|
58
|
+
}
|
|
59
|
+
if (ch === '=') {
|
|
60
|
+
tokens.push({ kind: 'op', value: '=', start: i, end: i + 1 });
|
|
61
|
+
i += 1;
|
|
62
|
+
continue;
|
|
63
|
+
}
|
|
64
|
+
if (ch === '<' || ch === '>') {
|
|
65
|
+
const two = text[i + 1] === '=';
|
|
66
|
+
const value = two ? `${ch}=` : ch;
|
|
67
|
+
tokens.push({ kind: 'op', value, start: i, end: i + value.length });
|
|
68
|
+
i += value.length;
|
|
69
|
+
continue;
|
|
70
|
+
}
|
|
71
|
+
if (ch === '"') {
|
|
72
|
+
const quoted = readQuoted(text, i);
|
|
73
|
+
if (!quoted.ok)
|
|
74
|
+
return quoted;
|
|
75
|
+
tokens.push(quoted.token);
|
|
76
|
+
i = quoted.token.end;
|
|
77
|
+
continue;
|
|
78
|
+
}
|
|
79
|
+
if (ch === '/') {
|
|
80
|
+
const regex = readRegex(text, i);
|
|
81
|
+
if (!regex.ok)
|
|
82
|
+
return regex;
|
|
83
|
+
tokens.push(regex.token);
|
|
84
|
+
i = regex.token.end;
|
|
85
|
+
continue;
|
|
86
|
+
}
|
|
87
|
+
const start = i;
|
|
88
|
+
while (i < text.length) {
|
|
89
|
+
const c = text[i];
|
|
90
|
+
if (isSpace(c) || WORD_BREAK.has(c))
|
|
91
|
+
break;
|
|
92
|
+
i += 1;
|
|
93
|
+
}
|
|
94
|
+
tokens.push({ kind: 'word', value: text.slice(start, i), start, end: i });
|
|
95
|
+
}
|
|
96
|
+
return { ok: true, tokens };
|
|
97
|
+
}
|
|
98
|
+
/** `"foo \"bar\" baz"` — the token value is the unescaped body. */
|
|
99
|
+
function readQuoted(text, start) {
|
|
100
|
+
let out = '';
|
|
101
|
+
let i = start + 1;
|
|
102
|
+
while (i < text.length) {
|
|
103
|
+
const c = text[i];
|
|
104
|
+
if (c === '\\') {
|
|
105
|
+
const next = text[i + 1];
|
|
106
|
+
if (next === undefined)
|
|
107
|
+
break;
|
|
108
|
+
out += next;
|
|
109
|
+
i += 2;
|
|
110
|
+
continue;
|
|
111
|
+
}
|
|
112
|
+
if (c === '"') {
|
|
113
|
+
return { ok: true, token: { kind: 'string', value: out, start, end: i + 1 } };
|
|
114
|
+
}
|
|
115
|
+
out += c;
|
|
116
|
+
i += 1;
|
|
117
|
+
}
|
|
118
|
+
return { ok: false, error: { message: 'unterminated quoted value: no closing "', offset: start } };
|
|
119
|
+
}
|
|
120
|
+
/** `/foo\/bar/` — the token value is the regex source with `\/` unescaped. */
|
|
121
|
+
function readRegex(text, start) {
|
|
122
|
+
let out = '';
|
|
123
|
+
let i = start + 1;
|
|
124
|
+
while (i < text.length) {
|
|
125
|
+
const c = text[i];
|
|
126
|
+
if (c === '\\') {
|
|
127
|
+
const next = text[i + 1];
|
|
128
|
+
if (next === undefined)
|
|
129
|
+
break;
|
|
130
|
+
// Only `\/` is about the delimiter; every other escape belongs to the
|
|
131
|
+
// regular expression and is handed through untouched.
|
|
132
|
+
out += next === '/' ? '/' : `\\${next}`;
|
|
133
|
+
i += 2;
|
|
134
|
+
continue;
|
|
135
|
+
}
|
|
136
|
+
if (c === '/') {
|
|
137
|
+
if (out.length === 0) {
|
|
138
|
+
return { ok: false, error: { message: 'empty regular expression: // matches nothing', offset: start } };
|
|
139
|
+
}
|
|
140
|
+
return { ok: true, token: { kind: 'regex', value: out, start, end: i + 1 } };
|
|
141
|
+
}
|
|
142
|
+
out += c;
|
|
143
|
+
i += 1;
|
|
144
|
+
}
|
|
145
|
+
return { ok: false, error: { message: 'unterminated regular expression: no closing /', offset: start } };
|
|
146
|
+
}
|
|
147
|
+
//# sourceMappingURL=tokenize.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tokenize.js","sourceRoot":"","sources":["../../src/selector/tokenize.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ifc-lite/query",
|
|
3
|
-
"version": "2.1
|
|
3
|
+
"version": "2.3.1",
|
|
4
4
|
"description": "Query system for IFC-Lite",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -13,10 +13,11 @@
|
|
|
13
13
|
}
|
|
14
14
|
},
|
|
15
15
|
"dependencies": {
|
|
16
|
-
"@ifc-lite/
|
|
17
|
-
"@ifc-lite/
|
|
18
|
-
"@ifc-lite/
|
|
19
|
-
"@ifc-lite/geometry": "^
|
|
16
|
+
"@ifc-lite/data": "^4.2.0",
|
|
17
|
+
"@ifc-lite/spatial": "^1.14.17",
|
|
18
|
+
"@ifc-lite/regex-guard": "^0.2.0",
|
|
19
|
+
"@ifc-lite/geometry": "^5.0.0",
|
|
20
|
+
"@ifc-lite/parser": "^6.1.0"
|
|
20
21
|
},
|
|
21
22
|
"devDependencies": {
|
|
22
23
|
"typescript": "^6.0.3",
|