@reorderjs/reorder 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (231) hide show
  1. package/.medusa/server/scripts/reset-reorder-plugin-data.js +175 -0
  2. package/.medusa/server/src/admin/index.js +17889 -0
  3. package/.medusa/server/src/admin/index.mjs +17871 -0
  4. package/.medusa/server/src/admin/types/activity-log.js +10 -0
  5. package/.medusa/server/src/admin/types/analytics.js +17 -0
  6. package/.medusa/server/src/admin/types/cancellation.js +27 -0
  7. package/.medusa/server/src/admin/types/dunning.js +19 -0
  8. package/.medusa/server/src/admin/types/plan-offer.js +25 -0
  9. package/.medusa/server/src/admin/types/renewal.js +23 -0
  10. package/.medusa/server/src/admin/types/subscription.js +22 -0
  11. package/.medusa/server/src/api/admin/cancellations/[id]/apply-offer/route.js +30 -0
  12. package/.medusa/server/src/api/admin/cancellations/[id]/finalize/route.js +31 -0
  13. package/.medusa/server/src/api/admin/cancellations/[id]/reason/route.js +31 -0
  14. package/.medusa/server/src/api/admin/cancellations/[id]/route.js +20 -0
  15. package/.medusa/server/src/api/admin/cancellations/middlewares.js +55 -0
  16. package/.medusa/server/src/api/admin/cancellations/route.js +20 -0
  17. package/.medusa/server/src/api/admin/cancellations/utils.js +116 -0
  18. package/.medusa/server/src/api/admin/cancellations/validators.js +130 -0
  19. package/.medusa/server/src/api/admin/dunning/[id]/mark-recovered/route.js +27 -0
  20. package/.medusa/server/src/api/admin/dunning/[id]/mark-unrecovered/route.js +27 -0
  21. package/.medusa/server/src/api/admin/dunning/[id]/retry-now/route.js +28 -0
  22. package/.medusa/server/src/api/admin/dunning/[id]/retry-schedule/route.js +29 -0
  23. package/.medusa/server/src/api/admin/dunning/[id]/route.js +20 -0
  24. package/.medusa/server/src/api/admin/dunning/middlewares.js +60 -0
  25. package/.medusa/server/src/api/admin/dunning/route.js +20 -0
  26. package/.medusa/server/src/api/admin/dunning/utils.js +70 -0
  27. package/.medusa/server/src/api/admin/dunning/validators.js +81 -0
  28. package/.medusa/server/src/api/admin/orders/[id]/subscription-summary/route.js +10 -0
  29. package/.medusa/server/src/api/admin/orders/utils.js +8 -0
  30. package/.medusa/server/src/api/admin/plugin/route.js +7 -0
  31. package/.medusa/server/src/api/admin/renewals/[id]/approve-changes/route.js +27 -0
  32. package/.medusa/server/src/api/admin/renewals/[id]/force/route.js +30 -0
  33. package/.medusa/server/src/api/admin/renewals/[id]/reject-changes/route.js +27 -0
  34. package/.medusa/server/src/api/admin/renewals/[id]/route.js +10 -0
  35. package/.medusa/server/src/api/admin/renewals/middlewares.js +61 -0
  36. package/.medusa/server/src/api/admin/renewals/route.js +10 -0
  37. package/.medusa/server/src/api/admin/renewals/utils.js +60 -0
  38. package/.medusa/server/src/api/admin/renewals/validators.js +62 -0
  39. package/.medusa/server/src/api/admin/subscription-analytics/export/route.js +20 -0
  40. package/.medusa/server/src/api/admin/subscription-analytics/kpis/route.js +20 -0
  41. package/.medusa/server/src/api/admin/subscription-analytics/middlewares.js +45 -0
  42. package/.medusa/server/src/api/admin/subscription-analytics/rebuild/route.js +75 -0
  43. package/.medusa/server/src/api/admin/subscription-analytics/trends/route.js +20 -0
  44. package/.medusa/server/src/api/admin/subscription-analytics/utils.js +81 -0
  45. package/.medusa/server/src/api/admin/subscription-analytics/validators.js +76 -0
  46. package/.medusa/server/src/api/admin/subscription-logs/[id]/route.js +20 -0
  47. package/.medusa/server/src/api/admin/subscription-logs/middlewares.js +66 -0
  48. package/.medusa/server/src/api/admin/subscription-logs/route.js +20 -0
  49. package/.medusa/server/src/api/admin/subscription-logs/utils.js +84 -0
  50. package/.medusa/server/src/api/admin/subscription-logs/validators.js +32 -0
  51. package/.medusa/server/src/api/admin/subscription-offers/[id]/route.js +22 -0
  52. package/.medusa/server/src/api/admin/subscription-offers/[id]/toggle/route.js +17 -0
  53. package/.medusa/server/src/api/admin/subscription-offers/middlewares.js +58 -0
  54. package/.medusa/server/src/api/admin/subscription-offers/route.js +20 -0
  55. package/.medusa/server/src/api/admin/subscription-offers/utils.js +41 -0
  56. package/.medusa/server/src/api/admin/subscription-offers/validators.js +112 -0
  57. package/.medusa/server/src/api/admin/subscription-settings/middlewares.js +15 -0
  58. package/.medusa/server/src/api/admin/subscription-settings/route.js +33 -0
  59. package/.medusa/server/src/api/admin/subscription-settings/utils.js +109 -0
  60. package/.medusa/server/src/api/admin/subscription-settings/validators.js +74 -0
  61. package/.medusa/server/src/api/admin/subscriptions/[id]/cancel/route.js +18 -0
  62. package/.medusa/server/src/api/admin/subscriptions/[id]/logs/route.js +20 -0
  63. package/.medusa/server/src/api/admin/subscriptions/[id]/pause/route.js +18 -0
  64. package/.medusa/server/src/api/admin/subscriptions/[id]/resume/route.js +18 -0
  65. package/.medusa/server/src/api/admin/subscriptions/[id]/route.js +10 -0
  66. package/.medusa/server/src/api/admin/subscriptions/[id]/schedule-plan-change/route.js +26 -0
  67. package/.medusa/server/src/api/admin/subscriptions/[id]/update-shipping-address/route.js +27 -0
  68. package/.medusa/server/src/api/admin/subscriptions/middlewares.js +79 -0
  69. package/.medusa/server/src/api/admin/subscriptions/route.js +10 -0
  70. package/.medusa/server/src/api/admin/subscriptions/utils.js +42 -0
  71. package/.medusa/server/src/api/admin/subscriptions/validators.js +76 -0
  72. package/.medusa/server/src/api/middlewares.js +32 -0
  73. package/.medusa/server/src/api/store/carts/[id]/subscribe/route.js +18 -0
  74. package/.medusa/server/src/api/store/customers/me/subscriptions/[id]/cancellation/route.js +37 -0
  75. package/.medusa/server/src/api/store/customers/me/subscriptions/route.js +10 -0
  76. package/.medusa/server/src/api/store/customers/me/subscriptions/utils.js +104 -0
  77. package/.medusa/server/src/api/store/customers/me/subscriptions/validators.js +13 -0
  78. package/.medusa/server/src/api/store/plugin/route.js +7 -0
  79. package/.medusa/server/src/jobs/process-analytics-daily-snapshots.js +149 -0
  80. package/.medusa/server/src/jobs/process-cancellation-operational-metrics.js +102 -0
  81. package/.medusa/server/src/jobs/process-dunning-retries.js +249 -0
  82. package/.medusa/server/src/jobs/process-renewal-cycles.js +180 -0
  83. package/.medusa/server/src/links/cancellation-subscription.js +13 -0
  84. package/.medusa/server/src/links/renewal-order.js +12 -0
  85. package/.medusa/server/src/links/renewal-subscription.js +13 -0
  86. package/.medusa/server/src/links/subscription-cart.js +12 -0
  87. package/.medusa/server/src/links/subscription-customer.js +13 -0
  88. package/.medusa/server/src/links/subscription-order.js +13 -0
  89. package/.medusa/server/src/links/subscription-product.js +13 -0
  90. package/.medusa/server/src/links/subscription-variant.js +13 -0
  91. package/.medusa/server/src/modules/activity-log/index.js +13 -0
  92. package/.medusa/server/src/modules/activity-log/migrations/Migration20260401204521.js +24 -0
  93. package/.medusa/server/src/modules/activity-log/migrations/Migration20260405112500.js +16 -0
  94. package/.medusa/server/src/modules/activity-log/models/subscription-log.js +52 -0
  95. package/.medusa/server/src/modules/activity-log/service.js +13 -0
  96. package/.medusa/server/src/modules/activity-log/types/index.js +33 -0
  97. package/.medusa/server/src/modules/activity-log/utils/admin-query.js +261 -0
  98. package/.medusa/server/src/modules/activity-log/utils/normalize-log-event.js +169 -0
  99. package/.medusa/server/src/modules/analytics/constants.js +8 -0
  100. package/.medusa/server/src/modules/analytics/index.js +13 -0
  101. package/.medusa/server/src/modules/analytics/migrations/Migration20260402183116.js +27 -0
  102. package/.medusa/server/src/modules/analytics/models/subscription-metrics-daily.js +65 -0
  103. package/.medusa/server/src/modules/analytics/service.js +13 -0
  104. package/.medusa/server/src/modules/analytics/utils/admin-query.js +632 -0
  105. package/.medusa/server/src/modules/analytics/utils/data-quality.js +101 -0
  106. package/.medusa/server/src/modules/analytics/utils/observability.js +127 -0
  107. package/.medusa/server/src/modules/cancellation/index.js +13 -0
  108. package/.medusa/server/src/modules/cancellation/migrations/Migration20260401143914.js +34 -0
  109. package/.medusa/server/src/modules/cancellation/migrations/Migration20260405112000.js +14 -0
  110. package/.medusa/server/src/modules/cancellation/models/cancellation-case.js +52 -0
  111. package/.medusa/server/src/modules/cancellation/models/retention-offer-event.js +47 -0
  112. package/.medusa/server/src/modules/cancellation/service.js +15 -0
  113. package/.medusa/server/src/modules/cancellation/types/index.js +43 -0
  114. package/.medusa/server/src/modules/cancellation/utils/admin-query.js +530 -0
  115. package/.medusa/server/src/modules/cancellation/utils/audit.js +21 -0
  116. package/.medusa/server/src/modules/cancellation/utils/errors.js +31 -0
  117. package/.medusa/server/src/modules/cancellation/utils/observability.js +77 -0
  118. package/.medusa/server/src/modules/cancellation/utils/operational-metrics.js +131 -0
  119. package/.medusa/server/src/modules/cancellation/utils/retention-offer-policy.js +31 -0
  120. package/.medusa/server/src/modules/dunning/index.js +13 -0
  121. package/.medusa/server/src/modules/dunning/migrations/Migration20260330190157.js +36 -0
  122. package/.medusa/server/src/modules/dunning/models/dunning-attempt.js +48 -0
  123. package/.medusa/server/src/modules/dunning/models/dunning-case.js +61 -0
  124. package/.medusa/server/src/modules/dunning/service.js +15 -0
  125. package/.medusa/server/src/modules/dunning/types/index.js +19 -0
  126. package/.medusa/server/src/modules/dunning/utils/admin-query.js +548 -0
  127. package/.medusa/server/src/modules/dunning/utils/errors.js +40 -0
  128. package/.medusa/server/src/modules/dunning/utils/observability.js +109 -0
  129. package/.medusa/server/src/modules/dunning/utils/retry-schedule.js +47 -0
  130. package/.medusa/server/src/modules/dunning/utils/scheduler-query.js +42 -0
  131. package/.medusa/server/src/modules/plan-offer/index.js +13 -0
  132. package/.medusa/server/src/modules/plan-offer/migrations/Migration20260329104245.js +22 -0
  133. package/.medusa/server/src/modules/plan-offer/migrations/Migration20260329153000.js +25 -0
  134. package/.medusa/server/src/modules/plan-offer/models/plan-offer.js +35 -0
  135. package/.medusa/server/src/modules/plan-offer/service.js +13 -0
  136. package/.medusa/server/src/modules/plan-offer/types/index.js +26 -0
  137. package/.medusa/server/src/modules/plan-offer/utils/admin-query.js +429 -0
  138. package/.medusa/server/src/modules/plan-offer/utils/effective-config.js +84 -0
  139. package/.medusa/server/src/modules/plan-offer/utils/errors.js +55 -0
  140. package/.medusa/server/src/modules/renewal/index.js +13 -0
  141. package/.medusa/server/src/modules/renewal/migrations/Migration20260329185930.js +34 -0
  142. package/.medusa/server/src/modules/renewal/models/renewal-attempt.js +49 -0
  143. package/.medusa/server/src/modules/renewal/models/renewal-cycle.js +56 -0
  144. package/.medusa/server/src/modules/renewal/service.js +15 -0
  145. package/.medusa/server/src/modules/renewal/types/index.js +23 -0
  146. package/.medusa/server/src/modules/renewal/utils/admin-query.js +450 -0
  147. package/.medusa/server/src/modules/renewal/utils/errors.js +39 -0
  148. package/.medusa/server/src/modules/renewal/utils/observability.js +89 -0
  149. package/.medusa/server/src/modules/renewal/utils/scheduler-query.js +48 -0
  150. package/.medusa/server/src/modules/renewal/utils/upcoming-cycle.js +54 -0
  151. package/.medusa/server/src/modules/settings/index.js +13 -0
  152. package/.medusa/server/src/modules/settings/migrations/Migration20260403121004.js +17 -0
  153. package/.medusa/server/src/modules/settings/migrations/Migration20260403132519.js +17 -0
  154. package/.medusa/server/src/modules/settings/models/subscription-settings.js +32 -0
  155. package/.medusa/server/src/modules/settings/service.js +82 -0
  156. package/.medusa/server/src/modules/settings/types.js +15 -0
  157. package/.medusa/server/src/modules/settings/utils/audit.js +43 -0
  158. package/.medusa/server/src/modules/settings/utils/normalize-settings.js +99 -0
  159. package/.medusa/server/src/modules/subscription/index.js +13 -0
  160. package/.medusa/server/src/modules/subscription/migrations/Migration20260327143452.js +24 -0
  161. package/.medusa/server/src/modules/subscription/migrations/Migration20260329194835.js +16 -0
  162. package/.medusa/server/src/modules/subscription/models/subscription.js +64 -0
  163. package/.medusa/server/src/modules/subscription/service.js +13 -0
  164. package/.medusa/server/src/modules/subscription/types/index.js +17 -0
  165. package/.medusa/server/src/modules/subscription/utils/admin-query.js +465 -0
  166. package/.medusa/server/src/modules/subscription/utils/errors.js +28 -0
  167. package/.medusa/server/src/subscription-flows/create-subscription-from-cart.js +178 -0
  168. package/.medusa/server/src/workflows/apply-retention-offer.js +52 -0
  169. package/.medusa/server/src/workflows/approve-renewal-changes.js +61 -0
  170. package/.medusa/server/src/workflows/cancel-subscription.js +64 -0
  171. package/.medusa/server/src/workflows/create-or-upsert-plan-offer.js +11 -0
  172. package/.medusa/server/src/workflows/ensure-next-renewal-cycle.js +11 -0
  173. package/.medusa/server/src/workflows/finalize-cancellation.js +88 -0
  174. package/.medusa/server/src/workflows/force-renewal-cycle.js +11 -0
  175. package/.medusa/server/src/workflows/index.js +79 -0
  176. package/.medusa/server/src/workflows/mark-dunning-recovered.js +11 -0
  177. package/.medusa/server/src/workflows/mark-dunning-unrecovered.js +11 -0
  178. package/.medusa/server/src/workflows/pause-subscription.js +61 -0
  179. package/.medusa/server/src/workflows/process-renewal-cycle.js +43 -0
  180. package/.medusa/server/src/workflows/rebuild-analytics-daily-snapshots.js +13 -0
  181. package/.medusa/server/src/workflows/reject-renewal-changes.js +61 -0
  182. package/.medusa/server/src/workflows/resume-subscription.js +76 -0
  183. package/.medusa/server/src/workflows/run-dunning-retry.js +23 -0
  184. package/.medusa/server/src/workflows/schedule-subscription-plan-change.js +57 -0
  185. package/.medusa/server/src/workflows/start-cancellation-case.js +58 -0
  186. package/.medusa/server/src/workflows/start-dunning.js +11 -0
  187. package/.medusa/server/src/workflows/steps/apply-retention-offer.js +200 -0
  188. package/.medusa/server/src/workflows/steps/approve-renewal-changes.js +48 -0
  189. package/.medusa/server/src/workflows/steps/cancel-subscription.js +48 -0
  190. package/.medusa/server/src/workflows/steps/create-initial-renewal-cycle.js +6 -0
  191. package/.medusa/server/src/workflows/steps/create-subscription-log-event.js +61 -0
  192. package/.medusa/server/src/workflows/steps/create-subscription-record.js +56 -0
  193. package/.medusa/server/src/workflows/steps/ensure-next-renewal-cycle.js +151 -0
  194. package/.medusa/server/src/workflows/steps/finalize-cancellation.js +161 -0
  195. package/.medusa/server/src/workflows/steps/force-renewal-cycle.js +120 -0
  196. package/.medusa/server/src/workflows/steps/link-subscription-commerce-entities.js +44 -0
  197. package/.medusa/server/src/workflows/steps/mark-dunning-recovered.js +72 -0
  198. package/.medusa/server/src/workflows/steps/mark-dunning-unrecovered.js +53 -0
  199. package/.medusa/server/src/workflows/steps/normalize-analytics-rebuild-range.js +59 -0
  200. package/.medusa/server/src/workflows/steps/pause-subscription.js +50 -0
  201. package/.medusa/server/src/workflows/steps/process-renewal-cycle.js +641 -0
  202. package/.medusa/server/src/workflows/steps/rebuild-analytics-daily-snapshots.js +519 -0
  203. package/.medusa/server/src/workflows/steps/reject-renewal-changes.js +48 -0
  204. package/.medusa/server/src/workflows/steps/resume-subscription.js +45 -0
  205. package/.medusa/server/src/workflows/steps/run-dunning-retry.js +592 -0
  206. package/.medusa/server/src/workflows/steps/schedule-subscription-plan-change.js +81 -0
  207. package/.medusa/server/src/workflows/steps/shared-cancellation-log.js +3 -0
  208. package/.medusa/server/src/workflows/steps/shared-plan-offer.js +280 -0
  209. package/.medusa/server/src/workflows/steps/shared-renewal-approval.js +34 -0
  210. package/.medusa/server/src/workflows/steps/start-cancellation-case.js +147 -0
  211. package/.medusa/server/src/workflows/steps/start-dunning.js +237 -0
  212. package/.medusa/server/src/workflows/steps/toggle-plan-offer.js +33 -0
  213. package/.medusa/server/src/workflows/steps/update-cancellation-reason.js +95 -0
  214. package/.medusa/server/src/workflows/steps/update-dunning-retry-schedule.js +91 -0
  215. package/.medusa/server/src/workflows/steps/update-plan-offer.js +51 -0
  216. package/.medusa/server/src/workflows/steps/update-subscription-settings.js +91 -0
  217. package/.medusa/server/src/workflows/steps/update-subscription-shipping-address.js +54 -0
  218. package/.medusa/server/src/workflows/steps/upsert-plan-offer.js +48 -0
  219. package/.medusa/server/src/workflows/steps/validate-subscription-cart.js +280 -0
  220. package/.medusa/server/src/workflows/toggle-plan-offer.js +11 -0
  221. package/.medusa/server/src/workflows/update-cancellation-reason.js +53 -0
  222. package/.medusa/server/src/workflows/update-dunning-retry-schedule.js +11 -0
  223. package/.medusa/server/src/workflows/update-plan-offer.js +11 -0
  224. package/.medusa/server/src/workflows/update-subscription-settings.js +11 -0
  225. package/.medusa/server/src/workflows/update-subscription-shipping-address.js +99 -0
  226. package/.medusa/server/src/workflows/utils/analytics-incremental.js +24 -0
  227. package/.medusa/server/src/workflows/utils/date-output.js +13 -0
  228. package/.medusa/server/src/workflows/utils/subscription-settings.js +13 -0
  229. package/LICENSE +21 -0
  230. package/README.md +200 -0
  231. package/package.json +73 -0
@@ -0,0 +1,64 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const utils_1 = require("@medusajs/framework/utils");
4
+ const types_1 = require("../types");
5
+ const Subscription = utils_1.model
6
+ .define("subscription", {
7
+ id: utils_1.model.id().primaryKey(),
8
+ reference: utils_1.model.text().unique(),
9
+ status: utils_1.model.enum(types_1.SubscriptionStatus).default(types_1.SubscriptionStatus.ACTIVE),
10
+ customer_id: utils_1.model.text(),
11
+ cart_id: utils_1.model.text().nullable(),
12
+ product_id: utils_1.model.text(),
13
+ variant_id: utils_1.model.text(),
14
+ frequency_interval: utils_1.model.enum(types_1.SubscriptionFrequencyInterval),
15
+ frequency_value: utils_1.model.number(),
16
+ started_at: utils_1.model.dateTime(),
17
+ next_renewal_at: utils_1.model.dateTime().nullable(),
18
+ last_renewal_at: utils_1.model.dateTime().nullable(),
19
+ paused_at: utils_1.model.dateTime().nullable(),
20
+ cancelled_at: utils_1.model.dateTime().nullable(),
21
+ cancel_effective_at: utils_1.model.dateTime().nullable(),
22
+ skip_next_cycle: utils_1.model.boolean().default(false),
23
+ is_trial: utils_1.model.boolean().default(false),
24
+ trial_ends_at: utils_1.model.dateTime().nullable(),
25
+ customer_snapshot: utils_1.model.json().nullable(),
26
+ product_snapshot: utils_1.model.json(),
27
+ pricing_snapshot: utils_1.model.json().nullable(),
28
+ shipping_address: utils_1.model.json(),
29
+ payment_context: utils_1.model.json().nullable(),
30
+ pending_update_data: utils_1.model.json().nullable(),
31
+ metadata: utils_1.model.json().nullable(),
32
+ })
33
+ .indexes([
34
+ {
35
+ on: ["reference"],
36
+ unique: true,
37
+ },
38
+ {
39
+ on: ["status"],
40
+ },
41
+ {
42
+ on: ["next_renewal_at"],
43
+ },
44
+ {
45
+ on: ["customer_id"],
46
+ },
47
+ {
48
+ on: ["cart_id"],
49
+ },
50
+ {
51
+ on: ["product_id"],
52
+ },
53
+ {
54
+ on: ["variant_id"],
55
+ },
56
+ {
57
+ on: ["is_trial"],
58
+ },
59
+ {
60
+ on: ["skip_next_cycle"],
61
+ },
62
+ ]);
63
+ exports.default = Subscription;
64
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3Vic2NyaXB0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL21vZHVsZXMvc3Vic2NyaXB0aW9uL21vZGVscy9zdWJzY3JpcHRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxxREFBaUQ7QUFDakQsb0NBR2lCO0FBRWpCLE1BQU0sWUFBWSxHQUFHLGFBQUs7S0FDdkIsTUFBTSxDQUFDLGNBQWMsRUFBRTtJQUN0QixFQUFFLEVBQUUsYUFBSyxDQUFDLEVBQUUsRUFBRSxDQUFDLFVBQVUsRUFBRTtJQUMzQixTQUFTLEVBQUUsYUFBSyxDQUFDLElBQUksRUFBRSxDQUFDLE1BQU0sRUFBRTtJQUNoQyxNQUFNLEVBQUUsYUFBSyxDQUFDLElBQUksQ0FBQywwQkFBa0IsQ0FBQyxDQUFDLE9BQU8sQ0FBQywwQkFBa0IsQ0FBQyxNQUFNLENBQUM7SUFDekUsV0FBVyxFQUFFLGFBQUssQ0FBQyxJQUFJLEVBQUU7SUFDekIsT0FBTyxFQUFFLGFBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxRQUFRLEVBQUU7SUFDaEMsVUFBVSxFQUFFLGFBQUssQ0FBQyxJQUFJLEVBQUU7SUFDeEIsVUFBVSxFQUFFLGFBQUssQ0FBQyxJQUFJLEVBQUU7SUFDeEIsa0JBQWtCLEVBQUUsYUFBSyxDQUFDLElBQUksQ0FBQyxxQ0FBNkIsQ0FBQztJQUM3RCxlQUFlLEVBQUUsYUFBSyxDQUFDLE1BQU0sRUFBRTtJQUMvQixVQUFVLEVBQUUsYUFBSyxDQUFDLFFBQVEsRUFBRTtJQUM1QixlQUFlLEVBQUUsYUFBSyxDQUFDLFFBQVEsRUFBRSxDQUFDLFFBQVEsRUFBRTtJQUM1QyxlQUFlLEVBQUUsYUFBSyxDQUFDLFFBQVEsRUFBRSxDQUFDLFFBQVEsRUFBRTtJQUM1QyxTQUFTLEVBQUUsYUFBSyxDQUFDLFFBQVEsRUFBRSxDQUFDLFFBQVEsRUFBRTtJQUN0QyxZQUFZLEVBQUUsYUFBSyxDQUFDLFFBQVEsRUFBRSxDQUFDLFFBQVEsRUFBRTtJQUN6QyxtQkFBbUIsRUFBRSxhQUFLLENBQUMsUUFBUSxFQUFFLENBQUMsUUFBUSxFQUFFO0lBQ2hELGVBQWUsRUFBRSxhQUFLLENBQUMsT0FBTyxFQUFFLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQztJQUMvQyxRQUFRLEVBQUUsYUFBSyxDQUFDLE9BQU8sRUFBRSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUM7SUFDeEMsYUFBYSxFQUFFLGFBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQyxRQUFRLEVBQUU7SUFDMUMsaUJBQWlCLEVBQUUsYUFBSyxDQUFDLElBQUksRUFBRSxDQUFDLFFBQVEsRUFBRTtJQUMxQyxnQkFBZ0IsRUFBRSxhQUFLLENBQUMsSUFBSSxFQUFFO0lBQzlCLGdCQUFnQixFQUFFLGFBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxRQUFRLEVBQUU7SUFDekMsZ0JBQWdCLEVBQUUsYUFBSyxDQUFDLElBQUksRUFBRTtJQUM5QixlQUFlLEVBQUUsYUFBSyxDQUFDLElBQUksRUFBRSxDQUFDLFFBQVEsRUFBRTtJQUN4QyxtQkFBbUIsRUFBRSxhQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsUUFBUSxFQUFFO0lBQzVDLFFBQVEsRUFBRSxhQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsUUFBUSxFQUFFO0NBQ2xDLENBQUM7S0FDRCxPQUFPLENBQUM7SUFDUDtRQUNFLEVBQUUsRUFBRSxDQUFDLFdBQVcsQ0FBQztRQUNqQixNQUFNLEVBQUUsSUFBSTtLQUNiO0lBQ0Q7UUFDRSxFQUFFLEVBQUUsQ0FBQyxRQUFRLENBQUM7S0FDZjtJQUNEO1FBQ0UsRUFBRSxFQUFFLENBQUMsaUJBQWlCLENBQUM7S0FDeEI7SUFDRDtRQUNFLEVBQUUsRUFBRSxDQUFDLGFBQWEsQ0FBQztLQUNwQjtJQUNEO1FBQ0UsRUFBRSxFQUFFLENBQUMsU0FBUyxDQUFDO0tBQ2hCO0lBQ0Q7UUFDRSxFQUFFLEVBQUUsQ0FBQyxZQUFZLENBQUM7S0FDbkI7SUFDRDtRQUNFLEVBQUUsRUFBRSxDQUFDLFlBQVksQ0FBQztLQUNuQjtJQUNEO1FBQ0UsRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDO0tBQ2pCO0lBQ0Q7UUFDRSxFQUFFLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQztLQUN4QjtDQUNGLENBQUMsQ0FBQTtBQUVKLGtCQUFlLFlBQVksQ0FBQSJ9
@@ -0,0 +1,13 @@
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 subscription_1 = __importDefault(require("./models/subscription"));
8
+ class SubscriptionModuleService extends (0, utils_1.MedusaService)({
9
+ Subscription: subscription_1.default,
10
+ }) {
11
+ }
12
+ exports.default = SubscriptionModuleService;
13
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9tb2R1bGVzL3N1YnNjcmlwdGlvbi9zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEscURBQXlEO0FBQ3pELHlFQUFnRDtBQUVoRCxNQUFNLHlCQUEwQixTQUFRLElBQUEscUJBQWEsRUFBQztJQUNwRCxZQUFZLEVBQVosc0JBQVk7Q0FDYixDQUFDO0NBQUc7QUFFTCxrQkFBZSx5QkFBeUIsQ0FBQSJ9
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SubscriptionFrequencyInterval = exports.SubscriptionStatus = void 0;
4
+ var SubscriptionStatus;
5
+ (function (SubscriptionStatus) {
6
+ SubscriptionStatus["ACTIVE"] = "active";
7
+ SubscriptionStatus["PAUSED"] = "paused";
8
+ SubscriptionStatus["CANCELLED"] = "cancelled";
9
+ SubscriptionStatus["PAST_DUE"] = "past_due";
10
+ })(SubscriptionStatus || (exports.SubscriptionStatus = SubscriptionStatus = {}));
11
+ var SubscriptionFrequencyInterval;
12
+ (function (SubscriptionFrequencyInterval) {
13
+ SubscriptionFrequencyInterval["WEEK"] = "week";
14
+ SubscriptionFrequencyInterval["MONTH"] = "month";
15
+ SubscriptionFrequencyInterval["YEAR"] = "year";
16
+ })(SubscriptionFrequencyInterval || (exports.SubscriptionFrequencyInterval = SubscriptionFrequencyInterval = {}));
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbW9kdWxlcy9zdWJzY3JpcHRpb24vdHlwZXMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsSUFBWSxrQkFLWDtBQUxELFdBQVksa0JBQWtCO0lBQzVCLHVDQUFpQixDQUFBO0lBQ2pCLHVDQUFpQixDQUFBO0lBQ2pCLDZDQUF1QixDQUFBO0lBQ3ZCLDJDQUFxQixDQUFBO0FBQ3ZCLENBQUMsRUFMVyxrQkFBa0Isa0NBQWxCLGtCQUFrQixRQUs3QjtBQUVELElBQVksNkJBSVg7QUFKRCxXQUFZLDZCQUE2QjtJQUN2Qyw4Q0FBYSxDQUFBO0lBQ2IsZ0RBQWUsQ0FBQTtJQUNmLDhDQUFhLENBQUE7QUFDZixDQUFDLEVBSlcsNkJBQTZCLDZDQUE3Qiw2QkFBNkIsUUFJeEMifQ==
@@ -0,0 +1,465 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.listAdminSubscriptions = listAdminSubscriptions;
4
+ exports.getAdminSubscriptionDetail = getAdminSubscriptionDetail;
5
+ exports.getAdminOrderSubscriptionSummary = getAdminOrderSubscriptionSummary;
6
+ const utils_1 = require("@medusajs/framework/utils");
7
+ const subscription_1 = require("../../../admin/types/subscription");
8
+ const errors_1 = require("./errors");
9
+ const listFields = [
10
+ "id",
11
+ "reference",
12
+ "status",
13
+ "customer_id",
14
+ "product_id",
15
+ "variant_id",
16
+ "frequency_interval",
17
+ "frequency_value",
18
+ "next_renewal_at",
19
+ "last_renewal_at",
20
+ "paused_at",
21
+ "cancelled_at",
22
+ "skip_next_cycle",
23
+ "is_trial",
24
+ "trial_ends_at",
25
+ "customer_snapshot",
26
+ "product_snapshot",
27
+ "pricing_snapshot",
28
+ "created_at",
29
+ "updated_at",
30
+ ];
31
+ const detailFields = [
32
+ ...listFields,
33
+ "started_at",
34
+ "cancel_effective_at",
35
+ "shipping_address",
36
+ "pending_update_data",
37
+ "metadata",
38
+ ];
39
+ const databaseSortableFields = new Set([
40
+ "created_at",
41
+ "updated_at",
42
+ "status",
43
+ "frequency_interval",
44
+ "frequency_value",
45
+ "next_renewal_at",
46
+ "trial_ends_at",
47
+ "skip_next_cycle",
48
+ ]);
49
+ const inMemorySortableFields = new Set([
50
+ "customer_name",
51
+ "customer_email",
52
+ "product_title",
53
+ "variant_title",
54
+ "discount_value",
55
+ ]);
56
+ function formatFrequencyLabel(interval, value) {
57
+ if (value === 1) {
58
+ return `Every ${interval}`;
59
+ }
60
+ return `Every ${value} ${interval}s`;
61
+ }
62
+ function mapDiscount(pricingSnapshot) {
63
+ if (!pricingSnapshot ||
64
+ !pricingSnapshot.discount_type ||
65
+ pricingSnapshot.discount_value === undefined) {
66
+ return null;
67
+ }
68
+ const label = pricingSnapshot.label ??
69
+ (pricingSnapshot.discount_type === "percentage"
70
+ ? `${pricingSnapshot.discount_value}% off`
71
+ : `${pricingSnapshot.discount_value} off`);
72
+ return {
73
+ type: pricingSnapshot.discount_type === "percentage"
74
+ ? subscription_1.SubscriptionDiscountType.PERCENTAGE
75
+ : subscription_1.SubscriptionDiscountType.FIXED,
76
+ value: pricingSnapshot.discount_value,
77
+ label,
78
+ };
79
+ }
80
+ function mapPendingUpdateData(pendingUpdateData) {
81
+ if (!pendingUpdateData) {
82
+ return null;
83
+ }
84
+ return {
85
+ variant_id: pendingUpdateData.variant_id,
86
+ variant_title: pendingUpdateData.variant_title,
87
+ frequency_interval: pendingUpdateData.frequency_interval === "week"
88
+ ? subscription_1.SubscriptionFrequencyInterval.WEEK
89
+ : pendingUpdateData.frequency_interval === "month"
90
+ ? subscription_1.SubscriptionFrequencyInterval.MONTH
91
+ : subscription_1.SubscriptionFrequencyInterval.YEAR,
92
+ frequency_value: pendingUpdateData.frequency_value,
93
+ effective_at: pendingUpdateData.effective_at,
94
+ };
95
+ }
96
+ function mapListItem(record) {
97
+ const customer = record.customer_snapshot ?? {};
98
+ const product = record.product_snapshot ?? {};
99
+ const frequency = {
100
+ interval: record.frequency_interval === "week"
101
+ ? subscription_1.SubscriptionFrequencyInterval.WEEK
102
+ : record.frequency_interval === "month"
103
+ ? subscription_1.SubscriptionFrequencyInterval.MONTH
104
+ : subscription_1.SubscriptionFrequencyInterval.YEAR,
105
+ value: record.frequency_value,
106
+ label: formatFrequencyLabel(record.frequency_interval, record.frequency_value),
107
+ };
108
+ return {
109
+ id: record.id,
110
+ reference: record.reference,
111
+ status: record.status === "active"
112
+ ? subscription_1.SubscriptionAdminStatus.ACTIVE
113
+ : record.status === "paused"
114
+ ? subscription_1.SubscriptionAdminStatus.PAUSED
115
+ : record.status === "cancelled"
116
+ ? subscription_1.SubscriptionAdminStatus.CANCELLED
117
+ : subscription_1.SubscriptionAdminStatus.PAST_DUE,
118
+ customer: {
119
+ id: record.customer_id,
120
+ full_name: customer.full_name ?? "Unknown customer",
121
+ email: customer.email ?? "",
122
+ },
123
+ product: {
124
+ product_id: record.product_id,
125
+ product_title: product.product_title ?? "Unknown product",
126
+ variant_id: record.variant_id,
127
+ variant_title: product.variant_title ?? "Unknown variant",
128
+ sku: product.sku ?? null,
129
+ },
130
+ frequency,
131
+ next_renewal_at: record.next_renewal_at,
132
+ trial: {
133
+ is_trial: record.is_trial,
134
+ trial_ends_at: record.trial_ends_at,
135
+ },
136
+ discount: mapDiscount(record.pricing_snapshot),
137
+ skip_next_cycle: record.skip_next_cycle,
138
+ updated_at: record.updated_at,
139
+ };
140
+ }
141
+ function mapDetail(record) {
142
+ return {
143
+ ...mapListItem(record),
144
+ created_at: record.created_at,
145
+ started_at: record.started_at,
146
+ paused_at: record.paused_at,
147
+ cancelled_at: record.cancelled_at,
148
+ last_renewal_at: record.last_renewal_at,
149
+ shipping_address: record.shipping_address,
150
+ pending_update_data: mapPendingUpdateData(record.pending_update_data),
151
+ initial_order: null,
152
+ renewal_orders: [],
153
+ };
154
+ }
155
+ function mapSubscriptionStatus(status) {
156
+ return status === "active"
157
+ ? subscription_1.SubscriptionAdminStatus.ACTIVE
158
+ : status === "paused"
159
+ ? subscription_1.SubscriptionAdminStatus.PAUSED
160
+ : status === "cancelled"
161
+ ? subscription_1.SubscriptionAdminStatus.CANCELLED
162
+ : subscription_1.SubscriptionAdminStatus.PAST_DUE;
163
+ }
164
+ function mapOrderSummary(record) {
165
+ if (!record?.id || !record.status) {
166
+ return null;
167
+ }
168
+ return {
169
+ order_id: record.id,
170
+ display_id: record.display_id ?? null,
171
+ status: record.status,
172
+ created_at: record.created_at ?? null,
173
+ };
174
+ }
175
+ function mapOrderSubscriptionSummary(record) {
176
+ if (!record?.id ||
177
+ !record.reference ||
178
+ !record.frequency_interval ||
179
+ typeof record.frequency_value !== "number") {
180
+ return {
181
+ is_subscription_order: false,
182
+ subscription: null,
183
+ };
184
+ }
185
+ return {
186
+ is_subscription_order: true,
187
+ subscription: {
188
+ id: record.id,
189
+ reference: record.reference,
190
+ status: mapSubscriptionStatus(record.status),
191
+ frequency_label: formatFrequencyLabel(record.frequency_interval, record.frequency_value),
192
+ next_renewal_at: record.next_renewal_at ?? null,
193
+ },
194
+ };
195
+ }
196
+ function buildFilters(input) {
197
+ const filters = {};
198
+ if (input.status?.length) {
199
+ filters.status = input.status;
200
+ }
201
+ if (input.customer_id) {
202
+ filters.customer_id = input.customer_id;
203
+ }
204
+ if (input.product_id) {
205
+ filters.product_id = input.product_id;
206
+ }
207
+ if (input.variant_id) {
208
+ filters.variant_id = input.variant_id;
209
+ }
210
+ if (typeof input.is_trial === "boolean") {
211
+ filters.is_trial = input.is_trial;
212
+ }
213
+ if (typeof input.skip_next_cycle === "boolean") {
214
+ filters.skip_next_cycle = input.skip_next_cycle;
215
+ }
216
+ if (input.next_renewal_from || input.next_renewal_to) {
217
+ filters.next_renewal_at = {
218
+ ...(input.next_renewal_from ? { $gte: input.next_renewal_from } : {}),
219
+ ...(input.next_renewal_to ? { $lte: input.next_renewal_to } : {}),
220
+ };
221
+ }
222
+ return filters;
223
+ }
224
+ function assertSortableField(order) {
225
+ if (!order) {
226
+ return;
227
+ }
228
+ if (!databaseSortableFields.has(order) &&
229
+ !inMemorySortableFields.has(order)) {
230
+ throw errors_1.subscriptionErrors.invalidData(`Unsupported sort field '${order}'`);
231
+ }
232
+ }
233
+ function sortItems(items, order, direction) {
234
+ const multiplier = direction === "asc" ? 1 : -1;
235
+ return [...items].sort((left, right) => {
236
+ const leftValue = getSortableValue(left, order);
237
+ const rightValue = getSortableValue(right, order);
238
+ if (leftValue < rightValue) {
239
+ return -1 * multiplier;
240
+ }
241
+ if (leftValue > rightValue) {
242
+ return 1 * multiplier;
243
+ }
244
+ return 0;
245
+ });
246
+ }
247
+ function getSortableValue(item, order) {
248
+ switch (order) {
249
+ case "updated_at":
250
+ return item.updated_at ?? "";
251
+ case "status":
252
+ return item.status ?? "";
253
+ case "frequency_interval":
254
+ return item.frequency.interval ?? "";
255
+ case "frequency_value":
256
+ return item.frequency.value ?? 0;
257
+ case "next_renewal_at":
258
+ return item.next_renewal_at ?? "";
259
+ case "trial_ends_at":
260
+ return item.trial.trial_ends_at ?? "";
261
+ case "skip_next_cycle":
262
+ return item.skip_next_cycle ? 1 : 0;
263
+ case "customer_name":
264
+ return item.customer.full_name ?? "";
265
+ case "customer_email":
266
+ return item.customer.email ?? "";
267
+ case "product_title":
268
+ return item.product.product_title ?? "";
269
+ case "variant_title":
270
+ return item.product.variant_title ?? "";
271
+ case "discount_value":
272
+ return item.discount?.value ?? 0;
273
+ default:
274
+ return "";
275
+ }
276
+ }
277
+ function matchesSearch(item, search) {
278
+ const value = search.trim().toLowerCase();
279
+ if (!value.length) {
280
+ return true;
281
+ }
282
+ return [
283
+ item.reference,
284
+ item.customer.full_name,
285
+ item.customer.email,
286
+ item.product.product_title,
287
+ item.product.variant_title,
288
+ item.product.sku ?? "",
289
+ ]
290
+ .join(" ")
291
+ .toLowerCase()
292
+ .includes(value);
293
+ }
294
+ async function listAdminSubscriptions(container, input) {
295
+ assertSortableField(input.order);
296
+ const query = container.resolve(utils_1.ContainerRegistrationKeys.QUERY);
297
+ const filters = buildFilters(input);
298
+ const limit = input.limit ?? 20;
299
+ const offset = input.offset ?? 0;
300
+ const direction = input.direction ?? "desc";
301
+ const order = input.order;
302
+ const isInMemorySort = typeof order === "string" && inMemorySortableFields.has(order);
303
+ const requiresInMemoryProcessing = Boolean(input.q) || isInMemorySort;
304
+ if (!requiresInMemoryProcessing) {
305
+ const { data, metadata: { count = 0, take = limit, skip = offset } = {}, } = await query.graph({
306
+ entity: "subscription",
307
+ fields: [...listFields],
308
+ filters,
309
+ pagination: {
310
+ take: limit,
311
+ skip: offset,
312
+ ...(order && databaseSortableFields.has(order)
313
+ ? {
314
+ order: {
315
+ [order]: direction.toUpperCase(),
316
+ },
317
+ }
318
+ : {}),
319
+ },
320
+ });
321
+ return {
322
+ subscriptions: data.map(mapListItem),
323
+ count,
324
+ limit: take,
325
+ offset: skip,
326
+ };
327
+ }
328
+ const { data } = await query.graph({
329
+ entity: "subscription",
330
+ fields: [...listFields],
331
+ filters,
332
+ pagination: order && databaseSortableFields.has(order)
333
+ ? {
334
+ order: {
335
+ [order]: direction.toUpperCase(),
336
+ },
337
+ }
338
+ : undefined,
339
+ });
340
+ let items = data.map(mapListItem);
341
+ if (input.q) {
342
+ items = items.filter((item) => matchesSearch(item, input.q));
343
+ }
344
+ if (order && isInMemorySort) {
345
+ items = sortItems(items, order, direction);
346
+ }
347
+ return {
348
+ subscriptions: items.slice(offset, offset + limit),
349
+ count: items.length,
350
+ limit,
351
+ offset,
352
+ };
353
+ }
354
+ async function getAdminSubscriptionDetail(container, id) {
355
+ const query = container.resolve(utils_1.ContainerRegistrationKeys.QUERY);
356
+ const { data } = await query.graph({
357
+ entity: "subscription",
358
+ fields: [...detailFields],
359
+ filters: {
360
+ id: [id],
361
+ },
362
+ });
363
+ const subscription = data[0];
364
+ if (!subscription) {
365
+ throw errors_1.subscriptionErrors.notFound("Subscription", id);
366
+ }
367
+ const [subscriptionOrderLinksResult, renewalCyclesResult] = await Promise.all([
368
+ query.graph({
369
+ entity: "subscription_order",
370
+ fields: [
371
+ "subscription.id",
372
+ "order.id",
373
+ "order.display_id",
374
+ "order.status",
375
+ "order.created_at",
376
+ ],
377
+ filters: {
378
+ subscription_id: [id],
379
+ },
380
+ }),
381
+ query.graph({
382
+ entity: "renewal_cycle",
383
+ fields: ["id", "subscription_id", "generated_order_id"],
384
+ filters: {
385
+ subscription_id: [id],
386
+ },
387
+ }),
388
+ ]);
389
+ const renewalCycles = (renewalCyclesResult.data ?? []);
390
+ const renewalOrderIds = [
391
+ ...new Set(renewalCycles
392
+ .map((cycle) => cycle.generated_order_id)
393
+ .filter((orderId) => Boolean(orderId))),
394
+ ];
395
+ const renewalOrdersResult = renewalOrderIds.length
396
+ ? await query.graph({
397
+ entity: "order",
398
+ fields: ["id", "display_id", "status", "created_at"],
399
+ filters: {
400
+ id: renewalOrderIds,
401
+ },
402
+ })
403
+ : { data: [] };
404
+ const renewalOrdersById = new Map((renewalOrdersResult.data ?? []).map((order) => [
405
+ order.id,
406
+ mapOrderSummary(order),
407
+ ]));
408
+ const renewalOrders = renewalCycles
409
+ .map((cycle) => cycle.generated_order_id
410
+ ? renewalOrdersById.get(cycle.generated_order_id) ?? null
411
+ : null)
412
+ .filter((order) => Boolean(order))
413
+ .sort((a, b) => {
414
+ const left = a.created_at ? new Date(a.created_at).getTime() : 0;
415
+ const right = b.created_at ? new Date(b.created_at).getTime() : 0;
416
+ return right - left;
417
+ });
418
+ const renewalOrderIdSet = new Set(renewalOrders.map((order) => order.order_id));
419
+ const initialOrder = (subscriptionOrderLinksResult.data ?? [])
420
+ .map((record) => mapOrderSummary(record.order))
421
+ .filter((order) => order !== null && !renewalOrderIdSet.has(order.order_id))
422
+ .sort((a, b) => {
423
+ const left = a.created_at ? new Date(a.created_at).getTime() : 0;
424
+ const right = b.created_at ? new Date(b.created_at).getTime() : 0;
425
+ return left - right;
426
+ })[0] ?? null;
427
+ return {
428
+ subscription: {
429
+ ...mapDetail(subscription),
430
+ initial_order: initialOrder,
431
+ renewal_orders: renewalOrders,
432
+ },
433
+ };
434
+ }
435
+ async function getAdminOrderSubscriptionSummary(container, orderId) {
436
+ const query = container.resolve(utils_1.ContainerRegistrationKeys.QUERY);
437
+ const { data } = await query.graph({
438
+ entity: "subscription_order",
439
+ fields: [
440
+ "subscription.id",
441
+ "subscription.reference",
442
+ "subscription.status",
443
+ "subscription.frequency_interval",
444
+ "subscription.frequency_value",
445
+ "subscription.next_renewal_at",
446
+ "order.id",
447
+ ],
448
+ filters: {
449
+ order_id: [orderId],
450
+ },
451
+ });
452
+ const link = (data ?? [])[0];
453
+ if (!link?.subscription) {
454
+ return {
455
+ summary: {
456
+ is_subscription_order: false,
457
+ subscription: null,
458
+ },
459
+ };
460
+ }
461
+ return {
462
+ summary: mapOrderSubscriptionSummary(link.subscription),
463
+ };
464
+ }
465
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRtaW4tcXVlcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbW9kdWxlcy9zdWJzY3JpcHRpb24vdXRpbHMvYWRtaW4tcXVlcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUErZEEsd0RBMkVDO0FBRUQsZ0VBMEdDO0FBRUQsNEVBb0NDO0FBM3JCRCxxREFBcUU7QUFDckUsb0VBZTBDO0FBQzFDLHFDQUE2QztBQWlHN0MsTUFBTSxVQUFVLEdBQUc7SUFDakIsSUFBSTtJQUNKLFdBQVc7SUFDWCxRQUFRO0lBQ1IsYUFBYTtJQUNiLFlBQVk7SUFDWixZQUFZO0lBQ1osb0JBQW9CO0lBQ3BCLGlCQUFpQjtJQUNqQixpQkFBaUI7SUFDakIsaUJBQWlCO0lBQ2pCLFdBQVc7SUFDWCxjQUFjO0lBQ2QsaUJBQWlCO0lBQ2pCLFVBQVU7SUFDVixlQUFlO0lBQ2YsbUJBQW1CO0lBQ25CLGtCQUFrQjtJQUNsQixrQkFBa0I7SUFDbEIsWUFBWTtJQUNaLFlBQVk7Q0FDSixDQUFBO0FBRVYsTUFBTSxZQUFZLEdBQUc7SUFDbkIsR0FBRyxVQUFVO0lBQ2IsWUFBWTtJQUNaLHFCQUFxQjtJQUNyQixrQkFBa0I7SUFDbEIscUJBQXFCO0lBQ3JCLFVBQVU7Q0FDRixDQUFBO0FBRVYsTUFBTSxzQkFBc0IsR0FBRyxJQUFJLEdBQUcsQ0FBQztJQUNyQyxZQUFZO0lBQ1osWUFBWTtJQUNaLFFBQVE7SUFDUixvQkFBb0I7SUFDcEIsaUJBQWlCO0lBQ2pCLGlCQUFpQjtJQUNqQixlQUFlO0lBQ2YsaUJBQWlCO0NBQ2xCLENBQUMsQ0FBQTtBQUVGLE1BQU0sc0JBQXNCLEdBQUcsSUFBSSxHQUFHLENBQUM7SUFDckMsZUFBZTtJQUNmLGdCQUFnQjtJQUNoQixlQUFlO0lBQ2YsZUFBZTtJQUNmLGdCQUFnQjtDQUNqQixDQUFDLENBQUE7QUFFRixTQUFTLG9CQUFvQixDQUFDLFFBQWdCLEVBQUUsS0FBYTtJQUMzRCxJQUFJLEtB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
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.subscriptionErrors = void 0;
4
+ const utils_1 = require("@medusajs/framework/utils");
5
+ exports.subscriptionErrors = {
6
+ notFound(entity, id) {
7
+ return new utils_1.MedusaError(utils_1.MedusaError.Types.NOT_FOUND, `${entity} '${id}' was not found`);
8
+ },
9
+ invalidState(id, action, status) {
10
+ return new utils_1.MedusaError(utils_1.MedusaError.Types.CONFLICT, `Subscription '${id}' can't ${action} from status '${status}'`);
11
+ },
12
+ invalidData(message) {
13
+ return new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, message);
14
+ },
15
+ planChangeVariantMismatch(variantId, productId) {
16
+ return new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, `Variant '${variantId}' does not belong to subscription product '${productId}'`);
17
+ },
18
+ planChangeNotAllowed(productId, variantId) {
19
+ return new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, `No active subscription offer is configured for product '${productId}' and variant '${variantId}'`);
20
+ },
21
+ planChangeFrequencyNotAllowed(interval, value) {
22
+ return new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, `Subscription frequency '${interval}:${value}' is not allowed by the active subscription offer`);
23
+ },
24
+ conflict(message) {
25
+ return new utils_1.MedusaError(utils_1.MedusaError.Types.CONFLICT, message);
26
+ },
27
+ };
28
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL21vZHVsZXMvc3Vic2NyaXB0aW9uL3V0aWxzL2Vycm9ycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxxREFBdUQ7QUFFMUMsUUFBQSxrQkFBa0IsR0FBRztJQUNoQyxRQUFRLENBQUMsTUFBYyxFQUFFLEVBQVU7UUFDakMsT0FBTyxJQUFJLG1CQUFXLENBQ3BCLG1CQUFXLENBQUMsS0FBSyxDQUFDLFNBQVMsRUFDM0IsR0FBRyxNQUFNLEtBQUssRUFBRSxpQkFBaUIsQ0FDbEMsQ0FBQTtJQUNILENBQUM7SUFDRCxZQUFZLENBQUMsRUFBVSxFQUFFLE1BQWMsRUFBRSxNQUFjO1FBQ3JELE9BQU8sSUFBSSxtQkFBVyxDQUNwQixtQkFBVyxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQzFCLGlCQUFpQixFQUFFLFdBQVcsTUFBTSxpQkFBaUIsTUFBTSxHQUFHLENBQy9ELENBQUE7SUFDSCxDQUFDO0lBQ0QsV0FBVyxDQUFDLE9BQWU7UUFDekIsT0FBTyxJQUFJLG1CQUFXLENBQUMsbUJBQVcsQ0FBQyxLQUFLLENBQUMsWUFBWSxFQUFFLE9BQU8sQ0FBQyxDQUFBO0lBQ2pFLENBQUM7SUFDRCx5QkFBeUIsQ0FBQyxTQUFpQixFQUFFLFNBQWlCO1FBQzVELE9BQU8sSUFBSSxtQkFBVyxDQUNwQixtQkFBVyxDQUFDLEtBQUssQ0FBQyxZQUFZLEVBQzlCLFlBQVksU0FBUyw4Q0FBOEMsU0FBUyxHQUFHLENBQ2hGLENBQUE7SUFDSCxDQUFDO0lBQ0Qsb0JBQW9CLENBQUMsU0FBaUIsRUFBRSxTQUFpQjtRQUN2RCxPQUFPLElBQUksbUJBQVcsQ0FDcEIsbUJBQVcsQ0FBQyxLQUFLLENBQUMsWUFBWSxFQUM5QiwyREFBMkQsU0FBUyxrQkFBa0IsU0FBUyxHQUFHLENBQ25HLENBQUE7SUFDSCxDQUFDO0lBQ0QsNkJBQTZCLENBQUMsUUFBZ0IsRUFBRSxLQUFhO1FBQzNELE9BQU8sSUFBSSxtQkFBVyxDQUNwQixtQkFBVyxDQUFDLEtBQUssQ0FBQyxZQUFZLEVBQzlCLDJCQUEyQixRQUFRLElBQUksS0FBSyxtREFBbUQsQ0FDaEcsQ0FBQTtJQUNILENBQUM7SUFDRCxRQUFRLENBQUMsT0FBZTtRQUN0QixPQUFPLElBQUksbUJBQVcsQ0FBQyxtQkFBVyxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUE7SUFDN0QsQ0FBQztDQUNGLENBQUEifQ==