@carlonicora/nestjs-neo4jsonapi 8.2.0 → 8.4.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 (60) hide show
  1. package/dist/common/interfaces/assistant.user-message.interface.d.ts +33 -0
  2. package/dist/common/interfaces/assistant.user-message.interface.d.ts.map +1 -0
  3. package/dist/common/interfaces/assistant.user-message.interface.js +17 -0
  4. package/dist/common/interfaces/assistant.user-message.interface.js.map +1 -0
  5. package/dist/common/interfaces/index.d.ts +1 -0
  6. package/dist/common/interfaces/index.d.ts.map +1 -1
  7. package/dist/common/interfaces/index.js +1 -0
  8. package/dist/common/interfaces/index.js.map +1 -1
  9. package/dist/foundations/assistant/services/assistant.service.d.ts +8 -1
  10. package/dist/foundations/assistant/services/assistant.service.d.ts.map +1 -1
  11. package/dist/foundations/assistant/services/assistant.service.js +44 -2
  12. package/dist/foundations/assistant/services/assistant.service.js.map +1 -1
  13. package/dist/foundations/billing/billing.module.d.ts +2 -0
  14. package/dist/foundations/billing/billing.module.d.ts.map +1 -1
  15. package/dist/foundations/billing/billing.module.js +10 -0
  16. package/dist/foundations/billing/billing.module.js.map +1 -1
  17. package/dist/foundations/billing/controllers/credit-warning.controller.d.ts +16 -0
  18. package/dist/foundations/billing/controllers/credit-warning.controller.d.ts.map +1 -0
  19. package/dist/foundations/billing/controllers/credit-warning.controller.js +63 -0
  20. package/dist/foundations/billing/controllers/credit-warning.controller.js.map +1 -0
  21. package/dist/foundations/billing/index.d.ts +3 -0
  22. package/dist/foundations/billing/index.d.ts.map +1 -1
  23. package/dist/foundations/billing/index.js +4 -0
  24. package/dist/foundations/billing/index.js.map +1 -1
  25. package/dist/foundations/billing/interfaces/billing.config.interface.d.ts +18 -0
  26. package/dist/foundations/billing/interfaces/billing.config.interface.d.ts.map +1 -1
  27. package/dist/foundations/billing/interfaces/billing.config.interface.js +7 -0
  28. package/dist/foundations/billing/interfaces/billing.config.interface.js.map +1 -1
  29. package/dist/foundations/billing/interfaces/credit-warning.interface.d.ts +15 -0
  30. package/dist/foundations/billing/interfaces/credit-warning.interface.d.ts.map +1 -0
  31. package/dist/foundations/billing/interfaces/credit-warning.interface.js +9 -0
  32. package/dist/foundations/billing/interfaces/credit-warning.interface.js.map +1 -0
  33. package/dist/foundations/billing/processors/billing-email.jobs.d.ts +9 -1
  34. package/dist/foundations/billing/processors/billing-email.jobs.d.ts.map +1 -1
  35. package/dist/foundations/billing/processors/billing-email.jobs.js +17 -0
  36. package/dist/foundations/billing/processors/billing-email.jobs.js.map +1 -1
  37. package/dist/foundations/billing/services/credit-warning.service.d.ts +84 -0
  38. package/dist/foundations/billing/services/credit-warning.service.d.ts.map +1 -0
  39. package/dist/foundations/billing/services/credit-warning.service.js +218 -0
  40. package/dist/foundations/billing/services/credit-warning.service.js.map +1 -0
  41. package/dist/foundations/company/entities/company.d.ts +5 -0
  42. package/dist/foundations/company/entities/company.d.ts.map +1 -1
  43. package/dist/foundations/company/entities/company.js +4 -0
  44. package/dist/foundations/company/entities/company.js.map +1 -1
  45. package/dist/foundations/company/events/company.events.d.ts +22 -0
  46. package/dist/foundations/company/events/company.events.d.ts.map +1 -1
  47. package/dist/foundations/company/events/company.events.js +14 -1
  48. package/dist/foundations/company/events/company.events.js.map +1 -1
  49. package/dist/foundations/company/repositories/company.repository.d.ts +44 -0
  50. package/dist/foundations/company/repositories/company.repository.d.ts.map +1 -1
  51. package/dist/foundations/company/repositories/company.repository.js +97 -0
  52. package/dist/foundations/company/repositories/company.repository.js.map +1 -1
  53. package/dist/foundations/company/services/company.service.d.ts.map +1 -1
  54. package/dist/foundations/company/services/company.service.js +13 -0
  55. package/dist/foundations/company/services/company.service.js.map +1 -1
  56. package/dist/foundations/stripe-webhook/services/stripe-webhook-notification.service.d.ts +14 -0
  57. package/dist/foundations/stripe-webhook/services/stripe-webhook-notification.service.d.ts.map +1 -1
  58. package/dist/foundations/stripe-webhook/services/stripe-webhook-notification.service.js +43 -0
  59. package/dist/foundations/stripe-webhook/services/stripe-webhook-notification.service.js.map +1 -1
  60. package/package.json +1 -1
@@ -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;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,aAAa,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,CAAC;AAE9G;;;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;CAC/B;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;CACrB,CAAC;AAEF,eAAO,MAAM,sBAAsB,EAAE,qBAWpC,CAAC;AAEF,eAAO,MAAM,cAAc,eAA2B,CAAC;AAEvD;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,CAAC,EAAE,mBAAmB,GAAG,qBAAqB,CAcxF"}
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":";;;AAuEA,oDAcC;AAjCY,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;KACjC;CACF,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;KAC7E,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"}
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":"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"}
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":"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"}
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"}