@payloadcms/drizzle 4.0.0-internal.21320b5 → 4.0.0-internal.22d1431

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 (196) hide show
  1. package/dist/exports/postgres.d.ts +4 -1
  2. package/dist/exports/postgres.d.ts.map +1 -1
  3. package/dist/exports/postgres.js +4 -1
  4. package/dist/exports/postgres.js.map +1 -1
  5. package/dist/exports/sqlite.d.ts +2 -1
  6. package/dist/exports/sqlite.d.ts.map +1 -1
  7. package/dist/exports/sqlite.js +2 -1
  8. package/dist/exports/sqlite.js.map +1 -1
  9. package/dist/find/buildPolymorphicJoinQuery.d.ts +39 -0
  10. package/dist/find/buildPolymorphicJoinQuery.d.ts.map +1 -0
  11. package/dist/find/buildPolymorphicJoinQuery.js +146 -0
  12. package/dist/find/buildPolymorphicJoinQuery.js.map +1 -0
  13. package/dist/find/buildPolymorphicJoinWhere.d.ts +20 -0
  14. package/dist/find/buildPolymorphicJoinWhere.d.ts.map +1 -0
  15. package/dist/find/buildPolymorphicJoinWhere.js +301 -0
  16. package/dist/find/buildPolymorphicJoinWhere.js.map +1 -0
  17. package/dist/find/createPolymorphicJoinWherePlan.d.ts +38 -0
  18. package/dist/find/createPolymorphicJoinWherePlan.d.ts.map +1 -0
  19. package/dist/find/createPolymorphicJoinWherePlan.js +200 -0
  20. package/dist/find/createPolymorphicJoinWherePlan.js.map +1 -0
  21. package/dist/find/traverseFields.d.ts.map +1 -1
  22. package/dist/find/traverseFields.js +20 -191
  23. package/dist/find/traverseFields.js.map +1 -1
  24. package/dist/index.d.ts +4 -10
  25. package/dist/index.d.ts.map +1 -1
  26. package/dist/index.js +2 -8
  27. package/dist/index.js.map +1 -1
  28. package/dist/migrate.d.ts.map +1 -1
  29. package/dist/migrate.js +41 -15
  30. package/dist/migrate.js.map +1 -1
  31. package/dist/migrateDown.d.ts +2 -1
  32. package/dist/migrateDown.d.ts.map +1 -1
  33. package/dist/migrateDown.js +17 -4
  34. package/dist/migrateDown.js.map +1 -1
  35. package/dist/migrateFresh.d.ts +4 -2
  36. package/dist/migrateFresh.d.ts.map +1 -1
  37. package/dist/migrateFresh.js +26 -9
  38. package/dist/migrateFresh.js.map +1 -1
  39. package/dist/migrateRefresh.d.ts +2 -1
  40. package/dist/migrateRefresh.d.ts.map +1 -1
  41. package/dist/migrateRefresh.js +20 -5
  42. package/dist/migrateRefresh.js.map +1 -1
  43. package/dist/migrateReset.d.ts +2 -1
  44. package/dist/migrateReset.d.ts.map +1 -1
  45. package/dist/migrateReset.js +18 -4
  46. package/dist/migrateReset.js.map +1 -1
  47. package/dist/migrateStatus.d.ts +2 -1
  48. package/dist/migrateStatus.d.ts.map +1 -1
  49. package/dist/migrateStatus.js +11 -6
  50. package/dist/migrateStatus.js.map +1 -1
  51. package/dist/postgres/createJSONQuery/index.js +3 -3
  52. package/dist/postgres/createJSONQuery/index.js.map +1 -1
  53. package/dist/postgres/init.d.ts.map +1 -1
  54. package/dist/postgres/init.js +6 -0
  55. package/dist/postgres/init.js.map +1 -1
  56. package/dist/postgres/predefinedMigrations/sizes-to-variants/index.d.ts +35 -0
  57. package/dist/postgres/predefinedMigrations/sizes-to-variants/index.d.ts.map +1 -0
  58. package/dist/postgres/predefinedMigrations/sizes-to-variants/index.js +185 -0
  59. package/dist/postgres/predefinedMigrations/sizes-to-variants/index.js.map +1 -0
  60. package/dist/postgres/predefinedMigrations/v2-v3/fetchAndResave/index.d.ts.map +1 -1
  61. package/dist/postgres/predefinedMigrations/v2-v3/fetchAndResave/index.js +8 -4
  62. package/dist/postgres/predefinedMigrations/v2-v3/fetchAndResave/index.js.map +1 -1
  63. package/dist/postgres/predefinedMigrations/v2-v3/index.js +2 -2
  64. package/dist/postgres/predefinedMigrations/v2-v3/index.js.map +1 -1
  65. package/dist/postgres/query/assertOperatorHandlerExtensionsInstalled.d.ts +15 -0
  66. package/dist/postgres/query/assertOperatorHandlerExtensionsInstalled.d.ts.map +1 -0
  67. package/dist/postgres/query/assertOperatorHandlerExtensionsInstalled.js +25 -0
  68. package/dist/postgres/query/assertOperatorHandlerExtensionsInstalled.js.map +1 -0
  69. package/dist/postgres/query/postgresUnaccent.d.ts +13 -0
  70. package/dist/postgres/query/postgresUnaccent.d.ts.map +1 -0
  71. package/dist/postgres/query/postgresUnaccent.js +40 -0
  72. package/dist/postgres/query/postgresUnaccent.js.map +1 -0
  73. package/dist/postgres/requireDrizzleKit.d.ts +0 -4
  74. package/dist/postgres/requireDrizzleKit.d.ts.map +1 -1
  75. package/dist/postgres/requireDrizzleKit.js +10 -16
  76. package/dist/postgres/requireDrizzleKit.js.map +1 -1
  77. package/dist/postgres/types.d.ts +13 -2
  78. package/dist/postgres/types.d.ts.map +1 -1
  79. package/dist/postgres/types.js.map +1 -1
  80. package/dist/queries/buildOperatorConstraint.d.ts +22 -0
  81. package/dist/queries/buildOperatorConstraint.d.ts.map +1 -0
  82. package/dist/queries/buildOperatorConstraint.js +63 -0
  83. package/dist/queries/buildOperatorConstraint.js.map +1 -0
  84. package/dist/queries/getTableColumnFromPath.d.ts +12 -3
  85. package/dist/queries/getTableColumnFromPath.d.ts.map +1 -1
  86. package/dist/queries/getTableColumnFromPath.js +59 -27
  87. package/dist/queries/getTableColumnFromPath.js.map +1 -1
  88. package/dist/queries/operatorMap.d.ts +7 -3
  89. package/dist/queries/operatorMap.d.ts.map +1 -1
  90. package/dist/queries/operatorMap.js.map +1 -1
  91. package/dist/queries/parseParams.d.ts.map +1 -1
  92. package/dist/queries/parseParams.js +262 -10
  93. package/dist/queries/parseParams.js.map +1 -1
  94. package/dist/queries/resolveRelationshipPath.d.ts +36 -0
  95. package/dist/queries/resolveRelationshipPath.d.ts.map +1 -0
  96. package/dist/queries/resolveRelationshipPath.js +66 -0
  97. package/dist/queries/resolveRelationshipPath.js.map +1 -0
  98. package/dist/queries/validateOperatorHandlers.d.ts +8 -0
  99. package/dist/queries/validateOperatorHandlers.d.ts.map +1 -0
  100. package/dist/queries/validateOperatorHandlers.js +30 -0
  101. package/dist/queries/validateOperatorHandlers.js.map +1 -0
  102. package/dist/schema/build.d.ts.map +1 -1
  103. package/dist/schema/build.js +7 -8
  104. package/dist/schema/build.js.map +1 -1
  105. package/dist/sqlite/createJSONQuery/convertPathToJSONTraversal.js +3 -2
  106. package/dist/sqlite/createJSONQuery/convertPathToJSONTraversal.js.map +1 -1
  107. package/dist/sqlite/createJSONQuery/index.d.ts.map +1 -1
  108. package/dist/sqlite/createJSONQuery/index.js +6 -5
  109. package/dist/sqlite/createJSONQuery/index.js.map +1 -1
  110. package/dist/sqlite/execute.js.map +1 -1
  111. package/dist/sqlite/insert.d.ts.map +1 -1
  112. package/dist/sqlite/insert.js +4 -1
  113. package/dist/sqlite/insert.js.map +1 -1
  114. package/dist/sqlite/predefinedMigrations/sizes-to-variants/index.d.ts +15 -0
  115. package/dist/sqlite/predefinedMigrations/sizes-to-variants/index.d.ts.map +1 -0
  116. package/dist/sqlite/predefinedMigrations/sizes-to-variants/index.js +114 -0
  117. package/dist/sqlite/predefinedMigrations/sizes-to-variants/index.js.map +1 -0
  118. package/dist/sqlite/requireDrizzleKit.d.ts +3 -0
  119. package/dist/sqlite/requireDrizzleKit.d.ts.map +1 -0
  120. package/dist/sqlite/requireDrizzleKit.js +12 -0
  121. package/dist/sqlite/requireDrizzleKit.js.map +1 -0
  122. package/dist/transform/read/traverseFields.js.map +1 -1
  123. package/dist/transform/write/traverseFields.d.ts.map +1 -1
  124. package/dist/transform/write/traverseFields.js +8 -14
  125. package/dist/transform/write/traverseFields.js.map +1 -1
  126. package/dist/types.d.ts +52 -4
  127. package/dist/types.d.ts.map +1 -1
  128. package/dist/types.js.map +1 -1
  129. package/dist/updateOne.d.ts.map +1 -1
  130. package/dist/updateOne.js +41 -1
  131. package/dist/updateOne.js.map +1 -1
  132. package/dist/upsertRow/index.d.ts +1 -1
  133. package/dist/upsertRow/index.d.ts.map +1 -1
  134. package/dist/upsertRow/index.js +25 -5
  135. package/dist/upsertRow/index.js.map +1 -1
  136. package/dist/utilities/blocksToJsonMigrator.d.ts.map +1 -1
  137. package/dist/utilities/blocksToJsonMigrator.js +7 -18
  138. package/dist/utilities/blocksToJsonMigrator.js.map +1 -1
  139. package/dist/utilities/buildCreateMigration.d.ts.map +1 -1
  140. package/dist/utilities/buildCreateMigration.js +13 -9
  141. package/dist/utilities/buildCreateMigration.js.map +1 -1
  142. package/dist/utilities/buildDynamicPredefinedSizesToVariantsMigration.d.ts +15 -0
  143. package/dist/utilities/buildDynamicPredefinedSizesToVariantsMigration.d.ts.map +1 -0
  144. package/dist/utilities/buildDynamicPredefinedSizesToVariantsMigration.js +110 -0
  145. package/dist/utilities/buildDynamicPredefinedSizesToVariantsMigration.js.map +1 -0
  146. package/dist/utilities/buildForeignKeyName.d.ts.map +1 -1
  147. package/dist/utilities/buildForeignKeyName.js +3 -2
  148. package/dist/utilities/buildForeignKeyName.js.map +1 -1
  149. package/dist/utilities/buildIndexName.d.ts.map +1 -1
  150. package/dist/utilities/buildIndexName.js +3 -2
  151. package/dist/utilities/buildIndexName.js.map +1 -1
  152. package/dist/utilities/checkTruncatedIdentifiers.d.ts +13 -0
  153. package/dist/utilities/checkTruncatedIdentifiers.d.ts.map +1 -0
  154. package/dist/utilities/checkTruncatedIdentifiers.js +56 -0
  155. package/dist/utilities/checkTruncatedIdentifiers.js.map +1 -0
  156. package/dist/utilities/createSchemaGenerator.d.ts.map +1 -1
  157. package/dist/utilities/createSchemaGenerator.js +10 -12
  158. package/dist/utilities/createSchemaGenerator.js.map +1 -1
  159. package/dist/utilities/executeSchemaHooks.js +1 -1
  160. package/dist/utilities/executeSchemaHooks.js.map +1 -1
  161. package/dist/utilities/formatGeneratedFile.d.ts +10 -0
  162. package/dist/utilities/formatGeneratedFile.d.ts.map +1 -0
  163. package/dist/utilities/formatGeneratedFile.js +58 -0
  164. package/dist/utilities/formatGeneratedFile.js.map +1 -0
  165. package/dist/utilities/getSizesToVariantsRenames.d.ts +54 -0
  166. package/dist/utilities/getSizesToVariantsRenames.d.ts.map +1 -0
  167. package/dist/utilities/getSizesToVariantsRenames.js +251 -0
  168. package/dist/utilities/getSizesToVariantsRenames.js.map +1 -0
  169. package/dist/utilities/getTransaction.js.map +1 -1
  170. package/dist/utilities/parseJSONPathSegment.d.ts +9 -0
  171. package/dist/utilities/parseJSONPathSegment.d.ts.map +1 -0
  172. package/dist/utilities/parseJSONPathSegment.js +17 -0
  173. package/dist/utilities/parseJSONPathSegment.js.map +1 -0
  174. package/dist/utilities/pushDevSchema.js +1 -1
  175. package/dist/utilities/pushDevSchema.js.map +1 -1
  176. package/dist/utilities/validateIdentifierLength.d.ts +5 -0
  177. package/dist/utilities/validateIdentifierLength.d.ts.map +1 -1
  178. package/dist/utilities/validateIdentifierLength.js +4 -0
  179. package/dist/utilities/validateIdentifierLength.js.map +1 -1
  180. package/package.json +16 -20
  181. package/dist/schema/buildRawSchema.spec.js +0 -230
  182. package/dist/schema/buildRawSchema.spec.js.map +0 -1
  183. package/dist/sqlite/createRequireDrizzleKit.d.ts +0 -6
  184. package/dist/sqlite/createRequireDrizzleKit.d.ts.map +0 -1
  185. package/dist/sqlite/createRequireDrizzleKit.js +0 -15
  186. package/dist/sqlite/createRequireDrizzleKit.js.map +0 -1
  187. package/dist/sqlite/createRequireDrizzleKit.spec.js +0 -71
  188. package/dist/sqlite/createRequireDrizzleKit.spec.js.map +0 -1
  189. package/dist/sqlite/drizzleKitTooling.spec.js +0 -86
  190. package/dist/sqlite/drizzleKitTooling.spec.js.map +0 -1
  191. package/dist/upsertRow/handleUpsertError.spec.js +0 -42
  192. package/dist/upsertRow/handleUpsertError.spec.js.map +0 -1
  193. package/dist/utilities/isValidStringID.spec.js +0 -15
  194. package/dist/utilities/isValidStringID.spec.js.map +0 -1
  195. package/dist/utilities/validateIdentifierLength.spec.js +0 -19
  196. package/dist/utilities/validateIdentifierLength.spec.js.map +0 -1
@@ -1,230 +0,0 @@
1
- import { sanitizeConfig } from 'payload';
2
- import { describe, expect, it } from 'vitest';
3
- import { setColumnID } from '../postgres/schema/setColumnID.js';
4
- import { buildRawSchema } from './buildRawSchema.js';
5
- const headlineBlock = {
6
- slug: 'headline',
7
- fields: [
8
- {
9
- name: 'title',
10
- type: 'text'
11
- }
12
- ]
13
- };
14
- const createContainerBlock = (slug)=>({
15
- slug,
16
- fields: [
17
- {
18
- name: 'content',
19
- type: 'blocks',
20
- blocks: [
21
- 'headline'
22
- ]
23
- }
24
- ]
25
- });
26
- const createAdapter = (config)=>({
27
- blocksAsJSON: false,
28
- fieldConstraints: {},
29
- idType: 'serial',
30
- localesSuffix: '_locales',
31
- payload: {
32
- blocks: Object.fromEntries(config.blocks.map((block)=>[
33
- block.slug,
34
- block
35
- ])),
36
- collections: Object.fromEntries(config.collections.map((collection)=>[
37
- collection.slug,
38
- {
39
- config: collection,
40
- customIDType: undefined
41
- }
42
- ])),
43
- config
44
- },
45
- rawRelations: {},
46
- rawTables: {},
47
- tableNameMap: new Map(),
48
- versionsSuffix: '_versions'
49
- });
50
- describe('buildRawSchema', ()=>{
51
- it('should create suffixed block tables for different schemas with the same slug', async ()=>{
52
- const config = sanitizeConfig({
53
- collections: [
54
- {
55
- slug: 'pages',
56
- fields: [
57
- {
58
- name: 'primaryContent',
59
- type: 'blocks',
60
- localized: true,
61
- blocks: [
62
- {
63
- slug: 'content',
64
- fields: [
65
- {
66
- name: 'title',
67
- type: 'text'
68
- }
69
- ]
70
- }
71
- ]
72
- },
73
- {
74
- name: 'secondaryContent',
75
- type: 'blocks',
76
- localized: true,
77
- blocks: [
78
- {
79
- slug: 'content',
80
- fields: [
81
- {
82
- name: 'description',
83
- type: 'textarea'
84
- }
85
- ]
86
- }
87
- ]
88
- }
89
- ]
90
- }
91
- ],
92
- localization: {
93
- defaultLocale: 'en',
94
- locales: [
95
- 'en',
96
- 'de'
97
- ]
98
- }
99
- });
100
- const adapter = createAdapter(config);
101
- buildRawSchema({
102
- adapter,
103
- setColumnID
104
- });
105
- expect(adapter.rawTables.pages_blocks_content.columns.title).toBeDefined();
106
- expect(adapter.rawTables.pages_blocks_content.columns._locale).toBeDefined();
107
- expect(adapter.rawTables.pages_blocks_content_2.columns.description).toBeDefined();
108
- expect(adapter.rawTables.pages_blocks_content_2.columns._locale).toBeDefined();
109
- });
110
- it('should not create duplicate suffixed block tables for identical reused blocks under localized ancestors', async ()=>{
111
- const layoutBlocks = [
112
- createContainerBlock('container'),
113
- createContainerBlock('container50')
114
- ];
115
- const config = sanitizeConfig({
116
- blocks: [
117
- headlineBlock
118
- ],
119
- collections: [
120
- {
121
- slug: 'pages',
122
- fields: [
123
- {
124
- name: 'layout',
125
- type: 'blocks',
126
- localized: true,
127
- blocks: layoutBlocks
128
- }
129
- ]
130
- },
131
- {
132
- slug: 'posts',
133
- fields: [
134
- {
135
- name: 'layout',
136
- type: 'blocks',
137
- localized: true,
138
- blocks: layoutBlocks
139
- }
140
- ]
141
- }
142
- ],
143
- localization: {
144
- defaultLocale: 'en',
145
- locales: [
146
- 'en',
147
- 'de'
148
- ]
149
- }
150
- });
151
- const adapter = createAdapter(config);
152
- buildRawSchema({
153
- adapter,
154
- setColumnID
155
- });
156
- expect(adapter.rawTables.pages_blocks_headline).toBeDefined();
157
- expect(adapter.rawTables.pages_blocks_headline.columns._locale).toBeDefined();
158
- expect(adapter.rawTables.pages_blocks_headline_2).toBeUndefined();
159
- expect(adapter.rawTables.pages_blocks_headline_2_locales).toBeUndefined();
160
- expect(adapter.rawTables.posts_blocks_headline).toBeDefined();
161
- expect(adapter.rawTables.posts_blocks_headline.columns._locale).toBeDefined();
162
- expect(adapter.rawTables.posts_blocks_headline_2).toBeUndefined();
163
- expect(adapter.rawTables.posts_blocks_headline_2_locales).toBeUndefined();
164
- });
165
- it('should throw when a localized field pushes the _locales companion table past 63 chars', async ()=>{
166
- // Base table name (61 chars) is under the limit, but `${base}_locales` (69) overflows it.
167
- const longSlug = `localized_collection_${'x'.repeat(40)}`;
168
- const config = sanitizeConfig({
169
- collections: [
170
- {
171
- slug: longSlug,
172
- fields: [
173
- {
174
- name: 'title',
175
- type: 'text',
176
- localized: true
177
- }
178
- ],
179
- timestamps: false,
180
- versions: false
181
- }
182
- ],
183
- localization: {
184
- defaultLocale: 'en',
185
- locales: [
186
- 'en',
187
- 'de'
188
- ]
189
- }
190
- });
191
- const adapter = createAdapter(config);
192
- expect(()=>buildRawSchema({
193
- adapter,
194
- setColumnID
195
- })).toThrow('Exceeded max identifier length');
196
- });
197
- it('should not throw for a localized field whose _locales companion table fits within 63 chars', async ()=>{
198
- const config = sanitizeConfig({
199
- collections: [
200
- {
201
- slug: 'short_localized',
202
- fields: [
203
- {
204
- name: 'title',
205
- type: 'text',
206
- localized: true
207
- }
208
- ],
209
- timestamps: false,
210
- versions: false
211
- }
212
- ],
213
- localization: {
214
- defaultLocale: 'en',
215
- locales: [
216
- 'en',
217
- 'de'
218
- ]
219
- }
220
- });
221
- const adapter = createAdapter(config);
222
- buildRawSchema({
223
- adapter,
224
- setColumnID
225
- });
226
- expect(adapter.rawTables.short_localized_locales).toBeDefined();
227
- });
228
- });
229
-
230
- //# sourceMappingURL=buildRawSchema.spec.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/schema/buildRawSchema.spec.ts"],"sourcesContent":["import type { Block, Config, SanitizedConfig } from 'payload'\nimport { sanitizeConfig } from 'payload'\nimport { describe, expect, it } from 'vitest'\n\nimport { setColumnID } from '../postgres/schema/setColumnID.js'\nimport type { DrizzleAdapter } from '../types.js'\nimport { buildRawSchema } from './buildRawSchema.js'\n\nconst headlineBlock: Block = {\n slug: 'headline',\n fields: [\n {\n name: 'title',\n type: 'text',\n },\n ],\n}\n\nconst createContainerBlock = (slug: string): Block => ({\n slug,\n fields: [\n {\n name: 'content',\n type: 'blocks',\n blocks: ['headline'],\n },\n ],\n})\n\nconst createAdapter = (config: SanitizedConfig): DrizzleAdapter =>\n ({\n blocksAsJSON: false,\n fieldConstraints: {},\n idType: 'serial',\n localesSuffix: '_locales',\n payload: {\n blocks: Object.fromEntries(config.blocks.map((block) => [block.slug, block])),\n collections: Object.fromEntries(\n config.collections.map((collection) => [\n collection.slug,\n {\n config: collection,\n customIDType: undefined,\n },\n ]),\n ),\n config,\n },\n rawRelations: {},\n rawTables: {},\n tableNameMap: new Map(),\n versionsSuffix: '_versions',\n }) as unknown as DrizzleAdapter\n\ndescribe('buildRawSchema', () => {\n it('should create suffixed block tables for different schemas with the same slug', async () => {\n const config = sanitizeConfig({\n collections: [\n {\n slug: 'pages',\n fields: [\n {\n name: 'primaryContent',\n type: 'blocks',\n localized: true,\n blocks: [\n {\n slug: 'content',\n fields: [\n {\n name: 'title',\n type: 'text',\n },\n ],\n },\n ],\n },\n {\n name: 'secondaryContent',\n type: 'blocks',\n localized: true,\n blocks: [\n {\n slug: 'content',\n fields: [\n {\n name: 'description',\n type: 'textarea',\n },\n ],\n },\n ],\n },\n ],\n },\n ],\n localization: {\n defaultLocale: 'en',\n locales: ['en', 'de'],\n },\n } as Config)\n\n const adapter = createAdapter(config)\n\n buildRawSchema({\n adapter,\n setColumnID,\n })\n\n expect(adapter.rawTables.pages_blocks_content.columns.title).toBeDefined()\n expect(adapter.rawTables.pages_blocks_content.columns._locale).toBeDefined()\n expect(adapter.rawTables.pages_blocks_content_2.columns.description).toBeDefined()\n expect(adapter.rawTables.pages_blocks_content_2.columns._locale).toBeDefined()\n })\n\n it('should not create duplicate suffixed block tables for identical reused blocks under localized ancestors', async () => {\n const layoutBlocks = [createContainerBlock('container'), createContainerBlock('container50')]\n\n const config = sanitizeConfig({\n blocks: [headlineBlock],\n collections: [\n {\n slug: 'pages',\n fields: [\n {\n name: 'layout',\n type: 'blocks',\n localized: true,\n blocks: layoutBlocks,\n },\n ],\n },\n {\n slug: 'posts',\n fields: [\n {\n name: 'layout',\n type: 'blocks',\n localized: true,\n blocks: layoutBlocks,\n },\n ],\n },\n ],\n localization: {\n defaultLocale: 'en',\n locales: ['en', 'de'],\n },\n } as Config)\n\n const adapter = createAdapter(config)\n\n buildRawSchema({\n adapter,\n setColumnID,\n })\n\n expect(adapter.rawTables.pages_blocks_headline).toBeDefined()\n expect(adapter.rawTables.pages_blocks_headline.columns._locale).toBeDefined()\n expect(adapter.rawTables.pages_blocks_headline_2).toBeUndefined()\n expect(adapter.rawTables.pages_blocks_headline_2_locales).toBeUndefined()\n expect(adapter.rawTables.posts_blocks_headline).toBeDefined()\n expect(adapter.rawTables.posts_blocks_headline.columns._locale).toBeDefined()\n expect(adapter.rawTables.posts_blocks_headline_2).toBeUndefined()\n expect(adapter.rawTables.posts_blocks_headline_2_locales).toBeUndefined()\n })\n\n it('should throw when a localized field pushes the _locales companion table past 63 chars', async () => {\n // Base table name (61 chars) is under the limit, but `${base}_locales` (69) overflows it.\n const longSlug = `localized_collection_${'x'.repeat(40)}`\n\n const config = sanitizeConfig({\n collections: [\n {\n slug: longSlug,\n fields: [\n {\n name: 'title',\n type: 'text',\n localized: true,\n },\n ],\n timestamps: false,\n versions: false,\n },\n ],\n localization: {\n defaultLocale: 'en',\n locales: ['en', 'de'],\n },\n } as Config)\n\n const adapter = createAdapter(config)\n\n expect(() =>\n buildRawSchema({\n adapter,\n setColumnID,\n }),\n ).toThrow('Exceeded max identifier length')\n })\n\n it('should not throw for a localized field whose _locales companion table fits within 63 chars', async () => {\n const config = sanitizeConfig({\n collections: [\n {\n slug: 'short_localized',\n fields: [\n {\n name: 'title',\n type: 'text',\n localized: true,\n },\n ],\n timestamps: false,\n versions: false,\n },\n ],\n localization: {\n defaultLocale: 'en',\n locales: ['en', 'de'],\n },\n } as Config)\n\n const adapter = createAdapter(config)\n\n buildRawSchema({\n adapter,\n setColumnID,\n })\n\n expect(adapter.rawTables.short_localized_locales).toBeDefined()\n })\n})\n"],"names":["sanitizeConfig","describe","expect","it","setColumnID","buildRawSchema","headlineBlock","slug","fields","name","type","createContainerBlock","blocks","createAdapter","config","blocksAsJSON","fieldConstraints","idType","localesSuffix","payload","Object","fromEntries","map","block","collections","collection","customIDType","undefined","rawRelations","rawTables","tableNameMap","Map","versionsSuffix","localized","localization","defaultLocale","locales","adapter","pages_blocks_content","columns","title","toBeDefined","_locale","pages_blocks_content_2","description","layoutBlocks","pages_blocks_headline","pages_blocks_headline_2","toBeUndefined","pages_blocks_headline_2_locales","posts_blocks_headline","posts_blocks_headline_2","posts_blocks_headline_2_locales","longSlug","repeat","timestamps","versions","toThrow","short_localized_locales"],"mappings":"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"}
@@ -1,6 +0,0 @@
1
- import type { RequireDrizzleKit } from '../types.js';
2
- export declare const createRequireDrizzleKit: ({ from, }: {
3
- /** Module URL of the adapter that owns the drizzle-kit dependency. */
4
- from: string;
5
- }) => RequireDrizzleKit;
6
- //# sourceMappingURL=createRequireDrizzleKit.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"createRequireDrizzleKit.d.ts","sourceRoot":"","sources":["../../src/sqlite/createRequireDrizzleKit.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AAEpD,eAAO,MAAM,uBAAuB,cAG/B;IACD,sEAAsE;IACtE,IAAI,EAAE,MAAM,CAAA;CACb,KAAG,iBAeH,CAAA"}
@@ -1,15 +0,0 @@
1
- import nodeModule from 'node:module';
2
- import { dynamicImport } from 'payload';
3
- export const createRequireDrizzleKit = ({ from })=>async ()=>{
4
- // Use the default import to preserve Node's loader instead of Webpack's createRequire transform.
5
- const require = nodeModule.createRequire(from);
6
- const { generateSQLiteDrizzleJson, generateSQLiteMigration, pushSQLiteSchema } = await dynamicImport(require.resolve('drizzle-kit/api'));
7
- return {
8
- generateDrizzleJson: generateSQLiteDrizzleJson,
9
- generateMigration: generateSQLiteMigration,
10
- // Drizzle Kit bundles separate ORM types; the owning adapter selects the matching dialect.
11
- pushSchema: pushSQLiteSchema
12
- };
13
- };
14
-
15
- //# sourceMappingURL=createRequireDrizzleKit.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/sqlite/createRequireDrizzleKit.ts"],"sourcesContent":["import type * as DrizzleKit from 'drizzle-kit/api'\n\nimport nodeModule from 'node:module'\nimport { dynamicImport } from 'payload'\n\nimport type { RequireDrizzleKit } from '../types.js'\n\nexport const createRequireDrizzleKit =\n ({\n from,\n }: {\n /** Module URL of the adapter that owns the drizzle-kit dependency. */\n from: string\n }): RequireDrizzleKit =>\n async () => {\n // Use the default import to preserve Node's loader instead of Webpack's createRequire transform.\n const require = nodeModule.createRequire(from)\n const { generateSQLiteDrizzleJson, generateSQLiteMigration, pushSQLiteSchema } =\n await dynamicImport<typeof DrizzleKit>(require.resolve('drizzle-kit/api'))\n\n return {\n generateDrizzleJson: generateSQLiteDrizzleJson,\n generateMigration: generateSQLiteMigration,\n // Drizzle Kit bundles separate ORM types; the owning adapter selects the matching dialect.\n pushSchema: pushSQLiteSchema as unknown as Awaited<\n ReturnType<RequireDrizzleKit>\n >['pushSchema'],\n }\n }\n"],"names":["nodeModule","dynamicImport","createRequireDrizzleKit","from","require","createRequire","generateSQLiteDrizzleJson","generateSQLiteMigration","pushSQLiteSchema","resolve","generateDrizzleJson","generateMigration","pushSchema"],"mappings":"AAEA,OAAOA,gBAAgB,cAAa;AACpC,SAASC,aAAa,QAAQ,UAAS;AAIvC,OAAO,MAAMC,0BACX,CAAC,EACCC,IAAI,EAIL,GACD;QACE,iGAAiG;QACjG,MAAMC,UAAUJ,WAAWK,aAAa,CAACF;QACzC,MAAM,EAAEG,yBAAyB,EAAEC,uBAAuB,EAAEC,gBAAgB,EAAE,GAC5E,MAAMP,cAAiCG,QAAQK,OAAO,CAAC;QAEzD,OAAO;YACLC,qBAAqBJ;YACrBK,mBAAmBJ;YACnB,2FAA2F;YAC3FK,YAAYJ;QAGd;IACF,EAAC"}
@@ -1,71 +0,0 @@
1
- import { mkdirSync, mkdtempSync, realpathSync, rmSync, writeFileSync } from 'node:fs';
2
- import nodeModule from 'node:module';
3
- import { tmpdir } from 'node:os';
4
- import path from 'node:path';
5
- import { pathToFileURL } from 'node:url';
6
- import { afterEach, describe, expect, it } from 'vitest';
7
- import { createRequireDrizzleKit as createPostgresRequireDrizzleKit } from '../postgres/requireDrizzleKit.js';
8
- import { createRequireDrizzleKit as createSQLiteRequireDrizzleKit } from './createRequireDrizzleKit.js';
9
- const directories = [];
10
- afterEach(()=>{
11
- const require = nodeModule.createRequire(import.meta.url);
12
- for (const directory of directories.splice(0)){
13
- for (const filename of Object.keys(require.cache)){
14
- if (filename.startsWith(`${directory}${path.sep}`)) {
15
- delete require.cache[filename];
16
- }
17
- }
18
- rmSync(directory, {
19
- force: true,
20
- recursive: true
21
- });
22
- }
23
- });
24
- describe.each([
25
- {
26
- createRequireDrizzleKit: createSQLiteRequireDrizzleKit,
27
- dialect: 'sqlite'
28
- },
29
- {
30
- createRequireDrizzleKit: createPostgresRequireDrizzleKit,
31
- dialect: 'postgres'
32
- }
33
- ])('createRequireDrizzleKit ($dialect)', ({ createRequireDrizzleKit, dialect })=>{
34
- it('should lazily resolve tooling from each owning adapter', async ()=>{
35
- for(let index = 0; index < 2; index++){
36
- const directory = createDirectory();
37
- const load = createRequireDrizzleKit({
38
- from: pathToFileURL(path.join(directory, 'adapter.js')).href
39
- });
40
- await expect(load()).rejects.toThrow(/drizzle-kit/);
41
- installTooling({
42
- dialect,
43
- directory
44
- });
45
- expect((await load()).generateDrizzleJson({})).toEqual({
46
- dialect,
47
- source: directory
48
- });
49
- }
50
- });
51
- });
52
- function createDirectory() {
53
- const directory = realpathSync(mkdtempSync(path.join(tmpdir(), 'payload-kit-loader-')));
54
- directories.push(directory);
55
- return directory;
56
- }
57
- function installTooling({ dialect, directory }) {
58
- const packageDirectory = path.join(directory, 'node_modules', 'drizzle-kit');
59
- mkdirSync(packageDirectory, {
60
- recursive: true
61
- });
62
- writeFileSync(path.join(packageDirectory, 'package.json'), JSON.stringify({
63
- exports: {
64
- './api': './api.cjs'
65
- },
66
- name: 'drizzle-kit'
67
- }));
68
- writeFileSync(path.join(packageDirectory, 'api.cjs'), `exports.${dialect === 'sqlite' ? 'generateSQLiteDrizzleJson' : 'generateDrizzleJson'} = () => ({ dialect: ${JSON.stringify(dialect)}, source: ${JSON.stringify(directory)} })`);
69
- }
70
-
71
- //# sourceMappingURL=createRequireDrizzleKit.spec.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/sqlite/createRequireDrizzleKit.spec.ts"],"sourcesContent":["import { mkdirSync, mkdtempSync, realpathSync, rmSync, writeFileSync } from 'node:fs'\nimport nodeModule from 'node:module'\nimport { tmpdir } from 'node:os'\nimport path from 'node:path'\nimport { pathToFileURL } from 'node:url'\nimport { afterEach, describe, expect, it } from 'vitest'\n\nimport { createRequireDrizzleKit as createPostgresRequireDrizzleKit } from '../postgres/requireDrizzleKit.js'\nimport { createRequireDrizzleKit as createSQLiteRequireDrizzleKit } from './createRequireDrizzleKit.js'\n\nconst directories: string[] = []\n\nafterEach(() => {\n const require = nodeModule.createRequire(import.meta.url)\n\n for (const directory of directories.splice(0)) {\n for (const filename of Object.keys(require.cache)) {\n if (filename.startsWith(`${directory}${path.sep}`)) {\n delete require.cache[filename]\n }\n }\n rmSync(directory, { force: true, recursive: true })\n }\n})\n\ndescribe.each([\n { createRequireDrizzleKit: createSQLiteRequireDrizzleKit, dialect: 'sqlite' },\n { createRequireDrizzleKit: createPostgresRequireDrizzleKit, dialect: 'postgres' },\n])('createRequireDrizzleKit ($dialect)', ({ createRequireDrizzleKit, dialect }) => {\n it('should lazily resolve tooling from each owning adapter', async () => {\n for (let index = 0; index < 2; index++) {\n const directory = createDirectory()\n const load = createRequireDrizzleKit({\n from: pathToFileURL(path.join(directory, 'adapter.js')).href,\n })\n\n await expect(load()).rejects.toThrow(/drizzle-kit/)\n installTooling({ dialect, directory })\n\n expect((await load()).generateDrizzleJson({})).toEqual({ dialect, source: directory })\n }\n })\n})\n\nfunction createDirectory() {\n const directory = realpathSync(mkdtempSync(path.join(tmpdir(), 'payload-kit-loader-')))\n\n directories.push(directory)\n return directory\n}\n\nfunction installTooling({ dialect, directory }: { dialect: string; directory: string }) {\n const packageDirectory = path.join(directory, 'node_modules', 'drizzle-kit')\n\n mkdirSync(packageDirectory, { recursive: true })\n writeFileSync(\n path.join(packageDirectory, 'package.json'),\n JSON.stringify({ exports: { './api': './api.cjs' }, name: 'drizzle-kit' }),\n )\n writeFileSync(\n path.join(packageDirectory, 'api.cjs'),\n `exports.${dialect === 'sqlite' ? 'generateSQLiteDrizzleJson' : 'generateDrizzleJson'} = () => ({ dialect: ${JSON.stringify(dialect)}, source: ${JSON.stringify(directory)} })`,\n )\n}\n"],"names":["mkdirSync","mkdtempSync","realpathSync","rmSync","writeFileSync","nodeModule","tmpdir","path","pathToFileURL","afterEach","describe","expect","it","createRequireDrizzleKit","createPostgresRequireDrizzleKit","createSQLiteRequireDrizzleKit","directories","require","createRequire","url","directory","splice","filename","Object","keys","cache","startsWith","sep","force","recursive","each","dialect","index","createDirectory","load","from","join","href","rejects","toThrow","installTooling","generateDrizzleJson","toEqual","source","push","packageDirectory","JSON","stringify","exports","name"],"mappings":"AAAA,SAASA,SAAS,EAAEC,WAAW,EAAEC,YAAY,EAAEC,MAAM,EAAEC,aAAa,QAAQ,UAAS;AACrF,OAAOC,gBAAgB,cAAa;AACpC,SAASC,MAAM,QAAQ,UAAS;AAChC,OAAOC,UAAU,YAAW;AAC5B,SAASC,aAAa,QAAQ,WAAU;AACxC,SAASC,SAAS,EAAEC,QAAQ,EAAEC,MAAM,EAAEC,EAAE,QAAQ,SAAQ;AAExD,SAASC,2BAA2BC,+BAA+B,QAAQ,mCAAkC;AAC7G,SAASD,2BAA2BE,6BAA6B,QAAQ,+BAA8B;AAEvG,MAAMC,cAAwB,EAAE;AAEhCP,UAAU;IACR,MAAMQ,UAAUZ,WAAWa,aAAa,CAAC,YAAYC,GAAG;IAExD,KAAK,MAAMC,aAAaJ,YAAYK,MAAM,CAAC,GAAI;QAC7C,KAAK,MAAMC,YAAYC,OAAOC,IAAI,CAACP,QAAQQ,KAAK,EAAG;YACjD,IAAIH,SAASI,UAAU,CAAC,GAAGN,YAAYb,KAAKoB,GAAG,EAAE,GAAG;gBAClD,OAAOV,QAAQQ,KAAK,CAACH,SAAS;YAChC;QACF;QACAnB,OAAOiB,WAAW;YAAEQ,OAAO;YAAMC,WAAW;QAAK;IACnD;AACF;AAEAnB,SAASoB,IAAI,CAAC;IACZ;QAAEjB,yBAAyBE;QAA+BgB,SAAS;IAAS;IAC5E;QAAElB,yBAAyBC;QAAiCiB,SAAS;IAAW;CACjF,EAAE,sCAAsC,CAAC,EAAElB,uBAAuB,EAAEkB,OAAO,EAAE;IAC5EnB,GAAG,0DAA0D;QAC3D,IAAK,IAAIoB,QAAQ,GAAGA,QAAQ,GAAGA,QAAS;YACtC,MAAMZ,YAAYa;YAClB,MAAMC,OAAOrB,wBAAwB;gBACnCsB,MAAM3B,cAAcD,KAAK6B,IAAI,CAAChB,WAAW,eAAeiB,IAAI;YAC9D;YAEA,MAAM1B,OAAOuB,QAAQI,OAAO,CAACC,OAAO,CAAC;YACrCC,eAAe;gBAAET;gBAASX;YAAU;YAEpCT,OAAO,AAAC,CAAA,MAAMuB,MAAK,EAAGO,mBAAmB,CAAC,CAAC,IAAIC,OAAO,CAAC;gBAAEX;gBAASY,QAAQvB;YAAU;QACtF;IACF;AACF;AAEA,SAASa;IACP,MAAMb,YAAYlB,aAAaD,YAAYM,KAAK6B,IAAI,CAAC9B,UAAU;IAE/DU,YAAY4B,IAAI,CAACxB;IACjB,OAAOA;AACT;AAEA,SAASoB,eAAe,EAAET,OAAO,EAAEX,SAAS,EAA0C;IACpF,MAAMyB,mBAAmBtC,KAAK6B,IAAI,CAAChB,WAAW,gBAAgB;IAE9DpB,UAAU6C,kBAAkB;QAAEhB,WAAW;IAAK;IAC9CzB,cACEG,KAAK6B,IAAI,CAACS,kBAAkB,iBAC5BC,KAAKC,SAAS,CAAC;QAAEC,SAAS;YAAE,SAAS;QAAY;QAAGC,MAAM;IAAc;IAE1E7C,cACEG,KAAK6B,IAAI,CAACS,kBAAkB,YAC5B,CAAC,QAAQ,EAAEd,YAAY,WAAW,8BAA8B,sBAAsB,qBAAqB,EAAEe,KAAKC,SAAS,CAAChB,SAAS,UAAU,EAAEe,KAAKC,SAAS,CAAC3B,WAAW,GAAG,CAAC;AAEnL"}
@@ -1,86 +0,0 @@
1
- import { build } from 'esbuild';
2
- import { execFileSync } from 'node:child_process';
3
- import { mkdtempSync, rmSync, writeFileSync } from 'node:fs';
4
- import { tmpdir } from 'node:os';
5
- import path from 'node:path';
6
- import { fileURLToPath, pathToFileURL } from 'node:url';
7
- import { afterEach, describe, expect, it } from 'vitest';
8
- const workspaceDirectory = fileURLToPath(new URL('../../../../', import.meta.url));
9
- const temporaryDirectories = [];
10
- afterEach(()=>{
11
- for (const directory of temporaryDirectories.splice(0)){
12
- rmSync(directory, {
13
- force: true,
14
- recursive: true
15
- });
16
- }
17
- });
18
- describe('Drizzle Kit tooling in Node', ()=>{
19
- it.each([
20
- 'db-sqlite',
21
- 'db-postgres'
22
- ])('should resolve real tooling from %s outside Vitest and generate schema changes', async (adapter)=>{
23
- const directory = mkdtempSync(path.join(tmpdir(), 'payload-drizzle-tooling-'));
24
- temporaryDirectories.push(directory);
25
- const isSQLite = adapter === 'db-sqlite';
26
- // Exercise the real loader outside Vitest.
27
- await build({
28
- alias: {
29
- payload: path.join(workspaceDirectory, 'packages/payload/src/utilities/dynamicImport.ts')
30
- },
31
- bundle: true,
32
- entryPoints: [
33
- path.join(workspaceDirectory, isSQLite ? 'packages/drizzle/src/sqlite/createRequireDrizzleKit.ts' : 'packages/drizzle/src/postgres/requireDrizzleKit.ts')
34
- ],
35
- format: 'esm',
36
- logLevel: 'silent',
37
- outfile: path.join(directory, 'tooling.mjs'),
38
- platform: 'node'
39
- });
40
- const from = pathToFileURL(path.join(workspaceDirectory, 'packages', adapter, 'src/index.ts')).href;
41
- const script = path.join(directory, 'check.mjs');
42
- writeFileSync(script, `
43
- import assert from 'node:assert/strict'
44
- import { createRequire } from 'node:module'
45
- import { createRequireDrizzleKit } from './tooling.mjs'
46
- const require = createRequire(${JSON.stringify(from)})
47
- assert.equal(process.env.VITEST, undefined)
48
- const tooling = await createRequireDrizzleKit({ from: ${JSON.stringify(from)} })()
49
- ${isSQLite ? "const { sqliteTable, integer } = require('drizzle-orm/sqlite-core')" : "const { pgTable, integer: pgInteger } = require('drizzle-orm/pg-core')"}
50
- const schema = ${isSQLite ? "{ probe: sqliteTable('probe', { id: integer('id').primaryKey() }) }" : "{ probe: pgTable('probe', { id: pgInteger('id').primaryKey() }) }"}
51
- const before = await tooling.generateDrizzleJson({})
52
- const after = await tooling.generateDrizzleJson(schema)
53
- const statements = await tooling.generateMigration(before, after)
54
- assert.ok(statements.some(sql => sql.includes('CREATE TABLE')))
55
- if (${isSQLite}) {
56
- const { createClient } = require('@libsql/client')
57
- const { drizzle } = require('drizzle-orm/libsql')
58
- const client = createClient({ url: 'file::memory:' })
59
- try {
60
- const pushed = await tooling.pushSchema(schema, drizzle(client))
61
- await pushed.apply()
62
- await client.execute('INSERT INTO probe (id) VALUES (42)')
63
- const result = await client.execute('SELECT id FROM probe')
64
- assert.equal(result.rows[0].id, 42)
65
- } finally {
66
- client.close()
67
- }
68
- }
69
- console.log('schema tooling passed')
70
- `);
71
- const env = {
72
- ...process.env
73
- };
74
- delete env.VITEST;
75
- const output = execFileSync(process.execPath, [
76
- script
77
- ], {
78
- encoding: 'utf8',
79
- env,
80
- timeout: 30_000
81
- });
82
- expect(output).toContain('schema tooling passed');
83
- });
84
- });
85
-
86
- //# sourceMappingURL=drizzleKitTooling.spec.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/sqlite/drizzleKitTooling.spec.ts"],"sourcesContent":["import { build } from 'esbuild'\nimport { execFileSync } from 'node:child_process'\nimport { mkdtempSync, rmSync, writeFileSync } from 'node:fs'\nimport { tmpdir } from 'node:os'\nimport path from 'node:path'\nimport { fileURLToPath, pathToFileURL } from 'node:url'\nimport { afterEach, describe, expect, it } from 'vitest'\n\nconst workspaceDirectory = fileURLToPath(new URL('../../../../', import.meta.url))\nconst temporaryDirectories: string[] = []\n\nafterEach(() => {\n for (const directory of temporaryDirectories.splice(0)) {\n rmSync(directory, { force: true, recursive: true })\n }\n})\n\ndescribe('Drizzle Kit tooling in Node', () => {\n it.each(['db-sqlite', 'db-postgres'])(\n 'should resolve real tooling from %s outside Vitest and generate schema changes',\n async (adapter) => {\n const directory = mkdtempSync(path.join(tmpdir(), 'payload-drizzle-tooling-'))\n temporaryDirectories.push(directory)\n\n const isSQLite = adapter === 'db-sqlite'\n\n // Exercise the real loader outside Vitest.\n await build({\n alias: {\n payload: path.join(workspaceDirectory, 'packages/payload/src/utilities/dynamicImport.ts'),\n },\n bundle: true,\n entryPoints: [\n path.join(\n workspaceDirectory,\n isSQLite\n ? 'packages/drizzle/src/sqlite/createRequireDrizzleKit.ts'\n : 'packages/drizzle/src/postgres/requireDrizzleKit.ts',\n ),\n ],\n format: 'esm',\n logLevel: 'silent',\n outfile: path.join(directory, 'tooling.mjs'),\n platform: 'node',\n })\n\n const from = pathToFileURL(\n path.join(workspaceDirectory, 'packages', adapter, 'src/index.ts'),\n ).href\n const script = path.join(directory, 'check.mjs')\n\n writeFileSync(\n script,\n `\nimport assert from 'node:assert/strict'\nimport { createRequire } from 'node:module'\nimport { createRequireDrizzleKit } from './tooling.mjs'\nconst require = createRequire(${JSON.stringify(from)})\nassert.equal(process.env.VITEST, undefined)\nconst tooling = await createRequireDrizzleKit({ from: ${JSON.stringify(from)} })()\n${\n isSQLite\n ? \"const { sqliteTable, integer } = require('drizzle-orm/sqlite-core')\"\n : \"const { pgTable, integer: pgInteger } = require('drizzle-orm/pg-core')\"\n}\nconst schema = ${\n isSQLite\n ? \"{ probe: sqliteTable('probe', { id: integer('id').primaryKey() }) }\"\n : \"{ probe: pgTable('probe', { id: pgInteger('id').primaryKey() }) }\"\n }\nconst before = await tooling.generateDrizzleJson({})\nconst after = await tooling.generateDrizzleJson(schema)\nconst statements = await tooling.generateMigration(before, after)\nassert.ok(statements.some(sql => sql.includes('CREATE TABLE')))\nif (${isSQLite}) {\nconst { createClient } = require('@libsql/client')\nconst { drizzle } = require('drizzle-orm/libsql')\nconst client = createClient({ url: 'file::memory:' })\ntry {\n const pushed = await tooling.pushSchema(schema, drizzle(client))\n await pushed.apply()\n await client.execute('INSERT INTO probe (id) VALUES (42)')\n const result = await client.execute('SELECT id FROM probe')\n assert.equal(result.rows[0].id, 42)\n} finally {\n client.close()\n}\n}\nconsole.log('schema tooling passed')\n`,\n )\n\n const env = { ...process.env }\n delete env.VITEST\n\n const output = execFileSync(process.execPath, [script], {\n encoding: 'utf8',\n env,\n timeout: 30_000,\n })\n\n expect(output).toContain('schema tooling passed')\n },\n )\n})\n"],"names":["build","execFileSync","mkdtempSync","rmSync","writeFileSync","tmpdir","path","fileURLToPath","pathToFileURL","afterEach","describe","expect","it","workspaceDirectory","URL","url","temporaryDirectories","directory","splice","force","recursive","each","adapter","join","push","isSQLite","alias","payload","bundle","entryPoints","format","logLevel","outfile","platform","from","href","script","JSON","stringify","env","process","VITEST","output","execPath","encoding","timeout","toContain"],"mappings":"AAAA,SAASA,KAAK,QAAQ,UAAS;AAC/B,SAASC,YAAY,QAAQ,qBAAoB;AACjD,SAASC,WAAW,EAAEC,MAAM,EAAEC,aAAa,QAAQ,UAAS;AAC5D,SAASC,MAAM,QAAQ,UAAS;AAChC,OAAOC,UAAU,YAAW;AAC5B,SAASC,aAAa,EAAEC,aAAa,QAAQ,WAAU;AACvD,SAASC,SAAS,EAAEC,QAAQ,EAAEC,MAAM,EAAEC,EAAE,QAAQ,SAAQ;AAExD,MAAMC,qBAAqBN,cAAc,IAAIO,IAAI,gBAAgB,YAAYC,GAAG;AAChF,MAAMC,uBAAiC,EAAE;AAEzCP,UAAU;IACR,KAAK,MAAMQ,aAAaD,qBAAqBE,MAAM,CAAC,GAAI;QACtDf,OAAOc,WAAW;YAAEE,OAAO;YAAMC,WAAW;QAAK;IACnD;AACF;AAEAV,SAAS,+BAA+B;IACtCE,GAAGS,IAAI,CAAC;QAAC;QAAa;KAAc,EAClC,kFACA,OAAOC;QACL,MAAML,YAAYf,YAAYI,KAAKiB,IAAI,CAAClB,UAAU;QAClDW,qBAAqBQ,IAAI,CAACP;QAE1B,MAAMQ,WAAWH,YAAY;QAE7B,2CAA2C;QAC3C,MAAMtB,MAAM;YACV0B,OAAO;gBACLC,SAASrB,KAAKiB,IAAI,CAACV,oBAAoB;YACzC;YACAe,QAAQ;YACRC,aAAa;gBACXvB,KAAKiB,IAAI,CACPV,oBACAY,WACI,2DACA;aAEP;YACDK,QAAQ;YACRC,UAAU;YACVC,SAAS1B,KAAKiB,IAAI,CAACN,WAAW;YAC9BgB,UAAU;QACZ;QAEA,MAAMC,OAAO1B,cACXF,KAAKiB,IAAI,CAACV,oBAAoB,YAAYS,SAAS,iBACnDa,IAAI;QACN,MAAMC,SAAS9B,KAAKiB,IAAI,CAACN,WAAW;QAEpCb,cACEgC,QACA,CAAC;;;;8BAIqB,EAAEC,KAAKC,SAAS,CAACJ,MAAM;;sDAEC,EAAEG,KAAKC,SAAS,CAACJ,MAAM;AAC7E,EACET,WACI,wEACA,yEACL;eACc,EACLA,WACI,wEACA,oEACL;;;;;IAKL,EAAEA,SAAS;;;;;;;;;;;;;;;AAef,CAAC;QAGK,MAAMc,MAAM;YAAE,GAAGC,QAAQD,GAAG;QAAC;QAC7B,OAAOA,IAAIE,MAAM;QAEjB,MAAMC,SAASzC,aAAauC,QAAQG,QAAQ,EAAE;YAACP;SAAO,EAAE;YACtDQ,UAAU;YACVL;YACAM,SAAS;QACX;QAEAlC,OAAO+B,QAAQI,SAAS,CAAC;IAC3B;AAEJ"}
@@ -1,42 +0,0 @@
1
- import { ValidationError } from 'payload';
2
- import { describe, expect, it } from 'vitest';
3
- import { handleUpsertError } from './handleUpsertError.js';
4
- const adapter = {
5
- fieldConstraints: {}
6
- };
7
- describe('handleUpsertError', ()=>{
8
- it('preserves the failing sub-table name on the ValidationError', ()=>{
9
- const pgError = {
10
- code: '23505',
11
- constraint: 'ultrasonic_avail_country_pkey',
12
- detail: 'Key (id)=(6a27e2a63f4b64567370f595) already exists.'
13
- };
14
- let thrown;
15
- try {
16
- handleUpsertError({
17
- adapter,
18
- collectionSlug: 'ultrasonic',
19
- error: pgError,
20
- tableName: 'ultrasonic_avail_country'
21
- });
22
- } catch (error) {
23
- thrown = error;
24
- }
25
- expect(thrown).toBeInstanceOf(ValidationError);
26
- const validationError = thrown;
27
- const fieldError = validationError.data.errors[0];
28
- expect(fieldError.path).toBe('id');
29
- expect(fieldError.tableName).toBe('ultrasonic_avail_country');
30
- });
31
- it('re-throws non unique-constraint errors unchanged', ()=>{
32
- const otherError = new Error('some other db error');
33
- expect(()=>handleUpsertError({
34
- adapter,
35
- collectionSlug: 'ultrasonic',
36
- error: otherError,
37
- tableName: 'ultrasonic_avail_country'
38
- })).toThrow(otherError);
39
- });
40
- });
41
-
42
- //# sourceMappingURL=handleUpsertError.spec.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/upsertRow/handleUpsertError.spec.ts"],"sourcesContent":["import { ValidationError } from 'payload'\nimport { describe, expect, it } from 'vitest'\n\nimport type { DrizzleAdapter } from '../types.js'\n\nimport { handleUpsertError } from './handleUpsertError.js'\n\nconst adapter = { fieldConstraints: {} } as unknown as DrizzleAdapter\n\ndescribe('handleUpsertError', () => {\n it('preserves the failing sub-table name on the ValidationError', () => {\n const pgError = {\n code: '23505',\n constraint: 'ultrasonic_avail_country_pkey',\n detail: 'Key (id)=(6a27e2a63f4b64567370f595) already exists.',\n }\n\n let thrown: unknown\n try {\n handleUpsertError({\n adapter,\n collectionSlug: 'ultrasonic',\n error: pgError,\n tableName: 'ultrasonic_avail_country',\n })\n } catch (error) {\n thrown = error\n }\n\n expect(thrown).toBeInstanceOf(ValidationError)\n const validationError = thrown as ValidationError\n const fieldError = validationError.data.errors[0]!\n expect(fieldError.path).toBe('id')\n expect(fieldError.tableName).toBe('ultrasonic_avail_country')\n })\n\n it('re-throws non unique-constraint errors unchanged', () => {\n const otherError = new Error('some other db error')\n\n expect(() =>\n handleUpsertError({\n adapter,\n collectionSlug: 'ultrasonic',\n error: otherError,\n tableName: 'ultrasonic_avail_country',\n }),\n ).toThrow(otherError)\n })\n})\n"],"names":["ValidationError","describe","expect","it","handleUpsertError","adapter","fieldConstraints","pgError","code","constraint","detail","thrown","collectionSlug","error","tableName","toBeInstanceOf","validationError","fieldError","data","errors","path","toBe","otherError","Error","toThrow"],"mappings":"AAAA,SAASA,eAAe,QAAQ,UAAS;AACzC,SAASC,QAAQ,EAAEC,MAAM,EAAEC,EAAE,QAAQ,SAAQ;AAI7C,SAASC,iBAAiB,QAAQ,yBAAwB;AAE1D,MAAMC,UAAU;IAAEC,kBAAkB,CAAC;AAAE;AAEvCL,SAAS,qBAAqB;IAC5BE,GAAG,+DAA+D;QAChE,MAAMI,UAAU;YACdC,MAAM;YACNC,YAAY;YACZC,QAAQ;QACV;QAEA,IAAIC;QACJ,IAAI;YACFP,kBAAkB;gBAChBC;gBACAO,gBAAgB;gBAChBC,OAAON;gBACPO,WAAW;YACb;QACF,EAAE,OAAOD,OAAO;YACdF,SAASE;QACX;QAEAX,OAAOS,QAAQI,cAAc,CAACf;QAC9B,MAAMgB,kBAAkBL;QACxB,MAAMM,aAAaD,gBAAgBE,IAAI,CAACC,MAAM,CAAC,EAAE;QACjDjB,OAAOe,WAAWG,IAAI,EAAEC,IAAI,CAAC;QAC7BnB,OAAOe,WAAWH,SAAS,EAAEO,IAAI,CAAC;IACpC;IAEAlB,GAAG,oDAAoD;QACrD,MAAMmB,aAAa,IAAIC,MAAM;QAE7BrB,OAAO,IACLE,kBAAkB;gBAChBC;gBACAO,gBAAgB;gBAChBC,OAAOS;gBACPR,WAAW;YACb,IACAU,OAAO,CAACF;IACZ;AACF"}
@@ -1,15 +0,0 @@
1
- import { describe, it, expect } from 'vitest';
2
- import { isValidStringID } from './isValidStringID.js';
3
- describe('isValidStringID', ()=>{
4
- it('should pass', ()=>{
5
- expect(isValidStringID('1')).toBe(true);
6
- expect(isValidStringID('a_b_c')).toBe(true);
7
- expect(isValidStringID('8cc2df6d-6e07-4da4-be48-5fa747c3b92b')).toBe(true);
8
- });
9
- it('should not pass', ()=>{
10
- expect(isValidStringID('1 2 3')).toBe(false);
11
- expect(isValidStringID('1@')).toBe(false);
12
- });
13
- });
14
-
15
- //# sourceMappingURL=isValidStringID.spec.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/utilities/isValidStringID.spec.ts"],"sourcesContent":["import { describe, it, expect } from 'vitest'\nimport { isValidStringID } from './isValidStringID.js'\n\ndescribe('isValidStringID', () => {\n it('should pass', () => {\n expect(isValidStringID('1')).toBe(true)\n expect(isValidStringID('a_b_c')).toBe(true)\n expect(isValidStringID('8cc2df6d-6e07-4da4-be48-5fa747c3b92b')).toBe(true)\n })\n\n it('should not pass', () => {\n expect(isValidStringID('1 2 3')).toBe(false)\n expect(isValidStringID('1@')).toBe(false)\n })\n})\n"],"names":["describe","it","expect","isValidStringID","toBe"],"mappings":"AAAA,SAASA,QAAQ,EAAEC,EAAE,EAAEC,MAAM,QAAQ,SAAQ;AAC7C,SAASC,eAAe,QAAQ,uBAAsB;AAEtDH,SAAS,mBAAmB;IAC1BC,GAAG,eAAe;QAChBC,OAAOC,gBAAgB,MAAMC,IAAI,CAAC;QAClCF,OAAOC,gBAAgB,UAAUC,IAAI,CAAC;QACtCF,OAAOC,gBAAgB,yCAAyCC,IAAI,CAAC;IACvE;IAEAH,GAAG,mBAAmB;QACpBC,OAAOC,gBAAgB,UAAUC,IAAI,CAAC;QACtCF,OAAOC,gBAAgB,OAAOC,IAAI,CAAC;IACrC;AACF"}
@@ -1,19 +0,0 @@
1
- import { describe, expect, it } from 'vitest';
2
- import { maxIdentifierLength, validateIdentifierLength } from './validateIdentifierLength.js';
3
- describe('validateIdentifierLength', ()=>{
4
- it('should return the name unchanged when at or under the 63-char limit', ()=>{
5
- const name = 'a'.repeat(maxIdentifierLength);
6
- expect(validateIdentifierLength(name)).toBe(name);
7
- });
8
- it('should throw when the name exceeds the 63-char limit', ()=>{
9
- const name = 'a'.repeat(maxIdentifierLength + 1);
10
- expect(()=>validateIdentifierLength(name)).toThrow('Exceeded max identifier length');
11
- });
12
- it('should include the invalid name and the dbName tip in the error', ()=>{
13
- const name = `some_long_table_name${'x'.repeat(maxIdentifierLength)}_locales`;
14
- expect(()=>validateIdentifierLength(name)).toThrow(name);
15
- expect(()=>validateIdentifierLength(name)).toThrow('You can use the dbName property to reduce the table name length');
16
- });
17
- });
18
-
19
- //# sourceMappingURL=validateIdentifierLength.spec.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/utilities/validateIdentifierLength.spec.ts"],"sourcesContent":["import { describe, expect, it } from 'vitest'\n\nimport { maxIdentifierLength, validateIdentifierLength } from './validateIdentifierLength.js'\n\ndescribe('validateIdentifierLength', () => {\n it('should return the name unchanged when at or under the 63-char limit', () => {\n const name = 'a'.repeat(maxIdentifierLength)\n\n expect(validateIdentifierLength(name)).toBe(name)\n })\n\n it('should throw when the name exceeds the 63-char limit', () => {\n const name = 'a'.repeat(maxIdentifierLength + 1)\n\n expect(() => validateIdentifierLength(name)).toThrow('Exceeded max identifier length')\n })\n\n it('should include the invalid name and the dbName tip in the error', () => {\n const name = `some_long_table_name${'x'.repeat(maxIdentifierLength)}_locales`\n\n expect(() => validateIdentifierLength(name)).toThrow(name)\n expect(() => validateIdentifierLength(name)).toThrow(\n 'You can use the dbName property to reduce the table name length',\n )\n })\n})\n"],"names":["describe","expect","it","maxIdentifierLength","validateIdentifierLength","name","repeat","toBe","toThrow"],"mappings":"AAAA,SAASA,QAAQ,EAAEC,MAAM,EAAEC,EAAE,QAAQ,SAAQ;AAE7C,SAASC,mBAAmB,EAAEC,wBAAwB,QAAQ,gCAA+B;AAE7FJ,SAAS,4BAA4B;IACnCE,GAAG,uEAAuE;QACxE,MAAMG,OAAO,IAAIC,MAAM,CAACH;QAExBF,OAAOG,yBAAyBC,OAAOE,IAAI,CAACF;IAC9C;IAEAH,GAAG,wDAAwD;QACzD,MAAMG,OAAO,IAAIC,MAAM,CAACH,sBAAsB;QAE9CF,OAAO,IAAMG,yBAAyBC,OAAOG,OAAO,CAAC;IACvD;IAEAN,GAAG,mEAAmE;QACpE,MAAMG,OAAO,CAAC,oBAAoB,EAAE,IAAIC,MAAM,CAACH,qBAAqB,QAAQ,CAAC;QAE7EF,OAAO,IAAMG,yBAAyBC,OAAOG,OAAO,CAACH;QACrDJ,OAAO,IAAMG,yBAAyBC,OAAOG,OAAO,CAClD;IAEJ;AACF"}