@saasicat/nest 0.21.0 → 0.22.1
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/_entries.cjs +409 -276
- package/dist/admin/index.js +1 -1
- package/dist/{aggregation-o0LMenvl.d.ts → aggregation-DP5zfKbU.d.ts} +3 -3
- package/dist/{aggregation-SKfXu09x.d.cts → aggregation-mZ7WZROK.d.cts} +3 -3
- package/dist/billing/index.d.cts +12 -10
- package/dist/billing/index.d.ts +12 -10
- package/dist/billing/index.js +6 -2
- package/dist/catalog/index.d.cts +10 -10
- package/dist/catalog/index.d.ts +10 -10
- package/dist/catalog/index.js +2 -2
- package/dist/{catalog.module-BKObceo0.d.ts → catalog.module-CQr1FpkI.d.ts} +6 -6
- package/dist/{catalog.module-Dw2Hrbyu.d.cts → catalog.module-D-_pQDNA.d.cts} +6 -6
- package/dist/{chunk-GC5AKN44.js → chunk-7X5MSAIL.js} +7 -7
- package/dist/{chunk-55QGAZRQ.js → chunk-7ZPFQXHM.js} +1 -1
- package/dist/{chunk-NZLAYCEX.js → chunk-A7FHAN2I.js} +17 -3
- package/dist/{chunk-ZH5PYEMI.js → chunk-LPCUHZWC.js} +180 -61
- package/dist/{chunk-3DRZ5GCP.js → chunk-MJ32VNZD.js} +1 -1
- package/dist/{chunk-AGOG5B77.js → chunk-NNNXXUPT.js} +1 -1
- package/dist/{chunk-FYWLPYBK.js → chunk-SN5UOC43.js} +3 -3
- package/dist/{define-saasicat-B20Ms8UC.d.ts → define-saasicat-BK6RRWWG.d.ts} +1 -1
- package/dist/{define-saasicat-Cf9DpEsY.d.cts → define-saasicat-D30I-WET.d.cts} +1 -1
- package/dist/discovery/index.d.cts +2 -2
- package/dist/discovery/index.d.ts +2 -2
- package/dist/{enforce-quota.interceptor-CUyfR4cQ.d.ts → enforce-quota.interceptor-B9QueAFf.d.ts} +4 -1
- package/dist/{enforce-quota.interceptor-Dtg5WdFj.d.cts → enforce-quota.interceptor-DY6CLjoP.d.cts} +4 -1
- package/dist/entitlement/index.d.cts +1 -1
- package/dist/entitlement/index.d.ts +1 -1
- package/dist/entitlement/index.js +1 -1
- package/dist/index.d.cts +8 -8
- package/dist/index.d.ts +8 -8
- package/dist/index.js +12 -8
- package/dist/{plan-versions.service-BB36Q1bg.d.ts → plan-versions.service-B-YoE4SZ.d.ts} +1 -1
- package/dist/{plan-versions.service-CUR2Whyr.d.cts → plan-versions.service-_saKzb50.d.cts} +1 -1
- package/dist/platform/index.d.cts +31 -13
- package/dist/platform/index.d.ts +31 -13
- package/dist/platform/index.js +8 -6
- package/dist/registration/index.d.cts +1 -1
- package/dist/registration/index.d.ts +1 -1
- package/dist/registration/index.js +1 -1
- package/dist/{saas-platform.module-BfaYfL-G.d.cts → saas-platform.module-CgalxzcT.d.cts} +2 -2
- package/dist/{saas-platform.module-DChhDrR-.d.ts → saas-platform.module-D1mUZPrz.d.ts} +2 -2
- package/dist/{subscription-bundles.module-BQmoozm5.d.ts → subscription-bundles.module-BDbODWvA.d.ts} +9 -1
- package/dist/{subscription-bundles.module-DCpV-Pb5.d.cts → subscription-bundles.module-Cfi-lFWF.d.cts} +9 -1
- package/dist/{tenant-billing.controller-DT5UrnDX.d.ts → tenant-billing.controller-BSlpFqVA.d.ts} +3 -3
- package/dist/{tenant-billing.controller-BIF-mstX.d.cts → tenant-billing.controller-DHSUrT_N.d.cts} +3 -3
- package/dist/testing/index.d.cts +5 -5
- package/dist/testing/index.d.ts +5 -5
- package/dist/testing/index.js +6 -6
- package/package.json +3 -3
- /package/dist/{chunk-EWPF57AG.js → chunk-FY4EJTV4.js} +0 -0
package/dist/admin/index.js
CHANGED
|
@@ -16,7 +16,7 @@ interface PlanVersionSnapshot {
|
|
|
16
16
|
}
|
|
17
17
|
/**
|
|
18
18
|
* Snapshot of an active SubscriptionBundle booking (P11.7.3 +
|
|
19
|
-
*
|
|
19
|
+
*). Resolved by the EntitlementService from the
|
|
20
20
|
* `subscription_bundles` junction + BundleRepository.findVersionById and
|
|
21
21
|
* passed to `aggregateLimits`.
|
|
22
22
|
*
|
|
@@ -158,7 +158,7 @@ declare class EntitlementService {
|
|
|
158
158
|
enforceLimit<T>(input: EnforceLimitInput<T>): Promise<T>;
|
|
159
159
|
/**
|
|
160
160
|
* Plan fallback for TRIAL/PENDING_SALES: returns the PlanVersion active
|
|
161
|
-
* as of `asOf
|
|
161
|
+
* as of `asOf`. If the repo does not implement
|
|
162
162
|
* `findActive`, we fall back to `findLatestLive` (backward compat for
|
|
163
163
|
* adapters without `validFrom` columns).
|
|
164
164
|
*/
|
|
@@ -172,7 +172,7 @@ declare class EntitlementService {
|
|
|
172
172
|
* point in time. Active = `canceledEffectiveAt === null` or
|
|
173
173
|
* `canceledEffectiveAt > now`.
|
|
174
174
|
*
|
|
175
|
-
* Spec:
|
|
175
|
+
* Spec:
|
|
176
176
|
*/
|
|
177
177
|
declare function filterActiveSubscriptionBundles(bundles: readonly SubscriptionBundleSnapshot[], now: Date): SubscriptionBundleSnapshot[];
|
|
178
178
|
/**
|
|
@@ -16,7 +16,7 @@ interface PlanVersionSnapshot {
|
|
|
16
16
|
}
|
|
17
17
|
/**
|
|
18
18
|
* Snapshot of an active SubscriptionBundle booking (P11.7.3 +
|
|
19
|
-
*
|
|
19
|
+
*). Resolved by the EntitlementService from the
|
|
20
20
|
* `subscription_bundles` junction + BundleRepository.findVersionById and
|
|
21
21
|
* passed to `aggregateLimits`.
|
|
22
22
|
*
|
|
@@ -158,7 +158,7 @@ declare class EntitlementService {
|
|
|
158
158
|
enforceLimit<T>(input: EnforceLimitInput<T>): Promise<T>;
|
|
159
159
|
/**
|
|
160
160
|
* Plan fallback for TRIAL/PENDING_SALES: returns the PlanVersion active
|
|
161
|
-
* as of `asOf
|
|
161
|
+
* as of `asOf`. If the repo does not implement
|
|
162
162
|
* `findActive`, we fall back to `findLatestLive` (backward compat for
|
|
163
163
|
* adapters without `validFrom` columns).
|
|
164
164
|
*/
|
|
@@ -172,7 +172,7 @@ declare class EntitlementService {
|
|
|
172
172
|
* point in time. Active = `canceledEffectiveAt === null` or
|
|
173
173
|
* `canceledEffectiveAt > now`.
|
|
174
174
|
*
|
|
175
|
-
* Spec:
|
|
175
|
+
* Spec:
|
|
176
176
|
*/
|
|
177
177
|
declare function filterActiveSubscriptionBundles(bundles: readonly SubscriptionBundleSnapshot[], now: Date): SubscriptionBundleSnapshot[];
|
|
178
178
|
/**
|
package/dist/billing/index.d.cts
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import { BillingCycle, FeatureKey, UpsellOfferResolver, BundleRepository, CatalogEntryRepository, UpsellOffer, PlanCatalog, PlanCatalogReadSink, PlanCatalogReadSnapshot, PlanCatalogImportSink, PlanCatalogImportReport, PlanId, PlanDef, QuotaKey, MarketingTopFeature, FeatureUiRegistry, MarketingProjectionRepository, ConfiguratorSourcesLookup, ConfiguratorMarketingProvider, ConfiguratorCatalog } from '@saasicat/types';
|
|
2
2
|
export { BundleVersionFields, ChangeDirection, DiffResult, PlanVersionFields, VersionChange, VersionChangeDirection, classifyBundleVersionDiff, classifyPlanDiff } from '@saasicat/types';
|
|
3
|
+
import { F as FEATURE_GUARD_MARKER, f as ContractFreezePort, g as ContractFreezeSourcePort } from '../subscription-bundles.module-Cfi-lFWF.cjs';
|
|
4
|
+
export { A as AUDIT_CONTEXT_RESOLVER_TOKEN, a as AuditContextResolver, b as AuthGuardList, C as CONTRACT_FREEZE_PORT_TOKEN, c as CONTRACT_FREEZE_PROJECT_KEY_TOKEN, d as CONTRACT_FREEZE_SOURCE_PORT_TOKEN, e as ContractFreezeBundleSnapshot, D as DuePendingPlanChange, M as MarkedFeatureGuard, P as PENDING_PLAN_QUERY_PORT_TOKEN, h as PendingPlanQueryPort, S as SELF_SERVICE_BLOCKED_BUNDLES_TOKEN, i as SELF_SERVICE_BLOCKED_PLANS_TOKEN, j as SUBSCRIPTION_USAGE_PORT_TOKEN, k as SUBSCRIPTION_WRITE_PORT_TOKEN, l as SelfServiceBlockedBundles, m as SelfServiceBlockedPlans, n as SubscriptionBundleControllerOptions, o as SubscriptionBundleModule, p as SubscriptionBundleModuleOptions, T as TENANT_AUTH_GUARDS_TOKEN, q as TENANT_ID_RESOLVER_TOKEN, r as TRIAL_PROJECTION_PORT_TOKEN, s as TenantBillingModule, t as TenantBillingModuleOptions, u as TenantIdResolver, v as TrialProjectionInput, w as TrialProjectionPort, U as USAGE_SNAPSHOT_PORT_TOKEN, x as USER_EMAIL_RESOLVER_TOKEN, y as USER_ID_RESOLVER_TOKEN, z as UserEmailResolver, B as UserIdResolver, E as isPlatformFeatureGuard } from '../subscription-bundles.module-Cfi-lFWF.cjs';
|
|
3
5
|
import * as _nestjs_common from '@nestjs/common';
|
|
4
6
|
import { CanActivate, ExecutionContext, ArgumentsHost, Type, DynamicModule, ForwardReference, Provider } from '@nestjs/common';
|
|
5
7
|
export { Type as NestType } from '@nestjs/common';
|
|
6
8
|
import { Reflector, BaseExceptionFilter } from '@nestjs/core';
|
|
7
|
-
import { c as EntitlementService } from '../aggregation-
|
|
9
|
+
import { c as EntitlementService } from '../aggregation-mZ7WZROK.cjs';
|
|
8
10
|
import { P as ProviderSpec } from '../di-CcNeq9v-.cjs';
|
|
9
|
-
|
|
10
|
-
export { A as AUDIT_CONTEXT_RESOLVER_TOKEN, a as AuditContextResolver, b as AuthGuardList, C as CONTRACT_FREEZE_PORT_TOKEN, c as CONTRACT_FREEZE_PROJECT_KEY_TOKEN, d as CONTRACT_FREEZE_SOURCE_PORT_TOKEN, e as ContractFreezeBundleSnapshot, D as DuePendingPlanChange, P as PENDING_PLAN_QUERY_PORT_TOKEN, h as PendingPlanQueryPort, S as SELF_SERVICE_BLOCKED_BUNDLES_TOKEN, i as SELF_SERVICE_BLOCKED_PLANS_TOKEN, j as SUBSCRIPTION_USAGE_PORT_TOKEN, k as SUBSCRIPTION_WRITE_PORT_TOKEN, l as SelfServiceBlockedBundles, m as SelfServiceBlockedPlans, n as SubscriptionBundleControllerOptions, o as SubscriptionBundleModule, p as SubscriptionBundleModuleOptions, T as TENANT_AUTH_GUARDS_TOKEN, q as TENANT_ID_RESOLVER_TOKEN, r as TRIAL_PROJECTION_PORT_TOKEN, s as TenantBillingModule, t as TenantBillingModuleOptions, u as TenantIdResolver, v as TrialProjectionInput, w as TrialProjectionPort, U as USAGE_SNAPSHOT_PORT_TOKEN, x as USER_EMAIL_RESOLVER_TOKEN, y as USER_ID_RESOLVER_TOKEN, z as UserEmailResolver, B as UserIdResolver } from '../subscription-bundles.module-DCpV-Pb5.cjs';
|
|
11
|
-
export { A as AddBundleToSubscriptionInput, B as BundlePreviewSnapshot, C as CancelBundleFromSubscriptionInput, a as CancelSubscriptionDto, b as ChangePlanDto, c as CompleteOnboardingSubscriptionDto, d as ComposedTenantAuthGuard, L as LimitsCheckRow, P as PendingPlanMaterializationService, e as PlanChangeContext, f as PlanChangePreviewDto, g as PlanChangePreviewIssue, h as PlanChangePreviewService, i as PlanChangeType, j as PlanSnapshotDto, k as PreviewPlanChangeDto, l as ProrationDto, m as ProrationInput, R as RedundantFeatureHint, S as SubscriptionBundleAddPreviewDto, n as SubscriptionBundleCancelPreviewDto, o as SubscriptionBundleConfig, p as SubscriptionBundlePreviewContext, q as SubscriptionBundlePreviewIssue, r as SubscriptionBundlePreviewService, s as SubscriptionBundlesService, T as TenantAdminGuard, t as TenantBillingController, U as UsageResponse, u as addMonths, v as computeProration, w as resolveBundleCancelEffectiveAt, x as resolveBundlePriceNet } from '../tenant-billing.controller-BIF-mstX.cjs';
|
|
11
|
+
export { A as AddBundleToSubscriptionInput, B as BundlePreviewSnapshot, C as CancelBundleFromSubscriptionInput, a as CancelSubscriptionDto, b as ChangePlanDto, c as CompleteOnboardingSubscriptionDto, d as ComposedTenantAuthGuard, L as LimitsCheckRow, P as PendingPlanMaterializationService, e as PlanChangeContext, f as PlanChangePreviewDto, g as PlanChangePreviewIssue, h as PlanChangePreviewService, i as PlanChangeType, j as PlanSnapshotDto, k as PreviewPlanChangeDto, l as ProrationDto, m as ProrationInput, R as RedundantFeatureHint, S as SubscriptionBundleAddPreviewDto, n as SubscriptionBundleCancelPreviewDto, o as SubscriptionBundleConfig, p as SubscriptionBundlePreviewContext, q as SubscriptionBundlePreviewIssue, r as SubscriptionBundlePreviewService, s as SubscriptionBundlesService, T as TenantAdminGuard, t as TenantBillingController, U as UsageResponse, u as addMonths, v as computeProration, w as resolveBundleCancelEffectiveAt, x as resolveBundlePriceNet } from '../tenant-billing.controller-DHSUrT_N.cjs';
|
|
12
12
|
import { S as SubscriptionContractService } from '../subscription-contract.service--cm47ZJJ.cjs';
|
|
13
13
|
import '../plan-resolution-CFCoUkrE.cjs';
|
|
14
14
|
import '../service-D48clObR.cjs';
|
|
@@ -193,6 +193,8 @@ declare class FeatureGuard implements CanActivate {
|
|
|
193
193
|
private readonly entitlements;
|
|
194
194
|
private readonly config;
|
|
195
195
|
private readonly upsellResolver;
|
|
196
|
+
/** Lets `FeatureGuardCoverageCheck` recognise this guard across CJS entries. */
|
|
197
|
+
static readonly [FEATURE_GUARD_MARKER] = true;
|
|
196
198
|
private readonly logger;
|
|
197
199
|
constructor(reflector: Reflector, entitlements: EntitlementService, config?: FeatureGuardConfig | null, upsellResolver?: UpsellOfferResolver | null);
|
|
198
200
|
canActivate(context: ExecutionContext): Promise<boolean>;
|
|
@@ -304,7 +306,7 @@ interface PlanCatalogModuleOptions {
|
|
|
304
306
|
currency: string;
|
|
305
307
|
vatRate: number;
|
|
306
308
|
/**
|
|
307
|
-
* App-wide marketing configuration
|
|
309
|
+
* App-wide marketing configuration — including the
|
|
308
310
|
* `availableLocales` pool. Flows into `PLAN_CATALOG_TOKEN.marketing`
|
|
309
311
|
* and from there into the admin manifest (`project.availableLocales`).
|
|
310
312
|
*/
|
|
@@ -334,7 +336,7 @@ interface PlanCatalogBuildSettings {
|
|
|
334
336
|
app?: PlanCatalog['app'];
|
|
335
337
|
currency: string;
|
|
336
338
|
vatRate: number;
|
|
337
|
-
/** App-wide marketing configuration
|
|
339
|
+
/** App-wide marketing configuration. Optional. */
|
|
338
340
|
marketing?: PlanCatalog['marketing'];
|
|
339
341
|
}
|
|
340
342
|
declare function buildPlanCatalogFromSnapshot(settings: PlanCatalogBuildSettings, snapshot: PlanCatalogReadSnapshot): PlanCatalog;
|
|
@@ -467,7 +469,7 @@ interface PlanResponseEntry {
|
|
|
467
469
|
popular: boolean;
|
|
468
470
|
quotas: Record<string, number>;
|
|
469
471
|
features: string[];
|
|
470
|
-
/**
|
|
472
|
+
/** — optional, present if a MarketingProjection exists. */
|
|
471
473
|
marketing?: MarketingFields;
|
|
472
474
|
}
|
|
473
475
|
interface PublicBundleEntry {
|
|
@@ -500,7 +502,7 @@ declare class PublicCatalogController {
|
|
|
500
502
|
listPlans(lang?: string, localeParam?: string): Promise<PlanResponseEntry[]>;
|
|
501
503
|
listFeatureRegistry(): Promise<FeatureUiRegistry>;
|
|
502
504
|
/**
|
|
503
|
-
*
|
|
505
|
+
* — public catalog endpoint for bundles
|
|
504
506
|
* (stem list with live versions). If a `MarketingProjection` with
|
|
505
507
|
* `targetType=BUNDLE` + matching locale exists, it is merged in.
|
|
506
508
|
*/
|
|
@@ -520,7 +522,7 @@ interface PublicCatalogModuleOptions {
|
|
|
520
522
|
/** Required: consumer-specific FeatureUiRegistry. */
|
|
521
523
|
featureUiRegistry: FeatureUiRegistry;
|
|
522
524
|
/**
|
|
523
|
-
*
|
|
525
|
+
* — app identity (e.g. "clubapp"). Used
|
|
524
526
|
* for marketing lookups + bundle filters.
|
|
525
527
|
* Optional; if omitted, the new endpoints return empty lists.
|
|
526
528
|
*/
|
|
@@ -594,4 +596,4 @@ declare const SUBSCRIPTION_BUNDLE_CONFIG_TOKEN: unique symbol;
|
|
|
594
596
|
*/
|
|
595
597
|
declare function buildTenantSubscriptionBundlesController(extraGuards?: Array<Type<CanActivate>>): Type;
|
|
596
598
|
|
|
597
|
-
export { type AjvErrorLike, CatalogBundleUpsellResolver, ConfiguratorCatalogBuilder, ContractFreezePort, ContractFreezeSourcePort, FEATURE_GUARD_CONFIG_TOKEN, FEATURE_UI_REGISTRY_TOKEN, FeatureGuard, type FeatureGuardConfig, LimitExceededFilter, type LoadPlanCatalogOptions, type MarketingFields, type NextPeriodWindow, PLAN_CATALOG_IMPORT_SINK_TOKEN, PLAN_CATALOG_READ_SINK_TOKEN, PLAN_CATALOG_TOKEN, PUBLIC_CATALOG_BUNDLE_REPOSITORY_TOKEN, PUBLIC_CATALOG_MARKETING_REPOSITORY_TOKEN, PUBLIC_CATALOG_PROJECT_KEY_TOKEN, type PeriodRollInput, type PlanCatalogBuildSettings, PlanCatalogImportDto, type PlanCatalogImporterControllerConfig, PlanCatalogImporterModule, type PlanCatalogImporterModuleOptions, PlanCatalogImporterService, PlanCatalogModule, type PlanCatalogModuleOptions, PlanCatalogValidationError, type PlanResponseEntry, type PublicBundleEntry, PublicCatalogController, PublicCatalogModule, type PublicCatalogModuleOptions, PublishValidationError, type PublishablePlanVersion, REQUIRE_FEATURE_KEY, type RenewalDecision, type RenewalSubInput, RequireFeature, SUBSCRIPTION_BUNDLE_CONFIG_TOKEN, SUBSCRIPTION_BUNDLE_REPOSITORY_TOKEN, SubscriptionContractFreezeService, UPSELL_OFFER_CURRENCY_TOKEN, UPSELL_OFFER_RESOLVER_TOKEN, assertBaseVersionFresh, assertChangeNote, assertDraftPublishable, assertOptimisticLockHeld, buildPlanCatalogFromSnapshot, buildPlanCatalogImporterController, buildTenantSubscriptionBundlesController, clearPendingPlanVersionFields, computeCarriedTrialEndsAt, computeNextPeriod, decideRenewal, findPlan, getActiveFeatureKeys, getMarketedPlans, getPlanOrThrow, getPlanPriceGross, getPlanPriceNet, getPlanQuota, initialPeriodWindow, isFeatureInPlan, isFeaturePlannedOnly, loadPlanCatalogFromFile, loadPlanCatalogFromString, periodEndAfter, periodEndWithMinLead };
|
|
599
|
+
export { type AjvErrorLike, CatalogBundleUpsellResolver, ConfiguratorCatalogBuilder, ContractFreezePort, ContractFreezeSourcePort, FEATURE_GUARD_CONFIG_TOKEN, FEATURE_GUARD_MARKER, FEATURE_UI_REGISTRY_TOKEN, FeatureGuard, type FeatureGuardConfig, LimitExceededFilter, type LoadPlanCatalogOptions, type MarketingFields, type NextPeriodWindow, PLAN_CATALOG_IMPORT_SINK_TOKEN, PLAN_CATALOG_READ_SINK_TOKEN, PLAN_CATALOG_TOKEN, PUBLIC_CATALOG_BUNDLE_REPOSITORY_TOKEN, PUBLIC_CATALOG_MARKETING_REPOSITORY_TOKEN, PUBLIC_CATALOG_PROJECT_KEY_TOKEN, type PeriodRollInput, type PlanCatalogBuildSettings, PlanCatalogImportDto, type PlanCatalogImporterControllerConfig, PlanCatalogImporterModule, type PlanCatalogImporterModuleOptions, PlanCatalogImporterService, PlanCatalogModule, type PlanCatalogModuleOptions, PlanCatalogValidationError, type PlanResponseEntry, type PublicBundleEntry, PublicCatalogController, PublicCatalogModule, type PublicCatalogModuleOptions, PublishValidationError, type PublishablePlanVersion, REQUIRE_FEATURE_KEY, type RenewalDecision, type RenewalSubInput, RequireFeature, SUBSCRIPTION_BUNDLE_CONFIG_TOKEN, SUBSCRIPTION_BUNDLE_REPOSITORY_TOKEN, SubscriptionContractFreezeService, UPSELL_OFFER_CURRENCY_TOKEN, UPSELL_OFFER_RESOLVER_TOKEN, assertBaseVersionFresh, assertChangeNote, assertDraftPublishable, assertOptimisticLockHeld, buildPlanCatalogFromSnapshot, buildPlanCatalogImporterController, buildTenantSubscriptionBundlesController, clearPendingPlanVersionFields, computeCarriedTrialEndsAt, computeNextPeriod, decideRenewal, findPlan, getActiveFeatureKeys, getMarketedPlans, getPlanOrThrow, getPlanPriceGross, getPlanPriceNet, getPlanQuota, initialPeriodWindow, isFeatureInPlan, isFeaturePlannedOnly, loadPlanCatalogFromFile, loadPlanCatalogFromString, periodEndAfter, periodEndWithMinLead };
|
package/dist/billing/index.d.ts
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import { BillingCycle, FeatureKey, UpsellOfferResolver, BundleRepository, CatalogEntryRepository, UpsellOffer, PlanCatalog, PlanCatalogReadSink, PlanCatalogReadSnapshot, PlanCatalogImportSink, PlanCatalogImportReport, PlanId, PlanDef, QuotaKey, MarketingTopFeature, FeatureUiRegistry, MarketingProjectionRepository, ConfiguratorSourcesLookup, ConfiguratorMarketingProvider, ConfiguratorCatalog } from '@saasicat/types';
|
|
2
2
|
export { BundleVersionFields, ChangeDirection, DiffResult, PlanVersionFields, VersionChange, VersionChangeDirection, classifyBundleVersionDiff, classifyPlanDiff } from '@saasicat/types';
|
|
3
|
+
import { F as FEATURE_GUARD_MARKER, f as ContractFreezePort, g as ContractFreezeSourcePort } from '../subscription-bundles.module-BDbODWvA.js';
|
|
4
|
+
export { A as AUDIT_CONTEXT_RESOLVER_TOKEN, a as AuditContextResolver, b as AuthGuardList, C as CONTRACT_FREEZE_PORT_TOKEN, c as CONTRACT_FREEZE_PROJECT_KEY_TOKEN, d as CONTRACT_FREEZE_SOURCE_PORT_TOKEN, e as ContractFreezeBundleSnapshot, D as DuePendingPlanChange, M as MarkedFeatureGuard, P as PENDING_PLAN_QUERY_PORT_TOKEN, h as PendingPlanQueryPort, S as SELF_SERVICE_BLOCKED_BUNDLES_TOKEN, i as SELF_SERVICE_BLOCKED_PLANS_TOKEN, j as SUBSCRIPTION_USAGE_PORT_TOKEN, k as SUBSCRIPTION_WRITE_PORT_TOKEN, l as SelfServiceBlockedBundles, m as SelfServiceBlockedPlans, n as SubscriptionBundleControllerOptions, o as SubscriptionBundleModule, p as SubscriptionBundleModuleOptions, T as TENANT_AUTH_GUARDS_TOKEN, q as TENANT_ID_RESOLVER_TOKEN, r as TRIAL_PROJECTION_PORT_TOKEN, s as TenantBillingModule, t as TenantBillingModuleOptions, u as TenantIdResolver, v as TrialProjectionInput, w as TrialProjectionPort, U as USAGE_SNAPSHOT_PORT_TOKEN, x as USER_EMAIL_RESOLVER_TOKEN, y as USER_ID_RESOLVER_TOKEN, z as UserEmailResolver, B as UserIdResolver, E as isPlatformFeatureGuard } from '../subscription-bundles.module-BDbODWvA.js';
|
|
3
5
|
import * as _nestjs_common from '@nestjs/common';
|
|
4
6
|
import { CanActivate, ExecutionContext, ArgumentsHost, Type, DynamicModule, ForwardReference, Provider } from '@nestjs/common';
|
|
5
7
|
export { Type as NestType } from '@nestjs/common';
|
|
6
8
|
import { Reflector, BaseExceptionFilter } from '@nestjs/core';
|
|
7
|
-
import { c as EntitlementService } from '../aggregation-
|
|
9
|
+
import { c as EntitlementService } from '../aggregation-DP5zfKbU.js';
|
|
8
10
|
import { P as ProviderSpec } from '../di-CcNeq9v-.js';
|
|
9
|
-
|
|
10
|
-
export { A as AUDIT_CONTEXT_RESOLVER_TOKEN, a as AuditContextResolver, b as AuthGuardList, C as CONTRACT_FREEZE_PORT_TOKEN, c as CONTRACT_FREEZE_PROJECT_KEY_TOKEN, d as CONTRACT_FREEZE_SOURCE_PORT_TOKEN, e as ContractFreezeBundleSnapshot, D as DuePendingPlanChange, P as PENDING_PLAN_QUERY_PORT_TOKEN, h as PendingPlanQueryPort, S as SELF_SERVICE_BLOCKED_BUNDLES_TOKEN, i as SELF_SERVICE_BLOCKED_PLANS_TOKEN, j as SUBSCRIPTION_USAGE_PORT_TOKEN, k as SUBSCRIPTION_WRITE_PORT_TOKEN, l as SelfServiceBlockedBundles, m as SelfServiceBlockedPlans, n as SubscriptionBundleControllerOptions, o as SubscriptionBundleModule, p as SubscriptionBundleModuleOptions, T as TENANT_AUTH_GUARDS_TOKEN, q as TENANT_ID_RESOLVER_TOKEN, r as TRIAL_PROJECTION_PORT_TOKEN, s as TenantBillingModule, t as TenantBillingModuleOptions, u as TenantIdResolver, v as TrialProjectionInput, w as TrialProjectionPort, U as USAGE_SNAPSHOT_PORT_TOKEN, x as USER_EMAIL_RESOLVER_TOKEN, y as USER_ID_RESOLVER_TOKEN, z as UserEmailResolver, B as UserIdResolver } from '../subscription-bundles.module-BQmoozm5.js';
|
|
11
|
-
export { A as AddBundleToSubscriptionInput, B as BundlePreviewSnapshot, C as CancelBundleFromSubscriptionInput, a as CancelSubscriptionDto, b as ChangePlanDto, c as CompleteOnboardingSubscriptionDto, d as ComposedTenantAuthGuard, L as LimitsCheckRow, P as PendingPlanMaterializationService, e as PlanChangeContext, f as PlanChangePreviewDto, g as PlanChangePreviewIssue, h as PlanChangePreviewService, i as PlanChangeType, j as PlanSnapshotDto, k as PreviewPlanChangeDto, l as ProrationDto, m as ProrationInput, R as RedundantFeatureHint, S as SubscriptionBundleAddPreviewDto, n as SubscriptionBundleCancelPreviewDto, o as SubscriptionBundleConfig, p as SubscriptionBundlePreviewContext, q as SubscriptionBundlePreviewIssue, r as SubscriptionBundlePreviewService, s as SubscriptionBundlesService, T as TenantAdminGuard, t as TenantBillingController, U as UsageResponse, u as addMonths, v as computeProration, w as resolveBundleCancelEffectiveAt, x as resolveBundlePriceNet } from '../tenant-billing.controller-DT5UrnDX.js';
|
|
11
|
+
export { A as AddBundleToSubscriptionInput, B as BundlePreviewSnapshot, C as CancelBundleFromSubscriptionInput, a as CancelSubscriptionDto, b as ChangePlanDto, c as CompleteOnboardingSubscriptionDto, d as ComposedTenantAuthGuard, L as LimitsCheckRow, P as PendingPlanMaterializationService, e as PlanChangeContext, f as PlanChangePreviewDto, g as PlanChangePreviewIssue, h as PlanChangePreviewService, i as PlanChangeType, j as PlanSnapshotDto, k as PreviewPlanChangeDto, l as ProrationDto, m as ProrationInput, R as RedundantFeatureHint, S as SubscriptionBundleAddPreviewDto, n as SubscriptionBundleCancelPreviewDto, o as SubscriptionBundleConfig, p as SubscriptionBundlePreviewContext, q as SubscriptionBundlePreviewIssue, r as SubscriptionBundlePreviewService, s as SubscriptionBundlesService, T as TenantAdminGuard, t as TenantBillingController, U as UsageResponse, u as addMonths, v as computeProration, w as resolveBundleCancelEffectiveAt, x as resolveBundlePriceNet } from '../tenant-billing.controller-BSlpFqVA.js';
|
|
12
12
|
import { S as SubscriptionContractService } from '../subscription-contract.service--cm47ZJJ.js';
|
|
13
13
|
import '../plan-resolution-CFCoUkrE.js';
|
|
14
14
|
import '../service-D48clObR.js';
|
|
@@ -193,6 +193,8 @@ declare class FeatureGuard implements CanActivate {
|
|
|
193
193
|
private readonly entitlements;
|
|
194
194
|
private readonly config;
|
|
195
195
|
private readonly upsellResolver;
|
|
196
|
+
/** Lets `FeatureGuardCoverageCheck` recognise this guard across CJS entries. */
|
|
197
|
+
static readonly [FEATURE_GUARD_MARKER] = true;
|
|
196
198
|
private readonly logger;
|
|
197
199
|
constructor(reflector: Reflector, entitlements: EntitlementService, config?: FeatureGuardConfig | null, upsellResolver?: UpsellOfferResolver | null);
|
|
198
200
|
canActivate(context: ExecutionContext): Promise<boolean>;
|
|
@@ -304,7 +306,7 @@ interface PlanCatalogModuleOptions {
|
|
|
304
306
|
currency: string;
|
|
305
307
|
vatRate: number;
|
|
306
308
|
/**
|
|
307
|
-
* App-wide marketing configuration
|
|
309
|
+
* App-wide marketing configuration — including the
|
|
308
310
|
* `availableLocales` pool. Flows into `PLAN_CATALOG_TOKEN.marketing`
|
|
309
311
|
* and from there into the admin manifest (`project.availableLocales`).
|
|
310
312
|
*/
|
|
@@ -334,7 +336,7 @@ interface PlanCatalogBuildSettings {
|
|
|
334
336
|
app?: PlanCatalog['app'];
|
|
335
337
|
currency: string;
|
|
336
338
|
vatRate: number;
|
|
337
|
-
/** App-wide marketing configuration
|
|
339
|
+
/** App-wide marketing configuration. Optional. */
|
|
338
340
|
marketing?: PlanCatalog['marketing'];
|
|
339
341
|
}
|
|
340
342
|
declare function buildPlanCatalogFromSnapshot(settings: PlanCatalogBuildSettings, snapshot: PlanCatalogReadSnapshot): PlanCatalog;
|
|
@@ -467,7 +469,7 @@ interface PlanResponseEntry {
|
|
|
467
469
|
popular: boolean;
|
|
468
470
|
quotas: Record<string, number>;
|
|
469
471
|
features: string[];
|
|
470
|
-
/**
|
|
472
|
+
/** — optional, present if a MarketingProjection exists. */
|
|
471
473
|
marketing?: MarketingFields;
|
|
472
474
|
}
|
|
473
475
|
interface PublicBundleEntry {
|
|
@@ -500,7 +502,7 @@ declare class PublicCatalogController {
|
|
|
500
502
|
listPlans(lang?: string, localeParam?: string): Promise<PlanResponseEntry[]>;
|
|
501
503
|
listFeatureRegistry(): Promise<FeatureUiRegistry>;
|
|
502
504
|
/**
|
|
503
|
-
*
|
|
505
|
+
* — public catalog endpoint for bundles
|
|
504
506
|
* (stem list with live versions). If a `MarketingProjection` with
|
|
505
507
|
* `targetType=BUNDLE` + matching locale exists, it is merged in.
|
|
506
508
|
*/
|
|
@@ -520,7 +522,7 @@ interface PublicCatalogModuleOptions {
|
|
|
520
522
|
/** Required: consumer-specific FeatureUiRegistry. */
|
|
521
523
|
featureUiRegistry: FeatureUiRegistry;
|
|
522
524
|
/**
|
|
523
|
-
*
|
|
525
|
+
* — app identity (e.g. "clubapp"). Used
|
|
524
526
|
* for marketing lookups + bundle filters.
|
|
525
527
|
* Optional; if omitted, the new endpoints return empty lists.
|
|
526
528
|
*/
|
|
@@ -594,4 +596,4 @@ declare const SUBSCRIPTION_BUNDLE_CONFIG_TOKEN: unique symbol;
|
|
|
594
596
|
*/
|
|
595
597
|
declare function buildTenantSubscriptionBundlesController(extraGuards?: Array<Type<CanActivate>>): Type;
|
|
596
598
|
|
|
597
|
-
export { type AjvErrorLike, CatalogBundleUpsellResolver, ConfiguratorCatalogBuilder, ContractFreezePort, ContractFreezeSourcePort, FEATURE_GUARD_CONFIG_TOKEN, FEATURE_UI_REGISTRY_TOKEN, FeatureGuard, type FeatureGuardConfig, LimitExceededFilter, type LoadPlanCatalogOptions, type MarketingFields, type NextPeriodWindow, PLAN_CATALOG_IMPORT_SINK_TOKEN, PLAN_CATALOG_READ_SINK_TOKEN, PLAN_CATALOG_TOKEN, PUBLIC_CATALOG_BUNDLE_REPOSITORY_TOKEN, PUBLIC_CATALOG_MARKETING_REPOSITORY_TOKEN, PUBLIC_CATALOG_PROJECT_KEY_TOKEN, type PeriodRollInput, type PlanCatalogBuildSettings, PlanCatalogImportDto, type PlanCatalogImporterControllerConfig, PlanCatalogImporterModule, type PlanCatalogImporterModuleOptions, PlanCatalogImporterService, PlanCatalogModule, type PlanCatalogModuleOptions, PlanCatalogValidationError, type PlanResponseEntry, type PublicBundleEntry, PublicCatalogController, PublicCatalogModule, type PublicCatalogModuleOptions, PublishValidationError, type PublishablePlanVersion, REQUIRE_FEATURE_KEY, type RenewalDecision, type RenewalSubInput, RequireFeature, SUBSCRIPTION_BUNDLE_CONFIG_TOKEN, SUBSCRIPTION_BUNDLE_REPOSITORY_TOKEN, SubscriptionContractFreezeService, UPSELL_OFFER_CURRENCY_TOKEN, UPSELL_OFFER_RESOLVER_TOKEN, assertBaseVersionFresh, assertChangeNote, assertDraftPublishable, assertOptimisticLockHeld, buildPlanCatalogFromSnapshot, buildPlanCatalogImporterController, buildTenantSubscriptionBundlesController, clearPendingPlanVersionFields, computeCarriedTrialEndsAt, computeNextPeriod, decideRenewal, findPlan, getActiveFeatureKeys, getMarketedPlans, getPlanOrThrow, getPlanPriceGross, getPlanPriceNet, getPlanQuota, initialPeriodWindow, isFeatureInPlan, isFeaturePlannedOnly, loadPlanCatalogFromFile, loadPlanCatalogFromString, periodEndAfter, periodEndWithMinLead };
|
|
599
|
+
export { type AjvErrorLike, CatalogBundleUpsellResolver, ConfiguratorCatalogBuilder, ContractFreezePort, ContractFreezeSourcePort, FEATURE_GUARD_CONFIG_TOKEN, FEATURE_GUARD_MARKER, FEATURE_UI_REGISTRY_TOKEN, FeatureGuard, type FeatureGuardConfig, LimitExceededFilter, type LoadPlanCatalogOptions, type MarketingFields, type NextPeriodWindow, PLAN_CATALOG_IMPORT_SINK_TOKEN, PLAN_CATALOG_READ_SINK_TOKEN, PLAN_CATALOG_TOKEN, PUBLIC_CATALOG_BUNDLE_REPOSITORY_TOKEN, PUBLIC_CATALOG_MARKETING_REPOSITORY_TOKEN, PUBLIC_CATALOG_PROJECT_KEY_TOKEN, type PeriodRollInput, type PlanCatalogBuildSettings, PlanCatalogImportDto, type PlanCatalogImporterControllerConfig, PlanCatalogImporterModule, type PlanCatalogImporterModuleOptions, PlanCatalogImporterService, PlanCatalogModule, type PlanCatalogModuleOptions, PlanCatalogValidationError, type PlanResponseEntry, type PublicBundleEntry, PublicCatalogController, PublicCatalogModule, type PublicCatalogModuleOptions, PublishValidationError, type PublishablePlanVersion, REQUIRE_FEATURE_KEY, type RenewalDecision, type RenewalSubInput, RequireFeature, SUBSCRIPTION_BUNDLE_CONFIG_TOKEN, SUBSCRIPTION_BUNDLE_REPOSITORY_TOKEN, SubscriptionContractFreezeService, UPSELL_OFFER_CURRENCY_TOKEN, UPSELL_OFFER_RESOLVER_TOKEN, assertBaseVersionFresh, assertChangeNote, assertDraftPublishable, assertOptimisticLockHeld, buildPlanCatalogFromSnapshot, buildPlanCatalogImporterController, buildTenantSubscriptionBundlesController, clearPendingPlanVersionFields, computeCarriedTrialEndsAt, computeNextPeriod, decideRenewal, findPlan, getActiveFeatureKeys, getMarketedPlans, getPlanOrThrow, getPlanPriceGross, getPlanPriceNet, getPlanQuota, initialPeriodWindow, isFeatureInPlan, isFeaturePlannedOnly, loadPlanCatalogFromFile, loadPlanCatalogFromString, periodEndAfter, periodEndWithMinLead };
|
package/dist/billing/index.js
CHANGED
|
@@ -9,6 +9,7 @@ import {
|
|
|
9
9
|
ComposedTenantAuthGuard,
|
|
10
10
|
ConfiguratorCatalogBuilder,
|
|
11
11
|
FEATURE_GUARD_CONFIG_TOKEN,
|
|
12
|
+
FEATURE_GUARD_MARKER,
|
|
12
13
|
FEATURE_UI_REGISTRY_TOKEN,
|
|
13
14
|
FeatureGuard,
|
|
14
15
|
LimitExceededFilter,
|
|
@@ -52,13 +53,14 @@ import {
|
|
|
52
53
|
computeProration,
|
|
53
54
|
decideRenewal,
|
|
54
55
|
initialPeriodWindow,
|
|
56
|
+
isPlatformFeatureGuard,
|
|
55
57
|
loadPlanCatalogFromFile,
|
|
56
58
|
loadPlanCatalogFromString,
|
|
57
59
|
periodEndAfter,
|
|
58
60
|
periodEndWithMinLead,
|
|
59
61
|
resolveBundleCancelEffectiveAt,
|
|
60
62
|
resolveBundlePriceNet
|
|
61
|
-
} from "../chunk-
|
|
63
|
+
} from "../chunk-A7FHAN2I.js";
|
|
62
64
|
import "../chunk-VQQWF7MW.js";
|
|
63
65
|
import "../chunk-B7NRY2LV.js";
|
|
64
66
|
import {
|
|
@@ -81,7 +83,7 @@ import "../chunk-YSC46BGM.js";
|
|
|
81
83
|
import {
|
|
82
84
|
SUBSCRIPTION_BUNDLE_CONFIG_TOKEN,
|
|
83
85
|
SUBSCRIPTION_BUNDLE_REPOSITORY_TOKEN
|
|
84
|
-
} from "../chunk-
|
|
86
|
+
} from "../chunk-NNNXXUPT.js";
|
|
85
87
|
import {
|
|
86
88
|
PLAN_CATALOG_READ_SINK_TOKEN,
|
|
87
89
|
PLAN_CATALOG_TOKEN,
|
|
@@ -116,6 +118,7 @@ export {
|
|
|
116
118
|
ComposedTenantAuthGuard,
|
|
117
119
|
ConfiguratorCatalogBuilder,
|
|
118
120
|
FEATURE_GUARD_CONFIG_TOKEN,
|
|
121
|
+
FEATURE_GUARD_MARKER,
|
|
119
122
|
FEATURE_UI_REGISTRY_TOKEN,
|
|
120
123
|
FeatureGuard,
|
|
121
124
|
LimitExceededFilter,
|
|
@@ -185,6 +188,7 @@ export {
|
|
|
185
188
|
initialPeriodWindow,
|
|
186
189
|
isFeatureInPlan,
|
|
187
190
|
isFeaturePlannedOnly,
|
|
191
|
+
isPlatformFeatureGuard,
|
|
188
192
|
loadPlanCatalogFromFile,
|
|
189
193
|
loadPlanCatalogFromString,
|
|
190
194
|
periodEndAfter,
|
package/dist/catalog/index.d.cts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
export { B as BundlesService, C as CatalogEntriesService, a as CatalogServiceConfig, M as MarketingProjectionsService, b as MarketingSettingsService, P as PlanVersionsService, c as PlansService, d as PromotionsService, e as PublicMarketingCatalogService } from '../plan-versions.service-
|
|
1
|
+
export { B as BundlesService, C as CatalogEntriesService, a as CatalogServiceConfig, M as MarketingProjectionsService, b as MarketingSettingsService, P as PlanVersionsService, c as PlansService, d as PromotionsService, e as PublicMarketingCatalogService } from '../plan-versions.service-_saKzb50.cjs';
|
|
2
2
|
import { Type, CanActivate } from '@nestjs/common';
|
|
3
|
-
export { C as CatalogControllerConfig, a as CatalogModule, b as CatalogModuleOptions } from '../catalog.module-
|
|
3
|
+
export { C as CatalogControllerConfig, a as CatalogModule, b as CatalogModuleOptions } from '../catalog.module-D-_pQDNA.cjs';
|
|
4
4
|
import { StrictModeWarningCode, StrictModeWarning, DiscoverySnapshot, ApprovedCatalogKeys, DiscoveredQuota, CatalogEntryRepository, PlanVersionRow, BundleVersionRow, DiscoveryStatus, CatalogEntryI18n, PromotionType, PromotionValue, PromotionTargetType, PromotionBillingCycle, PromotionI18n } from '@saasicat/types';
|
|
5
5
|
import '../discovery.scanner-DLgEvuoy.cjs';
|
|
6
6
|
import '@nestjs/core';
|
|
@@ -36,7 +36,7 @@ declare function buildPlansController(guards: Array<Type<CanActivate>>): Type;
|
|
|
36
36
|
*/
|
|
37
37
|
declare function buildPlanVersionsController(guards: Array<Type<CanActivate>>): Type;
|
|
38
38
|
|
|
39
|
-
/** Repository for `plans` (
|
|
39
|
+
/** Repository for `plans` (Plan master CRUD). */
|
|
40
40
|
declare const PLAN_REPOSITORY_TOKEN: unique symbol;
|
|
41
41
|
/** Repository for `bundles` + `bundle_versions`. */
|
|
42
42
|
declare const BUNDLE_REPOSITORY_TOKEN: unique symbol;
|
|
@@ -44,12 +44,12 @@ declare const BUNDLE_REPOSITORY_TOKEN: unique symbol;
|
|
|
44
44
|
declare const MARKETING_PROJECTION_REPOSITORY_TOKEN: unique symbol;
|
|
45
45
|
/**
|
|
46
46
|
* Repository for `capability_catalog_entries`, `feature_catalog_entries`
|
|
47
|
-
* and `quota_catalog_entries` (Discovery review
|
|
47
|
+
* and `quota_catalog_entries` (Discovery review).
|
|
48
48
|
*/
|
|
49
49
|
declare const CATALOG_ENTRY_REPOSITORY_TOKEN: unique symbol;
|
|
50
|
-
/** Repository for `promotions` (time-scheduled price campaigns
|
|
50
|
+
/** Repository for `promotions` (time-scheduled price campaigns). */
|
|
51
51
|
declare const PROMOTION_REPOSITORY_TOKEN: unique symbol;
|
|
52
|
-
/** Repository for `marketing_settings` (activeLocales
|
|
52
|
+
/** Repository for `marketing_settings` (activeLocales). */
|
|
53
53
|
declare const MARKETING_SETTINGS_REPOSITORY_TOKEN: unique symbol;
|
|
54
54
|
/**
|
|
55
55
|
* Service configuration: current app identity, strict mode.
|
|
@@ -105,7 +105,7 @@ declare function validateBundleDraft(draft: {
|
|
|
105
105
|
}, snapshot: DiscoverySnapshot, knownPlanKeys?: Set<string> | null, marketedOnlyFeatures?: ReadonlySet<string>, approved?: ApprovedCatalogKeys | null): StrictModeWarning[];
|
|
106
106
|
/**
|
|
107
107
|
* Validates a PlanVersion draft definition against the discovery snapshot
|
|
108
|
-
|
|
108
|
+
*. Returns a (possibly empty) list of
|
|
109
109
|
* warnings.
|
|
110
110
|
*
|
|
111
111
|
* Checked:
|
|
@@ -347,7 +347,7 @@ declare class PublishBundleVersionDto {
|
|
|
347
347
|
allowZeroPrice?: boolean;
|
|
348
348
|
/**
|
|
349
349
|
* Required on publish if the draft carries no `validFrom`
|
|
350
|
-
* (
|
|
350
|
+
* (analogous to PublishPlanVersionDto).
|
|
351
351
|
* Service strictly checks > `validFrom` of the predecessor version.
|
|
352
352
|
*/
|
|
353
353
|
validFrom?: string | null;
|
|
@@ -502,7 +502,7 @@ declare class CreatePlanVersionDraftDto {
|
|
|
502
502
|
marketed?: boolean;
|
|
503
503
|
changeNote?: string;
|
|
504
504
|
baseVersionId?: string | null;
|
|
505
|
-
/** Optional in the draft (required at publish). ISO date string
|
|
505
|
+
/** Optional in the draft (required at publish). ISO date string.. */
|
|
506
506
|
validFrom?: string | null;
|
|
507
507
|
/** Optional; null = unlimited. ISO date string. */
|
|
508
508
|
validUntil?: string | null;
|
|
@@ -529,7 +529,7 @@ declare class PublishPlanVersionDto {
|
|
|
529
529
|
allowZeroPrice?: boolean;
|
|
530
530
|
/**
|
|
531
531
|
* Required at publish (on the DTO or draft). The service strictly checks
|
|
532
|
-
* `validFrom > predecessor.validFrom
|
|
532
|
+
* `validFrom > predecessor.validFrom`..
|
|
533
533
|
*/
|
|
534
534
|
validFrom?: string | null;
|
|
535
535
|
validUntil?: string | null;
|
package/dist/catalog/index.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
export { B as BundlesService, C as CatalogEntriesService, a as CatalogServiceConfig, M as MarketingProjectionsService, b as MarketingSettingsService, P as PlanVersionsService, c as PlansService, d as PromotionsService, e as PublicMarketingCatalogService } from '../plan-versions.service-
|
|
1
|
+
export { B as BundlesService, C as CatalogEntriesService, a as CatalogServiceConfig, M as MarketingProjectionsService, b as MarketingSettingsService, P as PlanVersionsService, c as PlansService, d as PromotionsService, e as PublicMarketingCatalogService } from '../plan-versions.service-B-YoE4SZ.js';
|
|
2
2
|
import { Type, CanActivate } from '@nestjs/common';
|
|
3
|
-
export { C as CatalogControllerConfig, a as CatalogModule, b as CatalogModuleOptions } from '../catalog.module-
|
|
3
|
+
export { C as CatalogControllerConfig, a as CatalogModule, b as CatalogModuleOptions } from '../catalog.module-CQr1FpkI.js';
|
|
4
4
|
import { StrictModeWarningCode, StrictModeWarning, DiscoverySnapshot, ApprovedCatalogKeys, DiscoveredQuota, CatalogEntryRepository, PlanVersionRow, BundleVersionRow, DiscoveryStatus, CatalogEntryI18n, PromotionType, PromotionValue, PromotionTargetType, PromotionBillingCycle, PromotionI18n } from '@saasicat/types';
|
|
5
5
|
import '../discovery.scanner-DLgEvuoy.js';
|
|
6
6
|
import '@nestjs/core';
|
|
@@ -36,7 +36,7 @@ declare function buildPlansController(guards: Array<Type<CanActivate>>): Type;
|
|
|
36
36
|
*/
|
|
37
37
|
declare function buildPlanVersionsController(guards: Array<Type<CanActivate>>): Type;
|
|
38
38
|
|
|
39
|
-
/** Repository for `plans` (
|
|
39
|
+
/** Repository for `plans` (Plan master CRUD). */
|
|
40
40
|
declare const PLAN_REPOSITORY_TOKEN: unique symbol;
|
|
41
41
|
/** Repository for `bundles` + `bundle_versions`. */
|
|
42
42
|
declare const BUNDLE_REPOSITORY_TOKEN: unique symbol;
|
|
@@ -44,12 +44,12 @@ declare const BUNDLE_REPOSITORY_TOKEN: unique symbol;
|
|
|
44
44
|
declare const MARKETING_PROJECTION_REPOSITORY_TOKEN: unique symbol;
|
|
45
45
|
/**
|
|
46
46
|
* Repository for `capability_catalog_entries`, `feature_catalog_entries`
|
|
47
|
-
* and `quota_catalog_entries` (Discovery review
|
|
47
|
+
* and `quota_catalog_entries` (Discovery review).
|
|
48
48
|
*/
|
|
49
49
|
declare const CATALOG_ENTRY_REPOSITORY_TOKEN: unique symbol;
|
|
50
|
-
/** Repository for `promotions` (time-scheduled price campaigns
|
|
50
|
+
/** Repository for `promotions` (time-scheduled price campaigns). */
|
|
51
51
|
declare const PROMOTION_REPOSITORY_TOKEN: unique symbol;
|
|
52
|
-
/** Repository for `marketing_settings` (activeLocales
|
|
52
|
+
/** Repository for `marketing_settings` (activeLocales). */
|
|
53
53
|
declare const MARKETING_SETTINGS_REPOSITORY_TOKEN: unique symbol;
|
|
54
54
|
/**
|
|
55
55
|
* Service configuration: current app identity, strict mode.
|
|
@@ -105,7 +105,7 @@ declare function validateBundleDraft(draft: {
|
|
|
105
105
|
}, snapshot: DiscoverySnapshot, knownPlanKeys?: Set<string> | null, marketedOnlyFeatures?: ReadonlySet<string>, approved?: ApprovedCatalogKeys | null): StrictModeWarning[];
|
|
106
106
|
/**
|
|
107
107
|
* Validates a PlanVersion draft definition against the discovery snapshot
|
|
108
|
-
|
|
108
|
+
*. Returns a (possibly empty) list of
|
|
109
109
|
* warnings.
|
|
110
110
|
*
|
|
111
111
|
* Checked:
|
|
@@ -347,7 +347,7 @@ declare class PublishBundleVersionDto {
|
|
|
347
347
|
allowZeroPrice?: boolean;
|
|
348
348
|
/**
|
|
349
349
|
* Required on publish if the draft carries no `validFrom`
|
|
350
|
-
* (
|
|
350
|
+
* (analogous to PublishPlanVersionDto).
|
|
351
351
|
* Service strictly checks > `validFrom` of the predecessor version.
|
|
352
352
|
*/
|
|
353
353
|
validFrom?: string | null;
|
|
@@ -502,7 +502,7 @@ declare class CreatePlanVersionDraftDto {
|
|
|
502
502
|
marketed?: boolean;
|
|
503
503
|
changeNote?: string;
|
|
504
504
|
baseVersionId?: string | null;
|
|
505
|
-
/** Optional in the draft (required at publish). ISO date string
|
|
505
|
+
/** Optional in the draft (required at publish). ISO date string.. */
|
|
506
506
|
validFrom?: string | null;
|
|
507
507
|
/** Optional; null = unlimited. ISO date string. */
|
|
508
508
|
validUntil?: string | null;
|
|
@@ -529,7 +529,7 @@ declare class PublishPlanVersionDto {
|
|
|
529
529
|
allowZeroPrice?: boolean;
|
|
530
530
|
/**
|
|
531
531
|
* Required at publish (on the DTO or draft). The service strictly checks
|
|
532
|
-
* `validFrom > predecessor.validFrom
|
|
532
|
+
* `validFrom > predecessor.validFrom`..
|
|
533
533
|
*/
|
|
534
534
|
validFrom?: string | null;
|
|
535
535
|
validUntil?: string | null;
|
package/dist/catalog/index.js
CHANGED
|
@@ -6,7 +6,7 @@ import {
|
|
|
6
6
|
runSeedGateFromFile,
|
|
7
7
|
seedGateExitCode,
|
|
8
8
|
validateSeedAgainstSnapshot
|
|
9
|
-
} from "../chunk-
|
|
9
|
+
} from "../chunk-7ZPFQXHM.js";
|
|
10
10
|
import "../chunk-74SCJ4HF.js";
|
|
11
11
|
import {
|
|
12
12
|
ADVISORY_STRICT_MODE_CODES,
|
|
@@ -56,7 +56,7 @@ import {
|
|
|
56
56
|
quotaApprovalSignature,
|
|
57
57
|
validateBundleDraft,
|
|
58
58
|
validatePlanDraft
|
|
59
|
-
} from "../chunk-
|
|
59
|
+
} from "../chunk-7X5MSAIL.js";
|
|
60
60
|
import "../chunk-WPUVJRIN.js";
|
|
61
61
|
import "../chunk-E56W4U2P.js";
|
|
62
62
|
import "../chunk-YSC46BGM.js";
|
|
@@ -21,23 +21,23 @@ interface CatalogModuleOptions {
|
|
|
21
21
|
marketingProjectionRepository?: ProviderSpec<MarketingProjectionRepository>;
|
|
22
22
|
/**
|
|
23
23
|
* Adapter for `capability_/feature_/quota_catalog_entries` persistence
|
|
24
|
-
* (discovery review
|
|
24
|
+
* (discovery review). Optional — if omitted,
|
|
25
25
|
* CatalogEntriesService + controller are not registered.
|
|
26
26
|
*/
|
|
27
27
|
catalogEntryRepository?: ProviderSpec<CatalogEntryRepository>;
|
|
28
28
|
/**
|
|
29
|
-
* Adapter for `promotions` persistence
|
|
29
|
+
* Adapter for `promotions` persistence. Optional — if
|
|
30
30
|
* omitted, PromotionsService + controller are not registered.
|
|
31
31
|
*/
|
|
32
32
|
promotionRepository?: ProviderSpec<PromotionRepository>;
|
|
33
33
|
/**
|
|
34
|
-
* Adapter for `marketing_settings` persistence (
|
|
34
|
+
* Adapter for `marketing_settings` persistence (
|
|
35
35
|
* `activeLocales`). Optional.
|
|
36
36
|
*/
|
|
37
37
|
marketingSettingsRepository?: ProviderSpec<MarketingSettingsRepository>;
|
|
38
38
|
/**
|
|
39
39
|
* Auth-free pricing-page endpoint `GET /public/marketing-catalog`
|
|
40
|
-
|
|
40
|
+
*. Registered only when plan-, marketingProjection-
|
|
41
41
|
* and promotionRepository are set. `guards` is usually `[]`.
|
|
42
42
|
*/
|
|
43
43
|
publicMarketingCatalog?: {
|
|
@@ -47,7 +47,7 @@ interface CatalogModuleOptions {
|
|
|
47
47
|
vatRate: number;
|
|
48
48
|
};
|
|
49
49
|
/**
|
|
50
|
-
*
|
|
50
|
+
* — adapter for `plans` master-record persistence.
|
|
51
51
|
* Optional; if omitted, PlansService + controller are not
|
|
52
52
|
* registered (apps without a need for the plan editor stay unchanged).
|
|
53
53
|
*/
|
|
@@ -82,7 +82,7 @@ interface CatalogModuleOptions {
|
|
|
82
82
|
* per feature — the same one passed to `PublicCatalogModule.forRoot`). The
|
|
83
83
|
* discovery auto-sync seeds EMPTY `FeatureCatalogEntry` fields
|
|
84
84
|
* (label/description/icon) from it at boot; SuperAdmin edits stay untouched. This
|
|
85
|
-
* makes `FeatureCatalogEntry` the SSOT for UI metadata
|
|
85
|
+
* makes `FeatureCatalogEntry` the SSOT for UI metadata.
|
|
86
86
|
*/
|
|
87
87
|
featureUiRegistry?: FeatureUiRegistry;
|
|
88
88
|
/**
|
|
@@ -21,23 +21,23 @@ interface CatalogModuleOptions {
|
|
|
21
21
|
marketingProjectionRepository?: ProviderSpec<MarketingProjectionRepository>;
|
|
22
22
|
/**
|
|
23
23
|
* Adapter for `capability_/feature_/quota_catalog_entries` persistence
|
|
24
|
-
* (discovery review
|
|
24
|
+
* (discovery review). Optional — if omitted,
|
|
25
25
|
* CatalogEntriesService + controller are not registered.
|
|
26
26
|
*/
|
|
27
27
|
catalogEntryRepository?: ProviderSpec<CatalogEntryRepository>;
|
|
28
28
|
/**
|
|
29
|
-
* Adapter for `promotions` persistence
|
|
29
|
+
* Adapter for `promotions` persistence. Optional — if
|
|
30
30
|
* omitted, PromotionsService + controller are not registered.
|
|
31
31
|
*/
|
|
32
32
|
promotionRepository?: ProviderSpec<PromotionRepository>;
|
|
33
33
|
/**
|
|
34
|
-
* Adapter for `marketing_settings` persistence (
|
|
34
|
+
* Adapter for `marketing_settings` persistence (
|
|
35
35
|
* `activeLocales`). Optional.
|
|
36
36
|
*/
|
|
37
37
|
marketingSettingsRepository?: ProviderSpec<MarketingSettingsRepository>;
|
|
38
38
|
/**
|
|
39
39
|
* Auth-free pricing-page endpoint `GET /public/marketing-catalog`
|
|
40
|
-
|
|
40
|
+
*. Registered only when plan-, marketingProjection-
|
|
41
41
|
* and promotionRepository are set. `guards` is usually `[]`.
|
|
42
42
|
*/
|
|
43
43
|
publicMarketingCatalog?: {
|
|
@@ -47,7 +47,7 @@ interface CatalogModuleOptions {
|
|
|
47
47
|
vatRate: number;
|
|
48
48
|
};
|
|
49
49
|
/**
|
|
50
|
-
*
|
|
50
|
+
* — adapter for `plans` master-record persistence.
|
|
51
51
|
* Optional; if omitted, PlansService + controller are not
|
|
52
52
|
* registered (apps without a need for the plan editor stay unchanged).
|
|
53
53
|
*/
|
|
@@ -82,7 +82,7 @@ interface CatalogModuleOptions {
|
|
|
82
82
|
* per feature — the same one passed to `PublicCatalogModule.forRoot`). The
|
|
83
83
|
* discovery auto-sync seeds EMPTY `FeatureCatalogEntry` fields
|
|
84
84
|
* (label/description/icon) from it at boot; SuperAdmin edits stay untouched. This
|
|
85
|
-
* makes `FeatureCatalogEntry` the SSOT for UI metadata
|
|
85
|
+
* makes `FeatureCatalogEntry` the SSOT for UI metadata.
|
|
86
86
|
*/
|
|
87
87
|
featureUiRegistry?: FeatureUiRegistry;
|
|
88
88
|
/**
|
|
@@ -497,7 +497,7 @@ var BundlesService = class _BundlesService {
|
|
|
497
497
|
* Publishes a draft version atomically. Steps:
|
|
498
498
|
* 1. Strict check on the draft definition (warn-only or blocking)
|
|
499
499
|
* 2. Enforce validFrom requirement + ordering against the predecessor
|
|
500
|
-
* (
|
|
500
|
+
* (analogous to PlanVersion)
|
|
501
501
|
* 3. Compute the diff against the predecessor version (latest live) →
|
|
502
502
|
* `publishedChanges` + `nonRegressive` via `classifyBundleVersionDiff`
|
|
503
503
|
* 4. Call Repository.publishDraft with the diff result + validity dates
|
|
@@ -546,7 +546,7 @@ var BundlesService = class _BundlesService {
|
|
|
546
546
|
if (!validFromInput) {
|
|
547
547
|
throw new UnprocessableEntityException({
|
|
548
548
|
code: CATALOG_ERROR_CODES.BUNDLE_VERSION_VALID_FROM_REQUIRED,
|
|
549
|
-
message: "validFrom must be set when publishing (on the draft or the publish call)
|
|
549
|
+
message: "validFrom must be set when publishing (on the draft or the publish call).."
|
|
550
550
|
});
|
|
551
551
|
}
|
|
552
552
|
const validFrom = new Date(validFromInput);
|
|
@@ -2776,7 +2776,7 @@ function buildPublicMarketingCatalogController(guards, projectKey, currency, vat
|
|
|
2776
2776
|
this.service = service;
|
|
2777
2777
|
}
|
|
2778
2778
|
/**
|
|
2779
|
-
* `?lang=de|tr|en` — alias `locale` accepted
|
|
2779
|
+
* `?lang=de|tr|en` — alias `locale` accepted.
|
|
2780
2780
|
* `?asOf=YYYY-MM-DD` — preview of a future or past catalog variant.
|
|
2781
2781
|
* Default = today. Returns the PlanVersion whose `validFrom`/`validUntil`
|
|
2782
2782
|
* span `asOf` inclusively by day (the validUntil day still counts,
|
|
@@ -3287,7 +3287,7 @@ var PlanVersionsService = class _PlanVersionsService {
|
|
|
3287
3287
|
if (!validFromInput) {
|
|
3288
3288
|
throw new UnprocessableEntityException4({
|
|
3289
3289
|
code: CATALOG_ERROR_CODES6.PLAN_VERSION_VALID_FROM_REQUIRED,
|
|
3290
|
-
message: "validFrom must be set when publishing (on the draft or the publish call)
|
|
3290
|
+
message: "validFrom must be set when publishing (on the draft or the publish call).."
|
|
3291
3291
|
});
|
|
3292
3292
|
}
|
|
3293
3293
|
const validFrom = new Date(validFromInput);
|
|
@@ -3801,7 +3801,7 @@ var PublishBundleVersionDto = class {
|
|
|
3801
3801
|
allowZeroPrice;
|
|
3802
3802
|
/**
|
|
3803
3803
|
* Required on publish if the draft carries no `validFrom`
|
|
3804
|
-
* (
|
|
3804
|
+
* (analogous to PublishPlanVersionDto).
|
|
3805
3805
|
* Service strictly checks > `validFrom` of the predecessor version.
|
|
3806
3806
|
*/
|
|
3807
3807
|
validFrom;
|
|
@@ -4583,7 +4583,7 @@ var CreatePlanVersionDraftDto = class {
|
|
|
4583
4583
|
marketed;
|
|
4584
4584
|
changeNote;
|
|
4585
4585
|
baseVersionId;
|
|
4586
|
-
/** Optional in the draft (required at publish). ISO date string
|
|
4586
|
+
/** Optional in the draft (required at publish). ISO date string.. */
|
|
4587
4587
|
validFrom;
|
|
4588
4588
|
/** Optional; null = unlimited. ISO date string. */
|
|
4589
4589
|
validUntil;
|
|
@@ -4758,7 +4758,7 @@ var PublishPlanVersionDto = class {
|
|
|
4758
4758
|
allowZeroPrice;
|
|
4759
4759
|
/**
|
|
4760
4760
|
* Required at publish (on the DTO or draft). The service strictly checks
|
|
4761
|
-
* `validFrom > predecessor.validFrom
|
|
4761
|
+
* `validFrom > predecessor.validFrom`..
|
|
4762
4762
|
*/
|
|
4763
4763
|
validFrom;
|
|
4764
4764
|
validUntil;
|