@arnaudjnn/billing-tools 21.6.2 → 21.7.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 +9 -0
- package/dist/bound-api.d.ts.map +1 -1
- package/dist/bound-api.js +8 -6
- package/dist/bound-api.js.map +1 -1
- package/dist/create-billing.d.ts +15 -0
- package/dist/create-billing.d.ts.map +1 -1
- package/dist/create-billing.js +44 -2
- package/dist/create-billing.js.map +1 -1
- package/dist/entries/notifications.d.ts +2 -0
- package/dist/entries/notifications.d.ts.map +1 -0
- package/dist/entries/notifications.js +11 -0
- package/dist/entries/notifications.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -0
- package/dist/index.js.map +1 -1
- package/dist/invitations.d.ts +9 -0
- package/dist/invitations.d.ts.map +1 -1
- package/dist/invitations.js +3 -2
- package/dist/invitations.js.map +1 -1
- package/dist/notifications/emit.d.ts +18 -0
- package/dist/notifications/emit.d.ts.map +1 -0
- package/dist/notifications/emit.js +79 -0
- package/dist/notifications/emit.js.map +1 -0
- package/dist/notifications/index.d.ts +171 -0
- package/dist/notifications/index.d.ts.map +1 -0
- package/dist/notifications/index.js +92 -0
- package/dist/notifications/index.js.map +1 -0
- package/dist/plan-request.d.ts +5 -0
- package/dist/plan-request.d.ts.map +1 -1
- package/dist/plan-request.js +19 -0
- package/dist/plan-request.js.map +1 -1
- package/dist/tools/management.d.ts +3 -0
- package/dist/tools/management.d.ts.map +1 -1
- package/dist/tools/management.js +5 -3
- package/dist/tools/management.js.map +1 -1
- package/dist/tools/register.d.ts +9 -0
- package/dist/tools/register.d.ts.map +1 -1
- package/dist/tools/register.js +2 -2
- package/dist/tools/register.js.map +1 -1
- package/dist/tools/subscription.d.ts +3 -0
- package/dist/tools/subscription.d.ts.map +1 -1
- package/dist/tools/subscription.js +2 -0
- package/dist/tools/subscription.js.map +1 -1
- package/dist/topup.d.ts +9 -4
- package/dist/topup.d.ts.map +1 -1
- package/dist/topup.js +45 -6
- package/dist/topup.js.map +1 -1
- package/package.json +6 -1
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
// Who gets told, and the one place that swallows a failed telling.
|
|
2
|
+
//
|
|
3
|
+
// Kept apart from `./index.ts` so the wire format (the event union, the signature, the
|
|
4
|
+
// transport) stays free of the adapter: a consumer's route imports that half to VERIFY a
|
|
5
|
+
// delivery, and has no business pulling the storage seam in to do it.
|
|
6
|
+
const ADMIN_ROLE = "admin";
|
|
7
|
+
/**
|
|
8
|
+
* Build the fire-and-forget `Notify` every call site inside the library holds.
|
|
9
|
+
*
|
|
10
|
+
* Two things happen here that deliberately do NOT happen at the call sites:
|
|
11
|
+
*
|
|
12
|
+
* 1. **Recipients are resolved.** A call site knows the workspace and, at most, a member id;
|
|
13
|
+
* turning that into addresses is a membership question, and answering it eight times is
|
|
14
|
+
* how eight answers drift. It also has to be async, and a call site that awaited it would
|
|
15
|
+
* be blocking a metered call on a WorkOS round trip to send an email.
|
|
16
|
+
* 2. **Failure is swallowed, once.** Every notification describes something that ALREADY
|
|
17
|
+
* happened — the invitation exists, the credit is granted, the call was metered. A
|
|
18
|
+
* delivery that fails must not undo it. One `.catch()` here beats eight, where the ninth
|
|
19
|
+
* call site is the one that forgets.
|
|
20
|
+
*/
|
|
21
|
+
export function createEmitter(adapter, notifier, onError) {
|
|
22
|
+
if (!notifier)
|
|
23
|
+
return undefined;
|
|
24
|
+
const fail = (e) => {
|
|
25
|
+
try {
|
|
26
|
+
onError?.(e);
|
|
27
|
+
}
|
|
28
|
+
catch {
|
|
29
|
+
// A broken error handler is not worth a second failure.
|
|
30
|
+
}
|
|
31
|
+
};
|
|
32
|
+
return (event) => {
|
|
33
|
+
const audience = event.audience;
|
|
34
|
+
void (async () => {
|
|
35
|
+
const resolved = await withRecipients(adapter, event, audience);
|
|
36
|
+
// Nothing to tell anybody: an adapter that cannot list members, a workspace whose
|
|
37
|
+
// admins have no address on file. Sending to nobody is not an error, but it is not
|
|
38
|
+
// worth a round trip either.
|
|
39
|
+
if (!resolved.to.length)
|
|
40
|
+
return;
|
|
41
|
+
await notifier.deliver({ ...resolved, at: Date.now() });
|
|
42
|
+
})().catch(fail);
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
/** Fill `to` (and a member's email, where the event carries one) from the adapter. */
|
|
46
|
+
async function withRecipients(adapter, event, audience) {
|
|
47
|
+
if (!audience)
|
|
48
|
+
return event;
|
|
49
|
+
if (audience.kind === "email")
|
|
50
|
+
return { ...event, to: [audience.email] };
|
|
51
|
+
const members = await listOrgMembers(adapter, event.orgId);
|
|
52
|
+
const to = audience.kind === "admins"
|
|
53
|
+
? members.filter((m) => m.roleSlug === ADMIN_ROLE).map((m) => m.email)
|
|
54
|
+
: members.filter((m) => m.userId === audience.memberId).map((m) => m.email);
|
|
55
|
+
// The member's own address, when the event names one and the caller could not. The same
|
|
56
|
+
// list answers both questions, so it is one lookup, not two.
|
|
57
|
+
const data = event.data;
|
|
58
|
+
const member = data && "member" in data && data.member && !data.member.email
|
|
59
|
+
? members.find((m) => m.userId === data.member.id)
|
|
60
|
+
: null;
|
|
61
|
+
return {
|
|
62
|
+
...event,
|
|
63
|
+
to: to.filter((e) => Boolean(e)),
|
|
64
|
+
...(member ? { data: { ...event.data, member: { ...data.member, email: member.email } } } : {}),
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
async function listOrgMembers(adapter, orgId) {
|
|
68
|
+
if (!adapter.listMembers)
|
|
69
|
+
return [];
|
|
70
|
+
try {
|
|
71
|
+
return await adapter.listMembers(orgId);
|
|
72
|
+
}
|
|
73
|
+
catch (e) {
|
|
74
|
+
// An unreadable membership means nobody gets told, which is the same outcome as no
|
|
75
|
+
// notifier at all — never a thrown error into the thing that happened.
|
|
76
|
+
return [];
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
//# sourceMappingURL=emit.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"emit.js","sourceRoot":"","sources":["../../src/notifications/emit.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
/** Which allowance an alert is about, in the consumer's own words where the plan gave any. */
|
|
2
|
+
export interface NotifiedWindow {
|
|
3
|
+
every: string;
|
|
4
|
+
label: string | null;
|
|
5
|
+
used: number;
|
|
6
|
+
limit: number;
|
|
7
|
+
percent: number;
|
|
8
|
+
}
|
|
9
|
+
export interface NotifiedMember {
|
|
10
|
+
id: string;
|
|
11
|
+
email: string | null;
|
|
12
|
+
}
|
|
13
|
+
/** What happened. One variant per thing worth telling somebody about. */
|
|
14
|
+
export type BillingNotification =
|
|
15
|
+
/** A member was invited and the invitation record exists. `to` is the invitee. */
|
|
16
|
+
{
|
|
17
|
+
type: "invitation.created";
|
|
18
|
+
orgId: string;
|
|
19
|
+
to: string[];
|
|
20
|
+
data: {
|
|
21
|
+
invitationId: string;
|
|
22
|
+
email: string;
|
|
23
|
+
roleSlug: string;
|
|
24
|
+
acceptUrl: string;
|
|
25
|
+
organizationId: string;
|
|
26
|
+
inviterUserId?: string;
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
/** Somebody asked for more than their allowance. `to` is every admin of the workspace. */
|
|
30
|
+
| {
|
|
31
|
+
type: "topup.requested";
|
|
32
|
+
orgId: string;
|
|
33
|
+
to: string[];
|
|
34
|
+
data: {
|
|
35
|
+
requestId: string;
|
|
36
|
+
member: NotifiedMember;
|
|
37
|
+
credits: number;
|
|
38
|
+
/** The window that refused them, when the ask came from one. */
|
|
39
|
+
window: NotifiedWindow | null;
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
/** An admin answered — or granted unprompted. `to` is the member it is about. */
|
|
43
|
+
| {
|
|
44
|
+
type: "topup.resolved";
|
|
45
|
+
orgId: string;
|
|
46
|
+
to: string[];
|
|
47
|
+
data: {
|
|
48
|
+
requestId: string | null;
|
|
49
|
+
member: NotifiedMember;
|
|
50
|
+
credits: number;
|
|
51
|
+
outcome: "approved" | "denied" | "granted";
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
/** Somebody asked to move up a rung the money cannot buy (a seat, a plan). */
|
|
55
|
+
| {
|
|
56
|
+
type: "upgrade.requested";
|
|
57
|
+
orgId: string;
|
|
58
|
+
to: string[];
|
|
59
|
+
data: {
|
|
60
|
+
requestId: string;
|
|
61
|
+
member: NotifiedMember;
|
|
62
|
+
kind: "seat" | "plan";
|
|
63
|
+
/** The seat type or plan key they asked for. */
|
|
64
|
+
target: string;
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
/** An allowance crossed a threshold. Fired once per window per threshold per cycle. */
|
|
68
|
+
| {
|
|
69
|
+
type: "usage.threshold";
|
|
70
|
+
orgId: string;
|
|
71
|
+
to: string[];
|
|
72
|
+
data: {
|
|
73
|
+
/** Whose wall it is: one member's pack, or the workspace's own pool/ceiling. */
|
|
74
|
+
scope: "member" | "org";
|
|
75
|
+
member: NotifiedMember | null;
|
|
76
|
+
window: NotifiedWindow;
|
|
77
|
+
/** The threshold crossed (80, 100, …), not the exact percentage. */
|
|
78
|
+
threshold: number;
|
|
79
|
+
};
|
|
80
|
+
};
|
|
81
|
+
/** An event as a consumer receives it: what happened, plus how to not send it twice. */
|
|
82
|
+
export type DeliverableNotification = BillingNotification & {
|
|
83
|
+
/** Stable across retries and re-fires. Dedupe on this. */
|
|
84
|
+
id: string;
|
|
85
|
+
/** Epoch ms the event was emitted. */
|
|
86
|
+
at: number;
|
|
87
|
+
};
|
|
88
|
+
export interface Notifier {
|
|
89
|
+
deliver(notification: DeliverableNotification): Promise<void>;
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Who the event is for, stated as a question rather than an answer.
|
|
93
|
+
*
|
|
94
|
+
* A call site knows the workspace and, at most, a member id. Turning that into addresses is
|
|
95
|
+
* a membership question, answered once in `createEmitter` — off the hot path, because a
|
|
96
|
+
* metered call must not wait on a WorkOS round trip to send an email.
|
|
97
|
+
*/
|
|
98
|
+
export type Audience =
|
|
99
|
+
/** Every admin of the workspace. "Somebody is asking you for something." */
|
|
100
|
+
{
|
|
101
|
+
kind: "admins";
|
|
102
|
+
}
|
|
103
|
+
/** One member, by id. "Here is the answer to what you asked." */
|
|
104
|
+
| {
|
|
105
|
+
kind: "member";
|
|
106
|
+
memberId: string;
|
|
107
|
+
}
|
|
108
|
+
/** A literal address — an invitee, who is by definition not a member yet. */
|
|
109
|
+
| {
|
|
110
|
+
kind: "email";
|
|
111
|
+
email: string;
|
|
112
|
+
};
|
|
113
|
+
/**
|
|
114
|
+
* Fire an event. Returns immediately; failures are swallowed.
|
|
115
|
+
*
|
|
116
|
+
* This is the type every call site inside the library holds. `undefined` when no notifier is
|
|
117
|
+
* configured, which is why every site calls it as `notify?.(…)` — a deployment that wants no
|
|
118
|
+
* notifications pays nothing, not even the object.
|
|
119
|
+
*/
|
|
120
|
+
export type Notify = (notification: BillingNotification & {
|
|
121
|
+
id: string;
|
|
122
|
+
audience?: Audience;
|
|
123
|
+
}) => void;
|
|
124
|
+
/** `v1,<base64 hmac>` over `<id>.<timestamp>.<body>` — the Svix scheme, because that is what
|
|
125
|
+
* a consumer's inbound route is most likely to already verify. */
|
|
126
|
+
export declare function signNotification(secret: string, id: string, timestamp: number, body: string): string;
|
|
127
|
+
/**
|
|
128
|
+
* Verify a signature the way a receiver should: constant-time, and inside a replay window.
|
|
129
|
+
*
|
|
130
|
+
* Exported so a consumer's route does not hand-roll it. The one that did (an inbound email
|
|
131
|
+
* webhook) got it right, and the second one to try would be the one that skipped the
|
|
132
|
+
* timestamp check.
|
|
133
|
+
*/
|
|
134
|
+
export declare function verifyNotification(secret: string, headers: {
|
|
135
|
+
id?: string | null;
|
|
136
|
+
timestamp?: string | null;
|
|
137
|
+
signature?: string | null;
|
|
138
|
+
}, body: string, opts?: {
|
|
139
|
+
toleranceSec?: number;
|
|
140
|
+
now?: number;
|
|
141
|
+
}): boolean;
|
|
142
|
+
export interface WebhookNotifierOptions {
|
|
143
|
+
/** Where to POST. The consumer's own route, usually. */
|
|
144
|
+
endpoint: string;
|
|
145
|
+
/** Shared secret for the signature. Without one the POST is unsigned, which is only ever
|
|
146
|
+
* right for a localhost endpoint. */
|
|
147
|
+
secret?: string;
|
|
148
|
+
/** Per attempt. Default 5s — a notification must never hold anything open. */
|
|
149
|
+
timeoutMs?: number;
|
|
150
|
+
/** Attempts after the first. Default 2, backing off 250ms then 500ms. */
|
|
151
|
+
retries?: number;
|
|
152
|
+
/** Extra headers (an auth header for a gateway, say). */
|
|
153
|
+
headers?: Record<string, string>;
|
|
154
|
+
fetchImpl?: typeof fetch;
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* Deliver over HTTP, signed.
|
|
158
|
+
*
|
|
159
|
+
* Shipped rather than left to each consumer because the interesting parts are not the POST:
|
|
160
|
+
* they are the timeout (a hung endpoint must not hold a metered call open), the retry
|
|
161
|
+
* (a notification is worth one more try and not ten), and the signature (the receiver has to
|
|
162
|
+
* be able to tell the library from anyone else who learned the URL). Two consumers writing
|
|
163
|
+
* that twice is two chances to get the replay window wrong.
|
|
164
|
+
*
|
|
165
|
+
* 4xx is NOT retried: the receiver understood and refused, and repeating it just doubles the
|
|
166
|
+
* refusals. 5xx and network failures are.
|
|
167
|
+
*/
|
|
168
|
+
export declare function webhookNotifier(opts: WebhookNotifierOptions): Notifier;
|
|
169
|
+
/** For a consumer that wants an id and has nothing stable to derive one from. */
|
|
170
|
+
export declare function notificationId(prefix: string): string;
|
|
171
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/notifications/index.ts"],"names":[],"mappings":"AAmCA,8FAA8F;AAC9F,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB;AAED,yEAAyE;AACzE,MAAM,MAAM,mBAAmB;AAC7B,kFAAkF;AAChF;IACE,IAAI,EAAE,oBAAoB,CAAC;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,EAAE,EAAE,MAAM,EAAE,CAAC;IACb,IAAI,EAAE;QACJ,YAAY,EAAE,MAAM,CAAC;QACrB,KAAK,EAAE,MAAM,CAAC;QACd,QAAQ,EAAE,MAAM,CAAC;QACjB,SAAS,EAAE,MAAM,CAAC;QAClB,cAAc,EAAE,MAAM,CAAC;QACvB,aAAa,CAAC,EAAE,MAAM,CAAC;KACxB,CAAC;CACH;AACH,0FAA0F;GACxF;IACE,IAAI,EAAE,iBAAiB,CAAC;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,EAAE,EAAE,MAAM,EAAE,CAAC;IACb,IAAI,EAAE;QACJ,SAAS,EAAE,MAAM,CAAC;QAClB,MAAM,EAAE,cAAc,CAAC;QACvB,OAAO,EAAE,MAAM,CAAC;QAChB,gEAAgE;QAChE,MAAM,EAAE,cAAc,GAAG,IAAI,CAAC;KAC/B,CAAC;CACH;AACH,iFAAiF;GAC/E;IACE,IAAI,EAAE,gBAAgB,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,EAAE,EAAE,MAAM,EAAE,CAAC;IACb,IAAI,EAAE;QACJ,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;QACzB,MAAM,EAAE,cAAc,CAAC;QACvB,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,EAAE,UAAU,GAAG,QAAQ,GAAG,SAAS,CAAC;KAC5C,CAAC;CACH;AACH,8EAA8E;GAC5E;IACE,IAAI,EAAE,mBAAmB,CAAC;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,EAAE,EAAE,MAAM,EAAE,CAAC;IACb,IAAI,EAAE;QACJ,SAAS,EAAE,MAAM,CAAC;QAClB,MAAM,EAAE,cAAc,CAAC;QACvB,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;QACtB,gDAAgD;QAChD,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;CACH;AACH,uFAAuF;GACrF;IACE,IAAI,EAAE,iBAAiB,CAAC;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,EAAE,EAAE,MAAM,EAAE,CAAC;IACb,IAAI,EAAE;QACJ,gFAAgF;QAChF,KAAK,EAAE,QAAQ,GAAG,KAAK,CAAC;QACxB,MAAM,EAAE,cAAc,GAAG,IAAI,CAAC;QAC9B,MAAM,EAAE,cAAc,CAAC;QACvB,oEAAoE;QACpE,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;CACH,CAAC;AAEN,wFAAwF;AACxF,MAAM,MAAM,uBAAuB,GAAG,mBAAmB,GAAG;IAC1D,0DAA0D;IAC1D,EAAE,EAAE,MAAM,CAAC;IACX,sCAAsC;IACtC,EAAE,EAAE,MAAM,CAAC;CACZ,CAAC;AAEF,MAAM,WAAW,QAAQ;IACvB,OAAO,CAAC,YAAY,EAAE,uBAAuB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC/D;AAED;;;;;;GAMG;AACH,MAAM,MAAM,QAAQ;AAClB,4EAA4E;AAC1E;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE;AACpB,iEAAiE;GAC/D;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE;AACtC,6EAA6E;GAC3E;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAErC;;;;;;GAMG;AACH,MAAM,MAAM,MAAM,GAAG,CACnB,YAAY,EAAE,mBAAmB,GAAG;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,QAAQ,CAAA;CAAE,KACpE,IAAI,CAAC;AAMV;mEACmE;AACnE,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAGpG;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,MAAM,EACd,OAAO,EAAE;IAAE,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,EACrF,IAAI,EAAE,MAAM,EACZ,IAAI,GAAE;IAAE,YAAY,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAA;CAAO,GACjD,OAAO,CAYT;AAED,MAAM,WAAW,sBAAsB;IACrC,wDAAwD;IACxD,QAAQ,EAAE,MAAM,CAAC;IACjB;0CACsC;IACtC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,8EAA8E;IAC9E,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,yEAAyE;IACzE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,yDAAyD;IACzD,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;CAC1B;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,sBAAsB,GAAG,QAAQ,CAwCtE;AAED,iFAAiF;AACjF,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAErD"}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import { createHmac, randomUUID, timingSafeEqual } from "node:crypto";
|
|
2
|
+
// ── The shipped transport ────────────────────────────────────────────────────
|
|
3
|
+
const SIGNATURE_VERSION = "v1";
|
|
4
|
+
/** `v1,<base64 hmac>` over `<id>.<timestamp>.<body>` — the Svix scheme, because that is what
|
|
5
|
+
* a consumer's inbound route is most likely to already verify. */
|
|
6
|
+
export function signNotification(secret, id, timestamp, body) {
|
|
7
|
+
const mac = createHmac("sha256", secret).update(`${id}.${timestamp}.${body}`).digest("base64");
|
|
8
|
+
return `${SIGNATURE_VERSION},${mac}`;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Verify a signature the way a receiver should: constant-time, and inside a replay window.
|
|
12
|
+
*
|
|
13
|
+
* Exported so a consumer's route does not hand-roll it. The one that did (an inbound email
|
|
14
|
+
* webhook) got it right, and the second one to try would be the one that skipped the
|
|
15
|
+
* timestamp check.
|
|
16
|
+
*/
|
|
17
|
+
export function verifyNotification(secret, headers, body, opts = {}) {
|
|
18
|
+
const { id, timestamp, signature } = headers;
|
|
19
|
+
if (!id || !timestamp || !signature)
|
|
20
|
+
return false;
|
|
21
|
+
const ts = Number(timestamp);
|
|
22
|
+
if (!Number.isFinite(ts))
|
|
23
|
+
return false;
|
|
24
|
+
const now = opts.now ?? Date.now();
|
|
25
|
+
// A replay window, because a valid signature is valid for ever without one.
|
|
26
|
+
if (Math.abs(now - ts) > (opts.toleranceSec ?? 300) * 1000)
|
|
27
|
+
return false;
|
|
28
|
+
const expected = signNotification(secret, id, ts, body);
|
|
29
|
+
const a = Buffer.from(expected);
|
|
30
|
+
const b = Buffer.from(signature);
|
|
31
|
+
return a.length === b.length && timingSafeEqual(a, b);
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Deliver over HTTP, signed.
|
|
35
|
+
*
|
|
36
|
+
* Shipped rather than left to each consumer because the interesting parts are not the POST:
|
|
37
|
+
* they are the timeout (a hung endpoint must not hold a metered call open), the retry
|
|
38
|
+
* (a notification is worth one more try and not ten), and the signature (the receiver has to
|
|
39
|
+
* be able to tell the library from anyone else who learned the URL). Two consumers writing
|
|
40
|
+
* that twice is two chances to get the replay window wrong.
|
|
41
|
+
*
|
|
42
|
+
* 4xx is NOT retried: the receiver understood and refused, and repeating it just doubles the
|
|
43
|
+
* refusals. 5xx and network failures are.
|
|
44
|
+
*/
|
|
45
|
+
export function webhookNotifier(opts) {
|
|
46
|
+
const doFetch = opts.fetchImpl ?? fetch;
|
|
47
|
+
const retries = opts.retries ?? 2;
|
|
48
|
+
const timeoutMs = opts.timeoutMs ?? 5_000;
|
|
49
|
+
return {
|
|
50
|
+
async deliver(notification) {
|
|
51
|
+
const body = JSON.stringify(notification);
|
|
52
|
+
const at = notification.at;
|
|
53
|
+
const headers = {
|
|
54
|
+
"content-type": "application/json",
|
|
55
|
+
"billing-notification-id": notification.id,
|
|
56
|
+
"billing-notification-timestamp": String(at),
|
|
57
|
+
...(opts.secret ? { "billing-notification-signature": signNotification(opts.secret, notification.id, at, body) } : {}),
|
|
58
|
+
...opts.headers,
|
|
59
|
+
};
|
|
60
|
+
let lastError = null;
|
|
61
|
+
for (let attempt = 0; attempt <= retries; attempt++) {
|
|
62
|
+
if (attempt > 0)
|
|
63
|
+
await new Promise((r) => setTimeout(r, 250 * 2 ** (attempt - 1)));
|
|
64
|
+
try {
|
|
65
|
+
const res = await doFetch(opts.endpoint, {
|
|
66
|
+
method: "POST",
|
|
67
|
+
headers,
|
|
68
|
+
body,
|
|
69
|
+
signal: AbortSignal.timeout(timeoutMs),
|
|
70
|
+
});
|
|
71
|
+
if (res.ok)
|
|
72
|
+
return;
|
|
73
|
+
// The receiver understood and said no. Retrying cannot change its mind.
|
|
74
|
+
if (res.status >= 400 && res.status < 500)
|
|
75
|
+
return;
|
|
76
|
+
lastError = new Error(`notification endpoint answered ${res.status}`);
|
|
77
|
+
}
|
|
78
|
+
catch (e) {
|
|
79
|
+
lastError = e;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
// Exhausted. Throwing here is correct — `emitter` below is what swallows it, and a
|
|
83
|
+
// consumer calling `deliver` directly (a test, a custom transport) deserves the error.
|
|
84
|
+
throw lastError ?? new Error("notification delivery failed");
|
|
85
|
+
},
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
/** For a consumer that wants an id and has nothing stable to derive one from. */
|
|
89
|
+
export function notificationId(prefix) {
|
|
90
|
+
return `${prefix}:${randomUUID()}`;
|
|
91
|
+
}
|
|
92
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/notifications/index.ts"],"names":[],"mappings":"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"}
|
package/dist/plan-request.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { type PlanRequest } from "./ladder.js";
|
|
2
|
+
import type { Notify } from "./notifications/index.js";
|
|
2
3
|
import { type PlanCatalog } from "./plan-model.js";
|
|
3
4
|
import type { BillingAdapter } from "./types.js";
|
|
4
5
|
export { defaultSeatOf, isSatisfied, isTopSeat, nextSeatUp, nextUsageAsk, seatLadder, seatRank, seatTypeExists, usageAction, type PlanRequest, type UsageAction, } from "./ladder.js";
|
|
@@ -26,6 +27,8 @@ export declare function pendingPlanRequest(adapter: BillingAdapter, orgId: strin
|
|
|
26
27
|
export declare function requestSeatChange(adapter: BillingAdapter, orgId: string, input: {
|
|
27
28
|
memberId: string;
|
|
28
29
|
plans: PlanCatalog;
|
|
30
|
+
/** Say that they asked. See `notifications/`. */
|
|
31
|
+
notify?: Notify;
|
|
29
32
|
currentPlan?: string | null;
|
|
30
33
|
currentSeatType?: string | null;
|
|
31
34
|
/** Defaults to the next seat up. */
|
|
@@ -50,6 +53,8 @@ export declare function requestSeatChange(adapter: BillingAdapter, orgId: string
|
|
|
50
53
|
export declare function requestPlanChange(adapter: BillingAdapter, orgId: string, input: {
|
|
51
54
|
memberId: string;
|
|
52
55
|
plans: PlanCatalog;
|
|
56
|
+
/** Say that they asked. See `notifications/`. */
|
|
57
|
+
notify?: Notify;
|
|
53
58
|
currentPlan?: string | null;
|
|
54
59
|
/** Defaults to the next plan up. */
|
|
55
60
|
plan?: string;
|
|
@@ -1 +1 @@
|
|
|
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,WAAW,EACX,KAAK,WAAW,EAChB,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,
|
|
1
|
+
{"version":3,"file":"plan-request.d.ts","sourceRoot":"","sources":["../src/plan-request.ts"],"names":[],"mappings":"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"}
|
package/dist/plan-request.js
CHANGED
|
@@ -131,6 +131,7 @@ export async function requestSeatChange(adapter, orgId, input) {
|
|
|
131
131
|
if (!(await write(adapter, orgId, [...list, request]))) {
|
|
132
132
|
return { ok: false, reason: "queue_full" };
|
|
133
133
|
}
|
|
134
|
+
notifyRequested(input.notify, orgId, request);
|
|
134
135
|
return { ok: true, id: request.id, seatType: target };
|
|
135
136
|
}
|
|
136
137
|
/**
|
|
@@ -177,8 +178,26 @@ export async function requestPlanChange(adapter, orgId, input) {
|
|
|
177
178
|
if (!(await write(adapter, orgId, [...list.filter((r) => r.id !== request.id), request]))) {
|
|
178
179
|
return { ok: false, reason: "queue_full" };
|
|
179
180
|
}
|
|
181
|
+
notifyRequested(input.notify, orgId, request);
|
|
180
182
|
return { ok: true, id: request.id, plan: target };
|
|
181
183
|
}
|
|
184
|
+
/** The rung nobody's money can climb alone: the admins are the only ones who can answer. */
|
|
185
|
+
function notifyRequested(notify, orgId, request) {
|
|
186
|
+
notify?.({
|
|
187
|
+
id: `upgrade-requested:${request.id}`,
|
|
188
|
+
type: "upgrade.requested",
|
|
189
|
+
orgId,
|
|
190
|
+
to: [],
|
|
191
|
+
audience: { kind: "admins" },
|
|
192
|
+
data: {
|
|
193
|
+
requestId: request.id,
|
|
194
|
+
member: { id: request.memberId, email: null },
|
|
195
|
+
// `kind` is optional on the record for a legacy row; these two callers always set it.
|
|
196
|
+
kind: request.kind ?? "plan",
|
|
197
|
+
target: request.plan,
|
|
198
|
+
},
|
|
199
|
+
});
|
|
200
|
+
}
|
|
182
201
|
/**
|
|
183
202
|
* Mark an ask handled.
|
|
184
203
|
*
|
package/dist/plan-request.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plan-request.js","sourceRoot":"","sources":["../src/plan-request.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,WAAW,EACX,UAAU,EACV,WAAW,EACX,QAAQ,GAET,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"plan-request.js","sourceRoot":"","sources":["../src/plan-request.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,6 +2,7 @@ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
|
2
2
|
import type { BillingAdapter, ResolvedConfig } from "../types.js";
|
|
3
3
|
import { type PlanCatalog } from "../plans.js";
|
|
4
4
|
import { type ToolCapabilities } from "../plan-model.js";
|
|
5
|
+
import type { Notify } from "../notifications/index.js";
|
|
5
6
|
import type { UsageLedger } from "../usage-ledger.js";
|
|
6
7
|
export declare function registerManagementTools(server: McpServer, adapter: BillingAdapter, config: ResolvedConfig, opts?: {
|
|
7
8
|
plans?: PlanCatalog;
|
|
@@ -15,5 +16,7 @@ export declare function registerManagementTools(server: McpServer, adapter: Bill
|
|
|
15
16
|
* reads 0 — `get_usage_limits` reporting allowance a call would be refused for.
|
|
16
17
|
*/
|
|
17
18
|
usageLedger?: UsageLedger;
|
|
19
|
+
/** Say that somebody asked, or that an admin answered. See `notifications/`. */
|
|
20
|
+
notify?: Notify;
|
|
18
21
|
}, caps?: ToolCapabilities): void;
|
|
19
22
|
//# sourceMappingURL=management.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"management.d.ts","sourceRoot":"","sources":["../../src/tools/management.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEpE,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAclE,OAAO,EAA6B,KAAK,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1E,OAAO,EAAyB,KAAK,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEhF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAqBtD,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,SAAS,EACjB,OAAO,EAAE,cAAc,EACvB,MAAM,EAAE,cAAc,EACtB,IAAI,GAAE;IACJ,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IACxD;;;;;;;OAOG;IACH,WAAW,CAAC,EAAE,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"management.d.ts","sourceRoot":"","sources":["../../src/tools/management.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEpE,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAclE,OAAO,EAA6B,KAAK,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1E,OAAO,EAAyB,KAAK,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEhF,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAqBtD,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,SAAS,EACjB,OAAO,EAAE,cAAc,EACvB,MAAM,EAAE,cAAc,EACtB,IAAI,GAAE;IACJ,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IACxD;;;;;;;OAOG;IACH,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,gFAAgF;IAChF,MAAM,CAAC,EAAE,MAAM,CAAC;CACZ,EACN,IAAI,GAAE,gBAAwC,QA2jB/C"}
|
package/dist/tools/management.js
CHANGED
|
@@ -368,7 +368,7 @@ not what a reasonable top-up is.`, {
|
|
|
368
368
|
amount: amount ?? 0,
|
|
369
369
|
cycle,
|
|
370
370
|
createdAt: new Date().toISOString(),
|
|
371
|
-
});
|
|
371
|
+
}, opts.notify);
|
|
372
372
|
return json({ status: "requested", id, member_id, amount: amount ?? 0, cycle });
|
|
373
373
|
}
|
|
374
374
|
if (!opts.plans)
|
|
@@ -400,6 +400,7 @@ not what a reasonable top-up is.`, {
|
|
|
400
400
|
plans: opts.plans,
|
|
401
401
|
plan,
|
|
402
402
|
memberId: member_id,
|
|
403
|
+
notify: opts.notify,
|
|
403
404
|
...(amount != null ? { amount } : {}),
|
|
404
405
|
...(target === undefined
|
|
405
406
|
? {}
|
|
@@ -446,7 +447,7 @@ member for the cycle (added on top of their seat pack by the meter).`, { request
|
|
|
446
447
|
const auth = await enforceAdmin(adapter, "approve_top_up");
|
|
447
448
|
if ("isError" in auth)
|
|
448
449
|
return auth;
|
|
449
|
-
const r = await approveTopUp(adapter, auth.orgId, request_id);
|
|
450
|
+
const r = await approveTopUp(adapter, auth.orgId, request_id, opts.notify);
|
|
450
451
|
if (!r.ok)
|
|
451
452
|
return err(`Request not found or already handled: ${request_id}`);
|
|
452
453
|
return json({ status: "approved", request_id });
|
|
@@ -497,6 +498,7 @@ request it, as a percentage of their own seat pack (default 25%). Admin action.`
|
|
|
497
498
|
plans: opts.plans,
|
|
498
499
|
plan,
|
|
499
500
|
memberId: member_id,
|
|
501
|
+
notify: opts.notify,
|
|
500
502
|
// An explicit credit figure wins; otherwise the percentage — the plan's own
|
|
501
503
|
// default when the caller named none.
|
|
502
504
|
...(credits != null ? { amount: credits } : { percent }),
|
|
@@ -520,7 +522,7 @@ request it, as a percentage of their own seat pack (default 25%). Admin action.`
|
|
|
520
522
|
const auth = await enforceAdmin(adapter, "deny_top_up");
|
|
521
523
|
if ("isError" in auth)
|
|
522
524
|
return auth;
|
|
523
|
-
const r = await denyTopUp(adapter, auth.orgId, request_id);
|
|
525
|
+
const r = await denyTopUp(adapter, auth.orgId, request_id, opts.notify);
|
|
524
526
|
if (!r.ok)
|
|
525
527
|
return err(`Request not found or already handled: ${request_id}`);
|
|
526
528
|
return json({ status: "denied", request_id });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"management.js","sourceRoot":"","sources":["../../src/tools/management.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"management.js","sourceRoot":"","sources":["../../src/tools/management.ts"],"names":[],"mappings":"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"}
|