@witchcraft/expressit 0.2.2 → 0.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/README.md +1 -2
- package/dist/Lexer.d.ts +99 -94
- package/dist/Lexer.d.ts.map +1 -1
- package/dist/Lexer.js +221 -574
- package/dist/Parser.d.ts +26 -26
- package/dist/Parser.d.ts.map +1 -1
- package/dist/Parser.js +106 -116
- package/dist/ast/builders/array.js +7 -8
- package/dist/ast/builders/condition.d.ts +1 -1
- package/dist/ast/builders/condition.d.ts.map +1 -1
- package/dist/ast/builders/condition.js +2 -1
- package/dist/ast/builders/delim.d.ts +2 -2
- package/dist/ast/builders/delim.d.ts.map +1 -1
- package/dist/ast/builders/error.d.ts +2 -2
- package/dist/ast/builders/error.d.ts.map +1 -1
- package/dist/ast/builders/expression.d.ts +2 -2
- package/dist/ast/builders/expression.d.ts.map +1 -1
- package/dist/ast/builders/expression.js +4 -8
- package/dist/ast/builders/group.d.ts +1 -1
- package/dist/ast/builders/group.d.ts.map +1 -1
- package/dist/ast/builders/group.js +8 -11
- package/dist/ast/builders/pos.d.ts +2 -2
- package/dist/ast/builders/pos.d.ts.map +1 -1
- package/dist/ast/builders/token.d.ts +2 -2
- package/dist/ast/builders/token.d.ts.map +1 -1
- package/dist/ast/builders/token.js +1 -1
- package/dist/ast/builders/type.d.ts +2 -2
- package/dist/ast/builders/type.d.ts.map +1 -1
- package/dist/ast/builders/variable.d.ts +3 -3
- package/dist/ast/builders/variable.d.ts.map +1 -1
- package/dist/ast/builders/variable.js +5 -6
- package/dist/ast/createConditionNode.d.ts +1 -1
- package/dist/ast/createConditionNode.d.ts.map +1 -1
- package/dist/ast/createConditionNode.js +1 -2
- package/dist/ast/createGroupNode.d.ts +1 -1
- package/dist/ast/createGroupNode.d.ts.map +1 -1
- package/dist/ast/createToken.d.ts +2 -2
- package/dist/ast/createToken.d.ts.map +1 -1
- package/dist/ast/createToken.js +2 -2
- package/dist/ast/error.d.ts +2 -2
- package/dist/ast/error.d.ts.map +1 -1
- package/dist/ast/error.js +1 -0
- package/dist/ast/handlers.d.ts +23 -23
- package/dist/ast/handlers.d.ts.map +1 -1
- package/dist/ast/handlers.js +23 -26
- package/dist/examples/ParserWithSqlSupport.d.ts +5 -5
- package/dist/examples/ParserWithSqlSupport.d.ts.map +1 -1
- package/dist/examples/ParserWithSqlSupport.js +22 -28
- package/dist/examples/ShortcutContextParser.js +2 -5
- package/dist/index.js +2 -2
- package/dist/internal/ExpressitError.d.ts +2 -2
- package/dist/internal/ExpressitError.d.ts.map +1 -1
- package/dist/internal/ExpressitError.js +7 -10
- package/dist/internal/checkParserOpts.js +21 -22
- package/dist/internal/escapeVariableOrPrefix.js +1 -1
- package/dist/internal/parseParserOptions.js +3 -4
- package/dist/package.json.js +2 -60
- package/dist/types/ast.d.ts +60 -58
- package/dist/types/ast.d.ts.map +1 -1
- package/dist/types/ast.js +26 -27
- package/dist/types/autocomplete.d.ts +23 -21
- package/dist/types/autocomplete.d.ts.map +1 -1
- package/dist/types/autocomplete.js +24 -21
- package/dist/types/errors.d.ts +12 -10
- package/dist/types/errors.d.ts.map +1 -1
- package/dist/types/errors.js +8 -7
- package/dist/types/index.js +2 -2
- package/dist/types/parser.d.ts +3 -3
- package/dist/types/parser.d.ts.map +1 -1
- package/dist/utils/extractTokens.js +4 -5
- package/dist/utils/generateParentsMap.js +7 -8
- package/dist/utils/getCursorInfo.js +5 -3
- package/dist/utils/getOppositeDelimiter.d.ts +2 -2
- package/dist/utils/getOppositeDelimiter.d.ts.map +1 -1
- package/dist/utils/getOppositeDelimiter.js +1 -1
- package/dist/utils/getSurroundingErrors.js +2 -3
- package/dist/utils/isBracket.js +1 -1
- package/dist/utils/isDelimiter.d.ts +2 -2
- package/dist/utils/isDelimiter.d.ts.map +1 -1
- package/dist/utils/isDelimiter.js +1 -1
- package/dist/utils/isNode.js +1 -1
- package/dist/utils/isParen.d.ts +2 -2
- package/dist/utils/isParen.d.ts.map +1 -1
- package/dist/utils/isParen.js +1 -1
- package/dist/utils/isQuote.d.ts +2 -2
- package/dist/utils/isQuote.d.ts.map +1 -1
- package/dist/utils/isQuote.js +1 -1
- package/dist/utils/isToken.js +1 -1
- package/dist/utils/prettyAst.js +10 -11
- package/package.json +19 -20
- package/src/Lexer.ts +100 -90
- package/src/Parser.ts +68 -68
- package/src/ast/builders/condition.ts +3 -3
- package/src/ast/builders/delim.ts +4 -4
- package/src/ast/builders/error.ts +3 -3
- package/src/ast/builders/expression.ts +4 -8
- package/src/ast/builders/group.ts +2 -4
- package/src/ast/builders/pos.ts +3 -3
- package/src/ast/builders/token.ts +3 -3
- package/src/ast/builders/type.ts +2 -2
- package/src/ast/builders/variable.ts +5 -5
- package/src/ast/createConditionNode.ts +2 -2
- package/src/ast/createGroupNode.ts +4 -4
- package/src/ast/createToken.ts +6 -6
- package/src/ast/error.ts +2 -2
- package/src/ast/handlers.ts +20 -20
- package/src/examples/ParserWithSqlSupport.ts +12 -6
- package/src/internal/ExpressitError.ts +6 -6
- package/src/internal/checkParserOpts.ts +13 -13
- package/src/internal/escapeVariableOrPrefix.ts +1 -1
- package/src/types/ast.ts +101 -96
- package/src/types/autocomplete.ts +26 -22
- package/src/types/errors.ts +18 -13
- package/src/types/parser.ts +3 -3
- package/src/utils/extractTokens.ts +1 -1
- package/src/utils/getCursorInfo.ts +2 -2
- package/src/utils/getOppositeDelimiter.ts +3 -3
- package/src/utils/getSurroundingErrors.ts +4 -4
- package/src/utils/isDelimiter.ts +3 -3
- package/src/utils/isParen.ts +2 -2
- package/src/utils/isQuote.ts +2 -2
- package/src/utils/prettyAst.ts +3 -3
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { type ErrorToken,
|
|
1
|
+
import { type ErrorToken, type TokenType } from "../../types/ast.js";
|
|
2
2
|
/**
|
|
3
3
|
* Creates an error token.
|
|
4
4
|
*
|
|
5
5
|
* @param expected Can be passed an array of {@link ValidToken_TYPE} or strings, in which case it will use {@link type} internally. So instead of `[TOKEN_TYPE.VALUE]` we can do `[""]` and instead of `[TOKEN_TYPE.PARENR]` we can do `[")"]`.
|
|
6
6
|
*/
|
|
7
|
-
export declare function error<T extends
|
|
7
|
+
export declare function error<T extends TokenType>(pos: number, expected: T[]): ErrorToken;
|
|
8
8
|
//# sourceMappingURL=error.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"error.d.ts","sourceRoot":"","sources":["../../../src/ast/builders/error.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,UAAU,
|
|
1
|
+
{"version":3,"file":"error.d.ts","sourceRoot":"","sources":["../../../src/ast/builders/error.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,UAAU,EAAa,KAAK,SAAS,EAAE,MAAM,oBAAoB,CAAA;AAI/E;;;;GAIG;AACH,wBAAgB,KAAK,CAAC,CAAC,SAAS,SAAS,EAAE,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,EAAE,GAAG,UAAU,CAAA"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { type AnyToken, type ConditionNode, type ErrorToken, type ExpressionNode, type GroupNode, type
|
|
1
|
+
import { type AnyToken, type ConditionNode, type ErrorToken, type ExpressionNode, type GroupNode, type TokenBoolean } from "../../types/ast.js";
|
|
2
2
|
/**
|
|
3
3
|
* Creates an {@link ExpressionNode}, can be passed nothing for any of the tokens to automatically create error tokens.
|
|
4
4
|
*
|
|
5
5
|
* Also automatically sets the correct start/end positions from valid tokens (e.g. for start, searching left to right for a valid token and vice versa) assuming at least one is defined.
|
|
6
6
|
*/
|
|
7
|
-
export declare function expression(left: ConditionNode | ExpressionNode | GroupNode | ErrorToken | undefined, operator: AnyToken<
|
|
7
|
+
export declare function expression(left: ConditionNode | ExpressionNode | GroupNode | ErrorToken | undefined, operator: AnyToken<TokenBoolean> | undefined, right: ConditionNode | ExpressionNode | GroupNode | ErrorToken | undefined): ExpressionNode;
|
|
8
8
|
//# sourceMappingURL=expression.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"expression.d.ts","sourceRoot":"","sources":["../../../src/ast/builders/expression.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,QAAQ,EAAE,KAAK,aAAa,EAAE,KAAK,UAAU,EAAE,KAAK,cAAc,EAAC,KAAK,SAAS,EAA6B,KAAK,
|
|
1
|
+
{"version":3,"file":"expression.d.ts","sourceRoot":"","sources":["../../../src/ast/builders/expression.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,QAAQ,EAAE,KAAK,aAAa,EAAE,KAAK,UAAU,EAAE,KAAK,cAAc,EAAC,KAAK,SAAS,EAA6B,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAIzK;;;;GAIG;AACH,wBAAgB,UAAU,CACzB,IAAI,EACH,aAAa,GACb,cAAc,GACd,SAAS,GACT,UAAU,GACV,SAAS,EACV,QAAQ,EACP,QAAQ,CAAC,YAAY,CAAC,GACtB,SAAS,EACV,KAAK,EACJ,aAAa,GACb,cAAc,GACd,SAAS,GACT,UAAU,GACV,SAAS,GACR,cAAc,CA2BhB"}
|
|
@@ -3,19 +3,15 @@ import { token } from "./token.js";
|
|
|
3
3
|
import { TOKEN_TYPE } from "../../types/ast.js";
|
|
4
4
|
import { createExpressionNode } from "../createExpressionNode.js";
|
|
5
5
|
function expression(left, operator, right) {
|
|
6
|
-
const start =
|
|
7
|
-
const end =
|
|
6
|
+
const start = left?.start ?? operator?.start ?? right?.start;
|
|
7
|
+
const end = right?.end ?? operator?.end ?? left?.end;
|
|
8
8
|
const position = pos({ start, end });
|
|
9
|
-
|
|
10
|
-
left = token(TOKEN_TYPE.VALUE, void 0, { start: position.start });
|
|
11
|
-
}
|
|
9
|
+
left ??= token(TOKEN_TYPE.VALUE, void 0, { start: position.start });
|
|
12
10
|
let op;
|
|
13
11
|
if (operator === void 0) {
|
|
14
12
|
operator = token([TOKEN_TYPE.AND, TOKEN_TYPE.OR], void 0, { start: left.end });
|
|
15
13
|
} else op = operator;
|
|
16
|
-
|
|
17
|
-
right = token(TOKEN_TYPE.VALUE, void 0, { start: op.end });
|
|
18
|
-
}
|
|
14
|
+
right ??= token(TOKEN_TYPE.VALUE, void 0, { start: op.end });
|
|
19
15
|
return createExpressionNode({
|
|
20
16
|
left,
|
|
21
17
|
operator: op,
|
|
@@ -8,7 +8,7 @@ import { type ConditionNode, type ErrorToken, type ExpressionNode, type GroupNod
|
|
|
8
8
|
*
|
|
9
9
|
* The positions of the parens can be adjusted with the last two parameters by passing positions.
|
|
10
10
|
*/
|
|
11
|
-
export declare function group(prefix: ConditionNode | ValidToken<TOKEN_TYPE.NOT> | undefined, expression: ConditionNode | ExpressionNode | GroupNode | ErrorToken | undefined, paren?: {
|
|
11
|
+
export declare function group(prefix: ConditionNode | ValidToken<typeof TOKEN_TYPE.NOT> | undefined, expression: ConditionNode | ExpressionNode | GroupNode | ErrorToken | undefined, paren?: {
|
|
12
12
|
left?: boolean;
|
|
13
13
|
right?: boolean;
|
|
14
14
|
}, parenLeftPos?: Position, parenRightPos?: Position): GroupNode;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"group.d.ts","sourceRoot":"","sources":["../../../src/ast/builders/group.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,aAAa,EAAE,KAAK,UAAU,EAAE,KAAK,cAAc,EAAkB,KAAK,SAAS,EAAE,KAAK,QAAQ,EAAE,UAAU,EAAE,KAAK,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAGzK;;;;;;;;GAQG;AAEH,wBAAgB,KAAK,CACpB,MAAM,EACJ,aAAa,GACb,UAAU,CAAC,UAAU,CAAC,GAAG,CAAC,
|
|
1
|
+
{"version":3,"file":"group.d.ts","sourceRoot":"","sources":["../../../src/ast/builders/group.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,aAAa,EAAE,KAAK,UAAU,EAAE,KAAK,cAAc,EAAkB,KAAK,SAAS,EAAE,KAAK,QAAQ,EAAE,UAAU,EAAE,KAAK,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAGzK;;;;;;;;GAQG;AAEH,wBAAgB,KAAK,CACpB,MAAM,EACJ,aAAa,GACb,UAAU,CAAC,OAAO,UAAU,CAAC,GAAG,CAAC,GACjC,SAAS,EAEX,UAAU,EACR,aAAa,GACb,cAAc,GACd,SAAS,GACT,UAAU,GACV,SAAS,EAEX,KAAK,GAAE;IAAE,IAAI,CAAC,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAgC,EACxE,YAAY,CAAC,EAAE,QAAQ,EACvB,aAAa,CAAC,EAAE,QAAQ,GACtB,SAAS,CAyCX"}
|
|
@@ -2,17 +2,14 @@ import { token } from "./token.js";
|
|
|
2
2
|
import { TOKEN_TYPE } from "../../types/ast.js";
|
|
3
3
|
import { createGroupNode } from "../createGroupNode.js";
|
|
4
4
|
function group(prefix, expression, paren = { right: true, left: true }, parenLeftPos, parenRightPos) {
|
|
5
|
-
|
|
6
|
-
if (expression === void 0) {
|
|
7
|
-
expression = token(TOKEN_TYPE.VALUE, void 0, (prefix == null ? void 0 : prefix.end) !== void 0 ? { start: prefix.end } : void 0);
|
|
8
|
-
}
|
|
5
|
+
expression ??= token(TOKEN_TYPE.VALUE, void 0, prefix?.end !== void 0 ? { start: prefix.end } : void 0);
|
|
9
6
|
const node = {
|
|
10
7
|
prefix: void 0,
|
|
11
8
|
expression
|
|
12
9
|
};
|
|
13
10
|
if (prefix) {
|
|
14
11
|
node.prefix = prefix;
|
|
15
|
-
const locToRight =
|
|
12
|
+
const locToRight = node.paren?.left?.start ?? node.expression?.start ?? node.paren?.right.start;
|
|
16
13
|
if (prefix.start === void 0 && locToRight !== void 0) {
|
|
17
14
|
throw new Error("group builder: missing prefix location when passed expression with location");
|
|
18
15
|
}
|
|
@@ -20,9 +17,9 @@ function group(prefix, expression, paren = { right: true, left: true }, parenLef
|
|
|
20
17
|
node.paren = {};
|
|
21
18
|
const start = expression.start;
|
|
22
19
|
const end = expression.end;
|
|
23
|
-
parenLeftPos
|
|
24
|
-
parenRightPos
|
|
25
|
-
if (paren
|
|
20
|
+
parenLeftPos ??= start !== void 0 ? { start: start - 1, end: start } : void 0;
|
|
21
|
+
parenRightPos ??= end !== void 0 ? { start: end, end: end + 1 } : void 0;
|
|
22
|
+
if (paren?.left) {
|
|
26
23
|
node.paren.left = token(TOKEN_TYPE.PARENL, "(", parenLeftPos);
|
|
27
24
|
} else {
|
|
28
25
|
if (parenLeftPos) {
|
|
@@ -30,7 +27,7 @@ function group(prefix, expression, paren = { right: true, left: true }, parenLef
|
|
|
30
27
|
}
|
|
31
28
|
node.paren.left = token(TOKEN_TYPE.PARENL, void 0, parenLeftPos);
|
|
32
29
|
}
|
|
33
|
-
if (paren
|
|
30
|
+
if (paren?.right) {
|
|
34
31
|
node.paren.right = token(TOKEN_TYPE.PARENR, ")", parenRightPos);
|
|
35
32
|
} else {
|
|
36
33
|
if (parenRightPos) {
|
|
@@ -38,8 +35,8 @@ function group(prefix, expression, paren = { right: true, left: true }, parenLef
|
|
|
38
35
|
}
|
|
39
36
|
node.paren.right = token(TOKEN_TYPE.PARENR, void 0, parenRightPos);
|
|
40
37
|
}
|
|
41
|
-
node.start =
|
|
42
|
-
node.end =
|
|
38
|
+
node.start = node.prefix?.start ?? node.paren?.left?.start ?? node.expression?.start ?? node.paren?.right.start;
|
|
39
|
+
node.end = node.paren?.right?.end ?? node.expression?.end ?? node.paren?.left.end ?? node.prefix?.end;
|
|
43
40
|
return createGroupNode(node);
|
|
44
41
|
}
|
|
45
42
|
export {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { AnyToken,
|
|
1
|
+
import type { AnyToken, AstType, EmptyObj, Node, Position, TokenType } from "../../types/ast.js";
|
|
2
2
|
/**
|
|
3
3
|
* Can either:
|
|
4
4
|
*
|
|
@@ -15,6 +15,6 @@ export declare function pos<TItem extends Position | Partial<Position> | EmptyOb
|
|
|
15
15
|
} ? Position : EmptyObj;
|
|
16
16
|
export declare function pos<TItem extends Position | Partial<Position> | EmptyObj>(item: TItem, opts?: undefined | {
|
|
17
17
|
fill: false;
|
|
18
|
-
}): TItem extends Position ? Position : TItem extends AnyToken<
|
|
18
|
+
}): TItem extends Position ? Position : TItem extends AnyToken<TokenType> | Position | EmptyObj ? Position | EmptyObj : TItem extends Node<AstType> | Position | EmptyObj ? Position | EmptyObj : EmptyObj;
|
|
19
19
|
export declare function pos(start: number, end: number): Position;
|
|
20
20
|
//# sourceMappingURL=pos.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pos.d.ts","sourceRoot":"","sources":["../../../src/ast/builders/pos.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,
|
|
1
|
+
{"version":3,"file":"pos.d.ts","sourceRoot":"","sources":["../../../src/ast/builders/pos.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAA;AAEhG;;;;;;GAMG;AACH,wBAAgB,GAAG,CAAC,KAAK,SAAS,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,GAAG,QAAQ,EACxE,IAAI,EAAE,KAAK,EACX,IAAI,EAAE;IAAE,IAAI,EAAE,IAAI,CAAA;CAAE,GAClB,KAAK,SAAS;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,GAAG,EAAE,MAAM,CAAA;CAAE,GACjD,QAAQ,GACR,QAAQ,CAAA;AACX,wBAAgB,GAAG,CAAC,KAAK,SAAS,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,GAAG,QAAQ,EACxE,IAAI,EAAE,KAAK,EACX,IAAI,CAAC,EAAE,SAAS,GAAG;IAAE,IAAI,EAAE,KAAK,CAAA;CAAE,GAGlC,KAAK,SAAS,QAAQ,GACpB,QAAQ,GACR,KAAK,SAAS,QAAQ,CAAC,SAAS,CAAC,GAAG,QAAQ,GAAG,QAAQ,GACvD,QAAQ,GAAG,QAAQ,GACnB,KAAK,SAAS,IAAI,CAAC,OAAO,CAAC,GAAG,QAAQ,GAAG,QAAQ,GACjD,QAAQ,GAAG,QAAQ,GACnB,QAAQ,CAAA;AACX,wBAAgB,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,QAAQ,CAAA"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { EmptyObj, ErrorToken, Position,
|
|
1
|
+
import type { EmptyObj, ErrorToken, Position, TokenType, ValidToken } from "../../types/ast.js";
|
|
2
2
|
/**
|
|
3
3
|
* Creates a {@link ValidToken} or of the given type with the given value. If no value is given, creates an {@link ErrorToken} instead.
|
|
4
4
|
*
|
|
@@ -6,5 +6,5 @@ import type { EmptyObj, ErrorToken, Position, TOKEN_TYPE, ValidToken } from "../
|
|
|
6
6
|
*
|
|
7
7
|
* If the token is an error token, just `start` or `end` can be passed, and the other position will be filled to the same value.
|
|
8
8
|
*/
|
|
9
|
-
export declare function token<TValue extends string | undefined, TType extends
|
|
9
|
+
export declare function token<TValue extends string | undefined, TType extends TokenType = TokenType>(type: TValue extends undefined ? TType | TType[] : TType, value: TValue, position?: Position | Partial<Position> | EmptyObj): TValue extends undefined ? ErrorToken : ValidToken<TType>;
|
|
10
10
|
//# sourceMappingURL=token.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"token.d.ts","sourceRoot":"","sources":["../../../src/ast/builders/token.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAY,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,
|
|
1
|
+
{"version":3,"file":"token.d.ts","sourceRoot":"","sources":["../../../src/ast/builders/token.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAY,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAIzG;;;;;;GAMG;AAEH,wBAAgB,KAAK,CACpB,MAAM,SAAS,MAAM,GAAG,SAAS,EACjC,KAAK,SAAS,SAAS,GAAG,SAAS,EAEnC,IAAI,EAAE,MAAM,SAAS,SAAS,GAAG,KAAK,GAAG,KAAK,EAAE,GAAG,KAAK,EACxD,KAAK,EAAE,MAAM,EACb,QAAQ,GAAE,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,GAAG,QAAa,GACpD,MAAM,SAAS,SAAS,GACxB,UAAU,GACV,UAAU,CAAC,KAAK,CAAC,CAmBnB"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { type
|
|
1
|
+
import { type ExtractToken } from "../../types/ast.js";
|
|
2
2
|
/**
|
|
3
3
|
* Given a the string value of an operator or single delimiter token, returns the corresponding {@link ValidToken_TYPE} .
|
|
4
4
|
*/
|
|
5
|
-
export declare function type<T extends string>(operatorSymbol: T):
|
|
5
|
+
export declare function type<T extends string>(operatorSymbol: T): ExtractToken<T>;
|
|
6
6
|
//# sourceMappingURL=type.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"type.d.ts","sourceRoot":"","sources":["../../../src/ast/builders/type.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,
|
|
1
|
+
{"version":3,"file":"type.d.ts","sourceRoot":"","sources":["../../../src/ast/builders/type.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,YAAY,EAAc,MAAM,oBAAoB,CAAA;AAClE;;GAEG;AACH,wBAAgB,IAAI,CAAC,CAAC,SAAS,MAAM,EACpC,cAAc,EAAE,CAAC,GACf,YAAY,CAAC,CAAC,CAAC,CAwBjB"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type AnyToken, type EmptyObj, type Position, TOKEN_TYPE, type
|
|
1
|
+
import { type AnyToken, type EmptyObj, type Position, TOKEN_TYPE, type TokenQuote, type ValidToken, type VariableNode } from "../../types/ast.js";
|
|
2
2
|
/**
|
|
3
3
|
* Creates an {@link VariableNode} .
|
|
4
4
|
*
|
|
@@ -6,8 +6,8 @@ import { type AnyToken, type EmptyObj, type Position, TOKEN_TYPE, type TokenQuot
|
|
|
6
6
|
*
|
|
7
7
|
* @param position Refers to position of the value (in case it needs to be created) not the node. Quote positions are automatically calculated from this if used. If value is already a token, there's no need to pass a position, it can be extracted from the token.
|
|
8
8
|
*/
|
|
9
|
-
export declare function variable(prefix: ValidToken<TOKEN_TYPE.VALUE> | undefined, value: string | AnyToken<TOKEN_TYPE.VALUE>, quote?: {
|
|
10
|
-
type:
|
|
9
|
+
export declare function variable(prefix: ValidToken<typeof TOKEN_TYPE.VALUE> | undefined, value: string | AnyToken<typeof TOKEN_TYPE.VALUE>, quote?: {
|
|
10
|
+
type: TokenQuote;
|
|
11
11
|
left?: boolean;
|
|
12
12
|
right?: boolean;
|
|
13
13
|
flags?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"variable.d.ts","sourceRoot":"","sources":["../../../src/ast/builders/variable.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,QAAQ,EAAE,KAAK,QAAQ,EAAkB,KAAK,QAAQ,EAAE,UAAU,EAAE,KAAK,
|
|
1
|
+
{"version":3,"file":"variable.d.ts","sourceRoot":"","sources":["../../../src/ast/builders/variable.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,QAAQ,EAAE,KAAK,QAAQ,EAAkB,KAAK,QAAQ,EAAE,UAAU,EAAE,KAAK,UAAU,EAAE,KAAK,UAAU,EAAE,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAIjK;;;;;;GAMG;AAEH,wBAAgB,QAAQ,CACvB,MAAM,EAAE,UAAU,CAAC,OAAO,UAAU,CAAC,KAAK,CAAC,GAAG,SAAS,EACvD,KAAK,EAAE,MAAM,GAAG,QAAQ,CAAC,OAAO,UAAU,CAAC,KAAK,CAAC,EACjD,KAAK,CAAC,EAAE;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,IAAI,CAAC,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,EAC7E,QAAQ,CAAC,EAAE,QAAQ,GAAG,QAAQ,GAC5B,YAAY,CAwDd"}
|
|
@@ -3,7 +3,6 @@ import { token } from "./token.js";
|
|
|
3
3
|
import { TOKEN_TYPE } from "../../types/ast.js";
|
|
4
4
|
import { createVariableNode } from "../createVariableNode.js";
|
|
5
5
|
function variable(prefix, value, quote, position) {
|
|
6
|
-
var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j;
|
|
7
6
|
if (typeof value === "string") {
|
|
8
7
|
value = token(TOKEN_TYPE.VALUE, value, position);
|
|
9
8
|
}
|
|
@@ -14,14 +13,14 @@ function variable(prefix, value, quote, position) {
|
|
|
14
13
|
};
|
|
15
14
|
if (quote) {
|
|
16
15
|
node.quote = {};
|
|
17
|
-
const quoteLeftPos =
|
|
16
|
+
const quoteLeftPos = position?.start !== void 0 ? pos({ start: position.start }, { fill: true }) : void 0;
|
|
18
17
|
if (quote.left) {
|
|
19
18
|
if (quoteLeftPos) quoteLeftPos.start -= 1;
|
|
20
19
|
node.quote.left = token(quote.type, quoteFromType(quote.type), quoteLeftPos);
|
|
21
20
|
} else {
|
|
22
21
|
node.quote.left = token(quote.type, void 0, quoteLeftPos);
|
|
23
22
|
}
|
|
24
|
-
const quoteRightPos =
|
|
23
|
+
const quoteRightPos = position?.end !== void 0 ? pos({ end: position.end }, { fill: true }) : void 0;
|
|
25
24
|
if (quote.right) {
|
|
26
25
|
if (quoteRightPos) quoteRightPos.end += 1;
|
|
27
26
|
node.quote.right = token(quote.type, quoteFromType(quote.type), quoteRightPos);
|
|
@@ -32,12 +31,12 @@ function variable(prefix, value, quote, position) {
|
|
|
32
31
|
const start = node.quote.right.end;
|
|
33
32
|
node.quote.flags = token(TOKEN_TYPE.VALUE, quote.flags, {
|
|
34
33
|
start,
|
|
35
|
-
end: start +
|
|
34
|
+
end: start + quote.flags?.length
|
|
36
35
|
});
|
|
37
36
|
}
|
|
38
37
|
}
|
|
39
|
-
node.start =
|
|
40
|
-
node.end =
|
|
38
|
+
node.start = node.prefix?.start ?? node.quote?.left.start ?? node.value?.start ?? node.quote?.right.start;
|
|
39
|
+
node.end = node.quote?.flags?.end ?? node.quote?.right.end ?? node.value?.end ?? node.quote?.left.end;
|
|
41
40
|
return createVariableNode(node);
|
|
42
41
|
}
|
|
43
42
|
function quoteFromType(type) {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { type ConditionNode, type TOKEN_TYPE, type ValidToken } from "../types/ast.js";
|
|
2
|
-
export declare function createConditionNode<TValid extends boolean = boolean, TOperator extends ValidToken<TOKEN_TYPE.NOT> | undefined = ValidToken<TOKEN_TYPE.NOT> | undefined>(raw: {
|
|
2
|
+
export declare function createConditionNode<TValid extends boolean = boolean, TOperator extends ValidToken<typeof TOKEN_TYPE.NOT> | undefined = ValidToken<typeof TOKEN_TYPE.NOT> | undefined>(raw: {
|
|
3
3
|
operator?: TOperator;
|
|
4
4
|
property?: ConditionNode<TValid>["property"];
|
|
5
5
|
propertyOperator?: ConditionNode<TValid>["propertyOperator"];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createConditionNode.d.ts","sourceRoot":"","sources":["../../src/ast/createConditionNode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,KAAK,aAAa,EAAE,KAAK,UAAU,EAAE,KAAK,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAIhG,wBAAgB,mBAAmB,CAClC,MAAM,SAAS,OAAO,GAAG,OAAO,EAChC,SAAS,SACR,UAAU,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,SAAS,
|
|
1
|
+
{"version":3,"file":"createConditionNode.d.ts","sourceRoot":"","sources":["../../src/ast/createConditionNode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,KAAK,aAAa,EAAE,KAAK,UAAU,EAAE,KAAK,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAIhG,wBAAgB,mBAAmB,CAClC,MAAM,SAAS,OAAO,GAAG,OAAO,EAChC,SAAS,SACR,UAAU,CAAC,OAAO,UAAU,CAAC,GAAG,CAAC,GAAG,SAAS,GAC7C,UAAU,CAAC,OAAO,UAAU,CAAC,GAAG,CAAC,GAAG,SAAS,EAC7C,GAAG,EAAE;IACN,QAAQ,CAAC,EAAE,SAAS,CAAA;IACpB,QAAQ,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC,UAAU,CAAC,CAAA;IAC5C,gBAAgB,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC,kBAAkB,CAAC,CAAA;IAC5D,GAAG,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAA;IAClC,KAAK,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAA;IACrC,KAAK,EAAE,MAAM,CAAA;IACb,GAAG,EAAE,MAAM,CAAA;CACX,GACE,aAAa,CAAC,MAAM,CAAC,CAuCvB"}
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import { AST_TYPE } from "../types/ast.js";
|
|
2
2
|
import { isNode } from "../utils/isNode.js";
|
|
3
3
|
function createConditionNode(raw) {
|
|
4
|
-
|
|
5
|
-
const valid = (raw.operator === void 0 || ((_a = raw.operator) == null ? void 0 : _a.valid)) && isNode(raw.value) && raw.value.valid && (raw.property === void 0 && raw.propertyOperator === void 0 && raw.sep === void 0 || raw.property !== void 0 && "type" in raw.property && raw.property.type === AST_TYPE.VARIABLE && (((_b = raw.propertyOperator) == null ? void 0 : _b.valid) === true || ((_d = (_c = raw.sep) == null ? void 0 : _c.left) == null ? void 0 : _d.valid) === true && (raw.sep.right === void 0 || ((_e = raw.sep) == null ? void 0 : _e.right.valid))));
|
|
4
|
+
const valid = (raw.operator === void 0 || raw.operator?.valid) && isNode(raw.value) && raw.value.valid && (raw.property === void 0 && raw.propertyOperator === void 0 && raw.sep === void 0 || raw.property !== void 0 && "type" in raw.property && raw.property.type === AST_TYPE.VARIABLE && (raw.propertyOperator?.valid === true || raw.sep?.left?.valid === true && (raw.sep.right === void 0 || raw.sep?.right.valid)));
|
|
6
5
|
return {
|
|
7
6
|
property: void 0,
|
|
8
7
|
propertyOperator: void 0,
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { type ConditionNode, type GroupNode, type RawNode, type TOKEN_TYPE, type ValidToken } from "../types/ast.js";
|
|
2
|
-
export declare function createGroupNode<TValid extends boolean = boolean, TPrefixable extends boolean = true, TPrefix extends TPrefixable extends true ? ConditionNode<TValid> | ValidToken<TOKEN_TYPE.NOT> | undefined : ValidToken<TOKEN_TYPE.NOT> | undefined = TPrefixable extends true ? ConditionNode<TValid> | ValidToken<TOKEN_TYPE.NOT> | undefined : ValidToken<TOKEN_TYPE.NOT>>(raw: {
|
|
2
|
+
export declare function createGroupNode<TValid extends boolean = boolean, TPrefixable extends boolean = true, TPrefix extends TPrefixable extends true ? ConditionNode<TValid> | ValidToken<typeof TOKEN_TYPE.NOT> | undefined : ValidToken<typeof TOKEN_TYPE.NOT> | undefined = TPrefixable extends true ? ConditionNode<TValid> | ValidToken<typeof TOKEN_TYPE.NOT> | undefined : ValidToken<typeof TOKEN_TYPE.NOT>>(raw: {
|
|
3
3
|
prefix: TPrefix;
|
|
4
4
|
} & RawNode<GroupNode<TValid>>): GroupNode<TValid, TPrefixable, TPrefix>;
|
|
5
5
|
//# sourceMappingURL=createGroupNode.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createGroupNode.d.ts","sourceRoot":"","sources":["../../src/ast/createGroupNode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,KAAK,aAAa,EAAE,KAAK,SAAS,EAAE,KAAK,OAAO,EAAE,KAAK,UAAU,EAAE,KAAK,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAK9H,wBAAgB,eAAe,CAC9B,MAAM,SAAS,OAAO,GAAG,OAAO,EAChC,WAAW,SAAS,OAAO,GAAG,IAAI,EAClC,OAAO,SACN,WAAW,SAAS,IAAI,GACrB,aAAa,CAAC,MAAM,CAAC,GACvB,UAAU,CAAC,UAAU,CAAC,GAAG,CAAC,
|
|
1
|
+
{"version":3,"file":"createGroupNode.d.ts","sourceRoot":"","sources":["../../src/ast/createGroupNode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,KAAK,aAAa,EAAE,KAAK,SAAS,EAAE,KAAK,OAAO,EAAE,KAAK,UAAU,EAAE,KAAK,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAK9H,wBAAgB,eAAe,CAC9B,MAAM,SAAS,OAAO,GAAG,OAAO,EAChC,WAAW,SAAS,OAAO,GAAG,IAAI,EAClC,OAAO,SACN,WAAW,SAAS,IAAI,GACrB,aAAa,CAAC,MAAM,CAAC,GACvB,UAAU,CAAC,OAAO,UAAU,CAAC,GAAG,CAAC,GACjC,SAAS,GACP,UAAU,CAAC,OAAO,UAAU,CAAC,GAAG,CAAC,GACnC,SAAS,GACV,WAAW,SAAS,IAAI,GACrB,aAAa,CAAC,MAAM,CAAC,GACvB,UAAU,CAAC,OAAO,UAAU,CAAC,GAAG,CAAC,GACjC,SAAS,GACP,UAAU,CAAC,OAAO,UAAU,CAAC,GAAG,CAAC,EACpC,GAAG,EAAE;IACN,MAAM,EAAE,OAAO,CAAA;CACf,GAAG,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,WAAW,EAAE,OAAO,CAAC,CAsBvE"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { ErrorToken, RawToken,
|
|
2
|
-
export declare function createToken<TType extends
|
|
1
|
+
import type { ErrorToken, RawToken, TokenType, ValidToken } from "../types/ast.js";
|
|
2
|
+
export declare function createToken<TType extends TokenType>(raw: {
|
|
3
3
|
type: TType;
|
|
4
4
|
} & RawToken<ValidToken>): ValidToken<TType>;
|
|
5
5
|
export declare function createToken(raw: RawToken<ErrorToken>): ErrorToken;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createToken.d.ts","sourceRoot":"","sources":["../../src/ast/createToken.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,
|
|
1
|
+
{"version":3,"file":"createToken.d.ts","sourceRoot":"","sources":["../../src/ast/createToken.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAGlF,wBAAgB,WAAW,CAC1B,KAAK,SAAS,SAAS,EACtB,GAAG,EAAE;IAAE,IAAI,EAAE,KAAK,CAAA;CAAE,GAAG,QAAQ,CAAC,UAAU,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,CAAA;AACjE,wBAAgB,WAAW,CAAC,GAAG,EAAE,QAAQ,CAAC,UAAU,CAAC,GAAG,UAAU,CAAA"}
|
package/dist/ast/createToken.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { ExpressitError } from "../internal/ExpressitError.js";
|
|
2
|
-
import {
|
|
2
|
+
import { PARSER_ERROR } from "../types/errors.js";
|
|
3
3
|
function createToken(raw) {
|
|
4
4
|
if (raw.start === void 0 || raw.end === void 0) {
|
|
5
|
-
throw new ExpressitError(
|
|
5
|
+
throw new ExpressitError(PARSER_ERROR.POSITION_ERROR, raw);
|
|
6
6
|
}
|
|
7
7
|
return {
|
|
8
8
|
...raw,
|
package/dist/ast/error.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import { type ErrorToken, type
|
|
2
|
-
export declare function error<T extends
|
|
1
|
+
import { type ErrorToken, type TokenType } from "../types/ast.js";
|
|
2
|
+
export declare function error<T extends TokenType>(pos: number, expected: T[]): ErrorToken;
|
|
3
3
|
//# sourceMappingURL=error.d.ts.map
|
package/dist/ast/error.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"error.d.ts","sourceRoot":"","sources":["../../src/ast/error.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,UAAU,EAAC,KAAK,
|
|
1
|
+
{"version":3,"file":"error.d.ts","sourceRoot":"","sources":["../../src/ast/error.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,UAAU,EAAC,KAAK,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAEhE,wBAAgB,KAAK,CAAC,CAAC,SAAS,SAAS,EAAE,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,EAAE,GAAG,UAAU,CAGjF"}
|
package/dist/ast/error.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { createToken } from "./createToken.js";
|
|
2
|
+
import "../types/ast.js";
|
|
2
3
|
function error(pos, expected) {
|
|
3
4
|
if (pos === void 0) throw new Error("should never happen, passed undefined position for error token");
|
|
4
5
|
return createToken({ expected, start: pos, end: pos });
|
package/dist/ast/handlers.d.ts
CHANGED
|
@@ -1,35 +1,35 @@
|
|
|
1
|
-
import { type AnyToken, type ArrayNode, type ConditionNode, type ErrorToken, type ExpressionNode, type GroupNode, type Position, TOKEN_TYPE, type
|
|
2
|
-
declare function error<T extends
|
|
1
|
+
import { type AnyToken, type ArrayNode, type ConditionNode, type ErrorToken, type ExpressionNode, type GroupNode, type Position, TOKEN_TYPE, type TokenBoolean, type TokenQuote, type TokenType, type ValidToken, type VariableNode } from "../types/ast.js";
|
|
2
|
+
declare function error<T extends TokenType>(pos: number, expected: T[]): ErrorToken;
|
|
3
3
|
export declare const token: {
|
|
4
|
-
value: <TVal extends string | undefined>(value: TVal, pos: Position) => TVal extends string ? ValidToken<
|
|
5
|
-
custom: <TVal extends string | undefined>(value: TVal, pos: Position) => TVal extends string ? ValidToken<
|
|
6
|
-
sep: <TVal extends string | undefined>(value: TVal, pos: Position) => TVal extends string ? ValidToken<
|
|
4
|
+
value: <TVal extends string | undefined>(value: TVal, pos: Position) => TVal extends string ? ValidToken<"VALUE"> : ErrorToken;
|
|
5
|
+
custom: <TVal extends string | undefined>(value: TVal, pos: Position) => TVal extends string ? ValidToken<"OP_CUSTOM"> : ErrorToken;
|
|
6
|
+
sep: <TVal extends string | undefined>(value: TVal, pos: Position) => TVal extends string ? ValidToken<"OP_EXPANDED_SEP"> : ErrorToken;
|
|
7
7
|
};
|
|
8
8
|
/** We want to handle all the types outside the grammar file. This makes it easier without trying to check the value. */
|
|
9
9
|
export declare const delimiter: {
|
|
10
|
-
parenL: (value: string | undefined, pos: Position) => ValidToken<
|
|
11
|
-
parenR: (value: string | undefined, pos: Position) => ValidToken<
|
|
12
|
-
bracketL: (value: string | undefined, pos: Position) => ValidToken<
|
|
13
|
-
bracketR: (value: string | undefined, pos: Position) => ValidToken<
|
|
14
|
-
double: (value: string | undefined, pos: Position) => ValidToken<
|
|
15
|
-
single: (value: string | undefined, pos: Position) => ValidToken<
|
|
16
|
-
regex: (value: string | undefined, pos: Position) => ValidToken<
|
|
17
|
-
tick: (value: string | undefined, pos: Position) => ValidToken<
|
|
10
|
+
parenL: (value: string | undefined, pos: Position) => ValidToken<"PARENL"> | undefined;
|
|
11
|
+
parenR: (value: string | undefined, pos: Position) => ValidToken<"PARENR"> | undefined;
|
|
12
|
+
bracketL: (value: string | undefined, pos: Position) => ValidToken<"BRACKETL"> | undefined;
|
|
13
|
+
bracketR: (value: string | undefined, pos: Position) => ValidToken<"BRACKETR"> | undefined;
|
|
14
|
+
double: (value: string | undefined, pos: Position) => ValidToken<"DOUBLEQUOTE"> | undefined;
|
|
15
|
+
single: (value: string | undefined, pos: Position) => ValidToken<"SINGLEQUOTE"> | undefined;
|
|
16
|
+
regex: (value: string | undefined, pos: Position) => ValidToken<"REGEX"> | undefined;
|
|
17
|
+
tick: (value: string | undefined, pos: Position) => ValidToken<"BACKTICK"> | undefined;
|
|
18
18
|
tokenError: typeof error;
|
|
19
19
|
};
|
|
20
20
|
export declare const operator: {
|
|
21
|
-
and: (value: string, pos: Position) => ValidToken<
|
|
22
|
-
or: (value: string, pos: Position) => ValidToken<
|
|
23
|
-
not: (value: string, pos: Position) => ValidToken<
|
|
21
|
+
and: (value: string, pos: Position) => ValidToken<"AND">;
|
|
22
|
+
or: (value: string, pos: Position) => ValidToken<"OR">;
|
|
23
|
+
not: (value: string, pos: Position) => ValidToken<"NOT">;
|
|
24
24
|
};
|
|
25
|
-
export declare function variable(prefix: ValidToken<TOKEN_TYPE.VALUE> | null | undefined, quoteL: AnyToken<
|
|
26
|
-
export declare function condition(not: ValidToken<TOKEN_TYPE.NOT> | null | undefined, property: VariableNode | null | undefined, { propertyOperator, sepL, sepR }?: {
|
|
25
|
+
export declare function variable(prefix: ValidToken<typeof TOKEN_TYPE.VALUE> | null | undefined, quoteL: AnyToken<TokenQuote> | null | undefined, value: AnyToken<typeof TOKEN_TYPE.VALUE> | null | undefined, quoteR: AnyToken<TokenQuote> | null | undefined, flags?: ValidToken<typeof TOKEN_TYPE.VALUE>): VariableNode;
|
|
26
|
+
export declare function condition(not: ValidToken<typeof TOKEN_TYPE.NOT> | null | undefined, property: VariableNode | null | undefined, { propertyOperator, sepL, sepR }?: {
|
|
27
27
|
propertyOperator?: ConditionNode["propertyOperator"] | null;
|
|
28
|
-
sepL?: ValidToken<TOKEN_TYPE.OP_EXPANDED_SEP> | null;
|
|
29
|
-
sepR?: ValidToken<TOKEN_TYPE.OP_EXPANDED_SEP> | null;
|
|
28
|
+
sepL?: ValidToken<typeof TOKEN_TYPE.OP_EXPANDED_SEP> | null;
|
|
29
|
+
sepR?: ValidToken<typeof TOKEN_TYPE.OP_EXPANDED_SEP> | null;
|
|
30
30
|
}, value?: VariableNode | GroupNode | ArrayNode | null): ConditionNode;
|
|
31
|
-
export declare function expression(left: ConditionNode | GroupNode | null | undefined, operator: ValidToken<
|
|
32
|
-
export declare function group(operator: ValidToken<TOKEN_TYPE.NOT> | null | undefined, prefix: ConditionNode | null | undefined, parenL: ValidToken<TOKEN_TYPE.PARENL> | null | undefined, condition: GroupNode["expression"], parenR: ValidToken<TOKEN_TYPE.PARENR> | null | undefined): GroupNode;
|
|
33
|
-
export declare function array(bracketL: ValidToken<TOKEN_TYPE.BRACKETL>, values: VariableNode[], bracketR: ValidToken<TOKEN_TYPE.BRACKETR> | null | undefined): ArrayNode;
|
|
31
|
+
export declare function expression(left: ConditionNode | GroupNode | null | undefined, operator: ValidToken<TokenBoolean> | null | undefined, right: ConditionNode | GroupNode | null | undefined): ExpressionNode;
|
|
32
|
+
export declare function group(operator: ValidToken<typeof TOKEN_TYPE.NOT> | null | undefined, prefix: ConditionNode | null | undefined, parenL: ValidToken<typeof TOKEN_TYPE.PARENL> | null | undefined, condition: GroupNode["expression"], parenR: ValidToken<typeof TOKEN_TYPE.PARENR> | null | undefined): GroupNode;
|
|
33
|
+
export declare function array(bracketL: ValidToken<typeof TOKEN_TYPE.BRACKETL>, values: VariableNode[], bracketR: ValidToken<typeof TOKEN_TYPE.BRACKETR> | null | undefined): ArrayNode;
|
|
34
34
|
export {};
|
|
35
35
|
//# sourceMappingURL=handlers.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handlers.d.ts","sourceRoot":"","sources":["../../src/ast/handlers.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,KAAK,QAAQ,EAAE,KAAK,SAAS,EAAU,KAAK,aAAa,EAAE,KAAK,UAAU,EAAE,KAAK,cAAc,EAAiB,KAAK,SAAS,EAAE,KAAK,QAAQ,EAAE,UAAU,EAAE,KAAK,
|
|
1
|
+
{"version":3,"file":"handlers.d.ts","sourceRoot":"","sources":["../../src/ast/handlers.ts"],"names":[],"mappings":"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"}
|
package/dist/ast/handlers.js
CHANGED
|
@@ -43,12 +43,11 @@ const operator = {
|
|
|
43
43
|
not: operators(TOKEN_TYPE.NOT)
|
|
44
44
|
};
|
|
45
45
|
function variable(prefix, quoteL, value, quoteR, flags) {
|
|
46
|
-
var _a, _b;
|
|
47
46
|
const node = {
|
|
48
47
|
prefix: prefix ?? void 0,
|
|
49
|
-
value: value ?? error(
|
|
50
|
-
start:
|
|
51
|
-
end:
|
|
48
|
+
value: value ?? error(prefix?.end ?? quoteL?.end ?? quoteR?.start, [TOKEN_TYPE.VALUE]),
|
|
49
|
+
start: prefix?.start ?? quoteL?.start ?? value?.start ?? quoteR?.start,
|
|
50
|
+
end: quoteR?.end ?? value?.end ?? quoteL?.end ?? prefix?.end
|
|
52
51
|
};
|
|
53
52
|
if (quoteL || quoteR) {
|
|
54
53
|
node.quote = {
|
|
@@ -57,17 +56,16 @@ function variable(prefix, quoteL, value, quoteR, flags) {
|
|
|
57
56
|
};
|
|
58
57
|
if (flags) {
|
|
59
58
|
node.quote.flags = flags;
|
|
60
|
-
node.end =
|
|
59
|
+
node.end = node.quote?.flags?.end ?? node.end;
|
|
61
60
|
}
|
|
62
61
|
}
|
|
63
62
|
return createVariableNode(node);
|
|
64
63
|
}
|
|
65
64
|
function condition(not, property, { propertyOperator, sepL, sepR } = {}, value) {
|
|
66
|
-
|
|
67
|
-
const
|
|
68
|
-
const end = (value == null ? void 0 : value.end) ?? (sepR == null ? void 0 : sepR.end) ?? (propertyOperator == null ? void 0 : propertyOperator.end) ?? (sepL == null ? void 0 : sepL.end) ?? (property == null ? void 0 : property.end) ?? (not == null ? void 0 : not.end);
|
|
65
|
+
const start = not?.start ?? property?.start ?? sepL?.start ?? propertyOperator?.start ?? sepR?.start ?? value?.start;
|
|
66
|
+
const end = value?.end ?? sepR?.end ?? propertyOperator?.end ?? sepL?.end ?? property?.end ?? not?.end;
|
|
69
67
|
const node = {
|
|
70
|
-
value: value
|
|
68
|
+
value: value ?? error(end, [TOKEN_TYPE.VALUE]),
|
|
71
69
|
start,
|
|
72
70
|
end
|
|
73
71
|
};
|
|
@@ -80,50 +78,49 @@ function condition(not, property, { propertyOperator, sepL, sepR } = {}, value)
|
|
|
80
78
|
node.sep = {};
|
|
81
79
|
if (sepL) {
|
|
82
80
|
node.sep.left = sepL;
|
|
83
|
-
node.property
|
|
84
|
-
node.propertyOperator
|
|
81
|
+
node.property ??= error(sepL.start, [TOKEN_TYPE.VALUE]);
|
|
82
|
+
node.propertyOperator ??= error(sepL?.end ?? sepR?.start, [TOKEN_TYPE.VALUE]);
|
|
85
83
|
}
|
|
86
84
|
if (sepR) node.sep.right = sepR;
|
|
87
85
|
else if (!node.value || node.value.type === AST_TYPE.VARIABLE) {
|
|
88
|
-
node.sep.right = error(
|
|
86
|
+
node.sep.right = error(node.value?.start ?? end, [TOKEN_TYPE.OP_EXPANDED_SEP]);
|
|
89
87
|
}
|
|
90
88
|
} else if (propertyOperator) {
|
|
91
|
-
node.property
|
|
89
|
+
node.property ??= error(propertyOperator.start, [TOKEN_TYPE.VALUE]);
|
|
92
90
|
}
|
|
93
91
|
return createConditionNode(node);
|
|
94
92
|
}
|
|
95
93
|
function expression(left, operator2, right) {
|
|
96
94
|
return createExpressionNode({
|
|
97
|
-
left: left ?? error(
|
|
98
|
-
operator: operator2 ?? error(
|
|
99
|
-
right: right ?? error(
|
|
100
|
-
start:
|
|
101
|
-
end:
|
|
95
|
+
left: left ?? error(operator2?.start ?? right?.start, [TOKEN_TYPE.VALUE]),
|
|
96
|
+
operator: operator2 ?? error(left?.end ?? right?.start, [TOKEN_TYPE.AND, TOKEN_TYPE.OR]),
|
|
97
|
+
right: right ?? error(operator2?.end ?? left?.end, [TOKEN_TYPE.VALUE]),
|
|
98
|
+
start: left?.start ?? operator2?.start ?? right?.start,
|
|
99
|
+
end: right?.end ?? operator2?.end ?? left?.end
|
|
102
100
|
});
|
|
103
101
|
}
|
|
104
102
|
function group(operator2, prefix, parenL, condition2, parenR) {
|
|
105
103
|
return createGroupNode({
|
|
106
104
|
prefix: prefix ?? operator2 ?? void 0,
|
|
107
|
-
expression: condition2 ?? error(
|
|
105
|
+
expression: condition2 ?? error(parenL?.end ?? parenR?.start, [TOKEN_TYPE.VALUE]),
|
|
108
106
|
paren: {
|
|
109
|
-
left: parenL ?? error(
|
|
110
|
-
right: parenR ?? error(
|
|
107
|
+
left: parenL ?? error(prefix?.end ?? operator2?.end ?? condition2?.start ?? parenR?.start, [TOKEN_TYPE.PARENL]),
|
|
108
|
+
right: parenR ?? error(condition2?.end ?? parenL?.end, [TOKEN_TYPE.PARENR])
|
|
111
109
|
},
|
|
112
|
-
start:
|
|
113
|
-
end:
|
|
110
|
+
start: prefix?.start ?? operator2?.start ?? parenL?.start ?? condition2?.start ?? parenR?.start,
|
|
111
|
+
end: parenR?.end ?? condition2?.end ?? parenL?.end ?? operator2?.end ?? prefix?.end
|
|
114
112
|
});
|
|
115
113
|
}
|
|
116
114
|
function array(bracketL, values, bracketR) {
|
|
117
|
-
var _a, _b;
|
|
118
115
|
return createArrayNode({
|
|
119
116
|
values,
|
|
120
117
|
bracket: {
|
|
121
118
|
left: bracketL,
|
|
122
119
|
// always valid for now
|
|
123
|
-
right: bracketR ?? error(
|
|
120
|
+
right: bracketR ?? error(values[values.length - 1]?.end ?? bracketL?.end, [TOKEN_TYPE.BRACKETR])
|
|
124
121
|
},
|
|
125
122
|
start: bracketL.start,
|
|
126
|
-
end:
|
|
123
|
+
end: bracketR?.end ?? values[values.length - 1]?.end ?? bracketL.end
|
|
127
124
|
});
|
|
128
125
|
}
|
|
129
126
|
export {
|
|
@@ -26,18 +26,18 @@ export interface BaseOperatorDefinition {
|
|
|
26
26
|
/** How to compare the value when evualuating a condition. This is only used if using `evaluate`. */
|
|
27
27
|
valueComparer: (condition: any, contextValue: any) => boolean;
|
|
28
28
|
}
|
|
29
|
-
export type
|
|
29
|
+
export type SqlParserError = "invalidKey" | "unknownProperty" | "unknownOperator" | "unknownOperatorForType" | "invalidValueType";
|
|
30
30
|
export declare class ParserWithSqlSupport<TErrorToken extends Position & {
|
|
31
|
-
type:
|
|
31
|
+
type: SqlParserError;
|
|
32
32
|
message?: string;
|
|
33
33
|
} = Position & {
|
|
34
|
-
type:
|
|
34
|
+
type: SqlParserError;
|
|
35
35
|
message?: string;
|
|
36
36
|
}, TPropertyDefinition extends BasePropertyDefinition = BasePropertyDefinition, TPropertyDefinitions extends Record<string, TPropertyDefinition> = Record<string, TPropertyDefinition>, TOperatorDefinition extends BaseOperatorDefinition = BaseOperatorDefinition, TOperatorDefinitions extends Record<string, TOperatorDefinition> = Record<string, TOperatorDefinition>, TSqlEscapeValue extends (value: string) => any | ReturnType<TSqlEscapeValue> = (value: string) => any> extends Parser<TErrorToken> {
|
|
37
|
-
propertyDefinitions: TPropertyDefinitions;
|
|
38
|
-
operatorDefinitions: TOperatorDefinitions;
|
|
39
37
|
sqlEscapeValue: TSqlEscapeValue;
|
|
40
38
|
operatorMap: Record<string, string>;
|
|
39
|
+
propertyDefinitions: TPropertyDefinitions;
|
|
40
|
+
operatorDefinitions: TOperatorDefinitions;
|
|
41
41
|
constructor(propertyDefinitions: TPropertyDefinitions, operatorDefinitions: TOperatorDefinitions, { sqlEscapeValue }: {
|
|
42
42
|
sqlEscapeValue: TSqlEscapeValue;
|
|
43
43
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ParserWithSqlSupport.d.ts","sourceRoot":"","sources":["../../src/examples/ParserWithSqlSupport.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AACrC,OAAO,EAAY,KAAK,mBAAmB,EAAE,KAAK,oBAAoB,EAAE,KAAK,QAAQ,EAAa,MAAM,iBAAiB,CAAA;AAEzH,MAAM,WAAW,sBAAsB;IACtC,IAAI,EAAE,MAAM,CAAA;IACZ,8DAA8D;IAC9D,IAAI,EAAE,MAAM,CAAA;IACZ,kKAAkK;IAClK,iBAAiB,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,MAAM,CAAA;IACzD;;OAEG;IACH,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,cAAc,EAAE,GAAG,KAAK,GAAG,GAAG,GAAG,EAAE,CAAA;IACjE,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,kMAAkM;IAClM,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAA;IAC7B,2JAA2J;IAC3J,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,GAAG,CAAA;CAC/B;AACD,MAAM,WAAW,sBAAsB;IACtC,uEAAuE;IACvE,QAAQ,EAAE,MAAM,CAAA;IAChB,2GAA2G;IAC3G,SAAS,EAAE,MAAM,EAAE,CAAA;IACnB,+MAA+M;IAC/M,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAA;IAC3B,oGAAoG;IACpG,aAAa,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE,YAAY,EAAE,GAAG,KAAK,OAAO,CAAA;CAC7D;AACD,MAAM,MAAM,
|
|
1
|
+
{"version":3,"file":"ParserWithSqlSupport.d.ts","sourceRoot":"","sources":["../../src/examples/ParserWithSqlSupport.ts"],"names":[],"mappings":"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"}
|