@saasicat/nest 1.0.0-rc.2 → 1.0.0-rc.21

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 (154) hide show
  1. package/README.md +44 -8
  2. package/dist/.build-stamp +1 -1
  3. package/dist/_entries.cjs +10214 -4796
  4. package/dist/admin/index.d.cts +5 -4
  5. package/dist/admin/index.d.ts +5 -4
  6. package/dist/admin/index.js +13 -9
  7. package/dist/{admin-resources.module-CpvzcfCc.d.cts → admin-resources.module-B4XNvdH-.d.cts} +1 -2
  8. package/dist/{admin-resources.module-DF5_Q7RD.d.ts → admin-resources.module-CWqdI9BV.d.ts} +1 -2
  9. package/dist/{admin-stats.service-TYiSUwIR.d.ts → admin-stats.service-CsLNt19Z.d.ts} +11 -7
  10. package/dist/{admin-stats.service-DfKupywR.d.cts → admin-stats.service-DrZrU8IJ.d.cts} +11 -7
  11. package/dist/{aggregation-B3CD0v_d.d.cts → aggregation-ChpZDh0g.d.ts} +39 -6
  12. package/dist/{aggregation-BFzW07DE.d.ts → aggregation-OpnhwzF5.d.cts} +39 -6
  13. package/dist/billing/index.d.cts +448 -108
  14. package/dist/billing/index.d.ts +448 -108
  15. package/dist/billing/index.js +108 -41
  16. package/dist/catalog/index.d.cts +74 -45
  17. package/dist/catalog/index.d.ts +74 -45
  18. package/dist/catalog/index.js +21 -13
  19. package/dist/catalog.module-C9O7BxRq.d.ts +180 -0
  20. package/dist/catalog.module-T-I5Ricz.d.cts +180 -0
  21. package/dist/checkout-offer/index.d.cts +17 -22
  22. package/dist/checkout-offer/index.d.ts +17 -22
  23. package/dist/checkout-offer/index.js +21 -7
  24. package/dist/checkout-offer.module-DFhGy6JO.d.cts +58 -0
  25. package/dist/checkout-offer.module-x7SP_dX4.d.ts +58 -0
  26. package/dist/checkout-offer.service-BeHgYikI.d.ts +242 -0
  27. package/dist/checkout-offer.service-CCVxG9b2.d.cts +242 -0
  28. package/dist/chunk-34XVPR6P.js +222 -0
  29. package/dist/{chunk-AOQJEYOL.js → chunk-3QVGA6JX.js} +3 -1
  30. package/dist/chunk-3RLWML2S.js +896 -0
  31. package/dist/{chunk-TXC3LHHB.js → chunk-4SDSYV4A.js} +21 -13
  32. package/dist/chunk-55QEDAMX.js +946 -0
  33. package/dist/chunk-5CKC7O52.js +140 -0
  34. package/dist/chunk-6PJE7EWO.js +185 -0
  35. package/dist/chunk-7NJKVC5X.js +353 -0
  36. package/dist/{chunk-RUNZ3X4C.js → chunk-AOS2JPDD.js} +1263 -185
  37. package/dist/{chunk-WOVQPXV4.js → chunk-CQ2ZZMTD.js} +702 -725
  38. package/dist/{chunk-NA6O63B7.js → chunk-F5X66HF5.js} +5 -5
  39. package/dist/chunk-FEQZCWUL.js +174 -0
  40. package/dist/{chunk-VIJ5NJWC.js → chunk-G6EZWECL.js} +107 -31
  41. package/dist/chunk-G7RQO2XO.js +0 -0
  42. package/dist/{chunk-N3L3AICU.js → chunk-GPQWGA6B.js} +5 -6
  43. package/dist/chunk-GZTL64QK.js +7 -0
  44. package/dist/{chunk-SABTXESR.js → chunk-J7NJRK3K.js} +17 -1
  45. package/dist/{chunk-SEPN52AD.js → chunk-JBCC6C3M.js} +566 -307
  46. package/dist/{chunk-I7GTA3RX.js → chunk-JQRA724W.js} +1 -1
  47. package/dist/{chunk-WXYJHZCN.js → chunk-JVAEKTJ4.js} +2 -14
  48. package/dist/chunk-KPEMTBOP.js +26 -0
  49. package/dist/chunk-LF6J4YYN.js +301 -0
  50. package/dist/{chunk-LTT736P3.js → chunk-LLYVYRGJ.js} +228 -387
  51. package/dist/{chunk-6Z7JR4EW.js → chunk-M47BNEY2.js} +1897 -633
  52. package/dist/{chunk-KFT5AIIH.js → chunk-NDLC5GYK.js} +206 -24
  53. package/dist/{chunk-O2J2HDXA.js → chunk-OOTEXP47.js} +3 -8
  54. package/dist/chunk-QPVDCKYS.js +702 -0
  55. package/dist/{chunk-NHVDCYK5.js → chunk-R5YCJBHY.js} +71 -106
  56. package/dist/{chunk-XBYAFEOR.js → chunk-S33SO5XX.js} +1 -1
  57. package/dist/chunk-SZ7RFPXA.js +10 -0
  58. package/dist/chunk-TBBZWZQT.js +98 -0
  59. package/dist/chunk-TOEFN7DN.js +295 -0
  60. package/dist/{chunk-7ZEGFL42.js → chunk-WHJSYKNC.js} +6 -6
  61. package/dist/chunk-WOEJ6K7M.js +55 -0
  62. package/dist/{chunk-AU3OOREM.js → chunk-XSSWYPP5.js} +16 -3
  63. package/dist/contract-line-item-money-B0Z3Ogur.d.cts +43 -0
  64. package/dist/contract-line-item-money-B0Z3Ogur.d.ts +43 -0
  65. package/dist/discovery/index.d.cts +2 -2
  66. package/dist/discovery/index.d.ts +2 -2
  67. package/dist/discovery/index.js +6 -6
  68. package/dist/{discovery.scanner-9cMqF95o.d.cts → discovery.scanner-DXKc6JkV.d.cts} +1 -1
  69. package/dist/{discovery.scanner-9cMqF95o.d.ts → discovery.scanner-DXKc6JkV.d.ts} +1 -1
  70. package/dist/{enforce-quota.interceptor-Df0e3OWe.d.cts → enforce-quota.interceptor-BFyVdWe8.d.cts} +6 -6
  71. package/dist/{enforce-quota.interceptor-DW3etVyI.d.ts → enforce-quota.interceptor-GaBXboGx.d.ts} +6 -6
  72. package/dist/entitlement/index.d.cts +27 -4
  73. package/dist/entitlement/index.d.ts +27 -4
  74. package/dist/entitlement/index.js +13 -8
  75. package/dist/index.d.cts +209 -28
  76. package/dist/index.d.ts +209 -28
  77. package/dist/index.js +285 -163
  78. package/dist/issuer-identity.check-CBO0vcsq.d.cts +197 -0
  79. package/dist/issuer-identity.check-Cz9CEMkZ.d.ts +197 -0
  80. package/dist/{module-options-COSEb0VW.d.ts → module-options-DmQ3G4sZ.d.ts} +135 -41
  81. package/dist/{module-options-BG3MzQva.d.cts → module-options-qAOwinHR.d.cts} +135 -41
  82. package/dist/payment-callback.service-CR84Xw1Z.d.cts +125 -0
  83. package/dist/payment-callback.service-CR84Xw1Z.d.ts +125 -0
  84. package/dist/payments/index.cjs +4 -0
  85. package/dist/payments/index.d.cts +187 -0
  86. package/dist/payments/index.d.ts +187 -0
  87. package/dist/payments/index.js +141 -0
  88. package/dist/payments.module-BdUq9ot_.d.cts +57 -0
  89. package/dist/payments.module-CQGv_VG7.d.ts +57 -0
  90. package/dist/plan-catalog-source-DWe-BGY1.d.cts +21 -0
  91. package/dist/plan-catalog-source-DWe-BGY1.d.ts +21 -0
  92. package/dist/{plan-resolution-Cgo_TR1H.d.cts → plan-resolution-CwUy_OqC.d.cts} +14 -0
  93. package/dist/{plan-resolution-Cgo_TR1H.d.ts → plan-resolution-CwUy_OqC.d.ts} +14 -0
  94. package/dist/{plan-versions.service-DChhbK6h.d.ts → plan-versions.service-C0N-Em2W.d.ts} +38 -64
  95. package/dist/{plan-versions.service-TPEtbN0r.d.cts → plan-versions.service-DARLh-qI.d.cts} +38 -64
  96. package/dist/platform/index.d.cts +52 -23
  97. package/dist/platform/index.d.ts +52 -23
  98. package/dist/platform/index.js +57 -36
  99. package/dist/promo/index.d.cts +23 -8
  100. package/dist/promo/index.d.ts +23 -8
  101. package/dist/promo/index.js +15 -7
  102. package/dist/{promo.module-DtvIycpt.d.cts → promo.module-CKkECmU8.d.cts} +9 -3
  103. package/dist/{promo.module-Z8h1PNX-.d.ts → promo.module-DuIJdK3U.d.ts} +9 -3
  104. package/dist/promo.service-BYBu6dy3.d.cts +215 -0
  105. package/dist/promo.service-CFjfF0Xm.d.ts +215 -0
  106. package/dist/registration/index.d.cts +104 -47
  107. package/dist/registration/index.d.ts +104 -47
  108. package/dist/registration/index.js +15 -9
  109. package/dist/subscriber/index.cjs +4 -0
  110. package/dist/subscriber/index.d.cts +28 -0
  111. package/dist/subscriber/index.d.ts +28 -0
  112. package/dist/subscriber/index.js +16 -0
  113. package/dist/subscriber.service-5W6Gi-1B.d.cts +68 -0
  114. package/dist/subscriber.service-5W6Gi-1B.d.ts +68 -0
  115. package/dist/subscription-contract/index.d.cts +4 -2
  116. package/dist/subscription-contract/index.d.ts +4 -2
  117. package/dist/subscription-contract/index.js +13 -5
  118. package/dist/{subscription-contract.module-fDFdQ0jm.d.ts → subscription-contract.module-BfIRpc1o.d.ts} +8 -2
  119. package/dist/{subscription-contract.module-CEK8HS5-.d.cts → subscription-contract.module-DTMuUJYd.d.cts} +8 -2
  120. package/dist/{subscription-contract.service-hD87MKyg.d.cts → subscription-contract.service-CPZrTM9C.d.ts} +32 -3
  121. package/dist/{subscription-contract.service-hD87MKyg.d.ts → subscription-contract.service-CfNApLuP.d.cts} +32 -3
  122. package/dist/tenant-billing.controller-BLqbsONe.d.ts +812 -0
  123. package/dist/tenant-billing.controller-DKbAqTbM.d.cts +812 -0
  124. package/dist/tenant-billing.module-ClbjzocC.d.cts +364 -0
  125. package/dist/tenant-billing.module-DohgJJ2m.d.ts +364 -0
  126. package/dist/tenant-billing.tokens-G-1xOlMr.d.cts +129 -0
  127. package/dist/tenant-billing.tokens-G-1xOlMr.d.ts +129 -0
  128. package/dist/testing/index.d.cts +44 -17
  129. package/dist/testing/index.d.ts +44 -17
  130. package/dist/testing/index.js +189 -40
  131. package/package.json +24 -4
  132. package/dist/catalog.module-BDDO6iwq.d.cts +0 -103
  133. package/dist/catalog.module-BTnMsE6u.d.ts +0 -103
  134. package/dist/checkout-offer.module-CMtiQJTT.d.ts +0 -39
  135. package/dist/checkout-offer.module-CVpWrzbe.d.cts +0 -39
  136. package/dist/checkout-offer.service-BLOv2HOo.d.cts +0 -49
  137. package/dist/checkout-offer.service-BLOv2HOo.d.ts +0 -49
  138. package/dist/chunk-57V6ZTI6.js +0 -22
  139. package/dist/chunk-BSK6YBLI.js +0 -87
  140. package/dist/chunk-DQKCK7DX.js +0 -217
  141. package/dist/chunk-VXEYLNIB.js +0 -632
  142. package/dist/chunk-WUDYIPYH.js +0 -715
  143. package/dist/define-saasicat-DROBe-b1.d.ts +0 -69
  144. package/dist/define-saasicat-vGBCkFys.d.cts +0 -69
  145. package/dist/promo.service-BJbKAmw3.d.cts +0 -112
  146. package/dist/promo.service-BJbKAmw3.d.ts +0 -112
  147. package/dist/tenant-billing.controller-BQ67mlmI.d.ts +0 -438
  148. package/dist/tenant-billing.controller-DS8kB8a7.d.cts +0 -438
  149. package/dist/tenant-billing.module-BznC3XtW.d.cts +0 -299
  150. package/dist/tenant-billing.module-wUbsQSFG.d.ts +0 -299
  151. /package/dist/{chunk-2FR6ZL7R.js → chunk-BHZOH2DY.js} +0 -0
  152. /package/dist/{chunk-2SLTRKXC.js → chunk-DFOW3JVO.js} +0 -0
  153. /package/dist/{chunk-DBZGV3HC.js → chunk-DU56UKEH.js} +0 -0
  154. /package/dist/{chunk-OYNHOY45.js → chunk-GAUEVIAE.js} +0 -0
@@ -1,217 +0,0 @@
1
- import {
2
- asProvider
3
- } from "./chunk-SABTXESR.js";
4
- import {
5
- __name
6
- } from "./chunk-SHUYVCID.js";
7
-
8
- // src/promo/math.ts
9
- function round2(n) {
10
- return Math.round(n * 100) / 100;
11
- }
12
- __name(round2, "round2");
13
- function grossFromNet(net, vatRate) {
14
- return round2(net * (1 + vatRate / 100));
15
- }
16
- __name(grossFromNet, "grossFromNet");
17
- function computeIncludedVat(grossAmount, vatRate) {
18
- return round2(grossAmount * vatRate / (100 + vatRate));
19
- }
20
- __name(computeIncludedVat, "computeIncludedVat");
21
-
22
- // src/billing/plan-catalog-from-snapshot.ts
23
- function buildPlanCatalogFromSnapshot(settings, snapshot) {
24
- const liveByPlanKey = new Map(snapshot.livePlanVersions.map((v) => [
25
- v.planId,
26
- v
27
- ]));
28
- const plans = snapshot.plans.filter((p) => p.deletedAt === null).sort((a, b) => a.sortOrder - b.sortOrder).map((stem) => {
29
- const live = liveByPlanKey.get(stem.planKey);
30
- if (!live) {
31
- return {
32
- id: stem.planKey,
33
- name: stem.label,
34
- tagline: stem.description ?? void 0,
35
- marketed: false,
36
- monthlyNet: null,
37
- yearlyNet: null,
38
- features: [],
39
- quotas: {}
40
- };
41
- }
42
- return {
43
- id: stem.planKey,
44
- name: stem.label,
45
- tagline: stem.description ?? void 0,
46
- marketed: live.marketed,
47
- monthlyNet: parseFloat(live.monthlyNet),
48
- yearlyNet: parseFloat(live.yearlyNet),
49
- features: live.features,
50
- quotas: live.quotas ?? {}
51
- };
52
- });
53
- const features = snapshot.featureEntries.filter((f) => f.deletedAt === null).sort((a, b) => a.sortOrder - b.sortOrder).map((row) => ({
54
- key: row.featureKey,
55
- label: row.label,
56
- icon: row.icon ?? void 0,
57
- tier: row.tier ?? void 0,
58
- plannedOnly: row.plannedOnly
59
- }));
60
- return {
61
- schemaVersion: 1,
62
- projectKey: settings.projectKey,
63
- ...settings.app ? {
64
- app: settings.app
65
- } : {},
66
- currency: settings.currency,
67
- vatRate: settings.vatRate,
68
- ...settings.marketing ? {
69
- marketing: settings.marketing
70
- } : {},
71
- features,
72
- plans
73
- };
74
- }
75
- __name(buildPlanCatalogFromSnapshot, "buildPlanCatalogFromSnapshot");
76
-
77
- // src/billing/plan-catalog.module.ts
78
- import { Module } from "@nestjs/common";
79
- function _ts_decorate(decorators, target, key, desc) {
80
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
81
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
82
- 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;
83
- return c > 3 && r && Object.defineProperty(target, key, r), r;
84
- }
85
- __name(_ts_decorate, "_ts_decorate");
86
- var PLAN_CATALOG_TOKEN = /* @__PURE__ */ Symbol.for("saasicat/nest/PLAN_CATALOG");
87
- var PLAN_CATALOG_READ_SINK_TOKEN = /* @__PURE__ */ Symbol.for("saasicat/nest/PLAN_CATALOG_READ_SINK");
88
- var PlanCatalogModule = class _PlanCatalogModule {
89
- static {
90
- __name(this, "PlanCatalogModule");
91
- }
92
- static forRoot(options) {
93
- return {
94
- module: _PlanCatalogModule,
95
- global: options.global ?? true,
96
- imports: options.imports ?? [],
97
- providers: [
98
- ...options.extraProviders ?? [],
99
- asProvider(PLAN_CATALOG_READ_SINK_TOKEN, options.sink),
100
- {
101
- provide: PLAN_CATALOG_TOKEN,
102
- useFactory: /* @__PURE__ */ __name(async (sink) => {
103
- const snapshot = await sink.loadSnapshot(options.projectKey);
104
- return buildPlanCatalogFromSnapshot({
105
- projectKey: options.projectKey,
106
- app: options.app,
107
- currency: options.currency,
108
- vatRate: options.vatRate,
109
- marketing: options.marketing
110
- }, snapshot);
111
- }, "useFactory"),
112
- inject: [
113
- PLAN_CATALOG_READ_SINK_TOKEN
114
- ]
115
- }
116
- ],
117
- exports: [
118
- PLAN_CATALOG_TOKEN,
119
- PLAN_CATALOG_READ_SINK_TOKEN
120
- ]
121
- };
122
- }
123
- /**
124
- * Tests / in-memory setup: takes the catalog object directly, without a
125
- * sink/DB lookup. For unit tests + test bootstraps.
126
- */
127
- static forRootWithCatalog(catalog, opts = {}) {
128
- return {
129
- module: _PlanCatalogModule,
130
- providers: [
131
- {
132
- provide: PLAN_CATALOG_TOKEN,
133
- useValue: catalog
134
- }
135
- ],
136
- exports: [
137
- PLAN_CATALOG_TOKEN
138
- ],
139
- global: opts.global ?? true
140
- };
141
- }
142
- };
143
- PlanCatalogModule = _ts_decorate([
144
- Module({})
145
- ], PlanCatalogModule);
146
-
147
- // src/billing/plan-helpers.ts
148
- function findPlan(catalog, planId) {
149
- return (catalog.plans ?? []).find((p) => p.id === planId);
150
- }
151
- __name(findPlan, "findPlan");
152
- function getPlanOrThrow(catalog, planId) {
153
- const plan = findPlan(catalog, planId);
154
- if (!plan) {
155
- throw new Error(`Plan "${planId}" not found in the catalog (${catalog.projectKey})`);
156
- }
157
- return plan;
158
- }
159
- __name(getPlanOrThrow, "getPlanOrThrow");
160
- function getMarketedPlans(catalog) {
161
- return (catalog.plans ?? []).filter((p) => p.marketed !== false);
162
- }
163
- __name(getMarketedPlans, "getMarketedPlans");
164
- function getPlanPriceNet(catalog, planId, cycle) {
165
- const plan = findPlan(catalog, planId);
166
- if (!plan) return null;
167
- if (plan.marketed === false) return null;
168
- const net = cycle === "YEARLY" ? plan.yearlyNet : plan.monthlyNet;
169
- return net ?? null;
170
- }
171
- __name(getPlanPriceNet, "getPlanPriceNet");
172
- function getPlanPriceGross(catalog, planId, cycle, vatRate) {
173
- const net = getPlanPriceNet(catalog, planId, cycle);
174
- if (net === null) return null;
175
- const rate = vatRate ?? catalog.vatRate;
176
- return round2(net * (1 + rate / 100));
177
- }
178
- __name(getPlanPriceGross, "getPlanPriceGross");
179
- function isFeatureInPlan(catalog, planId, featureKey) {
180
- const plan = findPlan(catalog, planId);
181
- if (!plan) return false;
182
- return plan.features.includes(featureKey);
183
- }
184
- __name(isFeatureInPlan, "isFeatureInPlan");
185
- function getPlanQuota(catalog, planId, quotaKey) {
186
- const plan = findPlan(catalog, planId);
187
- return plan?.quotas[quotaKey];
188
- }
189
- __name(getPlanQuota, "getPlanQuota");
190
- function getActiveFeatureKeys(catalog) {
191
- return (catalog.features ?? []).filter((f) => !f.plannedOnly).map((f) => f.key);
192
- }
193
- __name(getActiveFeatureKeys, "getActiveFeatureKeys");
194
- function isFeaturePlannedOnly(catalog, featureKey) {
195
- const def = (catalog.features ?? []).find((f) => f.key === featureKey);
196
- return def?.plannedOnly === true;
197
- }
198
- __name(isFeaturePlannedOnly, "isFeaturePlannedOnly");
199
-
200
- export {
201
- round2,
202
- grossFromNet,
203
- computeIncludedVat,
204
- buildPlanCatalogFromSnapshot,
205
- PLAN_CATALOG_TOKEN,
206
- PLAN_CATALOG_READ_SINK_TOKEN,
207
- PlanCatalogModule,
208
- findPlan,
209
- getPlanOrThrow,
210
- getMarketedPlans,
211
- getPlanPriceNet,
212
- getPlanPriceGross,
213
- isFeatureInPlan,
214
- getPlanQuota,
215
- getActiveFeatureKeys,
216
- isFeaturePlannedOnly
217
- };