@carlonicora/nestjs-neo4jsonapi 7.1.0 → 8.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 (118) hide show
  1. package/dist/bootstrap/app.module.factory.d.ts.map +1 -1
  2. package/dist/bootstrap/app.module.factory.js +1 -0
  3. package/dist/bootstrap/app.module.factory.js.map +1 -1
  4. package/dist/bootstrap/bootstrap.options.d.ts +20 -0
  5. package/dist/bootstrap/bootstrap.options.d.ts.map +1 -1
  6. package/dist/core/email/templates/en/cardExpiring.hbs +28 -0
  7. package/dist/core/email/templates/en/paymentFailure.hbs +4 -0
  8. package/dist/foundations/billing/billing.module.d.ts +26 -0
  9. package/dist/foundations/billing/billing.module.d.ts.map +1 -0
  10. package/dist/foundations/billing/billing.module.js +74 -0
  11. package/dist/foundations/billing/billing.module.js.map +1 -0
  12. package/dist/foundations/billing/cron/billing-lifecycle.cron.d.ts +16 -0
  13. package/dist/foundations/billing/cron/billing-lifecycle.cron.d.ts.map +1 -0
  14. package/dist/foundations/billing/cron/billing-lifecycle.cron.js +52 -0
  15. package/dist/foundations/billing/cron/billing-lifecycle.cron.js.map +1 -0
  16. package/dist/foundations/billing/index.d.ts +7 -0
  17. package/dist/foundations/billing/index.d.ts.map +1 -0
  18. package/dist/foundations/billing/index.js +28 -0
  19. package/dist/foundations/billing/index.js.map +1 -0
  20. package/dist/foundations/billing/interfaces/billing.config.interface.d.ts +71 -0
  21. package/dist/foundations/billing/interfaces/billing.config.interface.d.ts.map +1 -0
  22. package/dist/foundations/billing/interfaces/billing.config.interface.js +41 -0
  23. package/dist/foundations/billing/interfaces/billing.config.interface.js.map +1 -0
  24. package/dist/foundations/billing/processors/billing-email.jobs.d.ts +127 -0
  25. package/dist/foundations/billing/processors/billing-email.jobs.d.ts.map +1 -0
  26. package/dist/foundations/billing/processors/billing-email.jobs.js +196 -0
  27. package/dist/foundations/billing/processors/billing-email.jobs.js.map +1 -0
  28. package/dist/foundations/billing/processors/billing-email.processor.d.ts +33 -0
  29. package/dist/foundations/billing/processors/billing-email.processor.d.ts.map +1 -0
  30. package/dist/foundations/billing/processors/billing-email.processor.js +95 -0
  31. package/dist/foundations/billing/processors/billing-email.processor.js.map +1 -0
  32. package/dist/foundations/billing/services/card-expiry-warning.service.d.ts +58 -0
  33. package/dist/foundations/billing/services/card-expiry-warning.service.d.ts.map +1 -0
  34. package/dist/foundations/billing/services/card-expiry-warning.service.js +90 -0
  35. package/dist/foundations/billing/services/card-expiry-warning.service.js.map +1 -0
  36. package/dist/foundations/company/repositories/company.repository.d.ts +2 -0
  37. package/dist/foundations/company/repositories/company.repository.d.ts.map +1 -1
  38. package/dist/foundations/company/repositories/company.repository.js +2 -2
  39. package/dist/foundations/company/repositories/company.repository.js.map +1 -1
  40. package/dist/foundations/foundations.modules.d.ts +3 -0
  41. package/dist/foundations/foundations.modules.d.ts.map +1 -1
  42. package/dist/foundations/foundations.modules.js +3 -1
  43. package/dist/foundations/foundations.modules.js.map +1 -1
  44. package/dist/foundations/index.d.ts +1 -0
  45. package/dist/foundations/index.d.ts.map +1 -1
  46. package/dist/foundations/index.js +1 -0
  47. package/dist/foundations/index.js.map +1 -1
  48. package/dist/foundations/stripe-customer/services/stripe-customer-api.service.d.ts +17 -0
  49. package/dist/foundations/stripe-customer/services/stripe-customer-api.service.d.ts.map +1 -1
  50. package/dist/foundations/stripe-customer/services/stripe-customer-api.service.js +40 -0
  51. package/dist/foundations/stripe-customer/services/stripe-customer-api.service.js.map +1 -1
  52. package/dist/foundations/stripe-invoice/entities/stripe-invoice.entity.d.ts +1 -1
  53. package/dist/foundations/stripe-invoice/entities/stripe-invoice.entity.d.ts.map +1 -1
  54. package/dist/foundations/stripe-invoice/serialisers/stripe-invoice.serialiser.js +2 -2
  55. package/dist/foundations/stripe-invoice/serialisers/stripe-invoice.serialiser.js.map +1 -1
  56. package/dist/foundations/stripe-invoice/services/stripe-invoice-api.service.d.ts +13 -0
  57. package/dist/foundations/stripe-invoice/services/stripe-invoice-api.service.d.ts.map +1 -1
  58. package/dist/foundations/stripe-invoice/services/stripe-invoice-api.service.js +21 -0
  59. package/dist/foundations/stripe-invoice/services/stripe-invoice-api.service.js.map +1 -1
  60. package/dist/foundations/stripe-subscription/controllers/stripe-subscription.controller.d.ts +1 -3
  61. package/dist/foundations/stripe-subscription/controllers/stripe-subscription.controller.d.ts.map +1 -1
  62. package/dist/foundations/stripe-subscription/controllers/stripe-subscription.controller.js +5 -38
  63. package/dist/foundations/stripe-subscription/controllers/stripe-subscription.controller.js.map +1 -1
  64. package/dist/foundations/stripe-subscription/entities/stripe-subscription.d.ts +60 -0
  65. package/dist/foundations/stripe-subscription/entities/stripe-subscription.d.ts.map +1 -0
  66. package/dist/foundations/stripe-subscription/entities/stripe-subscription.discount.d.ts +1 -1
  67. package/dist/foundations/stripe-subscription/entities/stripe-subscription.discount.d.ts.map +1 -1
  68. package/dist/foundations/stripe-subscription/entities/stripe-subscription.js +61 -0
  69. package/dist/foundations/stripe-subscription/entities/stripe-subscription.js.map +1 -0
  70. package/dist/foundations/stripe-subscription/index.d.ts +1 -4
  71. package/dist/foundations/stripe-subscription/index.d.ts.map +1 -1
  72. package/dist/foundations/stripe-subscription/index.js +4 -8
  73. package/dist/foundations/stripe-subscription/index.js.map +1 -1
  74. package/dist/foundations/stripe-subscription/repositories/stripe-subscription.repository.d.ts +93 -165
  75. package/dist/foundations/stripe-subscription/repositories/stripe-subscription.repository.d.ts.map +1 -1
  76. package/dist/foundations/stripe-subscription/repositories/stripe-subscription.repository.js +206 -274
  77. package/dist/foundations/stripe-subscription/repositories/stripe-subscription.repository.js.map +1 -1
  78. package/dist/foundations/stripe-subscription/services/stripe-subscription-admin.service.d.ts +34 -36
  79. package/dist/foundations/stripe-subscription/services/stripe-subscription-admin.service.d.ts.map +1 -1
  80. package/dist/foundations/stripe-subscription/services/stripe-subscription-admin.service.js +20 -72
  81. package/dist/foundations/stripe-subscription/services/stripe-subscription-admin.service.js.map +1 -1
  82. package/dist/foundations/stripe-subscription/services/stripe-subscription-api.service.d.ts +1 -29
  83. package/dist/foundations/stripe-subscription/services/stripe-subscription-api.service.d.ts.map +1 -1
  84. package/dist/foundations/stripe-subscription/services/stripe-subscription-api.service.js +1 -53
  85. package/dist/foundations/stripe-subscription/services/stripe-subscription-api.service.js.map +1 -1
  86. package/dist/foundations/stripe-subscription/stripe-subscription.module.d.ts +3 -3
  87. package/dist/foundations/stripe-subscription/stripe-subscription.module.d.ts.map +1 -1
  88. package/dist/foundations/stripe-subscription/stripe-subscription.module.js +8 -7
  89. package/dist/foundations/stripe-subscription/stripe-subscription.module.js.map +1 -1
  90. package/dist/foundations/stripe-usage/entities/stripe-usage-record.entity.d.ts +1 -1
  91. package/dist/foundations/stripe-usage/entities/stripe-usage-record.entity.d.ts.map +1 -1
  92. package/dist/foundations/stripe-usage/serialisers/stripe-usage-record.serialiser.js +2 -2
  93. package/dist/foundations/stripe-usage/serialisers/stripe-usage-record.serialiser.js.map +1 -1
  94. package/dist/foundations/stripe-webhook/processors/stripe-webhook.processor.d.ts +6 -1
  95. package/dist/foundations/stripe-webhook/processors/stripe-webhook.processor.d.ts.map +1 -1
  96. package/dist/foundations/stripe-webhook/processors/stripe-webhook.processor.js +73 -15
  97. package/dist/foundations/stripe-webhook/processors/stripe-webhook.processor.js.map +1 -1
  98. package/dist/foundations/stripe-webhook/services/stripe-webhook-notification.service.d.ts +24 -2
  99. package/dist/foundations/stripe-webhook/services/stripe-webhook-notification.service.d.ts.map +1 -1
  100. package/dist/foundations/stripe-webhook/services/stripe-webhook-notification.service.js +88 -20
  101. package/dist/foundations/stripe-webhook/services/stripe-webhook-notification.service.js.map +1 -1
  102. package/package.json +1 -1
  103. package/dist/foundations/stripe-subscription/entities/stripe-subscription.entity.d.ts +0 -27
  104. package/dist/foundations/stripe-subscription/entities/stripe-subscription.entity.d.ts.map +0 -1
  105. package/dist/foundations/stripe-subscription/entities/stripe-subscription.entity.js +0 -3
  106. package/dist/foundations/stripe-subscription/entities/stripe-subscription.entity.js.map +0 -1
  107. package/dist/foundations/stripe-subscription/entities/stripe-subscription.map.d.ts +0 -8
  108. package/dist/foundations/stripe-subscription/entities/stripe-subscription.map.d.ts.map +0 -1
  109. package/dist/foundations/stripe-subscription/entities/stripe-subscription.map.js +0 -30
  110. package/dist/foundations/stripe-subscription/entities/stripe-subscription.map.js.map +0 -1
  111. package/dist/foundations/stripe-subscription/entities/stripe-subscription.model.d.ts +0 -4
  112. package/dist/foundations/stripe-subscription/entities/stripe-subscription.model.d.ts.map +0 -1
  113. package/dist/foundations/stripe-subscription/entities/stripe-subscription.model.js +0 -17
  114. package/dist/foundations/stripe-subscription/entities/stripe-subscription.model.js.map +0 -1
  115. package/dist/foundations/stripe-subscription/serialisers/stripe-subscription.serialiser.d.ts +0 -9
  116. package/dist/foundations/stripe-subscription/serialisers/stripe-subscription.serialiser.d.ts.map +0 -1
  117. package/dist/foundations/stripe-subscription/serialisers/stripe-subscription.serialiser.js +0 -59
  118. package/dist/foundations/stripe-subscription/serialisers/stripe-subscription.serialiser.js.map +0 -1
@@ -0,0 +1,60 @@
1
+ import type { Entity } from "../../../common/abstracts/entity";
2
+ import type { Company } from "../../company/entities/company";
3
+ import type { StripeCustomer } from "../../stripe-customer/entities/stripe-customer.entity";
4
+ import type { StripePrice } from "../../stripe-price/entities/stripe-price.entity";
5
+ import type { User } from "../../user/entities/user";
6
+ export type StripeSubscriptionStatus = "active" | "past_due" | "unpaid" | "canceled" | "incomplete" | "incomplete_expired" | "trialing" | "paused";
7
+ export type StripeSubscriptionDiscountDuration = "forever" | "once" | "repeating";
8
+ export type StripeSubscription = Entity & {
9
+ stripeSubscriptionId: string;
10
+ stripeSubscriptionItemId?: string;
11
+ status: StripeSubscriptionStatus;
12
+ currentPeriodStart: Date;
13
+ currentPeriodEnd: Date;
14
+ cancelAtPeriodEnd: boolean;
15
+ canceledAt?: Date;
16
+ trialStart?: Date;
17
+ trialEnd?: Date;
18
+ cardExpiryCheckedFor?: Date;
19
+ quantity: number;
20
+ discountPercentOff?: number;
21
+ discountAmountOff?: number;
22
+ discountCurrency?: string;
23
+ discountDuration?: StripeSubscriptionDiscountDuration;
24
+ discountDurationInMonths?: number;
25
+ discountEnd?: Date;
26
+ stripeCustomer: StripeCustomer;
27
+ stripePrice: StripePrice;
28
+ company: Company;
29
+ createdBy?: User;
30
+ };
31
+ export declare const StripeSubscriptionDescriptor: import("../../..").EntityDescriptor<StripeSubscription, {
32
+ stripeCustomer: {
33
+ model: import("../../..").DataMeta;
34
+ direction: "out";
35
+ relationship: string;
36
+ cardinality: "one";
37
+ required: true;
38
+ dtoKey: string;
39
+ };
40
+ stripePrice: {
41
+ model: import("../../..").DataMeta;
42
+ direction: "out";
43
+ relationship: string;
44
+ cardinality: "one";
45
+ required: true;
46
+ dtoKey: string;
47
+ };
48
+ createdBy: {
49
+ model: import("../../..").DataMeta;
50
+ direction: "out";
51
+ relationship: string;
52
+ cardinality: "one";
53
+ required: false;
54
+ contextKey: string;
55
+ immutable: true;
56
+ dtoKey: string;
57
+ };
58
+ }>;
59
+ export type StripeSubscriptionDescriptorType = typeof StripeSubscriptionDescriptor;
60
+ //# sourceMappingURL=stripe-subscription.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stripe-subscription.d.ts","sourceRoot":"","sources":["../../../../src/foundations/stripe-subscription/entities/stripe-subscription.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kCAAkC,CAAC;AAE/D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,gCAAgC,CAAC;AAC9D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uDAAuD,CAAC;AAE5F,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iDAAiD,CAAC;AAEnF,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAC;AAIrD,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;IAEhB,oBAAoB,CAAC,EAAE,IAAI,CAAC;IAE5B,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;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,CAAC,EAAE,IAAI,CAAC;CAClB,CAAC;AAEF,eAAO,MAAM,4BAA4B;;;;;;;;;;;;;;;;;;;;;;;;;;;EAqDvC,CAAC;AAEH,MAAM,MAAM,gCAAgC,GAAG,OAAO,4BAA4B,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import Stripe from "stripe";
2
- import { StripeSubscriptionDiscountDuration } from "./stripe-subscription.entity";
2
+ import { StripeSubscriptionDiscountDuration } from "./stripe-subscription";
3
3
  /**
4
4
  * The discount a subscription carries, as written to the StripeSubscription node.
5
5
  * Every field is null when the coupon does not set it, so a write clears what an
@@ -1 +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"}
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,uBAAuB,CAAC;AAE3E;;;;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,61 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.StripeSubscriptionDescriptor = void 0;
4
+ const define_entity_1 = require("../../../common/helpers/define-entity");
5
+ const stripe_customer_meta_1 = require("../../stripe-customer/entities/stripe-customer.meta");
6
+ const stripe_price_meta_1 = require("../../stripe-price/entities/stripe-price.meta");
7
+ const user_meta_1 = require("../../user/entities/user.meta");
8
+ const stripe_subscription_meta_1 = require("./stripe-subscription.meta");
9
+ exports.StripeSubscriptionDescriptor = (0, define_entity_1.defineEntity)()({
10
+ ...stripe_subscription_meta_1.stripeSubscriptionMeta,
11
+ // Machine strings (Stripe ids, enum values) are excluded from search: no fulltext index.
12
+ fields: {
13
+ stripeSubscriptionId: { type: "string", required: true, excludeFromSearch: true },
14
+ stripeSubscriptionItemId: { type: "string", excludeFromSearch: true },
15
+ status: { type: "string", required: true, excludeFromSearch: true },
16
+ currentPeriodStart: { type: "datetime", required: true },
17
+ currentPeriodEnd: { type: "datetime", required: true },
18
+ cancelAtPeriodEnd: { type: "boolean", required: true, default: false },
19
+ canceledAt: { type: "datetime" },
20
+ trialStart: { type: "datetime" },
21
+ trialEnd: { type: "datetime" },
22
+ cardExpiryCheckedFor: { type: "datetime" },
23
+ quantity: { type: "number", required: true, default: 1 },
24
+ discountPercentOff: { type: "number" },
25
+ discountAmountOff: { type: "number" },
26
+ discountCurrency: { type: "string", excludeFromSearch: true },
27
+ discountDuration: { type: "string", excludeFromSearch: true },
28
+ discountDurationInMonths: { type: "number" },
29
+ discountEnd: { type: "datetime" },
30
+ },
31
+ // Directions follow the stored edge arrows (plan decision D9): both edges leave the subscription.
32
+ relationships: {
33
+ stripeCustomer: {
34
+ model: stripe_customer_meta_1.stripeCustomerMeta,
35
+ direction: "out",
36
+ relationship: "BELONGS_TO",
37
+ cardinality: "one",
38
+ required: true,
39
+ dtoKey: "stripeCustomer",
40
+ },
41
+ stripePrice: {
42
+ model: stripe_price_meta_1.stripePriceMeta,
43
+ direction: "out",
44
+ relationship: "USES_PRICE",
45
+ cardinality: "one",
46
+ required: true,
47
+ dtoKey: "stripePrice",
48
+ },
49
+ createdBy: {
50
+ model: user_meta_1.userMeta,
51
+ direction: "out",
52
+ relationship: "CREATED_BY",
53
+ cardinality: "one",
54
+ required: false,
55
+ contextKey: "userId",
56
+ immutable: true,
57
+ dtoKey: "createdBy",
58
+ },
59
+ },
60
+ });
61
+ //# sourceMappingURL=stripe-subscription.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stripe-subscription.js","sourceRoot":"","sources":["../../../../src/foundations/stripe-subscription/entities/stripe-subscription.ts"],"names":[],"mappings":";;;AACA,yEAAqE;AAGrE,8FAAyF;AAEzF,qFAAgF;AAEhF,6DAAyD;AACzD,yEAAoE;AAuCvD,QAAA,4BAA4B,GAAG,IAAA,4BAAY,GAAsB,CAAC;IAC7E,GAAG,iDAAsB;IAEzB,yFAAyF;IACzF,MAAM,EAAE;QACN,oBAAoB,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE;QACjF,wBAAwB,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,iBAAiB,EAAE,IAAI,EAAE;QACrE,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE;QACnE,kBAAkB,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI,EAAE;QACxD,gBAAgB,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI,EAAE;QACtD,iBAAiB,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE;QACtE,UAAU,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE;QAChC,UAAU,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE;QAChC,QAAQ,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE;QAC9B,oBAAoB,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE;QAC1C,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,EAAE;QACxD,kBAAkB,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;QACtC,iBAAiB,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;QACrC,gBAAgB,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,iBAAiB,EAAE,IAAI,EAAE;QAC7D,gBAAgB,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,iBAAiB,EAAE,IAAI,EAAE;QAC7D,wBAAwB,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;QAC5C,WAAW,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE;KAClC;IAED,kGAAkG;IAClG,aAAa,EAAE;QACb,cAAc,EAAE;YACd,KAAK,EAAE,yCAAkB;YACzB,SAAS,EAAE,KAAK;YAChB,YAAY,EAAE,YAAY;YAC1B,WAAW,EAAE,KAAK;YAClB,QAAQ,EAAE,IAAI;YACd,MAAM,EAAE,gBAAgB;SACzB;QACD,WAAW,EAAE;YACX,KAAK,EAAE,mCAAe;YACtB,SAAS,EAAE,KAAK;YAChB,YAAY,EAAE,YAAY;YAC1B,WAAW,EAAE,KAAK;YAClB,QAAQ,EAAE,IAAI;YACd,MAAM,EAAE,aAAa;SACtB;QACD,SAAS,EAAE;YACT,KAAK,EAAE,oBAAQ;YACf,SAAS,EAAE,KAAK;YAChB,YAAY,EAAE,YAAY;YAC1B,WAAW,EAAE,KAAK;YAClB,QAAQ,EAAE,KAAK;YACf,UAAU,EAAE,QAAQ;YACpB,SAAS,EAAE,IAAI;YACf,MAAM,EAAE,WAAW;SACpB;KACF;CACF,CAAC,CAAC"}
@@ -9,11 +9,8 @@ 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, StripeSubscriptionDiscountDuration, StripeSubscriptionStatus, } from "./entities/stripe-subscription.entity";
12
+ export { StripeSubscription, StripeSubscriptionDescriptor, StripeSubscriptionDescriptorType, StripeSubscriptionDiscountDuration, StripeSubscriptionStatus, } from "./entities/stripe-subscription";
13
13
  export { STRIPE_SUBSCRIPTION_DISCOUNT_EXPAND, StripeSubscriptionDiscount, discountFromStripeSubscription, } from "./entities/stripe-subscription.discount";
14
- export { StripeSubscriptionModel } from "./entities/stripe-subscription.model";
15
14
  export { STRIPE_SUBSCRIPTION_SYNC_SEGMENT, stripeSubscriptionMeta } from "./entities/stripe-subscription.meta";
16
- export { mapStripeSubscription } from "./entities/stripe-subscription.map";
17
15
  export { StripeSubscriptionDTO, StripeSubscriptionPostDTO, StripeSubscriptionPostDataDTO, StripeSubscriptionPostAttributesDTO, StripeSubscriptionCancelDTO, StripeSubscriptionCancelDataDTO, StripeSubscriptionCancelAttributesDTO, StripeSubscriptionChangePlanDTO, StripeSubscriptionChangePlanDataDTO, StripeSubscriptionChangePlanAttributesDTO, } from "./dtos/stripe-subscription.dto";
18
- export { StripeSubscriptionSerialiser } from "./serialisers/stripe-subscription.serialiser";
19
16
  //# sourceMappingURL=index.d.ts.map
@@ -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,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"}
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,4BAA4B,EAC5B,gCAAgC,EAChC,kCAAkC,EAClC,wBAAwB,GACzB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EACL,mCAAmC,EACnC,0BAA0B,EAC1B,8BAA8B,GAC/B,MAAM,yCAAyC,CAAC;AACjD,OAAO,EAAE,gCAAgC,EAAE,sBAAsB,EAAE,MAAM,qCAAqC,CAAC;AAG/G,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"}
@@ -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.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;
9
+ exports.StripeSubscriptionChangePlanAttributesDTO = exports.StripeSubscriptionChangePlanDataDTO = exports.StripeSubscriptionChangePlanDTO = exports.StripeSubscriptionCancelAttributesDTO = exports.StripeSubscriptionCancelDataDTO = exports.StripeSubscriptionCancelDTO = exports.StripeSubscriptionPostAttributesDTO = exports.StripeSubscriptionPostDataDTO = exports.StripeSubscriptionPostDTO = exports.StripeSubscriptionDTO = exports.stripeSubscriptionMeta = exports.STRIPE_SUBSCRIPTION_SYNC_SEGMENT = exports.discountFromStripeSubscription = exports.STRIPE_SUBSCRIPTION_DISCOUNT_EXPAND = exports.StripeSubscriptionDescriptor = 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,16 +21,15 @@ 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
+ // Entities
25
+ var stripe_subscription_1 = require("./entities/stripe-subscription");
26
+ Object.defineProperty(exports, "StripeSubscriptionDescriptor", { enumerable: true, get: function () { return stripe_subscription_1.StripeSubscriptionDescriptor; } });
24
27
  var stripe_subscription_discount_1 = require("./entities/stripe-subscription.discount");
25
28
  Object.defineProperty(exports, "STRIPE_SUBSCRIPTION_DISCOUNT_EXPAND", { enumerable: true, get: function () { return stripe_subscription_discount_1.STRIPE_SUBSCRIPTION_DISCOUNT_EXPAND; } });
26
29
  Object.defineProperty(exports, "discountFromStripeSubscription", { enumerable: true, get: function () { return stripe_subscription_discount_1.discountFromStripeSubscription; } });
27
- var stripe_subscription_model_1 = require("./entities/stripe-subscription.model");
28
- Object.defineProperty(exports, "StripeSubscriptionModel", { enumerable: true, get: function () { return stripe_subscription_model_1.StripeSubscriptionModel; } });
29
30
  var stripe_subscription_meta_1 = require("./entities/stripe-subscription.meta");
30
31
  Object.defineProperty(exports, "STRIPE_SUBSCRIPTION_SYNC_SEGMENT", { enumerable: true, get: function () { return stripe_subscription_meta_1.STRIPE_SUBSCRIPTION_SYNC_SEGMENT; } });
31
32
  Object.defineProperty(exports, "stripeSubscriptionMeta", { enumerable: true, get: function () { return stripe_subscription_meta_1.stripeSubscriptionMeta; } });
32
- var stripe_subscription_map_1 = require("./entities/stripe-subscription.map");
33
- Object.defineProperty(exports, "mapStripeSubscription", { enumerable: true, get: function () { return stripe_subscription_map_1.mapStripeSubscription; } });
34
33
  // DTOs
35
34
  var stripe_subscription_dto_1 = require("./dtos/stripe-subscription.dto");
36
35
  Object.defineProperty(exports, "StripeSubscriptionDTO", { enumerable: true, get: function () { return stripe_subscription_dto_1.StripeSubscriptionDTO; } });
@@ -43,7 +42,4 @@ Object.defineProperty(exports, "StripeSubscriptionCancelAttributesDTO", { enumer
43
42
  Object.defineProperty(exports, "StripeSubscriptionChangePlanDTO", { enumerable: true, get: function () { return stripe_subscription_dto_1.StripeSubscriptionChangePlanDTO; } });
44
43
  Object.defineProperty(exports, "StripeSubscriptionChangePlanDataDTO", { enumerable: true, get: function () { return stripe_subscription_dto_1.StripeSubscriptionChangePlanDataDTO; } });
45
44
  Object.defineProperty(exports, "StripeSubscriptionChangePlanAttributesDTO", { enumerable: true, get: function () { return stripe_subscription_dto_1.StripeSubscriptionChangePlanAttributesDTO; } });
46
- // Serializers
47
- var stripe_subscription_serialiser_1 = require("./serialisers/stripe-subscription.serialiser");
48
- Object.defineProperty(exports, "StripeSubscriptionSerialiser", { enumerable: true, get: function () { return stripe_subscription_serialiser_1.StripeSubscriptionSerialiser; } });
49
45
  //# sourceMappingURL=index.js.map
@@ -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;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"}
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;AAErC,WAAW;AACX,sEAMwC;AAJtC,mIAAA,4BAA4B,OAAA;AAK9B,wFAIiD;AAH/C,mJAAA,mCAAmC,OAAA;AAEnC,8IAAA,8BAA8B,OAAA;AAEhC,gFAA+G;AAAtG,4IAAA,gCAAgC,OAAA;AAAE,kIAAA,sBAAsB,OAAA;AAEjE,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"}
@@ -1,108 +1,97 @@
1
- import { OnModuleInit } from "@nestjs/common";
2
- import { Neo4jService } from "../../../core/neo4j";
3
- import { StripeSubscription, StripeSubscriptionStatus } from "../entities/stripe-subscription.entity";
1
+ import { ClsService } from "nestjs-cls";
2
+ import { AbstractRepository } from "../../../core/neo4j/abstracts/abstract.repository";
3
+ import { Neo4jService } from "../../../core/neo4j/services/neo4j.service";
4
+ import { SecurityService } from "../../../core/security/services/security.service";
5
+ import { StripeSubscription, StripeSubscriptionDescriptor, StripeSubscriptionStatus } from "../entities/stripe-subscription";
4
6
  import { StripeSubscriptionDiscount } from "../entities/stripe-subscription.discount";
7
+ type StripeSubscriptionUpdateParams = {
8
+ status?: StripeSubscriptionStatus;
9
+ currentPeriodStart?: Date;
10
+ currentPeriodEnd?: Date;
11
+ cancelAtPeriodEnd?: boolean;
12
+ canceledAt?: Date | null;
13
+ trialStart?: Date;
14
+ trialEnd?: Date;
15
+ cardExpiryCheckedFor?: Date | null;
16
+ quantity?: number;
17
+ discount?: StripeSubscriptionDiscount | null;
18
+ };
5
19
  /**
6
20
  * StripeSubscriptionRepository
7
21
  *
8
- * Neo4j repository for managing Subscription nodes and their relationships to BillingCustomer and Price nodes.
9
- * Handles subscription lifecycle data storage and queries with status filtering.
22
+ * Neo4j repository for StripeSubscription nodes:
23
+ * `(stripeSubscription)-[:BELONGS_TO]->(stripeCustomer)`, `-[:USES_PRICE]->(stripePrice)`,
24
+ * `-[:BELONGS_TO]->(company)` and `-[:CREATED_BY]->(user)`.
10
25
  *
11
- * Key Features:
12
- * - Automatic constraint creation for ID and Stripe subscription ID uniqueness
13
- * - Query subscriptions by customer, status, or Stripe ID
14
- * - Create and update operations with relationship management
15
- * - Support for plan changes by updating price relationships
16
- * - Sync operations for webhook data
17
- * - Track trial periods, billing cycles, and cancellation status
18
- * - Bulk cancel operations for customer deletion
19
- *
20
- * @example
21
- * ```typescript
22
- * const subscription = await subscriptionRepository.create({
23
- * stripeCustomerId: 'cust_123',
24
- * priceId: 'price_456',
25
- * stripeSubscriptionId: 'sub_stripe789',
26
- * status: 'active',
27
- * currentPeriodStart: new Date(),
28
- * currentPeriodEnd: new Date(Date.now() + 30 * 24 * 60 * 60 * 1000),
29
- * cancelAtPeriodEnd: false,
30
- * quantity: 1
31
- * });
32
- * ```
26
+ * Every read and every request-time write starts from `buildDefaultMatch()`, so a request is
27
+ * scoped to the caller's company. Jobs with no company in CLS (webhooks, crons, backfills)
28
+ * reach every company through the `$companyId IS NULL` branch.
33
29
  */
34
- export declare class StripeSubscriptionRepository implements OnModuleInit {
35
- private readonly neo4j;
36
- constructor(neo4j: Neo4jService);
30
+ export declare class StripeSubscriptionRepository extends AbstractRepository<StripeSubscription, typeof StripeSubscriptionDescriptor.relationships> {
31
+ protected readonly descriptor: import("../../..").EntityDescriptor<StripeSubscription, {
32
+ stripeCustomer: {
33
+ model: import("../../..").DataMeta;
34
+ direction: "out";
35
+ relationship: string;
36
+ cardinality: "one";
37
+ required: true;
38
+ dtoKey: string;
39
+ };
40
+ stripePrice: {
41
+ model: import("../../..").DataMeta;
42
+ direction: "out";
43
+ relationship: string;
44
+ cardinality: "one";
45
+ required: true;
46
+ dtoKey: string;
47
+ };
48
+ createdBy: {
49
+ model: import("../../..").DataMeta;
50
+ direction: "out";
51
+ relationship: string;
52
+ cardinality: "one";
53
+ required: false;
54
+ contextKey: string;
55
+ immutable: true;
56
+ dtoKey: string;
57
+ };
58
+ }>;
59
+ constructor(neo4j: Neo4jService, securityService: SecurityService, clsService: ClsService);
60
+ /** The inherited id constraint and indexes, plus the unique Stripe subscription id. */
61
+ onModuleInit(): Promise<void>;
37
62
  /**
38
- * Initialize repository constraints
39
- *
40
- * Creates unique constraints and indexes on module initialization.
63
+ * The subscription with its company, customer, price, the price's product and its creator.
41
64
  */
42
- onModuleInit(): Promise<void>;
65
+ protected buildReturnStatement(): string;
66
+ /**
67
+ * The cron finders read across every company. Inside a request `buildDefaultMatch()` would
68
+ * scope them to the caller's company, so they refuse to run there.
69
+ */
70
+ private assertNoRequestCompany;
43
71
  /**
44
- * Find subscriptions by stripe customer ID
72
+ * Subscriptions of a customer, newest first.
45
73
  *
46
- * @param params - Query parameters
47
- * @param params.stripeCustomerId - Stripe customer identifier (internal ID)
48
- * @param params.status - Optional filter by subscription status
49
- * @returns Array of subscriptions ordered by creation date descending
74
+ * @param params.stripeCustomerId - internal StripeCustomer id
75
+ * @param params.status - optional status filter
50
76
  */
51
77
  findByStripeCustomerId(params: {
52
78
  stripeCustomerId: string;
53
79
  status?: StripeSubscriptionStatus;
54
80
  }): Promise<StripeSubscription[]>;
55
81
  /**
56
- * Find subscription by internal ID
57
- *
58
- * @param params - Query parameters
59
- * @param params.id - Internal subscription ID
60
- * @returns Subscription if found, null otherwise
61
- */
62
- findById(params: {
63
- id: string;
64
- }): Promise<StripeSubscription | null>;
65
- /**
66
- * Find every subscription, of every company.
67
- *
68
- * Not company-scoped and not paginated: it serves system jobs that run outside a
69
- * request (the discount backfill), never an endpoint. It matches the same
70
- * customer and price path as {@link update}, so every row it returns can be updated.
71
- *
72
- * @returns All subscriptions ordered by creation date ascending
82
+ * Every subscription, oldest first. Not paginated: it serves system jobs that run outside a
83
+ * request (the discount backfill), never an endpoint.
73
84
  */
74
85
  findAll(): Promise<StripeSubscription[]>;
75
- /**
76
- * Find subscription by Stripe subscription ID
77
- *
78
- * @param params - Query parameters
79
- * @param params.stripeSubscriptionId - Stripe subscription ID
80
- * @returns Subscription if found, null otherwise
81
- */
86
+ /** The subscription with this Stripe subscription id, or null. */
82
87
  findByStripeSubscriptionId(params: {
83
88
  stripeSubscriptionId: string;
84
89
  }): Promise<StripeSubscription | null>;
85
90
  /**
86
- * Create a new subscription
87
- *
88
- * Creates a Subscription node with BELONGS_TO relationship to StripeCustomer
89
- * and USES_PRICE relationship to StripePrice.
90
- *
91
- * @param params - Creation parameters
92
- * @param params.stripeCustomerId - Stripe customer ID to link to
93
- * @param params.priceId - Price ID to link to
94
- * @param params.stripeSubscriptionId - Stripe subscription ID
95
- * @param params.stripeSubscriptionItemId - Optional Stripe subscription item ID
96
- * @param params.status - Subscription status
97
- * @param params.currentPeriodStart - Current billing period start date
98
- * @param params.currentPeriodEnd - Current billing period end date
99
- * @param params.cancelAtPeriodEnd - Whether subscription cancels at period end
100
- * @param params.trialStart - Optional trial start date
101
- * @param params.trialEnd - Optional trial end date
102
- * @param params.quantity - Subscription quantity
103
- * @returns Created Subscription
91
+ * Creates a subscription linked to its customer, its price, the caller's company and the
92
+ * caller. The customer and price ids are checked against the caller's company first.
104
93
  */
105
- create(params: {
94
+ createSubscription(params: {
106
95
  stripeCustomerId: string;
107
96
  priceId: string;
108
97
  stripeSubscriptionId: string;
@@ -117,114 +106,53 @@ export declare class StripeSubscriptionRepository implements OnModuleInit {
117
106
  discount?: StripeSubscriptionDiscount | null;
118
107
  }): Promise<StripeSubscription>;
119
108
  /**
120
- * Update subscription by internal ID
121
- *
122
- * @param params - Update parameters
123
- * @param params.id - Internal subscription ID
124
- * @param params.status - Optional new status
125
- * @param params.currentPeriodStart - Optional new period start
126
- * @param params.currentPeriodEnd - Optional new period end
127
- * @param params.cancelAtPeriodEnd - Optional cancel at period end flag
128
- * @param params.canceledAt - Optional cancellation date (null to clear)
129
- * @param params.trialStart - Optional trial start date
130
- * @param params.trialEnd - Optional trial end date
131
- * @param params.pausedAt - Optional pause date (null to clear)
132
- * @param params.quantity - Optional new quantity
133
- * @returns Updated Subscription
109
+ * Updates a subscription by internal id. For every optional field, undefined leaves the
110
+ * stored value and (where the type allows it) null clears it.
134
111
  */
135
112
  update(params: {
136
113
  id: string;
137
- status?: StripeSubscriptionStatus;
138
- currentPeriodStart?: Date;
139
- currentPeriodEnd?: Date;
140
- cancelAtPeriodEnd?: boolean;
141
- canceledAt?: Date | null;
142
- trialStart?: Date;
143
- trialEnd?: Date;
144
- pausedAt?: Date | null;
145
- quantity?: number;
146
- discount?: StripeSubscriptionDiscount | null;
147
- }): Promise<StripeSubscription>;
114
+ } & StripeSubscriptionUpdateParams): Promise<StripeSubscription>;
148
115
  /**
149
- * Update subscription by Stripe subscription ID
116
+ * Updates a subscription by Stripe subscription id (webhook sync).
150
117
  *
151
- * Used primarily by webhook handlers to sync subscription data from Stripe.
152
- *
153
- * @param params - Update parameters
154
- * @param params.stripeSubscriptionId - Stripe subscription ID
155
- * @param params.status - Optional new status
156
- * @param params.currentPeriodStart - Optional new period start
157
- * @param params.currentPeriodEnd - Optional new period end
158
- * @param params.cancelAtPeriodEnd - Optional cancel at period end flag
159
- * @param params.canceledAt - Optional cancellation date (null to clear)
160
- * @param params.trialStart - Optional trial start date
161
- * @param params.trialEnd - Optional trial end date
162
- * @param params.pausedAt - Optional pause date (null to clear)
163
- * @param params.quantity - Optional new quantity
164
- * @returns Updated Subscription if found, null otherwise
118
+ * @returns the updated subscription, or null when none has this id
165
119
  */
166
120
  updateByStripeSubscriptionId(params: {
167
121
  stripeSubscriptionId: string;
168
- status?: StripeSubscriptionStatus;
169
- currentPeriodStart?: Date;
170
- currentPeriodEnd?: Date;
171
- cancelAtPeriodEnd?: boolean;
172
- canceledAt?: Date | null;
173
- trialStart?: Date;
174
- trialEnd?: Date;
175
- pausedAt?: Date | null;
176
- quantity?: number;
177
- discount?: StripeSubscriptionDiscount | null;
178
- }): Promise<StripeSubscription | null>;
122
+ } & StripeSubscriptionUpdateParams): Promise<StripeSubscription | null>;
179
123
  /**
180
- * Update subscription price (change plan)
181
- *
182
- * Removes old USES_PRICE relationship and creates new one to different price.
183
- *
184
- * @param params - Update parameters
185
- * @param params.id - Internal subscription ID
186
- * @param params.newPriceId - New price ID to switch to
187
- * @returns Updated Subscription with new price relationship
124
+ * Moves the subscription to another price (plan change). The price id is checked against
125
+ * the caller's company first.
188
126
  */
189
127
  updatePrice(params: {
190
128
  id: string;
191
129
  newPriceId: string;
192
130
  }): Promise<StripeSubscription>;
193
131
  /**
194
- * Delete subscription
195
- *
196
- * Performs a DETACH DELETE to remove the subscription and all relationships.
197
- *
198
- * @param params - Deletion parameters
199
- * @param params.id - Internal subscription ID
200
- * @returns Promise that resolves when deletion is complete
201
- */
202
- delete(params: {
203
- id: string;
204
- }): Promise<void>;
205
- /**
206
- * Cancel all active subscriptions for a Stripe customer
207
- *
208
- * Bulk operation to cancel all active, trialing, or past_due subscriptions
209
- * when a customer is deleted. Sets status to canceled and updates timestamps.
132
+ * Cancels every active, trialing or past_due subscription of a customer (customer deleted).
210
133
  *
211
- * @param params - Cancellation parameters
212
- * @param params.stripeCustomerId - Stripe customer ID
213
- * @returns Number of subscriptions canceled
134
+ * @param params.stripeCustomerId - Stripe customer id (cus_xxx)
135
+ * @returns number of subscriptions cancelled
214
136
  */
215
137
  cancelAllByStripeCustomerId(params: {
216
138
  stripeCustomerId: string;
217
139
  }): Promise<number>;
218
140
  /**
219
- * Find all active subscriptions for a Stripe customer
220
- * Used for smart feature removal to check overlapping features
141
+ * Active or trialing subscriptions of a customer, newest first (smart feature removal).
221
142
  *
222
- * @param params - Query parameters
223
- * @param params.stripeCustomerId - Stripe customer ID (cus_xxx format)
224
- * @returns Array of active subscriptions with price and product info
143
+ * @param params.stripeCustomerId - Stripe customer id (cus_xxx)
225
144
  */
226
145
  findActiveByStripeCustomerId(params: {
227
146
  stripeCustomerId: string;
228
147
  }): Promise<StripeSubscription[]>;
148
+ /**
149
+ * Worker cron only. Active recurring subscriptions renewing between `now` (excluded) and
150
+ * `before` (included), not cancelling, whose card has not been checked yet for this renewal.
151
+ */
152
+ findRenewalsForCardCheck(params: {
153
+ now: Date;
154
+ before: Date;
155
+ }): Promise<StripeSubscription[]>;
229
156
  }
157
+ export {};
230
158
  //# sourceMappingURL=stripe-subscription.repository.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"stripe-subscription.repository.d.ts","sourceRoot":"","sources":["../../../../src/foundations/stripe-subscription/repositories/stripe-subscription.repository.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"stripe-subscription.repository.d.ts","sourceRoot":"","sources":["../../../../src/foundations/stripe-subscription/repositories/stripe-subscription.repository.ts"],"names":[],"mappings":"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"}