@payloadcms/drizzle 4.0.0-internal.7e57eed → 4.0.0-internal.8089ef7

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 (164) hide show
  1. package/dist/createTableName.d.ts.map +1 -1
  2. package/dist/createTableName.js +2 -7
  3. package/dist/createTableName.js.map +1 -1
  4. package/dist/exports/postgres.d.ts +3 -0
  5. package/dist/exports/postgres.d.ts.map +1 -1
  6. package/dist/exports/postgres.js +3 -0
  7. package/dist/exports/postgres.js.map +1 -1
  8. package/dist/exports/sqlite.d.ts +1 -0
  9. package/dist/exports/sqlite.d.ts.map +1 -1
  10. package/dist/exports/sqlite.js +1 -0
  11. package/dist/exports/sqlite.js.map +1 -1
  12. package/dist/find/buildPolymorphicJoinQuery.d.ts +38 -0
  13. package/dist/find/buildPolymorphicJoinQuery.d.ts.map +1 -0
  14. package/dist/find/buildPolymorphicJoinQuery.js +135 -0
  15. package/dist/find/buildPolymorphicJoinQuery.js.map +1 -0
  16. package/dist/find/buildPolymorphicJoinWhere.d.ts +20 -0
  17. package/dist/find/buildPolymorphicJoinWhere.d.ts.map +1 -0
  18. package/dist/find/buildPolymorphicJoinWhere.js +301 -0
  19. package/dist/find/buildPolymorphicJoinWhere.js.map +1 -0
  20. package/dist/find/createPolymorphicJoinWherePlan.d.ts +37 -0
  21. package/dist/find/createPolymorphicJoinWherePlan.d.ts.map +1 -0
  22. package/dist/find/createPolymorphicJoinWherePlan.js +191 -0
  23. package/dist/find/createPolymorphicJoinWherePlan.js.map +1 -0
  24. package/dist/find/traverseFields.d.ts.map +1 -1
  25. package/dist/find/traverseFields.js +19 -191
  26. package/dist/find/traverseFields.js.map +1 -1
  27. package/dist/index.d.ts +4 -10
  28. package/dist/index.d.ts.map +1 -1
  29. package/dist/index.js +2 -8
  30. package/dist/index.js.map +1 -1
  31. package/dist/migrate.d.ts.map +1 -1
  32. package/dist/migrate.js +41 -15
  33. package/dist/migrate.js.map +1 -1
  34. package/dist/migrateDown.d.ts +2 -1
  35. package/dist/migrateDown.d.ts.map +1 -1
  36. package/dist/migrateDown.js +17 -4
  37. package/dist/migrateDown.js.map +1 -1
  38. package/dist/migrateFresh.d.ts +4 -2
  39. package/dist/migrateFresh.d.ts.map +1 -1
  40. package/dist/migrateFresh.js +26 -9
  41. package/dist/migrateFresh.js.map +1 -1
  42. package/dist/migrateRefresh.d.ts +2 -1
  43. package/dist/migrateRefresh.d.ts.map +1 -1
  44. package/dist/migrateRefresh.js +20 -5
  45. package/dist/migrateRefresh.js.map +1 -1
  46. package/dist/migrateReset.d.ts +2 -1
  47. package/dist/migrateReset.d.ts.map +1 -1
  48. package/dist/migrateReset.js +18 -4
  49. package/dist/migrateReset.js.map +1 -1
  50. package/dist/migrateStatus.d.ts +2 -1
  51. package/dist/migrateStatus.d.ts.map +1 -1
  52. package/dist/migrateStatus.js +11 -6
  53. package/dist/migrateStatus.js.map +1 -1
  54. package/dist/postgres/createJSONQuery/index.js +3 -3
  55. package/dist/postgres/createJSONQuery/index.js.map +1 -1
  56. package/dist/postgres/init.d.ts.map +1 -1
  57. package/dist/postgres/init.js +6 -0
  58. package/dist/postgres/init.js.map +1 -1
  59. package/dist/postgres/predefinedMigrations/sizes-to-variants/index.d.ts +35 -0
  60. package/dist/postgres/predefinedMigrations/sizes-to-variants/index.d.ts.map +1 -0
  61. package/dist/postgres/predefinedMigrations/sizes-to-variants/index.js +185 -0
  62. package/dist/postgres/predefinedMigrations/sizes-to-variants/index.js.map +1 -0
  63. package/dist/postgres/predefinedMigrations/v2-v3/fetchAndResave/index.d.ts.map +1 -1
  64. package/dist/postgres/predefinedMigrations/v2-v3/fetchAndResave/index.js +8 -4
  65. package/dist/postgres/predefinedMigrations/v2-v3/fetchAndResave/index.js.map +1 -1
  66. package/dist/postgres/predefinedMigrations/v2-v3/index.js +1 -1
  67. package/dist/postgres/predefinedMigrations/v2-v3/index.js.map +1 -1
  68. package/dist/postgres/query/assertOperatorHandlerExtensionsInstalled.d.ts +15 -0
  69. package/dist/postgres/query/assertOperatorHandlerExtensionsInstalled.d.ts.map +1 -0
  70. package/dist/postgres/query/assertOperatorHandlerExtensionsInstalled.js +25 -0
  71. package/dist/postgres/query/assertOperatorHandlerExtensionsInstalled.js.map +1 -0
  72. package/dist/postgres/query/postgresUnaccent.d.ts +13 -0
  73. package/dist/postgres/query/postgresUnaccent.d.ts.map +1 -0
  74. package/dist/postgres/query/postgresUnaccent.js +40 -0
  75. package/dist/postgres/query/postgresUnaccent.js.map +1 -0
  76. package/dist/postgres/types.d.ts +13 -2
  77. package/dist/postgres/types.d.ts.map +1 -1
  78. package/dist/postgres/types.js.map +1 -1
  79. package/dist/queries/buildOperatorConstraint.d.ts +22 -0
  80. package/dist/queries/buildOperatorConstraint.d.ts.map +1 -0
  81. package/dist/queries/buildOperatorConstraint.js +63 -0
  82. package/dist/queries/buildOperatorConstraint.js.map +1 -0
  83. package/dist/queries/getTableColumnFromPath.d.ts +12 -3
  84. package/dist/queries/getTableColumnFromPath.d.ts.map +1 -1
  85. package/dist/queries/getTableColumnFromPath.js +59 -27
  86. package/dist/queries/getTableColumnFromPath.js.map +1 -1
  87. package/dist/queries/operatorMap.d.ts +7 -3
  88. package/dist/queries/operatorMap.d.ts.map +1 -1
  89. package/dist/queries/operatorMap.js.map +1 -1
  90. package/dist/queries/parseParams.d.ts.map +1 -1
  91. package/dist/queries/parseParams.js +262 -10
  92. package/dist/queries/parseParams.js.map +1 -1
  93. package/dist/queries/resolveRelationshipPath.d.ts +36 -0
  94. package/dist/queries/resolveRelationshipPath.d.ts.map +1 -0
  95. package/dist/queries/resolveRelationshipPath.js +66 -0
  96. package/dist/queries/resolveRelationshipPath.js.map +1 -0
  97. package/dist/queries/validateOperatorHandlers.d.ts +8 -0
  98. package/dist/queries/validateOperatorHandlers.d.ts.map +1 -0
  99. package/dist/queries/validateOperatorHandlers.js +30 -0
  100. package/dist/queries/validateOperatorHandlers.js.map +1 -0
  101. package/dist/sqlite/createJSONQuery/convertPathToJSONTraversal.js +3 -2
  102. package/dist/sqlite/createJSONQuery/convertPathToJSONTraversal.js.map +1 -1
  103. package/dist/sqlite/createJSONQuery/index.d.ts.map +1 -1
  104. package/dist/sqlite/createJSONQuery/index.js +6 -5
  105. package/dist/sqlite/createJSONQuery/index.js.map +1 -1
  106. package/dist/sqlite/insert.d.ts.map +1 -1
  107. package/dist/sqlite/insert.js +4 -1
  108. package/dist/sqlite/insert.js.map +1 -1
  109. package/dist/sqlite/predefinedMigrations/sizes-to-variants/index.d.ts +15 -0
  110. package/dist/sqlite/predefinedMigrations/sizes-to-variants/index.d.ts.map +1 -0
  111. package/dist/sqlite/predefinedMigrations/sizes-to-variants/index.js +114 -0
  112. package/dist/sqlite/predefinedMigrations/sizes-to-variants/index.js.map +1 -0
  113. package/dist/transform/write/traverseFields.d.ts.map +1 -1
  114. package/dist/transform/write/traverseFields.js +8 -14
  115. package/dist/transform/write/traverseFields.js.map +1 -1
  116. package/dist/types.d.ts +50 -2
  117. package/dist/types.d.ts.map +1 -1
  118. package/dist/types.js.map +1 -1
  119. package/dist/updateOne.d.ts.map +1 -1
  120. package/dist/updateOne.js +41 -1
  121. package/dist/updateOne.js.map +1 -1
  122. package/dist/upsertRow/index.d.ts +1 -1
  123. package/dist/upsertRow/index.d.ts.map +1 -1
  124. package/dist/upsertRow/index.js +25 -5
  125. package/dist/upsertRow/index.js.map +1 -1
  126. package/dist/utilities/buildCreateMigration.d.ts.map +1 -1
  127. package/dist/utilities/buildCreateMigration.js +12 -8
  128. package/dist/utilities/buildCreateMigration.js.map +1 -1
  129. package/dist/utilities/buildDynamicPredefinedSizesToVariantsMigration.d.ts +15 -0
  130. package/dist/utilities/buildDynamicPredefinedSizesToVariantsMigration.d.ts.map +1 -0
  131. package/dist/utilities/buildDynamicPredefinedSizesToVariantsMigration.js +110 -0
  132. package/dist/utilities/buildDynamicPredefinedSizesToVariantsMigration.js.map +1 -0
  133. package/dist/utilities/buildForeignKeyName.d.ts.map +1 -1
  134. package/dist/utilities/buildForeignKeyName.js +3 -2
  135. package/dist/utilities/buildForeignKeyName.js.map +1 -1
  136. package/dist/utilities/buildIndexName.d.ts.map +1 -1
  137. package/dist/utilities/buildIndexName.js +3 -2
  138. package/dist/utilities/buildIndexName.js.map +1 -1
  139. package/dist/utilities/checkTruncatedIdentifiers.d.ts +13 -0
  140. package/dist/utilities/checkTruncatedIdentifiers.d.ts.map +1 -0
  141. package/dist/utilities/checkTruncatedIdentifiers.js +56 -0
  142. package/dist/utilities/checkTruncatedIdentifiers.js.map +1 -0
  143. package/dist/utilities/createSchemaGenerator.d.ts.map +1 -1
  144. package/dist/utilities/createSchemaGenerator.js +3 -0
  145. package/dist/utilities/createSchemaGenerator.js.map +1 -1
  146. package/dist/utilities/getSizesToVariantsRenames.d.ts +54 -0
  147. package/dist/utilities/getSizesToVariantsRenames.d.ts.map +1 -0
  148. package/dist/utilities/getSizesToVariantsRenames.js +251 -0
  149. package/dist/utilities/getSizesToVariantsRenames.js.map +1 -0
  150. package/dist/utilities/parseJSONPathSegment.d.ts +9 -0
  151. package/dist/utilities/parseJSONPathSegment.d.ts.map +1 -0
  152. package/dist/utilities/parseJSONPathSegment.js +17 -0
  153. package/dist/utilities/parseJSONPathSegment.js.map +1 -0
  154. package/dist/utilities/validateIdentifierLength.d.ts +12 -0
  155. package/dist/utilities/validateIdentifierLength.d.ts.map +1 -0
  156. package/dist/utilities/validateIdentifierLength.js +18 -0
  157. package/dist/utilities/validateIdentifierLength.js.map +1 -0
  158. package/package.json +3 -3
  159. package/dist/schema/buildRawSchema.spec.js +0 -167
  160. package/dist/schema/buildRawSchema.spec.js.map +0 -1
  161. package/dist/upsertRow/handleUpsertError.spec.js +0 -42
  162. package/dist/upsertRow/handleUpsertError.spec.js.map +0 -1
  163. package/dist/utilities/isValidStringID.spec.js +0 -15
  164. package/dist/utilities/isValidStringID.spec.js.map +0 -1
@@ -0,0 +1,17 @@
1
+ import { sanitizePathSegment } from './sanitizePathSegment.js';
2
+ const ARRAY_INDEX_REGEX = /^\d+$/;
3
+ export const parseJSONPathSegment = (segment)=>{
4
+ const sanitizedSegment = sanitizePathSegment(segment);
5
+ if (ARRAY_INDEX_REGEX.test(sanitizedSegment)) {
6
+ return {
7
+ type: 'arrayIndex',
8
+ value: sanitizedSegment
9
+ };
10
+ }
11
+ return {
12
+ type: 'objectKey',
13
+ value: sanitizedSegment
14
+ };
15
+ };
16
+
17
+ //# sourceMappingURL=parseJSONPathSegment.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/utilities/parseJSONPathSegment.ts"],"sourcesContent":["import { sanitizePathSegment } from './sanitizePathSegment.js'\n\nexport type JSONPathSegment =\n | {\n type: 'arrayIndex'\n value: string\n }\n | {\n type: 'objectKey'\n value: string\n }\n\nconst ARRAY_INDEX_REGEX = /^\\d+$/\n\nexport const parseJSONPathSegment = (segment: string): JSONPathSegment => {\n const sanitizedSegment = sanitizePathSegment(segment)\n\n if (ARRAY_INDEX_REGEX.test(sanitizedSegment)) {\n return {\n type: 'arrayIndex',\n value: sanitizedSegment,\n }\n }\n\n return {\n type: 'objectKey',\n value: sanitizedSegment,\n }\n}\n"],"names":["sanitizePathSegment","ARRAY_INDEX_REGEX","parseJSONPathSegment","segment","sanitizedSegment","test","type","value"],"mappings":"AAAA,SAASA,mBAAmB,QAAQ,2BAA0B;AAY9D,MAAMC,oBAAoB;AAE1B,OAAO,MAAMC,uBAAuB,CAACC;IACnC,MAAMC,mBAAmBJ,oBAAoBG;IAE7C,IAAIF,kBAAkBI,IAAI,CAACD,mBAAmB;QAC5C,OAAO;YACLE,MAAM;YACNC,OAAOH;QACT;IACF;IAEA,OAAO;QACLE,MAAM;QACNC,OAAOH;IACT;AACF,EAAC"}
@@ -0,0 +1,12 @@
1
+ /** Postgres max identifier length (NAMEDATALEN - 1). */
2
+ export declare const maxIdentifierLength = 63;
3
+ /**
4
+ * Cap for builder-generated identifiers (`buildIndexName`/`buildForeignKeyName`). Sits
5
+ * below `maxIdentifierLength` to leave headroom for the appended `_idx`/`_fk`/`_N` suffixes.
6
+ */
7
+ export declare const maxGeneratedIdentifierLength: number;
8
+ /**
9
+ * Throws if a table or enum identifier exceeds the Postgres 63-char limit.
10
+ */
11
+ export declare const validateIdentifierLength: (name: string) => string;
12
+ //# sourceMappingURL=validateIdentifierLength.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validateIdentifierLength.d.ts","sourceRoot":"","sources":["../../src/utilities/validateIdentifierLength.ts"],"names":[],"mappings":"AAEA,wDAAwD;AACxD,eAAO,MAAM,mBAAmB,KAAK,CAAA;AAErC;;;GAGG;AACH,eAAO,MAAM,4BAA4B,QAA0B,CAAA;AAEnE;;GAEG;AACH,eAAO,MAAM,wBAAwB,SAAU,MAAM,KAAG,MAUvD,CAAA"}
@@ -0,0 +1,18 @@
1
+ import { APIError } from 'payload';
2
+ /** Postgres max identifier length (NAMEDATALEN - 1). */ export const maxIdentifierLength = 63;
3
+ /**
4
+ * Cap for builder-generated identifiers (`buildIndexName`/`buildForeignKeyName`). Sits
5
+ * below `maxIdentifierLength` to leave headroom for the appended `_idx`/`_fk`/`_N` suffixes.
6
+ */ export const maxGeneratedIdentifierLength = maxIdentifierLength - 3;
7
+ /**
8
+ * Throws if a table or enum identifier exceeds the Postgres 63-char limit.
9
+ */ export const validateIdentifierLength = (name)=>{
10
+ if (name.length > maxIdentifierLength) {
11
+ throw new APIError(`Exceeded max identifier length for table or enum name of ${maxIdentifierLength} characters. Invalid name: ${name}.
12
+ Tip: You can use the dbName property to reduce the table name length.
13
+ `);
14
+ }
15
+ return name;
16
+ };
17
+
18
+ //# sourceMappingURL=validateIdentifierLength.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/utilities/validateIdentifierLength.ts"],"sourcesContent":["import { APIError } from 'payload'\n\n/** Postgres max identifier length (NAMEDATALEN - 1). */\nexport const maxIdentifierLength = 63\n\n/**\n * Cap for builder-generated identifiers (`buildIndexName`/`buildForeignKeyName`). Sits\n * below `maxIdentifierLength` to leave headroom for the appended `_idx`/`_fk`/`_N` suffixes.\n */\nexport const maxGeneratedIdentifierLength = maxIdentifierLength - 3\n\n/**\n * Throws if a table or enum identifier exceeds the Postgres 63-char limit.\n */\nexport const validateIdentifierLength = (name: string): string => {\n if (name.length > maxIdentifierLength) {\n throw new APIError(\n `Exceeded max identifier length for table or enum name of ${maxIdentifierLength} characters. Invalid name: ${name}.\nTip: You can use the dbName property to reduce the table name length.\n `,\n )\n }\n\n return name\n}\n"],"names":["APIError","maxIdentifierLength","maxGeneratedIdentifierLength","validateIdentifierLength","name","length"],"mappings":"AAAA,SAASA,QAAQ,QAAQ,UAAS;AAElC,sDAAsD,GACtD,OAAO,MAAMC,sBAAsB,GAAE;AAErC;;;CAGC,GACD,OAAO,MAAMC,+BAA+BD,sBAAsB,EAAC;AAEnE;;CAEC,GACD,OAAO,MAAME,2BAA2B,CAACC;IACvC,IAAIA,KAAKC,MAAM,GAAGJ,qBAAqB;QACrC,MAAM,IAAID,SACR,CAAC,yDAAyD,EAAEC,oBAAoB,2BAA2B,EAAEG,KAAK;;MAElH,CAAC;IAEL;IAEA,OAAOA;AACT,EAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@payloadcms/drizzle",
3
- "version": "4.0.0-internal.7e57eed",
3
+ "version": "4.0.0-internal.8089ef7",
4
4
  "description": "A library of shared functions used by different payload database adapters",
5
5
  "homepage": "https://payloadcms.com",
6
6
  "repository": {
@@ -55,10 +55,10 @@
55
55
  "@types/pg": "8.20.0",
56
56
  "@types/to-snake-case": "1.0.0",
57
57
  "@payloadcms/eslint-config": "3.28.0",
58
- "payload": "4.0.0-internal.7e57eed"
58
+ "payload": "4.0.0-internal.8089ef7"
59
59
  },
60
60
  "peerDependencies": {
61
- "payload": "4.0.0-internal.7e57eed"
61
+ "payload": "4.0.0-internal.8089ef7"
62
62
  },
63
63
  "scripts": {
64
64
  "build": "pnpm build:swc && pnpm build:types",
@@ -1,167 +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 = await 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 = await 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
- });
166
-
167
- //# 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 = await 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 = await 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"],"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"],"mappings":"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"}
@@ -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"}