@shadowmkj/plugin-ecommerce 3.85.1

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 (369) hide show
  1. package/LICENSE.md +22 -0
  2. package/README.md +3 -0
  3. package/dist/collections/addresses/createAddressesCollection.d.ts.map +1 -0
  4. package/dist/collections/addresses/createAddressesCollection.js +73 -0
  5. package/dist/collections/addresses/createAddressesCollection.js.map +1 -0
  6. package/dist/collections/addresses/defaultAddressFields.d.ts.map +1 -0
  7. package/dist/collections/addresses/defaultAddressFields.js +72 -0
  8. package/dist/collections/addresses/defaultAddressFields.js.map +1 -0
  9. package/dist/collections/addresses/defaultCountries.d.ts.map +1 -0
  10. package/dist/collections/addresses/defaultCountries.js +169 -0
  11. package/dist/collections/addresses/defaultCountries.js.map +1 -0
  12. package/dist/collections/addresses/hooks/beforeChange.d.ts.map +1 -0
  13. package/dist/collections/addresses/hooks/beforeChange.js +16 -0
  14. package/dist/collections/addresses/hooks/beforeChange.js.map +1 -0
  15. package/dist/collections/carts/beforeChange.d.ts.map +1 -0
  16. package/dist/collections/carts/beforeChange.js +49 -0
  17. package/dist/collections/carts/beforeChange.js.map +1 -0
  18. package/dist/collections/carts/createCartsCollection.d.ts.map +1 -0
  19. package/dist/collections/carts/createCartsCollection.js +194 -0
  20. package/dist/collections/carts/createCartsCollection.js.map +1 -0
  21. package/dist/collections/carts/endpoints/addItem.d.ts.map +1 -0
  22. package/dist/collections/carts/endpoints/addItem.js +54 -0
  23. package/dist/collections/carts/endpoints/addItem.js.map +1 -0
  24. package/dist/collections/carts/endpoints/clearCart.d.ts.map +1 -0
  25. package/dist/collections/carts/endpoints/clearCart.js +41 -0
  26. package/dist/collections/carts/endpoints/clearCart.js.map +1 -0
  27. package/dist/collections/carts/endpoints/mergeCart.d.ts.map +1 -0
  28. package/dist/collections/carts/endpoints/mergeCart.js +72 -0
  29. package/dist/collections/carts/endpoints/mergeCart.js.map +1 -0
  30. package/dist/collections/carts/endpoints/removeItem.d.ts.map +1 -0
  31. package/dist/collections/carts/endpoints/removeItem.js +51 -0
  32. package/dist/collections/carts/endpoints/removeItem.js.map +1 -0
  33. package/dist/collections/carts/endpoints/updateItem.d.ts.map +1 -0
  34. package/dist/collections/carts/endpoints/updateItem.js +95 -0
  35. package/dist/collections/carts/endpoints/updateItem.js.map +1 -0
  36. package/dist/collections/carts/hasCartSecretAccess.d.ts.map +1 -0
  37. package/dist/collections/carts/hasCartSecretAccess.js +24 -0
  38. package/dist/collections/carts/hasCartSecretAccess.js.map +1 -0
  39. package/dist/collections/carts/operations/addItem.d.ts.map +1 -0
  40. package/dist/collections/carts/operations/addItem.js +95 -0
  41. package/dist/collections/carts/operations/addItem.js.map +1 -0
  42. package/dist/collections/carts/operations/clearCart.d.ts.map +1 -0
  43. package/dist/collections/carts/operations/clearCart.js +53 -0
  44. package/dist/collections/carts/operations/clearCart.js.map +1 -0
  45. package/dist/collections/carts/operations/createRequestWithSecret.d.ts.map +1 -0
  46. package/dist/collections/carts/operations/createRequestWithSecret.js +21 -0
  47. package/dist/collections/carts/operations/createRequestWithSecret.js.map +1 -0
  48. package/dist/collections/carts/operations/defaultCartItemMatcher.d.ts.map +1 -0
  49. package/dist/collections/carts/operations/defaultCartItemMatcher.js +25 -0
  50. package/dist/collections/carts/operations/defaultCartItemMatcher.js.map +1 -0
  51. package/dist/collections/carts/operations/defaultCartItemMatcher.spec.js +358 -0
  52. package/dist/collections/carts/operations/defaultCartItemMatcher.spec.js.map +1 -0
  53. package/dist/collections/carts/operations/mergeCart.d.ts.map +1 -0
  54. package/dist/collections/carts/operations/mergeCart.js +144 -0
  55. package/dist/collections/carts/operations/mergeCart.js.map +1 -0
  56. package/dist/collections/carts/operations/removeItem.d.ts.map +1 -0
  57. package/dist/collections/carts/operations/removeItem.js +69 -0
  58. package/dist/collections/carts/operations/removeItem.js.map +1 -0
  59. package/dist/collections/carts/operations/types.d.ts.map +1 -0
  60. package/dist/collections/carts/operations/types.js +7 -0
  61. package/dist/collections/carts/operations/types.js.map +1 -0
  62. package/dist/collections/carts/operations/updateItem.d.ts.map +1 -0
  63. package/dist/collections/carts/operations/updateItem.js +110 -0
  64. package/dist/collections/carts/operations/updateItem.js.map +1 -0
  65. package/dist/collections/carts/statusBeforeRead.d.ts.map +1 -0
  66. package/dist/collections/carts/statusBeforeRead.js +18 -0
  67. package/dist/collections/carts/statusBeforeRead.js.map +1 -0
  68. package/dist/collections/orders/createOrdersCollection.d.ts.map +1 -0
  69. package/dist/collections/orders/createOrdersCollection.js +163 -0
  70. package/dist/collections/orders/createOrdersCollection.js.map +1 -0
  71. package/dist/collections/products/createProductsCollection.d.ts.map +1 -0
  72. package/dist/collections/products/createProductsCollection.js +62 -0
  73. package/dist/collections/products/createProductsCollection.js.map +1 -0
  74. package/dist/collections/transactions/createTransactionsCollection.d.ts.map +1 -0
  75. package/dist/collections/transactions/createTransactionsCollection.js +157 -0
  76. package/dist/collections/transactions/createTransactionsCollection.js.map +1 -0
  77. package/dist/collections/variants/createVariantOptionsCollection.d.ts.map +1 -0
  78. package/dist/collections/variants/createVariantOptionsCollection.js +53 -0
  79. package/dist/collections/variants/createVariantOptionsCollection.js.map +1 -0
  80. package/dist/collections/variants/createVariantTypesCollection.d.ts.map +1 -0
  81. package/dist/collections/variants/createVariantTypesCollection.js +49 -0
  82. package/dist/collections/variants/createVariantTypesCollection.js.map +1 -0
  83. package/dist/collections/variants/createVariantsCollection/hooks/beforeChange.d.ts.map +1 -0
  84. package/dist/collections/variants/createVariantsCollection/hooks/beforeChange.js +38 -0
  85. package/dist/collections/variants/createVariantsCollection/hooks/beforeChange.js.map +1 -0
  86. package/dist/collections/variants/createVariantsCollection/hooks/validateOptions.d.ts.map +1 -0
  87. package/dist/collections/variants/createVariantsCollection/hooks/validateOptions.js +58 -0
  88. package/dist/collections/variants/createVariantsCollection/hooks/validateOptions.js.map +1 -0
  89. package/dist/collections/variants/createVariantsCollection/index.d.ts.map +1 -0
  90. package/dist/collections/variants/createVariantsCollection/index.js +107 -0
  91. package/dist/collections/variants/createVariantsCollection/index.js.map +1 -0
  92. package/dist/currencies/index.d.ts.map +1 -0
  93. package/dist/currencies/index.js +20 -0
  94. package/dist/currencies/index.js.map +1 -0
  95. package/dist/endpoints/confirmOrder.d.ts.map +1 -0
  96. package/dist/endpoints/confirmOrder.js +150 -0
  97. package/dist/endpoints/confirmOrder.js.map +1 -0
  98. package/dist/endpoints/initiatePayment.d.ts.map +1 -0
  99. package/dist/endpoints/initiatePayment.js +226 -0
  100. package/dist/endpoints/initiatePayment.js.map +1 -0
  101. package/dist/exports/client/index.d.ts.map +1 -0
  102. package/dist/exports/client/index.js +4 -0
  103. package/dist/exports/client/index.js.map +1 -0
  104. package/dist/exports/client/react.d.ts.map +1 -0
  105. package/dist/exports/client/react.js +5 -0
  106. package/dist/exports/client/react.js.map +1 -0
  107. package/dist/exports/payments/cod.d.ts +2 -0
  108. package/dist/exports/payments/cod.d.ts.map +1 -0
  109. package/dist/exports/payments/cod.js +3 -0
  110. package/dist/exports/payments/cod.js.map +1 -0
  111. package/dist/exports/payments/stripe.d.ts.map +1 -0
  112. package/dist/exports/payments/stripe.js +3 -0
  113. package/dist/exports/payments/stripe.js.map +1 -0
  114. package/dist/exports/rsc.d.ts.map +1 -0
  115. package/dist/exports/rsc.js +4 -0
  116. package/dist/exports/rsc.js.map +1 -0
  117. package/dist/exports/types.d.ts.map +1 -0
  118. package/dist/exports/types.js +3 -0
  119. package/dist/exports/types.js.map +1 -0
  120. package/dist/fields/amountField.d.ts.map +1 -0
  121. package/dist/fields/amountField.js +33 -0
  122. package/dist/fields/amountField.js.map +1 -0
  123. package/dist/fields/cartItemsField.d.ts.map +1 -0
  124. package/dist/fields/cartItemsField.js +55 -0
  125. package/dist/fields/cartItemsField.js.map +1 -0
  126. package/dist/fields/currencyField.d.ts.map +1 -0
  127. package/dist/fields/currencyField.js +29 -0
  128. package/dist/fields/currencyField.js.map +1 -0
  129. package/dist/fields/inventoryField.d.ts.map +1 -0
  130. package/dist/fields/inventoryField.js +16 -0
  131. package/dist/fields/inventoryField.js.map +1 -0
  132. package/dist/fields/pricesField.d.ts.map +1 -0
  133. package/dist/fields/pricesField.js +54 -0
  134. package/dist/fields/pricesField.js.map +1 -0
  135. package/dist/fields/statusField.d.ts.map +1 -0
  136. package/dist/fields/statusField.js +49 -0
  137. package/dist/fields/statusField.js.map +1 -0
  138. package/dist/fields/variantsFields.d.ts.map +1 -0
  139. package/dist/fields/variantsFields.js +48 -0
  140. package/dist/fields/variantsFields.js.map +1 -0
  141. package/dist/index.d.ts.map +1 -0
  142. package/dist/index.js +258 -0
  143. package/dist/index.js.map +1 -0
  144. package/dist/payments/adapters/cod/confirmOrder.d.ts +5 -0
  145. package/dist/payments/adapters/cod/confirmOrder.d.ts.map +1 -0
  146. package/dist/payments/adapters/cod/confirmOrder.js +83 -0
  147. package/dist/payments/adapters/cod/confirmOrder.js.map +1 -0
  148. package/dist/payments/adapters/cod/confirmOrder.spec.js +166 -0
  149. package/dist/payments/adapters/cod/confirmOrder.spec.js.map +1 -0
  150. package/dist/payments/adapters/cod/endpoints/webhooks.d.ts +5 -0
  151. package/dist/payments/adapters/cod/endpoints/webhooks.d.ts.map +1 -0
  152. package/dist/payments/adapters/cod/endpoints/webhooks.js +18 -0
  153. package/dist/payments/adapters/cod/endpoints/webhooks.js.map +1 -0
  154. package/dist/payments/adapters/cod/index.d.ts +12 -0
  155. package/dist/payments/adapters/cod/index.d.ts.map +1 -0
  156. package/dist/payments/adapters/cod/index.js +64 -0
  157. package/dist/payments/adapters/cod/index.js.map +1 -0
  158. package/dist/payments/adapters/cod/initiatePayment.d.ts +5 -0
  159. package/dist/payments/adapters/cod/initiatePayment.d.ts.map +1 -0
  160. package/dist/payments/adapters/cod/initiatePayment.js +91 -0
  161. package/dist/payments/adapters/cod/initiatePayment.js.map +1 -0
  162. package/dist/payments/adapters/stripe/confirmOrder.d.ts.map +1 -0
  163. package/dist/payments/adapters/stripe/confirmOrder.js +113 -0
  164. package/dist/payments/adapters/stripe/confirmOrder.js.map +1 -0
  165. package/dist/payments/adapters/stripe/confirmOrder.spec.js +166 -0
  166. package/dist/payments/adapters/stripe/confirmOrder.spec.js.map +1 -0
  167. package/dist/payments/adapters/stripe/endpoints/webhooks.d.ts.map +1 -0
  168. package/dist/payments/adapters/stripe/endpoints/webhooks.js +53 -0
  169. package/dist/payments/adapters/stripe/endpoints/webhooks.js.map +1 -0
  170. package/dist/payments/adapters/stripe/index.d.ts +61 -0
  171. package/dist/payments/adapters/stripe/index.d.ts.map +1 -0
  172. package/dist/payments/adapters/stripe/index.js +68 -0
  173. package/dist/payments/adapters/stripe/index.js.map +1 -0
  174. package/dist/payments/adapters/stripe/initiatePayment.d.ts.map +1 -0
  175. package/dist/payments/adapters/stripe/initiatePayment.js +113 -0
  176. package/dist/payments/adapters/stripe/initiatePayment.js.map +1 -0
  177. package/dist/react/provider/index.d.ts.map +1 -0
  178. package/dist/react/provider/index.js +1094 -0
  179. package/dist/react/provider/index.js.map +1 -0
  180. package/dist/react/provider/utilities.d.ts.map +1 -0
  181. package/dist/react/provider/utilities.js +13 -0
  182. package/dist/react/provider/utilities.js.map +1 -0
  183. package/dist/translations/index.d.ts.map +1 -0
  184. package/dist/translations/index.js +84 -0
  185. package/dist/translations/index.js.map +1 -0
  186. package/dist/translations/languages/ar.d.ts.map +1 -0
  187. package/dist/translations/languages/ar.js +92 -0
  188. package/dist/translations/languages/ar.js.map +1 -0
  189. package/dist/translations/languages/az.d.ts.map +1 -0
  190. package/dist/translations/languages/az.js +92 -0
  191. package/dist/translations/languages/az.js.map +1 -0
  192. package/dist/translations/languages/bg.d.ts.map +1 -0
  193. package/dist/translations/languages/bg.js +92 -0
  194. package/dist/translations/languages/bg.js.map +1 -0
  195. package/dist/translations/languages/ca.d.ts.map +1 -0
  196. package/dist/translations/languages/ca.js +92 -0
  197. package/dist/translations/languages/ca.js.map +1 -0
  198. package/dist/translations/languages/cs.d.ts.map +1 -0
  199. package/dist/translations/languages/cs.js +92 -0
  200. package/dist/translations/languages/cs.js.map +1 -0
  201. package/dist/translations/languages/da.d.ts.map +1 -0
  202. package/dist/translations/languages/da.js +92 -0
  203. package/dist/translations/languages/da.js.map +1 -0
  204. package/dist/translations/languages/de.d.ts.map +1 -0
  205. package/dist/translations/languages/de.js +92 -0
  206. package/dist/translations/languages/de.js.map +1 -0
  207. package/dist/translations/languages/en.d.ts.map +1 -0
  208. package/dist/translations/languages/en.js +92 -0
  209. package/dist/translations/languages/en.js.map +1 -0
  210. package/dist/translations/languages/es.d.ts.map +1 -0
  211. package/dist/translations/languages/es.js +92 -0
  212. package/dist/translations/languages/es.js.map +1 -0
  213. package/dist/translations/languages/et.d.ts.map +1 -0
  214. package/dist/translations/languages/et.js +92 -0
  215. package/dist/translations/languages/et.js.map +1 -0
  216. package/dist/translations/languages/fa.d.ts.map +1 -0
  217. package/dist/translations/languages/fa.js +92 -0
  218. package/dist/translations/languages/fa.js.map +1 -0
  219. package/dist/translations/languages/fr.d.ts.map +1 -0
  220. package/dist/translations/languages/fr.js +92 -0
  221. package/dist/translations/languages/fr.js.map +1 -0
  222. package/dist/translations/languages/he.d.ts.map +1 -0
  223. package/dist/translations/languages/he.js +92 -0
  224. package/dist/translations/languages/he.js.map +1 -0
  225. package/dist/translations/languages/hr.d.ts.map +1 -0
  226. package/dist/translations/languages/hr.js +92 -0
  227. package/dist/translations/languages/hr.js.map +1 -0
  228. package/dist/translations/languages/hu.d.ts.map +1 -0
  229. package/dist/translations/languages/hu.js +92 -0
  230. package/dist/translations/languages/hu.js.map +1 -0
  231. package/dist/translations/languages/hy.d.ts.map +1 -0
  232. package/dist/translations/languages/hy.js +92 -0
  233. package/dist/translations/languages/hy.js.map +1 -0
  234. package/dist/translations/languages/is.d.ts.map +1 -0
  235. package/dist/translations/languages/is.js +92 -0
  236. package/dist/translations/languages/is.js.map +1 -0
  237. package/dist/translations/languages/it.d.ts.map +1 -0
  238. package/dist/translations/languages/it.js +92 -0
  239. package/dist/translations/languages/it.js.map +1 -0
  240. package/dist/translations/languages/ja.d.ts.map +1 -0
  241. package/dist/translations/languages/ja.js +92 -0
  242. package/dist/translations/languages/ja.js.map +1 -0
  243. package/dist/translations/languages/ko.d.ts.map +1 -0
  244. package/dist/translations/languages/ko.js +92 -0
  245. package/dist/translations/languages/ko.js.map +1 -0
  246. package/dist/translations/languages/lt.d.ts.map +1 -0
  247. package/dist/translations/languages/lt.js +92 -0
  248. package/dist/translations/languages/lt.js.map +1 -0
  249. package/dist/translations/languages/my.d.ts.map +1 -0
  250. package/dist/translations/languages/my.js +92 -0
  251. package/dist/translations/languages/my.js.map +1 -0
  252. package/dist/translations/languages/nb.d.ts.map +1 -0
  253. package/dist/translations/languages/nb.js +92 -0
  254. package/dist/translations/languages/nb.js.map +1 -0
  255. package/dist/translations/languages/nl.d.ts.map +1 -0
  256. package/dist/translations/languages/nl.js +92 -0
  257. package/dist/translations/languages/nl.js.map +1 -0
  258. package/dist/translations/languages/pl.d.ts.map +1 -0
  259. package/dist/translations/languages/pl.js +92 -0
  260. package/dist/translations/languages/pl.js.map +1 -0
  261. package/dist/translations/languages/pt.d.ts.map +1 -0
  262. package/dist/translations/languages/pt.js +92 -0
  263. package/dist/translations/languages/pt.js.map +1 -0
  264. package/dist/translations/languages/ro.d.ts.map +1 -0
  265. package/dist/translations/languages/ro.js +92 -0
  266. package/dist/translations/languages/ro.js.map +1 -0
  267. package/dist/translations/languages/rs.d.ts.map +1 -0
  268. package/dist/translations/languages/rs.js +92 -0
  269. package/dist/translations/languages/rs.js.map +1 -0
  270. package/dist/translations/languages/rsLatin.d.ts.map +1 -0
  271. package/dist/translations/languages/rsLatin.js +92 -0
  272. package/dist/translations/languages/rsLatin.js.map +1 -0
  273. package/dist/translations/languages/ru.d.ts.map +1 -0
  274. package/dist/translations/languages/ru.js +92 -0
  275. package/dist/translations/languages/ru.js.map +1 -0
  276. package/dist/translations/languages/sk.d.ts.map +1 -0
  277. package/dist/translations/languages/sk.js +92 -0
  278. package/dist/translations/languages/sk.js.map +1 -0
  279. package/dist/translations/languages/sl.d.ts.map +1 -0
  280. package/dist/translations/languages/sl.js +92 -0
  281. package/dist/translations/languages/sl.js.map +1 -0
  282. package/dist/translations/languages/sv.d.ts.map +1 -0
  283. package/dist/translations/languages/sv.js +92 -0
  284. package/dist/translations/languages/sv.js.map +1 -0
  285. package/dist/translations/languages/ta.d.ts.map +1 -0
  286. package/dist/translations/languages/ta.js +92 -0
  287. package/dist/translations/languages/ta.js.map +1 -0
  288. package/dist/translations/languages/th.d.ts.map +1 -0
  289. package/dist/translations/languages/th.js +92 -0
  290. package/dist/translations/languages/th.js.map +1 -0
  291. package/dist/translations/languages/tr.d.ts.map +1 -0
  292. package/dist/translations/languages/tr.js +92 -0
  293. package/dist/translations/languages/tr.js.map +1 -0
  294. package/dist/translations/languages/uk.d.ts.map +1 -0
  295. package/dist/translations/languages/uk.js +92 -0
  296. package/dist/translations/languages/uk.js.map +1 -0
  297. package/dist/translations/languages/vi.d.ts.map +1 -0
  298. package/dist/translations/languages/vi.js +92 -0
  299. package/dist/translations/languages/vi.js.map +1 -0
  300. package/dist/translations/languages/zh.d.ts.map +1 -0
  301. package/dist/translations/languages/zh.js +92 -0
  302. package/dist/translations/languages/zh.js.map +1 -0
  303. package/dist/translations/languages/zhTw.d.ts.map +1 -0
  304. package/dist/translations/languages/zhTw.js +92 -0
  305. package/dist/translations/languages/zhTw.js.map +1 -0
  306. package/dist/translations/translation-schema.json +343 -0
  307. package/dist/translations/types.d.ts.map +1 -0
  308. package/dist/translations/types.js +3 -0
  309. package/dist/translations/types.js.map +1 -0
  310. package/dist/types/index.d.ts.map +1 -0
  311. package/dist/types/index.js +3 -0
  312. package/dist/types/index.js.map +1 -0
  313. package/dist/types/utilities.d.ts.map +1 -0
  314. package/dist/types/utilities.js +3 -0
  315. package/dist/types/utilities.js.map +1 -0
  316. package/dist/ui/PriceCell/index.d.ts.map +1 -0
  317. package/dist/ui/PriceCell/index.js +36 -0
  318. package/dist/ui/PriceCell/index.js.map +1 -0
  319. package/dist/ui/PriceInput/FormattedInput.d.ts.map +1 -0
  320. package/dist/ui/PriceInput/FormattedInput.js +147 -0
  321. package/dist/ui/PriceInput/FormattedInput.js.map +1 -0
  322. package/dist/ui/PriceInput/index.css +35 -0
  323. package/dist/ui/PriceInput/index.d.ts.map +1 -0
  324. package/dist/ui/PriceInput/index.js +21 -0
  325. package/dist/ui/PriceInput/index.js.map +1 -0
  326. package/dist/ui/PriceRowLabel/index.css +13 -0
  327. package/dist/ui/PriceRowLabel/index.d.ts.map +1 -0
  328. package/dist/ui/PriceRowLabel/index.js +66 -0
  329. package/dist/ui/PriceRowLabel/index.js.map +1 -0
  330. package/dist/ui/VariantOptionsSelector/ErrorBox.d.ts.map +1 -0
  331. package/dist/ui/VariantOptionsSelector/ErrorBox.js +28 -0
  332. package/dist/ui/VariantOptionsSelector/ErrorBox.js.map +1 -0
  333. package/dist/ui/VariantOptionsSelector/OptionsSelect.d.ts.map +1 -0
  334. package/dist/ui/VariantOptionsSelector/OptionsSelect.js +71 -0
  335. package/dist/ui/VariantOptionsSelector/OptionsSelect.js.map +1 -0
  336. package/dist/ui/VariantOptionsSelector/index.css +37 -0
  337. package/dist/ui/VariantOptionsSelector/index.d.ts.map +1 -0
  338. package/dist/ui/VariantOptionsSelector/index.js +81 -0
  339. package/dist/ui/VariantOptionsSelector/index.js.map +1 -0
  340. package/dist/ui/utilities.d.ts.map +1 -0
  341. package/dist/ui/utilities.js +40 -0
  342. package/dist/ui/utilities.js.map +1 -0
  343. package/dist/utilities/accessComposition.d.ts.map +1 -0
  344. package/dist/utilities/accessComposition.js +103 -0
  345. package/dist/utilities/accessComposition.js.map +1 -0
  346. package/dist/utilities/accessComposition.spec.js +765 -0
  347. package/dist/utilities/accessComposition.spec.js.map +1 -0
  348. package/dist/utilities/defaultProductsValidation.d.ts.map +1 -0
  349. package/dist/utilities/defaultProductsValidation.js +40 -0
  350. package/dist/utilities/defaultProductsValidation.js.map +1 -0
  351. package/dist/utilities/defaultProductsValidation.spec.js +384 -0
  352. package/dist/utilities/defaultProductsValidation.spec.js.map +1 -0
  353. package/dist/utilities/errorCodes.d.ts.map +1 -0
  354. package/dist/utilities/errorCodes.js +4 -0
  355. package/dist/utilities/errorCodes.js.map +1 -0
  356. package/dist/utilities/getCollectionSlugMap.d.ts.map +1 -0
  357. package/dist/utilities/getCollectionSlugMap.js +36 -0
  358. package/dist/utilities/getCollectionSlugMap.js.map +1 -0
  359. package/dist/utilities/getCollectionSlugMap.spec.js +254 -0
  360. package/dist/utilities/getCollectionSlugMap.spec.js.map +1 -0
  361. package/dist/utilities/pushTypeScriptProperties.d.ts.map +1 -0
  362. package/dist/utilities/pushTypeScriptProperties.js +37 -0
  363. package/dist/utilities/pushTypeScriptProperties.js.map +1 -0
  364. package/dist/utilities/sanitizePluginConfig.d.ts.map +1 -0
  365. package/dist/utilities/sanitizePluginConfig.js +75 -0
  366. package/dist/utilities/sanitizePluginConfig.js.map +1 -0
  367. package/dist/utilities/sanitizePluginConfig.spec.js +516 -0
  368. package/dist/utilities/sanitizePluginConfig.spec.js.map +1 -0
  369. package/package.json +114 -0
@@ -0,0 +1,37 @@
1
+ @layer payload-default {
2
+ .variantOptionsSelector {
3
+ margin-top: calc(var(--spacing-field) * 2);
4
+ margin-bottom: calc(var(--spacing-field) * 2);
5
+ }
6
+
7
+ .variantOptionsSelectorHeading {
8
+ font-size: calc(var(--base) * 1);
9
+ font-weight: 500;
10
+ color: var(--color-text);
11
+ margin-bottom: calc(var(--base) * 0.5);
12
+ }
13
+
14
+ .variantOptionsSelectorItem {
15
+ display: flex;
16
+ flex-direction: column;
17
+ gap: 0;
18
+ }
19
+
20
+ .variantOptionsSelectorList {
21
+ display: flex;
22
+ flex-direction: column;
23
+ gap: calc(var(--base) * 0.75);
24
+ }
25
+
26
+ .variantOptionsSelectorError {
27
+ position: relative;
28
+ }
29
+
30
+ .variantOptionsSelectorErrorWrapper {
31
+ &.showError {
32
+ border-radius: 2px;
33
+ outline: 1px solid var(--theme-error-400);
34
+ outline-offset: 2px;
35
+ }
36
+ }
37
+ }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/ui/VariantOptionsSelector/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,SAAS,CAAA;AAKrD,OAAO,aAAa,CAAA;AAGpB,KAAK,KAAK,GAAG,EAAE,GAAG,sBAAsB,CAAA;AAExC,eAAO,MAAM,sBAAsB,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CA8ElD,CAAA"}
@@ -0,0 +1,81 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { FieldLabel } from '@payloadcms/ui';
3
+ import { ErrorBox } from './ErrorBox.js';
4
+ import './index.css';
5
+ import { OptionsSelect } from './OptionsSelect.js';
6
+ export const VariantOptionsSelector = async (props)=>{
7
+ const { clientField, data, field, path, req, user } = props;
8
+ const { label } = clientField;
9
+ // Get collection slugs from field custom prop, with defaults for backwards compatibility
10
+ const productsSlug = field.custom?.productsSlug || 'products';
11
+ const variantTypesSlug = field.custom?.variantTypesSlug || 'variantTypes';
12
+ const product = await req.payload.findByID({
13
+ id: data.product,
14
+ collection: productsSlug,
15
+ depth: 0,
16
+ draft: true,
17
+ select: {
18
+ variants: true,
19
+ variantTypes: true
20
+ },
21
+ user
22
+ });
23
+ // @ts-expect-error - TODO: Fix types
24
+ const existingVariantOptions = product.variants?.docs?.map((variant)=>variant.options) ?? [];
25
+ const variantTypeIDs = product.variantTypes;
26
+ const variantTypes = [];
27
+ // Need to get the variant types separately so that the options are populated
28
+ // @ts-expect-error - TODO: Fix types
29
+ if (variantTypeIDs?.length && variantTypeIDs.length > 0) {
30
+ // @ts-expect-error - TODO: Fix types
31
+ for (const variantTypeID of variantTypeIDs){
32
+ const variantType = await req.payload.findByID({
33
+ id: variantTypeID,
34
+ collection: variantTypesSlug,
35
+ depth: 1,
36
+ joins: {
37
+ options: {
38
+ sort: 'value'
39
+ }
40
+ }
41
+ });
42
+ if (variantType) {
43
+ variantTypes.push(variantType);
44
+ }
45
+ }
46
+ }
47
+ return /*#__PURE__*/ _jsxs("div", {
48
+ className: "variantOptionsSelector",
49
+ children: [
50
+ /*#__PURE__*/ _jsx("div", {
51
+ className: "variantOptionsSelectorHeading",
52
+ children: /*#__PURE__*/ _jsx(FieldLabel, {
53
+ as: "span",
54
+ label: label
55
+ })
56
+ }),
57
+ /*#__PURE__*/ _jsx(ErrorBox, {
58
+ existingOptions: existingVariantOptions,
59
+ path: path,
60
+ children: /*#__PURE__*/ _jsx("div", {
61
+ className: "variantOptionsSelectorList",
62
+ children: variantTypes.map((type)=>{
63
+ // @ts-expect-error - TODO: Fix types
64
+ const options = type.options.docs.map((option)=>({
65
+ label: option.label,
66
+ value: option.id
67
+ }));
68
+ return /*#__PURE__*/ _jsx(OptionsSelect, {
69
+ field: clientField,
70
+ label: type.label || type.name,
71
+ options: options,
72
+ path: path
73
+ }, type.name);
74
+ })
75
+ })
76
+ })
77
+ ]
78
+ });
79
+ };
80
+
81
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/ui/VariantOptionsSelector/index.tsx"],"sourcesContent":["import type { SelectFieldServerProps } from 'payload'\n\nimport { FieldLabel } from '@payloadcms/ui'\n\nimport { ErrorBox } from './ErrorBox.js'\nimport './index.css'\nimport { OptionsSelect } from './OptionsSelect.js'\n\ntype Props = {} & SelectFieldServerProps\n\nexport const VariantOptionsSelector: React.FC<Props> = async (props) => {\n const { clientField, data, field, path, req, user } = props\n const { label } = clientField\n\n // Get collection slugs from field custom prop, with defaults for backwards compatibility\n const productsSlug = (field.custom?.productsSlug as string) || 'products'\n const variantTypesSlug = (field.custom?.variantTypesSlug as string) || 'variantTypes'\n\n const product = await req.payload.findByID({\n id: data.product,\n collection: productsSlug,\n depth: 0,\n draft: true,\n select: {\n variants: true,\n variantTypes: true,\n },\n user,\n })\n\n // @ts-expect-error - TODO: Fix types\n const existingVariantOptions = product.variants?.docs?.map((variant) => variant.options) ?? []\n\n const variantTypeIDs = product.variantTypes\n\n const variantTypes = []\n\n // Need to get the variant types separately so that the options are populated\n // @ts-expect-error - TODO: Fix types\n if (variantTypeIDs?.length && variantTypeIDs.length > 0) {\n // @ts-expect-error - TODO: Fix types\n for (const variantTypeID of variantTypeIDs) {\n const variantType = await req.payload.findByID({\n id: variantTypeID,\n collection: variantTypesSlug,\n depth: 1,\n joins: {\n options: {\n sort: 'value',\n },\n },\n })\n\n if (variantType) {\n variantTypes.push(variantType)\n }\n }\n }\n\n return (\n <div className=\"variantOptionsSelector\">\n <div className=\"variantOptionsSelectorHeading\">\n <FieldLabel as=\"span\" label={label} />\n </div>\n\n <ErrorBox existingOptions={existingVariantOptions} path={path}>\n <div className=\"variantOptionsSelectorList\">\n {variantTypes.map((type) => {\n // @ts-expect-error - TODO: Fix types\n const options = type.options.docs.map((option) => ({\n label: option.label,\n value: option.id,\n }))\n\n return (\n <OptionsSelect\n field={clientField}\n key={type.name}\n label={type.label || type.name}\n options={options}\n path={path}\n />\n )\n })}\n </div>\n </ErrorBox>\n </div>\n )\n}\n"],"names":["FieldLabel","ErrorBox","OptionsSelect","VariantOptionsSelector","props","clientField","data","field","path","req","user","label","productsSlug","custom","variantTypesSlug","product","payload","findByID","id","collection","depth","draft","select","variants","variantTypes","existingVariantOptions","docs","map","variant","options","variantTypeIDs","length","variantTypeID","variantType","joins","sort","push","div","className","as","existingOptions","type","option","value","name"],"mappings":";AAEA,SAASA,UAAU,QAAQ,iBAAgB;AAE3C,SAASC,QAAQ,QAAQ,gBAAe;AACxC,OAAO,cAAa;AACpB,SAASC,aAAa,QAAQ,qBAAoB;AAIlD,OAAO,MAAMC,yBAA0C,OAAOC;IAC5D,MAAM,EAAEC,WAAW,EAAEC,IAAI,EAAEC,KAAK,EAAEC,IAAI,EAAEC,GAAG,EAAEC,IAAI,EAAE,GAAGN;IACtD,MAAM,EAAEO,KAAK,EAAE,GAAGN;IAElB,yFAAyF;IACzF,MAAMO,eAAe,AAACL,MAAMM,MAAM,EAAED,gBAA2B;IAC/D,MAAME,mBAAmB,AAACP,MAAMM,MAAM,EAAEC,oBAA+B;IAEvE,MAAMC,UAAU,MAAMN,IAAIO,OAAO,CAACC,QAAQ,CAAC;QACzCC,IAAIZ,KAAKS,OAAO;QAChBI,YAAYP;QACZQ,OAAO;QACPC,OAAO;QACPC,QAAQ;YACNC,UAAU;YACVC,cAAc;QAChB;QACAd;IACF;IAEA,qCAAqC;IACrC,MAAMe,yBAAyBV,QAAQQ,QAAQ,EAAEG,MAAMC,IAAI,CAACC,UAAYA,QAAQC,OAAO,KAAK,EAAE;IAE9F,MAAMC,iBAAiBf,QAAQS,YAAY;IAE3C,MAAMA,eAAe,EAAE;IAEvB,6EAA6E;IAC7E,qCAAqC;IACrC,IAAIM,gBAAgBC,UAAUD,eAAeC,MAAM,GAAG,GAAG;QACvD,qCAAqC;QACrC,KAAK,MAAMC,iBAAiBF,eAAgB;YAC1C,MAAMG,cAAc,MAAMxB,IAAIO,OAAO,CAACC,QAAQ,CAAC;gBAC7CC,IAAIc;gBACJb,YAAYL;gBACZM,OAAO;gBACPc,OAAO;oBACLL,SAAS;wBACPM,MAAM;oBACR;gBACF;YACF;YAEA,IAAIF,aAAa;gBACfT,aAAaY,IAAI,CAACH;YACpB;QACF;IACF;IAEA,qBACE,MAACI;QAAIC,WAAU;;0BACb,KAACD;gBAAIC,WAAU;0BACb,cAAA,KAACtC;oBAAWuC,IAAG;oBAAO5B,OAAOA;;;0BAG/B,KAACV;gBAASuC,iBAAiBf;gBAAwBjB,MAAMA;0BACvD,cAAA,KAAC6B;oBAAIC,WAAU;8BACZd,aAAaG,GAAG,CAAC,CAACc;wBACjB,qCAAqC;wBACrC,MAAMZ,UAAUY,KAAKZ,OAAO,CAACH,IAAI,CAACC,GAAG,CAAC,CAACe,SAAY,CAAA;gCACjD/B,OAAO+B,OAAO/B,KAAK;gCACnBgC,OAAOD,OAAOxB,EAAE;4BAClB,CAAA;wBAEA,qBACE,KAAChB;4BACCK,OAAOF;4BAEPM,OAAO8B,KAAK9B,KAAK,IAAI8B,KAAKG,IAAI;4BAC9Bf,SAASA;4BACTrB,MAAMA;2BAHDiC,KAAKG,IAAI;oBAMpB;;;;;AAKV,EAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utilities.d.ts","sourceRoot":"","sources":["../../src/ui/utilities.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAEjD;;GAEG;AACH,eAAO,MAAM,kBAAkB,gCAG5B;IACD,QAAQ,EAAE,QAAQ,CAAA;IAClB,YAAY,EAAE,MAAM,CAAA;CACrB,KAAG,MAaH,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,oBAAoB,6BAG9B;IACD,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,EAAE,QAAQ,CAAA;CACnB,KAAG,MAUH,CAAA;AAED;;;;;GAKG;AACH,eAAO,MAAM,WAAW,qCAIrB;IACD,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,EAAE,QAAQ,CAAA;IAClB,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB,KAAG,MAQH,CAAA"}
@@ -0,0 +1,40 @@
1
+ /**
2
+ * Convert display value with decimal point to base value (e.g., $25.00 to 2500)
3
+ */ export const convertToBaseValue = ({ currency, displayValue })=>{
4
+ if (!currency) {
5
+ return parseFloat(displayValue);
6
+ }
7
+ // Remove currency symbol and any non-numeric characters except decimal
8
+ const cleanValue = displayValue.replace(currency.symbol, '').replace(/[^0-9.]/g, '');
9
+ // Parse the clean value to a float
10
+ const floatValue = parseFloat(cleanValue || '0');
11
+ // Convert to the base value (e.g., cents for USD)
12
+ return Math.round(floatValue * Math.pow(10, currency.decimals));
13
+ };
14
+ /**
15
+ * Convert base value to display value with decimal point (e.g., 2500 to $25.00)
16
+ */ export const convertFromBaseValue = ({ baseValue, currency })=>{
17
+ if (!currency) {
18
+ return baseValue.toString();
19
+ }
20
+ // Convert from base value (e.g., cents) to decimal value (e.g., dollars)
21
+ const decimalValue = baseValue / Math.pow(10, currency.decimals);
22
+ // Format with the correct number of decimal places
23
+ return decimalValue.toFixed(currency.decimals);
24
+ };
25
+ /**
26
+ * Format a base value as a locale-aware currency string using the Intl API.
27
+ *
28
+ * @example formatPrice({ baseValue: 2500, currency: USD }) // "$25.00"
29
+ * @example formatPrice({ baseValue: 2500, currency: EUR, locale: 'de' }) // "25,00 €"
30
+ */ export const formatPrice = ({ baseValue, currency, locale = 'en' })=>{
31
+ return new Intl.NumberFormat(locale, {
32
+ currency: currency.code,
33
+ currencyDisplay: currency.symbolDisplay ?? 'symbol',
34
+ maximumFractionDigits: currency.decimals,
35
+ minimumFractionDigits: currency.decimals,
36
+ style: 'currency'
37
+ }).format(baseValue / Math.pow(10, currency.decimals));
38
+ };
39
+
40
+ //# sourceMappingURL=utilities.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/ui/utilities.ts"],"sourcesContent":["import type { Currency } from '../types/index.js'\n\n/**\n * Convert display value with decimal point to base value (e.g., $25.00 to 2500)\n */\nexport const convertToBaseValue = ({\n currency,\n displayValue,\n}: {\n currency: Currency\n displayValue: string\n}): number => {\n if (!currency) {\n return parseFloat(displayValue)\n }\n\n // Remove currency symbol and any non-numeric characters except decimal\n const cleanValue = displayValue.replace(currency.symbol, '').replace(/[^0-9.]/g, '')\n\n // Parse the clean value to a float\n const floatValue = parseFloat(cleanValue || '0')\n\n // Convert to the base value (e.g., cents for USD)\n return Math.round(floatValue * Math.pow(10, currency.decimals))\n}\n\n/**\n * Convert base value to display value with decimal point (e.g., 2500 to $25.00)\n */\nexport const convertFromBaseValue = ({\n baseValue,\n currency,\n}: {\n baseValue: number\n currency: Currency\n}): string => {\n if (!currency) {\n return baseValue.toString()\n }\n\n // Convert from base value (e.g., cents) to decimal value (e.g., dollars)\n const decimalValue = baseValue / Math.pow(10, currency.decimals)\n\n // Format with the correct number of decimal places\n return decimalValue.toFixed(currency.decimals)\n}\n\n/**\n * Format a base value as a locale-aware currency string using the Intl API.\n *\n * @example formatPrice({ baseValue: 2500, currency: USD }) // \"$25.00\"\n * @example formatPrice({ baseValue: 2500, currency: EUR, locale: 'de' }) // \"25,00 €\"\n */\nexport const formatPrice = ({\n baseValue,\n currency,\n locale = 'en',\n}: {\n baseValue: number\n currency: Currency\n locale?: string\n}): string => {\n return new Intl.NumberFormat(locale, {\n currency: currency.code,\n currencyDisplay: currency.symbolDisplay ?? 'symbol',\n maximumFractionDigits: currency.decimals,\n minimumFractionDigits: currency.decimals,\n style: 'currency',\n }).format(baseValue / Math.pow(10, currency.decimals))\n}\n"],"names":["convertToBaseValue","currency","displayValue","parseFloat","cleanValue","replace","symbol","floatValue","Math","round","pow","decimals","convertFromBaseValue","baseValue","toString","decimalValue","toFixed","formatPrice","locale","Intl","NumberFormat","code","currencyDisplay","symbolDisplay","maximumFractionDigits","minimumFractionDigits","style","format"],"mappings":"AAEA;;CAEC,GACD,OAAO,MAAMA,qBAAqB,CAAC,EACjCC,QAAQ,EACRC,YAAY,EAIb;IACC,IAAI,CAACD,UAAU;QACb,OAAOE,WAAWD;IACpB;IAEA,uEAAuE;IACvE,MAAME,aAAaF,aAAaG,OAAO,CAACJ,SAASK,MAAM,EAAE,IAAID,OAAO,CAAC,YAAY;IAEjF,mCAAmC;IACnC,MAAME,aAAaJ,WAAWC,cAAc;IAE5C,kDAAkD;IAClD,OAAOI,KAAKC,KAAK,CAACF,aAAaC,KAAKE,GAAG,CAAC,IAAIT,SAASU,QAAQ;AAC/D,EAAC;AAED;;CAEC,GACD,OAAO,MAAMC,uBAAuB,CAAC,EACnCC,SAAS,EACTZ,QAAQ,EAIT;IACC,IAAI,CAACA,UAAU;QACb,OAAOY,UAAUC,QAAQ;IAC3B;IAEA,yEAAyE;IACzE,MAAMC,eAAeF,YAAYL,KAAKE,GAAG,CAAC,IAAIT,SAASU,QAAQ;IAE/D,mDAAmD;IACnD,OAAOI,aAAaC,OAAO,CAACf,SAASU,QAAQ;AAC/C,EAAC;AAED;;;;;CAKC,GACD,OAAO,MAAMM,cAAc,CAAC,EAC1BJ,SAAS,EACTZ,QAAQ,EACRiB,SAAS,IAAI,EAKd;IACC,OAAO,IAAIC,KAAKC,YAAY,CAACF,QAAQ;QACnCjB,UAAUA,SAASoB,IAAI;QACvBC,iBAAiBrB,SAASsB,aAAa,IAAI;QAC3CC,uBAAuBvB,SAASU,QAAQ;QACxCc,uBAAuBxB,SAASU,QAAQ;QACxCe,OAAO;IACT,GAAGC,MAAM,CAACd,YAAYL,KAAKE,GAAG,CAAC,IAAIT,SAASU,QAAQ;AACtD,EAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"accessComposition.d.ts","sourceRoot":"","sources":["../../src/utilities/accessComposition.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAS,MAAM,SAAS,CAAA;AAI5C;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,QAAQ,uBAAwB,MAAM,EAAE,KAAG,MA0BvD,CAAA;AAED;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,SAAS,uBAAwB,MAAM,EAAE,KAAG,MA0BxD,CAAA;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,WAAW,cACX,CAAC,CAAC,IAAI,EAAE,GAAG,KAAK,OAAO,CAAC,GAAG,OAAO,kBAC7B,MAAM,aACZ,MAAM,KACf,MAQF,CAAA"}
@@ -0,0 +1,103 @@
1
+ import { combineWhereConstraints } from 'payload/shared';
2
+ /**
3
+ * Combines multiple access functions with OR logic.
4
+ *
5
+ * Logic:
6
+ * - If ANY function returns `true` → return `true` (full access, short-circuit)
7
+ * - If ALL functions return `false` → return `false` (no access)
8
+ * - If any functions return `Where` queries → combine them with OR logic
9
+ *
10
+ * @example
11
+ * ```ts
12
+ * const canCreate = or(
13
+ * isAdmin,
14
+ * isAuthenticated,
15
+ * conditional(allowGuestAccess, isGuest)
16
+ * )
17
+ * ```
18
+ */ export const accessOR = (...accessFunctions)=>{
19
+ return async (args)=>{
20
+ const whereQueries = [];
21
+ for (const access of accessFunctions){
22
+ const result = await access(args);
23
+ // Short-circuit on true - full access granted
24
+ if (result === true) {
25
+ return true;
26
+ }
27
+ // Collect Where queries for combination (must be an object, not null/undefined/false)
28
+ if (result && typeof result === 'object') {
29
+ whereQueries.push(result);
30
+ }
31
+ }
32
+ // If we have Where queries, combine them with OR
33
+ if (whereQueries.length > 0) {
34
+ return combineWhereConstraints(whereQueries, 'or');
35
+ }
36
+ // All checkers returned false - no access
37
+ return false;
38
+ };
39
+ };
40
+ /**
41
+ * Combines multiple access functions with AND logic.
42
+ *
43
+ * Logic:
44
+ * - If ANY function returns `false` → return `false` (no access, short-circuit)
45
+ * - If ALL functions return `true` → return `true` (full access)
46
+ * - If any functions return `Where` queries → combine them with AND logic
47
+ *
48
+ * @example
49
+ * ```ts
50
+ * const canUpdate = and(
51
+ * isAuthenticated,
52
+ * isDocumentOwner
53
+ * )
54
+ * ```
55
+ */ export const accessAND = (...accessFunctions)=>{
56
+ return async (args)=>{
57
+ const whereQueries = [];
58
+ for (const access of accessFunctions){
59
+ const result = await access(args);
60
+ // Short-circuit on false - no access
61
+ if (result === false) {
62
+ return false;
63
+ }
64
+ // Collect Where queries for combination (must be an object, not null/undefined/true)
65
+ if (result !== true && result && typeof result === 'object') {
66
+ whereQueries.push(result);
67
+ }
68
+ }
69
+ // If we have Where queries, combine them with AND
70
+ if (whereQueries.length > 0) {
71
+ return combineWhereConstraints(whereQueries, 'and');
72
+ }
73
+ // All checkers returned true - full access
74
+ return true;
75
+ };
76
+ };
77
+ /**
78
+ * Conditionally applies an access function based on a boolean condition or function.
79
+ *
80
+ * Useful for feature flags and plugin configuration.
81
+ *
82
+ * @param condition - Boolean or function to determine which function to use
83
+ * @param checker - Access function to use if condition is true
84
+ * @param fallback - Access function to use if condition is false (defaults to denying access)
85
+ *
86
+ * @example
87
+ * ```ts
88
+ * const canCreate = or(
89
+ * isAdmin,
90
+ * conditional(allowGuestCarts, isGuest)
91
+ * )
92
+ * ```
93
+ */ export const conditional = (condition, accessFunction, fallback = ()=>false)=>{
94
+ return async (args)=>{
95
+ const shouldApply = typeof condition === 'function' ? condition(args) : condition;
96
+ if (shouldApply) {
97
+ return accessFunction(args);
98
+ }
99
+ return fallback(args);
100
+ };
101
+ };
102
+
103
+ //# sourceMappingURL=accessComposition.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/utilities/accessComposition.ts"],"sourcesContent":["import type { Access, Where } from 'payload'\n\nimport { combineWhereConstraints } from 'payload/shared'\n\n/**\n * Combines multiple access functions with OR logic.\n *\n * Logic:\n * - If ANY function returns `true` → return `true` (full access, short-circuit)\n * - If ALL functions return `false` → return `false` (no access)\n * - If any functions return `Where` queries → combine them with OR logic\n *\n * @example\n * ```ts\n * const canCreate = or(\n * isAdmin,\n * isAuthenticated,\n * conditional(allowGuestAccess, isGuest)\n * )\n * ```\n */\nexport const accessOR = (...accessFunctions: Access[]): Access => {\n return async (args) => {\n const whereQueries: Where[] = []\n\n for (const access of accessFunctions) {\n const result = await access(args)\n\n // Short-circuit on true - full access granted\n if (result === true) {\n return true\n }\n\n // Collect Where queries for combination (must be an object, not null/undefined/false)\n if (result && typeof result === 'object') {\n whereQueries.push(result)\n }\n }\n\n // If we have Where queries, combine them with OR\n if (whereQueries.length > 0) {\n return combineWhereConstraints(whereQueries, 'or')\n }\n\n // All checkers returned false - no access\n return false\n }\n}\n\n/**\n * Combines multiple access functions with AND logic.\n *\n * Logic:\n * - If ANY function returns `false` → return `false` (no access, short-circuit)\n * - If ALL functions return `true` → return `true` (full access)\n * - If any functions return `Where` queries → combine them with AND logic\n *\n * @example\n * ```ts\n * const canUpdate = and(\n * isAuthenticated,\n * isDocumentOwner\n * )\n * ```\n */\nexport const accessAND = (...accessFunctions: Access[]): Access => {\n return async (args) => {\n const whereQueries: Where[] = []\n\n for (const access of accessFunctions) {\n const result = await access(args)\n\n // Short-circuit on false - no access\n if (result === false) {\n return false\n }\n\n // Collect Where queries for combination (must be an object, not null/undefined/true)\n if (result !== true && result && typeof result === 'object') {\n whereQueries.push(result)\n }\n }\n\n // If we have Where queries, combine them with AND\n if (whereQueries.length > 0) {\n return combineWhereConstraints(whereQueries, 'and')\n }\n\n // All checkers returned true - full access\n return true\n }\n}\n\n/**\n * Conditionally applies an access function based on a boolean condition or function.\n *\n * Useful for feature flags and plugin configuration.\n *\n * @param condition - Boolean or function to determine which function to use\n * @param checker - Access function to use if condition is true\n * @param fallback - Access function to use if condition is false (defaults to denying access)\n *\n * @example\n * ```ts\n * const canCreate = or(\n * isAdmin,\n * conditional(allowGuestCarts, isGuest)\n * )\n * ```\n */\nexport const conditional = (\n condition: ((args: any) => boolean) | boolean,\n accessFunction: Access,\n fallback: Access = () => false,\n): Access => {\n return async (args) => {\n const shouldApply = typeof condition === 'function' ? condition(args) : condition\n if (shouldApply) {\n return accessFunction(args)\n }\n return fallback(args)\n }\n}\n"],"names":["combineWhereConstraints","accessOR","accessFunctions","args","whereQueries","access","result","push","length","accessAND","conditional","condition","accessFunction","fallback","shouldApply"],"mappings":"AAEA,SAASA,uBAAuB,QAAQ,iBAAgB;AAExD;;;;;;;;;;;;;;;;CAgBC,GACD,OAAO,MAAMC,WAAW,CAAC,GAAGC;IAC1B,OAAO,OAAOC;QACZ,MAAMC,eAAwB,EAAE;QAEhC,KAAK,MAAMC,UAAUH,gBAAiB;YACpC,MAAMI,SAAS,MAAMD,OAAOF;YAE5B,8CAA8C;YAC9C,IAAIG,WAAW,MAAM;gBACnB,OAAO;YACT;YAEA,sFAAsF;YACtF,IAAIA,UAAU,OAAOA,WAAW,UAAU;gBACxCF,aAAaG,IAAI,CAACD;YACpB;QACF;QAEA,iDAAiD;QACjD,IAAIF,aAAaI,MAAM,GAAG,GAAG;YAC3B,OAAOR,wBAAwBI,cAAc;QAC/C;QAEA,0CAA0C;QAC1C,OAAO;IACT;AACF,EAAC;AAED;;;;;;;;;;;;;;;CAeC,GACD,OAAO,MAAMK,YAAY,CAAC,GAAGP;IAC3B,OAAO,OAAOC;QACZ,MAAMC,eAAwB,EAAE;QAEhC,KAAK,MAAMC,UAAUH,gBAAiB;YACpC,MAAMI,SAAS,MAAMD,OAAOF;YAE5B,qCAAqC;YACrC,IAAIG,WAAW,OAAO;gBACpB,OAAO;YACT;YAEA,qFAAqF;YACrF,IAAIA,WAAW,QAAQA,UAAU,OAAOA,WAAW,UAAU;gBAC3DF,aAAaG,IAAI,CAACD;YACpB;QACF;QAEA,kDAAkD;QAClD,IAAIF,aAAaI,MAAM,GAAG,GAAG;YAC3B,OAAOR,wBAAwBI,cAAc;QAC/C;QAEA,2CAA2C;QAC3C,OAAO;IACT;AACF,EAAC;AAED;;;;;;;;;;;;;;;;CAgBC,GACD,OAAO,MAAMM,cAAc,CACzBC,WACAC,gBACAC,WAAmB,IAAM,KAAK;IAE9B,OAAO,OAAOV;QACZ,MAAMW,cAAc,OAAOH,cAAc,aAAaA,UAAUR,QAAQQ;QACxE,IAAIG,aAAa;YACf,OAAOF,eAAeT;QACxB;QACA,OAAOU,SAASV;IAClB;AACF,EAAC"}