rawsql-ts 0.10.9-beta → 0.11.1-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.
Files changed (104) hide show
  1. package/README.md +175 -47
  2. package/dist/esm/index.js +6 -0
  3. package/dist/esm/index.js.map +1 -1
  4. package/dist/esm/index.min.js +16 -14
  5. package/dist/esm/index.min.js.map +4 -4
  6. package/dist/esm/src/index.js +6 -0
  7. package/dist/esm/src/index.js.map +1 -1
  8. package/dist/esm/src/tokenReaders/OperatorTokenReader.js +4 -0
  9. package/dist/esm/src/tokenReaders/OperatorTokenReader.js.map +1 -1
  10. package/dist/esm/src/transformers/CTEDependencyTracer.js +249 -0
  11. package/dist/esm/src/transformers/CTEDependencyTracer.js.map +1 -0
  12. package/dist/esm/src/transformers/DynamicQueryBuilder.js +155 -0
  13. package/dist/esm/src/transformers/DynamicQueryBuilder.js.map +1 -0
  14. package/dist/esm/src/transformers/JsonMappingUnifier.js +217 -0
  15. package/dist/esm/src/transformers/JsonMappingUnifier.js.map +1 -0
  16. package/dist/esm/src/transformers/ModelDrivenJsonMapping.js +103 -0
  17. package/dist/esm/src/transformers/ModelDrivenJsonMapping.js.map +1 -0
  18. package/dist/esm/src/transformers/PostgresArrayEntityCteBuilder.js +204 -16
  19. package/dist/esm/src/transformers/PostgresArrayEntityCteBuilder.js.map +1 -1
  20. package/dist/esm/src/transformers/PostgresJsonQueryBuilder.js +26 -21
  21. package/dist/esm/src/transformers/PostgresJsonQueryBuilder.js.map +1 -1
  22. package/dist/esm/src/transformers/PostgresObjectEntityCteBuilder.js +8 -5
  23. package/dist/esm/src/transformers/PostgresObjectEntityCteBuilder.js.map +1 -1
  24. package/dist/esm/src/transformers/SelectableColumnCollector.js +17 -5
  25. package/dist/esm/src/transformers/SelectableColumnCollector.js.map +1 -1
  26. package/dist/esm/src/transformers/SqlFormatter.js +1 -2
  27. package/dist/esm/src/transformers/SqlFormatter.js.map +1 -1
  28. package/dist/esm/src/transformers/TypeTransformationPostProcessor.js +342 -0
  29. package/dist/esm/src/transformers/TypeTransformationPostProcessor.js.map +1 -0
  30. package/dist/esm/src/transformers/UnifiedJsonMapping.js +57 -0
  31. package/dist/esm/src/transformers/UnifiedJsonMapping.js.map +1 -0
  32. package/dist/esm/src/transformers/UpstreamSelectQueryFinder.js +8 -1
  33. package/dist/esm/src/transformers/UpstreamSelectQueryFinder.js.map +1 -1
  34. package/dist/esm/src/utils/JsonSchemaValidator.js +211 -0
  35. package/dist/esm/src/utils/JsonSchemaValidator.js.map +1 -0
  36. package/dist/esm/src/utils/OperatorPrecedence.js +3 -1
  37. package/dist/esm/src/utils/OperatorPrecedence.js.map +1 -1
  38. package/dist/esm/src/utils/SchemaManager.js +0 -1
  39. package/dist/esm/src/utils/SchemaManager.js.map +1 -1
  40. package/dist/esm/tsconfig.browser.tsbuildinfo +1 -1
  41. package/dist/esm/types/src/index.d.ts +6 -0
  42. package/dist/esm/types/src/transformers/CTEDependencyTracer.d.ts +58 -0
  43. package/dist/esm/types/src/transformers/DynamicQueryBuilder.d.ts +108 -0
  44. package/dist/esm/types/src/transformers/JsonMappingUnifier.d.ts +95 -0
  45. package/dist/esm/types/src/transformers/ModelDrivenJsonMapping.d.ts +62 -0
  46. package/dist/esm/types/src/transformers/PostgresArrayEntityCteBuilder.d.ts +80 -1
  47. package/dist/esm/types/src/transformers/PostgresJsonQueryBuilder.d.ts +3 -2
  48. package/dist/esm/types/src/transformers/SelectableColumnCollector.d.ts +14 -3
  49. package/dist/esm/types/src/transformers/SqlFormatter.d.ts +2 -3
  50. package/dist/esm/types/src/transformers/TypeTransformationPostProcessor.d.ts +108 -0
  51. package/dist/esm/types/src/transformers/UnifiedJsonMapping.d.ts +53 -0
  52. package/dist/esm/types/src/transformers/UpstreamSelectQueryFinder.d.ts +5 -1
  53. package/dist/esm/types/src/utils/JsonSchemaValidator.d.ts +81 -0
  54. package/dist/index.min.js +16 -14
  55. package/dist/index.min.js.map +4 -4
  56. package/dist/src/index.d.ts +6 -0
  57. package/dist/src/index.js +14 -0
  58. package/dist/src/index.js.map +1 -1
  59. package/dist/src/tokenReaders/OperatorTokenReader.js +4 -0
  60. package/dist/src/tokenReaders/OperatorTokenReader.js.map +1 -1
  61. package/dist/src/transformers/CTEDependencyTracer.d.ts +58 -0
  62. package/dist/src/transformers/CTEDependencyTracer.js +253 -0
  63. package/dist/src/transformers/CTEDependencyTracer.js.map +1 -0
  64. package/dist/src/transformers/DynamicQueryBuilder.d.ts +108 -0
  65. package/dist/src/transformers/DynamicQueryBuilder.js +159 -0
  66. package/dist/src/transformers/DynamicQueryBuilder.js.map +1 -0
  67. package/dist/src/transformers/JsonMappingUnifier.d.ts +95 -0
  68. package/dist/src/transformers/JsonMappingUnifier.js +226 -0
  69. package/dist/src/transformers/JsonMappingUnifier.js.map +1 -0
  70. package/dist/src/transformers/ModelDrivenJsonMapping.d.ts +62 -0
  71. package/dist/src/transformers/ModelDrivenJsonMapping.js +110 -0
  72. package/dist/src/transformers/ModelDrivenJsonMapping.js.map +1 -0
  73. package/dist/src/transformers/PostgresArrayEntityCteBuilder.d.ts +80 -1
  74. package/dist/src/transformers/PostgresArrayEntityCteBuilder.js +204 -16
  75. package/dist/src/transformers/PostgresArrayEntityCteBuilder.js.map +1 -1
  76. package/dist/src/transformers/PostgresJsonQueryBuilder.d.ts +3 -2
  77. package/dist/src/transformers/PostgresJsonQueryBuilder.js +26 -21
  78. package/dist/src/transformers/PostgresJsonQueryBuilder.js.map +1 -1
  79. package/dist/src/transformers/PostgresObjectEntityCteBuilder.js +8 -5
  80. package/dist/src/transformers/PostgresObjectEntityCteBuilder.js.map +1 -1
  81. package/dist/src/transformers/SelectableColumnCollector.d.ts +14 -3
  82. package/dist/src/transformers/SelectableColumnCollector.js +17 -5
  83. package/dist/src/transformers/SelectableColumnCollector.js.map +1 -1
  84. package/dist/src/transformers/SqlFormatter.d.ts +2 -3
  85. package/dist/src/transformers/SqlFormatter.js +1 -2
  86. package/dist/src/transformers/SqlFormatter.js.map +1 -1
  87. package/dist/src/transformers/TypeTransformationPostProcessor.d.ts +108 -0
  88. package/dist/src/transformers/TypeTransformationPostProcessor.js +351 -0
  89. package/dist/src/transformers/TypeTransformationPostProcessor.js.map +1 -0
  90. package/dist/src/transformers/UnifiedJsonMapping.d.ts +53 -0
  91. package/dist/src/transformers/UnifiedJsonMapping.js +60 -0
  92. package/dist/src/transformers/UnifiedJsonMapping.js.map +1 -0
  93. package/dist/src/transformers/UpstreamSelectQueryFinder.d.ts +5 -1
  94. package/dist/src/transformers/UpstreamSelectQueryFinder.js +8 -1
  95. package/dist/src/transformers/UpstreamSelectQueryFinder.js.map +1 -1
  96. package/dist/src/utils/JsonSchemaValidator.d.ts +81 -0
  97. package/dist/src/utils/JsonSchemaValidator.js +215 -0
  98. package/dist/src/utils/JsonSchemaValidator.js.map +1 -0
  99. package/dist/src/utils/OperatorPrecedence.js +3 -1
  100. package/dist/src/utils/OperatorPrecedence.js.map +1 -1
  101. package/dist/src/utils/SchemaManager.js +0 -1
  102. package/dist/src/utils/SchemaManager.js.map +1 -1
  103. package/dist/tsconfig.tsbuildinfo +1 -1
  104. package/package.json +8 -5
@@ -15,12 +15,18 @@ export * from './transformers/SelectValueCollector';
15
15
  export * from './transformers/SelectableColumnCollector';
16
16
  export * from './transformers/TableColumnResolver';
17
17
  export * from './transformers/TableSourceCollector';
18
+ export * from './transformers/UnifiedJsonMapping';
19
+ export { convertModelDrivenMapping, validateModelDrivenMapping } from './transformers/ModelDrivenJsonMapping';
20
+ export { processJsonMapping, unifyJsonMapping, isModelDrivenFormat, isUnifiedFormat, isLegacyFormat } from './transformers/JsonMappingUnifier';
18
21
  export * from './transformers/UpstreamSelectQueryFinder';
22
+ export * from './transformers/TypeTransformationPostProcessor';
19
23
  export * from './transformers/SchemaCollector';
20
24
  export * from './transformers/SqlParamInjector';
21
25
  export * from './transformers/SqlSortInjector';
22
26
  export * from './transformers/SqlPaginationInjector';
27
+ export * from './transformers/DynamicQueryBuilder';
23
28
  export * from './utils/SqlSchemaValidator';
29
+ export * from './utils/JsonSchemaValidator';
24
30
  export * from './utils/SchemaManager';
25
31
  // Add more exports here if you want to expose additional public API
26
32
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AAAA,oCAAoC;AACpC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,6BAA6B,CAAC;AAE5C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,sBAAsB,CAAC;AACrC,cAAc,yBAAyB,CAAC;AACxC,cAAc,sBAAsB,CAAC;AAErC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,0BAA0B,CAAC;AACzC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,yCAAyC,CAAC;AACxD,cAAc,6BAA6B,CAAC,CAAC,0BAA0B;AACvE,cAAc,qCAAqC,CAAC;AACpD,cAAc,0CAA0C,CAAC;AACzD,cAAc,oCAAoC,CAAC;AACnD,cAAc,qCAAqC,CAAC;AACpD,cAAc,0CAA0C,CAAC;AACzD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,iCAAiC,CAAC;AAChD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,sCAAsC,CAAC;AAErD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,uBAAuB,CAAC;AACtC,oEAAoE"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AAAA,oCAAoC;AACpC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,6BAA6B,CAAC;AAE5C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,sBAAsB,CAAC;AACrC,cAAc,yBAAyB,CAAC;AACxC,cAAc,sBAAsB,CAAC;AAErC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,0BAA0B,CAAC;AACzC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,yCAAyC,CAAC;AACxD,cAAc,6BAA6B,CAAC,CAAC,0BAA0B;AACvE,cAAc,qCAAqC,CAAC;AACpD,cAAc,0CAA0C,CAAC;AACzD,cAAc,oCAAoC,CAAC;AACnD,cAAc,qCAAqC,CAAC;AACpD,cAAc,mCAAmC,CAAC;AAClD,OAAO,EAEH,yBAAyB,EACzB,0BAA0B,EAK7B,MAAM,uCAAuC,CAAC;AAC/C,OAAO,EACH,kBAAkB,EAClB,gBAAgB,EAChB,mBAAmB,EACnB,eAAe,EACf,cAAc,EACjB,MAAM,mCAAmC,CAAC;AAC3C,cAAc,0CAA0C,CAAC;AACzD,cAAc,gDAAgD,CAAC;AAE/D,cAAc,gCAAgC,CAAC;AAC/C,cAAc,iCAAiC,CAAC;AAChD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,sCAAsC,CAAC;AACrD,cAAc,oCAAoC,CAAC;AAEnD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,uBAAuB,CAAC;AACtC,oEAAoE"}
@@ -12,15 +12,19 @@ const trie = new KeywordTrie([
12
12
  ["is", "distinct", "from"],
13
13
  ["is", "not", "distinct", "from"],
14
14
  ["like"],
15
+ ["ilike"],
15
16
  ["in"],
16
17
  ["exists"],
17
18
  ["between"],
18
19
  ["not", "like"],
20
+ ["not", "ilike"],
19
21
  ["not", "in"],
20
22
  ["not", "exists"],
21
23
  ["not", "between"],
22
24
  ["escape"], // e.g. '10% OFF on all items' like '10\%%' escape '\'
23
25
  ["uescape"], // e.g. U&'d!0061t!+000061' uescape '!'
26
+ ["similar", "to"], // e.g. name similar to 'J(ohn|ane)%'
27
+ ["not", "similar", "to"], // e.g. name not similar to 'J(ohn|ane)%'
24
28
  ["similar"], // e.g. substring('abcdef' similar '%#"cd#"%' escape '#')
25
29
  ["placing"], // e.g. overlay('abcdef' placing 'cd' from 3 for 2)
26
30
  // unary
@@ -1 +1 @@
1
- {"version":3,"file":"OperatorTokenReader.js","sourceRoot":"","sources":["../../../../src/tokenReaders/OperatorTokenReader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAU,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEpD,MAAM,IAAI,GAAG,IAAI,WAAW,CAAC;IACzB,SAAS;IACT,CAAC,KAAK,CAAC;IACP,CAAC,IAAI,CAAC;IACN,CAAC,IAAI,CAAC;IACN,CAAC,IAAI,EAAE,KAAK,CAAC;IACb,CAAC,IAAI,EAAE,UAAU,EAAE,MAAM,CAAC;IAC1B,CAAC,IAAI,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,CAAC;IACjC,CAAC,MAAM,CAAC;IACR,CAAC,IAAI,CAAC;IACN,CAAC,QAAQ,CAAC;IACV,CAAC,SAAS,CAAC;IACX,CAAC,KAAK,EAAE,MAAM,CAAC;IACf,CAAC,KAAK,EAAE,IAAI,CAAC;IACb,CAAC,KAAK,EAAE,QAAQ,CAAC;IACjB,CAAC,KAAK,EAAE,SAAS,CAAC;IAClB,CAAC,QAAQ,CAAC,EAAE,sDAAsD;IAClE,CAAC,SAAS,CAAC,EAAE,uCAAuC;IACpD,CAAC,SAAS,CAAC,EAAE,yDAAyD;IACtE,CAAC,SAAS,CAAC,EAAE,mDAAmD;IAChE,QAAQ;IACR,CAAC,KAAK,CAAC;IACP,eAAe;IACf,CAAC,MAAM,CAAC;IACR,CAAC,SAAS,CAAC;IACX,CAAC,UAAU,CAAC;IACZ,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW;IAC7B,CAAC,SAAS,EAAE,MAAM,CAAC,EAAE,WAAW;IAChC,CAAC,UAAU,EAAE,MAAM,CAAC,EAAE,WAAW;IACjC,kBAAkB;IAClB,CAAC,MAAM,EAAE,MAAM,CAAC;IAChB,CAAC,OAAO,EAAE,MAAM,CAAC;IACjB,CAAC,KAAK,EAAE,MAAM,CAAC;IACf,CAAC,MAAM,EAAE,MAAM,CAAC;IAChB,CAAC,QAAQ,EAAE,MAAM,CAAC;IAClB,CAAC,QAAQ,EAAE,MAAM,CAAC;IAClB,CAAC,KAAK,EAAE,MAAM,CAAC;IACf,CAAC,KAAK,EAAE,MAAM,CAAC;IACf,CAAC,QAAQ,EAAE,MAAM,CAAC;IAClB,CAAC,SAAS,EAAE,MAAM,CAAC;IACnB,CAAC,MAAM,EAAE,MAAM,CAAC;IAChB,CAAC,OAAO,EAAE,MAAM,CAAC;IACjB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC;IACtB,8CAA8C;IAC9C,yLAAyL;IACzL,uLAAuL;CAC1L,CAAC,CAAC;AAEH,uBAAuB;AACvB,MAAM,kBAAkB,GAAG,IAAI,WAAW,CAAC;IACvC,CAAC,MAAM,CAAC;IACR,CAAC,MAAM,CAAC;IACR,CAAC,WAAW,CAAC;IACb,CAAC,aAAa,CAAC,EAAC,2BAA2B;IAC3C,CAAC,QAAQ,CAAC,EAAM,sBAAsB;IACtC,CAAC,UAAU,CAAC;IACZ,CAAC,SAAS,CAAC;IACX,CAAC,SAAS,CAAC;IACX,CAAC,QAAQ,CAAC;IACV,CAAC,UAAU,CAAC;IACZ,CAAC,SAAS,CAAC;IACX,CAAC,SAAS,CAAC;IACX,CAAC,MAAM,CAAC;IACR,CAAC,QAAQ,EAAE,WAAW,CAAC;IACvB,CAAC,QAAQ,EAAE,WAAW,CAAC;IACvB,CAAC,WAAW,EAAE,SAAS,CAAC;IACxB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC;IACnC,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;IAChC,CAAC,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC;IACxC,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;CACxC,CAAC,CAAC;AAEH,MAAM,aAAa,GAAG,IAAI,aAAa,CAAC,IAAI,CAAC,CAAC;AAC9C,MAAM,oBAAoB,GAAG,IAAI,aAAa,CAAC,kBAAkB,CAAC,CAAC;AAEnE,mEAAmE;AACnE,MAAM,UAAU,GAAG,IAAI,CAAC;AAExB,MAAM,OAAO,mBAAoB,SAAQ,eAAe;IAC7C,OAAO,CAAC,QAAuB;QAClC,IAAI,IAAI,CAAC,YAAY,EAAE,EAAE,CAAC;YACtB,OAAO,IAAI,CAAC;QAChB,CAAC;QAED;;;;;UAKE;QAEF,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAEvC,IAAI,eAAe,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC;YACzC,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC;YAE5B,OAAO,IAAI,CAAC,OAAO,EAAE,IAAI,eAAe,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC;gBACnF,mCAAmC;gBACnC,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;oBAClB,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;oBAC1C,IAAI,OAAO,KAAK,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;wBAC3D,MAAM;oBACV,CAAC;yBAAM,IAAI,OAAO,KAAK,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;wBAClE,MAAM,CAAC,kBAAkB;oBAC7B,CAAC;gBACL,CAAC;gBAED,IAAI,CAAC,QAAQ,EAAE,CAAC;YACpB,CAAC;YACD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;YACrD,OAAO,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QACxD,CAAC;QAED,oBAAoB;QACpB,IAAI,MAAM,GAAG,oBAAoB,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QACnE,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;YAClB,6CAA6C;YAC7C,4DAA4D;YAC5D,4EAA4E;YAC5E,6CAA6C;YAC7C,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,WAAW,CAAC;YACnC,OAAO,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,QAAQ,GAAG,SAAS,CAAC,IAAI,GAAG,SAAS,CAAC,UAAU,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;QACzG,CAAC;QAED,MAAM,GAAG,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QACxD,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;YAClB,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,WAAW,CAAC;YACnC,OAAO,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,QAAQ,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;QACjE,CAAC;QAED,OAAO,IAAI,CAAC;IAChB,CAAC;CACJ"}
1
+ {"version":3,"file":"OperatorTokenReader.js","sourceRoot":"","sources":["../../../../src/tokenReaders/OperatorTokenReader.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,249 @@
1
+ import { SimpleSelectQuery, BinarySelectQuery } from "../models/SelectQuery";
2
+ import { CTECollector } from "./CTECollector";
3
+ import { SelectableColumnCollector } from "./SelectableColumnCollector";
4
+ import { TableSourceCollector } from "./TableSourceCollector";
5
+ /**
6
+ * Debug utility for visualizing CTE dependencies and column search paths
7
+ */
8
+ export class CTEDependencyTracer {
9
+ constructor(options) {
10
+ var _a;
11
+ this.columnCollector = new SelectableColumnCollector();
12
+ this.silent = (_a = options === null || options === void 0 ? void 0 : options.silent) !== null && _a !== void 0 ? _a : false;
13
+ }
14
+ /**
15
+ * Build complete CTE dependency graph
16
+ */
17
+ buildGraph(query) {
18
+ const cteCollector = new CTECollector();
19
+ const ctes = cteCollector.collect(query);
20
+ const nodes = new Map();
21
+ // First pass: Create all nodes
22
+ ctes.forEach(cte => {
23
+ const cteName = cte.getSourceAliasName();
24
+ let columns = [];
25
+ try {
26
+ const columnRefs = this.columnCollector.collect(cte.query);
27
+ columns = columnRefs.map(col => col.name);
28
+ }
29
+ catch (error) {
30
+ if (!this.silent) {
31
+ console.warn(`Failed to collect columns for CTE ${cteName}: ${error instanceof Error ? error.message : String(error)}`);
32
+ }
33
+ }
34
+ nodes.set(cteName, {
35
+ name: cteName,
36
+ columns,
37
+ dependencies: [],
38
+ dependents: [],
39
+ query: cte.query,
40
+ level: 0
41
+ });
42
+ });
43
+ // Second pass: Build dependencies
44
+ ctes.forEach(cte => {
45
+ const cteName = cte.getSourceAliasName();
46
+ const node = nodes.get(cteName);
47
+ // Find all CTEs referenced in this CTE's query
48
+ const referencedCTEs = this.findReferencedCTEs(cte.query, nodes);
49
+ node.dependencies = referencedCTEs;
50
+ // Update dependents
51
+ referencedCTEs.forEach(depName => {
52
+ const depNode = nodes.get(depName);
53
+ if (depNode && !depNode.dependents.includes(cteName)) {
54
+ depNode.dependents.push(cteName);
55
+ }
56
+ });
57
+ });
58
+ // Third pass: Calculate levels
59
+ this.calculateLevels(nodes);
60
+ // Identify root and leaf nodes
61
+ const rootNodes = [];
62
+ const leafNodes = [];
63
+ nodes.forEach((node, name) => {
64
+ if (node.dependencies.length === 0) {
65
+ rootNodes.push(name);
66
+ }
67
+ if (node.dependents.length === 0) {
68
+ leafNodes.push(name);
69
+ }
70
+ });
71
+ return { nodes, rootNodes, leafNodes };
72
+ }
73
+ /**
74
+ * Trace column search path through CTE dependencies
75
+ */
76
+ traceColumnSearch(query, columnName) {
77
+ const graph = this.buildGraph(query);
78
+ const searchPath = [];
79
+ const foundIn = [];
80
+ const notFoundIn = [];
81
+ // Start from main query
82
+ searchPath.push('MAIN_QUERY');
83
+ let mainColumns = [];
84
+ try {
85
+ // SelectableColumnCollector only supports SimpleSelectQuery
86
+ if (query instanceof SimpleSelectQuery) {
87
+ const columnRefs = this.columnCollector.collect(query);
88
+ mainColumns = columnRefs.map(col => col.name);
89
+ }
90
+ else if (query instanceof BinarySelectQuery) {
91
+ // For UNION/INTERSECT/EXCEPT queries, collect from all branches
92
+ const leftColumns = query.left instanceof SimpleSelectQuery
93
+ ? this.columnCollector.collect(query.left).map(col => col.name)
94
+ : [];
95
+ const rightColumns = query.right instanceof SimpleSelectQuery
96
+ ? this.columnCollector.collect(query.right).map(col => col.name)
97
+ : [];
98
+ // Combine and deduplicate columns from both branches
99
+ const allColumns = [...leftColumns, ...rightColumns];
100
+ mainColumns = [...new Set(allColumns)];
101
+ }
102
+ }
103
+ catch (error) {
104
+ if (!this.silent) {
105
+ console.warn(`Failed to collect columns from main query: ${error instanceof Error ? error.message : String(error)}`);
106
+ }
107
+ }
108
+ if (mainColumns.some(col => col.toLowerCase() === columnName.toLowerCase())) {
109
+ foundIn.push('MAIN_QUERY');
110
+ }
111
+ else {
112
+ notFoundIn.push('MAIN_QUERY');
113
+ }
114
+ // Search through CTEs in dependency order (leaf to root)
115
+ const visited = new Set();
116
+ const searchOrder = this.getSearchOrder(graph);
117
+ searchOrder.forEach(cteName => {
118
+ if (visited.has(cteName))
119
+ return;
120
+ visited.add(cteName);
121
+ searchPath.push(cteName);
122
+ const node = graph.nodes.get(cteName);
123
+ if (node.columns.some(col => col.toLowerCase() === columnName.toLowerCase())) {
124
+ foundIn.push(cteName);
125
+ }
126
+ else {
127
+ notFoundIn.push(cteName);
128
+ }
129
+ });
130
+ return { searchPath, foundIn, notFoundIn, graph };
131
+ }
132
+ /**
133
+ * Print visual representation of CTE dependency graph
134
+ */
135
+ printGraph(graph) {
136
+ if (this.silent)
137
+ return;
138
+ console.log('\n=== CTE Dependency Graph ===');
139
+ // Group by levels
140
+ const levels = new Map();
141
+ graph.nodes.forEach((node, name) => {
142
+ const level = node.level;
143
+ if (!levels.has(level)) {
144
+ levels.set(level, []);
145
+ }
146
+ levels.get(level).push(name);
147
+ });
148
+ // Print level by level
149
+ const maxLevel = Math.max(...Array.from(levels.keys()));
150
+ for (let level = 0; level <= maxLevel; level++) {
151
+ const nodesAtLevel = levels.get(level) || [];
152
+ if (nodesAtLevel.length > 0) {
153
+ console.log(`\nLevel ${level}:`);
154
+ nodesAtLevel.forEach(name => {
155
+ const node = graph.nodes.get(name);
156
+ console.log(` ${name} (${node.columns.length} cols)`);
157
+ if (node.dependencies.length > 0) {
158
+ console.log(` depends on: ${node.dependencies.join(', ')}`);
159
+ }
160
+ });
161
+ }
162
+ }
163
+ }
164
+ /**
165
+ * Print column search trace
166
+ */
167
+ printColumnTrace(columnName, trace) {
168
+ if (this.silent)
169
+ return;
170
+ console.log(`\n=== Column Search Trace for "${columnName}" ===`);
171
+ console.log(`Search path: ${trace.searchPath.join(' → ')}`);
172
+ console.log(`Found in: ${trace.foundIn.length > 0 ? trace.foundIn.join(', ') : 'NONE'}`);
173
+ console.log(`Not found in: ${trace.notFoundIn.join(', ')}`);
174
+ if (trace.foundIn.length > 0) {
175
+ console.log('\n--- Details of CTEs containing the column ---');
176
+ trace.foundIn.forEach(cteName => {
177
+ if (cteName === 'MAIN_QUERY')
178
+ return;
179
+ const node = trace.graph.nodes.get(cteName);
180
+ if (node) {
181
+ console.log(`${cteName}:`);
182
+ console.log(` All columns: ${node.columns.join(', ')}`);
183
+ console.log(` Dependencies: ${node.dependencies.length > 0 ? node.dependencies.join(', ') : 'none'}`);
184
+ }
185
+ });
186
+ }
187
+ }
188
+ /**
189
+ * Find CTEs that are actually referenced in the given query.
190
+ * Uses TableSourceCollector to properly identify table references from the AST.
191
+ */
192
+ findReferencedCTEs(query, allCTEs) {
193
+ // Use TableSourceCollector to get all table references from the query
194
+ const tableCollector = new TableSourceCollector();
195
+ const tableSources = tableCollector.collect(query);
196
+ const referenced = [];
197
+ // Check each table source to see if it matches a CTE name
198
+ for (const source of tableSources) {
199
+ const tableName = source.table.name;
200
+ if (tableName && allCTEs.has(tableName)) {
201
+ if (!referenced.includes(tableName)) {
202
+ referenced.push(tableName);
203
+ }
204
+ }
205
+ }
206
+ return referenced;
207
+ }
208
+ calculateLevels(nodes) {
209
+ const visited = new Set();
210
+ const calculateLevel = (nodeName) => {
211
+ if (visited.has(nodeName)) {
212
+ return nodes.get(nodeName).level;
213
+ }
214
+ visited.add(nodeName);
215
+ const node = nodes.get(nodeName);
216
+ if (node.dependencies.length === 0) {
217
+ node.level = 0;
218
+ return 0;
219
+ }
220
+ let maxDepLevel = -1;
221
+ node.dependencies.forEach(depName => {
222
+ const depLevel = calculateLevel(depName);
223
+ maxDepLevel = Math.max(maxDepLevel, depLevel);
224
+ });
225
+ node.level = maxDepLevel + 1;
226
+ return node.level;
227
+ };
228
+ nodes.forEach((_, name) => calculateLevel(name));
229
+ }
230
+ getSearchOrder(graph) {
231
+ // Return CTEs in order from leaf to root (level descending)
232
+ const ordered = [];
233
+ const levels = new Map();
234
+ graph.nodes.forEach((node, name) => {
235
+ const level = node.level;
236
+ if (!levels.has(level)) {
237
+ levels.set(level, []);
238
+ }
239
+ levels.get(level).push(name);
240
+ });
241
+ const maxLevel = Math.max(...Array.from(levels.keys()));
242
+ for (let level = maxLevel; level >= 0; level--) {
243
+ const nodesAtLevel = levels.get(level) || [];
244
+ ordered.push(...nodesAtLevel);
245
+ }
246
+ return ordered;
247
+ }
248
+ }
249
+ //# sourceMappingURL=CTEDependencyTracer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CTEDependencyTracer.js","sourceRoot":"","sources":["../../../../src/transformers/CTEDependencyTracer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,155 @@
1
+ import { SelectQueryParser } from "../parsers/SelectQueryParser";
2
+ import { SqlParamInjector } from "./SqlParamInjector";
3
+ import { SqlSortInjector } from "./SqlSortInjector";
4
+ import { SqlPaginationInjector } from "./SqlPaginationInjector";
5
+ import { PostgresJsonQueryBuilder } from "./PostgresJsonQueryBuilder";
6
+ import { QueryBuilder } from "./QueryBuilder";
7
+ /**
8
+ * DynamicQueryBuilder provides pure JavaScript SQL query building capabilities.
9
+ * It combines SQL parsing with dynamic condition injection (filtering, sorting, pagination, serialization).
10
+ *
11
+ * This class is framework-agnostic and does not perform any file I/O operations.
12
+ * It only works with SQL content provided as strings.
13
+ *
14
+ * Key features:
15
+ * - Pure JavaScript/TypeScript - no file system dependencies
16
+ * - Framework-agnostic - can be used with any database framework
17
+ * - Composable - combines multiple injectors in the correct order
18
+ * - Type-safe - provides TypeScript types for all options
19
+ * - Testable - easy to unit test without mocking file system
20
+ */
21
+ export class DynamicQueryBuilder {
22
+ /**
23
+ * Creates a new DynamicQueryBuilder instance
24
+ * @param tableColumnResolver Optional function to resolve table columns for wildcard queries
25
+ */
26
+ constructor(tableColumnResolver) {
27
+ this.tableColumnResolver = tableColumnResolver;
28
+ }
29
+ /**
30
+ * Builds a SelectQuery from SQL content with dynamic conditions.
31
+ * This is a pure function that does not perform any I/O operations.
32
+ * * @param sqlContent Raw SQL string to parse and modify
33
+ * @param options Dynamic conditions to apply (filter, sort, paging, serialize)
34
+ * @returns Modified SelectQuery with all dynamic conditions applied
35
+ * * @example
36
+ * ```typescript
37
+ * const builder = new DynamicQueryBuilder();
38
+ * const query = builder.buildQuery(
39
+ * 'SELECT id, name FROM users WHERE active = true',
40
+ * {
41
+ * filter: { status: 'premium' },
42
+ * sort: { created_at: { desc: true } },
43
+ * paging: { page: 2, pageSize: 10 },
44
+ * serialize: { rootName: 'user', rootEntity: { id: 'user', name: 'User', columns: { id: 'id', name: 'name' } }, nestedEntities: [] }
45
+ * }
46
+ * );
47
+ * ```
48
+ */
49
+ buildQuery(sqlContent, options = {}) {
50
+ // Parse the base SQL
51
+ let parsedQuery;
52
+ try {
53
+ parsedQuery = SelectQueryParser.parse(sqlContent);
54
+ }
55
+ catch (error) {
56
+ throw new Error(`Failed to parse SQL: ${error instanceof Error ? error.message : 'Unknown error'}`);
57
+ }
58
+ // Apply dynamic modifications in the correct order
59
+ let modifiedQuery = parsedQuery;
60
+ // 1. Apply filtering first (most selective, should reduce data early)
61
+ if (options.filter && Object.keys(options.filter).length > 0) {
62
+ const paramInjector = new SqlParamInjector(this.tableColumnResolver);
63
+ // Ensure we have a SimpleSelectQuery for the injector
64
+ const simpleQuery = QueryBuilder.buildSimpleQuery(modifiedQuery);
65
+ modifiedQuery = paramInjector.inject(simpleQuery, options.filter);
66
+ }
67
+ // 2. Apply sorting second (after filtering to sort smaller dataset)
68
+ if (options.sort && Object.keys(options.sort).length > 0) {
69
+ const sortInjector = new SqlSortInjector(this.tableColumnResolver);
70
+ // Ensure we have a SimpleSelectQuery for the injector
71
+ const simpleQuery = QueryBuilder.buildSimpleQuery(modifiedQuery);
72
+ modifiedQuery = sortInjector.inject(simpleQuery, options.sort);
73
+ } // 3. Apply pagination third (after filtering and sorting)
74
+ if (options.paging) {
75
+ const { page = 1, pageSize } = options.paging;
76
+ if (pageSize !== undefined) {
77
+ const paginationInjector = new SqlPaginationInjector();
78
+ const paginationOptions = { page, pageSize };
79
+ // Ensure we have a SimpleSelectQuery for the injector
80
+ const simpleQuery = QueryBuilder.buildSimpleQuery(modifiedQuery);
81
+ modifiedQuery = paginationInjector.inject(simpleQuery, paginationOptions);
82
+ }
83
+ }
84
+ // 4. Apply serialization last (transform the final query structure to JSON)
85
+ // Note: boolean values are handled at RawSqlClient level for auto-loading
86
+ if (options.serialize && typeof options.serialize === 'object') {
87
+ const jsonBuilder = new PostgresJsonQueryBuilder();
88
+ // Ensure we have a SimpleSelectQuery for the JSON builder
89
+ const simpleQuery = QueryBuilder.buildSimpleQuery(modifiedQuery);
90
+ modifiedQuery = jsonBuilder.buildJsonQuery(simpleQuery, options.serialize);
91
+ }
92
+ return modifiedQuery;
93
+ }
94
+ /**
95
+ * Builds a SelectQuery with only filtering applied.
96
+ * Convenience method for when you only need dynamic WHERE conditions.
97
+ *
98
+ * @param sqlContent Raw SQL string to parse and modify
99
+ * @param filter Filter conditions to apply
100
+ * @returns Modified SelectQuery with filter conditions applied
101
+ */
102
+ buildFilteredQuery(sqlContent, filter) {
103
+ return this.buildQuery(sqlContent, { filter });
104
+ }
105
+ /**
106
+ * Builds a SelectQuery with only sorting applied.
107
+ * Convenience method for when you only need dynamic ORDER BY clauses.
108
+ *
109
+ * @param sqlContent Raw SQL string to parse and modify
110
+ * @param sort Sort conditions to apply
111
+ * @returns Modified SelectQuery with sort conditions applied
112
+ */
113
+ buildSortedQuery(sqlContent, sort) {
114
+ return this.buildQuery(sqlContent, { sort });
115
+ } /**
116
+ * Builds a SelectQuery with only pagination applied.
117
+ * Convenience method for when you only need LIMIT/OFFSET clauses.
118
+ *
119
+ * @param sqlContent Raw SQL string to parse and modify
120
+ * @param paging Pagination options to apply
121
+ * @returns Modified SelectQuery with pagination applied
122
+ */
123
+ buildPaginatedQuery(sqlContent, paging) {
124
+ return this.buildQuery(sqlContent, { paging });
125
+ }
126
+ /**
127
+ * Builds a SelectQuery with only JSON serialization applied.
128
+ * Convenience method for when you only need hierarchical JSON transformation.
129
+ *
130
+ * @param sqlContent Raw SQL string to parse and modify
131
+ * @param serialize JSON mapping configuration to apply
132
+ * @returns Modified SelectQuery with JSON serialization applied
133
+ */
134
+ buildSerializedQuery(sqlContent, serialize) {
135
+ return this.buildQuery(sqlContent, { serialize });
136
+ }
137
+ /**
138
+ * Validates SQL content by attempting to parse it.
139
+ * Useful for testing SQL validity without applying any modifications.
140
+ *
141
+ * @param sqlContent Raw SQL string to validate
142
+ * @returns true if SQL is valid, throws error if invalid
143
+ * @throws Error if SQL cannot be parsed
144
+ */
145
+ validateSql(sqlContent) {
146
+ try {
147
+ SelectQueryParser.parse(sqlContent);
148
+ return true;
149
+ }
150
+ catch (error) {
151
+ throw new Error(`Invalid SQL: ${error instanceof Error ? error.message : 'Unknown error'}`);
152
+ }
153
+ }
154
+ }
155
+ //# sourceMappingURL=DynamicQueryBuilder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DynamicQueryBuilder.js","sourceRoot":"","sources":["../../../../src/transformers/DynamicQueryBuilder.ts"],"names":[],"mappings":"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"}