@mercurjs/core 2.2.0-canary.29 → 2.2.0-canary.30

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 (401) hide show
  1. package/.medusa/server/src/api/admin/claims/[id]/outbound/items/route.d.ts +0 -7
  2. package/.medusa/server/src/api/admin/claims/[id]/outbound/items/route.js +1 -8
  3. package/.medusa/server/src/api/admin/claims/[id]/request/route.d.ts +0 -6
  4. package/.medusa/server/src/api/admin/claims/[id]/request/route.js +1 -7
  5. package/.medusa/server/src/api/admin/collections/middlewares.js +1 -7
  6. package/.medusa/server/src/api/admin/collections/validators.d.ts +20 -29
  7. package/.medusa/server/src/api/admin/commission-rates/validators.d.ts +40 -39
  8. package/.medusa/server/src/api/admin/customer-groups/middlewares.js +1 -6
  9. package/.medusa/server/src/api/admin/customer-groups/validators.d.ts +55 -551
  10. package/.medusa/server/src/api/admin/customer-groups/validators.js +2 -3
  11. package/.medusa/server/src/api/admin/exchanges/[id]/outbound/items/route.d.ts +0 -8
  12. package/.medusa/server/src/api/admin/exchanges/[id]/outbound/items/route.js +1 -9
  13. package/.medusa/server/src/api/admin/exchanges/[id]/request/route.d.ts +0 -6
  14. package/.medusa/server/src/api/admin/exchanges/[id]/request/route.js +1 -7
  15. package/.medusa/server/src/api/admin/members/validators.d.ts +12 -13
  16. package/.medusa/server/src/api/admin/offers/validators.d.ts +16 -17
  17. package/.medusa/server/src/api/admin/order-edits/[id]/confirm/route.d.ts +0 -9
  18. package/.medusa/server/src/api/admin/order-edits/[id]/confirm/route.js +1 -10
  19. package/.medusa/server/src/api/admin/order-edits/[id]/items/route.d.ts +0 -11
  20. package/.medusa/server/src/api/admin/order-edits/[id]/items/route.js +1 -12
  21. package/.medusa/server/src/api/admin/order-groups/apply-request-filter.js +4 -10
  22. package/.medusa/server/src/api/admin/order-groups/validators.d.ts +16 -17
  23. package/.medusa/server/src/api/admin/order-groups/validators.js +1 -6
  24. package/.medusa/server/src/api/admin/orders/resolve-order-seller-id.d.ts +0 -9
  25. package/.medusa/server/src/api/admin/orders/resolve-order-seller-id.js +1 -10
  26. package/.medusa/server/src/api/admin/orders/validators.d.ts +1 -333
  27. package/.medusa/server/src/api/admin/payouts/validators.d.ts +16 -17
  28. package/.medusa/server/src/api/admin/product-attributes/middlewares.js +1 -3
  29. package/.medusa/server/src/api/admin/product-attributes/route.js +1 -4
  30. package/.medusa/server/src/api/admin/product-attributes/validators.d.ts +99 -110
  31. package/.medusa/server/src/api/admin/product-attributes/validators.js +1 -3
  32. package/.medusa/server/src/api/admin/product-categories/validators.d.ts +87 -89
  33. package/.medusa/server/src/api/admin/product-changes/[id]/cancel/route.d.ts +0 -7
  34. package/.medusa/server/src/api/admin/product-changes/[id]/cancel/route.js +1 -8
  35. package/.medusa/server/src/api/admin/product-changes/[id]/confirm/route.d.ts +0 -7
  36. package/.medusa/server/src/api/admin/product-changes/[id]/confirm/route.js +1 -8
  37. package/.medusa/server/src/api/admin/products/[id]/attributes/batch/route.js +6 -9
  38. package/.medusa/server/src/api/admin/products/[id]/confirm/route.d.ts +0 -12
  39. package/.medusa/server/src/api/admin/products/[id]/confirm/route.js +1 -13
  40. package/.medusa/server/src/api/admin/products/[id]/preview/route.d.ts +0 -7
  41. package/.medusa/server/src/api/admin/products/[id]/preview/route.js +1 -8
  42. package/.medusa/server/src/api/admin/products/[id]/reject/route.d.ts +0 -8
  43. package/.medusa/server/src/api/admin/products/[id]/reject/route.js +1 -9
  44. package/.medusa/server/src/api/admin/products/[id]/request-changes/route.d.ts +0 -9
  45. package/.medusa/server/src/api/admin/products/[id]/request-changes/route.js +1 -10
  46. package/.medusa/server/src/api/admin/products/[id]/route.js +2 -6
  47. package/.medusa/server/src/api/admin/products/[id]/sellers/route.d.ts +3 -0
  48. package/.medusa/server/src/api/admin/products/[id]/sellers/route.js +13 -0
  49. package/.medusa/server/src/api/admin/products/middlewares.js +4 -42
  50. package/.medusa/server/src/api/admin/products/query-config.js +41 -16
  51. package/.medusa/server/src/api/admin/products/route.js +2 -5
  52. package/.medusa/server/src/api/admin/products/validators.d.ts +512 -1288
  53. package/.medusa/server/src/api/admin/products/validators.js +55 -96
  54. package/.medusa/server/src/api/admin/returns/[id]/receive/confirm/route.d.ts +0 -6
  55. package/.medusa/server/src/api/admin/returns/[id]/receive/confirm/route.js +1 -7
  56. package/.medusa/server/src/api/admin/sellers/middlewares.js +1 -20
  57. package/.medusa/server/src/api/admin/sellers/validators.d.ts +59 -79
  58. package/.medusa/server/src/api/store/carts/[id]/complete/route.js +1 -5
  59. package/.medusa/server/src/api/store/carts/[id]/complete/validators.d.ts +1 -1
  60. package/.medusa/server/src/api/store/offers/validators.d.ts +19 -20
  61. package/.medusa/server/src/api/store/order-groups/validators.d.ts +14 -15
  62. package/.medusa/server/src/api/store/product-attributes/validators.d.ts +50 -46
  63. package/.medusa/server/src/api/store/product-categories/validators.d.ts +59 -53
  64. package/.medusa/server/src/api/store/products/[id]/route.js +1 -5
  65. package/.medusa/server/src/api/store/products/middlewares.js +1 -7
  66. package/.medusa/server/src/api/store/products/query-config.js +23 -7
  67. package/.medusa/server/src/api/store/products/validators.d.ts +69 -65
  68. package/.medusa/server/src/api/store/sellers/validators.d.ts +35 -34
  69. package/.medusa/server/src/api/utils/filter-attributes-by-category-link.d.ts +0 -15
  70. package/.medusa/server/src/api/utils/filter-attributes-by-category-link.js +22 -26
  71. package/.medusa/server/src/api/utils/format-product-attributes.d.ts +5 -50
  72. package/.medusa/server/src/api/utils/format-product-attributes.js +90 -166
  73. package/.medusa/server/src/api/utils/index.d.ts +1 -0
  74. package/.medusa/server/src/api/utils/index.js +2 -1
  75. package/.medusa/server/src/api/utils/offers.d.ts +2 -29
  76. package/.medusa/server/src/api/utils/offers.js +3 -40
  77. package/.medusa/server/src/api/utils/order-commission-lines.d.ts +0 -7
  78. package/.medusa/server/src/api/utils/order-commission-lines.js +1 -8
  79. package/.medusa/server/src/api/utils/product-attribute-fields.d.ts +5 -0
  80. package/.medusa/server/src/api/utils/product-attribute-fields.js +35 -0
  81. package/.medusa/server/src/api/vendor/campaigns/validators.d.ts +12 -13
  82. package/.medusa/server/src/api/vendor/claims/[id]/outbound/items/route.d.ts +0 -6
  83. package/.medusa/server/src/api/vendor/claims/[id]/outbound/items/route.js +1 -7
  84. package/.medusa/server/src/api/vendor/claims/[id]/request/route.js +1 -4
  85. package/.medusa/server/src/api/vendor/claims/validators.d.ts +14 -15
  86. package/.medusa/server/src/api/vendor/collections/validators.d.ts +18 -19
  87. package/.medusa/server/src/api/vendor/currencies/validators.d.ts +12 -13
  88. package/.medusa/server/src/api/vendor/customer-groups/validators.d.ts +16 -17
  89. package/.medusa/server/src/api/vendor/customers/[id]/customer-groups/route.js +1 -2
  90. package/.medusa/server/src/api/vendor/customers/[id]/route.js +1 -3
  91. package/.medusa/server/src/api/vendor/customers/validators.d.ts +35 -34
  92. package/.medusa/server/src/api/vendor/exchanges/[id]/outbound/items/route.d.ts +0 -6
  93. package/.medusa/server/src/api/vendor/exchanges/[id]/outbound/items/route.js +1 -7
  94. package/.medusa/server/src/api/vendor/exchanges/[id]/request/route.js +1 -4
  95. package/.medusa/server/src/api/vendor/exchanges/validators.d.ts +13 -14
  96. package/.medusa/server/src/api/vendor/fulfillment-providers/validators.d.ts +24 -23
  97. package/.medusa/server/src/api/vendor/fulfillment-sets/validators.d.ts +2 -2
  98. package/.medusa/server/src/api/vendor/inventory-items/validators.d.ts +98 -104
  99. package/.medusa/server/src/api/vendor/offers/validators.d.ts +20 -25
  100. package/.medusa/server/src/api/vendor/offers/validators.js +1 -5
  101. package/.medusa/server/src/api/vendor/order-edits/[id]/confirm/route.d.ts +0 -11
  102. package/.medusa/server/src/api/vendor/order-edits/[id]/confirm/route.js +1 -12
  103. package/.medusa/server/src/api/vendor/order-edits/[id]/items/[action_id]/route.d.ts +0 -9
  104. package/.medusa/server/src/api/vendor/order-edits/[id]/items/[action_id]/route.js +1 -10
  105. package/.medusa/server/src/api/vendor/order-edits/[id]/items/item/[item_id]/route.d.ts +0 -6
  106. package/.medusa/server/src/api/vendor/order-edits/[id]/items/item/[item_id]/route.js +1 -7
  107. package/.medusa/server/src/api/vendor/order-edits/[id]/items/route.d.ts +0 -12
  108. package/.medusa/server/src/api/vendor/order-edits/[id]/items/route.js +1 -13
  109. package/.medusa/server/src/api/vendor/order-edits/[id]/request/route.d.ts +0 -7
  110. package/.medusa/server/src/api/vendor/order-edits/[id]/request/route.js +1 -8
  111. package/.medusa/server/src/api/vendor/order-edits/[id]/route.d.ts +0 -7
  112. package/.medusa/server/src/api/vendor/order-edits/[id]/route.js +1 -8
  113. package/.medusa/server/src/api/vendor/order-edits/[id]/shipping-method/[action_id]/route.d.ts +0 -9
  114. package/.medusa/server/src/api/vendor/order-edits/[id]/shipping-method/[action_id]/route.js +1 -10
  115. package/.medusa/server/src/api/vendor/order-edits/[id]/shipping-method/route.d.ts +0 -5
  116. package/.medusa/server/src/api/vendor/order-edits/[id]/shipping-method/route.js +1 -6
  117. package/.medusa/server/src/api/vendor/order-edits/middlewares.js +1 -13
  118. package/.medusa/server/src/api/vendor/order-edits/route.d.ts +0 -6
  119. package/.medusa/server/src/api/vendor/order-edits/route.js +1 -7
  120. package/.medusa/server/src/api/vendor/order-edits/validators.d.ts +0 -6
  121. package/.medusa/server/src/api/vendor/order-edits/validators.js +1 -1
  122. package/.medusa/server/src/api/vendor/orders/apply-request-filter.js +1 -4
  123. package/.medusa/server/src/api/vendor/orders/resolve-offer-items.d.ts +0 -18
  124. package/.medusa/server/src/api/vendor/orders/resolve-offer-items.js +1 -1
  125. package/.medusa/server/src/api/vendor/orders/validators.d.ts +19 -20
  126. package/.medusa/server/src/api/vendor/payment-collections/validators.d.ts +1 -1
  127. package/.medusa/server/src/api/vendor/payments/helpers.d.ts +0 -9
  128. package/.medusa/server/src/api/vendor/payments/helpers.js +1 -10
  129. package/.medusa/server/src/api/vendor/payments/validators.d.ts +36 -36
  130. package/.medusa/server/src/api/vendor/payout-accounts/validators.d.ts +11 -12
  131. package/.medusa/server/src/api/vendor/payouts/validators.d.ts +16 -17
  132. package/.medusa/server/src/api/vendor/price-lists/validators.d.ts +26 -28
  133. package/.medusa/server/src/api/vendor/price-preferences/validators.d.ts +12 -13
  134. package/.medusa/server/src/api/vendor/product-attributes/route.js +1 -3
  135. package/.medusa/server/src/api/vendor/product-attributes/validators.d.ts +74 -86
  136. package/.medusa/server/src/api/vendor/product-attributes/validators.js +1 -1
  137. package/.medusa/server/src/api/vendor/product-categories/[id]/products/route.js +2 -2
  138. package/.medusa/server/src/api/vendor/product-categories/validators.d.ts +89 -83
  139. package/.medusa/server/src/api/vendor/product-tags/validators.d.ts +2 -2
  140. package/.medusa/server/src/api/vendor/product-types/validators.d.ts +12 -13
  141. package/.medusa/server/src/api/vendor/product-variants/middlewares.js +11 -19
  142. package/.medusa/server/src/api/vendor/product-variants/query-config.js +1 -3
  143. package/.medusa/server/src/api/vendor/product-variants/validators.d.ts +103 -97
  144. package/.medusa/server/src/api/vendor/products/[id]/attributes/batch/route.d.ts +2 -9
  145. package/.medusa/server/src/api/vendor/products/[id]/attributes/batch/route.js +3 -27
  146. package/.medusa/server/src/api/vendor/products/[id]/cancel/route.d.ts +0 -6
  147. package/.medusa/server/src/api/vendor/products/[id]/cancel/route.js +1 -7
  148. package/.medusa/server/src/api/vendor/products/[id]/preview/route.d.ts +0 -9
  149. package/.medusa/server/src/api/vendor/products/[id]/preview/route.js +1 -10
  150. package/.medusa/server/src/api/vendor/products/[id]/route.d.ts +0 -14
  151. package/.medusa/server/src/api/vendor/products/[id]/route.js +3 -21
  152. package/.medusa/server/src/api/vendor/products/[id]/variants/[variant_id]/route.d.ts +0 -8
  153. package/.medusa/server/src/api/vendor/products/[id]/variants/[variant_id]/route.js +2 -16
  154. package/.medusa/server/src/api/vendor/products/[id]/variants/route.d.ts +0 -7
  155. package/.medusa/server/src/api/vendor/products/[id]/variants/route.js +2 -9
  156. package/.medusa/server/src/api/vendor/products/helpers.d.ts +6 -5
  157. package/.medusa/server/src/api/vendor/products/helpers.js +54 -10
  158. package/.medusa/server/src/api/vendor/products/middlewares.js +14 -65
  159. package/.medusa/server/src/api/vendor/products/query-config.js +44 -15
  160. package/.medusa/server/src/api/vendor/products/route.d.ts +0 -9
  161. package/.medusa/server/src/api/vendor/products/route.js +7 -21
  162. package/.medusa/server/src/api/vendor/products/validators.d.ts +404 -830
  163. package/.medusa/server/src/api/vendor/products/validators.js +59 -112
  164. package/.medusa/server/src/api/vendor/promotions/validators.d.ts +43 -45
  165. package/.medusa/server/src/api/vendor/refund-reasons/validators.d.ts +16 -17
  166. package/.medusa/server/src/api/vendor/regions/validators.d.ts +16 -17
  167. package/.medusa/server/src/api/vendor/reservations/[id]/route.js +1 -1
  168. package/.medusa/server/src/api/vendor/reservations/helpers.js +1 -4
  169. package/.medusa/server/src/api/vendor/reservations/query-config.js +1 -4
  170. package/.medusa/server/src/api/vendor/reservations/route.js +1 -1
  171. package/.medusa/server/src/api/vendor/reservations/validators.d.ts +22 -23
  172. package/.medusa/server/src/api/vendor/reservations/validators.js +1 -1
  173. package/.medusa/server/src/api/vendor/return-reasons/validators.d.ts +16 -17
  174. package/.medusa/server/src/api/vendor/returns/validators.d.ts +22 -23
  175. package/.medusa/server/src/api/vendor/sales-channels/helpers.js +6 -1
  176. package/.medusa/server/src/api/vendor/sales-channels/validators.d.ts +25 -24
  177. package/.medusa/server/src/api/vendor/sellers/middlewares.js +1 -18
  178. package/.medusa/server/src/api/vendor/sellers/route.js +1 -4
  179. package/.medusa/server/src/api/vendor/sellers/validators.d.ts +16 -37
  180. package/.medusa/server/src/api/vendor/sellers/validators.js +1 -4
  181. package/.medusa/server/src/api/vendor/shipping-option-types/validators.d.ts +16 -17
  182. package/.medusa/server/src/api/vendor/shipping-options/validators.d.ts +33 -34
  183. package/.medusa/server/src/api/vendor/shipping-profiles/validators.d.ts +16 -17
  184. package/.medusa/server/src/api/vendor/stock-locations/validators.d.ts +16 -17
  185. package/.medusa/server/src/api/vendor/stores/validators.d.ts +12 -13
  186. package/.medusa/server/src/links/product-attribute-category-link.d.ts +6 -11
  187. package/.medusa/server/src/links/product-attribute-category-link.js +10 -20
  188. package/.medusa/server/src/links/product-attribute-option-mirror-link.d.ts +6 -0
  189. package/.medusa/server/src/links/product-attribute-option-mirror-link.js +24 -0
  190. package/.medusa/server/src/links/product-attribute-product-link.d.ts +0 -5
  191. package/.medusa/server/src/links/product-attribute-product-link.js +2 -7
  192. package/.medusa/server/src/links/product-attribute-value-option-value-mirror-link.d.ts +6 -0
  193. package/.medusa/server/src/links/product-attribute-value-option-value-mirror-link.js +24 -0
  194. package/.medusa/server/src/links/{product-variant-attribute-link.d.ts → product-attribute-value-pivot-link.d.ts} +3 -0
  195. package/.medusa/server/src/links/product-attribute-value-pivot-link.js +23 -0
  196. package/.medusa/server/src/modules/product-attribute/migrations/Migration20260601000002.d.ts +14 -0
  197. package/.medusa/server/src/modules/product-attribute/migrations/Migration20260601000002.js +31 -0
  198. package/.medusa/server/src/modules/product-attribute/models/product-attribute-value.d.ts +2 -0
  199. package/.medusa/server/src/modules/product-attribute/models/product-attribute-value.js +2 -1
  200. package/.medusa/server/src/modules/product-attribute/models/product-attribute.d.ts +2 -0
  201. package/.medusa/server/src/modules/product-attribute/models/product-attribute.js +2 -1
  202. package/.medusa/server/src/modules/product-attribute/service.d.ts +18 -3
  203. package/.medusa/server/src/modules/product-attribute/service.js +213 -1
  204. package/.medusa/server/src/modules/seller/repositories/order-group.js +1 -11
  205. package/.medusa/server/src/modules/seller/service.js +1 -2
  206. package/.medusa/server/src/workflows/cart/hooks/validate.js +1 -12
  207. package/.medusa/server/src/workflows/cart/steps/prepare-adjustments-from-promotion-actions.js +3 -5
  208. package/.medusa/server/src/workflows/cart/utils/fields.js +1 -13
  209. package/.medusa/server/src/workflows/cart/utils/prepare-line-item-data.js +1 -3
  210. package/.medusa/server/src/workflows/cart/workflows/add-seller-shipping-method-to-cart.js +1 -2
  211. package/.medusa/server/src/workflows/cart/workflows/complete-cart-with-split-orders.js +1 -24
  212. package/.medusa/server/src/workflows/cart/workflows/list-seller-shipping-options-for-cart.d.ts +2 -2
  213. package/.medusa/server/src/workflows/cart/workflows/list-seller-shipping-options-for-cart.js +1 -2
  214. package/.medusa/server/src/workflows/commission/steps/upsert-commission-lines.d.ts +0 -4
  215. package/.medusa/server/src/workflows/commission/steps/upsert-commission-lines.js +1 -5
  216. package/.medusa/server/src/workflows/commission/steps/validate-commission-rates-deletable.d.ts +0 -3
  217. package/.medusa/server/src/workflows/commission/steps/validate-commission-rates-deletable.js +1 -4
  218. package/.medusa/server/src/workflows/commission/workflows/delete-commission-rates.d.ts +1 -2
  219. package/.medusa/server/src/workflows/media/steps/create-images.d.ts +0 -3
  220. package/.medusa/server/src/workflows/media/steps/create-images.js +1 -4
  221. package/.medusa/server/src/workflows/media/steps/delete-images.d.ts +0 -3
  222. package/.medusa/server/src/workflows/media/steps/delete-images.js +1 -4
  223. package/.medusa/server/src/workflows/media/workflows/create-product-category-with-images.d.ts +0 -8
  224. package/.medusa/server/src/workflows/media/workflows/create-product-category-with-images.js +1 -6
  225. package/.medusa/server/src/workflows/media/workflows/create-product-collection-with-images.d.ts +0 -8
  226. package/.medusa/server/src/workflows/media/workflows/create-product-collection-with-images.js +1 -6
  227. package/.medusa/server/src/workflows/media/workflows/delete-product-category-with-images.d.ts +0 -4
  228. package/.medusa/server/src/workflows/media/workflows/delete-product-category-with-images.js +1 -6
  229. package/.medusa/server/src/workflows/media/workflows/delete-product-collection-with-images.d.ts +0 -5
  230. package/.medusa/server/src/workflows/media/workflows/delete-product-collection-with-images.js +1 -7
  231. package/.medusa/server/src/workflows/media/workflows/set-category-images.d.ts +0 -11
  232. package/.medusa/server/src/workflows/media/workflows/set-category-images.js +1 -10
  233. package/.medusa/server/src/workflows/media/workflows/set-collection-images.d.ts +0 -12
  234. package/.medusa/server/src/workflows/media/workflows/set-collection-images.js +1 -11
  235. package/.medusa/server/src/workflows/media/workflows/update-product-category-with-images.d.ts +0 -7
  236. package/.medusa/server/src/workflows/media/workflows/update-product-category-with-images.js +1 -5
  237. package/.medusa/server/src/workflows/media/workflows/update-product-collection-with-images.d.ts +0 -7
  238. package/.medusa/server/src/workflows/media/workflows/update-product-collection-with-images.js +1 -5
  239. package/.medusa/server/src/workflows/offer/steps/add-offer-prices.d.ts +0 -12
  240. package/.medusa/server/src/workflows/offer/steps/add-offer-prices.js +1 -16
  241. package/.medusa/server/src/workflows/offer/steps/ensure-variant-price-sets.d.ts +0 -9
  242. package/.medusa/server/src/workflows/offer/steps/ensure-variant-price-sets.js +1 -10
  243. package/.medusa/server/src/workflows/offer/steps/update-offers.d.ts +0 -5
  244. package/.medusa/server/src/workflows/offer/steps/update-offers.js +1 -1
  245. package/.medusa/server/src/workflows/offer/utils/assert-offer-price-ownership.d.ts +0 -11
  246. package/.medusa/server/src/workflows/offer/utils/assert-offer-price-ownership.js +1 -12
  247. package/.medusa/server/src/workflows/offer/utils/prepare-offer-inventory-input.d.ts +0 -10
  248. package/.medusa/server/src/workflows/offer/utils/prepare-offer-inventory-input.js +1 -19
  249. package/.medusa/server/src/workflows/offer/workflows/create-offers.js +1 -14
  250. package/.medusa/server/src/workflows/offer/workflows/update-offers.d.ts +0 -11
  251. package/.medusa/server/src/workflows/offer/workflows/update-offers.js +1 -22
  252. package/.medusa/server/src/workflows/order/workflows/cancel-order-fulfillment.d.ts +1 -2
  253. package/.medusa/server/src/workflows/order/workflows/cancel-order-fulfillment.js +1 -2
  254. package/.medusa/server/src/workflows/order/workflows/confirm-claim-request.js +1 -3
  255. package/.medusa/server/src/workflows/order/workflows/confirm-exchange-request.js +1 -8
  256. package/.medusa/server/src/workflows/order/workflows/confirm-order-edit-request.js +1 -1
  257. package/.medusa/server/src/workflows/order/workflows/confirm-return-receive.js +1 -9
  258. package/.medusa/server/src/workflows/order/workflows/create-order-fulfillment.js +2 -3
  259. package/.medusa/server/src/workflows/order-group/utils/aggregate-status.js +1 -7
  260. package/.medusa/server/src/workflows/product/events.d.ts +0 -6
  261. package/.medusa/server/src/workflows/product/events.js +1 -7
  262. package/.medusa/server/src/workflows/product/steps/index.d.ts +0 -2
  263. package/.medusa/server/src/workflows/product/steps/index.js +1 -3
  264. package/.medusa/server/src/workflows/product/steps/validate-products-status.d.ts +0 -8
  265. package/.medusa/server/src/workflows/product/steps/validate-products-status.js +1 -9
  266. package/.medusa/server/src/workflows/product/steps/validate-seller-product-permissions.js +1 -3
  267. package/.medusa/server/src/workflows/product/workflows/confirm-products.d.ts +0 -16
  268. package/.medusa/server/src/workflows/product/workflows/confirm-products.js +1 -13
  269. package/.medusa/server/src/workflows/product/workflows/create-products.d.ts +4 -74
  270. package/.medusa/server/src/workflows/product/workflows/create-products.js +70 -209
  271. package/.medusa/server/src/workflows/product/workflows/index.d.ts +0 -1
  272. package/.medusa/server/src/workflows/product/workflows/index.js +1 -2
  273. package/.medusa/server/src/workflows/product/workflows/link-sellers-to-product-category.d.ts +0 -7
  274. package/.medusa/server/src/workflows/product/workflows/link-sellers-to-product-category.js +1 -1
  275. package/.medusa/server/src/workflows/product/workflows/link-sellers-to-product.d.ts +0 -7
  276. package/.medusa/server/src/workflows/product/workflows/link-sellers-to-product.js +1 -1
  277. package/.medusa/server/src/workflows/product/workflows/reject-product.d.ts +0 -7
  278. package/.medusa/server/src/workflows/product/workflows/reject-product.js +1 -8
  279. package/.medusa/server/src/workflows/product/workflows/request-product-change.d.ts +0 -14
  280. package/.medusa/server/src/workflows/product/workflows/request-product-change.js +1 -15
  281. package/.medusa/server/src/workflows/product-attribute/events.d.ts +0 -9
  282. package/.medusa/server/src/workflows/product-attribute/events.js +1 -10
  283. package/.medusa/server/src/workflows/product-attribute/steps/create-product-attribute-values.d.ts +1 -31
  284. package/.medusa/server/src/workflows/product-attribute/steps/create-product-attributes.d.ts +1 -41
  285. package/.medusa/server/src/workflows/product-attribute/steps/create-product-attributes.js +1 -1
  286. package/.medusa/server/src/workflows/product-attribute/steps/detach-product-option-values-from-product.d.ts +14 -0
  287. package/.medusa/server/src/workflows/product-attribute/steps/detach-product-option-values-from-product.js +40 -0
  288. package/.medusa/server/src/workflows/product-attribute/steps/index.d.ts +3 -4
  289. package/.medusa/server/src/workflows/product-attribute/steps/index.js +4 -5
  290. package/.medusa/server/src/workflows/product-attribute/steps/update-product-attribute-values.d.ts +6 -3
  291. package/.medusa/server/src/workflows/product-attribute/steps/update-product-attribute-values.js +17 -2
  292. package/.medusa/server/src/workflows/product-attribute/steps/update-product-attributes.d.ts +1 -31
  293. package/.medusa/server/src/workflows/product-attribute/steps/validate-product-attributes-not-linked.d.ts +2 -0
  294. package/.medusa/server/src/workflows/product-attribute/steps/validate-product-attributes-not-linked.js +28 -0
  295. package/.medusa/server/src/workflows/product-attribute/steps/validate-product-attributes-not-required.d.ts +7 -0
  296. package/.medusa/server/src/workflows/product-attribute/steps/validate-product-attributes-not-required.js +16 -0
  297. package/.medusa/server/src/workflows/product-attribute/workflows/add-product-attributes-to-product.d.ts +9 -0
  298. package/.medusa/server/src/workflows/product-attribute/workflows/add-product-attributes-to-product.js +242 -0
  299. package/.medusa/server/src/workflows/product-attribute/workflows/create-and-link-product-attributes.d.ts +14 -0
  300. package/.medusa/server/src/workflows/product-attribute/workflows/create-and-link-product-attributes.js +27 -0
  301. package/.medusa/server/src/workflows/product-attribute/workflows/create-product-attribute-values.js +44 -3
  302. package/.medusa/server/src/workflows/product-attribute/workflows/create-product-attributes.js +41 -17
  303. package/.medusa/server/src/workflows/product-attribute/workflows/delete-product-attribute-values.js +36 -15
  304. package/.medusa/server/src/workflows/product-attribute/workflows/delete-product-attributes.d.ts +0 -7
  305. package/.medusa/server/src/workflows/product-attribute/workflows/delete-product-attributes.js +11 -8
  306. package/.medusa/server/src/workflows/product-attribute/workflows/index.d.ts +4 -6
  307. package/.medusa/server/src/workflows/product-attribute/workflows/index.js +5 -7
  308. package/.medusa/server/src/workflows/product-attribute/workflows/remove-product-attributes-from-product.d.ts +10 -0
  309. package/.medusa/server/src/workflows/product-attribute/workflows/remove-product-attributes-from-product.js +83 -0
  310. package/.medusa/server/src/workflows/product-attribute/workflows/update-product-attribute-values.js +34 -1
  311. package/.medusa/server/src/workflows/product-attribute/workflows/update-product-attributes-on-product.d.ts +11 -0
  312. package/.medusa/server/src/workflows/product-attribute/workflows/update-product-attributes-on-product.js +285 -0
  313. package/.medusa/server/src/workflows/product-attribute/workflows/update-product-attributes.js +15 -1
  314. package/.medusa/server/src/workflows/product-attribute/workflows/upsert-product-attribute-values.d.ts +4 -11
  315. package/.medusa/server/src/workflows/product-attribute/workflows/upsert-product-attribute-values.js +19 -19
  316. package/.medusa/server/src/workflows/product-edit/events.d.ts +0 -7
  317. package/.medusa/server/src/workflows/product-edit/events.js +1 -8
  318. package/.medusa/server/src/workflows/product-edit/steps/apply-variant-image-links.d.ts +2 -10
  319. package/.medusa/server/src/workflows/product-edit/steps/apply-variant-image-links.js +3 -9
  320. package/.medusa/server/src/workflows/product-edit/steps/confirm-product-change-validation.d.ts +0 -4
  321. package/.medusa/server/src/workflows/product-edit/steps/confirm-product-change-validation.js +1 -5
  322. package/.medusa/server/src/workflows/product-edit/steps/confirm-product-changes.d.ts +0 -6
  323. package/.medusa/server/src/workflows/product-edit/steps/confirm-product-changes.js +1 -7
  324. package/.medusa/server/src/workflows/product-edit/steps/create-product-change-actions.d.ts +0 -5
  325. package/.medusa/server/src/workflows/product-edit/steps/create-product-change-actions.js +1 -6
  326. package/.medusa/server/src/workflows/product-edit/steps/create-product-changes.d.ts +0 -6
  327. package/.medusa/server/src/workflows/product-edit/steps/create-product-changes.js +1 -1
  328. package/.medusa/server/src/workflows/product-edit/steps/decline-product-change.d.ts +0 -5
  329. package/.medusa/server/src/workflows/product-edit/steps/decline-product-change.js +1 -6
  330. package/.medusa/server/src/workflows/product-edit/steps/update-product-change-actions.d.ts +0 -5
  331. package/.medusa/server/src/workflows/product-edit/steps/update-product-change-actions.js +1 -6
  332. package/.medusa/server/src/workflows/product-edit/steps/validate-no-pending-product-change.d.ts +0 -6
  333. package/.medusa/server/src/workflows/product-edit/steps/validate-no-pending-product-change.js +2 -8
  334. package/.medusa/server/src/workflows/product-edit/workflows/apply-product-attribute-change-actions.d.ts +5 -19
  335. package/.medusa/server/src/workflows/product-edit/workflows/apply-product-attribute-change-actions.js +11 -128
  336. package/.medusa/server/src/workflows/product-edit/workflows/apply-product-change-actions.d.ts +0 -31
  337. package/.medusa/server/src/workflows/product-edit/workflows/apply-product-change-actions.js +27 -56
  338. package/.medusa/server/src/workflows/product-edit/workflows/auto-confirm-product-change.d.ts +0 -14
  339. package/.medusa/server/src/workflows/product-edit/workflows/auto-confirm-product-change.js +1 -10
  340. package/.medusa/server/src/workflows/product-edit/workflows/confirm-product-change.d.ts +0 -11
  341. package/.medusa/server/src/workflows/product-edit/workflows/confirm-product-change.js +1 -12
  342. package/.medusa/server/src/workflows/product-edit/workflows/index.d.ts +1 -1
  343. package/.medusa/server/src/workflows/product-edit/workflows/index.js +2 -2
  344. package/.medusa/server/src/workflows/product-edit/workflows/product-edit-delete-product.d.ts +0 -12
  345. package/.medusa/server/src/workflows/product-edit/workflows/product-edit-delete-product.js +1 -13
  346. package/.medusa/server/src/workflows/product-edit/workflows/product-edit-update-attributes.d.ts +4 -46
  347. package/.medusa/server/src/workflows/product-edit/workflows/product-edit-update-attributes.js +11 -162
  348. package/.medusa/server/src/workflows/product-edit/workflows/product-edit-update-product.d.ts +11 -0
  349. package/.medusa/server/src/workflows/product-edit/workflows/product-edit-update-product.js +133 -0
  350. package/.medusa/server/src/workflows/product-edit/workflows/product-edit-update-variants.d.ts +0 -10
  351. package/.medusa/server/src/workflows/product-edit/workflows/product-edit-update-variants.js +1 -45
  352. package/.medusa/server/src/workflows/product-edit/workflows/record-product-audit-change.d.ts +0 -24
  353. package/.medusa/server/src/workflows/product-edit/workflows/record-product-audit-change.js +1 -15
  354. package/.medusa/server/src/workflows/product-edit/workflows/stage-product-change.d.ts +0 -30
  355. package/.medusa/server/src/workflows/product-edit/workflows/stage-product-change.js +1 -15
  356. package/.medusa/server/src/workflows/promotion/steps/register-usage.d.ts +0 -3
  357. package/.medusa/server/src/workflows/promotion/steps/register-usage.js +1 -4
  358. package/.medusa/server/src/workflows/seller/workflows/accept-member-invite.js +1 -2
  359. package/.medusa/server/src/workflows/seller/workflows/create-sellers.js +1 -2
  360. package/package.json +15 -15
  361. package/.medusa/server/src/api/admin/products/[id]/attributes/[attribute_id]/route.d.ts +0 -13
  362. package/.medusa/server/src/api/admin/products/[id]/attributes/[attribute_id]/route.js +0 -90
  363. package/.medusa/server/src/api/admin/products/[id]/attributes/route.d.ts +0 -5
  364. package/.medusa/server/src/api/admin/products/[id]/attributes/route.js +0 -63
  365. package/.medusa/server/src/api/vendor/products/[id]/attributes/[attribute_id]/route.d.ts +0 -22
  366. package/.medusa/server/src/api/vendor/products/[id]/attributes/[attribute_id]/route.js +0 -97
  367. package/.medusa/server/src/api/vendor/products/[id]/attributes/route.d.ts +0 -15
  368. package/.medusa/server/src/api/vendor/products/[id]/attributes/route.js +0 -80
  369. package/.medusa/server/src/links/product-attribute-value-link.d.ts +0 -22
  370. package/.medusa/server/src/links/product-attribute-value-link.js +0 -46
  371. package/.medusa/server/src/links/product-variant-attribute-link.js +0 -21
  372. package/.medusa/server/src/links/product-variant-attribute-value-link.d.ts +0 -2
  373. package/.medusa/server/src/links/product-variant-attribute-value-link.js +0 -21
  374. package/.medusa/server/src/workflows/product/steps/replace-product-attribute-value-links.d.ts +0 -28
  375. package/.medusa/server/src/workflows/product/steps/replace-product-attribute-value-links.js +0 -72
  376. package/.medusa/server/src/workflows/product/steps/resolve-attribute-refs.d.ts +0 -90
  377. package/.medusa/server/src/workflows/product/steps/resolve-attribute-refs.js +0 -185
  378. package/.medusa/server/src/workflows/product/workflows/update-products.d.ts +0 -39
  379. package/.medusa/server/src/workflows/product/workflows/update-products.js +0 -161
  380. package/.medusa/server/src/workflows/product-attribute/steps/upsert-product-attribute-values.d.ts +0 -43
  381. package/.medusa/server/src/workflows/product-attribute/steps/upsert-product-attribute-values.js +0 -51
  382. package/.medusa/server/src/workflows/product-attribute/steps/upsert-product-options-for-axis.d.ts +0 -7
  383. package/.medusa/server/src/workflows/product-attribute/steps/upsert-product-options-for-axis.js +0 -59
  384. package/.medusa/server/src/workflows/product-attribute/steps/validate-attribute-accepts-values.d.ts +0 -6
  385. package/.medusa/server/src/workflows/product-attribute/steps/validate-attribute-accepts-values.js +0 -20
  386. package/.medusa/server/src/workflows/product-attribute/steps/validate-product-attribute-input.d.ts +0 -7
  387. package/.medusa/server/src/workflows/product-attribute/steps/validate-product-attribute-input.js +0 -20
  388. package/.medusa/server/src/workflows/product-attribute/workflows/add-product-attribute.d.ts +0 -52
  389. package/.medusa/server/src/workflows/product-attribute/workflows/add-product-attribute.js +0 -120
  390. package/.medusa/server/src/workflows/product-attribute/workflows/batch-product-attribute-values.d.ts +0 -23
  391. package/.medusa/server/src/workflows/product-attribute/workflows/batch-product-attribute-values.js +0 -252
  392. package/.medusa/server/src/workflows/product-attribute/workflows/detach-product-attribute.d.ts +0 -17
  393. package/.medusa/server/src/workflows/product-attribute/workflows/detach-product-attribute.js +0 -62
  394. package/.medusa/server/src/workflows/product-attribute/workflows/materialize-product-attributes.d.ts +0 -135
  395. package/.medusa/server/src/workflows/product-attribute/workflows/materialize-product-attributes.js +0 -43
  396. package/.medusa/server/src/workflows/product-attribute/workflows/sync-product-attribute-options.d.ts +0 -24
  397. package/.medusa/server/src/workflows/product-attribute/workflows/sync-product-attribute-options.js +0 -27
  398. package/.medusa/server/src/workflows/product-attribute/workflows/update-product-attribute.d.ts +0 -23
  399. package/.medusa/server/src/workflows/product-attribute/workflows/update-product-attribute.js +0 -67
  400. package/.medusa/server/src/workflows/product-edit/workflows/product-edit-update-fields.d.ts +0 -25
  401. package/.medusa/server/src/workflows/product-edit/workflows/product-edit-update-fields.js +0 -148
@@ -8,11 +8,6 @@ const product_1 = __importDefault(require("@medusajs/medusa/product"));
8
8
  const product_attribute_1 = __importDefault(require("../modules/product-attribute"));
9
9
  /**
10
10
  * Read-only link Product → ProductAttribute (product-scoped attributes).
11
- * `ProductAttribute.product_id` is the FK; global attributes have it NULL.
12
- * Exposes the scoped attributes under `product.scoped_attributes`.
13
- *
14
- * Same pattern as `product-change-link.ts`: no pivot table — the FK lives
15
- * directly on the child row, and the link is read-only.
16
11
  */
17
12
  exports.default = (0, utils_1.defineLink)({
18
13
  linkable: product_1.default.linkable.product,
@@ -20,10 +15,10 @@ exports.default = (0, utils_1.defineLink)({
20
15
  isList: true,
21
16
  }, {
22
17
  ...product_attribute_1.default.linkable.productAttribute.id,
23
- alias: "scoped_attributes",
18
+ alias: 'scoped_attributes',
24
19
  primaryKey: "product_id",
25
20
  isList: true,
26
21
  }, {
27
22
  readOnly: true,
28
23
  });
29
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZHVjdC1hdHRyaWJ1dGUtcHJvZHVjdC1saW5rLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpbmtzL3Byb2R1Y3QtYXR0cmlidXRlLXByb2R1Y3QtbGluay50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLHFEQUFzRDtBQUN0RCx1RUFBb0Q7QUFFcEQscUZBQWlFO0FBRWpFOzs7Ozs7O0dBT0c7QUFDSCxrQkFBZSxJQUFBLGtCQUFVLEVBQ3ZCO0lBQ0UsUUFBUSxFQUFFLGlCQUFhLENBQUMsUUFBUSxDQUFDLE9BQU87SUFDeEMsS0FBSyxFQUFFLElBQUk7SUFDWCxNQUFNLEVBQUUsSUFBSTtDQUNiLEVBQ0Q7SUFDRSxHQUFHLDJCQUFzQixDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFO0lBQ3RELEtBQUssRUFBRSxtQkFBbUI7SUFDMUIsVUFBVSxFQUFFLFlBQVk7SUFDeEIsTUFBTSxFQUFFLElBQUk7Q0FDYixFQUNEO0lBQ0UsUUFBUSxFQUFFLElBQUk7Q0FDZixDQUNGLENBQUEifQ==
24
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZHVjdC1hdHRyaWJ1dGUtcHJvZHVjdC1saW5rLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpbmtzL3Byb2R1Y3QtYXR0cmlidXRlLXByb2R1Y3QtbGluay50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLHFEQUFzRDtBQUN0RCx1RUFBb0Q7QUFFcEQscUZBQWlFO0FBRWpFOztHQUVHO0FBQ0gsa0JBQWUsSUFBQSxrQkFBVSxFQUN2QjtJQUNFLFFBQVEsRUFBRSxpQkFBYSxDQUFDLFFBQVEsQ0FBQyxPQUFPO0lBQ3hDLEtBQUssRUFBRSxJQUFJO0lBQ1gsTUFBTSxFQUFFLElBQUk7Q0FDYixFQUNEO0lBQ0UsR0FBRywyQkFBc0IsQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsRUFBRTtJQUN0RCxLQUFLLEVBQUUsbUJBQW1CO0lBQzFCLFVBQVUsRUFBRSxZQUFZO0lBQ3hCLE1BQU0sRUFBRSxJQUFJO0NBQ2IsRUFDRDtJQUNFLFFBQVEsRUFBRSxJQUFJO0NBQ2YsQ0FDRixDQUFBIn0=
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Read-only link ProductAttributeValue → ProductOptionValue mirror (1:1).
3
+ * `ProductAttributeValue.product_option_value_id` is the FK; no pivot table.
4
+ */
5
+ declare const _default: import("@medusajs/framework/utils").DefineLinkExport;
6
+ export default _default;
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const utils_1 = require("@medusajs/framework/utils");
7
+ const product_1 = __importDefault(require("@medusajs/medusa/product"));
8
+ const product_attribute_1 = __importDefault(require("../modules/product-attribute"));
9
+ /**
10
+ * Read-only link ProductAttributeValue → ProductOptionValue mirror (1:1).
11
+ * `ProductAttributeValue.product_option_value_id` is the FK; no pivot table.
12
+ */
13
+ exports.default = (0, utils_1.defineLink)({
14
+ ...product_attribute_1.default.linkable.productAttributeValue.id,
15
+ primaryKey: "product_option_value_id",
16
+ isList: false,
17
+ }, {
18
+ linkable: product_1.default.linkable.productOptionValue.id,
19
+ field: "id",
20
+ isList: false,
21
+ }, {
22
+ readOnly: true,
23
+ });
24
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZHVjdC1hdHRyaWJ1dGUtdmFsdWUtb3B0aW9uLXZhbHVlLW1pcnJvci1saW5rLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpbmtzL3Byb2R1Y3QtYXR0cmlidXRlLXZhbHVlLW9wdGlvbi12YWx1ZS1taXJyb3ItbGluay50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLHFEQUFzRDtBQUN0RCx1RUFBb0Q7QUFFcEQscUZBQWlFO0FBRWpFOzs7R0FHRztBQUNILGtCQUFlLElBQUEsa0JBQVUsRUFDdkI7SUFDRSxHQUFHLDJCQUFzQixDQUFDLFFBQVEsQ0FBQyxxQkFBcUIsQ0FBQyxFQUFFO0lBQzNELFVBQVUsRUFBRSx5QkFBeUI7SUFDckMsTUFBTSxFQUFFLEtBQUs7Q0FDZCxFQUNEO0lBQ0UsUUFBUSxFQUFFLGlCQUFhLENBQUMsUUFBUSxDQUFDLGtCQUFrQixDQUFDLEVBQUU7SUFDdEQsS0FBSyxFQUFFLElBQUk7SUFDWCxNQUFNLEVBQUUsS0FBSztDQUNkLEVBQ0Q7SUFDRSxRQUFRLEVBQUUsSUFBSTtDQUNmLENBQ0YsQ0FBQSJ9
@@ -1,2 +1,5 @@
1
+ /**
2
+ * Product ↔ ProductAttributeValue pivot link.
3
+ */
1
4
  declare const _default: import("@medusajs/framework/utils").DefineLinkExport;
2
5
  export default _default;
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const utils_1 = require("@medusajs/framework/utils");
7
+ const product_1 = __importDefault(require("@medusajs/medusa/product"));
8
+ const product_attribute_1 = __importDefault(require("../modules/product-attribute"));
9
+ /**
10
+ * Product ↔ ProductAttributeValue pivot link.
11
+ */
12
+ exports.default = (0, utils_1.defineLink)({
13
+ linkable: product_1.default.linkable.product.id,
14
+ isList: true,
15
+ }, {
16
+ linkable: product_attribute_1.default.linkable.productAttributeValue.id,
17
+ isList: true,
18
+ }, {
19
+ database: {
20
+ table: "product_attribute_value_link",
21
+ },
22
+ });
23
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZHVjdC1hdHRyaWJ1dGUtdmFsdWUtcGl2b3QtbGluay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saW5rcy9wcm9kdWN0LWF0dHJpYnV0ZS12YWx1ZS1waXZvdC1saW5rLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEscURBQXNEO0FBQ3RELHVFQUFvRDtBQUVwRCxxRkFBaUU7QUFFakU7O0dBRUc7QUFDSCxrQkFBZSxJQUFBLGtCQUFVLEVBQ3ZCO0lBQ0UsUUFBUSxFQUFFLGlCQUFhLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxFQUFFO0lBQzNDLE1BQU0sRUFBRSxJQUFJO0NBQ2IsRUFDRDtJQUNFLFFBQVEsRUFBRSwyQkFBc0IsQ0FBQyxRQUFRLENBQUMscUJBQXFCLENBQUMsRUFBRTtJQUNsRSxNQUFNLEVBQUUsSUFBSTtDQUNiLEVBQ0Q7SUFDRSxRQUFRLEVBQUU7UUFDUixLQUFLLEVBQUUsOEJBQThCO0tBQ3RDO0NBQ0YsQ0FDRixDQUFBIn0=
@@ -0,0 +1,14 @@
1
+ import { Migration } from "@medusajs/framework/mikro-orm/migrations";
2
+ /**
3
+ * Adds the native-option mirror FK columns (SPEC-014):
4
+ * - `product_attribute.product_option_id` → mirror `ProductOption`
5
+ * (variant-axis multi_select attributes).
6
+ * - `product_attribute_value.product_option_value_id` → mirror
7
+ * `ProductOptionValue`.
8
+ * Both nullable; non-axis attributes/values leave them NULL. Read-only
9
+ * mirror links resolve through these FKs. Safe to re-run.
10
+ */
11
+ export declare class Migration20260601000002 extends Migration {
12
+ up(): Promise<void>;
13
+ down(): Promise<void>;
14
+ }
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Migration20260601000002 = void 0;
4
+ const migrations_1 = require("@medusajs/framework/mikro-orm/migrations");
5
+ /**
6
+ * Adds the native-option mirror FK columns (SPEC-014):
7
+ * - `product_attribute.product_option_id` → mirror `ProductOption`
8
+ * (variant-axis multi_select attributes).
9
+ * - `product_attribute_value.product_option_value_id` → mirror
10
+ * `ProductOptionValue`.
11
+ * Both nullable; non-axis attributes/values leave them NULL. Read-only
12
+ * mirror links resolve through these FKs. Safe to re-run.
13
+ */
14
+ class Migration20260601000002 extends migrations_1.Migration {
15
+ async up() {
16
+ this.addSql(`
17
+ ALTER TABLE "product_attribute"
18
+ ADD COLUMN IF NOT EXISTS "product_option_id" text NULL;
19
+ `);
20
+ this.addSql(`
21
+ ALTER TABLE "product_attribute_value"
22
+ ADD COLUMN IF NOT EXISTS "product_option_value_id" text NULL;
23
+ `);
24
+ }
25
+ async down() {
26
+ this.addSql(`ALTER TABLE "product_attribute_value" DROP COLUMN IF EXISTS "product_option_value_id";`);
27
+ this.addSql(`ALTER TABLE "product_attribute" DROP COLUMN IF EXISTS "product_option_id";`);
28
+ }
29
+ }
30
+ exports.Migration20260601000002 = Migration20260601000002;
31
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWlncmF0aW9uMjAyNjA2MDEwMDAwMDIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbW9kdWxlcy9wcm9kdWN0LWF0dHJpYnV0ZS9taWdyYXRpb25zL01pZ3JhdGlvbjIwMjYwNjAxMDAwMDAyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHlFQUFvRTtBQUVwRTs7Ozs7Ozs7R0FRRztBQUNILE1BQWEsdUJBQXdCLFNBQVEsc0JBQVM7SUFDM0MsS0FBSyxDQUFDLEVBQUU7UUFDZixJQUFJLENBQUMsTUFBTSxDQUFDOzs7S0FHWCxDQUFDLENBQUE7UUFDRixJQUFJLENBQUMsTUFBTSxDQUFDOzs7S0FHWCxDQUFDLENBQUE7SUFDSixDQUFDO0lBRVEsS0FBSyxDQUFDLElBQUk7UUFDakIsSUFBSSxDQUFDLE1BQU0sQ0FDVCx3RkFBd0YsQ0FDekYsQ0FBQTtRQUNELElBQUksQ0FBQyxNQUFNLENBQ1QsNEVBQTRFLENBQzdFLENBQUE7SUFDSCxDQUFDO0NBQ0Y7QUFwQkQsMERBb0JDIn0=
@@ -5,6 +5,7 @@ declare const ProductAttributeValue: import("@medusajs/framework/utils").DmlEnti
5
5
  rank: import("@medusajs/framework/utils").NumberProperty;
6
6
  is_active: import("@medusajs/framework/utils").BooleanProperty;
7
7
  metadata: import("@medusajs/framework/utils").NullableModifier<Record<string, unknown>, import("@medusajs/framework/utils").JSONProperty>;
8
+ product_option_value_id: import("@medusajs/framework/utils").NullableModifier<string, import("@medusajs/framework/utils").TextProperty>;
8
9
  attribute: import("@medusajs/framework/utils").BelongsTo<() => import("@medusajs/framework/utils").DmlEntity<import("@medusajs/framework/utils").DMLEntitySchemaBuilder<{
9
10
  id: import("@medusajs/framework/utils").PrimaryKeyModifier<string, import("@medusajs/framework/utils").IdProperty>;
10
11
  handle: import("@medusajs/framework/utils").NullableModifier<string, import("@medusajs/framework/utils").TextProperty>;
@@ -18,6 +19,7 @@ declare const ProductAttributeValue: import("@medusajs/framework/utils").DmlEnti
18
19
  is_active: import("@medusajs/framework/utils").BooleanProperty;
19
20
  created_by: import("@medusajs/framework/utils").NullableModifier<string, import("@medusajs/framework/utils").TextProperty>;
20
21
  product_id: import("@medusajs/framework/utils").NullableModifier<string, import("@medusajs/framework/utils").TextProperty>;
22
+ product_option_id: import("@medusajs/framework/utils").NullableModifier<string, import("@medusajs/framework/utils").TextProperty>;
21
23
  metadata: import("@medusajs/framework/utils").NullableModifier<Record<string, unknown>, import("@medusajs/framework/utils").JSONProperty>;
22
24
  values: import("@medusajs/framework/utils").HasMany<() => import("@medusajs/framework/utils").DmlEntity<import("@medusajs/framework/utils").DMLEntitySchemaBuilder</*elided*/ any>, "ProductAttributeValue">>;
23
25
  }>, "ProductAttribute">, undefined>;
@@ -13,6 +13,7 @@ const ProductAttributeValue = utils_1.model
13
13
  rank: utils_1.model.number().default(0),
14
14
  is_active: utils_1.model.boolean().default(true),
15
15
  metadata: utils_1.model.json().nullable(),
16
+ product_option_value_id: utils_1.model.text().nullable(),
16
17
  attribute: utils_1.model.belongsTo(() => product_attribute_1.default, {
17
18
  mappedBy: "values",
18
19
  }),
@@ -26,4 +27,4 @@ const ProductAttributeValue = utils_1.model
26
27
  },
27
28
  ]);
28
29
  exports.default = ProductAttributeValue;
29
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZHVjdC1hdHRyaWJ1dGUtdmFsdWUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbW9kdWxlcy9wcm9kdWN0LWF0dHJpYnV0ZS9tb2RlbHMvcHJvZHVjdC1hdHRyaWJ1dGUtdmFsdWUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxxREFBaUQ7QUFFakQsNEVBQWtEO0FBRWxELE1BQU0scUJBQXFCLEdBQUcsYUFBSztLQUNoQyxNQUFNLENBQUMsdUJBQXVCLEVBQUU7SUFDL0IsRUFBRSxFQUFFLGFBQUssQ0FBQyxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQyxVQUFVLEVBQUU7SUFDakQsTUFBTSxFQUFFLGFBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxRQUFRLEVBQUU7SUFDL0IsSUFBSSxFQUFFLGFBQUssQ0FBQyxJQUFJLEVBQUU7SUFDbEIsSUFBSSxFQUFFLGFBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBQy9CLFNBQVMsRUFBRSxhQUFLLENBQUMsT0FBTyxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQztJQUN4QyxRQUFRLEVBQUUsYUFBSyxDQUFDLElBQUksRUFBRSxDQUFDLFFBQVEsRUFBRTtJQUVqQyxTQUFTLEVBQUUsYUFBSyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQywyQkFBZ0IsRUFBRTtRQUNqRCxRQUFRLEVBQUUsUUFBUTtLQUNuQixDQUFDO0NBQ0gsQ0FBQztLQUNELE9BQU8sQ0FBQztJQUNQO1FBQ0UsSUFBSSxFQUFFLDJDQUEyQztRQUNqRCxFQUFFLEVBQUUsQ0FBQyxjQUFjLEVBQUUsUUFBUSxDQUFDO1FBQzlCLE1BQU0sRUFBRSxJQUFJO1FBQ1osS0FBSyxFQUFFLDJDQUEyQztLQUNuRDtDQUNGLENBQUMsQ0FBQTtBQUVKLGtCQUFlLHFCQUFxQixDQUFBIn0=
30
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZHVjdC1hdHRyaWJ1dGUtdmFsdWUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbW9kdWxlcy9wcm9kdWN0LWF0dHJpYnV0ZS9tb2RlbHMvcHJvZHVjdC1hdHRyaWJ1dGUtdmFsdWUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxxREFBaUQ7QUFFakQsNEVBQWtEO0FBRWxELE1BQU0scUJBQXFCLEdBQUcsYUFBSztLQUNoQyxNQUFNLENBQUMsdUJBQXVCLEVBQUU7SUFDL0IsRUFBRSxFQUFFLGFBQUssQ0FBQyxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQyxVQUFVLEVBQUU7SUFDakQsTUFBTSxFQUFFLGFBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxRQUFRLEVBQUU7SUFDL0IsSUFBSSxFQUFFLGFBQUssQ0FBQyxJQUFJLEVBQUU7SUFDbEIsSUFBSSxFQUFFLGFBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBQy9CLFNBQVMsRUFBRSxhQUFLLENBQUMsT0FBTyxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQztJQUN4QyxRQUFRLEVBQUUsYUFBSyxDQUFDLElBQUksRUFBRSxDQUFDLFFBQVEsRUFBRTtJQUNqQyx1QkFBdUIsRUFBRSxhQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsUUFBUSxFQUFFO0lBRWhELFNBQVMsRUFBRSxhQUFLLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLDJCQUFnQixFQUFFO1FBQ2pELFFBQVEsRUFBRSxRQUFRO0tBQ25CLENBQUM7Q0FDSCxDQUFDO0tBQ0QsT0FBTyxDQUFDO0lBQ1A7UUFDRSxJQUFJLEVBQUUsMkNBQTJDO1FBQ2pELEVBQUUsRUFBRSxDQUFDLGNBQWMsRUFBRSxRQUFRLENBQUM7UUFDOUIsTUFBTSxFQUFFLElBQUk7UUFDWixLQUFLLEVBQUUsMkNBQTJDO0tBQ25EO0NBQ0YsQ0FBQyxDQUFBO0FBRUosa0JBQWUscUJBQXFCLENBQUEifQ==
@@ -12,6 +12,7 @@ declare const ProductAttribute: import("@medusajs/framework/utils").DmlEntity<im
12
12
  is_active: import("@medusajs/framework/utils").BooleanProperty;
13
13
  created_by: import("@medusajs/framework/utils").NullableModifier<string, import("@medusajs/framework/utils").TextProperty>;
14
14
  product_id: import("@medusajs/framework/utils").NullableModifier<string, import("@medusajs/framework/utils").TextProperty>;
15
+ product_option_id: import("@medusajs/framework/utils").NullableModifier<string, import("@medusajs/framework/utils").TextProperty>;
15
16
  metadata: import("@medusajs/framework/utils").NullableModifier<Record<string, unknown>, import("@medusajs/framework/utils").JSONProperty>;
16
17
  values: import("@medusajs/framework/utils").HasMany<() => import("@medusajs/framework/utils").DmlEntity<import("@medusajs/framework/utils").DMLEntitySchemaBuilder<{
17
18
  id: import("@medusajs/framework/utils").PrimaryKeyModifier<string, import("@medusajs/framework/utils").IdProperty>;
@@ -20,6 +21,7 @@ declare const ProductAttribute: import("@medusajs/framework/utils").DmlEntity<im
20
21
  rank: import("@medusajs/framework/utils").NumberProperty;
21
22
  is_active: import("@medusajs/framework/utils").BooleanProperty;
22
23
  metadata: import("@medusajs/framework/utils").NullableModifier<Record<string, unknown>, import("@medusajs/framework/utils").JSONProperty>;
24
+ product_option_value_id: import("@medusajs/framework/utils").NullableModifier<string, import("@medusajs/framework/utils").TextProperty>;
23
25
  attribute: import("@medusajs/framework/utils").BelongsTo<() => import("@medusajs/framework/utils").DmlEntity<import("@medusajs/framework/utils").DMLEntitySchemaBuilder</*elided*/ any>, "ProductAttribute">, undefined>;
24
26
  }>, "ProductAttributeValue">>;
25
27
  }>, "ProductAttribute">;
@@ -23,6 +23,7 @@ const ProductAttribute = utils_1.model
23
23
  // from a single product's edit/create form, not visible in the global
24
24
  // /product-attributes catalogue). Null = global attribute.
25
25
  product_id: utils_1.model.text().nullable(),
26
+ product_option_id: utils_1.model.text().nullable(),
26
27
  metadata: utils_1.model.json().nullable(),
27
28
  values: utils_1.model.hasMany(() => product_attribute_value_1.default, {
28
29
  mappedBy: "attribute",
@@ -50,4 +51,4 @@ const ProductAttribute = utils_1.model
50
51
  },
51
52
  ]);
52
53
  exports.default = ProductAttribute;
53
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZHVjdC1hdHRyaWJ1dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbW9kdWxlcy9wcm9kdWN0LWF0dHJpYnV0ZS9tb2RlbHMvcHJvZHVjdC1hdHRyaWJ1dGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxxREFBaUQ7QUFDakQsMkNBQStDO0FBRS9DLHdGQUE2RDtBQUU3RCxNQUFNLGdCQUFnQixHQUFHLGFBQUs7S0FDM0IsTUFBTSxDQUFDLGtCQUFrQixFQUFFO0lBQzFCLEVBQUUsRUFBRSxhQUFLLENBQUMsRUFBRSxDQUFDLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUMsVUFBVSxFQUFFO0lBQzlDLE1BQU0sRUFBRSxhQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsUUFBUSxFQUFFO0lBQy9CLElBQUksRUFBRSxhQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsVUFBVSxFQUFFO0lBQy9CLFdBQVcsRUFBRSxhQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsUUFBUSxFQUFFO0lBQ3BDLElBQUksRUFBRSxhQUFLLENBQUMsSUFBSSxDQUFDLHFCQUFhLENBQUM7SUFDL0IsV0FBVyxFQUFFLGFBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDO0lBQzNDLGFBQWEsRUFBRSxhQUFLLENBQUMsT0FBTyxFQUFFLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQztJQUM3QyxlQUFlLEVBQUUsYUFBSyxDQUFDLE9BQU8sRUFBRSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUM7SUFDL0MsSUFBSSxFQUFFLGFBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBQy9CLFNBQVMsRUFBRSxhQUFLLENBQUMsT0FBTyxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQztJQUN4QyxVQUFVLEVBQUUsYUFBSyxDQUFDLElBQUksRUFBRSxDQUFDLFFBQVEsRUFBRTtJQUNuQyx5RUFBeUU7SUFDekUsc0VBQXNFO0lBQ3RFLDJEQUEyRDtJQUMzRCxVQUFVLEVBQUUsYUFBSyxDQUFDLElBQUksRUFBRSxDQUFDLFFBQVEsRUFBRTtJQUNuQyxRQUFRLEVBQUUsYUFBSyxDQUFDLElBQUksRUFBRSxDQUFDLFFBQVEsRUFBRTtJQUVqQyxNQUFNLEVBQUUsYUFBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxpQ0FBcUIsRUFBRTtRQUNqRCxRQUFRLEVBQUUsV0FBVztLQUN0QixDQUFDO0NBQ0gsQ0FBQztLQUNELFFBQVEsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7S0FDaEMsT0FBTyxDQUFDO0lBQ1A7UUFDRSxJQUFJLEVBQUUscUNBQXFDO1FBQzNDLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQztRQUNkLE1BQU0sRUFBRSxJQUFJO1FBQ1osS0FBSyxFQUFFLDJDQUEyQztLQUNuRDtJQUNEO1FBQ0UsSUFBSSxFQUFFLDRCQUE0QjtRQUNsQyxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUM7UUFDWixNQUFNLEVBQUUsS0FBSztRQUNiLEtBQUssRUFBRSxvQkFBb0I7S0FDNUI7SUFDRDtRQUNFLElBQUksRUFBRSxrQ0FBa0M7UUFDeEMsRUFBRSxFQUFFLENBQUMsWUFBWSxDQUFDO1FBQ2xCLE1BQU0sRUFBRSxLQUFLO1FBQ2IsS0FBSyxFQUFFLCtDQUErQztLQUN2RDtDQUNGLENBQUMsQ0FBQTtBQUVKLGtCQUFlLGdCQUFnQixDQUFBIn0=
54
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZHVjdC1hdHRyaWJ1dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbW9kdWxlcy9wcm9kdWN0LWF0dHJpYnV0ZS9tb2RlbHMvcHJvZHVjdC1hdHRyaWJ1dGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxxREFBaUQ7QUFDakQsMkNBQStDO0FBRS9DLHdGQUE2RDtBQUU3RCxNQUFNLGdCQUFnQixHQUFHLGFBQUs7S0FDM0IsTUFBTSxDQUFDLGtCQUFrQixFQUFFO0lBQzFCLEVBQUUsRUFBRSxhQUFLLENBQUMsRUFBRSxDQUFDLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUMsVUFBVSxFQUFFO0lBQzlDLE1BQU0sRUFBRSxhQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsUUFBUSxFQUFFO0lBQy9CLElBQUksRUFBRSxhQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsVUFBVSxFQUFFO0lBQy9CLFdBQVcsRUFBRSxhQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsUUFBUSxFQUFFO0lBQ3BDLElBQUksRUFBRSxhQUFLLENBQUMsSUFBSSxDQUFDLHFCQUFhLENBQUM7SUFDL0IsV0FBVyxFQUFFLGFBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDO0lBQzNDLGFBQWEsRUFBRSxhQUFLLENBQUMsT0FBTyxFQUFFLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQztJQUM3QyxlQUFlLEVBQUUsYUFBSyxDQUFDLE9BQU8sRUFBRSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUM7SUFDL0MsSUFBSSxFQUFFLGFBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBQy9CLFNBQVMsRUFBRSxhQUFLLENBQUMsT0FBTyxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQztJQUN4QyxVQUFVLEVBQUUsYUFBSyxDQUFDLElBQUksRUFBRSxDQUFDLFFBQVEsRUFBRTtJQUNuQyx5RUFBeUU7SUFDekUsc0VBQXNFO0lBQ3RFLDJEQUEyRDtJQUMzRCxVQUFVLEVBQUUsYUFBSyxDQUFDLElBQUksRUFBRSxDQUFDLFFBQVEsRUFBRTtJQUNuQyxpQkFBaUIsRUFBRSxhQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsUUFBUSxFQUFFO0lBQzFDLFFBQVEsRUFBRSxhQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsUUFBUSxFQUFFO0lBRWpDLE1BQU0sRUFBRSxhQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDLGlDQUFxQixFQUFFO1FBQ2pELFFBQVEsRUFBRSxXQUFXO0tBQ3RCLENBQUM7Q0FDSCxDQUFDO0tBQ0QsUUFBUSxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztLQUNoQyxPQUFPLENBQUM7SUFDUDtRQUNFLElBQUksRUFBRSxxQ0FBcUM7UUFDM0MsRUFBRSxFQUFFLENBQUMsUUFBUSxDQUFDO1FBQ2QsTUFBTSxFQUFFLElBQUk7UUFDWixLQUFLLEVBQUUsMkNBQTJDO0tBQ25EO0lBQ0Q7UUFDRSxJQUFJLEVBQUUsNEJBQTRCO1FBQ2xDLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQztRQUNaLE1BQU0sRUFBRSxLQUFLO1FBQ2IsS0FBSyxFQUFFLG9CQUFvQjtLQUM1QjtJQUNEO1FBQ0UsSUFBSSxFQUFFLGtDQUFrQztRQUN4QyxFQUFFLEVBQUUsQ0FBQyxZQUFZLENBQUM7UUFDbEIsTUFBTSxFQUFFLEtBQUs7UUFDYixLQUFLLEVBQUUsK0NBQStDO0tBQ3ZEO0NBQ0YsQ0FBQyxDQUFBO0FBRUosa0JBQWUsZ0JBQWdCLENBQUEifQ==
@@ -1,11 +1,12 @@
1
- import type { ModuleJoinerConfig } from "@medusajs/framework/types";
1
+ import type { Context, FindConfig, ModuleJoinerConfig } from "@medusajs/framework/types";
2
+ import { AttributeType } from "@mercurjs/types";
2
3
  declare const ProductAttributeModuleService_base: import("@medusajs/framework/utils").MedusaServiceReturnType<import("@medusajs/framework/utils").ModelConfigurationsToConfigTemplate<{
3
4
  readonly ProductAttribute: import("@medusajs/framework/utils").DmlEntity<import("@medusajs/framework/utils").DMLEntitySchemaBuilder<{
4
5
  id: import("@medusajs/framework/utils").PrimaryKeyModifier<string, import("@medusajs/framework/utils").IdProperty>;
5
6
  handle: import("@medusajs/framework/utils").NullableModifier<string, import("@medusajs/framework/utils").TextProperty>;
6
7
  name: import("@medusajs/framework/utils").TextProperty;
7
8
  description: import("@medusajs/framework/utils").NullableModifier<string, import("@medusajs/framework/utils").TextProperty>;
8
- type: import("@medusajs/framework/utils").EnumProperty<typeof import("@mercurjs/types").AttributeType>;
9
+ type: import("@medusajs/framework/utils").EnumProperty<typeof AttributeType>;
9
10
  is_required: import("@medusajs/framework/utils").BooleanProperty;
10
11
  is_filterable: import("@medusajs/framework/utils").BooleanProperty;
11
12
  is_variant_axis: import("@medusajs/framework/utils").BooleanProperty;
@@ -13,6 +14,7 @@ declare const ProductAttributeModuleService_base: import("@medusajs/framework/ut
13
14
  is_active: import("@medusajs/framework/utils").BooleanProperty;
14
15
  created_by: import("@medusajs/framework/utils").NullableModifier<string, import("@medusajs/framework/utils").TextProperty>;
15
16
  product_id: import("@medusajs/framework/utils").NullableModifier<string, import("@medusajs/framework/utils").TextProperty>;
17
+ product_option_id: import("@medusajs/framework/utils").NullableModifier<string, import("@medusajs/framework/utils").TextProperty>;
16
18
  metadata: import("@medusajs/framework/utils").NullableModifier<Record<string, unknown>, import("@medusajs/framework/utils").JSONProperty>;
17
19
  values: import("@medusajs/framework/utils").HasMany<() => import("@medusajs/framework/utils").DmlEntity<import("@medusajs/framework/utils").DMLEntitySchemaBuilder<{
18
20
  id: import("@medusajs/framework/utils").PrimaryKeyModifier<string, import("@medusajs/framework/utils").IdProperty>;
@@ -21,6 +23,7 @@ declare const ProductAttributeModuleService_base: import("@medusajs/framework/ut
21
23
  rank: import("@medusajs/framework/utils").NumberProperty;
22
24
  is_active: import("@medusajs/framework/utils").BooleanProperty;
23
25
  metadata: import("@medusajs/framework/utils").NullableModifier<Record<string, unknown>, import("@medusajs/framework/utils").JSONProperty>;
26
+ product_option_value_id: import("@medusajs/framework/utils").NullableModifier<string, import("@medusajs/framework/utils").TextProperty>;
24
27
  attribute: import("@medusajs/framework/utils").BelongsTo<() => import("@medusajs/framework/utils").DmlEntity<import("@medusajs/framework/utils").DMLEntitySchemaBuilder</*elided*/ any>, "ProductAttribute">, undefined>;
25
28
  }>, "ProductAttributeValue">>;
26
29
  }>, "ProductAttribute">;
@@ -31,12 +34,13 @@ declare const ProductAttributeModuleService_base: import("@medusajs/framework/ut
31
34
  rank: import("@medusajs/framework/utils").NumberProperty;
32
35
  is_active: import("@medusajs/framework/utils").BooleanProperty;
33
36
  metadata: import("@medusajs/framework/utils").NullableModifier<Record<string, unknown>, import("@medusajs/framework/utils").JSONProperty>;
37
+ product_option_value_id: import("@medusajs/framework/utils").NullableModifier<string, import("@medusajs/framework/utils").TextProperty>;
34
38
  attribute: import("@medusajs/framework/utils").BelongsTo<() => import("@medusajs/framework/utils").DmlEntity<import("@medusajs/framework/utils").DMLEntitySchemaBuilder<{
35
39
  id: import("@medusajs/framework/utils").PrimaryKeyModifier<string, import("@medusajs/framework/utils").IdProperty>;
36
40
  handle: import("@medusajs/framework/utils").NullableModifier<string, import("@medusajs/framework/utils").TextProperty>;
37
41
  name: import("@medusajs/framework/utils").TextProperty;
38
42
  description: import("@medusajs/framework/utils").NullableModifier<string, import("@medusajs/framework/utils").TextProperty>;
39
- type: import("@medusajs/framework/utils").EnumProperty<typeof import("@mercurjs/types").AttributeType>;
43
+ type: import("@medusajs/framework/utils").EnumProperty<typeof AttributeType>;
40
44
  is_required: import("@medusajs/framework/utils").BooleanProperty;
41
45
  is_filterable: import("@medusajs/framework/utils").BooleanProperty;
42
46
  is_variant_axis: import("@medusajs/framework/utils").BooleanProperty;
@@ -44,6 +48,7 @@ declare const ProductAttributeModuleService_base: import("@medusajs/framework/ut
44
48
  is_active: import("@medusajs/framework/utils").BooleanProperty;
45
49
  created_by: import("@medusajs/framework/utils").NullableModifier<string, import("@medusajs/framework/utils").TextProperty>;
46
50
  product_id: import("@medusajs/framework/utils").NullableModifier<string, import("@medusajs/framework/utils").TextProperty>;
51
+ product_option_id: import("@medusajs/framework/utils").NullableModifier<string, import("@medusajs/framework/utils").TextProperty>;
47
52
  metadata: import("@medusajs/framework/utils").NullableModifier<Record<string, unknown>, import("@medusajs/framework/utils").JSONProperty>;
48
53
  values: import("@medusajs/framework/utils").HasMany<() => import("@medusajs/framework/utils").DmlEntity<import("@medusajs/framework/utils").DMLEntitySchemaBuilder</*elided*/ any>, "ProductAttributeValue">>;
49
54
  }>, "ProductAttribute">, undefined>;
@@ -51,5 +56,15 @@ declare const ProductAttributeModuleService_base: import("@medusajs/framework/ut
51
56
  }>>;
52
57
  declare class ProductAttributeModuleService extends ProductAttributeModuleService_base {
53
58
  __joinerConfig(): ModuleJoinerConfig;
59
+ createProductAttributes<T extends any | any[]>(data: T, sharedContext?: Context): Promise<T extends any[] ? any[] : any>;
60
+ updateProductAttributes<T extends any | any[]>(data: T, sharedContext?: Context): Promise<T extends any[] ? any[] : any>;
61
+ private static readonly VALUE_TYPES;
62
+ private wantsValues;
63
+ private stripValuesFromConfig;
64
+ private deriveValueConfig;
65
+ private attachValues;
66
+ listProductAttributes(filters?: any, config?: FindConfig<any>, sharedContext?: Context): Promise<any[]>;
67
+ listAndCountProductAttributes(filters?: any, config?: FindConfig<any>, sharedContext?: Context): Promise<[any[], number]>;
68
+ createProductAttributeValues<T extends any | any[]>(data: T, sharedContext?: Context): Promise<T extends any[] ? any[] : any>;
54
69
  }
55
70
  export default ProductAttributeModuleService;
@@ -1,6 +1,20 @@
1
1
  "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
12
+ return function (target, key) { decorator(target, key, paramIndex); }
13
+ };
14
+ var _a, _b, _c;
2
15
  Object.defineProperty(exports, "__esModule", { value: true });
3
16
  const utils_1 = require("@medusajs/framework/utils");
17
+ const types_1 = require("@mercurjs/types");
4
18
  const joiner_config_1 = require("./joiner-config");
5
19
  const models_1 = require("./models");
6
20
  class ProductAttributeModuleService extends (0, utils_1.MedusaService)({
@@ -10,6 +24,204 @@ class ProductAttributeModuleService extends (0, utils_1.MedusaService)({
10
24
  __joinerConfig() {
11
25
  return joiner_config_1.joinerConfig;
12
26
  }
27
+ // @ts-ignore
28
+ async createProductAttributes(data, sharedContext) {
29
+ const input = (Array.isArray(data) ? data : [data]).map((attribute) => {
30
+ if (!attribute.handle && !attribute.product_id && attribute.name) {
31
+ attribute.handle = (0, utils_1.toHandle)(attribute.name);
32
+ }
33
+ return attribute;
34
+ });
35
+ // @ts-ignore
36
+ const result = await super.createProductAttributes(input, sharedContext);
37
+ const created = Array.isArray(result) ? result : [result];
38
+ const toggleValues = created
39
+ .filter((attribute) => attribute.type === types_1.AttributeType.TOGGLE)
40
+ .flatMap((attribute) => [
41
+ { attribute_id: attribute.id, name: "true", rank: 0 },
42
+ { attribute_id: attribute.id, name: "false", rank: 1 },
43
+ ]);
44
+ if (toggleValues.length) {
45
+ await this.createProductAttributeValues(toggleValues, sharedContext);
46
+ }
47
+ return (Array.isArray(data) ? result : result[0]);
48
+ }
49
+ // @ts-ignore
50
+ async updateProductAttributes(data, sharedContext) {
51
+ const updates = Array.isArray(data) ? data : [data];
52
+ const idsWithType = updates
53
+ .filter((u) => u.id && u.type !== undefined)
54
+ .map((u) => u.id);
55
+ if (idsWithType.length) {
56
+ const existing = await this.listProductAttributes({ id: idsWithType }, { select: ["id", "type"] }, sharedContext);
57
+ const typeById = new Map(existing.map((a) => [a.id, a.type]));
58
+ for (const update of updates) {
59
+ if (!update.id || update.type === undefined) {
60
+ continue;
61
+ }
62
+ const currentType = typeById.get(update.id);
63
+ if (currentType !== undefined && update.type !== currentType) {
64
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, `Cannot change the type of an existing attribute (${update.id}): "${currentType}" -> "${update.type}".`);
65
+ }
66
+ }
67
+ }
68
+ // @ts-ignore
69
+ return super.updateProductAttributes(data, sharedContext);
70
+ }
71
+ wantsValues(config) {
72
+ const relations = config?.relations ?? [];
73
+ if (relations.some((r) => r === "values" || r.startsWith("values."))) {
74
+ return true;
75
+ }
76
+ const select = config?.select ?? [];
77
+ return select.some((s) => s === "values" || s.startsWith("values."));
78
+ }
79
+ stripValuesFromConfig(config) {
80
+ if (!config) {
81
+ return config;
82
+ }
83
+ const next = { ...config };
84
+ if (Array.isArray(next.relations)) {
85
+ next.relations = next.relations.filter((r) => r !== "values" && !r.startsWith("values."));
86
+ }
87
+ if (Array.isArray(next.select)) {
88
+ next.select = Array.from(new Set([
89
+ ...next.select.filter((s) => s !== "values" && !s.startsWith("values.")),
90
+ "id",
91
+ "type",
92
+ ]));
93
+ }
94
+ return next;
95
+ }
96
+ deriveValueConfig(config) {
97
+ const relations = (config?.relations ?? [])
98
+ .filter((r) => r.startsWith("values."))
99
+ .map((r) => r.slice("values.".length));
100
+ const selectPaths = (config?.select ?? [])
101
+ .filter((s) => s.startsWith("values."))
102
+ .map((s) => s.slice("values.".length));
103
+ const valueConfig = {};
104
+ if (relations.length) {
105
+ valueConfig.relations = relations;
106
+ }
107
+ if (selectPaths.length) {
108
+ valueConfig.select = Array.from(new Set([...selectPaths, "attribute_id"]));
109
+ }
110
+ return valueConfig;
111
+ }
112
+ async attachValues(attributes, config, sharedContext) {
113
+ const valueAttributes = attributes.filter((a) => ProductAttributeModuleService.VALUE_TYPES.has(a.type));
114
+ for (const attribute of attributes) {
115
+ if (!ProductAttributeModuleService.VALUE_TYPES.has(attribute.type)) {
116
+ attribute.values = [];
117
+ }
118
+ }
119
+ if (!valueAttributes.length) {
120
+ return;
121
+ }
122
+ const values = await this.listProductAttributeValues({ attribute_id: valueAttributes.map((a) => a.id) }, this.deriveValueConfig(config), sharedContext);
123
+ const valuesByAttribute = new Map();
124
+ for (const value of values) {
125
+ const list = valuesByAttribute.get(value.attribute_id) ?? [];
126
+ list.push(value);
127
+ valuesByAttribute.set(value.attribute_id, list);
128
+ }
129
+ for (const attribute of valueAttributes) {
130
+ attribute.values = valuesByAttribute.get(attribute.id) ?? [];
131
+ }
132
+ }
133
+ // @ts-ignore
134
+ async listProductAttributes(filters, config, sharedContext) {
135
+ const wantsValues = this.wantsValues(config);
136
+ // @ts-ignore
137
+ const attributes = await super.listProductAttributes(filters, this.stripValuesFromConfig(config), sharedContext);
138
+ if (wantsValues && attributes.length) {
139
+ await this.attachValues(attributes, config, sharedContext);
140
+ }
141
+ return attributes;
142
+ }
143
+ // @ts-ignore
144
+ async listAndCountProductAttributes(filters, config, sharedContext) {
145
+ const wantsValues = this.wantsValues(config);
146
+ // @ts-ignore
147
+ const [attributes, count] = await super.listAndCountProductAttributes(filters, this.stripValuesFromConfig(config), sharedContext);
148
+ if (wantsValues && attributes.length) {
149
+ await this.attachValues(attributes, config, sharedContext);
150
+ }
151
+ return [attributes, count];
152
+ }
153
+ // @ts-ignore
154
+ async createProductAttributeValues(data, sharedContext) {
155
+ const values = Array.isArray(data) ? data : [data];
156
+ const attributeIds = Array.from(new Set(values.map((v) => v.attribute_id).filter(Boolean)));
157
+ const attributes = attributeIds.length
158
+ ? await this.listProductAttributes({ id: attributeIds }, { select: ["id", "product_id", "type"] }, sharedContext)
159
+ : [];
160
+ const attributeById = new Map(attributes.map((a) => [a.id, a]));
161
+ const selectTypes = new Set([
162
+ types_1.AttributeType.SINGLE_SELECT,
163
+ types_1.AttributeType.MULTI_SELECT,
164
+ ]);
165
+ const input = values.map((value) => {
166
+ const attribute = attributeById.get(value.attribute_id);
167
+ const isProductScoped = !!attribute?.product_id;
168
+ const isSelectType = !!attribute && selectTypes.has(attribute.type);
169
+ if (!value.handle && !isProductScoped && isSelectType && value.name) {
170
+ value.handle = (0, utils_1.toHandle)(value.name);
171
+ }
172
+ return value;
173
+ });
174
+ // @ts-ignore
175
+ const result = await super.createProductAttributeValues(input, sharedContext);
176
+ return (Array.isArray(data) ? result : result[0]);
177
+ }
13
178
  }
179
+ ProductAttributeModuleService.VALUE_TYPES = new Set([
180
+ types_1.AttributeType.SINGLE_SELECT,
181
+ types_1.AttributeType.MULTI_SELECT,
182
+ types_1.AttributeType.TOGGLE,
183
+ ]);
184
+ __decorate([
185
+ (0, utils_1.InjectTransactionManager)()
186
+ // @ts-ignore
187
+ ,
188
+ __metadata("design:type", Function),
189
+ __metadata("design:paramtypes", [typeof (_a = typeof T !== "undefined" && T) === "function" ? _a : Object, Object]),
190
+ __metadata("design:returntype", Promise)
191
+ ], ProductAttributeModuleService.prototype, "createProductAttributes", null);
192
+ __decorate([
193
+ (0, utils_1.InjectTransactionManager)()
194
+ // @ts-ignore
195
+ ,
196
+ __metadata("design:type", Function),
197
+ __metadata("design:paramtypes", [typeof (_b = typeof T !== "undefined" && T) === "function" ? _b : Object, Object]),
198
+ __metadata("design:returntype", Promise)
199
+ ], ProductAttributeModuleService.prototype, "updateProductAttributes", null);
200
+ __decorate([
201
+ (0, utils_1.InjectManager)()
202
+ // @ts-ignore
203
+ ,
204
+ __param(2, (0, utils_1.MedusaContext)()),
205
+ __metadata("design:type", Function),
206
+ __metadata("design:paramtypes", [Object, Object, Object]),
207
+ __metadata("design:returntype", Promise)
208
+ ], ProductAttributeModuleService.prototype, "listProductAttributes", null);
209
+ __decorate([
210
+ (0, utils_1.InjectManager)()
211
+ // @ts-ignore
212
+ ,
213
+ __param(2, (0, utils_1.MedusaContext)()),
214
+ __metadata("design:type", Function),
215
+ __metadata("design:paramtypes", [Object, Object, Object]),
216
+ __metadata("design:returntype", Promise)
217
+ ], ProductAttributeModuleService.prototype, "listAndCountProductAttributes", null);
218
+ __decorate([
219
+ (0, utils_1.InjectTransactionManager)()
220
+ // @ts-ignore
221
+ ,
222
+ __metadata("design:type", Function),
223
+ __metadata("design:paramtypes", [typeof (_c = typeof T !== "undefined" && T) === "function" ? _c : Object, Object]),
224
+ __metadata("design:returntype", Promise)
225
+ ], ProductAttributeModuleService.prototype, "createProductAttributeValues", null);
14
226
  exports.default = ProductAttributeModuleService;
15
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9tb2R1bGVzL3Byb2R1Y3QtYXR0cmlidXRlL3NlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFDQSxxREFBeUQ7QUFFekQsbURBQThDO0FBQzlDLHFDQUFrRTtBQUVsRSxNQUFNLDZCQUE4QixTQUFRLElBQUEscUJBQWEsRUFBQztJQUN4RCxnQkFBZ0IsRUFBaEIseUJBQWdCO0lBQ2hCLHFCQUFxQixFQUFyQiw4QkFBcUI7Q0FDdEIsQ0FBQztJQUNBLGNBQWM7UUFDWixPQUFPLDRCQUFZLENBQUE7SUFDckIsQ0FBQztDQUNGO0FBRUQsa0JBQWUsNkJBQTZCLENBQUEifQ==
227
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9tb2R1bGVzL3Byb2R1Y3QtYXR0cmlidXRlL3NlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7O0FBS0EscURBT2tDO0FBQ2xDLDJDQUErQztBQUUvQyxtREFBOEM7QUFDOUMscUNBQWtFO0FBRWxFLE1BQU0sNkJBQThCLFNBQVEsSUFBQSxxQkFBYSxFQUFDO0lBQ3hELGdCQUFnQixFQUFoQix5QkFBZ0I7SUFDaEIscUJBQXFCLEVBQXJCLDhCQUFxQjtDQUN0QixDQUFDO0lBQ0EsY0FBYztRQUNaLE9BQU8sNEJBQVksQ0FBQTtJQUNyQixDQUFDO0lBSUssQUFETixhQUFhO0lBQ2IsS0FBSyxDQUFDLHVCQUF1QixDQUMzQixJQUFPLEVBQ1AsYUFBdUI7UUFFdkIsTUFBTSxLQUFLLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLEVBQUUsRUFBRTtZQUNwRSxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLElBQUksU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUNqRSxTQUFTLENBQUMsTUFBTSxHQUFHLElBQUEsZ0JBQVEsRUFBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUE7WUFDN0MsQ0FBQztZQUVELE9BQU8sU0FBUyxDQUFBO1FBQ2xCLENBQUMsQ0FBQyxDQUFBO1FBRUYsYUFBYTtRQUNiLE1BQU0sTUFBTSxHQUFHLE1BQU0sS0FBSyxDQUFDLHVCQUF1QixDQUFDLEtBQUssRUFBRSxhQUFhLENBQUMsQ0FBQTtRQUV4RSxNQUFNLE9BQU8sR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFD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