@payloadcms/drizzle 4.0.0-internal.183b315 → 4.0.0-internal.1a2a79e

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 (398) hide show
  1. package/LICENSE.md +1 -1
  2. package/dist/count.d.ts.map +1 -1
  3. package/dist/count.js +25 -3
  4. package/dist/count.js.map +1 -1
  5. package/dist/countVersions.d.ts.map +1 -1
  6. package/dist/countVersions.js +28 -4
  7. package/dist/countVersions.js.map +1 -1
  8. package/dist/createGlobalVersion.d.ts.map +1 -1
  9. package/dist/createGlobalVersion.js +15 -2
  10. package/dist/createGlobalVersion.js.map +1 -1
  11. package/dist/createTableName.d.ts.map +1 -1
  12. package/dist/createTableName.js +2 -7
  13. package/dist/createTableName.js.map +1 -1
  14. package/dist/createVersion.d.ts.map +1 -1
  15. package/dist/createVersion.js +12 -1
  16. package/dist/createVersion.js.map +1 -1
  17. package/dist/deleteBranchGlobal.d.ts +10 -0
  18. package/dist/deleteBranchGlobal.d.ts.map +1 -0
  19. package/dist/deleteBranchGlobal.js +27 -0
  20. package/dist/deleteBranchGlobal.js.map +1 -0
  21. package/dist/deleteOne.d.ts.map +1 -1
  22. package/dist/deleteOne.js +18 -1
  23. package/dist/deleteOne.js.map +1 -1
  24. package/dist/exports/postgres.d.ts +5 -1
  25. package/dist/exports/postgres.d.ts.map +1 -1
  26. package/dist/exports/postgres.js +5 -1
  27. package/dist/exports/postgres.js.map +1 -1
  28. package/dist/exports/sqlite.d.ts +3 -1
  29. package/dist/exports/sqlite.d.ts.map +1 -1
  30. package/dist/exports/sqlite.js +3 -1
  31. package/dist/exports/sqlite.js.map +1 -1
  32. package/dist/find/buildFindManyArgs.d.ts +3 -2
  33. package/dist/find/buildFindManyArgs.d.ts.map +1 -1
  34. package/dist/find/buildFindManyArgs.js +2 -1
  35. package/dist/find/buildFindManyArgs.js.map +1 -1
  36. package/dist/find/buildPolymorphicJoinQuery.d.ts +40 -0
  37. package/dist/find/buildPolymorphicJoinQuery.d.ts.map +1 -0
  38. package/dist/find/buildPolymorphicJoinQuery.js +163 -0
  39. package/dist/find/buildPolymorphicJoinQuery.js.map +1 -0
  40. package/dist/find/buildPolymorphicJoinWhere.d.ts +20 -0
  41. package/dist/find/buildPolymorphicJoinWhere.d.ts.map +1 -0
  42. package/dist/find/buildPolymorphicJoinWhere.js +301 -0
  43. package/dist/find/buildPolymorphicJoinWhere.js.map +1 -0
  44. package/dist/find/createPolymorphicJoinWherePlan.d.ts +38 -0
  45. package/dist/find/createPolymorphicJoinWherePlan.d.ts.map +1 -0
  46. package/dist/find/createPolymorphicJoinWherePlan.js +200 -0
  47. package/dist/find/createPolymorphicJoinWherePlan.js.map +1 -0
  48. package/dist/find/findMany.d.ts +6 -1
  49. package/dist/find/findMany.d.ts.map +1 -1
  50. package/dist/find/findMany.js +16 -3
  51. package/dist/find/findMany.js.map +1 -1
  52. package/dist/find/traverseFields.d.ts +3 -2
  53. package/dist/find/traverseFields.d.ts.map +1 -1
  54. package/dist/find/traverseFields.js +74 -199
  55. package/dist/find/traverseFields.js.map +1 -1
  56. package/dist/find.d.ts.map +1 -1
  57. package/dist/find.js +32 -4
  58. package/dist/find.js.map +1 -1
  59. package/dist/findDistinct.d.ts.map +1 -1
  60. package/dist/findDistinct.js +107 -8
  61. package/dist/findDistinct.js.map +1 -1
  62. package/dist/findGlobal.d.ts.map +1 -1
  63. package/dist/findGlobal.js +22 -5
  64. package/dist/findGlobal.js.map +1 -1
  65. package/dist/findGlobalVersions.js +8 -3
  66. package/dist/findGlobalVersions.js.map +1 -1
  67. package/dist/findOne.d.ts +1 -1
  68. package/dist/findOne.d.ts.map +1 -1
  69. package/dist/findOne.js +30 -3
  70. package/dist/findOne.js.map +1 -1
  71. package/dist/findVersions.d.ts.map +1 -1
  72. package/dist/findVersions.js +32 -5
  73. package/dist/findVersions.js.map +1 -1
  74. package/dist/index.d.ts +6 -11
  75. package/dist/index.d.ts.map +1 -1
  76. package/dist/index.js +4 -9
  77. package/dist/index.js.map +1 -1
  78. package/dist/migrate.d.ts.map +1 -1
  79. package/dist/migrate.js +41 -15
  80. package/dist/migrate.js.map +1 -1
  81. package/dist/migrateDown.d.ts +2 -1
  82. package/dist/migrateDown.d.ts.map +1 -1
  83. package/dist/migrateDown.js +17 -4
  84. package/dist/migrateDown.js.map +1 -1
  85. package/dist/migrateFresh.d.ts +4 -2
  86. package/dist/migrateFresh.d.ts.map +1 -1
  87. package/dist/migrateFresh.js +26 -9
  88. package/dist/migrateFresh.js.map +1 -1
  89. package/dist/migrateRefresh.d.ts +2 -1
  90. package/dist/migrateRefresh.d.ts.map +1 -1
  91. package/dist/migrateRefresh.js +20 -5
  92. package/dist/migrateRefresh.js.map +1 -1
  93. package/dist/migrateReset.d.ts +2 -1
  94. package/dist/migrateReset.d.ts.map +1 -1
  95. package/dist/migrateReset.js +18 -4
  96. package/dist/migrateReset.js.map +1 -1
  97. package/dist/migrateStatus.d.ts +2 -1
  98. package/dist/migrateStatus.d.ts.map +1 -1
  99. package/dist/migrateStatus.js +11 -6
  100. package/dist/migrateStatus.js.map +1 -1
  101. package/dist/postgres/createDatabase.d.ts.map +1 -1
  102. package/dist/postgres/createExtensions.d.ts.map +1 -1
  103. package/dist/postgres/createJSONQuery/index.d.ts.map +1 -1
  104. package/dist/postgres/createJSONQuery/index.js +3 -3
  105. package/dist/postgres/createJSONQuery/index.js.map +1 -1
  106. package/dist/postgres/init.d.ts.map +1 -1
  107. package/dist/postgres/init.js +6 -0
  108. package/dist/postgres/init.js.map +1 -1
  109. package/dist/postgres/insert.d.ts.map +1 -1
  110. package/dist/postgres/insert.js +4 -2
  111. package/dist/postgres/insert.js.map +1 -1
  112. package/dist/postgres/predefinedMigrations/localize-status/index.d.ts +11 -0
  113. package/dist/postgres/predefinedMigrations/localize-status/index.d.ts.map +1 -0
  114. package/dist/postgres/predefinedMigrations/localize-status/index.js +296 -0
  115. package/dist/postgres/predefinedMigrations/localize-status/index.js.map +1 -0
  116. package/dist/postgres/predefinedMigrations/localize-status/migrateMainCollection.d.ts +13 -0
  117. package/dist/postgres/predefinedMigrations/localize-status/migrateMainCollection.d.ts.map +1 -0
  118. package/dist/postgres/predefinedMigrations/localize-status/migrateMainCollection.js +51 -0
  119. package/dist/postgres/predefinedMigrations/localize-status/migrateMainCollection.js.map +1 -0
  120. package/dist/postgres/predefinedMigrations/localize-status/migrateMainGlobal.d.ts +13 -0
  121. package/dist/postgres/predefinedMigrations/localize-status/migrateMainGlobal.d.ts.map +1 -0
  122. package/dist/postgres/predefinedMigrations/localize-status/migrateMainGlobal.js +54 -0
  123. package/dist/postgres/predefinedMigrations/localize-status/migrateMainGlobal.js.map +1 -0
  124. package/dist/postgres/predefinedMigrations/sizes-to-variants/index.d.ts +35 -0
  125. package/dist/postgres/predefinedMigrations/sizes-to-variants/index.d.ts.map +1 -0
  126. package/dist/postgres/predefinedMigrations/sizes-to-variants/index.js +185 -0
  127. package/dist/postgres/predefinedMigrations/sizes-to-variants/index.js.map +1 -0
  128. package/dist/postgres/predefinedMigrations/v2-v3/fetchAndResave/index.d.ts.map +1 -1
  129. package/dist/postgres/predefinedMigrations/v2-v3/fetchAndResave/index.js +8 -4
  130. package/dist/postgres/predefinedMigrations/v2-v3/fetchAndResave/index.js.map +1 -1
  131. package/dist/postgres/predefinedMigrations/v2-v3/fetchAndResave/traverseFields.d.ts.map +1 -1
  132. package/dist/postgres/predefinedMigrations/v2-v3/fetchAndResave/traverseFields.js.map +1 -1
  133. package/dist/postgres/predefinedMigrations/v2-v3/groupUpSQLStatements.d.ts.map +1 -1
  134. package/dist/postgres/predefinedMigrations/v2-v3/index.d.ts.map +1 -1
  135. package/dist/postgres/predefinedMigrations/v2-v3/index.js +2 -2
  136. package/dist/postgres/predefinedMigrations/v2-v3/index.js.map +1 -1
  137. package/dist/postgres/predefinedMigrations/v2-v3/migrateRelationships.d.ts.map +1 -1
  138. package/dist/postgres/predefinedMigrations/v2-v3/traverseFields.d.ts.map +1 -1
  139. package/dist/postgres/query/assertOperatorHandlerExtensionsInstalled.d.ts +15 -0
  140. package/dist/postgres/query/assertOperatorHandlerExtensionsInstalled.d.ts.map +1 -0
  141. package/dist/postgres/query/assertOperatorHandlerExtensionsInstalled.js +25 -0
  142. package/dist/postgres/query/assertOperatorHandlerExtensionsInstalled.js.map +1 -0
  143. package/dist/postgres/query/postgresUnaccent.d.ts +13 -0
  144. package/dist/postgres/query/postgresUnaccent.d.ts.map +1 -0
  145. package/dist/postgres/query/postgresUnaccent.js +40 -0
  146. package/dist/postgres/query/postgresUnaccent.js.map +1 -0
  147. package/dist/postgres/requireDrizzleKit.d.ts +4 -0
  148. package/dist/postgres/requireDrizzleKit.d.ts.map +1 -1
  149. package/dist/postgres/requireDrizzleKit.js +16 -10
  150. package/dist/postgres/requireDrizzleKit.js.map +1 -1
  151. package/dist/postgres/schema/buildDrizzleTable.d.ts.map +1 -1
  152. package/dist/postgres/schema/geometryColumn.d.ts +2 -2
  153. package/dist/postgres/schema/geometryColumn.d.ts.map +1 -1
  154. package/dist/postgres/types.d.ts +17 -2
  155. package/dist/postgres/types.d.ts.map +1 -1
  156. package/dist/postgres/types.js.map +1 -1
  157. package/dist/queries/addJoinTable.d.ts +1 -1
  158. package/dist/queries/addJoinTable.d.ts.map +1 -1
  159. package/dist/queries/buildAndOrConditions.d.ts +3 -2
  160. package/dist/queries/buildAndOrConditions.d.ts.map +1 -1
  161. package/dist/queries/buildAndOrConditions.js +2 -1
  162. package/dist/queries/buildAndOrConditions.js.map +1 -1
  163. package/dist/queries/buildBranchVisibility.d.ts +11 -0
  164. package/dist/queries/buildBranchVisibility.d.ts.map +1 -0
  165. package/dist/queries/buildBranchVisibility.js +48 -0
  166. package/dist/queries/buildBranchVisibility.js.map +1 -0
  167. package/dist/queries/buildOperatorConstraint.d.ts +22 -0
  168. package/dist/queries/buildOperatorConstraint.d.ts.map +1 -0
  169. package/dist/queries/buildOperatorConstraint.js +63 -0
  170. package/dist/queries/buildOperatorConstraint.js.map +1 -0
  171. package/dist/queries/buildOrderBy.d.ts +3 -2
  172. package/dist/queries/buildOrderBy.d.ts.map +1 -1
  173. package/dist/queries/buildOrderBy.js +2 -1
  174. package/dist/queries/buildOrderBy.js.map +1 -1
  175. package/dist/queries/buildQuery.d.ts +3 -2
  176. package/dist/queries/buildQuery.d.ts.map +1 -1
  177. package/dist/queries/buildQuery.js +4 -2
  178. package/dist/queries/buildQuery.js.map +1 -1
  179. package/dist/queries/getTableAlias.d.ts.map +1 -1
  180. package/dist/queries/getTableColumnFromPath.d.ts +15 -5
  181. package/dist/queries/getTableColumnFromPath.d.ts.map +1 -1
  182. package/dist/queries/getTableColumnFromPath.js +227 -56
  183. package/dist/queries/getTableColumnFromPath.js.map +1 -1
  184. package/dist/queries/operatorMap.d.ts +7 -3
  185. package/dist/queries/operatorMap.d.ts.map +1 -1
  186. package/dist/queries/operatorMap.js.map +1 -1
  187. package/dist/queries/parseParams.d.ts +3 -2
  188. package/dist/queries/parseParams.d.ts.map +1 -1
  189. package/dist/queries/parseParams.js +266 -11
  190. package/dist/queries/parseParams.js.map +1 -1
  191. package/dist/queries/resolveRelationshipPath.d.ts +36 -0
  192. package/dist/queries/resolveRelationshipPath.d.ts.map +1 -0
  193. package/dist/queries/resolveRelationshipPath.js +66 -0
  194. package/dist/queries/resolveRelationshipPath.js.map +1 -0
  195. package/dist/queries/sanitizeQueryValue.d.ts.map +1 -1
  196. package/dist/queries/selectDistinct.d.ts.map +1 -1
  197. package/dist/queries/validateOperatorHandlers.d.ts +8 -0
  198. package/dist/queries/validateOperatorHandlers.d.ts.map +1 -0
  199. package/dist/queries/validateOperatorHandlers.js +30 -0
  200. package/dist/queries/validateOperatorHandlers.js.map +1 -0
  201. package/dist/queryDrafts.d.ts.map +1 -1
  202. package/dist/queryDrafts.js +23 -4
  203. package/dist/queryDrafts.js.map +1 -1
  204. package/dist/schema/build.d.ts.map +1 -1
  205. package/dist/schema/build.js +23 -20
  206. package/dist/schema/build.js.map +1 -1
  207. package/dist/schema/buildDrizzleRelations.d.ts.map +1 -1
  208. package/dist/schema/buildRawSchema.d.ts.map +1 -1
  209. package/dist/schema/idToUUID.d.ts.map +1 -1
  210. package/dist/schema/traverseFields.d.ts.map +1 -1
  211. package/dist/schema/traverseFields.js +7 -6
  212. package/dist/schema/traverseFields.js.map +1 -1
  213. package/dist/schema/withDefault.d.ts.map +1 -1
  214. package/dist/sqlite/createJSONQuery/convertPathToJSONTraversal.d.ts.map +1 -1
  215. package/dist/sqlite/createJSONQuery/convertPathToJSONTraversal.js +3 -2
  216. package/dist/sqlite/createJSONQuery/convertPathToJSONTraversal.js.map +1 -1
  217. package/dist/sqlite/createJSONQuery/index.d.ts.map +1 -1
  218. package/dist/sqlite/createJSONQuery/index.js +6 -5
  219. package/dist/sqlite/createJSONQuery/index.js.map +1 -1
  220. package/dist/sqlite/createRequireDrizzleKit.d.ts +6 -0
  221. package/dist/sqlite/createRequireDrizzleKit.d.ts.map +1 -0
  222. package/dist/sqlite/createRequireDrizzleKit.js +15 -0
  223. package/dist/sqlite/createRequireDrizzleKit.js.map +1 -0
  224. package/dist/sqlite/execute.js.map +1 -1
  225. package/dist/sqlite/insert.d.ts.map +1 -1
  226. package/dist/sqlite/insert.js +9 -4
  227. package/dist/sqlite/insert.js.map +1 -1
  228. package/dist/sqlite/predefinedMigrations/localize-status/index.d.ts +28 -0
  229. package/dist/sqlite/predefinedMigrations/localize-status/index.d.ts.map +1 -0
  230. package/dist/sqlite/predefinedMigrations/localize-status/index.js +198 -0
  231. package/dist/sqlite/predefinedMigrations/localize-status/index.js.map +1 -0
  232. package/dist/sqlite/predefinedMigrations/localize-status/migrateMainCollection.d.ts +12 -0
  233. package/dist/sqlite/predefinedMigrations/localize-status/migrateMainCollection.d.ts.map +1 -0
  234. package/dist/sqlite/predefinedMigrations/localize-status/migrateMainCollection.js +24 -0
  235. package/dist/sqlite/predefinedMigrations/localize-status/migrateMainCollection.js.map +1 -0
  236. package/dist/sqlite/predefinedMigrations/localize-status/migrateMainGlobal.d.ts +12 -0
  237. package/dist/sqlite/predefinedMigrations/localize-status/migrateMainGlobal.d.ts.map +1 -0
  238. package/dist/sqlite/predefinedMigrations/localize-status/migrateMainGlobal.js +28 -0
  239. package/dist/sqlite/predefinedMigrations/localize-status/migrateMainGlobal.js.map +1 -0
  240. package/dist/sqlite/predefinedMigrations/sizes-to-variants/index.d.ts +15 -0
  241. package/dist/sqlite/predefinedMigrations/sizes-to-variants/index.d.ts.map +1 -0
  242. package/dist/sqlite/predefinedMigrations/sizes-to-variants/index.js +114 -0
  243. package/dist/sqlite/predefinedMigrations/sizes-to-variants/index.js.map +1 -0
  244. package/dist/sqlite/types.d.ts +4 -0
  245. package/dist/sqlite/types.d.ts.map +1 -1
  246. package/dist/sqlite/types.js.map +1 -1
  247. package/dist/transactions/beginTransaction.d.ts.map +1 -1
  248. package/dist/transactions/beginTransaction.js +13 -5
  249. package/dist/transactions/beginTransaction.js.map +1 -1
  250. package/dist/transactions/commitTransaction.d.ts.map +1 -1
  251. package/dist/transactions/commitTransaction.js +1 -5
  252. package/dist/transactions/commitTransaction.js.map +1 -1
  253. package/dist/transform/read/hasManyNumber.d.ts.map +1 -1
  254. package/dist/transform/read/hasManyText.d.ts.map +1 -1
  255. package/dist/transform/read/index.d.ts.map +1 -1
  256. package/dist/transform/read/relationship.d.ts.map +1 -1
  257. package/dist/transform/read/traverseFields.d.ts.map +1 -1
  258. package/dist/transform/read/traverseFields.js +2 -2
  259. package/dist/transform/read/traverseFields.js.map +1 -1
  260. package/dist/transform/write/array.d.ts +3 -2
  261. package/dist/transform/write/array.d.ts.map +1 -1
  262. package/dist/transform/write/array.js +2 -1
  263. package/dist/transform/write/array.js.map +1 -1
  264. package/dist/transform/write/blocks.d.ts +3 -2
  265. package/dist/transform/write/blocks.d.ts.map +1 -1
  266. package/dist/transform/write/blocks.js +3 -2
  267. package/dist/transform/write/blocks.js.map +1 -1
  268. package/dist/transform/write/index.d.ts.map +1 -1
  269. package/dist/transform/write/index.js +2 -0
  270. package/dist/transform/write/index.js.map +1 -1
  271. package/dist/transform/write/numbers.d.ts.map +1 -1
  272. package/dist/transform/write/relationships.d.ts.map +1 -1
  273. package/dist/transform/write/selects.d.ts.map +1 -1
  274. package/dist/transform/write/texts.d.ts.map +1 -1
  275. package/dist/transform/write/traverseFields.d.ts +2 -1
  276. package/dist/transform/write/traverseFields.d.ts.map +1 -1
  277. package/dist/transform/write/traverseFields.js +41 -22
  278. package/dist/transform/write/traverseFields.js.map +1 -1
  279. package/dist/transform/write/types.d.ts +7 -0
  280. package/dist/transform/write/types.d.ts.map +1 -1
  281. package/dist/transform/write/types.js.map +1 -1
  282. package/dist/types.d.ts +53 -8
  283. package/dist/types.d.ts.map +1 -1
  284. package/dist/types.js +1 -3
  285. package/dist/types.js.map +1 -1
  286. package/dist/updateGlobal.d.ts +5 -1
  287. package/dist/updateGlobal.d.ts.map +1 -1
  288. package/dist/updateGlobal.js +96 -4
  289. package/dist/updateGlobal.js.map +1 -1
  290. package/dist/updateJobs.d.ts.map +1 -1
  291. package/dist/updateJobs.js +37 -0
  292. package/dist/updateJobs.js.map +1 -1
  293. package/dist/updateOne.d.ts.map +1 -1
  294. package/dist/updateOne.js +86 -4
  295. package/dist/updateOne.js.map +1 -1
  296. package/dist/upsertBranchGlobalChange.d.ts +3 -0
  297. package/dist/upsertBranchGlobalChange.d.ts.map +1 -0
  298. package/dist/upsertBranchGlobalChange.js +35 -0
  299. package/dist/upsertBranchGlobalChange.js.map +1 -0
  300. package/dist/upsertRow/deleteExistingArrayRows.d.ts.map +1 -1
  301. package/dist/upsertRow/deleteExistingRowsByPath.d.ts.map +1 -1
  302. package/dist/upsertRow/deleteExistingRowsByPath.js +17 -12
  303. package/dist/upsertRow/deleteExistingRowsByPath.js.map +1 -1
  304. package/dist/upsertRow/handleUpsertError.d.ts.map +1 -1
  305. package/dist/upsertRow/handleUpsertError.js +2 -1
  306. package/dist/upsertRow/handleUpsertError.js.map +1 -1
  307. package/dist/upsertRow/index.d.ts +1 -1
  308. package/dist/upsertRow/index.d.ts.map +1 -1
  309. package/dist/upsertRow/index.js +161 -48
  310. package/dist/upsertRow/index.js.map +1 -1
  311. package/dist/upsertRow/insertArrays.d.ts.map +1 -1
  312. package/dist/upsertRow/insertArrays.js +2 -1
  313. package/dist/upsertRow/insertArrays.js.map +1 -1
  314. package/dist/upsertRow/shouldUseOptimizedUpsertRow.d.ts.map +1 -1
  315. package/dist/upsertRow/types.d.ts +3 -0
  316. package/dist/upsertRow/types.d.ts.map +1 -1
  317. package/dist/upsertRow/types.js.map +1 -1
  318. package/dist/utilities/appendPrefixToKeys.d.ts.map +1 -1
  319. package/dist/utilities/blocksToJsonMigrator.d.ts.map +1 -1
  320. package/dist/utilities/blocksToJsonMigrator.js +7 -18
  321. package/dist/utilities/blocksToJsonMigrator.js.map +1 -1
  322. package/dist/utilities/buildCreateMigration.d.ts.map +1 -1
  323. package/dist/utilities/buildCreateMigration.js +13 -9
  324. package/dist/utilities/buildCreateMigration.js.map +1 -1
  325. package/dist/utilities/buildDynamicPredefinedSizesToVariantsMigration.d.ts +15 -0
  326. package/dist/utilities/buildDynamicPredefinedSizesToVariantsMigration.d.ts.map +1 -0
  327. package/dist/utilities/buildDynamicPredefinedSizesToVariantsMigration.js +110 -0
  328. package/dist/utilities/buildDynamicPredefinedSizesToVariantsMigration.js.map +1 -0
  329. package/dist/utilities/buildForeignKeyName.d.ts.map +1 -1
  330. package/dist/utilities/buildForeignKeyName.js +3 -2
  331. package/dist/utilities/buildForeignKeyName.js.map +1 -1
  332. package/dist/utilities/buildIndexName.d.ts.map +1 -1
  333. package/dist/utilities/buildIndexName.js +3 -2
  334. package/dist/utilities/buildIndexName.js.map +1 -1
  335. package/dist/utilities/checkTruncatedIdentifiers.d.ts +13 -0
  336. package/dist/utilities/checkTruncatedIdentifiers.d.ts.map +1 -0
  337. package/dist/utilities/checkTruncatedIdentifiers.js +56 -0
  338. package/dist/utilities/checkTruncatedIdentifiers.js.map +1 -0
  339. package/dist/utilities/createBlocksMap.d.ts.map +1 -1
  340. package/dist/utilities/createRelationshipMap.d.ts.map +1 -1
  341. package/dist/utilities/createSchemaGenerator.d.ts.map +1 -1
  342. package/dist/utilities/createSchemaGenerator.js +10 -12
  343. package/dist/utilities/createSchemaGenerator.js.map +1 -1
  344. package/dist/utilities/escapeSQLValue.d.ts.map +1 -1
  345. package/dist/utilities/executeSchemaHooks.d.ts.map +1 -1
  346. package/dist/utilities/executeSchemaHooks.js +1 -1
  347. package/dist/utilities/executeSchemaHooks.js.map +1 -1
  348. package/dist/utilities/extendDrizzleTable.d.ts.map +1 -1
  349. package/dist/utilities/formatGeneratedFile.d.ts +10 -0
  350. package/dist/utilities/formatGeneratedFile.d.ts.map +1 -0
  351. package/dist/utilities/formatGeneratedFile.js +58 -0
  352. package/dist/utilities/formatGeneratedFile.js.map +1 -0
  353. package/dist/utilities/getArrayRelationName.d.ts.map +1 -1
  354. package/dist/utilities/getCollectionIdType.d.ts.map +1 -1
  355. package/dist/utilities/getMigrationTemplate.d.ts.map +1 -1
  356. package/dist/utilities/getNameFromDrizzleTable.d.ts.map +1 -1
  357. package/dist/utilities/getPrimaryDb.d.ts +1 -1
  358. package/dist/utilities/getPrimaryDb.d.ts.map +1 -1
  359. package/dist/utilities/getSizesToVariantsRenames.d.ts +54 -0
  360. package/dist/utilities/getSizesToVariantsRenames.d.ts.map +1 -0
  361. package/dist/utilities/getSizesToVariantsRenames.js +251 -0
  362. package/dist/utilities/getSizesToVariantsRenames.js.map +1 -0
  363. package/dist/utilities/getTransaction.d.ts +1 -1
  364. package/dist/utilities/getTransaction.d.ts.map +1 -1
  365. package/dist/utilities/getTransaction.js.map +1 -1
  366. package/dist/utilities/hasLocalesTable.d.ts.map +1 -1
  367. package/dist/utilities/isPolymorphicRelationship.d.ts.map +1 -1
  368. package/dist/utilities/isUUIDType.d.ts.map +1 -1
  369. package/dist/utilities/json.d.ts.map +1 -1
  370. package/dist/utilities/migrationTableExists.d.ts.map +1 -1
  371. package/dist/utilities/parseError.d.ts.map +1 -1
  372. package/dist/utilities/parseJSONPathSegment.d.ts +9 -0
  373. package/dist/utilities/parseJSONPathSegment.d.ts.map +1 -0
  374. package/dist/utilities/parseJSONPathSegment.js +17 -0
  375. package/dist/utilities/parseJSONPathSegment.js.map +1 -0
  376. package/dist/utilities/pushDevSchema.d.ts.map +1 -1
  377. package/dist/utilities/pushDevSchema.js +1 -1
  378. package/dist/utilities/pushDevSchema.js.map +1 -1
  379. package/dist/utilities/rawConstraint.d.ts.map +1 -1
  380. package/dist/utilities/sanitizePathSegment.d.ts.map +1 -1
  381. package/dist/utilities/validateExistingBlockIsIdentical.d.ts +1 -5
  382. package/dist/utilities/validateExistingBlockIsIdentical.d.ts.map +1 -1
  383. package/dist/utilities/validateExistingBlockIsIdentical.js.map +1 -1
  384. package/dist/utilities/validateIdentifierLength.d.ts +12 -0
  385. package/dist/utilities/validateIdentifierLength.d.ts.map +1 -0
  386. package/dist/utilities/validateIdentifierLength.js +18 -0
  387. package/dist/utilities/validateIdentifierLength.js.map +1 -0
  388. package/package.json +17 -19
  389. package/dist/find/chainMethods.d.ts +0 -20
  390. package/dist/find/chainMethods.d.ts.map +0 -1
  391. package/dist/find/chainMethods.js +0 -16
  392. package/dist/find/chainMethods.js.map +0 -1
  393. package/dist/sqlite/requireDrizzleKit.d.ts +0 -3
  394. package/dist/sqlite/requireDrizzleKit.d.ts.map +0 -1
  395. package/dist/sqlite/requireDrizzleKit.js +0 -12
  396. package/dist/sqlite/requireDrizzleKit.js.map +0 -1
  397. package/dist/utilities/isValidStringID.spec.js +0 -15
  398. package/dist/utilities/isValidStringID.spec.js.map +0 -1
@@ -55,6 +55,7 @@ type Args = {
55
55
  selects: {
56
56
  [tableName: string]: Record<string, unknown>[];
57
57
  };
58
+ selectsToDelete: RowToInsert['selectsToDelete'];
58
59
  texts: Record<string, unknown>[];
59
60
  textsToDelete: TextToDelete[];
60
61
  /**
@@ -63,6 +64,6 @@ type Args = {
63
64
  */
64
65
  withinArrayOrBlockLocale?: string;
65
66
  };
66
- export declare const traverseFields: ({ adapter, arrays, arraysToPush, baseTableName, blocks, blocksToDelete, columnPrefix, data, enableAtomicWrites, existingLocales, fieldPrefix, fields, forcedLocale, insideArrayOrBlock, locales, numbers, numbersToDelete, parentIsLocalized, parentTableName, path, relationships, relationshipsToAppend, relationshipsToDelete, row, selects, texts, textsToDelete, withinArrayOrBlockLocale, }: Args) => void;
67
+ export declare const traverseFields: ({ adapter, arrays, arraysToPush, baseTableName, blocks, blocksToDelete, columnPrefix, data, enableAtomicWrites, existingLocales, fieldPrefix, fields, forcedLocale, insideArrayOrBlock, locales, numbers, numbersToDelete, parentIsLocalized, parentTableName, path, relationships, relationshipsToAppend, relationshipsToDelete, row, selects, selectsToDelete, texts, textsToDelete, withinArrayOrBlockLocale, }: Args) => void;
67
68
  export {};
68
69
  //# sourceMappingURL=traverseFields.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"traverseFields.d.ts","sourceRoot":"","sources":["../../../src/transform/write/traverseFields.ts"],"names":[],"mappings":"AACA,OAAO,EAAY,KAAK,cAAc,EAAE,MAAM,SAAS,CAAA;AAIvD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AACpD,OAAO,KAAK,EACV,cAAc,EACd,oBAAoB,EACpB,oBAAoB,EACpB,WAAW,EACX,YAAY,EACb,MAAM,YAAY,CAAA;AAWnB,KAAK,IAAI,GAAG;IACV,OAAO,EAAE,cAAc,CAAA;IACvB;;OAEG;IACH,MAAM,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAA;IAC7B;;;OAGG;IACH,YAAY,EAAE,WAAW,CAAC,cAAc,CAAC,CAAA;IACzC;;OAEG;IACH,aAAa,EAAE,MAAM,CAAA;IACrB,MAAM,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAA;IAC7B,cAAc,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IAC3B;;;OAGG;IACH,YAAY,EAAE,MAAM,CAAA;IACpB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC7B,kBAAkB,CAAC,EAAE,OAAO,CAAA;IAC5B,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAA;IAC3C;;;OAGG;IACH,WAAW,EAAE,MAAM,CAAA;IACnB,MAAM,EAAE,cAAc,EAAE,CAAA;IACxB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB;;OAEG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAA;IAC5B,OAAO,EAAE;QACP,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAC1C,CAAA;IACD,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAA;IAClC,eAAe,EAAE,cAAc,EAAE,CAAA;IACjC,iBAAiB,EAAE,OAAO,CAAA;IAC1B;;OAEG;IACH,eAAe,EAAE,MAAM,CAAA;IACvB,IAAI,EAAE,MAAM,CAAA;IACZ,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAA;IACxC,qBAAqB,EAAE,oBAAoB,EAAE,CAAA;IAC7C,qBAAqB,EAAE,oBAAoB,EAAE,CAAA;IAC7C,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC5B,OAAO,EAAE;QACP,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAA;KAC/C,CAAA;IACD,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAA;IAChC,aAAa,EAAE,YAAY,EAAE,CAAA;IAC7B;;;OAGG;IACH,wBAAwB,CAAC,EAAE,MAAM,CAAA;CAClC,CAAA;AAED,eAAO,MAAM,cAAc,GAAI,mYA6B5B,IAAI,SAmvBN,CAAA"}
1
+ {"version":3,"file":"traverseFields.d.ts","sourceRoot":"","sources":["../../../src/transform/write/traverseFields.ts"],"names":[],"mappings":"AACA,OAAO,EAAY,KAAK,cAAc,EAAE,MAAM,SAAS,CAAA;AAIvD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AACpD,OAAO,KAAK,EACV,cAAc,EACd,oBAAoB,EACpB,oBAAoB,EACpB,WAAW,EACX,YAAY,EACb,MAAM,YAAY,CAAA;AAWnB,KAAK,IAAI,GAAG;IACV,OAAO,EAAE,cAAc,CAAA;IACvB;;OAEG;IACH,MAAM,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAA;IAC7B;;;OAGG;IACH,YAAY,EAAE,WAAW,CAAC,cAAc,CAAC,CAAA;IACzC;;OAEG;IACH,aAAa,EAAE,MAAM,CAAA;IACrB,MAAM,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAA;IAC7B,cAAc,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IAC3B;;;OAGG;IACH,YAAY,EAAE,MAAM,CAAA;IACpB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC7B,kBAAkB,CAAC,EAAE,OAAO,CAAA;IAC5B,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAA;IAC3C;;;OAGG;IACH,WAAW,EAAE,MAAM,CAAA;IACnB,MAAM,EAAE,cAAc,EAAE,CAAA;IACxB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB;;OAEG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAA;IAC5B,OAAO,EAAE;QACP,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAC1C,CAAA;IACD,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAA;IAClC,eAAe,EAAE,cAAc,EAAE,CAAA;IACjC,iBAAiB,EAAE,OAAO,CAAA;IAC1B;;OAEG;IACH,eAAe,EAAE,MAAM,CAAA;IACvB,IAAI,EAAE,MAAM,CAAA;IACZ,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAA;IACxC,qBAAqB,EAAE,oBAAoB,EAAE,CAAA;IAC7C,qBAAqB,EAAE,oBAAoB,EAAE,CAAA;IAC7C,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC5B,OAAO,EAAE;QACP,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAA;KAC/C,CAAA;IACD,eAAe,EAAE,WAAW,CAAC,iBAAiB,CAAC,CAAA;IAC/C,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAA;IAChC,aAAa,EAAE,YAAY,EAAE,CAAA;IAC7B;;;OAGG;IACH,wBAAwB,CAAC,EAAE,MAAM,CAAA;CAClC,CAAA;AAED,eAAO,MAAM,cAAc,uZA8BxB,IAAI,SAqwBN,CAAA"}
@@ -1,6 +1,6 @@
1
1
  import { sql } from 'drizzle-orm';
2
2
  import { APIError } from 'payload';
3
- import { fieldIsVirtual, fieldShouldBeLocalized } from 'payload/shared';
3
+ import { expandOwnDottedKey, fieldIsVirtual, fieldShouldBeLocalized } from 'payload/shared';
4
4
  import toSnakeCase from 'to-snake-case';
5
5
  import { isArrayOfRows } from '../../utilities/isArrayOfRows.js';
6
6
  import { resolveBlockTableName } from '../../utilities/validateExistingBlockIsIdentical.js';
@@ -10,7 +10,7 @@ import { transformNumbers } from './numbers.js';
10
10
  import { transformRelationship } from './relationships.js';
11
11
  import { transformSelects } from './selects.js';
12
12
  import { transformTexts } from './texts.js';
13
- export const traverseFields = ({ adapter, arrays, arraysToPush, baseTableName, blocks, blocksToDelete, columnPrefix, data, enableAtomicWrites, existingLocales, fieldPrefix, fields, forcedLocale, insideArrayOrBlock = false, locales, numbers, numbersToDelete, parentIsLocalized, parentTableName, path, relationships, relationshipsToAppend, relationshipsToDelete, row, selects, texts, textsToDelete, withinArrayOrBlockLocale })=>{
13
+ export const traverseFields = ({ adapter, arrays, arraysToPush, baseTableName, blocks, blocksToDelete, columnPrefix, data, enableAtomicWrites, existingLocales, fieldPrefix, fields, forcedLocale, insideArrayOrBlock = false, locales, numbers, numbersToDelete, parentIsLocalized, parentTableName, path, relationships, relationshipsToAppend, relationshipsToDelete, row, selects, selectsToDelete, texts, textsToDelete, withinArrayOrBlockLocale })=>{
14
14
  let fieldsMatched = false;
15
15
  if (row._uuid) {
16
16
  data._uuid = row._uuid;
@@ -34,6 +34,9 @@ export const traverseFields = ({ adapter, arrays, arraysToPush, baseTableName, b
34
34
  parentIsLocalized
35
35
  });
36
36
  if (field.type === 'array') {
37
+ if (fieldData === undefined) {
38
+ return;
39
+ }
37
40
  const arrayTableName = adapter.tableNameMap.get(`${parentTableName}_${columnName}`);
38
41
  if (isLocalized) {
39
42
  const value = data[field.name];
@@ -67,6 +70,7 @@ export const traverseFields = ({ adapter, arrays, arraysToPush, baseTableName, b
67
70
  relationships,
68
71
  relationshipsToDelete,
69
72
  selects,
73
+ selectsToDelete,
70
74
  texts,
71
75
  textsToDelete,
72
76
  withinArrayOrBlockLocale: localeKey
@@ -109,6 +113,7 @@ export const traverseFields = ({ adapter, arrays, arraysToPush, baseTableName, b
109
113
  relationships,
110
114
  relationshipsToDelete,
111
115
  selects,
116
+ selectsToDelete,
112
117
  texts,
113
118
  textsToDelete,
114
119
  withinArrayOrBlockLocale
@@ -128,8 +133,10 @@ export const traverseFields = ({ adapter, arrays, arraysToPush, baseTableName, b
128
133
  return;
129
134
  }
130
135
  if (field.type === 'blocks' && !adapter.blocksAsJSON) {
131
- ;
132
- (field.blockReferences ?? field.blocks).forEach((block)=>{
136
+ if (fieldData === undefined) {
137
+ return;
138
+ }
139
+ field.blocks.forEach((block)=>{
133
140
  const matchedBlock = typeof block === 'string' ? adapter.payload.config.blocks.find((each)=>each.slug === block) : block;
134
141
  blocksToDelete.add(resolveBlockTableName(matchedBlock, adapter.tableNameMap.get(`${baseTableName}_blocks_${toSnakeCase(matchedBlock.slug)}`)));
135
142
  });
@@ -152,6 +159,7 @@ export const traverseFields = ({ adapter, arrays, arraysToPush, baseTableName, b
152
159
  relationships,
153
160
  relationshipsToDelete,
154
161
  selects,
162
+ selectsToDelete,
155
163
  texts,
156
164
  textsToDelete,
157
165
  withinArrayOrBlockLocale: localeKey
@@ -174,6 +182,7 @@ export const traverseFields = ({ adapter, arrays, arraysToPush, baseTableName, b
174
182
  relationships,
175
183
  relationshipsToDelete,
176
184
  selects,
185
+ selectsToDelete,
177
186
  texts,
178
187
  textsToDelete,
179
188
  withinArrayOrBlockLocale
@@ -213,6 +222,7 @@ export const traverseFields = ({ adapter, arrays, arraysToPush, baseTableName, b
213
222
  relationshipsToDelete,
214
223
  row,
215
224
  selects,
225
+ selectsToDelete,
216
226
  texts,
217
227
  textsToDelete,
218
228
  withinArrayOrBlockLocale: localeKey
@@ -248,6 +258,7 @@ export const traverseFields = ({ adapter, arrays, arraysToPush, baseTableName, b
248
258
  relationshipsToDelete,
249
259
  row,
250
260
  selects,
261
+ selectsToDelete,
251
262
  texts,
252
263
  textsToDelete,
253
264
  withinArrayOrBlockLocale
@@ -299,7 +310,7 @@ export const traverseFields = ({ adapter, arrays, arraysToPush, baseTableName, b
299
310
  ];
300
311
  itemsToAppend.forEach((item)=>{
301
312
  const relationshipToAppend = {
302
- locale: isLocalized ? withinArrayOrBlockLocale : undefined,
313
+ locale: withinArrayOrBlockLocale,
303
314
  path: relationshipPath,
304
315
  value: item
305
316
  };
@@ -354,7 +365,7 @@ export const traverseFields = ({ adapter, arrays, arraysToPush, baseTableName, b
354
365
  itemsToRemove.forEach((item)=>{
355
366
  const relationshipToDelete = {
356
367
  itemToRemove: item,
357
- locale: isLocalized ? withinArrayOrBlockLocale : undefined,
368
+ locale: withinArrayOrBlockLocale,
358
369
  path: relationshipPath
359
370
  };
360
371
  // Store relationTo for simple relationships
@@ -369,7 +380,7 @@ export const traverseFields = ({ adapter, arrays, arraysToPush, baseTableName, b
369
380
  if (isLocalized && (Array.isArray(field.relationTo) || 'hasMany' in field && field.hasMany)) {
370
381
  if (typeof fieldData === 'object') {
371
382
  Object.entries(fieldData).forEach(([localeKey, localeData])=>{
372
- if (localeData === null) {
383
+ if (localeData === null || Array.isArray(localeData) && localeData.length === 0) {
373
384
  relationshipsToDelete.push({
374
385
  locale: localeKey,
375
386
  path: relationshipPath
@@ -391,6 +402,7 @@ export const traverseFields = ({ adapter, arrays, arraysToPush, baseTableName, b
391
402
  } else if (Array.isArray(field.relationTo) || 'hasMany' in field && field.hasMany) {
392
403
  if (fieldData === null || Array.isArray(fieldData) && fieldData.length === 0) {
393
404
  relationshipsToDelete.push({
405
+ locale: withinArrayOrBlockLocale,
394
406
  path: relationshipPath
395
407
  });
396
408
  return;
@@ -510,16 +522,27 @@ export const traverseFields = ({ adapter, arrays, arraysToPush, baseTableName, b
510
522
  return;
511
523
  }
512
524
  if (field.type === 'select' && field.hasMany) {
525
+ if (fieldData === undefined) {
526
+ return;
527
+ }
513
528
  const selectTableName = adapter.tableNameMap.get(`${parentTableName}_${columnName}`);
514
529
  if (!selects[selectTableName]) {
515
530
  selects[selectTableName] = [];
516
531
  }
532
+ if (!selectsToDelete[selectTableName]) {
533
+ selectsToDelete[selectTableName] = [];
534
+ }
535
+ const selectParent = insideArrayOrBlock ? data._uuid ?? data.id : undefined;
517
536
  if (isLocalized) {
518
537
  if (typeof data[field.name] === 'object' && data[field.name] !== null) {
519
538
  Object.entries(data[field.name]).forEach(([localeKey, localeData])=>{
520
539
  if (Array.isArray(localeData)) {
540
+ selectsToDelete[selectTableName].push({
541
+ locale: localeKey,
542
+ parent: selectParent
543
+ });
521
544
  const newRows = transformSelects({
522
- id: insideArrayOrBlock ? data._uuid || data.id : undefined,
545
+ id: selectParent,
523
546
  data: localeData,
524
547
  locale: localeKey
525
548
  });
@@ -528,8 +551,12 @@ export const traverseFields = ({ adapter, arrays, arraysToPush, baseTableName, b
528
551
  });
529
552
  }
530
553
  } else if (Array.isArray(data[field.name])) {
554
+ selectsToDelete[selectTableName].push({
555
+ locale: withinArrayOrBlockLocale,
556
+ parent: selectParent
557
+ });
531
558
  const newRows = transformSelects({
532
- id: insideArrayOrBlock ? data._uuid || data.id : undefined,
559
+ id: selectParent,
533
560
  data: data[field.name],
534
561
  locale: withinArrayOrBlockLocale
535
562
  });
@@ -608,19 +635,10 @@ export const traverseFields = ({ adapter, arrays, arraysToPush, baseTableName, b
608
635
  // Handle dot-notation paths when no fields matched
609
636
  if (!fieldsMatched) {
610
637
  Object.keys(data).forEach((key)=>{
611
- if (key.includes('.')) {
612
- // Split on first dot only
613
- const firstDotIndex = key.indexOf('.');
614
- const fieldName = key.substring(0, firstDotIndex);
615
- const remainingPath = key.substring(firstDotIndex + 1);
616
- // Create nested structure for this field
617
- if (!data[fieldName]) {
618
- data[fieldName] = {};
619
- }
620
- const nestedData = data[fieldName];
621
- // Move the value to the nested structure
622
- nestedData[remainingPath] = data[key];
623
- delete data[key];
638
+ if (expandOwnDottedKey({
639
+ key,
640
+ target: data
641
+ })) {
624
642
  // Recursively process the newly created nested structure
625
643
  // The field traversal will naturally handle it if the field exists in the schema
626
644
  traverseFields({
@@ -649,6 +667,7 @@ export const traverseFields = ({ adapter, arrays, arraysToPush, baseTableName, b
649
667
  relationshipsToDelete,
650
668
  row,
651
669
  selects,
670
+ selectsToDelete,
652
671
  texts,
653
672
  textsToDelete,
654
673
  withinArrayOrBlockLocale
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/transform/write/traverseFields.ts"],"sourcesContent":["import { sql } from 'drizzle-orm'\nimport { APIError, type FlattenedField } from 'payload'\nimport { fieldIsVirtual, fieldShouldBeLocalized } from 'payload/shared'\nimport toSnakeCase from 'to-snake-case'\n\nimport type { DrizzleAdapter } from '../../types.js'\nimport type {\n NumberToDelete,\n RelationshipToAppend,\n RelationshipToDelete,\n RowToInsert,\n TextToDelete,\n} from './types.js'\n\nimport { isArrayOfRows } from '../../utilities/isArrayOfRows.js'\nimport { resolveBlockTableName } from '../../utilities/validateExistingBlockIsIdentical.js'\nimport { transformArray } from './array.js'\nimport { transformBlocks } from './blocks.js'\nimport { transformNumbers } from './numbers.js'\nimport { transformRelationship } from './relationships.js'\nimport { transformSelects } from './selects.js'\nimport { transformTexts } from './texts.js'\n\ntype Args = {\n adapter: DrizzleAdapter\n /**\n * This will delete the array table and then re-insert all the new array rows.\n */\n arrays: RowToInsert['arrays']\n /**\n * Array rows to push to the existing array. This will simply create\n * a new row in the array table.\n */\n arraysToPush: RowToInsert['arraysToPush']\n /**\n * This is the name of the base table\n */\n baseTableName: string\n blocks: RowToInsert['blocks']\n blocksToDelete: Set<string>\n /**\n * A snake-case field prefix, representing prior fields\n * Ex: my_group_my_named_tab_\n */\n columnPrefix: string\n data: Record<string, unknown>\n enableAtomicWrites?: boolean\n existingLocales?: Record<string, unknown>[]\n /**\n * A prefix that will retain camel-case formatting, representing prior fields\n * Ex: myGroup_myNamedTab_\n */\n fieldPrefix: string\n fields: FlattenedField[]\n forcedLocale?: string\n /**\n * Tracks whether the current traversion context is from array or block.\n */\n insideArrayOrBlock?: boolean\n locales: {\n [locale: string]: Record<string, unknown>\n }\n numbers: Record<string, unknown>[]\n numbersToDelete: NumberToDelete[]\n parentIsLocalized: boolean\n /**\n * This is the name of the parent table\n */\n parentTableName: string\n path: string\n relationships: Record<string, unknown>[]\n relationshipsToAppend: RelationshipToAppend[]\n relationshipsToDelete: RelationshipToDelete[]\n row: Record<string, unknown>\n selects: {\n [tableName: string]: Record<string, unknown>[]\n }\n texts: Record<string, unknown>[]\n textsToDelete: TextToDelete[]\n /**\n * Set to a locale code if this set of fields is traversed within a\n * localized array or block field\n */\n withinArrayOrBlockLocale?: string\n}\n\nexport const traverseFields = ({\n adapter,\n arrays,\n arraysToPush,\n baseTableName,\n blocks,\n blocksToDelete,\n columnPrefix,\n data,\n enableAtomicWrites,\n existingLocales,\n fieldPrefix,\n fields,\n forcedLocale,\n insideArrayOrBlock = false,\n locales,\n numbers,\n numbersToDelete,\n parentIsLocalized,\n parentTableName,\n path,\n relationships,\n relationshipsToAppend,\n relationshipsToDelete,\n row,\n selects,\n texts,\n textsToDelete,\n withinArrayOrBlockLocale,\n}: Args) => {\n let fieldsMatched = false\n\n if (row._uuid) {\n data._uuid = row._uuid\n }\n\n fields.forEach((field) => {\n let columnName = ''\n let fieldName = ''\n let fieldData: unknown\n\n if (fieldIsVirtual(field)) {\n return\n }\n\n // Mark that we found a matching field\n if (data[field.name] !== undefined) {\n fieldsMatched = true\n }\n\n columnName = `${columnPrefix || ''}${toSnakeCase(field.name)}`\n fieldName = `${fieldPrefix || ''}${field.name}`\n fieldData = data[field.name]\n\n const isLocalized = fieldShouldBeLocalized({ field, parentIsLocalized })\n\n if (field.type === 'array') {\n const arrayTableName = adapter.tableNameMap.get(`${parentTableName}_${columnName}`)\n\n if (isLocalized) {\n const value = data[field.name]\n\n if (typeof value === 'object' && value !== null) {\n Object.entries(value).forEach(([localeKey, localeValue]) => {\n let localeData = localeValue\n let push = false\n\n if (localeValue && typeof localeValue === 'object' && '$push' in localeValue) {\n localeData = localeValue.$push\n push = true\n if (!Array.isArray(localeData)) {\n localeData = [localeData]\n }\n }\n\n if (Array.isArray(localeData)) {\n const newRows = transformArray({\n adapter,\n arrayTableName,\n baseTableName,\n blocks,\n blocksToDelete,\n data: localeData,\n field,\n locale: localeKey,\n numbers,\n numbersToDelete,\n parentIsLocalized: parentIsLocalized || field.localized,\n path,\n relationships,\n relationshipsToDelete,\n selects,\n texts,\n textsToDelete,\n withinArrayOrBlockLocale: localeKey,\n })\n\n if (push) {\n if (!arraysToPush[arrayTableName]) {\n arraysToPush[arrayTableName] = []\n }\n arraysToPush[arrayTableName] = arraysToPush[arrayTableName].concat(newRows)\n } else {\n if (!arrays[arrayTableName]) {\n arrays[arrayTableName] = []\n }\n arrays[arrayTableName] = arrays[arrayTableName].concat(newRows)\n }\n }\n })\n }\n } else {\n let value = data[field.name]\n let push = false\n if (typeof value === 'object' && '$push' in value) {\n value = Array.isArray(value.$push) ? value.$push : [value.$push]\n push = true\n }\n\n const newRows = transformArray({\n adapter,\n arrayTableName,\n baseTableName,\n blocks,\n blocksToDelete,\n data: value,\n field,\n numbers,\n numbersToDelete,\n parentIsLocalized: parentIsLocalized || field.localized,\n path,\n relationships,\n relationshipsToDelete,\n selects,\n texts,\n textsToDelete,\n withinArrayOrBlockLocale,\n })\n\n if (push) {\n if (!arraysToPush[arrayTableName]) {\n arraysToPush[arrayTableName] = []\n }\n arraysToPush[arrayTableName] = arraysToPush[arrayTableName].concat(newRows)\n } else {\n if (!arrays[arrayTableName]) {\n arrays[arrayTableName] = []\n }\n arrays[arrayTableName] = arrays[arrayTableName].concat(newRows)\n }\n }\n\n return\n }\n\n if (field.type === 'blocks' && !adapter.blocksAsJSON) {\n ;(field.blockReferences ?? field.blocks).forEach((block) => {\n const matchedBlock =\n typeof block === 'string'\n ? adapter.payload.config.blocks.find((each) => each.slug === block)\n : block\n\n blocksToDelete.add(\n resolveBlockTableName(\n matchedBlock,\n adapter.tableNameMap.get(`${baseTableName}_blocks_${toSnakeCase(matchedBlock.slug)}`),\n ),\n )\n })\n\n if (isLocalized) {\n if (typeof data[field.name] === 'object' && data[field.name] !== null) {\n Object.entries(data[field.name]).forEach(([localeKey, localeData]) => {\n if (Array.isArray(localeData)) {\n transformBlocks({\n adapter,\n baseTableName,\n blocks,\n blocksToDelete,\n data: localeData,\n field,\n locale: localeKey,\n numbers,\n numbersToDelete,\n parentIsLocalized: parentIsLocalized || field.localized,\n path,\n relationships,\n relationshipsToDelete,\n selects,\n texts,\n textsToDelete,\n withinArrayOrBlockLocale: localeKey,\n })\n }\n })\n }\n } else if (isArrayOfRows(fieldData)) {\n transformBlocks({\n adapter,\n baseTableName,\n blocks,\n blocksToDelete,\n data: fieldData,\n field,\n numbers,\n numbersToDelete,\n parentIsLocalized: parentIsLocalized || field.localized,\n path,\n relationships,\n relationshipsToDelete,\n selects,\n texts,\n textsToDelete,\n withinArrayOrBlockLocale,\n })\n }\n\n return\n }\n\n if (field.type === 'group' || field.type === 'tab') {\n if (typeof data[field.name] === 'object' && data[field.name] !== null) {\n if (isLocalized) {\n Object.entries(data[field.name]).forEach(([localeKey, localeData]) => {\n // preserve array ID if there is\n localeData._uuid = data.id || data._uuid\n\n traverseFields({\n adapter,\n arrays,\n arraysToPush,\n baseTableName,\n blocks,\n blocksToDelete,\n columnPrefix: `${columnName}_`,\n data: localeData as Record<string, unknown>,\n enableAtomicWrites,\n existingLocales,\n fieldPrefix: `${fieldName}_`,\n fields: field.flattenedFields,\n forcedLocale: localeKey,\n insideArrayOrBlock,\n locales,\n numbers,\n numbersToDelete,\n parentIsLocalized: parentIsLocalized || field.localized,\n parentTableName,\n path: `${path || ''}${field.name}.`,\n relationships,\n relationshipsToAppend,\n relationshipsToDelete,\n row,\n selects,\n texts,\n textsToDelete,\n withinArrayOrBlockLocale: localeKey,\n })\n })\n } else {\n // preserve array ID if there is\n const groupData = data[field.name] as Record<string, unknown>\n groupData._uuid = data.id || data._uuid\n\n traverseFields({\n adapter,\n arrays,\n arraysToPush,\n baseTableName,\n blocks,\n blocksToDelete,\n columnPrefix: `${columnName}_`,\n data: groupData,\n enableAtomicWrites,\n existingLocales,\n fieldPrefix: `${fieldName}_`,\n fields: field.flattenedFields,\n forcedLocale,\n insideArrayOrBlock,\n locales,\n numbers,\n numbersToDelete,\n parentIsLocalized: parentIsLocalized || field.localized,\n parentTableName,\n path: `${path || ''}${field.name}.`,\n relationships,\n relationshipsToAppend,\n relationshipsToDelete,\n row,\n selects,\n texts,\n textsToDelete,\n withinArrayOrBlockLocale,\n })\n }\n }\n\n return\n }\n\n if (field.type === 'relationship' || field.type === 'upload') {\n const relationshipPath = `${path || ''}${field.name}`\n\n // Handle $push operation for relationship fields\n if (\n fieldData &&\n typeof fieldData === 'object' &&\n 'hasMany' in field &&\n field.hasMany &&\n ('$push' in fieldData ||\n (field.localized &&\n Object.values(fieldData).some(\n (localeValue) =>\n localeValue &&\n typeof localeValue === 'object' &&\n '$push' in (localeValue as Record<string, unknown>),\n )))\n ) {\n let itemsToAppend: unknown[]\n\n if (field.localized) {\n let hasLocaleOperations = false\n Object.entries(fieldData).forEach(([localeKey, localeValue]) => {\n if (localeValue && typeof localeValue === 'object' && '$push' in localeValue) {\n hasLocaleOperations = true\n const push = localeValue.$push\n const localeItems = Array.isArray(push) ? push : [push]\n\n localeItems.forEach((item) => {\n const relationshipToAppend: RelationshipToAppend = {\n locale: localeKey,\n path: relationshipPath,\n value: item,\n }\n\n // Handle polymorphic relationships\n if (\n Array.isArray(field.relationTo) &&\n item &&\n typeof item === 'object' &&\n 'relationTo' in item\n ) {\n relationshipToAppend.relationTo = item.relationTo\n relationshipToAppend.value = item.value\n } else if (typeof field.relationTo === 'string') {\n // Simple relationship\n relationshipToAppend.relationTo = field.relationTo\n relationshipToAppend.value = item\n }\n\n relationshipsToAppend.push(relationshipToAppend)\n })\n }\n })\n\n if (hasLocaleOperations) {\n return\n }\n } else {\n // Handle non-localized fields: { field: { $push: data } }\n itemsToAppend = Array.isArray((fieldData as any).$push)\n ? (fieldData as any).$push\n : [(fieldData as any).$push]\n\n itemsToAppend.forEach((item) => {\n const relationshipToAppend: RelationshipToAppend = {\n locale: isLocalized ? withinArrayOrBlockLocale : undefined,\n path: relationshipPath,\n value: item,\n }\n\n // Handle polymorphic relationships\n if (\n Array.isArray(field.relationTo) &&\n item &&\n typeof item === 'object' &&\n 'relationTo' in item &&\n 'value' in item\n ) {\n relationshipToAppend.relationTo = item.relationTo as string\n relationshipToAppend.value = item.value as number | string\n } else if (typeof field.relationTo === 'string') {\n // Simple relationship\n relationshipToAppend.relationTo = field.relationTo\n relationshipToAppend.value = item\n }\n\n relationshipsToAppend.push(relationshipToAppend)\n })\n }\n return\n }\n\n // Handle $remove operation for relationship fields\n if (\n fieldData &&\n typeof fieldData === 'object' &&\n 'hasMany' in field &&\n field.hasMany &&\n ('$remove' in fieldData ||\n (field.localized &&\n Object.values(fieldData).some(\n (localeValue) =>\n localeValue &&\n typeof localeValue === 'object' &&\n '$remove' in (localeValue as Record<string, unknown>),\n )))\n ) {\n // Check for new locale-first syntax: { field: { locale: { $remove: data } } }\n if (field.localized) {\n let hasLocaleOperations = false\n Object.entries(fieldData).forEach(([localeKey, localeValue]) => {\n if (localeValue && typeof localeValue === 'object' && '$remove' in localeValue) {\n hasLocaleOperations = true\n const remove = localeValue.$remove\n const localeItems = Array.isArray(remove) ? remove : [remove]\n\n localeItems.forEach((item) => {\n const relationshipToDelete: RelationshipToDelete = {\n itemToRemove: item,\n locale: localeKey,\n path: relationshipPath,\n }\n\n // Store relationTo for simple relationships\n if (typeof field.relationTo === 'string') {\n relationshipToDelete.relationTo = field.relationTo\n }\n\n relationshipsToDelete.push(relationshipToDelete)\n })\n }\n })\n\n if (hasLocaleOperations) {\n return\n }\n } else {\n // Handle non-localized fields: { field: { $remove: data } }\n const itemsToRemove = Array.isArray((fieldData as any).$remove)\n ? (fieldData as any).$remove\n : [(fieldData as any).$remove]\n\n itemsToRemove.forEach((item) => {\n const relationshipToDelete: RelationshipToDelete = {\n itemToRemove: item,\n locale: isLocalized ? withinArrayOrBlockLocale : undefined,\n path: relationshipPath,\n }\n\n // Store relationTo for simple relationships\n if (typeof field.relationTo === 'string') {\n relationshipToDelete.relationTo = field.relationTo\n }\n\n relationshipsToDelete.push(relationshipToDelete)\n })\n }\n return\n }\n\n if (\n isLocalized &&\n (Array.isArray(field.relationTo) || ('hasMany' in field && field.hasMany))\n ) {\n if (typeof fieldData === 'object') {\n Object.entries(fieldData).forEach(([localeKey, localeData]) => {\n if (localeData === null) {\n relationshipsToDelete.push({\n locale: localeKey,\n path: relationshipPath,\n })\n return\n }\n\n transformRelationship({\n baseRow: {\n locale: localeKey,\n path: relationshipPath,\n },\n data: localeData,\n field,\n relationships,\n })\n })\n }\n return\n } else if (Array.isArray(field.relationTo) || ('hasMany' in field && field.hasMany)) {\n if (fieldData === null || (Array.isArray(fieldData) && fieldData.length === 0)) {\n relationshipsToDelete.push({ path: relationshipPath })\n return\n }\n\n transformRelationship({\n baseRow: {\n locale: withinArrayOrBlockLocale,\n path: relationshipPath,\n },\n data: fieldData,\n field,\n relationships,\n })\n return\n } else {\n if (\n !isLocalized &&\n fieldData &&\n typeof fieldData === 'object' &&\n 'id' in fieldData &&\n fieldData?.id\n ) {\n fieldData = fieldData.id\n } else if (isLocalized) {\n if (typeof fieldData === 'object') {\n Object.entries(fieldData).forEach(([localeKey, localeData]) => {\n if (typeof localeData === 'object') {\n if (localeData && 'id' in localeData && localeData?.id) {\n fieldData[localeKey] = localeData.id\n }\n } else {\n fieldData[localeKey] = localeData\n }\n })\n }\n }\n }\n }\n\n if (field.type === 'text' && field.hasMany) {\n const textPath = `${path || ''}${field.name}`\n\n if (isLocalized) {\n if (typeof fieldData === 'object') {\n Object.entries(fieldData).forEach(([localeKey, localeData]) => {\n if (Array.isArray(localeData)) {\n if (!localeData.length) {\n textsToDelete.push({ locale: localeKey, path: textPath })\n return\n }\n\n transformTexts({\n baseRow: {\n locale: localeKey,\n path: textPath,\n },\n data: localeData,\n texts,\n })\n }\n })\n }\n } else if (Array.isArray(fieldData)) {\n if (!fieldData.length) {\n textsToDelete.push({ locale: withinArrayOrBlockLocale, path: textPath })\n return\n }\n\n transformTexts({\n baseRow: {\n locale: withinArrayOrBlockLocale,\n path: textPath,\n },\n data: fieldData,\n texts,\n })\n }\n\n return\n }\n\n if (field.type === 'number' && field.hasMany) {\n const numberPath = `${path || ''}${field.name}`\n\n if (isLocalized) {\n if (typeof fieldData === 'object') {\n Object.entries(fieldData).forEach(([localeKey, localeData]) => {\n if (Array.isArray(localeData)) {\n if (!localeData.length) {\n numbersToDelete.push({ locale: localeKey, path: numberPath })\n return\n }\n\n transformNumbers({\n baseRow: {\n locale: localeKey,\n path: numberPath,\n },\n data: localeData,\n numbers,\n })\n }\n })\n }\n } else if (Array.isArray(fieldData)) {\n if (!fieldData.length) {\n numbersToDelete.push({ locale: withinArrayOrBlockLocale, path: numberPath })\n return\n }\n\n transformNumbers({\n baseRow: {\n locale: withinArrayOrBlockLocale,\n path: numberPath,\n },\n data: fieldData,\n numbers,\n })\n }\n\n return\n }\n\n if (field.type === 'select' && field.hasMany) {\n const selectTableName = adapter.tableNameMap.get(`${parentTableName}_${columnName}`)\n if (!selects[selectTableName]) {\n selects[selectTableName] = []\n }\n\n if (isLocalized) {\n if (typeof data[field.name] === 'object' && data[field.name] !== null) {\n Object.entries(data[field.name]).forEach(([localeKey, localeData]) => {\n if (Array.isArray(localeData)) {\n const newRows = transformSelects({\n id: insideArrayOrBlock ? data._uuid || data.id : undefined,\n data: localeData,\n locale: localeKey,\n })\n\n selects[selectTableName] = selects[selectTableName].concat(newRows)\n }\n })\n }\n } else if (Array.isArray(data[field.name])) {\n const newRows = transformSelects({\n id: insideArrayOrBlock ? data._uuid || data.id : undefined,\n data: data[field.name],\n locale: withinArrayOrBlockLocale,\n })\n\n selects[selectTableName] = selects[selectTableName].concat(newRows)\n }\n\n return\n }\n\n const valuesToTransform: { localeKey?: string; ref: unknown; value: unknown }[] = []\n\n if (isLocalized) {\n if (typeof fieldData === 'object' && fieldData !== null) {\n Object.entries(fieldData).forEach(([localeKey, localeData]) => {\n if (!locales[localeKey]) {\n locales[localeKey] = {}\n }\n\n valuesToTransform.push({\n localeKey,\n ref: locales,\n value: localeData,\n })\n })\n }\n } else {\n let ref = row\n\n if (forcedLocale) {\n if (!locales[forcedLocale]) {\n locales[forcedLocale] = {}\n }\n ref = locales[forcedLocale]\n }\n\n valuesToTransform.push({ ref, value: fieldData })\n }\n\n valuesToTransform.forEach(({ localeKey, ref, value }) => {\n let formattedValue = value\n\n if (field.type === 'date') {\n if (fieldName === 'updatedAt' && formattedValue === null) {\n // If updatedAt is explicitly set to null, skip it entirely - don't add to row\n // This prevents the timestamp from being updated for session-only operations\n return // Skip this iteration\n } else if (fieldName === 'updatedAt' && typeof formattedValue === 'undefined') {\n // If updatedAt is undefined, set it to current time (normal behavior)\n formattedValue = new Date().toISOString()\n } else {\n if (typeof value === 'number' && !Number.isNaN(value)) {\n formattedValue = new Date(value).toISOString()\n } else if (value instanceof Date) {\n formattedValue = value.toISOString()\n }\n }\n }\n\n if (typeof value !== 'undefined') {\n if (value && field.type === 'point' && adapter.name !== 'sqlite') {\n formattedValue = sql`ST_GeomFromGeoJSON(${JSON.stringify(value)})`\n }\n\n if (field.type === 'text' && value && typeof value !== 'string') {\n formattedValue = JSON.stringify(value)\n }\n\n if (\n field.type === 'number' &&\n value &&\n typeof value === 'object' &&\n '$inc' in value &&\n typeof value.$inc === 'number'\n ) {\n if (!enableAtomicWrites) {\n throw new APIError(\n 'The passed data must not contain any nested fields for atomic writes',\n )\n }\n\n formattedValue = sql.raw(`${columnName} + ${value.$inc}`)\n }\n }\n\n if (typeof formattedValue !== 'undefined') {\n if (localeKey) {\n ref[localeKey][fieldName] = formattedValue\n } else {\n ref[fieldName] = formattedValue\n }\n }\n })\n })\n\n // Handle dot-notation paths when no fields matched\n if (!fieldsMatched) {\n Object.keys(data).forEach((key) => {\n if (key.includes('.')) {\n // Split on first dot only\n const firstDotIndex = key.indexOf('.')\n const fieldName = key.substring(0, firstDotIndex)\n const remainingPath = key.substring(firstDotIndex + 1)\n\n // Create nested structure for this field\n if (!data[fieldName]) {\n data[fieldName] = {}\n }\n\n const nestedData = data[fieldName] as Record<string, unknown>\n\n // Move the value to the nested structure\n nestedData[remainingPath] = data[key]\n delete data[key]\n\n // Recursively process the newly created nested structure\n // The field traversal will naturally handle it if the field exists in the schema\n traverseFields({\n adapter,\n arrays,\n arraysToPush,\n baseTableName,\n blocks,\n blocksToDelete,\n columnPrefix,\n data,\n enableAtomicWrites,\n existingLocales,\n fieldPrefix,\n fields,\n forcedLocale,\n insideArrayOrBlock,\n locales,\n numbers,\n numbersToDelete,\n parentIsLocalized,\n parentTableName,\n path,\n relationships,\n relationshipsToAppend,\n relationshipsToDelete,\n row,\n selects,\n texts,\n textsToDelete,\n withinArrayOrBlockLocale,\n })\n }\n })\n }\n}\n"],"names":["sql","APIError","fieldIsVirtual","fieldShouldBeLocalized","toSnakeCase","isArrayOfRows","resolveBlockTableName","transformArray","transformBlocks","transformNumbers","transformRelationship","transformSelects","transformTexts","traverseFields","adapter","arrays","arraysToPush","baseTableName","blocks","blocksToDelete","columnPrefix","data","enableAtomicWrites","existingLocales","fieldPrefix","fields","forcedLocale","insideArrayOrBlock","locales","numbers","numbersToDelete","parentIsLocalized","parentTableName","path","relationships","relationshipsToAppend","relationshipsToDelete","row","selects","texts","textsToDelete","withinArrayOrBlockLocale","fieldsMatched","_uuid","forEach","field","columnName","fieldName","fieldData","name","undefined","isLocalized","type","arrayTableName","tableNameMap","get","value","Object","entries","localeKey","localeValue","localeData","push","$push","Array","isArray","newRows","locale","localized","concat","blocksAsJSON","blockReferences","block","matchedBlock","payload","config","find","each","slug","add","id","flattenedFields","groupData","relationshipPath","hasMany","values","some","itemsToAppend","hasLocaleOperations","localeItems","item","relationshipToAppend","relationTo","remove","$remove","relationshipToDelete","itemToRemove","itemsToRemove","baseRow","length","textPath","numberPath","selectTableName","valuesToTransform","ref","formattedValue","Date","toISOString","Number","isNaN","JSON","stringify","$inc","raw","keys","key","includes","firstDotIndex","indexOf","substring","remainingPath","nestedData"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../src/transform/write/traverseFields.ts"],"sourcesContent":["import { sql } from 'drizzle-orm'\nimport { APIError, type FlattenedField } from 'payload'\nimport { expandOwnDottedKey, fieldIsVirtual, fieldShouldBeLocalized } from 'payload/shared'\nimport toSnakeCase from 'to-snake-case'\n\nimport type { DrizzleAdapter } from '../../types.js'\nimport type {\n NumberToDelete,\n RelationshipToAppend,\n RelationshipToDelete,\n RowToInsert,\n TextToDelete,\n} from './types.js'\n\nimport { isArrayOfRows } from '../../utilities/isArrayOfRows.js'\nimport { resolveBlockTableName } from '../../utilities/validateExistingBlockIsIdentical.js'\nimport { transformArray } from './array.js'\nimport { transformBlocks } from './blocks.js'\nimport { transformNumbers } from './numbers.js'\nimport { transformRelationship } from './relationships.js'\nimport { transformSelects } from './selects.js'\nimport { transformTexts } from './texts.js'\n\ntype Args = {\n adapter: DrizzleAdapter\n /**\n * This will delete the array table and then re-insert all the new array rows.\n */\n arrays: RowToInsert['arrays']\n /**\n * Array rows to push to the existing array. This will simply create\n * a new row in the array table.\n */\n arraysToPush: RowToInsert['arraysToPush']\n /**\n * This is the name of the base table\n */\n baseTableName: string\n blocks: RowToInsert['blocks']\n blocksToDelete: Set<string>\n /**\n * A snake-case field prefix, representing prior fields\n * Ex: my_group_my_named_tab_\n */\n columnPrefix: string\n data: Record<string, unknown>\n enableAtomicWrites?: boolean\n existingLocales?: Record<string, unknown>[]\n /**\n * A prefix that will retain camel-case formatting, representing prior fields\n * Ex: myGroup_myNamedTab_\n */\n fieldPrefix: string\n fields: FlattenedField[]\n forcedLocale?: string\n /**\n * Tracks whether the current traversion context is from array or block.\n */\n insideArrayOrBlock?: boolean\n locales: {\n [locale: string]: Record<string, unknown>\n }\n numbers: Record<string, unknown>[]\n numbersToDelete: NumberToDelete[]\n parentIsLocalized: boolean\n /**\n * This is the name of the parent table\n */\n parentTableName: string\n path: string\n relationships: Record<string, unknown>[]\n relationshipsToAppend: RelationshipToAppend[]\n relationshipsToDelete: RelationshipToDelete[]\n row: Record<string, unknown>\n selects: {\n [tableName: string]: Record<string, unknown>[]\n }\n selectsToDelete: RowToInsert['selectsToDelete']\n texts: Record<string, unknown>[]\n textsToDelete: TextToDelete[]\n /**\n * Set to a locale code if this set of fields is traversed within a\n * localized array or block field\n */\n withinArrayOrBlockLocale?: string\n}\n\nexport const traverseFields = ({\n adapter,\n arrays,\n arraysToPush,\n baseTableName,\n blocks,\n blocksToDelete,\n columnPrefix,\n data,\n enableAtomicWrites,\n existingLocales,\n fieldPrefix,\n fields,\n forcedLocale,\n insideArrayOrBlock = false,\n locales,\n numbers,\n numbersToDelete,\n parentIsLocalized,\n parentTableName,\n path,\n relationships,\n relationshipsToAppend,\n relationshipsToDelete,\n row,\n selects,\n selectsToDelete,\n texts,\n textsToDelete,\n withinArrayOrBlockLocale,\n}: Args) => {\n let fieldsMatched = false\n\n if (row._uuid) {\n data._uuid = row._uuid\n }\n\n fields.forEach((field) => {\n let columnName = ''\n let fieldName = ''\n let fieldData: unknown\n\n if (fieldIsVirtual(field)) {\n return\n }\n\n // Mark that we found a matching field\n if (data[field.name] !== undefined) {\n fieldsMatched = true\n }\n\n columnName = `${columnPrefix || ''}${toSnakeCase(field.name)}`\n fieldName = `${fieldPrefix || ''}${field.name}`\n fieldData = data[field.name]\n\n const isLocalized = fieldShouldBeLocalized({ field, parentIsLocalized })\n\n if (field.type === 'array') {\n if (fieldData === undefined) {\n return\n }\n\n const arrayTableName = adapter.tableNameMap.get(`${parentTableName}_${columnName}`)\n\n if (isLocalized) {\n const value = data[field.name]\n\n if (typeof value === 'object' && value !== null) {\n Object.entries(value).forEach(([localeKey, localeValue]) => {\n let localeData = localeValue\n let push = false\n\n if (localeValue && typeof localeValue === 'object' && '$push' in localeValue) {\n localeData = localeValue.$push\n push = true\n if (!Array.isArray(localeData)) {\n localeData = [localeData]\n }\n }\n\n if (Array.isArray(localeData)) {\n const newRows = transformArray({\n adapter,\n arrayTableName,\n baseTableName,\n blocks,\n blocksToDelete,\n data: localeData,\n field,\n locale: localeKey,\n numbers,\n numbersToDelete,\n parentIsLocalized: parentIsLocalized || field.localized,\n path,\n relationships,\n relationshipsToDelete,\n selects,\n selectsToDelete,\n texts,\n textsToDelete,\n withinArrayOrBlockLocale: localeKey,\n })\n\n if (push) {\n if (!arraysToPush[arrayTableName]) {\n arraysToPush[arrayTableName] = []\n }\n arraysToPush[arrayTableName] = arraysToPush[arrayTableName].concat(newRows)\n } else {\n if (!arrays[arrayTableName]) {\n arrays[arrayTableName] = []\n }\n arrays[arrayTableName] = arrays[arrayTableName].concat(newRows)\n }\n }\n })\n }\n } else {\n let value = data[field.name]\n let push = false\n if (typeof value === 'object' && '$push' in value) {\n value = Array.isArray(value.$push) ? value.$push : [value.$push]\n push = true\n }\n\n const newRows = transformArray({\n adapter,\n arrayTableName,\n baseTableName,\n blocks,\n blocksToDelete,\n data: value,\n field,\n numbers,\n numbersToDelete,\n parentIsLocalized: parentIsLocalized || field.localized,\n path,\n relationships,\n relationshipsToDelete,\n selects,\n selectsToDelete,\n texts,\n textsToDelete,\n withinArrayOrBlockLocale,\n })\n\n if (push) {\n if (!arraysToPush[arrayTableName]) {\n arraysToPush[arrayTableName] = []\n }\n arraysToPush[arrayTableName] = arraysToPush[arrayTableName].concat(newRows)\n } else {\n if (!arrays[arrayTableName]) {\n arrays[arrayTableName] = []\n }\n arrays[arrayTableName] = arrays[arrayTableName].concat(newRows)\n }\n }\n\n return\n }\n\n if (field.type === 'blocks' && !adapter.blocksAsJSON) {\n if (fieldData === undefined) {\n return\n }\n\n field.blocks.forEach((block) => {\n const matchedBlock =\n typeof block === 'string'\n ? adapter.payload.config.blocks.find((each) => each.slug === block)\n : block\n\n blocksToDelete.add(\n resolveBlockTableName(\n matchedBlock,\n adapter.tableNameMap.get(`${baseTableName}_blocks_${toSnakeCase(matchedBlock.slug)}`),\n ),\n )\n })\n\n if (isLocalized) {\n if (typeof data[field.name] === 'object' && data[field.name] !== null) {\n Object.entries(data[field.name]).forEach(([localeKey, localeData]) => {\n if (Array.isArray(localeData)) {\n transformBlocks({\n adapter,\n baseTableName,\n blocks,\n blocksToDelete,\n data: localeData,\n field,\n locale: localeKey,\n numbers,\n numbersToDelete,\n parentIsLocalized: parentIsLocalized || field.localized,\n path,\n relationships,\n relationshipsToDelete,\n selects,\n selectsToDelete,\n texts,\n textsToDelete,\n withinArrayOrBlockLocale: localeKey,\n })\n }\n })\n }\n } else if (isArrayOfRows(fieldData)) {\n transformBlocks({\n adapter,\n baseTableName,\n blocks,\n blocksToDelete,\n data: fieldData,\n field,\n numbers,\n numbersToDelete,\n parentIsLocalized: parentIsLocalized || field.localized,\n path,\n relationships,\n relationshipsToDelete,\n selects,\n selectsToDelete,\n texts,\n textsToDelete,\n withinArrayOrBlockLocale,\n })\n }\n\n return\n }\n\n if (field.type === 'group' || field.type === 'tab') {\n if (typeof data[field.name] === 'object' && data[field.name] !== null) {\n if (isLocalized) {\n Object.entries(data[field.name]).forEach(([localeKey, localeData]) => {\n // preserve array ID if there is\n localeData._uuid = data.id || data._uuid\n\n traverseFields({\n adapter,\n arrays,\n arraysToPush,\n baseTableName,\n blocks,\n blocksToDelete,\n columnPrefix: `${columnName}_`,\n data: localeData as Record<string, unknown>,\n enableAtomicWrites,\n existingLocales,\n fieldPrefix: `${fieldName}_`,\n fields: field.flattenedFields,\n forcedLocale: localeKey,\n insideArrayOrBlock,\n locales,\n numbers,\n numbersToDelete,\n parentIsLocalized: parentIsLocalized || field.localized,\n parentTableName,\n path: `${path || ''}${field.name}.`,\n relationships,\n relationshipsToAppend,\n relationshipsToDelete,\n row,\n selects,\n selectsToDelete,\n texts,\n textsToDelete,\n withinArrayOrBlockLocale: localeKey,\n })\n })\n } else {\n // preserve array ID if there is\n const groupData = data[field.name] as Record<string, unknown>\n groupData._uuid = data.id || data._uuid\n\n traverseFields({\n adapter,\n arrays,\n arraysToPush,\n baseTableName,\n blocks,\n blocksToDelete,\n columnPrefix: `${columnName}_`,\n data: groupData,\n enableAtomicWrites,\n existingLocales,\n fieldPrefix: `${fieldName}_`,\n fields: field.flattenedFields,\n forcedLocale,\n insideArrayOrBlock,\n locales,\n numbers,\n numbersToDelete,\n parentIsLocalized: parentIsLocalized || field.localized,\n parentTableName,\n path: `${path || ''}${field.name}.`,\n relationships,\n relationshipsToAppend,\n relationshipsToDelete,\n row,\n selects,\n selectsToDelete,\n texts,\n textsToDelete,\n withinArrayOrBlockLocale,\n })\n }\n }\n\n return\n }\n\n if (field.type === 'relationship' || field.type === 'upload') {\n const relationshipPath = `${path || ''}${field.name}`\n\n // Handle $push operation for relationship fields\n if (\n fieldData &&\n typeof fieldData === 'object' &&\n 'hasMany' in field &&\n field.hasMany &&\n ('$push' in fieldData ||\n (field.localized &&\n Object.values(fieldData).some(\n (localeValue) =>\n localeValue &&\n typeof localeValue === 'object' &&\n '$push' in (localeValue as Record<string, unknown>),\n )))\n ) {\n let itemsToAppend: unknown[]\n\n if (field.localized) {\n let hasLocaleOperations = false\n Object.entries(fieldData).forEach(([localeKey, localeValue]) => {\n if (localeValue && typeof localeValue === 'object' && '$push' in localeValue) {\n hasLocaleOperations = true\n const push = localeValue.$push\n const localeItems = Array.isArray(push) ? push : [push]\n\n localeItems.forEach((item) => {\n const relationshipToAppend: RelationshipToAppend = {\n locale: localeKey,\n path: relationshipPath,\n value: item,\n }\n\n // Handle polymorphic relationships\n if (\n Array.isArray(field.relationTo) &&\n item &&\n typeof item === 'object' &&\n 'relationTo' in item\n ) {\n relationshipToAppend.relationTo = item.relationTo\n relationshipToAppend.value = item.value\n } else if (typeof field.relationTo === 'string') {\n // Simple relationship\n relationshipToAppend.relationTo = field.relationTo\n relationshipToAppend.value = item\n }\n\n relationshipsToAppend.push(relationshipToAppend)\n })\n }\n })\n\n if (hasLocaleOperations) {\n return\n }\n } else {\n // Handle non-localized fields: { field: { $push: data } }\n itemsToAppend = Array.isArray((fieldData as any).$push)\n ? (fieldData as any).$push\n : [(fieldData as any).$push]\n\n itemsToAppend.forEach((item) => {\n const relationshipToAppend: RelationshipToAppend = {\n locale: withinArrayOrBlockLocale,\n path: relationshipPath,\n value: item,\n }\n\n // Handle polymorphic relationships\n if (\n Array.isArray(field.relationTo) &&\n item &&\n typeof item === 'object' &&\n 'relationTo' in item &&\n 'value' in item\n ) {\n relationshipToAppend.relationTo = item.relationTo as string\n relationshipToAppend.value = item.value as number | string\n } else if (typeof field.relationTo === 'string') {\n // Simple relationship\n relationshipToAppend.relationTo = field.relationTo\n relationshipToAppend.value = item\n }\n\n relationshipsToAppend.push(relationshipToAppend)\n })\n }\n return\n }\n\n // Handle $remove operation for relationship fields\n if (\n fieldData &&\n typeof fieldData === 'object' &&\n 'hasMany' in field &&\n field.hasMany &&\n ('$remove' in fieldData ||\n (field.localized &&\n Object.values(fieldData).some(\n (localeValue) =>\n localeValue &&\n typeof localeValue === 'object' &&\n '$remove' in (localeValue as Record<string, unknown>),\n )))\n ) {\n // Check for new locale-first syntax: { field: { locale: { $remove: data } } }\n if (field.localized) {\n let hasLocaleOperations = false\n Object.entries(fieldData).forEach(([localeKey, localeValue]) => {\n if (localeValue && typeof localeValue === 'object' && '$remove' in localeValue) {\n hasLocaleOperations = true\n const remove = localeValue.$remove\n const localeItems = Array.isArray(remove) ? remove : [remove]\n\n localeItems.forEach((item) => {\n const relationshipToDelete: RelationshipToDelete = {\n itemToRemove: item,\n locale: localeKey,\n path: relationshipPath,\n }\n\n // Store relationTo for simple relationships\n if (typeof field.relationTo === 'string') {\n relationshipToDelete.relationTo = field.relationTo\n }\n\n relationshipsToDelete.push(relationshipToDelete)\n })\n }\n })\n\n if (hasLocaleOperations) {\n return\n }\n } else {\n // Handle non-localized fields: { field: { $remove: data } }\n const itemsToRemove = Array.isArray((fieldData as any).$remove)\n ? (fieldData as any).$remove\n : [(fieldData as any).$remove]\n\n itemsToRemove.forEach((item) => {\n const relationshipToDelete: RelationshipToDelete = {\n itemToRemove: item,\n locale: withinArrayOrBlockLocale,\n path: relationshipPath,\n }\n\n // Store relationTo for simple relationships\n if (typeof field.relationTo === 'string') {\n relationshipToDelete.relationTo = field.relationTo\n }\n\n relationshipsToDelete.push(relationshipToDelete)\n })\n }\n return\n }\n\n if (\n isLocalized &&\n (Array.isArray(field.relationTo) || ('hasMany' in field && field.hasMany))\n ) {\n if (typeof fieldData === 'object') {\n Object.entries(fieldData).forEach(([localeKey, localeData]) => {\n if (localeData === null || (Array.isArray(localeData) && localeData.length === 0)) {\n relationshipsToDelete.push({\n locale: localeKey,\n path: relationshipPath,\n })\n return\n }\n\n transformRelationship({\n baseRow: {\n locale: localeKey,\n path: relationshipPath,\n },\n data: localeData,\n field,\n relationships,\n })\n })\n }\n return\n } else if (Array.isArray(field.relationTo) || ('hasMany' in field && field.hasMany)) {\n if (fieldData === null || (Array.isArray(fieldData) && fieldData.length === 0)) {\n relationshipsToDelete.push({\n locale: withinArrayOrBlockLocale,\n path: relationshipPath,\n })\n return\n }\n\n transformRelationship({\n baseRow: {\n locale: withinArrayOrBlockLocale,\n path: relationshipPath,\n },\n data: fieldData,\n field,\n relationships,\n })\n return\n } else {\n if (\n !isLocalized &&\n fieldData &&\n typeof fieldData === 'object' &&\n 'id' in fieldData &&\n fieldData?.id\n ) {\n fieldData = fieldData.id\n } else if (isLocalized) {\n if (typeof fieldData === 'object') {\n Object.entries(fieldData).forEach(([localeKey, localeData]) => {\n if (typeof localeData === 'object') {\n if (localeData && 'id' in localeData && localeData?.id) {\n fieldData[localeKey] = localeData.id\n }\n } else {\n fieldData[localeKey] = localeData\n }\n })\n }\n }\n }\n }\n\n if (field.type === 'text' && field.hasMany) {\n const textPath = `${path || ''}${field.name}`\n\n if (isLocalized) {\n if (typeof fieldData === 'object') {\n Object.entries(fieldData).forEach(([localeKey, localeData]) => {\n if (Array.isArray(localeData)) {\n if (!localeData.length) {\n textsToDelete.push({ locale: localeKey, path: textPath })\n return\n }\n\n transformTexts({\n baseRow: {\n locale: localeKey,\n path: textPath,\n },\n data: localeData,\n texts,\n })\n }\n })\n }\n } else if (Array.isArray(fieldData)) {\n if (!fieldData.length) {\n textsToDelete.push({ locale: withinArrayOrBlockLocale, path: textPath })\n return\n }\n\n transformTexts({\n baseRow: {\n locale: withinArrayOrBlockLocale,\n path: textPath,\n },\n data: fieldData,\n texts,\n })\n }\n\n return\n }\n\n if (field.type === 'number' && field.hasMany) {\n const numberPath = `${path || ''}${field.name}`\n\n if (isLocalized) {\n if (typeof fieldData === 'object') {\n Object.entries(fieldData).forEach(([localeKey, localeData]) => {\n if (Array.isArray(localeData)) {\n if (!localeData.length) {\n numbersToDelete.push({ locale: localeKey, path: numberPath })\n return\n }\n\n transformNumbers({\n baseRow: {\n locale: localeKey,\n path: numberPath,\n },\n data: localeData,\n numbers,\n })\n }\n })\n }\n } else if (Array.isArray(fieldData)) {\n if (!fieldData.length) {\n numbersToDelete.push({ locale: withinArrayOrBlockLocale, path: numberPath })\n return\n }\n\n transformNumbers({\n baseRow: {\n locale: withinArrayOrBlockLocale,\n path: numberPath,\n },\n data: fieldData,\n numbers,\n })\n }\n\n return\n }\n\n if (field.type === 'select' && field.hasMany) {\n if (fieldData === undefined) {\n return\n }\n\n const selectTableName = adapter.tableNameMap.get(`${parentTableName}_${columnName}`)\n if (!selects[selectTableName]) {\n selects[selectTableName] = []\n }\n if (!selectsToDelete[selectTableName]) {\n selectsToDelete[selectTableName] = []\n }\n\n const selectParent = insideArrayOrBlock ? (data._uuid ?? data.id) : undefined\n\n if (isLocalized) {\n if (typeof data[field.name] === 'object' && data[field.name] !== null) {\n Object.entries(data[field.name]).forEach(([localeKey, localeData]) => {\n if (Array.isArray(localeData)) {\n selectsToDelete[selectTableName].push({ locale: localeKey, parent: selectParent })\n\n const newRows = transformSelects({\n id: selectParent,\n data: localeData,\n locale: localeKey,\n })\n\n selects[selectTableName] = selects[selectTableName].concat(newRows)\n }\n })\n }\n } else if (Array.isArray(data[field.name])) {\n selectsToDelete[selectTableName].push({\n locale: withinArrayOrBlockLocale,\n parent: selectParent,\n })\n\n const newRows = transformSelects({\n id: selectParent,\n data: data[field.name],\n locale: withinArrayOrBlockLocale,\n })\n\n selects[selectTableName] = selects[selectTableName].concat(newRows)\n }\n\n return\n }\n\n const valuesToTransform: { localeKey?: string; ref: unknown; value: unknown }[] = []\n\n if (isLocalized) {\n if (typeof fieldData === 'object' && fieldData !== null) {\n Object.entries(fieldData).forEach(([localeKey, localeData]) => {\n if (!locales[localeKey]) {\n locales[localeKey] = {}\n }\n\n valuesToTransform.push({\n localeKey,\n ref: locales,\n value: localeData,\n })\n })\n }\n } else {\n let ref = row\n\n if (forcedLocale) {\n if (!locales[forcedLocale]) {\n locales[forcedLocale] = {}\n }\n ref = locales[forcedLocale]\n }\n\n valuesToTransform.push({ ref, value: fieldData })\n }\n\n valuesToTransform.forEach(({ localeKey, ref, value }) => {\n let formattedValue = value\n\n if (field.type === 'date') {\n if (fieldName === 'updatedAt' && formattedValue === null) {\n // If updatedAt is explicitly set to null, skip it entirely - don't add to row\n // This prevents the timestamp from being updated for session-only operations\n return // Skip this iteration\n } else if (fieldName === 'updatedAt' && typeof formattedValue === 'undefined') {\n // If updatedAt is undefined, set it to current time (normal behavior)\n formattedValue = new Date().toISOString()\n } else {\n if (typeof value === 'number' && !Number.isNaN(value)) {\n formattedValue = new Date(value).toISOString()\n } else if (value instanceof Date) {\n formattedValue = value.toISOString()\n }\n }\n }\n\n if (typeof value !== 'undefined') {\n if (value && field.type === 'point' && adapter.name !== 'sqlite') {\n formattedValue = sql`ST_GeomFromGeoJSON(${JSON.stringify(value)})`\n }\n\n if (field.type === 'text' && value && typeof value !== 'string') {\n formattedValue = JSON.stringify(value)\n }\n\n if (\n field.type === 'number' &&\n value &&\n typeof value === 'object' &&\n '$inc' in value &&\n typeof value.$inc === 'number'\n ) {\n if (!enableAtomicWrites) {\n throw new APIError(\n 'The passed data must not contain any nested fields for atomic writes',\n )\n }\n\n formattedValue = sql.raw(`${columnName} + ${value.$inc}`)\n }\n }\n\n if (typeof formattedValue !== 'undefined') {\n if (localeKey) {\n ref[localeKey][fieldName] = formattedValue\n } else {\n ref[fieldName] = formattedValue\n }\n }\n })\n })\n\n // Handle dot-notation paths when no fields matched\n if (!fieldsMatched) {\n Object.keys(data).forEach((key) => {\n if (expandOwnDottedKey({ key, target: data })) {\n // Recursively process the newly created nested structure\n // The field traversal will naturally handle it if the field exists in the schema\n traverseFields({\n adapter,\n arrays,\n arraysToPush,\n baseTableName,\n blocks,\n blocksToDelete,\n columnPrefix,\n data,\n enableAtomicWrites,\n existingLocales,\n fieldPrefix,\n fields,\n forcedLocale,\n insideArrayOrBlock,\n locales,\n numbers,\n numbersToDelete,\n parentIsLocalized,\n parentTableName,\n path,\n relationships,\n relationshipsToAppend,\n relationshipsToDelete,\n row,\n selects,\n selectsToDelete,\n texts,\n textsToDelete,\n withinArrayOrBlockLocale,\n })\n }\n })\n }\n}\n"],"names":["sql","APIError","expandOwnDottedKey","fieldIsVirtual","fieldShouldBeLocalized","toSnakeCase","isArrayOfRows","resolveBlockTableName","transformArray","transformBlocks","transformNumbers","transformRelationship","transformSelects","transformTexts","traverseFields","adapter","arrays","arraysToPush","baseTableName","blocks","blocksToDelete","columnPrefix","data","enableAtomicWrites","existingLocales","fieldPrefix","fields","forcedLocale","insideArrayOrBlock","locales","numbers","numbersToDelete","parentIsLocalized","parentTableName","path","relationships","relationshipsToAppend","relationshipsToDelete","row","selects","selectsToDelete","texts","textsToDelete","withinArrayOrBlockLocale","fieldsMatched","_uuid","forEach","field","columnName","fieldName","fieldData","name","undefined","isLocalized","type","arrayTableName","tableNameMap","get","value","Object","entries","localeKey","localeValue","localeData","push","$push","Array","isArray","newRows","locale","localized","concat","blocksAsJSON","block","matchedBlock","payload","config","find","each","slug","add","id","flattenedFields","groupData","relationshipPath","hasMany","values","some","itemsToAppend","hasLocaleOperations","localeItems","item","relationshipToAppend","relationTo","remove","$remove","relationshipToDelete","itemToRemove","itemsToRemove","length","baseRow","textPath","numberPath","selectTableName","selectParent","parent","valuesToTransform","ref","formattedValue","Date","toISOString","Number","isNaN","JSON","stringify","$inc","raw","keys","key","target"],"mappings":"AAAA,SAASA,GAAG,QAAQ,cAAa;AACjC,SAASC,QAAQ,QAA6B,UAAS;AACvD,SAASC,kBAAkB,EAAEC,cAAc,EAAEC,sBAAsB,QAAQ,iBAAgB;AAC3F,OAAOC,iBAAiB,gBAAe;AAWvC,SAASC,aAAa,QAAQ,mCAAkC;AAChE,SAASC,qBAAqB,QAAQ,sDAAqD;AAC3F,SAASC,cAAc,QAAQ,aAAY;AAC3C,SAASC,eAAe,QAAQ,cAAa;AAC7C,SAASC,gBAAgB,QAAQ,eAAc;AAC/C,SAASC,qBAAqB,QAAQ,qBAAoB;AAC1D,SAASC,gBAAgB,QAAQ,eAAc;AAC/C,SAASC,cAAc,QAAQ,aAAY;AAkE3C,OAAO,MAAMC,iBAAiB,CAAC,EAC7BC,OAAO,EACPC,MAAM,EACNC,YAAY,EACZC,aAAa,EACbC,MAAM,EACNC,cAAc,EACdC,YAAY,EACZC,IAAI,EACJC,kBAAkB,EAClBC,eAAe,EACfC,WAAW,EACXC,MAAM,EACNC,YAAY,EACZC,qBAAqB,KAAK,EAC1BC,OAAO,EACPC,OAAO,EACPC,eAAe,EACfC,iBAAiB,EACjBC,eAAe,EACfC,IAAI,EACJC,aAAa,EACbC,qBAAqB,EACrBC,qBAAqB,EACrBC,GAAG,EACHC,OAAO,EACPC,eAAe,EACfC,KAAK,EACLC,aAAa,EACbC,wBAAwB,EACnB;IACL,IAAIC,gBAAgB;IAEpB,IAAIN,IAAIO,KAAK,EAAE;QACbvB,KAAKuB,KAAK,GAAGP,IAAIO,KAAK;IACxB;IAEAnB,OAAOoB,OAAO,CAAC,CAACC;QACd,IAAIC,aAAa;QACjB,IAAIC,YAAY;QAChB,IAAIC;QAEJ,IAAI/C,eAAe4C,QAAQ;YACzB;QACF;QAEA,sCAAsC;QACtC,IAAIzB,IAAI,CAACyB,MAAMI,IAAI,CAAC,KAAKC,WAAW;YAClCR,gBAAgB;QAClB;QAEAI,aAAa,GAAG3B,gBAAgB,KAAKhB,YAAY0C,MAAMI,IAAI,GAAG;QAC9DF,YAAY,GAAGxB,eAAe,KAAKsB,MAAMI,IAAI,EAAE;QAC/CD,YAAY5B,IAAI,CAACyB,MAAMI,IAAI,CAAC;QAE5B,MAAME,cAAcjD,uBAAuB;YAAE2C;YAAOf;QAAkB;QAEtE,IAAIe,MAAMO,IAAI,KAAK,SAAS;YAC1B,IAAIJ,cAAcE,WAAW;gBAC3B;YACF;YAEA,MAAMG,iBAAiBxC,QAAQyC,YAAY,CAACC,GAAG,CAAC,GAAGxB,gBAAgB,CAAC,EAAEe,YAAY;YAElF,IAAIK,aAAa;gBACf,MAAMK,QAAQpC,IAAI,CAACyB,MAAMI,IAAI,CAAC;gBAE9B,IAAI,OAAOO,UAAU,YAAYA,UAAU,MAAM;oBAC/CC,OAAOC,OAAO,CAACF,OAAOZ,OAAO,CAAC,CAAC,CAACe,WAAWC,YAAY;wBACrD,IAAIC,aAAaD;wBACjB,IAAIE,OAAO;wBAEX,IAAIF,eAAe,OAAOA,gBAAgB,YAAY,WAAWA,aAAa;4BAC5EC,aAAaD,YAAYG,KAAK;4BAC9BD,OAAO;4BACP,IAAI,CAACE,MAAMC,OAAO,CAACJ,aAAa;gCAC9BA,aAAa;oCAACA;iCAAW;4BAC3B;wBACF;wBAEA,IAAIG,MAAMC,OAAO,CAACJ,aAAa;4BAC7B,MAAMK,UAAU5D,eAAe;gCAC7BO;gCACAwC;gCACArC;gCACAC;gCACAC;gCACAE,MAAMyC;gCACNhB;gCACAsB,QAAQR;gCACR/B;gCACAC;gCACAC,mBAAmBA,qBAAqBe,MAAMuB,SAAS;gCACvDpC;gCACAC;gCACAE;gCACAE;gCACAC;gCACAC;gCACAC;gCACAC,0BAA0BkB;4BAC5B;4BAEA,IAAIG,MAAM;gCACR,IAAI,CAAC/C,YAAY,CAACsC,eAAe,EAAE;oCACjCtC,YAAY,CAACsC,eAAe,GAAG,EAAE;gCACnC;gCACAtC,YAAY,CAACsC,eAAe,GAAGtC,YAAY,CAACsC,eAAe,CAACgB,MAAM,CAACH;4BACrE,OAAO;gCACL,IAAI,CAACpD,MAAM,CAACuC,eAAe,EAAE;oCAC3BvC,MAAM,CAACuC,eAAe,GAAG,EAAE;gCAC7B;gCACAvC,MAAM,CAACuC,eAAe,GAAGvC,MAAM,CAACuC,eAAe,CAACgB,MAAM,CAACH;4BACzD;wBACF;oBACF;gBACF;YACF,OAAO;gBACL,IAAIV,QAAQpC,IAAI,CAACyB,MAAMI,IAAI,CAAC;gBAC5B,IAAIa,OAAO;gBACX,IAAI,OAAON,UAAU,YAAY,WAAWA,OAAO;oBACjDA,QAAQQ,MAAMC,OAAO,CAACT,MAAMO,KAAK,IAAIP,MAAMO,KAAK,GAAG;wBAACP,MAAMO,KAAK;qBAAC;oBAChED,OAAO;gBACT;gBAEA,MAAMI,UAAU5D,eAAe;oBAC7BO;oBACAwC;oBACArC;oBACAC;oBACAC;oBACAE,MAAMoC;oBACNX;oBACAjB;oBACAC;oBACAC,mBAAmBA,qBAAqBe,MAAMuB,SAAS;oBACvDpC;oBACAC;oBACAE;oBACAE;oBACAC;oBACAC;oBACAC;oBACAC;gBACF;gBAEA,IAAIqB,MAAM;oBACR,IAAI,CAAC/C,YAAY,CAACsC,eAAe,EAAE;wBACjCtC,YAAY,CAACsC,eAAe,GAAG,EAAE;oBACnC;oBACAtC,YAAY,CAACsC,eAAe,GAAGtC,YAAY,CAACsC,eAAe,CAACgB,MAAM,CAACH;gBACrE,OAAO;oBACL,IAAI,CAACpD,MAAM,CAACuC,eAAe,EAAE;wBAC3BvC,MAAM,CAACuC,eAAe,GAAG,EAAE;oBAC7B;oBACAvC,MAAM,CAACuC,eAAe,GAAGvC,MAAM,CAACuC,eAAe,CAACgB,MAAM,CAACH;gBACzD;YACF;YAEA;QACF;QAEA,IAAIrB,MAAMO,IAAI,KAAK,YAAY,CAACvC,QAAQyD,YAAY,EAAE;YACpD,IAAItB,cAAcE,WAAW;gBAC3B;YACF;YAEAL,MAAM5B,MAAM,CAAC2B,OAAO,CAAC,CAAC2B;gBACpB,MAAMC,eACJ,OAAOD,UAAU,WACb1D,QAAQ4D,OAAO,CAACC,MAAM,CAACzD,MAAM,CAAC0D,IAAI,CAAC,CAACC,OAASA,KAAKC,IAAI,KAAKN,SAC3DA;gBAENrD,eAAe4D,GAAG,CAChBzE,sBACEmE,cACA3D,QAAQyC,YAAY,CAACC,GAAG,CAAC,GAAGvC,cAAc,QAAQ,EAAEb,YAAYqE,aAAaK,IAAI,GAAG;YAG1F;YAEA,IAAI1B,aAAa;gBACf,IAAI,OAAO/B,IAAI,CAACyB,MAAMI,IAAI,CAAC,KAAK,YAAY7B,IAAI,CAACyB,MAAMI,IAAI,CAAC,KAAK,MAAM;oBACrEQ,OAAOC,OAAO,CAACtC,IAAI,CAACyB,MAAMI,IAAI,CAAC,EAAEL,OAAO,CAAC,CAAC,CAACe,WAAWE,WAAW;wBAC/D,IAAIG,MAAMC,OAAO,CAACJ,aAAa;4BAC7BtD,gBAAgB;gCACdM;gCACAG;gCACAC;gCACAC;gCACAE,MAAMyC;gCACNhB;gCACAsB,QAAQR;gCACR/B;gCACAC;gCACAC,mBAAmBA,qBAAqBe,MAAMuB,SAAS;gCACvDpC;gCACAC;gCACAE;gCACAE;gCACAC;gCACAC;gCACAC;gCACAC,0BAA0BkB;4BAC5B;wBACF;oBACF;gBACF;YACF,OAAO,IAAIvD,cAAc4C,YAAY;gBACnCzC,gBAAgB;oBACdM;oBACAG;oBACAC;oBACAC;oBACAE,MAAM4B;oBACNH;oBACAjB;oBACAC;oBACAC,mBAAmBA,qBAAqBe,MAAMuB,SAAS;oBACvDpC;oBACAC;oBACAE;oBACAE;oBACAC;oBACAC;oBACAC;oBACAC;gBACF;YACF;YAEA;QACF;QAEA,IAAII,MAAMO,IAAI,KAAK,WAAWP,MAAMO,IAAI,KAAK,OAAO;YAClD,IAAI,OAAOhC,IAAI,CAACyB,MAAMI,IAAI,CAAC,KAAK,YAAY7B,IAAI,CAACyB,MAAMI,IAAI,CAAC,KAAK,MAAM;gBACrE,IAAIE,aAAa;oBACfM,OAAOC,OAAO,CAACtC,IAAI,CAACyB,MAAMI,IAAI,CAAC,EAAEL,OAAO,CAAC,CAAC,CAACe,WAAWE,WAAW;wBAC/D,gCAAgC;wBAChCA,WAAWlB,KAAK,GAAGvB,KAAK2D,EAAE,IAAI3D,KAAKuB,KAAK;wBAExC/B,eAAe;4BACbC;4BACAC;4BACAC;4BACAC;4BACAC;4BACAC;4BACAC,cAAc,GAAG2B,WAAW,CAAC,CAAC;4BAC9B1B,MAAMyC;4BACNxC;4BACAC;4BACAC,aAAa,GAAGwB,UAAU,CAAC,CAAC;4BAC5BvB,QAAQqB,MAAMmC,eAAe;4BAC7BvD,cAAckC;4BACdjC;4BACAC;4BACAC;4BACAC;4BACAC,mBAAmBA,qBAAqBe,MAAMuB,SAAS;4BACvDrC;4BACAC,MAAM,GAAGA,QAAQ,KAAKa,MAAMI,IAAI,CAAC,CAAC,CAAC;4BACnChB;4BACAC;4BACAC;4BACAC;4BACAC;4BACAC;4BACAC;4BACAC;4BACAC,0BAA0BkB;wBAC5B;oBACF;gBACF,OAAO;oBACL,gCAAgC;oBAChC,MAAMsB,YAAY7D,IAAI,CAACyB,MAAMI,IAAI,CAAC;oBAClCgC,UAAUtC,KAAK,GAAGvB,KAAK2D,EAAE,IAAI3D,KAAKuB,KAAK;oBAEvC/B,eAAe;wBACbC;wBACAC;wBACAC;wBACAC;wBACAC;wBACAC;wBACAC,cAAc,GAAG2B,WAAW,CAAC,CAAC;wBAC9B1B,MAAM6D;wBACN5D;wBACAC;wBACAC,aAAa,GAAGwB,UAAU,CAAC,CAAC;wBAC5BvB,QAAQqB,MAAMmC,eAAe;wBAC7BvD;wBACAC;wBACAC;wBACAC;wBACAC;wBACAC,mBAAmBA,qBAAqBe,MAAMuB,SAAS;wBACvDrC;wBACAC,MAAM,GAAGA,QAAQ,KAAKa,MAAMI,IAAI,CAAC,CAAC,CAAC;wBACnChB;wBACAC;wBACAC;wBACAC;wBACAC;wBACAC;wBACAC;wBACAC;wBACAC;oBACF;gBACF;YACF;YAEA;QACF;QAEA,IAAII,MAAMO,IAAI,KAAK,kBAAkBP,MAAMO,IAAI,KAAK,UAAU;YAC5D,MAAM8B,mBAAmB,GAAGlD,QAAQ,KAAKa,MAAMI,IAAI,EAAE;YAErD,iDAAiD;YACjD,IACED,aACA,OAAOA,cAAc,YACrB,aAAaH,SACbA,MAAMsC,OAAO,IACZ,CAAA,WAAWnC,aACTH,MAAMuB,SAAS,IACdX,OAAO2B,MAAM,CAACpC,WAAWqC,IAAI,CAC3B,CAACzB,cACCA,eACA,OAAOA,gBAAgB,YACvB,WAAYA,YACf,GACL;gBACA,IAAI0B;gBAEJ,IAAIzC,MAAMuB,SAAS,EAAE;oBACnB,IAAImB,sBAAsB;oBAC1B9B,OAAOC,OAAO,CAACV,WAAWJ,OAAO,CAAC,CAAC,CAACe,WAAWC,YAAY;wBACzD,IAAIA,eAAe,OAAOA,gBAAgB,YAAY,WAAWA,aAAa;4BAC5E2B,sBAAsB;4BACtB,MAAMzB,OAAOF,YAAYG,KAAK;4BAC9B,MAAMyB,cAAcxB,MAAMC,OAAO,CAACH,QAAQA,OAAO;gCAACA;6BAAK;4BAEvD0B,YAAY5C,OAAO,CAAC,CAAC6C;gCACnB,MAAMC,uBAA6C;oCACjDvB,QAAQR;oCACR3B,MAAMkD;oCACN1B,OAAOiC;gCACT;gCAEA,mCAAmC;gCACnC,IACEzB,MAAMC,OAAO,CAACpB,MAAM8C,UAAU,KAC9BF,QACA,OAAOA,SAAS,YAChB,gBAAgBA,MAChB;oCACAC,qBAAqBC,UAAU,GAAGF,KAAKE,UAAU;oCACjDD,qBAAqBlC,KAAK,GAAGiC,KAAKjC,KAAK;gCACzC,OAAO,IAAI,OAAOX,MAAM8C,UAAU,KAAK,UAAU;oCAC/C,sBAAsB;oCACtBD,qBAAqBC,UAAU,GAAG9C,MAAM8C,UAAU;oCAClDD,qBAAqBlC,KAAK,GAAGiC;gCAC/B;gCAEAvD,sBAAsB4B,IAAI,CAAC4B;4BAC7B;wBACF;oBACF;oBAEA,IAAIH,qBAAqB;wBACvB;oBACF;gBACF,OAAO;oBACL,0DAA0D;oBAC1DD,gBAAgBtB,MAAMC,OAAO,CAAC,AAACjB,UAAkBe,KAAK,IAClD,AAACf,UAAkBe,KAAK,GACxB;wBAAEf,UAAkBe,KAAK;qBAAC;oBAE9BuB,cAAc1C,OAAO,CAAC,CAAC6C;wBACrB,MAAMC,uBAA6C;4BACjDvB,QAAQ1B;4BACRT,MAAMkD;4BACN1B,OAAOiC;wBACT;wBAEA,mCAAmC;wBACnC,IACEzB,MAAMC,OAAO,CAACpB,MAAM8C,UAAU,KAC9BF,QACA,OAAOA,SAAS,YAChB,gBAAgBA,QAChB,WAAWA,MACX;4BACAC,qBAAqBC,UAAU,GAAGF,KAAKE,UAAU;4BACjDD,qBAAqBlC,KAAK,GAAGiC,KAAKjC,KAAK;wBACzC,OAAO,IAAI,OAAOX,MAAM8C,UAAU,KAAK,UAAU;4BAC/C,sBAAsB;4BACtBD,qBAAqBC,UAAU,GAAG9C,MAAM8C,UAAU;4BAClDD,qBAAqBlC,KAAK,GAAGiC;wBAC/B;wBAEAvD,sBAAsB4B,IAAI,CAAC4B;oBAC7B;gBACF;gBACA;YACF;YAEA,mDAAmD;YACnD,IACE1C,aACA,OAAOA,cAAc,YACrB,aAAaH,SACbA,MAAMsC,OAAO,IACZ,CAAA,aAAanC,aACXH,MAAMuB,SAAS,IACdX,OAAO2B,MAAM,CAACpC,WAAWqC,IAAI,CAC3B,CAACzB,cACCA,eACA,OAAOA,gBAAgB,YACvB,aAAcA,YACjB,GACL;gBACA,8EAA8E;gBAC9E,IAAIf,MAAMuB,SAAS,EAAE;oBACnB,IAAImB,sBAAsB;oBAC1B9B,OAAOC,OAAO,CAACV,WAAWJ,OAAO,CAAC,CAAC,CAACe,WAAWC,YAAY;wBACzD,IAAIA,eAAe,OAAOA,gBAAgB,YAAY,aAAaA,aAAa;4BAC9E2B,sBAAsB;4BACtB,MAAMK,SAAShC,YAAYiC,OAAO;4BAClC,MAAML,cAAcxB,MAAMC,OAAO,CAAC2B,UAAUA,SAAS;gCAACA;6BAAO;4BAE7DJ,YAAY5C,OAAO,CAAC,CAAC6C;gCACnB,MAAMK,uBAA6C;oCACjDC,cAAcN;oCACdtB,QAAQR;oCACR3B,MAAMkD;gCACR;gCAEA,4CAA4C;gCAC5C,IAAI,OAAOrC,MAAM8C,UAAU,KAAK,UAAU;oCACxCG,qBAAqBH,UAAU,GAAG9C,MAAM8C,UAAU;gCACpD;gCAEAxD,sBAAsB2B,IAAI,CAACgC;4BAC7B;wBACF;oBACF;oBAEA,IAAIP,qBAAqB;wBACvB;oBACF;gBACF,OAAO;oBACL,4DAA4D;oBAC5D,MAAMS,gBAAgBhC,MAAMC,OAAO,CAAC,AAACjB,UAAkB6C,OAAO,IAC1D,AAAC7C,UAAkB6C,OAAO,GAC1B;wBAAE7C,UAAkB6C,OAAO;qBAAC;oBAEhCG,cAAcpD,OAAO,CAAC,CAAC6C;wBACrB,MAAMK,uBAA6C;4BACjDC,cAAcN;4BACdtB,QAAQ1B;4BACRT,MAAMkD;wBACR;wBAEA,4CAA4C;wBAC5C,IAAI,OAAOrC,MAAM8C,UAAU,KAAK,UAAU;4BACxCG,qBAAqBH,UAAU,GAAG9C,MAAM8C,UAAU;wBACpD;wBAEAxD,sBAAsB2B,IAAI,CAACgC;oBAC7B;gBACF;gBACA;YACF;YAEA,IACE3C,eACCa,CAAAA,MAAMC,OAAO,CAACpB,MAAM8C,UAAU,KAAM,aAAa9C,SAASA,MAAMsC,OAAO,GACxE;gBACA,IAAI,OAAOnC,cAAc,UAAU;oBACjCS,OAAOC,OAAO,CAACV,WAAWJ,OAAO,CAAC,CAAC,CAACe,WAAWE,WAAW;wBACxD,IAAIA,eAAe,QAASG,MAAMC,OAAO,CAACJ,eAAeA,WAAWoC,MAAM,KAAK,GAAI;4BACjF9D,sBAAsB2B,IAAI,CAAC;gCACzBK,QAAQR;gCACR3B,MAAMkD;4BACR;4BACA;wBACF;wBAEAzE,sBAAsB;4BACpByF,SAAS;gCACP/B,QAAQR;gCACR3B,MAAMkD;4BACR;4BACA9D,MAAMyC;4BACNhB;4BACAZ;wBACF;oBACF;gBACF;gBACA;YACF,OAAO,IAAI+B,MAAMC,OAAO,CAACpB,MAAM8C,UAAU,KAAM,aAAa9C,SAASA,MAAMsC,OAAO,EAAG;gBACnF,IAAInC,cAAc,QAASgB,MAAMC,OAAO,CAACjB,cAAcA,UAAUiD,MAAM,KAAK,GAAI;oBAC9E9D,sBAAsB2B,IAAI,CAAC;wBACzBK,QAAQ1B;wBACRT,MAAMkD;oBACR;oBACA;gBACF;gBAEAzE,sBAAsB;oBACpByF,SAAS;wBACP/B,QAAQ1B;wBACRT,MAAMkD;oBACR;oBACA9D,MAAM4B;oBACNH;oBACAZ;gBACF;gBACA;YACF,OAAO;gBACL,IACE,CAACkB,eACDH,aACA,OAAOA,cAAc,YACrB,QAAQA,aACRA,WAAW+B,IACX;oBACA/B,YAAYA,UAAU+B,EAAE;gBAC1B,OAAO,IAAI5B,aAAa;oBACtB,IAAI,OAAOH,cAAc,UAAU;wBACjCS,OAAOC,OAAO,CAACV,WAAWJ,OAAO,CAAC,CAAC,CAACe,WAAWE,WAAW;4BACxD,IAAI,OAAOA,eAAe,UAAU;gCAClC,IAAIA,cAAc,QAAQA,cAAcA,YAAYkB,IAAI;oCACtD/B,SAAS,CAACW,UAAU,GAAGE,WAAWkB,EAAE;gCACtC;4BACF,OAAO;gCACL/B,SAAS,CAACW,UAAU,GAAGE;4BACzB;wBACF;oBACF;gBACF;YACF;QACF;QAEA,IAAIhB,MAAMO,IAAI,KAAK,UAAUP,MAAMsC,OAAO,EAAE;YAC1C,MAAMgB,WAAW,GAAGnE,QAAQ,KAAKa,MAAMI,IAAI,EAAE;YAE7C,IAAIE,aAAa;gBACf,IAAI,OAAOH,cAAc,UAAU;oBACjCS,OAAOC,OAAO,CAACV,WAAWJ,OAAO,CAAC,CAAC,CAACe,WAAWE,WAAW;wBACxD,IAAIG,MAAMC,OAAO,CAACJ,aAAa;4BAC7B,IAAI,CAACA,WAAWoC,MAAM,EAAE;gCACtBzD,cAAcsB,IAAI,CAAC;oCAAEK,QAAQR;oCAAW3B,MAAMmE;gCAAS;gCACvD;4BACF;4BAEAxF,eAAe;gCACbuF,SAAS;oCACP/B,QAAQR;oCACR3B,MAAMmE;gCACR;gCACA/E,MAAMyC;gCACNtB;4BACF;wBACF;oBACF;gBACF;YACF,OAAO,IAAIyB,MAAMC,OAAO,CAACjB,YAAY;gBACnC,IAAI,CAACA,UAAUiD,MAAM,EAAE;oBACrBzD,cAAcsB,IAAI,CAAC;wBAAEK,QAAQ1B;wBAA0BT,MAAMmE;oBAAS;oBACtE;gBACF;gBAEAxF,eAAe;oBACbuF,SAAS;wBACP/B,QAAQ1B;wBACRT,MAAMmE;oBACR;oBACA/E,MAAM4B;oBACNT;gBACF;YACF;YAEA;QACF;QAEA,IAAIM,MAAMO,IAAI,KAAK,YAAYP,MAAMsC,OAAO,EAAE;YAC5C,MAAMiB,aAAa,GAAGpE,QAAQ,KAAKa,MAAMI,IAAI,EAAE;YAE/C,IAAIE,aAAa;gBACf,IAAI,OAAOH,cAAc,UAAU;oBACjCS,OAAOC,OAAO,CAACV,WAAWJ,OAAO,CAAC,CAAC,CAACe,WAAWE,WAAW;wBACxD,IAAIG,MAAMC,OAAO,CAACJ,aAAa;4BAC7B,IAAI,CAACA,WAAWoC,MAAM,EAAE;gCACtBpE,gBAAgBiC,IAAI,CAAC;oCAAEK,QAAQR;oCAAW3B,MAAMoE;gCAAW;gCAC3D;4BACF;4BAEA5F,iBAAiB;gCACf0F,SAAS;oCACP/B,QAAQR;oCACR3B,MAAMoE;gCACR;gCACAhF,MAAMyC;gCACNjC;4BACF;wBACF;oBACF;gBACF;YACF,OAAO,IAAIoC,MAAMC,OAAO,CAACjB,YAAY;gBACnC,IAAI,CAACA,UAAUiD,MAAM,EAAE;oBACrBpE,gBAAgBiC,IAAI,CAAC;wBAAEK,QAAQ1B;wBAA0BT,MAAMoE;oBAAW;oBAC1E;gBACF;gBAEA5F,iBAAiB;oBACf0F,SAAS;wBACP/B,QAAQ1B;wBACRT,MAAMoE;oBACR;oBACAhF,MAAM4B;oBACNpB;gBACF;YACF;YAEA;QACF;QAEA,IAAIiB,MAAMO,IAAI,KAAK,YAAYP,MAAMsC,OAAO,EAAE;YAC5C,IAAInC,cAAcE,WAAW;gBAC3B;YACF;YAEA,MAAMmD,kBAAkBxF,QAAQyC,YAAY,CAACC,GAAG,CAAC,GAAGxB,gBAAgB,CAAC,EAAEe,YAAY;YACnF,IAAI,CAACT,OAAO,CAACgE,gBAAgB,EAAE;gBAC7BhE,OAAO,CAACgE,gBAAgB,GAAG,EAAE;YAC/B;YACA,IAAI,CAAC/D,eAAe,CAAC+D,gBAAgB,EAAE;gBACrC/D,eAAe,CAAC+D,gBAAgB,GAAG,EAAE;YACvC;YAEA,MAAMC,eAAe5E,qBAAsBN,KAAKuB,KAAK,IAAIvB,KAAK2D,EAAE,GAAI7B;YAEpE,IAAIC,aAAa;gBACf,IAAI,OAAO/B,IAAI,CAACyB,MAAMI,IAAI,CAAC,KAAK,YAAY7B,IAAI,CAACyB,MAAMI,IAAI,CAAC,KAAK,MAAM;oBACrEQ,OAAOC,OAAO,CAACtC,IAAI,CAACyB,MAAMI,IAAI,CAAC,EAAEL,OAAO,CAAC,CAAC,CAACe,WAAWE,WAAW;wBAC/D,IAAIG,MAAMC,OAAO,CAACJ,aAAa;4BAC7BvB,eAAe,CAAC+D,gBAAgB,CAACvC,IAAI,CAAC;gCAAEK,QAAQR;gCAAW4C,QAAQD;4BAAa;4BAEhF,MAAMpC,UAAUxD,iBAAiB;gCAC/BqE,IAAIuB;gCACJlF,MAAMyC;gCACNM,QAAQR;4BACV;4BAEAtB,OAAO,CAACgE,gBAAgB,GAAGhE,OAAO,CAACgE,gBAAgB,CAAChC,MAAM,CAACH;wBAC7D;oBACF;gBACF;YACF,OAAO,IAAIF,MAAMC,OAAO,CAAC7C,IAAI,CAACyB,MAAMI,IAAI,CAAC,GAAG;gBAC1CX,eAAe,CAAC+D,gBAAgB,CAACvC,IAAI,CAAC;oBACpCK,QAAQ1B;oBACR8D,QAAQD;gBACV;gBAEA,MAAMpC,UAAUxD,iBAAiB;oBAC/BqE,IAAIuB;oBACJlF,MAAMA,IAAI,CAACyB,MAAMI,IAAI,CAAC;oBACtBkB,QAAQ1B;gBACV;gBAEAJ,OAAO,CAACgE,gBAAgB,GAAGhE,OAAO,CAACgE,gBAAgB,CAAChC,MAAM,CAACH;YAC7D;YAEA;QACF;QAEA,MAAMsC,oBAA4E,EAAE;QAEpF,IAAIrD,aAAa;YACf,IAAI,OAAOH,cAAc,YAAYA,cAAc,MAAM;gBACvDS,OAAOC,OAAO,CAACV,WAAWJ,OAAO,CAAC,CAAC,CAACe,WAAWE,WAAW;oBACxD,IAAI,CAAClC,OAAO,CAACgC,UAAU,EAAE;wBACvBhC,OAAO,CAACgC,UAAU,GAAG,CAAC;oBACxB;oBAEA6C,kBAAkB1C,IAAI,CAAC;wBACrBH;wBACA8C,KAAK9E;wBACL6B,OAAOK;oBACT;gBACF;YACF;QACF,OAAO;YACL,IAAI4C,MAAMrE;YAEV,IAAIX,cAAc;gBAChB,IAAI,CAACE,OAAO,CAACF,aAAa,EAAE;oBAC1BE,OAAO,CAACF,aAAa,GAAG,CAAC;gBAC3B;gBACAgF,MAAM9E,OAAO,CAACF,aAAa;YAC7B;YAEA+E,kBAAkB1C,IAAI,CAAC;gBAAE2C;gBAAKjD,OAAOR;YAAU;QACjD;QAEAwD,kBAAkB5D,OAAO,CAAC,CAAC,EAAEe,SAAS,EAAE8C,GAAG,EAAEjD,KAAK,EAAE;YAClD,IAAIkD,iBAAiBlD;YAErB,IAAIX,MAAMO,IAAI,KAAK,QAAQ;gBACzB,IAAIL,cAAc,eAAe2D,mBAAmB,MAAM;oBACxD,8EAA8E;oBAC9E,6EAA6E;oBAC7E,QAAO,sBAAsB;gBAC/B,OAAO,IAAI3D,cAAc,eAAe,OAAO2D,mBAAmB,aAAa;oBAC7E,sEAAsE;oBACtEA,iBAAiB,IAAIC,OAAOC,WAAW;gBACzC,OAAO;oBACL,IAAI,OAAOpD,UAAU,YAAY,CAACqD,OAAOC,KAAK,CAACtD,QAAQ;wBACrDkD,iBAAiB,IAAIC,KAAKnD,OAAOoD,WAAW;oBAC9C,OAAO,IAAIpD,iBAAiBmD,MAAM;wBAChCD,iBAAiBlD,MAAMoD,WAAW;oBACpC;gBACF;YACF;YAEA,IAAI,OAAOpD,UAAU,aAAa;gBAChC,IAAIA,SAASX,MAAMO,IAAI,KAAK,WAAWvC,QAAQoC,IAAI,KAAK,UAAU;oBAChEyD,iBAAiB5G,GAAG,CAAC,mBAAmB,EAAEiH,KAAKC,SAAS,CAACxD,OAAO,CAAC,CAAC;gBACpE;gBAEA,IAAIX,MAAMO,IAAI,KAAK,UAAUI,SAAS,OAAOA,UAAU,UAAU;oBAC/DkD,iBAAiBK,KAAKC,SAAS,CAACxD;gBAClC;gBAEA,IACEX,MAAMO,IAAI,KAAK,YACfI,SACA,OAAOA,UAAU,YACjB,UAAUA,SACV,OAAOA,MAAMyD,IAAI,KAAK,UACtB;oBACA,IAAI,CAAC5F,oBAAoB;wBACvB,MAAM,IAAItB,SACR;oBAEJ;oBAEA2G,iBAAiB5G,IAAIoH,GAAG,CAAC,GAAGpE,WAAW,GAAG,EAAEU,MAAMyD,IAAI,EAAE;gBAC1D;YACF;YAEA,IAAI,OAAOP,mBAAmB,aAAa;gBACzC,IAAI/C,WAAW;oBACb8C,GAAG,CAAC9C,UAAU,CAACZ,UAAU,GAAG2D;gBAC9B,OAAO;oBACLD,GAAG,CAAC1D,UAAU,GAAG2D;gBACnB;YACF;QACF;IACF;IAEA,mDAAmD;IACnD,IAAI,CAAChE,eAAe;QAClBe,OAAO0D,IAAI,CAAC/F,MAAMwB,OAAO,CAAC,CAACwE;YACzB,IAAIpH,mBAAmB;gBAAEoH;gBAAKC,QAAQjG;YAAK,IAAI;gBAC7C,yDAAyD;gBACzD,iFAAiF;gBACjFR,eAAe;oBACbC;oBACAC;oBACAC;oBACAC;oBACAC;oBACAC;oBACAC;oBACAC;oBACAC;oBACAC;oBACAC;oBACAC;oBACAC;oBACAC;oBACAC;oBACAC;oBACAC;oBACAC;oBACAC;oBACAC;oBACAC;oBACAC;oBACAC;oBACAC;oBACAC;oBACAC;oBACAC;oBACAC;oBACAC;gBACF;YACF;QACF;IACF;AACF,EAAC"}
@@ -42,6 +42,10 @@ export type NumberToDelete = {
42
42
  locale?: string;
43
43
  path: string;
44
44
  };
45
+ export type SelectToDelete = {
46
+ locale?: string;
47
+ parent?: unknown;
48
+ };
45
49
  export type RowToInsert = {
46
50
  arrays: {
47
51
  [tableName: string]: ArrayRowToInsert[];
@@ -65,6 +69,9 @@ export type RowToInsert = {
65
69
  selects: {
66
70
  [tableName: string]: Record<string, unknown>[];
67
71
  };
72
+ selectsToDelete: {
73
+ [tableName: string]: SelectToDelete[];
74
+ };
68
75
  texts: Record<string, unknown>[];
69
76
  textsToDelete: TextToDelete[];
70
77
  };
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/transform/write/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,gBAAgB,GAAG;IAC7B,MAAM,EAAE;QACN,CAAC,SAAS,EAAE,MAAM,GAAG,gBAAgB,EAAE,CAAA;KACxC,CAAA;IACD,YAAY,EAAE;QACZ,CAAC,SAAS,EAAE,MAAM,GAAG,gBAAgB,EAAE,CAAA;KACxC,CAAA;IACD,OAAO,EAAE;QACP,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAC1C,CAAA;IACD,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAC7B,CAAA;AAED,MAAM,MAAM,gBAAgB,GAAG;IAC7B,MAAM,EAAE;QACN,CAAC,SAAS,EAAE,MAAM,GAAG,gBAAgB,EAAE,CAAA;KACxC,CAAA;IACD,YAAY,EAAE;QACZ,CAAC,SAAS,EAAE,MAAM,GAAG,gBAAgB,EAAE,CAAA;KACxC,CAAA;IACD,OAAO,EAAE;QACP,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAC1C,CAAA;IACD,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAC7B,CAAA;AAED,MAAM,MAAM,oBAAoB,GAAG;IACjC,YAAY,CAAC,EAAE,GAAG,CAAA;IAClB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,MAAM,CAAA;IACZ,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB,CAAA;AAED,MAAM,MAAM,oBAAoB,GAAG;IACjC,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,MAAM,CAAA;IACZ,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,KAAK,EAAE,GAAG,CAAA;CACX,CAAA;AAED,MAAM,MAAM,YAAY,GAAG;IACzB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,MAAM,CAAA;CACb,CAAA;AAED,MAAM,MAAM,cAAc,GAAG;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,MAAM,CAAA;CACb,CAAA;AAED,MAAM,MAAM,WAAW,GAAG;IACxB,MAAM,EAAE;QACN,CAAC,SAAS,EAAE,MAAM,GAAG,gBAAgB,EAAE,CAAA;KACxC,CAAA;IACD,YAAY,EAAE;QACZ,CAAC,SAAS,EAAE,MAAM,GAAG,gBAAgB,EAAE,CAAA;KACxC,CAAA;IACD,MAAM,EAAE;QACN,CAAC,SAAS,EAAE,MAAM,GAAG,gBAAgB,EAAE,CAAA;KACxC,CAAA;IACD,cAAc,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IAC3B,OAAO,EAAE;QACP,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAC1C,CAAA;IACD,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAA;IAClC,eAAe,EAAE,cAAc,EAAE,CAAA;IACjC,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAA;IACxC,qBAAqB,EAAE,oBAAoB,EAAE,CAAA;IAC7C,qBAAqB,EAAE,oBAAoB,EAAE,CAAA;IAC7C,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC5B,OAAO,EAAE;QACP,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAA;KAC/C,CAAA;IACD,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAA;IAChC,aAAa,EAAE,YAAY,EAAE,CAAA;CAC9B,CAAA"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/transform/write/types.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/transform/write/types.ts"],"sourcesContent":["export type ArrayRowToInsert = {\n arrays: {\n [tableName: string]: ArrayRowToInsert[]\n }\n arraysToPush: {\n [tableName: string]: ArrayRowToInsert[]\n }\n locales: {\n [locale: string]: Record<string, unknown>\n }\n row: Record<string, unknown>\n}\n\nexport type BlockRowToInsert = {\n arrays: {\n [tableName: string]: ArrayRowToInsert[]\n }\n arraysToPush: {\n [tableName: string]: ArrayRowToInsert[]\n }\n locales: {\n [locale: string]: Record<string, unknown>\n }\n row: Record<string, unknown>\n}\n\nexport type RelationshipToDelete = {\n itemToRemove?: any // For $remove operations - stores the item data to match\n locale?: string\n path: string\n relationTo?: string // For simple relationships - stores the relationTo field\n}\n\nexport type RelationshipToAppend = {\n locale?: string\n path: string\n relationTo?: string // For polymorphic relationships\n value: any\n}\n\nexport type TextToDelete = {\n locale?: string\n path: string\n}\n\nexport type NumberToDelete = {\n locale?: string\n path: string\n}\n\nexport type RowToInsert = {\n arrays: {\n [tableName: string]: ArrayRowToInsert[]\n }\n arraysToPush: {\n [tableName: string]: ArrayRowToInsert[]\n }\n blocks: {\n [tableName: string]: BlockRowToInsert[]\n }\n blocksToDelete: Set<string>\n locales: {\n [locale: string]: Record<string, unknown>\n }\n numbers: Record<string, unknown>[]\n numbersToDelete: NumberToDelete[]\n relationships: Record<string, unknown>[]\n relationshipsToAppend: RelationshipToAppend[]\n relationshipsToDelete: RelationshipToDelete[]\n row: Record<string, unknown>\n selects: {\n [tableName: string]: Record<string, unknown>[]\n }\n texts: Record<string, unknown>[]\n textsToDelete: TextToDelete[]\n}\n"],"names":[],"mappings":"AAkDA,WAyBC"}
1
+ {"version":3,"sources":["../../../src/transform/write/types.ts"],"sourcesContent":["export type ArrayRowToInsert = {\n arrays: {\n [tableName: string]: ArrayRowToInsert[]\n }\n arraysToPush: {\n [tableName: string]: ArrayRowToInsert[]\n }\n locales: {\n [locale: string]: Record<string, unknown>\n }\n row: Record<string, unknown>\n}\n\nexport type BlockRowToInsert = {\n arrays: {\n [tableName: string]: ArrayRowToInsert[]\n }\n arraysToPush: {\n [tableName: string]: ArrayRowToInsert[]\n }\n locales: {\n [locale: string]: Record<string, unknown>\n }\n row: Record<string, unknown>\n}\n\nexport type RelationshipToDelete = {\n itemToRemove?: any // For $remove operations - stores the item data to match\n locale?: string\n path: string\n relationTo?: string // For simple relationships - stores the relationTo field\n}\n\nexport type RelationshipToAppend = {\n locale?: string\n path: string\n relationTo?: string // For polymorphic relationships\n value: any\n}\n\nexport type TextToDelete = {\n locale?: string\n path: string\n}\n\nexport type NumberToDelete = {\n locale?: string\n path: string\n}\n\nexport type SelectToDelete = {\n locale?: string\n parent?: unknown\n}\n\nexport type RowToInsert = {\n arrays: {\n [tableName: string]: ArrayRowToInsert[]\n }\n arraysToPush: {\n [tableName: string]: ArrayRowToInsert[]\n }\n blocks: {\n [tableName: string]: BlockRowToInsert[]\n }\n blocksToDelete: Set<string>\n locales: {\n [locale: string]: Record<string, unknown>\n }\n numbers: Record<string, unknown>[]\n numbersToDelete: NumberToDelete[]\n relationships: Record<string, unknown>[]\n relationshipsToAppend: RelationshipToAppend[]\n relationshipsToDelete: RelationshipToDelete[]\n row: Record<string, unknown>\n selects: {\n [tableName: string]: Record<string, unknown>[]\n }\n selectsToDelete: {\n [tableName: string]: SelectToDelete[]\n }\n texts: Record<string, unknown>[]\n textsToDelete: TextToDelete[]\n}\n"],"names":[],"mappings":"AAuDA,WA4BC"}
package/dist/types.d.ts CHANGED
@@ -4,14 +4,14 @@ import type { NodePgDatabase, NodePgQueryResultHKT } from 'drizzle-orm/node-post
4
4
  import type { PgColumn, PgTable, PgTransaction, Precision, UpdateDeleteAction } from 'drizzle-orm/pg-core';
5
5
  import type { SQLiteColumn, SQLiteTable, SQLiteTransaction } from 'drizzle-orm/sqlite-core';
6
6
  import type { Result } from 'drizzle-orm/sqlite-core/session';
7
- import type { BaseDatabaseAdapter, FlattenedField, MigrationData, Payload, PayloadRequest } from 'payload';
7
+ import type { BaseDatabaseAdapter, FlattenedField, MigrationData, Operator, Payload, PayloadRequest } from 'payload';
8
8
  import type { BuildQueryJoinAliases } from './queries/buildQuery.js';
9
9
  export { BuildQueryJoinAliases };
10
10
  import type { ResultSet } from '@libsql/client';
11
11
  import type { DrizzleSnapshotJSON } from 'drizzle-kit/api';
12
12
  import type { SQLiteRaw } from 'drizzle-orm/sqlite-core/query-builders/raw';
13
13
  import type { QueryResult } from 'pg';
14
- import type { Operators } from './queries/operatorMap.js';
14
+ import type { DrizzleResolvedOperator, Operators } from './queries/operatorMap.js';
15
15
  export type PostgresDB = NodePgDatabase<Record<string, unknown>>;
16
16
  export type SQLiteDB = LibSQLDatabase<Record<string, GenericRelation | GenericTable> & Record<string, unknown>>;
17
17
  export type GenericPgColumn = PgColumn<ColumnBaseConfig<ColumnDataType, string>, Record<string, unknown>>;
@@ -63,11 +63,12 @@ export type Execute<T> = (args: {
63
63
  }>> | SQLiteRaw<ResultSet>;
64
64
  export type Insert = (args: {
65
65
  db: DrizzleTransaction | LibSQLDatabase | PostgresDB;
66
+ onConflictDoNothing?: unknown;
66
67
  onConflictDoUpdate?: unknown;
67
68
  tableName: string;
68
69
  values: Record<string, unknown> | Record<string, unknown>[];
69
70
  }) => Promise<Record<string, unknown>[]>;
70
- export type RequireDrizzleKit = () => {
71
+ export type RequireDrizzleKit = () => Promise<{
71
72
  generateDrizzleJson: (args: Record<string, unknown>) => DrizzleSnapshotJSON | Promise<DrizzleSnapshotJSON>;
72
73
  generateMigration: (prev: DrizzleSnapshotJSON, cur: DrizzleSnapshotJSON) => Promise<string[]>;
73
74
  pushSchema: (schema: Record<string, unknown>, drizzle: DrizzleAdapter['drizzle'], filterSchema?: string[], tablesFilter?: string[], extensionsFilter?: string[]) => Promise<{
@@ -76,7 +77,7 @@ export type RequireDrizzleKit = () => {
76
77
  warnings: any;
77
78
  }>;
78
79
  upSnapshot?: (snapshot: Record<string, unknown>) => DrizzleSnapshotJSON;
79
- };
80
+ }>;
80
81
  export type Migration = {
81
82
  down: ({ db, payload, req, }: {
82
83
  db?: DrizzleTransaction | LibSQLDatabase<Record<string, never>> | PostgresDB;
@@ -273,6 +274,53 @@ export interface BlocksToJsonMigrator {
273
274
  setTempFolder(tempFolderPath: string): void;
274
275
  updatePayloadConfigFile(): Promise<void>;
275
276
  }
277
+ /**
278
+ * The information passed to a query-operator handler for one user-facing leaf comparison.
279
+ */
280
+ export type DrizzleOperatorHandlerContext = {
281
+ adapter: DrizzleAdapter;
282
+ column: Column | SQL;
283
+ field: FlattenedField;
284
+ locale?: string;
285
+ /** The operator supplied by the Payload query, before any adapter conversions. */
286
+ originalOperator: Operator;
287
+ path: string;
288
+ /** The operator actually sent to the database after Payload's existing conversions. */
289
+ resolvedOperator: DrizzleResolvedOperator;
290
+ storage: 'column';
291
+ value: unknown;
292
+ };
293
+ /**
294
+ * Transforms the column and/or value of a matching operator before the default (or replacement)
295
+ * comparison runs. Multiple matching transform handlers compose in configuration order.
296
+ */
297
+ export type DrizzleOperandTransformHandler = {
298
+ build?: never;
299
+ /** Restricts the handler to these Payload field types. Omit to match every field type. */
300
+ fieldTypes?: FlattenedField['type'][];
301
+ name: string;
302
+ operators: DrizzleResolvedOperator[];
303
+ transformOperands: (context: DrizzleOperatorHandlerContext) => {
304
+ column: Column | SQL;
305
+ value: unknown;
306
+ };
307
+ };
308
+ /**
309
+ * Replaces the default comparison for a matching operator entirely. Runs after every matching
310
+ * `transformOperands` handler has already run.
311
+ */
312
+ export type DrizzleOperatorReplacementHandler = {
313
+ build: (context: DrizzleOperatorHandlerContext) => SQL;
314
+ /** Restricts the handler to these Payload field types. Omit to match every field type. */
315
+ fieldTypes?: FlattenedField['type'][];
316
+ name: string;
317
+ operators: DrizzleResolvedOperator[];
318
+ transformOperands?: never;
319
+ };
320
+ export type DrizzleOperatorHandler = DrizzleOperandTransformHandler | DrizzleOperatorReplacementHandler;
321
+ export type DrizzleQueryConfig = {
322
+ operatorHandlers?: DrizzleOperatorHandler[];
323
+ };
276
324
  export interface DrizzleAdapter extends BaseDatabaseAdapter {
277
325
  blocksAsJSON?: boolean;
278
326
  blocksToJsonMigrator?: BlocksToJsonMigrator;
@@ -307,6 +355,7 @@ export interface DrizzleAdapter extends BaseDatabaseAdapter {
307
355
  limitedBoundParameters?: boolean;
308
356
  localesSuffix?: string;
309
357
  logger: DrizzleConfig['logger'];
358
+ operatorHandlers: DrizzleOperatorHandler[];
310
359
  operators: Operators;
311
360
  /**
312
361
  * When read replicas are configured, holds the unwrapped primary drizzle instance
@@ -348,8 +397,4 @@ export type RelationMap = Map<string, {
348
397
  target: string;
349
398
  type: 'many' | 'one';
350
399
  }>;
351
- /**
352
- * @deprecated - will be removed in 4.0. Use query + $dynamic() instead: https://orm.drizzle.team/docs/dynamic-query-building
353
- */
354
- export type { ChainedMethods } from './find/chainMethods.js';
355
400
  //# sourceMappingURL=types.d.ts.map