@kuindji/typed-sql 0.1.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 (208) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +227 -0
  3. package/dist/builder/assemble.d.ts +13 -0
  4. package/dist/builder/assemble.d.ts.map +1 -0
  5. package/dist/builder/assemble.js +86 -0
  6. package/dist/builder/assemble.js.map +1 -0
  7. package/dist/builder/condition-tree.d.ts +27 -0
  8. package/dist/builder/condition-tree.d.ts.map +1 -0
  9. package/dist/builder/condition-tree.js +91 -0
  10. package/dist/builder/condition-tree.js.map +1 -0
  11. package/dist/builder/conditional-sql.d.ts +80 -0
  12. package/dist/builder/conditional-sql.d.ts.map +1 -0
  13. package/dist/builder/conditional-sql.js +88 -0
  14. package/dist/builder/conditional-sql.js.map +1 -0
  15. package/dist/builder/db.d.ts +76 -0
  16. package/dist/builder/db.d.ts.map +1 -0
  17. package/dist/builder/db.js +12 -0
  18. package/dist/builder/db.js.map +1 -0
  19. package/dist/builder/delete.d.ts +39 -0
  20. package/dist/builder/delete.d.ts.map +1 -0
  21. package/dist/builder/delete.js +33 -0
  22. package/dist/builder/delete.js.map +1 -0
  23. package/dist/builder/extract-params.d.ts +97 -0
  24. package/dist/builder/extract-params.d.ts.map +1 -0
  25. package/dist/builder/extract-params.js +2 -0
  26. package/dist/builder/extract-params.js.map +1 -0
  27. package/dist/builder/index.d.ts +23 -0
  28. package/dist/builder/index.d.ts.map +1 -0
  29. package/dist/builder/index.js +14 -0
  30. package/dist/builder/index.js.map +1 -0
  31. package/dist/builder/insert.d.ts +51 -0
  32. package/dist/builder/insert.d.ts.map +1 -0
  33. package/dist/builder/insert.js +39 -0
  34. package/dist/builder/insert.js.map +1 -0
  35. package/dist/builder/mutate.d.ts +28 -0
  36. package/dist/builder/mutate.d.ts.map +1 -0
  37. package/dist/builder/mutate.js +17 -0
  38. package/dist/builder/mutate.js.map +1 -0
  39. package/dist/builder/params.d.ts +22 -0
  40. package/dist/builder/params.d.ts.map +1 -0
  41. package/dist/builder/params.js +65 -0
  42. package/dist/builder/params.js.map +1 -0
  43. package/dist/builder/return-type.d.ts +39 -0
  44. package/dist/builder/return-type.d.ts.map +1 -0
  45. package/dist/builder/return-type.js +2 -0
  46. package/dist/builder/return-type.js.map +1 -0
  47. package/dist/builder/scanner.d.ts +49 -0
  48. package/dist/builder/scanner.d.ts.map +1 -0
  49. package/dist/builder/scanner.js +240 -0
  50. package/dist/builder/scanner.js.map +1 -0
  51. package/dist/builder/select.d.ts +76 -0
  52. package/dist/builder/select.d.ts.map +1 -0
  53. package/dist/builder/select.js +240 -0
  54. package/dist/builder/select.js.map +1 -0
  55. package/dist/builder/sql-tag.d.ts +319 -0
  56. package/dist/builder/sql-tag.d.ts.map +1 -0
  57. package/dist/builder/sql-tag.js +3 -0
  58. package/dist/builder/sql-tag.js.map +1 -0
  59. package/dist/builder/sql.d.ts +17 -0
  60. package/dist/builder/sql.d.ts.map +1 -0
  61. package/dist/builder/sql.js +36 -0
  62. package/dist/builder/sql.js.map +1 -0
  63. package/dist/builder/state.d.ts +53 -0
  64. package/dist/builder/state.d.ts.map +1 -0
  65. package/dist/builder/state.js +18 -0
  66. package/dist/builder/state.js.map +1 -0
  67. package/dist/builder/update.d.ts +60 -0
  68. package/dist/builder/update.d.ts.map +1 -0
  69. package/dist/builder/update.js +40 -0
  70. package/dist/builder/update.js.map +1 -0
  71. package/dist/builder/write-assemble.d.ts +5 -0
  72. package/dist/builder/write-assemble.d.ts.map +1 -0
  73. package/dist/builder/write-assemble.js +57 -0
  74. package/dist/builder/write-assemble.js.map +1 -0
  75. package/dist/builder/write-state.d.ts +39 -0
  76. package/dist/builder/write-state.d.ts.map +1 -0
  77. package/dist/builder/write-state.js +6 -0
  78. package/dist/builder/write-state.js.map +1 -0
  79. package/dist/builder/write-tag.d.ts +91 -0
  80. package/dist/builder/write-tag.d.ts.map +1 -0
  81. package/dist/builder/write-tag.js +2 -0
  82. package/dist/builder/write-tag.js.map +1 -0
  83. package/dist/columns.d.ts +33 -0
  84. package/dist/columns.d.ts.map +1 -0
  85. package/dist/columns.js +2 -0
  86. package/dist/columns.js.map +1 -0
  87. package/dist/expressions.d.ts +71 -0
  88. package/dist/expressions.d.ts.map +1 -0
  89. package/dist/expressions.js +2 -0
  90. package/dist/expressions.js.map +1 -0
  91. package/dist/index.d.ts +22 -0
  92. package/dist/index.d.ts.map +1 -0
  93. package/dist/index.js +5 -0
  94. package/dist/index.js.map +1 -0
  95. package/dist/parsing/extract.d.ts +47 -0
  96. package/dist/parsing/extract.d.ts.map +1 -0
  97. package/dist/parsing/extract.js +2 -0
  98. package/dist/parsing/extract.js.map +1 -0
  99. package/dist/parsing/normalize.d.ts +44 -0
  100. package/dist/parsing/normalize.d.ts.map +1 -0
  101. package/dist/parsing/normalize.js +2 -0
  102. package/dist/parsing/normalize.js.map +1 -0
  103. package/dist/parsing/pg-literals.d.ts +37 -0
  104. package/dist/parsing/pg-literals.d.ts.map +1 -0
  105. package/dist/parsing/pg-literals.js +2 -0
  106. package/dist/parsing/pg-literals.js.map +1 -0
  107. package/dist/parsing/split.d.ts +100 -0
  108. package/dist/parsing/split.d.ts.map +1 -0
  109. package/dist/parsing/split.js +2 -0
  110. package/dist/parsing/split.js.map +1 -0
  111. package/dist/parsing/string-utils.d.ts +29 -0
  112. package/dist/parsing/string-utils.d.ts.map +1 -0
  113. package/dist/parsing/string-utils.js +2 -0
  114. package/dist/parsing/string-utils.js.map +1 -0
  115. package/dist/parsing/tokenize.d.ts +27 -0
  116. package/dist/parsing/tokenize.d.ts.map +1 -0
  117. package/dist/parsing/tokenize.js +2 -0
  118. package/dist/parsing/tokenize.js.map +1 -0
  119. package/dist/parsing.d.ts +7 -0
  120. package/dist/parsing.d.ts.map +1 -0
  121. package/dist/parsing.js +9 -0
  122. package/dist/parsing.js.map +1 -0
  123. package/dist/partial.d.ts +30 -0
  124. package/dist/partial.d.ts.map +1 -0
  125. package/dist/partial.js +10 -0
  126. package/dist/partial.js.map +1 -0
  127. package/dist/schema.d.ts +28 -0
  128. package/dist/schema.d.ts.map +1 -0
  129. package/dist/schema.js +2 -0
  130. package/dist/schema.js.map +1 -0
  131. package/dist/tables.d.ts +34 -0
  132. package/dist/tables.d.ts.map +1 -0
  133. package/dist/tables.js +2 -0
  134. package/dist/tables.js.map +1 -0
  135. package/dist/utils.d.ts +13 -0
  136. package/dist/utils.d.ts.map +1 -0
  137. package/dist/utils.js +3 -0
  138. package/dist/utils.js.map +1 -0
  139. package/dist/validation/cte.d.ts +54 -0
  140. package/dist/validation/cte.d.ts.map +1 -0
  141. package/dist/validation/cte.js +2 -0
  142. package/dist/validation/cte.js.map +1 -0
  143. package/dist/validation/dispatch.d.ts +31 -0
  144. package/dist/validation/dispatch.d.ts.map +1 -0
  145. package/dist/validation/dispatch.js +2 -0
  146. package/dist/validation/dispatch.js.map +1 -0
  147. package/dist/validation/joins.d.ts +16 -0
  148. package/dist/validation/joins.d.ts.map +1 -0
  149. package/dist/validation/joins.js +2 -0
  150. package/dist/validation/joins.js.map +1 -0
  151. package/dist/validation/return-derived.d.ts +67 -0
  152. package/dist/validation/return-derived.d.ts.map +1 -0
  153. package/dist/validation/return-derived.js +5 -0
  154. package/dist/validation/return-derived.js.map +1 -0
  155. package/dist/validation/return-types.d.ts +41 -0
  156. package/dist/validation/return-types.d.ts.map +1 -0
  157. package/dist/validation/return-types.js +2 -0
  158. package/dist/validation/return-types.js.map +1 -0
  159. package/dist/validation/validate-columns.d.ts +63 -0
  160. package/dist/validation/validate-columns.d.ts.map +1 -0
  161. package/dist/validation/validate-columns.js +2 -0
  162. package/dist/validation/validate-columns.js.map +1 -0
  163. package/dist/validation.d.ts +7 -0
  164. package/dist/validation.d.ts.map +1 -0
  165. package/dist/validation.js +9 -0
  166. package/dist/validation.js.map +1 -0
  167. package/package.json +64 -0
  168. package/src/builder/assemble.ts +100 -0
  169. package/src/builder/condition-tree.ts +162 -0
  170. package/src/builder/conditional-sql.ts +325 -0
  171. package/src/builder/db.ts +281 -0
  172. package/src/builder/delete.ts +57 -0
  173. package/src/builder/extract-params.ts +507 -0
  174. package/src/builder/index.ts +58 -0
  175. package/src/builder/insert.ts +75 -0
  176. package/src/builder/mutate.ts +55 -0
  177. package/src/builder/params.ts +95 -0
  178. package/src/builder/return-type.ts +66 -0
  179. package/src/builder/scanner.ts +254 -0
  180. package/src/builder/select.ts +470 -0
  181. package/src/builder/sql-tag.ts +422 -0
  182. package/src/builder/sql.ts +51 -0
  183. package/src/builder/state.ts +55 -0
  184. package/src/builder/update.ts +77 -0
  185. package/src/builder/write-assemble.ts +52 -0
  186. package/src/builder/write-state.ts +43 -0
  187. package/src/builder/write-tag.ts +119 -0
  188. package/src/columns.ts +336 -0
  189. package/src/expressions.ts +745 -0
  190. package/src/index.ts +81 -0
  191. package/src/parsing/extract.ts +260 -0
  192. package/src/parsing/normalize.ts +243 -0
  193. package/src/parsing/pg-literals.ts +289 -0
  194. package/src/parsing/split.ts +288 -0
  195. package/src/parsing/string-utils.ts +172 -0
  196. package/src/parsing/tokenize.ts +321 -0
  197. package/src/parsing.ts +8 -0
  198. package/src/partial.ts +241 -0
  199. package/src/schema.ts +130 -0
  200. package/src/tables.ts +278 -0
  201. package/src/utils.ts +43 -0
  202. package/src/validation/cte.ts +198 -0
  203. package/src/validation/dispatch.ts +312 -0
  204. package/src/validation/joins.ts +198 -0
  205. package/src/validation/return-derived.ts +253 -0
  206. package/src/validation/return-types.ts +271 -0
  207. package/src/validation/validate-columns.ts +489 -0
  208. package/src/validation.ts +8 -0
@@ -0,0 +1,28 @@
1
+ import type { AnyTrue, Simplify } from "./utils.js";
2
+ export type DatabaseSchema = {
3
+ defaultSchema: string;
4
+ schemas: Record<string, Record<string, Record<string, any>>>;
5
+ };
6
+ export type StringKeys<T> = Extract<keyof T, string>;
7
+ export type MatchKeyCaseInsensitive<Obj, Name extends string> = string extends Name ? never : StringKeys<Obj> extends infer K extends string ? K extends any ? Lowercase<K> extends Lowercase<Name> ? K : never : never : never;
8
+ export type ResolveSchemaName<S extends DatabaseSchema, Schema extends string> = MatchKeyCaseInsensitive<S["schemas"], Schema>;
9
+ export type ResolveTableName<S extends DatabaseSchema, Schema extends string, Table extends string> = Schema extends keyof S["schemas"] ? MatchKeyCaseInsensitive<S["schemas"][Schema], Table> : never;
10
+ export type NormalizeTableKey<TableKey extends string, S extends DatabaseSchema> = TableKey extends `${infer Schema}.${infer Table}` ? ResolveSchemaName<S, Schema> extends infer RS extends string ? ResolveTableName<S, RS, Table> extends infer RT extends string ? `${RS}.${RT}` : never : never : never;
11
+ export type RowTypeFromNormalizedTableKey<TableKey extends string, S extends DatabaseSchema> = TableKey extends `${infer Schema}.${infer Table}` ? Schema extends keyof S["schemas"] ? Table extends keyof S["schemas"][Schema] ? S["schemas"][Schema][Table] : never : never : never;
12
+ export type RowTypeForResolvedTableKey<TableKey extends string, S extends DatabaseSchema> = NormalizeTableKey<TableKey, S> extends infer Normalized extends string ? RowTypeFromNormalizedTableKey<Normalized, S> : never;
13
+ export type ResolveColumnName<TableKey extends string, Column extends string, S extends DatabaseSchema> = RowTypeForResolvedTableKey<TableKey, S> extends infer Row extends Record<string, any> ? MatchKeyCaseInsensitive<Row, Column> : never;
14
+ export type TableExists<S extends DatabaseSchema, Schema extends string, Table extends string> = NormalizeTableKey<`${Schema}.${Table}`, S> extends never ? false : true;
15
+ export type ColumnExists<TableKey extends string, Column extends string, S extends DatabaseSchema> = ColumnTypeFromTableKey<TableKey, Column, S> extends never ? false : true;
16
+ export type ColumnTypeFromTableKey<TableKey extends string, Column extends string, S extends DatabaseSchema> = ResolveColumnName<TableKey, Column, S> extends infer ResolvedColumn extends string ? RowTypeForResolvedTableKey<TableKey, S> extends infer Row extends Record<string, any> ? ResolvedColumn extends keyof Row ? Row[ResolvedColumn] : never : never : never;
17
+ export type ColumnTypeFromSchemaTable<Schema extends string, Table extends string, Column extends string, S extends DatabaseSchema> = ColumnTypeFromTableKey<`${Schema}.${Table}`, Column, S>;
18
+ export type RowTypeForTables<Tables extends string, S extends DatabaseSchema> = MergeRowUnion<Tables extends string ? RowTypeForResolvedTableKey<Tables, S> : never>;
19
+ export type MergeRowUnion<Rows> = [
20
+ Rows
21
+ ] extends [never] ? {} : Simplify<{
22
+ [K in (Rows extends any ? keyof Rows : never) & PropertyKey]: Rows extends any ? (K extends keyof Rows ? Rows[K] : never) : never;
23
+ }>;
24
+ export type RowTypeForTable<TableKey extends string, S extends DatabaseSchema> = RowTypeForResolvedTableKey<TableKey, S>;
25
+ export type AllTableKeys<S extends DatabaseSchema> = keyof S["schemas"] extends infer Schema ? Schema extends string ? keyof S["schemas"][Schema] extends infer Table ? Table extends string ? `${Schema}.${Table}` : never : never : never : never;
26
+ export type ColumnExistsInAnyTable<Column extends string, S extends DatabaseSchema> = AnyTrue<ColumnExistsInTableUnion<AllTableKeys<S>, Column, S>>;
27
+ export type ColumnExistsInTableUnion<Tables extends string, Column extends string, S extends DatabaseSchema> = Tables extends any ? ColumnExists<Tables, Column, S> : false;
28
+ //# sourceMappingURL=schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"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"}
package/dist/schema.js ADDED
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":""}
@@ -0,0 +1,34 @@
1
+ import type { DatabaseSchema, NormalizeTableKey, TableExists } from "./schema.js";
2
+ import type { CleanIdent, CommaSep, SplitOnDotClean, SqlKeyword, Tokenize, TokenizeTables } from "./parsing.js";
3
+ export type TablesInQuery<N extends string, S extends DatabaseSchema> = CollectTables<TokenizeTables<N>, S, never, false, N extends `delete ${string}` ? true : false>;
4
+ export type AliasesInQuery<N extends string, S extends DatabaseSchema> = CollectAliases<TokenizeTables<N>, S, never, false, N extends `delete ${string}` ? true : false>;
5
+ export type TableKeyValid<Key extends string, S extends DatabaseSchema> = Key extends `${infer Schema}.${infer Table}` ? TableExists<S, Schema, Table> : false;
6
+ export type PreferNormalizedTableKey<Raw extends string, Normalized> = [
7
+ Normalized
8
+ ] extends [never] ? Raw : Extract<Normalized, string>;
9
+ export type TableKeyFromToken<Token extends string, S extends DatabaseSchema> = ParseTableToken<Token, S> extends infer Parsed ? Parsed extends {
10
+ schema: infer Schema extends string;
11
+ table: infer Table extends string;
12
+ } ? PreferNormalizedTableKey<`${Schema}.${Table}`, NormalizeTableKey<`${Schema}.${Table}`, S>> : never : never;
13
+ export type ParseTableToken<Token extends string, S extends DatabaseSchema> = SplitOnDotClean<Token> extends [infer A extends string, infer B extends string] ? {
14
+ schema: A;
15
+ table: B;
16
+ } : SplitOnDotClean<Token> extends [infer A extends string] ? {
17
+ schema: S["defaultSchema"];
18
+ table: A;
19
+ } : never;
20
+ export type InsertTargetTable<N extends string, S extends DatabaseSchema> = TableAfter<Tokenize<N>, "into", S>;
21
+ export type UpdateTargetTable<N extends string, S extends DatabaseSchema> = TableAfter<Tokenize<N>, "update", S>;
22
+ export type DeleteTargetTable<N extends string, S extends DatabaseSchema> = TableAfter<Tokenize<N>, "from", S>;
23
+ export type CollectTables<Tokens extends string[], S extends DatabaseSchema, Acc extends string = never, InList extends boolean = false, InDelete extends boolean = false> = Tokens extends [infer T extends string, infer Next extends string, ...infer Rest extends string[]] ? T extends "from" | "join" | "into" ? Next extends "lateral" ? CollectTables<Rest, S, Acc, true, InDelete> : CollectTables<Rest, S, Acc | TableKeyFromToken<Next, S>, true, InDelete> : T extends "update" ? Next extends "set" ? CollectTables<Rest, S, Acc, false, InDelete> : CollectTables<Rest, S, Acc | TableKeyFromToken<Next, S>, true, InDelete> : T extends "delete" ? Next extends "from" ? Rest extends [infer DelTable extends string, ...infer Rest2 extends string[]] ? CollectTables<Rest2, S, Acc | TableKeyFromToken<DelTable, S>, false, true> : Acc : CollectTables<[Next, ...Rest], S, Acc, false, true> : T extends "using" ? InDelete extends true ? CollectTables<Rest, S, Acc | TableKeyFromToken<Next, S>, true, InDelete> : CollectTables<[Next, ...Rest], S, Acc, InList, InDelete> : T extends CommaSep ? InList extends true ? CollectTables<Rest, S, Acc | TableKeyFromToken<Next, S>, true, InDelete> : CollectTables<[Next, ...Rest], S, Acc, false, InDelete> : T extends "as" ? CollectTables<[Next, ...Rest], S, Acc, InList, InDelete> : T extends "distinct" ? Next extends "from" ? CollectTables<Rest, S, Acc, false, InDelete> : CollectTables<[Next, ...Rest], S, Acc, false, InDelete> : T extends SqlKeyword ? CollectTables<[Next, ...Rest], S, Acc, false, InDelete> : CollectTables<[Next, ...Rest], S, Acc, InList, InDelete> : Acc;
24
+ export type CollectAliases<Tokens extends string[], S extends DatabaseSchema, Acc extends string = never, InList extends boolean = false, InDelete extends boolean = false> = Tokens extends [infer T extends string, infer Next extends string, ...infer Rest extends string[]] ? T extends "from" | "join" | "update" ? Next extends "lateral" ? CollectAliases<Rest, S, Acc, true, InDelete> : ParseAliasSource<Next, Rest, S, Acc, InDelete> : T extends "using" ? InDelete extends true ? ParseAliasSource<Next, Rest, S, Acc, InDelete> : CollectAliases<[Next, ...Rest], S, Acc, InList, InDelete> : T extends CommaSep ? InList extends true ? ParseAliasSource<Next, Rest, S, Acc, InDelete> : CollectAliases<[Next, ...Rest], S, Acc, false, InDelete> : T extends "as" ? CollectAliases<[Next, ...Rest], S, Acc, InList, InDelete> : T extends "distinct" ? Next extends "from" ? CollectAliases<Rest, S, Acc, false, InDelete> : CollectAliases<[Next, ...Rest], S, Acc, false, InDelete> : T extends SqlKeyword ? CollectAliases<[Next, ...Rest], S, Acc, false, InDelete> : CollectAliases<[Next, ...Rest], S, Acc, InList, InDelete> : Acc;
25
+ export type ParseAliasSource<Next extends string, Rest extends string[], S extends DatabaseSchema, Acc extends string, InDelete extends boolean = false> = TableKeyFromToken<Next, S> extends infer TableKey extends string ? Rest extends [infer MaybeAlias extends string, ...infer Rest2 extends string[]] ? MaybeAlias extends "as" ? Rest2 extends [infer Alias extends string, ...infer Rest3 extends string[]] ? CollectAliases<Rest3, S, Acc | AliasEntry<Alias, TableKey>, true, InDelete> : Acc : MaybeAlias extends CommaSep ? CollectAliases<Rest, S, Acc, true, InDelete> : InDelete extends true ? MaybeAlias extends "using" ? CollectAliases<Rest, S, Acc, true, InDelete> : IsAliasCandidate<MaybeAlias> extends true ? CollectAliases<Rest2, S, Acc | AliasEntry<MaybeAlias, TableKey>, true, InDelete> : CollectAliases<Rest, S, Acc, true, InDelete> : IsAliasCandidate<MaybeAlias> extends true ? CollectAliases<Rest2, S, Acc | AliasEntry<MaybeAlias, TableKey>, true, InDelete> : CollectAliases<Rest, S, Acc, true, InDelete> : Acc : CollectAliases<Rest, S, Acc, true, InDelete>;
26
+ export type NullableRelations<N extends string, S extends DatabaseSchema> = CollectNullable<TokenizeTables<N>, "none", never, never>;
27
+ export type CollectNullable<Tokens extends string[], Mod extends string, Left extends string, Acc extends string> = Tokens extends [infer T extends string, ...infer Rest extends string[]] ? T extends "left" ? CollectNullable<Rest, "left", Left, Acc> : T extends "right" ? CollectNullable<Rest, "right", Left, Acc> : T extends "full" ? CollectNullable<Rest, "full", Left, Acc> : T extends "inner" | "cross" ? CollectNullable<Rest, "none", Left, Acc> : T extends "outer" ? CollectNullable<Rest, Mod, Left, Acc> : T extends "from" | "into" ? Rest extends [infer Tbl extends string, ...infer R2 extends string[]] ? CollectNullable<R2, "none", Left | SourceQualifier<Tbl, R2>, Acc> : Acc : T extends "join" ? Rest extends [infer Tbl extends string, ...infer R2 extends string[]] ? SourceQualifier<Tbl, R2> extends infer Q extends string ? Mod extends "left" ? CollectNullable<R2, "none", Left | Q, Acc | Q> : Mod extends "right" ? CollectNullable<R2, "none", Left | Q, Acc | Left> : Mod extends "full" ? CollectNullable<R2, "none", Left | Q, Acc | Left | Q> : CollectNullable<R2, "none", Left | Q, Acc> : Acc : Acc : CollectNullable<Rest, Mod, Left, Acc> : Acc;
28
+ export type SourceQualifier<Tbl extends string, Rest extends string[]> = Rest extends ["as", infer A extends string, ...string[]] ? CleanIdent<A> : Rest extends [infer Maybe extends string, ...string[]] ? IsAliasCandidate<Maybe> extends true ? CleanIdent<Maybe> : CleanIdent<Tbl> : CleanIdent<Tbl>;
29
+ export type TableAfter<Tokens extends string[], Keyword extends string, S extends DatabaseSchema> = Tokens extends [infer T extends string, infer Next extends string, ...infer Rest extends string[]] ? T extends Keyword ? TableKeyFromToken<Next, S> : TableAfter<[Next, ...Rest], Keyword, S> : never;
30
+ export type AliasEntry<Alias extends string, TableKey extends string> = `${CleanIdent<Alias>}=>${TableKey}`;
31
+ export type IsAliasCandidate<Token extends string> = Token extends "" ? false : Token extends SqlKeyword ? false : true;
32
+ export type AliasNames<Aliases extends string> = Aliases extends `${infer A}=>${string}` ? A : never;
33
+ export type IsAliasName<Token extends string, Aliases extends string> = Token extends AliasNames<Aliases> ? true : false;
34
+ //# sourceMappingURL=tables.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tables.d.ts","sourceRoot":"","sources":["../src/tables.ts"],"names":[],"mappings":"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"}
package/dist/tables.js ADDED
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=tables.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tables.js","sourceRoot":"","sources":["../src/tables.ts"],"names":[],"mappings":""}
@@ -0,0 +1,13 @@
1
+ export type And<A extends boolean, B extends boolean, C extends boolean, D extends boolean, E extends boolean = true> = A extends true ? (B extends true ? (C extends true ? (D extends true ? (E extends true ? true : false) : false) : false) : false) : false;
2
+ export type AllTrue<U> = Exclude<U, true> extends never ? true : false;
3
+ export type AnyTrue<U> = Extract<U, true> extends never ? false : true;
4
+ export type IsNever<T> = [T] extends [never] ? true : false;
5
+ export type IsUnion<T, U = T> = [
6
+ T
7
+ ] extends [never] ? false : T extends any ? [U] extends [T] ? false : true : false;
8
+ export type StartsWith<S extends string, Prefix extends string> = string extends S ? false : S extends `${Prefix}${string}` ? true : false;
9
+ export type UnionToIntersection<U> = (U extends any ? (x: U) => void : never) extends (x: infer I) => void ? I : never;
10
+ export type Simplify<T> = {
11
+ [K in keyof T]: T[K];
12
+ } & {};
13
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,GAAG,CACX,CAAC,SAAS,OAAO,EACjB,CAAC,SAAS,OAAO,EACjB,CAAC,SAAS,OAAO,EACjB,CAAC,SAAS,OAAO,EACjB,CAAC,SAAS,OAAO,GAAG,IAAI,IACxB,CAAC,SAAS,IAAI,GACZ,CAAC,CAAC,SAAS,IAAI,GACX,CAAC,CAAC,SAAS,IAAI,GACX,CAAC,CAAC,SAAS,IAAI,GACX,CAAC,CAAC,SAAS,IAAI,GAAG,IAAI,GAAG,KAAK,CAAC,GAC/B,KAAK,CAAC,GACV,KAAK,CAAC,GACV,KAAK,CAAC,GACV,KAAK,CAAC;AAEZ,MAAM,MAAM,OAAO,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,EAAE,IAAI,CAAC,SAAS,KAAK,GAAG,IAAI,GAAG,KAAK,CAAC;AAEvE,MAAM,MAAM,OAAO,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,EAAE,IAAI,CAAC,SAAS,KAAK,GAAG,KAAK,GAAG,IAAI,CAAC;AAEvE,MAAM,MAAM,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,IAAI,GAAG,KAAK,CAAC;AAK5D,MAAM,MAAM,OAAO,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,IACxB;IAAC,CAAC;CAAC,SAAS,CAAC,KAAK,CAAC,GACb,KAAK,GACL,CAAC,SAAS,GAAG,GACT,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GACX,KAAK,GACL,IAAI,GACR,KAAK,CAAC;AAEpB,MAAM,MAAM,UAAU,CAAC,CAAC,SAAS,MAAM,EAAE,MAAM,SAAS,MAAM,IAC1D,MAAM,SAAS,CAAC,GAAG,KAAK,GAAG,CAAC,SAAS,GAAG,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI,GAAG,KAAK,CAAC;AAE7E,MAAM,MAAM,mBAAmB,CAAC,CAAC,IAC7B,CAAC,CAAC,SAAS,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,IAAI,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,MAAM,CAAC,KAAK,IAAI,GAAG,CAAC,GAAG,KAAK,CAAC;AAEtF,MAAM,MAAM,QAAQ,CAAC,CAAC,IAAI;KAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAAE,GAAG,EAAE,CAAC"}
package/dist/utils.js ADDED
@@ -0,0 +1,3 @@
1
+ // Shared boolean and type utilities.
2
+ export {};
3
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA,qCAAqC"}
@@ -0,0 +1,54 @@
1
+ import type { BuildDerivedReturn, DerivedSubRow } from "./return-derived.js";
2
+ import type { CleanIdent, ExtractAliasResult, ExtractFromClause, ExtractSelectList, ReplaceWhitespace, SplitBalancedParen, SplitCommaSimple, SplitSelectList, Trim } from "../parsing.js";
3
+ import type { DatabaseSchema } from "../schema.js";
4
+ import type { QueryKind } from "./dispatch.js";
5
+ import type { Simplify, UnionToIntersection } from "../utils.js";
6
+ import type { TableKeyFromToken } from "../tables.js";
7
+ export type StripRecursiveKw<N extends string> = N extends `with recursive ${infer R}` ? `with ${R}` : N;
8
+ export type SingleCteMatch<N extends string> = StripRecursiveKw<N> extends `with ${infer AfterWith}` ? AfterWith extends `${infer Head} as ${infer Tail}` ? Trim<Tail> extends `(${string}` ? SplitBalancedParen<Trim<Tail>> extends {
9
+ inner: infer Body extends string;
10
+ rest: infer Rest extends string;
11
+ } ? Trim<Rest> extends `select ${string}` ? Trim<Rest> extends `${string} join ${string}` ? never : Trim<Body> extends `select ${string}` ? {
12
+ body: Trim<Body>;
13
+ outer: Trim<Rest>;
14
+ name: CteName<Trim<Head>>;
15
+ cols: CteCols<Trim<Head>>;
16
+ } : never : never : never : never : never : never;
17
+ export type CteName<Head extends string> = Head extends `${infer Name}(${string}` ? CleanIdent<Trim<Name>> : CleanIdent<Head>;
18
+ export type CteNames<N extends string> = StripRecursiveKw<N> extends `with ${infer AfterWith}` ? CollectCteNames<Trim<AfterWith>> : never;
19
+ export type CollectCteNames<S extends string, Acc extends string = never> = S extends `${infer Head} as ${infer Tail}` ? Trim<Tail> extends `(${string}` ? SplitBalancedParen<Trim<Tail>> extends {
20
+ rest: infer Rest extends string;
21
+ } ? Trim<Rest> extends `, ${infer More}` ? CollectCteNames<Trim<More>, Acc | CteName<Trim<Head>>> : Acc | CteName<Trim<Head>> : Acc | CteName<Trim<Head>> : Acc : Acc;
22
+ export type CteOuterQuery<N extends string> = StripRecursiveKw<N> extends `with ${infer AfterWith}` ? ReplaceWhitespace<CollectCteOuter<Trim<AfterWith>>> : N;
23
+ export type CollectCteOuter<S extends string> = S extends `${infer _Head} as ${infer Tail}` ? Trim<Tail> extends `(${string}` ? SplitBalancedParen<Trim<Tail>> extends {
24
+ rest: infer Rest extends string;
25
+ } ? Trim<Rest> extends `, ${infer More}` ? CollectCteOuter<Trim<More>> : Trim<Rest> : "" : "" : "";
26
+ export type CteOuterFromName<Outer extends string> = Trim<ExtractFromClause<Outer>> extends `${infer Rel} ${string}` ? CleanIdent<Rel> : CleanIdent<Trim<ExtractFromClause<Outer>>>;
27
+ export type MultiCteReturn<Outer extends string> = BuildDerivedReturn<SplitSelectList<ExtractSelectList<Outer>>, CteOuterFromName<Outer>, {}>;
28
+ export type CteTableKeys<N extends string, S extends DatabaseSchema> = [
29
+ CteNames<N>
30
+ ] extends [never] ? never : TableKeyFromToken<CteNames<N>, S>;
31
+ export type NonCteTables<N extends string, S extends DatabaseSchema, Tables extends string> = Exclude<Tables, CteTableKeys<N, S>>;
32
+ export type WithDmlOuter<N extends string> = StripRecursiveKw<N> extends `with ${infer AfterWith}` ? AfterWith extends `${infer _Head} as ${infer Tail}` ? Trim<Tail> extends `(${string}` ? SplitBalancedParen<Trim<Tail>> extends {
33
+ rest: infer Rest extends string;
34
+ } ? Trim<Rest> extends infer R extends string ? QueryKind<R> extends "update" | "insert" | "delete" ? R : never : never : never : never : never : never;
35
+ export type CteCols<Head extends string> = Head extends `${string}(${infer Cols})${string}` ? FilterCteCols<SplitCommaSimple<Cols>> : [];
36
+ export type FilterCteCols<Cols extends string[], Acc extends string[] = []> = Cols extends [infer C extends string, ...infer Rest extends string[]] ? CleanIdent<C> extends "" ? FilterCteCols<Rest, Acc> : FilterCteCols<Rest, [...Acc, CleanIdent<C>]> : Acc;
37
+ export type CteReturn<N extends string, S extends DatabaseSchema> = SingleCteMatch<N> extends {
38
+ body: infer Body extends string;
39
+ outer: infer Outer extends string;
40
+ name: infer Name extends string;
41
+ cols: infer Cols extends string[];
42
+ } ? CteRow<Body, Cols, S> extends infer Row ? BuildDerivedReturn<SplitSelectList<ExtractSelectList<Outer>>, Name, Row> : {} : {};
43
+ export type CteRow<Body extends string, Cols extends string[], S extends DatabaseSchema> = DerivedSubRow<Body, S> extends infer BaseRow ? Cols extends [] ? BaseRow : RenameRow<SplitSelectList<ExtractSelectList<Body>>, Cols, BaseRow> : {};
44
+ export type RenameRow<BodyExprs extends string[], Cols extends string[], BaseRow> = Simplify<UnionToIntersection<{
45
+ [I in keyof Cols]: Cols[I] extends string ? {
46
+ [P in Cols[I]]: I extends keyof BodyExprs ? BodyExprs[I] extends string ? CteBodyColType<BodyExprs[I], BaseRow> : unknown : unknown;
47
+ } : {};
48
+ }[number]>>;
49
+ export type CteBodyColKey<E extends string> = ExtractAliasResult<E> extends {
50
+ expr: infer Raw extends string;
51
+ alias: infer A;
52
+ } ? [A] extends [never] ? CleanIdent<Raw> : A : CleanIdent<E>;
53
+ export type CteBodyColType<E extends string, BaseRow> = CteBodyColKey<E> extends infer K extends string ? K extends keyof BaseRow ? BaseRow[K] : unknown : unknown;
54
+ //# sourceMappingURL=cte.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cte.d.ts","sourceRoot":"","sources":["../../src/validation/cte.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=cte.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cte.js","sourceRoot":"","sources":["../../src/validation/cte.ts"],"names":[],"mappings":""}
@@ -0,0 +1,31 @@
1
+ import type { AliasesInQuery, TableKeyValid, TablesInQuery, UpdateTargetTable } from "../tables.js";
2
+ import type { AllColumnsValidFor, AllTablesValidFor, ColumnsValidInSelectOrReturningFor, NoAliasShadowedQualifiers, OuterScopeUnqualifiedValid, QualifiedColumnRefsValidFor, UnqualifiedColumnRefsValidFor, ValidateCteShape, ValidateDerivedShape } from "./validate-columns.js";
3
+ import type { And, StartsWith } from "../utils.js";
4
+ import type { CteNames, NonCteTables, SingleCteMatch } from "./cte.js";
5
+ import type { DatabaseSchema } from "../schema.js";
6
+ import type { DerivedAliasName, DerivedFirstWord, DerivedTableMatch } from "./return-derived.js";
7
+ import type { DistinctOnColsValid, JoinUsingColsValid, WindowFilterColsValid } from "./joins.js";
8
+ import type { ExceedsLengthBudget, ExtractBefore, ExtractLastWhere, HasLineBreaks, TokenizeLoose, Trim, ValidationScanView } from "../parsing.js";
9
+ import type { RefScanSegment } from "./return-types.js";
10
+ export type ValidateSQLNormalized<N extends string, S extends DatabaseSchema> = ShouldNeutralizeForScan<N> extends true ? ValidationScanView<N> extends infer V extends string ? ValidateSQLNormalizedDispatch<V, S> : false : ValidateSQLNormalizedDispatch<N, S>;
11
+ export type ShouldNeutralizeForScan<N extends string> = N extends `${string}'${string}` ? NotReportScale<N> : N extends `${string}"${string}` ? NotReportScale<N> : false;
12
+ export type NotReportScale<N extends string> = HasLineBreaks<N> extends true ? false : ExceedsLengthBudget<N> extends true ? false : true;
13
+ export type ValidateSQLNormalizedDispatch<N extends string, S extends DatabaseSchema> = QueryKind<N> extends "select" ? IsHighComplexitySelect<N> extends true ? ValidateSQLNormalizedLightSelect<N, S> : [SingleCteMatch<N>] extends [never] ? [DerivedTableMatch<N>] extends [never] ? ValidateSQLNormalizedCore<N, S> : N extends `${string} join ${string}` ? ValidateSQLNormalizedCore<N, S> : ValidateDerivedShape<N, S> : ValidateCteShape<N, S> : QueryKind<N> extends "update" ? IsHighComplexityUpdate<N> extends true ? ValidateHighComplexityUpdate<N, S> : ValidateSQLNormalizedCore<N, S> : ValidateSQLNormalizedCore<N, S>;
14
+ export type ValidateHighComplexityUpdate<N extends string, S extends DatabaseSchema> = HasLineBreaks<N> extends true ? true : UpdateTargetTable<N, S> extends infer TargetKey extends string ? TableKeyValid<TargetKey, S> extends true ? ExtractLastWhere<N> extends infer W extends string ? Trim<W> extends "" ? true : WhereHasSubquery<W> extends true ? true : WhereColsValidForUpdate<W, TargetKey, UpdateAliasEntry<N, TargetKey>, S> : true : false : true;
15
+ export type WhereHasSubquery<W extends string> = W extends `${string}select ${string}` ? true : W extends `${string}exists ${string}` ? true : W extends `exists ${string}` ? true : false;
16
+ export type UpdateAliasEntry<N extends string, TargetKey extends string> = N extends `update ${infer Rest}` ? Trim<ExtractBefore<Rest, " set ">> extends `${infer _Tbl} ${infer AliasPart}` ? DerivedAliasName<Trim<AliasPart>> extends infer A extends string ? A extends "" ? never : `${A}=>${TargetKey}` : never : never : never;
17
+ export type WhereColsValidForUpdate<W extends string, TargetKey extends string, AliasEntry extends string, S extends DatabaseSchema> = TokenizeLoose<W> extends infer WT extends string[] ? And<QualifiedColumnRefsValidFor<W, S, TargetKey, AliasEntry, WT>, UnqualifiedColumnRefsValidFor<W, S, TargetKey, AliasEntry, WT, never>, true, true, true> : true;
18
+ export type ValidateSQLNormalizedLightSelect<N extends string, S extends DatabaseSchema> = ExceedsLengthBudget<N> extends true ? ReportScaleSelectTables<N, S> : HasLineBreaks<N> extends true ? LightSelectTablesAndList<N, S> : ValidateSQLNormalizedCore<N, S>;
19
+ export type ReportScaleSelectTables<N extends string, S extends DatabaseSchema> = TablesInQuery<N, S> extends infer Tables extends string ? AllTablesValidFor<ReportScaleTablesToValidate<N, S, Tables>, S> : false;
20
+ export type ReportScaleTablesToValidate<N extends string, S extends DatabaseSchema, Tables extends string> = Tables extends `${infer Schema}.${infer Table}` ? TableKeyValid<`${Schema}.${Table}`, S> extends true ? `${Schema}.${Table}` : Table extends ReportScaleLocalRelationNames<N> | "select" ? never : Table extends `${ReportScalePseudoSource}${string}` ? never : N extends `with ${string}` ? Table extends Lowercase<Table> ? never : `${Schema}.${Table}` : `${Schema}.${Table}` : Tables;
21
+ export type ReportScaleLocalRelationNames<N extends string> = CteNames<N> | ReportScaleDerivedNames<N>;
22
+ export type ReportScaleDerivedNames<N extends string> = N extends `${infer _Before} from (${infer _Body}) as ${infer After}` ? DerivedFirstWord<Trim<After>> : N extends `${infer _Before} from (${infer _Body}) ${infer After}` ? DerivedFirstWord<Trim<After>> : never;
23
+ export type ReportScalePseudoSource = "lateral" | "max" | "min" | "avg" | "sum" | "count" | "extract" | "json_array_elements" | "jsonb_array_elements" | "unnest" | "generate_series";
24
+ export type LightSelectTablesAndList<N extends string, S extends DatabaseSchema> = TablesInQuery<N, S> extends infer Tables extends string ? AliasesInQuery<N, S> extends infer Aliases extends string ? AllTablesValidFor<NonCteTables<N, S, Tables>, S> extends true ? ColumnsValidInSelectOrReturningFor<N, S, Tables, Aliases> extends true ? DistinctOnColsValid<N, S, Tables, Aliases> extends true ? true : false : false : false : false : false;
25
+ export type ValidateSQLNormalizedCore<N extends string, S extends DatabaseSchema> = TablesInQuery<N, S> extends infer Tables extends string ? AliasesInQuery<N, S> extends infer Aliases extends string ? TokenizeLoose<RefScanSegment<N>> extends infer LooseTokens extends string[] ? AllTablesValidFor<NonCteTables<N, S, Tables>, S> extends true ? AllColumnsValidFor<N, S, Tables, Aliases, LooseTokens> extends true ? NoAliasShadowedQualifiers<N, S, Tables, Aliases> extends true ? OuterScopeUnqualifiedValid<N, S> extends true ? WindowFilterColsValid<N, S, Tables, Aliases> extends true ? JoinUsingColsValid<N, S, Tables> extends true ? DistinctOnColsValid<N, S, Tables, Aliases> extends true ? true : false : false : false : false : false : false : false : false : false : false;
26
+ export type IsHighComplexityUpdate<N extends string> = QueryKind<N> extends "update" ? N extends `${string} case ${string} select ${string}` ? true : N extends `${string} case ${string} exists (${string}` ? true : false : false;
27
+ export type IsHighComplexitySelect<N extends string> = QueryKind<N> extends "select" ? ExceedsLengthBudget<N> extends true ? true : N extends `${string} offset ${string}` ? true : N extends `${string} snapshot_date ${string}` ? true : N extends `${string} join ${string} join ${string} join ${string} join ${string}` ? N extends `${string} order by ${string}` ? true : N extends `${string} group by ${string}` ? true : N extends `${string} limit ${string}` ? true : false : false : false;
28
+ export type QueryKind<N extends string> = StartsWith<N, "select "> extends true ? "select" : StartsWith<N, "with "> extends true ? "select" : StartsWith<N, "insert "> extends true ? "insert" : StartsWith<N, "update "> extends true ? "update" : StartsWith<N, "delete "> extends true ? "delete" : "unknown";
29
+ export type HasReturning<N extends string> = QueryKind<N> extends "select" ? false : HasReturningQuoteAware<N>;
30
+ export type HasReturningQuoteAware<S extends string, InString extends boolean = false, InDString extends boolean = false, Steps extends any[] = []> = string extends S ? false : Steps["length"] extends 1200 ? S extends `${string} returning ${string}` ? true : false : InString extends true ? S extends `${infer C}${infer Rest}` ? HasReturningQuoteAware<Rest, C extends "'" ? false : true, InDString, [any, ...Steps]> : false : InDString extends true ? S extends `${infer C}${infer Rest}` ? HasReturningQuoteAware<Rest, InString, C extends `"` ? false : true, [any, ...Steps]> : false : S extends ` returning ${string}` ? true : S extends `${infer C}${infer Rest}` ? HasReturningQuoteAware<Rest, C extends "'" ? true : false, C extends `"` ? true : false, [any, ...Steps]> : false;
31
+ //# sourceMappingURL=dispatch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dispatch.d.ts","sourceRoot":"","sources":["../../src/validation/dispatch.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=dispatch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dispatch.js","sourceRoot":"","sources":["../../src/validation/dispatch.ts"],"names":[],"mappings":""}
@@ -0,0 +1,16 @@
1
+ import type { AllTrue, And, IsUnion } from "../utils.js";
2
+ import type { CleanIdent, ExtractCallParenBodies, SplitCommaSimple, TokenizeLoose, Trim } from "../parsing.js";
3
+ import type { ColumnExists, DatabaseSchema } from "../schema.js";
4
+ import type { QualifiedColumnRefsValidFor, UnqualifiedColumnRefsValidFor } from "./validate-columns.js";
5
+ import type { QueryKind } from "./dispatch.js";
6
+ import type { TableKeyFromToken, TableKeyValid } from "../tables.js";
7
+ import type { TablesWithColumn } from "../columns.js";
8
+ export type JoinUsingColsValid<N extends string, S extends DatabaseSchema, Tables extends string> = QueryKind<N> extends "select" ? Lowercase<N> extends `${string} using (${string}` | `${string} using(${string}` ? `${ExtractCallParenBodies<N, " using (">} ${ExtractCallParenBodies<N, " using(">}` extends infer Seg extends string ? Trim<Seg> extends "" ? true : And<UsingColsInTwoTables<SplitCommaSimple<Seg>, Tables, S>, JoinUsingRightSideValid<N, S>, true, true, true> : true : true : true;
9
+ export type JoinUsingRightSideValid<S extends string, Sch extends DatabaseSchema, Steps extends any[] = []> = Steps["length"] extends 40 ? true : S extends `${infer _Head} join ${infer AfterJoin}` ? AfterJoin extends `${infer Src} using (${infer Body})${infer Rest}` ? Src extends `${string} join ${string}` ? JoinUsingRightSideValid<AfterJoin, Sch, [any, ...Steps]> : And<UsingColsOnRightTable<SplitCommaSimple<Body>, JoinSrcFirstWord<Src>, Sch>, JoinUsingRightSideValid<Rest, Sch, [any, ...Steps]>, true, true, true> : AfterJoin extends `${infer Src2} using(${infer Body2})${infer Rest2}` ? Src2 extends `${string} join ${string}` ? JoinUsingRightSideValid<AfterJoin, Sch, [any, ...Steps]> : And<UsingColsOnRightTable<SplitCommaSimple<Body2>, JoinSrcFirstWord<Src2>, Sch>, JoinUsingRightSideValid<Rest2, Sch, [any, ...Steps]>, true, true, true> : JoinUsingRightSideValid<AfterJoin, Sch, [any, ...Steps]> : true;
10
+ export type JoinSrcFirstWord<Src extends string> = Trim<Src> extends `${infer W} ${string}` ? W : Trim<Src>;
11
+ export type UsingColsOnRightTable<Cols extends string[], SrcWord extends string, S extends DatabaseSchema> = TableKeyFromToken<SrcWord, S> extends infer RK extends string ? TableKeyValid<RK, S> extends true ? AllTrue<Cols[number] extends infer C extends string ? CleanIdent<C> extends "" ? true : ColumnExists<RK, CleanIdent<C>, S> : true> : true : true;
12
+ export type UsingColsInTwoTables<Cols extends string[], Tables extends string, S extends DatabaseSchema> = AllTrue<Cols[number] extends infer C extends string ? CleanIdent<C> extends "" ? true : UsingColOnBothSides<CleanIdent<C>, Tables, S> : true>;
13
+ export type UsingColOnBothSides<Col extends string, Tables extends string, S extends DatabaseSchema> = TablesWithColumn<Tables, Col, S> extends infer Owners ? [Owners] extends [never] ? false : IsUnion<Owners> extends true ? true : false : false;
14
+ export type WindowFilterColsValid<N extends string, S extends DatabaseSchema, Tables extends string, Aliases extends string> = Lowercase<N> extends `${string} over (${string}` | `${string} over(${string}` | `${string} filter (${string}` | `${string} filter(${string}` | `${string} within group (${string}` | `${string} within group(${string}` ? `${ExtractCallParenBodies<N, " over (">} ${ExtractCallParenBodies<N, " over(">} ${ExtractCallParenBodies<N, " filter (">} ${ExtractCallParenBodies<N, " filter(">} ${ExtractCallParenBodies<N, " within group (">} ${ExtractCallParenBodies<N, " within group(">}` extends infer Seg extends string ? Trim<Seg> extends "" ? true : TokenizeLoose<Seg> extends infer Toks extends string[] ? And<QualifiedColumnRefsValidFor<N, S, Tables, Aliases, Toks>, UnqualifiedColumnRefsValidFor<N, S, Tables, Aliases, Toks, never>, true, true, true> : true : true : true;
15
+ export type DistinctOnColsValid<N extends string, S extends DatabaseSchema, Tables extends string, Aliases extends string> = QueryKind<N> extends "select" ? Lowercase<N> extends `${string} distinct on (${string}` | `${string} distinct on(${string}` ? `${ExtractCallParenBodies<N, " distinct on (">} ${ExtractCallParenBodies<N, " distinct on(">}` extends infer Seg extends string ? Trim<Seg> extends "" ? true : TokenizeLoose<Seg> extends infer Toks extends string[] ? And<QualifiedColumnRefsValidFor<N, S, Tables, Aliases, Toks>, UnqualifiedColumnRefsValidFor<N, S, Tables, Aliases, Toks, never>, true, true, true> : true : true : true : true;
16
+ //# sourceMappingURL=joins.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"joins.d.ts","sourceRoot":"","sources":["../../src/validation/joins.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=joins.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"joins.js","sourceRoot":"","sources":["../../src/validation/joins.ts"],"names":[],"mappings":""}
@@ -0,0 +1,67 @@
1
+ import type { AliasesInQuery, TablesInQuery } from "../tables.js";
2
+ import type { ApplyJoinNull, OuterCastTs, RefQualifier } from "../expressions.js";
3
+ import type { CleanIdent, ExtractAliasResult, ExtractFromClause, ExtractSelectList, SplitBalancedParen, SplitCommaSimple, SplitSelectList, Trim, TrimLeft } from "../parsing.js";
4
+ import type { DatabaseSchema } from "../schema.js";
5
+ import type { MergeRow, SelectReturnWith } from "./return-types.js";
6
+ import type { Simplify, UnionToIntersection } from "../utils.js";
7
+ export type DerivedTableMatch<N extends string> = Trim<ExtractFromClause<N>> extends `(${string}` ? SplitBalancedParen<Trim<ExtractFromClause<N>>> extends {
8
+ inner: infer Body extends string;
9
+ rest: infer Rest extends string;
10
+ } ? Trim<Body> extends `select ${string}` ? {
11
+ body: Trim<Body>;
12
+ alias: DerivedAliasName<Trim<Rest>>;
13
+ cols: DerivedColsList<Trim<Rest>>;
14
+ } : never : never : never;
15
+ export type DerivedAliasName<S extends string> = Trim<S> extends `as ${infer R}` ? DerivedFirstWord<Trim<R>> : DerivedFirstWord<Trim<S>>;
16
+ export type DerivedFirstWord<S extends string> = S extends `${infer W} ${string}` ? DerivedFirstWord<W> : S extends `${infer W}(${string}` ? CleanIdent<W> : CleanIdent<S>;
17
+ export type DerivedColsList<S extends string> = Trim<S> extends `as ${infer R}` ? DerivedColsAfterAlias<Trim<R>> : DerivedColsAfterAlias<Trim<S>>;
18
+ export type DerivedColsAfterAlias<S extends string> = S extends `${infer A}(${infer Cols})${string}` ? Trim<A> extends "" ? [] : AliasHasNoSpace<Trim<A>> extends true ? FilterDerivedCols<SplitCommaSimple<Cols>> : [] : [];
19
+ export type AliasHasNoSpace<S extends string> = S extends `${string} ${string}` ? false : true;
20
+ export type FilterDerivedCols<Cols extends string[], Acc extends string[] = []> = Cols extends [infer C extends string, ...infer Rest extends string[]] ? CleanIdent<C> extends "" ? FilterDerivedCols<Rest, Acc> : FilterDerivedCols<Rest, [...Acc, CleanIdent<C>]> : Acc;
21
+ export type DerivedSubRow<Body extends string, S extends DatabaseSchema> = TablesInQuery<Body, S> extends infer SubTables extends string ? AliasesInQuery<Body, S> extends infer SubAliases extends string ? SelectReturnWith<ExtractSelectList<Body>, SubTables, SubAliases, S> : {} : {};
22
+ export type DerivedRenamedRow<Body extends string, Cols extends string[], S extends DatabaseSchema> = DerivedSubRow<Body, S> extends infer BaseRow ? Cols extends [] ? BaseRow : RenamePartialRow<SplitSelectList<ExtractSelectList<Body>>, Cols, BaseRow> : {};
23
+ export type RenamePartialRow<BodyExprs extends string[], Cols extends string[], BaseRow> = Simplify<UnionToIntersection<{
24
+ [I in keyof BodyExprs]: BodyExprs[I] extends string ? {
25
+ [P in DerivedRenameKey<I, Cols, BodyExprs[I]> & string]: DerivedBodyColType<BodyExprs[I], BaseRow>;
26
+ } : {};
27
+ }[number]>>;
28
+ export type DerivedRenameKey<I, Cols extends string[], BodyExpr extends string> = I extends keyof Cols ? Cols[I] extends string ? Cols[I] : DerivedBodyColKey<BodyExpr> : DerivedBodyColKey<BodyExpr>;
29
+ export type DerivedBodyColKey<E extends string> = ExtractAliasResult<E> extends {
30
+ expr: infer Raw extends string;
31
+ alias: infer A extends string;
32
+ } ? [A] extends [never] ? CleanIdent<Raw> : A : CleanIdent<E>;
33
+ export type DerivedBodyColType<E extends string, BaseRow> = DerivedBodyColKey<E> extends infer K extends string ? K extends keyof BaseRow ? BaseRow[K] : unknown : unknown;
34
+ export type DerivedTableReturn<N extends string, S extends DatabaseSchema> = DerivedTableMatch<N> extends {
35
+ body: infer Body extends string;
36
+ alias: infer DAlias extends string;
37
+ cols: infer Cols extends string[];
38
+ } ? DerivedRenamedRow<Body, Cols, S> extends infer SubRow ? BuildDerivedReturn<SplitSelectList<ExtractSelectList<N>>, DAlias, SubRow> : {} : {};
39
+ export type BuildDerivedReturn<Exprs extends string[], DAlias extends string, SubRow, Acc = {}, Steps extends any[] = []> = Steps["length"] extends 100 ? Simplify<Acc> : Exprs extends [infer H extends string, ...infer Rest extends string[]] ? BuildDerivedReturn<Rest, DAlias, SubRow, MergeRow<Acc, DerivedExprToObject<H, DAlias, SubRow>>, [any, ...Steps]> : Simplify<Acc>;
40
+ export type DerivedExprToObject<E extends string, DAlias extends string, SubRow, Nullable extends string = never> = ExtractAliasResult<E> extends {
41
+ expr: infer RawExpr extends string;
42
+ alias: infer OutAlias;
43
+ } ? [OutAlias] extends [never] ? CleanIdent<RawExpr> extends "*" ? SubRow : CleanIdent<RawExpr> extends `${DAlias}.*` ? SubRow : DerivedColKey<RawExpr, DAlias> extends infer K extends string ? {
44
+ [P in K]: ApplyJoinNull<DerivedProjType<RawExpr, K, SubRow>, RawExpr, Nullable>;
45
+ } : Record<string, unknown> : OutAlias extends string ? {
46
+ [P in OutAlias]: ApplyJoinNull<DerivedProjType<RawExpr, DerivedColKey<RawExpr, DAlias>, SubRow>, RawExpr, Nullable>;
47
+ } : Record<string, unknown> : Record<string, unknown>;
48
+ export type DerivedColKey<RawExpr extends string, DAlias extends string> = CleanIdent<RawExpr> extends `${DAlias}.${infer Col}` ? Col : CleanIdent<RawExpr>;
49
+ export type DerivedProjType<RawExpr extends string, Col extends string, SubRow> = Col extends keyof SubRow ? SubRow[Col] : OuterCastTs<RawExpr>;
50
+ export type DerivedColType<Col extends string, SubRow> = Col extends keyof SubRow ? SubRow[Col] : unknown;
51
+ export type StripLeadingLateral<S extends string> = TrimLeft<S> extends `lateral ${infer R}` ? R : TrimLeft<S>;
52
+ export type JoinedDerivedBody<N extends string, Alias extends string, Steps extends any[] = []> = Steps["length"] extends 30 ? never : N extends `${infer _Before} join ${infer After}` ? StripLeadingLateral<After> extends infer Src extends string ? Trim<Src> extends `(${string}` ? SplitBalancedParen<Trim<Src>> extends {
53
+ inner: infer Body extends string;
54
+ rest: infer Rest extends string;
55
+ } ? Trim<Body> extends `select ${string}` ? DerivedAliasName<Trim<Rest>> extends Alias ? Trim<Body> : JoinedDerivedBody<After, Alias, [any, ...Steps]> : JoinedDerivedBody<After, Alias, [any, ...Steps]> : JoinedDerivedBody<After, Alias, [any, ...Steps]> : JoinedDerivedBody<After, Alias, [any, ...Steps]> : never : never;
56
+ export type JoinedDerivedNullable<N extends string, Alias extends string, Steps extends any[] = []> = Steps["length"] extends 30 ? never : N extends `${infer Before} join ${infer After}` ? StripLeadingLateral<After> extends infer Src extends string ? Trim<Src> extends `(${string}` ? SplitBalancedParen<Trim<Src>> extends {
57
+ inner: infer Body extends string;
58
+ rest: infer Rest extends string;
59
+ } ? Trim<Body> extends `select ${string}` ? DerivedAliasName<Trim<Rest>> extends Alias ? JoinModNullable<Before> extends true ? Alias : never : JoinedDerivedNullable<After, Alias, [any, ...Steps]> : JoinedDerivedNullable<After, Alias, [any, ...Steps]> : JoinedDerivedNullable<After, Alias, [any, ...Steps]> : JoinedDerivedNullable<After, Alias, [any, ...Steps]> : never : never;
60
+ export type JoinModNullable<Before extends string> = StripTrailingOuter<Lowercase<Trim<Before>>> extends `${string} left` | "left" | `${string} full` | "full" ? true : false;
61
+ export type StripTrailingOuter<S extends string> = Trim<S> extends `${infer H} outer` ? Trim<H> : Trim<S>;
62
+ export type JoinedDerivedReturn<N extends string, S extends DatabaseSchema, _Nullable extends string> = N extends `${string} join ${string}(${string}` ? BuildJoinedDerivedReturn<SplitSelectList<ExtractSelectList<N>>, N, S> : {};
63
+ export type BuildJoinedDerivedReturn<Exprs extends string[], N extends string, S extends DatabaseSchema, Acc = {}, Steps extends any[] = []> = Steps["length"] extends 50 ? Simplify<Acc> : Exprs extends [infer H extends string, ...infer Rest extends string[]] ? ExtractAliasResult<H> extends {
64
+ expr: infer RawExpr extends string;
65
+ alias: infer _OutAlias;
66
+ } ? RefQualifier<RawExpr> extends infer Q extends string ? [Q] extends [never] ? BuildJoinedDerivedReturn<Rest, N, S, Acc, [any, ...Steps]> : [JoinedDerivedBody<N, Q>] extends [infer Body extends string] ? [Body] extends [never] ? BuildJoinedDerivedReturn<Rest, N, S, Acc, [any, ...Steps]> : BuildJoinedDerivedReturn<Rest, N, S, MergeRow<Acc, DerivedExprToObject<H, Q, DerivedSubRow<Body, S>, JoinedDerivedNullable<N, Q>>>, [any, ...Steps]> : BuildJoinedDerivedReturn<Rest, N, S, Acc, [any, ...Steps]> : BuildJoinedDerivedReturn<Rest, N, S, Acc, [any, ...Steps]> : BuildJoinedDerivedReturn<Rest, N, S, Acc, [any, ...Steps]> : Simplify<Acc>;
67
+ //# sourceMappingURL=return-derived.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"return-derived.d.ts","sourceRoot":"","sources":["../../src/validation/return-derived.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ export {};
2
+ // Common-table expression (single CTE): `WITH [RECURSIVE] <name>[(<cols>)] AS
3
+ // (<body>) SELECT <outer> FROM <name> ...`. The previous result path leaked the
4
+ // INNER CTE select list (greedy `with ${string} select` match), dropping the
5
+ //# sourceMappingURL=return-derived.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"return-derived.js","sourceRoot":"","sources":["../../src/validation/return-derived.ts"],"names":[],"mappings":";AA0PA,8EAA8E;AAC9E,gFAAgF;AAChF,6EAA6E"}
@@ -0,0 +1,41 @@
1
+ import type { AliasesInQuery, NullableRelations, TablesInQuery } from "../tables.js";
2
+ import type { AllTrue, Simplify } from "../utils.js";
3
+ import type { CleanIdent, ExtractAlias, ExtractReturningList, ExtractSelectList, SplitSelectList, StripSubqueries } from "../parsing.js";
4
+ import type { ColumnExists, DatabaseSchema } from "../schema.js";
5
+ import type { CteOuterQuery, CteReturn, MultiCteReturn, SingleCteMatch, WithDmlOuter } from "./cte.js";
6
+ import type { DerivedTableMatch, DerivedTableReturn, JoinedDerivedReturn } from "./return-derived.js";
7
+ import type { ExprToObject } from "../expressions.js";
8
+ import type { HasReturning, HasReturningQuoteAware, QueryKind } from "./dispatch.js";
9
+ export type GetReturnTypeNormalized<N extends string, S extends DatabaseSchema> = TablesInQuery<N, S> extends infer Tables extends string ? AliasesInQuery<N, S> extends infer Aliases extends string ? [WithDmlOuter<N>] extends [never] ? HasReturning<N> extends true ? SelectReturnWith<ExtractReturningList<N>, Tables, Aliases, S> : QueryKind<N> extends "select" ? [SingleCteMatch<N>] extends [never] ? [DerivedTableMatch<N>] extends [never] ? OuterSelectReturn<N, Tables, Aliases, S> : DerivedTableReturn<N, S> : CteReturn<N, S> : number : WithDmlReturn<N, Tables, Aliases, S> : number : number;
10
+ export type OuterSelectReturn<N extends string, Tables extends string, Aliases extends string, S extends DatabaseSchema> = N extends `with ${string}` ? CteOuterQuery<N> extends infer Outer extends string ? Outer extends `${string} join ${string}` ? SelectReturnWith<ExtractSelectList<N>, Tables, Aliases, S, NullableRelations<N, S>> : MultiCteReturn<Outer> : SelectReturnWith<ExtractSelectList<N>, Tables, Aliases, S, NullableRelations<N, S>> : StripSubqueries<N> extends infer Outer extends string ? TablesInQuery<Outer, S> extends infer OT extends string ? AliasesInQuery<Outer, S> extends infer OA extends string ? WithJoinedDerived<N, S, SelectReturnWith<ExtractSelectList<N>, OT, OA, S, NullableRelations<N, S>>> : WithJoinedDerived<N, S, SelectReturnWith<ExtractSelectList<N>, Tables, Aliases, S, NullableRelations<N, S>>> : WithJoinedDerived<N, S, SelectReturnWith<ExtractSelectList<N>, Tables, Aliases, S, NullableRelations<N, S>>> : WithJoinedDerived<N, S, SelectReturnWith<ExtractSelectList<N>, Tables, Aliases, S, NullableRelations<N, S>>>;
11
+ export type WithJoinedDerived<N extends string, S extends DatabaseSchema, Row> = Simplify<MergeRow<Row, JoinedDerivedReturn<N, S, NullableRelations<N, S>>>>;
12
+ export type WithDmlReturn<N extends string, Tables extends string, Aliases extends string, S extends DatabaseSchema> = WithDmlOuter<N> extends infer Outer extends string ? HasReturningQuoteAware<Outer> extends true ? SelectReturnWith<ExtractReturningList<Outer>, Tables, Aliases, S> : number : number;
13
+ export type SelectReturn<SelectList extends string, N extends string, S extends DatabaseSchema> = TablesInQuery<N, S> extends infer Tables extends string ? AliasesInQuery<N, S> extends infer Aliases extends string ? SelectReturnWith<SelectList, Tables, Aliases, S> : unknown : unknown;
14
+ export type SelectReturnWith<SelectList extends string, Tables extends string, Aliases extends string, S extends DatabaseSchema, Nullable extends string = never> = BuildSelectReturn<SplitSelectList<SelectList>, Tables, Aliases, S, Nullable>;
15
+ export type BuildSelectReturn<Exprs extends string[], Tables extends string, Aliases extends string, S extends DatabaseSchema, Nullable extends string = never> = MergeExprs<Exprs, Tables, Aliases, S, Nullable>;
16
+ export type MergeExprs<Exprs extends string[], Tables extends string, Aliases extends string, S extends DatabaseSchema, Nullable extends string = never> = Simplify<MergeAll<ColObjects<Exprs, Tables, Aliases, S, Nullable>>>;
17
+ type ColObjects<Exprs extends string[], Tables extends string, Aliases extends string, S extends DatabaseSchema, Nullable extends string, Acc extends any[] = []> = Acc["length"] extends 100 ? Acc : Exprs extends [infer H extends string, ...infer Rest extends string[]] ? ColObjects<Rest, Tables, Aliases, S, Nullable, [...Acc, ExprToObject<H, Tables, Aliases, S, Nullable>]> : Acc;
18
+ type PairMerge<T extends any[]> = T extends [infer A, infer B, ...infer Rest extends any[]] ? [MergeRowProj<A, B>, ...PairMerge<Rest>] : T;
19
+ type MergeAll<T extends any[]> = T extends [] ? {} : T extends [infer Only] ? MergeRowProj<{}, Only> : MergeAll<PairMerge<T>>;
20
+ export type MergeRow<Acc, Next> = [
21
+ Next
22
+ ] extends [never] ? Acc : [Acc] extends [never] ? Next : Omit<Acc, keyof Next> & Next;
23
+ type IsUnknown<T> = [T] extends [never] ? false : [unknown] extends [T] ? true : false;
24
+ type PreferInformative<A, B> = IsUnknown<A> extends true ? B : IsUnknown<B> extends true ? A : [NonNullable<A>] extends [NonNullable<B>] ? ([NonNullable<B>] extends [NonNullable<A>] ? B : A) : B;
25
+ export type MergeRowProj<Acc, Next> = [
26
+ Next
27
+ ] extends [never] ? Acc : [Acc] extends [never] ? Next : {
28
+ [K in keyof Acc | keyof Next]: K extends keyof Acc ? K extends keyof Next ? PreferInformative<Acc[K], Next[K]> : Acc[K] : K extends keyof Next ? Next[K] : never;
29
+ };
30
+ export type SelectAliasesInQuery<N extends string> = QueryKind<N> extends "select" ? HasReturning<N> extends true ? SelectAliases<SplitSelectList<ExtractReturningList<N>>> : SelectAliases<SplitSelectList<ExtractSelectList<N>>> : never;
31
+ export type SelectAliasSet<N extends string> = NeedsSelectAliasResolution<N> extends true ? SelectAliasesInQuery<N> : never;
32
+ export type NeedsSelectAliasResolution<N extends string> = N extends `${string} order by ${infer OrderExpr}` ? OrderExpr extends `${string}.${string}` ? false : true : false;
33
+ export type RefScanSegment<N extends string> = QueryKind<N> extends "select" ? N extends `${string} from ${infer Rest}` ? `from ${Rest}` : N : N;
34
+ export type RefScanBeforeOrderBy<N extends string> = RefScanSegment<N> extends infer Seg extends string ? Seg extends `${infer Before} order by ${string}` ? Before : Seg : N;
35
+ export type RefScanOrderBy<N extends string> = RefScanSegment<N> extends infer Seg extends string ? Seg extends `${string} order by ${infer After}` ? `order by ${After}` : "" : "";
36
+ export type SelectAliases<Exprs extends string[], Acc extends string = never, Steps extends any[] = []> = Steps["length"] extends 140 ? Acc : Exprs extends [infer H extends string, ...infer Rest extends string[]] ? ExtractAlias<H> extends {
37
+ alias: infer Alias;
38
+ } ? Alias extends string ? SelectAliases<Rest, Acc | Alias, [any, ...Steps]> : SelectAliases<Rest, Acc, [any, ...Steps]> : SelectAliases<Rest, Acc, [any, ...Steps]> : Acc;
39
+ export type ColumnsExistInTable<Cols extends string[], TableKey extends string, S extends DatabaseSchema> = AllTrue<Cols[number] extends infer C ? (C extends string ? ColumnExists<TableKey, CleanIdent<C>, S> : true) : true>;
40
+ export {};
41
+ //# sourceMappingURL=return-types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"return-types.d.ts","sourceRoot":"","sources":["../../src/validation/return-types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=return-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"return-types.js","sourceRoot":"","sources":["../../src/validation/return-types.ts"],"names":[],"mappings":""}