rawsql-ts 0.26.0 → 0.27.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 (42) hide show
  1. package/dist/esm/index.d.ts +2 -0
  2. package/dist/esm/index.js +1 -0
  3. package/dist/esm/index.js.map +1 -1
  4. package/dist/esm/index.min.js +2 -2
  5. package/dist/esm/index.min.js.map +4 -4
  6. package/dist/esm/transformers/ConditionOptimization.d.ts +11 -1
  7. package/dist/esm/transformers/ConditionOptimization.js +122 -66
  8. package/dist/esm/transformers/ConditionOptimization.js.map +1 -1
  9. package/dist/esm/transformers/ParameterConditionPlacementOptimizer.d.ts +26 -7
  10. package/dist/esm/transformers/ParameterConditionPlacementOptimizer.js +408 -141
  11. package/dist/esm/transformers/ParameterConditionPlacementOptimizer.js.map +1 -1
  12. package/dist/esm/transformers/SSSQLFilterBuilder.d.ts +6 -0
  13. package/dist/esm/transformers/SSSQLFilterBuilder.js +84 -8
  14. package/dist/esm/transformers/SSSQLFilterBuilder.js.map +1 -1
  15. package/dist/esm/transformers/SqlComponentFormatter.d.ts +11 -0
  16. package/dist/esm/transformers/SqlComponentFormatter.js +16 -0
  17. package/dist/esm/transformers/SqlComponentFormatter.js.map +1 -0
  18. package/dist/esm/transformers/StaticPredicatePlacementOptimizer.d.ts +103 -0
  19. package/dist/esm/transformers/StaticPredicatePlacementOptimizer.js +1435 -0
  20. package/dist/esm/transformers/StaticPredicatePlacementOptimizer.js.map +1 -0
  21. package/dist/index.js +1 -0
  22. package/dist/index.js.map +1 -1
  23. package/dist/index.min.js +2 -2
  24. package/dist/index.min.js.map +4 -4
  25. package/dist/src/index.d.ts +2 -0
  26. package/dist/src/transformers/ConditionOptimization.d.ts +11 -1
  27. package/dist/src/transformers/ParameterConditionPlacementOptimizer.d.ts +26 -7
  28. package/dist/src/transformers/SSSQLFilterBuilder.d.ts +6 -0
  29. package/dist/src/transformers/SqlComponentFormatter.d.ts +11 -0
  30. package/dist/src/transformers/StaticPredicatePlacementOptimizer.d.ts +103 -0
  31. package/dist/transformers/ConditionOptimization.js +146 -65
  32. package/dist/transformers/ConditionOptimization.js.map +1 -1
  33. package/dist/transformers/ParameterConditionPlacementOptimizer.js +407 -140
  34. package/dist/transformers/ParameterConditionPlacementOptimizer.js.map +1 -1
  35. package/dist/transformers/SSSQLFilterBuilder.js +92 -16
  36. package/dist/transformers/SSSQLFilterBuilder.js.map +1 -1
  37. package/dist/transformers/SqlComponentFormatter.js +21 -0
  38. package/dist/transformers/SqlComponentFormatter.js.map +1 -0
  39. package/dist/transformers/StaticPredicatePlacementOptimizer.js +1445 -0
  40. package/dist/transformers/StaticPredicatePlacementOptimizer.js.map +1 -0
  41. package/dist/tsconfig.browser.tsbuildinfo +1 -1
  42. package/package.json +1 -1
@@ -0,0 +1,16 @@
1
+ import { SqlFormatter } from "./SqlFormatter";
2
+ let formatter = null;
3
+ export const formatSqlComponent = (component, options = {}) => {
4
+ if (options.formatter) {
5
+ return options.formatter(component);
6
+ }
7
+ if (options.formatOptions) {
8
+ return new SqlFormatter(Object.assign({ exportComment: true }, options.formatOptions)).format(component).formattedSql;
9
+ }
10
+ formatter !== null && formatter !== void 0 ? formatter : (formatter = new SqlFormatter({ exportComment: true }));
11
+ return formatter.format(component).formattedSql;
12
+ };
13
+ export const hasSqlComponentFormatOverride = (options = {}) => {
14
+ return Boolean(options.formatter || options.formatOptions);
15
+ };
16
+ //# sourceMappingURL=SqlComponentFormatter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SqlComponentFormatter.js","sourceRoot":"","sources":["../../../src/transformers/SqlComponentFormatter.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAuB,MAAM,gBAAgB,CAAC;AAWnE,IAAI,SAAS,GAAwB,IAAI,CAAC;AAE1C,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAC9B,SAAkC,EAClC,UAAqC,EAAE,EACjC,EAAE;IACR,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;QACpB,OAAO,OAAO,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;IACxC,CAAC;IAED,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;QACxB,OAAO,IAAI,YAAY,iBAAG,aAAa,EAAE,IAAI,IAAK,OAAO,CAAC,aAAa,EAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,YAAY,CAAC;IAC9G,CAAC;IAED,SAAS,aAAT,SAAS,cAAT,SAAS,IAAT,SAAS,GAAK,IAAI,YAAY,CAAC,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,EAAC;IACxD,OAAO,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,YAAY,CAAC;AACpD,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,6BAA6B,GAAG,CAAC,UAAqC,EAAE,EAAW,EAAE;IAC9F,OAAO,OAAO,CAAC,OAAO,CAAC,SAAS,IAAI,OAAO,CAAC,aAAa,CAAC,CAAC;AAC/D,CAAC,CAAC"}
@@ -0,0 +1,103 @@
1
+ import { SelectQuery, SimpleSelectQuery } from "../models/SelectQuery";
2
+ import { SqlComponentFormatOptions } from "./SqlComponentFormatter";
3
+ export type StaticPredicatePlacementInput = string | SelectQuery | SimpleSelectQuery;
4
+ /**
5
+ * Safe-only placement for parameter-free static predicates.
6
+ *
7
+ * The optimizer only moves top-level AND terms whose outer column references can
8
+ * be mechanically rebased to direct outputs of a single-use simple CTE or
9
+ * derived table. Unsupported or ambiguous predicates stay in place.
10
+ */
11
+ export interface StaticPredicatePlacementOptions extends SqlComponentFormatOptions {
12
+ dryRun?: boolean;
13
+ /**
14
+ * Whether AST/model inputs should be cloned before optimization.
15
+ * Defaults to true for public-call safety. Internal pipelines can pass false
16
+ * when they own the model and want to avoid AST -> SQL -> AST round trips.
17
+ */
18
+ cloneInput?: boolean;
19
+ }
20
+ export interface StaticPredicatePlacementWarning {
21
+ code: string;
22
+ message: string;
23
+ detail?: unknown;
24
+ }
25
+ export interface StaticPredicatePlacementError {
26
+ code: string;
27
+ message: string;
28
+ detail?: unknown;
29
+ }
30
+ export interface StaticPredicateMove {
31
+ kind: "move_static_predicate";
32
+ predicateSql: string;
33
+ fromScopeId: string;
34
+ toScopeId: string;
35
+ reason: string;
36
+ columnReferences: readonly string[];
37
+ }
38
+ export interface StaticPredicateSkipped {
39
+ predicateSql: string;
40
+ scopeId: string;
41
+ reason: string;
42
+ code: string;
43
+ }
44
+ export interface StaticPredicatePlacementSafety {
45
+ mode: "safe_only";
46
+ unsafeRewriteApplied: false;
47
+ dryRun: boolean;
48
+ formatterGeneratedSource: boolean;
49
+ }
50
+ export interface StaticPredicatePlacementResult {
51
+ ok: boolean;
52
+ sql: string;
53
+ query: SelectQuery | null;
54
+ applied: readonly StaticPredicateMove[];
55
+ skipped: readonly StaticPredicateSkipped[];
56
+ warnings: readonly StaticPredicatePlacementWarning[];
57
+ errors: readonly StaticPredicatePlacementError[];
58
+ safety: StaticPredicatePlacementSafety;
59
+ staticPredicateMoves: readonly StaticPredicateMove[];
60
+ }
61
+ export declare class StaticPredicatePlacementOptimizer {
62
+ plan(input: StaticPredicatePlacementInput, options?: StaticPredicatePlacementOptions): StaticPredicatePlacementResult;
63
+ optimize(input: StaticPredicatePlacementInput, options?: StaticPredicatePlacementOptions): StaticPredicatePlacementResult;
64
+ private parseInput;
65
+ private analyzeCandidate;
66
+ private isExistsPredicate;
67
+ private findUnsupportedExpression;
68
+ private resolveTarget;
69
+ private findRootQueryBoundary;
70
+ private resolveTargetPlacement;
71
+ private resolveSourceBinding;
72
+ private resolveUpstreamQuery;
73
+ private resolveUnionTarget;
74
+ private resolveTargetColumns;
75
+ private resolveDeepestBranchTarget;
76
+ private verifyColumnResolvableInQuery;
77
+ private isGroupKeyColumn;
78
+ private sameResolvableColumnInQuery;
79
+ private resolveColumnSourceAlias;
80
+ private rebasePredicate;
81
+ private getSourceBindings;
82
+ private findNullableSideBoundary;
83
+ private hasLaterJoinThatNullsPriorSources;
84
+ private hasOuterJoin;
85
+ private hasDistinctOnBoundary;
86
+ private hasOrdinaryDistinct;
87
+ private getOutputColumnMatchCount;
88
+ private collectUnionBranches;
89
+ private resolveUnionOutputIndex;
90
+ private resolveTargetColumnByOutputIndex;
91
+ private collectSelectOutputs;
92
+ private resolveSourceQueryForColumns;
93
+ private findCte;
94
+ private countTableSourceReferences;
95
+ private collectSourceAliases;
96
+ private collectRootColumnReferences;
97
+ private hasWindowUsage;
98
+ private collectParameterNames;
99
+ private makeSkipped;
100
+ private buildResult;
101
+ }
102
+ export declare const planStaticPredicatePlacement: (input: StaticPredicatePlacementInput, options?: StaticPredicatePlacementOptions) => StaticPredicatePlacementResult;
103
+ export declare const optimizeStaticPredicatePlacement: (input: StaticPredicatePlacementInput, options?: StaticPredicatePlacementOptions) => StaticPredicatePlacementResult;