@payloadcms/drizzle 4.0.0-internal.2fddfc0 → 4.0.0-internal.314c594

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 (171) hide show
  1. package/LICENSE.md +1 -1
  2. package/dist/createTableName.d.ts.map +1 -1
  3. package/dist/createTableName.js +2 -7
  4. package/dist/createTableName.js.map +1 -1
  5. package/dist/exports/postgres.d.ts +2 -0
  6. package/dist/exports/postgres.d.ts.map +1 -1
  7. package/dist/exports/postgres.js +2 -0
  8. package/dist/exports/postgres.js.map +1 -1
  9. package/dist/find/buildFindManyArgs.d.ts.map +1 -1
  10. package/dist/find/findMany.d.ts.map +1 -1
  11. package/dist/find/traverseFields.d.ts.map +1 -1
  12. package/dist/index.d.ts +3 -3
  13. package/dist/index.d.ts.map +1 -1
  14. package/dist/index.js +1 -1
  15. package/dist/index.js.map +1 -1
  16. package/dist/postgres/createDatabase.d.ts.map +1 -1
  17. package/dist/postgres/createExtensions.d.ts.map +1 -1
  18. package/dist/postgres/createJSONQuery/index.d.ts.map +1 -1
  19. package/dist/postgres/init.d.ts.map +1 -1
  20. package/dist/postgres/init.js +6 -0
  21. package/dist/postgres/init.js.map +1 -1
  22. package/dist/postgres/predefinedMigrations/v2-v3/fetchAndResave/index.d.ts.map +1 -1
  23. package/dist/postgres/predefinedMigrations/v2-v3/fetchAndResave/traverseFields.d.ts.map +1 -1
  24. package/dist/postgres/predefinedMigrations/v2-v3/groupUpSQLStatements.d.ts.map +1 -1
  25. package/dist/postgres/predefinedMigrations/v2-v3/index.d.ts.map +1 -1
  26. package/dist/postgres/predefinedMigrations/v2-v3/migrateRelationships.d.ts.map +1 -1
  27. package/dist/postgres/predefinedMigrations/v2-v3/traverseFields.d.ts.map +1 -1
  28. package/dist/postgres/query/assertOperatorHandlerExtensionsInstalled.d.ts +15 -0
  29. package/dist/postgres/query/assertOperatorHandlerExtensionsInstalled.d.ts.map +1 -0
  30. package/dist/postgres/query/assertOperatorHandlerExtensionsInstalled.js +25 -0
  31. package/dist/postgres/query/assertOperatorHandlerExtensionsInstalled.js.map +1 -0
  32. package/dist/postgres/query/assertOperatorHandlerExtensionsInstalled.spec.js +91 -0
  33. package/dist/postgres/query/assertOperatorHandlerExtensionsInstalled.spec.js.map +1 -0
  34. package/dist/postgres/query/postgresUnaccent.d.ts +13 -0
  35. package/dist/postgres/query/postgresUnaccent.d.ts.map +1 -0
  36. package/dist/postgres/query/postgresUnaccent.js +40 -0
  37. package/dist/postgres/query/postgresUnaccent.js.map +1 -0
  38. package/dist/postgres/query/postgresUnaccent.spec.js +71 -0
  39. package/dist/postgres/query/postgresUnaccent.spec.js.map +1 -0
  40. package/dist/postgres/schema/buildDrizzleTable.d.ts.map +1 -1
  41. package/dist/postgres/schema/geometryColumn.d.ts +2 -2
  42. package/dist/postgres/schema/geometryColumn.d.ts.map +1 -1
  43. package/dist/postgres/types.d.ts +13 -2
  44. package/dist/postgres/types.d.ts.map +1 -1
  45. package/dist/postgres/types.js.map +1 -1
  46. package/dist/queries/addJoinTable.d.ts +1 -1
  47. package/dist/queries/addJoinTable.d.ts.map +1 -1
  48. package/dist/queries/buildOperatorConstraint.d.ts +22 -0
  49. package/dist/queries/buildOperatorConstraint.d.ts.map +1 -0
  50. package/dist/queries/buildOperatorConstraint.js +63 -0
  51. package/dist/queries/buildOperatorConstraint.js.map +1 -0
  52. package/dist/queries/buildOperatorConstraint.spec.js +348 -0
  53. package/dist/queries/buildOperatorConstraint.spec.js.map +1 -0
  54. package/dist/queries/buildOrderBy.d.ts +1 -1
  55. package/dist/queries/buildOrderBy.d.ts.map +1 -1
  56. package/dist/queries/buildQuery.d.ts.map +1 -1
  57. package/dist/queries/getTableAlias.d.ts.map +1 -1
  58. package/dist/queries/getTableColumnFromPath.d.ts +12 -3
  59. package/dist/queries/getTableColumnFromPath.d.ts.map +1 -1
  60. package/dist/queries/getTableColumnFromPath.js +50 -27
  61. package/dist/queries/getTableColumnFromPath.js.map +1 -1
  62. package/dist/queries/operatorMap.d.ts +7 -3
  63. package/dist/queries/operatorMap.d.ts.map +1 -1
  64. package/dist/queries/operatorMap.js.map +1 -1
  65. package/dist/queries/parseParams.d.ts.map +1 -1
  66. package/dist/queries/parseParams.js +203 -8
  67. package/dist/queries/parseParams.js.map +1 -1
  68. package/dist/queries/resolveRelationshipPath.d.ts +36 -0
  69. package/dist/queries/resolveRelationshipPath.d.ts.map +1 -0
  70. package/dist/queries/resolveRelationshipPath.js +66 -0
  71. package/dist/queries/resolveRelationshipPath.js.map +1 -0
  72. package/dist/queries/sanitizeQueryValue.d.ts.map +1 -1
  73. package/dist/queries/selectDistinct.d.ts.map +1 -1
  74. package/dist/queries/validateOperatorHandlers.d.ts +8 -0
  75. package/dist/queries/validateOperatorHandlers.d.ts.map +1 -0
  76. package/dist/queries/validateOperatorHandlers.js +30 -0
  77. package/dist/queries/validateOperatorHandlers.js.map +1 -0
  78. package/dist/queries/validateOperatorHandlers.spec.js +142 -0
  79. package/dist/queries/validateOperatorHandlers.spec.js.map +1 -0
  80. package/dist/schema/build.d.ts.map +1 -1
  81. package/dist/schema/buildDrizzleRelations.d.ts.map +1 -1
  82. package/dist/schema/buildRawSchema.d.ts.map +1 -1
  83. package/dist/schema/buildRawSchema.spec.js +290 -0
  84. package/dist/schema/buildRawSchema.spec.js.map +1 -0
  85. package/dist/schema/idToUUID.d.ts.map +1 -1
  86. package/dist/schema/traverseFields.d.ts.map +1 -1
  87. package/dist/schema/traverseFields.js +6 -5
  88. package/dist/schema/traverseFields.js.map +1 -1
  89. package/dist/schema/withDefault.d.ts.map +1 -1
  90. package/dist/sqlite/createJSONQuery/convertPathToJSONTraversal.d.ts.map +1 -1
  91. package/dist/sqlite/createJSONQuery/index.d.ts.map +1 -1
  92. package/dist/transform/read/hasManyNumber.d.ts.map +1 -1
  93. package/dist/transform/read/hasManyText.d.ts.map +1 -1
  94. package/dist/transform/read/index.d.ts.map +1 -1
  95. package/dist/transform/read/relationship.d.ts.map +1 -1
  96. package/dist/transform/read/traverseFields.d.ts.map +1 -1
  97. package/dist/transform/write/array.d.ts.map +1 -1
  98. package/dist/transform/write/blocks.d.ts.map +1 -1
  99. package/dist/transform/write/index.d.ts.map +1 -1
  100. package/dist/transform/write/numbers.d.ts.map +1 -1
  101. package/dist/transform/write/relationships.d.ts.map +1 -1
  102. package/dist/transform/write/selects.d.ts.map +1 -1
  103. package/dist/transform/write/texts.d.ts.map +1 -1
  104. package/dist/transform/write/traverseFields.d.ts.map +1 -1
  105. package/dist/types.d.ts +50 -6
  106. package/dist/types.d.ts.map +1 -1
  107. package/dist/types.js +1 -3
  108. package/dist/types.js.map +1 -1
  109. package/dist/updateJobs.d.ts.map +1 -1
  110. package/dist/updateJobs.js +37 -0
  111. package/dist/updateJobs.js.map +1 -1
  112. package/dist/upsertRow/deleteExistingArrayRows.d.ts.map +1 -1
  113. package/dist/upsertRow/deleteExistingRowsByPath.d.ts.map +1 -1
  114. package/dist/upsertRow/handleUpsertError.d.ts.map +1 -1
  115. package/dist/upsertRow/index.d.ts.map +1 -1
  116. package/dist/upsertRow/insertArrays.d.ts.map +1 -1
  117. package/dist/upsertRow/insertArrays.js +2 -1
  118. package/dist/upsertRow/insertArrays.js.map +1 -1
  119. package/dist/upsertRow/shouldUseOptimizedUpsertRow.d.ts.map +1 -1
  120. package/dist/utilities/appendPrefixToKeys.d.ts.map +1 -1
  121. package/dist/utilities/blocksToJsonMigrator.d.ts.map +1 -1
  122. package/dist/utilities/buildCreateMigration.d.ts.map +1 -1
  123. package/dist/utilities/buildForeignKeyName.d.ts.map +1 -1
  124. package/dist/utilities/buildForeignKeyName.js +3 -2
  125. package/dist/utilities/buildForeignKeyName.js.map +1 -1
  126. package/dist/utilities/buildIndexName.d.ts.map +1 -1
  127. package/dist/utilities/buildIndexName.js +3 -2
  128. package/dist/utilities/buildIndexName.js.map +1 -1
  129. package/dist/utilities/checkTruncatedIdentifiers.d.ts +13 -0
  130. package/dist/utilities/checkTruncatedIdentifiers.d.ts.map +1 -0
  131. package/dist/utilities/checkTruncatedIdentifiers.js +56 -0
  132. package/dist/utilities/checkTruncatedIdentifiers.js.map +1 -0
  133. package/dist/utilities/checkTruncatedIdentifiers.spec.js +301 -0
  134. package/dist/utilities/checkTruncatedIdentifiers.spec.js.map +1 -0
  135. package/dist/utilities/createBlocksMap.d.ts.map +1 -1
  136. package/dist/utilities/createRelationshipMap.d.ts.map +1 -1
  137. package/dist/utilities/createSchemaGenerator.d.ts.map +1 -1
  138. package/dist/utilities/escapeSQLValue.d.ts.map +1 -1
  139. package/dist/utilities/executeSchemaHooks.d.ts.map +1 -1
  140. package/dist/utilities/extendDrizzleTable.d.ts.map +1 -1
  141. package/dist/utilities/getArrayRelationName.d.ts.map +1 -1
  142. package/dist/utilities/getCollectionIdType.d.ts.map +1 -1
  143. package/dist/utilities/getMigrationTemplate.d.ts.map +1 -1
  144. package/dist/utilities/getNameFromDrizzleTable.d.ts.map +1 -1
  145. package/dist/utilities/getPrimaryDb.d.ts +1 -1
  146. package/dist/utilities/getPrimaryDb.d.ts.map +1 -1
  147. package/dist/utilities/getTransaction.d.ts +1 -1
  148. package/dist/utilities/getTransaction.d.ts.map +1 -1
  149. package/dist/utilities/hasLocalesTable.d.ts.map +1 -1
  150. package/dist/utilities/isPolymorphicRelationship.d.ts.map +1 -1
  151. package/dist/utilities/isUUIDType.d.ts.map +1 -1
  152. package/dist/utilities/json.d.ts.map +1 -1
  153. package/dist/utilities/migrationTableExists.d.ts.map +1 -1
  154. package/dist/utilities/parseError.d.ts.map +1 -1
  155. package/dist/utilities/pushDevSchema.d.ts.map +1 -1
  156. package/dist/utilities/rawConstraint.d.ts.map +1 -1
  157. package/dist/utilities/sanitizePathSegment.d.ts.map +1 -1
  158. package/dist/utilities/validateExistingBlockIsIdentical.d.ts +1 -5
  159. package/dist/utilities/validateExistingBlockIsIdentical.d.ts.map +1 -1
  160. package/dist/utilities/validateExistingBlockIsIdentical.js.map +1 -1
  161. package/dist/utilities/validateIdentifierLength.d.ts +12 -0
  162. package/dist/utilities/validateIdentifierLength.d.ts.map +1 -0
  163. package/dist/utilities/validateIdentifierLength.js +18 -0
  164. package/dist/utilities/validateIdentifierLength.js.map +1 -0
  165. package/dist/utilities/validateIdentifierLength.spec.js +19 -0
  166. package/dist/utilities/validateIdentifierLength.spec.js.map +1 -0
  167. package/package.json +4 -4
  168. package/dist/find/chainMethods.d.ts +0 -20
  169. package/dist/find/chainMethods.d.ts.map +0 -1
  170. package/dist/find/chainMethods.js +0 -16
  171. package/dist/find/chainMethods.js.map +0 -1
@@ -0,0 +1,348 @@
1
+ import { sql } from 'drizzle-orm';
2
+ import { describe, expect, it, vi } from 'vitest';
3
+ import { buildOperatorConstraint } from './buildOperatorConstraint.js';
4
+ const textField = {
5
+ name: 'title',
6
+ type: 'text'
7
+ };
8
+ const numberField = {
9
+ name: 'age',
10
+ type: 'number'
11
+ };
12
+ describe('buildOperatorConstraint', ()=>{
13
+ it('calls the default operator unchanged when no handlers are configured', ()=>{
14
+ const sentinel = sql`sentinel`;
15
+ const containsOperator = vi.fn().mockReturnValue(sentinel);
16
+ const adapter = {
17
+ operatorHandlers: [],
18
+ operators: {
19
+ contains: containsOperator
20
+ }
21
+ };
22
+ const column = 'col';
23
+ const result = buildOperatorConstraint({
24
+ adapter,
25
+ column,
26
+ field: textField,
27
+ originalOperator: 'contains',
28
+ path: 'title',
29
+ resolvedOperator: 'contains',
30
+ value: 'acido'
31
+ });
32
+ expect(containsOperator).toHaveBeenCalledWith(column, 'acido');
33
+ expect(result).toBe(sentinel);
34
+ });
35
+ it('applies operand-transform handlers in configuration order before the default operator runs', ()=>{
36
+ const calls = [];
37
+ const containsOperator = vi.fn(()=>sql`result`);
38
+ const handlerA = {
39
+ name: 'handler-a',
40
+ operators: [
41
+ 'contains'
42
+ ],
43
+ transformOperands: ({ column, value })=>{
44
+ calls.push('a');
45
+ return {
46
+ column: `${column}-a`,
47
+ value: `${value}-a`
48
+ };
49
+ }
50
+ };
51
+ const handlerB = {
52
+ name: 'handler-b',
53
+ operators: [
54
+ 'contains'
55
+ ],
56
+ transformOperands: ({ column, value })=>{
57
+ calls.push('b');
58
+ return {
59
+ column: `${column}-b`,
60
+ value: `${value}-b`
61
+ };
62
+ }
63
+ };
64
+ const adapter = {
65
+ operatorHandlers: [
66
+ handlerA,
67
+ handlerB
68
+ ],
69
+ operators: {
70
+ contains: containsOperator
71
+ }
72
+ };
73
+ buildOperatorConstraint({
74
+ adapter,
75
+ column: 'base-column',
76
+ field: textField,
77
+ originalOperator: 'contains',
78
+ path: 'title',
79
+ resolvedOperator: 'contains',
80
+ value: 'acido'
81
+ });
82
+ expect(calls).toEqual([
83
+ 'a',
84
+ 'b'
85
+ ]);
86
+ expect(containsOperator).toHaveBeenCalledWith('base-column-a-b', 'acido-a-b');
87
+ });
88
+ it('skips a handler whose operators list excludes the resolved operator', ()=>{
89
+ const transformOperands = vi.fn(({ column, value })=>({
90
+ column,
91
+ value
92
+ }));
93
+ const adapter = {
94
+ operatorHandlers: [
95
+ {
96
+ name: 'like-only',
97
+ operators: [
98
+ 'like'
99
+ ],
100
+ transformOperands
101
+ }
102
+ ],
103
+ operators: {
104
+ contains: vi.fn(()=>sql`result`)
105
+ }
106
+ };
107
+ buildOperatorConstraint({
108
+ adapter,
109
+ column: 'col',
110
+ field: textField,
111
+ originalOperator: 'contains',
112
+ path: 'title',
113
+ resolvedOperator: 'contains',
114
+ value: 'acido'
115
+ });
116
+ expect(transformOperands).not.toHaveBeenCalled();
117
+ });
118
+ it("skips a handler whose fieldTypes excludes the field's type even when operators matches", ()=>{
119
+ const transformOperands = vi.fn(({ column, value })=>({
120
+ column,
121
+ value
122
+ }));
123
+ const adapter = {
124
+ operatorHandlers: [
125
+ {
126
+ name: 'text-only',
127
+ operators: [
128
+ 'contains'
129
+ ],
130
+ fieldTypes: [
131
+ 'text'
132
+ ],
133
+ transformOperands
134
+ }
135
+ ],
136
+ operators: {
137
+ contains: vi.fn(()=>sql`result`)
138
+ }
139
+ };
140
+ buildOperatorConstraint({
141
+ adapter,
142
+ column: 'col',
143
+ field: numberField,
144
+ originalOperator: 'contains',
145
+ path: 'age',
146
+ resolvedOperator: 'contains',
147
+ value: 5
148
+ });
149
+ expect(transformOperands).not.toHaveBeenCalled();
150
+ });
151
+ it('runs a handler with no fieldTypes for every field type', ()=>{
152
+ const transformOperands = vi.fn(({ column, value })=>({
153
+ column,
154
+ value
155
+ }));
156
+ const adapter = {
157
+ operatorHandlers: [
158
+ {
159
+ name: 'universal',
160
+ operators: [
161
+ 'contains'
162
+ ],
163
+ transformOperands
164
+ }
165
+ ],
166
+ operators: {
167
+ contains: vi.fn(()=>sql`result`)
168
+ }
169
+ };
170
+ buildOperatorConstraint({
171
+ adapter,
172
+ column: 'col',
173
+ field: numberField,
174
+ originalOperator: 'contains',
175
+ path: 'age',
176
+ resolvedOperator: 'contains',
177
+ value: 5
178
+ });
179
+ expect(transformOperands).toHaveBeenCalled();
180
+ });
181
+ it('gives a single matching replacement handler the operands after every transform has run, and uses its result instead of the default operator', ()=>{
182
+ const containsOperator = vi.fn();
183
+ const sentinel = sql`replacement`;
184
+ const build = vi.fn().mockReturnValue(sentinel);
185
+ const transformOperands = vi.fn(({ column, value })=>({
186
+ column: `${column}-t`,
187
+ value: `${value}-t`
188
+ }));
189
+ const adapter = {
190
+ operatorHandlers: [
191
+ {
192
+ name: 'transform',
193
+ operators: [
194
+ 'contains'
195
+ ],
196
+ transformOperands
197
+ },
198
+ {
199
+ name: 'replace',
200
+ operators: [
201
+ 'contains'
202
+ ],
203
+ build
204
+ }
205
+ ],
206
+ operators: {
207
+ contains: containsOperator
208
+ }
209
+ };
210
+ const result = buildOperatorConstraint({
211
+ adapter,
212
+ column: 'col',
213
+ field: textField,
214
+ originalOperator: 'contains',
215
+ path: 'title',
216
+ resolvedOperator: 'contains',
217
+ value: 'acido'
218
+ });
219
+ expect(build).toHaveBeenCalledWith(expect.objectContaining({
220
+ column: 'col-t',
221
+ value: 'acido-t'
222
+ }));
223
+ expect(containsOperator).not.toHaveBeenCalled();
224
+ expect(result).toBe(sentinel);
225
+ });
226
+ it('passes originalOperator, resolvedOperator, field, path, and locale to handlers', ()=>{
227
+ let capturedContext;
228
+ const transformOperands = vi.fn((context)=>{
229
+ capturedContext = context;
230
+ return {
231
+ column: context.column,
232
+ value: context.value
233
+ };
234
+ });
235
+ const adapter = {
236
+ operatorHandlers: [
237
+ {
238
+ name: 'observe',
239
+ operators: [
240
+ 'like'
241
+ ],
242
+ transformOperands
243
+ }
244
+ ],
245
+ operators: {
246
+ like: vi.fn(()=>sql`result`)
247
+ }
248
+ };
249
+ buildOperatorConstraint({
250
+ adapter,
251
+ column: 'col',
252
+ field: textField,
253
+ locale: 'es',
254
+ originalOperator: 'like',
255
+ path: 'title',
256
+ resolvedOperator: 'like',
257
+ value: '%nino%'
258
+ });
259
+ expect(capturedContext).toMatchObject({
260
+ field: textField,
261
+ locale: 'es',
262
+ originalOperator: 'like',
263
+ path: 'title',
264
+ resolvedOperator: 'like'
265
+ });
266
+ });
267
+ it('wraps a handler error with the handler name, path, and resolved operator, retaining the original error as the cause', ()=>{
268
+ const originalError = new Error('boom');
269
+ const transformOperands = vi.fn(()=>{
270
+ throw originalError;
271
+ });
272
+ const adapter = {
273
+ operatorHandlers: [
274
+ {
275
+ name: 'explode',
276
+ operators: [
277
+ 'contains'
278
+ ],
279
+ transformOperands
280
+ }
281
+ ],
282
+ operators: {
283
+ contains: vi.fn()
284
+ }
285
+ };
286
+ let thrown;
287
+ try {
288
+ buildOperatorConstraint({
289
+ adapter,
290
+ column: 'col',
291
+ field: textField,
292
+ originalOperator: 'contains',
293
+ path: 'title',
294
+ resolvedOperator: 'contains',
295
+ value: 'acido'
296
+ });
297
+ } catch (error) {
298
+ thrown = error;
299
+ }
300
+ expect(thrown).toBeInstanceOf(Error);
301
+ const error = thrown;
302
+ expect(error.message).toContain('explode');
303
+ expect(error.message).toContain('title');
304
+ expect(error.message).toContain('contains');
305
+ expect(error.cause).toBe(originalError);
306
+ });
307
+ it('throws a configuration error when a transform handler returns operands missing column or value, before any default operator or replacement runs', ()=>{
308
+ const transformOperands = vi.fn().mockReturnValue({
309
+ column: 'only-column'
310
+ });
311
+ const containsOperator = vi.fn();
312
+ const build = vi.fn();
313
+ const adapter = {
314
+ operatorHandlers: [
315
+ {
316
+ name: 'broken',
317
+ operators: [
318
+ 'contains'
319
+ ],
320
+ transformOperands
321
+ },
322
+ {
323
+ name: 'replace',
324
+ operators: [
325
+ 'contains'
326
+ ],
327
+ build
328
+ }
329
+ ],
330
+ operators: {
331
+ contains: containsOperator
332
+ }
333
+ };
334
+ expect(()=>buildOperatorConstraint({
335
+ adapter,
336
+ column: 'col',
337
+ field: textField,
338
+ originalOperator: 'contains',
339
+ path: 'title',
340
+ resolvedOperator: 'contains',
341
+ value: 'acido'
342
+ })).toThrow(/broken/);
343
+ expect(containsOperator).not.toHaveBeenCalled();
344
+ expect(build).not.toHaveBeenCalled();
345
+ });
346
+ });
347
+
348
+ //# sourceMappingURL=buildOperatorConstraint.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/queries/buildOperatorConstraint.spec.ts"],"sourcesContent":["import type { Column } from 'drizzle-orm'\nimport type { FlattenedField } from 'payload'\n\nimport { sql } from 'drizzle-orm'\nimport { describe, expect, it, vi } from 'vitest'\n\nimport type { DrizzleAdapter, DrizzleOperandTransformHandler } from '../types.js'\n\nimport { buildOperatorConstraint } from './buildOperatorConstraint.js'\n\nconst textField = { name: 'title', type: 'text' } as unknown as FlattenedField\nconst numberField = { name: 'age', type: 'number' } as unknown as FlattenedField\n\ndescribe('buildOperatorConstraint', () => {\n it('calls the default operator unchanged when no handlers are configured', () => {\n const sentinel = sql`sentinel`\n const containsOperator = vi.fn().mockReturnValue(sentinel)\n const adapter = {\n operatorHandlers: [],\n operators: { contains: containsOperator },\n } as unknown as DrizzleAdapter\n const column = 'col' as unknown as Column\n\n const result = buildOperatorConstraint({\n adapter,\n column,\n field: textField,\n originalOperator: 'contains',\n path: 'title',\n resolvedOperator: 'contains',\n value: 'acido',\n })\n\n expect(containsOperator).toHaveBeenCalledWith(column, 'acido')\n expect(result).toBe(sentinel)\n })\n\n it('applies operand-transform handlers in configuration order before the default operator runs', () => {\n const calls: string[] = []\n const containsOperator = vi.fn(() => sql`result`)\n\n const handlerA: DrizzleOperandTransformHandler = {\n name: 'handler-a',\n operators: ['contains'],\n transformOperands: ({ column, value }) => {\n calls.push('a')\n return { column: `${column}-a` as unknown as Column, value: `${value}-a` }\n },\n }\n const handlerB: DrizzleOperandTransformHandler = {\n name: 'handler-b',\n operators: ['contains'],\n transformOperands: ({ column, value }) => {\n calls.push('b')\n return { column: `${column}-b` as unknown as Column, value: `${value}-b` }\n },\n }\n\n const adapter = {\n operatorHandlers: [handlerA, handlerB],\n operators: { contains: containsOperator },\n } as unknown as DrizzleAdapter\n\n buildOperatorConstraint({\n adapter,\n column: 'base-column' as unknown as Column,\n field: textField,\n originalOperator: 'contains',\n path: 'title',\n resolvedOperator: 'contains',\n value: 'acido',\n })\n\n expect(calls).toEqual(['a', 'b'])\n expect(containsOperator).toHaveBeenCalledWith('base-column-a-b', 'acido-a-b')\n })\n\n it('skips a handler whose operators list excludes the resolved operator', () => {\n const transformOperands = vi.fn(({ column, value }) => ({ column, value }))\n const adapter = {\n operatorHandlers: [{ name: 'like-only', operators: ['like'], transformOperands }],\n operators: { contains: vi.fn(() => sql`result`) },\n } as unknown as DrizzleAdapter\n\n buildOperatorConstraint({\n adapter,\n column: 'col' as unknown as Column,\n field: textField,\n originalOperator: 'contains',\n path: 'title',\n resolvedOperator: 'contains',\n value: 'acido',\n })\n\n expect(transformOperands).not.toHaveBeenCalled()\n })\n\n it(\"skips a handler whose fieldTypes excludes the field's type even when operators matches\", () => {\n const transformOperands = vi.fn(({ column, value }) => ({ column, value }))\n const adapter = {\n operatorHandlers: [\n { name: 'text-only', operators: ['contains'], fieldTypes: ['text'], transformOperands },\n ],\n operators: { contains: vi.fn(() => sql`result`) },\n } as unknown as DrizzleAdapter\n\n buildOperatorConstraint({\n adapter,\n column: 'col' as unknown as Column,\n field: numberField,\n originalOperator: 'contains',\n path: 'age',\n resolvedOperator: 'contains',\n value: 5,\n })\n\n expect(transformOperands).not.toHaveBeenCalled()\n })\n\n it('runs a handler with no fieldTypes for every field type', () => {\n const transformOperands = vi.fn(({ column, value }) => ({ column, value }))\n const adapter = {\n operatorHandlers: [{ name: 'universal', operators: ['contains'], transformOperands }],\n operators: { contains: vi.fn(() => sql`result`) },\n } as unknown as DrizzleAdapter\n\n buildOperatorConstraint({\n adapter,\n column: 'col' as unknown as Column,\n field: numberField,\n originalOperator: 'contains',\n path: 'age',\n resolvedOperator: 'contains',\n value: 5,\n })\n\n expect(transformOperands).toHaveBeenCalled()\n })\n\n it('gives a single matching replacement handler the operands after every transform has run, and uses its result instead of the default operator', () => {\n const containsOperator = vi.fn()\n const sentinel = sql`replacement`\n const build = vi.fn().mockReturnValue(sentinel)\n const transformOperands = vi.fn(({ column, value }) => ({\n column: `${column}-t` as unknown as Column,\n value: `${value}-t`,\n }))\n\n const adapter = {\n operatorHandlers: [\n { name: 'transform', operators: ['contains'], transformOperands },\n { name: 'replace', operators: ['contains'], build },\n ],\n operators: { contains: containsOperator },\n } as unknown as DrizzleAdapter\n\n const result = buildOperatorConstraint({\n adapter,\n column: 'col' as unknown as Column,\n field: textField,\n originalOperator: 'contains',\n path: 'title',\n resolvedOperator: 'contains',\n value: 'acido',\n })\n\n expect(build).toHaveBeenCalledWith(\n expect.objectContaining({ column: 'col-t', value: 'acido-t' }),\n )\n expect(containsOperator).not.toHaveBeenCalled()\n expect(result).toBe(sentinel)\n })\n\n it('passes originalOperator, resolvedOperator, field, path, and locale to handlers', () => {\n let capturedContext: any\n const transformOperands = vi.fn((context) => {\n capturedContext = context\n return { column: context.column, value: context.value }\n })\n\n const adapter = {\n operatorHandlers: [{ name: 'observe', operators: ['like'], transformOperands }],\n operators: { like: vi.fn(() => sql`result`) },\n } as unknown as DrizzleAdapter\n\n buildOperatorConstraint({\n adapter,\n column: 'col' as unknown as Column,\n field: textField,\n locale: 'es',\n originalOperator: 'like',\n path: 'title',\n resolvedOperator: 'like',\n value: '%nino%',\n })\n\n expect(capturedContext).toMatchObject({\n field: textField,\n locale: 'es',\n originalOperator: 'like',\n path: 'title',\n resolvedOperator: 'like',\n })\n })\n\n it('wraps a handler error with the handler name, path, and resolved operator, retaining the original error as the cause', () => {\n const originalError = new Error('boom')\n const transformOperands = vi.fn(() => {\n throw originalError\n })\n\n const adapter = {\n operatorHandlers: [{ name: 'explode', operators: ['contains'], transformOperands }],\n operators: { contains: vi.fn() },\n } as unknown as DrizzleAdapter\n\n let thrown: unknown\n try {\n buildOperatorConstraint({\n adapter,\n column: 'col' as unknown as Column,\n field: textField,\n originalOperator: 'contains',\n path: 'title',\n resolvedOperator: 'contains',\n value: 'acido',\n })\n } catch (error) {\n thrown = error\n }\n\n expect(thrown).toBeInstanceOf(Error)\n const error = thrown as Error\n expect(error.message).toContain('explode')\n expect(error.message).toContain('title')\n expect(error.message).toContain('contains')\n expect(error.cause).toBe(originalError)\n })\n\n it('throws a configuration error when a transform handler returns operands missing column or value, before any default operator or replacement runs', () => {\n const transformOperands = vi.fn().mockReturnValue({ column: 'only-column' })\n const containsOperator = vi.fn()\n const build = vi.fn()\n\n const adapter = {\n operatorHandlers: [\n { name: 'broken', operators: ['contains'], transformOperands },\n { name: 'replace', operators: ['contains'], build },\n ],\n operators: { contains: containsOperator },\n } as unknown as DrizzleAdapter\n\n expect(() =>\n buildOperatorConstraint({\n adapter,\n column: 'col' as unknown as Column,\n field: textField,\n originalOperator: 'contains',\n path: 'title',\n resolvedOperator: 'contains',\n value: 'acido',\n }),\n ).toThrow(/broken/)\n\n expect(containsOperator).not.toHaveBeenCalled()\n expect(build).not.toHaveBeenCalled()\n })\n})\n"],"names":["sql","describe","expect","it","vi","buildOperatorConstraint","textField","name","type","numberField","sentinel","containsOperator","fn","mockReturnValue","adapter","operatorHandlers","operators","contains","column","result","field","originalOperator","path","resolvedOperator","value","toHaveBeenCalledWith","toBe","calls","handlerA","transformOperands","push","handlerB","toEqual","not","toHaveBeenCalled","fieldTypes","build","objectContaining","capturedContext","context","like","locale","toMatchObject","originalError","Error","thrown","error","toBeInstanceOf","message","toContain","cause","toThrow"],"mappings":"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"}
@@ -17,6 +17,6 @@ type Args = {
17
17
  /**
18
18
  * Gets the order by column and direction constructed from the sort argument adds the column to the select fields and joins if necessary
19
19
  */
20
- export declare const buildOrderBy: ({ adapter, aliasTable, fields, joins, locale, parentIsLocalized, rawSort, selectFields, sort, tableName, }: Args) => BuildQueryResult["orderBy"];
20
+ export declare const buildOrderBy: ({ adapter, aliasTable, fields, joins, locale, parentIsLocalized, rawSort, selectFields, sort, tableName, }: Args) => BuildQueryResult['orderBy'];
21
21
  export {};
22
22
  //# sourceMappingURL=buildOrderBy.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"buildOrderBy.d.ts","sourceRoot":"","sources":["../../src/queries/buildOrderBy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;AAC7C,OAAO,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,SAAS,CAAA;AAInD,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAChE,OAAO,KAAK,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AAK9E,KAAK,IAAI,GAAG;IACV,OAAO,EAAE,cAAc,CAAA;IACvB,UAAU,CAAC,EAAE,KAAK,CAAA;IAClB,MAAM,EAAE,cAAc,EAAE,CAAA;IACxB,KAAK,EAAE,qBAAqB,CAAA;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,iBAAiB,EAAE,OAAO,CAAA;IAC1B,OAAO,CAAC,EAAE,GAAG,CAAA;IACb,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAA;IAC3C,IAAI,CAAC,EAAE,IAAI,CAAA;IACX,SAAS,EAAE,MAAM,CAAA;CAClB,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,YAAY,GAAI,4GAW1B,IAAI,KAAG,gBAAgB,CAAC,SAAS,CAgFnC,CAAA"}
1
+ {"version":3,"file":"buildOrderBy.d.ts","sourceRoot":"","sources":["../../src/queries/buildOrderBy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;AAC7C,OAAO,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,SAAS,CAAA;AAInD,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAChE,OAAO,KAAK,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AAK9E,KAAK,IAAI,GAAG;IACV,OAAO,EAAE,cAAc,CAAA;IACvB,UAAU,CAAC,EAAE,KAAK,CAAA;IAClB,MAAM,EAAE,cAAc,EAAE,CAAA;IACxB,KAAK,EAAE,qBAAqB,CAAA;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,iBAAiB,EAAE,OAAO,CAAA;IAC1B,OAAO,CAAC,EAAE,GAAG,CAAA;IACb,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAA;IAC3C,IAAI,CAAC,EAAE,IAAI,CAAA;IACX,SAAS,EAAE,MAAM,CAAA;CAClB,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,YAAY,+GAWtB,IAAI,KAAG,gBAAgB,CAAC,SAAS,CAgFnC,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"buildQuery.d.ts","sourceRoot":"","sources":["../../src/queries/buildQuery.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;AACxD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAA;AAC7D,OAAO,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAE1D,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAM9E,MAAM,MAAM,qBAAqB,GAAG;IAClC,SAAS,EAAE,GAAG,CAAA;IAEd,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,KAAK,EAAE,YAAY,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAA;IAC7C,IAAI,CAAC,EAAE,WAAW,GAAG,UAAU,GAAG,WAAW,CAAA;CAC9C,EAAE,CAAA;AAEH,KAAK,cAAc,GAAG;IACpB,OAAO,EAAE,cAAc,CAAA;IACvB,UAAU,CAAC,EAAE,KAAK,CAAA;IAClB,MAAM,EAAE,cAAc,EAAE,CAAA;IACxB,KAAK,CAAC,EAAE,qBAAqB,CAAA;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAC3B,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,IAAI,CAAC,EAAE,IAAI,CAAA;IACX,SAAS,EAAE,MAAM,CAAA;IACjB,KAAK,EAAE,KAAK,CAAA;CACb,CAAA;AAED,MAAM,MAAM,gBAAgB,GAAG;IAC7B,KAAK,EAAE,qBAAqB,CAAA;IAC5B,OAAO,EAAE;QACP,MAAM,EAAE,aAAa,CAAA;QACrB,KAAK,EAAE,OAAO,GAAG,GAAG,OAAO,IAAI,CAAA;KAChC,EAAE,CAAA;IACH,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAA;IAC3C,KAAK,EAAE,GAAG,CAAA;CACX,CAAA;AAED,eAAO,MAAM,UAAU,GAAuB,yHAW3C,cAAc,KAAG,gBA2CnB,CAAA"}
1
+ {"version":3,"file":"buildQuery.d.ts","sourceRoot":"","sources":["../../src/queries/buildQuery.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;AACxD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAA;AAC7D,OAAO,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAE1D,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAM9E,MAAM,MAAM,qBAAqB,GAAG;IAClC,SAAS,EAAE,GAAG,CAAA;IAEd,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,KAAK,EAAE,YAAY,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAA;IAC7C,IAAI,CAAC,EAAE,WAAW,GAAG,UAAU,GAAG,WAAW,CAAA;CAC9C,EAAE,CAAA;AAEH,KAAK,cAAc,GAAG;IACpB,OAAO,EAAE,cAAc,CAAA;IACvB,UAAU,CAAC,EAAE,KAAK,CAAA;IAClB,MAAM,EAAE,cAAc,EAAE,CAAA;IACxB,KAAK,CAAC,EAAE,qBAAqB,CAAA;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAC3B,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,IAAI,CAAC,EAAE,IAAI,CAAA;IACX,SAAS,EAAE,MAAM,CAAA;IACjB,KAAK,EAAE,KAAK,CAAA;CACb,CAAA;AAED,MAAM,MAAM,gBAAgB,GAAG;IAC7B,KAAK,EAAE,qBAAqB,CAAA;IAC5B,OAAO,EAAE;QACP,MAAM,EAAE,aAAa,CAAA;QACrB,KAAK,EAAE,OAAO,GAAG,GAAG,OAAO,IAAI,CAAA;KAChC,EAAE,CAAA;IACH,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAA;IAC3C,KAAK,EAAE,GAAG,CAAA;CACX,CAAA;AAED,eAAO,MAAM,UAAU,4HAWpB,cAAc,KAAG,gBA2CnB,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"getTableAlias.d.ts","sourceRoot":"","sources":["../../src/queries/getTableAlias.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAA;AAC7D,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAA;AAOrE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAEjD,KAAK,KAAK,GAAG,kBAAkB,CAAC,GAAG,CAAC,GAAG,sBAAsB,CAAC,GAAG,CAAC,CAAA;AAClE,eAAO,MAAM,aAAa,GAAI,yBAG3B;IACD,OAAO,EAAE,cAAc,CAAA;IACvB,SAAS,EAAE,MAAM,CAAA;CAClB,KAAG;IACF,aAAa,EAAE,KAAK,CAAA;IACpB,iBAAiB,EAAE,MAAM,CAAA;CAa1B,CAAA"}
1
+ {"version":3,"file":"getTableAlias.d.ts","sourceRoot":"","sources":["../../src/queries/getTableAlias.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAA;AAC7D,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAA;AAOrE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAEjD,KAAK,KAAK,GAAG,kBAAkB,CAAC,GAAG,CAAC,GAAG,sBAAsB,CAAC,GAAG,CAAC,CAAA;AAClE,eAAO,MAAM,aAAa,4BAGvB;IACD,OAAO,EAAE,cAAc,CAAA;IACvB,SAAS,EAAE,MAAM,CAAA;CAClB,KAAG;IACF,aAAa,EAAE,KAAK,CAAA;IACpB,iBAAiB,EAAE,MAAM,CAAA;CAa1B,CAAA"}
@@ -24,6 +24,7 @@ type TableColumn = {
24
24
  };
25
25
  type Args = {
26
26
  adapter: DrizzleAdapter;
27
+ /** The current table when a query is being built with an alias, such as inside a subquery. */
27
28
  aliasTable?: PgTableWithColumns<any> | SQLiteTableWithColumns<any>;
28
29
  collectionPath: string;
29
30
  columnPrefix?: string;
@@ -32,6 +33,7 @@ type Args = {
32
33
  fields: FlattenedField[];
33
34
  joins: BuildQueryJoinAliases;
34
35
  locale?: string;
36
+ /** The aliased table that owns a field nested inside an array or block. */
35
37
  parentAliasTable?: PgTableWithColumns<any> | SQLiteTableWithColumns<any>;
36
38
  parentIsLocalized: boolean;
37
39
  pathSegments: string[];
@@ -49,9 +51,16 @@ type Args = {
49
51
  value: unknown;
50
52
  };
51
53
  /**
52
- * Transforms path to table and column name or to a list of OR columns
53
- * Adds tables to `join`
54
- * @returns TableColumn
54
+ * Resolves a field path to the database table and column that store its value.
55
+ *
56
+ * While walking through relationships, arrays, and blocks, the function adds the joins required
57
+ * to reach the final column. Table aliases are used when the path is resolved inside a subquery.
58
+ *
59
+ * @example
60
+ * Resolving `movies.name` adds joins from the parent collection to its relationship table and then
61
+ * to the `movies` table. The returned column is `movies.name`.
62
+ *
63
+ * @returns The final field and column, plus any extra constraints discovered while resolving it.
55
64
  */
56
65
  export declare const getTableColumnFromPath: ({ adapter, aliasTable, collectionPath, columnPrefix, constraintPath: incomingConstraintPath, constraints, fields, joins, locale: incomingLocale, parentAliasTable, parentIsLocalized, pathSegments: incomingSegments, rootTableName: incomingRootTableName, selectFields, selectLocale, tableName, tableNameSuffix, value, }: Args) => TableColumn;
57
66
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"getTableColumnFromPath.d.ts","sourceRoot":"","sources":["../../src/queries/getTableColumnFromPath.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAS,MAAM,aAAa,CAAA;AAC7C,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAA;AACrE,OAAO,KAAK,EAEV,cAAc,EAIf,MAAM,SAAS,CAAA;AAGhB,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,qBAAqB,CAAA;AAM7D,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAChE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAA;AAU5D,KAAK,UAAU,GAAG;IAChB,UAAU,EAAE,MAAM,CAAA;IAClB,KAAK,EAAE,kBAAkB,CAAC,GAAG,CAAC,GAAG,sBAAsB,CAAC,GAAG,CAAC,CAAA;IAC5D,KAAK,EAAE,OAAO,CAAA;CACf,CAAA;AAED,KAAK,WAAW,GAAG;IACjB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,OAAO,CAAC,EAAE;QACR,MAAM,EAAE,QAAQ,GAAG,MAAM,GAAG,MAAM,CAAA;QAClC,SAAS,EAAE,GAAG,CAAC,OAAO,CAAC,CAAA;KACxB,EAAE,CAAA;IACH,WAAW,EAAE,UAAU,EAAE,CAAA;IACzB,KAAK,EAAE,cAAc,CAAA;IACrB,uBAAuB,CAAC,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,MAAM,CAAA;IAClD,YAAY,CAAC,EAAE,MAAM,EAAE,CAAA;IACvB,SAAS,CAAC,EAAE,GAAG,CAAA;IACf,KAAK,EAAE,kBAAkB,CAAC,GAAG,CAAC,GAAG,sBAAsB,CAAC,GAAG,CAAC,CAAA;CAC7D,CAAA;AAED,KAAK,IAAI,GAAG;IACV,OAAO,EAAE,cAAc,CAAA;IACvB,UAAU,CAAC,EAAE,kBAAkB,CAAC,GAAG,CAAC,GAAG,sBAAsB,CAAC,GAAG,CAAC,CAAA;IAClE,cAAc,EAAE,MAAM,CAAA;IACtB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,WAAW,CAAC,EAAE,UAAU,EAAE,CAAA;IAC1B,MAAM,EAAE,cAAc,EAAE,CAAA;IACxB,KAAK,EAAE,qBAAqB,CAAA;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,gBAAgB,CAAC,EAAE,kBAAkB,CAAC,GAAG,CAAC,GAAG,sBAAsB,CAAC,GAAG,CAAC,CAAA;IACxE,iBAAiB,EAAE,OAAO,CAAA;IAC1B,YAAY,EAAE,MAAM,EAAE,CAAA;IACtB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAA;IAC3C,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,SAAS,EAAE,MAAM,CAAA;IACjB;;OAEG;IACH,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB;;OAEG;IACH,KAAK,EAAE,OAAO,CAAA;CACf,CAAA;AACD;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,GAAI,8TAmBpC,IAAI,KAAG,WA87BT,CAAA"}
1
+ {"version":3,"file":"getTableColumnFromPath.d.ts","sourceRoot":"","sources":["../../src/queries/getTableColumnFromPath.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,aAAa,CAAA;AACtC,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAA;AACrE,OAAO,KAAK,EAEV,cAAc,EAIf,MAAM,SAAS,CAAA;AAGhB,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,qBAAqB,CAAA;AAM7D,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAChE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAA;AAW5D,KAAK,UAAU,GAAG;IAChB,UAAU,EAAE,MAAM,CAAA;IAClB,KAAK,EAAE,kBAAkB,CAAC,GAAG,CAAC,GAAG,sBAAsB,CAAC,GAAG,CAAC,CAAA;IAC5D,KAAK,EAAE,OAAO,CAAA;CACf,CAAA;AAED,KAAK,WAAW,GAAG;IACjB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,OAAO,CAAC,EAAE;QACR,MAAM,EAAE,QAAQ,GAAG,MAAM,GAAG,MAAM,CAAA;QAClC,SAAS,EAAE,GAAG,CAAC,OAAO,CAAC,CAAA;KACxB,EAAE,CAAA;IACH,WAAW,EAAE,UAAU,EAAE,CAAA;IACzB,KAAK,EAAE,cAAc,CAAA;IACrB,uBAAuB,CAAC,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,MAAM,CAAA;IAClD,YAAY,CAAC,EAAE,MAAM,EAAE,CAAA;IACvB,SAAS,CAAC,EAAE,GAAG,CAAA;IACf,KAAK,EAAE,kBAAkB,CAAC,GAAG,CAAC,GAAG,sBAAsB,CAAC,GAAG,CAAC,CAAA;CAC7D,CAAA;AAED,KAAK,IAAI,GAAG;IACV,OAAO,EAAE,cAAc,CAAA;IACvB,8FAA8F;IAC9F,UAAU,CAAC,EAAE,kBAAkB,CAAC,GAAG,CAAC,GAAG,sBAAsB,CAAC,GAAG,CAAC,CAAA;IAClE,cAAc,EAAE,MAAM,CAAA;IACtB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,WAAW,CAAC,EAAE,UAAU,EAAE,CAAA;IAC1B,MAAM,EAAE,cAAc,EAAE,CAAA;IACxB,KAAK,EAAE,qBAAqB,CAAA;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,2EAA2E;IAC3E,gBAAgB,CAAC,EAAE,kBAAkB,CAAC,GAAG,CAAC,GAAG,sBAAsB,CAAC,GAAG,CAAC,CAAA;IACxE,iBAAiB,EAAE,OAAO,CAAA;IAC1B,YAAY,EAAE,MAAM,EAAE,CAAA;IACtB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAA;IAC3C,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,SAAS,EAAE,MAAM,CAAA;IACjB;;OAEG;IACH,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB;;OAEG;IACH,KAAK,EAAE,OAAO,CAAA;CACf,CAAA;AACD;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,sBAAsB,iUAmBhC,IAAI,KAAG,WA08BT,CAAA"}