@carlonicora/nestjs-neo4jsonapi 8.2.0 → 8.3.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.
- package/dist/foundations/billing/billing.module.d.ts +2 -0
- package/dist/foundations/billing/billing.module.d.ts.map +1 -1
- package/dist/foundations/billing/billing.module.js +10 -0
- package/dist/foundations/billing/billing.module.js.map +1 -1
- package/dist/foundations/billing/controllers/credit-warning.controller.d.ts +16 -0
- package/dist/foundations/billing/controllers/credit-warning.controller.d.ts.map +1 -0
- package/dist/foundations/billing/controllers/credit-warning.controller.js +63 -0
- package/dist/foundations/billing/controllers/credit-warning.controller.js.map +1 -0
- package/dist/foundations/billing/index.d.ts +3 -0
- package/dist/foundations/billing/index.d.ts.map +1 -1
- package/dist/foundations/billing/index.js +4 -0
- package/dist/foundations/billing/index.js.map +1 -1
- package/dist/foundations/billing/interfaces/billing.config.interface.d.ts +18 -0
- package/dist/foundations/billing/interfaces/billing.config.interface.d.ts.map +1 -1
- package/dist/foundations/billing/interfaces/billing.config.interface.js +7 -0
- package/dist/foundations/billing/interfaces/billing.config.interface.js.map +1 -1
- package/dist/foundations/billing/interfaces/credit-warning.interface.d.ts +15 -0
- package/dist/foundations/billing/interfaces/credit-warning.interface.d.ts.map +1 -0
- package/dist/foundations/billing/interfaces/credit-warning.interface.js +9 -0
- package/dist/foundations/billing/interfaces/credit-warning.interface.js.map +1 -0
- package/dist/foundations/billing/processors/billing-email.jobs.d.ts +9 -1
- package/dist/foundations/billing/processors/billing-email.jobs.d.ts.map +1 -1
- package/dist/foundations/billing/processors/billing-email.jobs.js +17 -0
- package/dist/foundations/billing/processors/billing-email.jobs.js.map +1 -1
- package/dist/foundations/billing/services/credit-warning.service.d.ts +84 -0
- package/dist/foundations/billing/services/credit-warning.service.d.ts.map +1 -0
- package/dist/foundations/billing/services/credit-warning.service.js +218 -0
- package/dist/foundations/billing/services/credit-warning.service.js.map +1 -0
- package/dist/foundations/company/entities/company.d.ts +5 -0
- package/dist/foundations/company/entities/company.d.ts.map +1 -1
- package/dist/foundations/company/entities/company.js +4 -0
- package/dist/foundations/company/entities/company.js.map +1 -1
- package/dist/foundations/company/events/company.events.d.ts +22 -0
- package/dist/foundations/company/events/company.events.d.ts.map +1 -1
- package/dist/foundations/company/events/company.events.js +14 -1
- package/dist/foundations/company/events/company.events.js.map +1 -1
- package/dist/foundations/company/repositories/company.repository.d.ts +44 -0
- package/dist/foundations/company/repositories/company.repository.d.ts.map +1 -1
- package/dist/foundations/company/repositories/company.repository.js +97 -0
- package/dist/foundations/company/repositories/company.repository.js.map +1 -1
- package/dist/foundations/company/services/company.service.d.ts.map +1 -1
- package/dist/foundations/company/services/company.service.js +13 -0
- package/dist/foundations/company/services/company.service.js.map +1 -1
- package/dist/foundations/stripe-webhook/services/stripe-webhook-notification.service.d.ts +14 -0
- package/dist/foundations/stripe-webhook/services/stripe-webhook-notification.service.d.ts.map +1 -1
- package/dist/foundations/stripe-webhook/services/stripe-webhook-notification.service.js +43 -0
- package/dist/foundations/stripe-webhook/services/stripe-webhook-notification.service.js.map +1 -1
- package/package.json +1 -1
|
@@ -6,6 +6,8 @@ import { BillingModuleConfig } from "./interfaces/billing.config.interface";
|
|
|
6
6
|
* - `BILLING_CONFIG` (global): the resolved settings every billing service reads
|
|
7
7
|
* - `BillingLifecycleCron` (worker only): hourly card-expiry check
|
|
8
8
|
* - `BillingEmailProcessor` (worker only, opt-in): the library billing email sender on `QueueId.EMAIL`
|
|
9
|
+
* - `CreditWarningService` + `CreditWarningController`: the credit warning (always
|
|
10
|
+
* provided; every method is a no-op unless `billing.creditWarning.enabled`)
|
|
9
11
|
*
|
|
10
12
|
* Always mounted by `FoundationsModule`.
|
|
11
13
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"billing.module.d.ts","sourceRoot":"","sources":["../../../src/foundations/billing/billing.module.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAoB,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"billing.module.d.ts","sourceRoot":"","sources":["../../../src/foundations/billing/billing.module.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAoB,MAAM,gBAAgB,CAAC;AAWjE,OAAO,EAAkB,mBAAmB,EAAwB,MAAM,uCAAuC,CAAC;AAKlH;;;;;;;;;;;;;;;;GAgBG;AACH,qBACa,aAAa;IACxB;;;;OAIG;IACH,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,mBAAmB,GAAG,aAAa;CA+B5D"}
|
|
@@ -13,19 +13,25 @@ const common_1 = require("@nestjs/common");
|
|
|
13
13
|
const conditional_service_decorator_1 = require("../../common/decorators/conditional-service.decorator");
|
|
14
14
|
const queue_id_1 = require("../../config/enums/queue.id");
|
|
15
15
|
const email_module_1 = require("../../core/email/email.module");
|
|
16
|
+
const company_module_1 = require("../company/company.module");
|
|
17
|
+
const stripe_price_module_1 = require("../stripe-price/stripe-price.module");
|
|
16
18
|
const stripe_customer_module_1 = require("../stripe-customer/stripe-customer.module");
|
|
17
19
|
const stripe_subscription_module_1 = require("../stripe-subscription/stripe-subscription.module");
|
|
18
20
|
const stripe_webhook_module_1 = require("../stripe-webhook/stripe-webhook.module");
|
|
21
|
+
const credit_warning_controller_1 = require("./controllers/credit-warning.controller");
|
|
19
22
|
const billing_lifecycle_cron_1 = require("./cron/billing-lifecycle.cron");
|
|
20
23
|
const billing_config_interface_1 = require("./interfaces/billing.config.interface");
|
|
21
24
|
const billing_email_processor_1 = require("./processors/billing-email.processor");
|
|
22
25
|
const card_expiry_warning_service_1 = require("./services/card-expiry-warning.service");
|
|
26
|
+
const credit_warning_service_1 = require("./services/credit-warning.service");
|
|
23
27
|
/**
|
|
24
28
|
* BillingModule — per-app billing settings and billing housekeeping.
|
|
25
29
|
*
|
|
26
30
|
* - `BILLING_CONFIG` (global): the resolved settings every billing service reads
|
|
27
31
|
* - `BillingLifecycleCron` (worker only): hourly card-expiry check
|
|
28
32
|
* - `BillingEmailProcessor` (worker only, opt-in): the library billing email sender on `QueueId.EMAIL`
|
|
33
|
+
* - `CreditWarningService` + `CreditWarningController`: the credit warning (always
|
|
34
|
+
* provided; every method is a no-op unless `billing.creditWarning.enabled`)
|
|
29
35
|
*
|
|
30
36
|
* Always mounted by `FoundationsModule`.
|
|
31
37
|
*
|
|
@@ -53,13 +59,17 @@ let BillingModule = BillingModule_1 = class BillingModule {
|
|
|
53
59
|
imports: [
|
|
54
60
|
bullmq_1.BullModule.registerQueue({ name: queue_id_1.QueueId.EMAIL }),
|
|
55
61
|
email_module_1.EmailModule,
|
|
62
|
+
company_module_1.CompanyModule,
|
|
63
|
+
stripe_price_module_1.StripePriceModule,
|
|
56
64
|
stripe_subscription_module_1.StripeSubscriptionModule,
|
|
57
65
|
stripe_customer_module_1.StripeCustomerModule,
|
|
58
66
|
stripe_webhook_module_1.StripeWebhookModule,
|
|
59
67
|
],
|
|
68
|
+
controllers: [credit_warning_controller_1.CreditWarningController],
|
|
60
69
|
providers: [
|
|
61
70
|
configProvider,
|
|
62
71
|
card_expiry_warning_service_1.CardExpiryWarningService,
|
|
72
|
+
credit_warning_service_1.CreditWarningService,
|
|
63
73
|
(0, conditional_service_decorator_1.createWorkerProvider)(billing_lifecycle_cron_1.BillingLifecycleCron),
|
|
64
74
|
...(resolved.emailSender.enabled ? [(0, conditional_service_decorator_1.createWorkerProvider)(billing_email_processor_1.BillingEmailProcessor)] : []),
|
|
65
75
|
],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"billing.module.js","sourceRoot":"","sources":["../../../src/foundations/billing/billing.module.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,2CAA4C;AAC5C,2CAAiE;AACjE,yGAA6F;AAC7F,0DAAsD;AACtD,gEAA4D;AAC5D,sFAAiF;AACjF,kGAA6F;AAC7F,mFAA8E;AAC9E,0EAAqE;AACrE,oFAAkH;AAClH,kFAA6E;AAC7E,wFAAkF;
|
|
1
|
+
{"version":3,"file":"billing.module.js","sourceRoot":"","sources":["../../../src/foundations/billing/billing.module.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,2CAA4C;AAC5C,2CAAiE;AACjE,yGAA6F;AAC7F,0DAAsD;AACtD,gEAA4D;AAC5D,8DAA0D;AAC1D,6EAAwE;AACxE,sFAAiF;AACjF,kGAA6F;AAC7F,mFAA8E;AAC9E,uFAAkF;AAClF,0EAAqE;AACrE,oFAAkH;AAClH,kFAA6E;AAC7E,wFAAkF;AAClF,8EAAyE;AAEzE;;;;;;;;;;;;;;;;GAgBG;AAEI,IAAM,aAAa,qBAAnB,MAAM,aAAa;IACxB;;;;OAIG;IACH,MAAM,CAAC,OAAO,CAAC,MAA4B;QACzC,MAAM,QAAQ,GAAG,IAAA,+CAAoB,EAAC,MAAM,CAAC,CAAC;QAE9C,MAAM,cAAc,GAAa;YAC/B,OAAO,EAAE,yCAAc;YACvB,QAAQ,EAAE,QAAQ;SACnB,CAAC;QAEF,OAAO;YACL,MAAM,EAAE,eAAa;YACrB,MAAM,EAAE,IAAI;YACZ,OAAO,EAAE;gBACP,mBAAU,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,kBAAO,CAAC,KAAK,EAAE,CAAC;gBACjD,0BAAW;gBACX,8BAAa;gBACb,uCAAiB;gBACjB,qDAAwB;gBACxB,6CAAoB;gBACpB,2CAAmB;aACpB;YACD,WAAW,EAAE,CAAC,mDAAuB,CAAC;YACtC,SAAS,EAAE;gBACT,cAAc;gBACd,sDAAwB;gBACxB,6CAAoB;gBACpB,IAAA,oDAAoB,EAAC,6CAAoB,CAAC;gBAC1C,GAAG,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAA,oDAAoB,EAAC,+CAAqB,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;aACvF;YACD,OAAO,EAAE,CAAC,yCAAc,CAAC;SAC1B,CAAC;IACJ,CAAC;CACF,CAAA;AArCY,sCAAa;wBAAb,aAAa;IADzB,IAAA,eAAM,EAAC,EAAE,CAAC;GACE,aAAa,CAqCzB"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { FastifyReply } from "fastify";
|
|
2
|
+
import { AuthenticatedRequest } from "../../../common/interfaces/authenticated.request.interface";
|
|
3
|
+
import { CacheService } from "../../../core/cache/services/cache.service";
|
|
4
|
+
import { CreditWarningService } from "../services/credit-warning.service";
|
|
5
|
+
/**
|
|
6
|
+
* Credit warning routes. Company administrators only.
|
|
7
|
+
*
|
|
8
|
+
* With `billing.creditWarning` off the dismiss route still answers 204 and writes nothing.
|
|
9
|
+
*/
|
|
10
|
+
export declare class CreditWarningController {
|
|
11
|
+
private readonly creditWarningService;
|
|
12
|
+
private readonly cacheService;
|
|
13
|
+
constructor(creditWarningService: CreditWarningService, cacheService: CacheService);
|
|
14
|
+
dismiss(req: AuthenticatedRequest, reply: FastifyReply, companyId: string): Promise<void>;
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=credit-warning.controller.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"credit-warning.controller.d.ts","sourceRoot":"","sources":["../../../../src/foundations/billing/controllers/credit-warning.controller.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAOvC,OAAO,EAAE,oBAAoB,EAAE,MAAM,4DAA4D,CAAC;AAClG,OAAO,EAAE,YAAY,EAAE,MAAM,4CAA4C,CAAC;AAG1E,OAAO,EAAE,oBAAoB,EAAE,MAAM,oCAAoC,CAAC;AAE1E;;;;GAIG;AACH,qBAEa,uBAAuB;IAEhC,OAAO,CAAC,QAAQ,CAAC,oBAAoB;IACrC,OAAO,CAAC,QAAQ,CAAC,YAAY;gBADZ,oBAAoB,EAAE,oBAAoB,EAC1C,YAAY,EAAE,YAAY;IASvC,OAAO,CAAQ,GAAG,EAAE,oBAAoB,EAAS,KAAK,EAAE,YAAY,EAAsB,SAAS,EAAE,MAAM;CAIlH"}
|
|
@@ -0,0 +1,63 @@
|
|
|
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
|
+
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
12
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.CreditWarningController = void 0;
|
|
16
|
+
const common_1 = require("@nestjs/common");
|
|
17
|
+
const core_module_ids_1 = require("../../../common/constants/core-module.ids");
|
|
18
|
+
const system_roles_1 = require("../../../common/constants/system.roles");
|
|
19
|
+
const cache_invalidate_decorator_1 = require("../../../common/decorators/cache-invalidate.decorator");
|
|
20
|
+
const module_decorator_1 = require("../../../common/decorators/module.decorator");
|
|
21
|
+
const roles_decorator_1 = require("../../../common/decorators/roles.decorator");
|
|
22
|
+
const jwt_auth_guard_1 = require("../../../common/guards/jwt.auth.guard");
|
|
23
|
+
const cache_service_1 = require("../../../core/cache/services/cache.service");
|
|
24
|
+
const company_meta_1 = require("../../company/entities/company.meta");
|
|
25
|
+
const credit_warning_interface_1 = require("../interfaces/credit-warning.interface");
|
|
26
|
+
const credit_warning_service_1 = require("../services/credit-warning.service");
|
|
27
|
+
/**
|
|
28
|
+
* Credit warning routes. Company administrators only.
|
|
29
|
+
*
|
|
30
|
+
* With `billing.creditWarning` off the dismiss route still answers 204 and writes nothing.
|
|
31
|
+
*/
|
|
32
|
+
let CreditWarningController = class CreditWarningController {
|
|
33
|
+
constructor(creditWarningService, cacheService) {
|
|
34
|
+
this.creditWarningService = creditWarningService;
|
|
35
|
+
this.cacheService = cacheService;
|
|
36
|
+
}
|
|
37
|
+
// POST /companies/:companyId/credit-warning/dismiss
|
|
38
|
+
async dismiss(req, reply, companyId) {
|
|
39
|
+
await this.creditWarningService.dismiss({ companyId });
|
|
40
|
+
reply.send();
|
|
41
|
+
}
|
|
42
|
+
};
|
|
43
|
+
exports.CreditWarningController = CreditWarningController;
|
|
44
|
+
__decorate([
|
|
45
|
+
(0, common_1.UseGuards)(jwt_auth_guard_1.JwtAuthGuard),
|
|
46
|
+
(0, roles_decorator_1.Roles)(system_roles_1.RoleId.CompanyAdministrator),
|
|
47
|
+
(0, common_1.Post)(`${company_meta_1.companyMeta.endpoint}/:companyId/${credit_warning_interface_1.CREDIT_WARNING_DISMISS_SEGMENT}`),
|
|
48
|
+
(0, common_1.HttpCode)(common_1.HttpStatus.NO_CONTENT),
|
|
49
|
+
(0, cache_invalidate_decorator_1.CacheInvalidate)(company_meta_1.companyMeta, "companyId"),
|
|
50
|
+
__param(0, (0, common_1.Req)()),
|
|
51
|
+
__param(1, (0, common_1.Res)()),
|
|
52
|
+
__param(2, (0, common_1.Param)("companyId")),
|
|
53
|
+
__metadata("design:type", Function),
|
|
54
|
+
__metadata("design:paramtypes", [Object, Object, String]),
|
|
55
|
+
__metadata("design:returntype", Promise)
|
|
56
|
+
], CreditWarningController.prototype, "dismiss", null);
|
|
57
|
+
exports.CreditWarningController = CreditWarningController = __decorate([
|
|
58
|
+
(0, module_decorator_1.ModuleACL)({ module: core_module_ids_1.CoreModuleId.Billing }),
|
|
59
|
+
(0, common_1.Controller)(),
|
|
60
|
+
__metadata("design:paramtypes", [credit_warning_service_1.CreditWarningService,
|
|
61
|
+
cache_service_1.CacheService])
|
|
62
|
+
], CreditWarningController);
|
|
63
|
+
//# sourceMappingURL=credit-warning.controller.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"credit-warning.controller.js","sourceRoot":"","sources":["../../../../src/foundations/billing/controllers/credit-warning.controller.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAAoG;AAEpG,+EAAyE;AACzE,yEAAgE;AAChE,sGAAwF;AACxF,kFAAwE;AACxE,gFAAmE;AACnE,0EAAqE;AAErE,8EAA0E;AAC1E,sEAAkE;AAClE,qFAAwF;AACxF,+EAA0E;AAE1E;;;;GAIG;AAGI,IAAM,uBAAuB,GAA7B,MAAM,uBAAuB;IAClC,YACmB,oBAA0C,EAC1C,YAA0B;QAD1B,yBAAoB,GAApB,oBAAoB,CAAsB;QAC1C,iBAAY,GAAZ,YAAY,CAAc;IAC1C,CAAC;IAEJ,oDAAoD;IAM9C,AAAN,KAAK,CAAC,OAAO,CAAQ,GAAyB,EAAS,KAAmB,EAAsB,SAAiB;QAC/G,MAAM,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC;QACvD,KAAK,CAAC,IAAI,EAAE,CAAC;IACf,CAAC;CACF,CAAA;AAhBY,0DAAuB;AAY5B;IALL,IAAA,kBAAS,EAAC,6BAAY,CAAC;IACvB,IAAA,uBAAK,EAAC,qBAAM,CAAC,oBAAoB,CAAC;IAClC,IAAA,aAAI,EAAC,GAAG,0BAAW,CAAC,QAAQ,eAAe,yDAA8B,EAAE,CAAC;IAC5E,IAAA,iBAAQ,EAAC,mBAAU,CAAC,UAAU,CAAC;IAC/B,IAAA,4CAAe,EAAC,0BAAW,EAAE,WAAW,CAAC;IAC3B,WAAA,IAAA,YAAG,GAAE,CAAA;IAA6B,WAAA,IAAA,YAAG,GAAE,CAAA;IAAuB,WAAA,IAAA,cAAK,EAAC,WAAW,CAAC,CAAA;;;;sDAG9F;kCAfU,uBAAuB;IAFnC,IAAA,4BAAS,EAAC,EAAE,MAAM,EAAE,8BAAY,CAAC,OAAO,EAAE,CAAC;IAC3C,IAAA,mBAAU,GAAE;qCAG8B,6CAAoB;QAC5B,4BAAY;GAHlC,uBAAuB,CAgBnC"}
|
|
@@ -1,7 +1,10 @@
|
|
|
1
1
|
export * from "./billing.module";
|
|
2
2
|
export * from "./interfaces/billing.config.interface";
|
|
3
|
+
export * from "./interfaces/credit-warning.interface";
|
|
3
4
|
export * from "./processors/billing-email.jobs";
|
|
4
5
|
export * from "./processors/billing-email.processor";
|
|
5
6
|
export * from "./cron/billing-lifecycle.cron";
|
|
6
7
|
export * from "./services/card-expiry-warning.service";
|
|
8
|
+
export * from "./services/credit-warning.service";
|
|
9
|
+
export * from "./controllers/credit-warning.controller";
|
|
7
10
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/foundations/billing/index.ts"],"names":[],"mappings":"AACA,cAAc,kBAAkB,CAAC;AAGjC,cAAc,uCAAuC,CAAC;AAGtD,cAAc,iCAAiC,CAAC;AAChD,cAAc,sCAAsC,CAAC;AAGrD,cAAc,+BAA+B,CAAC;AAG9C,cAAc,wCAAwC,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/foundations/billing/index.ts"],"names":[],"mappings":"AACA,cAAc,kBAAkB,CAAC;AAGjC,cAAc,uCAAuC,CAAC;AACtD,cAAc,uCAAuC,CAAC;AAGtD,cAAc,iCAAiC,CAAC;AAChD,cAAc,sCAAsC,CAAC;AAGrD,cAAc,+BAA+B,CAAC;AAG9C,cAAc,wCAAwC,CAAC;AACvD,cAAc,mCAAmC,CAAC;AAGlD,cAAc,yCAAyC,CAAC"}
|
|
@@ -18,6 +18,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
18
18
|
__exportStar(require("./billing.module"), exports);
|
|
19
19
|
// Config
|
|
20
20
|
__exportStar(require("./interfaces/billing.config.interface"), exports);
|
|
21
|
+
__exportStar(require("./interfaces/credit-warning.interface"), exports);
|
|
21
22
|
// Sender
|
|
22
23
|
__exportStar(require("./processors/billing-email.jobs"), exports);
|
|
23
24
|
__exportStar(require("./processors/billing-email.processor"), exports);
|
|
@@ -25,4 +26,7 @@ __exportStar(require("./processors/billing-email.processor"), exports);
|
|
|
25
26
|
__exportStar(require("./cron/billing-lifecycle.cron"), exports);
|
|
26
27
|
// Services
|
|
27
28
|
__exportStar(require("./services/card-expiry-warning.service"), exports);
|
|
29
|
+
__exportStar(require("./services/credit-warning.service"), exports);
|
|
30
|
+
// Controllers
|
|
31
|
+
__exportStar(require("./controllers/credit-warning.controller"), exports);
|
|
28
32
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/foundations/billing/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,SAAS;AACT,mDAAiC;AAEjC,SAAS;AACT,wEAAsD;AAEtD,SAAS;AACT,kEAAgD;AAChD,uEAAqD;AAErD,OAAO;AACP,gEAA8C;AAE9C,WAAW;AACX,yEAAuD"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/foundations/billing/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,SAAS;AACT,mDAAiC;AAEjC,SAAS;AACT,wEAAsD;AACtD,wEAAsD;AAEtD,SAAS;AACT,kEAAgD;AAChD,uEAAqD;AAErD,OAAO;AACP,gEAA8C;AAE9C,WAAW;AACX,yEAAuD;AACvD,oEAAkD;AAElD,cAAc;AACd,0EAAwD"}
|
|
@@ -11,6 +11,10 @@ export type BillingLinks = {
|
|
|
11
11
|
paymentMethod: string;
|
|
12
12
|
subscribe: string;
|
|
13
13
|
resubscribe: string;
|
|
14
|
+
/** Opens plan change on the current subscription (credit warning: subscribe / move up a plan). */
|
|
15
|
+
changePlan: string;
|
|
16
|
+
/** Opens credit pack purchase (credit warning: add a credit pack). */
|
|
17
|
+
buyCredits: string;
|
|
14
18
|
};
|
|
15
19
|
/**
|
|
16
20
|
* One email job the library sender handles: the template id and the mapping from
|
|
@@ -48,6 +52,16 @@ export interface BillingModuleConfig {
|
|
|
48
52
|
};
|
|
49
53
|
/** App-relative paths used in billing emails. */
|
|
50
54
|
links?: Partial<BillingLinks>;
|
|
55
|
+
/**
|
|
56
|
+
* Warn a company once per credit period, in the app and by email, when its
|
|
57
|
+
* credits left fall to `100 - thresholdPercent`% of what it was granted.
|
|
58
|
+
* OFF by default: with it off nothing runs and no Company field is written.
|
|
59
|
+
* `thresholdPercent` defaults to 80.
|
|
60
|
+
*/
|
|
61
|
+
creditWarning?: {
|
|
62
|
+
enabled?: boolean;
|
|
63
|
+
thresholdPercent?: number;
|
|
64
|
+
};
|
|
51
65
|
}
|
|
52
66
|
export type ResolvedBillingConfig = {
|
|
53
67
|
emailSender: {
|
|
@@ -60,6 +74,10 @@ export type ResolvedBillingConfig = {
|
|
|
60
74
|
afterSubscriptionEndedDays: number;
|
|
61
75
|
};
|
|
62
76
|
links: BillingLinks;
|
|
77
|
+
creditWarning: {
|
|
78
|
+
enabled: boolean;
|
|
79
|
+
thresholdPercent: number;
|
|
80
|
+
};
|
|
63
81
|
};
|
|
64
82
|
export declare const DEFAULT_BILLING_CONFIG: ResolvedBillingConfig;
|
|
65
83
|
export declare const BILLING_CONFIG: unique symbol;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"billing.config.interface.d.ts","sourceRoot":"","sources":["../../../../src/foundations/billing/interfaces/billing.config.interface.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG,eAAe,GAAG,cAAc,GAAG,mBAAmB,CAAC;AAErF;;;GAGG;AACH,MAAM,MAAM,YAAY,GAAG;
|
|
1
|
+
{"version":3,"file":"billing.config.interface.d.ts","sourceRoot":"","sources":["../../../../src/foundations/billing/interfaces/billing.config.interface.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG,eAAe,GAAG,cAAc,GAAG,mBAAmB,CAAC;AAErF;;;GAGG;AACH,MAAM,MAAM,YAAY,GAAG;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,kGAAkG;IAClG,UAAU,EAAE,MAAM,CAAC;IACnB,sEAAsE;IACtE,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF;;;GAGG;AACH,MAAM,WAAW,yBAAyB;IACxC,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,EAAE,CACd,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChC,GAAG,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,YAAY,CAAA;KAAE,KACzD,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC9B;AAED;;;GAGG;AACH,MAAM,WAAW,mBAAmB;IAClC;;;;OAIG;IACH,WAAW,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,OAAO,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,yBAAyB,CAAC,CAAA;KAAE,CAAC;IAC3F,mDAAmD;IACnD,MAAM,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC,CAAC;IACnD,wGAAwG;IACxG,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,sFAAsF;IACtF,QAAQ,CAAC,EAAE;QAAE,0BAA0B,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACnD,iDAAiD;IACjD,KAAK,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;IAC9B;;;;;OAKG;IACH,aAAa,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,OAAO,CAAC;QAAC,gBAAgB,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAClE;AAED,MAAM,MAAM,qBAAqB,GAAG;IAClC,WAAW,EAAE;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,yBAAyB,CAAC,CAAA;KAAE,CAAC;IACxF,MAAM,EAAE,MAAM,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC;IACzC,eAAe,EAAE,OAAO,CAAC;IACzB,QAAQ,EAAE;QAAE,0BAA0B,EAAE,MAAM,CAAA;KAAE,CAAC;IACjD,KAAK,EAAE,YAAY,CAAC;IACpB,aAAa,EAAE;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,gBAAgB,EAAE,MAAM,CAAA;KAAE,CAAC;CAC/D,CAAC;AAEF,eAAO,MAAM,sBAAsB,EAAE,qBAcpC,CAAC;AAEF,eAAO,MAAM,cAAc,eAA2B,CAAC;AAEvD;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,CAAC,EAAE,mBAAmB,GAAG,qBAAqB,CAmBxF"}
|
|
@@ -12,7 +12,10 @@ exports.DEFAULT_BILLING_CONFIG = {
|
|
|
12
12
|
paymentMethod: "/settings/billing",
|
|
13
13
|
subscribe: "/settings/billing?action=subscribe",
|
|
14
14
|
resubscribe: "/settings/billing",
|
|
15
|
+
changePlan: "/settings/billing?action=change-plan",
|
|
16
|
+
buyCredits: "/settings/billing?action=subscribe",
|
|
15
17
|
},
|
|
18
|
+
creditWarning: { enabled: false, thresholdPercent: 80 },
|
|
16
19
|
};
|
|
17
20
|
exports.BILLING_CONFIG = Symbol("BILLING_CONFIG");
|
|
18
21
|
/**
|
|
@@ -31,6 +34,10 @@ function resolveBillingConfig(config) {
|
|
|
31
34
|
afterSubscriptionEndedDays: config?.deletion?.afterSubscriptionEndedDays ?? exports.DEFAULT_BILLING_CONFIG.deletion.afterSubscriptionEndedDays,
|
|
32
35
|
},
|
|
33
36
|
links: { ...exports.DEFAULT_BILLING_CONFIG.links, ...stripUndefined(config?.links) },
|
|
37
|
+
creditWarning: {
|
|
38
|
+
enabled: config?.creditWarning?.enabled ?? exports.DEFAULT_BILLING_CONFIG.creditWarning.enabled,
|
|
39
|
+
thresholdPercent: config?.creditWarning?.thresholdPercent ?? exports.DEFAULT_BILLING_CONFIG.creditWarning.thresholdPercent,
|
|
40
|
+
},
|
|
34
41
|
};
|
|
35
42
|
}
|
|
36
43
|
function stripUndefined(value) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"billing.config.interface.js","sourceRoot":"","sources":["../../../../src/foundations/billing/interfaces/billing.config.interface.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"billing.config.interface.js","sourceRoot":"","sources":["../../../../src/foundations/billing/interfaces/billing.config.interface.ts"],"names":[],"mappings":";;;AA2FA,oDAmBC;AAzCY,QAAA,sBAAsB,GAA0B;IAC3D,WAAW,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,EAAE;IAC9C,MAAM,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE;IAC5E,eAAe,EAAE,IAAI;IACrB,QAAQ,EAAE,EAAE,0BAA0B,EAAE,EAAE,EAAE;IAC5C,KAAK,EAAE;QACL,OAAO,EAAE,mBAAmB;QAC5B,aAAa,EAAE,mBAAmB;QAClC,SAAS,EAAE,oCAAoC;QAC/C,WAAW,EAAE,mBAAmB;QAChC,UAAU,EAAE,sCAAsC;QAClD,UAAU,EAAE,oCAAoC;KACjD;IACD,aAAa,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,gBAAgB,EAAE,EAAE,EAAE;CACxD,CAAC;AAEW,QAAA,cAAc,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAC;AAEvD;;;GAGG;AACH,SAAgB,oBAAoB,CAAC,MAA4B;IAC/D,OAAO;QACL,WAAW,EAAE;YACX,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,IAAI,8BAAsB,CAAC,WAAW,CAAC,OAAO;YACnF,SAAS,EAAE,EAAE,GAAG,8BAAsB,CAAC,WAAW,CAAC,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,WAAW,EAAE,SAAS,IAAI,EAAE,CAAC,EAAE;SAC1G;QACD,MAAM,EAAE,EAAE,GAAG,8BAAsB,CAAC,MAAM,EAAE,GAAG,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE;QAC/E,eAAe,EAAE,MAAM,EAAE,eAAe,IAAI,8BAAsB,CAAC,eAAe;QAClF,QAAQ,EAAE;YACR,0BAA0B,EACxB,MAAM,EAAE,QAAQ,EAAE,0BAA0B,IAAI,8BAAsB,CAAC,QAAQ,CAAC,0BAA0B;SAC7G;QACD,KAAK,EAAE,EAAE,GAAG,8BAAsB,CAAC,KAAK,EAAE,GAAG,cAAc,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE;QAC5E,aAAa,EAAE;YACb,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,OAAO,IAAI,8BAAsB,CAAC,aAAa,CAAC,OAAO;YACvF,gBAAgB,EACd,MAAM,EAAE,aAAa,EAAE,gBAAgB,IAAI,8BAAsB,CAAC,aAAa,CAAC,gBAAgB;SACnG;KACF,CAAC;AACJ,CAAC;AAED,SAAS,cAAc,CAAmB,KAAS;IACjD,IAAI,CAAC,KAAK;QAAE,OAAO,EAAE,CAAC;IACtB,OAAO,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,SAAS,CAAC,CAAe,CAAC;AACpG,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The offer the credit warning makes, chosen once when the warning fires so the
|
|
3
|
+
* banner and the email always agree.
|
|
4
|
+
*
|
|
5
|
+
* - `subscribe`: the company is on a trial
|
|
6
|
+
* - `upgrade-or-pack`: an active recurring plan with more credits exists in the same interval
|
|
7
|
+
* - `pack`: no bigger plan exists, so only a credit pack is offered
|
|
8
|
+
*/
|
|
9
|
+
export type CreditWarningOffer = "subscribe" | "upgrade-or-pack" | "pack";
|
|
10
|
+
/**
|
|
11
|
+
* Route segment of the dismiss endpoint, appended to `${companyMeta.endpoint}/:companyId/`.
|
|
12
|
+
* The frontend library declares the same value; a spec in each package asserts it.
|
|
13
|
+
*/
|
|
14
|
+
export declare const CREDIT_WARNING_DISMISS_SEGMENT = "credit-warning/dismiss";
|
|
15
|
+
//# sourceMappingURL=credit-warning.interface.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"credit-warning.interface.d.ts","sourceRoot":"","sources":["../../../../src/foundations/billing/interfaces/credit-warning.interface.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,MAAM,MAAM,kBAAkB,GAAG,WAAW,GAAG,iBAAiB,GAAG,MAAM,CAAC;AAE1E;;;GAGG;AACH,eAAO,MAAM,8BAA8B,2BAA2B,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CREDIT_WARNING_DISMISS_SEGMENT = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Route segment of the dismiss endpoint, appended to `${companyMeta.endpoint}/:companyId/`.
|
|
6
|
+
* The frontend library declares the same value; a spec in each package asserts it.
|
|
7
|
+
*/
|
|
8
|
+
exports.CREDIT_WARNING_DISMISS_SEGMENT = "credit-warning/dismiss";
|
|
9
|
+
//# sourceMappingURL=credit-warning.interface.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"credit-warning.interface.js","sourceRoot":"","sources":["../../../../src/foundations/billing/interfaces/credit-warning.interface.ts"],"names":[],"mappings":";;;AAUA;;;GAGG;AACU,QAAA,8BAA8B,GAAG,wBAAwB,CAAC"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { BillingEmailJobDefinition } from "../interfaces/billing.config.interface";
|
|
2
|
+
import type { CreditWarningOffer } from "../interfaces/credit-warning.interface";
|
|
2
3
|
/**
|
|
3
4
|
* Job types the library billing email sender handles out of the box.
|
|
4
5
|
*
|
|
@@ -6,7 +7,7 @@ import { BillingEmailJobDefinition } from "../interfaces/billing.config.interfac
|
|
|
6
7
|
* (every job type except the app-specific `cull-completed`), with the hard-coded
|
|
7
8
|
* paths turned into the configurable `links`. `card-expiring` is new.
|
|
8
9
|
*/
|
|
9
|
-
export type LibraryBillingJobType = "payment-failure" | "subscription-status-change" | "payment-success-customer" | "payment-success-admin" | "trial-ending-reminder" | "trial-ended" | "deletion-warning" | "subscription-cancelled" | "company-deleted" | "referral-invite" | "referral-reward" | "card-expiring";
|
|
10
|
+
export type LibraryBillingJobType = "payment-failure" | "subscription-status-change" | "payment-success-customer" | "payment-success-admin" | "trial-ending-reminder" | "trial-ended" | "deletion-warning" | "subscription-cancelled" | "company-deleted" | "referral-invite" | "referral-reward" | "card-expiring" | "credit-warning";
|
|
10
11
|
export interface BillingEmailJobData {
|
|
11
12
|
jobType: string;
|
|
12
13
|
payload: Record<string, unknown> & {
|
|
@@ -123,5 +124,12 @@ export interface CardExpiringEmailParams {
|
|
|
123
124
|
cardLast4: string;
|
|
124
125
|
locale?: string;
|
|
125
126
|
}
|
|
127
|
+
export interface CreditWarningEmailParams {
|
|
128
|
+
to: string;
|
|
129
|
+
customerName: string;
|
|
130
|
+
offer: CreditWarningOffer;
|
|
131
|
+
interval: "month" | "year";
|
|
132
|
+
locale: string;
|
|
133
|
+
}
|
|
126
134
|
export declare const LIBRARY_BILLING_EMAIL_JOBS: Record<LibraryBillingJobType, BillingEmailJobDefinition>;
|
|
127
135
|
//# sourceMappingURL=billing-email.jobs.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"billing-email.jobs.d.ts","sourceRoot":"","sources":["../../../../src/foundations/billing/processors/billing-email.jobs.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,yBAAyB,EAAE,MAAM,wCAAwC,CAAC;
|
|
1
|
+
{"version":3,"file":"billing-email.jobs.d.ts","sourceRoot":"","sources":["../../../../src/foundations/billing/processors/billing-email.jobs.ts"],"names":[],"mappings":"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"}
|
|
@@ -192,5 +192,22 @@ exports.LIBRARY_BILLING_EMAIL_JOBS = {
|
|
|
192
192
|
};
|
|
193
193
|
},
|
|
194
194
|
},
|
|
195
|
+
"credit-warning": {
|
|
196
|
+
template: "creditWarning",
|
|
197
|
+
toTemplateData: (payload, { appUrl, locale, links }) => {
|
|
198
|
+
const params = asParams(payload);
|
|
199
|
+
return {
|
|
200
|
+
to: params.to,
|
|
201
|
+
customerName: params.customerName,
|
|
202
|
+
offerSubscribe: params.offer === "subscribe",
|
|
203
|
+
offerUpgrade: params.offer === "upgrade-or-pack",
|
|
204
|
+
offerPack: params.offer === "pack",
|
|
205
|
+
isYearly: params.interval === "year",
|
|
206
|
+
changePlanUrl: `${appUrl}${links.changePlan}`,
|
|
207
|
+
buyCreditsUrl: `${appUrl}${links.buyCredits}`,
|
|
208
|
+
locale,
|
|
209
|
+
};
|
|
210
|
+
},
|
|
211
|
+
},
|
|
195
212
|
};
|
|
196
213
|
//# sourceMappingURL=billing-email.jobs.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"billing-email.jobs.js","sourceRoot":"","sources":["../../../../src/foundations/billing/processors/billing-email.jobs.ts"],"names":[],"mappings":";;;AAAA,qEAAoE;
|
|
1
|
+
{"version":3,"file":"billing-email.jobs.js","sourceRoot":"","sources":["../../../../src/foundations/billing/processors/billing-email.jobs.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import { ClsService } from "nestjs-cls";
|
|
2
|
+
import { JsonApiService } from "../../../core/jsonapi/services/jsonapi.service";
|
|
3
|
+
import { AppLoggingService } from "../../../core/logging/services/logging.service";
|
|
4
|
+
import { AbstractService } from "../../../core/neo4j/abstracts/abstract.service";
|
|
5
|
+
import { WebSocketService } from "../../../core/websocket/services/websocket.service";
|
|
6
|
+
import { Company, CompanyDescriptor } from "../../company/entities/company";
|
|
7
|
+
import { CompanyCreditsGrantedPayload, CompanyCreditsUsedPayload } from "../../company/events/company.events";
|
|
8
|
+
import { CompanyRepository } from "../../company/repositories/company.repository";
|
|
9
|
+
import { StripeCustomerRepository } from "../../stripe-customer/repositories/stripe-customer.repository";
|
|
10
|
+
import { StripePriceRepository } from "../../stripe-price/repositories/stripe-price.repository";
|
|
11
|
+
import { StripeSubscriptionRepository } from "../../stripe-subscription/repositories/stripe-subscription.repository";
|
|
12
|
+
import { StripeWebhookNotificationService } from "../../stripe-webhook/services/stripe-webhook-notification.service";
|
|
13
|
+
import { ResolvedBillingConfig } from "../interfaces/billing.config.interface";
|
|
14
|
+
import type { CreditWarningOffer } from "../interfaces/credit-warning.interface";
|
|
15
|
+
/**
|
|
16
|
+
* Warns a company once per credit period when its credits left fall to
|
|
17
|
+
* `100 - thresholdPercent`% of what it was granted, in the app and by email.
|
|
18
|
+
*
|
|
19
|
+
* Opt-in through `billing.creditWarning.enabled`. With it off every method
|
|
20
|
+
* returns at once: no Cypher, no Company field written, no email, no websocket
|
|
21
|
+
* message.
|
|
22
|
+
*
|
|
23
|
+
* - Credits used: a cheap pre-check on the company, then the offer lookup, then
|
|
24
|
+
* the atomic `markCreditWarningSent`. Only the spend that gets the company back
|
|
25
|
+
* sends the email and broadcasts `company:subscription_updated`.
|
|
26
|
+
* - Credits granted: starts a new period (clears every marker).
|
|
27
|
+
* - Dismiss: records the dismissal for the caller's own company.
|
|
28
|
+
*
|
|
29
|
+
* The event handlers never throw: the credits-used emitter is the credit spend of
|
|
30
|
+
* a live LLM call. They run in a CLS context pinned to the payload's company,
|
|
31
|
+
* because the granted event fires from the webhook worker with no company in CLS.
|
|
32
|
+
*/
|
|
33
|
+
export declare class CreditWarningService extends AbstractService<Company, typeof CompanyDescriptor.relationships> {
|
|
34
|
+
private readonly companyRepository;
|
|
35
|
+
private readonly config;
|
|
36
|
+
private readonly stripeCustomerRepository;
|
|
37
|
+
private readonly stripeSubscriptionRepository;
|
|
38
|
+
private readonly stripePriceRepository;
|
|
39
|
+
private readonly notificationService;
|
|
40
|
+
private readonly webSocketService;
|
|
41
|
+
private readonly logger;
|
|
42
|
+
protected readonly descriptor: import("../../..").EntityDescriptor<Company, {
|
|
43
|
+
feature: {
|
|
44
|
+
model: import("../../..").DataMeta;
|
|
45
|
+
direction: "out";
|
|
46
|
+
relationship: string;
|
|
47
|
+
cardinality: "many";
|
|
48
|
+
dtoKey: string;
|
|
49
|
+
};
|
|
50
|
+
module: {
|
|
51
|
+
model: import("../../..").DataMeta;
|
|
52
|
+
direction: "out";
|
|
53
|
+
relationship: string;
|
|
54
|
+
cardinality: "many";
|
|
55
|
+
dtoKey: string;
|
|
56
|
+
};
|
|
57
|
+
}>;
|
|
58
|
+
constructor(jsonApiService: JsonApiService, companyRepository: CompanyRepository, clsService: ClsService, config: ResolvedBillingConfig, stripeCustomerRepository: StripeCustomerRepository, stripeSubscriptionRepository: StripeSubscriptionRepository, stripePriceRepository: StripePriceRepository, notificationService: StripeWebhookNotificationService, webSocketService: WebSocketService, logger: AppLoggingService);
|
|
59
|
+
private get enabled();
|
|
60
|
+
handleCreditsUsed(payload: CompanyCreditsUsedPayload): Promise<void>;
|
|
61
|
+
handleCreditsGranted(payload: CompanyCreditsGrantedPayload): Promise<void>;
|
|
62
|
+
/**
|
|
63
|
+
* Records that the caller's company dismissed the credit warning.
|
|
64
|
+
*
|
|
65
|
+
* Does nothing when the feature is off.
|
|
66
|
+
*
|
|
67
|
+
* @throws ForbiddenException when `companyId` is not the caller's company
|
|
68
|
+
*/
|
|
69
|
+
dismiss(params: {
|
|
70
|
+
companyId: string;
|
|
71
|
+
}): Promise<void>;
|
|
72
|
+
/**
|
|
73
|
+
* The offer the warning would make to the CLS company, or null when it has no
|
|
74
|
+
* active or trialing recurring subscription (no warning then).
|
|
75
|
+
*/
|
|
76
|
+
resolveOffer(): Promise<CreditWarningOffer | null>;
|
|
77
|
+
private resolveContext;
|
|
78
|
+
/** The cheap checks run before any Stripe lookup or write. */
|
|
79
|
+
private canWarn;
|
|
80
|
+
private runForCompany;
|
|
81
|
+
/** Makes every open page of the company refetch the user. Never throws. */
|
|
82
|
+
private broadcast;
|
|
83
|
+
}
|
|
84
|
+
//# sourceMappingURL=credit-warning.service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"credit-warning.service.d.ts","sourceRoot":"","sources":["../../../../src/foundations/billing/services/credit-warning.service.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EAAE,cAAc,EAAE,MAAM,gDAAgD,CAAC;AAChF,OAAO,EAAE,iBAAiB,EAAE,MAAM,gDAAgD,CAAC;AACnF,OAAO,EAAE,eAAe,EAAE,MAAM,gDAAgD,CAAC;AACjF,OAAO,EAAE,gBAAgB,EAAE,MAAM,oDAAoD,CAAC;AACtF,OAAO,EAAE,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AAC5E,OAAO,EAGL,4BAA4B,EAC5B,yBAAyB,EAC1B,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,+CAA+C,CAAC;AAClF,OAAO,EAAE,wBAAwB,EAAE,MAAM,+DAA+D,CAAC;AACzG,OAAO,EAAE,qBAAqB,EAAE,MAAM,yDAAyD,CAAC;AAEhG,OAAO,EAAE,4BAA4B,EAAE,MAAM,uEAAuE,CAAC;AACrH,OAAO,EAAE,gCAAgC,EAAE,MAAM,mEAAmE,CAAC;AACrH,OAAO,EAAkB,qBAAqB,EAAE,MAAM,wCAAwC,CAAC;AAC/F,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,wCAAwC,CAAC;AAQjF;;;;;;;;;;;;;;;;;GAiBG;AACH,qBACa,oBAAqB,SAAQ,eAAe,CAAC,OAAO,EAAE,OAAO,iBAAiB,CAAC,aAAa,CAAC;IAKtG,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAEV,OAAO,CAAC,QAAQ,CAAC,MAAM;IAC/C,OAAO,CAAC,QAAQ,CAAC,wBAAwB;IACzC,OAAO,CAAC,QAAQ,CAAC,4BAA4B;IAC7C,OAAO,CAAC,QAAQ,CAAC,qBAAqB;IACtC,OAAO,CAAC,QAAQ,CAAC,mBAAmB;IACpC,OAAO,CAAC,QAAQ,CAAC,gBAAgB;IACjC,OAAO,CAAC,QAAQ,CAAC,MAAM;IAZzB,SAAS,CAAC,QAAQ,CAAC,UAAU;;;;;;;;;;;;;;;OAAqB;gBAGhD,cAAc,EAAE,cAAc,EACb,iBAAiB,EAAE,iBAAiB,EACrD,UAAU,EAAE,UAAU,EACmB,MAAM,EAAE,qBAAqB,EACrD,wBAAwB,EAAE,wBAAwB,EAClD,4BAA4B,EAAE,4BAA4B,EAC1D,qBAAqB,EAAE,qBAAqB,EAC5C,mBAAmB,EAAE,gCAAgC,EACrD,gBAAgB,EAAE,gBAAgB,EAClC,MAAM,EAAE,iBAAiB;IAK5C,OAAO,KAAK,OAAO,GAElB;IAGK,iBAAiB,CAAC,OAAO,EAAE,yBAAyB,GAAG,OAAO,CAAC,IAAI,CAAC;IAoCpE,oBAAoB,CAAC,OAAO,EAAE,4BAA4B,GAAG,OAAO,CAAC,IAAI,CAAC;IAgBhF;;;;;;OAMG;IACG,OAAO,CAAC,MAAM,EAAE;QAAE,SAAS,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAW3D;;;OAGG;IACG,YAAY,IAAI,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC;YAI1C,cAAc;IAmC5B,8DAA8D;IAC9D,OAAO,CAAC,OAAO;YAgBD,aAAa;IAO3B,2EAA2E;YAC7D,SAAS;CAcxB"}
|