@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,319 @@
1
+ /** A non-select clause fragment (where/join/group/having/order/cte). */
2
+ export interface Frag {
3
+ readonly id: string;
4
+ readonly text: string;
5
+ }
6
+ /** A select fragment: raw rendered column-list text + conditional flag. */
7
+ export interface SelFrag {
8
+ readonly id: string;
9
+ readonly text: string;
10
+ readonly cond: boolean;
11
+ }
12
+ /** Lean type-level fragment tag: ordered fragment lists per clause. */
13
+ export interface SqlTag {
14
+ readonly ctes: readonly Frag[];
15
+ readonly selects: readonly SelFrag[];
16
+ readonly from: string | null;
17
+ readonly joins: readonly Frag[];
18
+ readonly wheres: readonly Frag[];
19
+ readonly groupBys: readonly Frag[];
20
+ readonly havings: readonly Frag[];
21
+ readonly orderBys: readonly Frag[];
22
+ readonly limit: number | null;
23
+ readonly offset: number | null;
24
+ readonly union: string | null;
25
+ }
26
+ /** Upper bound for "any builder" (replaces old AnyBuilderSqlTag/AnyBuilderStateTag). */
27
+ export type AnySqlTag = SqlTag;
28
+ export type EmptySqlTag = {
29
+ readonly ctes: readonly [];
30
+ readonly selects: readonly [];
31
+ readonly from: null;
32
+ readonly joins: readonly [];
33
+ readonly wheres: readonly [];
34
+ readonly groupBys: readonly [];
35
+ readonly havings: readonly [];
36
+ readonly orderBys: readonly [];
37
+ readonly limit: null;
38
+ readonly offset: null;
39
+ readonly union: null;
40
+ };
41
+ type HasId<List extends readonly {
42
+ id: string;
43
+ }[], Id extends string> = List extends readonly [infer H extends {
44
+ id: string;
45
+ text: string;
46
+ }, ...infer R extends readonly {
47
+ id: string;
48
+ text: string;
49
+ }[]] ? H["id"] extends Id ? true : HasId<R, Id> : false;
50
+ type ReplaceById<List extends readonly {
51
+ id: string;
52
+ }[], Id extends string, Item> = List extends readonly [infer H extends {
53
+ id: string;
54
+ text: string;
55
+ }, ...infer R extends readonly {
56
+ id: string;
57
+ text: string;
58
+ }[]] ? H["id"] extends Id ? readonly [Item, ...R] : readonly [H, ...ReplaceById<R, Id, Item>] : readonly [];
59
+ type UpsertById<List extends readonly {
60
+ id: string;
61
+ }[], Id extends string, Item extends {
62
+ id: string;
63
+ }> = HasId<List, Id> extends true ? ReplaceById<List, Id, Item> : readonly [...List, Item];
64
+ type FilterOutId<List extends readonly {
65
+ id: string;
66
+ }[], Id extends string> = List extends readonly [infer H extends {
67
+ id: string;
68
+ text: string;
69
+ }, ...infer R extends readonly {
70
+ id: string;
71
+ text: string;
72
+ }[]] ? H["id"] extends Id ? FilterOutId<R, Id> : readonly [H, ...FilterOutId<R, Id>] : readonly [];
73
+ export type AutoId<Prefix extends string, List extends readonly unknown[]> = `${Prefix}_${List["length"] & number}`;
74
+ export type ResolveId<Provided extends string | undefined, Prefix extends string, List extends readonly unknown[]> = Provided extends string ? Provided : AutoId<Prefix, List>;
75
+ export type WithSelect<Sql extends SqlTag, Text extends string, Id extends string, Cond extends boolean> = {
76
+ readonly ctes: Sql["ctes"];
77
+ readonly selects: UpsertById<Sql["selects"], Id, {
78
+ id: Id;
79
+ text: Text;
80
+ cond: Cond;
81
+ }>;
82
+ readonly from: Sql["from"];
83
+ readonly joins: Sql["joins"];
84
+ readonly wheres: Sql["wheres"];
85
+ readonly groupBys: Sql["groupBys"];
86
+ readonly havings: Sql["havings"];
87
+ readonly orderBys: Sql["orderBys"];
88
+ readonly limit: Sql["limit"];
89
+ readonly offset: Sql["offset"];
90
+ readonly union: Sql["union"];
91
+ };
92
+ export type WithoutSelect<Sql extends SqlTag, Id extends string> = {
93
+ readonly ctes: Sql["ctes"];
94
+ readonly selects: FilterOutId<Sql["selects"], Id>;
95
+ readonly from: Sql["from"];
96
+ readonly joins: Sql["joins"];
97
+ readonly wheres: Sql["wheres"];
98
+ readonly groupBys: Sql["groupBys"];
99
+ readonly havings: Sql["havings"];
100
+ readonly orderBys: Sql["orderBys"];
101
+ readonly limit: Sql["limit"];
102
+ readonly offset: Sql["offset"];
103
+ readonly union: Sql["union"];
104
+ };
105
+ export type WithFrom<Sql extends SqlTag, Text extends string> = {
106
+ readonly ctes: Sql["ctes"];
107
+ readonly selects: Sql["selects"];
108
+ readonly from: Text;
109
+ readonly joins: Sql["joins"];
110
+ readonly wheres: Sql["wheres"];
111
+ readonly groupBys: Sql["groupBys"];
112
+ readonly havings: Sql["havings"];
113
+ readonly orderBys: Sql["orderBys"];
114
+ readonly limit: Sql["limit"];
115
+ readonly offset: Sql["offset"];
116
+ readonly union: Sql["union"];
117
+ };
118
+ export type WithJoin<Sql extends SqlTag, Text extends string, Id extends string> = {
119
+ readonly ctes: Sql["ctes"];
120
+ readonly selects: Sql["selects"];
121
+ readonly from: Sql["from"];
122
+ readonly joins: UpsertById<Sql["joins"], Id, {
123
+ id: Id;
124
+ text: Text;
125
+ }>;
126
+ readonly wheres: Sql["wheres"];
127
+ readonly groupBys: Sql["groupBys"];
128
+ readonly havings: Sql["havings"];
129
+ readonly orderBys: Sql["orderBys"];
130
+ readonly limit: Sql["limit"];
131
+ readonly offset: Sql["offset"];
132
+ readonly union: Sql["union"];
133
+ };
134
+ export type WithoutJoin<Sql extends SqlTag, Id extends string> = {
135
+ readonly ctes: Sql["ctes"];
136
+ readonly selects: Sql["selects"];
137
+ readonly from: Sql["from"];
138
+ readonly joins: FilterOutId<Sql["joins"], Id>;
139
+ readonly wheres: Sql["wheres"];
140
+ readonly groupBys: Sql["groupBys"];
141
+ readonly havings: Sql["havings"];
142
+ readonly orderBys: Sql["orderBys"];
143
+ readonly limit: Sql["limit"];
144
+ readonly offset: Sql["offset"];
145
+ readonly union: Sql["union"];
146
+ };
147
+ export type WithoutWhere<Sql extends SqlTag, Id extends string> = {
148
+ readonly ctes: Sql["ctes"];
149
+ readonly selects: Sql["selects"];
150
+ readonly from: Sql["from"];
151
+ readonly joins: Sql["joins"];
152
+ readonly wheres: FilterOutId<Sql["wheres"], Id>;
153
+ readonly groupBys: Sql["groupBys"];
154
+ readonly havings: Sql["havings"];
155
+ readonly orderBys: Sql["orderBys"];
156
+ readonly limit: Sql["limit"];
157
+ readonly offset: Sql["offset"];
158
+ readonly union: Sql["union"];
159
+ };
160
+ export type WithWhere<Sql extends SqlTag, Text extends string, Id extends string> = {
161
+ readonly ctes: Sql["ctes"];
162
+ readonly selects: Sql["selects"];
163
+ readonly from: Sql["from"];
164
+ readonly joins: Sql["joins"];
165
+ readonly wheres: UpsertById<Sql["wheres"], Id, {
166
+ id: Id;
167
+ text: Text;
168
+ }>;
169
+ readonly groupBys: Sql["groupBys"];
170
+ readonly havings: Sql["havings"];
171
+ readonly orderBys: Sql["orderBys"];
172
+ readonly limit: Sql["limit"];
173
+ readonly offset: Sql["offset"];
174
+ readonly union: Sql["union"];
175
+ };
176
+ export type WithGroupBy<Sql extends SqlTag, Text extends string, Id extends string> = {
177
+ readonly ctes: Sql["ctes"];
178
+ readonly selects: Sql["selects"];
179
+ readonly from: Sql["from"];
180
+ readonly joins: Sql["joins"];
181
+ readonly wheres: Sql["wheres"];
182
+ readonly groupBys: UpsertById<Sql["groupBys"], Id, {
183
+ id: Id;
184
+ text: Text;
185
+ }>;
186
+ readonly havings: Sql["havings"];
187
+ readonly orderBys: Sql["orderBys"];
188
+ readonly limit: Sql["limit"];
189
+ readonly offset: Sql["offset"];
190
+ readonly union: Sql["union"];
191
+ };
192
+ export type WithoutGroupBy<Sql extends SqlTag, Id extends string> = {
193
+ readonly ctes: Sql["ctes"];
194
+ readonly selects: Sql["selects"];
195
+ readonly from: Sql["from"];
196
+ readonly joins: Sql["joins"];
197
+ readonly wheres: Sql["wheres"];
198
+ readonly groupBys: FilterOutId<Sql["groupBys"], Id>;
199
+ readonly havings: Sql["havings"];
200
+ readonly orderBys: Sql["orderBys"];
201
+ readonly limit: Sql["limit"];
202
+ readonly offset: Sql["offset"];
203
+ readonly union: Sql["union"];
204
+ };
205
+ export type WithHaving<Sql extends SqlTag, Text extends string, Id extends string> = {
206
+ readonly ctes: Sql["ctes"];
207
+ readonly selects: Sql["selects"];
208
+ readonly from: Sql["from"];
209
+ readonly joins: Sql["joins"];
210
+ readonly wheres: Sql["wheres"];
211
+ readonly groupBys: Sql["groupBys"];
212
+ readonly havings: UpsertById<Sql["havings"], Id, {
213
+ id: Id;
214
+ text: Text;
215
+ }>;
216
+ readonly orderBys: Sql["orderBys"];
217
+ readonly limit: Sql["limit"];
218
+ readonly offset: Sql["offset"];
219
+ readonly union: Sql["union"];
220
+ };
221
+ export type WithoutHaving<Sql extends SqlTag, Id extends string> = {
222
+ readonly ctes: Sql["ctes"];
223
+ readonly selects: Sql["selects"];
224
+ readonly from: Sql["from"];
225
+ readonly joins: Sql["joins"];
226
+ readonly wheres: Sql["wheres"];
227
+ readonly groupBys: Sql["groupBys"];
228
+ readonly havings: FilterOutId<Sql["havings"], Id>;
229
+ readonly orderBys: Sql["orderBys"];
230
+ readonly limit: Sql["limit"];
231
+ readonly offset: Sql["offset"];
232
+ readonly union: Sql["union"];
233
+ };
234
+ export type WithOrderBy<Sql extends SqlTag, Text extends string, Id extends string> = {
235
+ readonly ctes: Sql["ctes"];
236
+ readonly selects: Sql["selects"];
237
+ readonly from: Sql["from"];
238
+ readonly joins: Sql["joins"];
239
+ readonly wheres: Sql["wheres"];
240
+ readonly groupBys: Sql["groupBys"];
241
+ readonly havings: Sql["havings"];
242
+ readonly orderBys: UpsertById<Sql["orderBys"], Id, {
243
+ id: Id;
244
+ text: Text;
245
+ }>;
246
+ readonly limit: Sql["limit"];
247
+ readonly offset: Sql["offset"];
248
+ readonly union: Sql["union"];
249
+ };
250
+ export type WithoutOrderBy<Sql extends SqlTag, Id extends string> = {
251
+ readonly ctes: Sql["ctes"];
252
+ readonly selects: Sql["selects"];
253
+ readonly from: Sql["from"];
254
+ readonly joins: Sql["joins"];
255
+ readonly wheres: Sql["wheres"];
256
+ readonly groupBys: Sql["groupBys"];
257
+ readonly havings: Sql["havings"];
258
+ readonly orderBys: FilterOutId<Sql["orderBys"], Id>;
259
+ readonly limit: Sql["limit"];
260
+ readonly offset: Sql["offset"];
261
+ readonly union: Sql["union"];
262
+ };
263
+ export type WithLimit<Sql extends SqlTag, L extends number> = {
264
+ readonly ctes: Sql["ctes"];
265
+ readonly selects: Sql["selects"];
266
+ readonly from: Sql["from"];
267
+ readonly joins: Sql["joins"];
268
+ readonly wheres: Sql["wheres"];
269
+ readonly groupBys: Sql["groupBys"];
270
+ readonly havings: Sql["havings"];
271
+ readonly orderBys: Sql["orderBys"];
272
+ readonly limit: L;
273
+ readonly offset: Sql["offset"];
274
+ readonly union: Sql["union"];
275
+ };
276
+ export type WithOffset<Sql extends SqlTag, O extends number> = {
277
+ readonly ctes: Sql["ctes"];
278
+ readonly selects: Sql["selects"];
279
+ readonly from: Sql["from"];
280
+ readonly joins: Sql["joins"];
281
+ readonly wheres: Sql["wheres"];
282
+ readonly groupBys: Sql["groupBys"];
283
+ readonly havings: Sql["havings"];
284
+ readonly orderBys: Sql["orderBys"];
285
+ readonly limit: Sql["limit"];
286
+ readonly offset: O;
287
+ readonly union: Sql["union"];
288
+ };
289
+ export type BuildMode = "max" | "req" | "scope";
290
+ type JoinTexts<List extends readonly {
291
+ text: string;
292
+ }[], Sep extends string, Acc extends string = ""> = List extends readonly [infer H extends {
293
+ text: string;
294
+ }, ...infer R extends readonly {
295
+ text: string;
296
+ }[]] ? JoinTexts<R, Sep, Acc extends "" ? H["text"] : `${Acc}${Sep}${H["text"]}`> : Acc;
297
+ type SelectsForMode<List extends readonly SelFrag[], Mode extends BuildMode> = Mode extends "req" ? FilterUncond<List> : List;
298
+ type FilterUncond<List extends readonly SelFrag[]> = List extends readonly [infer H extends SelFrag, ...infer R extends readonly SelFrag[]] ? H["cond"] extends false ? readonly [H, ...FilterUncond<R>] : FilterUncond<R> : readonly [];
299
+ type SelectClause<Sql extends SqlTag, Mode extends BuildMode> = Mode extends "scope" ? "SELECT *" : SelectsForMode<Sql["selects"], Mode> extends infer Sel extends readonly SelFrag[] ? Sel extends readonly [] ? "SELECT *" : `SELECT ${JoinTexts<Sel, ", ">}` : "SELECT *";
300
+ type Clause<Kw extends string, List extends readonly {
301
+ text: string;
302
+ }[], Sep extends string> = List extends readonly [] ? "" : ` ${Kw} ${JoinTexts<List, Sep>}`;
303
+ type FromClause<From extends string | null> = From extends null ? "" : ` FROM ${From & string}`;
304
+ type JoinClause<List extends readonly Frag[]> = List extends readonly [] ? "" : ` ${JoinTexts<List, " ">}`;
305
+ type WithClause<List extends readonly Frag[]> = List extends readonly [] ? "" : `WITH ${JoinTexts<List, ", ">} `;
306
+ type LimitClause<L extends number | null> = L extends number ? ` LIMIT ${L}` : "";
307
+ type OffsetClause<O extends number | null> = O extends number ? ` OFFSET ${O}` : "";
308
+ type UnionClause<U extends string | null> = U extends null ? "" : ` ${U & string}`;
309
+ type BuildSQLRaw<Sql extends SqlTag, Mode extends BuildMode> = `${WithClause<Sql["ctes"]>}${SelectClause<Sql, Mode>}${FromClause<Sql["from"]>}${JoinClause<Sql["joins"]>}${Clause<"WHERE", Sql["wheres"], " AND ">}${Clause<"GROUP BY", Sql["groupBys"], ", ">}${Clause<"HAVING", Sql["havings"], " AND ">}${Clause<"ORDER BY", Sql["orderBys"], ", ">}${LimitClause<Sql["limit"]>}${OffsetClause<Sql["offset"]>}${UnionClause<Sql["union"]>}`;
310
+ type AllTexts<Sql extends SqlTag> = (Sql["from"] extends null ? never : Sql["from"]) | Sql["selects"][number]["text"] | Sql["joins"][number]["text"] | Sql["wheres"][number]["text"] | Sql["groupBys"][number]["text"] | Sql["havings"][number]["text"] | Sql["orderBys"][number]["text"] | Sql["ctes"][number]["text"] | (Sql["union"] extends null ? never : Sql["union"]);
311
+ /**
312
+ * Assemble the tag into a literal SQL string. Widens to `string` if any
313
+ * participating fragment text is non-literal (e.g. from(dynamic)) — a template
314
+ * with a `string` placeholder (`\`SELECT * FROM ${string}\``) is NOT itself
315
+ * `string`, so we detect non-literal inputs up front and short-circuit.
316
+ */
317
+ export type BuildSQL<Sql extends SqlTag, Mode extends BuildMode> = string extends AllTexts<Sql> ? string : BuildSQLRaw<Sql, Mode>;
318
+ export {};
319
+ //# sourceMappingURL=sql-tag.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sql-tag.d.ts","sourceRoot":"","sources":["../../src/builder/sql-tag.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ // src/builder/sql-tag.ts
2
+ export {};
3
+ //# sourceMappingURL=sql-tag.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sql-tag.js","sourceRoot":"","sources":["../../src/builder/sql-tag.ts"],"names":[],"mappings":"AAAA,yBAAyB"}
@@ -0,0 +1,17 @@
1
+ import type { DatabaseSchema } from "../schema.js";
2
+ import type { ExtractParams, ExtractReturning } from "./extract-params.js";
3
+ import { type DriverParamValue } from "./scanner.js";
4
+ /** A reusable, typed raw-SQL query object. */
5
+ export interface TypedSql<Q extends string, S extends DatabaseSchema> {
6
+ withParams(params: ExtractParams<Q, S>): BoundSql<Q, S>;
7
+ toString(): string;
8
+ }
9
+ export interface BoundSql<Q extends string, S extends DatabaseSchema> {
10
+ toString(): string;
11
+ getParams(): ReadonlyArray<DriverParamValue>;
12
+ /** Phantom carrier for the RETURNING row type (read by createMutateFn). */
13
+ readonly __returning?: ExtractReturning<Q, S>;
14
+ }
15
+ /** Factory binding the schema once; covers INSERT/UPDATE/DELETE in Phase 1. */
16
+ export declare function createSql<S extends DatabaseSchema>(): <Q extends string>(query: Q) => TypedSql<Q, S>;
17
+ //# sourceMappingURL=sql.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sql.d.ts","sourceRoot":"","sources":["../../src/builder/sql.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,KAAK,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAC3E,OAAO,EAC+C,KAAK,gBAAgB,EAC1E,MAAM,cAAc,CAAC;AAEtB,8CAA8C;AAC9C,MAAM,WAAW,QAAQ,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,cAAc;IAChE,UAAU,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACxD,QAAQ,IAAI,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,QAAQ,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,cAAc;IAChE,QAAQ,IAAI,MAAM,CAAC;IACnB,SAAS,IAAI,aAAa,CAAC,gBAAgB,CAAC,CAAC;IAC7C,2EAA2E;IAC3E,QAAQ,CAAC,WAAW,CAAC,EAAE,gBAAgB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;CACjD;AA2BD,+EAA+E;AAC/E,wBAAgB,SAAS,CAAC,CAAC,SAAS,cAAc,MAC1B,CAAC,SAAS,MAAM,EAAE,OAAO,CAAC,KAAG,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAGlE"}
@@ -0,0 +1,36 @@
1
+ import { assertAllProvided, collectScanned, expandScanned, } from "./scanner.js";
2
+ class BoundSqlImpl {
3
+ raw;
4
+ params;
5
+ constructor(raw, params) {
6
+ this.raw = raw;
7
+ this.params = params;
8
+ }
9
+ toString() {
10
+ assertAllProvided(this.raw, this.params);
11
+ return expandScanned(this.raw, this.params);
12
+ }
13
+ getParams() {
14
+ assertAllProvided(this.raw, this.params);
15
+ return collectScanned(this.raw, this.params);
16
+ }
17
+ }
18
+ class TypedSqlImpl {
19
+ raw;
20
+ constructor(raw) {
21
+ this.raw = raw;
22
+ }
23
+ withParams(params) {
24
+ return new BoundSqlImpl(this.raw, params);
25
+ }
26
+ toString() {
27
+ return this.raw;
28
+ }
29
+ }
30
+ /** Factory binding the schema once; covers INSERT/UPDATE/DELETE in Phase 1. */
31
+ export function createSql() {
32
+ return function sql(query) {
33
+ return new TypedSqlImpl(query);
34
+ };
35
+ }
36
+ //# sourceMappingURL=sql.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sql.js","sourceRoot":"","sources":["../../src/builder/sql.ts"],"names":[],"mappings":"AAGA,OAAO,EACH,iBAAiB,EAAE,cAAc,EAAE,aAAa,GACnD,MAAM,cAAc,CAAC;AAetB,MAAM,YAAY;IAEO;IACA;IAFrB,YACqB,GAAW,EACX,MAAwC;QADxC,QAAG,GAAH,GAAG,CAAQ;QACX,WAAM,GAAN,MAAM,CAAkC;IAC1D,CAAC;IACJ,QAAQ;QACJ,iBAAiB,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QACzC,OAAO,aAAa,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IAChD,CAAC;IACD,SAAS;QACL,iBAAiB,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QACzC,OAAO,cAAc,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IACjD,CAAC;CACJ;AAED,MAAM,YAAY;IACe;IAA7B,YAA6B,GAAW;QAAX,QAAG,GAAH,GAAG,CAAQ;IAAG,CAAC;IAC5C,UAAU,CAAC,MAAwC;QAC/C,OAAO,IAAI,YAAY,CAAO,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IACpD,CAAC;IACD,QAAQ;QACJ,OAAO,IAAI,CAAC,GAAG,CAAC;IACpB,CAAC;CACJ;AAED,+EAA+E;AAC/E,MAAM,UAAU,SAAS;IACrB,OAAO,SAAS,GAAG,CAAmB,KAAQ;QAC1C,OAAO,IAAI,YAAY,CAAO,KAAK,CAA8B,CAAC;IACtE,CAAC,CAAC;AACN,CAAC"}
@@ -0,0 +1,53 @@
1
+ import type { QueryParamInput, QueryParamValue } from "./params.js";
2
+ /**
3
+ * Immutable runtime state for the SELECT builder. Standalone — carries only
4
+ * the fields consumed by assembleSelectSQL / getParams. Fragments are keyed
5
+ * by id; join ORDER is preserved by the `joins` array.
6
+ */
7
+ export interface RuntimeSelectState {
8
+ /** Raw SELECT fragments by id; each is the array of column strings. */
9
+ readonly selectSql: {
10
+ readonly [id: string]: string[];
11
+ };
12
+ /** Raw FROM fragment (if present). */
13
+ readonly fromSql?: string;
14
+ /** Raw JOIN fragments by id. */
15
+ readonly joinSql: {
16
+ readonly [id: string]: string;
17
+ };
18
+ /** Join ordering — only the id is needed for assembly. */
19
+ readonly joins: ReadonlyArray<{
20
+ readonly id: string;
21
+ }>;
22
+ /** Raw WHERE fragments by id (joined with AND). */
23
+ readonly whereSql: {
24
+ readonly [id: string]: string;
25
+ };
26
+ /** Raw GROUP BY fragments by id (joined with ", "). */
27
+ readonly groupBySql: {
28
+ readonly [id: string]: string;
29
+ };
30
+ /** Raw HAVING fragments by id (joined with AND). */
31
+ readonly havingSql: {
32
+ readonly [id: string]: string;
33
+ };
34
+ /** Raw ORDER BY fragments by id (joined with ", "). */
35
+ readonly orderBySql: {
36
+ readonly [id: string]: string;
37
+ };
38
+ /** Raw CTE fragments by id. */
39
+ readonly cteSql: {
40
+ readonly [id: string]: string;
41
+ };
42
+ /** Raw UNION fragment (if any). */
43
+ readonly unionSql?: string;
44
+ readonly distinct: boolean;
45
+ readonly limit?: number;
46
+ readonly offset?: number;
47
+ /** Legacy positional params (kept for getParams() fallback). */
48
+ readonly params: ReadonlyArray<QueryParamValue>;
49
+ /** Named params; :name placeholders resolve from here. */
50
+ readonly namedParams: Record<string, QueryParamInput>;
51
+ }
52
+ export declare const EMPTY_RUNTIME_STATE: RuntimeSelectState;
53
+ //# sourceMappingURL=state.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../../src/builder/state.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAEpE;;;;GAIG;AACH,MAAM,WAAW,kBAAkB;IAC/B,uEAAuE;IACvE,QAAQ,CAAC,SAAS,EAAE;QAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;KAAE,CAAC;IACxD,sCAAsC;IACtC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,gCAAgC;IAChC,QAAQ,CAAC,OAAO,EAAE;QAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAC;IACpD,0DAA0D;IAC1D,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC;QAAE,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACvD,mDAAmD;IACnD,QAAQ,CAAC,QAAQ,EAAE;QAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAC;IACrD,uDAAuD;IACvD,QAAQ,CAAC,UAAU,EAAE;QAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAC;IACvD,oDAAoD;IACpD,QAAQ,CAAC,SAAS,EAAE;QAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAC;IACtD,uDAAuD;IACvD,QAAQ,CAAC,UAAU,EAAE;QAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAC;IACvD,+BAA+B;IAC/B,QAAQ,CAAC,MAAM,EAAE;QAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAC;IACnD,mCAAmC;IACnC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,gEAAgE;IAChE,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC,eAAe,CAAC,CAAC;IAChD,0DAA0D;IAC1D,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;CACzD;AAED,eAAO,MAAM,mBAAmB,EAAE,kBAgBjC,CAAC"}
@@ -0,0 +1,18 @@
1
+ export const EMPTY_RUNTIME_STATE = {
2
+ selectSql: {},
3
+ fromSql: undefined,
4
+ joinSql: {},
5
+ joins: [],
6
+ whereSql: {},
7
+ groupBySql: {},
8
+ havingSql: {},
9
+ orderBySql: {},
10
+ cteSql: {},
11
+ unionSql: undefined,
12
+ distinct: false,
13
+ limit: undefined,
14
+ offset: undefined,
15
+ params: [],
16
+ namedParams: {},
17
+ };
18
+ //# sourceMappingURL=state.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"state.js","sourceRoot":"","sources":["../../src/builder/state.ts"],"names":[],"mappings":"AAsCA,MAAM,CAAC,MAAM,mBAAmB,GAAuB;IACnD,SAAS,EAAE,EAAE;IACb,OAAO,EAAE,SAAS;IAClB,OAAO,EAAE,EAAE;IACX,KAAK,EAAE,EAAE;IACT,QAAQ,EAAE,EAAE;IACZ,UAAU,EAAE,EAAE;IACd,SAAS,EAAE,EAAE;IACb,UAAU,EAAE,EAAE;IACd,MAAM,EAAE,EAAE;IACV,QAAQ,EAAE,SAAS;IACnB,QAAQ,EAAE,KAAK;IACf,KAAK,EAAE,SAAS;IAChB,MAAM,EAAE,SAAS;IACjB,MAAM,EAAE,EAAE;IACV,WAAW,EAAE,EAAE;CAClB,CAAC"}
@@ -0,0 +1,60 @@
1
+ import type { DatabaseSchema } from "../schema.js";
2
+ import type { UpdateTag, WriteParamsFor } from "./write-tag.js";
3
+ import type { BoundWrite } from "./insert.js";
4
+ type PushSet<T extends UpdateTag, Text extends string, Cond extends boolean> = Omit<T, "sets"> & {
5
+ readonly sets: readonly [...T["sets"], {
6
+ text: Text;
7
+ cond: Cond;
8
+ }];
9
+ };
10
+ type PushFrom<T extends UpdateTag, Text extends string, Cond extends boolean> = Omit<T, "from"> & {
11
+ readonly from: readonly [...T["from"], {
12
+ text: Text;
13
+ cond: Cond;
14
+ }];
15
+ };
16
+ type PushWhere<T extends UpdateTag, Text extends string, Cond extends boolean> = Omit<T, "wheres"> & {
17
+ readonly wheres: readonly [...T["wheres"], {
18
+ text: Text;
19
+ cond: Cond;
20
+ }];
21
+ };
22
+ export interface UpdateQueryBuilder<S extends DatabaseSchema, T extends UpdateTag> {
23
+ with<N extends string, B extends string, M extends boolean = false>(name: N, body: B, materialized?: M): UpdateQueryBuilder<S, Omit<T, "ctes"> & {
24
+ ctes: readonly [...(T extends {
25
+ ctes: infer C extends readonly unknown[];
26
+ } ? C : []), {
27
+ name: N;
28
+ body: B;
29
+ materialized: M;
30
+ }];
31
+ }>;
32
+ table<Tbl extends string, Al extends string = "">(table: Tbl, alias?: Al): UpdateQueryBuilder<S, Omit<T, "table" | "alias"> & {
33
+ table: Tbl;
34
+ alias: Al;
35
+ }>;
36
+ set<Text extends string>(assignment: Text): UpdateQueryBuilder<S, PushSet<T, Text, false>>;
37
+ setIf<Text extends string>(cond: boolean, assignment: Text): UpdateQueryBuilder<S, PushSet<T, Text, true>>;
38
+ from<Text extends string>(source: Text): UpdateQueryBuilder<S, PushFrom<T, Text, false>>;
39
+ fromIf<Text extends string>(cond: boolean, source: Text): UpdateQueryBuilder<S, PushFrom<T, Text, true>>;
40
+ where<Text extends string>(cond: Text): UpdateQueryBuilder<S, PushWhere<T, Text, false>>;
41
+ whereIf<Text extends string>(cond: boolean, clause: Text): UpdateQueryBuilder<S, PushWhere<T, Text, true>>;
42
+ returning<R extends string>(cols: R): UpdateQueryBuilder<S, Omit<T, "returning"> & {
43
+ returning: R;
44
+ }>;
45
+ withParams(params: WriteParamsFor<T, S>): BoundWrite<S, T>;
46
+ toString(): string;
47
+ }
48
+ export type EmptyUpdateTag = {
49
+ kind: "update";
50
+ table: "";
51
+ alias: "";
52
+ ctes: readonly [];
53
+ sets: readonly [];
54
+ from: readonly [];
55
+ wheres: readonly [];
56
+ returning: null;
57
+ };
58
+ export declare function createUpdateQuery<S extends DatabaseSchema>(): UpdateQueryBuilder<S, EmptyUpdateTag>;
59
+ export {};
60
+ //# sourceMappingURL=update.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../src/builder/update.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,40 @@
1
+ import { assembleUpdateSQL } from "./write-assemble.js";
2
+ import { EMPTY_UPDATE_STATE } from "./write-state.js";
3
+ import { assertAllProvided, collectScanned, expandScanned, } from "./scanner.js";
4
+ class UpdateImpl {
5
+ st;
6
+ constructor(st) {
7
+ this.st = st;
8
+ }
9
+ next(st) { return new UpdateImpl(st); }
10
+ // Append a CTE; it is rendered as a leading `with ...` clause by assemble.
11
+ with(name, body, materialized = false) {
12
+ return this.next({ ...this.st, ctes: [...(this.st.ctes ?? []), { name, body, materialized }] });
13
+ }
14
+ // Store the table and optional alias; alias flows into assembleUpdateSQL.
15
+ table(table, alias) { return this.next({ ...this.st, table, alias }); }
16
+ set(a) { return this.next({ ...this.st, sets: [...this.st.sets, a] }); }
17
+ setIf(c, a) { return c ? this.set(a) : this.next(this.st); }
18
+ from(src) { return this.next({ ...this.st, froms: [...this.st.froms, src] }); }
19
+ fromIf(c, src) { return c ? this.from(src) : this.next(this.st); }
20
+ where(cond) { return this.next({ ...this.st, wheres: [...this.st.wheres, cond] }); }
21
+ whereIf(c, cond) { return c ? this.where(cond) : this.next(this.st); }
22
+ returning(cols) { return this.next({ ...this.st, returning: cols }); }
23
+ withParams(params) {
24
+ return this.next({ ...this.st, namedParams: { ...this.st.namedParams, ...params } });
25
+ }
26
+ toString() {
27
+ const sql = assembleUpdateSQL(this.st);
28
+ assertAllProvided(sql, this.st.namedParams);
29
+ return expandScanned(sql, this.st.namedParams);
30
+ }
31
+ getParams() {
32
+ const sql = assembleUpdateSQL(this.st);
33
+ assertAllProvided(sql, this.st.namedParams);
34
+ return collectScanned(sql, this.st.namedParams);
35
+ }
36
+ }
37
+ export function createUpdateQuery() {
38
+ return new UpdateImpl(EMPTY_UPDATE_STATE);
39
+ }
40
+ //# sourceMappingURL=update.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update.js","sourceRoot":"","sources":["../../src/builder/update.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import type { RuntimeInsertState, RuntimeUpdateState, RuntimeDeleteState } from "./write-state.js";
2
+ export declare function assembleInsertSQL(s: RuntimeInsertState): string;
3
+ export declare function assembleUpdateSQL(s: RuntimeUpdateState): string;
4
+ export declare function assembleDeleteSQL(s: RuntimeDeleteState): string;
5
+ //# sourceMappingURL=write-assemble.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"write-assemble.d.ts","sourceRoot":"","sources":["../../src/builder/write-assemble.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAEnG,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,kBAAkB,GAAG,MAAM,CAmB/D;AAED,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,kBAAkB,GAAG,MAAM,CAmB/D;AAED,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,kBAAkB,GAAG,MAAM,CAM/D"}