@arnaudjnn/billing-tools 15.23.0 → 15.24.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bound-api.d.ts +5 -5
- package/dist/create-billing.d.ts +6 -6
- package/dist/entries/plans.d.ts +1 -0
- package/dist/entries/plans.d.ts.map +1 -1
- package/dist/entries/plans.js +9 -0
- package/dist/entries/plans.js.map +1 -1
- package/dist/index.d.ts +6 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +27 -5
- package/dist/index.js.map +1 -1
- package/dist/ladder.d.ts +145 -0
- package/dist/ladder.d.ts.map +1 -0
- package/dist/ladder.js +196 -0
- package/dist/ladder.js.map +1 -0
- package/dist/plan-request.d.ts +3 -89
- package/dist/plan-request.d.ts.map +1 -1
- package/dist/plan-request.js +6 -111
- package/dist/plan-request.js.map +1 -1
- package/dist/subscription.d.ts +2 -22
- package/dist/subscription.d.ts.map +1 -1
- package/dist/subscription.js +5 -34
- package/dist/subscription.js.map +1 -1
- package/package.json +2 -2
package/dist/bound-api.d.ts
CHANGED
|
@@ -79,9 +79,9 @@ export declare function createBoundApi(deps: BoundApiDeps): {
|
|
|
79
79
|
* trigger on an owner's behalf.
|
|
80
80
|
*/
|
|
81
81
|
requests: {
|
|
82
|
-
list: (orgId: string) => Promise<import("./
|
|
82
|
+
list: (orgId: string) => Promise<import("./ladder.js").PlanRequest[]>;
|
|
83
83
|
/** That member's open ask, or null once the workspace has reached the plan anyway. */
|
|
84
|
-
pending: (orgId: string, memberId: string) => Promise<import("./
|
|
84
|
+
pending: (orgId: string, memberId: string) => Promise<import("./ladder.js").PlanRequest | null>;
|
|
85
85
|
ask: (orgId: string, memberId: string, opts?: {
|
|
86
86
|
plan?: string;
|
|
87
87
|
note?: string;
|
|
@@ -89,7 +89,7 @@ export declare function createBoundApi(deps: BoundApiDeps): {
|
|
|
89
89
|
ok: boolean;
|
|
90
90
|
id?: string;
|
|
91
91
|
plan?: string;
|
|
92
|
-
pending?: import("./
|
|
92
|
+
pending?: import("./ladder.js").PlanRequest;
|
|
93
93
|
reason?: "no_upgrade" | "unknown_plan" | "already_pending" | "already_on_it" | "queue_full";
|
|
94
94
|
}>;
|
|
95
95
|
/** Ask for a bigger SEAT — the right ask while one exists above them. */
|
|
@@ -100,7 +100,7 @@ export declare function createBoundApi(deps: BoundApiDeps): {
|
|
|
100
100
|
ok: boolean;
|
|
101
101
|
id?: string;
|
|
102
102
|
seatType?: string;
|
|
103
|
-
pending?: import("./
|
|
103
|
+
pending?: import("./ladder.js").PlanRequest;
|
|
104
104
|
reason?: "no_upgrade" | "unknown_plan" | "already_pending" | "already_on_it" | "queue_full";
|
|
105
105
|
}>;
|
|
106
106
|
/**
|
|
@@ -121,7 +121,7 @@ export declare function createBoundApi(deps: BoundApiDeps): {
|
|
|
121
121
|
ask: "plan";
|
|
122
122
|
to: string;
|
|
123
123
|
} | null>;
|
|
124
|
-
resolve: (orgId: string, requestId: string, decision: "done" | "denied") => Promise<import("./
|
|
124
|
+
resolve: (orgId: string, requestId: string, decision: "done" | "denied") => Promise<import("./ladder.js").PlanRequest | null>;
|
|
125
125
|
/** Has the workspace already reached what this asked for? */
|
|
126
126
|
satisfied: (orgId: string, request: Parameters<typeof isSatisfied>[0]) => Promise<boolean>;
|
|
127
127
|
};
|
package/dist/create-billing.d.ts
CHANGED
|
@@ -187,8 +187,8 @@ export declare function createBilling(opts: CreateBillingOptions): {
|
|
|
187
187
|
change: (orgId: string, to: Parameters<typeof import("./subscription.js").changePlan>[2]["to"], opts?: Omit<Parameters<typeof import("./subscription.js").changePlan>[2], "plans" | "to" | "config" | "currency">) => Promise<import("./subscription.js").PlanChangeResult>;
|
|
188
188
|
preview: (orgId: string, to: Parameters<typeof import("./subscription.js").previewPlanChange>[2]["to"], opts?: Omit<Parameters<typeof import("./subscription.js").previewPlanChange>[2], "plans" | "to" | "currency">) => Promise<import("./subscription.js").PlanChangePreview>;
|
|
189
189
|
requests: {
|
|
190
|
-
list: (orgId: string) => Promise<import("./
|
|
191
|
-
pending: (orgId: string, memberId: string) => Promise<import("./
|
|
190
|
+
list: (orgId: string) => Promise<import("./ladder.js").PlanRequest[]>;
|
|
191
|
+
pending: (orgId: string, memberId: string) => Promise<import("./ladder.js").PlanRequest | null>;
|
|
192
192
|
ask: (orgId: string, memberId: string, opts?: {
|
|
193
193
|
plan?: string;
|
|
194
194
|
note?: string;
|
|
@@ -196,7 +196,7 @@ export declare function createBilling(opts: CreateBillingOptions): {
|
|
|
196
196
|
ok: boolean;
|
|
197
197
|
id?: string;
|
|
198
198
|
plan?: string;
|
|
199
|
-
pending?: import("./
|
|
199
|
+
pending?: import("./ladder.js").PlanRequest;
|
|
200
200
|
reason?: "no_upgrade" | "unknown_plan" | "already_pending" | "already_on_it" | "queue_full";
|
|
201
201
|
}>;
|
|
202
202
|
askSeat: (orgId: string, memberId: string, opts?: {
|
|
@@ -206,7 +206,7 @@ export declare function createBilling(opts: CreateBillingOptions): {
|
|
|
206
206
|
ok: boolean;
|
|
207
207
|
id?: string;
|
|
208
208
|
seatType?: string;
|
|
209
|
-
pending?: import("./
|
|
209
|
+
pending?: import("./ladder.js").PlanRequest;
|
|
210
210
|
reason?: "no_upgrade" | "unknown_plan" | "already_pending" | "already_on_it" | "queue_full";
|
|
211
211
|
}>;
|
|
212
212
|
next: (orgId: string, memberId: string) => Promise<{
|
|
@@ -220,8 +220,8 @@ export declare function createBilling(opts: CreateBillingOptions): {
|
|
|
220
220
|
ask: "plan";
|
|
221
221
|
to: string;
|
|
222
222
|
} | null>;
|
|
223
|
-
resolve: (orgId: string, requestId: string, decision: "done" | "denied") => Promise<import("./
|
|
224
|
-
satisfied: (orgId: string, request: Parameters<typeof import("./
|
|
223
|
+
resolve: (orgId: string, requestId: string, decision: "done" | "denied") => Promise<import("./ladder.js").PlanRequest | null>;
|
|
224
|
+
satisfied: (orgId: string, request: Parameters<typeof import("./ladder.js").isSatisfied>[0]) => Promise<boolean>;
|
|
225
225
|
};
|
|
226
226
|
cancel: (orgId: string, opts?: Omit<Parameters<typeof import("./subscription.js").cancelPlan>[2], "plans" | "currency">) => Promise<import("./subscription.js").PlanChangeResult>;
|
|
227
227
|
};
|
package/dist/entries/plans.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plans.d.ts","sourceRoot":"","sources":["../../src/entries/plans.ts"],"names":[],"mappings":"AA0BA,cAAc,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"plans.d.ts","sourceRoot":"","sources":["../../src/entries/plans.ts"],"names":[],"mappings":"AA0BA,cAAc,kBAAkB,CAAC;AAUjC,cAAc,cAAc,CAAC;AAK7B,cAAc,YAAY,CAAC;AAM3B,cAAc,aAAa,CAAC;AAM5B,OAAO,EAAE,YAAY,EAAE,KAAK,YAAY,EAAE,MAAM,kBAAkB,CAAC"}
|
package/dist/entries/plans.js
CHANGED
|
@@ -24,6 +24,15 @@
|
|
|
24
24
|
// definePlans, planModel, normalizePlans, poolSizeOf, packSizeOf, capCovers,
|
|
25
25
|
// rateLimitsOf, cycleWindowFor, validateBasket, toolCapabilities, …
|
|
26
26
|
export * from "../plan-model.js";
|
|
27
|
+
// The RUNGS: which seat is better, which plan is better, and which ask to offer a member
|
|
28
|
+
// who is blocked (`seatLadder`, `defaultSeatOf`, `nextSeatUp`, `isTopSeat`, `planRank`,
|
|
29
|
+
// `planActions`, `nextUsageAsk`). Pure arithmetic over the catalogue, and it belongs on
|
|
30
|
+
// this leaf for the reason the leaf exists: the screens that need it most — a seat picker,
|
|
31
|
+
// a pricing table, the "you are blocked, here is the answer" control — are client
|
|
32
|
+
// components, and reaching a rung through the root barrel loads Stripe and the MCP SDK to
|
|
33
|
+
// compare two numbers. Half of this was unreachable from ANY entry point until now, which
|
|
34
|
+
// is exactly why consumers re-implemented the ordering rule per screen.
|
|
35
|
+
export * from "../ladder.js";
|
|
27
36
|
// Localisation of app-authored strings (`Localized`, `resolveLocalized`) and the
|
|
28
37
|
// library's own English defaults (`DEFAULT_MESSAGES`). A plan's display copy is
|
|
29
38
|
// localised, so the plan model cannot be read without these.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plans.js","sourceRoot":"","sources":["../../src/entries/plans.ts"],"names":[],"mappings":"AAAA,iFAAiF;AACjF,qBAAqB;AACrB,EAAE;AACF,uEAAuE;AACvE,0EAA0E;AAC1E,yFAAyF;AACzF,8EAA8E;AAC9E,mFAAmF;AACnF,gEAAgE;AAChE,EAAE;AACF,iFAAiF;AACjF,yEAAyE;AACzE,kFAAkF;AAClF,uDAAuD;AACvD,EAAE;AACF,0BAA0B;AAC1B,8EAA8E;AAC9E,mEAAmE;AACnE,mFAAmF;AACnF,iFAAiF;AACjF,kBAAkB;AAClB,4CAA4C;AAE5C,uEAAuE;AACvE,6EAA6E;AAC7E,oEAAoE;AACpE,cAAc,kBAAkB,CAAC;AAEjC,iFAAiF;AACjF,gFAAgF;AAChF,6DAA6D;AAC7D,cAAc,YAAY,CAAC;AAE3B,4EAA4E;AAC5E,iFAAiF;AACjF,mFAAmF;AACnF,yCAAyC;AACzC,cAAc,aAAa,CAAC;AAE5B,uFAAuF;AACvF,uFAAuF;AACvF,qFAAqF;AACrF,uEAAuE;AACvE,OAAO,EAAE,YAAY,EAAqB,MAAM,kBAAkB,CAAC"}
|
|
1
|
+
{"version":3,"file":"plans.js","sourceRoot":"","sources":["../../src/entries/plans.ts"],"names":[],"mappings":"AAAA,iFAAiF;AACjF,qBAAqB;AACrB,EAAE;AACF,uEAAuE;AACvE,0EAA0E;AAC1E,yFAAyF;AACzF,8EAA8E;AAC9E,mFAAmF;AACnF,gEAAgE;AAChE,EAAE;AACF,iFAAiF;AACjF,yEAAyE;AACzE,kFAAkF;AAClF,uDAAuD;AACvD,EAAE;AACF,0BAA0B;AAC1B,8EAA8E;AAC9E,mEAAmE;AACnE,mFAAmF;AACnF,iFAAiF;AACjF,kBAAkB;AAClB,4CAA4C;AAE5C,uEAAuE;AACvE,6EAA6E;AAC7E,oEAAoE;AACpE,cAAc,kBAAkB,CAAC;AAEjC,yFAAyF;AACzF,wFAAwF;AACxF,wFAAwF;AACxF,2FAA2F;AAC3F,kFAAkF;AAClF,0FAA0F;AAC1F,0FAA0F;AAC1F,wEAAwE;AACxE,cAAc,cAAc,CAAC;AAE7B,iFAAiF;AACjF,gFAAgF;AAChF,6DAA6D;AAC7D,cAAc,YAAY,CAAC;AAE3B,4EAA4E;AAC5E,iFAAiF;AACjF,mFAAmF;AACnF,yCAAyC;AACzC,cAAc,aAAa,CAAC;AAE5B,uFAAuF;AACvF,uFAAuF;AACvF,qFAAqF;AACrF,uEAAuE;AACvE,OAAO,EAAE,YAAY,EAAqB,MAAM,kBAAkB,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,20 +1,21 @@
|
|
|
1
1
|
export * from "./entries/plans.js";
|
|
2
|
-
export { authContext, runWithAuth, runWithResolvedOrg, runWithPrincipal, currentPrincipal, enforceAccess, enforceAdmin, type Principal, enforceCredits, enforceMember, } from "./auth.js";
|
|
2
|
+
export { authContext, runWithAuth, runWithResolvedOrg, runWithPrincipal, currentPrincipal, enforceAccess, enforceAdmin, type Principal, enforceCredits, enforceMember, isInternalOrg, } from "./auth.js";
|
|
3
3
|
export { getWorkOS, __setWorkOSForTests } from "./workos.js";
|
|
4
4
|
export { createWorkOSOrgMirror, ALL_MEMBERSHIP_STATUSES, type WorkOSOrgMirror, type WorkOSOrgMirrorOptions, } from "./org-mirror.js";
|
|
5
5
|
export { getStripe, stripeConfigured, ensureStripeCustomer, getBillingCustomerId, getOrgSubscription, getCreditBalance, deductCredits, grantCredits, usageSince, createCreditCheckoutSession, quoteCreditPurchase, invalidateCreditQuotes, type CreditQuote, createBillingPortalSession, getAutoReloadSettings, setAutoReloadSettings, getSpendControls, setSpendControls, spendControlsOf, type SpendControls, tryAutoReload, autoReloadFor, type ChargeTax, type TopUpCheckoutOptions, listInvoices, getInvoice, invoicePdfUrl, listOrgInvoices, getOrgInvoice, orgInvoicePdfUrl, listSubscriptionPrices, resolveSubscriptionPrice, type InvoiceEntry, type StripePrice, } from "./billing.js";
|
|
6
6
|
export { ensurePlans, resolvePlanPrices, invalidatePlanPrices, migrateSubscriptions, planPriceId, planForPriceId, seatTypeForPriceId, seatLimit, seatTypeLimit, planSale, includedCredits, includedCreditsByType, lookupKeyFor, type EnsuredPrice, type PlanPrices, type MigratedSubscription, type MigrateSubscriptionsResult, type Quantities as PlanQuantities, } from "./plans.js";
|
|
7
|
-
export { changePlan, cancelPlan,
|
|
7
|
+
export { changePlan, cancelPlan, previewPlanChange, PlanChangeError, type PlanChangePreview, type PlanChangeResult, type PlanChangeKind, type PlanChangeTiming, type PlanChangeErrorCode, type ProrationPolicy, } from "./subscription.js";
|
|
8
8
|
export { derivePlanViews, derivePlanView, renderPlansMarkdown, renderRateCardMarkdown, defineCompare, deriveCompareTable, compareRowLabels, type PlanView, type PlanPriceView, type SeatRowView, type CtaView, type MoneyView, type DerivePlanViewsOptions, type MarkdownOptions, type CompareConfig, type CompareSection, type CompareGroup, type CompareRow, type CompareValue, type CompareSource, type CompareCell, type CompareTableView, type CompareSectionView, type CompareGroupView, type CompareRowView, type DeriveCompareOptions, } from "./pricing.js";
|
|
9
9
|
export { resolveAllowance, fundingFor, topUpTargetOf, describeDenial, currentCycle, type AllowanceState, type AllowanceInput, type FundingDecision, type DenialReason, type LimitState, } from "./allowance.js";
|
|
10
|
-
export { usageSummary, memberUsage, resolveSeat, type UsageSummary, type UsageSummaryInput, type UsageWindow, type UsageSeat, type MemberUsage, } from "./usage.js";
|
|
10
|
+
export { usageSummary, memberUsage, resolveSeat, callerWithSeat, type UsageSummary, type UsageSummaryInput, type UsageWindow, type UsageSeat, type MemberUsage, } from "./usage.js";
|
|
11
11
|
export { stripeBalanceUsageLedger, stripeMeterUsageLedger, stripeUsageLedger, defaultUsageLedger, warnLedgerGaps, ensureMeters, invalidateMeters, USAGE_METER_EVENT, type UsageLedger, type UsageEvent, type UsageQuery, type FundingSource, } from "./usage-ledger.js";
|
|
12
12
|
export { cachedUsageLedger, type UsageCacheOptions } from "./usage-cache.js";
|
|
13
13
|
export { onUsageFault, resetUsageFaults, type UsageFault, type UsageFaultHandler, type UsageFaultOperation, type UsageFaultOutcome, } from "./usage-faults.js";
|
|
14
14
|
export { stripeScopeUsageLedger, invalidateUsageScopes, scopeOf, scopesFor, SCOPE_METER_EVENT, USAGE_SCOPE_KIND, USAGE_SCOPE_KEY, type ScopeLedgerOptions, } from "./usage-scopes.js";
|
|
15
15
|
export { meterUsage, createMeter, createApiMeterGuard, type MeterCaller, type MeterInput, type MeterResult, type MeterConfig, type MeterCallOpts, type Meter, type ApiMeterGuard, } from "./metering.js";
|
|
16
16
|
export { requestTopUp, listTopUpRequests, approveTopUp, denyTopUp, grantTopUp, grantExtraAllowance, extraAllowance, trimRequestsToBudget, METADATA_VALUE_LIMIT, type TopUpRequest, pendingTopUpFor, requestExtraAllowance, DEFAULT_REQUEST_PERCENT, } from "./topup.js";
|
|
17
|
-
export { assignSeatType, listSeatAssignments, getSeatType, } from "./seats.js";
|
|
17
|
+
export { assignSeatType, listSeatAssignments, getSeatType, seatAssignable, clearMemberRecords, } from "./seats.js";
|
|
18
|
+
export { listPlanRequests, pendingPlanRequest, requestPlanChange, requestSeatChange, resolvePlanRequest, } from "./plan-request.js";
|
|
18
19
|
export { sendMagicAuth, verifyMagicAuth } from "./magic-auth.js";
|
|
19
20
|
export { createWorkOSInvitations, type InvitationService, type Invitation, type InvitationHooks, type InvitationEmailContext, type WorkOSInvitationsOptions, } from "./invitations.js";
|
|
20
21
|
export { pollStripeEvents, pollWorkOSEvents, type PollResult } from "./events.js";
|
|
@@ -33,7 +34,7 @@ export { createToolListHandler, createToolDispatchHandler, type Dispatcher } fro
|
|
|
33
34
|
export { createMcpTransport, type McpTransportOptions } from "./routes/mcp.js";
|
|
34
35
|
export { createStripeWebhookHandler, type WebhookOptions } from "./routes/webhook.js";
|
|
35
36
|
export { ensureWebhookEndpoint, BILLING_WEBHOOK_EVENTS, type EnsureWebhookResult, } from "./webhook-setup.js";
|
|
36
|
-
export { resolveTax, ensureStripeTaxRate, invalidateTaxRates, invalidateVatNumbers, taxRatesFor, updateCheckoutSessionTaxRates, taxFor, taxModeOf, originFor, invalidateTaxOrigin, type TaxMode, type TaxDecision, type TaxRegistration, type TaxNotes, noteFor, } from "./tax.js";
|
|
37
|
+
export { resolveTax, ensureStripeTaxRate, invalidateTaxRates, invalidateVatNumbers, taxRatesFor, updateCheckoutSessionTaxRates, taxFor, taxModeOf, originFor, invalidateTaxOrigin, type TaxMode, type TaxDecision, type TaxRegistration, type TaxNotes, noteFor, ApproximateTaxError, } from "./tax.js";
|
|
37
38
|
export { ensureTaxSetup, type TaxRegistrationSpec, type TaxSetupResult, } from "./tax-setup.js";
|
|
38
39
|
export { checkBillingSetup, checkWorkOSSetup, checkPlansConfig, formatDoctorResult, runBillingDoctor, type RunDoctorOptions, type Check, type CheckLevel, type DoctorResult, } from "./doctor.js";
|
|
39
40
|
export { sellerRegime, type SellerRegime } from "./tax-regime.js";
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AASA,cAAc,oBAAoB,CAAC;AAGnC,OAAO,EACL,WAAW,EACX,WAAW,EACX,kBAAkB,EAClB,gBAAgB,EAChB,gBAAgB,EAChB,aAAa,EACb,YAAY,EACZ,KAAK,SAAS,EACd,cAAc,EACd,aAAa,GACd,MAAM,WAAW,CAAC;AAMnB,OAAO,EAAE,SAAS,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAI7D,OAAO,EACL,qBAAqB,EACrB,uBAAuB,EACvB,KAAK,eAAe,EACpB,KAAK,sBAAsB,GAC5B,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EACL,SAAS,EACT,gBAAgB,EAChB,oBAAoB,EACpB,oBAAoB,EACpB,kBAAkB,EAClB,gBAAgB,EAChB,aAAa,EACb,YAAY,EACZ,UAAU,EACV,2BAA2B,EAC3B,mBAAmB,EACnB,sBAAsB,EACtB,KAAK,WAAW,EAChB,0BAA0B,EAC1B,qBAAqB,EACrB,qBAAqB,EACrB,gBAAgB,EAChB,gBAAgB,EAChB,eAAe,EACf,KAAK,aAAa,EAClB,aAAa,EACb,aAAa,EACb,KAAK,SAAS,EACd,KAAK,oBAAoB,EACzB,YAAY,EACZ,UAAU,EACV,aAAa,EACb,eAAe,EACf,aAAa,EACb,gBAAgB,EAChB,sBAAsB,EACtB,wBAAwB,EACxB,KAAK,YAAY,EACjB,KAAK,WAAW,GACjB,MAAM,cAAc,CAAC;AAGtB,OAAO,EAGL,WAAW,EACX,iBAAiB,EACjB,oBAAoB,EACpB,oBAAoB,EACpB,WAAW,EACX,cAAc,EACd,kBAAkB,EAClB,SAAS,EACT,aAAa,EACb,QAAQ,EACR,eAAe,EACf,qBAAqB,EACrB,YAAY,EACZ,KAAK,YAAY,EACjB,KAAK,UAAU,EACf,KAAK,oBAAoB,EACzB,KAAK,0BAA0B,EAE/B,KAAK,UAAU,IAAI,cAAc,GAClC,MAAM,YAAY,CAAC;AAKpB,OAAO,EACL,UAAU,EACV,UAAU,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -8,7 +8,10 @@
|
|
|
8
8
|
// nothing that was not already intended public.
|
|
9
9
|
export * from "./entries/plans.js";
|
|
10
10
|
// Auth engine
|
|
11
|
-
export { authContext, runWithAuth, runWithResolvedOrg, runWithPrincipal, currentPrincipal, enforceAccess, enforceAdmin, enforceCredits, enforceMember,
|
|
11
|
+
export { authContext, runWithAuth, runWithResolvedOrg, runWithPrincipal, currentPrincipal, enforceAccess, enforceAdmin, enforceCredits, enforceMember,
|
|
12
|
+
// Is this org one of ours (an `internalDomains` match)? The metering gate asks it on
|
|
13
|
+
// every call; a consumer deciding whether to show a paywall could not ask it at all.
|
|
14
|
+
isInternalOrg, } from "./auth.js";
|
|
12
15
|
// The two SDK clients. Both are memoised singletons that read the env lazily,
|
|
13
16
|
// and they are the only constructors anywhere — including in consuming apps.
|
|
14
17
|
// A second `new WorkOS(...)` in a route handler is a second client (and, per
|
|
@@ -27,7 +30,7 @@ ensurePlans, resolvePlanPrices, invalidatePlanPrices, migrateSubscriptions, plan
|
|
|
27
30
|
// The subscription lifecycle: one entry point for up, down and off. Before this,
|
|
28
31
|
// every plan or seat change opened a fresh Checkout Session and created a SECOND
|
|
29
32
|
// subscription, so the customer was billed twice.
|
|
30
|
-
export { changePlan, cancelPlan,
|
|
33
|
+
export { changePlan, cancelPlan,
|
|
31
34
|
// The READ side of the same arithmetic, and it was missing from this barrel:
|
|
32
35
|
// `preview_plan_change` used it internally, so an agent could quote a change and
|
|
33
36
|
// a server action could not. That is the parity rule inverted — a confirm dialog
|
|
@@ -52,7 +55,10 @@ export { resolveAllowance, fundingFor, topUpTargetOf, describeDenial,
|
|
|
52
55
|
currentCycle, } from "./allowance.js";
|
|
53
56
|
// The read side of the same arithmetic: what a usage screen shows, per window and
|
|
54
57
|
// per member, from the numbers the meter itself enforces.
|
|
55
|
-
export { usageSummary, memberUsage, resolveSeat,
|
|
58
|
+
export { usageSummary, memberUsage, resolveSeat,
|
|
59
|
+
// Which seat a caller draws, resolved the way the METER resolves it — the answer an
|
|
60
|
+
// allowance read and a badge must agree on. Reachable only through `api.usage.*` before.
|
|
61
|
+
callerWithSeat, } from "./usage.js";
|
|
56
62
|
// Counting usage separately from moving money — the seam an included window needs.
|
|
57
63
|
export { stripeBalanceUsageLedger, stripeMeterUsageLedger, stripeUsageLedger, defaultUsageLedger, warnLedgerGaps, ensureMeters, invalidateMeters, USAGE_METER_EVENT, } from "./usage-ledger.js";
|
|
58
64
|
// The per-caller leg, and the reason this library ships no store at all any more:
|
|
@@ -81,7 +87,19 @@ export { meterUsage, createMeter, createApiMeterGuard, } from "./metering.js";
|
|
|
81
87
|
// a metadata value actually holds. See the note at the top of topup.ts.
|
|
82
88
|
export { requestTopUp, listTopUpRequests, approveTopUp, denyTopUp, grantTopUp, grantExtraAllowance, extraAllowance, trimRequestsToBudget, METADATA_VALUE_LIMIT, pendingTopUpFor, requestExtraAllowance, DEFAULT_REQUEST_PERCENT, } from "./topup.js";
|
|
83
89
|
// Seat-type assignments (per-member seat, stored in org metadata)
|
|
84
|
-
export { assignSeatType, listSeatAssignments, getSeatType,
|
|
90
|
+
export { assignSeatType, listSeatAssignments, getSeatType,
|
|
91
|
+
// The ceiling: is this seat purchased, and is the type at its own max. It gates
|
|
92
|
+
// `assign_seat_type` and `api.seats.assign`, and until now a consumer could not ask the
|
|
93
|
+
// question before offering the control — so a picker offered seats the write refused.
|
|
94
|
+
seatAssignable,
|
|
95
|
+
// Everything this member holds in one org, cleared when they leave it.
|
|
96
|
+
clearMemberRecords, } from "./seats.js";
|
|
97
|
+
// The queued ask for a bigger seat or a higher plan. The RUNGS (`nextUsageAsk`,
|
|
98
|
+
// `nextSeatUp`, `isSatisfied`, …) arrive from the pure `/plans` leaf; these five need the
|
|
99
|
+
// adapter because they read and write the queue. The whole module was reachable only as a
|
|
100
|
+
// method on `createBoundApi(...)` — so a consumer holding an adapter could not list, raise
|
|
101
|
+
// or resolve a request without going through the bound API it may not have built.
|
|
102
|
+
export { listPlanRequests, pendingPlanRequest, requestPlanChange, requestSeatChange, resolvePlanRequest, } from "./plan-request.js";
|
|
85
103
|
// WorkOS magic-auth
|
|
86
104
|
export { sendMagicAuth, verifyMagicAuth } from "./magic-auth.js";
|
|
87
105
|
// WorkOS organization invitations (shared, hook-configurable)
|
|
@@ -130,7 +148,11 @@ taxFor, taxModeOf,
|
|
|
130
148
|
// else the Stripe account's own country. Nothing else may read `tax.origin` — it
|
|
131
149
|
// decides domestic vs cross-border, which is the whole question a VAT rate turns
|
|
132
150
|
// on, so a second copy of it is a second answer.
|
|
133
|
-
originFor, invalidateTaxOrigin, noteFor,
|
|
151
|
+
originFor, invalidateTaxOrigin, noteFor,
|
|
152
|
+
// Thrown when a charge would carry a rate the library knows to be wrong. A
|
|
153
|
+
// consumer has to be able to CATCH it — an error class reachable from no entry
|
|
154
|
+
// point can only be caught by matching its message, which is not a contract.
|
|
155
|
+
ApproximateTaxError, } from "./tax.js";
|
|
134
156
|
// Stripe Tax configuration as code (origin address, defaults, registrations).
|
|
135
157
|
export { ensureTaxSetup, } from "./tax-setup.js";
|
|
136
158
|
// Preflight for the misconfigurations that fail silently (zero tax, unspecified
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,mEAAmE;AAEnE,+EAA+E;AAC/E,kFAAkF;AAClF,mFAAmF;AACnF,mFAAmF;AACnF,6EAA6E;AAC7E,iFAAiF;AACjF,gDAAgD;AAChD,cAAc,oBAAoB,CAAC;AAEnC,cAAc;AACd,OAAO,EACL,WAAW,EACX,WAAW,EACX,kBAAkB,EAClB,gBAAgB,EAChB,gBAAgB,EAChB,aAAa,EACb,YAAY,EAEZ,cAAc,EACd,aAAa,GACd,MAAM,WAAW,CAAC;AAEnB,8EAA8E;AAC9E,6EAA6E;AAC7E,6EAA6E;AAC7E,gFAAgF;AAChF,OAAO,EAAE,SAAS,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAE7D,6EAA6E;AAC7E,6EAA6E;AAC7E,OAAO,EACL,qBAAqB,EACrB,uBAAuB,GAGxB,MAAM,iBAAiB,CAAC;AAEzB,+BAA+B;AAC/B,OAAO,EACL,SAAS,EACT,gBAAgB,EAChB,oBAAoB,EACpB,oBAAoB,EACpB,kBAAkB,EAClB,gBAAgB,EAChB,aAAa,EACb,YAAY,EACZ,UAAU,EACV,2BAA2B,EAC3B,mBAAmB,EACnB,sBAAsB,EAEtB,0BAA0B,EAC1B,qBAAqB,EACrB,qBAAqB,EACrB,gBAAgB,EAChB,gBAAgB,EAChB,eAAe,EAEf,aAAa,EACb,aAAa,EAGb,YAAY,EACZ,UAAU,EACV,aAAa,EACb,eAAe,EACf,aAAa,EACb,gBAAgB,EAChB,sBAAsB,EACtB,wBAAwB,GAGzB,MAAM,cAAc,CAAC;AAEtB,wEAAwE;AACxE,OAAO;AACL,gFAAgF;AAChF,4EAA4E;AAC5E,WAAW,EACX,iBAAiB,EACjB,oBAAoB,EACpB,oBAAoB,EACpB,WAAW,EACX,cAAc,EACd,kBAAkB,EAClB,SAAS,EACT,aAAa,EACb,QAAQ,EACR,eAAe,EACf,qBAAqB,EACrB,YAAY,GAOb,MAAM,YAAY,CAAC;AAEpB,iFAAiF;AACjF,iFAAiF;AACjF,kDAAkD;AAClD,OAAO,EACL,UAAU,EACV,UAAU
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/ladder.d.ts
ADDED
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
import { type PlanCatalog, type PlanModel } from "./plan-model.js";
|
|
2
|
+
/**
|
|
3
|
+
* The seat types a member can BE on, cheapest first.
|
|
4
|
+
*
|
|
5
|
+
* `shared` types are excluded: they are the pool an API caller or a guest draws from, not a
|
|
6
|
+
* rung a person climbs, and including them made "the next seat up" point at something no
|
|
7
|
+
* human can be assigned.
|
|
8
|
+
*
|
|
9
|
+
* This ordering — non-shared, by monthly price — is the definition of "better seat" used by
|
|
10
|
+
* every function below. It is exported because a UI that renders the ladder has to sort it
|
|
11
|
+
* the same way, and the only alternative to publishing the rule is each caller guessing it.
|
|
12
|
+
*/
|
|
13
|
+
export declare function seatLadder(model: PlanModel): PlanModel["seatTypes"];
|
|
14
|
+
/**
|
|
15
|
+
* The seat a member holds when nobody has assigned them one: the cheapest non-shared type.
|
|
16
|
+
*
|
|
17
|
+
* An UNASSIGNED member is not on "no seat" — they draw the plan's entry-level pack, which is
|
|
18
|
+
* what the meter measures them against and what their badge says. Treating absent as zero
|
|
19
|
+
* made the ladder offer a Standard member the Standard seat they were already effectively on,
|
|
20
|
+
* which is how this was caught: the button read "Assegna Posto Standard".
|
|
21
|
+
*/
|
|
22
|
+
export declare function defaultSeatOf(model: PlanModel): string | null;
|
|
23
|
+
/** What a seat costs per month — the ordering "a better seat" means. An absent assignment
|
|
24
|
+
* resolves to the default seat, not to nothing. */
|
|
25
|
+
export declare function seatRank(model: PlanModel, seatType: string | null): number;
|
|
26
|
+
/** The next seat type up, or null when they are already on the best one. */
|
|
27
|
+
export declare function nextSeatUp(model: PlanModel, seatType: string | null): string | null;
|
|
28
|
+
/**
|
|
29
|
+
* Is this the best seat the plan sells?
|
|
30
|
+
*
|
|
31
|
+
* `nextSeatUp(...) === null` already answered it, but only to a reader who knows that is what
|
|
32
|
+
* null means there. A screen deciding whether to offer an upgrade, and an agent asking the
|
|
33
|
+
* same question over the API, should not both have to know.
|
|
34
|
+
*/
|
|
35
|
+
export declare function isTopSeat(model: PlanModel, seatType: string | null): boolean;
|
|
36
|
+
/**
|
|
37
|
+
* Does THIS plan sell that seat type?
|
|
38
|
+
*
|
|
39
|
+
* Against the org's own model, which is the check that was missing: the `assign_seat_type`
|
|
40
|
+
* tool validated against the union of seat keys across every plan in the catalogue, so a
|
|
41
|
+
* Premium key was "valid" for a workspace on a plan that does not sell it, and the write
|
|
42
|
+
* went through to a seat the meter then could not price.
|
|
43
|
+
*
|
|
44
|
+
* `shared` types count — an API caller genuinely holds one — so this is a wider question
|
|
45
|
+
* than `seatLadder`.
|
|
46
|
+
*/
|
|
47
|
+
export declare function seatTypeExists(model: PlanModel, seatType: string): boolean;
|
|
48
|
+
/** What a plan costs a month at its default basket — the ordering "a better plan" means.
|
|
49
|
+
* A quote-only plan ranks above everything priced, because nothing self-serve exceeds it. */
|
|
50
|
+
export declare function planRank(model: PlanModel): number;
|
|
51
|
+
export interface PlanActions {
|
|
52
|
+
/** The next plan up, or null when already at the top. */
|
|
53
|
+
upgradeTo: string | null;
|
|
54
|
+
/** The next plan down, or null when already at the bottom. */
|
|
55
|
+
downgradeTo: string | null;
|
|
56
|
+
/** Whether there is a paid subscription to end. False on a free plan — there
|
|
57
|
+
* is nothing to cancel, so the action shouldn't be offered. */
|
|
58
|
+
canCancel: boolean;
|
|
59
|
+
/** The plan a cancellation lands on. */
|
|
60
|
+
cancelTo: string | null;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Which of upgrade / downgrade / cancel apply to an org on `currentPlan`.
|
|
64
|
+
*
|
|
65
|
+
* Pure, so a UI can hide what doesn't apply instead of offering an action that
|
|
66
|
+
* will be refused: no "upgrade" on the top plan, no "cancel" on a free one.
|
|
67
|
+
*/
|
|
68
|
+
export declare function planActions(plans: PlanCatalog, currentPlan: string | null): PlanActions;
|
|
69
|
+
export interface PlanRequest {
|
|
70
|
+
id: string;
|
|
71
|
+
/** WorkOS user id of whoever asked. */
|
|
72
|
+
memberId: string;
|
|
73
|
+
/**
|
|
74
|
+
* WHAT they are asking to move: the workspace's plan, or their own seat.
|
|
75
|
+
*
|
|
76
|
+
* They are different asks with different prices and different approvers' reasoning — a
|
|
77
|
+
* seat upgrade costs one seat's difference and affects one person, a plan change moves
|
|
78
|
+
* everybody — but they queue in the same place, because to an owner they are one list of
|
|
79
|
+
* people waiting.
|
|
80
|
+
*
|
|
81
|
+
* Absent means "plan": the field was added after the queue existed, and a stored record
|
|
82
|
+
* without it is a plan request.
|
|
83
|
+
*/
|
|
84
|
+
kind?: "plan" | "seat";
|
|
85
|
+
/** The target — a plan key, or a seat-type key when `kind` is "seat". */
|
|
86
|
+
plan: string;
|
|
87
|
+
status: "pending" | "done" | "denied";
|
|
88
|
+
createdAt: string;
|
|
89
|
+
/** Why they are asking, in their words. Optional, capped at 140 chars by the caller. */
|
|
90
|
+
note?: string;
|
|
91
|
+
}
|
|
92
|
+
/** Has the workspace already reached (or passed) what this request asked for? */
|
|
93
|
+
export declare function isSatisfied(request: PlanRequest, plans: PlanCatalog, currentPlan: string | null,
|
|
94
|
+
/** The asker's seat type now — needed only for a seat request. */
|
|
95
|
+
currentSeatType?: string | null): boolean;
|
|
96
|
+
/**
|
|
97
|
+
* WHICH ask to offer someone who is out of usage. One decision, in one place.
|
|
98
|
+
*
|
|
99
|
+
* The ladder climbs the cheapest, most targeted rung first, and each rung exists because the
|
|
100
|
+
* one below it cannot help:
|
|
101
|
+
*
|
|
102
|
+
* 1. a better SEAT — their pack is what their seat includes, so the way to have more of it
|
|
103
|
+
* is a bigger seat. A Standard member should be offered this, never a top-up: topping
|
|
104
|
+
* up buys them a few days and leaves them in the same place next week.
|
|
105
|
+
* 2. CREDITS, where money can actually lift the wall: a `covers: "included"` window paces
|
|
106
|
+
* only what the plan gives away, and a pack whose plan overflows to the wallet is the
|
|
107
|
+
* same statement. Paying works, permanently and without anybody's permission, so
|
|
108
|
+
* asking an owner for a free exception would be the worse of two available answers.
|
|
109
|
+
* 3. extra USAGE on the blocked window — the answer where money CANNOT help: a
|
|
110
|
+
* `covers: "all"` window is the product's own pace and no purchase touches it, so an
|
|
111
|
+
* exception somebody grants is the only door.
|
|
112
|
+
* 4. a PLAN change — for a plan with no per-member allowance at all. A pooled plan's
|
|
113
|
+
* windows belong to the workspace, so there is nothing personal to raise and
|
|
114
|
+
* `grant_top_up` refuses it outright.
|
|
115
|
+
*
|
|
116
|
+
* Rungs 2 and 3 were ONE rung, and it was wrong in whichever direction the deployment went.
|
|
117
|
+
* A plan whose card says pay-as-you-go sent a blocked member to ask an owner for something
|
|
118
|
+
* they could have bought in a click; a plan pacing the product offered credits that lift
|
|
119
|
+
* nothing, taking money for a wall that would still be there. Which of the two applies is
|
|
120
|
+
* not a preference — it is what `covers` says, so it is read rather than configured again.
|
|
121
|
+
*
|
|
122
|
+
* Returns null when nothing is blocked, which is when nothing should be offered — a control
|
|
123
|
+
* permanently on screen asks a question nobody at 40% can answer.
|
|
124
|
+
*/
|
|
125
|
+
export declare function nextUsageAsk(model: PlanModel | null, input: {
|
|
126
|
+
/** From `topUpTargetOf` — what, if anything, is refusing them, and whether paying lifts it. */
|
|
127
|
+
blocked: {
|
|
128
|
+
kind: "rate" | "pack";
|
|
129
|
+
covers?: "all" | "included";
|
|
130
|
+
} | null;
|
|
131
|
+
seatType?: string | null;
|
|
132
|
+
plans: PlanCatalog;
|
|
133
|
+
currentPlan?: string | null;
|
|
134
|
+
}): {
|
|
135
|
+
ask: "seat";
|
|
136
|
+
to: string;
|
|
137
|
+
} | {
|
|
138
|
+
ask: "credits";
|
|
139
|
+
} | {
|
|
140
|
+
ask: "usage";
|
|
141
|
+
} | {
|
|
142
|
+
ask: "plan";
|
|
143
|
+
to: string;
|
|
144
|
+
} | null;
|
|
145
|
+
//# sourceMappingURL=ladder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ladder.d.ts","sourceRoot":"","sources":["../src/ladder.ts"],"names":[],"mappings":"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"}
|
package/dist/ladder.js
ADDED
|
@@ -0,0 +1,196 @@
|
|
|
1
|
+
import { defaultBasket, exhaustedPolicy, normalizePlans, planModel, } from "./plan-model.js";
|
|
2
|
+
// The RUNGS: what "a better seat" and "a better plan" mean, and which one to offer a
|
|
3
|
+
// member who is blocked.
|
|
4
|
+
//
|
|
5
|
+
// ── Why this is its own module ──────────────────────────────────────────────
|
|
6
|
+
//
|
|
7
|
+
// All of it is arithmetic over the catalogue — a plain object in, a key out, no adapter,
|
|
8
|
+
// no Stripe, no WorkOS. It used to live half in `subscription.ts` (which imports Stripe to
|
|
9
|
+
// move a subscription) and half in `plan-request.ts` (which needs an adapter to queue an
|
|
10
|
+
// ask), so a pricing page, a seat picker or a config file could not reach a single rung
|
|
11
|
+
// without loading the engine. Neither module could put it on the `/plans` leaf, and the
|
|
12
|
+
// leaf is asserted pure — so the ordering rule got re-implemented in consumer UIs instead,
|
|
13
|
+
// once per screen, which is how a seat picker and the meter can disagree about which seat
|
|
14
|
+
// somebody is on.
|
|
15
|
+
//
|
|
16
|
+
// Both former homes re-export from here, so nothing internal moved.
|
|
17
|
+
// ── Seats ───────────────────────────────────────────────────────────────────
|
|
18
|
+
/**
|
|
19
|
+
* The seat types a member can BE on, cheapest first.
|
|
20
|
+
*
|
|
21
|
+
* `shared` types are excluded: they are the pool an API caller or a guest draws from, not a
|
|
22
|
+
* rung a person climbs, and including them made "the next seat up" point at something no
|
|
23
|
+
* human can be assigned.
|
|
24
|
+
*
|
|
25
|
+
* This ordering — non-shared, by monthly price — is the definition of "better seat" used by
|
|
26
|
+
* every function below. It is exported because a UI that renders the ladder has to sort it
|
|
27
|
+
* the same way, and the only alternative to publishing the rule is each caller guessing it.
|
|
28
|
+
*/
|
|
29
|
+
export function seatLadder(model) {
|
|
30
|
+
return [...model.seatTypes]
|
|
31
|
+
.filter((s) => !s.shared)
|
|
32
|
+
.sort((a, b) => a.price.monthly - b.price.monthly);
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* The seat a member holds when nobody has assigned them one: the cheapest non-shared type.
|
|
36
|
+
*
|
|
37
|
+
* An UNASSIGNED member is not on "no seat" — they draw the plan's entry-level pack, which is
|
|
38
|
+
* what the meter measures them against and what their badge says. Treating absent as zero
|
|
39
|
+
* made the ladder offer a Standard member the Standard seat they were already effectively on,
|
|
40
|
+
* which is how this was caught: the button read "Assegna Posto Standard".
|
|
41
|
+
*/
|
|
42
|
+
export function defaultSeatOf(model) {
|
|
43
|
+
return seatLadder(model)[0]?.key ?? null;
|
|
44
|
+
}
|
|
45
|
+
/** What a seat costs per month — the ordering "a better seat" means. An absent assignment
|
|
46
|
+
* resolves to the default seat, not to nothing. */
|
|
47
|
+
export function seatRank(model, seatType) {
|
|
48
|
+
const key = seatType ?? defaultSeatOf(model);
|
|
49
|
+
if (!key)
|
|
50
|
+
return 0;
|
|
51
|
+
return model.seatTypes.find((s) => s.key === key)?.price.monthly ?? 0;
|
|
52
|
+
}
|
|
53
|
+
/** The next seat type up, or null when they are already on the best one. */
|
|
54
|
+
export function nextSeatUp(model, seatType) {
|
|
55
|
+
const above = seatLadder(model).filter((s) => s.price.monthly > seatRank(model, seatType));
|
|
56
|
+
return above[0]?.key ?? null;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Is this the best seat the plan sells?
|
|
60
|
+
*
|
|
61
|
+
* `nextSeatUp(...) === null` already answered it, but only to a reader who knows that is what
|
|
62
|
+
* null means there. A screen deciding whether to offer an upgrade, and an agent asking the
|
|
63
|
+
* same question over the API, should not both have to know.
|
|
64
|
+
*/
|
|
65
|
+
export function isTopSeat(model, seatType) {
|
|
66
|
+
return seatLadder(model).length > 0 && nextSeatUp(model, seatType) === null;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Does THIS plan sell that seat type?
|
|
70
|
+
*
|
|
71
|
+
* Against the org's own model, which is the check that was missing: the `assign_seat_type`
|
|
72
|
+
* tool validated against the union of seat keys across every plan in the catalogue, so a
|
|
73
|
+
* Premium key was "valid" for a workspace on a plan that does not sell it, and the write
|
|
74
|
+
* went through to a seat the meter then could not price.
|
|
75
|
+
*
|
|
76
|
+
* `shared` types count — an API caller genuinely holds one — so this is a wider question
|
|
77
|
+
* than `seatLadder`.
|
|
78
|
+
*/
|
|
79
|
+
export function seatTypeExists(model, seatType) {
|
|
80
|
+
return model.seatTypes.some((s) => s.key === seatType);
|
|
81
|
+
}
|
|
82
|
+
// ── Plans ───────────────────────────────────────────────────────────────────
|
|
83
|
+
/** What a plan costs a month at its default basket — the ordering "a better plan" means.
|
|
84
|
+
* A quote-only plan ranks above everything priced, because nothing self-serve exceeds it. */
|
|
85
|
+
export function planRank(model) {
|
|
86
|
+
if (model.sale === "quote")
|
|
87
|
+
return Number.MAX_SAFE_INTEGER;
|
|
88
|
+
const basket = defaultBasket(model);
|
|
89
|
+
if (model.sells.kind === "flat")
|
|
90
|
+
return model.sells.price.monthly;
|
|
91
|
+
return model.seatTypes.reduce((sum, s) => sum + (basket[s.key] ?? 0) * s.price.monthly, 0);
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Which of upgrade / downgrade / cancel apply to an org on `currentPlan`.
|
|
95
|
+
*
|
|
96
|
+
* Pure, so a UI can hide what doesn't apply instead of offering an action that
|
|
97
|
+
* will be refused: no "upgrade" on the top plan, no "cancel" on a free one.
|
|
98
|
+
*/
|
|
99
|
+
export function planActions(plans, currentPlan) {
|
|
100
|
+
const models = normalizePlans(plans)
|
|
101
|
+
.filter((m) => m.sale !== "legacy" && !m.display?.hidden)
|
|
102
|
+
.sort((a, b) => planRank(a) - planRank(b));
|
|
103
|
+
const free = models.find((m) => m.sale === "free") ?? null;
|
|
104
|
+
const current = currentPlan ? models.find((m) => m.key === currentPlan) : null;
|
|
105
|
+
// No recorded plan behaves as the free tier: nothing is being billed.
|
|
106
|
+
const rank = current ? planRank(current) : (free ? planRank(free) : 0);
|
|
107
|
+
const above = models.filter((m) => planRank(m) > rank);
|
|
108
|
+
const below = models.filter((m) => planRank(m) < rank);
|
|
109
|
+
const isPaid = current ? current.sells.kind !== "nothing" && current.sale !== "free" : false;
|
|
110
|
+
return {
|
|
111
|
+
upgradeTo: above[0]?.key ?? null,
|
|
112
|
+
downgradeTo: below[below.length - 1]?.key ?? null,
|
|
113
|
+
canCancel: isPaid,
|
|
114
|
+
cancelTo: free?.key ?? null,
|
|
115
|
+
};
|
|
116
|
+
}
|
|
117
|
+
/** Has the workspace already reached (or passed) what this request asked for? */
|
|
118
|
+
export function isSatisfied(request, plans, currentPlan,
|
|
119
|
+
/** The asker's seat type now — needed only for a seat request. */
|
|
120
|
+
currentSeatType) {
|
|
121
|
+
if (request.kind === "seat") {
|
|
122
|
+
const model = currentPlan ? planModel(plans, currentPlan) : null;
|
|
123
|
+
if (!model)
|
|
124
|
+
return false;
|
|
125
|
+
return seatRank(model, currentSeatType ?? null) >= seatRank(model, request.plan);
|
|
126
|
+
}
|
|
127
|
+
const want = planModel(plans, request.plan);
|
|
128
|
+
const have = currentPlan ? planModel(plans, currentPlan) : null;
|
|
129
|
+
if (!want || !have)
|
|
130
|
+
return false;
|
|
131
|
+
return planRank(have) >= planRank(want);
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* WHICH ask to offer someone who is out of usage. One decision, in one place.
|
|
135
|
+
*
|
|
136
|
+
* The ladder climbs the cheapest, most targeted rung first, and each rung exists because the
|
|
137
|
+
* one below it cannot help:
|
|
138
|
+
*
|
|
139
|
+
* 1. a better SEAT — their pack is what their seat includes, so the way to have more of it
|
|
140
|
+
* is a bigger seat. A Standard member should be offered this, never a top-up: topping
|
|
141
|
+
* up buys them a few days and leaves them in the same place next week.
|
|
142
|
+
* 2. CREDITS, where money can actually lift the wall: a `covers: "included"` window paces
|
|
143
|
+
* only what the plan gives away, and a pack whose plan overflows to the wallet is the
|
|
144
|
+
* same statement. Paying works, permanently and without anybody's permission, so
|
|
145
|
+
* asking an owner for a free exception would be the worse of two available answers.
|
|
146
|
+
* 3. extra USAGE on the blocked window — the answer where money CANNOT help: a
|
|
147
|
+
* `covers: "all"` window is the product's own pace and no purchase touches it, so an
|
|
148
|
+
* exception somebody grants is the only door.
|
|
149
|
+
* 4. a PLAN change — for a plan with no per-member allowance at all. A pooled plan's
|
|
150
|
+
* windows belong to the workspace, so there is nothing personal to raise and
|
|
151
|
+
* `grant_top_up` refuses it outright.
|
|
152
|
+
*
|
|
153
|
+
* Rungs 2 and 3 were ONE rung, and it was wrong in whichever direction the deployment went.
|
|
154
|
+
* A plan whose card says pay-as-you-go sent a blocked member to ask an owner for something
|
|
155
|
+
* they could have bought in a click; a plan pacing the product offered credits that lift
|
|
156
|
+
* nothing, taking money for a wall that would still be there. Which of the two applies is
|
|
157
|
+
* not a preference — it is what `covers` says, so it is read rather than configured again.
|
|
158
|
+
*
|
|
159
|
+
* Returns null when nothing is blocked, which is when nothing should be offered — a control
|
|
160
|
+
* permanently on screen asks a question nobody at 40% can answer.
|
|
161
|
+
*/
|
|
162
|
+
export function nextUsageAsk(model, input) {
|
|
163
|
+
if (!input.blocked)
|
|
164
|
+
return null;
|
|
165
|
+
// Can the customer pay their own way past this? Two conditions, and both are necessary:
|
|
166
|
+
// the plan has to SELL credits, and the wall has to be one credits reach. A pack is
|
|
167
|
+
// reachable when the plan overflows to the wallet; a rate window only when it covers the
|
|
168
|
+
// included allowance alone.
|
|
169
|
+
const sellsCredits = Boolean(model?.replenish?.purchase || model?.replenish?.autoReload);
|
|
170
|
+
const payable = sellsCredits &&
|
|
171
|
+
(input.blocked.kind === "pack"
|
|
172
|
+
// Through `exhaustedPolicy`, not `cap.onExhausted`: an agent and a shared seat always
|
|
173
|
+
// overflow to the wallet whatever the cap declares, and a `cap: wallet` plan has no
|
|
174
|
+
// `onExhausted` field at all.
|
|
175
|
+
? exhaustedPolicy(model, { seatType: input.seatType ?? undefined }) === "wallet"
|
|
176
|
+
: input.blocked.covers === "included");
|
|
177
|
+
if (model?.sells.kind === "seats") {
|
|
178
|
+
const better = nextSeatUp(model, input.seatType ?? null);
|
|
179
|
+
// The seat still comes first, even when credits would work: it raises the pack AND the
|
|
180
|
+
// pace every cycle, where credits are this week's answer bought again next week.
|
|
181
|
+
if (better)
|
|
182
|
+
return { ask: "seat", to: better };
|
|
183
|
+
// On the best seat: buy more if that is possible, otherwise ask for an exception.
|
|
184
|
+
return payable ? { ask: "credits" } : { ask: "usage" };
|
|
185
|
+
}
|
|
186
|
+
// A pooled plan has nothing personal to raise — but if it sells credits and the pool
|
|
187
|
+
// overflows to the wallet, paying is still a real answer and a better one than asking
|
|
188
|
+
// the workspace to change plan.
|
|
189
|
+
if (payable)
|
|
190
|
+
return { ask: "credits" };
|
|
191
|
+
// No seats, so nothing per-member to raise. The only route is the workspace buying more
|
|
192
|
+
// product — and if there is nothing above them, there is nothing to offer at all.
|
|
193
|
+
const up = planActions(input.plans, input.currentPlan ?? null).upgradeTo;
|
|
194
|
+
return up ? { ask: "plan", to: up } : null;
|
|
195
|
+
}
|
|
196
|
+
//# sourceMappingURL=ladder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ladder.js","sourceRoot":"","sources":["../src/ladder.ts"],"names":[],"mappings":"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"}
|
package/dist/plan-request.d.ts
CHANGED
|
@@ -1,26 +1,7 @@
|
|
|
1
|
-
import { type
|
|
1
|
+
import { type PlanRequest } from "./ladder.js";
|
|
2
|
+
import { type PlanCatalog } from "./plan-model.js";
|
|
2
3
|
import type { BillingAdapter } from "./types.js";
|
|
3
|
-
export
|
|
4
|
-
id: string;
|
|
5
|
-
/** WorkOS user id of whoever asked. */
|
|
6
|
-
memberId: string;
|
|
7
|
-
/**
|
|
8
|
-
* WHAT they are asking to move: the workspace's plan, or their own seat.
|
|
9
|
-
*
|
|
10
|
-
* They are different asks with different prices and different approvers' reasoning — a
|
|
11
|
-
* seat upgrade costs one seat's difference and affects one person, a plan change moves
|
|
12
|
-
* everybody — but they queue in the same place, because to an owner they are one list of
|
|
13
|
-
* "people who need more". Absent means `plan`, so records written before seats existed
|
|
14
|
-
* still read.
|
|
15
|
-
*/
|
|
16
|
-
kind?: "plan" | "seat";
|
|
17
|
-
/** The plan, or the seat type, they are asking to move to. */
|
|
18
|
-
plan: string;
|
|
19
|
-
status: "pending" | "done" | "denied";
|
|
20
|
-
createdAt: string;
|
|
21
|
-
/** Free text from the asker, trimmed hard — this shares one metadata value. */
|
|
22
|
-
note?: string;
|
|
23
|
-
}
|
|
4
|
+
export { defaultSeatOf, isSatisfied, isTopSeat, nextSeatUp, nextUsageAsk, seatLadder, seatRank, seatTypeExists, type PlanRequest, } from "./ladder.js";
|
|
24
5
|
/** Every request, newest first. */
|
|
25
6
|
export declare function listPlanRequests(adapter: BillingAdapter, orgId: string): Promise<PlanRequest[]>;
|
|
26
7
|
/**
|
|
@@ -34,24 +15,6 @@ export declare function pendingPlanRequest(adapter: BillingAdapter, orgId: strin
|
|
|
34
15
|
currentPlan?: string | null;
|
|
35
16
|
currentSeatType?: string | null;
|
|
36
17
|
}): Promise<PlanRequest | null>;
|
|
37
|
-
/** Has the workspace already reached (or passed) what this request asked for? */
|
|
38
|
-
export declare function isSatisfied(request: PlanRequest, plans: PlanCatalog, currentPlan: string | null,
|
|
39
|
-
/** The asker's seat type now — needed only for a seat request. */
|
|
40
|
-
currentSeatType?: string | null): boolean;
|
|
41
|
-
/**
|
|
42
|
-
* The seat a member holds when nobody has assigned them one: the cheapest non-shared type.
|
|
43
|
-
*
|
|
44
|
-
* An UNASSIGNED member is not on "no seat" — they draw the plan's entry-level pack, which is
|
|
45
|
-
* what the meter measures them against and what their badge says. Treating absent as zero
|
|
46
|
-
* made the ladder offer a Standard member the Standard seat they were already effectively on,
|
|
47
|
-
* which is how this was caught: the button read "Assegna Posto Standard".
|
|
48
|
-
*/
|
|
49
|
-
export declare function defaultSeatOf(model: PlanModel): string | null;
|
|
50
|
-
/** What a seat costs per month — the ordering "a better seat" means. An absent assignment
|
|
51
|
-
* resolves to the default seat, not to nothing. */
|
|
52
|
-
export declare function seatRank(model: PlanModel, seatType: string | null): number;
|
|
53
|
-
/** The next seat type up, or null when they are already on the best one. */
|
|
54
|
-
export declare function nextSeatUp(model: PlanModel, seatType: string | null): string | null;
|
|
55
18
|
/**
|
|
56
19
|
* Ask to move up a SEAT — the answer when a better seat exists.
|
|
57
20
|
*
|
|
@@ -109,53 +72,4 @@ export declare function requestPlanChange(adapter: BillingAdapter, orgId: string
|
|
|
109
72
|
* reading of "approve".
|
|
110
73
|
*/
|
|
111
74
|
export declare function resolvePlanRequest(adapter: BillingAdapter, orgId: string, requestId: string, status: "done" | "denied"): Promise<PlanRequest | null>;
|
|
112
|
-
/**
|
|
113
|
-
* WHICH ask to offer someone who is out of usage. One decision, in one place.
|
|
114
|
-
*
|
|
115
|
-
* The ladder climbs the cheapest, most targeted rung first, and each rung exists because the
|
|
116
|
-
* one below it cannot help:
|
|
117
|
-
*
|
|
118
|
-
* 1. a better SEAT — their pack is what their seat includes, so the way to have more of it
|
|
119
|
-
* is a bigger seat. A Standard member should be offered this, never a top-up: topping
|
|
120
|
-
* up buys them a few days and leaves them in the same place next week.
|
|
121
|
-
* 2. CREDITS, where money can actually lift the wall: a `covers: "included"` window paces
|
|
122
|
-
* only what the plan gives away, and a pack whose plan overflows to the wallet is the
|
|
123
|
-
* same statement. Paying works, permanently and without anybody's permission, so
|
|
124
|
-
* asking an owner for a free exception would be the worse of two available answers.
|
|
125
|
-
* 3. extra USAGE on the blocked window — the answer where money CANNOT help: a
|
|
126
|
-
* `covers: "all"` window is the product's own pace and no purchase touches it, so an
|
|
127
|
-
* exception somebody grants is the only door.
|
|
128
|
-
* 4. a PLAN change — for a plan with no per-member allowance at all. A pooled plan's
|
|
129
|
-
* windows belong to the workspace, so there is nothing personal to raise and
|
|
130
|
-
* `grant_top_up` refuses it outright.
|
|
131
|
-
*
|
|
132
|
-
* Rungs 2 and 3 were ONE rung, and it was wrong in whichever direction the deployment went.
|
|
133
|
-
* A plan whose card says pay-as-you-go sent a blocked member to ask an owner for something
|
|
134
|
-
* they could have bought in a click; a plan pacing the product offered credits that lift
|
|
135
|
-
* nothing, taking money for a wall that would still be there. Which of the two applies is
|
|
136
|
-
* not a preference — it is what `covers` says, so it is read rather than configured again.
|
|
137
|
-
*
|
|
138
|
-
* Returns null when nothing is blocked, which is when nothing should be offered — a control
|
|
139
|
-
* permanently on screen asks a question nobody at 40% can answer.
|
|
140
|
-
*/
|
|
141
|
-
export declare function nextUsageAsk(model: PlanModel | null, input: {
|
|
142
|
-
/** From `topUpTargetOf` — what, if anything, is refusing them, and whether paying lifts it. */
|
|
143
|
-
blocked: {
|
|
144
|
-
kind: "rate" | "pack";
|
|
145
|
-
covers?: "all" | "included";
|
|
146
|
-
} | null;
|
|
147
|
-
seatType?: string | null;
|
|
148
|
-
plans: PlanCatalog;
|
|
149
|
-
currentPlan?: string | null;
|
|
150
|
-
}): {
|
|
151
|
-
ask: "seat";
|
|
152
|
-
to: string;
|
|
153
|
-
} | {
|
|
154
|
-
ask: "credits";
|
|
155
|
-
} | {
|
|
156
|
-
ask: "usage";
|
|
157
|
-
} | {
|
|
158
|
-
ask: "plan";
|
|
159
|
-
to: string;
|
|
160
|
-
} | null;
|
|
161
75
|
//# sourceMappingURL=plan-request.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plan-request.d.ts","sourceRoot":"","sources":["../src/plan-request.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"plan-request.d.ts","sourceRoot":"","sources":["../src/plan-request.ts"],"names":[],"mappings":"AAAA,OAAO,EAML,KAAK,WAAW,EACjB,MAAM,aAAa,CAAC;AACrB,OAAO,EAA6B,KAAK,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAKjD,OAAO,EACL,aAAa,EACb,WAAW,EACX,SAAS,EACT,UAAU,EACV,YAAY,EACZ,UAAU,EACV,QAAQ,EACR,cAAc,EACd,KAAK,WAAW,GACjB,MAAM,aAAa,CAAC;AAgFrB,mCAAmC;AACnC,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,CAErG;AAED;;;;;GAKG;AACH,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,cAAc,EACvB,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE;IAAE,KAAK,EAAE,WAAW,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,GACzF,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CAI7B;AAED;;;;;;;GAOG;AACH,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,cAAc,EACvB,KAAK,EAAE,MAAM,EACb,KAAK,EAAE;IACL,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,WAAW,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,oCAAoC;IACpC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,GAAG,CAAC,EAAE,MAAM,CAAC;CACd,GACA,OAAO,CAAC;IACT,EAAE,EAAE,OAAO,CAAC;IACZ,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB,MAAM,CAAC,EAAE,YAAY,GAAG,cAAc,GAAG,iBAAiB,GAAG,eAAe,GAAG,YAAY,CAAC;CAC7F,CAAC,CA4BD;AAED;;;;;;GAMG;AACH,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,cAAc,EACvB,KAAK,EAAE,MAAM,EACb,KAAK,EAAE;IACL,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,WAAW,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,oCAAoC;IACpC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,GAAG,CAAC,EAAE,MAAM,CAAC;CACd,GACA,OAAO,CAAC;IACT,EAAE,EAAE,OAAO,CAAC;IACZ,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB,MAAM,CAAC,EAAE,YAAY,GAAG,cAAc,GAAG,iBAAiB,GAAG,eAAe,GAAG,YAAY,CAAC;CAC7F,CAAC,CAsCD;AAED;;;;;;;GAOG;AACH,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,cAAc,EACvB,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,GAAG,QAAQ,GACxB,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CAW7B"}
|
package/dist/plan-request.js
CHANGED
|
@@ -1,5 +1,9 @@
|
|
|
1
|
-
import { planActions,
|
|
2
|
-
import {
|
|
1
|
+
import { isSatisfied, nextSeatUp, planActions, seatRank, } from "./ladder.js";
|
|
2
|
+
import { normalizePlans, planModel } from "./plan-model.js";
|
|
3
|
+
// The rungs themselves are pure arithmetic and live in `ladder.ts`, which a pricing page or
|
|
4
|
+
// a seat picker can import without this module's adapter. Re-exported here so every existing
|
|
5
|
+
// import path keeps working.
|
|
6
|
+
export { defaultSeatOf, isSatisfied, isTopSeat, nextSeatUp, nextUsageAsk, seatLadder, seatRank, seatTypeExists, } from "./ladder.js";
|
|
3
7
|
// "Can we move up a plan?" — the ask a member makes when extra allowance is not the answer.
|
|
4
8
|
//
|
|
5
9
|
// ── Why this is not a top-up ────────────────────────────────────────────────
|
|
@@ -91,52 +95,6 @@ export async function pendingPlanRequest(adapter, orgId, memberId, opts) {
|
|
|
91
95
|
return null;
|
|
92
96
|
return isSatisfied(open, opts.plans, opts.currentPlan ?? null, opts.currentSeatType ?? null) ? null : open;
|
|
93
97
|
}
|
|
94
|
-
/** Has the workspace already reached (or passed) what this request asked for? */
|
|
95
|
-
export function isSatisfied(request, plans, currentPlan,
|
|
96
|
-
/** The asker's seat type now — needed only for a seat request. */
|
|
97
|
-
currentSeatType) {
|
|
98
|
-
if (request.kind === "seat") {
|
|
99
|
-
const model = currentPlan ? planModel(plans, currentPlan) : null;
|
|
100
|
-
if (!model)
|
|
101
|
-
return false;
|
|
102
|
-
return seatRank(model, currentSeatType ?? null) >= seatRank(model, request.plan);
|
|
103
|
-
}
|
|
104
|
-
const want = planModel(plans, request.plan);
|
|
105
|
-
const have = currentPlan ? planModel(plans, currentPlan) : null;
|
|
106
|
-
if (!want || !have)
|
|
107
|
-
return false;
|
|
108
|
-
return planRank(have) >= planRank(want);
|
|
109
|
-
}
|
|
110
|
-
/**
|
|
111
|
-
* The seat a member holds when nobody has assigned them one: the cheapest non-shared type.
|
|
112
|
-
*
|
|
113
|
-
* An UNASSIGNED member is not on "no seat" — they draw the plan's entry-level pack, which is
|
|
114
|
-
* what the meter measures them against and what their badge says. Treating absent as zero
|
|
115
|
-
* made the ladder offer a Standard member the Standard seat they were already effectively on,
|
|
116
|
-
* which is how this was caught: the button read "Assegna Posto Standard".
|
|
117
|
-
*/
|
|
118
|
-
export function defaultSeatOf(model) {
|
|
119
|
-
const ladder = [...model.seatTypes]
|
|
120
|
-
.filter((s) => !s.shared)
|
|
121
|
-
.sort((a, b) => a.price.monthly - b.price.monthly);
|
|
122
|
-
return ladder[0]?.key ?? null;
|
|
123
|
-
}
|
|
124
|
-
/** What a seat costs per month — the ordering "a better seat" means. An absent assignment
|
|
125
|
-
* resolves to the default seat, not to nothing. */
|
|
126
|
-
export function seatRank(model, seatType) {
|
|
127
|
-
const key = seatType ?? defaultSeatOf(model);
|
|
128
|
-
if (!key)
|
|
129
|
-
return 0;
|
|
130
|
-
return model.seatTypes.find((s) => s.key === key)?.price.monthly ?? 0;
|
|
131
|
-
}
|
|
132
|
-
/** The next seat type up, or null when they are already on the best one. */
|
|
133
|
-
export function nextSeatUp(model, seatType) {
|
|
134
|
-
const ladder = [...model.seatTypes]
|
|
135
|
-
.filter((s) => !s.shared)
|
|
136
|
-
.sort((a, b) => a.price.monthly - b.price.monthly);
|
|
137
|
-
const above = ladder.filter((s) => s.price.monthly > seatRank(model, seatType));
|
|
138
|
-
return above[0]?.key ?? null;
|
|
139
|
-
}
|
|
140
98
|
/**
|
|
141
99
|
* Ask to move up a SEAT — the answer when a better seat exists.
|
|
142
100
|
*
|
|
@@ -238,67 +196,4 @@ export async function resolvePlanRequest(adapter, orgId, requestId, status) {
|
|
|
238
196
|
await write(adapter, orgId, list.map((r) => (r.id === requestId ? updated : r)));
|
|
239
197
|
return updated;
|
|
240
198
|
}
|
|
241
|
-
/**
|
|
242
|
-
* WHICH ask to offer someone who is out of usage. One decision, in one place.
|
|
243
|
-
*
|
|
244
|
-
* The ladder climbs the cheapest, most targeted rung first, and each rung exists because the
|
|
245
|
-
* one below it cannot help:
|
|
246
|
-
*
|
|
247
|
-
* 1. a better SEAT — their pack is what their seat includes, so the way to have more of it
|
|
248
|
-
* is a bigger seat. A Standard member should be offered this, never a top-up: topping
|
|
249
|
-
* up buys them a few days and leaves them in the same place next week.
|
|
250
|
-
* 2. CREDITS, where money can actually lift the wall: a `covers: "included"` window paces
|
|
251
|
-
* only what the plan gives away, and a pack whose plan overflows to the wallet is the
|
|
252
|
-
* same statement. Paying works, permanently and without anybody's permission, so
|
|
253
|
-
* asking an owner for a free exception would be the worse of two available answers.
|
|
254
|
-
* 3. extra USAGE on the blocked window — the answer where money CANNOT help: a
|
|
255
|
-
* `covers: "all"` window is the product's own pace and no purchase touches it, so an
|
|
256
|
-
* exception somebody grants is the only door.
|
|
257
|
-
* 4. a PLAN change — for a plan with no per-member allowance at all. A pooled plan's
|
|
258
|
-
* windows belong to the workspace, so there is nothing personal to raise and
|
|
259
|
-
* `grant_top_up` refuses it outright.
|
|
260
|
-
*
|
|
261
|
-
* Rungs 2 and 3 were ONE rung, and it was wrong in whichever direction the deployment went.
|
|
262
|
-
* A plan whose card says pay-as-you-go sent a blocked member to ask an owner for something
|
|
263
|
-
* they could have bought in a click; a plan pacing the product offered credits that lift
|
|
264
|
-
* nothing, taking money for a wall that would still be there. Which of the two applies is
|
|
265
|
-
* not a preference — it is what `covers` says, so it is read rather than configured again.
|
|
266
|
-
*
|
|
267
|
-
* Returns null when nothing is blocked, which is when nothing should be offered — a control
|
|
268
|
-
* permanently on screen asks a question nobody at 40% can answer.
|
|
269
|
-
*/
|
|
270
|
-
export function nextUsageAsk(model, input) {
|
|
271
|
-
if (!input.blocked)
|
|
272
|
-
return null;
|
|
273
|
-
// Can the customer pay their own way past this? Two conditions, and both are necessary:
|
|
274
|
-
// the plan has to SELL credits, and the wall has to be one credits reach. A pack is
|
|
275
|
-
// reachable when the plan overflows to the wallet; a rate window only when it covers the
|
|
276
|
-
// included allowance alone.
|
|
277
|
-
const sellsCredits = Boolean(model?.replenish?.purchase || model?.replenish?.autoReload);
|
|
278
|
-
const payable = sellsCredits &&
|
|
279
|
-
(input.blocked.kind === "pack"
|
|
280
|
-
// Through `exhaustedPolicy`, not `cap.onExhausted`: an agent and a shared seat always
|
|
281
|
-
// overflow to the wallet whatever the cap declares, and a `cap: wallet` plan has no
|
|
282
|
-
// `onExhausted` field at all.
|
|
283
|
-
? exhaustedPolicy(model, { seatType: input.seatType ?? undefined }) === "wallet"
|
|
284
|
-
: input.blocked.covers === "included");
|
|
285
|
-
if (model?.sells.kind === "seats") {
|
|
286
|
-
const better = nextSeatUp(model, input.seatType ?? null);
|
|
287
|
-
// The seat still comes first, even when credits would work: it raises the pack AND the
|
|
288
|
-
// pace every cycle, where credits are this week's answer bought again next week.
|
|
289
|
-
if (better)
|
|
290
|
-
return { ask: "seat", to: better };
|
|
291
|
-
// On the best seat: buy more if that is possible, otherwise ask for an exception.
|
|
292
|
-
return payable ? { ask: "credits" } : { ask: "usage" };
|
|
293
|
-
}
|
|
294
|
-
// A pooled plan has nothing personal to raise — but if it sells credits and the pool
|
|
295
|
-
// overflows to the wallet, paying is still a real answer and a better one than asking
|
|
296
|
-
// the workspace to change plan.
|
|
297
|
-
if (payable)
|
|
298
|
-
return { ask: "credits" };
|
|
299
|
-
// No seats, so nothing per-member to raise. The only route is the workspace buying more
|
|
300
|
-
// product — and if there is nothing above them, there is nothing to offer at all.
|
|
301
|
-
const up = planActions(input.plans, input.currentPlan ?? null).upgradeTo;
|
|
302
|
-
return up ? { ask: "plan", to: up } : null;
|
|
303
|
-
}
|
|
304
199
|
//# sourceMappingURL=plan-request.js.map
|
package/dist/plan-request.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plan-request.js","sourceRoot":"","sources":["../src/plan-request.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"plan-request.js","sourceRoot":"","sources":["../src/plan-request.ts"],"names":[],"mappings":"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"}
|
package/dist/subscription.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type BillingInterval, type PlanCatalog, type
|
|
1
|
+
import { type BillingInterval, type PlanCatalog, type Quantities } from "./plans.js";
|
|
2
2
|
import type { BillingAdapter, ResolvedConfig } from "./types.js";
|
|
3
3
|
export type PlanChangeTiming = "auto" | "now" | "period_end";
|
|
4
4
|
export type ProrationPolicy = "next_invoice" | "invoice_now" | "none";
|
|
@@ -47,27 +47,7 @@ export declare class PlanChangeError extends Error {
|
|
|
47
47
|
readonly detail?: unknown | undefined;
|
|
48
48
|
constructor(code: PlanChangeErrorCode, message: string, detail?: unknown | undefined);
|
|
49
49
|
}
|
|
50
|
-
|
|
51
|
-
* by "higher" and "lower". A quoted plan sorts above every priced one. */
|
|
52
|
-
export declare function planRank(model: PlanModel): number;
|
|
53
|
-
export interface PlanActions {
|
|
54
|
-
/** The next plan up, or null when already at the top. */
|
|
55
|
-
upgradeTo: string | null;
|
|
56
|
-
/** The next plan down, or null when already at the bottom. */
|
|
57
|
-
downgradeTo: string | null;
|
|
58
|
-
/** Whether there is a paid subscription to end. False on a free plan — there
|
|
59
|
-
* is nothing to cancel, so the action shouldn't be offered. */
|
|
60
|
-
canCancel: boolean;
|
|
61
|
-
/** The plan a cancellation lands on. */
|
|
62
|
-
cancelTo: string | null;
|
|
63
|
-
}
|
|
64
|
-
/**
|
|
65
|
-
* Which of upgrade / downgrade / cancel apply to an org on `currentPlan`.
|
|
66
|
-
*
|
|
67
|
-
* Pure, so a UI can hide what doesn't apply instead of offering an action that
|
|
68
|
-
* will be refused: no "upgrade" on the top plan, no "cancel" on a free one.
|
|
69
|
-
*/
|
|
70
|
-
export declare function planActions(plans: PlanCatalog, currentPlan: string | null): PlanActions;
|
|
50
|
+
export { planActions, planRank, type PlanActions } from "./ladder.js";
|
|
71
51
|
export declare function changePlan(adapter: BillingAdapter, orgId: string, opts: {
|
|
72
52
|
plans: PlanCatalog;
|
|
73
53
|
to: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"subscription.d.ts","sourceRoot":"","sources":["../src/subscription.ts"],"names":[],"mappings":"AAGA,OAAO,EAQL,KAAK,eAAe,EACpB,KAAK,WAAW,
|
|
1
|
+
{"version":3,"file":"subscription.d.ts","sourceRoot":"","sources":["../src/subscription.ts"],"names":[],"mappings":"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"}
|
package/dist/subscription.js
CHANGED
|
@@ -34,40 +34,11 @@ function periodEndOf(sub) {
|
|
|
34
34
|
.filter((v) => !!v);
|
|
35
35
|
return ends.length ? new Date(Math.max(...ends) * 1000).toISOString() : null;
|
|
36
36
|
}
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
const basket = defaultBasket(model);
|
|
43
|
-
if (model.sells.kind === "flat")
|
|
44
|
-
return model.sells.price.monthly;
|
|
45
|
-
return model.seatTypes.reduce((sum, s) => sum + (basket[s.key] ?? 0) * s.price.monthly, 0);
|
|
46
|
-
}
|
|
47
|
-
/**
|
|
48
|
-
* Which of upgrade / downgrade / cancel apply to an org on `currentPlan`.
|
|
49
|
-
*
|
|
50
|
-
* Pure, so a UI can hide what doesn't apply instead of offering an action that
|
|
51
|
-
* will be refused: no "upgrade" on the top plan, no "cancel" on a free one.
|
|
52
|
-
*/
|
|
53
|
-
export function planActions(plans, currentPlan) {
|
|
54
|
-
const models = normalizePlans(plans)
|
|
55
|
-
.filter((m) => m.sale !== "legacy" && !m.display?.hidden)
|
|
56
|
-
.sort((a, b) => planRank(a) - planRank(b));
|
|
57
|
-
const free = models.find((m) => m.sale === "free") ?? null;
|
|
58
|
-
const current = currentPlan ? models.find((m) => m.key === currentPlan) : null;
|
|
59
|
-
// No recorded plan behaves as the free tier: nothing is being billed.
|
|
60
|
-
const rank = current ? planRank(current) : (free ? planRank(free) : 0);
|
|
61
|
-
const above = models.filter((m) => planRank(m) > rank);
|
|
62
|
-
const below = models.filter((m) => planRank(m) < rank);
|
|
63
|
-
const isPaid = current ? current.sells.kind !== "nothing" && current.sale !== "free" : false;
|
|
64
|
-
return {
|
|
65
|
-
upgradeTo: above[0]?.key ?? null,
|
|
66
|
-
downgradeTo: below[below.length - 1]?.key ?? null,
|
|
67
|
-
canCancel: isPaid,
|
|
68
|
-
cancelTo: free?.key ?? null,
|
|
69
|
-
};
|
|
70
|
-
}
|
|
37
|
+
// `planRank` / `planActions` are pure catalogue arithmetic and now live in `ladder.ts`
|
|
38
|
+
// beside the seat rungs, so a pricing page can order plans without importing Stripe.
|
|
39
|
+
// Re-exported here because this is where every consumer has always imported them from.
|
|
40
|
+
export { planActions, planRank } from "./ladder.js";
|
|
41
|
+
import { planRank } from "./ladder.js";
|
|
71
42
|
async function liveSubscriptions(customerId) {
|
|
72
43
|
const out = [];
|
|
73
44
|
for await (const sub of getStripe().subscriptions.list({
|
package/dist/subscription.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"subscription.js","sourceRoot":"","sources":["../src/subscription.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"subscription.js","sourceRoot":"","sources":["../src/subscription.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@arnaudjnn/billing-tools",
|
|
3
|
-
"version": "15.
|
|
3
|
+
"version": "15.24.0",
|
|
4
4
|
"description": "The get-paid engine for Stripe + WorkOS apps, for humans and AI agents. Drop-in API-key auth, credit + subscription billing, auth.md agent registration, and MPP machine payments, as MCP tools, a REST API, and a CLI. Framework-agnostic, storage-pluggable.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "Arnaud Jeannin",
|
|
@@ -98,7 +98,7 @@
|
|
|
98
98
|
"access": "public"
|
|
99
99
|
},
|
|
100
100
|
"scripts": {
|
|
101
|
-
"build": "tsc",
|
|
101
|
+
"build": "npm run clean && tsc",
|
|
102
102
|
"typecheck": "tsc --noEmit",
|
|
103
103
|
"clean": "rm -rf dist",
|
|
104
104
|
"prepublishOnly": "npm run build",
|