@compose-market/core 0.1.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/http.js ADDED
@@ -0,0 +1,358 @@
1
+ import { BadRequestError, buildApiError, ComposeConnectionError, ComposeTimeoutError, RateLimitError, } from "./errors.js";
2
+ const RETRYABLE_STATUSES = new Set([408, 409, 425, 429, 500, 502, 503, 504]);
3
+ export const SDK_CLIENT_HEADER = "x-compose-sdk";
4
+ export function isBrowserLikeRuntime() {
5
+ const root = globalThis;
6
+ const workerLike = typeof root.WorkerGlobalScope !== "undefined" && root.self instanceof root.WorkerGlobalScope;
7
+ const navigatorLike = typeof navigator !== "undefined" && "serviceWorker" in navigator;
8
+ const windowLike = typeof window === "object" && typeof window.document !== "undefined";
9
+ return workerLike || navigatorLike || windowLike;
10
+ }
11
+ export function applySdkClientHeaders(headers, userAgent) {
12
+ if (isBrowserLikeRuntime()) {
13
+ headers.delete("User-Agent");
14
+ headers.set(SDK_CLIENT_HEADER, userAgent);
15
+ return;
16
+ }
17
+ if (!headers.has("User-Agent")) {
18
+ headers.set("User-Agent", userAgent);
19
+ }
20
+ }
21
+ function delay(ms, signal) {
22
+ return new Promise((resolve, reject) => {
23
+ const timer = setTimeout(() => {
24
+ signal?.removeEventListener("abort", onAbort);
25
+ resolve();
26
+ }, ms);
27
+ const onAbort = () => {
28
+ clearTimeout(timer);
29
+ reject(new ComposeTimeoutError({ message: "request aborted" }));
30
+ };
31
+ if (signal) {
32
+ if (signal.aborted) {
33
+ clearTimeout(timer);
34
+ reject(new ComposeTimeoutError({ message: "request aborted" }));
35
+ return;
36
+ }
37
+ signal.addEventListener("abort", onAbort, { once: true });
38
+ }
39
+ });
40
+ }
41
+ function combineSignals(a, b) {
42
+ if (!a)
43
+ return b ?? new AbortController().signal;
44
+ if (!b)
45
+ return a;
46
+ const controller = new AbortController();
47
+ const forward = () => controller.abort();
48
+ if (a.aborted || b.aborted)
49
+ controller.abort();
50
+ a.addEventListener("abort", forward, { once: true });
51
+ b.addEventListener("abort", forward, { once: true });
52
+ return controller.signal;
53
+ }
54
+ function buildQueryString(query) {
55
+ if (!query)
56
+ return "";
57
+ const params = new URLSearchParams();
58
+ for (const [key, value] of Object.entries(query)) {
59
+ if (value === undefined || value === null)
60
+ continue;
61
+ params.append(key, String(value));
62
+ }
63
+ const encoded = params.toString();
64
+ return encoded.length > 0 ? `?${encoded}` : "";
65
+ }
66
+ function normalizeUserAddress(value) {
67
+ const trimmed = value.trim().toLowerCase();
68
+ if (!/^0x[a-f0-9]{40}$/.test(trimmed)) {
69
+ throw new BadRequestError({ message: "userAddress must be a valid 0x-prefixed EVM address" });
70
+ }
71
+ return trimmed;
72
+ }
73
+ export function normalizeAtomicAmount(value, fieldName) {
74
+ const trimmed = value.trim();
75
+ if (!/^\d+$/.test(trimmed) || BigInt(trimmed) <= 0n) {
76
+ throw new BadRequestError({ message: `${fieldName} must be a positive integer string` });
77
+ }
78
+ return trimmed.replace(/^0+(?=\d)/, "");
79
+ }
80
+ export function buildHeaders(input) {
81
+ const headers = new Headers();
82
+ for (const [key, value] of Object.entries(input.defaultHeaders)) {
83
+ headers.set(key, value);
84
+ }
85
+ if (input.bodyType === "json") {
86
+ headers.set("Content-Type", "application/json");
87
+ }
88
+ if (input.authJwt) {
89
+ headers.set("Authorization", `Bearer ${input.authJwt}`);
90
+ }
91
+ else if (input.composeKey) {
92
+ headers.set("Authorization", `Bearer ${input.composeKey}`);
93
+ }
94
+ if (input.userAddress) {
95
+ headers.set("x-session-user-address", normalizeUserAddress(input.userAddress));
96
+ }
97
+ if (typeof input.chainId === "number" && Number.isInteger(input.chainId) && input.chainId > 0) {
98
+ headers.set("x-chain-id", String(input.chainId));
99
+ }
100
+ if (input.paymentSignature) {
101
+ headers.set("PAYMENT-SIGNATURE", input.paymentSignature);
102
+ }
103
+ if (input.x402MaxAmountWei) {
104
+ headers.set("x-x402-max-amount-wei", normalizeAtomicAmount(input.x402MaxAmountWei, "x402MaxAmountWei"));
105
+ }
106
+ if (input.idempotencyKey) {
107
+ headers.set("x-idempotency-key", input.idempotencyKey);
108
+ }
109
+ if (input.composeRunId) {
110
+ headers.set("x-compose-run-id", input.composeRunId);
111
+ }
112
+ if (input.requestId) {
113
+ headers.set("x-request-id", input.requestId);
114
+ }
115
+ if (input.extra) {
116
+ for (const [key, value] of Object.entries(input.extra)) {
117
+ if (typeof value === "string" && value.length > 0) {
118
+ headers.set(key, value);
119
+ }
120
+ }
121
+ }
122
+ applySdkClientHeaders(headers, input.userAgent);
123
+ return headers;
124
+ }
125
+ function parseErrorBody(body) {
126
+ if (typeof body === "string") {
127
+ const message = body.trim().slice(0, 1_000);
128
+ return { code: "internal_error", message: message || "Request failed" };
129
+ }
130
+ if (body && typeof body === "object") {
131
+ const envelope = body;
132
+ if (envelope.error && typeof envelope.error === "object") {
133
+ return {
134
+ code: envelope.error.code || "internal_error",
135
+ message: typeof envelope.error.message === "string" ? envelope.error.message : "Request failed",
136
+ details: envelope.error.details,
137
+ };
138
+ }
139
+ const pr = body;
140
+ if (pr.x402Version === 2 && Array.isArray(pr.accepts)) {
141
+ const rawError = typeof pr.error === "string" ? pr.error : "Payment required";
142
+ return { code: "payment_required", message: rawError };
143
+ }
144
+ const legacy = body;
145
+ if (typeof legacy.error === "string") {
146
+ return { code: (typeof legacy.code === "string" ? legacy.code : "internal_error"), message: legacy.error };
147
+ }
148
+ if (typeof legacy.message === "string") {
149
+ return { code: "internal_error", message: legacy.message };
150
+ }
151
+ }
152
+ return { code: "internal_error", message: "Request failed" };
153
+ }
154
+ export function extractPaymentRequired(body, header) {
155
+ if (typeof header === "string" && header.length > 0) {
156
+ try {
157
+ const normalized = header.replace(/-/g, "+").replace(/_/g, "/");
158
+ const padding = normalized.length % 4 === 0 ? "" : "=".repeat(4 - (normalized.length % 4));
159
+ const decoded = typeof globalThis.atob === "function"
160
+ ? globalThis.atob(normalized + padding)
161
+ : Buffer.from(normalized + padding, "base64").toString("utf-8");
162
+ const bytes = new Uint8Array(decoded.length);
163
+ for (let i = 0; i < decoded.length; i += 1)
164
+ bytes[i] = decoded.charCodeAt(i);
165
+ const text = new TextDecoder("utf-8").decode(bytes);
166
+ const parsed = JSON.parse(text);
167
+ if (parsed && parsed.x402Version === 2 && Array.isArray(parsed.accepts)) {
168
+ return parsed;
169
+ }
170
+ }
171
+ catch {
172
+ // fall through
173
+ }
174
+ }
175
+ if (body && typeof body === "object") {
176
+ const record = body;
177
+ if (record.x402Version === 2 && Array.isArray(record.accepts) && record.resource) {
178
+ return record;
179
+ }
180
+ }
181
+ return null;
182
+ }
183
+ export class HttpClient {
184
+ options;
185
+ constructor(options) {
186
+ this.options = options;
187
+ }
188
+ request(config) {
189
+ let cachedResponse = null;
190
+ let cachedParsed = null;
191
+ const runResponse = () => {
192
+ if (!cachedResponse)
193
+ cachedResponse = this.executeRaw(config);
194
+ return cachedResponse;
195
+ };
196
+ const runParsed = () => {
197
+ if (!cachedParsed) {
198
+ cachedParsed = (async () => {
199
+ const response = await runResponse();
200
+ const data = config.expectStream
201
+ ? undefined
202
+ : await this.parseResponseBody(response.clone());
203
+ return { data, response };
204
+ })();
205
+ }
206
+ return cachedParsed;
207
+ };
208
+ return {
209
+ then: (onFulfilled, onRejected) => runParsed().then(({ data }) => data).then(onFulfilled, onRejected),
210
+ catch: (onRejected) => runParsed().then(({ data }) => data).catch(onRejected),
211
+ finally: (onFinally) => runParsed().then(({ data }) => data).finally(onFinally),
212
+ asResponse: async () => runResponse(),
213
+ withResponse: async () => runParsed(),
214
+ };
215
+ }
216
+ async executeRaw(config) {
217
+ const query = buildQueryString(config.query);
218
+ const url = `${this.options.baseUrl}${config.path}${query}`;
219
+ const bodyType = config.bodyType
220
+ ?? (config.rawBody !== undefined ? "raw" : "json");
221
+ const retry = { ...this.options.retry, ...(config.retry ?? {}) };
222
+ const timeoutMs = config.timeoutMs ?? this.options.timeoutMs;
223
+ const headers = buildHeaders({
224
+ ...(config.headers ?? {}),
225
+ defaultHeaders: this.options.defaultHeaders,
226
+ userAgent: this.options.userAgent,
227
+ bodyType,
228
+ });
229
+ const body = this.encodeBody(config, bodyType);
230
+ let attempt = 0;
231
+ let lastError = null;
232
+ while (true) {
233
+ attempt += 1;
234
+ const attemptController = new AbortController();
235
+ const timeoutHandle = setTimeout(() => attemptController.abort(), timeoutMs);
236
+ const signal = combineSignals(config.signal, attemptController.signal);
237
+ let response;
238
+ try {
239
+ response = await this.options.fetch(url, {
240
+ method: config.method,
241
+ headers,
242
+ body,
243
+ signal,
244
+ });
245
+ }
246
+ catch (fetchError) {
247
+ clearTimeout(timeoutHandle);
248
+ const isAbort = signal.aborted || (fetchError instanceof Error && (fetchError.name === "AbortError" || fetchError.message.includes("aborted")));
249
+ if (isAbort && config.signal?.aborted) {
250
+ throw new ComposeTimeoutError({ message: "request aborted" });
251
+ }
252
+ if (isAbort) {
253
+ lastError = new ComposeTimeoutError({
254
+ message: `request timed out after ${timeoutMs}ms`,
255
+ });
256
+ }
257
+ else {
258
+ lastError = new ComposeConnectionError({
259
+ message: fetchError instanceof Error ? fetchError.message : String(fetchError),
260
+ cause: fetchError,
261
+ });
262
+ }
263
+ if (config.doNotRetry || attempt > retry.maxRetries)
264
+ throw lastError;
265
+ await delay(this.computeBackoff(attempt, retry), config.signal);
266
+ continue;
267
+ }
268
+ clearTimeout(timeoutHandle);
269
+ if (response.ok) {
270
+ return response;
271
+ }
272
+ const errorBody = await this.safeReadJson(response);
273
+ const parsedError = parseErrorBody(errorBody);
274
+ const parsed = response.status === 429 && parsedError.code === "internal_error"
275
+ ? { ...parsedError, code: "rate_limited" }
276
+ : parsedError;
277
+ const requestId = response.headers.get("x-request-id") ?? response.headers.get("X-Request-Id") ?? undefined;
278
+ const retryAfterHeader = response.headers.get("retry-after");
279
+ const retryAfter = retryAfterHeader ? Math.max(0, parseInt(retryAfterHeader, 10)) : undefined;
280
+ const paymentRequired = response.status === 402
281
+ ? extractPaymentRequired(errorBody, response.headers.get("payment-required") ?? response.headers.get("PAYMENT-REQUIRED"))
282
+ : null;
283
+ const apiError = buildApiError({
284
+ status: response.status,
285
+ code: parsed.code,
286
+ message: parsed.message,
287
+ details: parsed.details,
288
+ requestId: requestId ?? undefined,
289
+ headers: headersToRecord(response.headers),
290
+ body: errorBody,
291
+ paymentRequired,
292
+ paymentRequiredHeader: response.headers.get("payment-required") ?? response.headers.get("PAYMENT-REQUIRED"),
293
+ retryAfter,
294
+ });
295
+ const isRetryable = RETRYABLE_STATUSES.has(response.status) && !config.doNotRetry;
296
+ if (isRetryable && attempt <= retry.maxRetries) {
297
+ const wait = apiError instanceof RateLimitError && apiError.retryAfter
298
+ ? apiError.retryAfter * 1000
299
+ : this.computeBackoff(attempt, retry);
300
+ await delay(wait, config.signal);
301
+ continue;
302
+ }
303
+ throw apiError;
304
+ }
305
+ }
306
+ computeBackoff(attempt, retry) {
307
+ const base = Math.min(retry.initialDelayMs * (2 ** (attempt - 1)), retry.maxDelayMs);
308
+ if (!retry.jitter)
309
+ return base;
310
+ return Math.random() * base;
311
+ }
312
+ encodeBody(config, bodyType) {
313
+ if (config.method === "GET" || config.method === "HEAD")
314
+ return undefined;
315
+ if (config.rawBody !== undefined)
316
+ return config.rawBody;
317
+ if (bodyType === "json" && config.body !== undefined)
318
+ return JSON.stringify(config.body);
319
+ return undefined;
320
+ }
321
+ async parseResponseBody(response) {
322
+ const contentType = response.headers.get("content-type") || "";
323
+ if (contentType.includes("application/json")) {
324
+ const text = await response.text();
325
+ if (!text)
326
+ return undefined;
327
+ return JSON.parse(text);
328
+ }
329
+ if (contentType.startsWith("text/")) {
330
+ return (await response.text());
331
+ }
332
+ return undefined;
333
+ }
334
+ async safeReadJson(response) {
335
+ try {
336
+ const text = await response.text();
337
+ if (!text)
338
+ return null;
339
+ try {
340
+ return JSON.parse(text);
341
+ }
342
+ catch {
343
+ return text;
344
+ }
345
+ }
346
+ catch {
347
+ return null;
348
+ }
349
+ }
350
+ }
351
+ function headersToRecord(headers) {
352
+ const record = {};
353
+ headers.forEach((value, key) => {
354
+ record[key] = value;
355
+ });
356
+ return record;
357
+ }
358
+ //# sourceMappingURL=http.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http.js","sourceRoot":"","sources":["../src/http.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ export * from "./types/index.js";
2
+ export * from "./errors.js";
3
+ export * from "./http.js";
4
+ export * from "./storage.js";
5
+ export * from "./streaming/index.js";
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAC7B,cAAc,sBAAsB,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,6 @@
1
+ export * from "./types/index.js";
2
+ export * from "./errors.js";
3
+ export * from "./http.js";
4
+ export * from "./storage.js";
5
+ export * from "./streaming/index.js";
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAC7B,cAAc,sBAAsB,CAAC"}
@@ -0,0 +1,10 @@
1
+ export interface ComposeStorage {
2
+ getItem(key: string): string | null;
3
+ setItem(key: string, value: string): void;
4
+ removeItem(key: string): void;
5
+ }
6
+ export declare function resolveStorage(explicit: ComposeStorage | undefined): ComposeStorage | null;
7
+ export declare function createMemoryStorage(): ComposeStorage;
8
+ export declare function buildTokenStorageKey(tokenScope: string, userAddress: string, chainId: number): string;
9
+ export declare const DEFAULT_TOKEN_SCOPE = "compose.sdk.token";
10
+ //# sourceMappingURL=storage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../src/storage.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,cAAc;IAC3B,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IACpC,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1C,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;CACjC;AAED,wBAAgB,cAAc,CAAC,QAAQ,EAAE,cAAc,GAAG,SAAS,GAAG,cAAc,GAAG,IAAI,CAY1F;AAED,wBAAgB,mBAAmB,IAAI,cAAc,CAOpD;AAED,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAErG;AAED,eAAO,MAAM,mBAAmB,sBAAsB,CAAC"}
@@ -0,0 +1,25 @@
1
+ export function resolveStorage(explicit) {
2
+ if (explicit)
3
+ return explicit;
4
+ const candidate = globalThis.localStorage;
5
+ if (candidate && typeof candidate === "object") {
6
+ const ls = candidate;
7
+ if (typeof ls.getItem === "function" && typeof ls.setItem === "function" && typeof ls.removeItem === "function") {
8
+ return ls;
9
+ }
10
+ }
11
+ return null;
12
+ }
13
+ export function createMemoryStorage() {
14
+ const map = new Map();
15
+ return {
16
+ getItem: (key) => map.get(key) ?? null,
17
+ setItem: (key, value) => { map.set(key, value); },
18
+ removeItem: (key) => { map.delete(key); },
19
+ };
20
+ }
21
+ export function buildTokenStorageKey(tokenScope, userAddress, chainId) {
22
+ return `${tokenScope}:${userAddress.toLowerCase()}:${chainId}`;
23
+ }
24
+ export const DEFAULT_TOKEN_SCOPE = "compose.sdk.token";
25
+ //# sourceMappingURL=storage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storage.js","sourceRoot":"","sources":["../src/storage.ts"],"names":[],"mappings":"AAMA,MAAM,UAAU,cAAc,CAAC,QAAoC;IAC/D,IAAI,QAAQ;QAAE,OAAO,QAAQ,CAAC;IAE9B,MAAM,SAAS,GAAI,UAAyC,CAAC,YAAY,CAAC;IAC1E,IAAI,SAAS,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE,CAAC;QAC7C,MAAM,EAAE,GAAG,SAA2B,CAAC;QACvC,IAAI,OAAO,EAAE,CAAC,OAAO,KAAK,UAAU,IAAI,OAAO,EAAE,CAAC,OAAO,KAAK,UAAU,IAAI,OAAO,EAAE,CAAC,UAAU,KAAK,UAAU,EAAE,CAAC;YAC9G,OAAO,EAAE,CAAC;QACd,CAAC;IACL,CAAC;IAED,OAAO,IAAI,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,mBAAmB;IAC/B,MAAM,GAAG,GAAG,IAAI,GAAG,EAAkB,CAAC;IACtC,OAAO;QACH,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,IAAI;QACtC,OAAO,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;QACjD,UAAU,EAAE,CAAC,GAAG,EAAE,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;KAC5C,CAAC;AACN,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,UAAkB,EAAE,WAAmB,EAAE,OAAe;IACzF,OAAO,GAAG,UAAU,IAAI,WAAW,CAAC,WAAW,EAAE,IAAI,OAAO,EAAE,CAAC;AACnE,CAAC;AAED,MAAM,CAAC,MAAM,mBAAmB,GAAG,mBAAmB,CAAC"}
@@ -0,0 +1,8 @@
1
+ import type { SessionBudgetSnapshot, SessionInvalidReason } from "../types/index.js";
2
+ export declare function extractSessionBudgetFromResponse(response: {
3
+ headers: Headers;
4
+ }): {
5
+ budget: SessionBudgetSnapshot | null;
6
+ sessionInvalidReason: SessionInvalidReason | null;
7
+ };
8
+ //# sourceMappingURL=budget.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"budget.d.ts","sourceRoot":"","sources":["../../src/streaming/budget.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAErF,wBAAgB,gCAAgC,CAC5C,QAAQ,EAAE;IAAE,OAAO,EAAE,OAAO,CAAA;CAAE,GAC/B;IAAE,MAAM,EAAE,qBAAqB,GAAG,IAAI,CAAC;IAAC,oBAAoB,EAAE,oBAAoB,GAAG,IAAI,CAAA;CAAE,CAwB7F"}
@@ -0,0 +1,23 @@
1
+ export function extractSessionBudgetFromResponse(response) {
2
+ const limit = response.headers.get("x-session-budget-limit");
3
+ const used = response.headers.get("x-session-budget-used");
4
+ const locked = response.headers.get("x-session-budget-locked");
5
+ const remaining = response.headers.get("x-session-budget-remaining");
6
+ const invalidRaw = response.headers.get("x-compose-session-invalid");
7
+ const sessionInvalidReason = typeof invalidRaw === "string" && invalidRaw.length > 0
8
+ ? invalidRaw
9
+ : null;
10
+ if (limit === null && used === null && locked === null && remaining === null) {
11
+ return { budget: null, sessionInvalidReason };
12
+ }
13
+ return {
14
+ budget: {
15
+ limitWei: limit ?? null,
16
+ usedWei: used ?? null,
17
+ lockedWei: locked ?? null,
18
+ remainingWei: remaining ?? null,
19
+ },
20
+ sessionInvalidReason,
21
+ };
22
+ }
23
+ //# sourceMappingURL=budget.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"budget.js","sourceRoot":"","sources":["../../src/streaming/budget.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,gCAAgC,CAC5C,QAA8B;IAE9B,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;IAC7D,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;IAC3D,MAAM,MAAM,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;IAC/D,MAAM,SAAS,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC;IAErE,MAAM,UAAU,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC;IACrE,MAAM,oBAAoB,GAAG,OAAO,UAAU,KAAK,QAAQ,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC;QAChF,CAAC,CAAE,UAAmC;QACtC,CAAC,CAAC,IAAI,CAAC;IAEX,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,KAAK,IAAI,IAAI,MAAM,KAAK,IAAI,IAAI,SAAS,KAAK,IAAI,EAAE,CAAC;QAC3E,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,oBAAoB,EAAE,CAAC;IAClD,CAAC;IAED,OAAO;QACH,MAAM,EAAE;YACJ,QAAQ,EAAE,KAAK,IAAI,IAAI;YACvB,OAAO,EAAE,IAAI,IAAI,IAAI;YACrB,SAAS,EAAE,MAAM,IAAI,IAAI;YACzB,YAAY,EAAE,SAAS,IAAI,IAAI;SAClC;QACD,oBAAoB;KACvB,CAAC;AACN,CAAC"}
@@ -0,0 +1,4 @@
1
+ export * from "./budget.js";
2
+ export * from "./receipt.js";
3
+ export * from "./sse.js";
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/streaming/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,UAAU,CAAC"}
@@ -0,0 +1,4 @@
1
+ export * from "./budget.js";
2
+ export * from "./receipt.js";
3
+ export * from "./sse.js";
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/streaming/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,UAAU,CAAC"}
@@ -0,0 +1,8 @@
1
+ import type { ComposeReceipt } from "../types/index.js";
2
+ export declare const RECEIPT_HEADER_NAMES: readonly ["x-compose-receipt", "X-Compose-Receipt"];
3
+ export declare function decodeReceiptHeader(value: string): ComposeReceipt;
4
+ export declare function extractReceiptFromResponse(response: {
5
+ headers: Headers;
6
+ }, body?: Record<string, unknown> | null): ComposeReceipt | null;
7
+ export declare function parseReceiptEvent(data: string): ComposeReceipt;
8
+ //# sourceMappingURL=receipt.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"receipt.d.ts","sourceRoot":"","sources":["../../src/streaming/receipt.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAExD,eAAO,MAAM,oBAAoB,qDAAsD,CAAC;AAkBxF,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,cAAc,CAEjE;AAED,wBAAgB,0BAA0B,CACtC,QAAQ,EAAE;IAAE,OAAO,EAAE,OAAO,CAAA;CAAE,EAC9B,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,GACtC,cAAc,GAAG,IAAI,CAevB;AAuBD,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,CAoB9D"}
@@ -0,0 +1,74 @@
1
+ export const RECEIPT_HEADER_NAMES = ["x-compose-receipt", "X-Compose-Receipt"];
2
+ function base64UrlDecode(value) {
3
+ const normalized = value.replace(/-/g, "+").replace(/_/g, "/");
4
+ const padding = normalized.length % 4 === 0 ? "" : "=".repeat(4 - (normalized.length % 4));
5
+ if (typeof globalThis.atob === "function") {
6
+ const binary = globalThis.atob(normalized + padding);
7
+ const bytes = new Uint8Array(binary.length);
8
+ for (let i = 0; i < binary.length; i += 1) {
9
+ bytes[i] = binary.charCodeAt(i);
10
+ }
11
+ return new TextDecoder("utf-8").decode(bytes);
12
+ }
13
+ return Buffer.from(normalized + padding, "base64").toString("utf-8");
14
+ }
15
+ export function decodeReceiptHeader(value) {
16
+ return JSON.parse(base64UrlDecode(value));
17
+ }
18
+ export function extractReceiptFromResponse(response, body) {
19
+ const headerValue = response.headers.get("x-compose-receipt") ?? response.headers.get("X-Compose-Receipt");
20
+ if (typeof headerValue === "string" && headerValue.length > 0) {
21
+ try {
22
+ return decodeReceiptHeader(headerValue);
23
+ }
24
+ catch {
25
+ // fall through to body inspection
26
+ }
27
+ }
28
+ if (body && typeof body === "object" && body.compose_receipt && typeof body.compose_receipt === "object") {
29
+ return normalizeBodyReceipt(body.compose_receipt);
30
+ }
31
+ return null;
32
+ }
33
+ function normalizeBodyReceipt(raw) {
34
+ return {
35
+ subject: typeof raw.subject === "string" ? raw.subject : undefined,
36
+ lineItems: Array.isArray(raw.line_items)
37
+ ? raw.line_items.map((item) => ({
38
+ key: String(item.key ?? ""),
39
+ unit: String(item.unit ?? ""),
40
+ quantity: Number(item.quantity ?? 0),
41
+ unitPriceUsd: Number(item.unit_price_usd ?? 0),
42
+ amountWei: String(item.amount_wei ?? "0"),
43
+ }))
44
+ : undefined,
45
+ providerAmountWei: raw.provider_amount_wei ? String(raw.provider_amount_wei) : undefined,
46
+ platformFeeWei: raw.platform_fee_wei ? String(raw.platform_fee_wei) : undefined,
47
+ finalAmountWei: String(raw.final_amount_wei ?? "0"),
48
+ txHash: raw.tx_hash ? String(raw.tx_hash) : undefined,
49
+ network: raw.network ?? "eip155:0",
50
+ settledAt: Number(raw.settled_at ?? 0),
51
+ };
52
+ }
53
+ export function parseReceiptEvent(data) {
54
+ const raw = JSON.parse(data);
55
+ return {
56
+ subject: typeof raw.meterSubject === "string" ? raw.meterSubject : (typeof raw.subject === "string" ? raw.subject : undefined),
57
+ lineItems: Array.isArray(raw.lineItems)
58
+ ? raw.lineItems.map((item) => ({
59
+ key: String(item.key ?? ""),
60
+ unit: String(item.unit ?? ""),
61
+ quantity: Number(item.quantity ?? 0),
62
+ unitPriceUsd: Number(item.unitPriceUsd ?? 0),
63
+ amountWei: String(item.amountWei ?? "0"),
64
+ }))
65
+ : undefined,
66
+ providerAmountWei: raw.providerAmountWei ? String(raw.providerAmountWei) : undefined,
67
+ platformFeeWei: raw.platformFeeWei ? String(raw.platformFeeWei) : undefined,
68
+ finalAmountWei: String(raw.finalAmountWei ?? "0"),
69
+ txHash: raw.txHash ? String(raw.txHash) : undefined,
70
+ network: raw.network ?? "eip155:0",
71
+ settledAt: Number(raw.settledAt ?? 0),
72
+ };
73
+ }
74
+ //# sourceMappingURL=receipt.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"receipt.js","sourceRoot":"","sources":["../../src/streaming/receipt.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,mBAAmB,EAAE,mBAAmB,CAAU,CAAC;AAExF,SAAS,eAAe,CAAC,KAAa;IAClC,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IAC/D,MAAM,OAAO,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;IAE3F,IAAI,OAAO,UAAU,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;QACxC,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,CAAC;QACrD,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC5C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;YACxC,KAAK,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QACpC,CAAC;QACD,OAAO,IAAI,WAAW,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAClD,CAAC;IAED,OAAO,MAAM,CAAC,IAAI,CAAC,UAAU,GAAG,OAAO,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;AACzE,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,KAAa;IAC7C,OAAO,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,KAAK,CAAC,CAAmB,CAAC;AAChE,CAAC;AAED,MAAM,UAAU,0BAA0B,CACtC,QAA8B,EAC9B,IAAqC;IAErC,MAAM,WAAW,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,IAAI,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;IAC3G,IAAI,OAAO,WAAW,KAAK,QAAQ,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5D,IAAI,CAAC;YACD,OAAO,mBAAmB,CAAC,WAAW,CAAC,CAAC;QAC5C,CAAC;QAAC,MAAM,CAAC;YACL,kCAAkC;QACtC,CAAC;IACL,CAAC;IAED,IAAI,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,eAAe,IAAI,OAAO,IAAI,CAAC,eAAe,KAAK,QAAQ,EAAE,CAAC;QACvG,OAAO,oBAAoB,CAAC,IAAI,CAAC,eAA0C,CAAC,CAAC;IACjF,CAAC;IAED,OAAO,IAAI,CAAC;AAChB,CAAC;AAED,SAAS,oBAAoB,CAAC,GAA4B;IACtD,OAAO;QACH,OAAO,EAAE,OAAO,GAAG,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS;QAClE,SAAS,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC;YACpC,CAAC,CAAE,GAAG,CAAC,UAA6C,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;gBAChE,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC;gBAC3B,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC;gBAC7B,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,CAAC;gBACpC,YAAY,EAAE,MAAM,CAAC,IAAI,CAAC,cAAc,IAAI,CAAC,CAAC;gBAC9C,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,UAAU,IAAI,GAAG,CAAC;aAC5C,CAAC,CAAC;YACH,CAAC,CAAC,SAAS;QACf,iBAAiB,EAAE,GAAG,CAAC,mBAAmB,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,SAAS;QACxF,cAAc,EAAE,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,SAAS;QAC/E,cAAc,EAAE,MAAM,CAAC,GAAG,CAAC,gBAAgB,IAAI,GAAG,CAAC;QACnD,MAAM,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS;QACrD,OAAO,EAAG,GAAG,CAAC,OAA8B,IAAI,UAAU;QAC1D,SAAS,EAAE,MAAM,CAAC,GAAG,CAAC,UAAU,IAAI,CAAC,CAAC;KACzC,CAAC;AACN,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,IAAY;IAC1C,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAA4B,CAAC;IACxD,OAAO;QACH,OAAO,EAAE,OAAO,GAAG,CAAC,YAAY,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,OAAO,GAAG,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;QAC9H,SAAS,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC;YACnC,CAAC,CAAE,GAAG,CAAC,SAA4C,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;gBAC/D,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC;gBAC3B,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC;gBAC7B,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,CAAC;gBACpC,YAAY,EAAE,MAAM,CAAC,IAAI,CAAC,YAAY,IAAI,CAAC,CAAC;gBAC5C,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,SAAS,IAAI,GAAG,CAAC;aAC3C,CAAC,CAAC;YACH,CAAC,CAAC,SAAS;QACf,iBAAiB,EAAE,GAAG,CAAC,iBAAiB,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,SAAS;QACpF,cAAc,EAAE,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,SAAS;QAC3E,cAAc,EAAE,MAAM,CAAC,GAAG,CAAC,cAAc,IAAI,GAAG,CAAC;QACjD,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS;QACnD,OAAO,EAAG,GAAG,CAAC,OAA8B,IAAI,UAAU;QAC1D,SAAS,EAAE,MAAM,CAAC,GAAG,CAAC,SAAS,IAAI,CAAC,CAAC;KACxC,CAAC;AACN,CAAC"}
@@ -0,0 +1,9 @@
1
+ export interface SSEFrame {
2
+ event: string;
3
+ data: string;
4
+ id?: string;
5
+ }
6
+ export declare function parseSSEStream(stream: ReadableStream<Uint8Array>, options?: {
7
+ signal?: AbortSignal;
8
+ }): AsyncGenerator<SSEFrame, void, void>;
9
+ //# sourceMappingURL=sse.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sse.d.ts","sourceRoot":"","sources":["../../src/streaming/sse.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,QAAQ;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,CAAC,EAAE,MAAM,CAAC;CACf;AAUD,wBAAuB,cAAc,CACjC,MAAM,EAAE,cAAc,CAAC,UAAU,CAAC,EAClC,OAAO,GAAE;IAAE,MAAM,CAAC,EAAE,WAAW,CAAA;CAAO,GACvC,cAAc,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,CAAC,CAuFtC"}