@obul.ai/obulx-x402 0.2.1 → 0.2.2

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.
@@ -0,0 +1,2 @@
1
+ export { obulxFetchDirect, selectPaymentRequirement } from "./lib.js";
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,wBAAwB,EAAE,MAAM,UAAU,CAAA"}
package/dist/index.js ADDED
@@ -0,0 +1,2 @@
1
+ export { obulxFetchDirect, selectPaymentRequirement } from "./lib.js";
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,wBAAwB,EAAE,MAAM,UAAU,CAAA"}
package/dist/lib.d.ts ADDED
@@ -0,0 +1,16 @@
1
+ import type { ObulxFetchOptions, ObulxResponse } from "@obul.ai/obulx";
2
+ type PaymentRequirement = {
3
+ scheme?: string;
4
+ network?: string;
5
+ asset?: string;
6
+ amount?: string | number;
7
+ maxAmountRequired?: string | number;
8
+ [key: string]: unknown;
9
+ };
10
+ export declare function selectPaymentRequirement(input: unknown, options: {
11
+ networks?: string[];
12
+ asset?: string;
13
+ }): PaymentRequirement;
14
+ export declare function obulxFetchDirect(options: ObulxFetchOptions): Promise<ObulxResponse>;
15
+ export {};
16
+ //# sourceMappingURL=lib.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lib.d.ts","sourceRoot":"","sources":["../src/lib.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AAEtE,KAAK,kBAAkB,GAAG;IACxB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACxB,iBAAiB,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACnC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CACvB,CAAA;AAYD,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,OAAO,EACd,OAAO,EAAE;IAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,GAC/C,kBAAkB,CAwBpB;AA2QD,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,aAAa,CAAC,CA4FzF"}
package/dist/lib.js ADDED
@@ -0,0 +1,343 @@
1
+ import { wrapFetchWithPayment } from "x402-fetch";
2
+ import { privateKeyToAccount } from "viem/accounts";
3
+ const REDACTED = "<redacted>";
4
+ const DEFAULT_MAX_VALUE = 10n ** 30n;
5
+ export function selectPaymentRequirement(input, options) {
6
+ const requirements = normalizeRequirements(input);
7
+ if (requirements.length === 0) {
8
+ throw new Error("No payment requirements available");
9
+ }
10
+ const asset = options.asset?.toLowerCase();
11
+ const filteredByAsset = asset
12
+ ? requirements.filter((req) => (req.asset ?? "").toString().toLowerCase() === asset)
13
+ : requirements;
14
+ if (asset && filteredByAsset.length === 0) {
15
+ throw new Error(`No payment requirements matched asset ${options.asset}`);
16
+ }
17
+ if (options.networks && options.networks.length > 0) {
18
+ for (const network of options.networks) {
19
+ const match = filteredByAsset.find((req) => matchesNetwork(req, network));
20
+ if (match)
21
+ return match;
22
+ }
23
+ throw new Error(`No payment requirements matched networks: ${options.networks.join(", ")}`);
24
+ }
25
+ return filteredByAsset[0];
26
+ }
27
+ function matchesNetwork(requirement, network) {
28
+ const target = network.toLowerCase();
29
+ const requirementNetwork = extractNetwork(requirement);
30
+ if (!requirementNetwork)
31
+ return false;
32
+ return requirementNetwork.toLowerCase() === target;
33
+ }
34
+ function extractNetwork(requirement) {
35
+ const network = requirement.network;
36
+ if (typeof network === "string")
37
+ return network;
38
+ if (typeof network === "number")
39
+ return String(network);
40
+ if (typeof network === "object" && network !== null) {
41
+ const value = network.id;
42
+ if (typeof value === "string")
43
+ return value;
44
+ if (typeof value === "number")
45
+ return String(value);
46
+ }
47
+ return undefined;
48
+ }
49
+ function normalizeRequirements(input) {
50
+ if (!input)
51
+ return [];
52
+ if (Array.isArray(input)) {
53
+ return input.flatMap((item) => normalizeRequirements(item));
54
+ }
55
+ if (typeof input !== "object")
56
+ return [];
57
+ const obj = input;
58
+ if ("paymentRequirements" in obj) {
59
+ return normalizeRequirements(obj.paymentRequirements);
60
+ }
61
+ if ("accepts" in obj) {
62
+ return normalizeRequirements(obj.accepts);
63
+ }
64
+ if ("paymentRequired" in obj) {
65
+ return normalizeRequirements(obj.paymentRequired);
66
+ }
67
+ if ("payment_required" in obj) {
68
+ return normalizeRequirements(obj.payment_required);
69
+ }
70
+ if ("requirements" in obj) {
71
+ return normalizeRequirements(obj.requirements);
72
+ }
73
+ if (looksLikeRequirement(obj)) {
74
+ return [obj];
75
+ }
76
+ return [];
77
+ }
78
+ function looksLikeRequirement(obj) {
79
+ return "scheme" in obj || "network" in obj || "asset" in obj || "amount" in obj;
80
+ }
81
+ function parseAmount(requirement) {
82
+ const value = requirement.amount ?? requirement.maxAmountRequired;
83
+ if (typeof value === "number" && Number.isFinite(value)) {
84
+ return { raw: String(value), number: value };
85
+ }
86
+ if (typeof value === "string") {
87
+ const trimmed = value.trim();
88
+ if (/^\d+$/.test(trimmed)) {
89
+ try {
90
+ return { raw: trimmed, bigint: BigInt(trimmed) };
91
+ }
92
+ catch {
93
+ return { raw: trimmed };
94
+ }
95
+ }
96
+ const asNumber = Number(trimmed);
97
+ if (Number.isFinite(asNumber)) {
98
+ return { raw: trimmed, number: asNumber };
99
+ }
100
+ return { raw: trimmed };
101
+ }
102
+ return { raw: "" };
103
+ }
104
+ function parseLimit(limit) {
105
+ if (limit == null)
106
+ return undefined;
107
+ if (!/^\d+$/.test(limit.trim())) {
108
+ throw new Error("--auto-approve-limit must be an integer string");
109
+ }
110
+ return BigInt(limit.trim());
111
+ }
112
+ function normalizePrivateKey(key) {
113
+ const trimmed = key.trim();
114
+ if (trimmed.startsWith("0x"))
115
+ return trimmed;
116
+ return `0x${trimmed}`;
117
+ }
118
+ async function confirmPayment(requirement, options) {
119
+ const isTTY = Boolean(options.stdin.isTTY);
120
+ if (!isTTY) {
121
+ throw new Error("Payment requires confirmation but stdin is not interactive");
122
+ }
123
+ const { stderr, stdin } = options;
124
+ const amount = parseAmount(requirement);
125
+ const displayAmount = amount.raw || "unknown";
126
+ const asset = requirement.asset ?? "unknown";
127
+ return new Promise((resolve) => {
128
+ stderr.write(`Approve payment of ${displayAmount} ${asset}? [y/N]: `);
129
+ let buffer = "";
130
+ const onData = (chunk) => {
131
+ buffer += chunk.toString();
132
+ if (!buffer.includes("\n"))
133
+ return;
134
+ cleanup();
135
+ const answer = buffer.trim().toLowerCase();
136
+ resolve(answer === "y" || answer === "yes");
137
+ };
138
+ const onEnd = () => {
139
+ cleanup();
140
+ resolve(false);
141
+ };
142
+ const cleanup = () => {
143
+ stdin.off("data", onData);
144
+ stdin.off("end", onEnd);
145
+ };
146
+ stdin.on("data", onData);
147
+ stdin.on("end", onEnd);
148
+ });
149
+ }
150
+ function redactHeaders(headers) {
151
+ const lines = [];
152
+ headers.forEach((value, key) => {
153
+ if (key.toLowerCase() === "authorization" || key.toLowerCase() === "x-obul-api-key") {
154
+ lines.push(`${key}: ${REDACTED}`);
155
+ return;
156
+ }
157
+ lines.push(`${key}: ${value}`);
158
+ });
159
+ return lines;
160
+ }
161
+ function logResponse(res, stderr, label) {
162
+ const prefix = label ? `[${label}] ` : "";
163
+ stderr.write(`${prefix}${res.status} ${res.statusText}\n`);
164
+ for (const line of redactHeaders(res.headers)) {
165
+ stderr.write(`${prefix}${line}\n`);
166
+ }
167
+ }
168
+ function logRequest(method, url, headers, stderr, label) {
169
+ const prefix = label ? `[${label}] ` : "";
170
+ stderr.write(`${prefix}${method.toUpperCase()} ${url}\n`);
171
+ for (const line of redactHeaders(headers)) {
172
+ stderr.write(`${prefix}${line}\n`);
173
+ }
174
+ }
175
+ function resolveRequestForLogging(input, init) {
176
+ const method = init?.method ?? (input instanceof Request ? input.method : "GET");
177
+ const url = input instanceof Request ? input.url : input.toString();
178
+ const headers = new Headers(init?.headers ?? (input instanceof Request ? input.headers : undefined));
179
+ return { method, url, headers };
180
+ }
181
+ async function toResponseLike(response) {
182
+ const buffer = new Uint8Array(await response.arrayBuffer());
183
+ const headers = {};
184
+ response.headers.forEach((value, key) => {
185
+ headers[key] = value;
186
+ });
187
+ return {
188
+ status: response.status,
189
+ statusText: response.statusText,
190
+ headers,
191
+ body: buffer,
192
+ url: response.url
193
+ };
194
+ }
195
+ async function parsePaymentRequired(response) {
196
+ const header = response.headers.get("payment-required") ?? response.headers.get("x-payment-required");
197
+ if (header) {
198
+ const fromHeader = parsePaymentRequiredHeader(header);
199
+ if (fromHeader) {
200
+ return { raw: fromHeader, requirements: normalizeRequirements(fromHeader) };
201
+ }
202
+ }
203
+ try {
204
+ const body = await response.json();
205
+ return { raw: body, requirements: normalizeRequirements(body) };
206
+ }
207
+ catch {
208
+ return { raw: undefined, requirements: [] };
209
+ }
210
+ }
211
+ function parsePaymentRequiredHeader(header) {
212
+ const trimmed = header.trim();
213
+ if (!trimmed)
214
+ return undefined;
215
+ try {
216
+ return JSON.parse(trimmed);
217
+ }
218
+ catch {
219
+ try {
220
+ const decoded = Buffer.from(trimmed, "base64").toString("utf8");
221
+ return JSON.parse(decoded);
222
+ }
223
+ catch {
224
+ return undefined;
225
+ }
226
+ }
227
+ }
228
+ function createProbeFetch(fetcher, probe, options) {
229
+ let used = false;
230
+ return async (input, init) => {
231
+ if (!used) {
232
+ used = true;
233
+ return probe;
234
+ }
235
+ if (options?.logFinal && options.stderr) {
236
+ const resolved = resolveRequestForLogging(input, init);
237
+ logRequest(resolved.method, resolved.url, resolved.headers, options.stderr, "final request");
238
+ }
239
+ const response = await fetcher(input, init);
240
+ if (options?.logFinal && options.stderr) {
241
+ logResponse(response, options.stderr, "final response");
242
+ }
243
+ return response;
244
+ };
245
+ }
246
+ function pickMatchingRequirement(requirements, selected) {
247
+ if (requirements.length === 0) {
248
+ throw new Error("No payment requirements available");
249
+ }
250
+ const selectedAmount = selected.amount ?? selected.maxAmountRequired;
251
+ const matches = requirements.filter((req) => {
252
+ const sameNetwork = selected.network ? matchesNetwork(req, selected.network) : true;
253
+ const sameAsset = selected.asset
254
+ ? (req.asset ?? "").toString().toLowerCase() === selected.asset.toString().toLowerCase()
255
+ : true;
256
+ const reqAmount = req.amount ?? req.maxAmountRequired;
257
+ const sameAmount = selectedAmount != null ? String(reqAmount ?? "") === String(selectedAmount) : true;
258
+ return sameNetwork && sameAsset && sameAmount;
259
+ });
260
+ return matches[0] ?? requirements[0];
261
+ }
262
+ export async function obulxFetchDirect(options) {
263
+ if (options.obulProxy) {
264
+ throw new Error("Direct x402 mode does not accept obulProxy");
265
+ }
266
+ const fetcher = options.fetch ?? globalThis.fetch;
267
+ if (!fetcher) {
268
+ throw new Error("fetch is not available in this environment");
269
+ }
270
+ if (!options.networks || options.networks.length === 0) {
271
+ throw new Error("--network is required for direct x402 mode");
272
+ }
273
+ const limit = parseLimit(options.autoApproveLimit);
274
+ if (!limit) {
275
+ throw new Error("--auto-approve-limit is required for direct x402 mode");
276
+ }
277
+ const privateKey = options.privateKey;
278
+ if (!privateKey) {
279
+ throw new Error("Missing private key: set OBUL_X402_PRIVATE_KEY or PRIVATE_KEY");
280
+ }
281
+ const stderr = options.stderr ?? process.stderr;
282
+ const stdin = options.stdin ?? process.stdin;
283
+ const method = options.method ?? (options.body ? "POST" : "GET");
284
+ const headers = new Headers(options.headers ?? {});
285
+ const verbose = options.verbose ?? 0;
286
+ const requestUrl = new URL(options.url);
287
+ const init = {
288
+ method,
289
+ headers,
290
+ body: options.body
291
+ };
292
+ const probe = await fetcher(requestUrl.toString(), init);
293
+ if (verbose >= 3) {
294
+ logRequest(method, requestUrl.toString(), headers, stderr, "probe request");
295
+ logResponse(probe, stderr, "probe response");
296
+ }
297
+ if (probe.status !== 402) {
298
+ if (verbose >= 1) {
299
+ if (verbose >= 2) {
300
+ logRequest(method, requestUrl.toString(), headers, stderr, "final request");
301
+ logResponse(probe, stderr, "final response");
302
+ }
303
+ else {
304
+ logResponse(probe, stderr);
305
+ }
306
+ }
307
+ return toResponseLike(probe);
308
+ }
309
+ const parsed = await parsePaymentRequired(probe.clone());
310
+ if (parsed.requirements.length === 0) {
311
+ throw new Error("Received 402 but could not parse payment requirements");
312
+ }
313
+ const selected = selectPaymentRequirement(parsed.raw ?? parsed.requirements, {
314
+ networks: options.networks,
315
+ asset: options.asset
316
+ });
317
+ const amount = parseAmount(selected);
318
+ if (amount.bigint != null) {
319
+ if (amount.bigint > limit) {
320
+ const approved = await confirmPayment(selected, { stderr, stdin });
321
+ if (!approved)
322
+ throw new Error("Payment declined");
323
+ }
324
+ }
325
+ else if (amount.number != null) {
326
+ const limitNumber = Number(limit);
327
+ if (Number.isFinite(limitNumber) && amount.number > limitNumber) {
328
+ const approved = await confirmPayment(selected, { stderr, stdin });
329
+ if (!approved)
330
+ throw new Error("Payment declined");
331
+ }
332
+ }
333
+ const account = privateKeyToAccount(normalizePrivateKey(privateKey));
334
+ const fetchWithProbe = createProbeFetch(fetcher, probe, { logFinal: verbose >= 2, stderr });
335
+ const selector = (requirements) => pickMatchingRequirement(requirements, selected);
336
+ const fetchWithPayment = wrapFetchWithPayment(fetchWithProbe, account, DEFAULT_MAX_VALUE, selector);
337
+ const paidResponse = await fetchWithPayment(requestUrl.toString(), init);
338
+ if (verbose >= 1 && verbose < 2) {
339
+ logResponse(paidResponse, stderr);
340
+ }
341
+ return toResponseLike(paidResponse);
342
+ }
343
+ //# sourceMappingURL=lib.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lib.js","sourceRoot":"","sources":["../src/lib.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@obul.ai/obulx-x402",
3
- "version": "0.2.1",
3
+ "version": "0.2.2",
4
4
  "description": "Direct x402 support for obulx.",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",