@armory-sh/middleware-bun 0.3.26 → 0.3.28

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.
@@ -8,7 +8,9 @@ var toSlug = (network) => {
8
8
  return normalizeNetworkName(net.name);
9
9
  }
10
10
  if (network.startsWith("eip155:")) {
11
- const chainId = parseInt(network.split(":")[1], 10);
11
+ const chainPart = network.split(":")[1];
12
+ if (!chainPart) throw new Error(`Invalid network format: ${network}`);
13
+ const chainId = parseInt(chainPart, 10);
12
14
  const net = getNetworkByChainId(chainId);
13
15
  if (!net) throw new Error(`No network found for chainId: ${chainId}`);
14
16
  return normalizeNetworkName(net.name);
@@ -38,12 +40,16 @@ var createV2Requirements = (config, expiry) => {
38
40
  const network = getNetworkConfig(networkName);
39
41
  if (!network) throw new Error(`Unsupported network: ${networkName}`);
40
42
  return {
43
+ scheme: "exact",
41
44
  amount: config.amount,
42
- to: config.payTo,
43
- chainId: getChainId(config.network),
44
- assetId: network.caipAssetId,
45
- nonce: `${Date.now()}-${crypto.randomUUID()}`,
46
- expiry
45
+ network: getChainId(config.network),
46
+ asset: network.usdcAddress,
47
+ payTo: config.payTo,
48
+ maxTimeoutSeconds: Math.max(1, expiry - Math.floor(Date.now() / 1e3)),
49
+ extra: {
50
+ name: "USDC",
51
+ version: "2"
52
+ }
47
53
  };
48
54
  };
49
55
  var createPaymentRequirements = (config) => {
@@ -80,7 +86,9 @@ var parsePaymentHeader = async (request, requirements) => {
80
86
  const paymentSig = request.headers.get(PAYMENT_SIGNATURE_HEADER);
81
87
  if (paymentSig) {
82
88
  try {
83
- const payload = decodePayloadHeader(paymentSig, { accepted: requirements });
89
+ const payload = decodePayloadHeader(paymentSig, {
90
+ accepted: requirements
91
+ });
84
92
  return { payload, payerAddress: extractPayerAddress(payload) };
85
93
  } catch {
86
94
  }
@@ -133,32 +141,58 @@ var createRouteAwareBunMiddleware = (config, handler) => {
133
141
  const { routes: resolvedRoutes, error: configError } = resolveRouteConfig(config);
134
142
  const middleware = async (request) => {
135
143
  if (configError) {
136
- return errorResponse(`Payment middleware configuration error: ${configError.message}`, 500);
144
+ return errorResponse(
145
+ `Payment middleware configuration error: ${configError.message}`,
146
+ 500
147
+ );
137
148
  }
138
149
  const path = new URL(request.url).pathname;
139
- const matchedRoute = resolvedRoutes.find((r) => matchRoute(r.pattern, path));
150
+ const matchedRoute = resolvedRoutes.find(
151
+ (r) => matchRoute(r.pattern, path)
152
+ );
140
153
  if (!matchedRoute) {
141
154
  return null;
142
155
  }
143
156
  const routeConfig = matchedRoute.config;
144
- const { facilitator, settlementMode = "settle", waitForSettlement = false } = routeConfig;
157
+ const {
158
+ facilitator,
159
+ settlementMode = "settle",
160
+ waitForSettlement = false
161
+ } = routeConfig;
145
162
  const requirements = createPaymentRequirements(routeConfig);
146
163
  const paymentResult = await parsePaymentHeader(request, requirements);
147
164
  if (!paymentResult) {
148
- return errorResponse("Payment required", 402, createPaymentRequiredHeaders(requirements), [requirements]);
165
+ return errorResponse(
166
+ "Payment required",
167
+ 402,
168
+ createPaymentRequiredHeaders(requirements),
169
+ [requirements]
170
+ );
149
171
  }
150
172
  const { payerAddress, payload } = paymentResult;
151
173
  if (facilitator) {
152
- const verifyResult = await verifyPayment(payload, requirements, { url: facilitator.url });
174
+ const verifyResult = await verifyPayment(payload, requirements, {
175
+ url: facilitator.url
176
+ });
153
177
  if (!verifyResult.isValid) {
154
- return errorResponse(`Payment verification failed: ${verifyResult.invalidReason}`, 402, createPaymentRequiredHeaders(requirements), [requirements]);
178
+ return errorResponse(
179
+ `Payment verification failed: ${verifyResult.invalidReason}`,
180
+ 402,
181
+ createPaymentRequiredHeaders(requirements),
182
+ [requirements]
183
+ );
155
184
  }
156
185
  }
157
186
  if (!handler) {
158
187
  if (settlementMode === "settle" && facilitator) {
159
188
  const settle = async () => {
160
- const result = await settlePayment(payload, requirements, { url: facilitator.url });
161
- return result.success ? successResponse(payerAddress, createSettlementResponse(true, result.transaction)) : errorResponse(result.errorReason ?? "Settlement failed", 400);
189
+ const result = await settlePayment(payload, requirements, {
190
+ url: facilitator.url
191
+ });
192
+ return result.success ? successResponse(
193
+ payerAddress,
194
+ createSettlementResponse(true, result.transaction)
195
+ ) : errorResponse(result.errorReason ?? "Settlement failed", 400);
162
196
  };
163
197
  if (waitForSettlement) {
164
198
  return await settle();
@@ -172,9 +206,14 @@ var createRouteAwareBunMiddleware = (config, handler) => {
172
206
  if (response.status >= 400 || settlementMode !== "settle" || !facilitator) {
173
207
  return response;
174
208
  }
175
- const settleResult = await settlePayment(payload, requirements, { url: facilitator.url });
209
+ const settleResult = await settlePayment(payload, requirements, {
210
+ url: facilitator.url
211
+ });
176
212
  if (!settleResult.success) {
177
- return errorResponse(settleResult.errorReason ?? "Settlement failed", 502);
213
+ return errorResponse(
214
+ settleResult.errorReason ?? "Settlement failed",
215
+ 502
216
+ );
178
217
  }
179
218
  const settlement = createSettlementResponse(true, settleResult.transaction);
180
219
  return appendSettlementHeaders(response, settlement);
package/dist/index.d.ts CHANGED
@@ -1,2 +1,10 @@
1
- export { B as BunHandler, a as BunMiddleware, b as BunMiddlewareConfig, RouteAwareBunMiddlewareConfig, c as createBunMiddleware, createRouteAwareBunMiddleware } from './routes.js';
1
+ import { M as MiddlewareConfig, B as BunHandler, a as BunMiddleware } from './routes-C69V5KAQ.js';
2
+ export { P as PaymentConfig, R as ResolvedRequirementsConfig, b as RouteAwareBunMiddlewareConfig, c as createPaymentRequirements, d as createRouteAwareBunMiddleware, p as paymentMiddleware, r as resolveFacilitatorUrlFromRequirement } from './routes-C69V5KAQ.js';
2
3
  import '@armory-sh/base';
4
+
5
+ interface BunMiddlewareConfig extends MiddlewareConfig {
6
+ waitForSettlement?: boolean;
7
+ }
8
+ declare const createBunMiddleware: (config: BunMiddlewareConfig, handler?: BunHandler) => BunMiddleware | ((request: Request) => Promise<Response>);
9
+
10
+ export { BunHandler, BunMiddleware, type BunMiddlewareConfig, createBunMiddleware };
package/dist/index.js CHANGED
@@ -1,19 +1,255 @@
1
- import { createPaymentRequirements } from './chunk-WLKV5FDR.js';
2
- export { createRouteAwareBunMiddleware } from './chunk-WLKV5FDR.js';
3
- import { createPaymentRequiredHeaders, verifyPayment, settlePayment, PAYMENT_SIGNATURE_HEADER, decodePayloadHeader, extractPayerAddress, createSettlementHeaders } from '@armory-sh/base';
1
+ import { createPaymentRequirements as createPaymentRequirements$1 } from './chunk-BJBLQMMR.js';
2
+ export { createRouteAwareBunMiddleware } from './chunk-BJBLQMMR.js';
3
+ import { resolveNetwork, isValidationError, resolveToken, createPaymentRequirements, PAYMENT_SIGNATURE_HEADER, decodePayloadHeader, findRequirementByAccepted, verifyPayment, extractPayerAddress, settlePayment, createPaymentRequiredHeaders, TOKENS, registerToken, createSettlementHeaders, getSupported } from '@armory-sh/base';
4
4
 
5
+ var extensionCapabilityCache = /* @__PURE__ */ new Map();
6
+ var EXTENSION_CAPABILITY_TTL_MS = 5 * 60 * 1e3;
7
+ function ensureTokensRegistered() {
8
+ for (const token of Object.values(TOKENS)) {
9
+ try {
10
+ registerToken(token);
11
+ } catch {
12
+ }
13
+ }
14
+ }
15
+ function resolveFacilitatorUrlFromRequirement(config, requirement) {
16
+ const chainId = parseInt(requirement.network.split(":")[1] || "0", 10);
17
+ const assetAddress = requirement.asset.toLowerCase();
18
+ if (config.facilitatorUrlByToken) {
19
+ for (const [chainKey, tokenMap] of Object.entries(
20
+ config.facilitatorUrlByToken
21
+ )) {
22
+ const resolvedChain = resolveNetwork(chainKey);
23
+ if (isValidationError(resolvedChain) || resolvedChain.config.chainId !== chainId) {
24
+ continue;
25
+ }
26
+ for (const [tokenKey, url] of Object.entries(tokenMap)) {
27
+ const resolvedToken = resolveToken(tokenKey, resolvedChain);
28
+ if (!isValidationError(resolvedToken) && resolvedToken.config.contractAddress.toLowerCase() === assetAddress) {
29
+ return url;
30
+ }
31
+ }
32
+ }
33
+ }
34
+ if (config.facilitatorUrlByChain) {
35
+ for (const [chainKey, url] of Object.entries(
36
+ config.facilitatorUrlByChain
37
+ )) {
38
+ const resolvedChain = resolveNetwork(chainKey);
39
+ if (!isValidationError(resolvedChain) && resolvedChain.config.chainId === chainId) {
40
+ return url;
41
+ }
42
+ }
43
+ }
44
+ return config.facilitatorUrl;
45
+ }
46
+ function createPaymentRequirements2(config) {
47
+ if (config.requirements) {
48
+ return {
49
+ requirements: Array.isArray(config.requirements) ? config.requirements : [config.requirements]
50
+ };
51
+ }
52
+ if (!config.payTo) {
53
+ return {
54
+ requirements: [],
55
+ error: {
56
+ code: "VALIDATION_FAILED",
57
+ message: "Missing payment configuration: provide payTo or explicit requirements"
58
+ }
59
+ };
60
+ }
61
+ ensureTokensRegistered();
62
+ return createPaymentRequirements(config);
63
+ }
64
+ async function resolvePaymentRequiredExtensions(config, requirements) {
65
+ if (!config.extensions) {
66
+ return {};
67
+ }
68
+ let filtered = { ...config.extensions };
69
+ for (const requirement of requirements) {
70
+ const facilitatorUrl = resolveFacilitatorUrlFromRequirement(config, requirement);
71
+ if (!facilitatorUrl) {
72
+ continue;
73
+ }
74
+ const cacheKey = `${facilitatorUrl}|${requirement.network.toLowerCase()}`;
75
+ const now = Date.now();
76
+ let keys = extensionCapabilityCache.get(cacheKey);
77
+ if (!keys || keys.expiresAt <= now) {
78
+ try {
79
+ const supported = await getSupported({ url: facilitatorUrl });
80
+ const nextKeys = /* @__PURE__ */ new Set();
81
+ for (const kind of supported.kinds) {
82
+ if (kind.network.toLowerCase() !== requirement.network.toLowerCase()) {
83
+ continue;
84
+ }
85
+ if (kind.extra && typeof kind.extra === "object") {
86
+ for (const key of Object.keys(kind.extra)) {
87
+ nextKeys.add(key);
88
+ }
89
+ }
90
+ }
91
+ keys = { expiresAt: now + EXTENSION_CAPABILITY_TTL_MS, keys: nextKeys };
92
+ } catch {
93
+ keys = { expiresAt: now + EXTENSION_CAPABILITY_TTL_MS, keys: /* @__PURE__ */ new Set() };
94
+ }
95
+ extensionCapabilityCache.set(cacheKey, keys);
96
+ }
97
+ filtered = Object.fromEntries(
98
+ Object.entries(filtered).filter(([key]) => keys.keys.has(key))
99
+ );
100
+ if (Object.keys(filtered).length === 0) {
101
+ return {};
102
+ }
103
+ }
104
+ return filtered;
105
+ }
106
+ var errorResponse = (error, status, headers, accepts) => new Response(JSON.stringify({ error, accepts }), {
107
+ status,
108
+ headers: { "Content-Type": "application/json", ...headers }
109
+ });
110
+ var successResponse = (payerAddress, settlement) => {
111
+ return new Response(
112
+ JSON.stringify({
113
+ verified: true,
114
+ payerAddress,
115
+ settlement: void 0
116
+ }),
117
+ {
118
+ status: 200,
119
+ headers: {
120
+ "Content-Type": "application/json",
121
+ "X-Payment-Verified": "true",
122
+ "X-Payer-Address": payerAddress,
123
+ ...{}
124
+ }
125
+ }
126
+ );
127
+ };
128
+ var appendSettlementHeaders = (response, settlement) => {
129
+ const headers = new Headers(response.headers);
130
+ const settlementHeaders = createSettlementHeaders(settlement);
131
+ for (const [key, value] of Object.entries(settlementHeaders)) {
132
+ headers.set(key, value);
133
+ }
134
+ return new Response(response.body, {
135
+ status: response.status,
136
+ statusText: response.statusText,
137
+ headers
138
+ });
139
+ };
140
+ var paymentMiddleware = (config, handler) => {
141
+ const { requirements, error } = createPaymentRequirements2(config);
142
+ const resolvePaymentRequiredHeaders = async () => createPaymentRequiredHeaders(requirements, {
143
+ extensions: await resolvePaymentRequiredExtensions(
144
+ config,
145
+ requirements
146
+ )
147
+ });
148
+ return async (request) => {
149
+ if (error) {
150
+ return errorResponse(
151
+ "Payment middleware configuration error",
152
+ 500,
153
+ void 0,
154
+ [error.message]
155
+ );
156
+ }
157
+ const primaryRequirement = requirements[0];
158
+ if (!primaryRequirement) {
159
+ return errorResponse(
160
+ "Payment middleware configuration error: No payment requirements configured",
161
+ 500
162
+ );
163
+ }
164
+ const paymentSig = request.headers.get(PAYMENT_SIGNATURE_HEADER);
165
+ if (!paymentSig) {
166
+ const requiredHeaders = await resolvePaymentRequiredHeaders();
167
+ return errorResponse(
168
+ "Payment required",
169
+ 402,
170
+ requiredHeaders,
171
+ [requirements]
172
+ );
173
+ }
174
+ let payload;
175
+ try {
176
+ payload = decodePayloadHeader(paymentSig, {
177
+ accepted: primaryRequirement
178
+ });
179
+ } catch {
180
+ return errorResponse("Invalid payment payload", 400);
181
+ }
182
+ const selectedRequirement = findRequirementByAccepted(
183
+ requirements,
184
+ payload.accepted
185
+ );
186
+ if (!selectedRequirement) {
187
+ return errorResponse(
188
+ "Invalid payment payload: accepted requirement is not configured for this endpoint",
189
+ 400
190
+ );
191
+ }
192
+ const facilitatorUrl = resolveFacilitatorUrlFromRequirement(
193
+ config,
194
+ selectedRequirement
195
+ );
196
+ if (!facilitatorUrl) {
197
+ return errorResponse(
198
+ "Payment middleware configuration error: Facilitator URL is required",
199
+ 500
200
+ );
201
+ }
202
+ const verifyResult = await verifyPayment(
203
+ payload,
204
+ selectedRequirement,
205
+ { url: facilitatorUrl }
206
+ );
207
+ if (!verifyResult.isValid) {
208
+ const requiredHeaders = await resolvePaymentRequiredHeaders();
209
+ return errorResponse(
210
+ `Payment verification failed: ${verifyResult.invalidReason}`,
211
+ 402,
212
+ requiredHeaders
213
+ );
214
+ }
215
+ const payerAddress = verifyResult.payer ?? extractPayerAddress(payload);
216
+ if (!handler) {
217
+ return successResponse(payerAddress);
218
+ }
219
+ const response = await handler(request);
220
+ if (response.status >= 400) {
221
+ return response;
222
+ }
223
+ const settleResult = await settlePayment(
224
+ payload,
225
+ selectedRequirement,
226
+ { url: facilitatorUrl }
227
+ );
228
+ if (!settleResult.success) {
229
+ return errorResponse(
230
+ settleResult.errorReason ?? "Settlement failed",
231
+ 502
232
+ );
233
+ }
234
+ return appendSettlementHeaders(response, settleResult);
235
+ };
236
+ };
237
+
238
+ // src/index.ts
5
239
  var parsePaymentHeader = async (request, requirements) => {
6
240
  const paymentSig = request.headers.get(PAYMENT_SIGNATURE_HEADER);
7
241
  if (paymentSig) {
8
242
  try {
9
- const payload = decodePayloadHeader(paymentSig, { accepted: requirements });
243
+ const payload = decodePayloadHeader(paymentSig, {
244
+ accepted: requirements
245
+ });
10
246
  return { payload, payerAddress: extractPayerAddress(payload) };
11
247
  } catch {
12
248
  }
13
249
  }
14
250
  return null;
15
251
  };
16
- var errorResponse = (error, status, headers, accepts) => new Response(JSON.stringify({ error, accepts }), {
252
+ var errorResponse2 = (error, status, headers, accepts) => new Response(JSON.stringify({ error, accepts }), {
17
253
  status,
18
254
  headers: { "Content-Type": "application/json", ...headers }
19
255
  });
@@ -23,7 +259,7 @@ var createSettlementResponse = (success, txHash) => ({
23
259
  errorReason: void 0 ,
24
260
  network: "base"
25
261
  });
26
- var successResponse = (payerAddress, settlement) => {
262
+ var successResponse2 = (payerAddress, settlement) => {
27
263
  const isSuccess = settlement?.success;
28
264
  const txHash = settlement?.transaction;
29
265
  return new Response(
@@ -43,7 +279,7 @@ var successResponse = (payerAddress, settlement) => {
43
279
  }
44
280
  );
45
281
  };
46
- var appendSettlementHeaders = (response, settlement) => {
282
+ var appendSettlementHeaders2 = (response, settlement) => {
47
283
  const headers = new Headers(response.headers);
48
284
  const settlementHeaders = createSettlementHeaders(settlement);
49
285
  for (const [key, value] of Object.entries(settlementHeaders)) {
@@ -56,44 +292,72 @@ var appendSettlementHeaders = (response, settlement) => {
56
292
  });
57
293
  };
58
294
  var createBunMiddleware = (config, handler) => {
59
- const { facilitator, settlementMode = "settle", waitForSettlement = false } = config;
60
- const requirements = createPaymentRequirements(config);
295
+ const {
296
+ facilitator,
297
+ settlementMode = "settle",
298
+ waitForSettlement = false
299
+ } = config;
300
+ const requirements = createPaymentRequirements$1(config);
61
301
  const middleware = async (request) => {
62
302
  const paymentResult = await parsePaymentHeader(request, requirements);
63
303
  if (!paymentResult) {
64
- return errorResponse("Payment required", 402, createPaymentRequiredHeaders(requirements), [requirements]);
304
+ return errorResponse2(
305
+ "Payment required",
306
+ 402,
307
+ createPaymentRequiredHeaders(requirements),
308
+ [requirements]
309
+ );
65
310
  }
66
311
  const { payerAddress, payload } = paymentResult;
67
312
  if (facilitator) {
68
- const verifyResult = await verifyPayment(payload, requirements, { url: facilitator.url });
313
+ const verifyResult = await verifyPayment(
314
+ payload,
315
+ requirements,
316
+ { url: facilitator.url }
317
+ );
69
318
  if (!verifyResult.isValid) {
70
- return errorResponse(`Payment verification failed: ${verifyResult.invalidReason}`, 402, createPaymentRequiredHeaders(requirements), [requirements]);
319
+ return errorResponse2(
320
+ `Payment verification failed: ${verifyResult.invalidReason}`,
321
+ 402,
322
+ createPaymentRequiredHeaders(requirements),
323
+ [requirements]
324
+ );
71
325
  }
72
326
  }
73
327
  if (!handler) {
74
328
  if (settlementMode === "settle" && facilitator) {
75
329
  const settle = async () => {
76
- const result = await settlePayment(payload, requirements, { url: facilitator.url });
77
- return result.success ? successResponse(payerAddress, createSettlementResponse(true, result.transaction)) : errorResponse(result.errorReason ?? "Settlement failed", 400);
330
+ const result = await settlePayment(payload, requirements, {
331
+ url: facilitator.url
332
+ });
333
+ return result.success ? successResponse2(
334
+ payerAddress,
335
+ createSettlementResponse(true, result.transaction)
336
+ ) : errorResponse2(result.errorReason ?? "Settlement failed", 400);
78
337
  };
79
338
  if (waitForSettlement) {
80
339
  return await settle();
81
340
  }
82
341
  settle().catch(console.error);
83
- return successResponse(payerAddress);
342
+ return successResponse2(payerAddress);
84
343
  }
85
- return successResponse(payerAddress);
344
+ return successResponse2(payerAddress);
86
345
  }
87
346
  const response = await handler(request);
88
347
  if (response.status >= 400 || settlementMode !== "settle" || !facilitator) {
89
348
  return response;
90
349
  }
91
- const settleResult = await settlePayment(payload, requirements, { url: facilitator.url });
350
+ const settleResult = await settlePayment(payload, requirements, {
351
+ url: facilitator.url
352
+ });
92
353
  if (!settleResult.success) {
93
- return errorResponse(settleResult.errorReason ?? "Settlement failed", 502);
354
+ return errorResponse2(
355
+ settleResult.errorReason ?? "Settlement failed",
356
+ 502
357
+ );
94
358
  }
95
359
  const settlement = createSettlementResponse(true, settleResult.transaction);
96
- return appendSettlementHeaders(response, settlement);
360
+ return appendSettlementHeaders2(response, settlement);
97
361
  };
98
362
  if (!handler) {
99
363
  return middleware;
@@ -101,10 +365,10 @@ var createBunMiddleware = (config, handler) => {
101
365
  return async (request) => {
102
366
  const result = await middleware(request);
103
367
  if (!result) {
104
- return errorResponse("Payment middleware returned no response", 500);
368
+ return errorResponse2("Payment middleware returned no response", 500);
105
369
  }
106
370
  return result;
107
371
  };
108
372
  };
109
373
 
110
- export { createBunMiddleware };
374
+ export { createBunMiddleware, createPaymentRequirements2 as createPaymentRequirements, paymentMiddleware, resolveFacilitatorUrlFromRequirement };
@@ -0,0 +1,49 @@
1
+ import { PaymentRequirementsV2, PayToAddress, FacilitatorConfig, SettlementMode } from '@armory-sh/base';
2
+
3
+ type NetworkId = string | number;
4
+ type TokenId = string;
5
+ interface PaymentConfig {
6
+ payTo?: string;
7
+ requirements?: PaymentRequirementsV2 | PaymentRequirementsV2[];
8
+ chains?: NetworkId[];
9
+ chain?: NetworkId;
10
+ tokens?: TokenId[];
11
+ token?: TokenId;
12
+ amount?: string;
13
+ maxTimeoutSeconds?: number;
14
+ facilitatorUrl?: string;
15
+ facilitatorUrlByChain?: Record<string, string>;
16
+ facilitatorUrlByToken?: Record<string, Record<string, string>>;
17
+ extensions?: Record<string, unknown>;
18
+ }
19
+ interface ResolvedRequirementsConfig {
20
+ requirements: PaymentRequirementsV2[];
21
+ error?: {
22
+ code: string;
23
+ message: string;
24
+ };
25
+ }
26
+ type BunMiddleware$1 = (request: Request) => Promise<Response | null>;
27
+ type BunHandler = (request: Request) => Promise<Response> | Response;
28
+ declare function resolveFacilitatorUrlFromRequirement(config: PaymentConfig, requirement: PaymentRequirementsV2): string | undefined;
29
+ declare function createPaymentRequirements(config: PaymentConfig): ResolvedRequirementsConfig;
30
+ declare const paymentMiddleware: (config: PaymentConfig, handler?: BunHandler) => BunMiddleware$1;
31
+
32
+ interface MiddlewareConfig {
33
+ payTo: PayToAddress;
34
+ network: string | number;
35
+ amount: string;
36
+ facilitator?: FacilitatorConfig;
37
+ settlementMode?: SettlementMode;
38
+ }
39
+
40
+ type BunMiddleware = (request: Request) => Promise<Response | null>;
41
+ interface RouteAwareBunMiddlewareConfig extends MiddlewareConfig {
42
+ route?: string;
43
+ routes?: string[];
44
+ perRoute?: Record<string, Partial<MiddlewareConfig>>;
45
+ waitForSettlement?: boolean;
46
+ }
47
+ declare const createRouteAwareBunMiddleware: (config: RouteAwareBunMiddlewareConfig, handler?: BunHandler) => BunMiddleware | ((request: Request) => Promise<Response>);
48
+
49
+ export { type BunHandler as B, type MiddlewareConfig as M, type PaymentConfig as P, type ResolvedRequirementsConfig as R, type BunMiddleware$1 as a, type RouteAwareBunMiddlewareConfig as b, createPaymentRequirements as c, createRouteAwareBunMiddleware as d, type BunMiddleware as e, paymentMiddleware as p, resolveFacilitatorUrlFromRequirement as r };
package/dist/routes.d.ts CHANGED
@@ -1,27 +1,2 @@
1
- import { PayToAddress, FacilitatorConfig, SettlementMode } from '@armory-sh/base';
2
-
3
- interface MiddlewareConfig {
4
- payTo: PayToAddress;
5
- network: string | number;
6
- amount: string;
7
- facilitator?: FacilitatorConfig;
8
- settlementMode?: SettlementMode;
9
- }
10
-
11
- type BunMiddleware$1 = (request: Request) => Promise<Response | null>;
12
- interface RouteAwareBunMiddlewareConfig extends MiddlewareConfig {
13
- route?: string;
14
- routes?: string[];
15
- perRoute?: Record<string, Partial<MiddlewareConfig>>;
16
- waitForSettlement?: boolean;
17
- }
18
- declare const createRouteAwareBunMiddleware: (config: RouteAwareBunMiddlewareConfig, handler?: BunHandler) => BunMiddleware$1 | ((request: Request) => Promise<Response>);
19
-
20
- type BunMiddleware = (request: Request) => Promise<Response | null>;
21
- type BunHandler = (request: Request) => Promise<Response> | Response;
22
- interface BunMiddlewareConfig extends MiddlewareConfig {
23
- waitForSettlement?: boolean;
24
- }
25
- declare const createBunMiddleware: (config: BunMiddlewareConfig, handler?: BunHandler) => BunMiddleware | ((request: Request) => Promise<Response>);
26
-
27
- export { type BunHandler as B, type BunMiddleware$1 as BunMiddleware, type RouteAwareBunMiddlewareConfig, type BunMiddleware as a, type BunMiddlewareConfig as b, createBunMiddleware as c, createRouteAwareBunMiddleware };
1
+ export { e as BunMiddleware, b as RouteAwareBunMiddlewareConfig, d as createRouteAwareBunMiddleware } from './routes-C69V5KAQ.js';
2
+ import '@armory-sh/base';
package/dist/routes.js CHANGED
@@ -1 +1 @@
1
- export { createRouteAwareBunMiddleware } from './chunk-WLKV5FDR.js';
1
+ export { createRouteAwareBunMiddleware } from './chunk-BJBLQMMR.js';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@armory-sh/middleware-bun",
3
- "version": "0.3.26",
3
+ "version": "0.3.28",
4
4
  "license": "MIT",
5
5
  "author": "Sawyer Cutler <sawyer@dirtroad.dev>",
6
6
  "keywords": [
@@ -43,7 +43,7 @@
43
43
  "directory": "packages/middleware-bun"
44
44
  },
45
45
  "dependencies": {
46
- "@armory-sh/base": "0.2.28"
46
+ "@armory-sh/base": "0.2.30"
47
47
  },
48
48
  "devDependencies": {
49
49
  "bun-types": "latest",
@@ -52,6 +52,8 @@
52
52
  },
53
53
  "scripts": {
54
54
  "build": "rm -rf dist && tsup",
55
+ "lint": "bun run build",
56
+ "format": "bun run lint",
55
57
  "test": "bun test"
56
58
  }
57
59
  }