@payloadcms/drizzle 3.0.0-canary.a192632 → 3.0.0-canary.a5aaf21

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 (272) 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/createGlobalVersion.d.ts +1 -1
  5. package/dist/createGlobalVersion.d.ts.map +1 -1
  6. package/dist/createGlobalVersion.js +4 -2
  7. package/dist/createGlobalVersion.js.map +1 -1
  8. package/dist/createTableName.d.ts.map +1 -1
  9. package/dist/createTableName.js +6 -2
  10. package/dist/createTableName.js.map +1 -1
  11. package/dist/createVersion.d.ts +1 -1
  12. package/dist/createVersion.d.ts.map +1 -1
  13. package/dist/createVersion.js +22 -14
  14. package/dist/createVersion.js.map +1 -1
  15. package/dist/deleteOne.d.ts.map +1 -1
  16. package/dist/deleteOne.js +5 -3
  17. package/dist/deleteOne.js.map +1 -1
  18. package/dist/deleteVersions.js +1 -1
  19. package/dist/deleteVersions.js.map +1 -1
  20. package/dist/destroy.d.ts.map +1 -1
  21. package/dist/destroy.js +3 -1
  22. package/dist/destroy.js.map +1 -1
  23. package/dist/exports/postgres.d.ts +14 -0
  24. package/dist/exports/postgres.d.ts.map +1 -0
  25. package/dist/exports/postgres.js +15 -0
  26. package/dist/exports/postgres.js.map +1 -0
  27. package/dist/find/buildFindManyArgs.d.ts +13 -7
  28. package/dist/find/buildFindManyArgs.d.ts.map +1 -1
  29. package/dist/find/buildFindManyArgs.js +5 -1
  30. package/dist/find/buildFindManyArgs.js.map +1 -1
  31. package/dist/find/findMany.d.ts +1 -1
  32. package/dist/find/findMany.d.ts.map +1 -1
  33. package/dist/find/findMany.js +6 -3
  34. package/dist/find/findMany.js.map +1 -1
  35. package/dist/find/traverseFields.d.ts +7 -3
  36. package/dist/find/traverseFields.d.ts.map +1 -1
  37. package/dist/find/traverseFields.js +91 -16
  38. package/dist/find/traverseFields.js.map +1 -1
  39. package/dist/find.d.ts.map +1 -1
  40. package/dist/find.js +2 -1
  41. package/dist/find.js.map +1 -1
  42. package/dist/findGlobalVersions.js +1 -1
  43. package/dist/findGlobalVersions.js.map +1 -1
  44. package/dist/findMigrationDir.d.ts.map +1 -1
  45. package/dist/findMigrationDir.js +3 -1
  46. package/dist/findMigrationDir.js.map +1 -1
  47. package/dist/findOne.d.ts +1 -1
  48. package/dist/findOne.d.ts.map +1 -1
  49. package/dist/findOne.js +2 -1
  50. package/dist/findOne.js.map +1 -1
  51. package/dist/findVersions.js +1 -1
  52. package/dist/findVersions.js.map +1 -1
  53. package/dist/migrate.js +1 -0
  54. package/dist/migrate.js.map +1 -1
  55. package/dist/migrateDown.d.ts.map +1 -1
  56. package/dist/migrateDown.js +1 -1
  57. package/dist/migrateDown.js.map +1 -1
  58. package/dist/migrateFresh.d.ts.map +1 -1
  59. package/dist/migrateFresh.js +1 -0
  60. package/dist/migrateFresh.js.map +1 -1
  61. package/dist/migrateRefresh.d.ts.map +1 -1
  62. package/dist/migrateRefresh.js +2 -1
  63. package/dist/migrateRefresh.js.map +1 -1
  64. package/dist/migrateReset.d.ts.map +1 -1
  65. package/dist/migrateReset.js +4 -2
  66. package/dist/migrateReset.js.map +1 -1
  67. package/dist/migrateStatus.js +0 -1
  68. package/dist/migrateStatus.js.map +1 -1
  69. package/dist/postgres/countDistinct.d.ts +3 -0
  70. package/dist/postgres/countDistinct.d.ts.map +1 -0
  71. package/dist/postgres/countDistinct.js +24 -0
  72. package/dist/postgres/countDistinct.js.map +1 -0
  73. package/dist/postgres/createJSONQuery/convertPathToJSONTraversal.d.ts +2 -0
  74. package/dist/postgres/createJSONQuery/convertPathToJSONTraversal.d.ts.map +1 -0
  75. package/dist/postgres/createJSONQuery/convertPathToJSONTraversal.js +16 -0
  76. package/dist/postgres/createJSONQuery/convertPathToJSONTraversal.js.map +1 -0
  77. package/dist/postgres/createJSONQuery/formatJSONPathSegment.d.ts +2 -0
  78. package/dist/postgres/createJSONQuery/formatJSONPathSegment.d.ts.map +1 -0
  79. package/dist/postgres/createJSONQuery/formatJSONPathSegment.js +5 -0
  80. package/dist/postgres/createJSONQuery/formatJSONPathSegment.js.map +1 -0
  81. package/dist/postgres/createJSONQuery/index.d.ts +10 -0
  82. package/dist/postgres/createJSONQuery/index.d.ts.map +1 -0
  83. package/dist/postgres/createJSONQuery/index.js +54 -0
  84. package/dist/postgres/createJSONQuery/index.js.map +1 -0
  85. package/dist/postgres/createMigration.d.ts +3 -0
  86. package/dist/postgres/createMigration.d.ts.map +1 -0
  87. package/dist/postgres/createMigration.js +92 -0
  88. package/dist/postgres/createMigration.js.map +1 -0
  89. package/dist/postgres/defaultSnapshot.d.ts +3 -0
  90. package/dist/postgres/defaultSnapshot.d.ts.map +1 -0
  91. package/dist/postgres/defaultSnapshot.js +17 -0
  92. package/dist/postgres/defaultSnapshot.js.map +1 -0
  93. package/dist/postgres/deleteWhere.d.ts +3 -0
  94. package/dist/postgres/deleteWhere.d.ts.map +1 -0
  95. package/dist/postgres/deleteWhere.js +6 -0
  96. package/dist/postgres/deleteWhere.js.map +1 -0
  97. package/dist/postgres/dropDatabase.d.ts +3 -0
  98. package/dist/postgres/dropDatabase.d.ts.map +1 -0
  99. package/dist/postgres/dropDatabase.js +9 -0
  100. package/dist/postgres/dropDatabase.js.map +1 -0
  101. package/dist/postgres/execute.d.ts +3 -0
  102. package/dist/postgres/execute.d.ts.map +1 -0
  103. package/dist/postgres/execute.js +11 -0
  104. package/dist/postgres/execute.js.map +1 -0
  105. package/dist/postgres/getMigrationTemplate.d.ts +4 -0
  106. package/dist/postgres/getMigrationTemplate.d.ts.map +1 -0
  107. package/dist/postgres/getMigrationTemplate.js +13 -0
  108. package/dist/postgres/getMigrationTemplate.js.map +1 -0
  109. package/dist/postgres/init.d.ts +3 -0
  110. package/dist/postgres/init.d.ts.map +1 -0
  111. package/dist/postgres/init.js +95 -0
  112. package/dist/postgres/init.js.map +1 -0
  113. package/dist/postgres/insert.d.ts +3 -0
  114. package/dist/postgres/insert.d.ts.map +1 -0
  115. package/dist/postgres/insert.js +12 -0
  116. package/dist/postgres/insert.js.map +1 -0
  117. package/dist/postgres/requireDrizzleKit.d.ts +3 -0
  118. package/dist/postgres/requireDrizzleKit.d.ts.map +1 -0
  119. package/dist/postgres/requireDrizzleKit.js +5 -0
  120. package/dist/postgres/requireDrizzleKit.js.map +1 -0
  121. package/dist/postgres/schema/build.d.ts +40 -0
  122. package/dist/postgres/schema/build.d.ts.map +1 -0
  123. package/dist/postgres/schema/build.js +378 -0
  124. package/dist/postgres/schema/build.js.map +1 -0
  125. package/dist/postgres/schema/createIndex.d.ts +12 -0
  126. package/dist/postgres/schema/createIndex.d.ts.map +1 -0
  127. package/dist/postgres/schema/createIndex.js +20 -0
  128. package/dist/postgres/schema/createIndex.js.map +1 -0
  129. package/dist/postgres/schema/idToUUID.d.ts +3 -0
  130. package/dist/postgres/schema/idToUUID.d.ts.map +1 -0
  131. package/dist/postgres/schema/idToUUID.js +11 -0
  132. package/dist/postgres/schema/idToUUID.js.map +1 -0
  133. package/dist/postgres/schema/parentIDColumnMap.d.ts +4 -0
  134. package/dist/postgres/schema/parentIDColumnMap.d.ts.map +1 -0
  135. package/dist/postgres/schema/parentIDColumnMap.js +9 -0
  136. package/dist/postgres/schema/parentIDColumnMap.js.map +1 -0
  137. package/dist/postgres/schema/setColumnID.d.ts +11 -0
  138. package/dist/postgres/schema/setColumnID.d.ts.map +1 -0
  139. package/dist/postgres/schema/setColumnID.js +24 -0
  140. package/dist/postgres/schema/setColumnID.js.map +1 -0
  141. package/dist/postgres/schema/traverseFields.d.ts +40 -0
  142. package/dist/postgres/schema/traverseFields.d.ts.map +1 -0
  143. package/dist/postgres/schema/traverseFields.js +733 -0
  144. package/dist/postgres/schema/traverseFields.js.map +1 -0
  145. package/dist/postgres/schema/withDefault.d.ts +4 -0
  146. package/dist/postgres/schema/withDefault.d.ts.map +1 -0
  147. package/dist/postgres/schema/withDefault.js +12 -0
  148. package/dist/postgres/schema/withDefault.js.map +1 -0
  149. package/dist/postgres/types.d.ts +113 -0
  150. package/dist/postgres/types.d.ts.map +1 -0
  151. package/dist/postgres/types.js +3 -0
  152. package/dist/postgres/types.js.map +1 -0
  153. package/dist/queries/buildAndOrConditions.d.ts +1 -1
  154. package/dist/queries/buildAndOrConditions.d.ts.map +1 -1
  155. package/dist/queries/buildAndOrConditions.js +2 -4
  156. package/dist/queries/buildAndOrConditions.js.map +1 -1
  157. package/dist/queries/buildOrderBy.d.ts +18 -0
  158. package/dist/queries/buildOrderBy.d.ts.map +1 -0
  159. package/dist/queries/buildOrderBy.js +51 -0
  160. package/dist/queries/buildOrderBy.js.map +1 -0
  161. package/dist/queries/buildQuery.d.ts +4 -4
  162. package/dist/queries/buildQuery.d.ts.map +1 -1
  163. package/dist/queries/buildQuery.js +12 -47
  164. package/dist/queries/buildQuery.js.map +1 -1
  165. package/dist/queries/getTableColumnFromPath.d.ts +6 -2
  166. package/dist/queries/getTableColumnFromPath.d.ts.map +1 -1
  167. package/dist/queries/getTableColumnFromPath.js +55 -18
  168. package/dist/queries/getTableColumnFromPath.js.map +1 -1
  169. package/dist/queries/operatorMap.d.ts.map +1 -1
  170. package/dist/queries/operatorMap.js.map +1 -1
  171. package/dist/queries/parseParams.d.ts +1 -1
  172. package/dist/queries/parseParams.d.ts.map +1 -1
  173. package/dist/queries/parseParams.js +50 -6
  174. package/dist/queries/parseParams.js.map +1 -1
  175. package/dist/queries/sanitizeQueryValue.d.ts +11 -1
  176. package/dist/queries/sanitizeQueryValue.d.ts.map +1 -1
  177. package/dist/queries/sanitizeQueryValue.js +69 -21
  178. package/dist/queries/sanitizeQueryValue.js.map +1 -1
  179. package/dist/queries/selectDistinct.d.ts +3 -4
  180. package/dist/queries/selectDistinct.d.ts.map +1 -1
  181. package/dist/queries/selectDistinct.js.map +1 -1
  182. package/dist/queryDrafts.d.ts.map +1 -1
  183. package/dist/queryDrafts.js +1 -2
  184. package/dist/queryDrafts.js.map +1 -1
  185. package/dist/transactions/beginTransaction.d.ts.map +1 -1
  186. package/dist/transactions/beginTransaction.js +5 -1
  187. package/dist/transactions/beginTransaction.js.map +1 -1
  188. package/dist/transactions/commitTransaction.d.ts.map +1 -1
  189. package/dist/transactions/commitTransaction.js +3 -1
  190. package/dist/transactions/commitTransaction.js.map +1 -1
  191. package/dist/transform/read/hasManyNumber.d.ts +2 -1
  192. package/dist/transform/read/hasManyNumber.d.ts.map +1 -1
  193. package/dist/transform/read/hasManyNumber.js +12 -2
  194. package/dist/transform/read/hasManyNumber.js.map +1 -1
  195. package/dist/transform/read/hasManyText.d.ts +2 -1
  196. package/dist/transform/read/hasManyText.d.ts.map +1 -1
  197. package/dist/transform/read/hasManyText.js +12 -2
  198. package/dist/transform/read/hasManyText.js.map +1 -1
  199. package/dist/transform/read/index.d.ts +3 -2
  200. package/dist/transform/read/index.d.ts.map +1 -1
  201. package/dist/transform/read/index.js +3 -2
  202. package/dist/transform/read/index.js.map +1 -1
  203. package/dist/transform/read/relationship.d.ts +2 -1
  204. package/dist/transform/read/relationship.d.ts.map +1 -1
  205. package/dist/transform/read/relationship.js +15 -6
  206. package/dist/transform/read/relationship.js.map +1 -1
  207. package/dist/transform/read/traverseFields.d.ts +10 -2
  208. package/dist/transform/read/traverseFields.d.ts.map +1 -1
  209. package/dist/transform/read/traverseFields.js +132 -52
  210. package/dist/transform/read/traverseFields.js.map +1 -1
  211. package/dist/transform/write/array.d.ts +6 -1
  212. package/dist/transform/write/array.d.ts.map +1 -1
  213. package/dist/transform/write/array.js +7 -3
  214. package/dist/transform/write/array.js.map +1 -1
  215. package/dist/transform/write/blocks.d.ts +8 -3
  216. package/dist/transform/write/blocks.d.ts.map +1 -1
  217. package/dist/transform/write/blocks.js +19 -7
  218. package/dist/transform/write/blocks.js.map +1 -1
  219. package/dist/transform/write/index.d.ts.map +1 -1
  220. package/dist/transform/write/index.js +1 -1
  221. package/dist/transform/write/index.js.map +1 -1
  222. package/dist/transform/write/relationships.d.ts.map +1 -1
  223. package/dist/transform/write/relationships.js +6 -2
  224. package/dist/transform/write/relationships.js.map +1 -1
  225. package/dist/transform/write/selects.d.ts.map +1 -1
  226. package/dist/transform/write/selects.js +1 -1
  227. package/dist/transform/write/selects.js.map +1 -1
  228. package/dist/transform/write/traverseFields.d.ts +6 -1
  229. package/dist/transform/write/traverseFields.d.ts.map +1 -1
  230. package/dist/transform/write/traverseFields.js +45 -17
  231. package/dist/transform/write/traverseFields.js.map +1 -1
  232. package/dist/types.d.ts +1 -1
  233. package/dist/types.d.ts.map +1 -1
  234. package/dist/types.js.map +1 -1
  235. package/dist/update.d.ts.map +1 -1
  236. package/dist/update.js +3 -2
  237. package/dist/update.js.map +1 -1
  238. package/dist/updateGlobalVersion.js +2 -2
  239. package/dist/updateGlobalVersion.js.map +1 -1
  240. package/dist/updateVersion.js +2 -2
  241. package/dist/updateVersion.js.map +1 -1
  242. package/dist/upsertRow/deleteExistingRowsByPath.d.ts.map +1 -1
  243. package/dist/upsertRow/deleteExistingRowsByPath.js +6 -2
  244. package/dist/upsertRow/deleteExistingRowsByPath.js.map +1 -1
  245. package/dist/upsertRow/index.d.ts +1 -1
  246. package/dist/upsertRow/index.d.ts.map +1 -1
  247. package/dist/upsertRow/index.js +50 -12
  248. package/dist/upsertRow/index.js.map +1 -1
  249. package/dist/upsertRow/insertArrays.d.ts.map +1 -1
  250. package/dist/upsertRow/insertArrays.js +5 -2
  251. package/dist/upsertRow/insertArrays.js.map +1 -1
  252. package/dist/upsertRow/types.d.ts +8 -5
  253. package/dist/upsertRow/types.d.ts.map +1 -1
  254. package/dist/upsertRow/types.js.map +1 -1
  255. package/dist/utilities/createBlocksMap.d.ts.map +1 -1
  256. package/dist/utilities/createBlocksMap.js +4 -2
  257. package/dist/utilities/createBlocksMap.js.map +1 -1
  258. package/dist/utilities/createRelationshipMap.d.ts.map +1 -1
  259. package/dist/utilities/createRelationshipMap.js +3 -1
  260. package/dist/utilities/createRelationshipMap.js.map +1 -1
  261. package/dist/utilities/getCollectionIdType.d.ts +7 -0
  262. package/dist/utilities/getCollectionIdType.d.ts.map +1 -0
  263. package/dist/utilities/getCollectionIdType.js +11 -0
  264. package/dist/utilities/getCollectionIdType.js.map +1 -0
  265. package/dist/utilities/hasLocalesTable.d.ts.map +1 -1
  266. package/dist/utilities/hasLocalesTable.js +12 -4
  267. package/dist/utilities/hasLocalesTable.js.map +1 -1
  268. package/dist/utilities/isPolymorphicRelationship.d.ts +6 -0
  269. package/dist/utilities/isPolymorphicRelationship.d.ts.map +1 -0
  270. package/dist/utilities/isPolymorphicRelationship.js +5 -0
  271. package/dist/utilities/isPolymorphicRelationship.js.map +1 -0
  272. package/package.json +16 -7
@@ -1,12 +1,18 @@
1
1
  import { APIError, createArrayFromCommaDelineated } from 'payload';
2
2
  import { fieldAffectsData } from 'payload/shared';
3
- export const sanitizeQueryValue = ({ adapter, field, operator: operatorArg, relationOrPath, val })=>{
3
+ import { validate as uuidValidate } from 'uuid';
4
+ import { getCollectionIdType } from '../utilities/getCollectionIdType.js';
5
+ import { isPolymorphicRelationship } from '../utilities/isPolymorphicRelationship.js';
6
+ export const sanitizeQueryValue = ({ adapter, columns, field, operator: operatorArg, relationOrPath, val })=>{
4
7
  let operator = operatorArg;
5
8
  let formattedValue = val;
6
- if (!fieldAffectsData(field)) return {
7
- operator,
8
- value: formattedValue
9
- };
9
+ let formattedColumns;
10
+ if (!fieldAffectsData(field)) {
11
+ return {
12
+ operator,
13
+ value: formattedValue
14
+ };
15
+ }
10
16
  if ((field.type === 'relationship' || field.type === 'upload') && !relationOrPath.endsWith('relationTo') && Array.isArray(formattedValue)) {
11
17
  const allPossibleIDTypes = [];
12
18
  formattedValue.forEach((val)=>{
@@ -22,8 +28,12 @@ export const sanitizeQueryValue = ({ adapter, field, operator: operatorArg, rela
22
28
  }
23
29
  // Cast incoming values as proper searchable types
24
30
  if (field.type === 'checkbox' && typeof val === 'string') {
25
- if (val.toLowerCase() === 'true') formattedValue = true;
26
- if (val.toLowerCase() === 'false') formattedValue = false;
31
+ if (val.toLowerCase() === 'true') {
32
+ formattedValue = true;
33
+ }
34
+ if (val.toLowerCase() === 'false') {
35
+ formattedValue = false;
36
+ }
27
37
  }
28
38
  if ([
29
39
  'all',
@@ -52,7 +62,9 @@ export const sanitizeQueryValue = ({ adapter, field, operator: operatorArg, rela
52
62
  value: undefined
53
63
  };
54
64
  }
55
- } else if (typeof val === 'number') formattedValue = new Date(val).toISOString();
65
+ } else if (typeof val === 'number') {
66
+ formattedValue = new Date(val).toISOString();
67
+ }
56
68
  }
57
69
  if (field.type === 'relationship' || field.type === 'upload') {
58
70
  if (val === 'null') {
@@ -61,20 +73,55 @@ export const sanitizeQueryValue = ({ adapter, field, operator: operatorArg, rela
61
73
  // convert the value to the idType of the relationship
62
74
  let idType;
63
75
  if (typeof field.relationTo === 'string') {
64
- const collection = adapter.payload.collections[field.relationTo];
65
- const mixedType = collection.customIDType || adapter.idType;
66
- const typeMap = {
67
- number: 'number',
68
- serial: 'number',
69
- text: 'text',
70
- uuid: 'text'
71
- };
72
- idType = typeMap[mixedType];
76
+ idType = getCollectionIdType({
77
+ adapter,
78
+ collection: adapter.payload.collections[field.relationTo]
79
+ });
73
80
  } else {
74
- // LIMITATION: Only cast to the first relationTo id type,
75
- // otherwise we need to make the db cast which is inefficient
76
- const collection = adapter.payload.collections[field.relationTo[0]];
77
- idType = collection.customIDType || adapter.idType === 'uuid' ? 'text' : 'number';
81
+ if (isPolymorphicRelationship(val)) {
82
+ if (operator !== 'equals') {
83
+ throw new APIError(`Only 'equals' operator is supported for polymorphic relationship object notation. Given - ${operator}`);
84
+ }
85
+ idType = getCollectionIdType({
86
+ adapter,
87
+ collection: adapter.payload.collections[val.relationTo]
88
+ });
89
+ return {
90
+ operator,
91
+ value: idType === 'number' ? Number(val.value) : String(val.value)
92
+ };
93
+ }
94
+ formattedColumns = columns.map(({ idType, rawColumn })=>{
95
+ let formattedValue;
96
+ if (Array.isArray(val)) {
97
+ formattedValue = val.map((eachVal)=>{
98
+ let formattedValue;
99
+ if (idType === 'number') {
100
+ formattedValue = Number(eachVal);
101
+ if (Number.isNaN(formattedValue)) {
102
+ return null;
103
+ }
104
+ } else {
105
+ if (idType === 'uuid' && !uuidValidate(eachVal)) {
106
+ return null;
107
+ }
108
+ formattedValue = String(eachVal);
109
+ }
110
+ return formattedValue;
111
+ }).filter(Boolean);
112
+ } else if (idType === 'number') {
113
+ formattedValue = Number(val);
114
+ if (Number.isNaN(formattedValue)) {
115
+ return null;
116
+ }
117
+ } else {
118
+ formattedValue = String(val);
119
+ }
120
+ return {
121
+ rawColumn,
122
+ value: formattedValue
123
+ };
124
+ }).filter(Boolean);
78
125
  }
79
126
  if (Array.isArray(formattedValue)) {
80
127
  formattedValue = formattedValue.map((value)=>{
@@ -112,6 +159,7 @@ export const sanitizeQueryValue = ({ adapter, field, operator: operatorArg, rela
112
159
  }
113
160
  }
114
161
  return {
162
+ columns: formattedColumns,
115
163
  operator,
116
164
  value: formattedValue
117
165
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/queries/sanitizeQueryValue.ts"],"sourcesContent":["import { APIError, type Field, type TabAsField, createArrayFromCommaDelineated } from 'payload'\nimport { fieldAffectsData } from 'payload/shared'\n\nimport type { DrizzleAdapter } from '../types.js'\n\ntype SanitizeQueryValueArgs = {\n adapter: DrizzleAdapter\n field: Field | TabAsField\n operator: string\n relationOrPath: string\n val: any\n}\n\nexport const sanitizeQueryValue = ({\n adapter,\n field,\n operator: operatorArg,\n relationOrPath,\n val,\n}: SanitizeQueryValueArgs): { operator: string; value: unknown } => {\n let operator = operatorArg\n let formattedValue = val\n\n if (!fieldAffectsData(field)) return { operator, value: formattedValue }\n\n if (\n (field.type === 'relationship' || field.type === 'upload') &&\n !relationOrPath.endsWith('relationTo') &&\n Array.isArray(formattedValue)\n ) {\n const allPossibleIDTypes: (number | string)[] = []\n formattedValue.forEach((val) => {\n if (adapter.idType !== 'uuid' && typeof val === 'string') {\n allPossibleIDTypes.push(val, parseInt(val))\n } else if (typeof val === 'string') {\n allPossibleIDTypes.push(val)\n } else {\n allPossibleIDTypes.push(val, String(val))\n }\n })\n formattedValue = allPossibleIDTypes\n }\n\n // Cast incoming values as proper searchable types\n if (field.type === 'checkbox' && typeof val === 'string') {\n if (val.toLowerCase() === 'true') formattedValue = true\n if (val.toLowerCase() === 'false') formattedValue = false\n }\n\n if (['all', 'in', 'not_in'].includes(operator)) {\n if (typeof formattedValue === 'string') {\n formattedValue = createArrayFromCommaDelineated(formattedValue)\n\n if (field.type === 'number') {\n formattedValue = formattedValue.map((arrayVal) => parseFloat(arrayVal))\n }\n }\n\n if (!Array.isArray(formattedValue) || formattedValue.length === 0) {\n return null\n }\n }\n\n if (field.type === 'number' && typeof formattedValue === 'string') {\n formattedValue = Number(val)\n }\n\n if (field.type === 'date' && operator !== 'exists') {\n if (typeof val === 'string') {\n formattedValue = new Date(val).toISOString()\n if (Number.isNaN(Date.parse(formattedValue))) {\n return { operator, value: undefined }\n }\n } else if (typeof val === 'number') formattedValue = new Date(val).toISOString()\n }\n\n if (field.type === 'relationship' || field.type === 'upload') {\n if (val === 'null') {\n formattedValue = null\n } else if (!(formattedValue === null || typeof formattedValue === 'boolean')) {\n // convert the value to the idType of the relationship\n let idType: 'number' | 'text'\n if (typeof field.relationTo === 'string') {\n const collection = adapter.payload.collections[field.relationTo]\n const mixedType: 'number' | 'serial' | 'text' | 'uuid' =\n collection.customIDType || adapter.idType\n const typeMap: Record<string, 'number' | 'text'> = {\n number: 'number',\n serial: 'number',\n text: 'text',\n uuid: 'text',\n }\n idType = typeMap[mixedType]\n } else {\n // LIMITATION: Only cast to the first relationTo id type,\n // otherwise we need to make the db cast which is inefficient\n const collection = adapter.payload.collections[field.relationTo[0]]\n idType = collection.customIDType || adapter.idType === 'uuid' ? 'text' : 'number'\n }\n if (Array.isArray(formattedValue)) {\n formattedValue = formattedValue.map((value) => {\n if (idType === 'number') {\n return Number(value)\n }\n if (idType === 'text') {\n return String(value)\n }\n return value\n })\n } else {\n if (idType === 'number') {\n formattedValue = Number(val)\n }\n if (idType === 'text') {\n formattedValue = String(val)\n }\n }\n }\n }\n\n if ('hasMany' in field && field.hasMany && operator === 'contains') {\n operator = 'equals'\n }\n\n if (operator === 'near' || operator === 'within' || operator === 'intersects') {\n throw new APIError(\n `Querying with '${operator}' is not supported with the postgres database adapter.`,\n )\n }\n\n if (operator === 'contains') {\n formattedValue = `%${formattedValue}%`\n }\n\n if (operator === 'exists') {\n formattedValue = formattedValue === 'true' || formattedValue === true\n if (formattedValue === false) {\n operator = 'isNull'\n }\n }\n\n return { operator, value: formattedValue }\n}\n"],"names":["APIError","createArrayFromCommaDelineated","fieldAffectsData","sanitizeQueryValue","adapter","field","operator","operatorArg","relationOrPath","val","formattedValue","value","type","endsWith","Array","isArray","allPossibleIDTypes","forEach","idType","push","parseInt","String","toLowerCase","includes","map","arrayVal","parseFloat","length","Number","Date","toISOString","isNaN","parse","undefined","relationTo","collection","payload","collections","mixedType","customIDType","typeMap","number","serial","text","uuid","hasMany"],"mappings":"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"}
1
+ {"version":3,"sources":["../../src/queries/sanitizeQueryValue.ts"],"sourcesContent":["import type { SQL } from 'drizzle-orm'\n\nimport { APIError, createArrayFromCommaDelineated, type Field, type TabAsField } from 'payload'\nimport { fieldAffectsData } from 'payload/shared'\nimport { validate as uuidValidate } from 'uuid'\n\nimport type { DrizzleAdapter } from '../types.js'\n\nimport { getCollectionIdType } from '../utilities/getCollectionIdType.js'\nimport { isPolymorphicRelationship } from '../utilities/isPolymorphicRelationship.js'\n\ntype SanitizeQueryValueArgs = {\n adapter: DrizzleAdapter\n columns?: {\n idType: 'number' | 'text' | 'uuid'\n rawColumn: SQL<unknown>\n }[]\n field: Field | TabAsField\n operator: string\n relationOrPath: string\n val: any\n}\n\ntype SanitizedColumn = {\n rawColumn: SQL<unknown>\n value: unknown\n}\n\nexport const sanitizeQueryValue = ({\n adapter,\n columns,\n field,\n operator: operatorArg,\n relationOrPath,\n val,\n}: SanitizeQueryValueArgs): {\n columns?: SanitizedColumn[]\n operator: string\n value: unknown\n} => {\n let operator = operatorArg\n let formattedValue = val\n let formattedColumns: SanitizedColumn[]\n\n if (!fieldAffectsData(field)) {\n return { operator, value: formattedValue }\n }\n\n if (\n (field.type === 'relationship' || field.type === 'upload') &&\n !relationOrPath.endsWith('relationTo') &&\n Array.isArray(formattedValue)\n ) {\n const allPossibleIDTypes: (number | string)[] = []\n formattedValue.forEach((val) => {\n if (adapter.idType !== 'uuid' && typeof val === 'string') {\n allPossibleIDTypes.push(val, parseInt(val))\n } else if (typeof val === 'string') {\n allPossibleIDTypes.push(val)\n } else {\n allPossibleIDTypes.push(val, String(val))\n }\n })\n formattedValue = allPossibleIDTypes\n }\n\n // Cast incoming values as proper searchable types\n if (field.type === 'checkbox' && typeof val === 'string') {\n if (val.toLowerCase() === 'true') {\n formattedValue = true\n }\n if (val.toLowerCase() === 'false') {\n formattedValue = false\n }\n }\n\n if (['all', 'in', 'not_in'].includes(operator)) {\n if (typeof formattedValue === 'string') {\n formattedValue = createArrayFromCommaDelineated(formattedValue)\n\n if (field.type === 'number') {\n formattedValue = formattedValue.map((arrayVal) => parseFloat(arrayVal))\n }\n }\n\n if (!Array.isArray(formattedValue) || formattedValue.length === 0) {\n return null\n }\n }\n\n if (field.type === 'number' && typeof formattedValue === 'string') {\n formattedValue = Number(val)\n }\n\n if (field.type === 'date' && operator !== 'exists') {\n if (typeof val === 'string') {\n formattedValue = new Date(val).toISOString()\n if (Number.isNaN(Date.parse(formattedValue))) {\n return { operator, value: undefined }\n }\n } else if (typeof val === 'number') {\n formattedValue = new Date(val).toISOString()\n }\n }\n\n if (field.type === 'relationship' || field.type === 'upload') {\n if (val === 'null') {\n formattedValue = null\n } else if (!(formattedValue === null || typeof formattedValue === 'boolean')) {\n // convert the value to the idType of the relationship\n let idType: 'number' | 'text'\n if (typeof field.relationTo === 'string') {\n idType = getCollectionIdType({\n adapter,\n collection: adapter.payload.collections[field.relationTo],\n })\n } else {\n if (isPolymorphicRelationship(val)) {\n if (operator !== 'equals') {\n throw new APIError(\n `Only 'equals' operator is supported for polymorphic relationship object notation. Given - ${operator}`,\n )\n }\n idType = getCollectionIdType({\n adapter,\n collection: adapter.payload.collections[val.relationTo],\n })\n\n return {\n operator,\n value: idType === 'number' ? Number(val.value) : String(val.value),\n }\n }\n\n formattedColumns = columns\n .map(({ idType, rawColumn }) => {\n let formattedValue: number | number[] | string | string[]\n\n if (Array.isArray(val)) {\n formattedValue = val\n .map((eachVal) => {\n let formattedValue: number | string\n\n if (idType === 'number') {\n formattedValue = Number(eachVal)\n\n if (Number.isNaN(formattedValue)) {\n return null\n }\n } else {\n if (idType === 'uuid' && !uuidValidate(eachVal)) {\n return null\n }\n\n formattedValue = String(eachVal)\n }\n\n return formattedValue\n })\n .filter(Boolean) as number[] | string[]\n } else if (idType === 'number') {\n formattedValue = Number(val)\n\n if (Number.isNaN(formattedValue)) {\n return null\n }\n } else {\n formattedValue = String(val)\n }\n\n return {\n rawColumn,\n value: formattedValue,\n }\n })\n .filter(Boolean)\n }\n if (Array.isArray(formattedValue)) {\n formattedValue = formattedValue.map((value) => {\n if (idType === 'number') {\n return Number(value)\n }\n if (idType === 'text') {\n return String(value)\n }\n return value\n })\n } else {\n if (idType === 'number') {\n formattedValue = Number(val)\n }\n if (idType === 'text') {\n formattedValue = String(val)\n }\n }\n }\n }\n\n if ('hasMany' in field && field.hasMany && operator === 'contains') {\n operator = 'equals'\n }\n\n if (operator === 'near' || operator === 'within' || operator === 'intersects') {\n throw new APIError(\n `Querying with '${operator}' is not supported with the postgres database adapter.`,\n )\n }\n\n if (operator === 'contains') {\n formattedValue = `%${formattedValue}%`\n }\n\n if (operator === 'exists') {\n formattedValue = formattedValue === 'true' || formattedValue === true\n if (formattedValue === false) {\n operator = 'isNull'\n }\n }\n\n return {\n columns: formattedColumns,\n operator,\n value: formattedValue,\n }\n}\n"],"names":["APIError","createArrayFromCommaDelineated","fieldAffectsData","validate","uuidValidate","getCollectionIdType","isPolymorphicRelationship","sanitizeQueryValue","adapter","columns","field","operator","operatorArg","relationOrPath","val","formattedValue","formattedColumns","value","type","endsWith","Array","isArray","allPossibleIDTypes","forEach","idType","push","parseInt","String","toLowerCase","includes","map","arrayVal","parseFloat","length","Number","Date","toISOString","isNaN","parse","undefined","relationTo","collection","payload","collections","rawColumn","eachVal","filter","Boolean","hasMany"],"mappings":"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"}
@@ -1,8 +1,7 @@
1
1
  import type { QueryPromise, SQL } from 'drizzle-orm';
2
2
  import type { ChainedMethods } from '../find/chainMethods.js';
3
- import type { DrizzleAdapter, DrizzleTransaction } from '../types.js';
3
+ import type { DrizzleAdapter, DrizzleTransaction, GenericColumn } from '../types.js';
4
4
  import type { BuildQueryJoinAliases } from './buildQuery.js';
5
- import { type GenericColumn } from '../types.js';
6
5
  type Args = {
7
6
  adapter: DrizzleAdapter;
8
7
  chainedMethods?: ChainedMethods;
@@ -15,8 +14,8 @@ type Args = {
15
14
  /**
16
15
  * Selects distinct records from a table only if there are joins that need to be used, otherwise return null
17
16
  */
18
- export declare const selectDistinct: ({ adapter, chainedMethods, db, joins, selectFields, tableName, where, }: Args) => QueryPromise<Record<string, GenericColumn> & {
17
+ export declare const selectDistinct: ({ adapter, chainedMethods, db, joins, selectFields, tableName, where, }: Args) => QueryPromise<{
19
18
  id: number | string;
20
- }[]>;
19
+ }[] & Record<string, GenericColumn>>;
21
20
  export {};
22
21
  //# sourceMappingURL=selectDistinct.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"selectDistinct.d.ts","sourceRoot":"","sources":["../../src/queries/selectDistinct.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,GAAG,EAAE,MAAM,aAAa,CAAA;AAGpD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAA;AAC7D,OAAO,KAAK,EACV,cAAc,EACd,kBAAkB,EAInB,MAAM,aAAa,CAAA;AACpB,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAA;AAG5D,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,aAAa,CAAA;AAEhD,KAAK,IAAI,GAAG;IACV,OAAO,EAAE,cAAc,CAAA;IACvB,cAAc,CAAC,EAAE,cAAc,CAAA;IAC/B,EAAE,EAAE,cAAc,CAAC,SAAS,CAAC,GAAG,kBAAkB,CAAA;IAClD,KAAK,EAAE,qBAAqB,CAAA;IAC5B,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAA;IAC3C,SAAS,EAAE,MAAM,CAAA;IACjB,KAAK,EAAE,GAAG,CAAA;CACX,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,cAAc,4EAQxB,IAAI,KAAG,YAAY,CAAC,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,GAAG;IAAE,EAAE,EAAE,MAAM,GAAG,MAAM,CAAA;CAAE,EAAE,CAgC/E,CAAA"}
1
+ {"version":3,"file":"selectDistinct.d.ts","sourceRoot":"","sources":["../../src/queries/selectDistinct.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,GAAG,EAAE,MAAM,aAAa,CAAA;AAGpD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAA;AAC7D,OAAO,KAAK,EACV,cAAc,EACd,kBAAkB,EAClB,aAAa,EAId,MAAM,aAAa,CAAA;AACpB,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAA;AAI5D,KAAK,IAAI,GAAG;IACV,OAAO,EAAE,cAAc,CAAA;IACvB,cAAc,CAAC,EAAE,cAAc,CAAA;IAC/B,EAAE,EAAE,cAAc,CAAC,SAAS,CAAC,GAAG,kBAAkB,CAAA;IAClD,KAAK,EAAE,qBAAqB,CAAA;IAC5B,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAA;IAC3C,SAAS,EAAE,MAAM,CAAA;IACjB,KAAK,EAAE,GAAG,CAAA;CACX,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,cAAc,4EAQxB,IAAI,KAAG,YAAY,CAAC;IAAE,EAAE,EAAE,MAAM,GAAG,MAAM,CAAA;CAAE,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAgC/E,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/queries/selectDistinct.ts"],"sourcesContent":["import type { QueryPromise, SQL } from 'drizzle-orm'\nimport type { SQLiteColumn } from 'drizzle-orm/sqlite-core'\n\nimport type { ChainedMethods } from '../find/chainMethods.js'\nimport type {\n DrizzleAdapter,\n DrizzleTransaction,\n GenericPgColumn,\n TransactionPg,\n TransactionSQLite,\n} from '../types.js'\nimport type { BuildQueryJoinAliases } from './buildQuery.js'\n\nimport { chainMethods } from '../find/chainMethods.js'\nimport { type GenericColumn } from '../types.js'\n\ntype Args = {\n adapter: DrizzleAdapter\n chainedMethods?: ChainedMethods\n db: DrizzleAdapter['drizzle'] | DrizzleTransaction\n joins: BuildQueryJoinAliases\n selectFields: Record<string, GenericColumn>\n tableName: string\n where: SQL\n}\n\n/**\n * Selects distinct records from a table only if there are joins that need to be used, otherwise return null\n */\nexport const selectDistinct = ({\n adapter,\n chainedMethods = [],\n db,\n joins,\n selectFields,\n tableName,\n where,\n}: Args): QueryPromise<Record<string, GenericColumn> & { id: number | string }[]> => {\n if (Object.keys(joins).length > 0) {\n if (where) {\n chainedMethods.push({ args: [where], method: 'where' })\n }\n\n joins.forEach(({ condition, table }) => {\n chainedMethods.push({\n args: [table, condition],\n method: 'leftJoin',\n })\n })\n\n let query\n const table = adapter.tables[tableName]\n\n if (adapter.name === 'postgres') {\n query = (db as TransactionPg)\n .selectDistinct(selectFields as Record<string, GenericPgColumn>)\n .from(table)\n }\n if (adapter.name === 'sqlite') {\n query = (db as TransactionSQLite)\n .selectDistinct(selectFields as Record<string, SQLiteColumn>)\n .from(table)\n }\n\n return chainMethods({\n methods: chainedMethods,\n query,\n })\n }\n}\n"],"names":["chainMethods","selectDistinct","adapter","chainedMethods","db","joins","selectFields","tableName","where","Object","keys","length","push","args","method","forEach","condition","table","query","tables","name","from","methods"],"mappings":"AAaA,SAASA,YAAY,QAAQ,0BAAyB;AAatD;;CAEC,GACD,OAAO,MAAMC,iBAAiB,CAAC,EAC7BC,OAAO,EACPC,iBAAiB,EAAE,EACnBC,EAAE,EACFC,KAAK,EACLC,YAAY,EACZC,SAAS,EACTC,KAAK,EACA;IACL,IAAIC,OAAOC,IAAI,CAACL,OAAOM,MAAM,GAAG,GAAG;QACjC,IAAIH,OAAO;YACTL,eAAeS,IAAI,CAAC;gBAAEC,MAAM;oBAACL;iBAAM;gBAAEM,QAAQ;YAAQ;QACvD;QAEAT,MAAMU,OAAO,CAAC,CAAC,EAAEC,SAAS,EAAEC,KAAK,EAAE;YACjCd,eAAeS,IAAI,CAAC;gBAClBC,MAAM;oBAACI;oBAAOD;iBAAU;gBACxBF,QAAQ;YACV;QACF;QAEA,IAAII;QACJ,MAAMD,QAAQf,QAAQiB,MAAM,CAACZ,UAAU;QAEvC,IAAIL,QAAQkB,IAAI,KAAK,YAAY;YAC/BF,QAAQ,AAACd,GACNH,cAAc,CAACK,cACfe,IAAI,CAACJ;QACV;QACA,IAAIf,QAAQkB,IAAI,KAAK,UAAU;YAC7BF,QAAQ,AAACd,GACNH,cAAc,CAACK,cACfe,IAAI,CAACJ;QACV;QAEA,OAAOjB,aAAa;YAClBsB,SAASnB;YACTe;QACF;IACF;AACF,EAAC"}
1
+ {"version":3,"sources":["../../src/queries/selectDistinct.ts"],"sourcesContent":["import type { QueryPromise, SQL } from 'drizzle-orm'\nimport type { SQLiteColumn } from 'drizzle-orm/sqlite-core'\n\nimport type { ChainedMethods } from '../find/chainMethods.js'\nimport type {\n DrizzleAdapter,\n DrizzleTransaction,\n GenericColumn,\n GenericPgColumn,\n TransactionPg,\n TransactionSQLite,\n} from '../types.js'\nimport type { BuildQueryJoinAliases } from './buildQuery.js'\n\nimport { chainMethods } from '../find/chainMethods.js'\n\ntype Args = {\n adapter: DrizzleAdapter\n chainedMethods?: ChainedMethods\n db: DrizzleAdapter['drizzle'] | DrizzleTransaction\n joins: BuildQueryJoinAliases\n selectFields: Record<string, GenericColumn>\n tableName: string\n where: SQL\n}\n\n/**\n * Selects distinct records from a table only if there are joins that need to be used, otherwise return null\n */\nexport const selectDistinct = ({\n adapter,\n chainedMethods = [],\n db,\n joins,\n selectFields,\n tableName,\n where,\n}: Args): QueryPromise<{ id: number | string }[] & Record<string, GenericColumn>> => {\n if (Object.keys(joins).length > 0) {\n if (where) {\n chainedMethods.push({ args: [where], method: 'where' })\n }\n\n joins.forEach(({ condition, table }) => {\n chainedMethods.push({\n args: [table, condition],\n method: 'leftJoin',\n })\n })\n\n let query\n const table = adapter.tables[tableName]\n\n if (adapter.name === 'postgres') {\n query = (db as TransactionPg)\n .selectDistinct(selectFields as Record<string, GenericPgColumn>)\n .from(table)\n }\n if (adapter.name === 'sqlite') {\n query = (db as TransactionSQLite)\n .selectDistinct(selectFields as Record<string, SQLiteColumn>)\n .from(table)\n }\n\n return chainMethods({\n methods: chainedMethods,\n query,\n })\n }\n}\n"],"names":["chainMethods","selectDistinct","adapter","chainedMethods","db","joins","selectFields","tableName","where","Object","keys","length","push","args","method","forEach","condition","table","query","tables","name","from","methods"],"mappings":"AAcA,SAASA,YAAY,QAAQ,0BAAyB;AAYtD;;CAEC,GACD,OAAO,MAAMC,iBAAiB,CAAC,EAC7BC,OAAO,EACPC,iBAAiB,EAAE,EACnBC,EAAE,EACFC,KAAK,EACLC,YAAY,EACZC,SAAS,EACTC,KAAK,EACA;IACL,IAAIC,OAAOC,IAAI,CAACL,OAAOM,MAAM,GAAG,GAAG;QACjC,IAAIH,OAAO;YACTL,eAAeS,IAAI,CAAC;gBAAEC,MAAM;oBAACL;iBAAM;gBAAEM,QAAQ;YAAQ;QACvD;QAEAT,MAAMU,OAAO,CAAC,CAAC,EAAEC,SAAS,EAAEC,KAAK,EAAE;YACjCd,eAAeS,IAAI,CAAC;gBAClBC,MAAM;oBAACI;oBAAOD;iBAAU;gBACxBF,QAAQ;YACV;QACF;QAEA,IAAII;QACJ,MAAMD,QAAQf,QAAQiB,MAAM,CAACZ,UAAU;QAEvC,IAAIL,QAAQkB,IAAI,KAAK,YAAY;YAC/BF,QAAQ,AAACd,GACNH,cAAc,CAACK,cACfe,IAAI,CAACJ;QACV;QACA,IAAIf,QAAQkB,IAAI,KAAK,UAAU;YAC7BF,QAAQ,AAACd,GACNH,cAAc,CAACK,cACfe,IAAI,CAACJ;QACV;QAEA,OAAOjB,aAAa;YAClBsB,SAASnB;YACTe;QACF;IACF;AACF,EAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"queryDrafts.d.ts","sourceRoot":"","sources":["../src/queryDrafts.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAkB,WAAW,EAA6B,MAAM,SAAS,CAAA;AASrF,eAAO,MAAM,WAAW,EAAE,WAuCzB,CAAA"}
1
+ {"version":3,"file":"queryDrafts.d.ts","sourceRoot":"","sources":["../src/queryDrafts.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAkB,WAAW,EAA6B,MAAM,SAAS,CAAA;AASrF,eAAO,MAAM,WAAW,EAAE,WAsCzB,CAAA"}
@@ -4,7 +4,7 @@ import { findMany } from './find/findMany.js';
4
4
  export const queryDrafts = async function queryDrafts({ collection, limit, locale, page = 1, pagination, req = {}, sort, where }) {
5
5
  const collectionConfig = this.payload.collections[collection].config;
6
6
  const tableName = this.tableNameMap.get(`_${toSnakeCase(collectionConfig.slug)}${this.versionsSuffix}`);
7
- const fields = buildVersionCollectionFields(collectionConfig);
7
+ const fields = buildVersionCollectionFields(this.payload.config, collectionConfig);
8
8
  const combinedWhere = combineQueries({
9
9
  latest: {
10
10
  equals: true
@@ -25,7 +25,6 @@ export const queryDrafts = async function queryDrafts({ collection, limit, local
25
25
  return {
26
26
  ...result,
27
27
  docs: result.docs.map((doc)=>{
28
- // eslint-disable-next-line no-param-reassign
29
28
  doc = {
30
29
  id: doc.parent,
31
30
  ...doc.version,
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/queryDrafts.ts"],"sourcesContent":["import type { PayloadRequest, QueryDrafts, SanitizedCollectionConfig } from 'payload'\n\nimport { buildVersionCollectionFields, combineQueries } from 'payload'\nimport toSnakeCase from 'to-snake-case'\n\nimport type { DrizzleAdapter } from './types.js'\n\nimport { findMany } from './find/findMany.js'\n\nexport const queryDrafts: QueryDrafts = async function queryDrafts(\n this: DrizzleAdapter,\n { collection, limit, locale, page = 1, pagination, req = {} as PayloadRequest, sort, where },\n) {\n const collectionConfig: SanitizedCollectionConfig = this.payload.collections[collection].config\n const tableName = this.tableNameMap.get(\n `_${toSnakeCase(collectionConfig.slug)}${this.versionsSuffix}`,\n )\n const fields = buildVersionCollectionFields(collectionConfig)\n\n const combinedWhere = combineQueries({ latest: { equals: true } }, where)\n\n const result = await findMany({\n adapter: this,\n fields,\n limit,\n locale,\n page,\n pagination,\n req,\n sort,\n tableName,\n where: combinedWhere,\n })\n\n return {\n ...result,\n docs: result.docs.map((doc) => {\n // eslint-disable-next-line no-param-reassign\n doc = {\n id: doc.parent,\n ...doc.version,\n createdAt: doc.createdAt,\n updatedAt: doc.updatedAt,\n }\n\n return doc\n }),\n }\n}\n"],"names":["buildVersionCollectionFields","combineQueries","toSnakeCase","findMany","queryDrafts","collection","limit","locale","page","pagination","req","sort","where","collectionConfig","payload","collections","config","tableName","tableNameMap","get","slug","versionsSuffix","fields","combinedWhere","latest","equals","result","adapter","docs","map","doc","id","parent","version","createdAt","updatedAt"],"mappings":"AAEA,SAASA,4BAA4B,EAAEC,cAAc,QAAQ,UAAS;AACtE,OAAOC,iBAAiB,gBAAe;AAIvC,SAASC,QAAQ,QAAQ,qBAAoB;AAE7C,OAAO,MAAMC,cAA2B,eAAeA,YAErD,EAAEC,UAAU,EAAEC,KAAK,EAAEC,MAAM,EAAEC,OAAO,CAAC,EAAEC,UAAU,EAAEC,MAAM,CAAC,CAAmB,EAAEC,IAAI,EAAEC,KAAK,EAAE;IAE5F,MAAMC,mBAA8C,IAAI,CAACC,OAAO,CAACC,WAAW,CAACV,WAAW,CAACW,MAAM;IAC/F,MAAMC,YAAY,IAAI,CAACC,YAAY,CAACC,GAAG,CACrC,CAAC,CAAC,EAAEjB,YAAYW,iBAAiBO,IAAI,EAAE,EAAE,IAAI,CAACC,cAAc,CAAC,CAAC;IAEhE,MAAMC,SAAStB,6BAA6Ba;IAE5C,MAAMU,gBAAgBtB,eAAe;QAAEuB,QAAQ;YAAEC,QAAQ;QAAK;IAAE,GAAGb;IAEnE,MAAMc,SAAS,MAAMvB,SAAS;QAC5BwB,SAAS,IAAI;QACbL;QACAhB;QACAC;QACAC;QACAC;QACAC;QACAC;QACAM;QACAL,OAAOW;IACT;IAEA,OAAO;QACL,GAAGG,MAAM;QACTE,MAAMF,OAAOE,IAAI,CAACC,GAAG,CAAC,CAACC;YACrB,6CAA6C;YAC7CA,MAAM;gBACJC,IAAID,IAAIE,MAAM;gBACd,GAAGF,IAAIG,OAAO;gBACdC,WAAWJ,IAAII,SAAS;gBACxBC,WAAWL,IAAIK,SAAS;YAC1B;YAEA,OAAOL;QACT;IACF;AACF,EAAC"}
1
+ {"version":3,"sources":["../src/queryDrafts.ts"],"sourcesContent":["import type { PayloadRequest, QueryDrafts, SanitizedCollectionConfig } from 'payload'\n\nimport { buildVersionCollectionFields, combineQueries } from 'payload'\nimport toSnakeCase from 'to-snake-case'\n\nimport type { DrizzleAdapter } from './types.js'\n\nimport { findMany } from './find/findMany.js'\n\nexport const queryDrafts: QueryDrafts = async function queryDrafts(\n this: DrizzleAdapter,\n { collection, limit, locale, page = 1, pagination, req = {} as PayloadRequest, sort, where },\n) {\n const collectionConfig: SanitizedCollectionConfig = this.payload.collections[collection].config\n const tableName = this.tableNameMap.get(\n `_${toSnakeCase(collectionConfig.slug)}${this.versionsSuffix}`,\n )\n const fields = buildVersionCollectionFields(this.payload.config, collectionConfig)\n\n const combinedWhere = combineQueries({ latest: { equals: true } }, where)\n\n const result = await findMany({\n adapter: this,\n fields,\n limit,\n locale,\n page,\n pagination,\n req,\n sort,\n tableName,\n where: combinedWhere,\n })\n\n return {\n ...result,\n docs: result.docs.map((doc) => {\n doc = {\n id: doc.parent,\n ...doc.version,\n createdAt: doc.createdAt,\n updatedAt: doc.updatedAt,\n }\n\n return doc\n }),\n }\n}\n"],"names":["buildVersionCollectionFields","combineQueries","toSnakeCase","findMany","queryDrafts","collection","limit","locale","page","pagination","req","sort","where","collectionConfig","payload","collections","config","tableName","tableNameMap","get","slug","versionsSuffix","fields","combinedWhere","latest","equals","result","adapter","docs","map","doc","id","parent","version","createdAt","updatedAt"],"mappings":"AAEA,SAASA,4BAA4B,EAAEC,cAAc,QAAQ,UAAS;AACtE,OAAOC,iBAAiB,gBAAe;AAIvC,SAASC,QAAQ,QAAQ,qBAAoB;AAE7C,OAAO,MAAMC,cAA2B,eAAeA,YAErD,EAAEC,UAAU,EAAEC,KAAK,EAAEC,MAAM,EAAEC,OAAO,CAAC,EAAEC,UAAU,EAAEC,MAAM,CAAC,CAAmB,EAAEC,IAAI,EAAEC,KAAK,EAAE;IAE5F,MAAMC,mBAA8C,IAAI,CAACC,OAAO,CAACC,WAAW,CAACV,WAAW,CAACW,MAAM;IAC/F,MAAMC,YAAY,IAAI,CAACC,YAAY,CAACC,GAAG,CACrC,CAAC,CAAC,EAAEjB,YAAYW,iBAAiBO,IAAI,EAAE,EAAE,IAAI,CAACC,cAAc,CAAC,CAAC;IAEhE,MAAMC,SAAStB,6BAA6B,IAAI,CAACc,OAAO,CAACE,MAAM,EAAEH;IAEjE,MAAMU,gBAAgBtB,eAAe;QAAEuB,QAAQ;YAAEC,QAAQ;QAAK;IAAE,GAAGb;IAEnE,MAAMc,SAAS,MAAMvB,SAAS;QAC5BwB,SAAS,IAAI;QACbL;QACAhB;QACAC;QACAC;QACAC;QACAC;QACAC;QACAM;QACAL,OAAOW;IACT;IAEA,OAAO;QACL,GAAGG,MAAM;QACTE,MAAMF,OAAOE,IAAI,CAACC,GAAG,CAAC,CAACC;YACrBA,MAAM;gBACJC,IAAID,IAAIE,MAAM;gBACd,GAAGF,IAAIG,OAAO;gBACdC,WAAWJ,IAAII,SAAS;gBACxBC,WAAWL,IAAIK,SAAS;YAC1B;YAEA,OAAOL;QACT;IACF;AACF,EAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"beginTransaction.d.ts","sourceRoot":"","sources":["../../src/transactions/beginTransaction.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAM/C,eAAO,MAAM,gBAAgB,EAAE,gBA0D9B,CAAA"}
1
+ {"version":3,"file":"beginTransaction.d.ts","sourceRoot":"","sources":["../../src/transactions/beginTransaction.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAM/C,eAAO,MAAM,gBAAgB,EAAE,gBA2D9B,CAAA"}
@@ -24,6 +24,7 @@ export const beginTransaction = async function beginTransaction(options) {
24
24
  return done;
25
25
  };
26
26
  reject = ()=>{
27
+ // eslint-disable-next-line @typescript-eslint/prefer-promise-reject-errors
27
28
  rej();
28
29
  return done;
29
30
  };
@@ -41,7 +42,10 @@ export const beginTransaction = async function beginTransaction(options) {
41
42
  resolve
42
43
  };
43
44
  } catch (err) {
44
- this.payload.logger.error(`Error: cannot begin transaction: ${err.message}`, err);
45
+ this.payload.logger.error({
46
+ err,
47
+ msg: `Error: cannot begin transaction: ${err.message}`
48
+ });
45
49
  process.exit(1);
46
50
  }
47
51
  return id;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/transactions/beginTransaction.ts"],"sourcesContent":["import type { BeginTransaction } from 'payload'\n\nimport { v4 as uuid } from 'uuid'\n\nimport type { DrizzleAdapter, DrizzleTransaction } from '../types.js'\n\nexport const beginTransaction: BeginTransaction = async function beginTransaction(\n this: DrizzleAdapter,\n options: DrizzleAdapter['transactionOptions'],\n) {\n let id\n try {\n id = uuid()\n\n let reject: () => Promise<void>\n let resolve: () => Promise<void>\n let transaction: DrizzleTransaction\n\n let transactionReady: () => void\n\n // Await initialization here\n // Prevent race conditions where the adapter may be\n // re-initializing, and `this.drizzle` is potentially undefined\n await this.initializing\n\n // Drizzle only exposes a transactions API that is sufficient if you\n // can directly pass around the `tx` argument. But our operations are spread\n // over many files and we don't want to pass the `tx` around like that,\n // so instead, we \"lift\" up the `resolve` and `reject` methods\n // and will call them in our respective transaction methods\n const done = this.drizzle\n .transaction(async (tx) => {\n transaction = tx\n await new Promise<void>((res, rej) => {\n resolve = () => {\n res()\n return done\n }\n reject = () => {\n rej()\n return done\n }\n transactionReady()\n })\n }, options || this.transactionOptions)\n .catch(() => {\n // swallow\n })\n\n // Need to wait until the transaction is ready\n // before binding its `resolve` and `reject` methods below\n await new Promise<void>((resolve) => (transactionReady = resolve))\n\n this.sessions[id] = {\n db: transaction,\n reject,\n resolve,\n }\n } catch (err) {\n this.payload.logger.error(`Error: cannot begin transaction: ${err.message}`, err)\n process.exit(1)\n }\n\n return id\n}\n"],"names":["v4","uuid","beginTransaction","options","id","reject","resolve","transaction","transactionReady","initializing","done","drizzle","tx","Promise","res","rej","transactionOptions","catch","sessions","db","err","payload","logger","error","message","process","exit"],"mappings":"AAEA,SAASA,MAAMC,IAAI,QAAQ,OAAM;AAIjC,OAAO,MAAMC,mBAAqC,eAAeA,iBAE/DC,OAA6C;IAE7C,IAAIC;IACJ,IAAI;QACFA,KAAKH;QAEL,IAAII;QACJ,IAAIC;QACJ,IAAIC;QAEJ,IAAIC;QAEJ,4BAA4B;QAC5B,mDAAmD;QACnD,+DAA+D;QAC/D,MAAM,IAAI,CAACC,YAAY;QAEvB,oEAAoE;QACpE,4EAA4E;QAC5E,uEAAuE;QACvE,8DAA8D;QAC9D,2DAA2D;QAC3D,MAAMC,OAAO,IAAI,CAACC,OAAO,CACtBJ,WAAW,CAAC,OAAOK;YAClBL,cAAcK;YACd,MAAM,IAAIC,QAAc,CAACC,KAAKC;gBAC5BT,UAAU;oBACRQ;oBACA,OAAOJ;gBACT;gBACAL,SAAS;oBACPU;oBACA,OAAOL;gBACT;gBACAF;YACF;QACF,GAAGL,WAAW,IAAI,CAACa,kBAAkB,EACpCC,KAAK,CAAC;QACL,UAAU;QACZ;QAEF,8CAA8C;QAC9C,0DAA0D;QAC1D,MAAM,IAAIJ,QAAc,CAACP,UAAaE,mBAAmBF;QAEzD,IAAI,CAACY,QAAQ,CAACd,GAAG,GAAG;YAClBe,IAAIZ;YACJF;YACAC;QACF;IACF,EAAE,OAAOc,KAAK;QACZ,IAAI,CAACC,OAAO,CAACC,MAAM,CAACC,KAAK,CAAC,CAAC,iCAAiC,EAAEH,IAAII,OAAO,CAAC,CAAC,EAAEJ;QAC7EK,QAAQC,IAAI,CAAC;IACf;IAEA,OAAOtB;AACT,EAAC"}
1
+ {"version":3,"sources":["../../src/transactions/beginTransaction.ts"],"sourcesContent":["import type { BeginTransaction } from 'payload'\n\nimport { v4 as uuid } from 'uuid'\n\nimport type { DrizzleAdapter, DrizzleTransaction } from '../types.js'\n\nexport const beginTransaction: BeginTransaction = async function beginTransaction(\n this: DrizzleAdapter,\n options: DrizzleAdapter['transactionOptions'],\n) {\n let id\n try {\n id = uuid()\n\n let reject: () => Promise<void>\n let resolve: () => Promise<void>\n let transaction: DrizzleTransaction\n\n let transactionReady: () => void\n\n // Await initialization here\n // Prevent race conditions where the adapter may be\n // re-initializing, and `this.drizzle` is potentially undefined\n await this.initializing\n\n // Drizzle only exposes a transactions API that is sufficient if you\n // can directly pass around the `tx` argument. But our operations are spread\n // over many files and we don't want to pass the `tx` around like that,\n // so instead, we \"lift\" up the `resolve` and `reject` methods\n // and will call them in our respective transaction methods\n const done = this.drizzle\n .transaction(async (tx) => {\n transaction = tx\n await new Promise<void>((res, rej) => {\n resolve = () => {\n res()\n return done\n }\n reject = () => {\n // eslint-disable-next-line @typescript-eslint/prefer-promise-reject-errors\n rej()\n return done\n }\n transactionReady()\n })\n }, options || this.transactionOptions)\n .catch(() => {\n // swallow\n })\n\n // Need to wait until the transaction is ready\n // before binding its `resolve` and `reject` methods below\n await new Promise<void>((resolve) => (transactionReady = resolve))\n\n this.sessions[id] = {\n db: transaction,\n reject,\n resolve,\n }\n } catch (err) {\n this.payload.logger.error({ err, msg: `Error: cannot begin transaction: ${err.message}` })\n process.exit(1)\n }\n\n return id\n}\n"],"names":["v4","uuid","beginTransaction","options","id","reject","resolve","transaction","transactionReady","initializing","done","drizzle","tx","Promise","res","rej","transactionOptions","catch","sessions","db","err","payload","logger","error","msg","message","process","exit"],"mappings":"AAEA,SAASA,MAAMC,IAAI,QAAQ,OAAM;AAIjC,OAAO,MAAMC,mBAAqC,eAAeA,iBAE/DC,OAA6C;IAE7C,IAAIC;IACJ,IAAI;QACFA,KAAKH;QAEL,IAAII;QACJ,IAAIC;QACJ,IAAIC;QAEJ,IAAIC;QAEJ,4BAA4B;QAC5B,mDAAmD;QACnD,+DAA+D;QAC/D,MAAM,IAAI,CAACC,YAAY;QAEvB,oEAAoE;QACpE,4EAA4E;QAC5E,uEAAuE;QACvE,8DAA8D;QAC9D,2DAA2D;QAC3D,MAAMC,OAAO,IAAI,CAACC,OAAO,CACtBJ,WAAW,CAAC,OAAOK;YAClBL,cAAcK;YACd,MAAM,IAAIC,QAAc,CAACC,KAAKC;gBAC5BT,UAAU;oBACRQ;oBACA,OAAOJ;gBACT;gBACAL,SAAS;oBACP,2EAA2E;oBAC3EU;oBACA,OAAOL;gBACT;gBACAF;YACF;QACF,GAAGL,WAAW,IAAI,CAACa,kBAAkB,EACpCC,KAAK,CAAC;QACL,UAAU;QACZ;QAEF,8CAA8C;QAC9C,0DAA0D;QAC1D,MAAM,IAAIJ,QAAc,CAACP,UAAaE,mBAAmBF;QAEzD,IAAI,CAACY,QAAQ,CAACd,GAAG,GAAG;YAClBe,IAAIZ;YACJF;YACAC;QACF;IACF,EAAE,OAAOc,KAAK;QACZ,IAAI,CAACC,OAAO,CAACC,MAAM,CAACC,KAAK,CAAC;YAAEH;YAAKI,KAAK,CAAC,iCAAiC,EAAEJ,IAAIK,OAAO,CAAC,CAAC;QAAC;QACxFC,QAAQC,IAAI,CAAC;IACf;IAEA,OAAOvB;AACT,EAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"commitTransaction.d.ts","sourceRoot":"","sources":["../../src/transactions/commitTransaction.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAA;AAEhD,eAAO,MAAM,iBAAiB,EAAE,iBAe/B,CAAA"}
1
+ {"version":3,"file":"commitTransaction.d.ts","sourceRoot":"","sources":["../../src/transactions/commitTransaction.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAA;AAEhD,eAAO,MAAM,iBAAiB,EAAE,iBAiB/B,CAAA"}
@@ -1,5 +1,7 @@
1
1
  export const commitTransaction = async function commitTransaction(id) {
2
- if (id instanceof Promise) return;
2
+ if (id instanceof Promise) {
3
+ return;
4
+ }
3
5
  // if the session was deleted it has already been aborted
4
6
  if (!this.sessions[id]) {
5
7
  return;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/transactions/commitTransaction.ts"],"sourcesContent":["import type { CommitTransaction } from 'payload'\n\nexport const commitTransaction: CommitTransaction = async function commitTransaction(id) {\n if (id instanceof Promise) return\n\n // if the session was deleted it has already been aborted\n if (!this.sessions[id]) {\n return\n }\n\n try {\n await this.sessions[id].resolve()\n } catch (err: unknown) {\n await this.sessions[id].reject()\n }\n\n delete this.sessions[id]\n}\n"],"names":["commitTransaction","id","Promise","sessions","resolve","err","reject"],"mappings":"AAEA,OAAO,MAAMA,oBAAuC,eAAeA,kBAAkBC,EAAE;IACrF,IAAIA,cAAcC,SAAS;IAE3B,yDAAyD;IACzD,IAAI,CAAC,IAAI,CAACC,QAAQ,CAACF,GAAG,EAAE;QACtB;IACF;IAEA,IAAI;QACF,MAAM,IAAI,CAACE,QAAQ,CAACF,GAAG,CAACG,OAAO;IACjC,EAAE,OAAOC,KAAc;QACrB,MAAM,IAAI,CAACF,QAAQ,CAACF,GAAG,CAACK,MAAM;IAChC;IAEA,OAAO,IAAI,CAACH,QAAQ,CAACF,GAAG;AAC1B,EAAC"}
1
+ {"version":3,"sources":["../../src/transactions/commitTransaction.ts"],"sourcesContent":["import type { CommitTransaction } from 'payload'\n\nexport const commitTransaction: CommitTransaction = async function commitTransaction(id) {\n if (id instanceof Promise) {\n return\n }\n\n // if the session was deleted it has already been aborted\n if (!this.sessions[id]) {\n return\n }\n\n try {\n await this.sessions[id].resolve()\n } catch (err: unknown) {\n await this.sessions[id].reject()\n }\n\n delete this.sessions[id]\n}\n"],"names":["commitTransaction","id","Promise","sessions","resolve","err","reject"],"mappings":"AAEA,OAAO,MAAMA,oBAAuC,eAAeA,kBAAkBC,EAAE;IACrF,IAAIA,cAAcC,SAAS;QACzB;IACF;IAEA,yDAAyD;IACzD,IAAI,CAAC,IAAI,CAACC,QAAQ,CAACF,GAAG,EAAE;QACtB;IACF;IAEA,IAAI;QACF,MAAM,IAAI,CAACE,QAAQ,CAACF,GAAG,CAACG,OAAO;IACjC,EAAE,OAAOC,KAAc;QACrB,MAAM,IAAI,CAACF,QAAQ,CAACF,GAAG,CAACK,MAAM;IAChC;IAEA,OAAO,IAAI,CAACH,QAAQ,CAACF,GAAG;AAC1B,EAAC"}
@@ -4,7 +4,8 @@ type Args = {
4
4
  locale?: string;
5
5
  numberRows: Record<string, unknown>[];
6
6
  ref: Record<string, unknown>;
7
+ withinArrayOrBlockLocale?: string;
7
8
  };
8
- export declare const transformHasManyNumber: ({ field, locale, numberRows, ref }: Args) => void;
9
+ export declare const transformHasManyNumber: ({ field, locale, numberRows, ref, withinArrayOrBlockLocale, }: Args) => void;
9
10
  export {};
10
11
  //# sourceMappingURL=hasManyNumber.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"hasManyNumber.d.ts","sourceRoot":"","sources":["../../../src/transform/read/hasManyNumber.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAE1C,KAAK,IAAI,GAAG;IACV,KAAK,EAAE,WAAW,CAAA;IAClB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAA;IACrC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAC7B,CAAA;AAED,eAAO,MAAM,sBAAsB,uCAAwC,IAAI,SAQ9E,CAAA"}
1
+ {"version":3,"file":"hasManyNumber.d.ts","sourceRoot":"","sources":["../../../src/transform/read/hasManyNumber.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAE1C,KAAK,IAAI,GAAG;IACV,KAAK,EAAE,WAAW,CAAA;IAClB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAA;IACrC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC5B,wBAAwB,CAAC,EAAE,MAAM,CAAA;CAClC,CAAA;AAED,eAAO,MAAM,sBAAsB,kEAMhC,IAAI,SAoBN,CAAA"}
@@ -1,5 +1,15 @@
1
- /* eslint-disable no-param-reassign */ export const transformHasManyNumber = ({ field, locale, numberRows, ref })=>{
2
- const result = numberRows.map(({ number })=>number);
1
+ export const transformHasManyNumber = ({ field, locale, numberRows, ref, withinArrayOrBlockLocale })=>{
2
+ let result;
3
+ if (withinArrayOrBlockLocale) {
4
+ result = numberRows.reduce((acc, { locale, number })=>{
5
+ if (locale === withinArrayOrBlockLocale) {
6
+ acc.push(number);
7
+ }
8
+ return acc;
9
+ }, []);
10
+ } else {
11
+ result = numberRows.map(({ number })=>number);
12
+ }
3
13
  if (locale) {
4
14
  ref[field.name][locale] = result;
5
15
  } else {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/transform/read/hasManyNumber.ts"],"sourcesContent":["/* eslint-disable no-param-reassign */\nimport type { NumberField } from 'payload'\n\ntype Args = {\n field: NumberField\n locale?: string\n numberRows: Record<string, unknown>[]\n ref: Record<string, unknown>\n}\n\nexport const transformHasManyNumber = ({ field, locale, numberRows, ref }: Args) => {\n const result = numberRows.map(({ number }) => number)\n\n if (locale) {\n ref[field.name][locale] = result\n } else {\n ref[field.name] = result\n }\n}\n"],"names":["transformHasManyNumber","field","locale","numberRows","ref","result","map","number","name"],"mappings":"AAAA,oCAAoC,GAUpC,OAAO,MAAMA,yBAAyB,CAAC,EAAEC,KAAK,EAAEC,MAAM,EAAEC,UAAU,EAAEC,GAAG,EAAQ;IAC7E,MAAMC,SAASF,WAAWG,GAAG,CAAC,CAAC,EAAEC,MAAM,EAAE,GAAKA;IAE9C,IAAIL,QAAQ;QACVE,GAAG,CAACH,MAAMO,IAAI,CAAC,CAACN,OAAO,GAAGG;IAC5B,OAAO;QACLD,GAAG,CAACH,MAAMO,IAAI,CAAC,GAAGH;IACpB;AACF,EAAC"}
1
+ {"version":3,"sources":["../../../src/transform/read/hasManyNumber.ts"],"sourcesContent":["import type { NumberField } from 'payload'\n\ntype Args = {\n field: NumberField\n locale?: string\n numberRows: Record<string, unknown>[]\n ref: Record<string, unknown>\n withinArrayOrBlockLocale?: string\n}\n\nexport const transformHasManyNumber = ({\n field,\n locale,\n numberRows,\n ref,\n withinArrayOrBlockLocale,\n}: Args) => {\n let result: unknown[]\n\n if (withinArrayOrBlockLocale) {\n result = numberRows.reduce((acc, { locale, number }) => {\n if (locale === withinArrayOrBlockLocale) {\n acc.push(number)\n }\n\n return acc\n }, [])\n } else {\n result = numberRows.map(({ number }) => number)\n }\n\n if (locale) {\n ref[field.name][locale] = result\n } else {\n ref[field.name] = result\n }\n}\n"],"names":["transformHasManyNumber","field","locale","numberRows","ref","withinArrayOrBlockLocale","result","reduce","acc","number","push","map","name"],"mappings":"AAUA,OAAO,MAAMA,yBAAyB,CAAC,EACrCC,KAAK,EACLC,MAAM,EACNC,UAAU,EACVC,GAAG,EACHC,wBAAwB,EACnB;IACL,IAAIC;IAEJ,IAAID,0BAA0B;QAC5BC,SAASH,WAAWI,MAAM,CAAC,CAACC,KAAK,EAAEN,MAAM,EAAEO,MAAM,EAAE;YACjD,IAAIP,WAAWG,0BAA0B;gBACvCG,IAAIE,IAAI,CAACD;YACX;YAEA,OAAOD;QACT,GAAG,EAAE;IACP,OAAO;QACLF,SAASH,WAAWQ,GAAG,CAAC,CAAC,EAAEF,MAAM,EAAE,GAAKA;IAC1C;IAEA,IAAIP,QAAQ;QACVE,GAAG,CAACH,MAAMW,IAAI,CAAC,CAACV,OAAO,GAAGI;IAC5B,OAAO;QACLF,GAAG,CAACH,MAAMW,IAAI,CAAC,GAAGN;IACpB;AACF,EAAC"}
@@ -4,7 +4,8 @@ type Args = {
4
4
  locale?: string;
5
5
  ref: Record<string, unknown>;
6
6
  textRows: Record<string, unknown>[];
7
+ withinArrayOrBlockLocale?: string;
7
8
  };
8
- export declare const transformHasManyText: ({ field, locale, ref, textRows }: Args) => void;
9
+ export declare const transformHasManyText: ({ field, locale, ref, textRows, withinArrayOrBlockLocale, }: Args) => void;
9
10
  export {};
10
11
  //# sourceMappingURL=hasManyText.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"hasManyText.d.ts","sourceRoot":"","sources":["../../../src/transform/read/hasManyText.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AAExC,KAAK,IAAI,GAAG;IACV,KAAK,EAAE,SAAS,CAAA;IAChB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC5B,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAA;CACpC,CAAA;AAED,eAAO,MAAM,oBAAoB,qCAAsC,IAAI,SAQ1E,CAAA"}
1
+ {"version":3,"file":"hasManyText.d.ts","sourceRoot":"","sources":["../../../src/transform/read/hasManyText.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AAExC,KAAK,IAAI,GAAG;IACV,KAAK,EAAE,SAAS,CAAA;IAChB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC5B,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAA;IACnC,wBAAwB,CAAC,EAAE,MAAM,CAAA;CAClC,CAAA;AAED,eAAO,MAAM,oBAAoB,gEAM9B,IAAI,SAoBN,CAAA"}
@@ -1,5 +1,15 @@
1
- /* eslint-disable no-param-reassign */ export const transformHasManyText = ({ field, locale, ref, textRows })=>{
2
- const result = textRows.map(({ text })=>text);
1
+ export const transformHasManyText = ({ field, locale, ref, textRows, withinArrayOrBlockLocale })=>{
2
+ let result;
3
+ if (withinArrayOrBlockLocale) {
4
+ result = textRows.reduce((acc, { locale, text })=>{
5
+ if (locale === withinArrayOrBlockLocale) {
6
+ acc.push(text);
7
+ }
8
+ return acc;
9
+ }, []);
10
+ } else {
11
+ result = textRows.map(({ text })=>text);
12
+ }
3
13
  if (locale) {
4
14
  ref[field.name][locale] = result;
5
15
  } else {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/transform/read/hasManyText.ts"],"sourcesContent":["/* eslint-disable no-param-reassign */\nimport type { TextField } from 'payload'\n\ntype Args = {\n field: TextField\n locale?: string\n ref: Record<string, unknown>\n textRows: Record<string, unknown>[]\n}\n\nexport const transformHasManyText = ({ field, locale, ref, textRows }: Args) => {\n const result = textRows.map(({ text }) => text)\n\n if (locale) {\n ref[field.name][locale] = result\n } else {\n ref[field.name] = result\n }\n}\n"],"names":["transformHasManyText","field","locale","ref","textRows","result","map","text","name"],"mappings":"AAAA,oCAAoC,GAUpC,OAAO,MAAMA,uBAAuB,CAAC,EAAEC,KAAK,EAAEC,MAAM,EAAEC,GAAG,EAAEC,QAAQ,EAAQ;IACzE,MAAMC,SAASD,SAASE,GAAG,CAAC,CAAC,EAAEC,IAAI,EAAE,GAAKA;IAE1C,IAAIL,QAAQ;QACVC,GAAG,CAACF,MAAMO,IAAI,CAAC,CAACN,OAAO,GAAGG;IAC5B,OAAO;QACLF,GAAG,CAACF,MAAMO,IAAI,CAAC,GAAGH;IACpB;AACF,EAAC"}
1
+ {"version":3,"sources":["../../../src/transform/read/hasManyText.ts"],"sourcesContent":["import type { TextField } from 'payload'\n\ntype Args = {\n field: TextField\n locale?: string\n ref: Record<string, unknown>\n textRows: Record<string, unknown>[]\n withinArrayOrBlockLocale?: string\n}\n\nexport const transformHasManyText = ({\n field,\n locale,\n ref,\n textRows,\n withinArrayOrBlockLocale,\n}: Args) => {\n let result: unknown[]\n\n if (withinArrayOrBlockLocale) {\n result = textRows.reduce((acc, { locale, text }) => {\n if (locale === withinArrayOrBlockLocale) {\n acc.push(text)\n }\n\n return acc\n }, [])\n } else {\n result = textRows.map(({ text }) => text)\n }\n\n if (locale) {\n ref[field.name][locale] = result\n } else {\n ref[field.name] = result\n }\n}\n"],"names":["transformHasManyText","field","locale","ref","textRows","withinArrayOrBlockLocale","result","reduce","acc","text","push","map","name"],"mappings":"AAUA,OAAO,MAAMA,uBAAuB,CAAC,EACnCC,KAAK,EACLC,MAAM,EACNC,GAAG,EACHC,QAAQ,EACRC,wBAAwB,EACnB;IACL,IAAIC;IAEJ,IAAID,0BAA0B;QAC5BC,SAASF,SAASG,MAAM,CAAC,CAACC,KAAK,EAAEN,MAAM,EAAEO,IAAI,EAAE;YAC7C,IAAIP,WAAWG,0BAA0B;gBACvCG,IAAIE,IAAI,CAACD;YACX;YAEA,OAAOD;QACT,GAAG,EAAE;IACP,OAAO;QACLF,SAASF,SAASO,GAAG,CAAC,CAAC,EAAEF,IAAI,EAAE,GAAKA;IACtC;IAEA,IAAIP,QAAQ;QACVC,GAAG,CAACF,MAAMW,IAAI,CAAC,CAACV,OAAO,GAAGI;IAC5B,OAAO;QACLH,GAAG,CAACF,MAAMW,IAAI,CAAC,GAAGN;IACpB;AACF,EAAC"}
@@ -1,4 +1,4 @@
1
- import type { Field, SanitizedConfig, TypeWithID } from 'payload';
1
+ import type { Field, JoinQuery, SanitizedConfig, TypeWithID } from 'payload';
2
2
  import type { DrizzleAdapter } from '../../types.js';
3
3
  type TransformArgs = {
4
4
  adapter: DrizzleAdapter;
@@ -6,8 +6,9 @@ type TransformArgs = {
6
6
  data: Record<string, unknown>;
7
7
  fallbackLocale?: false | string;
8
8
  fields: Field[];
9
+ joinQuery?: JoinQuery;
9
10
  locale?: string;
10
11
  };
11
- export declare const transform: <T extends Record<string, unknown> | TypeWithID>({ adapter, config, data, fields, }: TransformArgs) => T;
12
+ export declare const transform: <T extends Record<string, unknown> | TypeWithID>({ adapter, config, data, fields, joinQuery, }: TransformArgs) => T;
12
13
  export {};
13
14
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/transform/read/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AAEjE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAMpD,KAAK,aAAa,GAAG;IACnB,OAAO,EAAE,cAAc,CAAA;IACvB,MAAM,EAAE,eAAe,CAAA;IACvB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC7B,cAAc,CAAC,EAAE,KAAK,GAAG,MAAM,CAAA;IAC/B,MAAM,EAAE,KAAK,EAAE,CAAA;IACf,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB,CAAA;AAID,eAAO,MAAM,SAAS,GAAI,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,UAAU,sCAKrE,aAAa,KAAG,CA2ClB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/transform/read/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AAE5E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAMpD,KAAK,aAAa,GAAG;IACnB,OAAO,EAAE,cAAc,CAAA;IACvB,MAAM,EAAE,eAAe,CAAA;IACvB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC7B,cAAc,CAAC,EAAE,KAAK,GAAG,MAAM,CAAA;IAC/B,MAAM,EAAE,KAAK,EAAE,CAAA;IACf,SAAS,CAAC,EAAE,SAAS,CAAA;IACrB,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB,CAAA;AAID,eAAO,MAAM,SAAS,GAAI,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,UAAU,iDAMrE,aAAa,KAAG,CA4ClB,CAAA"}
@@ -1,9 +1,9 @@
1
- /* eslint-disable no-param-reassign */ import { createBlocksMap } from '../../utilities/createBlocksMap.js';
1
+ import { createBlocksMap } from '../../utilities/createBlocksMap.js';
2
2
  import { createPathMap } from '../../utilities/createRelationshipMap.js';
3
3
  import { traverseFields } from './traverseFields.js';
4
4
  // This is the entry point to transform Drizzle output data
5
5
  // into the shape Payload expects based on field schema
6
- export const transform = ({ adapter, config, data, fields })=>{
6
+ export const transform = ({ adapter, config, data, fields, joinQuery })=>{
7
7
  let relationships = {};
8
8
  let texts = {};
9
9
  let numbers = {};
@@ -31,6 +31,7 @@ export const transform = ({ adapter, config, data, fields })=>{
31
31
  deletions,
32
32
  fieldPrefix: '',
33
33
  fields,
34
+ joinQuery,
34
35
  numbers,
35
36
  path: '',
36
37
  relationships,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/transform/read/index.ts"],"sourcesContent":["/* eslint-disable no-param-reassign */\nimport type { Field, SanitizedConfig, TypeWithID } from 'payload'\n\nimport type { DrizzleAdapter } from '../../types.js'\n\nimport { createBlocksMap } from '../../utilities/createBlocksMap.js'\nimport { createPathMap } from '../../utilities/createRelationshipMap.js'\nimport { traverseFields } from './traverseFields.js'\n\ntype TransformArgs = {\n adapter: DrizzleAdapter\n config: SanitizedConfig\n data: Record<string, unknown>\n fallbackLocale?: false | string\n fields: Field[]\n locale?: string\n}\n\n// This is the entry point to transform Drizzle output data\n// into the shape Payload expects based on field schema\nexport const transform = <T extends Record<string, unknown> | TypeWithID>({\n adapter,\n config,\n data,\n fields,\n}: TransformArgs): T => {\n let relationships: Record<string, Record<string, unknown>[]> = {}\n let texts: Record<string, Record<string, unknown>[]> = {}\n let numbers: Record<string, Record<string, unknown>[]> = {}\n\n if ('_rels' in data) {\n relationships = createPathMap(data._rels)\n delete data._rels\n }\n\n if ('_texts' in data) {\n texts = createPathMap(data._texts)\n delete data._texts\n }\n\n if ('_numbers' in data) {\n numbers = createPathMap(data._numbers)\n delete data._numbers\n }\n\n const blocks = createBlocksMap(data)\n const deletions = []\n\n const result = traverseFields<T>({\n adapter,\n blocks,\n config,\n dataRef: {\n id: data.id,\n },\n deletions,\n fieldPrefix: '',\n fields,\n numbers,\n path: '',\n relationships,\n table: data,\n texts,\n })\n\n deletions.forEach((deletion) => deletion())\n\n return result\n}\n"],"names":["createBlocksMap","createPathMap","traverseFields","transform","adapter","config","data","fields","relationships","texts","numbers","_rels","_texts","_numbers","blocks","deletions","result","dataRef","id","fieldPrefix","path","table","forEach","deletion"],"mappings":"AAAA,oCAAoC,GAKpC,SAASA,eAAe,QAAQ,qCAAoC;AACpE,SAASC,aAAa,QAAQ,2CAA0C;AACxE,SAASC,cAAc,QAAQ,sBAAqB;AAWpD,2DAA2D;AAC3D,uDAAuD;AACvD,OAAO,MAAMC,YAAY,CAAiD,EACxEC,OAAO,EACPC,MAAM,EACNC,IAAI,EACJC,MAAM,EACQ;IACd,IAAIC,gBAA2D,CAAC;IAChE,IAAIC,QAAmD,CAAC;IACxD,IAAIC,UAAqD,CAAC;IAE1D,IAAI,WAAWJ,MAAM;QACnBE,gBAAgBP,cAAcK,KAAKK,KAAK;QACxC,OAAOL,KAAKK,KAAK;IACnB;IAEA,IAAI,YAAYL,MAAM;QACpBG,QAAQR,cAAcK,KAAKM,MAAM;QACjC,OAAON,KAAKM,MAAM;IACpB;IAEA,IAAI,cAAcN,MAAM;QACtBI,UAAUT,cAAcK,KAAKO,QAAQ;QACrC,OAAOP,KAAKO,QAAQ;IACtB;IAEA,MAAMC,SAASd,gBAAgBM;IAC/B,MAAMS,YAAY,EAAE;IAEpB,MAAMC,SAASd,eAAkB;QAC/BE;QACAU;QACAT;QACAY,SAAS;YACPC,IAAIZ,KAAKY,EAAE;QACb;QACAH;QACAI,aAAa;QACbZ;QACAG;QACAU,MAAM;QACNZ;QACAa,OAAOf;QACPG;IACF;IAEAM,UAAUO,OAAO,CAAC,CAACC,WAAaA;IAEhC,OAAOP;AACT,EAAC"}
1
+ {"version":3,"sources":["../../../src/transform/read/index.ts"],"sourcesContent":["import type { Field, JoinQuery, SanitizedConfig, TypeWithID } from 'payload'\n\nimport type { DrizzleAdapter } from '../../types.js'\n\nimport { createBlocksMap } from '../../utilities/createBlocksMap.js'\nimport { createPathMap } from '../../utilities/createRelationshipMap.js'\nimport { traverseFields } from './traverseFields.js'\n\ntype TransformArgs = {\n adapter: DrizzleAdapter\n config: SanitizedConfig\n data: Record<string, unknown>\n fallbackLocale?: false | string\n fields: Field[]\n joinQuery?: JoinQuery\n locale?: string\n}\n\n// This is the entry point to transform Drizzle output data\n// into the shape Payload expects based on field schema\nexport const transform = <T extends Record<string, unknown> | TypeWithID>({\n adapter,\n config,\n data,\n fields,\n joinQuery,\n}: TransformArgs): T => {\n let relationships: Record<string, Record<string, unknown>[]> = {}\n let texts: Record<string, Record<string, unknown>[]> = {}\n let numbers: Record<string, Record<string, unknown>[]> = {}\n\n if ('_rels' in data) {\n relationships = createPathMap(data._rels)\n delete data._rels\n }\n\n if ('_texts' in data) {\n texts = createPathMap(data._texts)\n delete data._texts\n }\n\n if ('_numbers' in data) {\n numbers = createPathMap(data._numbers)\n delete data._numbers\n }\n\n const blocks = createBlocksMap(data)\n const deletions = []\n\n const result = traverseFields<T>({\n adapter,\n blocks,\n config,\n dataRef: {\n id: data.id,\n },\n deletions,\n fieldPrefix: '',\n fields,\n joinQuery,\n numbers,\n path: '',\n relationships,\n table: data,\n texts,\n })\n\n deletions.forEach((deletion) => deletion())\n\n return result\n}\n"],"names":["createBlocksMap","createPathMap","traverseFields","transform","adapter","config","data","fields","joinQuery","relationships","texts","numbers","_rels","_texts","_numbers","blocks","deletions","result","dataRef","id","fieldPrefix","path","table","forEach","deletion"],"mappings":"AAIA,SAASA,eAAe,QAAQ,qCAAoC;AACpE,SAASC,aAAa,QAAQ,2CAA0C;AACxE,SAASC,cAAc,QAAQ,sBAAqB;AAYpD,2DAA2D;AAC3D,uDAAuD;AACvD,OAAO,MAAMC,YAAY,CAAiD,EACxEC,OAAO,EACPC,MAAM,EACNC,IAAI,EACJC,MAAM,EACNC,SAAS,EACK;IACd,IAAIC,gBAA2D,CAAC;IAChE,IAAIC,QAAmD,CAAC;IACxD,IAAIC,UAAqD,CAAC;IAE1D,IAAI,WAAWL,MAAM;QACnBG,gBAAgBR,cAAcK,KAAKM,KAAK;QACxC,OAAON,KAAKM,KAAK;IACnB;IAEA,IAAI,YAAYN,MAAM;QACpBI,QAAQT,cAAcK,KAAKO,MAAM;QACjC,OAAOP,KAAKO,MAAM;IACpB;IAEA,IAAI,cAAcP,MAAM;QACtBK,UAAUV,cAAcK,KAAKQ,QAAQ;QACrC,OAAOR,KAAKQ,QAAQ;IACtB;IAEA,MAAMC,SAASf,gBAAgBM;IAC/B,MAAMU,YAAY,EAAE;IAEpB,MAAMC,SAASf,eAAkB;QAC/BE;QACAW;QACAV;QACAa,SAAS;YACPC,IAAIb,KAAKa,EAAE;QACb;QACAH;QACAI,aAAa;QACbb;QACAC;QACAG;QACAU,MAAM;QACNZ;QACAa,OAAOhB;QACPI;IACF;IAEAM,UAAUO,OAAO,CAAC,CAACC,WAAaA;IAEhC,OAAOP;AACT,EAAC"}
@@ -4,7 +4,8 @@ type Args = {
4
4
  locale?: string;
5
5
  ref: Record<string, unknown>;
6
6
  relations: Record<string, unknown>[];
7
+ withinArrayOrBlockLocale?: string;
7
8
  };
8
- export declare const transformRelationship: ({ field, locale, ref, relations }: Args) => void;
9
+ export declare const transformRelationship: ({ field, locale, ref, relations, withinArrayOrBlockLocale, }: Args) => void;
9
10
  export {};
10
11
  //# sourceMappingURL=relationship.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"relationship.d.ts","sourceRoot":"","sources":["../../../src/transform/read/relationship.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAE7D,KAAK,IAAI,GAAG;IACV,KAAK,EAAE,iBAAiB,GAAG,WAAW,CAAA;IACtC,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC5B,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAA;CACrC,CAAA;AAED,eAAO,MAAM,qBAAqB,sCAAuC,IAAI,SA6D5E,CAAA"}
1
+ {"version":3,"file":"relationship.d.ts","sourceRoot":"","sources":["../../../src/transform/read/relationship.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAE7D,KAAK,IAAI,GAAG;IACV,KAAK,EAAE,iBAAiB,GAAG,WAAW,CAAA;IACtC,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC5B,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAA;IACpC,wBAAwB,CAAC,EAAE,MAAM,CAAA;CAClC,CAAA;AAED,eAAO,MAAM,qBAAqB,iEAM/B,IAAI,SAwEN,CAAA"}
@@ -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"}