@carlonicora/nestjs-neo4jsonapi 1.32.1 → 1.33.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 (111) hide show
  1. package/dist/config/base.config.d.ts.map +1 -1
  2. package/dist/config/base.config.js +13 -0
  3. package/dist/config/base.config.js.map +1 -1
  4. package/dist/config/enums/job.name.d.ts.map +1 -1
  5. package/dist/config/enums/job.name.js +3 -1
  6. package/dist/config/enums/job.name.js.map +1 -1
  7. package/dist/config/enums/queue.id.d.ts +2 -1
  8. package/dist/config/enums/queue.id.d.ts.map +1 -1
  9. package/dist/config/enums/queue.id.js +1 -0
  10. package/dist/config/enums/queue.id.js.map +1 -1
  11. package/dist/config/interfaces/config.ai.interface.d.ts +14 -0
  12. package/dist/config/interfaces/config.ai.interface.d.ts.map +1 -1
  13. package/dist/core/email/templates/en/trialEndedWithoutPayment.hbs +53 -0
  14. package/dist/core/email/templates/en/trialEndingReminder.hbs +48 -0
  15. package/dist/core/llm/services/model.service.d.ts +30 -0
  16. package/dist/core/llm/services/model.service.d.ts.map +1 -1
  17. package/dist/core/llm/services/model.service.js +95 -0
  18. package/dist/core/llm/services/model.service.js.map +1 -1
  19. package/dist/core/llm/services/vision.llm.service.js +1 -1
  20. package/dist/core/llm/services/vision.llm.service.js.map +1 -1
  21. package/dist/core/queue/queue.module.d.ts.map +1 -1
  22. package/dist/core/queue/queue.module.js +3 -2
  23. package/dist/core/queue/queue.module.js.map +1 -1
  24. package/dist/foundations/auth/auth.module.d.ts.map +1 -1
  25. package/dist/foundations/auth/auth.module.js +13 -2
  26. package/dist/foundations/auth/auth.module.js.map +1 -1
  27. package/dist/foundations/auth/index.d.ts +1 -0
  28. package/dist/foundations/auth/index.d.ts.map +1 -1
  29. package/dist/foundations/auth/index.js +3 -1
  30. package/dist/foundations/auth/index.js.map +1 -1
  31. package/dist/foundations/auth/repositories/auth.repository.d.ts.map +1 -1
  32. package/dist/foundations/auth/repositories/auth.repository.js +8 -15
  33. package/dist/foundations/auth/repositories/auth.repository.js.map +1 -1
  34. package/dist/foundations/auth/services/auth.service.d.ts +5 -3
  35. package/dist/foundations/auth/services/auth.service.d.ts.map +1 -1
  36. package/dist/foundations/auth/services/auth.service.js +17 -4
  37. package/dist/foundations/auth/services/auth.service.js.map +1 -1
  38. package/dist/foundations/auth/services/trial-queue.service.d.ts +12 -0
  39. package/dist/foundations/auth/services/trial-queue.service.d.ts.map +1 -0
  40. package/dist/foundations/auth/services/trial-queue.service.js +55 -0
  41. package/dist/foundations/auth/services/trial-queue.service.js.map +1 -0
  42. package/dist/foundations/foundations.modules.d.ts.map +1 -1
  43. package/dist/foundations/foundations.modules.js +2 -0
  44. package/dist/foundations/foundations.modules.js.map +1 -1
  45. package/dist/foundations/stripe/stripe.module.d.ts +0 -1
  46. package/dist/foundations/stripe/stripe.module.d.ts.map +1 -1
  47. package/dist/foundations/stripe/stripe.module.js +0 -3
  48. package/dist/foundations/stripe/stripe.module.js.map +1 -1
  49. package/dist/foundations/stripe-price/dtos/stripe-price.dto.d.ts +2 -0
  50. package/dist/foundations/stripe-price/dtos/stripe-price.dto.d.ts.map +1 -1
  51. package/dist/foundations/stripe-price/dtos/stripe-price.dto.js +10 -0
  52. package/dist/foundations/stripe-price/dtos/stripe-price.dto.js.map +1 -1
  53. package/dist/foundations/stripe-price/entities/stripe-price.entity.d.ts +1 -0
  54. package/dist/foundations/stripe-price/entities/stripe-price.entity.d.ts.map +1 -1
  55. package/dist/foundations/stripe-price/entities/stripe-price.map.d.ts.map +1 -1
  56. package/dist/foundations/stripe-price/entities/stripe-price.map.js +1 -0
  57. package/dist/foundations/stripe-price/entities/stripe-price.map.js.map +1 -1
  58. package/dist/foundations/stripe-price/repositories/stripe-price.repository.d.ts +11 -0
  59. package/dist/foundations/stripe-price/repositories/stripe-price.repository.d.ts.map +1 -1
  60. package/dist/foundations/stripe-price/repositories/stripe-price.repository.js +25 -0
  61. package/dist/foundations/stripe-price/repositories/stripe-price.repository.js.map +1 -1
  62. package/dist/foundations/stripe-price/serialisers/stripe-price.serialiser.d.ts.map +1 -1
  63. package/dist/foundations/stripe-price/serialisers/stripe-price.serialiser.js +1 -0
  64. package/dist/foundations/stripe-price/serialisers/stripe-price.serialiser.js.map +1 -1
  65. package/dist/foundations/stripe-price/services/stripe-price-admin.service.d.ts.map +1 -1
  66. package/dist/foundations/stripe-price/services/stripe-price-admin.service.js +2 -0
  67. package/dist/foundations/stripe-price/services/stripe-price-admin.service.js.map +1 -1
  68. package/dist/foundations/stripe-subscription/services/stripe-subscription-admin.service.d.ts +3 -1
  69. package/dist/foundations/stripe-subscription/services/stripe-subscription-admin.service.d.ts.map +1 -1
  70. package/dist/foundations/stripe-subscription/services/stripe-subscription-admin.service.js +6 -2
  71. package/dist/foundations/stripe-subscription/services/stripe-subscription-admin.service.js.map +1 -1
  72. package/dist/foundations/stripe-subscription/services/stripe-subscription-api.service.d.ts +3 -1
  73. package/dist/foundations/stripe-subscription/services/stripe-subscription-api.service.d.ts.map +1 -1
  74. package/dist/foundations/stripe-subscription/services/stripe-subscription-api.service.js +7 -2
  75. package/dist/foundations/stripe-subscription/services/stripe-subscription-api.service.js.map +1 -1
  76. package/dist/foundations/stripe-trial/index.d.ts +3 -0
  77. package/dist/foundations/stripe-trial/index.d.ts.map +1 -0
  78. package/dist/foundations/stripe-trial/index.js +19 -0
  79. package/dist/foundations/stripe-trial/index.js.map +1 -0
  80. package/dist/foundations/stripe-trial/interfaces/trial-job.interface.d.ts +5 -0
  81. package/dist/foundations/stripe-trial/interfaces/trial-job.interface.d.ts.map +1 -0
  82. package/dist/foundations/stripe-trial/interfaces/trial-job.interface.js +3 -0
  83. package/dist/foundations/stripe-trial/interfaces/trial-job.interface.js.map +1 -0
  84. package/dist/foundations/stripe-trial/processors/trial.processor.d.ts +17 -0
  85. package/dist/foundations/stripe-trial/processors/trial.processor.d.ts.map +1 -0
  86. package/dist/foundations/stripe-trial/processors/trial.processor.js +69 -0
  87. package/dist/foundations/stripe-trial/processors/trial.processor.js.map +1 -0
  88. package/dist/foundations/stripe-trial/services/trial.service.d.ts +61 -0
  89. package/dist/foundations/stripe-trial/services/trial.service.d.ts.map +1 -0
  90. package/dist/foundations/stripe-trial/services/trial.service.js +137 -0
  91. package/dist/foundations/stripe-trial/services/trial.service.js.map +1 -0
  92. package/dist/foundations/stripe-trial/stripe-trial.module.d.ts +22 -0
  93. package/dist/foundations/stripe-trial/stripe-trial.module.d.ts.map +1 -0
  94. package/dist/foundations/stripe-trial/stripe-trial.module.js +45 -0
  95. package/dist/foundations/stripe-trial/stripe-trial.module.js.map +1 -0
  96. package/dist/foundations/stripe-webhook/processors/stripe-webhook.processor.d.ts +8 -3
  97. package/dist/foundations/stripe-webhook/processors/stripe-webhook.processor.d.ts.map +1 -1
  98. package/dist/foundations/stripe-webhook/processors/stripe-webhook.processor.js +150 -51
  99. package/dist/foundations/stripe-webhook/processors/stripe-webhook.processor.js.map +1 -1
  100. package/dist/foundations/stripe-webhook/services/stripe-webhook-notification.service.d.ts +21 -0
  101. package/dist/foundations/stripe-webhook/services/stripe-webhook-notification.service.d.ts.map +1 -1
  102. package/dist/foundations/stripe-webhook/services/stripe-webhook-notification.service.js +87 -0
  103. package/dist/foundations/stripe-webhook/services/stripe-webhook-notification.service.js.map +1 -1
  104. package/dist/foundations/stripe-webhook/stripe-webhook.module.d.ts.map +1 -1
  105. package/dist/foundations/stripe-webhook/stripe-webhook.module.js +2 -0
  106. package/dist/foundations/stripe-webhook/stripe-webhook.module.js.map +1 -1
  107. package/dist/foundations/tokenusage/services/tokenusage.service.d.ts +1 -0
  108. package/dist/foundations/tokenusage/services/tokenusage.service.d.ts.map +1 -1
  109. package/dist/foundations/tokenusage/services/tokenusage.service.js +4 -3
  110. package/dist/foundations/tokenusage/services/tokenusage.service.js.map +1 -1
  111. package/package.json +1 -1
@@ -0,0 +1,61 @@
1
+ import { ModuleRef } from "@nestjs/core";
2
+ import { AppLoggingService } from "../../../core/logging/services/logging.service";
3
+ import { CompanyRepository } from "../../company/repositories/company.repository";
4
+ /**
5
+ * TrialService
6
+ *
7
+ * Orchestrates 14-day trial subscription creation for new user signups.
8
+ * Creates Stripe customer, subscription with trial period, and allocates tokens.
9
+ *
10
+ * Key Features:
11
+ * - Database-driven trial price selection (isTrial: true)
12
+ * - Creates Stripe customer and subscription
13
+ * - Allocates tokens from trial price configuration
14
+ * - Graceful error handling (doesn't block registration)
15
+ *
16
+ * @example
17
+ * ```typescript
18
+ * await trialService.startTrial({
19
+ * companyId: 'company_123',
20
+ * userId: 'user_456',
21
+ * });
22
+ * ```
23
+ */
24
+ export declare class TrialService {
25
+ private readonly moduleRef;
26
+ private readonly companyRepository;
27
+ private readonly logger;
28
+ constructor(moduleRef: ModuleRef, companyRepository: CompanyRepository, logger: AppLoggingService);
29
+ /**
30
+ * Lazily get Stripe services via ModuleRef to avoid circular dependencies.
31
+ * Stripe modules form a complex circular chain that can't be resolved with forwardRef alone.
32
+ */
33
+ private get stripeCustomerAdminService();
34
+ private get stripeSubscriptionAdminService();
35
+ private get stripePriceRepository();
36
+ private get stripeCustomerRepository();
37
+ /**
38
+ * Start a 14-day trial for a new company
39
+ *
40
+ * Creates Stripe customer and subscription with trial period.
41
+ * Allocates tokens from the trial price configuration.
42
+ *
43
+ * @param params - Trial parameters
44
+ * @param params.companyId - Company identifier
45
+ * @param params.userId - User identifier (for customer creation)
46
+ * @returns Promise that resolves when trial is started
47
+ *
48
+ * @example
49
+ * ```typescript
50
+ * await trialService.startTrial({
51
+ * companyId: 'company_123',
52
+ * userId: 'user_456',
53
+ * });
54
+ * ```
55
+ */
56
+ startTrial(params: {
57
+ companyId: string;
58
+ userId: string;
59
+ }): Promise<void>;
60
+ }
61
+ //# sourceMappingURL=trial.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trial.service.d.ts","sourceRoot":"","sources":["../../../../src/foundations/stripe-trial/services/trial.service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,iBAAiB,EAAE,MAAM,gDAAgD,CAAC;AACnF,OAAO,EAAE,iBAAiB,EAAE,MAAM,+CAA+C,CAAC;AAMlF;;;;;;;;;;;;;;;;;;;GAmBG;AACH,qBACa,YAAY;IAErB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAClC,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAFN,SAAS,EAAE,SAAS,EACpB,iBAAiB,EAAE,iBAAiB,EACpC,MAAM,EAAE,iBAAiB;IAG5C;;;OAGG;IACH,OAAO,KAAK,0BAA0B,GAErC;IAED,OAAO,KAAK,8BAA8B,GAEzC;IAED,OAAO,KAAK,qBAAqB,GAEhC;IAED,OAAO,KAAK,wBAAwB,GAEnC;IAED;;;;;;;;;;;;;;;;;;OAkBG;IACG,UAAU,CAAC,MAAM,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;CAsD/E"}
@@ -0,0 +1,137 @@
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.TrialService = void 0;
13
+ const common_1 = require("@nestjs/common");
14
+ const core_1 = require("@nestjs/core");
15
+ const logging_service_1 = require("../../../core/logging/services/logging.service");
16
+ const company_repository_1 = require("../../company/repositories/company.repository");
17
+ const stripe_customer_repository_1 = require("../../stripe-customer/repositories/stripe-customer.repository");
18
+ const stripe_customer_admin_service_1 = require("../../stripe-customer/services/stripe-customer-admin.service");
19
+ const stripe_price_repository_1 = require("../../stripe-price/repositories/stripe-price.repository");
20
+ const stripe_subscription_admin_service_1 = require("../../stripe-subscription/services/stripe-subscription-admin.service");
21
+ /**
22
+ * TrialService
23
+ *
24
+ * Orchestrates 14-day trial subscription creation for new user signups.
25
+ * Creates Stripe customer, subscription with trial period, and allocates tokens.
26
+ *
27
+ * Key Features:
28
+ * - Database-driven trial price selection (isTrial: true)
29
+ * - Creates Stripe customer and subscription
30
+ * - Allocates tokens from trial price configuration
31
+ * - Graceful error handling (doesn't block registration)
32
+ *
33
+ * @example
34
+ * ```typescript
35
+ * await trialService.startTrial({
36
+ * companyId: 'company_123',
37
+ * userId: 'user_456',
38
+ * });
39
+ * ```
40
+ */
41
+ let TrialService = class TrialService {
42
+ constructor(moduleRef, companyRepository, logger) {
43
+ this.moduleRef = moduleRef;
44
+ this.companyRepository = companyRepository;
45
+ this.logger = logger;
46
+ }
47
+ /**
48
+ * Lazily get Stripe services via ModuleRef to avoid circular dependencies.
49
+ * Stripe modules form a complex circular chain that can't be resolved with forwardRef alone.
50
+ */
51
+ get stripeCustomerAdminService() {
52
+ return this.moduleRef.get(stripe_customer_admin_service_1.StripeCustomerAdminService, { strict: false });
53
+ }
54
+ get stripeSubscriptionAdminService() {
55
+ return this.moduleRef.get(stripe_subscription_admin_service_1.StripeSubscriptionAdminService, { strict: false });
56
+ }
57
+ get stripePriceRepository() {
58
+ return this.moduleRef.get(stripe_price_repository_1.StripePriceRepository, { strict: false });
59
+ }
60
+ get stripeCustomerRepository() {
61
+ return this.moduleRef.get(stripe_customer_repository_1.StripeCustomerRepository, { strict: false });
62
+ }
63
+ /**
64
+ * Start a 14-day trial for a new company
65
+ *
66
+ * Creates Stripe customer and subscription with trial period.
67
+ * Allocates tokens from the trial price configuration.
68
+ *
69
+ * @param params - Trial parameters
70
+ * @param params.companyId - Company identifier
71
+ * @param params.userId - User identifier (for customer creation)
72
+ * @returns Promise that resolves when trial is started
73
+ *
74
+ * @example
75
+ * ```typescript
76
+ * await trialService.startTrial({
77
+ * companyId: 'company_123',
78
+ * userId: 'user_456',
79
+ * });
80
+ * ```
81
+ */
82
+ async startTrial(params) {
83
+ // IDEMPOTENCY CHECK: Skip if company already has a subscription
84
+ const company = await this.companyRepository.findByCompanyId({ companyId: params.companyId });
85
+ if (company?.isActiveSubscription) {
86
+ this.logger.log(`Company ${params.companyId} already has active subscription - skipping trial creation`);
87
+ return;
88
+ }
89
+ // Also check if Stripe customer already exists for this company
90
+ const existingCustomer = await this.stripeCustomerRepository.findByCompanyId({ companyId: params.companyId });
91
+ if (existingCustomer) {
92
+ this.logger.log(`Company ${params.companyId} already has Stripe customer - skipping trial creation`);
93
+ return;
94
+ }
95
+ // 1. Find the trial price from database
96
+ const trialPrice = await this.stripePriceRepository.findTrialPrice();
97
+ if (!trialPrice) {
98
+ this.logger.warn("No trial price configured - skipping trial creation");
99
+ return;
100
+ }
101
+ // 2. Create Stripe customer for the company
102
+ // This uses the company name and owner email automatically
103
+ await this.stripeCustomerAdminService.createCustomer(params.companyId, params.userId);
104
+ // 3. Create subscription with 14-day trial
105
+ // Note: This will fail if no payment method, but trial subscriptions don't require payment upfront
106
+ // The createSubscription method handles trial creation with trialPeriodDays parameter
107
+ await this.stripeSubscriptionAdminService.createSubscription({
108
+ companyId: params.companyId,
109
+ priceId: trialPrice.id,
110
+ trialPeriodDays: 14,
111
+ // trialEnd: Math.floor(Date.now() / 1000) + 3 * 60,
112
+ });
113
+ // 4. Allocate trial tokens from price configuration
114
+ const trialTokens = trialPrice.token ?? 0;
115
+ if (trialTokens > 0) {
116
+ await this.companyRepository.updateTokens({
117
+ companyId: params.companyId,
118
+ monthlyTokens: trialTokens,
119
+ availableMonthlyTokens: trialTokens,
120
+ });
121
+ }
122
+ // 5. Mark subscription as active (during trial)
123
+ await this.companyRepository.markSubscriptionStatus({
124
+ companyId: params.companyId,
125
+ isActiveSubscription: true,
126
+ });
127
+ this.logger.log(`Trial started for company ${params.companyId} with ${trialTokens} tokens`);
128
+ }
129
+ };
130
+ exports.TrialService = TrialService;
131
+ exports.TrialService = TrialService = __decorate([
132
+ (0, common_1.Injectable)(),
133
+ __metadata("design:paramtypes", [core_1.ModuleRef,
134
+ company_repository_1.CompanyRepository,
135
+ logging_service_1.AppLoggingService])
136
+ ], TrialService);
137
+ //# sourceMappingURL=trial.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trial.service.js","sourceRoot":"","sources":["../../../../src/foundations/stripe-trial/services/trial.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Stripe Trial Module
3
+ *
4
+ * Orchestrates 14-day trial subscription creation for new user signups.
5
+ * Uses BullMQ queue for async processing and ModuleRef for Stripe service dependencies.
6
+ *
7
+ * Queue-based architecture:
8
+ * - AuthModule queues trial creation jobs (no direct dependency)
9
+ * - TrialProcessor handles jobs asynchronously
10
+ * - WebSocket notification sent from Stripe webhook after feature sync
11
+ *
12
+ * Dependencies (via ModuleRef):
13
+ * - StripeCustomerAdminService: Create Stripe customer
14
+ * - StripeSubscriptionAdminService: Create subscription with trial period
15
+ * - StripePriceRepository: Find trial price configuration
16
+ *
17
+ * Direct dependencies:
18
+ * - CompanyModule: Update company tokens and subscription status
19
+ */
20
+ export declare class StripeTrialModule {
21
+ }
22
+ //# sourceMappingURL=stripe-trial.module.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stripe-trial.module.d.ts","sourceRoot":"","sources":["../../../src/foundations/stripe-trial/stripe-trial.module.ts"],"names":[],"mappings":"AAOA;;;;;;;;;;;;;;;;;;GAkBG;AACH,qBAKa,iBAAiB;CAAG"}
@@ -0,0 +1,45 @@
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
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.StripeTrialModule = void 0;
10
+ const bullmq_1 = require("@nestjs/bullmq");
11
+ const common_1 = require("@nestjs/common");
12
+ const queue_id_1 = require("../../config/enums/queue.id");
13
+ const company_module_1 = require("../company/company.module");
14
+ const trial_processor_1 = require("./processors/trial.processor");
15
+ const trial_service_1 = require("./services/trial.service");
16
+ /**
17
+ * Stripe Trial Module
18
+ *
19
+ * Orchestrates 14-day trial subscription creation for new user signups.
20
+ * Uses BullMQ queue for async processing and ModuleRef for Stripe service dependencies.
21
+ *
22
+ * Queue-based architecture:
23
+ * - AuthModule queues trial creation jobs (no direct dependency)
24
+ * - TrialProcessor handles jobs asynchronously
25
+ * - WebSocket notification sent from Stripe webhook after feature sync
26
+ *
27
+ * Dependencies (via ModuleRef):
28
+ * - StripeCustomerAdminService: Create Stripe customer
29
+ * - StripeSubscriptionAdminService: Create subscription with trial period
30
+ * - StripePriceRepository: Find trial price configuration
31
+ *
32
+ * Direct dependencies:
33
+ * - CompanyModule: Update company tokens and subscription status
34
+ */
35
+ let StripeTrialModule = class StripeTrialModule {
36
+ };
37
+ exports.StripeTrialModule = StripeTrialModule;
38
+ exports.StripeTrialModule = StripeTrialModule = __decorate([
39
+ (0, common_1.Module)({
40
+ imports: [(0, common_1.forwardRef)(() => company_module_1.CompanyModule), bullmq_1.BullModule.registerQueue({ name: queue_id_1.QueueId.TRIAL })],
41
+ providers: [trial_service_1.TrialService, trial_processor_1.TrialProcessor],
42
+ exports: [trial_service_1.TrialService],
43
+ })
44
+ ], StripeTrialModule);
45
+ //# sourceMappingURL=stripe-trial.module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stripe-trial.module.js","sourceRoot":"","sources":["../../../src/foundations/stripe-trial/stripe-trial.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAA4C;AAC5C,2CAAoD;AACpD,0DAAsD;AACtD,8DAA0D;AAC1D,kEAA8D;AAC9D,4DAAwD;AAExD;;;;;;;;;;;;;;;;;;GAkBG;AAMI,IAAM,iBAAiB,GAAvB,MAAM,iBAAiB;CAAG,CAAA;AAApB,8CAAiB;4BAAjB,iBAAiB;IAL7B,IAAA,eAAM,EAAC;QACN,OAAO,EAAE,CAAC,IAAA,mBAAU,EAAC,GAAG,EAAE,CAAC,8BAAa,CAAC,EAAE,mBAAU,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,kBAAO,CAAC,KAAK,EAAE,CAAC,CAAC;QAC7F,SAAS,EAAE,CAAC,4BAAY,EAAE,gCAAc,CAAC;QACzC,OAAO,EAAE,CAAC,4BAAY,CAAC;KACxB,CAAC;GACW,iBAAiB,CAAG"}
@@ -1,16 +1,18 @@
1
1
  import { WorkerHost } from "@nestjs/bullmq";
2
2
  import { Job } from "bullmq";
3
+ import { ClsService } from "nestjs-cls";
3
4
  import { AppLoggingService } from "../../../core/logging";
5
+ import { WebSocketService } from "../../../core/websocket/services/websocket.service";
4
6
  import { CompanyRepository } from "../../company/repositories/company.repository";
5
7
  import { StripeCustomerRepository } from "../../stripe-customer/repositories/stripe-customer.repository";
6
8
  import { StripeInvoiceRepository } from "../../stripe-invoice/repositories/stripe-invoice.repository";
9
+ import { StripeInvoiceAdminService } from "../../stripe-invoice/services/stripe-invoice-admin.service";
7
10
  import { StripePriceRepository } from "../../stripe-price/repositories/stripe-price.repository";
8
11
  import { StripeSubscriptionRepository } from "../../stripe-subscription/repositories/stripe-subscription.repository";
9
- import { StripeSubscriptionAdminService } from "../../stripe-subscription/services/stripe-subscription-admin.service";
10
12
  import { FeatureSyncService } from "../../stripe-subscription/services/feature-sync.service";
13
+ import { StripeSubscriptionAdminService } from "../../stripe-subscription/services/stripe-subscription-admin.service";
11
14
  import { TokenAllocationService } from "../../stripe-subscription/services/token-allocation.service";
12
15
  import { StripeService } from "../../stripe/services/stripe.service";
13
- import { StripeInvoiceAdminService } from "../../stripe-invoice/services/stripe-invoice-admin.service";
14
16
  import { StripeWebhookEventRepository } from "../repositories/stripe-webhook-event.repository";
15
17
  import { StripeWebhookNotificationService } from "../services/stripe-webhook-notification.service";
16
18
  export interface StripeWebhookJobData {
@@ -33,13 +35,16 @@ export declare class StripeWebhookProcessor extends WorkerHost {
33
35
  private readonly companyRepository;
34
36
  private readonly stripeInvoiceAdminService;
35
37
  private readonly logger;
36
- constructor(stripeWebhookEventRepository: StripeWebhookEventRepository, subscriptionService: StripeSubscriptionAdminService, stripeCustomerRepository: StripeCustomerRepository, subscriptionRepository: StripeSubscriptionRepository, stripeInvoiceRepository: StripeInvoiceRepository, stripePriceRepository: StripePriceRepository, notificationService: StripeWebhookNotificationService, tokenAllocationService: TokenAllocationService, featureSyncService: FeatureSyncService, stripeService: StripeService, companyRepository: CompanyRepository, stripeInvoiceAdminService: StripeInvoiceAdminService, logger: AppLoggingService);
38
+ private readonly cls;
39
+ private readonly webSocketService;
40
+ constructor(stripeWebhookEventRepository: StripeWebhookEventRepository, subscriptionService: StripeSubscriptionAdminService, stripeCustomerRepository: StripeCustomerRepository, subscriptionRepository: StripeSubscriptionRepository, stripeInvoiceRepository: StripeInvoiceRepository, stripePriceRepository: StripePriceRepository, notificationService: StripeWebhookNotificationService, tokenAllocationService: TokenAllocationService, featureSyncService: FeatureSyncService, stripeService: StripeService, companyRepository: CompanyRepository, stripeInvoiceAdminService: StripeInvoiceAdminService, logger: AppLoggingService, cls: ClsService, webSocketService: WebSocketService);
37
41
  onActive(job: Job<StripeWebhookJobData>): void;
38
42
  onError(job: Job<StripeWebhookJobData>): void;
39
43
  onCompleted(job: Job<StripeWebhookJobData>): void;
40
44
  process(job: Job<StripeWebhookJobData>): Promise<void>;
41
45
  private handleEvent;
42
46
  private handleSubscriptionEvent;
47
+ private handleTrialWillEndEvent;
43
48
  private handleInvoiceEvent;
44
49
  private handleCustomerEvent;
45
50
  private handlePaymentIntentEvent;
@@ -1 +1 @@
1
- {"version":3,"file":"stripe-webhook.processor.d.ts","sourceRoot":"","sources":["../../../../src/foundations/stripe-webhook/processors/stripe-webhook.processor.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4B,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACtE,OAAO,EAAE,GAAG,EAAE,MAAM,QAAQ,CAAC;AAG7B,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,+CAA+C,CAAC;AAClF,OAAO,EAAE,wBAAwB,EAAE,MAAM,+DAA+D,CAAC;AACzG,OAAO,EAAE,uBAAuB,EAAE,MAAM,6DAA6D,CAAC;AACtG,OAAO,EAAE,qBAAqB,EAAE,MAAM,yDAAyD,CAAC;AAChG,OAAO,EAAE,4BAA4B,EAAE,MAAM,uEAAuE,CAAC;AACrH,OAAO,EAAE,8BAA8B,EAAE,MAAM,sEAAsE,CAAC;AACtH,OAAO,EAAE,kBAAkB,EAAE,MAAM,yDAAyD,CAAC;AAC7F,OAAO,EAAE,sBAAsB,EAAE,MAAM,6DAA6D,CAAC;AACrG,OAAO,EAAE,aAAa,EAAE,MAAM,sCAAsC,CAAC;AACrE,OAAO,EAAE,yBAAyB,EAAE,MAAM,4DAA4D,CAAC;AACvG,OAAO,EAAE,4BAA4B,EAAE,MAAM,iDAAiD,CAAC;AAC/F,OAAO,EAAE,gCAAgC,EAAE,MAAM,iDAAiD,CAAC;AAEnG,MAAM,WAAW,oBAAoB;IACnC,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAC9B;AAED,qBACa,sBAAuB,SAAQ,UAAU;IAElD,OAAO,CAAC,QAAQ,CAAC,4BAA4B;IAC7C,OAAO,CAAC,QAAQ,CAAC,mBAAmB;IACpC,OAAO,CAAC,QAAQ,CAAC,wBAAwB;IACzC,OAAO,CAAC,QAAQ,CAAC,sBAAsB;IACvC,OAAO,CAAC,QAAQ,CAAC,uBAAuB;IACxC,OAAO,CAAC,QAAQ,CAAC,qBAAqB;IACtC,OAAO,CAAC,QAAQ,CAAC,mBAAmB;IACpC,OAAO,CAAC,QAAQ,CAAC,sBAAsB;IACvC,OAAO,CAAC,QAAQ,CAAC,kBAAkB;IACnC,OAAO,CAAC,QAAQ,CAAC,aAAa;IAC9B,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAClC,OAAO,CAAC,QAAQ,CAAC,yBAAyB;IAC1C,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAZN,4BAA4B,EAAE,4BAA4B,EAC1D,mBAAmB,EAAE,8BAA8B,EACnD,wBAAwB,EAAE,wBAAwB,EAClD,sBAAsB,EAAE,4BAA4B,EACpD,uBAAuB,EAAE,uBAAuB,EAChD,qBAAqB,EAAE,qBAAqB,EAC5C,mBAAmB,EAAE,gCAAgC,EACrD,sBAAsB,EAAE,sBAAsB,EAC9C,kBAAkB,EAAE,kBAAkB,EACtC,aAAa,EAAE,aAAa,EAC5B,iBAAiB,EAAE,iBAAiB,EACpC,yBAAyB,EAAE,yBAAyB,EACpD,MAAM,EAAE,iBAAiB;IAM5C,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,oBAAoB,CAAC;IAKvC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,oBAAoB,CAAC;IAOtC,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC,oBAAoB,CAAC;IAIpC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,oBAAoB,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;YA+B9C,WAAW;YAgCX,uBAAuB;YAqHvB,kBAAkB;YAqIlB,mBAAmB;YA2BnB,wBAAwB;CAuIvC"}
1
+ {"version":3,"file":"stripe-webhook.processor.d.ts","sourceRoot":"","sources":["../../../../src/foundations/stripe-webhook/processors/stripe-webhook.processor.ts"],"names":[],"mappings":"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"}