@medusajs/medusa 1.7.2 → 1.7.3-alpha.0

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 (302) hide show
  1. package/.turbo/turbo-test.log +0 -75
  2. package/CHANGELOG.md +50 -0
  3. package/dist/api/index.d.ts +1 -0
  4. package/dist/api/index.js +1 -0
  5. package/dist/api/index.js.map +1 -1
  6. package/dist/api/middlewares/check-registered-modules.d.ts +4 -0
  7. package/dist/api/middlewares/check-registered-modules.js +78 -0
  8. package/dist/api/middlewares/check-registered-modules.js.map +1 -0
  9. package/dist/api/routes/admin/discounts/add-resources-to-condition-batch.d.ts +1 -1
  10. package/dist/api/routes/admin/discounts/add-resources-to-condition-batch.js +1 -1
  11. package/dist/api/routes/admin/discounts/delete-resources-from-condition-batch.d.ts +1 -1
  12. package/dist/api/routes/admin/discounts/delete-resources-from-condition-batch.js +1 -1
  13. package/dist/api/routes/admin/discounts/list-discounts.d.ts +1 -1
  14. package/dist/api/routes/admin/index.js +4 -0
  15. package/dist/api/routes/admin/index.js.map +1 -1
  16. package/dist/api/routes/admin/order-edits/add-line-item.d.ts +1 -1
  17. package/dist/api/routes/admin/order-edits/add-line-item.js +1 -1
  18. package/dist/api/routes/admin/order-edits/delete-line-item.d.ts +1 -1
  19. package/dist/api/routes/admin/order-edits/delete-line-item.js +1 -1
  20. package/dist/api/routes/admin/order-edits/delete-order-edit-item-change.d.ts +1 -1
  21. package/dist/api/routes/admin/order-edits/delete-order-edit-item-change.js +1 -1
  22. package/dist/api/routes/admin/order-edits/delete-order-edit.d.ts +1 -1
  23. package/dist/api/routes/admin/order-edits/delete-order-edit.js +1 -1
  24. package/dist/api/routes/admin/order-edits/get-order-edit.d.ts +1 -1
  25. package/dist/api/routes/admin/order-edits/get-order-edit.js +1 -1
  26. package/dist/api/routes/admin/order-edits/list-order-edit.d.ts +1 -1
  27. package/dist/api/routes/admin/order-edits/request-confirmation.d.ts +1 -1
  28. package/dist/api/routes/admin/order-edits/request-confirmation.js +1 -1
  29. package/dist/api/routes/admin/order-edits/update-order-edit-line-item.d.ts +1 -1
  30. package/dist/api/routes/admin/order-edits/update-order-edit-line-item.js +1 -1
  31. package/dist/api/routes/admin/order-edits/update-order-edit.d.ts +1 -1
  32. package/dist/api/routes/admin/order-edits/update-order-edit.js +1 -1
  33. package/dist/api/routes/admin/orders/cancel-fulfillment.d.ts +5 -0
  34. package/dist/api/routes/admin/orders/cancel-fulfillment.js +46 -2
  35. package/dist/api/routes/admin/orders/cancel-fulfillment.js.map +1 -1
  36. package/dist/api/routes/admin/orders/create-fulfillment.d.ts +1 -0
  37. package/dist/api/routes/admin/orders/create-fulfillment.js +87 -5
  38. package/dist/api/routes/admin/orders/create-fulfillment.js.map +1 -1
  39. package/dist/api/routes/admin/orders/index.js +3 -7
  40. package/dist/api/routes/admin/orders/index.js.map +1 -1
  41. package/dist/api/routes/admin/payment-collections/delete-payment-collection.d.ts +1 -1
  42. package/dist/api/routes/admin/payment-collections/delete-payment-collection.js +1 -1
  43. package/dist/api/routes/admin/payment-collections/get-payment-collection.d.ts +1 -1
  44. package/dist/api/routes/admin/payment-collections/get-payment-collection.js +1 -1
  45. package/dist/api/routes/admin/payment-collections/mark-authorized-payment-collection.d.ts +1 -1
  46. package/dist/api/routes/admin/payment-collections/mark-authorized-payment-collection.js +1 -1
  47. package/dist/api/routes/admin/payment-collections/update-payment-collection.d.ts +1 -1
  48. package/dist/api/routes/admin/payment-collections/update-payment-collection.js +1 -1
  49. package/dist/api/routes/admin/price-lists/list-price-list-products.d.ts +2 -2
  50. package/dist/api/routes/admin/price-lists/list-price-list-products.js +1 -1
  51. package/dist/api/routes/admin/product-categories/delete-product-category.d.ts +64 -0
  52. package/dist/api/routes/admin/product-categories/delete-product-category.js +129 -0
  53. package/dist/api/routes/admin/product-categories/delete-product-category.js.map +1 -0
  54. package/dist/api/routes/admin/product-categories/get-product-category.d.ts +58 -0
  55. package/dist/api/routes/admin/product-categories/get-product-category.js +134 -0
  56. package/dist/api/routes/admin/product-categories/get-product-category.js.map +1 -0
  57. package/dist/api/routes/admin/product-categories/index.d.ts +7 -0
  58. package/dist/api/routes/admin/product-categories/index.js +68 -0
  59. package/dist/api/routes/admin/product-categories/index.js.map +1 -0
  60. package/dist/api/routes/admin/product-categories/list-product-categories.d.ts +78 -0
  61. package/dist/api/routes/admin/product-categories/list-product-categories.js +206 -0
  62. package/dist/api/routes/admin/product-categories/list-product-categories.js.map +1 -0
  63. package/dist/api/routes/admin/publishable-api-keys/add-channels-batch.d.ts +1 -1
  64. package/dist/api/routes/admin/publishable-api-keys/add-channels-batch.js +1 -1
  65. package/dist/api/routes/admin/publishable-api-keys/create-publishable-api-key.d.ts +1 -1
  66. package/dist/api/routes/admin/publishable-api-keys/create-publishable-api-key.js +1 -1
  67. package/dist/api/routes/admin/publishable-api-keys/delete-channels-batch.d.ts +1 -1
  68. package/dist/api/routes/admin/publishable-api-keys/delete-channels-batch.js +1 -1
  69. package/dist/api/routes/admin/publishable-api-keys/delete-publishable-api-key.d.ts +1 -1
  70. package/dist/api/routes/admin/publishable-api-keys/delete-publishable-api-key.js +1 -1
  71. package/dist/api/routes/admin/publishable-api-keys/get-publishable-api-key.d.ts +1 -1
  72. package/dist/api/routes/admin/publishable-api-keys/get-publishable-api-key.js +1 -1
  73. package/dist/api/routes/admin/publishable-api-keys/list-publishable-api-key-sales-channels.d.ts +2 -2
  74. package/dist/api/routes/admin/publishable-api-keys/list-publishable-api-key-sales-channels.js +1 -1
  75. package/dist/api/routes/admin/publishable-api-keys/list-publishable-api-keys.d.ts +1 -1
  76. package/dist/api/routes/admin/publishable-api-keys/revoke-publishable-api-key.d.ts +1 -1
  77. package/dist/api/routes/admin/publishable-api-keys/revoke-publishable-api-key.js +1 -1
  78. package/dist/api/routes/admin/publishable-api-keys/update-publishable-api-key.d.ts +1 -1
  79. package/dist/api/routes/admin/publishable-api-keys/update-publishable-api-key.js +1 -1
  80. package/dist/api/routes/admin/returns/cancel-return.js.map +1 -1
  81. package/dist/api/routes/admin/returns/receive-return.d.ts +1 -0
  82. package/dist/api/routes/admin/returns/receive-return.js +8 -1
  83. package/dist/api/routes/admin/returns/receive-return.js.map +1 -1
  84. package/dist/api/routes/admin/sales-channels/associate-stock-location.d.ts +79 -0
  85. package/dist/api/routes/admin/sales-channels/associate-stock-location.js +163 -0
  86. package/dist/api/routes/admin/sales-channels/associate-stock-location.js.map +1 -0
  87. package/dist/api/routes/admin/sales-channels/index.d.ts +2 -0
  88. package/dist/api/routes/admin/sales-channels/index.js +6 -0
  89. package/dist/api/routes/admin/sales-channels/index.js.map +1 -1
  90. package/dist/api/routes/admin/sales-channels/list-sales-channels.d.ts +1 -1
  91. package/dist/api/routes/admin/sales-channels/remove-stock-location.d.ts +88 -0
  92. package/dist/api/routes/admin/sales-channels/remove-stock-location.js +174 -0
  93. package/dist/api/routes/admin/sales-channels/remove-stock-location.js.map +1 -0
  94. package/dist/api/routes/admin/stock-locations/create-stock-location.d.ts +105 -0
  95. package/dist/api/routes/admin/stock-locations/create-stock-location.js +240 -0
  96. package/dist/api/routes/admin/stock-locations/create-stock-location.js.map +1 -0
  97. package/dist/api/routes/admin/stock-locations/get-stock-location.d.ts +48 -0
  98. package/dist/api/routes/admin/stock-locations/get-stock-location.js +121 -0
  99. package/dist/api/routes/admin/stock-locations/get-stock-location.js.map +1 -0
  100. package/dist/api/routes/admin/stock-locations/index.d.ts +18 -0
  101. package/dist/api/routes/admin/stock-locations/index.js +78 -0
  102. package/dist/api/routes/admin/stock-locations/index.js.map +1 -0
  103. package/dist/api/routes/admin/stock-locations/list-stock-locations.d.ts +144 -0
  104. package/dist/api/routes/admin/stock-locations/list-stock-locations.js +265 -0
  105. package/dist/api/routes/admin/stock-locations/list-stock-locations.js.map +1 -0
  106. package/dist/api/routes/admin/stock-locations/update-stock-location.d.ts +103 -0
  107. package/dist/api/routes/admin/stock-locations/update-stock-location.js +240 -0
  108. package/dist/api/routes/admin/stock-locations/update-stock-location.js.map +1 -0
  109. package/dist/api/routes/admin/uploads/create-protected-upload.d.ts +2 -2
  110. package/dist/api/routes/admin/uploads/create-protected-upload.js +2 -2
  111. package/dist/api/routes/admin/uploads/delete-upload.d.ts +1 -1
  112. package/dist/api/routes/admin/uploads/delete-upload.js +1 -1
  113. package/dist/api/routes/admin/uploads/get-download-url.d.ts +1 -1
  114. package/dist/api/routes/admin/uploads/get-download-url.js +1 -1
  115. package/dist/api/routes/store/order-edits/complete-order-edit.js +35 -34
  116. package/dist/api/routes/store/order-edits/complete-order-edit.js.map +1 -1
  117. package/dist/api/routes/store/orders/confirm-order-request.d.ts +2 -2
  118. package/dist/api/routes/store/orders/confirm-order-request.js +2 -2
  119. package/dist/api/routes/store/orders/request-order.d.ts +1 -1
  120. package/dist/api/routes/store/orders/request-order.js +1 -1
  121. package/dist/api/routes/store/payment-collections/authorize-batch-payment-sessions.d.ts +2 -2
  122. package/dist/api/routes/store/payment-collections/authorize-batch-payment-sessions.js +2 -2
  123. package/dist/api/routes/store/payment-collections/authorize-payment-session.d.ts +2 -2
  124. package/dist/api/routes/store/payment-collections/authorize-payment-session.js +2 -2
  125. package/dist/api/routes/store/payment-collections/get-payment-collection.d.ts +2 -2
  126. package/dist/api/routes/store/payment-collections/get-payment-collection.js +2 -2
  127. package/dist/api/routes/store/payment-collections/manage-batch-payment-sessions.d.ts +2 -2
  128. package/dist/api/routes/store/payment-collections/manage-batch-payment-sessions.js +2 -2
  129. package/dist/api/routes/store/payment-collections/manage-payment-session.d.ts +2 -2
  130. package/dist/api/routes/store/payment-collections/manage-payment-session.js +2 -2
  131. package/dist/api/routes/store/payment-collections/refresh-payment-session.d.ts +1 -1
  132. package/dist/api/routes/store/payment-collections/refresh-payment-session.js +1 -1
  133. package/dist/commands/develop.js +24 -0
  134. package/dist/commands/develop.js.map +1 -1
  135. package/dist/index.d.ts +6 -2
  136. package/dist/index.js +6 -2
  137. package/dist/index.js.map +1 -1
  138. package/dist/interfaces/payment-processor.d.ts +102 -0
  139. package/dist/interfaces/payment-processor.js +31 -0
  140. package/dist/interfaces/payment-processor.js.map +1 -0
  141. package/dist/interfaces/payment-service.d.ts +92 -1
  142. package/dist/interfaces/payment-service.js +10 -0
  143. package/dist/interfaces/payment-service.js.map +1 -1
  144. package/dist/interfaces/services/event-bus.d.ts +3 -0
  145. package/dist/interfaces/services/event-bus.js +3 -0
  146. package/dist/interfaces/services/event-bus.js.map +1 -0
  147. package/dist/interfaces/services/index.d.ts +3 -0
  148. package/dist/interfaces/services/index.js +3 -0
  149. package/dist/interfaces/services/index.js.map +1 -1
  150. package/dist/interfaces/services/inventory.d.ts +24 -0
  151. package/dist/interfaces/services/inventory.js +3 -0
  152. package/dist/interfaces/services/inventory.js.map +1 -0
  153. package/dist/interfaces/services/stock-location.d.ts +9 -0
  154. package/dist/interfaces/services/stock-location.js +3 -0
  155. package/dist/interfaces/services/stock-location.js.map +1 -0
  156. package/dist/loaders/feature-flags/product-categories.d.ts +3 -0
  157. package/dist/loaders/feature-flags/product-categories.js +10 -0
  158. package/dist/loaders/feature-flags/product-categories.js.map +1 -0
  159. package/dist/loaders/feature-flags/publishable-api-keys.js +1 -1
  160. package/dist/loaders/feature-flags/publishable-api-keys.js.map +1 -1
  161. package/dist/loaders/feature-flags/sales-channels.js +1 -1
  162. package/dist/loaders/feature-flags/sales-channels.js.map +1 -1
  163. package/dist/loaders/plugins.d.ts +1 -0
  164. package/dist/loaders/plugins.js +3 -1
  165. package/dist/loaders/plugins.js.map +1 -1
  166. package/dist/migrations/1671711415179-multi_location.d.ts +6 -0
  167. package/dist/migrations/1671711415179-multi_location.js +119 -0
  168. package/dist/migrations/1671711415179-multi_location.js.map +1 -0
  169. package/dist/migrations/1672906846559-product-category.d.ts +6 -0
  170. package/dist/migrations/1672906846559-product-category.js +83 -0
  171. package/dist/migrations/1672906846559-product-category.js.map +1 -0
  172. package/dist/migrations/1672906846560-payment-session-is-initiated.d.ts +6 -0
  173. package/dist/migrations/1672906846560-payment-session-is-initiated.js +81 -0
  174. package/dist/migrations/1672906846560-payment-session-is-initiated.js.map +1 -0
  175. package/dist/migrations/1673003729870-staged_job_options.d.ts +6 -0
  176. package/dist/migrations/1673003729870-staged_job_options.js +71 -0
  177. package/dist/migrations/1673003729870-staged_job_options.js.map +1 -0
  178. package/dist/models/fulfillment.d.ts +5 -0
  179. package/dist/models/fulfillment.js +8 -0
  180. package/dist/models/fulfillment.js.map +1 -1
  181. package/dist/models/index.d.ts +4 -0
  182. package/dist/models/index.js +4 -0
  183. package/dist/models/index.js.map +1 -1
  184. package/dist/models/line-item.d.ts +6 -6
  185. package/dist/models/line-item.js +9 -9
  186. package/dist/models/line-item.js.map +1 -1
  187. package/dist/models/payment-session.d.ts +6 -0
  188. package/dist/models/payment-session.js +9 -0
  189. package/dist/models/payment-session.js.map +1 -1
  190. package/dist/models/product-category.d.ts +67 -0
  191. package/dist/models/product-category.js +144 -0
  192. package/dist/models/product-category.js.map +1 -0
  193. package/dist/models/product-variant-inventory-item.d.ts +7 -0
  194. package/dist/models/product-variant-inventory-item.js +66 -0
  195. package/dist/models/product-variant-inventory-item.js.map +1 -0
  196. package/dist/models/return.d.ts +7 -6
  197. package/dist/models/return.js +14 -9
  198. package/dist/models/return.js.map +1 -1
  199. package/dist/models/sales-channel-location.d.ts +6 -0
  200. package/dist/models/sales-channel-location.js +62 -0
  201. package/dist/models/sales-channel-location.js.map +1 -0
  202. package/dist/models/staged-job.d.ts +1 -0
  203. package/dist/models/staged-job.js +4 -0
  204. package/dist/models/staged-job.js.map +1 -1
  205. package/dist/models/store.d.ts +6 -5
  206. package/dist/models/store.js +11 -7
  207. package/dist/models/store.js.map +1 -1
  208. package/dist/repositories/customer-group.js +18 -2
  209. package/dist/repositories/customer-group.js.map +1 -1
  210. package/dist/repositories/product-category.d.ts +6 -0
  211. package/dist/repositories/product-category.js +125 -0
  212. package/dist/repositories/product-category.js.map +1 -0
  213. package/dist/repositories/product-variant.js +30 -5
  214. package/dist/repositories/product-variant.js.map +1 -1
  215. package/dist/repositories/product.js +7 -2
  216. package/dist/repositories/product.js.map +1 -1
  217. package/dist/scripts/migrate-inventory-items.d.ts +1 -0
  218. package/dist/scripts/migrate-inventory-items.js +197 -0
  219. package/dist/scripts/migrate-inventory-items.js.map +1 -0
  220. package/dist/services/cache.js +2 -5
  221. package/dist/services/cache.js.map +1 -1
  222. package/dist/services/cart.d.ts +9 -26
  223. package/dist/services/cart.js +276 -182
  224. package/dist/services/cart.js.map +1 -1
  225. package/dist/services/claim-item.js +3 -0
  226. package/dist/services/claim-item.js.map +1 -1
  227. package/dist/services/claim.d.ts +4 -4
  228. package/dist/services/claim.js +132 -166
  229. package/dist/services/claim.js.map +1 -1
  230. package/dist/services/event-bus.d.ts +23 -10
  231. package/dist/services/event-bus.js +106 -42
  232. package/dist/services/event-bus.js.map +1 -1
  233. package/dist/services/fulfillment.d.ts +7 -3
  234. package/dist/services/fulfillment.js +79 -90
  235. package/dist/services/fulfillment.js.map +1 -1
  236. package/dist/services/index.d.ts +4 -1
  237. package/dist/services/index.js +10 -4
  238. package/dist/services/index.js.map +1 -1
  239. package/dist/services/line-item.d.ts +5 -5
  240. package/dist/services/line-item.js +2 -1
  241. package/dist/services/line-item.js.map +1 -1
  242. package/dist/services/order.d.ts +5 -19
  243. package/dist/services/order.js +146 -181
  244. package/dist/services/order.js.map +1 -1
  245. package/dist/services/payment-collection.d.ts +2 -2
  246. package/dist/services/payment-collection.js +88 -128
  247. package/dist/services/payment-collection.js.map +1 -1
  248. package/dist/services/payment-provider.d.ts +2 -1
  249. package/dist/services/payment-provider.js +32 -27
  250. package/dist/services/payment-provider.js.map +1 -1
  251. package/dist/services/product-category.d.ts +41 -0
  252. package/dist/services/product-category.js +190 -0
  253. package/dist/services/product-category.js.map +1 -0
  254. package/dist/services/product-variant-inventory.d.ts +115 -0
  255. package/dist/services/product-variant-inventory.js +747 -0
  256. package/dist/services/product-variant-inventory.js.map +1 -0
  257. package/dist/services/return.d.ts +7 -12
  258. package/dist/services/return.js +12 -9
  259. package/dist/services/return.js.map +1 -1
  260. package/dist/services/sales-channel-inventory.d.ts +24 -0
  261. package/dist/services/sales-channel-inventory.js +70 -0
  262. package/dist/services/sales-channel-inventory.js.map +1 -0
  263. package/dist/services/sales-channel-location.d.ts +41 -0
  264. package/dist/services/sales-channel-location.js +159 -0
  265. package/dist/services/sales-channel-location.js.map +1 -0
  266. package/dist/services/swap.d.ts +4 -4
  267. package/dist/services/swap.js +78 -127
  268. package/dist/services/swap.js.map +1 -1
  269. package/dist/services/totals.d.ts +2 -2
  270. package/dist/services/totals.js +2 -2
  271. package/dist/services/totals.js.map +1 -1
  272. package/dist/strategies/batch-jobs/product/import.d.ts +1 -1
  273. package/dist/strategies/batch-jobs/product/import.js +4 -3
  274. package/dist/strategies/batch-jobs/product/import.js.map +1 -1
  275. package/dist/strategies/cart-completion.d.ts +14 -9
  276. package/dist/strategies/cart-completion.js +111 -48
  277. package/dist/strategies/cart-completion.js.map +1 -1
  278. package/dist/subscribers/cart.d.ts +2 -4
  279. package/dist/subscribers/cart.js +8 -21
  280. package/dist/subscribers/cart.js.map +1 -1
  281. package/dist/subscribers/product.d.ts +1 -5
  282. package/dist/subscribers/product.js +15 -5
  283. package/dist/subscribers/product.js.map +1 -1
  284. package/dist/types/inventory.d.ts +106 -0
  285. package/dist/types/inventory.js +3 -0
  286. package/dist/types/inventory.js.map +1 -0
  287. package/dist/types/payment.d.ts +1 -0
  288. package/dist/types/product.d.ts +1 -0
  289. package/dist/types/product.js.map +1 -1
  290. package/dist/types/stock-location.d.ts +245 -0
  291. package/dist/types/stock-location.js +3 -0
  292. package/dist/types/stock-location.js.map +1 -0
  293. package/dist/utils/index.d.ts +1 -0
  294. package/dist/utils/index.js +1 -0
  295. package/dist/utils/index.js.map +1 -1
  296. package/dist/utils/repository.d.ts +4 -3
  297. package/dist/utils/repository.js +43 -23
  298. package/dist/utils/repository.js.map +1 -1
  299. package/package.json +2 -2
  300. package/dist/services/inventory.d.ts +0 -31
  301. package/dist/services/inventory.js +0 -151
  302. package/dist/services/inventory.js.map +0 -1
@@ -14,9 +14,26 @@ declare type InjectedDependencies = {
14
14
  redisSubscriber: Redis.Redis;
15
15
  };
16
16
  declare type Subscriber<T = unknown> = (data: T, eventName: string) => Promise<void>;
17
+ declare type SubscriberContext = {
18
+ subscriberId: string;
19
+ };
20
+ declare type BullJob<T> = {
21
+ update: (data: unknown) => void;
22
+ attemptsMade: number;
23
+ opts: EmitOptions;
24
+ data: {
25
+ eventName: string;
26
+ data: T;
27
+ completedSubscriberIds: string[] | undefined;
28
+ };
29
+ };
30
+ declare type SubscriberDescriptor = {
31
+ id: string;
32
+ subscriber: Subscriber;
33
+ };
17
34
  declare type EmitOptions = {
18
35
  delay?: number;
19
- attempts?: number;
36
+ attempts: number;
20
37
  backoff?: {
21
38
  type: "fixed" | "exponential";
22
39
  delay: number;
@@ -32,7 +49,7 @@ export default class EventBusService {
32
49
  protected readonly logger_: Logger;
33
50
  protected readonly stagedJobRepository_: typeof StagedJobRepository;
34
51
  protected readonly jobSchedulerService_: JobSchedulerService;
35
- protected readonly observers_: Map<string | symbol, Subscriber[]>;
52
+ protected readonly eventToSubscribersMap_: Map<string | symbol, SubscriberDescriptor[]>;
36
53
  protected readonly redisClient_: Redis.Redis;
37
54
  protected readonly redisSubscriber_: Redis.Redis;
38
55
  protected queue_: Bull;
@@ -45,10 +62,11 @@ export default class EventBusService {
45
62
  * Adds a function to a list of event subscribers.
46
63
  * @param event - the event that the subscriber will listen for.
47
64
  * @param subscriber - the function to be called when a certain event
65
+ * @param context - context to use when attaching subscriber
48
66
  * happens. Subscribers must return a Promise.
49
67
  * @return this
50
68
  */
51
- subscribe(event: string | symbol, subscriber: Subscriber): this;
69
+ subscribe(event: string | symbol, subscriber: Subscriber, context?: SubscriberContext): this;
52
70
  /**
53
71
  * Adds a function to a list of event subscribers.
54
72
  * @param event - the event that the subscriber will listen for.
@@ -64,7 +82,7 @@ export default class EventBusService {
64
82
  * @param options - options to add the job with
65
83
  * @return the job from our queue
66
84
  */
67
- emit<T>(eventName: string, data: T, options?: EmitOptions): Promise<StagedJob | void>;
85
+ emit<T>(eventName: string, data: T, options?: Record<string, unknown> & EmitOptions): Promise<StagedJob | void>;
68
86
  startEnqueuer(): void;
69
87
  stopEnqueuer(): Promise<void>;
70
88
  enqueuer_(): Promise<void>;
@@ -73,12 +91,7 @@ export default class EventBusService {
73
91
  * @param job The job object
74
92
  * @return resolves to the results of the subscriber calls.
75
93
  */
76
- worker_: <T>(job: {
77
- data: {
78
- eventName: string;
79
- data: T;
80
- };
81
- }) => Promise<unknown[]>;
94
+ worker_: <T>(job: BullJob<T>) => Promise<unknown>;
82
95
  /**
83
96
  * Registers a cron job.
84
97
  * @deprecated All cron job logic has been refactored to the `JobSchedulerService`. This method will be removed in a future release.
@@ -66,6 +66,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
66
66
  Object.defineProperty(exports, "__esModule", { value: true });
67
67
  var bull_1 = __importDefault(require("bull"));
68
68
  var ioredis_1 = __importDefault(require("ioredis"));
69
+ var medusa_core_utils_1 = require("medusa-core-utils");
70
+ var ulid_1 = require("ulid");
69
71
  var sleep_1 = require("../utils/sleep");
70
72
  /**
71
73
  * Can keep track of multiple subscribers to different events and run the
@@ -82,27 +84,72 @@ var EventBusService = /** @class */ (function () {
82
84
  * @return resolves to the results of the subscriber calls.
83
85
  */
84
86
  this.worker_ = function (job) { return __awaiter(_this, void 0, void 0, function () {
85
- var _a, eventName, data, eventObservers, wildcardObservers, observers;
87
+ var _a, eventName, data, eventSubscribers, wildcardSubscribers, allSubscribers, completedSubscribers, subscribersInCurrentAttempt, isRetry, currentAttempt, isFinalAttempt, completedSubscribersInCurrentAttempt, subscribersResult, didSubscribersFail, isRetriesConfigured, shouldRetry, updatedCompletedSubscribers, errorMessage;
86
88
  var _this = this;
87
- return __generator(this, function (_b) {
88
- switch (_b.label) {
89
+ var _b, _c;
90
+ return __generator(this, function (_d) {
91
+ switch (_d.label) {
89
92
  case 0:
90
93
  _a = job.data, eventName = _a.eventName, data = _a.data;
91
- eventObservers = this.observers_.get(eventName) || [];
92
- wildcardObservers = this.observers_.get("*") || [];
93
- observers = eventObservers.concat(wildcardObservers);
94
- this.logger_.info("Processing ".concat(eventName, " which has ").concat(eventObservers.length, " subscribers"));
95
- return [4 /*yield*/, Promise.all(observers.map(function (subscriber) { return __awaiter(_this, void 0, void 0, function () {
96
- var _this = this;
97
- return __generator(this, function (_a) {
98
- return [2 /*return*/, subscriber(data, eventName).catch(function (err) {
99
- _this.logger_.warn("An error occurred while processing ".concat(eventName, ": ").concat(err));
100
- console.error(err);
101
- return err;
102
- })];
94
+ eventSubscribers = this.eventToSubscribersMap_.get(eventName) || [];
95
+ wildcardSubscribers = this.eventToSubscribersMap_.get("*") || [];
96
+ allSubscribers = eventSubscribers.concat(wildcardSubscribers);
97
+ completedSubscribers = job.data.completedSubscriberIds || [];
98
+ subscribersInCurrentAttempt = allSubscribers.filter(function (subscriber) {
99
+ return subscriber.id && !completedSubscribers.includes(subscriber.id);
100
+ });
101
+ isRetry = job.attemptsMade > 0;
102
+ currentAttempt = job.attemptsMade + 1;
103
+ isFinalAttempt = ((_b = job === null || job === void 0 ? void 0 : job.opts) === null || _b === void 0 ? void 0 : _b.attempts) === currentAttempt;
104
+ if (isRetry) {
105
+ if (isFinalAttempt) {
106
+ this.logger_.info("Final retry attempt for ".concat(eventName));
107
+ }
108
+ this.logger_.info("Retrying ".concat(eventName, " which has ").concat(eventSubscribers.length, " subscribers (").concat(subscribersInCurrentAttempt.length, " of them failed)"));
109
+ }
110
+ else {
111
+ this.logger_.info("Processing ".concat(eventName, " which has ").concat(eventSubscribers.length, " subscribers"));
112
+ }
113
+ completedSubscribersInCurrentAttempt = [];
114
+ return [4 /*yield*/, Promise.all(subscribersInCurrentAttempt.map(function (_a) {
115
+ var id = _a.id, subscriber = _a.subscriber;
116
+ return __awaiter(_this, void 0, void 0, function () {
117
+ var _this = this;
118
+ return __generator(this, function (_b) {
119
+ return [2 /*return*/, subscriber(data, eventName)
120
+ .then(function (data) {
121
+ // For every subscriber that completes successfully, add their id to the list of completed subscribers
122
+ completedSubscribersInCurrentAttempt.push(id);
123
+ return data;
124
+ })
125
+ .catch(function (err) {
126
+ _this.logger_.warn("An error occurred while processing ".concat(eventName, ": ").concat(err));
127
+ return err;
128
+ })];
129
+ });
103
130
  });
104
- }); }))];
105
- case 1: return [2 /*return*/, _b.sent()];
131
+ }))
132
+ // If the number of completed subscribers is different from the number of subcribers to process in current attempt, some of them failed
133
+ ];
134
+ case 1:
135
+ subscribersResult = _d.sent();
136
+ didSubscribersFail = completedSubscribersInCurrentAttempt.length !==
137
+ subscribersInCurrentAttempt.length;
138
+ isRetriesConfigured = ((_c = job === null || job === void 0 ? void 0 : job.opts) === null || _c === void 0 ? void 0 : _c.attempts) > 1;
139
+ shouldRetry = didSubscribersFail && isRetriesConfigured && !isFinalAttempt;
140
+ if (shouldRetry) {
141
+ updatedCompletedSubscribers = __spreadArray(__spreadArray([], __read(completedSubscribers), false), __read(completedSubscribersInCurrentAttempt), false);
142
+ job.data.completedSubscriberIds = updatedCompletedSubscribers;
143
+ job.update(job.data);
144
+ errorMessage = "One or more subscribers of ".concat(eventName, " failed. Retrying...");
145
+ this.logger_.warn(errorMessage);
146
+ return [2 /*return*/, Promise.reject(Error(errorMessage))];
147
+ }
148
+ if (didSubscribersFail && !isFinalAttempt) {
149
+ // If retrying is not configured, we log a warning to allow server admins to recover manually
150
+ this.logger_.warn("One or more subscribers of ".concat(eventName, " failed. Retrying is not configured. Use 'attempts' option when emitting events."));
151
+ }
152
+ return [2 /*return*/, Promise.resolve(subscribersResult)];
106
153
  }
107
154
  });
108
155
  }); };
@@ -127,7 +174,7 @@ var EventBusService = /** @class */ (function () {
127
174
  }
128
175
  },
129
176
  };
130
- this.observers_ = new Map();
177
+ this.eventToSubscribersMap_ = new Map();
131
178
  this.queue_ = new bull_1.default("".concat(this.constructor.name, ":queue"), opts);
132
179
  this.redisClient_ = redisClient;
133
180
  this.redisSubscriber_ = redisSubscriber;
@@ -158,16 +205,29 @@ var EventBusService = /** @class */ (function () {
158
205
  * Adds a function to a list of event subscribers.
159
206
  * @param event - the event that the subscriber will listen for.
160
207
  * @param subscriber - the function to be called when a certain event
208
+ * @param context - context to use when attaching subscriber
161
209
  * happens. Subscribers must return a Promise.
162
210
  * @return this
163
211
  */
164
- EventBusService.prototype.subscribe = function (event, subscriber) {
165
- var _a;
212
+ EventBusService.prototype.subscribe = function (event, subscriber, context) {
213
+ var _a, _b;
166
214
  if (typeof subscriber !== "function") {
167
215
  throw new Error("Subscriber must be a function");
168
216
  }
169
- var observers = (_a = this.observers_.get(event)) !== null && _a !== void 0 ? _a : [];
170
- this.observers_.set(event, __spreadArray(__spreadArray([], __read(observers), false), [subscriber], false));
217
+ /**
218
+ * If context is provided, we use the subscriberId from it
219
+ * otherwise we generate a random using a ulid
220
+ */
221
+ var subscriberId = (_a = context === null || context === void 0 ? void 0 : context.subscriberId) !== null && _a !== void 0 ? _a : "".concat(event.toString(), "-").concat((0, ulid_1.ulid)());
222
+ var newSubscriberDescriptor = { subscriber: subscriber, id: subscriberId };
223
+ var existingSubscribers = (_b = this.eventToSubscribersMap_.get(event)) !== null && _b !== void 0 ? _b : [];
224
+ var subscriberAlreadyExists = existingSubscribers.find(function (sub) { return sub.id === subscriberId; });
225
+ if (subscriberAlreadyExists) {
226
+ throw Error("Subscriber with id ".concat(subscriberId, " already exists"));
227
+ }
228
+ this.eventToSubscribersMap_.set(event, __spreadArray(__spreadArray([], __read(existingSubscribers), false), [
229
+ newSubscriberDescriptor,
230
+ ], false));
171
231
  return this;
172
232
  };
173
233
  /**
@@ -178,14 +238,15 @@ var EventBusService = /** @class */ (function () {
178
238
  * @return this
179
239
  */
180
240
  EventBusService.prototype.unsubscribe = function (event, subscriber) {
181
- var _a, _b, _c;
241
+ var _a;
182
242
  if (typeof subscriber !== "function") {
183
243
  throw new Error("Subscriber must be a function");
184
244
  }
185
- if ((_a = this.observers_.get(event)) === null || _a === void 0 ? void 0 : _a.length) {
186
- var index = (_b = this.observers_.get(event)) === null || _b === void 0 ? void 0 : _b.indexOf(subscriber);
187
- if (index !== -1) {
188
- (_c = this.observers_.get(event)) === null || _c === void 0 ? void 0 : _c.splice(index, 1);
245
+ var existingSubscribers = this.eventToSubscribersMap_.get(event);
246
+ if (existingSubscribers === null || existingSubscribers === void 0 ? void 0 : existingSubscribers.length) {
247
+ var subIndex = existingSubscribers === null || existingSubscribers === void 0 ? void 0 : existingSubscribers.findIndex(function (sub) { return sub.subscriber === subscriber; });
248
+ if (subIndex !== -1) {
249
+ (_a = this.eventToSubscribersMap_.get(event)) === null || _a === void 0 ? void 0 : _a.splice(subIndex, 1);
189
250
  }
190
251
  }
191
252
  return this;
@@ -198,36 +259,38 @@ var EventBusService = /** @class */ (function () {
198
259
  * @return the job from our queue
199
260
  */
200
261
  EventBusService.prototype.emit = function (eventName, data, options) {
201
- if (options === void 0) { options = {}; }
262
+ if (options === void 0) { options = { attempts: 1 }; }
202
263
  return __awaiter(this, void 0, void 0, function () {
203
- var stagedJobRepository, stagedJobInstance, opts;
264
+ var opts, stagedJobRepository, jobToCreate, stagedJobInstance;
204
265
  return __generator(this, function (_a) {
205
266
  switch (_a.label) {
206
267
  case 0:
207
- if (!this.transactionManager_) return [3 /*break*/, 2];
208
- stagedJobRepository = this.transactionManager_.getCustomRepository(this.stagedJobRepository_);
209
- stagedJobInstance = stagedJobRepository.create({
210
- event_name: eventName,
211
- data: data,
212
- });
213
- return [4 /*yield*/, stagedJobRepository.save(stagedJobInstance)];
214
- case 1: return [2 /*return*/, _a.sent()];
215
- case 2:
216
268
  opts = {
217
269
  removeOnComplete: true,
270
+ attempts: 1,
218
271
  };
219
272
  if (typeof options.attempts === "number") {
220
273
  opts.attempts = options.attempts;
221
- if (typeof options.backoff !== "undefined") {
274
+ if ((0, medusa_core_utils_1.isDefined)(options.backoff)) {
222
275
  opts.backoff = options.backoff;
223
276
  }
224
277
  }
225
278
  if (typeof options.delay === "number") {
226
279
  opts.delay = options.delay;
227
280
  }
281
+ if (!this.transactionManager_) return [3 /*break*/, 2];
282
+ stagedJobRepository = this.transactionManager_.getCustomRepository(this.stagedJobRepository_);
283
+ jobToCreate = {
284
+ event_name: eventName,
285
+ data: data,
286
+ options: opts,
287
+ };
288
+ stagedJobInstance = stagedJobRepository.create(jobToCreate);
289
+ return [4 /*yield*/, stagedJobRepository.save(stagedJobInstance)];
290
+ case 1: return [2 /*return*/, _a.sent()];
291
+ case 2:
228
292
  this.queue_.add({ eventName: eventName, data: data }, opts);
229
- _a.label = 3;
230
- case 3: return [2 /*return*/];
293
+ return [2 /*return*/];
231
294
  }
232
295
  });
233
296
  });
@@ -272,8 +335,9 @@ var EventBusService = /** @class */ (function () {
272
335
  case 1:
273
336
  jobs = _b.sent();
274
337
  return [4 /*yield*/, Promise.all(jobs.map(function (job) {
338
+ var _a;
275
339
  _this.queue_
276
- .add({ eventName: job.event_name, data: job.data }, { removeOnComplete: true })
340
+ .add({ eventName: job.event_name, data: job.data }, (_a = job.options) !== null && _a !== void 0 ? _a : { removeOnComplete: true })
277
341
  .then(function () { return __awaiter(_this, void 0, void 0, function () {
278
342
  return __generator(this, function (_a) {
279
343
  switch (_a.label) {
@@ -1 +1 @@
1
- {"version":3,"file":"event-bus.js","sourceRoot":"","sources":["../../src/services/event-bus.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"event-bus.js","sourceRoot":"","sources":["../../src/services/event-bus.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { EntityManager } from "typeorm";
2
- import { ShippingProfileService } from ".";
2
+ import { ProductVariantInventoryService, ShippingProfileService } from ".";
3
3
  import { TransactionBaseService } from "../interfaces";
4
4
  import { Fulfillment, LineItem, ShippingMethod } from "../models";
5
5
  import { FulfillmentRepository } from "../repositories/fulfillment";
@@ -19,6 +19,7 @@ declare type InjectedDependencies = {
19
19
  fulfillmentRepository: typeof FulfillmentRepository;
20
20
  trackingLinkRepository: typeof TrackingLinkRepository;
21
21
  lineItemRepository: typeof LineItemRepository;
22
+ productVariantInventoryService: ProductVariantInventoryService;
22
23
  };
23
24
  /**
24
25
  * Handles Fulfillments
@@ -33,7 +34,8 @@ declare class FulfillmentService extends TransactionBaseService {
33
34
  protected readonly fulfillmentRepository_: typeof FulfillmentRepository;
34
35
  protected readonly trackingLinkRepository_: typeof TrackingLinkRepository;
35
36
  protected readonly lineItemRepository_: typeof LineItemRepository;
36
- constructor({ manager, totalsService, fulfillmentRepository, trackingLinkRepository, shippingProfileService, lineItemService, fulfillmentProviderService, lineItemRepository, }: InjectedDependencies);
37
+ protected readonly productVariantInventoryService_: ProductVariantInventoryService;
38
+ constructor({ manager, totalsService, fulfillmentRepository, trackingLinkRepository, shippingProfileService, lineItemService, fulfillmentProviderService, lineItemRepository, productVariantInventoryService, }: InjectedDependencies);
37
39
  partitionItems_(shippingMethods: ShippingMethod[], items: LineItem[]): FulfillmentItemPartition[];
38
40
  /**
39
41
  * Retrieves the order line items, given an array of items.
@@ -75,7 +77,9 @@ declare class FulfillmentService extends TransactionBaseService {
75
77
  * @param custom - potential custom values to add
76
78
  * @return the created fulfillments
77
79
  */
78
- createFulfillment(order: CreateFulfillmentOrder, itemsToFulfill: FulFillmentItemType[], custom?: Partial<Fulfillment>): Promise<Fulfillment[]>;
80
+ createFulfillment(order: CreateFulfillmentOrder, itemsToFulfill: FulFillmentItemType[], custom?: Partial<Fulfillment>, context?: {
81
+ locationId?: string;
82
+ }): Promise<Fulfillment[]>;
79
83
  /**
80
84
  * Cancels a fulfillment with the fulfillment provider. Will decrement the
81
85
  * fulfillment_quantity on the line items associated with the fulfillment.
@@ -82,7 +82,7 @@ var utils_1 = require("../utils");
82
82
  var FulfillmentService = /** @class */ (function (_super) {
83
83
  __extends(FulfillmentService, _super);
84
84
  function FulfillmentService(_a) {
85
- var manager = _a.manager, totalsService = _a.totalsService, fulfillmentRepository = _a.fulfillmentRepository, trackingLinkRepository = _a.trackingLinkRepository, shippingProfileService = _a.shippingProfileService, lineItemService = _a.lineItemService, fulfillmentProviderService = _a.fulfillmentProviderService, lineItemRepository = _a.lineItemRepository;
85
+ var manager = _a.manager, totalsService = _a.totalsService, fulfillmentRepository = _a.fulfillmentRepository, trackingLinkRepository = _a.trackingLinkRepository, shippingProfileService = _a.shippingProfileService, lineItemService = _a.lineItemService, fulfillmentProviderService = _a.fulfillmentProviderService, lineItemRepository = _a.lineItemRepository, productVariantInventoryService = _a.productVariantInventoryService;
86
86
  var _this =
87
87
  // eslint-disable-next-line prefer-rest-params
88
88
  _super.call(this, arguments[0]) || this;
@@ -94,11 +94,15 @@ var FulfillmentService = /** @class */ (function (_super) {
94
94
  _this.shippingProfileService_ = shippingProfileService;
95
95
  _this.lineItemService_ = lineItemService;
96
96
  _this.fulfillmentProviderService_ = fulfillmentProviderService;
97
+ _this.productVariantInventoryService_ = productVariantInventoryService;
97
98
  return _this;
98
99
  }
99
100
  FulfillmentService.prototype.partitionItems_ = function (shippingMethods, items) {
100
101
  var e_1, _a;
101
102
  var partitioned = [];
103
+ if (shippingMethods.length === 1) {
104
+ return [{ items: items, shipping_method: shippingMethods[0] }];
105
+ }
102
106
  var _loop_1 = function (method) {
103
107
  var temp = {
104
108
  shipping_method: method,
@@ -106,16 +110,11 @@ var FulfillmentService = /** @class */ (function (_super) {
106
110
  };
107
111
  // for each method find the items in the order, that are associated
108
112
  // with the profile on the current shipping method
109
- if (shippingMethods.length === 1) {
110
- temp.items = items;
111
- }
112
- else {
113
- var methodProfile_1 = method.shipping_option.profile_id;
114
- temp.items = items.filter(function (_a) {
115
- var variant = _a.variant;
116
- variant.product.profile_id === methodProfile_1;
117
- });
118
- }
113
+ var methodProfile = method.shipping_option.profile_id;
114
+ temp.items = items.filter(function (_a) {
115
+ var variant = _a.variant;
116
+ variant.product.profile_id === methodProfile;
117
+ });
119
118
  partitioned.push(temp);
120
119
  };
121
120
  try {
@@ -233,51 +232,55 @@ var FulfillmentService = /** @class */ (function (_super) {
233
232
  * @param custom - potential custom values to add
234
233
  * @return the created fulfillments
235
234
  */
236
- FulfillmentService.prototype.createFulfillment = function (order, itemsToFulfill, custom) {
235
+ FulfillmentService.prototype.createFulfillment = function (order, itemsToFulfill, custom, context) {
237
236
  if (custom === void 0) { custom = {}; }
237
+ if (context === void 0) { context = {}; }
238
238
  return __awaiter(this, void 0, void 0, function () {
239
+ var locationId;
239
240
  var _this = this;
240
241
  return __generator(this, function (_a) {
241
242
  switch (_a.label) {
242
- case 0: return [4 /*yield*/, this.atomicPhase_(function (manager) { return __awaiter(_this, void 0, void 0, function () {
243
- var fulfillmentRepository, lineItems, shipping_methods, fulfillments, created;
244
- var _this = this;
245
- return __generator(this, function (_a) {
246
- switch (_a.label) {
247
- case 0:
248
- fulfillmentRepository = manager.getCustomRepository(this.fulfillmentRepository_);
249
- return [4 /*yield*/, this.getFulfillmentItems_(order, itemsToFulfill)];
250
- case 1:
251
- lineItems = _a.sent();
252
- shipping_methods = order.shipping_methods;
253
- fulfillments = this.partitionItems_(shipping_methods, lineItems);
254
- return [4 /*yield*/, Promise.all(fulfillments.map(function (_a) {
255
- var shipping_method = _a.shipping_method, items = _a.items;
256
- return __awaiter(_this, void 0, void 0, function () {
257
- var ful, result, _b;
258
- return __generator(this, function (_c) {
259
- switch (_c.label) {
260
- case 0:
261
- ful = fulfillmentRepository.create(__assign(__assign({}, custom), { provider_id: shipping_method.shipping_option.provider_id, items: items.map(function (i) { return ({ item_id: i.id, quantity: i.quantity }); }), data: {} }));
262
- return [4 /*yield*/, fulfillmentRepository.save(ful)];
263
- case 1:
264
- result = _c.sent();
265
- _b = result;
266
- return [4 /*yield*/, this.fulfillmentProviderService_.createFulfillment(shipping_method, items, __assign({}, order), __assign({}, result))];
267
- case 2:
268
- _b.data =
269
- _c.sent();
270
- return [2 /*return*/, fulfillmentRepository.save(result)];
271
- }
243
+ case 0:
244
+ locationId = context.locationId;
245
+ return [4 /*yield*/, this.atomicPhase_(function (manager) { return __awaiter(_this, void 0, void 0, function () {
246
+ var fulfillmentRepository, lineItems, shipping_methods, fulfillments, created;
247
+ var _this = this;
248
+ return __generator(this, function (_a) {
249
+ switch (_a.label) {
250
+ case 0:
251
+ fulfillmentRepository = manager.getCustomRepository(this.fulfillmentRepository_);
252
+ return [4 /*yield*/, this.getFulfillmentItems_(order, itemsToFulfill)];
253
+ case 1:
254
+ lineItems = _a.sent();
255
+ shipping_methods = order.shipping_methods;
256
+ fulfillments = this.partitionItems_(shipping_methods, lineItems);
257
+ return [4 /*yield*/, Promise.all(fulfillments.map(function (_a) {
258
+ var shipping_method = _a.shipping_method, items = _a.items;
259
+ return __awaiter(_this, void 0, void 0, function () {
260
+ var ful, result, _b;
261
+ return __generator(this, function (_c) {
262
+ switch (_c.label) {
263
+ case 0:
264
+ ful = fulfillmentRepository.create(__assign(__assign({}, custom), { provider_id: shipping_method.shipping_option.provider_id, items: items.map(function (i) { return ({ item_id: i.id, quantity: i.quantity }); }), data: {}, location_id: locationId }));
265
+ return [4 /*yield*/, fulfillmentRepository.save(ful)];
266
+ case 1:
267
+ result = _c.sent();
268
+ _b = result;
269
+ return [4 /*yield*/, this.fulfillmentProviderService_.createFulfillment(shipping_method, items, __assign({}, order), __assign({}, result))];
270
+ case 2:
271
+ _b.data =
272
+ _c.sent();
273
+ return [2 /*return*/, fulfillmentRepository.save(result)];
274
+ }
275
+ });
272
276
  });
273
- });
274
- }))];
275
- case 2:
276
- created = _a.sent();
277
- return [2 /*return*/, created];
278
- }
279
- });
280
- }); })];
277
+ }))];
278
+ case 2:
279
+ created = _a.sent();
280
+ return [2 /*return*/, created];
281
+ }
282
+ });
283
+ }); })];
281
284
  case 1: return [2 /*return*/, _a.sent()];
282
285
  }
283
286
  });
@@ -297,10 +300,10 @@ var FulfillmentService = /** @class */ (function (_super) {
297
300
  return __generator(this, function (_a) {
298
301
  switch (_a.label) {
299
302
  case 0: return [4 /*yield*/, this.atomicPhase_(function (manager) { return __awaiter(_this, void 0, void 0, function () {
300
- var id, fulfillment, lineItemServiceTx, _a, _b, fItem, item, fulfilledQuantity, e_2_1, fulfillmentRepo, canceled;
301
- var e_2, _c;
302
- return __generator(this, function (_d) {
303
- switch (_d.label) {
303
+ var id, fulfillment, lineItemServiceTx, fulfillmentRepo, canceled;
304
+ var _this = this;
305
+ return __generator(this, function (_a) {
306
+ switch (_a.label) {
304
307
  case 0:
305
308
  id = typeof fulfillmentOrId === "string"
306
309
  ? fulfillmentOrId
@@ -309,52 +312,38 @@ var FulfillmentService = /** @class */ (function (_super) {
309
312
  relations: ["items", "claim_order", "swap"],
310
313
  })];
311
314
  case 1:
312
- fulfillment = _d.sent();
315
+ fulfillment = _a.sent();
313
316
  if (fulfillment.shipped_at) {
314
317
  throw new medusa_core_utils_1.MedusaError(medusa_core_utils_1.MedusaError.Types.NOT_ALLOWED, "The fulfillment has already been shipped. Shipped fulfillments cannot be canceled");
315
318
  }
316
319
  return [4 /*yield*/, this.fulfillmentProviderService_.cancelFulfillment(fulfillment)];
317
320
  case 2:
318
- _d.sent();
321
+ _a.sent();
319
322
  fulfillment.canceled_at = new Date();
320
323
  lineItemServiceTx = this.lineItemService_.withTransaction(manager);
321
- _d.label = 3;
324
+ return [4 /*yield*/, Promise.all(fulfillment.items.map(function (fItem) { return __awaiter(_this, void 0, void 0, function () {
325
+ var item, fulfilledQuantity;
326
+ return __generator(this, function (_a) {
327
+ switch (_a.label) {
328
+ case 0: return [4 /*yield*/, lineItemServiceTx.retrieve(fItem.item_id)];
329
+ case 1:
330
+ item = _a.sent();
331
+ fulfilledQuantity = item.fulfilled_quantity - fItem.quantity;
332
+ return [4 /*yield*/, lineItemServiceTx.update(item.id, {
333
+ fulfilled_quantity: fulfilledQuantity,
334
+ })];
335
+ case 2:
336
+ _a.sent();
337
+ return [2 /*return*/];
338
+ }
339
+ });
340
+ }); }))];
322
341
  case 3:
323
- _d.trys.push([3, 9, 10, 11]);
324
- _a = __values(fulfillment.items), _b = _a.next();
325
- _d.label = 4;
326
- case 4:
327
- if (!!_b.done) return [3 /*break*/, 8];
328
- fItem = _b.value;
329
- return [4 /*yield*/, lineItemServiceTx.retrieve(fItem.item_id)];
330
- case 5:
331
- item = _d.sent();
332
- fulfilledQuantity = item.fulfilled_quantity - fItem.quantity;
333
- return [4 /*yield*/, lineItemServiceTx.update(item.id, {
334
- fulfilled_quantity: fulfilledQuantity,
335
- })];
336
- case 6:
337
- _d.sent();
338
- _d.label = 7;
339
- case 7:
340
- _b = _a.next();
341
- return [3 /*break*/, 4];
342
- case 8: return [3 /*break*/, 11];
343
- case 9:
344
- e_2_1 = _d.sent();
345
- e_2 = { error: e_2_1 };
346
- return [3 /*break*/, 11];
347
- case 10:
348
- try {
349
- if (_b && !_b.done && (_c = _a.return)) _c.call(_a);
350
- }
351
- finally { if (e_2) throw e_2.error; }
352
- return [7 /*endfinally*/];
353
- case 11:
342
+ _a.sent();
354
343
  fulfillmentRepo = manager.getCustomRepository(this.fulfillmentRepository_);
355
344
  return [4 /*yield*/, fulfillmentRepo.save(fulfillment)];
356
- case 12:
357
- canceled = _d.sent();
345
+ case 4:
346
+ canceled = _a.sent();
358
347
  return [2 /*return*/, canceled];
359
348
  }
360
349
  });