@adonis-agora/payments 0.17.0 → 0.18.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/CHANGELOG.md +12 -0
- package/dist/assets/spa/assets/index-CmP4DYhG.js +10 -0
- package/dist/assets/spa/assets/index-CmP4DYhG.js.map +1 -0
- package/dist/assets/spa/index.html +1 -1
- package/dist/src/billing/billing_store.d.ts +26 -2
- package/dist/src/billing/billing_store.d.ts.map +1 -1
- package/dist/src/billing/billing_store.js.map +1 -1
- package/dist/src/billing/lucid_billing_store.d.ts +3 -1
- package/dist/src/billing/lucid_billing_store.d.ts.map +1 -1
- package/dist/src/billing/lucid_billing_store.js +9 -1
- package/dist/src/billing/lucid_billing_store.js.map +1 -1
- package/dist/src/billing/managed_subscriptions.d.ts +12 -0
- package/dist/src/billing/managed_subscriptions.d.ts.map +1 -1
- package/dist/src/billing/managed_subscriptions.js +13 -3
- package/dist/src/billing/managed_subscriptions.js.map +1 -1
- package/dist/src/billing/mixins/with_subscription.d.ts +5 -1
- package/dist/src/billing/mixins/with_subscription.d.ts.map +1 -1
- package/dist/src/billing/mixins/with_subscription.js.map +1 -1
- package/dist/src/billing/mixins/with_usage_event.d.ts +8 -0
- package/dist/src/billing/mixins/with_usage_event.d.ts.map +1 -1
- package/dist/src/billing/mixins/with_usage_event.js +6 -0
- package/dist/src/billing/mixins/with_usage_event.js.map +1 -1
- package/dist/src/billing/schema.d.ts.map +1 -1
- package/dist/src/billing/schema.js +15 -0
- package/dist/src/billing/schema.js.map +1 -1
- package/dist/src/billing/usage.d.ts +121 -0
- package/dist/src/billing/usage.d.ts.map +1 -0
- package/dist/src/billing/usage.js +123 -0
- package/dist/src/billing/usage.js.map +1 -0
- package/dist/src/index.d.ts +4 -2
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +2 -1
- package/dist/src/index.js.map +1 -1
- package/dist/src/payments_manager.d.ts +19 -0
- package/dist/src/payments_manager.d.ts.map +1 -1
- package/dist/src/payments_manager.js +28 -0
- package/dist/src/payments_manager.js.map +1 -1
- package/dist/src/testing/in_memory_billing_store.d.ts +5 -1
- package/dist/src/testing/in_memory_billing_store.d.ts.map +1 -1
- package/dist/src/testing/in_memory_billing_store.js +6 -0
- package/dist/src/testing/in_memory_billing_store.js.map +1 -1
- package/package.json +5 -5
- package/dist/assets/spa/assets/index-C1ih3Kth.js +0 -10
- package/dist/assets/spa/assets/index-C1ih3Kth.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../src/billing/schema.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,+CAA+C;AAC/C,MAAM,MAAM,kBAAkB,GAAG,SAAS,OAAO,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAE9E;;;;;;;;;;GAUG;AACH,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CACxE;AAED;;;;;;GAMG;AACH,MAAM,WAAW,aAAc,SAAQ,gBAAgB;IACrD,OAAO,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC5B,UAAU,CAAC,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG;QAAE,OAAO,CAAC,EAAE;YAAE,IAAI,CAAC,EAAE,MAAM,CAAA;SAAE,CAAA;KAAE,CAAC;CAC7D;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,cAAc,YACzB,mBAAmB,EACnB,uBAAuB,EACvB,kBAAkB,EAClB,wBAAwB,EACxB,kBAAkB,EAClB,sBAAsB,EACtB,sBAAsB,CACd,CAAC;AAEX,oEAAoE;AACpE,wBAAgB,aAAa,CAAC,EAAE,EAAE,aAAa,GAAG,MAAM,GAAG,SAAS,CAQnE;AAsFD;;;;;;;;;;;;GAYG;AACH,wBAAsB,mBAAmB,CAAC,EAAE,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../src/billing/schema.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,+CAA+C;AAC/C,MAAM,MAAM,kBAAkB,GAAG,SAAS,OAAO,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAE9E;;;;;;;;;;GAUG;AACH,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CACxE;AAED;;;;;;GAMG;AACH,MAAM,WAAW,aAAc,SAAQ,gBAAgB;IACrD,OAAO,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC5B,UAAU,CAAC,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG;QAAE,OAAO,CAAC,EAAE;YAAE,IAAI,CAAC,EAAE,MAAM,CAAA;SAAE,CAAA;KAAE,CAAC;CAC7D;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,cAAc,YACzB,mBAAmB,EACnB,uBAAuB,EACvB,kBAAkB,EAClB,wBAAwB,EACxB,kBAAkB,EAClB,sBAAsB,EACtB,sBAAsB,CACd,CAAC;AAEX,oEAAoE;AACpE,wBAAgB,aAAa,CAAC,EAAE,EAAE,aAAa,GAAG,MAAM,GAAG,SAAS,CAQnE;AAsFD;;;;;;;;;;;;GAYG;AACH,wBAAsB,mBAAmB,CAAC,EAAE,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAkT1E;AAaD;;;GAGG;AACH,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI,CAKxE;AAED;;;;;;;;GAQG;AACH,wBAAsB,iBAAiB,CAAC,EAAE,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAKxE;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,qBAAqB,CAAC,EAAE,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAU5E"}
|
|
@@ -226,6 +226,8 @@ export async function createBillingTables(db) {
|
|
|
226
226
|
id VARCHAR(36) PRIMARY KEY,
|
|
227
227
|
subscription_id VARCHAR(255),
|
|
228
228
|
customer_id VARCHAR(255),
|
|
229
|
+
scope_type VARCHAR(255),
|
|
230
|
+
scope_id VARCHAR(255),
|
|
229
231
|
meter VARCHAR(255),
|
|
230
232
|
quantity INTEGER DEFAULT 1,
|
|
231
233
|
metadata ${t.json},
|
|
@@ -286,6 +288,16 @@ export async function createBillingTables(db) {
|
|
|
286
288
|
await addColumn(db, dialect, 'billing_subscriptions', 'last_renewal_error', 'VARCHAR(500)');
|
|
287
289
|
await addColumn(db, dialect, 'billing_subscriptions', 'last_renewal_attempt_at', t.timestamp);
|
|
288
290
|
await addColumn(db, dialect, 'billing_subscriptions', 'renewal_failure_count', 'INTEGER');
|
|
291
|
+
// 0.18.0 — usage metered against something that is neither the subscription nor the
|
|
292
|
+
// customer: a project shared by several members, a workspace, an environment, a site. Before
|
|
293
|
+
// this the only place to put it was `metadata`, and aggregating meant `metadata->>'projectId'`
|
|
294
|
+
// — unindexed, and spelled differently on every dialect this package supports.
|
|
295
|
+
//
|
|
296
|
+
// A generic `(type, id)` pair rather than a `project_id`: the library has no business knowing
|
|
297
|
+
// the app's domain, and a pair lets several kinds of scope coexist under one subscription.
|
|
298
|
+
// Nullable: an app that meters per subscription or per customer never sets them.
|
|
299
|
+
await addColumn(db, dialect, 'billing_usage_events', 'scope_type', 'VARCHAR(255)');
|
|
300
|
+
await addColumn(db, dialect, 'billing_usage_events', 'scope_id', 'VARCHAR(255)');
|
|
289
301
|
// ── Indexes ───────────────────────────────────────────────────────────────────────────
|
|
290
302
|
//
|
|
291
303
|
// Last, and that is load-bearing twice over. Every table above has to exist, and so does
|
|
@@ -306,6 +318,9 @@ export async function createBillingTables(db) {
|
|
|
306
318
|
await createIndex(db, dialect, 'billing_audit_events_subject_idx', 'billing_audit_events', 'subject_type, subject_id');
|
|
307
319
|
await createIndex(db, dialect, 'billing_usage_subscription_meter_idx', 'billing_usage_events', 'subscription_id, meter');
|
|
308
320
|
await createIndex(db, dialect, 'billing_usage_customer_meter_idx', 'billing_usage_events', 'customer_id, meter');
|
|
321
|
+
// The scoped read — "how much of this meter has THIS project used" — names exactly these
|
|
322
|
+
// three columns. Needs the 0.18.0 ALTERs above on an older install.
|
|
323
|
+
await createIndex(db, dialect, 'billing_usage_scope_meter_idx', 'billing_usage_events', 'scope_type, scope_id, meter');
|
|
309
324
|
// The renewal runner's working set: every tick asks "which managed subscriptions are due".
|
|
310
325
|
// Unindexed, that is a full scan of every subscription ever created, on a schedule.
|
|
311
326
|
await createIndex(db, dialect, 'billing_subscriptions_due_idx', 'billing_subscriptions', 'managed, status, next_charge_at');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../src/billing/schema.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../src/billing/schema.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
import type { BillingStore, UsageScope } from './billing_store.js';
|
|
2
|
+
/**
|
|
3
|
+
* The slice of a store the usage helpers read. Row types are `unknown` so the Lucid store and
|
|
4
|
+
* `InMemoryBillingStore` both satisfy it — the subscription row is read structurally below.
|
|
5
|
+
*/
|
|
6
|
+
export type UsageStore = Pick<BillingStore<unknown, unknown, unknown, unknown, unknown, unknown>, 'recordUsage' | 'usageReport' | 'findSubscriptionById' | 'findSubscriptionByGatewayId'>;
|
|
7
|
+
/**
|
|
8
|
+
* The window usage is summed over.
|
|
9
|
+
*
|
|
10
|
+
* - `{ from, to }` — explicit. Either end may be omitted; both omitted means all time.
|
|
11
|
+
* - `{ subscription, at }` — the billing cycle of that subscription that contains `at`
|
|
12
|
+
* (default: now). `subscription` is the local row id, or the gateway id as a fallback. It is
|
|
13
|
+
* ONLY the source of the window, not a filter: a project's usage is summed over the owner's
|
|
14
|
+
* cycle without having to carry the owner's subscription id.
|
|
15
|
+
*/
|
|
16
|
+
export type UsagePeriod = {
|
|
17
|
+
from?: Date;
|
|
18
|
+
to?: Date;
|
|
19
|
+
} | {
|
|
20
|
+
subscription: string;
|
|
21
|
+
at?: Date;
|
|
22
|
+
};
|
|
23
|
+
/** What to sum. Every filter is exact and they combine — see {@link BillingStore.usageReport}. */
|
|
24
|
+
export interface UsageQuery {
|
|
25
|
+
meter: string;
|
|
26
|
+
scope?: UsageScope;
|
|
27
|
+
subscriptionId?: string;
|
|
28
|
+
customerId?: string;
|
|
29
|
+
/** Omit for all time. */
|
|
30
|
+
period?: UsagePeriod;
|
|
31
|
+
}
|
|
32
|
+
/** A meter's consumption against a limit, over a resolved window. */
|
|
33
|
+
export interface UsageAllowance {
|
|
34
|
+
meter: string;
|
|
35
|
+
used: number;
|
|
36
|
+
limit: number;
|
|
37
|
+
/** `limit - used`, never below zero. */
|
|
38
|
+
remaining: number;
|
|
39
|
+
/** Whether `used` went PAST the limit. Reaching it exactly is not exceeding it. */
|
|
40
|
+
exceeded: boolean;
|
|
41
|
+
/** The window that was summed — `null` on an open end. */
|
|
42
|
+
from: Date | null;
|
|
43
|
+
to: Date | null;
|
|
44
|
+
}
|
|
45
|
+
/** The subset of a subscription row the window is derived from, whatever the store. */
|
|
46
|
+
interface PeriodSourceRow {
|
|
47
|
+
cycle?: string | null;
|
|
48
|
+
currentPeriodStart?: Date | {
|
|
49
|
+
toJSDate(): Date;
|
|
50
|
+
} | null;
|
|
51
|
+
currentPeriodEnd?: Date | {
|
|
52
|
+
toJSDate(): Date;
|
|
53
|
+
} | null;
|
|
54
|
+
createdAt?: Date | {
|
|
55
|
+
toJSDate(): Date;
|
|
56
|
+
} | null;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* The billing cycle of a subscription row that contains `at`.
|
|
60
|
+
*
|
|
61
|
+
* In order of preference:
|
|
62
|
+
*
|
|
63
|
+
* 1. The stored `currentPeriodStart`/`currentPeriodEnd`, when `at` falls inside them — what a
|
|
64
|
+
* managed subscription's renewal pass keeps current.
|
|
65
|
+
* 2. Stepped by `cycle` from `currentPeriodStart`, or from `createdAt` when there is no stored
|
|
66
|
+
* period. This is what makes a FREE plan work: nothing renews a row no gateway backs, so its
|
|
67
|
+
* stored period goes stale after the first cycle, while its anchor and cycle stay true. For a
|
|
68
|
+
* gateway-owned row it is an approximation — the gateway may anchor the cycle differently —
|
|
69
|
+
* and an app that needs the gateway's exact window should pass `{ from, to }`.
|
|
70
|
+
* 3. The stored period as-is, when there is no cycle to step by.
|
|
71
|
+
*
|
|
72
|
+
* Throws when the row carries none of it: guessing a window would let a quota silently reset
|
|
73
|
+
* on the wrong day.
|
|
74
|
+
*/
|
|
75
|
+
export declare function usagePeriodFor(row: PeriodSourceRow, at?: Date): {
|
|
76
|
+
from: Date;
|
|
77
|
+
to: Date;
|
|
78
|
+
};
|
|
79
|
+
/**
|
|
80
|
+
* How much of one meter was consumed, optionally per scope and over a billing cycle.
|
|
81
|
+
*
|
|
82
|
+
* ```ts
|
|
83
|
+
* const used = await usageTotal(store, {
|
|
84
|
+
* meter: 'ai_chat',
|
|
85
|
+
* scope: { type: 'project', id: project.id },
|
|
86
|
+
* period: { subscription: ownerSubscription.id },
|
|
87
|
+
* })
|
|
88
|
+
* ```
|
|
89
|
+
*
|
|
90
|
+
* In an application, `payments.usage().total(...)` is the same call with the store resolved.
|
|
91
|
+
*/
|
|
92
|
+
export declare function usageTotal(store: UsageStore, query: UsageQuery): Promise<number>;
|
|
93
|
+
/**
|
|
94
|
+
* How much of one meter is left under `limit`, over the same window {@link usageTotal} sums.
|
|
95
|
+
*
|
|
96
|
+
* The limit is the app's: plans and their quotas are product logic and live in the app's own
|
|
97
|
+
* catalog, not in this library.
|
|
98
|
+
*/
|
|
99
|
+
export declare function usageRemaining(store: UsageStore, query: UsageQuery & {
|
|
100
|
+
limit: number;
|
|
101
|
+
}): Promise<UsageAllowance>;
|
|
102
|
+
/**
|
|
103
|
+
* The usage helpers with the store already resolved — what `payments.usage()` returns.
|
|
104
|
+
*/
|
|
105
|
+
export interface UsageApi {
|
|
106
|
+
/** Record one event. Same input as {@link BillingStore.recordUsage}. */
|
|
107
|
+
record(event: Parameters<UsageStore['recordUsage']>[0]): Promise<void>;
|
|
108
|
+
total(query: UsageQuery): Promise<number>;
|
|
109
|
+
remaining(query: UsageQuery & {
|
|
110
|
+
limit: number;
|
|
111
|
+
}): Promise<UsageAllowance>;
|
|
112
|
+
/** The billing cycle {@link UsagePeriod} `{ subscription, at }` resolves to. */
|
|
113
|
+
period(subscription: string, at?: Date): Promise<{
|
|
114
|
+
from: Date;
|
|
115
|
+
to: Date;
|
|
116
|
+
}>;
|
|
117
|
+
}
|
|
118
|
+
/** Bind the usage helpers to a (lazily resolved) store. */
|
|
119
|
+
export declare function createUsageApi(store: () => UsageStore): UsageApi;
|
|
120
|
+
export {};
|
|
121
|
+
//# sourceMappingURL=usage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"usage.d.ts","sourceRoot":"","sources":["../../../src/billing/usage.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
import { advancePeriodBy, toDate } from './managed_subscriptions.js';
|
|
2
|
+
/**
|
|
3
|
+
* The billing cycle of a subscription row that contains `at`.
|
|
4
|
+
*
|
|
5
|
+
* In order of preference:
|
|
6
|
+
*
|
|
7
|
+
* 1. The stored `currentPeriodStart`/`currentPeriodEnd`, when `at` falls inside them — what a
|
|
8
|
+
* managed subscription's renewal pass keeps current.
|
|
9
|
+
* 2. Stepped by `cycle` from `currentPeriodStart`, or from `createdAt` when there is no stored
|
|
10
|
+
* period. This is what makes a FREE plan work: nothing renews a row no gateway backs, so its
|
|
11
|
+
* stored period goes stale after the first cycle, while its anchor and cycle stay true. For a
|
|
12
|
+
* gateway-owned row it is an approximation — the gateway may anchor the cycle differently —
|
|
13
|
+
* and an app that needs the gateway's exact window should pass `{ from, to }`.
|
|
14
|
+
* 3. The stored period as-is, when there is no cycle to step by.
|
|
15
|
+
*
|
|
16
|
+
* Throws when the row carries none of it: guessing a window would let a quota silently reset
|
|
17
|
+
* on the wrong day.
|
|
18
|
+
*/
|
|
19
|
+
export function usagePeriodFor(row, at = new Date()) {
|
|
20
|
+
const start = toDate(row.currentPeriodStart);
|
|
21
|
+
const end = toDate(row.currentPeriodEnd);
|
|
22
|
+
if (start !== null && end !== null && start <= at && at < end)
|
|
23
|
+
return { from: start, to: end };
|
|
24
|
+
const anchor = start ?? toDate(row.createdAt);
|
|
25
|
+
const cycle = row.cycle ?? null;
|
|
26
|
+
if (anchor !== null && cycle !== null) {
|
|
27
|
+
// Anchored arithmetic (see `advancePeriodBy`), so a cycle starting on the 31st does not
|
|
28
|
+
// drift. A rough estimate first, then corrected by a step or two either way — never a walk
|
|
29
|
+
// from the anchor, which would be thousands of iterations for a weekly plan years old.
|
|
30
|
+
if (at < anchor)
|
|
31
|
+
return { from: anchor, to: advancePeriodBy(anchor, cycle, 1) };
|
|
32
|
+
const roughLength = advancePeriodBy(anchor, cycle, 1).getTime() - anchor.getTime();
|
|
33
|
+
let n = Math.max(0, Math.floor((at.getTime() - anchor.getTime()) / roughLength));
|
|
34
|
+
while (n > 0 && advancePeriodBy(anchor, cycle, n) > at)
|
|
35
|
+
n--;
|
|
36
|
+
while (advancePeriodBy(anchor, cycle, n + 1) <= at)
|
|
37
|
+
n++;
|
|
38
|
+
return { from: advancePeriodBy(anchor, cycle, n), to: advancePeriodBy(anchor, cycle, n + 1) };
|
|
39
|
+
}
|
|
40
|
+
if (start !== null && end !== null)
|
|
41
|
+
return { from: start, to: end };
|
|
42
|
+
throw new Error('[payments] Cannot derive a usage period from this subscription: it has no `cycle` and no ' +
|
|
43
|
+
'stored current period. Pass `period: { from, to }` instead.');
|
|
44
|
+
}
|
|
45
|
+
async function resolvePeriod(store, period) {
|
|
46
|
+
if (period === undefined)
|
|
47
|
+
return { from: null, to: null };
|
|
48
|
+
if (!('subscription' in period))
|
|
49
|
+
return { from: period.from ?? null, to: period.to ?? null };
|
|
50
|
+
const row = (await store.findSubscriptionById(period.subscription)) ??
|
|
51
|
+
(await store.findSubscriptionByGatewayId(period.subscription));
|
|
52
|
+
if (row === null || row === undefined) {
|
|
53
|
+
throw new Error(`[payments] No subscription ${period.subscription} to derive a usage period from.`);
|
|
54
|
+
}
|
|
55
|
+
return usagePeriodFor(row, period.at ?? new Date());
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* How much of one meter was consumed, optionally per scope and over a billing cycle.
|
|
59
|
+
*
|
|
60
|
+
* ```ts
|
|
61
|
+
* const used = await usageTotal(store, {
|
|
62
|
+
* meter: 'ai_chat',
|
|
63
|
+
* scope: { type: 'project', id: project.id },
|
|
64
|
+
* period: { subscription: ownerSubscription.id },
|
|
65
|
+
* })
|
|
66
|
+
* ```
|
|
67
|
+
*
|
|
68
|
+
* In an application, `payments.usage().total(...)` is the same call with the store resolved.
|
|
69
|
+
*/
|
|
70
|
+
export async function usageTotal(store, query) {
|
|
71
|
+
const window = await resolvePeriod(store, query.period);
|
|
72
|
+
return sumMeter(store, query, window);
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* How much of one meter is left under `limit`, over the same window {@link usageTotal} sums.
|
|
76
|
+
*
|
|
77
|
+
* The limit is the app's: plans and their quotas are product logic and live in the app's own
|
|
78
|
+
* catalog, not in this library.
|
|
79
|
+
*/
|
|
80
|
+
export async function usageRemaining(store, query) {
|
|
81
|
+
const window = await resolvePeriod(store, query.period);
|
|
82
|
+
const used = await sumMeter(store, query, window);
|
|
83
|
+
return {
|
|
84
|
+
meter: query.meter,
|
|
85
|
+
used,
|
|
86
|
+
limit: query.limit,
|
|
87
|
+
remaining: Math.max(0, query.limit - used),
|
|
88
|
+
exceeded: used > query.limit,
|
|
89
|
+
from: window.from,
|
|
90
|
+
to: window.to,
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
async function sumMeter(store, query, window) {
|
|
94
|
+
const lines = await store.usageReport({
|
|
95
|
+
meter: query.meter,
|
|
96
|
+
...(query.scope !== undefined ? { scope: query.scope } : {}),
|
|
97
|
+
...(query.subscriptionId !== undefined ? { subscriptionId: query.subscriptionId } : {}),
|
|
98
|
+
...(query.customerId !== undefined ? { customerId: query.customerId } : {}),
|
|
99
|
+
...(window.from !== null ? { from: window.from } : {}),
|
|
100
|
+
...(window.to !== null ? { to: window.to } : {}),
|
|
101
|
+
});
|
|
102
|
+
return lines.reduce((sum, line) => sum + line.quantity, 0);
|
|
103
|
+
}
|
|
104
|
+
/** Bind the usage helpers to a (lazily resolved) store. */
|
|
105
|
+
export function createUsageApi(store) {
|
|
106
|
+
return {
|
|
107
|
+
async record(event) {
|
|
108
|
+
await store().recordUsage(event);
|
|
109
|
+
},
|
|
110
|
+
// `async`, so a missing store surfaces as a rejection like every other failure here
|
|
111
|
+
// rather than a synchronous throw from a method that returns a promise.
|
|
112
|
+
total: async (query) => usageTotal(store(), query),
|
|
113
|
+
remaining: async (query) => usageRemaining(store(), query),
|
|
114
|
+
async period(subscription, at) {
|
|
115
|
+
const window = await resolvePeriod(store(), {
|
|
116
|
+
subscription,
|
|
117
|
+
...(at !== undefined ? { at } : {}),
|
|
118
|
+
});
|
|
119
|
+
return window;
|
|
120
|
+
},
|
|
121
|
+
};
|
|
122
|
+
}
|
|
123
|
+
//# sourceMappingURL=usage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"usage.js","sourceRoot":"","sources":["../../../src/billing/usage.ts"],"names":[],"mappings":"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"}
|
package/dist/src/index.d.ts
CHANGED
|
@@ -5,14 +5,14 @@ export type { BillingHealth, BillingHealthCheck, BillingHealthOptions, } from '.
|
|
|
5
5
|
export { billingHealth } from './billing/billing_health.js';
|
|
6
6
|
export type { BillingOverview, BillingOverviewMetric } from './billing/billing_overview.js';
|
|
7
7
|
export { billingOverview } from './billing/billing_overview.js';
|
|
8
|
-
export type { AuditEventCountQuery, AuditEventListItem, AuditEventQuery, BillingCountQuery, BillingListQuery, BillingStore, CustomerListItem, CustomerListQuery, DisputeDeadlineQuery, DisputeListItem, OpenDisputeQuery, PaymentListItem, PaymentListQuery, SubscriptionListItem, SubscriptionListQuery, WebhookEventBreakdownLine, WebhookEventListItem, WebhookEventListQuery, } from './billing/billing_store.js';
|
|
8
|
+
export type { AuditEventCountQuery, AuditEventListItem, AuditEventQuery, BillingCountQuery, BillingListQuery, BillingStore, CustomerListItem, CustomerListQuery, DisputeDeadlineQuery, DisputeListItem, OpenDisputeQuery, PaymentListItem, PaymentListQuery, SubscriptionListItem, SubscriptionListQuery, UsageScope, WebhookEventBreakdownLine, WebhookEventListItem, WebhookEventListQuery, } from './billing/billing_store.js';
|
|
9
9
|
export { AUDIT_ACTIONS, OPEN_DISPUTE_STATUSES } from './billing/billing_store.js';
|
|
10
10
|
export { withBillable, withPayment, withSubscription, } from './billing/index.js';
|
|
11
11
|
export { BILLING_LIST_DEFAULT_SIZE, BILLING_LIST_MAX_SIZE, } from './billing/list_query.js';
|
|
12
12
|
export type { BillingModels } from './billing/lucid_billing_store.js';
|
|
13
13
|
export { LucidBillingStore, lucidBillingStore } from './billing/lucid_billing_store.js';
|
|
14
14
|
export type { ManagedCycle, RenewalOutcome } from './billing/managed_subscriptions.js';
|
|
15
|
-
export { advancePeriod, cancelManagedSubscription, createManagedSubscription, cycleIdempotencyKey, renewDueManagedSubscriptions, resumeManagedSubscription, updateManagedSubscription, } from './billing/managed_subscriptions.js';
|
|
15
|
+
export { advancePeriod, advancePeriodBy, cancelManagedSubscription, createManagedSubscription, cycleIdempotencyKey, renewDueManagedSubscriptions, resumeManagedSubscription, updateManagedSubscription, } from './billing/managed_subscriptions.js';
|
|
16
16
|
export type { MeteredBill, MeteredBillLine, MeterRate } from './billing/metered_bill.js';
|
|
17
17
|
export { meteredBill, meteredBillForSubscription } from './billing/metered_bill.js';
|
|
18
18
|
export { BillingAuditEvent } from './billing/mixins/with_audit_event.js';
|
|
@@ -22,6 +22,8 @@ export { BillingUsageEvent } from './billing/mixins/with_usage_event.js';
|
|
|
22
22
|
export { resolveBillingStore } from './billing/resolve_store.js';
|
|
23
23
|
export type { LucidDatabase, LucidQueryBindings, LucidQueryClient, } from './billing/schema.js';
|
|
24
24
|
export { BILLING_TABLES, createBillingTables, dropBillingTables, truncateBillingTables, } from './billing/schema.js';
|
|
25
|
+
export type { UsageAllowance, UsageApi, UsagePeriod, UsageQuery, UsageStore, } from './billing/usage.js';
|
|
26
|
+
export { createUsageApi, usagePeriodFor, usageRemaining, usageTotal, } from './billing/usage.js';
|
|
25
27
|
/**
|
|
26
28
|
* The shapes a driver normalizes `event.data` onto. Exported because an app's own webhook
|
|
27
29
|
* handler receives a `WebhookEvent` and needs to read `externalReference` off its payload —
|
package/dist/src/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/src/index.js
CHANGED
|
@@ -6,7 +6,7 @@ export { AUDIT_ACTIONS, OPEN_DISPUTE_STATUSES } from './billing/billing_store.js
|
|
|
6
6
|
export { withBillable, withPayment, withSubscription, } from './billing/index.js';
|
|
7
7
|
export { BILLING_LIST_DEFAULT_SIZE, BILLING_LIST_MAX_SIZE, } from './billing/list_query.js';
|
|
8
8
|
export { LucidBillingStore, lucidBillingStore } from './billing/lucid_billing_store.js';
|
|
9
|
-
export { advancePeriod, cancelManagedSubscription, createManagedSubscription, cycleIdempotencyKey, renewDueManagedSubscriptions, resumeManagedSubscription, updateManagedSubscription, } from './billing/managed_subscriptions.js';
|
|
9
|
+
export { advancePeriod, advancePeriodBy, cancelManagedSubscription, createManagedSubscription, cycleIdempotencyKey, renewDueManagedSubscriptions, resumeManagedSubscription, updateManagedSubscription, } from './billing/managed_subscriptions.js';
|
|
10
10
|
export { meteredBill, meteredBillForSubscription } from './billing/metered_bill.js';
|
|
11
11
|
export { BillingAuditEvent } from './billing/mixins/with_audit_event.js';
|
|
12
12
|
export { BillingCustomer } from './billing/mixins/with_customer.js';
|
|
@@ -14,6 +14,7 @@ export { BillingDispute } from './billing/mixins/with_dispute.js';
|
|
|
14
14
|
export { BillingUsageEvent } from './billing/mixins/with_usage_event.js';
|
|
15
15
|
export { resolveBillingStore } from './billing/resolve_store.js';
|
|
16
16
|
export { BILLING_TABLES, createBillingTables, dropBillingTables, truncateBillingTables, } from './billing/schema.js';
|
|
17
|
+
export { createUsageApi, usagePeriodFor, usageRemaining, usageTotal, } from './billing/usage.js';
|
|
17
18
|
/**
|
|
18
19
|
* The canonical event types, as a value and as a type.
|
|
19
20
|
*
|
package/dist/src/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,yBAAyB,CAAC;AAGjC,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAM/C,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAE5D,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { type Arrears, type ArrearsQuery } from './billing/arrears.js';
|
|
2
2
|
import type { BillingStore } from './billing/billing_store.js';
|
|
3
|
+
import { type UsageApi } from './billing/usage.js';
|
|
3
4
|
import type { PaymentsConfig } from './define_config.js';
|
|
4
5
|
import type { PaymentsDriver } from './driver.js';
|
|
5
6
|
import type { InvoiceManager } from './invoice/invoice_manager.js';
|
|
@@ -47,6 +48,24 @@ export declare class PaymentsManager {
|
|
|
47
48
|
* from the START of the current failure run and not from the newest retry.
|
|
48
49
|
*/
|
|
49
50
|
arrears(query: Omit<ArrearsQuery, 'store'>): Promise<Arrears>;
|
|
51
|
+
/**
|
|
52
|
+
* Record metered usage and read it back against a quota, per subscription, per customer or
|
|
53
|
+
* per application resource (`scope`), over a subscription's billing cycle:
|
|
54
|
+
*
|
|
55
|
+
* ```ts
|
|
56
|
+
* const usage = getPayments().usage()
|
|
57
|
+
* await usage.record({ meter: 'ai_chat', quantity: 1, scope: { type: 'project', id } })
|
|
58
|
+
* const { remaining } = await usage.remaining({
|
|
59
|
+
* meter: 'ai_chat',
|
|
60
|
+
* scope: { type: 'project', id },
|
|
61
|
+
* limit: plan.aiChatLimit,
|
|
62
|
+
* period: { subscription: owner.subscriptionId },
|
|
63
|
+
* })
|
|
64
|
+
* ```
|
|
65
|
+
*
|
|
66
|
+
* The store is resolved on each call, not here, so asking for the API never fails on its own.
|
|
67
|
+
*/
|
|
68
|
+
usage(): UsageApi;
|
|
50
69
|
/**
|
|
51
70
|
* Every configured driver, by the name it was configured under.
|
|
52
71
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"payments_manager.d.ts","sourceRoot":"","sources":["../../src/payments_manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,OAAO,EAAE,KAAK,YAAY,EAAW,MAAM,sBAAsB,CAAC;AAChF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,EAAmB,KAAK,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AAC1F,OAAO,EAA2B,KAAK,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAC3F,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAGpD,MAAM,WAAW,sBAAsB;IACrC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IACrC,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B,yDAAyD;IACzD,OAAO,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAAC,CAAC;IACrD,mFAAmF;IACnF,aAAa,CAAC,EAAE,mBAAmB,CAAC;IACpC;;;;;;;OAOG;IACH,KAAK,CAAC,EAAE,MAAM,YAAY,CAAC;IAC3B,yDAAyD;IACzD,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,qBAAa,eAAe;;IAgB1B,YAAY,OAAO,EAAE,sBAAsB,EAmB1C;IAED;;;OAGG;IACH,aAAa,IAAI,gBAAgB,CAoBhC;IAED;;;;;;;;;;;OAWG;IACG,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,YAAY,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CASlE;IAED;;;;;OAKG;IACH,IAAI,OAAO,IAAI,WAAW,CAAC,MAAM,EAAE,cAAc,CAAC,CAEjD;IAED;;;;;;;;;OASG;IACH,MAAM,CAAC,YAAY,CAAC,EAAE,iBAAiB,GAAG,MAAM,GAAG,cAAc,CA4ChE;IAuGD;;;OAGG;IACH,OAAO,CAAC,IAAI,CAAC,EAAE,MAAM,gDAOpB;IAED;;;OAGG;IACH,gBAAgB,CACd,MAAM,EAAE,cAAc,EACtB,UAAU,EAAE,SAAS,GAAG,UAAU,GAAG,eAAe,GAAG,UAAU,GAAG,kBAAkB,GACrF,IAAI,CAgBN;IAED;;;;;;;;;OASG;IACH,kCAAkC,CAChC,MAAM,EAAE,cAAc,EACtB,SAAS,EAAE,qBAAqB,GAC/B,IAAI,CAON;CAsDF;AAED,4EAA4E;AAC5E,wBAAsB,cAAc,CAClC,MAAM,EAAE,cAAc,EACtB,QAAQ,CAAC,EAAE,cAAc,GACxB,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC,CAiBtC"}
|
|
1
|
+
{"version":3,"file":"payments_manager.d.ts","sourceRoot":"","sources":["../../src/payments_manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,OAAO,EAAE,KAAK,YAAY,EAAW,MAAM,sBAAsB,CAAC;AAChF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,EAAkB,KAAK,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AACnE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,EAAmB,KAAK,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AAC1F,OAAO,EAA2B,KAAK,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAC3F,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAGpD,MAAM,WAAW,sBAAsB;IACrC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IACrC,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B,yDAAyD;IACzD,OAAO,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAAC,CAAC;IACrD,mFAAmF;IACnF,aAAa,CAAC,EAAE,mBAAmB,CAAC;IACpC;;;;;;;OAOG;IACH,KAAK,CAAC,EAAE,MAAM,YAAY,CAAC;IAC3B,yDAAyD;IACzD,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,qBAAa,eAAe;;IAgB1B,YAAY,OAAO,EAAE,sBAAsB,EAmB1C;IAED;;;OAGG;IACH,aAAa,IAAI,gBAAgB,CAoBhC;IAED;;;;;;;;;;;OAWG;IACG,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,YAAY,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CASlE;IAED;;;;;;;;;;;;;;;;OAgBG;IACH,KAAK,IAAI,QAAQ,CAWhB;IAED;;;;;OAKG;IACH,IAAI,OAAO,IAAI,WAAW,CAAC,MAAM,EAAE,cAAc,CAAC,CAEjD;IAED;;;;;;;;;OASG;IACH,MAAM,CAAC,YAAY,CAAC,EAAE,iBAAiB,GAAG,MAAM,GAAG,cAAc,CA4ChE;IAuGD;;;OAGG;IACH,OAAO,CAAC,IAAI,CAAC,EAAE,MAAM,gDAOpB;IAED;;;OAGG;IACH,gBAAgB,CACd,MAAM,EAAE,cAAc,EACtB,UAAU,EAAE,SAAS,GAAG,UAAU,GAAG,eAAe,GAAG,UAAU,GAAG,kBAAkB,GACrF,IAAI,CAgBN;IAED;;;;;;;;;OASG;IACH,kCAAkC,CAChC,MAAM,EAAE,cAAc,EACtB,SAAS,EAAE,qBAAqB,GAC/B,IAAI,CAON;CAsDF;AAED,4EAA4E;AAC5E,wBAAsB,cAAc,CAClC,MAAM,EAAE,cAAc,EACtB,QAAQ,CAAC,EAAE,cAAc,GACxB,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC,CAiBtC"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { arrears } from './billing/arrears.js';
|
|
2
|
+
import { createUsageApi } from './billing/usage.js';
|
|
2
3
|
import { gatewayPerforms } from './subscription_lifecycle.js';
|
|
3
4
|
import { resolveSubscriptionMode } from './subscription_mode.js';
|
|
4
5
|
import { SubscriptionsApi } from './subscriptions_api.js';
|
|
@@ -79,6 +80,33 @@ export class PaymentsManager {
|
|
|
79
80
|
}
|
|
80
81
|
return arrears({ ...query, store });
|
|
81
82
|
}
|
|
83
|
+
/**
|
|
84
|
+
* Record metered usage and read it back against a quota, per subscription, per customer or
|
|
85
|
+
* per application resource (`scope`), over a subscription's billing cycle:
|
|
86
|
+
*
|
|
87
|
+
* ```ts
|
|
88
|
+
* const usage = getPayments().usage()
|
|
89
|
+
* await usage.record({ meter: 'ai_chat', quantity: 1, scope: { type: 'project', id } })
|
|
90
|
+
* const { remaining } = await usage.remaining({
|
|
91
|
+
* meter: 'ai_chat',
|
|
92
|
+
* scope: { type: 'project', id },
|
|
93
|
+
* limit: plan.aiChatLimit,
|
|
94
|
+
* period: { subscription: owner.subscriptionId },
|
|
95
|
+
* })
|
|
96
|
+
* ```
|
|
97
|
+
*
|
|
98
|
+
* The store is resolved on each call, not here, so asking for the API never fails on its own.
|
|
99
|
+
*/
|
|
100
|
+
usage() {
|
|
101
|
+
return createUsageApi(() => {
|
|
102
|
+
const store = this.#store?.();
|
|
103
|
+
if (store === undefined) {
|
|
104
|
+
throw new Error('[payments] Metered usage needs the billing store, and none is configured. ' +
|
|
105
|
+
'Enable `billing` in config/payments.ts.');
|
|
106
|
+
}
|
|
107
|
+
return store;
|
|
108
|
+
});
|
|
109
|
+
}
|
|
82
110
|
/**
|
|
83
111
|
* Every configured driver, by the name it was configured under.
|
|
84
112
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"payments_manager.js","sourceRoot":"","sources":["../../src/payments_manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmC,OAAO,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"payments_manager.js","sourceRoot":"","sources":["../../src/payments_manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type AuditEventCountQuery, type AuditEventListItem, type AuditEventQuery, type BillingCountQuery, type BillingListQuery, type BillingStore, type CustomerListItem, type CustomerListQuery, type DisputeDeadlineQuery, type DisputeListItem, type ManagedSubscriptionInput, type ManagedSubscriptionPatch, type OpenDisputeQuery, type PaymentListItem, type PaymentListQuery, type SubscriptionCycleTotal, type SubscriptionListItem, type SubscriptionListQuery, type WebhookEventBreakdownLine, type WebhookEventListItem, type WebhookEventListQuery } from '../billing/billing_store.js';
|
|
1
|
+
import { type AuditEventCountQuery, type AuditEventListItem, type AuditEventQuery, type BillingCountQuery, type BillingListQuery, type BillingStore, type CustomerListItem, type CustomerListQuery, type DisputeDeadlineQuery, type DisputeListItem, type ManagedSubscriptionInput, type ManagedSubscriptionPatch, type OpenDisputeQuery, type PaymentListItem, type PaymentListQuery, type SubscriptionCycleTotal, type SubscriptionListItem, type SubscriptionListQuery, type UsageScope, type WebhookEventBreakdownLine, type WebhookEventListItem, type WebhookEventListQuery } from '../billing/billing_store.js';
|
|
2
2
|
/** A plain in-memory customer-mapping row (mirrors the Lucid model's columns). */
|
|
3
3
|
export interface InMemoryCustomerRow {
|
|
4
4
|
id: string;
|
|
@@ -114,6 +114,8 @@ export interface InMemoryUsageEventRow {
|
|
|
114
114
|
id: string;
|
|
115
115
|
subscriptionId: string | null;
|
|
116
116
|
customerId: string | null;
|
|
117
|
+
scopeType: string | null;
|
|
118
|
+
scopeId: string | null;
|
|
117
119
|
meter: string;
|
|
118
120
|
quantity: number;
|
|
119
121
|
metadata?: Record<string, unknown>;
|
|
@@ -247,6 +249,7 @@ export declare class InMemoryBillingStore implements BillingStore<InMemorySubscr
|
|
|
247
249
|
recordUsage(event: {
|
|
248
250
|
subscriptionId?: string | null;
|
|
249
251
|
customerId?: string;
|
|
252
|
+
scope?: UsageScope | null;
|
|
250
253
|
meter: string;
|
|
251
254
|
quantity: number;
|
|
252
255
|
metadata?: Record<string, unknown>;
|
|
@@ -255,6 +258,7 @@ export declare class InMemoryBillingStore implements BillingStore<InMemorySubscr
|
|
|
255
258
|
usageReport(query: {
|
|
256
259
|
subscriptionId?: string;
|
|
257
260
|
customerId?: string;
|
|
261
|
+
scope?: UsageScope;
|
|
258
262
|
meter?: string;
|
|
259
263
|
from?: Date;
|
|
260
264
|
to?: Date;
|