@payloadcms/drizzle 3.0.0-canary.fb81f02 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (338) hide show
  1. package/dist/count.d.ts.map +1 -1
  2. package/dist/count.js +1 -1
  3. package/dist/count.js.map +1 -1
  4. package/dist/countGlobalVersions.d.ts +3 -0
  5. package/dist/countGlobalVersions.d.ts.map +1 -0
  6. package/dist/countGlobalVersions.js +27 -0
  7. package/dist/countGlobalVersions.js.map +1 -0
  8. package/dist/countVersions.d.ts +3 -0
  9. package/dist/countVersions.d.ts.map +1 -0
  10. package/dist/countVersions.js +27 -0
  11. package/dist/countVersions.js.map +1 -0
  12. package/dist/create.d.ts.map +1 -1
  13. package/dist/create.js +2 -1
  14. package/dist/create.js.map +1 -1
  15. package/dist/createGlobalVersion.d.ts +1 -1
  16. package/dist/createGlobalVersion.d.ts.map +1 -1
  17. package/dist/createGlobalVersion.js +7 -2
  18. package/dist/createGlobalVersion.js.map +1 -1
  19. package/dist/createTableName.d.ts.map +1 -1
  20. package/dist/createTableName.js +6 -2
  21. package/dist/createTableName.js.map +1 -1
  22. package/dist/createVersion.d.ts +1 -1
  23. package/dist/createVersion.d.ts.map +1 -1
  24. package/dist/createVersion.js +22 -14
  25. package/dist/createVersion.js.map +1 -1
  26. package/dist/deleteOne.d.ts.map +1 -1
  27. package/dist/deleteOne.js +6 -3
  28. package/dist/deleteOne.js.map +1 -1
  29. package/dist/deleteVersions.js +1 -1
  30. package/dist/deleteVersions.js.map +1 -1
  31. package/dist/destroy.d.ts.map +1 -1
  32. package/dist/destroy.js +3 -1
  33. package/dist/destroy.js.map +1 -1
  34. package/dist/exports/postgres.d.ts +15 -0
  35. package/dist/exports/postgres.d.ts.map +1 -0
  36. package/dist/exports/postgres.js +16 -0
  37. package/dist/exports/postgres.js.map +1 -0
  38. package/dist/find/buildFindManyArgs.d.ts +15 -7
  39. package/dist/find/buildFindManyArgs.d.ts.map +1 -1
  40. package/dist/find/buildFindManyArgs.js +40 -17
  41. package/dist/find/buildFindManyArgs.js.map +1 -1
  42. package/dist/find/findMany.d.ts +2 -1
  43. package/dist/find/findMany.d.ts.map +1 -1
  44. package/dist/find/findMany.js +12 -7
  45. package/dist/find/findMany.js.map +1 -1
  46. package/dist/find/traverseFields.d.ts +18 -4
  47. package/dist/find/traverseFields.d.ts.map +1 -1
  48. package/dist/find/traverseFields.js +359 -69
  49. package/dist/find/traverseFields.js.map +1 -1
  50. package/dist/find.d.ts.map +1 -1
  51. package/dist/find.js +4 -2
  52. package/dist/find.js.map +1 -1
  53. package/dist/findGlobal.d.ts.map +1 -1
  54. package/dist/findGlobal.js +2 -1
  55. package/dist/findGlobal.js.map +1 -1
  56. package/dist/findGlobalVersions.d.ts.map +1 -1
  57. package/dist/findGlobalVersions.js +4 -3
  58. package/dist/findGlobalVersions.js.map +1 -1
  59. package/dist/findMigrationDir.d.ts.map +1 -1
  60. package/dist/findMigrationDir.js +3 -1
  61. package/dist/findMigrationDir.js.map +1 -1
  62. package/dist/findOne.d.ts +1 -1
  63. package/dist/findOne.d.ts.map +1 -1
  64. package/dist/findOne.js +3 -1
  65. package/dist/findOne.js.map +1 -1
  66. package/dist/findVersions.d.ts.map +1 -1
  67. package/dist/findVersions.js +4 -3
  68. package/dist/findVersions.js.map +1 -1
  69. package/dist/index.d.ts +5 -0
  70. package/dist/index.d.ts.map +1 -1
  71. package/dist/index.js +5 -0
  72. package/dist/index.js.map +1 -1
  73. package/dist/migrate.d.ts.map +1 -1
  74. package/dist/migrate.js +4 -0
  75. package/dist/migrate.js.map +1 -1
  76. package/dist/migrateDown.d.ts.map +1 -1
  77. package/dist/migrateDown.js +1 -1
  78. package/dist/migrateDown.js.map +1 -1
  79. package/dist/migrateFresh.d.ts.map +1 -1
  80. package/dist/migrateFresh.js +4 -0
  81. package/dist/migrateFresh.js.map +1 -1
  82. package/dist/migrateRefresh.d.ts.map +1 -1
  83. package/dist/migrateRefresh.js +2 -1
  84. package/dist/migrateRefresh.js.map +1 -1
  85. package/dist/migrateReset.d.ts.map +1 -1
  86. package/dist/migrateReset.js +5 -3
  87. package/dist/migrateReset.js.map +1 -1
  88. package/dist/migrateStatus.js +0 -1
  89. package/dist/migrateStatus.js.map +1 -1
  90. package/dist/postgres/countDistinct.d.ts +3 -0
  91. package/dist/postgres/countDistinct.d.ts.map +1 -0
  92. package/dist/postgres/countDistinct.js +23 -0
  93. package/dist/postgres/countDistinct.js.map +1 -0
  94. package/dist/postgres/createDatabase.d.ts +14 -0
  95. package/dist/postgres/createDatabase.d.ts.map +1 -0
  96. package/dist/postgres/createDatabase.js +76 -0
  97. package/dist/postgres/createDatabase.js.map +1 -0
  98. package/dist/postgres/createExtensions.d.ts +3 -0
  99. package/dist/postgres/createExtensions.d.ts.map +1 -0
  100. package/dist/postgres/createExtensions.js +16 -0
  101. package/dist/postgres/createExtensions.js.map +1 -0
  102. package/dist/postgres/createJSONQuery/convertPathToJSONTraversal.d.ts +2 -0
  103. package/dist/postgres/createJSONQuery/convertPathToJSONTraversal.d.ts.map +1 -0
  104. package/dist/postgres/createJSONQuery/convertPathToJSONTraversal.js +16 -0
  105. package/dist/postgres/createJSONQuery/convertPathToJSONTraversal.js.map +1 -0
  106. package/dist/postgres/createJSONQuery/formatJSONPathSegment.d.ts +2 -0
  107. package/dist/postgres/createJSONQuery/formatJSONPathSegment.d.ts.map +1 -0
  108. package/dist/postgres/createJSONQuery/formatJSONPathSegment.js +5 -0
  109. package/dist/postgres/createJSONQuery/formatJSONPathSegment.js.map +1 -0
  110. package/dist/postgres/createJSONQuery/index.d.ts +3 -0
  111. package/dist/postgres/createJSONQuery/index.d.ts.map +1 -0
  112. package/dist/postgres/createJSONQuery/index.js +42 -0
  113. package/dist/postgres/createJSONQuery/index.js.map +1 -0
  114. package/dist/postgres/createMigration.d.ts +3 -0
  115. package/dist/postgres/createMigration.d.ts.map +1 -0
  116. package/dist/postgres/createMigration.js +88 -0
  117. package/dist/postgres/createMigration.js.map +1 -0
  118. package/dist/postgres/defaultSnapshot.d.ts +3 -0
  119. package/dist/postgres/defaultSnapshot.d.ts.map +1 -0
  120. package/dist/postgres/defaultSnapshot.js +20 -0
  121. package/dist/postgres/defaultSnapshot.js.map +1 -0
  122. package/dist/postgres/deleteWhere.d.ts +3 -0
  123. package/dist/postgres/deleteWhere.d.ts.map +1 -0
  124. package/dist/postgres/deleteWhere.js +6 -0
  125. package/dist/postgres/deleteWhere.js.map +1 -0
  126. package/dist/postgres/dropDatabase.d.ts +3 -0
  127. package/dist/postgres/dropDatabase.d.ts.map +1 -0
  128. package/dist/postgres/dropDatabase.js +9 -0
  129. package/dist/postgres/dropDatabase.js.map +1 -0
  130. package/dist/postgres/execute.d.ts +3 -0
  131. package/dist/postgres/execute.d.ts.map +1 -0
  132. package/dist/postgres/execute.js +11 -0
  133. package/dist/postgres/execute.js.map +1 -0
  134. package/dist/postgres/getMigrationTemplate.d.ts +4 -0
  135. package/dist/postgres/getMigrationTemplate.d.ts.map +1 -0
  136. package/dist/postgres/getMigrationTemplate.js +13 -0
  137. package/dist/postgres/getMigrationTemplate.js.map +1 -0
  138. package/dist/postgres/init.d.ts +3 -0
  139. package/dist/postgres/init.d.ts.map +1 -0
  140. package/dist/postgres/init.js +104 -0
  141. package/dist/postgres/init.js.map +1 -0
  142. package/dist/postgres/insert.d.ts +3 -0
  143. package/dist/postgres/insert.d.ts.map +1 -0
  144. package/dist/postgres/insert.js +12 -0
  145. package/dist/postgres/insert.js.map +1 -0
  146. package/dist/postgres/requireDrizzleKit.d.ts +3 -0
  147. package/dist/postgres/requireDrizzleKit.d.ts.map +1 -0
  148. package/dist/postgres/requireDrizzleKit.js +5 -0
  149. package/dist/postgres/requireDrizzleKit.js.map +1 -0
  150. package/dist/postgres/schema/build.d.ts +42 -0
  151. package/dist/postgres/schema/build.d.ts.map +1 -0
  152. package/dist/postgres/schema/build.js +404 -0
  153. package/dist/postgres/schema/build.js.map +1 -0
  154. package/dist/postgres/schema/createIndex.d.ts +11 -0
  155. package/dist/postgres/schema/createIndex.d.ts.map +1 -0
  156. package/dist/postgres/schema/createIndex.js +20 -0
  157. package/dist/postgres/schema/createIndex.js.map +1 -0
  158. package/dist/postgres/schema/geometryColumn.d.ts +12 -0
  159. package/dist/postgres/schema/geometryColumn.d.ts.map +1 -0
  160. package/dist/postgres/schema/geometryColumn.js +18 -0
  161. package/dist/postgres/schema/geometryColumn.js.map +1 -0
  162. package/dist/postgres/schema/idToUUID.d.ts +3 -0
  163. package/dist/postgres/schema/idToUUID.d.ts.map +1 -0
  164. package/dist/postgres/schema/idToUUID.js +11 -0
  165. package/dist/postgres/schema/idToUUID.js.map +1 -0
  166. package/dist/postgres/schema/parentIDColumnMap.d.ts +4 -0
  167. package/dist/postgres/schema/parentIDColumnMap.d.ts.map +1 -0
  168. package/dist/postgres/schema/parentIDColumnMap.js +9 -0
  169. package/dist/postgres/schema/parentIDColumnMap.js.map +1 -0
  170. package/dist/postgres/schema/setColumnID.d.ts +11 -0
  171. package/dist/postgres/schema/setColumnID.d.ts.map +1 -0
  172. package/dist/postgres/schema/setColumnID.js +24 -0
  173. package/dist/postgres/schema/setColumnID.js.map +1 -0
  174. package/dist/postgres/schema/traverseFields.d.ts +42 -0
  175. package/dist/postgres/schema/traverseFields.d.ts.map +1 -0
  176. package/dist/postgres/schema/traverseFields.js +743 -0
  177. package/dist/postgres/schema/traverseFields.js.map +1 -0
  178. package/dist/postgres/schema/withDefault.d.ts +4 -0
  179. package/dist/postgres/schema/withDefault.d.ts.map +1 -0
  180. package/dist/postgres/schema/withDefault.js +15 -0
  181. package/dist/postgres/schema/withDefault.js.map +1 -0
  182. package/dist/postgres/types.d.ts +142 -0
  183. package/dist/postgres/types.d.ts.map +1 -0
  184. package/dist/postgres/types.js +3 -0
  185. package/dist/postgres/types.js.map +1 -0
  186. package/dist/queries/addJoinTable.d.ts +11 -0
  187. package/dist/queries/addJoinTable.d.ts.map +1 -0
  188. package/dist/queries/addJoinTable.js +13 -0
  189. package/dist/queries/addJoinTable.js.map +1 -0
  190. package/dist/queries/buildAndOrConditions.d.ts +1 -1
  191. package/dist/queries/buildAndOrConditions.d.ts.map +1 -1
  192. package/dist/queries/buildAndOrConditions.js +2 -4
  193. package/dist/queries/buildAndOrConditions.js.map +1 -1
  194. package/dist/queries/buildOrderBy.d.ts +18 -0
  195. package/dist/queries/buildOrderBy.d.ts.map +1 -0
  196. package/dist/queries/buildOrderBy.js +56 -0
  197. package/dist/queries/buildOrderBy.js.map +1 -0
  198. package/dist/queries/buildQuery.d.ts +8 -7
  199. package/dist/queries/buildQuery.d.ts.map +1 -1
  200. package/dist/queries/buildQuery.js +12 -47
  201. package/dist/queries/buildQuery.js.map +1 -1
  202. package/dist/queries/getTableColumnFromPath.d.ts +6 -2
  203. package/dist/queries/getTableColumnFromPath.d.ts.map +1 -1
  204. package/dist/queries/getTableColumnFromPath.js +271 -224
  205. package/dist/queries/getTableColumnFromPath.js.map +1 -1
  206. package/dist/queries/operatorMap.d.ts.map +1 -1
  207. package/dist/queries/operatorMap.js +0 -4
  208. package/dist/queries/operatorMap.js.map +1 -1
  209. package/dist/queries/parseParams.d.ts +1 -1
  210. package/dist/queries/parseParams.d.ts.map +1 -1
  211. package/dist/queries/parseParams.js +85 -6
  212. package/dist/queries/parseParams.js.map +1 -1
  213. package/dist/queries/sanitizeQueryValue.d.ts +12 -1
  214. package/dist/queries/sanitizeQueryValue.d.ts.map +1 -1
  215. package/dist/queries/sanitizeQueryValue.js +89 -25
  216. package/dist/queries/sanitizeQueryValue.js.map +1 -1
  217. package/dist/queries/selectDistinct.d.ts +3 -4
  218. package/dist/queries/selectDistinct.d.ts.map +1 -1
  219. package/dist/queries/selectDistinct.js.map +1 -1
  220. package/dist/queryDrafts.d.ts.map +1 -1
  221. package/dist/queryDrafts.js +6 -6
  222. package/dist/queryDrafts.js.map +1 -1
  223. package/dist/transactions/beginTransaction.d.ts.map +1 -1
  224. package/dist/transactions/beginTransaction.js +5 -1
  225. package/dist/transactions/beginTransaction.js.map +1 -1
  226. package/dist/transactions/commitTransaction.d.ts.map +1 -1
  227. package/dist/transactions/commitTransaction.js +3 -1
  228. package/dist/transactions/commitTransaction.js.map +1 -1
  229. package/dist/transform/read/hasManyNumber.d.ts +2 -1
  230. package/dist/transform/read/hasManyNumber.d.ts.map +1 -1
  231. package/dist/transform/read/hasManyNumber.js +12 -2
  232. package/dist/transform/read/hasManyNumber.js.map +1 -1
  233. package/dist/transform/read/hasManyText.d.ts +2 -1
  234. package/dist/transform/read/hasManyText.d.ts.map +1 -1
  235. package/dist/transform/read/hasManyText.js +12 -2
  236. package/dist/transform/read/hasManyText.js.map +1 -1
  237. package/dist/transform/read/index.d.ts +3 -2
  238. package/dist/transform/read/index.d.ts.map +1 -1
  239. package/dist/transform/read/index.js +3 -2
  240. package/dist/transform/read/index.js.map +1 -1
  241. package/dist/transform/read/relationship.d.ts +2 -1
  242. package/dist/transform/read/relationship.d.ts.map +1 -1
  243. package/dist/transform/read/relationship.js +15 -6
  244. package/dist/transform/read/relationship.js.map +1 -1
  245. package/dist/transform/read/traverseFields.d.ts +10 -2
  246. package/dist/transform/read/traverseFields.d.ts.map +1 -1
  247. package/dist/transform/read/traverseFields.js +185 -71
  248. package/dist/transform/read/traverseFields.js.map +1 -1
  249. package/dist/transform/write/array.d.ts +6 -1
  250. package/dist/transform/write/array.d.ts.map +1 -1
  251. package/dist/transform/write/array.js +7 -3
  252. package/dist/transform/write/array.js.map +1 -1
  253. package/dist/transform/write/blocks.d.ts +8 -3
  254. package/dist/transform/write/blocks.d.ts.map +1 -1
  255. package/dist/transform/write/blocks.js +19 -7
  256. package/dist/transform/write/blocks.js.map +1 -1
  257. package/dist/transform/write/index.d.ts.map +1 -1
  258. package/dist/transform/write/index.js +1 -1
  259. package/dist/transform/write/index.js.map +1 -1
  260. package/dist/transform/write/relationships.d.ts.map +1 -1
  261. package/dist/transform/write/relationships.js +6 -2
  262. package/dist/transform/write/relationships.js.map +1 -1
  263. package/dist/transform/write/selects.d.ts.map +1 -1
  264. package/dist/transform/write/selects.js +1 -1
  265. package/dist/transform/write/selects.js.map +1 -1
  266. package/dist/transform/write/traverseFields.d.ts +6 -1
  267. package/dist/transform/write/traverseFields.d.ts.map +1 -1
  268. package/dist/transform/write/traverseFields.js +62 -19
  269. package/dist/transform/write/traverseFields.js.map +1 -1
  270. package/dist/types.d.ts +6 -4
  271. package/dist/types.d.ts.map +1 -1
  272. package/dist/types.js.map +1 -1
  273. package/dist/update.d.ts.map +1 -1
  274. package/dist/update.js +4 -2
  275. package/dist/update.js.map +1 -1
  276. package/dist/updateGlobal.d.ts +1 -1
  277. package/dist/updateGlobal.d.ts.map +1 -1
  278. package/dist/updateGlobal.js +2 -1
  279. package/dist/updateGlobal.js.map +1 -1
  280. package/dist/updateGlobalVersion.d.ts +1 -1
  281. package/dist/updateGlobalVersion.d.ts.map +1 -1
  282. package/dist/updateGlobalVersion.js +4 -3
  283. package/dist/updateGlobalVersion.js.map +1 -1
  284. package/dist/updateVersion.d.ts +1 -1
  285. package/dist/updateVersion.d.ts.map +1 -1
  286. package/dist/updateVersion.js +4 -3
  287. package/dist/updateVersion.js.map +1 -1
  288. package/dist/upsertRow/deleteExistingRowsByPath.d.ts.map +1 -1
  289. package/dist/upsertRow/deleteExistingRowsByPath.js +6 -2
  290. package/dist/upsertRow/deleteExistingRowsByPath.js.map +1 -1
  291. package/dist/upsertRow/index.d.ts +1 -1
  292. package/dist/upsertRow/index.d.ts.map +1 -1
  293. package/dist/upsertRow/index.js +51 -12
  294. package/dist/upsertRow/index.js.map +1 -1
  295. package/dist/upsertRow/insertArrays.d.ts.map +1 -1
  296. package/dist/upsertRow/insertArrays.js +5 -2
  297. package/dist/upsertRow/insertArrays.js.map +1 -1
  298. package/dist/upsertRow/types.d.ts +10 -5
  299. package/dist/upsertRow/types.d.ts.map +1 -1
  300. package/dist/upsertRow/types.js.map +1 -1
  301. package/dist/utilities/buildIndexName.d.ts +7 -0
  302. package/dist/utilities/buildIndexName.d.ts.map +1 -0
  303. package/dist/utilities/buildIndexName.js +14 -0
  304. package/dist/utilities/buildIndexName.js.map +1 -0
  305. package/dist/utilities/createBlocksMap.d.ts.map +1 -1
  306. package/dist/utilities/createBlocksMap.js +4 -2
  307. package/dist/utilities/createBlocksMap.js.map +1 -1
  308. package/dist/utilities/createRelationshipMap.d.ts.map +1 -1
  309. package/dist/utilities/createRelationshipMap.js +3 -1
  310. package/dist/utilities/createRelationshipMap.js.map +1 -1
  311. package/dist/utilities/executeSchemaHooks.d.ts +24 -0
  312. package/dist/utilities/executeSchemaHooks.d.ts.map +1 -0
  313. package/dist/utilities/executeSchemaHooks.js +21 -0
  314. package/dist/utilities/executeSchemaHooks.js.map +1 -0
  315. package/dist/utilities/extendDrizzleTable.d.ts +19 -0
  316. package/dist/utilities/extendDrizzleTable.d.ts.map +1 -0
  317. package/dist/utilities/extendDrizzleTable.js +38 -0
  318. package/dist/utilities/extendDrizzleTable.js.map +1 -0
  319. package/dist/utilities/getCollectionIdType.d.ts +7 -0
  320. package/dist/utilities/getCollectionIdType.d.ts.map +1 -0
  321. package/dist/utilities/getCollectionIdType.js +11 -0
  322. package/dist/utilities/getCollectionIdType.js.map +1 -0
  323. package/dist/utilities/getNameFromDrizzleTable.d.ts +3 -0
  324. package/dist/utilities/getNameFromDrizzleTable.d.ts.map +1 -0
  325. package/dist/utilities/getNameFromDrizzleTable.js +6 -0
  326. package/dist/utilities/getNameFromDrizzleTable.js.map +1 -0
  327. package/dist/utilities/hasLocalesTable.d.ts.map +1 -1
  328. package/dist/utilities/hasLocalesTable.js +12 -4
  329. package/dist/utilities/hasLocalesTable.js.map +1 -1
  330. package/dist/utilities/isPolymorphicRelationship.d.ts +6 -0
  331. package/dist/utilities/isPolymorphicRelationship.d.ts.map +1 -0
  332. package/dist/utilities/isPolymorphicRelationship.js +5 -0
  333. package/dist/utilities/isPolymorphicRelationship.js.map +1 -0
  334. package/dist/utilities/pushDevSchema.d.ts.map +1 -1
  335. package/dist/utilities/pushDevSchema.js +5 -0
  336. package/dist/utilities/pushDevSchema.js.map +1 -1
  337. package/license.md +22 -0
  338. package/package.json +26 -10
@@ -1,17 +1,22 @@
1
- /* eslint-disable no-param-reassign */ export const transformRelationship = ({ field, locale, ref, relations })=>{
1
+ export const transformRelationship = ({ field, locale, ref, relations, withinArrayOrBlockLocale })=>{
2
2
  let result;
3
3
  if (!('hasMany' in field) || field.hasMany === false) {
4
- const relation = relations[0];
4
+ let relation = relations[0];
5
+ if (withinArrayOrBlockLocale) {
6
+ relation = relations.find((rel)=>rel.locale === withinArrayOrBlockLocale);
7
+ }
5
8
  if (relation) {
6
9
  // Handle hasOne Poly
7
10
  if (Array.isArray(field.relationTo)) {
8
- const matchedRelation = Object.entries(relation).find(([key, val])=>val !== null && ![
11
+ const matchedRelation = Object.entries(relation).find(([key, val])=>{
12
+ return val !== null && ![
9
13
  'id',
10
14
  'locale',
11
15
  'order',
12
16
  'parent',
13
17
  'path'
14
- ].includes(key));
18
+ ].includes(key);
19
+ });
15
20
  if (matchedRelation) {
16
21
  const relationTo = matchedRelation[0].replace('ID', '');
17
22
  result = {
@@ -24,10 +29,14 @@
24
29
  } else {
25
30
  const transformedRelations = [];
26
31
  relations.forEach((relation)=>{
32
+ let matchedLocale = true;
33
+ if (withinArrayOrBlockLocale) {
34
+ matchedLocale = relation.locale === withinArrayOrBlockLocale;
35
+ }
27
36
  // Handle hasMany
28
37
  if (!Array.isArray(field.relationTo)) {
29
38
  const relatedData = relation[`${field.relationTo}ID`];
30
- if (relatedData) {
39
+ if (relatedData && matchedLocale) {
31
40
  transformedRelations.push(relatedData);
32
41
  }
33
42
  } else {
@@ -38,7 +47,7 @@
38
47
  'order',
39
48
  'parent',
40
49
  'path'
41
- ].includes(key));
50
+ ].includes(key) && matchedLocale);
42
51
  if (matchedRelation) {
43
52
  const relationTo = matchedRelation[0].replace('ID', '');
44
53
  transformedRelations.push({
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/transform/read/relationship.ts"],"sourcesContent":["/* eslint-disable no-param-reassign */\nimport type { RelationshipField, UploadField } from 'payload'\n\ntype Args = {\n field: RelationshipField | UploadField\n locale?: string\n ref: Record<string, unknown>\n relations: Record<string, unknown>[]\n}\n\nexport const transformRelationship = ({ field, locale, ref, relations }: Args) => {\n let result: unknown\n\n if (!('hasMany' in field) || field.hasMany === false) {\n const relation = relations[0]\n\n if (relation) {\n // Handle hasOne Poly\n if (Array.isArray(field.relationTo)) {\n const matchedRelation = Object.entries(relation).find(\n ([key, val]) =>\n val !== null && !['id', 'locale', 'order', 'parent', 'path'].includes(key),\n )\n\n if (matchedRelation) {\n const relationTo = matchedRelation[0].replace('ID', '')\n\n result = {\n relationTo,\n value: matchedRelation[1],\n }\n }\n }\n }\n } else {\n const transformedRelations = []\n\n relations.forEach((relation) => {\n // Handle hasMany\n if (!Array.isArray(field.relationTo)) {\n const relatedData = relation[`${field.relationTo}ID`]\n\n if (relatedData) {\n transformedRelations.push(relatedData)\n }\n } else {\n // Handle hasMany Poly\n const matchedRelation = Object.entries(relation).find(\n ([key, val]) =>\n val !== null && !['id', 'locale', 'order', 'parent', 'path'].includes(key),\n )\n\n if (matchedRelation) {\n const relationTo = matchedRelation[0].replace('ID', '')\n\n transformedRelations.push({\n relationTo,\n value: matchedRelation[1],\n })\n }\n }\n })\n\n result = transformedRelations\n }\n\n if (locale) {\n ref[field.name][locale] = result\n } else {\n ref[field.name] = result\n }\n}\n"],"names":["transformRelationship","field","locale","ref","relations","result","hasMany","relation","Array","isArray","relationTo","matchedRelation","Object","entries","find","key","val","includes","replace","value","transformedRelations","forEach","relatedData","push","name"],"mappings":"AAAA,oCAAoC,GAUpC,OAAO,MAAMA,wBAAwB,CAAC,EAAEC,KAAK,EAAEC,MAAM,EAAEC,GAAG,EAAEC,SAAS,EAAQ;IAC3E,IAAIC;IAEJ,IAAI,CAAE,CAAA,aAAaJ,KAAI,KAAMA,MAAMK,OAAO,KAAK,OAAO;QACpD,MAAMC,WAAWH,SAAS,CAAC,EAAE;QAE7B,IAAIG,UAAU;YACZ,qBAAqB;YACrB,IAAIC,MAAMC,OAAO,CAACR,MAAMS,UAAU,GAAG;gBACnC,MAAMC,kBAAkBC,OAAOC,OAAO,CAACN,UAAUO,IAAI,CACnD,CAAC,CAACC,KAAKC,IAAI,GACTA,QAAQ,QAAQ,CAAC;wBAAC;wBAAM;wBAAU;wBAAS;wBAAU;qBAAO,CAACC,QAAQ,CAACF;gBAG1E,IAAIJ,iBAAiB;oBACnB,MAAMD,aAAaC,eAAe,CAAC,EAAE,CAACO,OAAO,CAAC,MAAM;oBAEpDb,SAAS;wBACPK;wBACAS,OAAOR,eAAe,CAAC,EAAE;oBAC3B;gBACF;YACF;QACF;IACF,OAAO;QACL,MAAMS,uBAAuB,EAAE;QAE/BhB,UAAUiB,OAAO,CAAC,CAACd;YACjB,iBAAiB;YACjB,IAAI,CAACC,MAAMC,OAAO,CAACR,MAAMS,UAAU,GAAG;gBACpC,MAAMY,cAAcf,QAAQ,CAAC,CAAC,EAAEN,MAAMS,UAAU,CAAC,EAAE,CAAC,CAAC;gBAErD,IAAIY,aAAa;oBACfF,qBAAqBG,IAAI,CAACD;gBAC5B;YACF,OAAO;gBACL,sBAAsB;gBACtB,MAAMX,kBAAkBC,OAAOC,OAAO,CAACN,UAAUO,IAAI,CACnD,CAAC,CAACC,KAAKC,IAAI,GACTA,QAAQ,QAAQ,CAAC;wBAAC;wBAAM;wBAAU;wBAAS;wBAAU;qBAAO,CAACC,QAAQ,CAACF;gBAG1E,IAAIJ,iBAAiB;oBACnB,MAAMD,aAAaC,eAAe,CAAC,EAAE,CAACO,OAAO,CAAC,MAAM;oBAEpDE,qBAAqBG,IAAI,CAAC;wBACxBb;wBACAS,OAAOR,eAAe,CAAC,EAAE;oBAC3B;gBACF;YACF;QACF;QAEAN,SAASe;IACX;IAEA,IAAIlB,QAAQ;QACVC,GAAG,CAACF,MAAMuB,IAAI,CAAC,CAACtB,OAAO,GAAGG;IAC5B,OAAO;QACLF,GAAG,CAACF,MAAMuB,IAAI,CAAC,GAAGnB;IACpB;AACF,EAAC"}
1
+ {"version":3,"sources":["../../../src/transform/read/relationship.ts"],"sourcesContent":["import type { RelationshipField, UploadField } from 'payload'\n\ntype Args = {\n field: RelationshipField | UploadField\n locale?: string\n ref: Record<string, unknown>\n relations: Record<string, unknown>[]\n withinArrayOrBlockLocale?: string\n}\n\nexport const transformRelationship = ({\n field,\n locale,\n ref,\n relations,\n withinArrayOrBlockLocale,\n}: Args) => {\n let result: unknown\n\n if (!('hasMany' in field) || field.hasMany === false) {\n let relation = relations[0]\n\n if (withinArrayOrBlockLocale) {\n relation = relations.find((rel) => rel.locale === withinArrayOrBlockLocale)\n }\n\n if (relation) {\n // Handle hasOne Poly\n if (Array.isArray(field.relationTo)) {\n const matchedRelation = Object.entries(relation).find(([key, val]) => {\n return val !== null && !['id', 'locale', 'order', 'parent', 'path'].includes(key)\n })\n\n if (matchedRelation) {\n const relationTo = matchedRelation[0].replace('ID', '')\n\n result = {\n relationTo,\n value: matchedRelation[1],\n }\n }\n }\n }\n } else {\n const transformedRelations = []\n\n relations.forEach((relation) => {\n let matchedLocale = true\n\n if (withinArrayOrBlockLocale) {\n matchedLocale = relation.locale === withinArrayOrBlockLocale\n }\n\n // Handle hasMany\n if (!Array.isArray(field.relationTo)) {\n const relatedData = relation[`${field.relationTo}ID`]\n\n if (relatedData && matchedLocale) {\n transformedRelations.push(relatedData)\n }\n } else {\n // Handle hasMany Poly\n const matchedRelation = Object.entries(relation).find(\n ([key, val]) =>\n val !== null &&\n !['id', 'locale', 'order', 'parent', 'path'].includes(key) &&\n matchedLocale,\n )\n\n if (matchedRelation) {\n const relationTo = matchedRelation[0].replace('ID', '')\n\n transformedRelations.push({\n relationTo,\n value: matchedRelation[1],\n })\n }\n }\n })\n\n result = transformedRelations\n }\n\n if (locale) {\n ref[field.name][locale] = result\n } else {\n ref[field.name] = result\n }\n}\n"],"names":["transformRelationship","field","locale","ref","relations","withinArrayOrBlockLocale","result","hasMany","relation","find","rel","Array","isArray","relationTo","matchedRelation","Object","entries","key","val","includes","replace","value","transformedRelations","forEach","matchedLocale","relatedData","push","name"],"mappings":"AAUA,OAAO,MAAMA,wBAAwB,CAAC,EACpCC,KAAK,EACLC,MAAM,EACNC,GAAG,EACHC,SAAS,EACTC,wBAAwB,EACnB;IACL,IAAIC;IAEJ,IAAI,CAAE,CAAA,aAAaL,KAAI,KAAMA,MAAMM,OAAO,KAAK,OAAO;QACpD,IAAIC,WAAWJ,SAAS,CAAC,EAAE;QAE3B,IAAIC,0BAA0B;YAC5BG,WAAWJ,UAAUK,IAAI,CAAC,CAACC,MAAQA,IAAIR,MAAM,KAAKG;QACpD;QAEA,IAAIG,UAAU;YACZ,qBAAqB;YACrB,IAAIG,MAAMC,OAAO,CAACX,MAAMY,UAAU,GAAG;gBACnC,MAAMC,kBAAkBC,OAAOC,OAAO,CAACR,UAAUC,IAAI,CAAC,CAAC,CAACQ,KAAKC,IAAI;oBAC/D,OAAOA,QAAQ,QAAQ,CAAC;wBAAC;wBAAM;wBAAU;wBAAS;wBAAU;qBAAO,CAACC,QAAQ,CAACF;gBAC/E;gBAEA,IAAIH,iBAAiB;oBACnB,MAAMD,aAAaC,eAAe,CAAC,EAAE,CAACM,OAAO,CAAC,MAAM;oBAEpDd,SAAS;wBACPO;wBACAQ,OAAOP,eAAe,CAAC,EAAE;oBAC3B;gBACF;YACF;QACF;IACF,OAAO;QACL,MAAMQ,uBAAuB,EAAE;QAE/BlB,UAAUmB,OAAO,CAAC,CAACf;YACjB,IAAIgB,gBAAgB;YAEpB,IAAInB,0BAA0B;gBAC5BmB,gBAAgBhB,SAASN,MAAM,KAAKG;YACtC;YAEA,iBAAiB;YACjB,IAAI,CAACM,MAAMC,OAAO,CAACX,MAAMY,UAAU,GAAG;gBACpC,MAAMY,cAAcjB,QAAQ,CAAC,CAAC,EAAEP,MAAMY,UAAU,CAAC,EAAE,CAAC,CAAC;gBAErD,IAAIY,eAAeD,eAAe;oBAChCF,qBAAqBI,IAAI,CAACD;gBAC5B;YACF,OAAO;gBACL,sBAAsB;gBACtB,MAAMX,kBAAkBC,OAAOC,OAAO,CAACR,UAAUC,IAAI,CACnD,CAAC,CAACQ,KAAKC,IAAI,GACTA,QAAQ,QACR,CAAC;wBAAC;wBAAM;wBAAU;wBAAS;wBAAU;qBAAO,CAACC,QAAQ,CAACF,QACtDO;gBAGJ,IAAIV,iBAAiB;oBACnB,MAAMD,aAAaC,eAAe,CAAC,EAAE,CAACM,OAAO,CAAC,MAAM;oBAEpDE,qBAAqBI,IAAI,CAAC;wBACxBb;wBACAQ,OAAOP,eAAe,CAAC,EAAE;oBAC3B;gBACF;YACF;QACF;QAEAR,SAASgB;IACX;IAEA,IAAIpB,QAAQ;QACVC,GAAG,CAACF,MAAM0B,IAAI,CAAC,CAACzB,OAAO,GAAGI;IAC5B,OAAO;QACLH,GAAG,CAACF,MAAM0B,IAAI,CAAC,GAAGrB;IACpB;AACF,EAAC"}
@@ -1,4 +1,4 @@
1
- import type { Field, SanitizedConfig, TabAsField } from 'payload';
1
+ import type { Field, JoinQuery, SanitizedConfig, TabAsField } from 'payload';
2
2
  import type { DrizzleAdapter } from '../../types.js';
3
3
  import type { BlocksMap } from '../../utilities/createBlocksMap.js';
4
4
  type TraverseFieldsArgs = {
@@ -30,6 +30,10 @@ type TraverseFieldsArgs = {
30
30
  * An array of Payload fields to traverse
31
31
  */
32
32
  fields: (Field | TabAsField)[];
33
+ /**
34
+ *
35
+ */
36
+ joinQuery?: JoinQuery;
33
37
  /**
34
38
  * All hasMany number fields, as returned by Drizzle, keyed on an object by field path
35
39
  */
@@ -50,7 +54,11 @@ type TraverseFieldsArgs = {
50
54
  * All hasMany text fields, as returned by Drizzle, keyed on an object by field path
51
55
  */
52
56
  texts: Record<string, Record<string, unknown>[]>;
57
+ /**
58
+ * Set to a locale if this group of fields is within a localized array or block.
59
+ */
60
+ withinArrayOrBlockLocale?: string;
53
61
  };
54
- export declare const traverseFields: <T extends Record<string, unknown>>({ adapter, blocks, config, dataRef, deletions, fieldPrefix, fields, numbers, path, relationships, table, texts, }: TraverseFieldsArgs) => T;
62
+ export declare const traverseFields: <T extends Record<string, unknown>>({ adapter, blocks, config, dataRef, deletions, fieldPrefix, fields, joinQuery, numbers, path, relationships, table, texts, withinArrayOrBlockLocale, }: TraverseFieldsArgs) => T;
55
63
  export {};
56
64
  //# sourceMappingURL=traverseFields.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"traverseFields.d.ts","sourceRoot":"","sources":["../../../src/transform/read/traverseFields.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AAIjE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AACpD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oCAAoC,CAAA;AAMnE,KAAK,kBAAkB,GAAG;IACxB;;OAEG;IACH,OAAO,EAAE,cAAc,CAAA;IACvB;;OAEG;IACH,MAAM,EAAE,SAAS,CAAA;IACjB;;OAEG;IACH,MAAM,EAAE,eAAe,CAAA;IACvB;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAChC;;OAEG;IACH,SAAS,EAAE,CAAC,MAAM,IAAI,CAAC,EAAE,CAAA;IACzB;;OAEG;IACH,WAAW,EAAE,MAAM,CAAA;IACnB;;OAEG;IACH,MAAM,EAAE,CAAC,KAAK,GAAG,UAAU,CAAC,EAAE,CAAA;IAC9B;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC,CAAA;IAClD;;OAEG;IACH,IAAI,EAAE,MAAM,CAAA;IACZ;;OAEG;IACH,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC,CAAA;IACxD;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC9B;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC,CAAA;CACjD,CAAA;AAID,eAAO,MAAM,cAAc,GAAI,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,qHAa7D,kBAAkB,KAAG,CA+cvB,CAAA"}
1
+ {"version":3,"file":"traverseFields.d.ts","sourceRoot":"","sources":["../../../src/transform/read/traverseFields.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AAI5E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AACpD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oCAAoC,CAAA;AAMnE,KAAK,kBAAkB,GAAG;IACxB;;OAEG;IACH,OAAO,EAAE,cAAc,CAAA;IACvB;;OAEG;IACH,MAAM,EAAE,SAAS,CAAA;IACjB;;OAEG;IACH,MAAM,EAAE,eAAe,CAAA;IACvB;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAChC;;OAEG;IACH,SAAS,EAAE,CAAC,MAAM,IAAI,CAAC,EAAE,CAAA;IACzB;;OAEG;IACH,WAAW,EAAE,MAAM,CAAA;IACnB;;OAEG;IACH,MAAM,EAAE,CAAC,KAAK,GAAG,UAAU,CAAC,EAAE,CAAA;IAC9B;;OAEG;IACH,SAAS,CAAC,EAAE,SAAS,CAAA;IACrB;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC,CAAA;IAClD;;OAEG;IACH,IAAI,EAAE,MAAM,CAAA;IACZ;;OAEG;IACH,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC,CAAA;IACxD;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC9B;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC,CAAA;IAChD;;OAEG;IACH,wBAAwB,CAAC,EAAE,MAAM,CAAA;CAClC,CAAA;AAID,eAAO,MAAM,cAAc,GAAI,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,0JAe7D,kBAAkB,KAAG,CA4lBvB,CAAA"}
@@ -1,10 +1,10 @@
1
- import { fieldAffectsData } from 'payload/shared';
1
+ import { fieldAffectsData, fieldIsVirtual } from 'payload/shared';
2
2
  import { transformHasManyNumber } from './hasManyNumber.js';
3
3
  import { transformHasManyText } from './hasManyText.js';
4
4
  import { transformRelationship } from './relationship.js';
5
5
  // Traverse fields recursively, transforming data
6
6
  // for each field type into required Payload shape
7
- export const traverseFields = ({ adapter, blocks, config, dataRef, deletions, fieldPrefix, fields, numbers, path, relationships, table, texts })=>{
7
+ export const traverseFields = ({ adapter, blocks, config, dataRef, deletions, fieldPrefix, fields, joinQuery, numbers, path, relationships, table, texts, withinArrayOrBlockLocale })=>{
8
8
  const sanitizedPath = path ? `${path}.` : path;
9
9
  const formatted = fields.reduce((result, field)=>{
10
10
  if (field.type === 'tabs') {
@@ -19,11 +19,13 @@ export const traverseFields = ({ adapter, blocks, config, dataRef, deletions, fi
19
19
  ...tab,
20
20
  type: 'tab'
21
21
  })),
22
+ joinQuery,
22
23
  numbers,
23
24
  path,
24
25
  relationships,
25
26
  table,
26
- texts
27
+ texts,
28
+ withinArrayOrBlockLocale
27
29
  });
28
30
  }
29
31
  if (field.type === 'collapsible' || field.type === 'row' || field.type === 'tab' && !('name' in field)) {
@@ -35,16 +37,21 @@ export const traverseFields = ({ adapter, blocks, config, dataRef, deletions, fi
35
37
  deletions,
36
38
  fieldPrefix,
37
39
  fields: field.fields,
40
+ joinQuery,
38
41
  numbers,
39
42
  path,
40
43
  relationships,
41
44
  table,
42
- texts
45
+ texts,
46
+ withinArrayOrBlockLocale
43
47
  });
44
48
  }
45
49
  if (fieldAffectsData(field)) {
50
+ if (fieldIsVirtual(field)) {
51
+ return result;
52
+ }
46
53
  const fieldName = `${fieldPrefix || ''}${field.name}`;
47
- const fieldData = table[fieldName];
54
+ let fieldData = table[fieldName];
48
55
  const localizedFieldData = {};
49
56
  const valuesToTransform = [];
50
57
  if (fieldPrefix) {
@@ -55,7 +62,9 @@ export const traverseFields = ({ adapter, blocks, config, dataRef, deletions, fi
55
62
  if (field.localized) {
56
63
  result[field.name] = fieldData.reduce((arrayResult, row)=>{
57
64
  if (typeof row._locale === 'string') {
58
- if (!arrayResult[row._locale]) arrayResult[row._locale] = [];
65
+ if (!arrayResult[row._locale]) {
66
+ arrayResult[row._locale] = [];
67
+ }
59
68
  const locale = row._locale;
60
69
  const data = {};
61
70
  delete row._locale;
@@ -75,7 +84,8 @@ export const traverseFields = ({ adapter, blocks, config, dataRef, deletions, fi
75
84
  path: `${sanitizedPath}${field.name}.${row._order - 1}`,
76
85
  relationships,
77
86
  table: row,
78
- texts
87
+ texts,
88
+ withinArrayOrBlockLocale: locale
79
89
  });
80
90
  if ('_order' in rowResult) {
81
91
  delete rowResult._order;
@@ -85,7 +95,7 @@ export const traverseFields = ({ adapter, blocks, config, dataRef, deletions, fi
85
95
  return arrayResult;
86
96
  }, {});
87
97
  } else {
88
- result[field.name] = fieldData.map((row, i)=>{
98
+ result[field.name] = fieldData.reduce((acc, row, i)=>{
89
99
  if (row._uuid) {
90
100
  row.id = row._uuid;
91
101
  delete row._uuid;
@@ -93,37 +103,47 @@ export const traverseFields = ({ adapter, blocks, config, dataRef, deletions, fi
93
103
  if ('_order' in row) {
94
104
  delete row._order;
95
105
  }
96
- return traverseFields({
97
- adapter,
98
- blocks,
99
- config,
100
- dataRef: row,
101
- deletions,
102
- fieldPrefix: '',
103
- fields: field.fields,
104
- numbers,
105
- path: `${sanitizedPath}${field.name}.${i}`,
106
- relationships,
107
- table: row,
108
- texts
109
- });
110
- });
106
+ if (!withinArrayOrBlockLocale || withinArrayOrBlockLocale && withinArrayOrBlockLocale === row._locale) {
107
+ if (row._locale) {
108
+ delete row._locale;
109
+ }
110
+ acc.push(traverseFields({
111
+ adapter,
112
+ blocks,
113
+ config,
114
+ dataRef: row,
115
+ deletions,
116
+ fieldPrefix: '',
117
+ fields: field.fields,
118
+ numbers,
119
+ path: `${sanitizedPath}${field.name}.${i}`,
120
+ relationships,
121
+ table: row,
122
+ texts,
123
+ withinArrayOrBlockLocale
124
+ }));
125
+ }
126
+ return acc;
127
+ }, []);
111
128
  }
112
129
  }
113
130
  return result;
114
131
  }
115
132
  if (field.type === 'blocks') {
116
133
  const blockFieldPath = `${sanitizedPath}${field.name}`;
117
- if (Array.isArray(blocks[blockFieldPath])) {
134
+ const blocksByPath = blocks[blockFieldPath];
135
+ if (Array.isArray(blocksByPath)) {
118
136
  if (field.localized) {
119
137
  result[field.name] = {};
120
- blocks[blockFieldPath].forEach((row)=>{
138
+ blocksByPath.forEach((row)=>{
121
139
  if (row._uuid) {
122
140
  row.id = row._uuid;
123
141
  delete row._uuid;
124
142
  }
125
143
  if (typeof row._locale === 'string') {
126
- if (!result[field.name][row._locale]) result[field.name][row._locale] = [];
144
+ if (!result[field.name][row._locale]) {
145
+ result[field.name][row._locale] = [];
146
+ }
127
147
  result[field.name][row._locale].push(row);
128
148
  delete row._locale;
129
149
  }
@@ -144,7 +164,8 @@ export const traverseFields = ({ adapter, blocks, config, dataRef, deletions, fi
144
164
  path: `${blockFieldPath}.${row._order - 1}`,
145
165
  relationships,
146
166
  table: row,
147
- texts
167
+ texts,
168
+ withinArrayOrBlockLocale: locale
148
169
  });
149
170
  delete blockResult._order;
150
171
  return blockResult;
@@ -153,7 +174,21 @@ export const traverseFields = ({ adapter, blocks, config, dataRef, deletions, fi
153
174
  });
154
175
  });
155
176
  } else {
156
- result[field.name] = blocks[blockFieldPath].map((row, i)=>{
177
+ // Add locale-specific index to have a proper blockFieldPath for current locale
178
+ // because blocks can be in the same array for different locales!
179
+ if (withinArrayOrBlockLocale && config.localization) {
180
+ for (const locale of config.localization.localeCodes){
181
+ let localeIndex = 0;
182
+ for(let i = 0; i < blocksByPath.length; i++){
183
+ const row = blocksByPath[i];
184
+ if (row._locale === locale) {
185
+ row._index = localeIndex;
186
+ localeIndex++;
187
+ }
188
+ }
189
+ }
190
+ }
191
+ result[field.name] = blocksByPath.reduce((acc, row, i)=>{
157
192
  delete row._order;
158
193
  if (row._uuid) {
159
194
  row.id = row._uuid;
@@ -161,23 +196,36 @@ export const traverseFields = ({ adapter, blocks, config, dataRef, deletions, fi
161
196
  }
162
197
  const block = field.blocks.find(({ slug })=>slug === row.blockType);
163
198
  if (block) {
164
- return traverseFields({
165
- adapter,
166
- blocks,
167
- config,
168
- dataRef: row,
169
- deletions,
170
- fieldPrefix: '',
171
- fields: block.fields,
172
- numbers,
173
- path: `${blockFieldPath}.${i}`,
174
- relationships,
175
- table: row,
176
- texts
177
- });
199
+ if (!withinArrayOrBlockLocale || withinArrayOrBlockLocale && withinArrayOrBlockLocale === row._locale) {
200
+ if (row._locale) {
201
+ delete row._locale;
202
+ }
203
+ if (typeof row._index === 'number') {
204
+ i = row._index;
205
+ delete row._index;
206
+ }
207
+ acc.push(traverseFields({
208
+ adapter,
209
+ blocks,
210
+ config,
211
+ dataRef: row,
212
+ deletions,
213
+ fieldPrefix: '',
214
+ fields: block.fields,
215
+ numbers,
216
+ path: `${blockFieldPath}.${i}`,
217
+ relationships,
218
+ table: row,
219
+ texts,
220
+ withinArrayOrBlockLocale
221
+ }));
222
+ return acc;
223
+ }
224
+ } else {
225
+ acc.push({});
178
226
  }
179
- return {};
180
- });
227
+ return acc;
228
+ }, []);
181
229
  }
182
230
  }
183
231
  return result;
@@ -215,7 +263,9 @@ export const traverseFields = ({ adapter, blocks, config, dataRef, deletions, fi
215
263
  const relationsByLocale = {};
216
264
  relationPathMatch.forEach((row)=>{
217
265
  if (typeof row.locale === 'string') {
218
- if (!relationsByLocale[row.locale]) relationsByLocale[row.locale] = [];
266
+ if (!relationsByLocale[row.locale]) {
267
+ relationsByLocale[row.locale] = [];
268
+ }
219
269
  relationsByLocale[row.locale].push(row);
220
270
  }
221
271
  });
@@ -231,21 +281,64 @@ export const traverseFields = ({ adapter, blocks, config, dataRef, deletions, fi
231
281
  transformRelationship({
232
282
  field,
233
283
  ref: result,
234
- relations: relationPathMatch
284
+ relations: relationPathMatch,
285
+ withinArrayOrBlockLocale
235
286
  });
236
287
  }
237
288
  return result;
238
289
  }
239
290
  }
291
+ if (field.type === 'join') {
292
+ const { limit = field.defaultLimit ?? 10 } = joinQuery?.[`${fieldPrefix.replaceAll('_', '.')}${field.name}`] || {};
293
+ // raw hasMany results from SQLite
294
+ if (typeof fieldData === 'string') {
295
+ fieldData = JSON.parse(fieldData);
296
+ }
297
+ let fieldResult;
298
+ if (Array.isArray(fieldData)) {
299
+ if (field.localized) {
300
+ fieldResult = fieldData.reduce((joinResult, row)=>{
301
+ if (typeof row._locale === 'string') {
302
+ if (!joinResult[row._locale]) {
303
+ joinResult[row._locale] = {
304
+ docs: [],
305
+ hasNextPage: false
306
+ };
307
+ }
308
+ joinResult[row._locale].docs.push(row._parentID);
309
+ }
310
+ return joinResult;
311
+ }, {});
312
+ Object.keys(fieldResult).forEach((locale)=>{
313
+ fieldResult[locale].hasNextPage = fieldResult[locale].docs.length > limit;
314
+ fieldResult[locale].docs = fieldResult[locale].docs.slice(0, limit);
315
+ });
316
+ } else {
317
+ const hasNextPage = limit !== 0 && fieldData.length > limit;
318
+ fieldResult = {
319
+ docs: (hasNextPage ? fieldData.slice(0, limit) : fieldData).map(({ id })=>({
320
+ id
321
+ })),
322
+ hasNextPage
323
+ };
324
+ }
325
+ }
326
+ result[field.name] = fieldResult;
327
+ return result;
328
+ }
240
329
  if (field.type === 'text' && field?.hasMany) {
241
330
  const textPathMatch = texts[`${sanitizedPath}${field.name}`];
242
- if (!textPathMatch) return result;
331
+ if (!textPathMatch) {
332
+ return result;
333
+ }
243
334
  if (field.localized) {
244
335
  result[field.name] = {};
245
336
  const textsByLocale = {};
246
337
  textPathMatch.forEach((row)=>{
247
338
  if (typeof row.locale === 'string') {
248
- if (!textsByLocale[row.locale]) textsByLocale[row.locale] = [];
339
+ if (!textsByLocale[row.locale]) {
340
+ textsByLocale[row.locale] = [];
341
+ }
249
342
  textsByLocale[row.locale].push(row);
250
343
  }
251
344
  });
@@ -261,20 +354,25 @@ export const traverseFields = ({ adapter, blocks, config, dataRef, deletions, fi
261
354
  transformHasManyText({
262
355
  field,
263
356
  ref: result,
264
- textRows: textPathMatch
357
+ textRows: textPathMatch,
358
+ withinArrayOrBlockLocale
265
359
  });
266
360
  }
267
361
  return result;
268
362
  }
269
363
  if (field.type === 'number' && field.hasMany) {
270
364
  const numberPathMatch = numbers[`${sanitizedPath}${field.name}`];
271
- if (!numberPathMatch) return result;
365
+ if (!numberPathMatch) {
366
+ return result;
367
+ }
272
368
  if (field.localized) {
273
369
  result[field.name] = {};
274
370
  const numbersByLocale = {};
275
371
  numberPathMatch.forEach((row)=>{
276
372
  if (typeof row.locale === 'string') {
277
- if (!numbersByLocale[row.locale]) numbersByLocale[row.locale] = [];
373
+ if (!numbersByLocale[row.locale]) {
374
+ numbersByLocale[row.locale] = [];
375
+ }
278
376
  numbersByLocale[row.locale].push(row);
279
377
  }
280
378
  });
@@ -290,7 +388,8 @@ export const traverseFields = ({ adapter, blocks, config, dataRef, deletions, fi
290
388
  transformHasManyNumber({
291
389
  field,
292
390
  numberRows: numberPathMatch,
293
- ref: result
391
+ ref: result,
392
+ withinArrayOrBlockLocale
294
393
  });
295
394
  }
296
395
  return result;
@@ -300,22 +399,34 @@ export const traverseFields = ({ adapter, blocks, config, dataRef, deletions, fi
300
399
  if (field.localized) {
301
400
  result[field.name] = fieldData.reduce((selectResult, row)=>{
302
401
  if (typeof row.locale === 'string') {
303
- if (!selectResult[row.locale]) selectResult[row.locale] = [];
402
+ if (!selectResult[row.locale]) {
403
+ selectResult[row.locale] = [];
404
+ }
304
405
  selectResult[row.locale].push(row.value);
305
406
  }
306
407
  return selectResult;
307
408
  }, {});
308
409
  } else {
309
- result[field.name] = fieldData.map(({ value })=>value);
410
+ let selectData = fieldData;
411
+ if (withinArrayOrBlockLocale) {
412
+ selectData = selectData.filter(({ locale })=>locale === withinArrayOrBlockLocale);
413
+ }
414
+ result[field.name] = selectData.map(({ value })=>value);
310
415
  }
311
416
  }
312
417
  return result;
313
418
  }
314
419
  if (field.localized && Array.isArray(table._locales)) {
420
+ if (!table._locales.length && adapter.payload.config.localization) {
421
+ adapter.payload.config.localization.localeCodes.forEach((_locale)=>table._locales.push({
422
+ _locale
423
+ }));
424
+ }
315
425
  table._locales.forEach((localeRow)=>{
316
426
  valuesToTransform.push({
317
427
  ref: localizedFieldData,
318
428
  table: {
429
+ ...table,
319
430
  ...localeRow
320
431
  }
321
432
  });
@@ -331,14 +442,23 @@ export const traverseFields = ({ adapter, blocks, config, dataRef, deletions, fi
331
442
  const locale = table?._locale;
332
443
  let val = fieldData;
333
444
  switch(field.type){
334
- case 'tab':
445
+ case 'date':
446
+ {
447
+ if (typeof fieldData === 'string') {
448
+ val = new Date(fieldData).toISOString();
449
+ }
450
+ break;
451
+ }
335
452
  case 'group':
453
+ case 'tab':
336
454
  {
337
455
  const groupFieldPrefix = `${fieldPrefix || ''}${field.name}_`;
338
456
  const groupData = {};
339
457
  const locale = table._locale;
340
458
  const refKey = field.localized && locale ? locale : field.name;
341
- if (field.localized && locale) delete table._locale;
459
+ if (field.localized && locale) {
460
+ delete table._locale;
461
+ }
342
462
  ref[refKey] = traverseFields({
343
463
  adapter,
344
464
  blocks,
@@ -351,20 +471,14 @@ export const traverseFields = ({ adapter, blocks, config, dataRef, deletions, fi
351
471
  path: `${sanitizedPath}${field.name}`,
352
472
  relationships,
353
473
  table,
354
- texts
474
+ texts,
475
+ withinArrayOrBlockLocale: locale || withinArrayOrBlockLocale
355
476
  });
356
477
  if ('_order' in ref) {
357
478
  delete ref._order;
358
479
  }
359
480
  return;
360
481
  }
361
- case 'text':
362
- {
363
- if (typeof fieldData === 'string') {
364
- val = String(fieldData);
365
- }
366
- break;
367
- }
368
482
  case 'number':
369
483
  {
370
484
  if (typeof fieldData === 'string') {
@@ -372,13 +486,6 @@ export const traverseFields = ({ adapter, blocks, config, dataRef, deletions, fi
372
486
  }
373
487
  break;
374
488
  }
375
- case 'date':
376
- {
377
- if (typeof fieldData === 'string') {
378
- val = new Date(fieldData).toISOString();
379
- }
380
- break;
381
- }
382
489
  case 'relationship':
383
490
  case 'upload':
384
491
  {
@@ -387,6 +494,13 @@ export const traverseFields = ({ adapter, blocks, config, dataRef, deletions, fi
387
494
  }
388
495
  break;
389
496
  }
497
+ case 'text':
498
+ {
499
+ if (typeof fieldData === 'string') {
500
+ val = String(fieldData);
501
+ }
502
+ break;
503
+ }
390
504
  default:
391
505
  {
392
506
  break;