@witchcraft/expressit 0.2.0 → 0.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +5 -2
- package/dist/Lexer.d.ts +3 -5
- package/dist/Lexer.d.ts.map +1 -1
- package/dist/Lexer.js +21 -40
- package/dist/Parser.d.ts +1 -1
- package/dist/Parser.d.ts.map +1 -1
- package/dist/Parser.js +35 -64
- package/dist/ast/builders/condition.js +2 -4
- package/dist/ast/builders/delim.d.ts +1 -1
- package/dist/ast/builders/delim.d.ts.map +1 -1
- package/dist/ast/builders/delim.js +2 -4
- package/dist/ast/builders/expression.js +1 -2
- package/dist/ast/builders/pos.js +3 -6
- package/dist/ast/builders/variable.js +2 -4
- package/dist/ast/error.js +1 -2
- package/dist/ast/handlers.d.ts +2 -2
- package/dist/ast/handlers.d.ts.map +1 -1
- package/dist/ast/handlers.js +7 -11
- package/dist/defaults/defaultKeyParser.js +1 -2
- package/dist/examples/ParserWithSqlSupport.d.ts +62 -0
- package/dist/examples/ParserWithSqlSupport.d.ts.map +1 -0
- package/dist/examples/ParserWithSqlSupport.js +269 -0
- package/dist/examples/{shortcutContextParser.d.ts → ShortcutContextParser.d.ts} +5 -5
- package/dist/examples/ShortcutContextParser.d.ts.map +1 -0
- package/dist/examples/{shortcutContextParser.js → ShortcutContextParser.js} +6 -12
- package/dist/examples/index.d.ts +2 -1
- package/dist/examples/index.d.ts.map +1 -1
- package/dist/examples/index.js +3 -1
- package/dist/internal/ExpressitError.js +3 -5
- package/dist/internal/checkParserOpts.d.ts +1 -1
- package/dist/internal/checkParserOpts.d.ts.map +1 -1
- package/dist/internal/checkParserOpts.js +8 -16
- package/dist/internal/escapeVariableOrPrefix.js +4 -8
- package/dist/internal/parseParserOptions.d.ts +1 -1
- package/dist/internal/parseParserOptions.d.ts.map +1 -1
- package/dist/package.json.js +14 -147
- package/dist/types/parser.d.ts +6 -6
- package/dist/types/parser.d.ts.map +1 -1
- package/dist/utils/generateParentsMap.js +20 -40
- package/dist/utils/getCursorInfo.js +9 -17
- package/dist/utils/getOppositeDelimiter.js +3 -6
- package/dist/utils/prettyAst.js +1 -2
- package/package.json +25 -23
- package/src/Lexer.ts +5 -4
- package/src/Parser.ts +9 -3
- package/src/ast/builders/delim.ts +1 -1
- package/src/ast/handlers.ts +3 -3
- package/src/examples/ParserWithSqlSupport.ts +365 -0
- package/src/examples/{shortcutContextParser.ts → ShortcutContextParser.ts} +14 -14
- package/src/examples/index.ts +2 -1
- package/src/internal/ExpressitError.ts +2 -2
- package/src/internal/checkParserOpts.ts +3 -3
- package/src/internal/parseParserOptions.ts +2 -2
- package/src/types/parser.ts +6 -6
- package/src/utils/getCursorInfo.ts +1 -1
- package/dist/examples/shortcutContextParser.d.ts.map +0 -1
- package/dist/global.d.js +0 -1
- package/dist/package.js +0 -7
- package/src/global.d.ts +0 -4
- package/src/package.js +0 -11
package/README.md
CHANGED
|
@@ -35,7 +35,10 @@ pnpm install @witchcraft/expressit
|
|
|
35
35
|
- `extractTokens`, `getCursorInfo`, `getOppositeDelimiter`, `getSurroundingErrors` - useful for adding custom syntax highlighting.
|
|
36
36
|
- `prettyAst` - pretty prints a compact version of the ast for debugging
|
|
37
37
|
- other minor utilities - `isDelimiter`, `isQuote`, etc.
|
|
38
|
-
- **Pre-Configured Parsers**
|
|
38
|
+
- **Pre-Configured Example Parsers**
|
|
39
|
+
- Shortcut Context Parser / Boolean Parser - Intended for parsing shortcut contexts in a similar way to VS Code).
|
|
40
|
+
- Experimental parser with **SQL output support** - Create an easy to read query language that can be used to generate safe SQL queries (it's flexible, but built to integrate
|
|
41
|
+
easily with drizzle).
|
|
39
42
|
- **Lots of Docs and Tests**
|
|
40
43
|
|
|
41
44
|
# Usage
|
|
@@ -79,7 +82,7 @@ const parser = new Parser({/* opts */})
|
|
|
79
82
|
// ON ENTER/SUBMIT
|
|
80
83
|
const res = parser.evaluate(ast, context)
|
|
81
84
|
```
|
|
82
|
-
Many more examples can be found in the [tests](https://github.com/witchcraftjs/expressit/blob/master/tests), and there's also some
|
|
85
|
+
Many more examples can be found in the [tests](https://github.com/witchcraftjs/expressit/blob/master/tests), and there's also some example pre-configured parsers in [src/examples](https://github.com/witchcraftjs/expressit/blob/master/src/examples/) whose usage can be seen in [./test/examples.spec.ts](https://github.com/witchcraftjs/expressit/blob/master/test/examples.spec.ts).
|
|
83
86
|
|
|
84
87
|
## [Development](./docs-src/DEVELOPMENT.md)
|
|
85
88
|
|
package/dist/Lexer.d.ts
CHANGED
|
@@ -74,9 +74,7 @@ export interface RealTokenType<T extends $T = $T, TPush extends string | undefin
|
|
|
74
74
|
}
|
|
75
75
|
export interface TokenCategoryType<TC extends $C, TTokens extends RealTokenType<$T, any>[] = RealTokenType<$T, any>[]> extends BaseTokenType<TC> {
|
|
76
76
|
isCategory: true;
|
|
77
|
-
entries: Partial<
|
|
78
|
-
[key in TTokens[number]["type"]]: TTokens[number];
|
|
79
|
-
}>;
|
|
77
|
+
entries: Partial<Record<TTokens[number]["type"], TTokens[number]>>;
|
|
80
78
|
}
|
|
81
79
|
export type TokenType<TC extends $C | $T> = TC extends $T ? RealTokenType<TC, any> : TC extends $C ? TokenCategoryType<TC> : never;
|
|
82
80
|
export interface Token<T extends $T | $C = $T | $C> {
|
|
@@ -95,8 +93,8 @@ export declare class Lexer {
|
|
|
95
93
|
branches: {
|
|
96
94
|
[key in keyof typeof MODE]?: TokenType<$T>[];
|
|
97
95
|
};
|
|
98
|
-
opts: FullParserOptions<
|
|
99
|
-
constructor(opts?: Partial<FullParserOptions<
|
|
96
|
+
opts: FullParserOptions<any>;
|
|
97
|
+
constructor(opts?: Partial<FullParserOptions<any>>);
|
|
100
98
|
calculateSymbolInfo(): SymbolInfo;
|
|
101
99
|
createTokens(): {
|
|
102
100
|
$: {
|
package/dist/Lexer.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Lexer.d.ts","sourceRoot":"","sources":["../src/Lexer.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AAIzD,aAAK,IAAI;IACR,IAAI,SAAS;IACb,iBAAiB,sBAAsB;IACvC,UAAU,eAAe;IACzB,UAAU,eAAe;IACzB,YAAY,iBAAiB;IAC7B,SAAS,cAAc;IACvB,SAAS,cAAc;IACvB,YAAY,iBAAiB;IAC7B,yBAAyB,8BAA8B;IACvD,kBAAkB,uBAAuB;IACzC,kBAAkB,uBAAuB;IACzC,oBAAoB,yBAAyB;CAE7C;AAID,oBAAY,EAAE;IACb,CAAC,MAAM,CAAE,cAAc;IACvB,cAAc,mBAAmB;IACjC,WAAW,gBAAgB;IAC3B,gBAAgB,qBAAqB;IACrC,gBAAgB,qBAAqB;IACrC,kBAAkB,uBAAuB;IACzC,MAAM,WAAW;IACjB,OAAO,YAAY;IACnB,OAAO,YAAY;IACnB,OAAO,YAAY;IACnB,QAAQ,aAAa;IACrB,QAAQ,aAAa;IACrB,WAAW,gBAAgB;IAC3B,SAAS,cAAc;IACvB,WAAW,gBAAgB;IAC3B,cAAc,mBAAmB;IACjC,OAAO,YAAY;IACnB,OAAO,YAAY;IACnB,SAAS,cAAc;IACvB,SAAS,cAAc;IACvB,YAAY,iBAAiB;IAC7B,YAAY,iBAAiB;IAC7B,cAAc,mBAAmB;CACjC;AAGD,oBAAY,EAAE;IACb,GAAG,QAAQ;IACX,SAAS,cAAc;IACvB,SAAS,cAAc;IACvB,gBAAgB,qBAAqB;IACrC,gBAAgB,qBAAqB;IACrC,kBAAkB,uBAAuB;IACzC,WAAW,gBAAgB;IAC3B,YAAY,iBAAiB;IAC7B,YAAY,iBAAiB;IAC7B,KAAK,UAAU;CACf;AAGD,KAAK,UAAU,GAAG;IACjB,MAAM,EAAE,MAAM,EAAE,CAAA;IAChB,OAAO,EAAE,MAAM,EAAE,CAAA;IACjB,OAAO,EAAE,MAAM,EAAE,CAAA;IACjB,OAAO,EAAE,MAAM,EAAE,CAAA;IACjB,QAAQ,EAAE,MAAM,EAAE,CAAA;IAClB,QAAQ,EAAE,MAAM,EAAE,CAAA;IAClB,GAAG,EAAE,MAAM,EAAE,CAAA;IACb,qBAAqB,EAAE,OAAO,CAAA;IAC9B,oBAAoB,EAAE,OAAO,CAAA;CAC7B,CAAA;AAED,KAAK,cAAc,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,MAAM,GAAG,OAAO,CAAA;AAEjG,UAAU,aAAa,CAAC,CAAC,SAAS,EAAE,GAAG,EAAE;IACxC,IAAI,EAAE,CAAC,CAAA;IACP,IAAI,CAAC,EAAE,OAAO,CAAA;CACd;AACD,MAAM,WAAW,aAAa,CAC7B,CAAC,SAAS,EAAE,GAAG,EAAE,EACjB,KAAK,SAAS,MAAM,GAAG,SAAS,GAAG,SAAS,CAE3C,SAAQ,aAAa,CAAC,CAAC,CAAC;IACzB,OAAO,EAAE,cAAc,CAAA;IACvB,IAAI,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,KAAK,CAAC,CAAA;IAEzD,SAAS,CAAC,EAAE,EAAE,CAAA;IACd,IAAI,CAAC,EAAE,OAAO,CAAA;CACd;AACD,MAAM,WAAW,iBAAiB,CACjC,EAAE,SAAS,EAAE,EACb,OAAO,SAAS,aAAa,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,GAAG,aAAa,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,CAClE,SAAQ,aAAa,CAAC,EAAE,CAAC;IAC1B,UAAU,EAAE,IAAI,CAAA;IAChB,OAAO,EAAE,OAAO,CAAC
|
|
1
|
+
{"version":3,"file":"Lexer.d.ts","sourceRoot":"","sources":["../src/Lexer.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AAIzD,aAAK,IAAI;IACR,IAAI,SAAS;IACb,iBAAiB,sBAAsB;IACvC,UAAU,eAAe;IACzB,UAAU,eAAe;IACzB,YAAY,iBAAiB;IAC7B,SAAS,cAAc;IACvB,SAAS,cAAc;IACvB,YAAY,iBAAiB;IAC7B,yBAAyB,8BAA8B;IACvD,kBAAkB,uBAAuB;IACzC,kBAAkB,uBAAuB;IACzC,oBAAoB,yBAAyB;CAE7C;AAID,oBAAY,EAAE;IACb,CAAC,MAAM,CAAE,cAAc;IACvB,cAAc,mBAAmB;IACjC,WAAW,gBAAgB;IAC3B,gBAAgB,qBAAqB;IACrC,gBAAgB,qBAAqB;IACrC,kBAAkB,uBAAuB;IACzC,MAAM,WAAW;IACjB,OAAO,YAAY;IACnB,OAAO,YAAY;IACnB,OAAO,YAAY;IACnB,QAAQ,aAAa;IACrB,QAAQ,aAAa;IACrB,WAAW,gBAAgB;IAC3B,SAAS,cAAc;IACvB,WAAW,gBAAgB;IAC3B,cAAc,mBAAmB;IACjC,OAAO,YAAY;IACnB,OAAO,YAAY;IACnB,SAAS,cAAc;IACvB,SAAS,cAAc;IACvB,YAAY,iBAAiB;IAC7B,YAAY,iBAAiB;IAC7B,cAAc,mBAAmB;CACjC;AAGD,oBAAY,EAAE;IACb,GAAG,QAAQ;IACX,SAAS,cAAc;IACvB,SAAS,cAAc;IACvB,gBAAgB,qBAAqB;IACrC,gBAAgB,qBAAqB;IACrC,kBAAkB,uBAAuB;IACzC,WAAW,gBAAgB;IAC3B,YAAY,iBAAiB;IAC7B,YAAY,iBAAiB;IAC7B,KAAK,UAAU;CACf;AAGD,KAAK,UAAU,GAAG;IACjB,MAAM,EAAE,MAAM,EAAE,CAAA;IAChB,OAAO,EAAE,MAAM,EAAE,CAAA;IACjB,OAAO,EAAE,MAAM,EAAE,CAAA;IACjB,OAAO,EAAE,MAAM,EAAE,CAAA;IACjB,QAAQ,EAAE,MAAM,EAAE,CAAA;IAClB,QAAQ,EAAE,MAAM,EAAE,CAAA;IAClB,GAAG,EAAE,MAAM,EAAE,CAAA;IACb,qBAAqB,EAAE,OAAO,CAAA;IAC9B,oBAAoB,EAAE,OAAO,CAAA;CAC7B,CAAA;AAED,KAAK,cAAc,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,MAAM,GAAG,OAAO,CAAA;AAEjG,UAAU,aAAa,CAAC,CAAC,SAAS,EAAE,GAAG,EAAE;IACxC,IAAI,EAAE,CAAC,CAAA;IACP,IAAI,CAAC,EAAE,OAAO,CAAA;CACd;AACD,MAAM,WAAW,aAAa,CAC7B,CAAC,SAAS,EAAE,GAAG,EAAE,EACjB,KAAK,SAAS,MAAM,GAAG,SAAS,GAAG,SAAS,CAE3C,SAAQ,aAAa,CAAC,CAAC,CAAC;IACzB,OAAO,EAAE,cAAc,CAAA;IACvB,IAAI,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,KAAK,CAAC,CAAA;IAEzD,SAAS,CAAC,EAAE,EAAE,CAAA;IACd,IAAI,CAAC,EAAE,OAAO,CAAA;CACd;AACD,MAAM,WAAW,iBAAiB,CACjC,EAAE,SAAS,EAAE,EACb,OAAO,SAAS,aAAa,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,GAAG,aAAa,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,CAClE,SAAQ,aAAa,CAAC,EAAE,CAAC;IAC1B,UAAU,EAAE,IAAI,CAAA;IAChB,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;CAElE;AAED,MAAM,MAAM,SAAS,CAAC,EAAE,SAAS,EAAE,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,GACvD,aAAa,CAAC,EAAE,EAAE,GAAG,CAAC,GACtB,EAAE,SAAS,EAAE,GACb,iBAAiB,CAAC,EAAE,CAAC,GACrB,KAAK,CAAA;AAwDP,MAAM,WAAW,KAAK,CAAC,CAAC,SAAS,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE;IACjD,IAAI,EAAE,CAAC,CAAA;IACP,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,EAAE,MAAM,CAAA;IACnB,SAAS,EAAE,MAAM,CAAA;IACjB,OAAO,CAAC,EAAE,OAAO,CAAA;CACjB;AAED,qBAAa,KAAK;IACjB,OAAO,EAAE,UAAU,CAAA;IAEnB,CAAC,EAAE;SAAE,GAAG,IAAI,EAAE,GAAG,aAAa,CAAC,GAAG,EAAE,GAAG,CAAC;KAAE,CAAA;IAE1C,WAAW,EAAE,UAAU,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,aAAa,CAAC,CAAA;IAE7D,QAAQ,EAAE;SAAE,GAAG,IAAI,MAAM,OAAO,IAAI,CAAC,CAAC,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE;KAAE,CAAA;IAEzD,IAAI,EAAE,iBAAiB,CAAC,GAAG,CAAC,CAAA;gBAG3B,IAAI,GAAE,OAAO,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAM;IAW3C,mBAAmB,IAAI,UAAU;IAwDjC,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAiUZ,kBAAkB,IAAI;SAAE,GAAG,IAAI,MAAM,OAAO,IAAI,CAAC,CAAC,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE;KAAE;IAgFrE,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,CAAC,EAAE,CAAC,EAAE;CAyCpC"}
|
package/dist/Lexer.js
CHANGED
|
@@ -1,9 +1,6 @@
|
|
|
1
1
|
var __defProp = Object.defineProperty;
|
|
2
2
|
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
3
|
-
var __publicField = (obj, key, value) =>
|
|
4
|
-
__defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
5
|
-
return value;
|
|
6
|
-
};
|
|
3
|
+
var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
7
4
|
import { isBlank } from "@alanscodelog/utils/isBlank.js";
|
|
8
5
|
import { pushIfNotIn } from "@alanscodelog/utils/pushIfNotIn.js";
|
|
9
6
|
import { checkParserOpts } from "./internal/checkParserOpts.js";
|
|
@@ -76,8 +73,7 @@ function matchWhileCharNotEqualToUnescaped(char) {
|
|
|
76
73
|
end++;
|
|
77
74
|
c = input[end];
|
|
78
75
|
}
|
|
79
|
-
if (start === end)
|
|
80
|
-
return false;
|
|
76
|
+
if (start === end) return false;
|
|
81
77
|
return input.slice(start, end);
|
|
82
78
|
};
|
|
83
79
|
}
|
|
@@ -119,12 +115,9 @@ class Lexer {
|
|
|
119
115
|
const syms = [...symOrs, ...symAnds, ...symNots];
|
|
120
116
|
const customPropertyOperators = opts.customPropertyOperators ?? [];
|
|
121
117
|
const expandedPropertySeparator = opts.expandedPropertySeparator ?? "";
|
|
122
|
-
if (expandedPropertySeparator)
|
|
123
|
-
|
|
124
|
-
if (
|
|
125
|
-
pushIfNotIn(syms, customPropertyOperators);
|
|
126
|
-
if (opts.regexValues)
|
|
127
|
-
syms.push("\\/");
|
|
118
|
+
if (expandedPropertySeparator) syms.push(expandedPropertySeparator);
|
|
119
|
+
if (customPropertyOperators.length > 0) pushIfNotIn(syms, customPropertyOperators);
|
|
120
|
+
if (opts.regexValues) syms.push("\\/");
|
|
128
121
|
if (opts.arrayValues) {
|
|
129
122
|
syms.push("\\[");
|
|
130
123
|
}
|
|
@@ -169,8 +162,7 @@ class Lexer {
|
|
|
169
162
|
end++;
|
|
170
163
|
c = input[end];
|
|
171
164
|
}
|
|
172
|
-
if (start === end)
|
|
173
|
-
return false;
|
|
165
|
+
if (start === end) return false;
|
|
174
166
|
return input.slice(start, end);
|
|
175
167
|
}
|
|
176
168
|
}),
|
|
@@ -196,8 +188,7 @@ class Lexer {
|
|
|
196
188
|
end += match.input.length;
|
|
197
189
|
}
|
|
198
190
|
return input.slice(start, end);
|
|
199
|
-
} else
|
|
200
|
-
return false;
|
|
191
|
+
} else return false;
|
|
201
192
|
}
|
|
202
193
|
}),
|
|
203
194
|
[
|
|
@@ -210,10 +201,8 @@ class Lexer {
|
|
|
210
201
|
let inGroup = 0;
|
|
211
202
|
let prevEscaped = false;
|
|
212
203
|
while (c !== void 0 && (c !== "/" || inGroup > 0 || prevEscaped)) {
|
|
213
|
-
if (c === "[")
|
|
214
|
-
|
|
215
|
-
if (c === "]" && inGroup > 0)
|
|
216
|
-
inGroup--;
|
|
204
|
+
if (c === "[") inGroup++;
|
|
205
|
+
if (c === "]" && inGroup > 0) inGroup--;
|
|
217
206
|
if (c === "\\") {
|
|
218
207
|
if (!prevEscaped) {
|
|
219
208
|
prevEscaped = true;
|
|
@@ -226,8 +215,7 @@ class Lexer {
|
|
|
226
215
|
end++;
|
|
227
216
|
c = input[end];
|
|
228
217
|
}
|
|
229
|
-
if (start === end)
|
|
230
|
-
return false;
|
|
218
|
+
if (start === end) return false;
|
|
231
219
|
return input.slice(start, end);
|
|
232
220
|
}
|
|
233
221
|
}),
|
|
@@ -245,6 +233,7 @@ class Lexer {
|
|
|
245
233
|
*/
|
|
246
234
|
(previous == null ? void 0 : previous.type) === "VALUE_NOT_SINGLE" || (previous == null ? void 0 : previous.type) === "VALUE_UNQUOTED"
|
|
247
235
|
) {
|
|
236
|
+
if (mode.startsWith(BRACKET_PREFIX)) return "BRACKET_MAIN";
|
|
248
237
|
return "MAIN";
|
|
249
238
|
}
|
|
250
239
|
switch (mode) {
|
|
@@ -253,8 +242,7 @@ class Lexer {
|
|
|
253
242
|
case "MAIN":
|
|
254
243
|
return "NOT_SINGLE";
|
|
255
244
|
default:
|
|
256
|
-
if (mode.startsWith(BRACKET_PREFIX))
|
|
257
|
-
return "BRACKET_MAIN";
|
|
245
|
+
if (mode.startsWith(BRACKET_PREFIX)) return "BRACKET_MAIN";
|
|
258
246
|
return "MAIN";
|
|
259
247
|
}
|
|
260
248
|
},
|
|
@@ -267,8 +255,7 @@ class Lexer {
|
|
|
267
255
|
push: (mode, tokens) => {
|
|
268
256
|
const previous = tokens[tokens.length - 2];
|
|
269
257
|
if ((previous == null ? void 0 : previous.type) === "VALUE_NOT_DOUBLE" || (previous == null ? void 0 : previous.type) === "VALUE_UNQUOTED") {
|
|
270
|
-
if (mode.startsWith(BRACKET_PREFIX))
|
|
271
|
-
return "BRACKET_MAIN";
|
|
258
|
+
if (mode.startsWith(BRACKET_PREFIX)) return "BRACKET_MAIN";
|
|
272
259
|
return "MAIN";
|
|
273
260
|
}
|
|
274
261
|
switch (mode) {
|
|
@@ -277,8 +264,7 @@ class Lexer {
|
|
|
277
264
|
case "MAIN":
|
|
278
265
|
return "NOT_DOUBLE";
|
|
279
266
|
default:
|
|
280
|
-
if (mode.startsWith(BRACKET_PREFIX))
|
|
281
|
-
return "BRACKET_MAIN";
|
|
267
|
+
if (mode.startsWith(BRACKET_PREFIX)) return "BRACKET_MAIN";
|
|
282
268
|
return "MAIN";
|
|
283
269
|
}
|
|
284
270
|
},
|
|
@@ -291,6 +277,7 @@ class Lexer {
|
|
|
291
277
|
push: (mode, tokens) => {
|
|
292
278
|
const previous = tokens[tokens.length - 2];
|
|
293
279
|
if ((previous == null ? void 0 : previous.type) === "VALUE_NOT_BACKTICK" || (previous == null ? void 0 : previous.type) === "VALUE_UNQUOTED") {
|
|
280
|
+
if (mode.startsWith(BRACKET_PREFIX)) return "BRACKET_MAIN";
|
|
294
281
|
return "MAIN";
|
|
295
282
|
}
|
|
296
283
|
switch (mode) {
|
|
@@ -299,8 +286,7 @@ class Lexer {
|
|
|
299
286
|
case "MAIN":
|
|
300
287
|
return "NOT_BACKTICK";
|
|
301
288
|
default:
|
|
302
|
-
if (mode.startsWith(BRACKET_PREFIX))
|
|
303
|
-
return "BRACKET_MAIN";
|
|
289
|
+
if (mode.startsWith(BRACKET_PREFIX)) return "BRACKET_MAIN";
|
|
304
290
|
return "MAIN";
|
|
305
291
|
}
|
|
306
292
|
},
|
|
@@ -350,8 +336,7 @@ class Lexer {
|
|
|
350
336
|
break;
|
|
351
337
|
}
|
|
352
338
|
}
|
|
353
|
-
if (found)
|
|
354
|
-
break;
|
|
339
|
+
if (found) break;
|
|
355
340
|
}
|
|
356
341
|
if (c === " " || c === " " || c === "(" || c === ")" || c === "'" || c === '"' || c === "`" || c === "\\" || mode === "BRACKET_MAIN" && c === "]") {
|
|
357
342
|
break;
|
|
@@ -359,8 +344,7 @@ class Lexer {
|
|
|
359
344
|
end++;
|
|
360
345
|
c = input[end];
|
|
361
346
|
}
|
|
362
|
-
if (start === end)
|
|
363
|
-
return false;
|
|
347
|
+
if (start === end) return false;
|
|
364
348
|
return input.slice(start, end);
|
|
365
349
|
}
|
|
366
350
|
}),
|
|
@@ -424,8 +408,7 @@ class Lexer {
|
|
|
424
408
|
matches: (_c, input, start) => {
|
|
425
409
|
for (const op of opts.expandedPropertySeparator) {
|
|
426
410
|
const chars = input.slice(start, start + op.length);
|
|
427
|
-
if (chars === op)
|
|
428
|
-
return op;
|
|
411
|
+
if (chars === op) return op;
|
|
429
412
|
}
|
|
430
413
|
return false;
|
|
431
414
|
}
|
|
@@ -439,8 +422,7 @@ class Lexer {
|
|
|
439
422
|
matches: (_c, input, start) => {
|
|
440
423
|
for (const op of opts.customPropertyOperators ?? []) {
|
|
441
424
|
const chars = input.slice(start, start + op.length);
|
|
442
|
-
if (chars === op)
|
|
443
|
-
return op;
|
|
425
|
+
if (chars === op) return op;
|
|
444
426
|
}
|
|
445
427
|
return false;
|
|
446
428
|
}
|
|
@@ -930,8 +912,7 @@ class Lexer {
|
|
|
930
912
|
const newIndex = index + matchLength;
|
|
931
913
|
const val = match === true ? c : match;
|
|
932
914
|
const token = createToken(type, val, index, newIndex - 1);
|
|
933
|
-
if (!t.skip)
|
|
934
|
-
tokens.push(token);
|
|
915
|
+
if (!t.skip) tokens.push(token);
|
|
935
916
|
if (t.push) {
|
|
936
917
|
mode = typeof t.push === "function" ? t.push(mode, tokens) : t.push;
|
|
937
918
|
branch = branches[mode];
|
package/dist/Parser.d.ts
CHANGED
|
@@ -6,7 +6,7 @@ import type { FullParserOptions, ParserOptions } from "./types/parser.js";
|
|
|
6
6
|
/**
|
|
7
7
|
* Creates the main parser class which handles all functionality (evaluation, validation, etc).
|
|
8
8
|
*/
|
|
9
|
-
export declare class Parser<T
|
|
9
|
+
export declare class Parser<T = any> {
|
|
10
10
|
private evaluationOptionsChecked;
|
|
11
11
|
_checkEvaluationOptions(): void;
|
|
12
12
|
private validationOptionsChecked;
|
package/dist/Parser.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Parser.d.ts","sourceRoot":"","sources":["../src/Parser.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAA;AAS3C,OAAO,EAAE,EAAE,EAAE,EAAE,EAA4B,KAAK,KAAK,EAAE,KAAK,iBAAiB,EAAE,KAAK,SAAS,EAAE,MAAM,YAAY,CAAA;AACjH,OAAO,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,SAAS,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,aAAa,EAAqB,UAAU,EAAE,YAAY,EAAG,MAAM,gBAAgB,CAAA;AACjL,OAAO,EAAE,KAAK,QAAQ,EAAW,KAAK,UAAU,EAAE,KAAK,QAAQ,EAAE,KAAK,UAAU,EAAkB,UAAU,EAAE,MAAM,kBAAkB,CAAA;AACtI,OAAO,KAAK,EAAE,iBAAiB,EAAgB,aAAa,EAA+B,MAAM,mBAAmB,CAAA;AA6CpH;;GAEG;AACH,qBAAa,MAAM,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"Parser.d.ts","sourceRoot":"","sources":["../src/Parser.ts"],"names":[],"mappings":"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"}
|
package/dist/Parser.js
CHANGED
|
@@ -1,9 +1,6 @@
|
|
|
1
1
|
var __defProp = Object.defineProperty;
|
|
2
2
|
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
3
|
-
var __publicField = (obj, key, value) =>
|
|
4
|
-
__defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
5
|
-
return value;
|
|
6
|
-
};
|
|
3
|
+
var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
7
4
|
import { get } from "@alanscodelog/utils/get.js";
|
|
8
5
|
import { insert } from "@alanscodelog/utils/insert.js";
|
|
9
6
|
import { isArray } from "@alanscodelog/utils/isArray.js";
|
|
@@ -37,11 +34,9 @@ const OPPOSITE = {
|
|
|
37
34
|
[TOKEN_TYPE.OR]: TOKEN_TYPE.AND
|
|
38
35
|
};
|
|
39
36
|
function isEqualSet(setA, setB) {
|
|
40
|
-
if (setA.size !== setB.size)
|
|
41
|
-
return false;
|
|
37
|
+
if (setA.size !== setB.size) return false;
|
|
42
38
|
for (const key of setA) {
|
|
43
|
-
if (!setB.has(key))
|
|
44
|
-
return false;
|
|
39
|
+
if (!setB.has(key)) return false;
|
|
45
40
|
}
|
|
46
41
|
return true;
|
|
47
42
|
}
|
|
@@ -58,8 +53,7 @@ const createDefaultRequires = (partial = {}) => ({
|
|
|
58
53
|
prefix: partial.prefix ?? false
|
|
59
54
|
});
|
|
60
55
|
const tokenRequiresWhitespace = (valid, whitespace, wordOps) => {
|
|
61
|
-
if (whitespace || valid === void 0)
|
|
62
|
-
return false;
|
|
56
|
+
if (whitespace || valid === void 0) return false;
|
|
63
57
|
return valid.type === TOKEN_TYPE.VALUE || [TOKEN_TYPE.AND, TOKEN_TYPE.OR, TOKEN_TYPE.NOT].includes(valid.type) && wordOps.find((_) => _.value === valid.value) !== void 0;
|
|
64
58
|
};
|
|
65
59
|
const tokenVariable = [TOKEN_TYPE.BACKTICK, TOKEN_TYPE.DOUBLEQUOTE, TOKEN_TYPE.SINGLEQUOTE, TOKEN_TYPE.VALUE, TOKEN_TYPE.REGEX];
|
|
@@ -180,13 +174,10 @@ class Parser {
|
|
|
180
174
|
return false;
|
|
181
175
|
}
|
|
182
176
|
isType(token2, type) {
|
|
183
|
-
if (token2 === void 0)
|
|
184
|
-
|
|
185
|
-
if (token2.type === type)
|
|
186
|
-
return true;
|
|
177
|
+
if (token2 === void 0) return false;
|
|
178
|
+
if (token2.type === type) return true;
|
|
187
179
|
const tokenType = this.getTokenType(token2.type);
|
|
188
|
-
if ((tokenType == null ? void 0 : tokenType.type) === type)
|
|
189
|
-
return true;
|
|
180
|
+
if ((tokenType == null ? void 0 : tokenType.type) === type) return true;
|
|
190
181
|
const category = this.$categories[type];
|
|
191
182
|
if ((category == null ? void 0 : category.entries[token2.type]) !== void 0) {
|
|
192
183
|
return true;
|
|
@@ -327,13 +318,11 @@ class Parser {
|
|
|
327
318
|
}
|
|
328
319
|
this.restoreState(state);
|
|
329
320
|
}
|
|
330
|
-
if (type === "AND" && pairs.length === 0)
|
|
331
|
-
return void 0;
|
|
321
|
+
if (type === "AND" && pairs.length === 0) return void 0;
|
|
332
322
|
let res = pairs[pairs.length - 1][0];
|
|
333
323
|
for (let i = pairs.length - 1; i > 0; i--) {
|
|
334
324
|
const before = pairs[i - 1];
|
|
335
|
-
if (type === "OR" && res === void 0 && before === void 0)
|
|
336
|
-
return void 0;
|
|
325
|
+
if (type === "OR" && res === void 0 && before === void 0) return void 0;
|
|
337
326
|
res = expression(before[0], before[1], res);
|
|
338
327
|
}
|
|
339
328
|
return res;
|
|
@@ -371,8 +360,7 @@ class Parser {
|
|
|
371
360
|
}
|
|
372
361
|
return group(not, value, ...group$1);
|
|
373
362
|
}
|
|
374
|
-
if ([not, property, value].every((_) => _ === void 0))
|
|
375
|
-
return void 0;
|
|
363
|
+
if ([not, property, value].every((_) => _ === void 0)) return void 0;
|
|
376
364
|
return condition(not, property == null ? void 0 : property.prop, property == null ? void 0 : property.rest, value);
|
|
377
365
|
}
|
|
378
366
|
ruleConditionValue(property, { convertRegexValues = false, convertArrayValues = false } = {}) {
|
|
@@ -383,23 +371,19 @@ class Parser {
|
|
|
383
371
|
if (this.options.prefixableGroups && property === void 0 && (next == null ? void 0 : next.type) !== $T.PAREN_L && (this.isType(next, $C.VALUE) && (this.isType(next2, $T.PAREN_L) || this.isType(next2, $C.QUOTE_ANY) && this.isType(next3, $T.PAREN_L)) || this.isType(next, $C.QUOTE_ANY) && (this.isType(next2, $T.PAREN_L) || this.isType(next2, $C.VALUE) && (this.isType(next3, $T.PAREN_L) || // "a(
|
|
384
372
|
this.isType(next3, $C.QUOTE_ANY) && this.isType(next4, $T.PAREN_L))))) {
|
|
385
373
|
const res = this.ruleVariable({ unprefixed: true });
|
|
386
|
-
if (res)
|
|
387
|
-
return res;
|
|
374
|
+
if (res) return res;
|
|
388
375
|
}
|
|
389
376
|
if (!this.isType(next, $T.PAREN_L)) {
|
|
390
377
|
const res = this.ruleVariable({ unprefixed: false });
|
|
391
|
-
if (res)
|
|
392
|
-
return res;
|
|
378
|
+
if (res) return res;
|
|
393
379
|
}
|
|
394
380
|
if (this.isType(next, $T.PAREN_L)) {
|
|
395
381
|
const res = this.rulePlainGroup({ onlyValues: property !== void 0, convertRegexValues, convertArrayValues });
|
|
396
|
-
if (res)
|
|
397
|
-
return res;
|
|
382
|
+
if (res) return res;
|
|
398
383
|
}
|
|
399
384
|
if (this.isType(next, $T.BRACKET_L)) {
|
|
400
385
|
const res = this.rulePlainBracketGroup({ convertArrayValues });
|
|
401
|
-
if (res)
|
|
402
|
-
return res;
|
|
386
|
+
if (res) return res;
|
|
403
387
|
}
|
|
404
388
|
return void 0;
|
|
405
389
|
}
|
|
@@ -457,8 +441,7 @@ class Parser {
|
|
|
457
441
|
}
|
|
458
442
|
}
|
|
459
443
|
const bracketR = this.isType(this.peek(1), $T.BRACKET_R) ? this.ruleBracketR() : void 0;
|
|
460
|
-
if (bracketL === void 0)
|
|
461
|
-
throw new Error("bracketL is undefined, peek before using rule.");
|
|
444
|
+
if (bracketL === void 0) throw new Error("bracketL is undefined, peek before using rule.");
|
|
462
445
|
if (!convertArrayValues) {
|
|
463
446
|
return array(bracketL, values, bracketR);
|
|
464
447
|
}
|
|
@@ -640,8 +623,7 @@ class Parser {
|
|
|
640
623
|
if (!unprefixed && this.options.prefixableStrings !== void 0 && this.isType(next2, $C.QUOTE_ANY) && next2 && this.isType(next4, next2.type) && next && this.options.prefixableStrings.includes(next.value)) {
|
|
641
624
|
return this.ruleValueUnquoted({ onlyToken });
|
|
642
625
|
}
|
|
643
|
-
if (onlyToken)
|
|
644
|
-
return void 0;
|
|
626
|
+
if (onlyToken) return void 0;
|
|
645
627
|
return token.value(...this.processToken());
|
|
646
628
|
}
|
|
647
629
|
ruleValueUnquoted({
|
|
@@ -716,6 +698,7 @@ class Parser {
|
|
|
716
698
|
return [{ suggestion, value: ")" }];
|
|
717
699
|
case SUGGESTION_TYPE.BRAKCETR:
|
|
718
700
|
return [{ suggestion, value: "]" }];
|
|
701
|
+
// L not needed
|
|
719
702
|
case SUGGESTION_TYPE.REGEX:
|
|
720
703
|
return [{ suggestion, value: "/" }];
|
|
721
704
|
case SUGGESTION_TYPE.REGEX_FLAGS:
|
|
@@ -860,8 +843,7 @@ class Parser {
|
|
|
860
843
|
};
|
|
861
844
|
for (const error of surroundingErrors) {
|
|
862
845
|
for (const type of error.expected) {
|
|
863
|
-
if (errorTypesHandled.includes(type))
|
|
864
|
-
continue;
|
|
846
|
+
if (errorTypesHandled.includes(type)) continue;
|
|
865
847
|
errorTypesHandled.push(type);
|
|
866
848
|
switch (type) {
|
|
867
849
|
case TOKEN_TYPE.DOUBLEQUOTE:
|
|
@@ -903,10 +885,8 @@ class Parser {
|
|
|
903
885
|
}),
|
|
904
886
|
range: pos({ start: index }, { fill: true })
|
|
905
887
|
});
|
|
906
|
-
if (type === TOKEN_TYPE.AND)
|
|
907
|
-
|
|
908
|
-
if (type === TOKEN_TYPE.OR)
|
|
909
|
-
errorTypesHandled.push(TOKEN_TYPE.AND);
|
|
888
|
+
if (type === TOKEN_TYPE.AND) errorTypesHandled.push(TOKEN_TYPE.OR);
|
|
889
|
+
if (type === TOKEN_TYPE.OR) errorTypesHandled.push(TOKEN_TYPE.AND);
|
|
910
890
|
break;
|
|
911
891
|
case TOKEN_TYPE.PARENL:
|
|
912
892
|
case TOKEN_TYPE.PARENR:
|
|
@@ -1177,16 +1157,14 @@ class Parser {
|
|
|
1177
1157
|
getBestIndexes(indexes, existing, sortIndex = "") {
|
|
1178
1158
|
indexes = indexes.filter((set) => {
|
|
1179
1159
|
for (const key of set) {
|
|
1180
|
-
if (!existing.has(key))
|
|
1181
|
-
return false;
|
|
1160
|
+
if (!existing.has(key)) return false;
|
|
1182
1161
|
}
|
|
1183
1162
|
return true;
|
|
1184
1163
|
});
|
|
1185
1164
|
let finalIndexes = indexes;
|
|
1186
1165
|
if (existing.has(sortIndex)) {
|
|
1187
1166
|
const indexesWithSortIndex = indexes.filter((set) => set.has(sortIndex));
|
|
1188
|
-
if (indexesWithSortIndex.length > 0)
|
|
1189
|
-
finalIndexes = indexesWithSortIndex;
|
|
1167
|
+
if (indexesWithSortIndex.length > 0) finalIndexes = indexesWithSortIndex;
|
|
1190
1168
|
}
|
|
1191
1169
|
let smallest = Infinity;
|
|
1192
1170
|
if (existing instanceof Map) {
|
|
@@ -1230,8 +1208,7 @@ class Parser {
|
|
|
1230
1208
|
const allKeys = /* @__PURE__ */ new Set();
|
|
1231
1209
|
for (const leftSet of left) {
|
|
1232
1210
|
const exists = sets.find((set) => isEqualSet(set, leftSet));
|
|
1233
|
-
if (exists)
|
|
1234
|
-
continue;
|
|
1211
|
+
if (exists) continue;
|
|
1235
1212
|
sets.push(leftSet);
|
|
1236
1213
|
for (const key of leftSet) {
|
|
1237
1214
|
allKeys.add(key);
|
|
@@ -1239,22 +1216,19 @@ class Parser {
|
|
|
1239
1216
|
}
|
|
1240
1217
|
for (const rightSet of right) {
|
|
1241
1218
|
const exists = sets.find((set) => isEqualSet(set, rightSet));
|
|
1242
|
-
if (exists)
|
|
1243
|
-
continue;
|
|
1219
|
+
if (exists) continue;
|
|
1244
1220
|
sets.push(rightSet);
|
|
1245
1221
|
for (const key of rightSet) {
|
|
1246
1222
|
allKeys.add(key);
|
|
1247
1223
|
}
|
|
1248
1224
|
}
|
|
1249
1225
|
const commonKeys = /* @__PURE__ */ new Set();
|
|
1250
|
-
outerCheck:
|
|
1251
|
-
for (const
|
|
1252
|
-
|
|
1253
|
-
if (!set.has(key))
|
|
1254
|
-
continue outerCheck;
|
|
1255
|
-
}
|
|
1256
|
-
commonKeys.add(key);
|
|
1226
|
+
outerCheck: for (const key of allKeys) {
|
|
1227
|
+
for (const set of sets) {
|
|
1228
|
+
if (!set.has(key)) continue outerCheck;
|
|
1257
1229
|
}
|
|
1230
|
+
commonKeys.add(key);
|
|
1231
|
+
}
|
|
1258
1232
|
if (commonKeys.size > 0) {
|
|
1259
1233
|
return [commonKeys, allKeys];
|
|
1260
1234
|
} else {
|
|
@@ -1348,8 +1322,9 @@ class Parser {
|
|
|
1348
1322
|
}
|
|
1349
1323
|
if (ast.type === AST_TYPE.GROUP) {
|
|
1350
1324
|
const _prefix = ((_p = ast.prefix) == null ? void 0 : _p.type) === AST_TYPE.CONDITION && ((_q = ast.prefix) == null ? void 0 : _q.value.type) === AST_TYPE.VARIABLE ? unescape(ast.prefix.value.value.value) : void 0;
|
|
1325
|
+
const isNotToken = _prefix === void 0;
|
|
1351
1326
|
const _groupValue = ((_r = ast.prefix) == null ? void 0 : _r.type) === AST_TYPE.CONDITION ? ast.prefix.operator === void 0 : !(((_s = ast.prefix) == null ? void 0 : _s.valid) === true);
|
|
1352
|
-
const applied = applyPrefix(prefix, _prefix
|
|
1327
|
+
const applied = isNotToken ? prefix : applyPrefix(prefix, _prefix, opts.prefixApplier);
|
|
1353
1328
|
return self_.normalize(ast.expression, applied, applyBoolean(groupValue, _groupValue), operator2);
|
|
1354
1329
|
}
|
|
1355
1330
|
if (ast.type === AST_TYPE.EXPRESSION) {
|
|
@@ -1424,11 +1399,9 @@ class Parser {
|
|
|
1424
1399
|
condition: ast
|
|
1425
1400
|
};
|
|
1426
1401
|
const res = opts.valueValidator(contextValue, query, context);
|
|
1427
|
-
if (res && !isArray(res))
|
|
1428
|
-
throw new Error("The valueValidator must return an array or nothing/undefined");
|
|
1402
|
+
if (res && !isArray(res)) throw new Error("The valueValidator must return an array or nothing/undefined");
|
|
1429
1403
|
if (res) {
|
|
1430
|
-
for (const entry of res)
|
|
1431
|
-
results.push(entry);
|
|
1404
|
+
for (const entry of res) results.push(entry);
|
|
1432
1405
|
}
|
|
1433
1406
|
} else {
|
|
1434
1407
|
let name = unescape(ast.property.value.value);
|
|
@@ -1436,16 +1409,14 @@ class Parser {
|
|
|
1436
1409
|
name = applyPrefix(prefix, name, opts.prefixApplier);
|
|
1437
1410
|
}
|
|
1438
1411
|
const boolValue = applyBoolean(groupValue, ast.operator === void 0);
|
|
1439
|
-
if (ast.property)
|
|
1440
|
-
prefixes.push(ast.property);
|
|
1412
|
+
if (ast.property) prefixes.push(ast.property);
|
|
1441
1413
|
const operator22 = ast.propertyOperator;
|
|
1442
1414
|
self_.validate(ast.value, context, name, boolValue, results, prefixes, operator22);
|
|
1443
1415
|
}
|
|
1444
1416
|
}
|
|
1445
1417
|
if (ast.type === AST_TYPE.GROUP) {
|
|
1446
1418
|
const _prefix = ((_j = ast.prefix) == null ? void 0 : _j.type) === AST_TYPE.CONDITION && ast.prefix.value.type === AST_TYPE.VARIABLE ? ast.prefix.value : void 0;
|
|
1447
|
-
if (_prefix)
|
|
1448
|
-
prefixes.push(_prefix);
|
|
1419
|
+
if (_prefix) prefixes.push(_prefix);
|
|
1449
1420
|
const _groupValue = ((_k = ast.prefix) == null ? void 0 : _k.type) === AST_TYPE.CONDITION ? ast.prefix.operator === void 0 : !(((_l = ast.prefix) == null ? void 0 : _l.valid) === true);
|
|
1450
1421
|
self_.validate(ast.expression, context, applyPrefix(prefix, (_prefix == null ? void 0 : _prefix.value.value) ?? "", opts.prefixApplier), applyBoolean(groupValue, _groupValue), results, prefixes, operator2);
|
|
1451
1422
|
}
|
|
@@ -15,10 +15,8 @@ function condition(value, not = true, property, propertyOperator, { right, left
|
|
|
15
15
|
}
|
|
16
16
|
if (right || left) {
|
|
17
17
|
node.sep = {};
|
|
18
|
-
if (right)
|
|
19
|
-
|
|
20
|
-
if (left)
|
|
21
|
-
node.sep.left = left;
|
|
18
|
+
if (right) node.sep.right = right;
|
|
19
|
+
if (left) node.sep.left = left;
|
|
22
20
|
}
|
|
23
21
|
return createConditionNode(node);
|
|
24
22
|
}
|
|
@@ -5,7 +5,7 @@ import { type ExtractTokenType } from "../../types/ast.js";
|
|
|
5
5
|
export declare function delim<TLeft extends boolean | string, TRight extends boolean | string, TType extends TLeft extends string ? ExtractTokenType<TLeft> : TRight extends string ? ExtractTokenType<TRight> : undefined>(left?: TLeft, right?: TRight): {
|
|
6
6
|
left: TLeft extends string ? true : TLeft;
|
|
7
7
|
right: TRight extends string ? true : TRight;
|
|
8
|
-
} & TType extends undefined ?
|
|
8
|
+
} & TType extends undefined ? Record<string, never> : {
|
|
9
9
|
type: TType;
|
|
10
10
|
};
|
|
11
11
|
//# sourceMappingURL=delim.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"delim.d.ts","sourceRoot":"","sources":["../../../src/ast/builders/delim.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,gBAAgB,EAAc,MAAM,oBAAoB,CAAA;AAEtE;;GAEG;AAEH,wBAAgB,KAAK,CACpB,KAAK,SAAS,OAAO,GAAG,MAAM,EAC9B,MAAM,SAAS,OAAO,GAAG,MAAM,EAC/B,KAAK,SAAS,KAAK,SAAS,MAAM,GAC/B,gBAAgB,CAAC,KAAK,CAAC,GACvB,MAAM,SAAS,MAAM,GACrB,gBAAgB,CAAC,MAAM,CAAC,GACxB,SAAS,EAEZ,IAAI,GAAE,KAAsB,EAC5B,KAAK,GAAE,MAAwB,GAE/B;IACC,IAAI,EAAE,KAAK,SAAS,MAAM,GAAG,IAAI,GAAG,KAAK,CAAA;IACzC,KAAK,EAAE,MAAM,SAAS,MAAM,GAAG,IAAI,GAAG,MAAM,CAAA;CAC5C,GAAG,KAAK,SAAS,SAAS,GAAG,
|
|
1
|
+
{"version":3,"file":"delim.d.ts","sourceRoot":"","sources":["../../../src/ast/builders/delim.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,gBAAgB,EAAc,MAAM,oBAAoB,CAAA;AAEtE;;GAEG;AAEH,wBAAgB,KAAK,CACpB,KAAK,SAAS,OAAO,GAAG,MAAM,EAC9B,MAAM,SAAS,OAAO,GAAG,MAAM,EAC/B,KAAK,SAAS,KAAK,SAAS,MAAM,GAC/B,gBAAgB,CAAC,KAAK,CAAC,GACvB,MAAM,SAAS,MAAM,GACrB,gBAAgB,CAAC,MAAM,CAAC,GACxB,SAAS,EAEZ,IAAI,GAAE,KAAsB,EAC5B,KAAK,GAAE,MAAwB,GAE/B;IACC,IAAI,EAAE,KAAK,SAAS,MAAM,GAAG,IAAI,GAAG,KAAK,CAAA;IACzC,KAAK,EAAE,MAAM,SAAS,MAAM,GAAG,IAAI,GAAG,MAAM,CAAA;CAC5C,GAAG,KAAK,SAAS,SAAS,GAAG,MAAM,CAAC,MAAM,EAAC,KAAK,CAAC,GAAG;IAAE,IAAI,EAAE,KAAK,CAAA;CAAE,CAepE"}
|
|
@@ -2,10 +2,8 @@ import { type } from "./type.js";
|
|
|
2
2
|
import { TOKEN_TYPE } from "../../types/ast.js";
|
|
3
3
|
function delim(left = false, right = false) {
|
|
4
4
|
let quoteType;
|
|
5
|
-
if (typeof left === "string")
|
|
6
|
-
|
|
7
|
-
else if (typeof right === "string")
|
|
8
|
-
quoteType = type(right);
|
|
5
|
+
if (typeof left === "string") quoteType = type(left);
|
|
6
|
+
else if (typeof right === "string") quoteType = type(right);
|
|
9
7
|
const opts = {
|
|
10
8
|
left: left === true || typeof left === "string" && left !== void 0,
|
|
11
9
|
right: right === true || typeof right === "string" && right !== void 0
|
|
@@ -12,8 +12,7 @@ function expression(left, operator, right) {
|
|
|
12
12
|
let op;
|
|
13
13
|
if (operator === void 0) {
|
|
14
14
|
operator = token([TOKEN_TYPE.AND, TOKEN_TYPE.OR], void 0, { start: left.end });
|
|
15
|
-
} else
|
|
16
|
-
op = operator;
|
|
15
|
+
} else op = operator;
|
|
17
16
|
if (right === void 0) {
|
|
18
17
|
right = token(TOKEN_TYPE.VALUE, void 0, { start: op.end });
|
|
19
18
|
}
|
package/dist/ast/builders/pos.js
CHANGED
|
@@ -4,8 +4,7 @@ function pos(start, end) {
|
|
|
4
4
|
return { start, end };
|
|
5
5
|
} else {
|
|
6
6
|
const item = start;
|
|
7
|
-
if (item === void 0)
|
|
8
|
-
return {};
|
|
7
|
+
if (item === void 0) return {};
|
|
9
8
|
const fill = typeof end === "object" ? end.fill : false;
|
|
10
9
|
if (isFullPos(item)) {
|
|
11
10
|
return { start: item.start, end: item.end };
|
|
@@ -13,10 +12,8 @@ function pos(start, end) {
|
|
|
13
12
|
if (fill) {
|
|
14
13
|
let start2 = item.start;
|
|
15
14
|
let end2 = item.end;
|
|
16
|
-
if (start2 !== void 0 && end2 === void 0)
|
|
17
|
-
|
|
18
|
-
if (end2 !== void 0 && start2 === void 0)
|
|
19
|
-
start2 = end2;
|
|
15
|
+
if (start2 !== void 0 && end2 === void 0) end2 = start2;
|
|
16
|
+
if (end2 !== void 0 && start2 === void 0) start2 = end2;
|
|
20
17
|
return { start: start2, end: end2 };
|
|
21
18
|
}
|
|
22
19
|
return {};
|
|
@@ -16,16 +16,14 @@ function variable(prefix, value, quote, position) {
|
|
|
16
16
|
node.quote = {};
|
|
17
17
|
const quoteLeftPos = (position == null ? void 0 : position.start) !== void 0 ? pos({ start: position.start }, { fill: true }) : void 0;
|
|
18
18
|
if (quote.left) {
|
|
19
|
-
if (quoteLeftPos)
|
|
20
|
-
quoteLeftPos.start -= 1;
|
|
19
|
+
if (quoteLeftPos) quoteLeftPos.start -= 1;
|
|
21
20
|
node.quote.left = token(quote.type, quoteFromType(quote.type), quoteLeftPos);
|
|
22
21
|
} else {
|
|
23
22
|
node.quote.left = token(quote.type, void 0, quoteLeftPos);
|
|
24
23
|
}
|
|
25
24
|
const quoteRightPos = (position == null ? void 0 : position.end) !== void 0 ? pos({ end: position.end }, { fill: true }) : void 0;
|
|
26
25
|
if (quote.right) {
|
|
27
|
-
if (quoteRightPos)
|
|
28
|
-
quoteRightPos.end += 1;
|
|
26
|
+
if (quoteRightPos) quoteRightPos.end += 1;
|
|
29
27
|
node.quote.right = token(quote.type, quoteFromType(quote.type), quoteRightPos);
|
|
30
28
|
} else {
|
|
31
29
|
node.quote.right = token(quote.type, void 0, quoteRightPos);
|
package/dist/ast/error.js
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { createToken } from "./createToken.js";
|
|
2
2
|
function error(pos, expected) {
|
|
3
|
-
if (pos === void 0)
|
|
4
|
-
throw new Error("should never happen, passed undefined position for error token");
|
|
3
|
+
if (pos === void 0) throw new Error("should never happen, passed undefined position for error token");
|
|
5
4
|
return createToken({ expected, start: pos, end: pos });
|
|
6
5
|
}
|
|
7
6
|
export {
|