@carlonicora/nestjs-neo4jsonapi 6.8.0 → 7.0.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 (186) hide show
  1. package/dist/common/decorators/cache-invalidate.decorator.d.ts +2 -1
  2. package/dist/common/decorators/cache-invalidate.decorator.d.ts.map +1 -1
  3. package/dist/common/decorators/cache-invalidate.decorator.js +23 -3
  4. package/dist/common/decorators/cache-invalidate.decorator.js.map +1 -1
  5. package/dist/common/decorators/validate-id.decorator.d.ts +4 -1
  6. package/dist/common/decorators/validate-id.decorator.d.ts.map +1 -1
  7. package/dist/common/decorators/validate-id.decorator.js +22 -2
  8. package/dist/common/decorators/validate-id.decorator.js.map +1 -1
  9. package/dist/foundations/foundations.modules.d.ts.map +1 -1
  10. package/dist/foundations/foundations.modules.js +2 -0
  11. package/dist/foundations/foundations.modules.js.map +1 -1
  12. package/dist/foundations/handbook/controllers/handbook.controller.d.ts +2 -1
  13. package/dist/foundations/handbook/controllers/handbook.controller.d.ts.map +1 -1
  14. package/dist/foundations/handbook/controllers/handbook.controller.js +5 -4
  15. package/dist/foundations/handbook/controllers/handbook.controller.js.map +1 -1
  16. package/dist/foundations/role/controllers/role.controller.d.ts +3 -2
  17. package/dist/foundations/role/controllers/role.controller.d.ts.map +1 -1
  18. package/dist/foundations/role/controllers/role.controller.js +9 -7
  19. package/dist/foundations/role/controllers/role.controller.js.map +1 -1
  20. package/dist/foundations/stripe/index.d.ts +1 -0
  21. package/dist/foundations/stripe/index.d.ts.map +1 -1
  22. package/dist/foundations/stripe/index.js +2 -0
  23. package/dist/foundations/stripe/index.js.map +1 -1
  24. package/dist/foundations/stripe/services/stripe.payment.service.d.ts +33 -0
  25. package/dist/foundations/stripe/services/stripe.payment.service.d.ts.map +1 -1
  26. package/dist/foundations/stripe/services/stripe.payment.service.js +68 -0
  27. package/dist/foundations/stripe/services/stripe.payment.service.js.map +1 -1
  28. package/dist/foundations/stripe-coupon/controllers/stripe-coupon-code-checkout.controller.d.ts +14 -0
  29. package/dist/foundations/stripe-coupon/controllers/stripe-coupon-code-checkout.controller.d.ts.map +1 -0
  30. package/dist/foundations/stripe-coupon/controllers/stripe-coupon-code-checkout.controller.js +62 -0
  31. package/dist/foundations/stripe-coupon/controllers/stripe-coupon-code-checkout.controller.js.map +1 -0
  32. package/dist/foundations/stripe-coupon/controllers/stripe-coupon-code.controller.d.ts +28 -0
  33. package/dist/foundations/stripe-coupon/controllers/stripe-coupon-code.controller.d.ts.map +1 -0
  34. package/dist/foundations/stripe-coupon/controllers/stripe-coupon-code.controller.js +136 -0
  35. package/dist/foundations/stripe-coupon/controllers/stripe-coupon-code.controller.js.map +1 -0
  36. package/dist/foundations/stripe-coupon/controllers/stripe-coupon.controller.d.ts +26 -0
  37. package/dist/foundations/stripe-coupon/controllers/stripe-coupon.controller.d.ts.map +1 -0
  38. package/dist/foundations/stripe-coupon/controllers/stripe-coupon.controller.js +131 -0
  39. package/dist/foundations/stripe-coupon/controllers/stripe-coupon.controller.js.map +1 -0
  40. package/dist/foundations/stripe-coupon/controllers/stripe-coupon.public.controller.d.ts +11 -0
  41. package/dist/foundations/stripe-coupon/controllers/stripe-coupon.public.controller.d.ts.map +1 -0
  42. package/dist/foundations/stripe-coupon/controllers/stripe-coupon.public.controller.js +45 -0
  43. package/dist/foundations/stripe-coupon/controllers/stripe-coupon.public.controller.js.map +1 -0
  44. package/dist/foundations/stripe-coupon/dtos/stripe-coupon-code.patch.dto.d.ts +13 -0
  45. package/dist/foundations/stripe-coupon/dtos/stripe-coupon-code.patch.dto.d.ts.map +1 -0
  46. package/dist/foundations/stripe-coupon/dtos/stripe-coupon-code.patch.dto.js +55 -0
  47. package/dist/foundations/stripe-coupon/dtos/stripe-coupon-code.patch.dto.js.map +1 -0
  48. package/dist/foundations/stripe-coupon/dtos/stripe-coupon-code.post.dto.d.ts +24 -0
  49. package/dist/foundations/stripe-coupon/dtos/stripe-coupon-code.post.dto.d.ts.map +1 -0
  50. package/dist/foundations/stripe-coupon/dtos/stripe-coupon-code.post.dto.js +105 -0
  51. package/dist/foundations/stripe-coupon/dtos/stripe-coupon-code.post.dto.js.map +1 -0
  52. package/dist/foundations/stripe-coupon/dtos/stripe-coupon.dto.d.ts +8 -0
  53. package/dist/foundations/stripe-coupon/dtos/stripe-coupon.dto.d.ts.map +1 -0
  54. package/dist/foundations/stripe-coupon/dtos/stripe-coupon.dto.js +36 -0
  55. package/dist/foundations/stripe-coupon/dtos/stripe-coupon.dto.js.map +1 -0
  56. package/dist/foundations/stripe-coupon/dtos/stripe-coupon.patch.dto.d.ts +12 -0
  57. package/dist/foundations/stripe-coupon/dtos/stripe-coupon.patch.dto.d.ts.map +1 -0
  58. package/dist/foundations/stripe-coupon/dtos/stripe-coupon.patch.dto.js +51 -0
  59. package/dist/foundations/stripe-coupon/dtos/stripe-coupon.patch.dto.js.map +1 -0
  60. package/dist/foundations/stripe-coupon/dtos/stripe-coupon.post.dto.d.ts +31 -0
  61. package/dist/foundations/stripe-coupon/dtos/stripe-coupon.post.dto.d.ts.map +1 -0
  62. package/dist/foundations/stripe-coupon/dtos/stripe-coupon.post.dto.js +120 -0
  63. package/dist/foundations/stripe-coupon/dtos/stripe-coupon.post.dto.js.map +1 -0
  64. package/dist/foundations/stripe-coupon/entities/stripe-coupon-code.d.ts +28 -0
  65. package/dist/foundations/stripe-coupon/entities/stripe-coupon-code.d.ts.map +1 -0
  66. package/dist/foundations/stripe-coupon/entities/stripe-coupon-code.js +35 -0
  67. package/dist/foundations/stripe-coupon/entities/stripe-coupon-code.js.map +1 -0
  68. package/dist/foundations/stripe-coupon/entities/stripe-coupon-code.meta.d.ts +5 -0
  69. package/dist/foundations/stripe-coupon/entities/stripe-coupon-code.meta.d.ts.map +1 -0
  70. package/dist/foundations/stripe-coupon/entities/stripe-coupon-code.meta.js +12 -0
  71. package/dist/foundations/stripe-coupon/entities/stripe-coupon-code.meta.js.map +1 -0
  72. package/dist/foundations/stripe-coupon/entities/stripe-coupon-offer.d.ts +18 -0
  73. package/dist/foundations/stripe-coupon/entities/stripe-coupon-offer.d.ts.map +1 -0
  74. package/dist/foundations/stripe-coupon/entities/stripe-coupon-offer.js +21 -0
  75. package/dist/foundations/stripe-coupon/entities/stripe-coupon-offer.js.map +1 -0
  76. package/dist/foundations/stripe-coupon/entities/stripe-coupon-offer.meta.d.ts +6 -0
  77. package/dist/foundations/stripe-coupon/entities/stripe-coupon-offer.meta.d.ts.map +1 -0
  78. package/dist/foundations/stripe-coupon/entities/stripe-coupon-offer.meta.js +13 -0
  79. package/dist/foundations/stripe-coupon/entities/stripe-coupon-offer.meta.js.map +1 -0
  80. package/dist/foundations/stripe-coupon/entities/stripe-coupon.d.ts +32 -0
  81. package/dist/foundations/stripe-coupon/entities/stripe-coupon.d.ts.map +1 -0
  82. package/dist/foundations/stripe-coupon/entities/stripe-coupon.js +37 -0
  83. package/dist/foundations/stripe-coupon/entities/stripe-coupon.js.map +1 -0
  84. package/dist/foundations/stripe-coupon/entities/stripe-coupon.meta.d.ts +5 -0
  85. package/dist/foundations/stripe-coupon/entities/stripe-coupon.meta.d.ts.map +1 -0
  86. package/dist/foundations/stripe-coupon/entities/stripe-coupon.meta.js +12 -0
  87. package/dist/foundations/stripe-coupon/entities/stripe-coupon.meta.js.map +1 -0
  88. package/dist/foundations/stripe-coupon/index.d.ts +21 -0
  89. package/dist/foundations/stripe-coupon/index.d.ts.map +1 -0
  90. package/dist/foundations/stripe-coupon/index.js +43 -0
  91. package/dist/foundations/stripe-coupon/index.js.map +1 -0
  92. package/dist/foundations/stripe-coupon/repositories/stripe-coupon-code.repository.d.ts +41 -0
  93. package/dist/foundations/stripe-coupon/repositories/stripe-coupon-code.repository.d.ts.map +1 -0
  94. package/dist/foundations/stripe-coupon/repositories/stripe-coupon-code.repository.js +97 -0
  95. package/dist/foundations/stripe-coupon/repositories/stripe-coupon-code.repository.js.map +1 -0
  96. package/dist/foundations/stripe-coupon/repositories/stripe-coupon.repository.d.ts +29 -0
  97. package/dist/foundations/stripe-coupon/repositories/stripe-coupon.repository.d.ts.map +1 -0
  98. package/dist/foundations/stripe-coupon/repositories/stripe-coupon.repository.js +55 -0
  99. package/dist/foundations/stripe-coupon/repositories/stripe-coupon.repository.js.map +1 -0
  100. package/dist/foundations/stripe-coupon/services/stripe-coupon-api.service.d.ts +70 -0
  101. package/dist/foundations/stripe-coupon/services/stripe-coupon-api.service.d.ts.map +1 -0
  102. package/dist/foundations/stripe-coupon/services/stripe-coupon-api.service.js +172 -0
  103. package/dist/foundations/stripe-coupon/services/stripe-coupon-api.service.js.map +1 -0
  104. package/dist/foundations/stripe-coupon/services/stripe-coupon-code-checkout.service.d.ts +81 -0
  105. package/dist/foundations/stripe-coupon/services/stripe-coupon-code-checkout.service.d.ts.map +1 -0
  106. package/dist/foundations/stripe-coupon/services/stripe-coupon-code-checkout.service.js +206 -0
  107. package/dist/foundations/stripe-coupon/services/stripe-coupon-code-checkout.service.js.map +1 -0
  108. package/dist/foundations/stripe-coupon/services/stripe-coupon-code.service.d.ts +92 -0
  109. package/dist/foundations/stripe-coupon/services/stripe-coupon-code.service.d.ts.map +1 -0
  110. package/dist/foundations/stripe-coupon/services/stripe-coupon-code.service.js +134 -0
  111. package/dist/foundations/stripe-coupon/services/stripe-coupon-code.service.js.map +1 -0
  112. package/dist/foundations/stripe-coupon/services/stripe-coupon-offer.service.d.ts +29 -0
  113. package/dist/foundations/stripe-coupon/services/stripe-coupon-offer.service.d.ts.map +1 -0
  114. package/dist/foundations/stripe-coupon/services/stripe-coupon-offer.service.js +73 -0
  115. package/dist/foundations/stripe-coupon/services/stripe-coupon-offer.service.js.map +1 -0
  116. package/dist/foundations/stripe-coupon/services/stripe-coupon.service.d.ts +65 -0
  117. package/dist/foundations/stripe-coupon/services/stripe-coupon.service.d.ts.map +1 -0
  118. package/dist/foundations/stripe-coupon/services/stripe-coupon.service.js +200 -0
  119. package/dist/foundations/stripe-coupon/services/stripe-coupon.service.js.map +1 -0
  120. package/dist/foundations/stripe-coupon/stripe-coupon.module.d.ts +14 -0
  121. package/dist/foundations/stripe-coupon/stripe-coupon.module.d.ts.map +1 -0
  122. package/dist/foundations/stripe-coupon/stripe-coupon.module.js +91 -0
  123. package/dist/foundations/stripe-coupon/stripe-coupon.module.js.map +1 -0
  124. package/dist/foundations/stripe-coupon/utils/places-left.d.ts +19 -0
  125. package/dist/foundations/stripe-coupon/utils/places-left.d.ts.map +1 -0
  126. package/dist/foundations/stripe-coupon/utils/places-left.js +33 -0
  127. package/dist/foundations/stripe-coupon/utils/places-left.js.map +1 -0
  128. package/dist/foundations/stripe-subscription/backfills/stripe-subscription-backfill.repository.d.ts +22 -0
  129. package/dist/foundations/stripe-subscription/backfills/stripe-subscription-backfill.repository.d.ts.map +1 -0
  130. package/dist/foundations/stripe-subscription/backfills/stripe-subscription-backfill.repository.js +48 -0
  131. package/dist/foundations/stripe-subscription/backfills/stripe-subscription-backfill.repository.js.map +1 -0
  132. package/dist/foundations/stripe-subscription/backfills/stripe-subscription-discount-backfill.service.d.ts +51 -0
  133. package/dist/foundations/stripe-subscription/backfills/stripe-subscription-discount-backfill.service.d.ts.map +1 -0
  134. package/dist/foundations/stripe-subscription/backfills/stripe-subscription-discount-backfill.service.js +129 -0
  135. package/dist/foundations/stripe-subscription/backfills/stripe-subscription-discount-backfill.service.js.map +1 -0
  136. package/dist/foundations/stripe-subscription/controllers/stripe-subscription.controller.d.ts +7 -1
  137. package/dist/foundations/stripe-subscription/controllers/stripe-subscription.controller.d.ts.map +1 -1
  138. package/dist/foundations/stripe-subscription/controllers/stripe-subscription.controller.js +18 -5
  139. package/dist/foundations/stripe-subscription/controllers/stripe-subscription.controller.js.map +1 -1
  140. package/dist/foundations/stripe-subscription/entities/stripe-subscription.discount.d.ts +30 -0
  141. package/dist/foundations/stripe-subscription/entities/stripe-subscription.discount.d.ts.map +1 -0
  142. package/dist/foundations/stripe-subscription/entities/stripe-subscription.discount.js +57 -0
  143. package/dist/foundations/stripe-subscription/entities/stripe-subscription.discount.js.map +1 -0
  144. package/dist/foundations/stripe-subscription/entities/stripe-subscription.entity.d.ts +7 -0
  145. package/dist/foundations/stripe-subscription/entities/stripe-subscription.entity.d.ts.map +1 -1
  146. package/dist/foundations/stripe-subscription/entities/stripe-subscription.map.d.ts.map +1 -1
  147. package/dist/foundations/stripe-subscription/entities/stripe-subscription.map.js +6 -0
  148. package/dist/foundations/stripe-subscription/entities/stripe-subscription.map.js.map +1 -1
  149. package/dist/foundations/stripe-subscription/entities/stripe-subscription.meta.d.ts +8 -0
  150. package/dist/foundations/stripe-subscription/entities/stripe-subscription.meta.d.ts.map +1 -1
  151. package/dist/foundations/stripe-subscription/entities/stripe-subscription.meta.js +9 -1
  152. package/dist/foundations/stripe-subscription/entities/stripe-subscription.meta.js.map +1 -1
  153. package/dist/foundations/stripe-subscription/index.d.ts +3 -2
  154. package/dist/foundations/stripe-subscription/index.d.ts.map +1 -1
  155. package/dist/foundations/stripe-subscription/index.js +5 -1
  156. package/dist/foundations/stripe-subscription/index.js.map +1 -1
  157. package/dist/foundations/stripe-subscription/repositories/stripe-subscription.repository.d.ts +14 -0
  158. package/dist/foundations/stripe-subscription/repositories/stripe-subscription.repository.d.ts.map +1 -1
  159. package/dist/foundations/stripe-subscription/repositories/stripe-subscription.repository.js +32 -0
  160. package/dist/foundations/stripe-subscription/repositories/stripe-subscription.repository.js.map +1 -1
  161. package/dist/foundations/stripe-subscription/serialisers/stripe-subscription.serialiser.d.ts.map +1 -1
  162. package/dist/foundations/stripe-subscription/serialisers/stripe-subscription.serialiser.js +6 -0
  163. package/dist/foundations/stripe-subscription/serialisers/stripe-subscription.serialiser.js.map +1 -1
  164. package/dist/foundations/stripe-subscription/services/stripe-subscription-admin.service.d.ts +36 -3
  165. package/dist/foundations/stripe-subscription/services/stripe-subscription-admin.service.d.ts.map +1 -1
  166. package/dist/foundations/stripe-subscription/services/stripe-subscription-admin.service.js +174 -38
  167. package/dist/foundations/stripe-subscription/services/stripe-subscription-admin.service.js.map +1 -1
  168. package/dist/foundations/stripe-subscription/services/stripe-subscription-api.service.d.ts +7 -0
  169. package/dist/foundations/stripe-subscription/services/stripe-subscription-api.service.d.ts.map +1 -1
  170. package/dist/foundations/stripe-subscription/services/stripe-subscription-api.service.js +29 -2
  171. package/dist/foundations/stripe-subscription/services/stripe-subscription-api.service.js.map +1 -1
  172. package/dist/foundations/stripe-subscription/services/subscription-payment-confirmation.d.ts +27 -0
  173. package/dist/foundations/stripe-subscription/services/subscription-payment-confirmation.d.ts.map +1 -0
  174. package/dist/foundations/stripe-subscription/services/subscription-payment-confirmation.js +62 -0
  175. package/dist/foundations/stripe-subscription/services/subscription-payment-confirmation.js.map +1 -0
  176. package/dist/foundations/stripe-subscription/stripe-subscription.module.d.ts.map +1 -1
  177. package/dist/foundations/stripe-subscription/stripe-subscription.module.js +10 -0
  178. package/dist/foundations/stripe-subscription/stripe-subscription.module.js.map +1 -1
  179. package/dist/foundations/stripe-webhook/processors/stripe-webhook.processor.d.ts.map +1 -1
  180. package/dist/foundations/stripe-webhook/processors/stripe-webhook.processor.js +16 -1
  181. package/dist/foundations/stripe-webhook/processors/stripe-webhook.processor.js.map +1 -1
  182. package/dist/foundations/two-factor/controllers/passkey.controller.d.ts +1 -1
  183. package/dist/foundations/two-factor/controllers/passkey.controller.d.ts.map +1 -1
  184. package/dist/foundations/two-factor/controllers/passkey.controller.js +6 -5
  185. package/dist/foundations/two-factor/controllers/passkey.controller.js.map +1 -1
  186. package/package.json +1 -1
@@ -0,0 +1,51 @@
1
+ import { OnApplicationBootstrap } from "@nestjs/common";
2
+ import { ClsService } from "nestjs-cls";
3
+ import { AppLoggingService } from "../../../core/logging/services/logging.service";
4
+ import { StripeService } from "../../stripe/services/stripe.service";
5
+ import { StripeSubscriptionRepository } from "../repositories/stripe-subscription.repository";
6
+ import { StripeSubscriptionApiService } from "../services/stripe-subscription-api.service";
7
+ import { StripeSubscriptionBackfillRepository } from "./stripe-subscription-backfill.repository";
8
+ /** Marker id: changing it makes every deployed app run the backfill again. */
9
+ export declare const STRIPE_SUBSCRIPTION_DISCOUNT_BACKFILL_ID = "stripe-subscription-discount-20261024";
10
+ export type StripeSubscriptionDiscountBackfillResult = {
11
+ /** Skipped without touching anything: Stripe off, or the marker already exists. */
12
+ skipped: "stripe-not-configured" | "already-completed" | null;
13
+ total: number;
14
+ /** Discount fields written (a discount, or null when Stripe says there is none). */
15
+ updated: number;
16
+ /** Stripe no longer has the subscription; node left as it is. */
17
+ missing: number;
18
+ /** Stripe answered but the discount could not be read; node left as it is. */
19
+ unreadable: number;
20
+ /** Any other error (network, rate limit, Neo4j); node left as it is, run retried on next boot. */
21
+ failed: number;
22
+ };
23
+ /**
24
+ * One-off backfill of the discount fields on every StripeSubscription node.
25
+ *
26
+ * The discount fields are written on create, plan change and Stripe sync only, so a
27
+ * subscription stored before they existed shows no discount until its next change.
28
+ * This reads each subscription from Stripe (with the discount expanded) and writes
29
+ * only the discount fields through {@link StripeSubscriptionRepository.update}.
30
+ *
31
+ * Runs in worker mode at application bootstrap, after the migrator (module init),
32
+ * in the background so a long list never delays the worker. A
33
+ * `(:StripeSubscriptionBackfill)` marker stops later boots from running it again; the
34
+ * marker is written only when no subscription failed for a transient reason, so an
35
+ * outage during the deploy is retried on the next boot. Re-running is harmless: each
36
+ * write is the value Stripe holds now.
37
+ */
38
+ export declare class StripeSubscriptionDiscountBackfillService implements OnApplicationBootstrap {
39
+ private readonly stripeService;
40
+ private readonly stripeSubscriptionApiService;
41
+ private readonly subscriptionRepository;
42
+ private readonly backfillRepository;
43
+ private readonly cls;
44
+ private readonly logger;
45
+ constructor(stripeService: StripeService, stripeSubscriptionApiService: StripeSubscriptionApiService, subscriptionRepository: StripeSubscriptionRepository, backfillRepository: StripeSubscriptionBackfillRepository, cls: ClsService, logger: AppLoggingService);
46
+ onApplicationBootstrap(): void;
47
+ /** Repository queries read the request context, so the run gets an empty one. */
48
+ run(): Promise<StripeSubscriptionDiscountBackfillResult>;
49
+ private backfill;
50
+ }
51
+ //# sourceMappingURL=stripe-subscription-discount-backfill.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stripe-subscription-discount-backfill.service.d.ts","sourceRoot":"","sources":["../../../../src/foundations/stripe-subscription/backfills/stripe-subscription-discount-backfill.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAA0B,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AAChF,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EAAE,iBAAiB,EAAE,MAAM,gDAAgD,CAAC;AAEnF,OAAO,EAAE,aAAa,EAAE,MAAM,sCAAsC,CAAC;AAErE,OAAO,EAAE,4BAA4B,EAAE,MAAM,gDAAgD,CAAC;AAC9F,OAAO,EAAE,4BAA4B,EAAE,MAAM,6CAA6C,CAAC;AAC3F,OAAO,EAAE,oCAAoC,EAAE,MAAM,2CAA2C,CAAC;AAEjG,8EAA8E;AAC9E,eAAO,MAAM,wCAAwC,0CAA0C,CAAC;AAEhG,MAAM,MAAM,wCAAwC,GAAG;IACrD,mFAAmF;IACnF,OAAO,EAAE,uBAAuB,GAAG,mBAAmB,GAAG,IAAI,CAAC;IAC9D,KAAK,EAAE,MAAM,CAAC;IACd,oFAAoF;IACpF,OAAO,EAAE,MAAM,CAAC;IAChB,iEAAiE;IACjE,OAAO,EAAE,MAAM,CAAC;IAChB,8EAA8E;IAC9E,UAAU,EAAE,MAAM,CAAC;IACnB,kGAAkG;IAClG,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF;;;;;;;;;;;;;;GAcG;AACH,qBACa,yCAA0C,YAAW,sBAAsB;IAEpF,OAAO,CAAC,QAAQ,CAAC,aAAa;IAC9B,OAAO,CAAC,QAAQ,CAAC,4BAA4B;IAC7C,OAAO,CAAC,QAAQ,CAAC,sBAAsB;IACvC,OAAO,CAAC,QAAQ,CAAC,kBAAkB;IACnC,OAAO,CAAC,QAAQ,CAAC,GAAG;IACpB,OAAO,CAAC,QAAQ,CAAC,MAAM;gBALN,aAAa,EAAE,aAAa,EAC5B,4BAA4B,EAAE,4BAA4B,EAC1D,sBAAsB,EAAE,4BAA4B,EACpD,kBAAkB,EAAE,oCAAoC,EACxD,GAAG,EAAE,UAAU,EACf,MAAM,EAAE,iBAAiB;IAG5C,sBAAsB,IAAI,IAAI;IAM9B,iFAAiF;IAC3E,GAAG,IAAI,OAAO,CAAC,wCAAwC,CAAC;YAIhD,QAAQ;CAmEvB"}
@@ -0,0 +1,129 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.StripeSubscriptionDiscountBackfillService = exports.STRIPE_SUBSCRIPTION_DISCOUNT_BACKFILL_ID = void 0;
13
+ const common_1 = require("@nestjs/common");
14
+ const nestjs_cls_1 = require("nestjs-cls");
15
+ const logging_service_1 = require("../../../core/logging/services/logging.service");
16
+ const stripe_errors_1 = require("../../stripe/errors/stripe.errors");
17
+ const stripe_service_1 = require("../../stripe/services/stripe.service");
18
+ const stripe_subscription_discount_1 = require("../entities/stripe-subscription.discount");
19
+ const stripe_subscription_repository_1 = require("../repositories/stripe-subscription.repository");
20
+ const stripe_subscription_api_service_1 = require("../services/stripe-subscription-api.service");
21
+ const stripe_subscription_backfill_repository_1 = require("./stripe-subscription-backfill.repository");
22
+ /** Marker id: changing it makes every deployed app run the backfill again. */
23
+ exports.STRIPE_SUBSCRIPTION_DISCOUNT_BACKFILL_ID = "stripe-subscription-discount-20261024";
24
+ /**
25
+ * One-off backfill of the discount fields on every StripeSubscription node.
26
+ *
27
+ * The discount fields are written on create, plan change and Stripe sync only, so a
28
+ * subscription stored before they existed shows no discount until its next change.
29
+ * This reads each subscription from Stripe (with the discount expanded) and writes
30
+ * only the discount fields through {@link StripeSubscriptionRepository.update}.
31
+ *
32
+ * Runs in worker mode at application bootstrap, after the migrator (module init),
33
+ * in the background so a long list never delays the worker. A
34
+ * `(:StripeSubscriptionBackfill)` marker stops later boots from running it again; the
35
+ * marker is written only when no subscription failed for a transient reason, so an
36
+ * outage during the deploy is retried on the next boot. Re-running is harmless: each
37
+ * write is the value Stripe holds now.
38
+ */
39
+ let StripeSubscriptionDiscountBackfillService = class StripeSubscriptionDiscountBackfillService {
40
+ constructor(stripeService, stripeSubscriptionApiService, subscriptionRepository, backfillRepository, cls, logger) {
41
+ this.stripeService = stripeService;
42
+ this.stripeSubscriptionApiService = stripeSubscriptionApiService;
43
+ this.subscriptionRepository = subscriptionRepository;
44
+ this.backfillRepository = backfillRepository;
45
+ this.cls = cls;
46
+ this.logger = logger;
47
+ }
48
+ onApplicationBootstrap() {
49
+ void this.run().catch((error) => {
50
+ this.logger.error("Stripe subscription discount backfill aborted", error);
51
+ });
52
+ }
53
+ /** Repository queries read the request context, so the run gets an empty one. */
54
+ async run() {
55
+ return this.cls.run(() => this.backfill());
56
+ }
57
+ async backfill() {
58
+ const result = {
59
+ skipped: null,
60
+ total: 0,
61
+ updated: 0,
62
+ missing: 0,
63
+ unreadable: 0,
64
+ failed: 0,
65
+ };
66
+ if (!this.stripeService.isConfigured()) {
67
+ return { ...result, skipped: "stripe-not-configured" };
68
+ }
69
+ if (await this.backfillRepository.isCompleted({ id: exports.STRIPE_SUBSCRIPTION_DISCOUNT_BACKFILL_ID })) {
70
+ return { ...result, skipped: "already-completed" };
71
+ }
72
+ const subscriptions = await this.subscriptionRepository.findAll();
73
+ result.total = subscriptions.length;
74
+ this.logger.log(`Stripe subscription discount backfill: ${subscriptions.length} subscriptions`);
75
+ // Sequential on purpose: one Stripe read at a time.
76
+ for (const subscription of subscriptions) {
77
+ try {
78
+ const stripeSubscription = await this.stripeSubscriptionApiService.retrieveSubscription(subscription.stripeSubscriptionId);
79
+ const discount = (0, stripe_subscription_discount_1.discountFromStripeSubscription)(stripeSubscription);
80
+ if (discount === undefined) {
81
+ result.unreadable++;
82
+ this.logger.warn(`Stripe subscription discount backfill: discount of ${subscription.stripeSubscriptionId} is unreadable, left as it is`);
83
+ continue;
84
+ }
85
+ await this.subscriptionRepository.update({ id: subscription.id, discount });
86
+ result.updated++;
87
+ }
88
+ catch (error) {
89
+ if (isMissingInStripe(error)) {
90
+ result.missing++;
91
+ this.logger.warn(`Stripe subscription discount backfill: ${subscription.stripeSubscriptionId} not found in Stripe, left as it is`);
92
+ continue;
93
+ }
94
+ result.failed++;
95
+ this.logger.error(`Stripe subscription discount backfill: ${subscription.stripeSubscriptionId} failed, left as it is`, error);
96
+ }
97
+ }
98
+ const summary = `total=${result.total} updated=${result.updated} missing=${result.missing} unreadable=${result.unreadable} failed=${result.failed}`;
99
+ if (result.failed === 0) {
100
+ await this.backfillRepository.markCompleted({ id: exports.STRIPE_SUBSCRIPTION_DISCOUNT_BACKFILL_ID, summary });
101
+ this.logger.log(`Stripe subscription discount backfill completed: ${summary}`);
102
+ }
103
+ else {
104
+ this.logger.warn(`Stripe subscription discount backfill incomplete, retried on next boot: ${summary}`);
105
+ }
106
+ return result;
107
+ }
108
+ };
109
+ exports.StripeSubscriptionDiscountBackfillService = StripeSubscriptionDiscountBackfillService;
110
+ exports.StripeSubscriptionDiscountBackfillService = StripeSubscriptionDiscountBackfillService = __decorate([
111
+ (0, common_1.Injectable)(),
112
+ __metadata("design:paramtypes", [stripe_service_1.StripeService,
113
+ stripe_subscription_api_service_1.StripeSubscriptionApiService,
114
+ stripe_subscription_repository_1.StripeSubscriptionRepository,
115
+ stripe_subscription_backfill_repository_1.StripeSubscriptionBackfillRepository,
116
+ nestjs_cls_1.ClsService,
117
+ logging_service_1.AppLoggingService])
118
+ ], StripeSubscriptionDiscountBackfillService);
119
+ /**
120
+ * A deleted or unknown subscription: Stripe answers 404 `resource_missing`, which
121
+ * {@link StripeSubscriptionApiService.retrieveSubscription} rethrows as a 400 StripeError.
122
+ */
123
+ function isMissingInStripe(error) {
124
+ if (error instanceof stripe_errors_1.StripeError)
125
+ return error.stripeCode === "resource_missing";
126
+ const raw = error;
127
+ return raw?.code === "resource_missing" || raw?.statusCode === common_1.HttpStatus.NOT_FOUND;
128
+ }
129
+ //# sourceMappingURL=stripe-subscription-discount-backfill.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stripe-subscription-discount-backfill.service.js","sourceRoot":"","sources":["../../../../src/foundations/stripe-subscription/backfills/stripe-subscription-discount-backfill.service.ts"],"names":[],"mappings":"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"}
@@ -3,9 +3,11 @@ import { AuthenticatedRequest } from "../../../common/interfaces/authenticated.r
3
3
  import { StripeSubscriptionCancelDTO, StripeSubscriptionChangePlanDTO, StripeSubscriptionPostDTO } from "../dtos/stripe-subscription.dto";
4
4
  import { StripeSubscriptionStatus } from "../entities/stripe-subscription.entity";
5
5
  import { StripeSubscriptionAdminService } from "../services/stripe-subscription-admin.service";
6
+ import { CacheService } from "../../../core/cache/services/cache.service";
6
7
  export declare class StripeSubscriptionController {
7
8
  private readonly subscriptionService;
8
- constructor(subscriptionService: StripeSubscriptionAdminService);
9
+ private readonly cacheService;
10
+ constructor(subscriptionService: StripeSubscriptionAdminService, cacheService: CacheService);
9
11
  listSubscriptions(req: AuthenticatedRequest, reply: FastifyReply, query: any, status?: StripeSubscriptionStatus): Promise<void>;
10
12
  getSubscription(req: AuthenticatedRequest, reply: FastifyReply, subscriptionId: string): Promise<void>;
11
13
  createSubscription(req: AuthenticatedRequest, reply: FastifyReply, body: StripeSubscriptionPostDTO): Promise<void>;
@@ -14,6 +16,10 @@ export declare class StripeSubscriptionController {
14
16
  resumeSubscription(req: AuthenticatedRequest, reply: FastifyReply, subscriptionId: string): Promise<void>;
15
17
  changePlan(req: AuthenticatedRequest, reply: FastifyReply, subscriptionId: string, body: StripeSubscriptionChangePlanDTO): Promise<void>;
16
18
  previewProration(req: AuthenticatedRequest, reply: FastifyReply, subscriptionId: string, priceId: string): Promise<void>;
19
+ /**
20
+ * Re-reads the subscription from Stripe and stores it. The wizard calls it right after the
21
+ * browser confirmed the first payment, before the webhooks arrive.
22
+ */
17
23
  syncSubscription(req: AuthenticatedRequest, reply: FastifyReply, subscriptionId: string): Promise<void>;
18
24
  }
19
25
  //# sourceMappingURL=stripe-subscription.controller.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"stripe-subscription.controller.d.ts","sourceRoot":"","sources":["../../../../src/foundations/stripe-subscription/controllers/stripe-subscription.controller.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAEvC,OAAO,EAAE,oBAAoB,EAAE,MAAM,4DAA4D,CAAC;AAClG,OAAO,EACL,2BAA2B,EAC3B,+BAA+B,EAC/B,yBAAyB,EAC1B,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,wBAAwB,EAAE,MAAM,wCAAwC,CAAC;AAElF,OAAO,EAAE,8BAA8B,EAAE,MAAM,+CAA+C,CAAC;AAI/F,qBAEa,4BAA4B;IAC3B,OAAO,CAAC,QAAQ,CAAC,mBAAmB;gBAAnB,mBAAmB,EAAE,8BAA8B;IAK1E,iBAAiB,CACd,GAAG,EAAE,oBAAoB,EACzB,KAAK,EAAE,YAAY,EACjB,KAAK,EAAE,GAAG,EACF,MAAM,CAAC,EAAE,wBAAwB;IAc9C,eAAe,CACZ,GAAG,EAAE,oBAAoB,EACzB,KAAK,EAAE,YAAY,EACD,cAAc,EAAE,MAAM;IAa3C,kBAAkB,CACf,GAAG,EAAE,oBAAoB,EACzB,KAAK,EAAE,YAAY,EAClB,IAAI,EAAE,yBAAyB;IA0BnC,kBAAkB,CACf,GAAG,EAAE,oBAAoB,EACzB,KAAK,EAAE,YAAY,EACD,cAAc,EAAE,MAAM,EACvC,IAAI,EAAE,2BAA2B;IAcrC,iBAAiB,CACd,GAAG,EAAE,oBAAoB,EACzB,KAAK,EAAE,YAAY,EACD,cAAc,EAAE,MAAM;IAa3C,kBAAkB,CACf,GAAG,EAAE,oBAAoB,EACzB,KAAK,EAAE,YAAY,EACD,cAAc,EAAE,MAAM;IAa3C,UAAU,CACP,GAAG,EAAE,oBAAoB,EACzB,KAAK,EAAE,YAAY,EACD,cAAc,EAAE,MAAM,EACvC,IAAI,EAAE,+BAA+B;IAoBzC,gBAAgB,CACb,GAAG,EAAE,oBAAoB,EACzB,KAAK,EAAE,YAAY,EACD,cAAc,EAAE,MAAM,EAC7B,OAAO,EAAE,MAAM;IAkB7B,gBAAgB,CACb,GAAG,EAAE,oBAAoB,EACzB,KAAK,EAAE,YAAY,EACD,cAAc,EAAE,MAAM;CA2BlD"}
1
+ {"version":3,"file":"stripe-subscription.controller.d.ts","sourceRoot":"","sources":["../../../../src/foundations/stripe-subscription/controllers/stripe-subscription.controller.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAEvC,OAAO,EAAE,oBAAoB,EAAE,MAAM,4DAA4D,CAAC;AAClG,OAAO,EACL,2BAA2B,EAC3B,+BAA+B,EAC/B,yBAAyB,EAC1B,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,wBAAwB,EAAE,MAAM,wCAAwC,CAAC;AAElF,OAAO,EAAE,8BAA8B,EAAE,MAAM,+CAA+C,CAAC;AAI/F,OAAO,EAAE,YAAY,EAAE,MAAM,4CAA4C,CAAC;AAE1E,qBAEa,4BAA4B;IAErC,OAAO,CAAC,QAAQ,CAAC,mBAAmB;IAEpC,OAAO,CAAC,QAAQ,CAAC,YAAY;gBAFZ,mBAAmB,EAAE,8BAA8B,EAEnD,YAAY,EAAE,YAAY;IAMvC,iBAAiB,CACd,GAAG,EAAE,oBAAoB,EACzB,KAAK,EAAE,YAAY,EACjB,KAAK,EAAE,GAAG,EACF,MAAM,CAAC,EAAE,wBAAwB;IAc9C,eAAe,CACZ,GAAG,EAAE,oBAAoB,EACzB,KAAK,EAAE,YAAY,EACD,cAAc,EAAE,MAAM;IAa3C,kBAAkB,CACf,GAAG,EAAE,oBAAoB,EACzB,KAAK,EAAE,YAAY,EAClB,IAAI,EAAE,yBAAyB;IA0BnC,kBAAkB,CACf,GAAG,EAAE,oBAAoB,EACzB,KAAK,EAAE,YAAY,EACD,cAAc,EAAE,MAAM,EACvC,IAAI,EAAE,2BAA2B;IAcrC,iBAAiB,CACd,GAAG,EAAE,oBAAoB,EACzB,KAAK,EAAE,YAAY,EACD,cAAc,EAAE,MAAM;IAa3C,kBAAkB,CACf,GAAG,EAAE,oBAAoB,EACzB,KAAK,EAAE,YAAY,EACD,cAAc,EAAE,MAAM;IAa3C,UAAU,CACP,GAAG,EAAE,oBAAoB,EACzB,KAAK,EAAE,YAAY,EACD,cAAc,EAAE,MAAM,EACvC,IAAI,EAAE,+BAA+B;IAoBzC,gBAAgB,CACb,GAAG,EAAE,oBAAoB,EACzB,KAAK,EAAE,YAAY,EACD,cAAc,EAAE,MAAM,EAC7B,OAAO,EAAE,MAAM;IAgBnC;;;OAGG;IAOG,gBAAgB,CACb,GAAG,EAAE,oBAAoB,EACzB,KAAK,EAAE,YAAY,EACD,cAAc,EAAE,MAAM;CA0BlD"}
@@ -20,9 +20,14 @@ const stripe_subscription_meta_1 = require("../entities/stripe-subscription.meta
20
20
  const stripe_subscription_admin_service_1 = require("../services/stripe-subscription-admin.service");
21
21
  const module_decorator_1 = require("../../../common/decorators/module.decorator");
22
22
  const core_module_ids_1 = require("../../../common/constants/core-module.ids");
23
+ const cache_invalidate_decorator_1 = require("../../../common/decorators/cache-invalidate.decorator");
24
+ const cache_service_1 = require("../../../core/cache/services/cache.service");
23
25
  let StripeSubscriptionController = class StripeSubscriptionController {
24
- constructor(subscriptionService) {
26
+ constructor(subscriptionService,
27
+ // Read by @CacheInvalidate
28
+ cacheService) {
25
29
  this.subscriptionService = subscriptionService;
30
+ this.cacheService = cacheService;
26
31
  }
27
32
  async listSubscriptions(req, reply, query, status) {
28
33
  const response = await this.subscriptionService.listSubscriptions({
@@ -105,13 +110,18 @@ let StripeSubscriptionController = class StripeSubscriptionController {
105
110
  });
106
111
  reply.send(response);
107
112
  }
113
+ /**
114
+ * Re-reads the subscription from Stripe and stores it. The wizard calls it right after the
115
+ * browser confirmed the first payment, before the webhooks arrive.
116
+ */
117
+ // @Roles sits above @CacheInvalidate, which replaces the method: metadata set
118
+ // below it would land on the discarded original and never be enforced.
108
119
  async syncSubscription(req, reply, subscriptionId) {
109
- // First get the subscription to verify ownership and get stripe ID
120
+ // Ownership: getSubscription answers 404 / 403 for a subscription of another company
110
121
  const subscription = await this.subscriptionService.getSubscription({
111
122
  id: subscriptionId,
112
123
  companyId: req.user.companyId,
113
124
  });
114
- // Extract stripeSubscriptionId from the response
115
125
  const stripeSubscriptionId = subscription.data?.attributes?.stripeSubscriptionId;
116
126
  if (!stripeSubscriptionId) {
117
127
  reply.status(common_1.HttpStatus.BAD_REQUEST).send({ error: "Subscription has no Stripe ID" });
@@ -222,8 +232,10 @@ __decorate([
222
232
  __metadata("design:returntype", Promise)
223
233
  ], StripeSubscriptionController.prototype, "previewProration", null);
224
234
  __decorate([
225
- (0, common_1.Post)(`${stripe_subscription_meta_1.stripeSubscriptionMeta.endpoint}/:subscriptionId/sync`),
235
+ (0, common_1.Post)(`${stripe_subscription_meta_1.stripeSubscriptionMeta.endpoint}/:subscriptionId/${stripe_subscription_meta_1.STRIPE_SUBSCRIPTION_SYNC_SEGMENT}`),
226
236
  (0, common_1.UseGuards)(common_2.JwtAuthGuard),
237
+ (0, common_2.Roles)(common_2.RoleId.CompanyAdministrator),
238
+ (0, cache_invalidate_decorator_1.CacheInvalidate)(stripe_subscription_meta_1.stripeSubscriptionMeta, "subscriptionId"),
227
239
  __param(0, (0, common_1.Req)()),
228
240
  __param(1, (0, common_1.Res)()),
229
241
  __param(2, (0, common_1.Param)("subscriptionId")),
@@ -234,6 +246,7 @@ __decorate([
234
246
  exports.StripeSubscriptionController = StripeSubscriptionController = __decorate([
235
247
  (0, module_decorator_1.ModuleACL)({ module: core_module_ids_1.CoreModuleId.Billing }),
236
248
  (0, common_1.Controller)(),
237
- __metadata("design:paramtypes", [stripe_subscription_admin_service_1.StripeSubscriptionAdminService])
249
+ __metadata("design:paramtypes", [stripe_subscription_admin_service_1.StripeSubscriptionAdminService,
250
+ cache_service_1.CacheService])
238
251
  ], StripeSubscriptionController);
239
252
  //# sourceMappingURL=stripe-subscription.controller.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"stripe-subscription.controller.js","sourceRoot":"","sources":["../../../../src/foundations/stripe-subscription/controllers/stripe-subscription.controller.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"stripe-subscription.controller.js","sourceRoot":"","sources":["../../../../src/foundations/stripe-subscription/controllers/stripe-subscription.controller.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ import Stripe from "stripe";
2
+ import { StripeSubscriptionDiscountDuration } from "./stripe-subscription.entity";
3
+ /**
4
+ * The discount a subscription carries, as written to the StripeSubscription node.
5
+ * Every field is null when the coupon does not set it, so a write clears what an
6
+ * earlier discount left behind.
7
+ */
8
+ export type StripeSubscriptionDiscount = {
9
+ percentOff: number | null;
10
+ amountOff: number | null;
11
+ currency: string | null;
12
+ duration: StripeSubscriptionDiscountDuration;
13
+ durationInMonths: number | null;
14
+ end: Date | null;
15
+ };
16
+ /**
17
+ * The Stripe `expand` path that makes `subscription.discounts` readable by
18
+ * {@link discountFromStripeSubscription}. Without it Stripe returns discount ids only.
19
+ */
20
+ export declare const STRIPE_SUBSCRIPTION_DISCOUNT_EXPAND = "discounts.source.coupon";
21
+ /**
22
+ * Reads the discount of a Stripe subscription (its first subscription-level discount).
23
+ *
24
+ * - `null`: Stripe says the subscription has no discount; the stored one must be cleared.
25
+ * - `undefined`: the discount cannot be read (ids not expanded); leave the stored one as it is.
26
+ */
27
+ export declare function discountFromStripeSubscription(subscription: Pick<Stripe.Subscription, "discounts">): StripeSubscriptionDiscount | null | undefined;
28
+ /** Query parameters for the discount fields; all null when there is no discount. */
29
+ export declare function discountQueryParams(discount: StripeSubscriptionDiscount | null): Record<string, unknown>;
30
+ //# sourceMappingURL=stripe-subscription.discount.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stripe-subscription.discount.d.ts","sourceRoot":"","sources":["../../../../src/foundations/stripe-subscription/entities/stripe-subscription.discount.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAE,kCAAkC,EAAE,MAAM,8BAA8B,CAAC;AAElF;;;;GAIG;AACH,MAAM,MAAM,0BAA0B,GAAG;IACvC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,QAAQ,EAAE,kCAAkC,CAAC;IAC7C,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,GAAG,EAAE,IAAI,GAAG,IAAI,CAAC;CAClB,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,mCAAmC,4BAA4B,CAAC;AAE7E;;;;;GAKG;AACH,wBAAgB,8BAA8B,CAC5C,YAAY,EAAE,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,WAAW,CAAC,GACnD,0BAA0B,GAAG,IAAI,GAAG,SAAS,CAsB/C;AAQD,oFAAoF;AACpF,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,0BAA0B,GAAG,IAAI,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CASxG"}
@@ -0,0 +1,57 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.STRIPE_SUBSCRIPTION_DISCOUNT_EXPAND = void 0;
4
+ exports.discountFromStripeSubscription = discountFromStripeSubscription;
5
+ exports.discountQueryParams = discountQueryParams;
6
+ /**
7
+ * The Stripe `expand` path that makes `subscription.discounts` readable by
8
+ * {@link discountFromStripeSubscription}. Without it Stripe returns discount ids only.
9
+ */
10
+ exports.STRIPE_SUBSCRIPTION_DISCOUNT_EXPAND = "discounts.source.coupon";
11
+ /**
12
+ * Reads the discount of a Stripe subscription (its first subscription-level discount).
13
+ *
14
+ * - `null`: Stripe says the subscription has no discount; the stored one must be cleared.
15
+ * - `undefined`: the discount cannot be read (ids not expanded); leave the stored one as it is.
16
+ */
17
+ function discountFromStripeSubscription(subscription) {
18
+ const discounts = subscription.discounts;
19
+ if (!Array.isArray(discounts))
20
+ return undefined;
21
+ if (discounts.length === 0)
22
+ return null;
23
+ const discount = discounts[0];
24
+ if (typeof discount === "string")
25
+ return undefined;
26
+ // API versions before 2025-09-30 put the coupon on the discount itself.
27
+ const coupon = discount.source?.coupon ?? discount.coupon;
28
+ if (!coupon || typeof coupon === "string")
29
+ return undefined;
30
+ // Stripe's type leaves room for durations added later; one we do not know cannot be stored
31
+ if (!isKnownDuration(coupon.duration))
32
+ return undefined;
33
+ return {
34
+ percentOff: coupon.percent_off ?? null,
35
+ amountOff: coupon.amount_off ?? null,
36
+ currency: coupon.currency ?? null,
37
+ duration: coupon.duration,
38
+ durationInMonths: coupon.duration_in_months ?? null,
39
+ end: discount.end ? new Date(discount.end * 1000) : null,
40
+ };
41
+ }
42
+ const KNOWN_DURATIONS = ["forever", "once", "repeating"];
43
+ function isKnownDuration(duration) {
44
+ return KNOWN_DURATIONS.includes(duration);
45
+ }
46
+ /** Query parameters for the discount fields; all null when there is no discount. */
47
+ function discountQueryParams(discount) {
48
+ return {
49
+ discountPercentOff: discount?.percentOff ?? null,
50
+ discountAmountOff: discount?.amountOff ?? null,
51
+ discountCurrency: discount?.currency ?? null,
52
+ discountDuration: discount?.duration ?? null,
53
+ discountDurationInMonths: discount?.durationInMonths ?? null,
54
+ discountEnd: discount?.end?.toISOString() ?? null,
55
+ };
56
+ }
57
+ //# sourceMappingURL=stripe-subscription.discount.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stripe-subscription.discount.js","sourceRoot":"","sources":["../../../../src/foundations/stripe-subscription/entities/stripe-subscription.discount.ts"],"names":[],"mappings":";;;AA6BA,wEAwBC;AASD,kDASC;AAtDD;;;GAGG;AACU,QAAA,mCAAmC,GAAG,yBAAyB,CAAC;AAE7E;;;;;GAKG;AACH,SAAgB,8BAA8B,CAC5C,YAAoD;IAEpD,MAAM,SAAS,GAAG,YAAY,CAAC,SAAS,CAAC;IACzC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC;QAAE,OAAO,SAAS,CAAC;IAChD,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAExC,MAAM,QAAQ,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;IAC9B,IAAI,OAAO,QAAQ,KAAK,QAAQ;QAAE,OAAO,SAAS,CAAC;IAEnD,wEAAwE;IACxE,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,EAAE,MAAM,IAAK,QAA2D,CAAC,MAAM,CAAC;IAC9G,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ;QAAE,OAAO,SAAS,CAAC;IAC5D,2FAA2F;IAC3F,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,QAAQ,CAAC;QAAE,OAAO,SAAS,CAAC;IAExD,OAAO;QACL,UAAU,EAAE,MAAM,CAAC,WAAW,IAAI,IAAI;QACtC,SAAS,EAAE,MAAM,CAAC,UAAU,IAAI,IAAI;QACpC,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,IAAI;QACjC,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,gBAAgB,EAAE,MAAM,CAAC,kBAAkB,IAAI,IAAI;QACnD,GAAG,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI;KACzD,CAAC;AACJ,CAAC;AAED,MAAM,eAAe,GAAkD,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;AAExG,SAAS,eAAe,CAAC,QAAgB;IACvC,OAAQ,eAAqC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AACnE,CAAC;AAED,oFAAoF;AACpF,SAAgB,mBAAmB,CAAC,QAA2C;IAC7E,OAAO;QACL,kBAAkB,EAAE,QAAQ,EAAE,UAAU,IAAI,IAAI;QAChD,iBAAiB,EAAE,QAAQ,EAAE,SAAS,IAAI,IAAI;QAC9C,gBAAgB,EAAE,QAAQ,EAAE,QAAQ,IAAI,IAAI;QAC5C,gBAAgB,EAAE,QAAQ,EAAE,QAAQ,IAAI,IAAI;QAC5C,wBAAwB,EAAE,QAAQ,EAAE,gBAAgB,IAAI,IAAI;QAC5D,WAAW,EAAE,QAAQ,EAAE,GAAG,EAAE,WAAW,EAAE,IAAI,IAAI;KAClD,CAAC;AACJ,CAAC"}
@@ -2,6 +2,7 @@ import { Entity } from "../../../common/abstracts/entity";
2
2
  import { StripeCustomer } from "../../stripe-customer/entities/stripe-customer.entity";
3
3
  import { StripePrice } from "../../stripe-price/entities/stripe-price.entity";
4
4
  export type StripeSubscriptionStatus = "active" | "past_due" | "unpaid" | "canceled" | "incomplete" | "incomplete_expired" | "trialing" | "paused";
5
+ export type StripeSubscriptionDiscountDuration = "forever" | "once" | "repeating";
5
6
  export type StripeSubscription = Entity & {
6
7
  stripeSubscriptionId: string;
7
8
  stripeSubscriptionItemId?: string;
@@ -14,6 +15,12 @@ export type StripeSubscription = Entity & {
14
15
  trialEnd?: Date;
15
16
  pausedAt?: Date;
16
17
  quantity: number;
18
+ discountPercentOff?: number;
19
+ discountAmountOff?: number;
20
+ discountCurrency?: string;
21
+ discountDuration?: StripeSubscriptionDiscountDuration;
22
+ discountDurationInMonths?: number;
23
+ discountEnd?: Date;
17
24
  stripeCustomer: StripeCustomer;
18
25
  stripePrice: StripePrice;
19
26
  };
@@ -1 +1 @@
1
- {"version":3,"file":"stripe-subscription.entity.d.ts","sourceRoot":"","sources":["../../../../src/foundations/stripe-subscription/entities/stripe-subscription.entity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,kCAAkC,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,uDAAuD,CAAC;AACvF,OAAO,EAAE,WAAW,EAAE,MAAM,iDAAiD,CAAC;AAE9E,MAAM,MAAM,wBAAwB,GAClC,QAAQ,GAAG,UAAU,GAAG,QAAQ,GAAG,UAAU,GAAG,YAAY,GAAG,oBAAoB,GAAG,UAAU,GAAG,QAAQ,CAAC;AAE9G,MAAM,MAAM,kBAAkB,GAAG,MAAM,GAAG;IACxC,oBAAoB,EAAE,MAAM,CAAC;IAC7B,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAElC,MAAM,EAAE,wBAAwB,CAAC;IACjC,kBAAkB,EAAE,IAAI,CAAC;IACzB,gBAAgB,EAAE,IAAI,CAAC;IACvB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,UAAU,CAAC,EAAE,IAAI,CAAC;IAElB,UAAU,CAAC,EAAE,IAAI,CAAC;IAClB,QAAQ,CAAC,EAAE,IAAI,CAAC;IAChB,QAAQ,CAAC,EAAE,IAAI,CAAC;IAEhB,QAAQ,EAAE,MAAM,CAAC;IAEjB,cAAc,EAAE,cAAc,CAAC;IAC/B,WAAW,EAAE,WAAW,CAAC;CAC1B,CAAC"}
1
+ {"version":3,"file":"stripe-subscription.entity.d.ts","sourceRoot":"","sources":["../../../../src/foundations/stripe-subscription/entities/stripe-subscription.entity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,kCAAkC,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,uDAAuD,CAAC;AACvF,OAAO,EAAE,WAAW,EAAE,MAAM,iDAAiD,CAAC;AAE9E,MAAM,MAAM,wBAAwB,GAClC,QAAQ,GAAG,UAAU,GAAG,QAAQ,GAAG,UAAU,GAAG,YAAY,GAAG,oBAAoB,GAAG,UAAU,GAAG,QAAQ,CAAC;AAE9G,MAAM,MAAM,kCAAkC,GAAG,SAAS,GAAG,MAAM,GAAG,WAAW,CAAC;AAElF,MAAM,MAAM,kBAAkB,GAAG,MAAM,GAAG;IACxC,oBAAoB,EAAE,MAAM,CAAC;IAC7B,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAElC,MAAM,EAAE,wBAAwB,CAAC;IACjC,kBAAkB,EAAE,IAAI,CAAC;IACzB,gBAAgB,EAAE,IAAI,CAAC;IACvB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,UAAU,CAAC,EAAE,IAAI,CAAC;IAElB,UAAU,CAAC,EAAE,IAAI,CAAC;IAClB,QAAQ,CAAC,EAAE,IAAI,CAAC;IAChB,QAAQ,CAAC,EAAE,IAAI,CAAC;IAEhB,QAAQ,EAAE,MAAM,CAAC;IAIjB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,gBAAgB,CAAC,EAAE,kCAAkC,CAAC;IACtD,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC,WAAW,CAAC,EAAE,IAAI,CAAC;IAEnB,cAAc,EAAE,cAAc,CAAC;IAC/B,WAAW,EAAE,WAAW,CAAC;CAC1B,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"stripe-subscription.map.d.ts","sourceRoot":"","sources":["../../../../src/foundations/stripe-subscription/entities/stripe-subscription.map.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,8CAA8C,CAAC;AAC7E,OAAO,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAElE,eAAO,MAAM,qBAAqB,GAAI,QAAQ;IAC5C,IAAI,EAAE,GAAG,CAAC;IACV,MAAM,EAAE,GAAG,CAAC;IACZ,aAAa,EAAE,aAAa,CAAC;CAC9B,KAAG,kBAiBH,CAAC"}
1
+ {"version":3,"file":"stripe-subscription.map.d.ts","sourceRoot":"","sources":["../../../../src/foundations/stripe-subscription/entities/stripe-subscription.map.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,8CAA8C,CAAC;AAC7E,OAAO,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAElE,eAAO,MAAM,qBAAqB,GAAI,QAAQ;IAC5C,IAAI,EAAE,GAAG,CAAC;IACV,MAAM,EAAE,GAAG,CAAC;IACZ,aAAa,EAAE,aAAa,CAAC;CAC9B,KAAG,kBAwBH,CAAC"}
@@ -16,6 +16,12 @@ const mapStripeSubscription = (params) => {
16
16
  trialEnd: params.data.trialEnd ? new Date(params.data.trialEnd) : undefined,
17
17
  pausedAt: params.data.pausedAt ? new Date(params.data.pausedAt) : undefined,
18
18
  quantity: Number(params.data.quantity ?? 1),
19
+ discountPercentOff: params.data.discountPercentOff != null ? Number(params.data.discountPercentOff) : undefined,
20
+ discountAmountOff: params.data.discountAmountOff != null ? Number(params.data.discountAmountOff) : undefined,
21
+ discountCurrency: params.data.discountCurrency ?? undefined,
22
+ discountDuration: params.data.discountDuration ?? undefined,
23
+ discountDurationInMonths: params.data.discountDurationInMonths != null ? Number(params.data.discountDurationInMonths) : undefined,
24
+ discountEnd: params.data.discountEnd ? new Date(params.data.discountEnd) : undefined,
19
25
  stripeCustomer: undefined,
20
26
  stripePrice: undefined,
21
27
  };
@@ -1 +1 @@
1
- {"version":3,"file":"stripe-subscription.map.js","sourceRoot":"","sources":["../../../../src/foundations/stripe-subscription/entities/stripe-subscription.map.ts"],"names":[],"mappings":";;;AAAA,6DAA6D;AAItD,MAAM,qBAAqB,GAAG,CAAC,MAIrC,EAAsB,EAAE;IACvB,OAAO;QACL,GAAG,IAAA,kBAAS,EAAC,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC;QACrC,oBAAoB,EAAE,MAAM,CAAC,IAAI,CAAC,oBAAoB;QACtD,wBAAwB,EAAE,MAAM,CAAC,IAAI,CAAC,wBAAwB;QAC9D,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM;QAC1B,kBAAkB,EAAE,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE;QAC1G,gBAAgB,EAAE,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE;QACpG,iBAAiB,EAAE,MAAM,CAAC,IAAI,CAAC,iBAAiB,KAAK,IAAI;QACzD,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS;QACjF,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS;QACjF,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS;QAC3E,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS;QAC3E,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,CAAC;QAC3C,cAAc,EAAE,SAAS;QACzB,WAAW,EAAE,SAAS;KACvB,CAAC;AACJ,CAAC,CAAC;AArBW,QAAA,qBAAqB,yBAqBhC"}
1
+ {"version":3,"file":"stripe-subscription.map.js","sourceRoot":"","sources":["../../../../src/foundations/stripe-subscription/entities/stripe-subscription.map.ts"],"names":[],"mappings":";;;AAAA,6DAA6D;AAItD,MAAM,qBAAqB,GAAG,CAAC,MAIrC,EAAsB,EAAE;IACvB,OAAO;QACL,GAAG,IAAA,kBAAS,EAAC,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC;QACrC,oBAAoB,EAAE,MAAM,CAAC,IAAI,CAAC,oBAAoB;QACtD,wBAAwB,EAAE,MAAM,CAAC,IAAI,CAAC,wBAAwB;QAC9D,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM;QAC1B,kBAAkB,EAAE,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE;QAC1G,gBAAgB,EAAE,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE;QACpG,iBAAiB,EAAE,MAAM,CAAC,IAAI,CAAC,iBAAiB,KAAK,IAAI;QACzD,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS;QACjF,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS;QACjF,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS;QAC3E,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS;QAC3E,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,CAAC;QAC3C,kBAAkB,EAAE,MAAM,CAAC,IAAI,CAAC,kBAAkB,IAAI,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,SAAS;QAC/G,iBAAiB,EAAE,MAAM,CAAC,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,SAAS;QAC5G,gBAAgB,EAAE,MAAM,CAAC,IAAI,CAAC,gBAAgB,IAAI,SAAS;QAC3D,gBAAgB,EAAE,MAAM,CAAC,IAAI,CAAC,gBAAgB,IAAI,SAAS;QAC3D,wBAAwB,EACtB,MAAM,CAAC,IAAI,CAAC,wBAAwB,IAAI,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC,SAAS;QACzG,WAAW,EAAE,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,SAAS;QACpF,cAAc,EAAE,SAAS;QACzB,WAAW,EAAE,SAAS;KACvB,CAAC;AACJ,CAAC,CAAC;AA5BW,QAAA,qBAAqB,yBA4BhC"}
@@ -1,3 +1,11 @@
1
1
  import { DataMeta } from "../../../common/interfaces/datamodel.interface";
2
2
  export declare const stripeSubscriptionMeta: DataMeta;
3
+ /** Route segment of POST stripe-subscriptions/:subscriptionId/sync */
4
+ export declare const STRIPE_SUBSCRIPTION_SYNC_SEGMENT = "sync";
5
+ /**
6
+ * Stripe `cancellation_details.comment` on an unpaid first-payment attempt cancelled
7
+ * because the GM retried. That subscription never granted anything, so its
8
+ * `customer.subscription.deleted` webhook must not take anything away.
9
+ */
10
+ export declare const STRIPE_UNPAID_ATTEMPT_CANCELLATION_COMMENT = "unpaid attempt replaced by a new one";
3
11
  //# sourceMappingURL=stripe-subscription.meta.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"stripe-subscription.meta.d.ts","sourceRoot":"","sources":["../../../../src/foundations/stripe-subscription/entities/stripe-subscription.meta.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,gDAAgD,CAAC;AAE1E,eAAO,MAAM,sBAAsB,EAAE,QAKpC,CAAC"}
1
+ {"version":3,"file":"stripe-subscription.meta.d.ts","sourceRoot":"","sources":["../../../../src/foundations/stripe-subscription/entities/stripe-subscription.meta.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,gDAAgD,CAAC;AAE1E,eAAO,MAAM,sBAAsB,EAAE,QAKpC,CAAC;AAEF,sEAAsE;AACtE,eAAO,MAAM,gCAAgC,SAAS,CAAC;AAEvD;;;;GAIG;AACH,eAAO,MAAM,0CAA0C,yCAAyC,CAAC"}
@@ -1,10 +1,18 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.stripeSubscriptionMeta = void 0;
3
+ exports.STRIPE_UNPAID_ATTEMPT_CANCELLATION_COMMENT = exports.STRIPE_SUBSCRIPTION_SYNC_SEGMENT = exports.stripeSubscriptionMeta = void 0;
4
4
  exports.stripeSubscriptionMeta = {
5
5
  type: "stripe-subscriptions",
6
6
  endpoint: "stripe-subscriptions",
7
7
  nodeName: "stripeSubscription",
8
8
  labelName: "StripeSubscription",
9
9
  };
10
+ /** Route segment of POST stripe-subscriptions/:subscriptionId/sync */
11
+ exports.STRIPE_SUBSCRIPTION_SYNC_SEGMENT = "sync";
12
+ /**
13
+ * Stripe `cancellation_details.comment` on an unpaid first-payment attempt cancelled
14
+ * because the GM retried. That subscription never granted anything, so its
15
+ * `customer.subscription.deleted` webhook must not take anything away.
16
+ */
17
+ exports.STRIPE_UNPAID_ATTEMPT_CANCELLATION_COMMENT = "unpaid attempt replaced by a new one";
10
18
  //# sourceMappingURL=stripe-subscription.meta.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"stripe-subscription.meta.js","sourceRoot":"","sources":["../../../../src/foundations/stripe-subscription/entities/stripe-subscription.meta.ts"],"names":[],"mappings":";;;AAEa,QAAA,sBAAsB,GAAa;IAC9C,IAAI,EAAE,sBAAsB;IAC5B,QAAQ,EAAE,sBAAsB;IAChC,QAAQ,EAAE,oBAAoB;IAC9B,SAAS,EAAE,oBAAoB;CAChC,CAAC"}
1
+ {"version":3,"file":"stripe-subscription.meta.js","sourceRoot":"","sources":["../../../../src/foundations/stripe-subscription/entities/stripe-subscription.meta.ts"],"names":[],"mappings":";;;AAEa,QAAA,sBAAsB,GAAa;IAC9C,IAAI,EAAE,sBAAsB;IAC5B,QAAQ,EAAE,sBAAsB;IAChC,QAAQ,EAAE,oBAAoB;IAC9B,SAAS,EAAE,oBAAoB;CAChC,CAAC;AAEF,sEAAsE;AACzD,QAAA,gCAAgC,GAAG,MAAM,CAAC;AAEvD;;;;GAIG;AACU,QAAA,0CAA0C,GAAG,sCAAsC,CAAC"}
@@ -9,9 +9,10 @@ export { StripeSubscriptionController } from "./controllers/stripe-subscription.
9
9
  export { StripeSubscriptionApiService } from "./services/stripe-subscription-api.service";
10
10
  export { StripeSubscriptionAdminService } from "./services/stripe-subscription-admin.service";
11
11
  export { StripeSubscriptionRepository } from "./repositories/stripe-subscription.repository";
12
- export { StripeSubscription, StripeSubscriptionStatus } from "./entities/stripe-subscription.entity";
12
+ export { StripeSubscription, StripeSubscriptionDiscountDuration, StripeSubscriptionStatus, } from "./entities/stripe-subscription.entity";
13
+ export { STRIPE_SUBSCRIPTION_DISCOUNT_EXPAND, StripeSubscriptionDiscount, discountFromStripeSubscription, } from "./entities/stripe-subscription.discount";
13
14
  export { StripeSubscriptionModel } from "./entities/stripe-subscription.model";
14
- export { stripeSubscriptionMeta } from "./entities/stripe-subscription.meta";
15
+ export { STRIPE_SUBSCRIPTION_SYNC_SEGMENT, stripeSubscriptionMeta } from "./entities/stripe-subscription.meta";
15
16
  export { mapStripeSubscription } from "./entities/stripe-subscription.map";
16
17
  export { StripeSubscriptionDTO, StripeSubscriptionPostDTO, StripeSubscriptionPostDataDTO, StripeSubscriptionPostAttributesDTO, StripeSubscriptionCancelDTO, StripeSubscriptionCancelDataDTO, StripeSubscriptionCancelAttributesDTO, StripeSubscriptionChangePlanDTO, StripeSubscriptionChangePlanDataDTO, StripeSubscriptionChangePlanAttributesDTO, } from "./dtos/stripe-subscription.dto";
17
18
  export { StripeSubscriptionSerialiser } from "./serialisers/stripe-subscription.serialiser";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/foundations/stripe-subscription/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,wBAAwB,EAAE,MAAM,8BAA8B,CAAC;AAGxE,OAAO,EAAE,4BAA4B,EAAE,MAAM,8CAA8C,CAAC;AAG5F,OAAO,EAAE,4BAA4B,EAAE,MAAM,4CAA4C,CAAC;AAC1F,OAAO,EAAE,8BAA8B,EAAE,MAAM,8CAA8C,CAAC;AAG9F,OAAO,EAAE,4BAA4B,EAAE,MAAM,+CAA+C,CAAC;AAG7F,OAAO,EAAE,kBAAkB,EAAE,wBAAwB,EAAE,MAAM,uCAAuC,CAAC;AACrG,OAAO,EAAE,uBAAuB,EAAE,MAAM,sCAAsC,CAAC;AAC/E,OAAO,EAAE,sBAAsB,EAAE,MAAM,qCAAqC,CAAC;AAC7E,OAAO,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAG3E,OAAO,EACL,qBAAqB,EACrB,yBAAyB,EACzB,6BAA6B,EAC7B,mCAAmC,EACnC,2BAA2B,EAC3B,+BAA+B,EAC/B,qCAAqC,EACrC,+BAA+B,EAC/B,mCAAmC,EACnC,yCAAyC,GAC1C,MAAM,gCAAgC,CAAC;AAGxC,OAAO,EAAE,4BAA4B,EAAE,MAAM,8CAA8C,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/foundations/stripe-subscription/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,wBAAwB,EAAE,MAAM,8BAA8B,CAAC;AAGxE,OAAO,EAAE,4BAA4B,EAAE,MAAM,8CAA8C,CAAC;AAG5F,OAAO,EAAE,4BAA4B,EAAE,MAAM,4CAA4C,CAAC;AAC1F,OAAO,EAAE,8BAA8B,EAAE,MAAM,8CAA8C,CAAC;AAG9F,OAAO,EAAE,4BAA4B,EAAE,MAAM,+CAA+C,CAAC;AAG7F,OAAO,EACL,kBAAkB,EAClB,kCAAkC,EAClC,wBAAwB,GACzB,MAAM,uCAAuC,CAAC;AAC/C,OAAO,EACL,mCAAmC,EACnC,0BAA0B,EAC1B,8BAA8B,GAC/B,MAAM,yCAAyC,CAAC;AACjD,OAAO,EAAE,uBAAuB,EAAE,MAAM,sCAAsC,CAAC;AAC/E,OAAO,EAAE,gCAAgC,EAAE,sBAAsB,EAAE,MAAM,qCAAqC,CAAC;AAC/G,OAAO,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAG3E,OAAO,EACL,qBAAqB,EACrB,yBAAyB,EACzB,6BAA6B,EAC7B,mCAAmC,EACnC,2BAA2B,EAC3B,+BAA+B,EAC/B,qCAAqC,EACrC,+BAA+B,EAC/B,mCAAmC,EACnC,yCAAyC,GAC1C,MAAM,gCAAgC,CAAC;AAGxC,OAAO,EAAE,4BAA4B,EAAE,MAAM,8CAA8C,CAAC"}
@@ -6,7 +6,7 @@
6
6
  * Use these exports when importing stripe-subscription functionality from other modules.
7
7
  */
8
8
  Object.defineProperty(exports, "__esModule", { value: true });
9
- exports.StripeSubscriptionSerialiser = exports.StripeSubscriptionChangePlanAttributesDTO = exports.StripeSubscriptionChangePlanDataDTO = exports.StripeSubscriptionChangePlanDTO = exports.StripeSubscriptionCancelAttributesDTO = exports.StripeSubscriptionCancelDataDTO = exports.StripeSubscriptionCancelDTO = exports.StripeSubscriptionPostAttributesDTO = exports.StripeSubscriptionPostDataDTO = exports.StripeSubscriptionPostDTO = exports.StripeSubscriptionDTO = exports.mapStripeSubscription = exports.stripeSubscriptionMeta = exports.StripeSubscriptionModel = exports.StripeSubscriptionRepository = exports.StripeSubscriptionAdminService = exports.StripeSubscriptionApiService = exports.StripeSubscriptionController = exports.StripeSubscriptionModule = void 0;
9
+ exports.StripeSubscriptionSerialiser = exports.StripeSubscriptionChangePlanAttributesDTO = exports.StripeSubscriptionChangePlanDataDTO = exports.StripeSubscriptionChangePlanDTO = exports.StripeSubscriptionCancelAttributesDTO = exports.StripeSubscriptionCancelDataDTO = exports.StripeSubscriptionCancelDTO = exports.StripeSubscriptionPostAttributesDTO = exports.StripeSubscriptionPostDataDTO = exports.StripeSubscriptionPostDTO = exports.StripeSubscriptionDTO = exports.mapStripeSubscription = exports.stripeSubscriptionMeta = exports.STRIPE_SUBSCRIPTION_SYNC_SEGMENT = exports.StripeSubscriptionModel = exports.discountFromStripeSubscription = exports.STRIPE_SUBSCRIPTION_DISCOUNT_EXPAND = exports.StripeSubscriptionRepository = exports.StripeSubscriptionAdminService = exports.StripeSubscriptionApiService = exports.StripeSubscriptionController = exports.StripeSubscriptionModule = void 0;
10
10
  // Module
11
11
  var stripe_subscription_module_1 = require("./stripe-subscription.module");
12
12
  Object.defineProperty(exports, "StripeSubscriptionModule", { enumerable: true, get: function () { return stripe_subscription_module_1.StripeSubscriptionModule; } });
@@ -21,9 +21,13 @@ Object.defineProperty(exports, "StripeSubscriptionAdminService", { enumerable: t
21
21
  // Repositories
22
22
  var stripe_subscription_repository_1 = require("./repositories/stripe-subscription.repository");
23
23
  Object.defineProperty(exports, "StripeSubscriptionRepository", { enumerable: true, get: function () { return stripe_subscription_repository_1.StripeSubscriptionRepository; } });
24
+ var stripe_subscription_discount_1 = require("./entities/stripe-subscription.discount");
25
+ Object.defineProperty(exports, "STRIPE_SUBSCRIPTION_DISCOUNT_EXPAND", { enumerable: true, get: function () { return stripe_subscription_discount_1.STRIPE_SUBSCRIPTION_DISCOUNT_EXPAND; } });
26
+ Object.defineProperty(exports, "discountFromStripeSubscription", { enumerable: true, get: function () { return stripe_subscription_discount_1.discountFromStripeSubscription; } });
24
27
  var stripe_subscription_model_1 = require("./entities/stripe-subscription.model");
25
28
  Object.defineProperty(exports, "StripeSubscriptionModel", { enumerable: true, get: function () { return stripe_subscription_model_1.StripeSubscriptionModel; } });
26
29
  var stripe_subscription_meta_1 = require("./entities/stripe-subscription.meta");
30
+ Object.defineProperty(exports, "STRIPE_SUBSCRIPTION_SYNC_SEGMENT", { enumerable: true, get: function () { return stripe_subscription_meta_1.STRIPE_SUBSCRIPTION_SYNC_SEGMENT; } });
27
31
  Object.defineProperty(exports, "stripeSubscriptionMeta", { enumerable: true, get: function () { return stripe_subscription_meta_1.stripeSubscriptionMeta; } });
28
32
  var stripe_subscription_map_1 = require("./entities/stripe-subscription.map");
29
33
  Object.defineProperty(exports, "mapStripeSubscription", { enumerable: true, get: function () { return stripe_subscription_map_1.mapStripeSubscription; } });
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/foundations/stripe-subscription/index.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAEH,SAAS;AACT,2EAAwE;AAA/D,sIAAA,wBAAwB,OAAA;AAEjC,cAAc;AACd,+FAA4F;AAAnF,8IAAA,4BAA4B,OAAA;AAErC,WAAW;AACX,8FAA0F;AAAjF,+IAAA,4BAA4B,OAAA;AACrC,kGAA8F;AAArF,mJAAA,8BAA8B,OAAA;AAEvC,eAAe;AACf,gGAA6F;AAApF,8IAAA,4BAA4B,OAAA;AAIrC,kFAA+E;AAAtE,oIAAA,uBAAuB,OAAA;AAChC,gFAA6E;AAApE,kIAAA,sBAAsB,OAAA;AAC/B,8EAA2E;AAAlE,gIAAA,qBAAqB,OAAA;AAE9B,OAAO;AACP,0EAWwC;AAVtC,gIAAA,qBAAqB,OAAA;AACrB,oIAAA,yBAAyB,OAAA;AACzB,wIAAA,6BAA6B,OAAA;AAC7B,8IAAA,mCAAmC,OAAA;AACnC,sIAAA,2BAA2B,OAAA;AAC3B,0IAAA,+BAA+B,OAAA;AAC/B,gJAAA,qCAAqC,OAAA;AACrC,0IAAA,+BAA+B,OAAA;AAC/B,8IAAA,mCAAmC,OAAA;AACnC,oJAAA,yCAAyC,OAAA;AAG3C,cAAc;AACd,+FAA4F;AAAnF,8IAAA,4BAA4B,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/foundations/stripe-subscription/index.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAEH,SAAS;AACT,2EAAwE;AAA/D,sIAAA,wBAAwB,OAAA;AAEjC,cAAc;AACd,+FAA4F;AAAnF,8IAAA,4BAA4B,OAAA;AAErC,WAAW;AACX,8FAA0F;AAAjF,+IAAA,4BAA4B,OAAA;AACrC,kGAA8F;AAArF,mJAAA,8BAA8B,OAAA;AAEvC,eAAe;AACf,gGAA6F;AAApF,8IAAA,4BAA4B,OAAA;AAQrC,wFAIiD;AAH/C,mJAAA,mCAAmC,OAAA;AAEnC,8IAAA,8BAA8B,OAAA;AAEhC,kFAA+E;AAAtE,oIAAA,uBAAuB,OAAA;AAChC,gFAA+G;AAAtG,4IAAA,gCAAgC,OAAA;AAAE,kIAAA,sBAAsB,OAAA;AACjE,8EAA2E;AAAlE,gIAAA,qBAAqB,OAAA;AAE9B,OAAO;AACP,0EAWwC;AAVtC,gIAAA,qBAAqB,OAAA;AACrB,oIAAA,yBAAyB,OAAA;AACzB,wIAAA,6BAA6B,OAAA;AAC7B,8IAAA,mCAAmC,OAAA;AACnC,sIAAA,2BAA2B,OAAA;AAC3B,0IAAA,+BAA+B,OAAA;AAC/B,gJAAA,qCAAqC,OAAA;AACrC,0IAAA,+BAA+B,OAAA;AAC/B,8IAAA,mCAAmC,OAAA;AACnC,oJAAA,yCAAyC,OAAA;AAG3C,cAAc;AACd,+FAA4F;AAAnF,8IAAA,4BAA4B,OAAA"}