@payloadcms/drizzle 3.0.0-beta.100

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 (378) hide show
  1. package/README.md +3 -0
  2. package/dist/count.d.ts +3 -0
  3. package/dist/count.d.ts.map +1 -0
  4. package/dist/count.js +25 -0
  5. package/dist/count.js.map +1 -0
  6. package/dist/create.d.ts +3 -0
  7. package/dist/create.d.ts.map +1 -0
  8. package/dist/create.js +19 -0
  9. package/dist/create.js.map +1 -0
  10. package/dist/createGlobal.d.ts +4 -0
  11. package/dist/createGlobal.d.ts.map +1 -0
  12. package/dist/createGlobal.js +19 -0
  13. package/dist/createGlobal.js.map +1 -0
  14. package/dist/createGlobalVersion.d.ts +4 -0
  15. package/dist/createGlobalVersion.d.ts.map +1 -0
  16. package/dist/createGlobalVersion.js +36 -0
  17. package/dist/createGlobalVersion.js.map +1 -0
  18. package/dist/createTableName.d.ts +31 -0
  19. package/dist/createTableName.d.ts.map +1 -0
  20. package/dist/createTableName.js +35 -0
  21. package/dist/createTableName.js.map +1 -0
  22. package/dist/createVersion.d.ts +4 -0
  23. package/dist/createVersion.d.ts.map +1 -0
  24. package/dist/createVersion.js +45 -0
  25. package/dist/createVersion.js.map +1 -0
  26. package/dist/deleteMany.d.ts +3 -0
  27. package/dist/deleteMany.d.ts.map +1 -0
  28. package/dist/deleteMany.js +32 -0
  29. package/dist/deleteMany.js.map +1 -0
  30. package/dist/deleteOne.d.ts +3 -0
  31. package/dist/deleteOne.d.ts.map +1 -0
  32. package/dist/deleteOne.js +63 -0
  33. package/dist/deleteOne.js.map +1 -0
  34. package/dist/deleteVersions.d.ts +3 -0
  35. package/dist/deleteVersions.d.ts.map +1 -0
  36. package/dist/deleteVersions.js +35 -0
  37. package/dist/deleteVersions.js.map +1 -0
  38. package/dist/destroy.d.ts +3 -0
  39. package/dist/destroy.d.ts.map +1 -0
  40. package/dist/destroy.js +17 -0
  41. package/dist/destroy.js.map +1 -0
  42. package/dist/exports/postgres.d.ts +14 -0
  43. package/dist/exports/postgres.d.ts.map +1 -0
  44. package/dist/exports/postgres.js +15 -0
  45. package/dist/exports/postgres.js.map +1 -0
  46. package/dist/find/buildFindManyArgs.d.ts +17 -0
  47. package/dist/find/buildFindManyArgs.d.ts.map +1 -0
  48. package/dist/find/buildFindManyArgs.js +66 -0
  49. package/dist/find/buildFindManyArgs.js.map +1 -0
  50. package/dist/find/chainMethods.d.ts +16 -0
  51. package/dist/find/chainMethods.d.ts.map +1 -0
  52. package/dist/find/chainMethods.js +12 -0
  53. package/dist/find/chainMethods.js.map +1 -0
  54. package/dist/find/findMany.d.ts +21 -0
  55. package/dist/find/findMany.d.ts.map +1 -0
  56. package/dist/find/findMany.js +141 -0
  57. package/dist/find/findMany.js.map +1 -0
  58. package/dist/find/traverseFields.d.ts +18 -0
  59. package/dist/find/traverseFields.d.ts.map +1 -0
  60. package/dist/find/traverseFields.js +164 -0
  61. package/dist/find/traverseFields.js.map +1 -0
  62. package/dist/find.d.ts +3 -0
  63. package/dist/find.d.ts.map +1 -0
  64. package/dist/find.js +21 -0
  65. package/dist/find.js.map +1 -0
  66. package/dist/findGlobal.d.ts +3 -0
  67. package/dist/findGlobal.d.ts.map +1 -0
  68. package/dist/findGlobal.js +23 -0
  69. package/dist/findGlobal.js.map +1 -0
  70. package/dist/findGlobalVersions.d.ts +3 -0
  71. package/dist/findGlobalVersions.d.ts.map +1 -0
  72. package/dist/findGlobalVersions.js +24 -0
  73. package/dist/findGlobalVersions.js.map +1 -0
  74. package/dist/findMigrationDir.d.ts +16 -0
  75. package/dist/findMigrationDir.d.ts.map +1 -0
  76. package/dist/findMigrationDir.js +38 -0
  77. package/dist/findMigrationDir.js.map +1 -0
  78. package/dist/findOne.d.ts +4 -0
  79. package/dist/findOne.d.ts.map +1 -0
  80. package/dist/findOne.js +21 -0
  81. package/dist/findOne.js.map +1 -0
  82. package/dist/findVersions.d.ts +3 -0
  83. package/dist/findVersions.d.ts.map +1 -0
  84. package/dist/findVersions.js +24 -0
  85. package/dist/findVersions.js.map +1 -0
  86. package/dist/index.d.ts +38 -0
  87. package/dist/index.d.ts.map +1 -0
  88. package/dist/index.js +38 -0
  89. package/dist/index.js.map +1 -0
  90. package/dist/migrate.d.ts +3 -0
  91. package/dist/migrate.d.ts.map +1 -0
  92. package/dist/migrate.js +94 -0
  93. package/dist/migrate.js.map +1 -0
  94. package/dist/migrateDown.d.ts +3 -0
  95. package/dist/migrateDown.d.ts.map +1 -0
  96. package/dist/migrateDown.js +63 -0
  97. package/dist/migrateDown.js.map +1 -0
  98. package/dist/migrateFresh.d.ts +8 -0
  99. package/dist/migrateFresh.d.ts.map +1 -0
  100. package/dist/migrateFresh.js +76 -0
  101. package/dist/migrateFresh.js.map +1 -0
  102. package/dist/migrateRefresh.d.ts +6 -0
  103. package/dist/migrateRefresh.d.ts.map +1 -0
  104. package/dist/migrateRefresh.js +103 -0
  105. package/dist/migrateRefresh.js.map +1 -0
  106. package/dist/migrateReset.d.ts +6 -0
  107. package/dist/migrateReset.d.ts.map +1 -0
  108. package/dist/migrateReset.js +84 -0
  109. package/dist/migrateReset.js.map +1 -0
  110. package/dist/migrateStatus.d.ts +3 -0
  111. package/dist/migrateStatus.d.ts.map +1 -0
  112. package/dist/migrateStatus.js +43 -0
  113. package/dist/migrateStatus.js.map +1 -0
  114. package/dist/postgres/countDistinct.d.ts +3 -0
  115. package/dist/postgres/countDistinct.d.ts.map +1 -0
  116. package/dist/postgres/countDistinct.js +24 -0
  117. package/dist/postgres/countDistinct.js.map +1 -0
  118. package/dist/postgres/createJSONQuery/convertPathToJSONTraversal.d.ts +2 -0
  119. package/dist/postgres/createJSONQuery/convertPathToJSONTraversal.d.ts.map +1 -0
  120. package/dist/postgres/createJSONQuery/convertPathToJSONTraversal.js +16 -0
  121. package/dist/postgres/createJSONQuery/convertPathToJSONTraversal.js.map +1 -0
  122. package/dist/postgres/createJSONQuery/formatJSONPathSegment.d.ts +2 -0
  123. package/dist/postgres/createJSONQuery/formatJSONPathSegment.d.ts.map +1 -0
  124. package/dist/postgres/createJSONQuery/formatJSONPathSegment.js +5 -0
  125. package/dist/postgres/createJSONQuery/formatJSONPathSegment.js.map +1 -0
  126. package/dist/postgres/createJSONQuery/index.d.ts +10 -0
  127. package/dist/postgres/createJSONQuery/index.d.ts.map +1 -0
  128. package/dist/postgres/createJSONQuery/index.js +54 -0
  129. package/dist/postgres/createJSONQuery/index.js.map +1 -0
  130. package/dist/postgres/createMigration.d.ts +3 -0
  131. package/dist/postgres/createMigration.d.ts.map +1 -0
  132. package/dist/postgres/createMigration.js +92 -0
  133. package/dist/postgres/createMigration.js.map +1 -0
  134. package/dist/postgres/defaultSnapshot.d.ts +3 -0
  135. package/dist/postgres/defaultSnapshot.d.ts.map +1 -0
  136. package/dist/postgres/defaultSnapshot.js +17 -0
  137. package/dist/postgres/defaultSnapshot.js.map +1 -0
  138. package/dist/postgres/deleteWhere.d.ts +3 -0
  139. package/dist/postgres/deleteWhere.d.ts.map +1 -0
  140. package/dist/postgres/deleteWhere.js +6 -0
  141. package/dist/postgres/deleteWhere.js.map +1 -0
  142. package/dist/postgres/dropDatabase.d.ts +3 -0
  143. package/dist/postgres/dropDatabase.d.ts.map +1 -0
  144. package/dist/postgres/dropDatabase.js +9 -0
  145. package/dist/postgres/dropDatabase.js.map +1 -0
  146. package/dist/postgres/execute.d.ts +3 -0
  147. package/dist/postgres/execute.d.ts.map +1 -0
  148. package/dist/postgres/execute.js +11 -0
  149. package/dist/postgres/execute.js.map +1 -0
  150. package/dist/postgres/getMigrationTemplate.d.ts +4 -0
  151. package/dist/postgres/getMigrationTemplate.d.ts.map +1 -0
  152. package/dist/postgres/getMigrationTemplate.js +13 -0
  153. package/dist/postgres/getMigrationTemplate.js.map +1 -0
  154. package/dist/postgres/init.d.ts +3 -0
  155. package/dist/postgres/init.d.ts.map +1 -0
  156. package/dist/postgres/init.js +95 -0
  157. package/dist/postgres/init.js.map +1 -0
  158. package/dist/postgres/insert.d.ts +3 -0
  159. package/dist/postgres/insert.d.ts.map +1 -0
  160. package/dist/postgres/insert.js +12 -0
  161. package/dist/postgres/insert.js.map +1 -0
  162. package/dist/postgres/requireDrizzleKit.d.ts +3 -0
  163. package/dist/postgres/requireDrizzleKit.d.ts.map +1 -0
  164. package/dist/postgres/requireDrizzleKit.js +5 -0
  165. package/dist/postgres/requireDrizzleKit.js.map +1 -0
  166. package/dist/postgres/schema/build.d.ts +40 -0
  167. package/dist/postgres/schema/build.d.ts.map +1 -0
  168. package/dist/postgres/schema/build.js +377 -0
  169. package/dist/postgres/schema/build.js.map +1 -0
  170. package/dist/postgres/schema/createIndex.d.ts +12 -0
  171. package/dist/postgres/schema/createIndex.d.ts.map +1 -0
  172. package/dist/postgres/schema/createIndex.js +20 -0
  173. package/dist/postgres/schema/createIndex.js.map +1 -0
  174. package/dist/postgres/schema/idToUUID.d.ts +3 -0
  175. package/dist/postgres/schema/idToUUID.d.ts.map +1 -0
  176. package/dist/postgres/schema/idToUUID.js +11 -0
  177. package/dist/postgres/schema/idToUUID.js.map +1 -0
  178. package/dist/postgres/schema/parentIDColumnMap.d.ts +4 -0
  179. package/dist/postgres/schema/parentIDColumnMap.d.ts.map +1 -0
  180. package/dist/postgres/schema/parentIDColumnMap.js +9 -0
  181. package/dist/postgres/schema/parentIDColumnMap.js.map +1 -0
  182. package/dist/postgres/schema/setColumnID.d.ts +11 -0
  183. package/dist/postgres/schema/setColumnID.d.ts.map +1 -0
  184. package/dist/postgres/schema/setColumnID.js +24 -0
  185. package/dist/postgres/schema/setColumnID.js.map +1 -0
  186. package/dist/postgres/schema/traverseFields.d.ts +40 -0
  187. package/dist/postgres/schema/traverseFields.d.ts.map +1 -0
  188. package/dist/postgres/schema/traverseFields.js +712 -0
  189. package/dist/postgres/schema/traverseFields.js.map +1 -0
  190. package/dist/postgres/schema/withDefault.d.ts +4 -0
  191. package/dist/postgres/schema/withDefault.d.ts.map +1 -0
  192. package/dist/postgres/schema/withDefault.js +12 -0
  193. package/dist/postgres/schema/withDefault.js.map +1 -0
  194. package/dist/postgres/types.d.ts +112 -0
  195. package/dist/postgres/types.d.ts.map +1 -0
  196. package/dist/postgres/types.js +3 -0
  197. package/dist/postgres/types.js.map +1 -0
  198. package/dist/queries/buildAndOrConditions.d.ts +16 -0
  199. package/dist/queries/buildAndOrConditions.d.ts.map +1 -0
  200. package/dist/queries/buildAndOrConditions.js +26 -0
  201. package/dist/queries/buildAndOrConditions.js.map +1 -0
  202. package/dist/queries/buildQuery.d.ts +29 -0
  203. package/dist/queries/buildQuery.d.ts.map +1 -0
  204. package/dist/queries/buildQuery.js +72 -0
  205. package/dist/queries/buildQuery.js.map +1 -0
  206. package/dist/queries/getTableAlias.d.ts +13 -0
  207. package/dist/queries/getTableAlias.d.ts.map +1 -0
  208. package/dist/queries/getTableAlias.js +20 -0
  209. package/dist/queries/getTableAlias.js.map +1 -0
  210. package/dist/queries/getTableColumnFromPath.d.ts +51 -0
  211. package/dist/queries/getTableColumnFromPath.d.ts.map +1 -0
  212. package/dist/queries/getTableColumnFromPath.js +534 -0
  213. package/dist/queries/getTableColumnFromPath.js.map +1 -0
  214. package/dist/queries/operatorMap.d.ts +6 -0
  215. package/dist/queries/operatorMap.d.ts.map +1 -0
  216. package/dist/queries/operatorMap.js +24 -0
  217. package/dist/queries/operatorMap.js.map +1 -0
  218. package/dist/queries/parseParams.d.ts +16 -0
  219. package/dist/queries/parseParams.d.ts.map +1 -0
  220. package/dist/queries/parseParams.js +188 -0
  221. package/dist/queries/parseParams.js.map +1 -0
  222. package/dist/queries/sanitizeQueryValue.d.ts +15 -0
  223. package/dist/queries/sanitizeQueryValue.d.ts.map +1 -0
  224. package/dist/queries/sanitizeQueryValue.js +128 -0
  225. package/dist/queries/sanitizeQueryValue.js.map +1 -0
  226. package/dist/queries/selectDistinct.d.ts +21 -0
  227. package/dist/queries/selectDistinct.d.ts.map +1 -0
  228. package/dist/queries/selectDistinct.js +38 -0
  229. package/dist/queries/selectDistinct.js.map +1 -0
  230. package/dist/queryDrafts.d.ts +3 -0
  231. package/dist/queryDrafts.d.ts.map +1 -0
  232. package/dist/queryDrafts.js +39 -0
  233. package/dist/queryDrafts.js.map +1 -0
  234. package/dist/transactions/beginTransaction.d.ts +3 -0
  235. package/dist/transactions/beginTransaction.d.ts.map +1 -0
  236. package/dist/transactions/beginTransaction.js +50 -0
  237. package/dist/transactions/beginTransaction.js.map +1 -0
  238. package/dist/transactions/commitTransaction.d.ts +3 -0
  239. package/dist/transactions/commitTransaction.d.ts.map +1 -0
  240. package/dist/transactions/commitTransaction.js +17 -0
  241. package/dist/transactions/commitTransaction.js.map +1 -0
  242. package/dist/transactions/rollbackTransaction.d.ts +3 -0
  243. package/dist/transactions/rollbackTransaction.d.ts.map +1 -0
  244. package/dist/transactions/rollbackTransaction.js +14 -0
  245. package/dist/transactions/rollbackTransaction.js.map +1 -0
  246. package/dist/transform/read/hasManyNumber.d.ts +11 -0
  247. package/dist/transform/read/hasManyNumber.d.ts.map +1 -0
  248. package/dist/transform/read/hasManyNumber.js +20 -0
  249. package/dist/transform/read/hasManyNumber.js.map +1 -0
  250. package/dist/transform/read/hasManyText.d.ts +11 -0
  251. package/dist/transform/read/hasManyText.d.ts.map +1 -0
  252. package/dist/transform/read/hasManyText.js +20 -0
  253. package/dist/transform/read/hasManyText.js.map +1 -0
  254. package/dist/transform/read/index.d.ts +13 -0
  255. package/dist/transform/read/index.d.ts.map +1 -0
  256. package/dist/transform/read/index.js +44 -0
  257. package/dist/transform/read/index.js.map +1 -0
  258. package/dist/transform/read/relationship.d.ts +11 -0
  259. package/dist/transform/read/relationship.d.ts.map +1 -0
  260. package/dist/transform/read/relationship.js +69 -0
  261. package/dist/transform/read/relationship.js.map +1 -0
  262. package/dist/transform/read/traverseFields.d.ts +60 -0
  263. package/dist/transform/read/traverseFields.d.ts.map +1 -0
  264. package/dist/transform/read/traverseFields.js +456 -0
  265. package/dist/transform/read/traverseFields.js.map +1 -0
  266. package/dist/transform/write/array.d.ts +31 -0
  267. package/dist/transform/write/array.d.ts.map +1 -0
  268. package/dist/transform/write/array.js +62 -0
  269. package/dist/transform/write/array.js.map +1 -0
  270. package/dist/transform/write/blocks.d.ts +30 -0
  271. package/dist/transform/write/blocks.d.ts.map +1 -0
  272. package/dist/transform/write/blocks.js +66 -0
  273. package/dist/transform/write/blocks.js.map +1 -0
  274. package/dist/transform/write/index.d.ts +13 -0
  275. package/dist/transform/write/index.d.ts.map +1 -0
  276. package/dist/transform/write/index.js +41 -0
  277. package/dist/transform/write/index.js.map +1 -0
  278. package/dist/transform/write/numbers.d.ts +8 -0
  279. package/dist/transform/write/numbers.d.ts.map +1 -0
  280. package/dist/transform/write/numbers.js +11 -0
  281. package/dist/transform/write/numbers.js.map +1 -0
  282. package/dist/transform/write/relationships.d.ts +10 -0
  283. package/dist/transform/write/relationships.d.ts.map +1 -0
  284. package/dist/transform/write/relationships.js +27 -0
  285. package/dist/transform/write/relationships.js.map +1 -0
  286. package/dist/transform/write/selects.d.ts +8 -0
  287. package/dist/transform/write/selects.d.ts.map +1 -0
  288. package/dist/transform/write/selects.js +20 -0
  289. package/dist/transform/write/selects.js.map +1 -0
  290. package/dist/transform/write/texts.d.ts +8 -0
  291. package/dist/transform/write/texts.d.ts.map +1 -0
  292. package/dist/transform/write/texts.js +11 -0
  293. package/dist/transform/write/texts.js.map +1 -0
  294. package/dist/transform/write/traverseFields.d.ts +55 -0
  295. package/dist/transform/write/traverseFields.d.ts.map +1 -0
  296. package/dist/transform/write/traverseFields.js +474 -0
  297. package/dist/transform/write/traverseFields.js.map +1 -0
  298. package/dist/transform/write/types.d.ts +43 -0
  299. package/dist/transform/write/types.d.ts.map +1 -0
  300. package/dist/transform/write/types.js +3 -0
  301. package/dist/transform/write/types.js.map +1 -0
  302. package/dist/types.d.ts +145 -0
  303. package/dist/types.d.ts.map +1 -0
  304. package/dist/types.js +3 -0
  305. package/dist/types.js.map +1 -0
  306. package/dist/update.d.ts +3 -0
  307. package/dist/update.d.ts.map +1 -0
  308. package/dist/update.js +54 -0
  309. package/dist/update.js.map +1 -0
  310. package/dist/updateGlobal.d.ts +4 -0
  311. package/dist/updateGlobal.d.ts.map +1 -0
  312. package/dist/updateGlobal.js +25 -0
  313. package/dist/updateGlobal.js.map +1 -0
  314. package/dist/updateGlobalVersion.d.ts +4 -0
  315. package/dist/updateGlobalVersion.d.ts.map +1 -0
  316. package/dist/updateGlobalVersion.js +36 -0
  317. package/dist/updateGlobalVersion.js.map +1 -0
  318. package/dist/updateVersion.d.ts +4 -0
  319. package/dist/updateVersion.d.ts.map +1 -0
  320. package/dist/updateVersion.js +36 -0
  321. package/dist/updateVersion.js.map +1 -0
  322. package/dist/upsertRow/deleteExistingArrayRows.d.ts +10 -0
  323. package/dist/upsertRow/deleteExistingArrayRows.d.ts.map +1 -0
  324. package/dist/upsertRow/deleteExistingArrayRows.js +14 -0
  325. package/dist/upsertRow/deleteExistingArrayRows.js.map +1 -0
  326. package/dist/upsertRow/deleteExistingRowsByPath.d.ts +14 -0
  327. package/dist/upsertRow/deleteExistingRowsByPath.d.ts.map +1 -0
  328. package/dist/upsertRow/deleteExistingRowsByPath.js +45 -0
  329. package/dist/upsertRow/deleteExistingRowsByPath.js.map +1 -0
  330. package/dist/upsertRow/index.d.ts +4 -0
  331. package/dist/upsertRow/index.d.ts.map +1 -0
  332. package/dist/upsertRow/index.js +372 -0
  333. package/dist/upsertRow/index.js.map +1 -0
  334. package/dist/upsertRow/insertArrays.d.ts +13 -0
  335. package/dist/upsertRow/insertArrays.d.ts.map +1 -0
  336. package/dist/upsertRow/insertArrays.js +76 -0
  337. package/dist/upsertRow/insertArrays.js.map +1 -0
  338. package/dist/upsertRow/types.d.ts +32 -0
  339. package/dist/upsertRow/types.d.ts.map +1 -0
  340. package/dist/upsertRow/types.js +3 -0
  341. package/dist/upsertRow/types.js.map +1 -0
  342. package/dist/utilities/appendPrefixToKeys.d.ts +2 -0
  343. package/dist/utilities/appendPrefixToKeys.d.ts.map +1 -0
  344. package/dist/utilities/appendPrefixToKeys.js +6 -0
  345. package/dist/utilities/appendPrefixToKeys.js.map +1 -0
  346. package/dist/utilities/createBlocksMap.d.ts +5 -0
  347. package/dist/utilities/createBlocksMap.d.ts.map +1 -0
  348. package/dist/utilities/createBlocksMap.js +31 -0
  349. package/dist/utilities/createBlocksMap.js.map +1 -0
  350. package/dist/utilities/createRelationshipMap.d.ts +2 -0
  351. package/dist/utilities/createRelationshipMap.d.ts.map +1 -0
  352. package/dist/utilities/createRelationshipMap.js +21 -0
  353. package/dist/utilities/createRelationshipMap.js.map +1 -0
  354. package/dist/utilities/hasLocalesTable.d.ts +3 -0
  355. package/dist/utilities/hasLocalesTable.d.ts.map +1 -0
  356. package/dist/utilities/hasLocalesTable.js +21 -0
  357. package/dist/utilities/hasLocalesTable.js.map +1 -0
  358. package/dist/utilities/isArrayOfRows.d.ts +2 -0
  359. package/dist/utilities/isArrayOfRows.d.ts.map +1 -0
  360. package/dist/utilities/isArrayOfRows.js +5 -0
  361. package/dist/utilities/isArrayOfRows.js.map +1 -0
  362. package/dist/utilities/migrationTableExists.d.ts +3 -0
  363. package/dist/utilities/migrationTableExists.d.ts.map +1 -0
  364. package/dist/utilities/migrationTableExists.js +25 -0
  365. package/dist/utilities/migrationTableExists.js.map +1 -0
  366. package/dist/utilities/parseError.d.ts +5 -0
  367. package/dist/utilities/parseError.d.ts.map +1 -0
  368. package/dist/utilities/parseError.js +15 -0
  369. package/dist/utilities/parseError.js.map +1 -0
  370. package/dist/utilities/pushDevSchema.d.ts +9 -0
  371. package/dist/utilities/pushDevSchema.d.ts.map +1 -0
  372. package/dist/utilities/pushDevSchema.js +55 -0
  373. package/dist/utilities/pushDevSchema.js.map +1 -0
  374. package/dist/utilities/validateExistingBlockIsIdentical.d.ts +11 -0
  375. package/dist/utilities/validateExistingBlockIsIdentical.d.ts.map +1 -0
  376. package/dist/utilities/validateExistingBlockIsIdentical.js +76 -0
  377. package/dist/utilities/validateExistingBlockIsIdentical.js.map +1 -0
  378. package/package.json +62 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/queries/operatorMap.ts"],"sourcesContent":["import {\n and,\n type Column,\n eq,\n gt,\n gte,\n ilike,\n inArray,\n isNotNull,\n isNull,\n lt,\n lte,\n ne,\n notInArray,\n or,\n type SQL,\n type SQLWrapper,\n} from 'drizzle-orm'\n\ntype OperatorKeys =\n | 'and'\n | 'contains'\n | 'equals'\n | 'exists'\n | 'greater_than'\n | 'greater_than_equal'\n | 'in'\n | 'isNull'\n | 'less_than'\n | 'less_than_equal'\n | 'like'\n | 'not_equals'\n | 'not_in'\n | 'or'\n\nexport type Operators = Record<OperatorKeys, (column: Column, value: SQLWrapper | unknown) => SQL>\n\nexport const operatorMap: Operators = {\n and,\n contains: ilike,\n equals: eq,\n exists: isNotNull,\n greater_than: gt,\n greater_than_equal: gte,\n in: inArray,\n isNull, // handles exists: false\n less_than: lt,\n less_than_equal: lte,\n like: ilike,\n not_equals: ne,\n // TODO: geojson queries\n // intersects: intersects,\n // near: near,\n // within: within,\n // all: all,\n not_in: notInArray,\n or,\n}\n"],"names":["and","eq","gt","gte","ilike","inArray","isNotNull","isNull","lt","lte","ne","notInArray","or","operatorMap","contains","equals","exists","greater_than","greater_than_equal","in","less_than","less_than_equal","like","not_equals","not_in"],"mappings":"AAAA,SACEA,GAAG,EAEHC,EAAE,EACFC,EAAE,EACFC,GAAG,EACHC,KAAK,EACLC,OAAO,EACPC,SAAS,EACTC,MAAM,EACNC,EAAE,EACFC,GAAG,EACHC,EAAE,EACFC,UAAU,EACVC,EAAE,QAGG,cAAa;AAoBpB,OAAO,MAAMC,cAAyB;IACpCb;IACAc,UAAUV;IACVW,QAAQd;IACRe,QAAQV;IACRW,cAAcf;IACdgB,oBAAoBf;IACpBgB,IAAId;IACJE;IACAa,WAAWZ;IACXa,iBAAiBZ;IACjBa,MAAMlB;IACNmB,YAAYb;IACZ,wBAAwB;IACxB,0BAA0B;IAC1B,cAAc;IACd,kBAAkB;IAClB,YAAY;IACZc,QAAQb;IACRC;AACF,EAAC"}
@@ -0,0 +1,16 @@
1
+ import type { SQL } from 'drizzle-orm';
2
+ import type { Field, Where } from 'payload';
3
+ import type { DrizzleAdapter, GenericColumn } from '../types.js';
4
+ import type { BuildQueryJoinAliases } from './buildQuery.js';
5
+ type Args = {
6
+ adapter: DrizzleAdapter;
7
+ fields: Field[];
8
+ joins: BuildQueryJoinAliases;
9
+ locale: string;
10
+ selectFields: Record<string, GenericColumn>;
11
+ tableName: string;
12
+ where: Where;
13
+ };
14
+ export declare function parseParams({ adapter, fields, joins, locale, selectFields, tableName, where, }: Args): Promise<SQL>;
15
+ export {};
16
+ //# sourceMappingURL=parseParams.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parseParams.d.ts","sourceRoot":"","sources":["../../src/queries/parseParams.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,aAAa,CAAA;AACtC,OAAO,KAAK,EAAE,KAAK,EAAY,KAAK,EAAE,MAAM,SAAS,CAAA;AAMrD,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAChE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAA;AAM5D,KAAK,IAAI,GAAG;IACV,OAAO,EAAE,cAAc,CAAA;IACvB,MAAM,EAAE,KAAK,EAAE,CAAA;IACf,KAAK,EAAE,qBAAqB,CAAA;IAC5B,MAAM,EAAE,MAAM,CAAA;IACd,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAA;IAC3C,SAAS,EAAE,MAAM,CAAA;IACjB,KAAK,EAAE,KAAK,CAAA;CACb,CAAA;AAED,wBAAsB,WAAW,CAAC,EAChC,OAAO,EACP,MAAM,EACN,KAAK,EACL,MAAM,EACN,YAAY,EACZ,SAAS,EACT,KAAK,GACN,EAAE,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,CA8NrB"}
@@ -0,0 +1,188 @@
1
+ import { and, isNotNull, isNull, ne, notInArray, or, sql } from 'drizzle-orm';
2
+ import { QueryError } from 'payload';
3
+ import { validOperators } from 'payload/shared';
4
+ import { buildAndOrConditions } from './buildAndOrConditions.js';
5
+ import { getTableColumnFromPath } from './getTableColumnFromPath.js';
6
+ import { sanitizeQueryValue } from './sanitizeQueryValue.js';
7
+ export async function parseParams({ adapter, fields, joins, locale, selectFields, tableName, where }) {
8
+ let result;
9
+ const constraints = [];
10
+ if (typeof where === 'object' && Object.keys(where).length > 0) {
11
+ // We need to determine if the whereKey is an AND, OR, or a schema path
12
+ for (const relationOrPath of Object.keys(where)){
13
+ if (relationOrPath) {
14
+ const condition = where[relationOrPath];
15
+ let conditionOperator;
16
+ if (relationOrPath.toLowerCase() === 'and') {
17
+ conditionOperator = and;
18
+ } else if (relationOrPath.toLowerCase() === 'or') {
19
+ conditionOperator = or;
20
+ }
21
+ if (Array.isArray(condition)) {
22
+ const builtConditions = await buildAndOrConditions({
23
+ adapter,
24
+ fields,
25
+ joins,
26
+ locale,
27
+ selectFields,
28
+ tableName,
29
+ where: condition
30
+ });
31
+ if (builtConditions.length > 0) {
32
+ result = conditionOperator(...builtConditions);
33
+ }
34
+ } else {
35
+ // It's a path - and there can be multiple comparisons on a single path.
36
+ // For example - title like 'test' and title not equal to 'tester'
37
+ // So we need to loop on keys again here to handle each operator independently
38
+ const pathOperators = where[relationOrPath];
39
+ if (typeof pathOperators === 'object') {
40
+ for (let operator of Object.keys(pathOperators)){
41
+ if (validOperators.includes(operator)) {
42
+ const val = where[relationOrPath][operator];
43
+ const { columnName, constraints: queryConstraints, field, getNotNullColumnByValue, pathSegments, rawColumn, table } = getTableColumnFromPath({
44
+ adapter,
45
+ collectionPath: relationOrPath,
46
+ fields,
47
+ joins,
48
+ locale,
49
+ pathSegments: relationOrPath.replace(/__/g, '.').split('.'),
50
+ selectFields,
51
+ tableName,
52
+ value: val
53
+ });
54
+ queryConstraints.forEach(({ columnName: col, table: constraintTable, value })=>{
55
+ if (typeof value === 'string' && value.indexOf('%') > -1) {
56
+ constraints.push(adapter.operators.like(constraintTable[col], value));
57
+ } else {
58
+ constraints.push(adapter.operators.equals(constraintTable[col], value));
59
+ }
60
+ });
61
+ if ([
62
+ 'json',
63
+ 'richText'
64
+ ].includes(field.type) && Array.isArray(pathSegments) && pathSegments.length > 1) {
65
+ const segments = pathSegments.slice(1);
66
+ segments.unshift(table[columnName].name);
67
+ if (field.type === 'richText') {
68
+ // use the table name from the nearest join to handle blocks, arrays, etc. or use the tableName arg
69
+ const jsonTable = joins.length === 0 ? tableName : joins[joins.length - 1].table[Object.getOwnPropertySymbols(joins[joins.length - 1].table)[0]];
70
+ const jsonQuery = adapter.createJSONQuery({
71
+ operator,
72
+ pathSegments: segments,
73
+ table: jsonTable,
74
+ treatAsArray: [
75
+ 'children'
76
+ ],
77
+ treatRootAsArray: true,
78
+ value: val
79
+ });
80
+ constraints.push(sql.raw(jsonQuery));
81
+ break;
82
+ }
83
+ const jsonQuery = adapter.convertPathToJSONTraversal(pathSegments);
84
+ const operatorKeys = {
85
+ contains: {
86
+ operator: 'like',
87
+ wildcard: '%'
88
+ },
89
+ equals: {
90
+ operator: '=',
91
+ wildcard: ''
92
+ },
93
+ exists: {
94
+ operator: val === true ? 'is not null' : 'is null'
95
+ },
96
+ like: {
97
+ operator: 'like',
98
+ wildcard: '%'
99
+ },
100
+ not_equals: {
101
+ operator: '<>',
102
+ wildcard: ''
103
+ }
104
+ };
105
+ let formattedValue = val;
106
+ if (adapter.name === 'sqlite' && operator === 'equals' && !isNaN(val)) {
107
+ formattedValue = val;
108
+ } else {
109
+ formattedValue = `'${operatorKeys[operator].wildcard}${val}${operatorKeys[operator].wildcard}'`;
110
+ }
111
+ if (operator === 'exists') {
112
+ formattedValue = '';
113
+ }
114
+ constraints.push(sql.raw(`${table[columnName].name}${jsonQuery} ${operatorKeys[operator].operator} ${formattedValue}`));
115
+ break;
116
+ }
117
+ if (getNotNullColumnByValue) {
118
+ const columnName = getNotNullColumnByValue(val);
119
+ if (columnName) {
120
+ constraints.push(isNotNull(table[columnName]));
121
+ } else {
122
+ throw new QueryError([
123
+ {
124
+ path: relationOrPath
125
+ }
126
+ ]);
127
+ }
128
+ break;
129
+ }
130
+ if (operator === 'like' && (field.type === 'number' || table[columnName].columnType === 'PgUUID')) {
131
+ operator = 'equals';
132
+ }
133
+ if (operator === 'like') {
134
+ constraints.push(and(...val.split(' ').map((word)=>adapter.operators.like(table[columnName], `%${word}%`))));
135
+ break;
136
+ }
137
+ const sanitizedQueryValue = sanitizeQueryValue({
138
+ adapter,
139
+ field,
140
+ operator,
141
+ relationOrPath,
142
+ val
143
+ });
144
+ if (sanitizedQueryValue === null) {
145
+ break;
146
+ }
147
+ const { operator: queryOperator, value: queryValue } = sanitizedQueryValue;
148
+ if (queryOperator === 'not_equals' && queryValue !== null) {
149
+ constraints.push(or(isNull(rawColumn || table[columnName]), /* eslint-disable @typescript-eslint/no-explicit-any */ ne(rawColumn || table[columnName], queryValue)));
150
+ break;
151
+ }
152
+ if ((field.type === 'relationship' || field.type === 'upload') && Array.isArray(queryValue) && operator === 'not_in') {
153
+ constraints.push(sql`(${notInArray(table[columnName], queryValue)} OR
154
+ ${table[columnName]}
155
+ IS
156
+ NULL)`);
157
+ break;
158
+ }
159
+ if (operator === 'equals' && queryValue === null) {
160
+ constraints.push(isNull(rawColumn || table[columnName]));
161
+ break;
162
+ }
163
+ if (operator === 'not_equals' && queryValue === null) {
164
+ constraints.push(isNotNull(rawColumn || table[columnName]));
165
+ break;
166
+ }
167
+ constraints.push(adapter.operators[queryOperator](rawColumn || table[columnName], queryValue));
168
+ }
169
+ }
170
+ }
171
+ }
172
+ }
173
+ }
174
+ }
175
+ if (constraints.length > 0) {
176
+ if (result) {
177
+ result = and(result, ...constraints);
178
+ } else {
179
+ result = and(...constraints);
180
+ }
181
+ }
182
+ if (constraints.length === 1 && !result) {
183
+ [result] = constraints;
184
+ }
185
+ return result;
186
+ }
187
+
188
+ //# sourceMappingURL=parseParams.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/queries/parseParams.ts"],"sourcesContent":["import type { SQL } from 'drizzle-orm'\nimport type { Field, Operator, Where } from 'payload'\n\nimport { and, isNotNull, isNull, ne, notInArray, or, sql } from 'drizzle-orm'\nimport { QueryError } from 'payload'\nimport { validOperators } from 'payload/shared'\n\nimport type { DrizzleAdapter, GenericColumn } from '../types.js'\nimport type { BuildQueryJoinAliases } from './buildQuery.js'\n\nimport { buildAndOrConditions } from './buildAndOrConditions.js'\nimport { getTableColumnFromPath } from './getTableColumnFromPath.js'\nimport { sanitizeQueryValue } from './sanitizeQueryValue.js'\n\ntype Args = {\n adapter: DrizzleAdapter\n fields: Field[]\n joins: BuildQueryJoinAliases\n locale: string\n selectFields: Record<string, GenericColumn>\n tableName: string\n where: Where\n}\n\nexport async function parseParams({\n adapter,\n fields,\n joins,\n locale,\n selectFields,\n tableName,\n where,\n}: Args): Promise<SQL> {\n let result: SQL\n const constraints: SQL[] = []\n\n if (typeof where === 'object' && Object.keys(where).length > 0) {\n // We need to determine if the whereKey is an AND, OR, or a schema path\n for (const relationOrPath of Object.keys(where)) {\n if (relationOrPath) {\n const condition = where[relationOrPath]\n let conditionOperator: typeof and | typeof or\n if (relationOrPath.toLowerCase() === 'and') {\n conditionOperator = and\n } else if (relationOrPath.toLowerCase() === 'or') {\n conditionOperator = or\n }\n if (Array.isArray(condition)) {\n const builtConditions = await buildAndOrConditions({\n adapter,\n fields,\n joins,\n locale,\n selectFields,\n tableName,\n where: condition,\n })\n if (builtConditions.length > 0) {\n result = conditionOperator(...builtConditions)\n }\n } else {\n // It's a path - and there can be multiple comparisons on a single path.\n // For example - title like 'test' and title not equal to 'tester'\n // So we need to loop on keys again here to handle each operator independently\n const pathOperators = where[relationOrPath]\n if (typeof pathOperators === 'object') {\n for (let operator of Object.keys(pathOperators)) {\n if (validOperators.includes(operator as Operator)) {\n const val = where[relationOrPath][operator]\n const {\n columnName,\n constraints: queryConstraints,\n field,\n getNotNullColumnByValue,\n pathSegments,\n rawColumn,\n table,\n } = getTableColumnFromPath({\n adapter,\n collectionPath: relationOrPath,\n fields,\n joins,\n locale,\n pathSegments: relationOrPath.replace(/__/g, '.').split('.'),\n selectFields,\n tableName,\n value: val,\n })\n\n queryConstraints.forEach(({ columnName: col, table: constraintTable, value }) => {\n if (typeof value === 'string' && value.indexOf('%') > -1) {\n constraints.push(adapter.operators.like(constraintTable[col], value))\n } else {\n constraints.push(adapter.operators.equals(constraintTable[col], value))\n }\n })\n\n if (\n ['json', 'richText'].includes(field.type) &&\n Array.isArray(pathSegments) &&\n pathSegments.length > 1\n ) {\n const segments = pathSegments.slice(1)\n segments.unshift(table[columnName].name)\n\n if (field.type === 'richText') {\n // use the table name from the nearest join to handle blocks, arrays, etc. or use the tableName arg\n const jsonTable =\n joins.length === 0\n ? tableName\n : joins[joins.length - 1].table[\n Object.getOwnPropertySymbols(joins[joins.length - 1].table)[0]\n ]\n const jsonQuery = adapter.createJSONQuery({\n operator,\n pathSegments: segments,\n table: jsonTable,\n treatAsArray: ['children'],\n treatRootAsArray: true,\n value: val,\n })\n\n constraints.push(sql.raw(jsonQuery))\n break\n }\n\n const jsonQuery = adapter.convertPathToJSONTraversal(pathSegments)\n const operatorKeys = {\n contains: { operator: 'like', wildcard: '%' },\n equals: { operator: '=', wildcard: '' },\n exists: { operator: val === true ? 'is not null' : 'is null' },\n like: { operator: 'like', wildcard: '%' },\n not_equals: { operator: '<>', wildcard: '' },\n }\n\n let formattedValue = val\n if (adapter.name === 'sqlite' && operator === 'equals' && !isNaN(val)) {\n formattedValue = val\n } else {\n formattedValue = `'${operatorKeys[operator].wildcard}${val}${operatorKeys[operator].wildcard}'`\n }\n if (operator === 'exists') {\n formattedValue = ''\n }\n\n constraints.push(\n sql.raw(\n `${table[columnName].name}${jsonQuery} ${operatorKeys[operator].operator} ${formattedValue}`,\n ),\n )\n\n break\n }\n\n if (getNotNullColumnByValue) {\n const columnName = getNotNullColumnByValue(val)\n if (columnName) {\n constraints.push(isNotNull(table[columnName]))\n } else {\n throw new QueryError([{ path: relationOrPath }])\n }\n break\n }\n\n if (\n operator === 'like' &&\n (field.type === 'number' || table[columnName].columnType === 'PgUUID')\n ) {\n operator = 'equals'\n }\n\n if (operator === 'like') {\n constraints.push(\n and(\n ...val\n .split(' ')\n .map((word) => adapter.operators.like(table[columnName], `%${word}%`)),\n ),\n )\n break\n }\n\n const sanitizedQueryValue = sanitizeQueryValue({\n adapter,\n field,\n operator,\n relationOrPath,\n val,\n })\n\n if (sanitizedQueryValue === null) {\n break\n }\n\n const { operator: queryOperator, value: queryValue } = sanitizedQueryValue\n\n if (queryOperator === 'not_equals' && queryValue !== null) {\n constraints.push(\n or(\n isNull(rawColumn || table[columnName]),\n /* eslint-disable @typescript-eslint/no-explicit-any */\n ne<any>(rawColumn || table[columnName], queryValue),\n ),\n )\n break\n }\n\n if (\n (field.type === 'relationship' || field.type === 'upload') &&\n Array.isArray(queryValue) &&\n operator === 'not_in'\n ) {\n constraints.push(\n sql`(${notInArray(table[columnName], queryValue)} OR\n ${table[columnName]}\n IS\n NULL)`,\n )\n\n break\n }\n\n if (operator === 'equals' && queryValue === null) {\n constraints.push(isNull(rawColumn || table[columnName]))\n break\n }\n\n if (operator === 'not_equals' && queryValue === null) {\n constraints.push(isNotNull(rawColumn || table[columnName]))\n break\n }\n\n constraints.push(\n adapter.operators[queryOperator](rawColumn || table[columnName], queryValue),\n )\n }\n }\n }\n }\n }\n }\n }\n if (constraints.length > 0) {\n if (result) {\n result = and(result, ...constraints)\n } else {\n result = and(...constraints)\n }\n }\n if (constraints.length === 1 && !result) {\n ;[result] = constraints\n }\n\n return result\n}\n"],"names":["and","isNotNull","isNull","ne","notInArray","or","sql","QueryError","validOperators","buildAndOrConditions","getTableColumnFromPath","sanitizeQueryValue","parseParams","adapter","fields","joins","locale","selectFields","tableName","where","result","constraints","Object","keys","length","relationOrPath","condition","conditionOperator","toLowerCase","Array","isArray","builtConditions","pathOperators","operator","includes","val","columnName","queryConstraints","field","getNotNullColumnByValue","pathSegments","rawColumn","table","collectionPath","replace","split","value","forEach","col","constraintTable","indexOf","push","operators","like","equals","type","segments","slice","unshift","name","jsonTable","getOwnPropertySymbols","jsonQuery","createJSONQuery","treatAsArray","treatRootAsArray","raw","convertPathToJSONTraversal","operatorKeys","contains","wildcard","exists","not_equals","formattedValue","isNaN","path","columnType","map","word","sanitizedQueryValue","queryOperator","queryValue"],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import { type Field, type TabAsField } from 'payload';
2
+ import type { DrizzleAdapter } from '../types.js';
3
+ type SanitizeQueryValueArgs = {
4
+ adapter: DrizzleAdapter;
5
+ field: Field | TabAsField;
6
+ operator: string;
7
+ relationOrPath: string;
8
+ val: any;
9
+ };
10
+ export declare const sanitizeQueryValue: ({ adapter, field, operator: operatorArg, relationOrPath, val, }: SanitizeQueryValueArgs) => {
11
+ operator: string;
12
+ value: unknown;
13
+ };
14
+ export {};
15
+ //# sourceMappingURL=sanitizeQueryValue.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sanitizeQueryValue.d.ts","sourceRoot":"","sources":["../../src/queries/sanitizeQueryValue.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4C,KAAK,KAAK,EAAE,KAAK,UAAU,EAAE,MAAM,SAAS,CAAA;AAG/F,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAEjD,KAAK,sBAAsB,GAAG;IAC5B,OAAO,EAAE,cAAc,CAAA;IACvB,KAAK,EAAE,KAAK,GAAG,UAAU,CAAA;IACzB,QAAQ,EAAE,MAAM,CAAA;IAChB,cAAc,EAAE,MAAM,CAAA;IACtB,GAAG,EAAE,GAAG,CAAA;CACT,CAAA;AAED,eAAO,MAAM,kBAAkB,oEAM5B,sBAAsB,KAAG;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAmI7D,CAAA"}
@@ -0,0 +1,128 @@
1
+ import { APIError, createArrayFromCommaDelineated } from 'payload';
2
+ import { fieldAffectsData } from 'payload/shared';
3
+ export const sanitizeQueryValue = ({ adapter, field, operator: operatorArg, relationOrPath, val })=>{
4
+ let operator = operatorArg;
5
+ let formattedValue = val;
6
+ if (!fieldAffectsData(field)) {
7
+ return {
8
+ operator,
9
+ value: formattedValue
10
+ };
11
+ }
12
+ if ((field.type === 'relationship' || field.type === 'upload') && !relationOrPath.endsWith('relationTo') && Array.isArray(formattedValue)) {
13
+ const allPossibleIDTypes = [];
14
+ formattedValue.forEach((val)=>{
15
+ if (adapter.idType !== 'uuid' && typeof val === 'string') {
16
+ allPossibleIDTypes.push(val, parseInt(val));
17
+ } else if (typeof val === 'string') {
18
+ allPossibleIDTypes.push(val);
19
+ } else {
20
+ allPossibleIDTypes.push(val, String(val));
21
+ }
22
+ });
23
+ formattedValue = allPossibleIDTypes;
24
+ }
25
+ // Cast incoming values as proper searchable types
26
+ if (field.type === 'checkbox' && typeof val === 'string') {
27
+ if (val.toLowerCase() === 'true') {
28
+ formattedValue = true;
29
+ }
30
+ if (val.toLowerCase() === 'false') {
31
+ formattedValue = false;
32
+ }
33
+ }
34
+ if ([
35
+ 'all',
36
+ 'in',
37
+ 'not_in'
38
+ ].includes(operator)) {
39
+ if (typeof formattedValue === 'string') {
40
+ formattedValue = createArrayFromCommaDelineated(formattedValue);
41
+ if (field.type === 'number') {
42
+ formattedValue = formattedValue.map((arrayVal)=>parseFloat(arrayVal));
43
+ }
44
+ }
45
+ if (!Array.isArray(formattedValue) || formattedValue.length === 0) {
46
+ return null;
47
+ }
48
+ }
49
+ if (field.type === 'number' && typeof formattedValue === 'string') {
50
+ formattedValue = Number(val);
51
+ }
52
+ if (field.type === 'date' && operator !== 'exists') {
53
+ if (typeof val === 'string') {
54
+ formattedValue = new Date(val).toISOString();
55
+ if (Number.isNaN(Date.parse(formattedValue))) {
56
+ return {
57
+ operator,
58
+ value: undefined
59
+ };
60
+ }
61
+ } else if (typeof val === 'number') {
62
+ formattedValue = new Date(val).toISOString();
63
+ }
64
+ }
65
+ if (field.type === 'relationship' || field.type === 'upload') {
66
+ if (val === 'null') {
67
+ formattedValue = null;
68
+ } else if (!(formattedValue === null || typeof formattedValue === 'boolean')) {
69
+ // convert the value to the idType of the relationship
70
+ let idType;
71
+ if (typeof field.relationTo === 'string') {
72
+ const collection = adapter.payload.collections[field.relationTo];
73
+ const mixedType = collection.customIDType || adapter.idType;
74
+ const typeMap = {
75
+ number: 'number',
76
+ serial: 'number',
77
+ text: 'text',
78
+ uuid: 'text'
79
+ };
80
+ idType = typeMap[mixedType];
81
+ } else {
82
+ // LIMITATION: Only cast to the first relationTo id type,
83
+ // otherwise we need to make the db cast which is inefficient
84
+ const collection = adapter.payload.collections[field.relationTo[0]];
85
+ idType = collection.customIDType || adapter.idType === 'uuid' ? 'text' : 'number';
86
+ }
87
+ if (Array.isArray(formattedValue)) {
88
+ formattedValue = formattedValue.map((value)=>{
89
+ if (idType === 'number') {
90
+ return Number(value);
91
+ }
92
+ if (idType === 'text') {
93
+ return String(value);
94
+ }
95
+ return value;
96
+ });
97
+ } else {
98
+ if (idType === 'number') {
99
+ formattedValue = Number(val);
100
+ }
101
+ if (idType === 'text') {
102
+ formattedValue = String(val);
103
+ }
104
+ }
105
+ }
106
+ }
107
+ if ('hasMany' in field && field.hasMany && operator === 'contains') {
108
+ operator = 'equals';
109
+ }
110
+ if (operator === 'near' || operator === 'within' || operator === 'intersects') {
111
+ throw new APIError(`Querying with '${operator}' is not supported with the postgres database adapter.`);
112
+ }
113
+ if (operator === 'contains') {
114
+ formattedValue = `%${formattedValue}%`;
115
+ }
116
+ if (operator === 'exists') {
117
+ formattedValue = formattedValue === 'true' || formattedValue === true;
118
+ if (formattedValue === false) {
119
+ operator = 'isNull';
120
+ }
121
+ }
122
+ return {
123
+ operator,
124
+ value: formattedValue
125
+ };
126
+ };
127
+
128
+ //# sourceMappingURL=sanitizeQueryValue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/queries/sanitizeQueryValue.ts"],"sourcesContent":["import { APIError, createArrayFromCommaDelineated, type Field, type TabAsField } from 'payload'\nimport { fieldAffectsData } from 'payload/shared'\n\nimport type { DrizzleAdapter } from '../types.js'\n\ntype SanitizeQueryValueArgs = {\n adapter: DrizzleAdapter\n field: Field | TabAsField\n operator: string\n relationOrPath: string\n val: any\n}\n\nexport const sanitizeQueryValue = ({\n adapter,\n field,\n operator: operatorArg,\n relationOrPath,\n val,\n}: SanitizeQueryValueArgs): { operator: string; value: unknown } => {\n let operator = operatorArg\n let formattedValue = val\n\n if (!fieldAffectsData(field)) {\n return { operator, value: formattedValue }\n }\n\n if (\n (field.type === 'relationship' || field.type === 'upload') &&\n !relationOrPath.endsWith('relationTo') &&\n Array.isArray(formattedValue)\n ) {\n const allPossibleIDTypes: (number | string)[] = []\n formattedValue.forEach((val) => {\n if (adapter.idType !== 'uuid' && typeof val === 'string') {\n allPossibleIDTypes.push(val, parseInt(val))\n } else if (typeof val === 'string') {\n allPossibleIDTypes.push(val)\n } else {\n allPossibleIDTypes.push(val, String(val))\n }\n })\n formattedValue = allPossibleIDTypes\n }\n\n // Cast incoming values as proper searchable types\n if (field.type === 'checkbox' && typeof val === 'string') {\n if (val.toLowerCase() === 'true') {\n formattedValue = true\n }\n if (val.toLowerCase() === 'false') {\n formattedValue = false\n }\n }\n\n if (['all', 'in', 'not_in'].includes(operator)) {\n if (typeof formattedValue === 'string') {\n formattedValue = createArrayFromCommaDelineated(formattedValue)\n\n if (field.type === 'number') {\n formattedValue = formattedValue.map((arrayVal) => parseFloat(arrayVal))\n }\n }\n\n if (!Array.isArray(formattedValue) || formattedValue.length === 0) {\n return null\n }\n }\n\n if (field.type === 'number' && typeof formattedValue === 'string') {\n formattedValue = Number(val)\n }\n\n if (field.type === 'date' && operator !== 'exists') {\n if (typeof val === 'string') {\n formattedValue = new Date(val).toISOString()\n if (Number.isNaN(Date.parse(formattedValue))) {\n return { operator, value: undefined }\n }\n } else if (typeof val === 'number') {\n formattedValue = new Date(val).toISOString()\n }\n }\n\n if (field.type === 'relationship' || field.type === 'upload') {\n if (val === 'null') {\n formattedValue = null\n } else if (!(formattedValue === null || typeof formattedValue === 'boolean')) {\n // convert the value to the idType of the relationship\n let idType: 'number' | 'text'\n if (typeof field.relationTo === 'string') {\n const collection = adapter.payload.collections[field.relationTo]\n const mixedType: 'number' | 'serial' | 'text' | 'uuid' =\n collection.customIDType || adapter.idType\n const typeMap: Record<string, 'number' | 'text'> = {\n number: 'number',\n serial: 'number',\n text: 'text',\n uuid: 'text',\n }\n idType = typeMap[mixedType]\n } else {\n // LIMITATION: Only cast to the first relationTo id type,\n // otherwise we need to make the db cast which is inefficient\n const collection = adapter.payload.collections[field.relationTo[0]]\n idType = collection.customIDType || adapter.idType === 'uuid' ? 'text' : 'number'\n }\n if (Array.isArray(formattedValue)) {\n formattedValue = formattedValue.map((value) => {\n if (idType === 'number') {\n return Number(value)\n }\n if (idType === 'text') {\n return String(value)\n }\n return value\n })\n } else {\n if (idType === 'number') {\n formattedValue = Number(val)\n }\n if (idType === 'text') {\n formattedValue = String(val)\n }\n }\n }\n }\n\n if ('hasMany' in field && field.hasMany && operator === 'contains') {\n operator = 'equals'\n }\n\n if (operator === 'near' || operator === 'within' || operator === 'intersects') {\n throw new APIError(\n `Querying with '${operator}' is not supported with the postgres database adapter.`,\n )\n }\n\n if (operator === 'contains') {\n formattedValue = `%${formattedValue}%`\n }\n\n if (operator === 'exists') {\n formattedValue = formattedValue === 'true' || formattedValue === true\n if (formattedValue === false) {\n operator = 'isNull'\n }\n }\n\n return { operator, value: formattedValue }\n}\n"],"names":["APIError","createArrayFromCommaDelineated","fieldAffectsData","sanitizeQueryValue","adapter","field","operator","operatorArg","relationOrPath","val","formattedValue","value","type","endsWith","Array","isArray","allPossibleIDTypes","forEach","idType","push","parseInt","String","toLowerCase","includes","map","arrayVal","parseFloat","length","Number","Date","toISOString","isNaN","parse","undefined","relationTo","collection","payload","collections","mixedType","customIDType","typeMap","number","serial","text","uuid","hasMany"],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ import type { QueryPromise, SQL } from 'drizzle-orm';
2
+ import type { ChainedMethods } from '../find/chainMethods.js';
3
+ import type { DrizzleAdapter, DrizzleTransaction, GenericColumn } from '../types.js';
4
+ import type { BuildQueryJoinAliases } from './buildQuery.js';
5
+ type Args = {
6
+ adapter: DrizzleAdapter;
7
+ chainedMethods?: ChainedMethods;
8
+ db: DrizzleAdapter['drizzle'] | DrizzleTransaction;
9
+ joins: BuildQueryJoinAliases;
10
+ selectFields: Record<string, GenericColumn>;
11
+ tableName: string;
12
+ where: SQL;
13
+ };
14
+ /**
15
+ * Selects distinct records from a table only if there are joins that need to be used, otherwise return null
16
+ */
17
+ export declare const selectDistinct: ({ adapter, chainedMethods, db, joins, selectFields, tableName, where, }: Args) => QueryPromise<{
18
+ id: number | string;
19
+ }[] & Record<string, GenericColumn>>;
20
+ export {};
21
+ //# sourceMappingURL=selectDistinct.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"selectDistinct.d.ts","sourceRoot":"","sources":["../../src/queries/selectDistinct.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,GAAG,EAAE,MAAM,aAAa,CAAA;AAGpD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAA;AAC7D,OAAO,KAAK,EACV,cAAc,EACd,kBAAkB,EAClB,aAAa,EAId,MAAM,aAAa,CAAA;AACpB,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAA;AAI5D,KAAK,IAAI,GAAG;IACV,OAAO,EAAE,cAAc,CAAA;IACvB,cAAc,CAAC,EAAE,cAAc,CAAA;IAC/B,EAAE,EAAE,cAAc,CAAC,SAAS,CAAC,GAAG,kBAAkB,CAAA;IAClD,KAAK,EAAE,qBAAqB,CAAA;IAC5B,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAA;IAC3C,SAAS,EAAE,MAAM,CAAA;IACjB,KAAK,EAAE,GAAG,CAAA;CACX,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,cAAc,4EAQxB,IAAI,KAAG,YAAY,CAAC;IAAE,EAAE,EAAE,MAAM,GAAG,MAAM,CAAA;CAAE,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAgC/E,CAAA"}
@@ -0,0 +1,38 @@
1
+ import { chainMethods } from '../find/chainMethods.js';
2
+ /**
3
+ * Selects distinct records from a table only if there are joins that need to be used, otherwise return null
4
+ */ export const selectDistinct = ({ adapter, chainedMethods = [], db, joins, selectFields, tableName, where })=>{
5
+ if (Object.keys(joins).length > 0) {
6
+ if (where) {
7
+ chainedMethods.push({
8
+ args: [
9
+ where
10
+ ],
11
+ method: 'where'
12
+ });
13
+ }
14
+ joins.forEach(({ condition, table })=>{
15
+ chainedMethods.push({
16
+ args: [
17
+ table,
18
+ condition
19
+ ],
20
+ method: 'leftJoin'
21
+ });
22
+ });
23
+ let query;
24
+ const table = adapter.tables[tableName];
25
+ if (adapter.name === 'postgres') {
26
+ query = db.selectDistinct(selectFields).from(table);
27
+ }
28
+ if (adapter.name === 'sqlite') {
29
+ query = db.selectDistinct(selectFields).from(table);
30
+ }
31
+ return chainMethods({
32
+ methods: chainedMethods,
33
+ query
34
+ });
35
+ }
36
+ };
37
+
38
+ //# sourceMappingURL=selectDistinct.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/queries/selectDistinct.ts"],"sourcesContent":["import type { QueryPromise, SQL } from 'drizzle-orm'\nimport type { SQLiteColumn } from 'drizzle-orm/sqlite-core'\n\nimport type { ChainedMethods } from '../find/chainMethods.js'\nimport type {\n DrizzleAdapter,\n DrizzleTransaction,\n GenericColumn,\n GenericPgColumn,\n TransactionPg,\n TransactionSQLite,\n} from '../types.js'\nimport type { BuildQueryJoinAliases } from './buildQuery.js'\n\nimport { chainMethods } from '../find/chainMethods.js'\n\ntype Args = {\n adapter: DrizzleAdapter\n chainedMethods?: ChainedMethods\n db: DrizzleAdapter['drizzle'] | DrizzleTransaction\n joins: BuildQueryJoinAliases\n selectFields: Record<string, GenericColumn>\n tableName: string\n where: SQL\n}\n\n/**\n * Selects distinct records from a table only if there are joins that need to be used, otherwise return null\n */\nexport const selectDistinct = ({\n adapter,\n chainedMethods = [],\n db,\n joins,\n selectFields,\n tableName,\n where,\n}: Args): QueryPromise<{ id: number | string }[] & Record<string, GenericColumn>> => {\n if (Object.keys(joins).length > 0) {\n if (where) {\n chainedMethods.push({ args: [where], method: 'where' })\n }\n\n joins.forEach(({ condition, table }) => {\n chainedMethods.push({\n args: [table, condition],\n method: 'leftJoin',\n })\n })\n\n let query\n const table = adapter.tables[tableName]\n\n if (adapter.name === 'postgres') {\n query = (db as TransactionPg)\n .selectDistinct(selectFields as Record<string, GenericPgColumn>)\n .from(table)\n }\n if (adapter.name === 'sqlite') {\n query = (db as TransactionSQLite)\n .selectDistinct(selectFields as Record<string, SQLiteColumn>)\n .from(table)\n }\n\n return chainMethods({\n methods: chainedMethods,\n query,\n })\n }\n}\n"],"names":["chainMethods","selectDistinct","adapter","chainedMethods","db","joins","selectFields","tableName","where","Object","keys","length","push","args","method","forEach","condition","table","query","tables","name","from","methods"],"mappings":"AAcA,SAASA,YAAY,QAAQ,0BAAyB;AAYtD;;CAEC,GACD,OAAO,MAAMC,iBAAiB,CAAC,EAC7BC,OAAO,EACPC,iBAAiB,EAAE,EACnBC,EAAE,EACFC,KAAK,EACLC,YAAY,EACZC,SAAS,EACTC,KAAK,EACA;IACL,IAAIC,OAAOC,IAAI,CAACL,OAAOM,MAAM,GAAG,GAAG;QACjC,IAAIH,OAAO;YACTL,eAAeS,IAAI,CAAC;gBAAEC,MAAM;oBAACL;iBAAM;gBAAEM,QAAQ;YAAQ;QACvD;QAEAT,MAAMU,OAAO,CAAC,CAAC,EAAEC,SAAS,EAAEC,KAAK,EAAE;YACjCd,eAAeS,IAAI,CAAC;gBAClBC,MAAM;oBAACI;oBAAOD;iBAAU;gBACxBF,QAAQ;YACV;QACF;QAEA,IAAII;QACJ,MAAMD,QAAQf,QAAQiB,MAAM,CAACZ,UAAU;QAEvC,IAAIL,QAAQkB,IAAI,KAAK,YAAY;YAC/BF,QAAQ,AAACd,GACNH,cAAc,CAACK,cACfe,IAAI,CAACJ;QACV;QACA,IAAIf,QAAQkB,IAAI,KAAK,UAAU;YAC7BF,QAAQ,AAACd,GACNH,cAAc,CAACK,cACfe,IAAI,CAACJ;QACV;QAEA,OAAOjB,aAAa;YAClBsB,SAASnB;YACTe;QACF;IACF;AACF,EAAC"}
@@ -0,0 +1,3 @@
1
+ import type { QueryDrafts } from 'payload';
2
+ export declare const queryDrafts: QueryDrafts;
3
+ //# sourceMappingURL=queryDrafts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"queryDrafts.d.ts","sourceRoot":"","sources":["../src/queryDrafts.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAkB,WAAW,EAA6B,MAAM,SAAS,CAAA;AASrF,eAAO,MAAM,WAAW,EAAE,WAsCzB,CAAA"}
@@ -0,0 +1,39 @@
1
+ import { buildVersionCollectionFields, combineQueries } from 'payload';
2
+ import toSnakeCase from 'to-snake-case';
3
+ import { findMany } from './find/findMany.js';
4
+ export const queryDrafts = async function queryDrafts({ collection, limit, locale, page = 1, pagination, req = {}, sort, where }) {
5
+ const collectionConfig = this.payload.collections[collection].config;
6
+ const tableName = this.tableNameMap.get(`_${toSnakeCase(collectionConfig.slug)}${this.versionsSuffix}`);
7
+ const fields = buildVersionCollectionFields(collectionConfig);
8
+ const combinedWhere = combineQueries({
9
+ latest: {
10
+ equals: true
11
+ }
12
+ }, where);
13
+ const result = await findMany({
14
+ adapter: this,
15
+ fields,
16
+ limit,
17
+ locale,
18
+ page,
19
+ pagination,
20
+ req,
21
+ sort,
22
+ tableName,
23
+ where: combinedWhere
24
+ });
25
+ return {
26
+ ...result,
27
+ docs: result.docs.map((doc)=>{
28
+ doc = {
29
+ id: doc.parent,
30
+ ...doc.version,
31
+ createdAt: doc.createdAt,
32
+ updatedAt: doc.updatedAt
33
+ };
34
+ return doc;
35
+ })
36
+ };
37
+ };
38
+
39
+ //# sourceMappingURL=queryDrafts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/queryDrafts.ts"],"sourcesContent":["import type { PayloadRequest, QueryDrafts, SanitizedCollectionConfig } from 'payload'\n\nimport { buildVersionCollectionFields, combineQueries } from 'payload'\nimport toSnakeCase from 'to-snake-case'\n\nimport type { DrizzleAdapter } from './types.js'\n\nimport { findMany } from './find/findMany.js'\n\nexport const queryDrafts: QueryDrafts = async function queryDrafts(\n this: DrizzleAdapter,\n { collection, limit, locale, page = 1, pagination, req = {} as PayloadRequest, sort, where },\n) {\n const collectionConfig: SanitizedCollectionConfig = this.payload.collections[collection].config\n const tableName = this.tableNameMap.get(\n `_${toSnakeCase(collectionConfig.slug)}${this.versionsSuffix}`,\n )\n const fields = buildVersionCollectionFields(collectionConfig)\n\n const combinedWhere = combineQueries({ latest: { equals: true } }, where)\n\n const result = await findMany({\n adapter: this,\n fields,\n limit,\n locale,\n page,\n pagination,\n req,\n sort,\n tableName,\n where: combinedWhere,\n })\n\n return {\n ...result,\n docs: result.docs.map((doc) => {\n doc = {\n id: doc.parent,\n ...doc.version,\n createdAt: doc.createdAt,\n updatedAt: doc.updatedAt,\n }\n\n return doc\n }),\n }\n}\n"],"names":["buildVersionCollectionFields","combineQueries","toSnakeCase","findMany","queryDrafts","collection","limit","locale","page","pagination","req","sort","where","collectionConfig","payload","collections","config","tableName","tableNameMap","get","slug","versionsSuffix","fields","combinedWhere","latest","equals","result","adapter","docs","map","doc","id","parent","version","createdAt","updatedAt"],"mappings":"AAEA,SAASA,4BAA4B,EAAEC,cAAc,QAAQ,UAAS;AACtE,OAAOC,iBAAiB,gBAAe;AAIvC,SAASC,QAAQ,QAAQ,qBAAoB;AAE7C,OAAO,MAAMC,cAA2B,eAAeA,YAErD,EAAEC,UAAU,EAAEC,KAAK,EAAEC,MAAM,EAAEC,OAAO,CAAC,EAAEC,UAAU,EAAEC,MAAM,CAAC,CAAmB,EAAEC,IAAI,EAAEC,KAAK,EAAE;IAE5F,MAAMC,mBAA8C,IAAI,CAACC,OAAO,CAACC,WAAW,CAACV,WAAW,CAACW,MAAM;IAC/F,MAAMC,YAAY,IAAI,CAACC,YAAY,CAACC,GAAG,CACrC,CAAC,CAAC,EAAEjB,YAAYW,iBAAiBO,IAAI,EAAE,EAAE,IAAI,CAACC,cAAc,CAAC,CAAC;IAEhE,MAAMC,SAAStB,6BAA6Ba;IAE5C,MAAMU,gBAAgBtB,eAAe;QAAEuB,QAAQ;YAAEC,QAAQ;QAAK;IAAE,GAAGb;IAEnE,MAAMc,SAAS,MAAMvB,SAAS;QAC5BwB,SAAS,IAAI;QACbL;QACAhB;QACAC;QACAC;QACAC;QACAC;QACAC;QACAM;QACAL,OAAOW;IACT;IAEA,OAAO;QACL,GAAGG,MAAM;QACTE,MAAMF,OAAOE,IAAI,CAACC,GAAG,CAAC,CAACC;YACrBA,MAAM;gBACJC,IAAID,IAAIE,MAAM;gBACd,GAAGF,IAAIG,OAAO;gBACdC,WAAWJ,IAAII,SAAS;gBACxBC,WAAWL,IAAIK,SAAS;YAC1B;YAEA,OAAOL;QACT;IACF;AACF,EAAC"}
@@ -0,0 +1,3 @@
1
+ import type { BeginTransaction } from 'payload';
2
+ export declare const beginTransaction: BeginTransaction;
3
+ //# sourceMappingURL=beginTransaction.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"beginTransaction.d.ts","sourceRoot":"","sources":["../../src/transactions/beginTransaction.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAM/C,eAAO,MAAM,gBAAgB,EAAE,gBA0D9B,CAAA"}
@@ -0,0 +1,50 @@
1
+ import { v4 as uuid } from 'uuid';
2
+ export const beginTransaction = async function beginTransaction(options) {
3
+ let id;
4
+ try {
5
+ id = uuid();
6
+ let reject;
7
+ let resolve;
8
+ let transaction;
9
+ let transactionReady;
10
+ // Await initialization here
11
+ // Prevent race conditions where the adapter may be
12
+ // re-initializing, and `this.drizzle` is potentially undefined
13
+ await this.initializing;
14
+ // Drizzle only exposes a transactions API that is sufficient if you
15
+ // can directly pass around the `tx` argument. But our operations are spread
16
+ // over many files and we don't want to pass the `tx` around like that,
17
+ // so instead, we "lift" up the `resolve` and `reject` methods
18
+ // and will call them in our respective transaction methods
19
+ const done = this.drizzle.transaction(async (tx)=>{
20
+ transaction = tx;
21
+ await new Promise((res, rej)=>{
22
+ resolve = ()=>{
23
+ res();
24
+ return done;
25
+ };
26
+ reject = ()=>{
27
+ rej();
28
+ return done;
29
+ };
30
+ transactionReady();
31
+ });
32
+ }, options || this.transactionOptions).catch(()=>{
33
+ // swallow
34
+ });
35
+ // Need to wait until the transaction is ready
36
+ // before binding its `resolve` and `reject` methods below
37
+ await new Promise((resolve)=>transactionReady = resolve);
38
+ this.sessions[id] = {
39
+ db: transaction,
40
+ reject,
41
+ resolve
42
+ };
43
+ } catch (err) {
44
+ this.payload.logger.error(`Error: cannot begin transaction: ${err.message}`, err);
45
+ process.exit(1);
46
+ }
47
+ return id;
48
+ };
49
+
50
+ //# sourceMappingURL=beginTransaction.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/transactions/beginTransaction.ts"],"sourcesContent":["import type { BeginTransaction } from 'payload'\n\nimport { v4 as uuid } from 'uuid'\n\nimport type { DrizzleAdapter, DrizzleTransaction } from '../types.js'\n\nexport const beginTransaction: BeginTransaction = async function beginTransaction(\n this: DrizzleAdapter,\n options: DrizzleAdapter['transactionOptions'],\n) {\n let id\n try {\n id = uuid()\n\n let reject: () => Promise<void>\n let resolve: () => Promise<void>\n let transaction: DrizzleTransaction\n\n let transactionReady: () => void\n\n // Await initialization here\n // Prevent race conditions where the adapter may be\n // re-initializing, and `this.drizzle` is potentially undefined\n await this.initializing\n\n // Drizzle only exposes a transactions API that is sufficient if you\n // can directly pass around the `tx` argument. But our operations are spread\n // over many files and we don't want to pass the `tx` around like that,\n // so instead, we \"lift\" up the `resolve` and `reject` methods\n // and will call them in our respective transaction methods\n const done = this.drizzle\n .transaction(async (tx) => {\n transaction = tx\n await new Promise<void>((res, rej) => {\n resolve = () => {\n res()\n return done\n }\n reject = () => {\n rej()\n return done\n }\n transactionReady()\n })\n }, options || this.transactionOptions)\n .catch(() => {\n // swallow\n })\n\n // Need to wait until the transaction is ready\n // before binding its `resolve` and `reject` methods below\n await new Promise<void>((resolve) => (transactionReady = resolve))\n\n this.sessions[id] = {\n db: transaction,\n reject,\n resolve,\n }\n } catch (err) {\n this.payload.logger.error(`Error: cannot begin transaction: ${err.message}`, err)\n process.exit(1)\n }\n\n return id\n}\n"],"names":["v4","uuid","beginTransaction","options","id","reject","resolve","transaction","transactionReady","initializing","done","drizzle","tx","Promise","res","rej","transactionOptions","catch","sessions","db","err","payload","logger","error","message","process","exit"],"mappings":"AAEA,SAASA,MAAMC,IAAI,QAAQ,OAAM;AAIjC,OAAO,MAAMC,mBAAqC,eAAeA,iBAE/DC,OAA6C;IAE7C,IAAIC;IACJ,IAAI;QACFA,KAAKH;QAEL,IAAII;QACJ,IAAIC;QACJ,IAAIC;QAEJ,IAAIC;QAEJ,4BAA4B;QAC5B,mDAAmD;QACnD,+DAA+D;QAC/D,MAAM,IAAI,CAACC,YAAY;QAEvB,oEAAoE;QACpE,4EAA4E;QAC5E,uEAAuE;QACvE,8DAA8D;QAC9D,2DAA2D;QAC3D,MAAMC,OAAO,IAAI,CAACC,OAAO,CACtBJ,WAAW,CAAC,OAAOK;YAClBL,cAAcK;YACd,MAAM,IAAIC,QAAc,CAACC,KAAKC;gBAC5BT,UAAU;oBACRQ;oBACA,OAAOJ;gBACT;gBACAL,SAAS;oBACPU;oBACA,OAAOL;gBACT;gBACAF;YACF;QACF,GAAGL,WAAW,IAAI,CAACa,kBAAkB,EACpCC,KAAK,CAAC;QACL,UAAU;QACZ;QAEF,8CAA8C;QAC9C,0DAA0D;QAC1D,MAAM,IAAIJ,QAAc,CAACP,UAAaE,mBAAmBF;QAEzD,IAAI,CAACY,QAAQ,CAACd,GAAG,GAAG;YAClBe,IAAIZ;YACJF;YACAC;QACF;IACF,EAAE,OAAOc,KAAK;QACZ,IAAI,CAACC,OAAO,CAACC,MAAM,CAACC,KAAK,CAAC,CAAC,iCAAiC,EAAEH,IAAII,OAAO,CAAC,CAAC,EAAEJ;QAC7EK,QAAQC,IAAI,CAAC;IACf;IAEA,OAAOtB;AACT,EAAC"}
@@ -0,0 +1,3 @@
1
+ import type { CommitTransaction } from 'payload';
2
+ export declare const commitTransaction: CommitTransaction;
3
+ //# sourceMappingURL=commitTransaction.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"commitTransaction.d.ts","sourceRoot":"","sources":["../../src/transactions/commitTransaction.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAA;AAEhD,eAAO,MAAM,iBAAiB,EAAE,iBAiB/B,CAAA"}