@saasicat/nest 0.6.0 → 0.8.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.
@@ -688,7 +688,7 @@ var PLATFORM_CORE_MANIFEST_CONTRIBUTION = {
688
688
  // section is deliberately curated:
689
689
  // Overview: dashboard
690
690
  // Product catalog: discovery → bundles → plans →
691
- // planVersions → marketingCatalog → promoCodes
691
+ // marketingCatalog → promoCodes
692
692
  // (promoCodes is appended by the app contributions
693
693
  // and therefore lands at the end of the section)
694
694
  // Customers: tenants → users → pilots
@@ -716,10 +716,6 @@ var PLATFORM_CORE_MANIFEST_CONTRIBUTION = {
716
716
  enabled: true,
717
717
  requiredCapability: "plans.read"
718
718
  },
719
- planVersions: {
720
- enabled: true,
721
- requiredCapability: "plans.read"
722
- },
723
719
  // SPEC_V2 §11.1 M3 — marketing catalog (locale pivot).
724
720
  // Apps that market a public catalog set
725
721
  // `marketingProjections.read = true`.
@@ -6,7 +6,7 @@ import {
6
6
  AdminStatsService,
7
7
  PROMO_CODE_STATS_PORT_TOKEN,
8
8
  SUBSCRIPTION_STATS_PORT_TOKEN
9
- } from "../chunk-SD3TT2BR.js";
9
+ } from "../chunk-T5SXXAKG.js";
10
10
  import {
11
11
  ADMIN_MANIFEST_CONFIG,
12
12
  AdminBypassRlsInterceptor,
@@ -21,7 +21,7 @@ import {
21
21
  REQUIRE_MFA_KEY,
22
22
  RequireMfa,
23
23
  SuperAdminGuard
24
- } from "../chunk-U6HT27J7.js";
24
+ } from "../chunk-PLDHI6NA.js";
25
25
  import {
26
26
  AUDIT_PORT_TOKEN,
27
27
  AdminAuditService,
@@ -3923,7 +3923,6 @@ var TenantBillingController = class _TenantBillingController {
3923
3923
  periodEnd: period?.end ?? null,
3924
3924
  nextStatus: wasTrial ? null : "ACTIVE"
3925
3925
  });
3926
- await this.tryFreezeOnPlanChange(tenantId, dto.plan, dto.billingCycle, wasTrial);
3927
3926
  if (dto.promoCode) {
3928
3927
  if (!this.promoCodes) {
3929
3928
  warnings.push("Promo-Code wurde gesendet, aber PromoCodesModule ist nicht geladen \u2014 der Code wurde NICHT eingel\xF6st.");
@@ -3945,6 +3944,7 @@ var TenantBillingController = class _TenantBillingController {
3945
3944
  }
3946
3945
  }
3947
3946
  }
3947
+ await this.tryFreezeOnPlanChange(tenantId, dto.plan, dto.billingCycle, wasTrial);
3948
3948
  this.entitlements.invalidateTenant(tenantId);
3949
3949
  await this.auditLog(req, userId, "Subscription", tenantId, "COMPLETE_ONBOARDING_SUBSCRIPTION", {
3950
3950
  plan: planResult.plan,
@@ -56,9 +56,9 @@ import {
56
56
  periodEndWithMinLead,
57
57
  resolveBundleCancelEffectiveAt,
58
58
  resolveBundlePriceNet
59
- } from "../chunk-BTL66TR6.js";
60
- import "../chunk-2PNX2QL2.js";
59
+ } from "../chunk-6LP7CDS2.js";
61
60
  import "../chunk-ZLUGQE5D.js";
61
+ import "../chunk-2PNX2QL2.js";
62
62
  import {
63
63
  AUDIT_CONTEXT_RESOLVER_TOKEN,
64
64
  PENDING_PLAN_QUERY_PORT_TOKEN,
@@ -83,8 +83,7 @@ import "../chunk-E56W4U2P.js";
83
83
  import {
84
84
  SUBSCRIPTION_BUNDLE_CONFIG_TOKEN,
85
85
  SUBSCRIPTION_BUNDLE_REPOSITORY_TOKEN
86
- } from "../chunk-ND7OOKOG.js";
87
- import "../chunk-NYLON2VC.js";
86
+ } from "../chunk-RZU4HIAN.js";
88
87
  import {
89
88
  PLAN_CATALOG_READ_SINK_TOKEN,
90
89
  PLAN_CATALOG_TOKEN,
@@ -100,6 +99,7 @@ import {
100
99
  isFeatureInPlan,
101
100
  isFeaturePlannedOnly
102
101
  } from "../chunk-R2QOSVAA.js";
102
+ import "../chunk-NYLON2VC.js";
103
103
  import "../chunk-WKVBNTYC.js";
104
104
  import "../chunk-N3WANKSA.js";
105
105
  import "../chunk-SABTXESR.js";
@@ -1,9 +1,9 @@
1
- import {
2
- SubscriptionContractService
3
- } from "./chunk-2PNX2QL2.js";
4
1
  import {
5
2
  PromoCodesService
6
3
  } from "./chunk-ZLUGQE5D.js";
4
+ import {
5
+ SubscriptionContractService
6
+ } from "./chunk-2PNX2QL2.js";
7
7
  import {
8
8
  AUDIT_CONTEXT_RESOLVER_TOKEN,
9
9
  PENDING_PLAN_QUERY_PORT_TOKEN,
@@ -28,16 +28,16 @@ import {
28
28
  SUBSCRIPTION_BUNDLE_REPOSITORY_TOKEN,
29
29
  isLimitExceededError,
30
30
  toEffectiveLimitsSnapshot
31
- } from "./chunk-ND7OOKOG.js";
32
- import {
33
- SUBSCRIPTION_CONTRACT_REPOSITORY_TOKEN
34
- } from "./chunk-NYLON2VC.js";
31
+ } from "./chunk-RZU4HIAN.js";
35
32
  import {
36
33
  PLAN_CATALOG_TOKEN,
37
34
  findPlan,
38
35
  getMarketedPlans,
39
36
  getPlanPriceNet
40
37
  } from "./chunk-R2QOSVAA.js";
38
+ import {
39
+ SUBSCRIPTION_CONTRACT_REPOSITORY_TOKEN
40
+ } from "./chunk-NYLON2VC.js";
41
41
  import {
42
42
  ENTITLEMENT_SERVICE_TOKEN
43
43
  } from "./chunk-WKVBNTYC.js";
@@ -2143,7 +2143,6 @@ var TenantBillingController = class _TenantBillingController {
2143
2143
  periodEnd: period?.end ?? null,
2144
2144
  nextStatus: wasTrial ? null : "ACTIVE"
2145
2145
  });
2146
- await this.tryFreezeOnPlanChange(tenantId, dto.plan, dto.billingCycle, wasTrial);
2147
2146
  if (dto.promoCode) {
2148
2147
  if (!this.promoCodes) {
2149
2148
  warnings.push("Promo-Code wurde gesendet, aber PromoCodesModule ist nicht geladen \u2014 der Code wurde NICHT eingel\xF6st.");
@@ -2165,6 +2164,7 @@ var TenantBillingController = class _TenantBillingController {
2165
2164
  }
2166
2165
  }
2167
2166
  }
2167
+ await this.tryFreezeOnPlanChange(tenantId, dto.plan, dto.billingCycle, wasTrial);
2168
2168
  this.entitlements.invalidateTenant(tenantId);
2169
2169
  await this.auditLog(req, userId, "Subscription", tenantId, "COMPLETE_ONBOARDING_SUBSCRIPTION", {
2170
2170
  plan: planResult.plan,
@@ -537,7 +537,7 @@ var PLATFORM_CORE_MANIFEST_CONTRIBUTION = {
537
537
  // section is deliberately curated:
538
538
  // Overview: dashboard
539
539
  // Product catalog: discovery → bundles → plans →
540
- // planVersions → marketingCatalog → promoCodes
540
+ // marketingCatalog → promoCodes
541
541
  // (promoCodes is appended by the app contributions
542
542
  // and therefore lands at the end of the section)
543
543
  // Customers: tenants → users → pilots
@@ -565,10 +565,6 @@ var PLATFORM_CORE_MANIFEST_CONTRIBUTION = {
565
565
  enabled: true,
566
566
  requiredCapability: "plans.read"
567
567
  },
568
- planVersions: {
569
- enabled: true,
570
- requiredCapability: "plans.read"
571
- },
572
568
  // SPEC_V2 §11.1 M3 — marketing catalog (locale pivot).
573
569
  // Apps that market a public catalog set
574
570
  // `marketingProjections.read = true`.
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  SuperAdminGuard
3
- } from "./chunk-U6HT27J7.js";
3
+ } from "./chunk-PLDHI6NA.js";
4
4
  import {
5
5
  asProvider
6
6
  } from "./chunk-SABTXESR.js";
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  AdminManifestModule,
3
3
  AdminModule
4
- } from "./chunk-U6HT27J7.js";
4
+ } from "./chunk-PLDHI6NA.js";
5
5
  import {
6
6
  REQUIRE_FEATURE_KEY
7
7
  } from "./chunk-Q53N43LQ.js";
@@ -11,7 +11,7 @@ import {
11
11
  import {
12
12
  EntitlementModule,
13
13
  LimitExceededError
14
- } from "./chunk-ND7OOKOG.js";
14
+ } from "./chunk-RZU4HIAN.js";
15
15
  import {
16
16
  PLAN_CATALOG_TOKEN,
17
17
  PlanCatalogModule
@@ -17,9 +17,9 @@ import {
17
17
  isLimitExceededError,
18
18
  resolveEntitlementPlan,
19
19
  toEffectiveLimitsSnapshot
20
- } from "../chunk-ND7OOKOG.js";
21
- import "../chunk-NYLON2VC.js";
20
+ } from "../chunk-RZU4HIAN.js";
22
21
  import "../chunk-R2QOSVAA.js";
22
+ import "../chunk-NYLON2VC.js";
23
23
  import {
24
24
  ENTITLEMENT_RESOLUTION_CONFIG_TOKEN,
25
25
  ENTITLEMENT_SERVICE_TOKEN,
package/dist/index.cjs CHANGED
@@ -4449,7 +4449,6 @@ var TenantBillingController = class _TenantBillingController {
4449
4449
  periodEnd: period?.end ?? null,
4450
4450
  nextStatus: wasTrial ? null : "ACTIVE"
4451
4451
  });
4452
- await this.tryFreezeOnPlanChange(tenantId, dto.plan, dto.billingCycle, wasTrial);
4453
4452
  if (dto.promoCode) {
4454
4453
  if (!this.promoCodes) {
4455
4454
  warnings.push("Promo-Code wurde gesendet, aber PromoCodesModule ist nicht geladen \u2014 der Code wurde NICHT eingel\xF6st.");
@@ -4471,6 +4470,7 @@ var TenantBillingController = class _TenantBillingController {
4471
4470
  }
4472
4471
  }
4473
4472
  }
4473
+ await this.tryFreezeOnPlanChange(tenantId, dto.plan, dto.billingCycle, wasTrial);
4474
4474
  this.entitlements.invalidateTenant(tenantId);
4475
4475
  await this.auditLog(req, userId, "Subscription", tenantId, "COMPLETE_ONBOARDING_SUBSCRIPTION", {
4476
4476
  plan: planResult.plan,
@@ -6095,7 +6095,7 @@ var PLATFORM_CORE_MANIFEST_CONTRIBUTION = {
6095
6095
  // section is deliberately curated:
6096
6096
  // Overview: dashboard
6097
6097
  // Product catalog: discovery → bundles → plans →
6098
- // planVersions → marketingCatalog → promoCodes
6098
+ // marketingCatalog → promoCodes
6099
6099
  // (promoCodes is appended by the app contributions
6100
6100
  // and therefore lands at the end of the section)
6101
6101
  // Customers: tenants → users → pilots
@@ -6123,10 +6123,6 @@ var PLATFORM_CORE_MANIFEST_CONTRIBUTION = {
6123
6123
  enabled: true,
6124
6124
  requiredCapability: "plans.read"
6125
6125
  },
6126
- planVersions: {
6127
- enabled: true,
6128
- requiredCapability: "plans.read"
6129
- },
6130
6126
  // SPEC_V2 §11.1 M3 — marketing catalog (locale pivot).
6131
6127
  // Apps that market a public catalog set
6132
6128
  // `marketingProjections.read = true`.
package/dist/index.js CHANGED
@@ -1,3 +1,12 @@
1
+ import {
2
+ PreviewPromoCodeDto,
3
+ PromoCodeExpirer,
4
+ PromoCodePublicController,
5
+ PromoCodeRateLimitGuard,
6
+ PromoCodesModule,
7
+ hashIp,
8
+ ipFingerprint
9
+ } from "./chunk-52UTQRD3.js";
1
10
  import {
2
11
  ACTIVATION_ORCHESTRATOR_TOKEN,
3
12
  BaseIpRateLimitGuard,
@@ -37,15 +46,6 @@ import {
37
46
  slugify,
38
47
  verifyOtpCode
39
48
  } from "./chunk-CK54YKVK.js";
40
- import {
41
- PreviewPromoCodeDto,
42
- PromoCodeExpirer,
43
- PromoCodePublicController,
44
- PromoCodeRateLimitGuard,
45
- PromoCodesModule,
46
- hashIp,
47
- ipFingerprint
48
- } from "./chunk-52UTQRD3.js";
49
49
  import {
50
50
  ADMIN_STATS_AUDIT_WINDOW_DAYS_TOKEN,
51
51
  AUDIT_STATS_PORT_TOKEN,
@@ -54,7 +54,7 @@ import {
54
54
  AdminStatsService,
55
55
  PROMO_CODE_STATS_PORT_TOKEN,
56
56
  SUBSCRIPTION_STATS_PORT_TOKEN
57
- } from "./chunk-SD3TT2BR.js";
57
+ } from "./chunk-T5SXXAKG.js";
58
58
  import {
59
59
  CONTRACT_FREEZE_PORT_TOKEN,
60
60
  CONTRACT_FREEZE_PROJECT_KEY_TOKEN,
@@ -113,14 +113,7 @@ import {
113
113
  periodEndWithMinLead,
114
114
  resolveBundleCancelEffectiveAt,
115
115
  resolveBundlePriceNet
116
- } from "./chunk-BTL66TR6.js";
117
- import {
118
- SubscriptionContractModule,
119
- SubscriptionContractService,
120
- contractLineItemToInvoiceLineItem,
121
- sortContractLineItemsForInvoice,
122
- subscriptionContractToInvoiceSnapshot
123
- } from "./chunk-2PNX2QL2.js";
116
+ } from "./chunk-6LP7CDS2.js";
124
117
  import {
125
118
  PROMO_CODE_REDEMPTION_REPOSITORY_TOKEN,
126
119
  PROMO_CODE_REPOSITORY_TOKEN,
@@ -137,6 +130,13 @@ import {
137
130
  computeDiscountedGross,
138
131
  computeRegularStartsAt
139
132
  } from "./chunk-ZLUGQE5D.js";
133
+ import {
134
+ SubscriptionContractModule,
135
+ SubscriptionContractService,
136
+ contractLineItemToInvoiceLineItem,
137
+ sortContractLineItemsForInvoice,
138
+ subscriptionContractToInvoiceSnapshot
139
+ } from "./chunk-2PNX2QL2.js";
140
140
  import {
141
141
  ADVISORY_STRICT_MODE_CODES,
142
142
  BundlesService,
@@ -242,7 +242,7 @@ import {
242
242
  REQUIRE_MFA_KEY,
243
243
  RequireMfa,
244
244
  SuperAdminGuard
245
- } from "./chunk-U6HT27J7.js";
245
+ } from "./chunk-PLDHI6NA.js";
246
246
  import {
247
247
  REQUIRE_FEATURE_KEY,
248
248
  RequireFeature
@@ -283,10 +283,7 @@ import {
283
283
  isLimitExceededError,
284
284
  resolveEntitlementPlan,
285
285
  toEffectiveLimitsSnapshot
286
- } from "./chunk-ND7OOKOG.js";
287
- import {
288
- SUBSCRIPTION_CONTRACT_REPOSITORY_TOKEN
289
- } from "./chunk-NYLON2VC.js";
286
+ } from "./chunk-RZU4HIAN.js";
290
287
  import {
291
288
  PLAN_CATALOG_READ_SINK_TOKEN,
292
289
  PLAN_CATALOG_TOKEN,
@@ -305,6 +302,9 @@ import {
305
302
  isFeaturePlannedOnly,
306
303
  round2
307
304
  } from "./chunk-R2QOSVAA.js";
305
+ import {
306
+ SUBSCRIPTION_CONTRACT_REPOSITORY_TOKEN
307
+ } from "./chunk-NYLON2VC.js";
308
308
  import {
309
309
  ENTITLEMENT_RESOLUTION_CONFIG_TOKEN,
310
310
  ENTITLEMENT_SERVICE_TOKEN,
@@ -679,7 +679,7 @@ var PLATFORM_CORE_MANIFEST_CONTRIBUTION = {
679
679
  // section is deliberately curated:
680
680
  // Overview: dashboard
681
681
  // Product catalog: discovery → bundles → plans →
682
- // planVersions → marketingCatalog → promoCodes
682
+ // marketingCatalog → promoCodes
683
683
  // (promoCodes is appended by the app contributions
684
684
  // and therefore lands at the end of the section)
685
685
  // Customers: tenants → users → pilots
@@ -707,10 +707,6 @@ var PLATFORM_CORE_MANIFEST_CONTRIBUTION = {
707
707
  enabled: true,
708
708
  requiredCapability: "plans.read"
709
709
  },
710
- planVersions: {
711
- enabled: true,
712
- requiredCapability: "plans.read"
713
- },
714
710
  // SPEC_V2 §11.1 M3 — marketing catalog (locale pivot).
715
711
  // Apps that market a public catalog set
716
712
  // `marketingProjections.read = true`.
@@ -9,17 +9,17 @@ import {
9
9
  StaticPlanResolver,
10
10
  TenantManifestService,
11
11
  buildTenantManifestController
12
- } from "../chunk-FSGBRFLX.js";
12
+ } from "../chunk-YHHE4KDA.js";
13
13
  import {
14
14
  AdminManifestService
15
- } from "../chunk-U6HT27J7.js";
15
+ } from "../chunk-PLDHI6NA.js";
16
16
  import "../chunk-Q53N43LQ.js";
17
17
  import "../chunk-E56W4U2P.js";
18
18
  import "../chunk-AJ3EPELS.js";
19
19
  import "../chunk-M6CZQYPY.js";
20
- import "../chunk-ND7OOKOG.js";
21
- import "../chunk-NYLON2VC.js";
20
+ import "../chunk-RZU4HIAN.js";
22
21
  import "../chunk-R2QOSVAA.js";
22
+ import "../chunk-NYLON2VC.js";
23
23
  import "../chunk-WKVBNTYC.js";
24
24
  import "../chunk-N3WANKSA.js";
25
25
  import "../chunk-SABTXESR.js";
@@ -1577,7 +1577,7 @@ var PLATFORM_CORE_MANIFEST_CONTRIBUTION = {
1577
1577
  // section is deliberately curated:
1578
1578
  // Overview: dashboard
1579
1579
  // Product catalog: discovery → bundles → plans →
1580
- // planVersions → marketingCatalog → promoCodes
1580
+ // marketingCatalog → promoCodes
1581
1581
  // (promoCodes is appended by the app contributions
1582
1582
  // and therefore lands at the end of the section)
1583
1583
  // Customers: tenants → users → pilots
@@ -1605,10 +1605,6 @@ var PLATFORM_CORE_MANIFEST_CONTRIBUTION = {
1605
1605
  enabled: true,
1606
1606
  requiredCapability: "plans.read"
1607
1607
  },
1608
- planVersions: {
1609
- enabled: true,
1610
- requiredCapability: "plans.read"
1611
- },
1612
1608
  // SPEC_V2 §11.1 M3 — marketing catalog (locale pivot).
1613
1609
  // Apps that market a public catalog set
1614
1610
  // `marketingProjections.read = true`.
@@ -5,15 +5,15 @@ import {
5
5
  StaticEntitlementService,
6
6
  StaticFeatureGuard,
7
7
  StaticPlanResolver
8
- } from "../chunk-FSGBRFLX.js";
9
- import "../chunk-U6HT27J7.js";
8
+ } from "../chunk-YHHE4KDA.js";
9
+ import "../chunk-PLDHI6NA.js";
10
10
  import "../chunk-Q53N43LQ.js";
11
11
  import "../chunk-E56W4U2P.js";
12
12
  import "../chunk-AJ3EPELS.js";
13
13
  import "../chunk-M6CZQYPY.js";
14
- import "../chunk-ND7OOKOG.js";
15
- import "../chunk-NYLON2VC.js";
14
+ import "../chunk-RZU4HIAN.js";
16
15
  import "../chunk-R2QOSVAA.js";
16
+ import "../chunk-NYLON2VC.js";
17
17
  import "../chunk-WKVBNTYC.js";
18
18
  import "../chunk-N3WANKSA.js";
19
19
  import "../chunk-SABTXESR.js";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@saasicat/nest",
3
- "version": "0.6.0",
3
+ "version": "0.8.0",
4
4
  "description": "NestJS implementation of the SaaS platform: billing, promo codes, admin backend, audit, MFA, adapter ports.",
5
5
  "type": "module",
6
6
  "main": "./dist/index.cjs",
@@ -137,8 +137,8 @@
137
137
  "js-yaml": "^4.1.0",
138
138
  "otplib": "^13.4.1",
139
139
  "qrcode": "^1.5.4",
140
- "@saasicat/spec": "^0.6.0",
141
- "@saasicat/types": "^0.6.0"
140
+ "@saasicat/spec": "^0.8.0",
141
+ "@saasicat/types": "^0.8.0"
142
142
  },
143
143
  "peerDependencies": {
144
144
  "@nestjs/common": "^11.0.0",
@@ -1,10 +1,10 @@
1
- import {
2
- SUBSCRIPTION_CONTRACT_REPOSITORY_TOKEN
3
- } from "./chunk-NYLON2VC.js";
4
1
  import {
5
2
  PLAN_CATALOG_TOKEN,
6
3
  isFeaturePlannedOnly
7
4
  } from "./chunk-R2QOSVAA.js";
5
+ import {
6
+ SUBSCRIPTION_CONTRACT_REPOSITORY_TOKEN
7
+ } from "./chunk-NYLON2VC.js";
8
8
  import {
9
9
  ENTITLEMENT_RESOLUTION_CONFIG_TOKEN,
10
10
  ENTITLEMENT_SERVICE_TOKEN,