@payloadcms/drizzle 3.0.0-canary.2c2c95f → 3.0.0-canary.3eda767

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 (314) hide show
  1. package/dist/count.d.ts.map +1 -1
  2. package/dist/count.js +2 -2
  3. package/dist/count.js.map +1 -1
  4. package/dist/create.js +1 -1
  5. package/dist/create.js.map +1 -1
  6. package/dist/createGlobal.js +1 -1
  7. package/dist/createGlobal.js.map +1 -1
  8. package/dist/createGlobalVersion.d.ts +1 -1
  9. package/dist/createGlobalVersion.d.ts.map +1 -1
  10. package/dist/createGlobalVersion.js +7 -3
  11. package/dist/createGlobalVersion.js.map +1 -1
  12. package/dist/createTableName.d.ts.map +1 -1
  13. package/dist/createTableName.js +6 -2
  14. package/dist/createTableName.js.map +1 -1
  15. package/dist/createVersion.d.ts +1 -1
  16. package/dist/createVersion.d.ts.map +1 -1
  17. package/dist/createVersion.js +22 -15
  18. package/dist/createVersion.js.map +1 -1
  19. package/dist/deleteMany.js +1 -1
  20. package/dist/deleteMany.js.map +1 -1
  21. package/dist/deleteOne.d.ts.map +1 -1
  22. package/dist/deleteOne.js +6 -4
  23. package/dist/deleteOne.js.map +1 -1
  24. package/dist/deleteVersions.js +2 -2
  25. package/dist/deleteVersions.js.map +1 -1
  26. package/dist/destroy.d.ts.map +1 -1
  27. package/dist/destroy.js +3 -1
  28. package/dist/destroy.js.map +1 -1
  29. package/dist/exports/postgres.d.ts +15 -0
  30. package/dist/exports/postgres.d.ts.map +1 -0
  31. package/dist/exports/postgres.js +16 -0
  32. package/dist/exports/postgres.js.map +1 -0
  33. package/dist/find/buildFindManyArgs.d.ts +14 -7
  34. package/dist/find/buildFindManyArgs.d.ts.map +1 -1
  35. package/dist/find/buildFindManyArgs.js +9 -2
  36. package/dist/find/buildFindManyArgs.js.map +1 -1
  37. package/dist/find/findMany.d.ts +2 -1
  38. package/dist/find/findMany.d.ts.map +1 -1
  39. package/dist/find/findMany.js +11 -7
  40. package/dist/find/findMany.js.map +1 -1
  41. package/dist/find/traverseFields.d.ts +8 -3
  42. package/dist/find/traverseFields.d.ts.map +1 -1
  43. package/dist/find/traverseFields.js +157 -17
  44. package/dist/find/traverseFields.js.map +1 -1
  45. package/dist/find.d.ts.map +1 -1
  46. package/dist/find.js +3 -2
  47. package/dist/find.js.map +1 -1
  48. package/dist/findGlobalVersions.js +2 -2
  49. package/dist/findGlobalVersions.js.map +1 -1
  50. package/dist/findMigrationDir.d.ts.map +1 -1
  51. package/dist/findMigrationDir.js +3 -1
  52. package/dist/findMigrationDir.js.map +1 -1
  53. package/dist/findOne.d.ts +1 -1
  54. package/dist/findOne.d.ts.map +1 -1
  55. package/dist/findOne.js +2 -1
  56. package/dist/findOne.js.map +1 -1
  57. package/dist/findVersions.js +2 -2
  58. package/dist/findVersions.js.map +1 -1
  59. package/dist/index.d.ts +3 -0
  60. package/dist/index.d.ts.map +1 -1
  61. package/dist/index.js +3 -0
  62. package/dist/index.js.map +1 -1
  63. package/dist/migrate.d.ts +1 -1
  64. package/dist/migrate.d.ts.map +1 -1
  65. package/dist/migrate.js +7 -10
  66. package/dist/migrate.js.map +1 -1
  67. package/dist/migrateDown.d.ts.map +1 -1
  68. package/dist/migrateDown.js +1 -1
  69. package/dist/migrateDown.js.map +1 -1
  70. package/dist/migrateFresh.d.ts.map +1 -1
  71. package/dist/migrateFresh.js +1 -0
  72. package/dist/migrateFresh.js.map +1 -1
  73. package/dist/migrateRefresh.d.ts.map +1 -1
  74. package/dist/migrateRefresh.js +2 -1
  75. package/dist/migrateRefresh.js.map +1 -1
  76. package/dist/migrateReset.d.ts.map +1 -1
  77. package/dist/migrateReset.js +5 -3
  78. package/dist/migrateReset.js.map +1 -1
  79. package/dist/migrateStatus.js +0 -1
  80. package/dist/migrateStatus.js.map +1 -1
  81. package/dist/postgres/countDistinct.d.ts +3 -0
  82. package/dist/postgres/countDistinct.d.ts.map +1 -0
  83. package/dist/postgres/countDistinct.js +23 -0
  84. package/dist/postgres/countDistinct.js.map +1 -0
  85. package/dist/postgres/createDatabase.d.ts +14 -0
  86. package/dist/postgres/createDatabase.d.ts.map +1 -0
  87. package/dist/postgres/createDatabase.js +76 -0
  88. package/dist/postgres/createDatabase.js.map +1 -0
  89. package/dist/postgres/createJSONQuery/convertPathToJSONTraversal.d.ts +2 -0
  90. package/dist/postgres/createJSONQuery/convertPathToJSONTraversal.d.ts.map +1 -0
  91. package/dist/postgres/createJSONQuery/convertPathToJSONTraversal.js +16 -0
  92. package/dist/postgres/createJSONQuery/convertPathToJSONTraversal.js.map +1 -0
  93. package/dist/postgres/createJSONQuery/formatJSONPathSegment.d.ts +2 -0
  94. package/dist/postgres/createJSONQuery/formatJSONPathSegment.d.ts.map +1 -0
  95. package/dist/postgres/createJSONQuery/formatJSONPathSegment.js +5 -0
  96. package/dist/postgres/createJSONQuery/formatJSONPathSegment.js.map +1 -0
  97. package/dist/postgres/createJSONQuery/index.d.ts +10 -0
  98. package/dist/postgres/createJSONQuery/index.d.ts.map +1 -0
  99. package/dist/postgres/createJSONQuery/index.js +54 -0
  100. package/dist/postgres/createJSONQuery/index.js.map +1 -0
  101. package/dist/postgres/createMigration.d.ts +3 -0
  102. package/dist/postgres/createMigration.d.ts.map +1 -0
  103. package/dist/postgres/createMigration.js +95 -0
  104. package/dist/postgres/createMigration.js.map +1 -0
  105. package/dist/postgres/defaultSnapshot.d.ts +3 -0
  106. package/dist/postgres/defaultSnapshot.d.ts.map +1 -0
  107. package/dist/postgres/defaultSnapshot.js +18 -0
  108. package/dist/postgres/defaultSnapshot.js.map +1 -0
  109. package/dist/postgres/deleteWhere.d.ts +3 -0
  110. package/dist/postgres/deleteWhere.d.ts.map +1 -0
  111. package/dist/postgres/deleteWhere.js +6 -0
  112. package/dist/postgres/deleteWhere.js.map +1 -0
  113. package/dist/postgres/dropDatabase.d.ts +3 -0
  114. package/dist/postgres/dropDatabase.d.ts.map +1 -0
  115. package/dist/postgres/dropDatabase.js +9 -0
  116. package/dist/postgres/dropDatabase.js.map +1 -0
  117. package/dist/postgres/execute.d.ts +3 -0
  118. package/dist/postgres/execute.d.ts.map +1 -0
  119. package/dist/postgres/execute.js +11 -0
  120. package/dist/postgres/execute.js.map +1 -0
  121. package/dist/postgres/getMigrationTemplate.d.ts +4 -0
  122. package/dist/postgres/getMigrationTemplate.d.ts.map +1 -0
  123. package/dist/postgres/getMigrationTemplate.js +13 -0
  124. package/dist/postgres/getMigrationTemplate.js.map +1 -0
  125. package/dist/postgres/init.d.ts +3 -0
  126. package/dist/postgres/init.d.ts.map +1 -0
  127. package/dist/postgres/init.js +104 -0
  128. package/dist/postgres/init.js.map +1 -0
  129. package/dist/postgres/insert.d.ts +3 -0
  130. package/dist/postgres/insert.d.ts.map +1 -0
  131. package/dist/postgres/insert.js +12 -0
  132. package/dist/postgres/insert.js.map +1 -0
  133. package/dist/postgres/requireDrizzleKit.d.ts +3 -0
  134. package/dist/postgres/requireDrizzleKit.d.ts.map +1 -0
  135. package/dist/postgres/requireDrizzleKit.js +5 -0
  136. package/dist/postgres/requireDrizzleKit.js.map +1 -0
  137. package/dist/postgres/schema/build.d.ts +42 -0
  138. package/dist/postgres/schema/build.d.ts.map +1 -0
  139. package/dist/postgres/schema/build.js +404 -0
  140. package/dist/postgres/schema/build.js.map +1 -0
  141. package/dist/postgres/schema/createIndex.d.ts +11 -0
  142. package/dist/postgres/schema/createIndex.d.ts.map +1 -0
  143. package/dist/postgres/schema/createIndex.js +20 -0
  144. package/dist/postgres/schema/createIndex.js.map +1 -0
  145. package/dist/postgres/schema/idToUUID.d.ts +3 -0
  146. package/dist/postgres/schema/idToUUID.d.ts.map +1 -0
  147. package/dist/postgres/schema/idToUUID.js +11 -0
  148. package/dist/postgres/schema/idToUUID.js.map +1 -0
  149. package/dist/postgres/schema/parentIDColumnMap.d.ts +4 -0
  150. package/dist/postgres/schema/parentIDColumnMap.d.ts.map +1 -0
  151. package/dist/postgres/schema/parentIDColumnMap.js +9 -0
  152. package/dist/postgres/schema/parentIDColumnMap.js.map +1 -0
  153. package/dist/postgres/schema/setColumnID.d.ts +11 -0
  154. package/dist/postgres/schema/setColumnID.d.ts.map +1 -0
  155. package/dist/postgres/schema/setColumnID.js +24 -0
  156. package/dist/postgres/schema/setColumnID.js.map +1 -0
  157. package/dist/postgres/schema/traverseFields.d.ts +42 -0
  158. package/dist/postgres/schema/traverseFields.d.ts.map +1 -0
  159. package/dist/postgres/schema/traverseFields.js +739 -0
  160. package/dist/postgres/schema/traverseFields.js.map +1 -0
  161. package/dist/postgres/schema/withDefault.d.ts +4 -0
  162. package/dist/postgres/schema/withDefault.d.ts.map +1 -0
  163. package/dist/postgres/schema/withDefault.js +12 -0
  164. package/dist/postgres/schema/withDefault.js.map +1 -0
  165. package/dist/postgres/types.d.ts +139 -0
  166. package/dist/postgres/types.d.ts.map +1 -0
  167. package/dist/postgres/types.js +3 -0
  168. package/dist/postgres/types.js.map +1 -0
  169. package/dist/queries/addJoinTable.d.ts +11 -0
  170. package/dist/queries/addJoinTable.d.ts.map +1 -0
  171. package/dist/queries/addJoinTable.js +13 -0
  172. package/dist/queries/addJoinTable.js.map +1 -0
  173. package/dist/queries/buildAndOrConditions.d.ts +1 -1
  174. package/dist/queries/buildAndOrConditions.d.ts.map +1 -1
  175. package/dist/queries/buildAndOrConditions.js +2 -4
  176. package/dist/queries/buildAndOrConditions.js.map +1 -1
  177. package/dist/queries/buildOrderBy.d.ts +18 -0
  178. package/dist/queries/buildOrderBy.d.ts.map +1 -0
  179. package/dist/queries/buildOrderBy.js +56 -0
  180. package/dist/queries/buildOrderBy.js.map +1 -0
  181. package/dist/queries/buildQuery.d.ts +8 -7
  182. package/dist/queries/buildQuery.d.ts.map +1 -1
  183. package/dist/queries/buildQuery.js +12 -47
  184. package/dist/queries/buildQuery.js.map +1 -1
  185. package/dist/queries/getTableColumnFromPath.d.ts +6 -2
  186. package/dist/queries/getTableColumnFromPath.d.ts.map +1 -1
  187. package/dist/queries/getTableColumnFromPath.js +134 -87
  188. package/dist/queries/getTableColumnFromPath.js.map +1 -1
  189. package/dist/queries/operatorMap.d.ts.map +1 -1
  190. package/dist/queries/operatorMap.js.map +1 -1
  191. package/dist/queries/parseParams.d.ts +1 -1
  192. package/dist/queries/parseParams.d.ts.map +1 -1
  193. package/dist/queries/parseParams.js +52 -6
  194. package/dist/queries/parseParams.js.map +1 -1
  195. package/dist/queries/sanitizeQueryValue.d.ts +12 -1
  196. package/dist/queries/sanitizeQueryValue.d.ts.map +1 -1
  197. package/dist/queries/sanitizeQueryValue.js +81 -23
  198. package/dist/queries/sanitizeQueryValue.js.map +1 -1
  199. package/dist/queries/selectDistinct.d.ts +3 -4
  200. package/dist/queries/selectDistinct.d.ts.map +1 -1
  201. package/dist/queries/selectDistinct.js.map +1 -1
  202. package/dist/queryDrafts.d.ts.map +1 -1
  203. package/dist/queryDrafts.js +5 -6
  204. package/dist/queryDrafts.js.map +1 -1
  205. package/dist/transactions/beginTransaction.js +7 -4
  206. package/dist/transactions/beginTransaction.js.map +1 -1
  207. package/dist/transactions/commitTransaction.d.ts.map +1 -1
  208. package/dist/transactions/commitTransaction.js +3 -1
  209. package/dist/transactions/commitTransaction.js.map +1 -1
  210. package/dist/transform/read/hasManyNumber.d.ts +2 -1
  211. package/dist/transform/read/hasManyNumber.d.ts.map +1 -1
  212. package/dist/transform/read/hasManyNumber.js +12 -2
  213. package/dist/transform/read/hasManyNumber.js.map +1 -1
  214. package/dist/transform/read/hasManyText.d.ts +2 -1
  215. package/dist/transform/read/hasManyText.d.ts.map +1 -1
  216. package/dist/transform/read/hasManyText.js +12 -2
  217. package/dist/transform/read/hasManyText.js.map +1 -1
  218. package/dist/transform/read/index.d.ts +3 -2
  219. package/dist/transform/read/index.d.ts.map +1 -1
  220. package/dist/transform/read/index.js +3 -2
  221. package/dist/transform/read/index.js.map +1 -1
  222. package/dist/transform/read/relationship.d.ts +2 -1
  223. package/dist/transform/read/relationship.d.ts.map +1 -1
  224. package/dist/transform/read/relationship.js +15 -6
  225. package/dist/transform/read/relationship.js.map +1 -1
  226. package/dist/transform/read/traverseFields.d.ts +10 -3
  227. package/dist/transform/read/traverseFields.d.ts.map +1 -1
  228. package/dist/transform/read/traverseFields.js +191 -98
  229. package/dist/transform/read/traverseFields.js.map +1 -1
  230. package/dist/transform/write/array.d.ts +6 -1
  231. package/dist/transform/write/array.d.ts.map +1 -1
  232. package/dist/transform/write/array.js +7 -3
  233. package/dist/transform/write/array.js.map +1 -1
  234. package/dist/transform/write/blocks.d.ts +8 -3
  235. package/dist/transform/write/blocks.d.ts.map +1 -1
  236. package/dist/transform/write/blocks.js +19 -7
  237. package/dist/transform/write/blocks.js.map +1 -1
  238. package/dist/transform/write/index.d.ts.map +1 -1
  239. package/dist/transform/write/index.js +1 -1
  240. package/dist/transform/write/index.js.map +1 -1
  241. package/dist/transform/write/relationships.d.ts.map +1 -1
  242. package/dist/transform/write/relationships.js +6 -2
  243. package/dist/transform/write/relationships.js.map +1 -1
  244. package/dist/transform/write/selects.d.ts.map +1 -1
  245. package/dist/transform/write/selects.js +1 -1
  246. package/dist/transform/write/selects.js.map +1 -1
  247. package/dist/transform/write/traverseFields.d.ts +6 -1
  248. package/dist/transform/write/traverseFields.d.ts.map +1 -1
  249. package/dist/transform/write/traverseFields.js +58 -19
  250. package/dist/transform/write/traverseFields.js.map +1 -1
  251. package/dist/types.d.ts +13 -12
  252. package/dist/types.d.ts.map +1 -1
  253. package/dist/types.js.map +1 -1
  254. package/dist/update.d.ts.map +1 -1
  255. package/dist/update.js +4 -3
  256. package/dist/update.js.map +1 -1
  257. package/dist/updateGlobal.js +1 -1
  258. package/dist/updateGlobal.js.map +1 -1
  259. package/dist/updateGlobalVersion.js +3 -3
  260. package/dist/updateGlobalVersion.js.map +1 -1
  261. package/dist/updateVersion.js +3 -3
  262. package/dist/updateVersion.js.map +1 -1
  263. package/dist/upsertRow/deleteExistingRowsByPath.d.ts.map +1 -1
  264. package/dist/upsertRow/deleteExistingRowsByPath.js +6 -2
  265. package/dist/upsertRow/deleteExistingRowsByPath.js.map +1 -1
  266. package/dist/upsertRow/index.d.ts +1 -1
  267. package/dist/upsertRow/index.d.ts.map +1 -1
  268. package/dist/upsertRow/index.js +51 -14
  269. package/dist/upsertRow/index.js.map +1 -1
  270. package/dist/upsertRow/insertArrays.d.ts.map +1 -1
  271. package/dist/upsertRow/insertArrays.js +5 -2
  272. package/dist/upsertRow/insertArrays.js.map +1 -1
  273. package/dist/upsertRow/types.d.ts +8 -5
  274. package/dist/upsertRow/types.d.ts.map +1 -1
  275. package/dist/upsertRow/types.js.map +1 -1
  276. package/dist/utilities/buildIndexName.d.ts +7 -0
  277. package/dist/utilities/buildIndexName.d.ts.map +1 -0
  278. package/dist/utilities/buildIndexName.js +14 -0
  279. package/dist/utilities/buildIndexName.js.map +1 -0
  280. package/dist/utilities/createBlocksMap.d.ts.map +1 -1
  281. package/dist/utilities/createBlocksMap.js +4 -2
  282. package/dist/utilities/createBlocksMap.js.map +1 -1
  283. package/dist/utilities/createRelationshipMap.d.ts.map +1 -1
  284. package/dist/utilities/createRelationshipMap.js +3 -1
  285. package/dist/utilities/createRelationshipMap.js.map +1 -1
  286. package/dist/utilities/executeSchemaHooks.d.ts +24 -0
  287. package/dist/utilities/executeSchemaHooks.d.ts.map +1 -0
  288. package/dist/utilities/executeSchemaHooks.js +21 -0
  289. package/dist/utilities/executeSchemaHooks.js.map +1 -0
  290. package/dist/utilities/extendDrizzleTable.d.ts +19 -0
  291. package/dist/utilities/extendDrizzleTable.d.ts.map +1 -0
  292. package/dist/utilities/extendDrizzleTable.js +38 -0
  293. package/dist/utilities/extendDrizzleTable.js.map +1 -0
  294. package/dist/utilities/getCollectionIdType.d.ts +7 -0
  295. package/dist/utilities/getCollectionIdType.d.ts.map +1 -0
  296. package/dist/utilities/getCollectionIdType.js +11 -0
  297. package/dist/utilities/getCollectionIdType.js.map +1 -0
  298. package/dist/utilities/getNameFromDrizzleTable.d.ts +3 -0
  299. package/dist/utilities/getNameFromDrizzleTable.d.ts.map +1 -0
  300. package/dist/utilities/getNameFromDrizzleTable.js +6 -0
  301. package/dist/utilities/getNameFromDrizzleTable.js.map +1 -0
  302. package/dist/utilities/hasLocalesTable.d.ts.map +1 -1
  303. package/dist/utilities/hasLocalesTable.js +13 -3
  304. package/dist/utilities/hasLocalesTable.js.map +1 -1
  305. package/dist/utilities/isPolymorphicRelationship.d.ts +6 -0
  306. package/dist/utilities/isPolymorphicRelationship.d.ts.map +1 -0
  307. package/dist/utilities/isPolymorphicRelationship.js +5 -0
  308. package/dist/utilities/isPolymorphicRelationship.js.map +1 -0
  309. package/dist/utilities/migrationTableExists.js +1 -1
  310. package/dist/utilities/migrationTableExists.js.map +1 -1
  311. package/dist/utilities/pushDevSchema.d.ts.map +1 -1
  312. package/dist/utilities/pushDevSchema.js +4 -2
  313. package/dist/utilities/pushDevSchema.js.map +1 -1
  314. package/package.json +18 -9
@@ -1,6 +1,6 @@
1
- /* eslint-disable no-param-reassign */ import { isArrayOfRows } from '../../utilities/isArrayOfRows.js';
1
+ import { isArrayOfRows } from '../../utilities/isArrayOfRows.js';
2
2
  import { traverseFields } from './traverseFields.js';
3
- export const transformArray = ({ adapter, arrayTableName, baseTableName, blocks, blocksToDelete, data, field, locale, numbers, path, relationships, relationshipsToDelete, selects, texts })=>{
3
+ export const transformArray = ({ adapter, arrayTableName, baseTableName, blocks, blocksToDelete, data, field, locale, numbers, path, relationships, relationshipsToDelete, selects, texts, withinArrayOrBlockLocale })=>{
4
4
  const newRows = [];
5
5
  const hasUUID = adapter.tables[arrayTableName]._uuid;
6
6
  if (isArrayOfRows(data)) {
@@ -29,6 +29,9 @@ export const transformArray = ({ adapter, arrayTableName, baseTableName, blocks,
29
29
  if (field.localized) {
30
30
  newRow.row._locale = locale;
31
31
  }
32
+ if (withinArrayOrBlockLocale) {
33
+ newRow.row._locale = withinArrayOrBlockLocale;
34
+ }
32
35
  traverseFields({
33
36
  adapter,
34
37
  arrays: newRow.arrays,
@@ -47,7 +50,8 @@ export const transformArray = ({ adapter, arrayTableName, baseTableName, blocks,
47
50
  relationshipsToDelete,
48
51
  row: newRow.row,
49
52
  selects,
50
- texts
53
+ texts,
54
+ withinArrayOrBlockLocale
51
55
  });
52
56
  newRows.push(newRow);
53
57
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/transform/write/array.ts"],"sourcesContent":["/* eslint-disable no-param-reassign */\nimport type { ArrayField } from 'payload'\n\nimport type { DrizzleAdapter } from '../../types.js'\nimport type { ArrayRowToInsert, BlockRowToInsert, RelationshipToDelete } from './types.js'\n\nimport { isArrayOfRows } from '../../utilities/isArrayOfRows.js'\nimport { traverseFields } from './traverseFields.js'\n\ntype Args = {\n adapter: DrizzleAdapter\n arrayTableName: string\n baseTableName: string\n blocks: {\n [blockType: string]: BlockRowToInsert[]\n }\n blocksToDelete: Set<string>\n data: unknown\n field: ArrayField\n locale?: string\n numbers: Record<string, unknown>[]\n path: string\n relationships: Record<string, unknown>[]\n relationshipsToDelete: RelationshipToDelete[]\n selects: {\n [tableName: string]: Record<string, unknown>[]\n }\n texts: Record<string, unknown>[]\n}\n\nexport const transformArray = ({\n adapter,\n arrayTableName,\n baseTableName,\n blocks,\n blocksToDelete,\n data,\n field,\n locale,\n numbers,\n path,\n relationships,\n relationshipsToDelete,\n selects,\n texts,\n}: Args) => {\n const newRows: ArrayRowToInsert[] = []\n\n const hasUUID = adapter.tables[arrayTableName]._uuid\n\n if (isArrayOfRows(data)) {\n data.forEach((arrayRow, i) => {\n const newRow: ArrayRowToInsert = {\n arrays: {},\n locales: {},\n row: {\n _order: i + 1,\n },\n }\n\n // If we have declared a _uuid field on arrays,\n // that means the ID has to be unique,\n // and our ids within arrays are not unique.\n // So move the ID to a uuid field for storage\n // and allow the database to generate a serial id automatically\n if (hasUUID) {\n newRow.row._uuid = arrayRow.id\n delete arrayRow.id\n }\n\n if (locale) {\n newRow.locales[locale] = {\n _locale: locale,\n }\n }\n\n if (field.localized) {\n newRow.row._locale = locale\n }\n\n traverseFields({\n adapter,\n arrays: newRow.arrays,\n baseTableName,\n blocks,\n blocksToDelete,\n columnPrefix: '',\n data: arrayRow,\n fieldPrefix: '',\n fields: field.fields,\n locales: newRow.locales,\n numbers,\n parentTableName: arrayTableName,\n path: `${path || ''}${field.name}.${i}.`,\n relationships,\n relationshipsToDelete,\n row: newRow.row,\n selects,\n texts,\n })\n\n newRows.push(newRow)\n })\n }\n\n return newRows\n}\n"],"names":["isArrayOfRows","traverseFields","transformArray","adapter","arrayTableName","baseTableName","blocks","blocksToDelete","data","field","locale","numbers","path","relationships","relationshipsToDelete","selects","texts","newRows","hasUUID","tables","_uuid","forEach","arrayRow","i","newRow","arrays","locales","row","_order","id","_locale","localized","columnPrefix","fieldPrefix","fields","parentTableName","name","push"],"mappings":"AAAA,oCAAoC,GAMpC,SAASA,aAAa,QAAQ,mCAAkC;AAChE,SAASC,cAAc,QAAQ,sBAAqB;AAuBpD,OAAO,MAAMC,iBAAiB,CAAC,EAC7BC,OAAO,EACPC,cAAc,EACdC,aAAa,EACbC,MAAM,EACNC,cAAc,EACdC,IAAI,EACJC,KAAK,EACLC,MAAM,EACNC,OAAO,EACPC,IAAI,EACJC,aAAa,EACbC,qBAAqB,EACrBC,OAAO,EACPC,KAAK,EACA;IACL,MAAMC,UAA8B,EAAE;IAEtC,MAAMC,UAAUf,QAAQgB,MAAM,CAACf,eAAe,CAACgB,KAAK;IAEpD,IAAIpB,cAAcQ,OAAO;QACvBA,KAAKa,OAAO,CAAC,CAACC,UAAUC;YACtB,MAAMC,SAA2B;gBAC/BC,QAAQ,CAAC;gBACTC,SAAS,CAAC;gBACVC,KAAK;oBACHC,QAAQL,IAAI;gBACd;YACF;YAEA,+CAA+C;YAC/C,sCAAsC;YACtC,4CAA4C;YAC5C,6CAA6C;YAC7C,+DAA+D;YAC/D,IAAIL,SAAS;gBACXM,OAAOG,GAAG,CAACP,KAAK,GAAGE,SAASO,EAAE;gBAC9B,OAAOP,SAASO,EAAE;YACpB;YAEA,IAAInB,QAAQ;gBACVc,OAAOE,OAAO,CAAChB,OAAO,GAAG;oBACvBoB,SAASpB;gBACX;YACF;YAEA,IAAID,MAAMsB,SAAS,EAAE;gBACnBP,OAAOG,GAAG,CAACG,OAAO,GAAGpB;YACvB;YAEAT,eAAe;gBACbE;gBACAsB,QAAQD,OAAOC,MAAM;gBACrBpB;gBACAC;gBACAC;gBACAyB,cAAc;gBACdxB,MAAMc;gBACNW,aAAa;gBACbC,QAAQzB,MAAMyB,MAAM;gBACpBR,SAASF,OAAOE,OAAO;gBACvBf;gBACAwB,iBAAiB/B;gBACjBQ,MAAM,CAAC,EAAEA,QAAQ,GAAG,EAAEH,MAAM2B,IAAI,CAAC,CAAC,EAAEb,EAAE,CAAC,CAAC;gBACxCV;gBACAC;gBACAa,KAAKH,OAAOG,GAAG;gBACfZ;gBACAC;YACF;YAEAC,QAAQoB,IAAI,CAACb;QACf;IACF;IAEA,OAAOP;AACT,EAAC"}
1
+ {"version":3,"sources":["../../../src/transform/write/array.ts"],"sourcesContent":["import type { ArrayField } from 'payload'\n\nimport type { DrizzleAdapter } from '../../types.js'\nimport type { ArrayRowToInsert, BlockRowToInsert, RelationshipToDelete } from './types.js'\n\nimport { isArrayOfRows } from '../../utilities/isArrayOfRows.js'\nimport { traverseFields } from './traverseFields.js'\n\ntype Args = {\n adapter: DrizzleAdapter\n arrayTableName: string\n baseTableName: string\n blocks: {\n [blockType: string]: BlockRowToInsert[]\n }\n blocksToDelete: Set<string>\n data: unknown\n field: ArrayField\n locale?: string\n numbers: Record<string, unknown>[]\n path: string\n relationships: Record<string, unknown>[]\n relationshipsToDelete: RelationshipToDelete[]\n selects: {\n [tableName: string]: Record<string, unknown>[]\n }\n texts: Record<string, unknown>[]\n /**\n * Set to a locale code if this set of fields is traversed within a\n * localized array or block field\n */\n withinArrayOrBlockLocale?: string\n}\n\nexport const transformArray = ({\n adapter,\n arrayTableName,\n baseTableName,\n blocks,\n blocksToDelete,\n data,\n field,\n locale,\n numbers,\n path,\n relationships,\n relationshipsToDelete,\n selects,\n texts,\n withinArrayOrBlockLocale,\n}: Args) => {\n const newRows: ArrayRowToInsert[] = []\n\n const hasUUID = adapter.tables[arrayTableName]._uuid\n\n if (isArrayOfRows(data)) {\n data.forEach((arrayRow, i) => {\n const newRow: ArrayRowToInsert = {\n arrays: {},\n locales: {},\n row: {\n _order: i + 1,\n },\n }\n\n // If we have declared a _uuid field on arrays,\n // that means the ID has to be unique,\n // and our ids within arrays are not unique.\n // So move the ID to a uuid field for storage\n // and allow the database to generate a serial id automatically\n if (hasUUID) {\n newRow.row._uuid = arrayRow.id\n delete arrayRow.id\n }\n\n if (locale) {\n newRow.locales[locale] = {\n _locale: locale,\n }\n }\n\n if (field.localized) {\n newRow.row._locale = locale\n }\n\n if (withinArrayOrBlockLocale) {\n newRow.row._locale = withinArrayOrBlockLocale\n }\n\n traverseFields({\n adapter,\n arrays: newRow.arrays,\n baseTableName,\n blocks,\n blocksToDelete,\n columnPrefix: '',\n data: arrayRow,\n fieldPrefix: '',\n fields: field.fields,\n locales: newRow.locales,\n numbers,\n parentTableName: arrayTableName,\n path: `${path || ''}${field.name}.${i}.`,\n relationships,\n relationshipsToDelete,\n row: newRow.row,\n selects,\n texts,\n withinArrayOrBlockLocale,\n })\n\n newRows.push(newRow)\n })\n }\n\n return newRows\n}\n"],"names":["isArrayOfRows","traverseFields","transformArray","adapter","arrayTableName","baseTableName","blocks","blocksToDelete","data","field","locale","numbers","path","relationships","relationshipsToDelete","selects","texts","withinArrayOrBlockLocale","newRows","hasUUID","tables","_uuid","forEach","arrayRow","i","newRow","arrays","locales","row","_order","id","_locale","localized","columnPrefix","fieldPrefix","fields","parentTableName","name","push"],"mappings":"AAKA,SAASA,aAAa,QAAQ,mCAAkC;AAChE,SAASC,cAAc,QAAQ,sBAAqB;AA4BpD,OAAO,MAAMC,iBAAiB,CAAC,EAC7BC,OAAO,EACPC,cAAc,EACdC,aAAa,EACbC,MAAM,EACNC,cAAc,EACdC,IAAI,EACJC,KAAK,EACLC,MAAM,EACNC,OAAO,EACPC,IAAI,EACJC,aAAa,EACbC,qBAAqB,EACrBC,OAAO,EACPC,KAAK,EACLC,wBAAwB,EACnB;IACL,MAAMC,UAA8B,EAAE;IAEtC,MAAMC,UAAUhB,QAAQiB,MAAM,CAAChB,eAAe,CAACiB,KAAK;IAEpD,IAAIrB,cAAcQ,OAAO;QACvBA,KAAKc,OAAO,CAAC,CAACC,UAAUC;YACtB,MAAMC,SAA2B;gBAC/BC,QAAQ,CAAC;gBACTC,SAAS,CAAC;gBACVC,KAAK;oBACHC,QAAQL,IAAI;gBACd;YACF;YAEA,+CAA+C;YAC/C,sCAAsC;YACtC,4CAA4C;YAC5C,6CAA6C;YAC7C,+DAA+D;YAC/D,IAAIL,SAAS;gBACXM,OAAOG,GAAG,CAACP,KAAK,GAAGE,SAASO,EAAE;gBAC9B,OAAOP,SAASO,EAAE;YACpB;YAEA,IAAIpB,QAAQ;gBACVe,OAAOE,OAAO,CAACjB,OAAO,GAAG;oBACvBqB,SAASrB;gBACX;YACF;YAEA,IAAID,MAAMuB,SAAS,EAAE;gBACnBP,OAAOG,GAAG,CAACG,OAAO,GAAGrB;YACvB;YAEA,IAAIO,0BAA0B;gBAC5BQ,OAAOG,GAAG,CAACG,OAAO,GAAGd;YACvB;YAEAhB,eAAe;gBACbE;gBACAuB,QAAQD,OAAOC,MAAM;gBACrBrB;gBACAC;gBACAC;gBACA0B,cAAc;gBACdzB,MAAMe;gBACNW,aAAa;gBACbC,QAAQ1B,MAAM0B,MAAM;gBACpBR,SAASF,OAAOE,OAAO;gBACvBhB;gBACAyB,iBAAiBhC;gBACjBQ,MAAM,CAAC,EAAEA,QAAQ,GAAG,EAAEH,MAAM4B,IAAI,CAAC,CAAC,EAAEb,EAAE,CAAC,CAAC;gBACxCX;gBACAC;gBACAc,KAAKH,OAAOG,GAAG;gBACfb;gBACAC;gBACAC;YACF;YAEAC,QAAQoB,IAAI,CAACb;QACf;IACF;IAEA,OAAOP;AACT,EAAC"}
@@ -1,4 +1,4 @@
1
- import type { BlockField } from 'payload';
1
+ import type { BlocksField } from 'payload';
2
2
  import type { DrizzleAdapter } from '../../types.js';
3
3
  import type { BlockRowToInsert, RelationshipToDelete } from './types.js';
4
4
  type Args = {
@@ -9,7 +9,7 @@ type Args = {
9
9
  };
10
10
  blocksToDelete: Set<string>;
11
11
  data: Record<string, unknown>[];
12
- field: BlockField;
12
+ field: BlocksField;
13
13
  locale?: string;
14
14
  numbers: Record<string, unknown>[];
15
15
  path: string;
@@ -19,7 +19,12 @@ type Args = {
19
19
  [tableName: string]: Record<string, unknown>[];
20
20
  };
21
21
  texts: Record<string, unknown>[];
22
+ /**
23
+ * Set to a locale code if this set of fields is traversed within a
24
+ * localized array or block field
25
+ */
26
+ withinArrayOrBlockLocale?: string;
22
27
  };
23
- export declare const transformBlocks: ({ adapter, baseTableName, blocks, blocksToDelete, data, field, locale, numbers, path, relationships, relationshipsToDelete, selects, texts, }: Args) => void;
28
+ export declare const transformBlocks: ({ adapter, baseTableName, blocks, blocksToDelete, data, field, locale, numbers, path, relationships, relationshipsToDelete, selects, texts, withinArrayOrBlockLocale, }: Args) => void;
24
29
  export {};
25
30
  //# sourceMappingURL=blocks.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"blocks.d.ts","sourceRoot":"","sources":["../../../src/transform/write/blocks.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AAIzC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AACpD,OAAO,KAAK,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAA;AAIxE,KAAK,IAAI,GAAG;IACV,OAAO,EAAE,cAAc,CAAA;IACvB,aAAa,EAAE,MAAM,CAAA;IACrB,MAAM,EAAE;QACN,CAAC,SAAS,EAAE,MAAM,GAAG,gBAAgB,EAAE,CAAA;KACxC,CAAA;IACD,cAAc,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IAC3B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAA;IAC/B,KAAK,EAAE,UAAU,CAAA;IACjB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAA;IAClC,IAAI,EAAE,MAAM,CAAA;IACZ,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAA;IACxC,qBAAqB,EAAE,oBAAoB,EAAE,CAAA;IAC7C,OAAO,EAAE;QACP,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAA;KAC/C,CAAA;IACD,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAA;CACjC,CAAA;AACD,eAAO,MAAM,eAAe,kJAczB,IAAI,SAyDN,CAAA"}
1
+ {"version":3,"file":"blocks.d.ts","sourceRoot":"","sources":["../../../src/transform/write/blocks.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAI1C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AACpD,OAAO,KAAK,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAA;AAIxE,KAAK,IAAI,GAAG;IACV,OAAO,EAAE,cAAc,CAAA;IACvB,aAAa,EAAE,MAAM,CAAA;IACrB,MAAM,EAAE;QACN,CAAC,SAAS,EAAE,MAAM,GAAG,gBAAgB,EAAE,CAAA;KACxC,CAAA;IACD,cAAc,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IAC3B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAA;IAC/B,KAAK,EAAE,WAAW,CAAA;IAClB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAA;IAClC,IAAI,EAAE,MAAM,CAAA;IACZ,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAA;IACxC,qBAAqB,EAAE,oBAAoB,EAAE,CAAA;IAC7C,OAAO,EAAE;QACP,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAA;KAC/C,CAAA;IACD,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAA;IAChC;;;OAGG;IACH,wBAAwB,CAAC,EAAE,MAAM,CAAA;CAClC,CAAA;AACD,eAAO,MAAM,eAAe,4KAezB,IAAI,SAqEN,CAAA"}
@@ -1,12 +1,18 @@
1
- /* eslint-disable no-param-reassign */ import toSnakeCase from 'to-snake-case';
1
+ import toSnakeCase from 'to-snake-case';
2
2
  import { traverseFields } from './traverseFields.js';
3
- export const transformBlocks = ({ adapter, baseTableName, blocks, blocksToDelete, data, field, locale, numbers, path, relationships, relationshipsToDelete, selects, texts })=>{
3
+ export const transformBlocks = ({ adapter, baseTableName, blocks, blocksToDelete, data, field, locale, numbers, path, relationships, relationshipsToDelete, selects, texts, withinArrayOrBlockLocale })=>{
4
4
  data.forEach((blockRow, i)=>{
5
- if (typeof blockRow.blockType !== 'string') return;
5
+ if (typeof blockRow.blockType !== 'string') {
6
+ return;
7
+ }
6
8
  const matchedBlock = field.blocks.find(({ slug })=>slug === blockRow.blockType);
7
- if (!matchedBlock) return;
9
+ if (!matchedBlock) {
10
+ return;
11
+ }
8
12
  const blockType = toSnakeCase(blockRow.blockType);
9
- if (!blocks[blockType]) blocks[blockType] = [];
13
+ if (!blocks[blockType]) {
14
+ blocks[blockType] = [];
15
+ }
10
16
  const newRow = {
11
17
  arrays: {},
12
18
  locales: {},
@@ -15,7 +21,12 @@ export const transformBlocks = ({ adapter, baseTableName, blocks, blocksToDelete
15
21
  _path: `${path}${field.name}`
16
22
  }
17
23
  };
18
- if (field.localized && locale) newRow.row._locale = locale;
24
+ if (field.localized && locale) {
25
+ newRow.row._locale = locale;
26
+ }
27
+ if (withinArrayOrBlockLocale) {
28
+ newRow.row._locale = withinArrayOrBlockLocale;
29
+ }
19
30
  const blockTableName = adapter.tableNameMap.get(`${baseTableName}_blocks_${blockType}`);
20
31
  const hasUUID = adapter.tables[blockTableName]._uuid;
21
32
  // If we have declared a _uuid field on arrays,
@@ -45,7 +56,8 @@ export const transformBlocks = ({ adapter, baseTableName, blocks, blocksToDelete
45
56
  relationshipsToDelete,
46
57
  row: newRow.row,
47
58
  selects,
48
- texts
59
+ texts,
60
+ withinArrayOrBlockLocale
49
61
  });
50
62
  blocks[blockType].push(newRow);
51
63
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/transform/write/blocks.ts"],"sourcesContent":["/* eslint-disable no-param-reassign */\nimport type { BlockField } from 'payload'\n\nimport toSnakeCase from 'to-snake-case'\n\nimport type { DrizzleAdapter } from '../../types.js'\nimport type { BlockRowToInsert, RelationshipToDelete } from './types.js'\n\nimport { traverseFields } from './traverseFields.js'\n\ntype Args = {\n adapter: DrizzleAdapter\n baseTableName: string\n blocks: {\n [blockType: string]: BlockRowToInsert[]\n }\n blocksToDelete: Set<string>\n data: Record<string, unknown>[]\n field: BlockField\n locale?: string\n numbers: Record<string, unknown>[]\n path: string\n relationships: Record<string, unknown>[]\n relationshipsToDelete: RelationshipToDelete[]\n selects: {\n [tableName: string]: Record<string, unknown>[]\n }\n texts: Record<string, unknown>[]\n}\nexport const transformBlocks = ({\n adapter,\n baseTableName,\n blocks,\n blocksToDelete,\n data,\n field,\n locale,\n numbers,\n path,\n relationships,\n relationshipsToDelete,\n selects,\n texts,\n}: Args) => {\n data.forEach((blockRow, i) => {\n if (typeof blockRow.blockType !== 'string') return\n const matchedBlock = field.blocks.find(({ slug }) => slug === blockRow.blockType)\n if (!matchedBlock) return\n const blockType = toSnakeCase(blockRow.blockType)\n\n if (!blocks[blockType]) blocks[blockType] = []\n\n const newRow: BlockRowToInsert = {\n arrays: {},\n locales: {},\n row: {\n _order: i + 1,\n _path: `${path}${field.name}`,\n },\n }\n\n if (field.localized && locale) newRow.row._locale = locale\n\n const blockTableName = adapter.tableNameMap.get(`${baseTableName}_blocks_${blockType}`)\n\n const hasUUID = adapter.tables[blockTableName]._uuid\n\n // If we have declared a _uuid field on arrays,\n // that means the ID has to be unique,\n // and our ids within arrays are not unique.\n // So move the ID to a uuid field for storage\n // and allow the database to generate a serial id automatically\n if (hasUUID) {\n newRow.row._uuid = blockRow.id\n delete blockRow.id\n }\n\n traverseFields({\n adapter,\n arrays: newRow.arrays,\n baseTableName,\n blocks,\n blocksToDelete,\n columnPrefix: '',\n data: blockRow,\n fieldPrefix: '',\n fields: matchedBlock.fields,\n locales: newRow.locales,\n numbers,\n parentTableName: blockTableName,\n path: `${path || ''}${field.name}.${i}.`,\n relationships,\n relationshipsToDelete,\n row: newRow.row,\n selects,\n texts,\n })\n\n blocks[blockType].push(newRow)\n })\n}\n"],"names":["toSnakeCase","traverseFields","transformBlocks","adapter","baseTableName","blocks","blocksToDelete","data","field","locale","numbers","path","relationships","relationshipsToDelete","selects","texts","forEach","blockRow","i","blockType","matchedBlock","find","slug","newRow","arrays","locales","row","_order","_path","name","localized","_locale","blockTableName","tableNameMap","get","hasUUID","tables","_uuid","id","columnPrefix","fieldPrefix","fields","parentTableName","push"],"mappings":"AAAA,oCAAoC,GAGpC,OAAOA,iBAAiB,gBAAe;AAKvC,SAASC,cAAc,QAAQ,sBAAqB;AAqBpD,OAAO,MAAMC,kBAAkB,CAAC,EAC9BC,OAAO,EACPC,aAAa,EACbC,MAAM,EACNC,cAAc,EACdC,IAAI,EACJC,KAAK,EACLC,MAAM,EACNC,OAAO,EACPC,IAAI,EACJC,aAAa,EACbC,qBAAqB,EACrBC,OAAO,EACPC,KAAK,EACA;IACLR,KAAKS,OAAO,CAAC,CAACC,UAAUC;QACtB,IAAI,OAAOD,SAASE,SAAS,KAAK,UAAU;QAC5C,MAAMC,eAAeZ,MAAMH,MAAM,CAACgB,IAAI,CAAC,CAAC,EAAEC,IAAI,EAAE,GAAKA,SAASL,SAASE,SAAS;QAChF,IAAI,CAACC,cAAc;QACnB,MAAMD,YAAYnB,YAAYiB,SAASE,SAAS;QAEhD,IAAI,CAACd,MAAM,CAACc,UAAU,EAAEd,MAAM,CAACc,UAAU,GAAG,EAAE;QAE9C,MAAMI,SAA2B;YAC/BC,QAAQ,CAAC;YACTC,SAAS,CAAC;YACVC,KAAK;gBACHC,QAAQT,IAAI;gBACZU,OAAO,CAAC,EAAEjB,KAAK,EAAEH,MAAMqB,IAAI,CAAC,CAAC;YAC/B;QACF;QAEA,IAAIrB,MAAMsB,SAAS,IAAIrB,QAAQc,OAAOG,GAAG,CAACK,OAAO,GAAGtB;QAEpD,MAAMuB,iBAAiB7B,QAAQ8B,YAAY,CAACC,GAAG,CAAC,CAAC,EAAE9B,cAAc,QAAQ,EAAEe,UAAU,CAAC;QAEtF,MAAMgB,UAAUhC,QAAQiC,MAAM,CAACJ,eAAe,CAACK,KAAK;QAEpD,+CAA+C;QAC/C,sCAAsC;QACtC,4CAA4C;QAC5C,6CAA6C;QAC7C,+DAA+D;QAC/D,IAAIF,SAAS;YACXZ,OAAOG,GAAG,CAACW,KAAK,GAAGpB,SAASqB,EAAE;YAC9B,OAAOrB,SAASqB,EAAE;QACpB;QAEArC,eAAe;YACbE;YACAqB,QAAQD,OAAOC,MAAM;YACrBpB;YACAC;YACAC;YACAiC,cAAc;YACdhC,MAAMU;YACNuB,aAAa;YACbC,QAAQrB,aAAaqB,MAAM;YAC3BhB,SAASF,OAAOE,OAAO;YACvBf;YACAgC,iBAAiBV;YACjBrB,MAAM,CAAC,EAAEA,QAAQ,GAAG,EAAEH,MAAMqB,IAAI,CAAC,CAAC,EAAEX,EAAE,CAAC,CAAC;YACxCN;YACAC;YACAa,KAAKH,OAAOG,GAAG;YACfZ;YACAC;QACF;QAEAV,MAAM,CAACc,UAAU,CAACwB,IAAI,CAACpB;IACzB;AACF,EAAC"}
1
+ {"version":3,"sources":["../../../src/transform/write/blocks.ts"],"sourcesContent":["import type { BlocksField } from 'payload'\n\nimport toSnakeCase from 'to-snake-case'\n\nimport type { DrizzleAdapter } from '../../types.js'\nimport type { BlockRowToInsert, RelationshipToDelete } from './types.js'\n\nimport { traverseFields } from './traverseFields.js'\n\ntype Args = {\n adapter: DrizzleAdapter\n baseTableName: string\n blocks: {\n [blockType: string]: BlockRowToInsert[]\n }\n blocksToDelete: Set<string>\n data: Record<string, unknown>[]\n field: BlocksField\n locale?: string\n numbers: Record<string, unknown>[]\n path: string\n relationships: Record<string, unknown>[]\n relationshipsToDelete: RelationshipToDelete[]\n selects: {\n [tableName: string]: Record<string, unknown>[]\n }\n texts: Record<string, unknown>[]\n /**\n * Set to a locale code if this set of fields is traversed within a\n * localized array or block field\n */\n withinArrayOrBlockLocale?: string\n}\nexport const transformBlocks = ({\n adapter,\n baseTableName,\n blocks,\n blocksToDelete,\n data,\n field,\n locale,\n numbers,\n path,\n relationships,\n relationshipsToDelete,\n selects,\n texts,\n withinArrayOrBlockLocale,\n}: Args) => {\n data.forEach((blockRow, i) => {\n if (typeof blockRow.blockType !== 'string') {\n return\n }\n const matchedBlock = field.blocks.find(({ slug }) => slug === blockRow.blockType)\n if (!matchedBlock) {\n return\n }\n const blockType = toSnakeCase(blockRow.blockType)\n\n if (!blocks[blockType]) {\n blocks[blockType] = []\n }\n\n const newRow: BlockRowToInsert = {\n arrays: {},\n locales: {},\n row: {\n _order: i + 1,\n _path: `${path}${field.name}`,\n },\n }\n\n if (field.localized && locale) {\n newRow.row._locale = locale\n }\n if (withinArrayOrBlockLocale) {\n newRow.row._locale = withinArrayOrBlockLocale\n }\n\n const blockTableName = adapter.tableNameMap.get(`${baseTableName}_blocks_${blockType}`)\n\n const hasUUID = adapter.tables[blockTableName]._uuid\n\n // If we have declared a _uuid field on arrays,\n // that means the ID has to be unique,\n // and our ids within arrays are not unique.\n // So move the ID to a uuid field for storage\n // and allow the database to generate a serial id automatically\n if (hasUUID) {\n newRow.row._uuid = blockRow.id\n delete blockRow.id\n }\n\n traverseFields({\n adapter,\n arrays: newRow.arrays,\n baseTableName,\n blocks,\n blocksToDelete,\n columnPrefix: '',\n data: blockRow,\n fieldPrefix: '',\n fields: matchedBlock.fields,\n locales: newRow.locales,\n numbers,\n parentTableName: blockTableName,\n path: `${path || ''}${field.name}.${i}.`,\n relationships,\n relationshipsToDelete,\n row: newRow.row,\n selects,\n texts,\n withinArrayOrBlockLocale,\n })\n\n blocks[blockType].push(newRow)\n })\n}\n"],"names":["toSnakeCase","traverseFields","transformBlocks","adapter","baseTableName","blocks","blocksToDelete","data","field","locale","numbers","path","relationships","relationshipsToDelete","selects","texts","withinArrayOrBlockLocale","forEach","blockRow","i","blockType","matchedBlock","find","slug","newRow","arrays","locales","row","_order","_path","name","localized","_locale","blockTableName","tableNameMap","get","hasUUID","tables","_uuid","id","columnPrefix","fieldPrefix","fields","parentTableName","push"],"mappings":"AAEA,OAAOA,iBAAiB,gBAAe;AAKvC,SAASC,cAAc,QAAQ,sBAAqB;AA0BpD,OAAO,MAAMC,kBAAkB,CAAC,EAC9BC,OAAO,EACPC,aAAa,EACbC,MAAM,EACNC,cAAc,EACdC,IAAI,EACJC,KAAK,EACLC,MAAM,EACNC,OAAO,EACPC,IAAI,EACJC,aAAa,EACbC,qBAAqB,EACrBC,OAAO,EACPC,KAAK,EACLC,wBAAwB,EACnB;IACLT,KAAKU,OAAO,CAAC,CAACC,UAAUC;QACtB,IAAI,OAAOD,SAASE,SAAS,KAAK,UAAU;YAC1C;QACF;QACA,MAAMC,eAAeb,MAAMH,MAAM,CAACiB,IAAI,CAAC,CAAC,EAAEC,IAAI,EAAE,GAAKA,SAASL,SAASE,SAAS;QAChF,IAAI,CAACC,cAAc;YACjB;QACF;QACA,MAAMD,YAAYpB,YAAYkB,SAASE,SAAS;QAEhD,IAAI,CAACf,MAAM,CAACe,UAAU,EAAE;YACtBf,MAAM,CAACe,UAAU,GAAG,EAAE;QACxB;QAEA,MAAMI,SAA2B;YAC/BC,QAAQ,CAAC;YACTC,SAAS,CAAC;YACVC,KAAK;gBACHC,QAAQT,IAAI;gBACZU,OAAO,CAAC,EAAElB,KAAK,EAAEH,MAAMsB,IAAI,CAAC,CAAC;YAC/B;QACF;QAEA,IAAItB,MAAMuB,SAAS,IAAItB,QAAQ;YAC7Be,OAAOG,GAAG,CAACK,OAAO,GAAGvB;QACvB;QACA,IAAIO,0BAA0B;YAC5BQ,OAAOG,GAAG,CAACK,OAAO,GAAGhB;QACvB;QAEA,MAAMiB,iBAAiB9B,QAAQ+B,YAAY,CAACC,GAAG,CAAC,CAAC,EAAE/B,cAAc,QAAQ,EAAEgB,UAAU,CAAC;QAEtF,MAAMgB,UAAUjC,QAAQkC,MAAM,CAACJ,eAAe,CAACK,KAAK;QAEpD,+CAA+C;QAC/C,sCAAsC;QACtC,4CAA4C;QAC5C,6CAA6C;QAC7C,+DAA+D;QAC/D,IAAIF,SAAS;YACXZ,OAAOG,GAAG,CAACW,KAAK,GAAGpB,SAASqB,EAAE;YAC9B,OAAOrB,SAASqB,EAAE;QACpB;QAEAtC,eAAe;YACbE;YACAsB,QAAQD,OAAOC,MAAM;YACrBrB;YACAC;YACAC;YACAkC,cAAc;YACdjC,MAAMW;YACNuB,aAAa;YACbC,QAAQrB,aAAaqB,MAAM;YAC3BhB,SAASF,OAAOE,OAAO;YACvBhB;YACAiC,iBAAiBV;YACjBtB,MAAM,CAAC,EAAEA,QAAQ,GAAG,EAAEH,MAAMsB,IAAI,CAAC,CAAC,EAAEX,EAAE,CAAC,CAAC;YACxCP;YACAC;YACAc,KAAKH,OAAOG,GAAG;YACfb;YACAC;YACAC;QACF;QAEAX,MAAM,CAACe,UAAU,CAACwB,IAAI,CAACpB;IACzB;AACF,EAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/transform/write/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAEpC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AACpD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAI7C,KAAK,IAAI,GAAG;IACV,OAAO,EAAE,cAAc,CAAA;IACvB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC7B,MAAM,EAAE,KAAK,EAAE,CAAA;IACf,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,SAAS,EAAE,MAAM,CAAA;CAClB,CAAA;AAED,eAAO,MAAM,iBAAiB,gDAM3B,IAAI,KAAG,WAuCT,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/transform/write/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAEpC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AACpD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAI7C,KAAK,IAAI,GAAG;IACV,OAAO,EAAE,cAAc,CAAA;IACvB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC7B,MAAM,EAAE,KAAK,EAAE,CAAA;IACf,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,SAAS,EAAE,MAAM,CAAA;CAClB,CAAA;AAED,eAAO,MAAM,iBAAiB,gDAM3B,IAAI,KAAG,WAuCT,CAAA"}
@@ -1,4 +1,4 @@
1
- /* eslint-disable no-param-reassign */ import { traverseFields } from './traverseFields.js';
1
+ import { traverseFields } from './traverseFields.js';
2
2
  export const transformForWrite = ({ adapter, data, fields, path = '', tableName })=>{
3
3
  // Split out the incoming data into rows to insert / delete
4
4
  const rowToInsert = {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/transform/write/index.ts"],"sourcesContent":["/* eslint-disable no-param-reassign */\nimport type { Field } from 'payload'\n\nimport type { DrizzleAdapter } from '../../types.js'\nimport type { RowToInsert } from './types.js'\n\nimport { traverseFields } from './traverseFields.js'\n\ntype Args = {\n adapter: DrizzleAdapter\n data: Record<string, unknown>\n fields: Field[]\n path?: string\n tableName: string\n}\n\nexport const transformForWrite = ({\n adapter,\n data,\n fields,\n path = '',\n tableName,\n}: Args): RowToInsert => {\n // Split out the incoming data into rows to insert / delete\n const rowToInsert: RowToInsert = {\n arrays: {},\n blocks: {},\n blocksToDelete: new Set(),\n locales: {},\n numbers: [],\n relationships: [],\n relationshipsToDelete: [],\n row: {},\n selects: {},\n texts: [],\n }\n\n // This function is responsible for building up the\n // above rowToInsert\n traverseFields({\n adapter,\n arrays: rowToInsert.arrays,\n baseTableName: tableName,\n blocks: rowToInsert.blocks,\n blocksToDelete: rowToInsert.blocksToDelete,\n columnPrefix: '',\n data,\n fieldPrefix: '',\n fields,\n locales: rowToInsert.locales,\n numbers: rowToInsert.numbers,\n parentTableName: tableName,\n path,\n relationships: rowToInsert.relationships,\n relationshipsToDelete: rowToInsert.relationshipsToDelete,\n row: rowToInsert.row,\n selects: rowToInsert.selects,\n texts: rowToInsert.texts,\n })\n\n return rowToInsert\n}\n"],"names":["traverseFields","transformForWrite","adapter","data","fields","path","tableName","rowToInsert","arrays","blocks","blocksToDelete","Set","locales","numbers","relationships","relationshipsToDelete","row","selects","texts","baseTableName","columnPrefix","fieldPrefix","parentTableName"],"mappings":"AAAA,oCAAoC,GAMpC,SAASA,cAAc,QAAQ,sBAAqB;AAUpD,OAAO,MAAMC,oBAAoB,CAAC,EAChCC,OAAO,EACPC,IAAI,EACJC,MAAM,EACNC,OAAO,EAAE,EACTC,SAAS,EACJ;IACL,2DAA2D;IAC3D,MAAMC,cAA2B;QAC/BC,QAAQ,CAAC;QACTC,QAAQ,CAAC;QACTC,gBAAgB,IAAIC;QACpBC,SAAS,CAAC;QACVC,SAAS,EAAE;QACXC,eAAe,EAAE;QACjBC,uBAAuB,EAAE;QACzBC,KAAK,CAAC;QACNC,SAAS,CAAC;QACVC,OAAO,EAAE;IACX;IAEA,mDAAmD;IACnD,oBAAoB;IACpBlB,eAAe;QACbE;QACAM,QAAQD,YAAYC,MAAM;QAC1BW,eAAeb;QACfG,QAAQF,YAAYE,MAAM;QAC1BC,gBAAgBH,YAAYG,cAAc;QAC1CU,cAAc;QACdjB;QACAkB,aAAa;QACbjB;QACAQ,SAASL,YAAYK,OAAO;QAC5BC,SAASN,YAAYM,OAAO;QAC5BS,iBAAiBhB;QACjBD;QACAS,eAAeP,YAAYO,aAAa;QACxCC,uBAAuBR,YAAYQ,qBAAqB;QACxDC,KAAKT,YAAYS,GAAG;QACpBC,SAASV,YAAYU,OAAO;QAC5BC,OAAOX,YAAYW,KAAK;IAC1B;IAEA,OAAOX;AACT,EAAC"}
1
+ {"version":3,"sources":["../../../src/transform/write/index.ts"],"sourcesContent":["import type { Field } from 'payload'\n\nimport type { DrizzleAdapter } from '../../types.js'\nimport type { RowToInsert } from './types.js'\n\nimport { traverseFields } from './traverseFields.js'\n\ntype Args = {\n adapter: DrizzleAdapter\n data: Record<string, unknown>\n fields: Field[]\n path?: string\n tableName: string\n}\n\nexport const transformForWrite = ({\n adapter,\n data,\n fields,\n path = '',\n tableName,\n}: Args): RowToInsert => {\n // Split out the incoming data into rows to insert / delete\n const rowToInsert: RowToInsert = {\n arrays: {},\n blocks: {},\n blocksToDelete: new Set(),\n locales: {},\n numbers: [],\n relationships: [],\n relationshipsToDelete: [],\n row: {},\n selects: {},\n texts: [],\n }\n\n // This function is responsible for building up the\n // above rowToInsert\n traverseFields({\n adapter,\n arrays: rowToInsert.arrays,\n baseTableName: tableName,\n blocks: rowToInsert.blocks,\n blocksToDelete: rowToInsert.blocksToDelete,\n columnPrefix: '',\n data,\n fieldPrefix: '',\n fields,\n locales: rowToInsert.locales,\n numbers: rowToInsert.numbers,\n parentTableName: tableName,\n path,\n relationships: rowToInsert.relationships,\n relationshipsToDelete: rowToInsert.relationshipsToDelete,\n row: rowToInsert.row,\n selects: rowToInsert.selects,\n texts: rowToInsert.texts,\n })\n\n return rowToInsert\n}\n"],"names":["traverseFields","transformForWrite","adapter","data","fields","path","tableName","rowToInsert","arrays","blocks","blocksToDelete","Set","locales","numbers","relationships","relationshipsToDelete","row","selects","texts","baseTableName","columnPrefix","fieldPrefix","parentTableName"],"mappings":"AAKA,SAASA,cAAc,QAAQ,sBAAqB;AAUpD,OAAO,MAAMC,oBAAoB,CAAC,EAChCC,OAAO,EACPC,IAAI,EACJC,MAAM,EACNC,OAAO,EAAE,EACTC,SAAS,EACJ;IACL,2DAA2D;IAC3D,MAAMC,cAA2B;QAC/BC,QAAQ,CAAC;QACTC,QAAQ,CAAC;QACTC,gBAAgB,IAAIC;QACpBC,SAAS,CAAC;QACVC,SAAS,EAAE;QACXC,eAAe,EAAE;QACjBC,uBAAuB,EAAE;QACzBC,KAAK,CAAC;QACNC,SAAS,CAAC;QACVC,OAAO,EAAE;IACX;IAEA,mDAAmD;IACnD,oBAAoB;IACpBlB,eAAe;QACbE;QACAM,QAAQD,YAAYC,MAAM;QAC1BW,eAAeb;QACfG,QAAQF,YAAYE,MAAM;QAC1BC,gBAAgBH,YAAYG,cAAc;QAC1CU,cAAc;QACdjB;QACAkB,aAAa;QACbjB;QACAQ,SAASL,YAAYK,OAAO;QAC5BC,SAASN,YAAYM,OAAO;QAC5BS,iBAAiBhB;QACjBD;QACAS,eAAeP,YAAYO,aAAa;QACxCC,uBAAuBR,YAAYQ,qBAAqB;QACxDC,KAAKT,YAAYS,GAAG;QACpBC,SAASV,YAAYU,OAAO;QAC5BC,OAAOX,YAAYW,KAAK;IAC1B;IAEA,OAAOX;AACT,EAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"relationships.d.ts","sourceRoot":"","sources":["../../../src/transform/write/relationships.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAI7D,KAAK,IAAI,GAAG;IACV,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAChC,IAAI,EAAE,OAAO,CAAA;IACb,KAAK,EAAE,iBAAiB,GAAG,WAAW,CAAA;IACtC,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAA;CACzC,CAAA;AAED,eAAO,MAAM,qBAAqB,4CAA6C,IAAI,SAiBlF,CAAA"}
1
+ {"version":3,"file":"relationships.d.ts","sourceRoot":"","sources":["../../../src/transform/write/relationships.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAI7D,KAAK,IAAI,GAAG;IACV,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAChC,IAAI,EAAE,OAAO,CAAA;IACb,KAAK,EAAE,iBAAiB,GAAG,WAAW,CAAA;IACtC,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAA;CACzC,CAAA;AAED,eAAO,MAAM,qBAAqB,4CAA6C,IAAI,SAqBlF,CAAA"}
@@ -8,13 +8,17 @@ export const transformRelationship = ({ baseRow, data, field, relationships })=>
8
8
  const relationRow = {
9
9
  ...baseRow
10
10
  };
11
- if ('hasMany' in field && field.hasMany) relationRow.order = i + 1;
11
+ if ('hasMany' in field && field.hasMany) {
12
+ relationRow.order = i + 1;
13
+ }
12
14
  if (Array.isArray(field.relationTo) && valueIsValueWithRelation(relation)) {
13
15
  relationRow[`${relation.relationTo}ID`] = relation.value;
14
16
  relationships.push(relationRow);
15
17
  } else {
16
18
  relationRow[`${field.relationTo}ID`] = relation;
17
- if (relation) relationships.push(relationRow);
19
+ if (relation) {
20
+ relationships.push(relationRow);
21
+ }
18
22
  }
19
23
  }
20
24
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/transform/write/relationships.ts"],"sourcesContent":["import type { RelationshipField, UploadField } from 'payload'\n\nimport { valueIsValueWithRelation } from 'payload/shared'\n\ntype Args = {\n baseRow: Record<string, unknown>\n data: unknown\n field: RelationshipField | UploadField\n relationships: Record<string, unknown>[]\n}\n\nexport const transformRelationship = ({ baseRow, data, field, relationships }: Args) => {\n const relations = Array.isArray(data) ? data : [data]\n\n relations.forEach((relation, i) => {\n if (relation) {\n const relationRow = { ...baseRow }\n if ('hasMany' in field && field.hasMany) relationRow.order = i + 1\n\n if (Array.isArray(field.relationTo) && valueIsValueWithRelation(relation)) {\n relationRow[`${relation.relationTo}ID`] = relation.value\n relationships.push(relationRow)\n } else {\n relationRow[`${field.relationTo}ID`] = relation\n if (relation) relationships.push(relationRow)\n }\n }\n })\n}\n"],"names":["valueIsValueWithRelation","transformRelationship","baseRow","data","field","relationships","relations","Array","isArray","forEach","relation","i","relationRow","hasMany","order","relationTo","value","push"],"mappings":"AAEA,SAASA,wBAAwB,QAAQ,iBAAgB;AASzD,OAAO,MAAMC,wBAAwB,CAAC,EAAEC,OAAO,EAAEC,IAAI,EAAEC,KAAK,EAAEC,aAAa,EAAQ;IACjF,MAAMC,YAAYC,MAAMC,OAAO,CAACL,QAAQA,OAAO;QAACA;KAAK;IAErDG,UAAUG,OAAO,CAAC,CAACC,UAAUC;QAC3B,IAAID,UAAU;YACZ,MAAME,cAAc;gBAAE,GAAGV,OAAO;YAAC;YACjC,IAAI,aAAaE,SAASA,MAAMS,OAAO,EAAED,YAAYE,KAAK,GAAGH,IAAI;YAEjE,IAAIJ,MAAMC,OAAO,CAACJ,MAAMW,UAAU,KAAKf,yBAAyBU,WAAW;gBACzEE,WAAW,CAAC,CAAC,EAAEF,SAASK,UAAU,CAAC,EAAE,CAAC,CAAC,GAAGL,SAASM,KAAK;gBACxDX,cAAcY,IAAI,CAACL;YACrB,OAAO;gBACLA,WAAW,CAAC,CAAC,EAAER,MAAMW,UAAU,CAAC,EAAE,CAAC,CAAC,GAAGL;gBACvC,IAAIA,UAAUL,cAAcY,IAAI,CAACL;YACnC;QACF;IACF;AACF,EAAC"}
1
+ {"version":3,"sources":["../../../src/transform/write/relationships.ts"],"sourcesContent":["import type { RelationshipField, UploadField } from 'payload'\n\nimport { valueIsValueWithRelation } from 'payload/shared'\n\ntype Args = {\n baseRow: Record<string, unknown>\n data: unknown\n field: RelationshipField | UploadField\n relationships: Record<string, unknown>[]\n}\n\nexport const transformRelationship = ({ baseRow, data, field, relationships }: Args) => {\n const relations = Array.isArray(data) ? data : [data]\n\n relations.forEach((relation, i) => {\n if (relation) {\n const relationRow = { ...baseRow }\n if ('hasMany' in field && field.hasMany) {\n relationRow.order = i + 1\n }\n\n if (Array.isArray(field.relationTo) && valueIsValueWithRelation(relation)) {\n relationRow[`${relation.relationTo}ID`] = relation.value\n relationships.push(relationRow)\n } else {\n relationRow[`${field.relationTo}ID`] = relation\n if (relation) {\n relationships.push(relationRow)\n }\n }\n }\n })\n}\n"],"names":["valueIsValueWithRelation","transformRelationship","baseRow","data","field","relationships","relations","Array","isArray","forEach","relation","i","relationRow","hasMany","order","relationTo","value","push"],"mappings":"AAEA,SAASA,wBAAwB,QAAQ,iBAAgB;AASzD,OAAO,MAAMC,wBAAwB,CAAC,EAAEC,OAAO,EAAEC,IAAI,EAAEC,KAAK,EAAEC,aAAa,EAAQ;IACjF,MAAMC,YAAYC,MAAMC,OAAO,CAACL,QAAQA,OAAO;QAACA;KAAK;IAErDG,UAAUG,OAAO,CAAC,CAACC,UAAUC;QAC3B,IAAID,UAAU;YACZ,MAAME,cAAc;gBAAE,GAAGV,OAAO;YAAC;YACjC,IAAI,aAAaE,SAASA,MAAMS,OAAO,EAAE;gBACvCD,YAAYE,KAAK,GAAGH,IAAI;YAC1B;YAEA,IAAIJ,MAAMC,OAAO,CAACJ,MAAMW,UAAU,KAAKf,yBAAyBU,WAAW;gBACzEE,WAAW,CAAC,CAAC,EAAEF,SAASK,UAAU,CAAC,EAAE,CAAC,CAAC,GAAGL,SAASM,KAAK;gBACxDX,cAAcY,IAAI,CAACL;YACrB,OAAO;gBACLA,WAAW,CAAC,CAAC,EAAER,MAAMW,UAAU,CAAC,EAAE,CAAC,CAAC,GAAGL;gBACvC,IAAIA,UAAU;oBACZL,cAAcY,IAAI,CAACL;gBACrB;YACF;QACF;IACF;AACF,EAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"selects.d.ts","sourceRoot":"","sources":["../../../src/transform/write/selects.ts"],"names":[],"mappings":"AAGA,KAAK,IAAI,GAAG;IACV,IAAI,EAAE,OAAO,CAAA;IACb,EAAE,CAAC,EAAE,OAAO,CAAA;IACZ,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB,CAAA;AAED,eAAO,MAAM,gBAAgB,yBAA0B,IAAI,8BAoB1D,CAAA"}
1
+ {"version":3,"file":"selects.d.ts","sourceRoot":"","sources":["../../../src/transform/write/selects.ts"],"names":[],"mappings":"AAEA,KAAK,IAAI,GAAG;IACV,IAAI,EAAE,OAAO,CAAA;IACb,EAAE,CAAC,EAAE,OAAO,CAAA;IACZ,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB,CAAA;AAED,eAAO,MAAM,gBAAgB,yBAA0B,IAAI,8BAoB1D,CAAA"}
@@ -1,4 +1,4 @@
1
- /* eslint-disable no-param-reassign */ import { isArrayOfRows } from '../../utilities/isArrayOfRows.js';
1
+ import { isArrayOfRows } from '../../utilities/isArrayOfRows.js';
2
2
  export const transformSelects = ({ id, data, locale })=>{
3
3
  const newRows = [];
4
4
  if (isArrayOfRows(data)) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/transform/write/selects.ts"],"sourcesContent":["/* eslint-disable no-param-reassign */\nimport { isArrayOfRows } from '../../utilities/isArrayOfRows.js'\n\ntype Args = {\n data: unknown\n id?: unknown\n locale?: string\n}\n\nexport const transformSelects = ({ id, data, locale }: Args) => {\n const newRows: Record<string, unknown>[] = []\n\n if (isArrayOfRows(data)) {\n data.forEach((value, i) => {\n const newRow: Record<string, unknown> = {\n order: i + 1,\n parent: id,\n value,\n }\n\n if (locale) {\n newRow.locale = locale\n }\n\n newRows.push(newRow)\n })\n }\n\n return newRows\n}\n"],"names":["isArrayOfRows","transformSelects","id","data","locale","newRows","forEach","value","i","newRow","order","parent","push"],"mappings":"AAAA,oCAAoC,GACpC,SAASA,aAAa,QAAQ,mCAAkC;AAQhE,OAAO,MAAMC,mBAAmB,CAAC,EAAEC,EAAE,EAAEC,IAAI,EAAEC,MAAM,EAAQ;IACzD,MAAMC,UAAqC,EAAE;IAE7C,IAAIL,cAAcG,OAAO;QACvBA,KAAKG,OAAO,CAAC,CAACC,OAAOC;YACnB,MAAMC,SAAkC;gBACtCC,OAAOF,IAAI;gBACXG,QAAQT;gBACRK;YACF;YAEA,IAAIH,QAAQ;gBACVK,OAAOL,MAAM,GAAGA;YAClB;YAEAC,QAAQO,IAAI,CAACH;QACf;IACF;IAEA,OAAOJ;AACT,EAAC"}
1
+ {"version":3,"sources":["../../../src/transform/write/selects.ts"],"sourcesContent":["import { isArrayOfRows } from '../../utilities/isArrayOfRows.js'\n\ntype Args = {\n data: unknown\n id?: unknown\n locale?: string\n}\n\nexport const transformSelects = ({ id, data, locale }: Args) => {\n const newRows: Record<string, unknown>[] = []\n\n if (isArrayOfRows(data)) {\n data.forEach((value, i) => {\n const newRow: Record<string, unknown> = {\n order: i + 1,\n parent: id,\n value,\n }\n\n if (locale) {\n newRow.locale = locale\n }\n\n newRows.push(newRow)\n })\n }\n\n return newRows\n}\n"],"names":["isArrayOfRows","transformSelects","id","data","locale","newRows","forEach","value","i","newRow","order","parent","push"],"mappings":"AAAA,SAASA,aAAa,QAAQ,mCAAkC;AAQhE,OAAO,MAAMC,mBAAmB,CAAC,EAAEC,EAAE,EAAEC,IAAI,EAAEC,MAAM,EAAQ;IACzD,MAAMC,UAAqC,EAAE;IAE7C,IAAIL,cAAcG,OAAO;QACvBA,KAAKG,OAAO,CAAC,CAACC,OAAOC;YACnB,MAAMC,SAAkC;gBACtCC,OAAOF,IAAI;gBACXG,QAAQT;gBACRK;YACF;YAEA,IAAIH,QAAQ;gBACVK,OAAOL,MAAM,GAAGA;YAClB;YAEAC,QAAQO,IAAI,CAACH;QACf;IACF;IAEA,OAAOJ;AACT,EAAC"}
@@ -44,7 +44,12 @@ type Args = {
44
44
  [tableName: string]: Record<string, unknown>[];
45
45
  };
46
46
  texts: Record<string, unknown>[];
47
+ /**
48
+ * Set to a locale code if this set of fields is traversed within a
49
+ * localized array or block field
50
+ */
51
+ withinArrayOrBlockLocale?: string;
47
52
  };
48
- export declare const traverseFields: ({ adapter, arrays, baseTableName, blocks, blocksToDelete, columnPrefix, data, existingLocales, fieldPrefix, fields, forcedLocale, locales, numbers, parentTableName, path, relationships, relationshipsToDelete, row, selects, texts, }: Args) => void;
53
+ export declare const traverseFields: ({ adapter, arrays, baseTableName, blocks, blocksToDelete, columnPrefix, data, existingLocales, fieldPrefix, fields, forcedLocale, locales, numbers, parentTableName, path, relationships, relationshipsToDelete, row, selects, texts, withinArrayOrBlockLocale, }: Args) => void;
49
54
  export {};
50
55
  //# sourceMappingURL=traverseFields.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"traverseFields.d.ts","sourceRoot":"","sources":["../../../src/transform/write/traverseFields.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAKpC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AACpD,OAAO,KAAK,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAA;AAU1F,KAAK,IAAI,GAAG;IACV,OAAO,EAAE,cAAc,CAAA;IACvB,MAAM,EAAE;QACN,CAAC,SAAS,EAAE,MAAM,GAAG,gBAAgB,EAAE,CAAA;KACxC,CAAA;IACD;;OAEG;IACH,aAAa,EAAE,MAAM,CAAA;IACrB,MAAM,EAAE;QACN,CAAC,SAAS,EAAE,MAAM,GAAG,gBAAgB,EAAE,CAAA;KACxC,CAAA;IACD,cAAc,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IAC3B;;;OAGG;IACH,YAAY,EAAE,MAAM,CAAA;IACpB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC7B,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAA;IAC3C;;;OAGG;IACH,WAAW,EAAE,MAAM,CAAA;IACnB,MAAM,EAAE,KAAK,EAAE,CAAA;IACf,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,OAAO,EAAE;QACP,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAC1C,CAAA;IACD,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAA;IAClC;;OAEG;IACH,eAAe,EAAE,MAAM,CAAA;IACvB,IAAI,EAAE,MAAM,CAAA;IACZ,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAA;IACxC,qBAAqB,EAAE,oBAAoB,EAAE,CAAA;IAC7C,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC5B,OAAO,EAAE;QACP,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAA;KAC/C,CAAA;IACD,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAA;CACjC,CAAA;AAED,eAAO,MAAM,cAAc,4OAqBxB,IAAI,SAieN,CAAA"}
1
+ {"version":3,"file":"traverseFields.d.ts","sourceRoot":"","sources":["../../../src/transform/write/traverseFields.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAKpC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AACpD,OAAO,KAAK,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAA;AAU1F,KAAK,IAAI,GAAG;IACV,OAAO,EAAE,cAAc,CAAA;IACvB,MAAM,EAAE;QACN,CAAC,SAAS,EAAE,MAAM,GAAG,gBAAgB,EAAE,CAAA;KACxC,CAAA;IACD;;OAEG;IACH,aAAa,EAAE,MAAM,CAAA;IACrB,MAAM,EAAE;QACN,CAAC,SAAS,EAAE,MAAM,GAAG,gBAAgB,EAAE,CAAA;KACxC,CAAA;IACD,cAAc,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IAC3B;;;OAGG;IACH,YAAY,EAAE,MAAM,CAAA;IACpB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC7B,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAA;IAC3C;;;OAGG;IACH,WAAW,EAAE,MAAM,CAAA;IACnB,MAAM,EAAE,KAAK,EAAE,CAAA;IACf,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,OAAO,EAAE;QACP,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAC1C,CAAA;IACD,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAA;IAClC;;OAEG;IACH,eAAe,EAAE,MAAM,CAAA;IACvB,IAAI,EAAE,MAAM,CAAA;IACZ,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAA;IACxC,qBAAqB,EAAE,oBAAoB,EAAE,CAAA;IAC7C,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC5B,OAAO,EAAE;QACP,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAA;KAC/C,CAAA;IACD,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAA;IAChC;;;OAGG;IACH,wBAAwB,CAAC,EAAE,MAAM,CAAA;CAClC,CAAA;AAED,eAAO,MAAM,cAAc,sQAsBxB,IAAI,SA8gBN,CAAA"}
@@ -1,4 +1,4 @@
1
- import { fieldAffectsData } from 'payload/shared';
1
+ import { fieldAffectsData, fieldIsVirtual } from 'payload/shared';
2
2
  import toSnakeCase from 'to-snake-case';
3
3
  import { isArrayOfRows } from '../../utilities/isArrayOfRows.js';
4
4
  import { transformArray } from './array.js';
@@ -7,19 +7,24 @@ import { transformNumbers } from './numbers.js';
7
7
  import { transformRelationship } from './relationships.js';
8
8
  import { transformSelects } from './selects.js';
9
9
  import { transformTexts } from './texts.js';
10
- export const traverseFields = ({ adapter, arrays, baseTableName, blocks, blocksToDelete, columnPrefix, data, existingLocales, fieldPrefix, fields, forcedLocale, locales, numbers, parentTableName, path, relationships, relationshipsToDelete, row, selects, texts })=>{
10
+ export const traverseFields = ({ adapter, arrays, baseTableName, blocks, blocksToDelete, columnPrefix, data, existingLocales, fieldPrefix, fields, forcedLocale, locales, numbers, parentTableName, path, relationships, relationshipsToDelete, row, selects, texts, withinArrayOrBlockLocale })=>{
11
11
  fields.forEach((field)=>{
12
12
  let columnName = '';
13
13
  let fieldName = '';
14
14
  let fieldData;
15
15
  if (fieldAffectsData(field)) {
16
+ if (fieldIsVirtual(field)) {
17
+ return;
18
+ }
16
19
  columnName = `${columnPrefix || ''}${toSnakeCase(field.name)}`;
17
20
  fieldName = `${fieldPrefix || ''}${field.name}`;
18
21
  fieldData = data[field.name];
19
22
  }
20
23
  if (field.type === 'array') {
21
24
  const arrayTableName = adapter.tableNameMap.get(`${parentTableName}_${columnName}`);
22
- if (!arrays[arrayTableName]) arrays[arrayTableName] = [];
25
+ if (!arrays[arrayTableName]) {
26
+ arrays[arrayTableName] = [];
27
+ }
23
28
  if (field.localized) {
24
29
  if (typeof data[field.name] === 'object' && data[field.name] !== null) {
25
30
  Object.entries(data[field.name]).forEach(([localeKey, localeData])=>{
@@ -38,7 +43,8 @@ export const traverseFields = ({ adapter, arrays, baseTableName, blocks, blocksT
38
43
  relationships,
39
44
  relationshipsToDelete,
40
45
  selects,
41
- texts
46
+ texts,
47
+ withinArrayOrBlockLocale: localeKey
42
48
  });
43
49
  arrays[arrayTableName] = arrays[arrayTableName].concat(newRows);
44
50
  }
@@ -58,7 +64,8 @@ export const traverseFields = ({ adapter, arrays, baseTableName, blocks, blocksT
58
64
  relationships,
59
65
  relationshipsToDelete,
60
66
  selects,
61
- texts
67
+ texts,
68
+ withinArrayOrBlockLocale
62
69
  });
63
70
  arrays[arrayTableName] = arrays[arrayTableName].concat(newRows);
64
71
  }
@@ -85,7 +92,8 @@ export const traverseFields = ({ adapter, arrays, baseTableName, blocks, blocksT
85
92
  relationships,
86
93
  relationshipsToDelete,
87
94
  selects,
88
- texts
95
+ texts,
96
+ withinArrayOrBlockLocale: localeKey
89
97
  });
90
98
  }
91
99
  });
@@ -103,7 +111,8 @@ export const traverseFields = ({ adapter, arrays, baseTableName, blocks, blocksT
103
111
  relationships,
104
112
  relationshipsToDelete,
105
113
  selects,
106
- texts
114
+ texts,
115
+ withinArrayOrBlockLocale
107
116
  });
108
117
  }
109
118
  return;
@@ -112,6 +121,8 @@ export const traverseFields = ({ adapter, arrays, baseTableName, blocks, blocksT
112
121
  if (typeof data[field.name] === 'object' && data[field.name] !== null) {
113
122
  if (field.localized) {
114
123
  Object.entries(data[field.name]).forEach(([localeKey, localeData])=>{
124
+ // preserve array ID if there is
125
+ localeData._uuid = data.id || data._uuid;
115
126
  traverseFields({
116
127
  adapter,
117
128
  arrays,
@@ -132,10 +143,14 @@ export const traverseFields = ({ adapter, arrays, baseTableName, blocks, blocksT
132
143
  relationshipsToDelete,
133
144
  row,
134
145
  selects,
135
- texts
146
+ texts,
147
+ withinArrayOrBlockLocale: localeKey
136
148
  });
137
149
  });
138
150
  } else {
151
+ // preserve array ID if there is
152
+ const groupData = data[field.name];
153
+ groupData._uuid = data.id || data._uuid;
139
154
  traverseFields({
140
155
  adapter,
141
156
  arrays,
@@ -143,7 +158,7 @@ export const traverseFields = ({ adapter, arrays, baseTableName, blocks, blocksT
143
158
  blocks,
144
159
  blocksToDelete,
145
160
  columnPrefix: `${columnName}_`,
146
- data: data[field.name],
161
+ data: groupData,
147
162
  existingLocales,
148
163
  fieldPrefix: `${fieldName}_`,
149
164
  fields: field.fields,
@@ -155,7 +170,8 @@ export const traverseFields = ({ adapter, arrays, baseTableName, blocks, blocksT
155
170
  relationshipsToDelete,
156
171
  row,
157
172
  selects,
158
- texts
173
+ texts,
174
+ withinArrayOrBlockLocale
159
175
  });
160
176
  }
161
177
  }
@@ -164,9 +180,14 @@ export const traverseFields = ({ adapter, arrays, baseTableName, blocks, blocksT
164
180
  if (field.type === 'tabs') {
165
181
  field.tabs.forEach((tab)=>{
166
182
  if ('name' in tab) {
183
+ if (fieldIsVirtual(tab)) {
184
+ return;
185
+ }
167
186
  if (typeof data[tab.name] === 'object' && data[tab.name] !== null) {
168
187
  if (tab.localized) {
169
188
  Object.entries(data[tab.name]).forEach(([localeKey, localeData])=>{
189
+ // preserve array ID if there is
190
+ localeData._uuid = data.id || data._uuid;
170
191
  traverseFields({
171
192
  adapter,
172
193
  arrays,
@@ -187,10 +208,14 @@ export const traverseFields = ({ adapter, arrays, baseTableName, blocks, blocksT
187
208
  relationshipsToDelete,
188
209
  row,
189
210
  selects,
190
- texts
211
+ texts,
212
+ withinArrayOrBlockLocale: localeKey
191
213
  });
192
214
  });
193
215
  } else {
216
+ const tabData = data[tab.name];
217
+ // preserve array ID if there is
218
+ tabData._uuid = data.id || data._uuid;
194
219
  traverseFields({
195
220
  adapter,
196
221
  arrays,
@@ -198,7 +223,7 @@ export const traverseFields = ({ adapter, arrays, baseTableName, blocks, blocksT
198
223
  blocks,
199
224
  blocksToDelete,
200
225
  columnPrefix: `${columnPrefix || ''}${toSnakeCase(tab.name)}_`,
201
- data: data[tab.name],
226
+ data: tabData,
202
227
  existingLocales,
203
228
  fieldPrefix: `${fieldPrefix || ''}${tab.name}_`,
204
229
  fields: tab.fields,
@@ -210,7 +235,8 @@ export const traverseFields = ({ adapter, arrays, baseTableName, blocks, blocksT
210
235
  relationshipsToDelete,
211
236
  row,
212
237
  selects,
213
- texts
238
+ texts,
239
+ withinArrayOrBlockLocale
214
240
  });
215
241
  }
216
242
  }
@@ -234,7 +260,8 @@ export const traverseFields = ({ adapter, arrays, baseTableName, blocks, blocksT
234
260
  relationshipsToDelete,
235
261
  row,
236
262
  selects,
237
- texts
263
+ texts,
264
+ withinArrayOrBlockLocale
238
265
  });
239
266
  }
240
267
  });
@@ -251,6 +278,7 @@ export const traverseFields = ({ adapter, arrays, baseTableName, blocks, blocksT
251
278
  existingLocales,
252
279
  fieldPrefix,
253
280
  fields: field.fields,
281
+ forcedLocale,
254
282
  locales,
255
283
  numbers,
256
284
  parentTableName,
@@ -259,7 +287,8 @@ export const traverseFields = ({ adapter, arrays, baseTableName, blocks, blocksT
259
287
  relationshipsToDelete,
260
288
  row,
261
289
  selects,
262
- texts
290
+ texts,
291
+ withinArrayOrBlockLocale
263
292
  });
264
293
  }
265
294
  if (field.type === 'relationship' || field.type === 'upload') {
@@ -295,6 +324,7 @@ export const traverseFields = ({ adapter, arrays, baseTableName, blocks, blocksT
295
324
  }
296
325
  transformRelationship({
297
326
  baseRow: {
327
+ locale: withinArrayOrBlockLocale,
298
328
  path: relationshipPath
299
329
  },
300
330
  data: fieldData,
@@ -340,6 +370,7 @@ export const traverseFields = ({ adapter, arrays, baseTableName, blocks, blocksT
340
370
  } else if (Array.isArray(fieldData)) {
341
371
  transformTexts({
342
372
  baseRow: {
373
+ locale: withinArrayOrBlockLocale,
343
374
  path: textPath
344
375
  },
345
376
  data: fieldData,
@@ -368,6 +399,7 @@ export const traverseFields = ({ adapter, arrays, baseTableName, blocks, blocksT
368
399
  } else if (Array.isArray(fieldData)) {
369
400
  transformNumbers({
370
401
  baseRow: {
402
+ locale: withinArrayOrBlockLocale,
371
403
  path: numberPath
372
404
  },
373
405
  data: fieldData,
@@ -378,7 +410,9 @@ export const traverseFields = ({ adapter, arrays, baseTableName, blocks, blocksT
378
410
  }
379
411
  if (field.type === 'select' && field.hasMany) {
380
412
  const selectTableName = adapter.tableNameMap.get(`${parentTableName}_${columnName}`);
381
- if (!selects[selectTableName]) selects[selectTableName] = [];
413
+ if (!selects[selectTableName]) {
414
+ selects[selectTableName] = [];
415
+ }
382
416
  if (field.localized) {
383
417
  if (typeof data[field.name] === 'object' && data[field.name] !== null) {
384
418
  Object.entries(data[field.name]).forEach(([localeKey, localeData])=>{
@@ -395,7 +429,8 @@ export const traverseFields = ({ adapter, arrays, baseTableName, blocks, blocksT
395
429
  } else if (Array.isArray(data[field.name])) {
396
430
  const newRows = transformSelects({
397
431
  id: data._uuid || data.id,
398
- data: data[field.name]
432
+ data: data[field.name],
433
+ locale: withinArrayOrBlockLocale
399
434
  });
400
435
  selects[selectTableName] = selects[selectTableName].concat(newRows);
401
436
  }
@@ -406,7 +441,9 @@ export const traverseFields = ({ adapter, arrays, baseTableName, blocks, blocksT
406
441
  if (field.localized) {
407
442
  if (typeof fieldData === 'object' && fieldData !== null) {
408
443
  Object.entries(fieldData).forEach(([localeKey, localeData])=>{
409
- if (!locales[localeKey]) locales[localeKey] = {};
444
+ if (!locales[localeKey]) {
445
+ locales[localeKey] = {};
446
+ }
410
447
  valuesToTransform.push({
411
448
  localeKey,
412
449
  ref: locales,
@@ -417,7 +454,9 @@ export const traverseFields = ({ adapter, arrays, baseTableName, blocks, blocksT
417
454
  } else {
418
455
  let ref = row;
419
456
  if (forcedLocale) {
420
- if (!locales[forcedLocale]) locales[forcedLocale] = {};
457
+ if (!locales[forcedLocale]) {
458
+ locales[forcedLocale] = {};
459
+ }
421
460
  ref = locales[forcedLocale];
422
461
  }
423
462
  valuesToTransform.push({