rawsql-ts 0.7.1-beta → 0.7.2-beta
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/esm/parsers/SourceExpressionParser.js +16 -1
- package/dist/esm/parsers/SourceExpressionParser.js.map +1 -1
- package/dist/esm/types/parsers/SourceExpressionParser.d.ts +1 -0
- package/dist/parsers/SourceExpressionParser.d.ts +1 -0
- package/dist/parsers/SourceExpressionParser.js +16 -1
- package/dist/parsers/SourceExpressionParser.js.map +1 -1
- package/package.json +1 -1
@@ -35,7 +35,19 @@ export class SourceExpressionParser {
|
|
35
35
|
const sourceExpr = new SourceExpression(sourceResult.value, aliasResult.value);
|
36
36
|
return { value: sourceExpr, newIndex: idx };
|
37
37
|
}
|
38
|
-
|
38
|
+
/**
|
39
|
+
* Explanation:
|
40
|
+
* Source aliases are typically identified as TokenType.Identifier.
|
41
|
+
* However, when the 'AS' keyword is omitted and column alias names are specified,
|
42
|
+
* they may sometimes be classified as TokenType.Function.
|
43
|
+
* Since the TokenReader's responsibility is to perform coarse-grained classification,
|
44
|
+
* the parser must interpret subsequent 'Function' tokens as source alias expressions
|
45
|
+
* when they follow a source definition.
|
46
|
+
* Example:
|
47
|
+
* SQL: select t.* from (values(1)) t(id)
|
48
|
+
* Explanation: The alias 't' and its column alias 'id' are parsed as a source alias expression.
|
49
|
+
*/
|
50
|
+
if (idx < lexemes.length && this.isTokenTypeAliasCandidate(lexemes[idx].type)) {
|
39
51
|
const aliasResult = SourceAliasExpressionParser.parseFromLexeme(lexemes, idx);
|
40
52
|
idx = aliasResult.newIndex;
|
41
53
|
const sourceExpr = new SourceExpression(sourceResult.value, aliasResult.value);
|
@@ -46,5 +58,8 @@ export class SourceExpressionParser {
|
|
46
58
|
const expr = new SourceExpression(sourceResult.value, null);
|
47
59
|
return { value: expr, newIndex: idx };
|
48
60
|
}
|
61
|
+
static isTokenTypeAliasCandidate(type) {
|
62
|
+
return (type & TokenType.Identifier) !== 0 || (type & TokenType.Function) !== 0;
|
63
|
+
}
|
49
64
|
}
|
50
65
|
//# sourceMappingURL=SourceExpressionParser.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"SourceExpressionParser.js","sourceRoot":"","sources":["../../../src/parsers/SourceExpressionParser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyB,gBAAgB,EAAe,MAAM,kBAAkB,CAAC;AACxF,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAU,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AAE5E,MAAM,OAAO,sBAAsB;IAC/B;;OAEG;IACI,MAAM,CAAC,KAAK,CAAC,KAAa;QAC7B,MAAM,SAAS,GAAG,IAAI,YAAY,CAAC,KAAK,CAAC,CAAC;QAC1C,MAAM,OAAO,GAAG,SAAS,CAAC,UAAU,EAAE,CAAC;QACvC,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QAChD,IAAI,MAAM,CAAC,QAAQ,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;YACnC,MAAM,IAAI,KAAK,CAAC,mCAAmC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,iBAAiB,MAAM,CAAC,QAAQ,sEAAsE,CAAC,CAAC;QAC7L,CAAC;QACD,OAAO,MAAM,CAAC,KAAK,CAAC;IACxB,CAAC;IAEM,MAAM,CAAC,2BAA2B,CAAC,OAAiB,EAAE,KAAa;QACtE,MAAM,MAAM,GAAG,YAAY,CAAC,2BAA2B,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QACxE,4BAA4B;QAC5B,MAAM,UAAU,GAAG,IAAI,gBAAgB,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAC5D,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC;IAC5D,CAAC;IAED,uCAAuC;IAChC,MAAM,CAAC,eAAe,CAAC,OAAiB,EAAE,KAAa;QAC1D,IAAI,GAAG,GAAG,KAAK,CAAC;QAEhB,MAAM,YAAY,GAAG,YAAY,CAAC,eAAe,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QAChE,GAAG,GAAG,YAAY,CAAC,QAAQ,CAAC;QAE5B,IAAI,GAAG,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;YACvB,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,IAAI,EAAE,CAAC;gBAC9B,GAAG,EAAE,CAAC;gBACN,MAAM,WAAW,GAAG,2BAA2B,CAAC,eAAe,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;gBAC9E,GAAG,GAAG,WAAW,CAAC,QAAQ,CAAC;gBAC3B,MAAM,UAAU,GAAG,IAAI,gBAAgB,CAAC,YAAY,CAAC,KAAK,EAAE,WAAW,CAAC,KAAK,CAAC,CAAC;gBAC/E,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC;YAChD,CAAC;YAED,IAAI,OAAO,CAAC,
|
1
|
+
{"version":3,"file":"SourceExpressionParser.js","sourceRoot":"","sources":["../../../src/parsers/SourceExpressionParser.ts"],"names":[],"mappings":"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"}
|
@@ -38,7 +38,19 @@ class SourceExpressionParser {
|
|
38
38
|
const sourceExpr = new Clause_1.SourceExpression(sourceResult.value, aliasResult.value);
|
39
39
|
return { value: sourceExpr, newIndex: idx };
|
40
40
|
}
|
41
|
-
|
41
|
+
/**
|
42
|
+
* Explanation:
|
43
|
+
* Source aliases are typically identified as TokenType.Identifier.
|
44
|
+
* However, when the 'AS' keyword is omitted and column alias names are specified,
|
45
|
+
* they may sometimes be classified as TokenType.Function.
|
46
|
+
* Since the TokenReader's responsibility is to perform coarse-grained classification,
|
47
|
+
* the parser must interpret subsequent 'Function' tokens as source alias expressions
|
48
|
+
* when they follow a source definition.
|
49
|
+
* Example:
|
50
|
+
* SQL: select t.* from (values(1)) t(id)
|
51
|
+
* Explanation: The alias 't' and its column alias 'id' are parsed as a source alias expression.
|
52
|
+
*/
|
53
|
+
if (idx < lexemes.length && this.isTokenTypeAliasCandidate(lexemes[idx].type)) {
|
42
54
|
const aliasResult = SourceAliasExpressionParser_1.SourceAliasExpressionParser.parseFromLexeme(lexemes, idx);
|
43
55
|
idx = aliasResult.newIndex;
|
44
56
|
const sourceExpr = new Clause_1.SourceExpression(sourceResult.value, aliasResult.value);
|
@@ -49,6 +61,9 @@ class SourceExpressionParser {
|
|
49
61
|
const expr = new Clause_1.SourceExpression(sourceResult.value, null);
|
50
62
|
return { value: expr, newIndex: idx };
|
51
63
|
}
|
64
|
+
static isTokenTypeAliasCandidate(type) {
|
65
|
+
return (type & Lexeme_1.TokenType.Identifier) !== 0 || (type & Lexeme_1.TokenType.Function) !== 0;
|
66
|
+
}
|
52
67
|
}
|
53
68
|
exports.SourceExpressionParser = SourceExpressionParser;
|
54
69
|
//# sourceMappingURL=SourceExpressionParser.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"SourceExpressionParser.js","sourceRoot":"","sources":["../../src/parsers/SourceExpressionParser.ts"],"names":[],"mappings":";;;AAAA,6CAAwF;AACxF,iDAA8C;AAC9C,6CAAqD;AACrD,iDAA8C;AAC9C,+EAA4E;AAE5E,MAAa,sBAAsB;IAC/B;;OAEG;IACI,MAAM,CAAC,KAAK,CAAC,KAAa;QAC7B,MAAM,SAAS,GAAG,IAAI,2BAAY,CAAC,KAAK,CAAC,CAAC;QAC1C,MAAM,OAAO,GAAG,SAAS,CAAC,UAAU,EAAE,CAAC;QACvC,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QAChD,IAAI,MAAM,CAAC,QAAQ,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;YACnC,MAAM,IAAI,KAAK,CAAC,mCAAmC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,iBAAiB,MAAM,CAAC,QAAQ,sEAAsE,CAAC,CAAC;QAC7L,CAAC;QACD,OAAO,MAAM,CAAC,KAAK,CAAC;IACxB,CAAC;IAEM,MAAM,CAAC,2BAA2B,CAAC,OAAiB,EAAE,KAAa;QACtE,MAAM,MAAM,GAAG,2BAAY,CAAC,2BAA2B,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QACxE,4BAA4B;QAC5B,MAAM,UAAU,GAAG,IAAI,yBAAgB,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAC5D,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC;IAC5D,CAAC;IAED,uCAAuC;IAChC,MAAM,CAAC,eAAe,CAAC,OAAiB,EAAE,KAAa;QAC1D,IAAI,GAAG,GAAG,KAAK,CAAC;QAEhB,MAAM,YAAY,GAAG,2BAAY,CAAC,eAAe,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QAChE,GAAG,GAAG,YAAY,CAAC,QAAQ,CAAC;QAE5B,IAAI,GAAG,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;YACvB,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,IAAI,EAAE,CAAC;gBAC9B,GAAG,EAAE,CAAC;gBACN,MAAM,WAAW,GAAG,yDAA2B,CAAC,eAAe,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;gBAC9E,GAAG,GAAG,WAAW,CAAC,QAAQ,CAAC;gBAC3B,MAAM,UAAU,GAAG,IAAI,yBAAgB,CAAC,YAAY,CAAC,KAAK,EAAE,WAAW,CAAC,KAAK,CAAC,CAAC;gBAC/E,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC;YAChD,CAAC;YAED,IAAI,OAAO,CAAC,
|
1
|
+
{"version":3,"file":"SourceExpressionParser.js","sourceRoot":"","sources":["../../src/parsers/SourceExpressionParser.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "rawsql-ts",
|
3
|
-
"version": "0.7.
|
3
|
+
"version": "0.7.2-beta",
|
4
4
|
"description": "[beta]High-performance SQL parser and AST analyzer written in TypeScript. Provides fast parsing and advanced transformation capabilities.",
|
5
5
|
"main": "dist/index.js",
|
6
6
|
"module": "dist/esm/index.js",
|