@witchcraft/expressit 0.2.2 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -2
- package/dist/Lexer.d.ts +99 -94
- package/dist/Lexer.d.ts.map +1 -1
- package/dist/Lexer.js +211 -559
- package/dist/Parser.d.ts +26 -26
- package/dist/Parser.d.ts.map +1 -1
- package/dist/Parser.js +2 -1
- 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 +1 -0
- 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 +2 -6
- 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 +1 -3
- 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/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/createConditionNode.d.ts +1 -1
- package/dist/ast/createConditionNode.d.ts.map +1 -1
- 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 +1 -1
- package/dist/examples/ParserWithSqlSupport.d.ts +5 -5
- package/dist/examples/ParserWithSqlSupport.d.ts.map +1 -1
- package/dist/examples/ParserWithSqlSupport.js +2 -0
- 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/checkParserOpts.js +11 -11
- 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/getCursorInfo.js +2 -0
- package/dist/utils/getOppositeDelimiter.d.ts +2 -2
- package/dist/utils/getOppositeDelimiter.d.ts.map +1 -1
- package/dist/utils/isDelimiter.d.ts +2 -2
- package/dist/utils/isDelimiter.d.ts.map +1 -1
- package/dist/utils/isParen.d.ts +2 -2
- package/dist/utils/isParen.d.ts.map +1 -1
- package/dist/utils/isQuote.d.ts +2 -2
- package/dist/utils/isQuote.d.ts.map +1 -1
- package/package.json +13 -13
- package/src/Lexer.ts +98 -88
- package/src/Parser.ts +61 -61
- 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 +2 -2
- 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 +11 -5
- package/src/internal/ExpressitError.ts +3 -3
- package/src/internal/checkParserOpts.ts +11 -11
- 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/getOppositeDelimiter.ts +2 -2
- 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/dist/Parser.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as handle from "./ast/handlers.js";
|
|
2
|
-
import { $C, $T, type
|
|
2
|
+
import { $C, type $CType, $T, type $TType, type LexerCategoryToken, type LexerToken, type Token } from "./Lexer.js";
|
|
3
3
|
import type { ArrayNode, ConditionNode, GroupNode, NormalizedCondition, NormalizedExpression, ParserResults, ValidToken, VariableNode } from "./types/ast.js";
|
|
4
4
|
import { type AnyToken, type Completion, type Position, type Suggestion, TOKEN_TYPE } from "./types/index.js";
|
|
5
5
|
import type { FullParserOptions, ParserOptions } from "./types/parser.js";
|
|
@@ -19,7 +19,7 @@ export declare class Parser<T = any> {
|
|
|
19
19
|
constructor(options?: ParserOptions<T>);
|
|
20
20
|
state: {
|
|
21
21
|
rawInput: string;
|
|
22
|
-
lexedTokens: Token<$
|
|
22
|
+
lexedTokens: Token<$TType>[];
|
|
23
23
|
index: number;
|
|
24
24
|
shift: number;
|
|
25
25
|
};
|
|
@@ -27,7 +27,7 @@ export declare class Parser<T = any> {
|
|
|
27
27
|
* This is exposed mainly for debugging purposes. Use parse directly instead.
|
|
28
28
|
*/
|
|
29
29
|
lex(input: string): {
|
|
30
|
-
tokens: Token<$
|
|
30
|
+
tokens: Token<$TType>[];
|
|
31
31
|
shift: number;
|
|
32
32
|
rawInput: string;
|
|
33
33
|
};
|
|
@@ -36,24 +36,24 @@ export declare class Parser<T = any> {
|
|
|
36
36
|
* It can also parse the result from `lex`, but that is really only for internal use.
|
|
37
37
|
*/
|
|
38
38
|
parse(input: string | {
|
|
39
|
-
tokens: Token<$
|
|
39
|
+
tokens: Token<$TType>[];
|
|
40
40
|
shift: number;
|
|
41
41
|
rawInput: string;
|
|
42
42
|
}): ParserResults;
|
|
43
43
|
subParserOne?: Parser<T>;
|
|
44
44
|
subParserTwo?: Parser<T>;
|
|
45
45
|
createSubParserIfNotExists(opts: ParserOptions<T>, which?: "One" | "Two"): Parser["subParserOne"];
|
|
46
|
-
transformCategoryToken<TC extends $
|
|
47
|
-
getCategoryTokens<TType extends $
|
|
48
|
-
getTokenType(type: $
|
|
49
|
-
isExactType<TType extends $
|
|
50
|
-
isType(token: Token | undefined, type: $
|
|
51
|
-
createErrorToken(type: $
|
|
46
|
+
transformCategoryToken<TC extends $CType>(token: Token, categoryToken: LexerCategoryToken<TC>): Token<TC>;
|
|
47
|
+
getCategoryTokens<TType extends $CType>(type: TType): LexerCategoryToken<TType>["entries"] | undefined;
|
|
48
|
+
getTokenType(type: $TType | $CType): LexerToken<$TType> | undefined;
|
|
49
|
+
isExactType<TType extends $TType>(token: Token, type: TType): token is Token<TType>;
|
|
50
|
+
isType(token: Token | undefined, type: $TType | $CType): boolean;
|
|
51
|
+
createErrorToken(type: $TType, index?: number): Token;
|
|
52
52
|
processToken<TDefined extends boolean = boolean>(token?: Pick<Token, "value" | "startOffset" | "endOffset">): [TDefined extends true ? string : string | undefined, Position];
|
|
53
|
-
peek(n?: number): Token<$
|
|
53
|
+
peek(n?: number): Token<$TType> | undefined;
|
|
54
54
|
nextIsEof(): boolean;
|
|
55
|
-
consumeAny(): Token<$
|
|
56
|
-
consume<TType extends $
|
|
55
|
+
consumeAny(): Token<$TType>;
|
|
56
|
+
consume<TType extends $TType | $CType>(type: TType | undefined): Token<TType>;
|
|
57
57
|
saveState(): Parser["state"];
|
|
58
58
|
restoreState(state: Parser["state"]): void;
|
|
59
59
|
ruleMain(): ParserResults;
|
|
@@ -68,9 +68,9 @@ export declare class Parser<T = any> {
|
|
|
68
68
|
convertRegexValues?: boolean;
|
|
69
69
|
convertArrayValues?: boolean;
|
|
70
70
|
}): [
|
|
71
|
-
ValidToken<TOKEN_TYPE.PARENL> | undefined,
|
|
71
|
+
ValidToken<typeof TOKEN_TYPE.PARENL> | undefined,
|
|
72
72
|
GroupNode["expression"],
|
|
73
|
-
ValidToken<TOKEN_TYPE.PARENR> | undefined
|
|
73
|
+
ValidToken<typeof TOKEN_TYPE.PARENR> | undefined
|
|
74
74
|
];
|
|
75
75
|
rulePlainBracketGroup({ convertArrayValues }?: {
|
|
76
76
|
convertArrayValues?: boolean;
|
|
@@ -86,22 +86,22 @@ export declare class Parser<T = any> {
|
|
|
86
86
|
ruleVariable({ unprefixed, }?: {
|
|
87
87
|
unprefixed?: boolean;
|
|
88
88
|
}): VariableNode | undefined;
|
|
89
|
-
ruleValueDelimAny(): ValidToken<TOKEN_TYPE.SINGLEQUOTE | TOKEN_TYPE.DOUBLEQUOTE | TOKEN_TYPE.BACKTICK | TOKEN_TYPE.REGEX> | undefined;
|
|
90
|
-
ruleRegexAny(): ValidToken<TOKEN_TYPE.REGEX> | [ValidToken<TOKEN_TYPE.REGEX>, AnyToken<TOKEN_TYPE.VALUE>];
|
|
91
|
-
ruleValueNot<TType extends $T.QUOTE_SINGLE | $T.QUOTE_DOUBLE | $T.QUOTE_BACKTICK | $C.REGEX_ANY>(type: TType): ValidToken<TOKEN_TYPE.VALUE>;
|
|
92
|
-
ruleQuote<TType extends $T.QUOTE_SINGLE | $T.QUOTE_DOUBLE | $T.QUOTE_BACKTICK>(type: TType): ValidToken<TType extends $T.QUOTE_SINGLE ? TOKEN_TYPE.SINGLEQUOTE : TType extends $T.QUOTE_DOUBLE ? TOKEN_TYPE.DOUBLEQUOTE : TType extends $T.QUOTE_BACKTICK ? TOKEN_TYPE.BACKTICK : never>;
|
|
89
|
+
ruleValueDelimAny(): ValidToken<typeof TOKEN_TYPE.SINGLEQUOTE | typeof TOKEN_TYPE.DOUBLEQUOTE | typeof TOKEN_TYPE.BACKTICK | typeof TOKEN_TYPE.REGEX> | undefined;
|
|
90
|
+
ruleRegexAny(): ValidToken<typeof TOKEN_TYPE.REGEX> | [ValidToken<typeof TOKEN_TYPE.REGEX>, AnyToken<typeof TOKEN_TYPE.VALUE>];
|
|
91
|
+
ruleValueNot<TType extends typeof $T.QUOTE_SINGLE | typeof $T.QUOTE_DOUBLE | typeof $T.QUOTE_BACKTICK | typeof $C.REGEX_ANY>(type: TType): ValidToken<typeof TOKEN_TYPE.VALUE>;
|
|
92
|
+
ruleQuote<TType extends typeof $T.QUOTE_SINGLE | typeof $T.QUOTE_DOUBLE | typeof $T.QUOTE_BACKTICK>(type: TType): ValidToken<TType extends typeof $T.QUOTE_SINGLE ? typeof TOKEN_TYPE.SINGLEQUOTE : TType extends typeof $T.QUOTE_DOUBLE ? typeof TOKEN_TYPE.DOUBLEQUOTE : TType extends typeof $T.QUOTE_BACKTICK ? typeof TOKEN_TYPE.BACKTICK : never>;
|
|
93
93
|
ruleVariablePrefix<TOnlyToken extends boolean = false>({ onlyToken, unprefixed, }?: {
|
|
94
94
|
onlyToken?: TOnlyToken;
|
|
95
95
|
unprefixed?: boolean;
|
|
96
|
-
}): TOnlyToken extends true ? Token
|
|
96
|
+
}): TOnlyToken extends true ? Token<typeof $T.VALUE_UNQUOTED> | undefined : AnyToken<typeof TOKEN_TYPE.VALUE> | undefined;
|
|
97
97
|
ruleValueUnquoted<TOnlyToken extends boolean = false>({ onlyToken, }?: {
|
|
98
98
|
onlyToken?: TOnlyToken;
|
|
99
|
-
}): TOnlyToken extends true ? Token
|
|
100
|
-
ruleParenL(): ValidToken<TOKEN_TYPE.PARENL> | undefined;
|
|
101
|
-
ruleParenR(): ValidToken<TOKEN_TYPE.PARENR> | undefined;
|
|
102
|
-
ruleBracketL(): ValidToken<TOKEN_TYPE.BRACKETL> | undefined;
|
|
103
|
-
ruleBracketR(): ValidToken<TOKEN_TYPE.BRACKETR> | undefined;
|
|
104
|
-
ruleNot(): ValidToken<TOKEN_TYPE.NOT> | undefined;
|
|
99
|
+
}): TOnlyToken extends true ? Token<typeof $T.VALUE_UNQUOTED> : AnyToken<typeof TOKEN_TYPE.VALUE>;
|
|
100
|
+
ruleParenL(): ValidToken<typeof TOKEN_TYPE.PARENL> | undefined;
|
|
101
|
+
ruleParenR(): ValidToken<typeof TOKEN_TYPE.PARENR> | undefined;
|
|
102
|
+
ruleBracketL(): ValidToken<typeof TOKEN_TYPE.BRACKETL> | undefined;
|
|
103
|
+
ruleBracketR(): ValidToken<typeof TOKEN_TYPE.BRACKETR> | undefined;
|
|
104
|
+
ruleNot(): ValidToken<typeof TOKEN_TYPE.NOT> | undefined;
|
|
105
105
|
/**
|
|
106
106
|
* Given the ast, a list of {@link Suggestion} entries, the parser options, and a list of variables, prefixes, operators, etc, and the preferred quote type, returns a list of {@link Completion} entries.
|
|
107
107
|
*
|
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,
|
|
1
|
+
{"version":3,"file":"Parser.d.ts","sourceRoot":"","sources":["../src/Parser.ts"],"names":[],"mappings":"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"}
|
package/dist/Parser.js
CHANGED
|
@@ -22,6 +22,7 @@ import { unescape } from "./internal/unescape.js";
|
|
|
22
22
|
import { Lexer, $C, $T } from "./Lexer.js";
|
|
23
23
|
import { TOKEN_TYPE, AST_TYPE } from "./types/ast.js";
|
|
24
24
|
import { SUGGESTION_TYPE } from "./types/autocomplete.js";
|
|
25
|
+
import "./types/errors.js";
|
|
25
26
|
import { extractTokens } from "./utils/extractTokens.js";
|
|
26
27
|
import { generateParentsMap } from "./utils/generateParentsMap.js";
|
|
27
28
|
import { getCursorInfo } from "./utils/getCursorInfo.js";
|
|
@@ -47,7 +48,7 @@ const defaultNodeDirs = {
|
|
|
47
48
|
const createDefaultRequires = (partial = {}) => ({
|
|
48
49
|
whitespace: {
|
|
49
50
|
...defaultNodeDirs,
|
|
50
|
-
...partial.whitespace
|
|
51
|
+
...partial.whitespace ?? {}
|
|
51
52
|
},
|
|
52
53
|
group: partial.group ?? false,
|
|
53
54
|
prefix: partial.prefix ?? false
|
|
@@ -10,5 +10,5 @@ import { type AnyToken, type ArrayNode, type ConditionNode, type ErrorToken, typ
|
|
|
10
10
|
* @param propertyOperator Set the operator for a property condition. A property must have been passed. The property operator must be a valid token. There is no case where it would not be. If using an operator that is the same as a separator, if used as an operator, should be set as an operator.
|
|
11
11
|
* @param sep Pass separator tokens for expanded property conditions.
|
|
12
12
|
*/
|
|
13
|
-
export declare function condition(value: VariableNode | GroupNode | ArrayNode | ErrorToken, not?: true | ValidToken<TOKEN_TYPE.NOT>, property?: VariableNode | ErrorToken, propertyOperator?: AnyToken<TOKEN_TYPE.OP_CUSTOM | TOKEN_TYPE.VALUE>, { right, left }?: Partial<Record<"right" | "left", ValidToken<TOKEN_TYPE.OP_EXPANDED_SEP>>>): ConditionNode;
|
|
13
|
+
export declare function condition(value: VariableNode | GroupNode | ArrayNode | ErrorToken, not?: true | ValidToken<typeof TOKEN_TYPE.NOT>, property?: VariableNode | ErrorToken, propertyOperator?: AnyToken<typeof TOKEN_TYPE.OP_CUSTOM | typeof TOKEN_TYPE.VALUE>, { right, left }?: Partial<Record<"right" | "left", ValidToken<typeof TOKEN_TYPE.OP_EXPANDED_SEP>>>): ConditionNode;
|
|
14
14
|
//# sourceMappingURL=condition.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"condition.d.ts","sourceRoot":"","sources":["../../../src/ast/builders/condition.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,QAAQ,EAAE,KAAK,SAAS,EAAE,KAAK,aAAa,EAAE,KAAK,UAAU,EAAmB,KAAK,SAAS,EAAiB,KAAK,UAAU,EAAE,KAAK,UAAU,EAAE,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAG5M;;;;;;;;;;GAUG;AAEH,wBAAgB,SAAS,CACxB,KAAK,EACH,YAAY,GACZ,SAAS,GACT,SAAS,GACT,UAAU,EACZ,GAAG,GAAE,IAAI,GAAG,UAAU,CAAC,UAAU,CAAC,GAAG,CAAQ,
|
|
1
|
+
{"version":3,"file":"condition.d.ts","sourceRoot":"","sources":["../../../src/ast/builders/condition.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,QAAQ,EAAE,KAAK,SAAS,EAAE,KAAK,aAAa,EAAE,KAAK,UAAU,EAAmB,KAAK,SAAS,EAAiB,KAAK,UAAU,EAAE,KAAK,UAAU,EAAE,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAG5M;;;;;;;;;;GAUG;AAEH,wBAAgB,SAAS,CACxB,KAAK,EACH,YAAY,GACZ,SAAS,GACT,SAAS,GACT,UAAU,EACZ,GAAG,GAAE,IAAI,GAAG,UAAU,CAAC,OAAO,UAAU,CAAC,GAAG,CAAQ,EACpD,QAAQ,CAAC,EAAE,YAAY,GAAG,UAAU,EACpC,gBAAgB,CAAC,EAAE,QAAQ,CAAC,OAAO,UAAU,CAAC,SAAS,GAAG,OAAO,UAAU,CAAC,KAAK,CAAC,EAClF,EAAE,KAAK,EAAE,IAAI,EAAE,GAAE,OAAO,CAAC,MAAM,CAAC,OAAO,GAAG,MAAM,EAAE,UAAU,CAAC,OAAO,UAAU,CAAC,eAAe,CAAC,CAAC,CAAO,GACrG,aAAa,CAsBf"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { type
|
|
1
|
+
import { type ExtractToken } from "../../types/ast.js";
|
|
2
2
|
/**
|
|
3
3
|
* Faster way, more intuitive way to generate the options for matching delimiters (e.g. quotes and parens) for functions like {@link variable} and {@link group} .
|
|
4
4
|
*/
|
|
5
|
-
export declare function delim<TLeft extends boolean | string, TRight extends boolean | string, TType extends TLeft extends string ?
|
|
5
|
+
export declare function delim<TLeft extends boolean | string, TRight extends boolean | string, TType extends TLeft extends string ? ExtractToken<TLeft> : TRight extends string ? ExtractToken<TRight> : undefined>(left?: TLeft, right?: TRight): {
|
|
6
6
|
left: TLeft extends string ? true : TLeft;
|
|
7
7
|
right: TRight extends string ? true : TRight;
|
|
8
8
|
} & TType extends undefined ? Record<string, never> : {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"delim.d.ts","sourceRoot":"","sources":["../../../src/ast/builders/delim.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,
|
|
1
|
+
{"version":3,"file":"delim.d.ts","sourceRoot":"","sources":["../../../src/ast/builders/delim.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,YAAY,EAAc,MAAM,oBAAoB,CAAA;AAElE;;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,YAAY,CAAC,KAAK,CAAC,GACnB,MAAM,SAAS,MAAM,GACrB,YAAY,CAAC,MAAM,CAAC,GACpB,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"}
|
|
@@ -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"}
|
|
@@ -6,16 +6,12 @@ function expression(left, operator, right) {
|
|
|
6
6
|
const start = (left == null ? void 0 : left.start) ?? (operator == null ? void 0 : operator.start) ?? (right == null ? void 0 : right.start);
|
|
7
7
|
const end = (right == null ? void 0 : right.end) ?? (operator == null ? void 0 : operator.end) ?? (left == null ? void 0 : left.end);
|
|
8
8
|
const position = pos({ start, end });
|
|
9
|
-
|
|
10
|
-
left = token(TOKEN_TYPE.VALUE, void 0, { start: position.start });
|
|
11
|
-
}
|
|
9
|
+
left ?? (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 ?? (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"}
|
|
@@ -3,9 +3,7 @@ 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
5
|
var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n;
|
|
6
|
-
|
|
7
|
-
expression = token(TOKEN_TYPE.VALUE, void 0, (prefix == null ? void 0 : prefix.end) !== void 0 ? { start: prefix.end } : void 0);
|
|
8
|
-
}
|
|
6
|
+
expression ?? (expression = token(TOKEN_TYPE.VALUE, void 0, (prefix == null ? void 0 : prefix.end) !== void 0 ? { start: prefix.end } : void 0));
|
|
9
7
|
const node = {
|
|
10
8
|
prefix: void 0,
|
|
11
9
|
expression
|
|
@@ -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"}
|
|
@@ -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,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
|
@@ -67,7 +67,7 @@ function condition(not, property, { propertyOperator, sepL, sepR } = {}, value)
|
|
|
67
67
|
const start = (not == null ? void 0 : not.start) ?? (property == null ? void 0 : property.start) ?? (sepL == null ? void 0 : sepL.start) ?? (propertyOperator == null ? void 0 : propertyOperator.start) ?? (sepR == null ? void 0 : sepR.start) ?? (value == null ? void 0 : value.start);
|
|
68
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);
|
|
69
69
|
const node = {
|
|
70
|
-
value: value
|
|
70
|
+
value: value ?? error(end, [TOKEN_TYPE.VALUE]),
|
|
71
71
|
start,
|
|
72
72
|
end
|
|
73
73
|
};
|
|
@@ -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
|
});
|