rawsql-ts 0.22.0 → 0.23.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.
Files changed (50) hide show
  1. package/dist/esm/index.min.js +5 -5
  2. package/dist/esm/index.min.js.map +3 -3
  3. package/dist/esm/parsers/FullNameParser.js +5 -0
  4. package/dist/esm/parsers/FullNameParser.js.map +1 -1
  5. package/dist/esm/parsers/IdentifierDecorator.d.ts +5 -0
  6. package/dist/esm/parsers/IdentifierDecorator.js +80 -4
  7. package/dist/esm/parsers/IdentifierDecorator.js.map +1 -1
  8. package/dist/esm/parsers/SqlPrintTokenParser.d.ts +2 -0
  9. package/dist/esm/parsers/SqlPrintTokenParser.js +6 -5
  10. package/dist/esm/parsers/SqlPrintTokenParser.js.map +1 -1
  11. package/dist/esm/parsers/ValueParser.d.ts +1 -0
  12. package/dist/esm/parsers/ValueParser.js +12 -0
  13. package/dist/esm/parsers/ValueParser.js.map +1 -1
  14. package/dist/esm/tokenReaders/LiteralTokenReader.js +2 -5
  15. package/dist/esm/tokenReaders/LiteralTokenReader.js.map +1 -1
  16. package/dist/esm/transformers/FormatOptionResolver.d.ts +9 -5
  17. package/dist/esm/transformers/FormatOptionResolver.js +7 -3
  18. package/dist/esm/transformers/FormatOptionResolver.js.map +1 -1
  19. package/dist/esm/transformers/SqlFormatter.d.ts +3 -1
  20. package/dist/esm/transformers/SqlFormatter.js +4 -4
  21. package/dist/esm/transformers/SqlFormatter.js.map +1 -1
  22. package/dist/esm/utils/SqlSpecialValueKeywords.d.ts +2 -0
  23. package/dist/esm/utils/SqlSpecialValueKeywords.js +15 -0
  24. package/dist/esm/utils/SqlSpecialValueKeywords.js.map +1 -0
  25. package/dist/index.min.js +5 -5
  26. package/dist/index.min.js.map +3 -3
  27. package/dist/parsers/FullNameParser.js +5 -0
  28. package/dist/parsers/FullNameParser.js.map +1 -1
  29. package/dist/parsers/IdentifierDecorator.js +80 -4
  30. package/dist/parsers/IdentifierDecorator.js.map +1 -1
  31. package/dist/parsers/SqlPrintTokenParser.js +6 -5
  32. package/dist/parsers/SqlPrintTokenParser.js.map +1 -1
  33. package/dist/parsers/ValueParser.js +12 -0
  34. package/dist/parsers/ValueParser.js.map +1 -1
  35. package/dist/src/parsers/IdentifierDecorator.d.ts +5 -0
  36. package/dist/src/parsers/SqlPrintTokenParser.d.ts +2 -0
  37. package/dist/src/parsers/ValueParser.d.ts +1 -0
  38. package/dist/src/transformers/FormatOptionResolver.d.ts +9 -5
  39. package/dist/src/transformers/SqlFormatter.d.ts +3 -1
  40. package/dist/src/utils/SqlSpecialValueKeywords.d.ts +2 -0
  41. package/dist/tokenReaders/LiteralTokenReader.js +2 -5
  42. package/dist/tokenReaders/LiteralTokenReader.js.map +1 -1
  43. package/dist/transformers/FormatOptionResolver.js +7 -3
  44. package/dist/transformers/FormatOptionResolver.js.map +1 -1
  45. package/dist/transformers/SqlFormatter.js +6 -6
  46. package/dist/transformers/SqlFormatter.js.map +1 -1
  47. package/dist/tsconfig.browser.tsbuildinfo +1 -1
  48. package/dist/utils/SqlSpecialValueKeywords.js +18 -0
  49. package/dist/utils/SqlSpecialValueKeywords.js.map +1 -0
  50. package/package.json +1 -1
@@ -1,5 +1,6 @@
1
1
  import { TokenType } from "../models/Lexeme";
2
2
  import { IdentifierString } from "../models/ValueComponent";
3
+ import { SQL_SPECIAL_VALUE_KEYWORD_SET } from "../utils/SqlSpecialValueKeywords";
3
4
  import { SqlTokenizer } from "./SqlTokenizer";
4
5
  /**
5
6
  * PostgreSQL non-reserved keywords that may appear as Command tokens,
@@ -99,6 +100,10 @@ export class FullNameParser {
99
100
  identifiers.push(lexemes[idx].value);
100
101
  idx++;
101
102
  }
103
+ else if ((lexemes[idx].type & TokenType.Literal) && SQL_SPECIAL_VALUE_KEYWORD_SET.has(lexemes[idx].value.toLowerCase())) {
104
+ identifiers.push(lexemes[idx].value);
105
+ idx++;
106
+ }
102
107
  else if ((lexemes[idx].type & TokenType.Command) &&
103
108
  POSTGRESQL_COMMAND_KEYWORDS_ALLOWED_AS_IDENTIFIER.has(lexemes[idx].value.toLowerCase())) {
104
109
  // Accept selected PostgreSQL non-reserved keywords only when this parser
@@ -1 +1 @@
1
- {"version":3,"file":"FullNameParser.js","sourceRoot":"","sources":["../../../src/parsers/FullNameParser.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"FullNameParser.js","sourceRoot":"","sources":["../../../src/parsers/FullNameParser.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,14 @@
1
1
  export declare class IdentifierDecorator {
2
2
  start: string;
3
3
  end: string;
4
+ target: 'all' | 'minimal';
4
5
  constructor(identifierEscape?: {
5
6
  start?: string;
6
7
  end?: string;
8
+ target?: 'all' | 'minimal';
7
9
  });
8
10
  decorate(text: string): string;
11
+ private canRenderBare;
12
+ private isPlainIdentifierToken;
13
+ private escapeIdentifierText;
9
14
  }
@@ -1,13 +1,89 @@
1
+ import { SQL_SPECIAL_VALUE_KEYWORDS } from "../utils/SqlSpecialValueKeywords";
2
+ import { TokenType } from "../models/Lexeme";
3
+ import { SqlTokenizer } from "./SqlTokenizer";
1
4
  export class IdentifierDecorator {
2
5
  constructor(identifierEscape) {
3
- var _a, _b;
6
+ var _a, _b, _c;
4
7
  this.start = (_a = identifierEscape === null || identifierEscape === void 0 ? void 0 : identifierEscape.start) !== null && _a !== void 0 ? _a : '"';
5
8
  this.end = (_b = identifierEscape === null || identifierEscape === void 0 ? void 0 : identifierEscape.end) !== null && _b !== void 0 ? _b : '"';
9
+ this.target = (_c = identifierEscape === null || identifierEscape === void 0 ? void 0 : identifierEscape.target) !== null && _c !== void 0 ? _c : 'all';
6
10
  }
7
11
  decorate(text) {
8
- // override
9
- text = this.start + text + this.end;
10
- return text;
12
+ if (this.target === 'minimal' && this.canRenderBare(text)) {
13
+ return text;
14
+ }
15
+ return this.start + this.escapeIdentifierText(text) + this.end;
16
+ }
17
+ canRenderBare(text) {
18
+ return /^[a-z_][a-z0-9_]*$/.test(text) &&
19
+ !UNSAFE_BARE_IDENTIFIERS.has(text) &&
20
+ this.isPlainIdentifierToken(text);
21
+ }
22
+ isPlainIdentifierToken(text) {
23
+ const lexemes = new SqlTokenizer(text).readLexmes();
24
+ return lexemes.length === 1 && lexemes[0].type === TokenType.Identifier && lexemes[0].value === text;
25
+ }
26
+ escapeIdentifierText(text) {
27
+ if (!this.end) {
28
+ return text;
29
+ }
30
+ return text.split(this.end).join(this.end + this.end);
11
31
  }
12
32
  }
33
+ const UNSAFE_BARE_IDENTIFIERS = new Set([
34
+ // Core SQL syntax and literals.
35
+ 'all',
36
+ 'and',
37
+ 'any',
38
+ 'as',
39
+ 'between',
40
+ 'by',
41
+ 'case',
42
+ 'cross',
43
+ 'delete',
44
+ 'distinct',
45
+ 'else',
46
+ 'end',
47
+ 'except',
48
+ 'exists',
49
+ 'false',
50
+ 'fetch',
51
+ 'for',
52
+ 'from',
53
+ 'full',
54
+ 'group',
55
+ 'having',
56
+ 'in',
57
+ 'inner',
58
+ 'insert',
59
+ 'intersect',
60
+ 'into',
61
+ 'is',
62
+ 'join',
63
+ 'left',
64
+ 'like',
65
+ 'limit',
66
+ 'not',
67
+ 'null',
68
+ 'offset',
69
+ 'on',
70
+ 'or',
71
+ 'order',
72
+ 'outer',
73
+ 'right',
74
+ 'select',
75
+ 'set',
76
+ 'table',
77
+ 'then',
78
+ 'true',
79
+ 'union',
80
+ 'update',
81
+ 'using',
82
+ 'values',
83
+ 'when',
84
+ 'where',
85
+ 'with',
86
+ // SQL value keywords / special bare expressions.
87
+ ...SQL_SPECIAL_VALUE_KEYWORDS
88
+ ]);
13
89
  //# sourceMappingURL=IdentifierDecorator.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"IdentifierDecorator.js","sourceRoot":"","sources":["../../../src/parsers/IdentifierDecorator.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,mBAAmB;IAI5B,YAAY,gBAAmD;;QAC3D,IAAI,CAAC,KAAK,GAAG,MAAA,gBAAgB,aAAhB,gBAAgB,uBAAhB,gBAAgB,CAAE,KAAK,mCAAI,GAAG,CAAC;QAC5C,IAAI,CAAC,GAAG,GAAG,MAAA,gBAAgB,aAAhB,gBAAgB,uBAAhB,gBAAgB,CAAE,GAAG,mCAAI,GAAG,CAAC;IAC5C,CAAC;IAED,QAAQ,CAAC,IAAY;QACjB,WAAW;QACX,IAAI,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC;QACpC,OAAO,IAAI,CAAC;IAChB,CAAC;CACJ"}
1
+ {"version":3,"file":"IdentifierDecorator.js","sourceRoot":"","sources":["../../../src/parsers/IdentifierDecorator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,0BAA0B,EAAE,MAAM,kCAAkC,CAAC;AAC9E,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C,MAAM,OAAO,mBAAmB;IAK5B,YAAY,gBAA+E;;QACvF,IAAI,CAAC,KAAK,GAAG,MAAA,gBAAgB,aAAhB,gBAAgB,uBAAhB,gBAAgB,CAAE,KAAK,mCAAI,GAAG,CAAC;QAC5C,IAAI,CAAC,GAAG,GAAG,MAAA,gBAAgB,aAAhB,gBAAgB,uBAAhB,gBAAgB,CAAE,GAAG,mCAAI,GAAG,CAAC;QACxC,IAAI,CAAC,MAAM,GAAG,MAAA,gBAAgB,aAAhB,gBAAgB,uBAAhB,gBAAgB,CAAE,MAAM,mCAAI,KAAK,CAAC;IACpD,CAAC;IAED,QAAQ,CAAC,IAAY;QACjB,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,IAAI,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC;YACxD,OAAO,IAAI,CAAC;QAChB,CAAC;QACD,OAAO,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC;IACnE,CAAC;IAEO,aAAa,CAAC,IAAY;QAC9B,OAAO,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC;YAClC,CAAC,uBAAuB,CAAC,GAAG,CAAC,IAAI,CAAC;YAClC,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC;IAC1C,CAAC;IAEO,sBAAsB,CAAC,IAAY;QACvC,MAAM,OAAO,GAAG,IAAI,YAAY,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,CAAC;QACpD,OAAO,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,UAAU,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC;IACzG,CAAC;IAEO,oBAAoB,CAAC,IAAY;QACrC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;YACZ,OAAO,IAAI,CAAC;QAChB,CAAC;QACD,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;IAC1D,CAAC;CACJ;AAED,MAAM,uBAAuB,GAAG,IAAI,GAAG,CAAC;IACpC,gCAAgC;IAChC,KAAK;IACL,KAAK;IACL,KAAK;IACL,IAAI;IACJ,SAAS;IACT,IAAI;IACJ,MAAM;IACN,OAAO;IACP,QAAQ;IACR,UAAU;IACV,MAAM;IACN,KAAK;IACL,QAAQ;IACR,QAAQ;IACR,OAAO;IACP,OAAO;IACP,KAAK;IACL,MAAM;IACN,MAAM;IACN,OAAO;IACP,QAAQ;IACR,IAAI;IACJ,OAAO;IACP,QAAQ;IACR,WAAW;IACX,MAAM;IACN,IAAI;IACJ,MAAM;IACN,MAAM;IACN,MAAM;IACN,OAAO;IACP,KAAK;IACL,MAAM;IACN,QAAQ;IACR,IAAI;IACJ,IAAI;IACJ,OAAO;IACP,OAAO;IACP,OAAO;IACP,QAAQ;IACR,KAAK;IACL,OAAO;IACP,MAAM;IACN,MAAM;IACN,OAAO;IACP,QAAQ;IACR,OAAO;IACP,QAAQ;IACR,MAAM;IACN,OAAO;IACP,MAAM;IAEN,iDAAiD;IACjD,GAAG,0BAA0B;CAChC,CAAC,CAAC"}
@@ -17,6 +17,7 @@ export interface FormatterConfig {
17
17
  identifierEscape?: {
18
18
  start: string;
19
19
  end: string;
20
+ target?: 'all' | 'minimal';
20
21
  };
21
22
  parameterSymbol?: string | {
22
23
  start: string;
@@ -54,6 +55,7 @@ export declare class SqlPrintTokenParser implements SqlComponentVisitor<SqlPrint
54
55
  identifierEscape?: {
55
56
  start: string;
56
57
  end: string;
58
+ target?: 'all' | 'minimal';
57
59
  };
58
60
  parameterSymbol?: string | {
59
61
  start: string;
@@ -154,7 +154,7 @@ export class SqlPrintTokenParser {
154
154
  return this._selfHandlingComponentTypes;
155
155
  }
156
156
  constructor(options) {
157
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
157
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;
158
158
  this.handlers = new Map();
159
159
  this.index = 1;
160
160
  this.joinConditionContexts = [];
@@ -169,11 +169,12 @@ export class SqlPrintTokenParser {
169
169
  });
170
170
  this.identifierDecorator = new IdentifierDecorator({
171
171
  start: (_e = (_d = options === null || options === void 0 ? void 0 : options.identifierEscape) === null || _d === void 0 ? void 0 : _d.start) !== null && _e !== void 0 ? _e : '"',
172
- end: (_g = (_f = options === null || options === void 0 ? void 0 : options.identifierEscape) === null || _f === void 0 ? void 0 : _f.end) !== null && _g !== void 0 ? _g : '"'
172
+ end: (_g = (_f = options === null || options === void 0 ? void 0 : options.identifierEscape) === null || _f === void 0 ? void 0 : _f.end) !== null && _g !== void 0 ? _g : '"',
173
+ target: (_h = options === null || options === void 0 ? void 0 : options.identifierEscape) === null || _h === void 0 ? void 0 : _h.target
173
174
  });
174
- this.castStyle = (_h = options === null || options === void 0 ? void 0 : options.castStyle) !== null && _h !== void 0 ? _h : 'standard';
175
- this.constraintStyle = (_j = options === null || options === void 0 ? void 0 : options.constraintStyle) !== null && _j !== void 0 ? _j : 'postgres';
176
- this.normalizeJoinConditionOrder = (_k = options === null || options === void 0 ? void 0 : options.joinConditionOrderByDeclaration) !== null && _k !== void 0 ? _k : false;
175
+ this.castStyle = (_j = options === null || options === void 0 ? void 0 : options.castStyle) !== null && _j !== void 0 ? _j : 'standard';
176
+ this.constraintStyle = (_k = options === null || options === void 0 ? void 0 : options.constraintStyle) !== null && _k !== void 0 ? _k : 'postgres';
177
+ this.normalizeJoinConditionOrder = (_l = options === null || options === void 0 ? void 0 : options.joinConditionOrderByDeclaration) !== null && _l !== void 0 ? _l : false;
177
178
  this.handlers.set(ValueList.kind, (expr) => this.visitValueList(expr));
178
179
  this.handlers.set(ColumnReference.kind, (expr) => this.visitColumnReference(expr));
179
180
  this.handlers.set(QualifiedName.kind, (expr) => this.visitQualifiedName(expr));