@cryptonly/x402 0.6.0 → 0.8.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/README.md CHANGED
@@ -58,7 +58,7 @@ app.use(
58
58
 
59
59
  ## Prices in the dashboard, another framework
60
60
 
61
- - `fetchX402Config()` and `routesFromConfig()` turn your dashboard prices into stock `@x402/core` routes for any x402 middleware.
61
+ - `fetchX402Config()` and `routesFromConfig()` turn your dashboard prices into stock `@x402/core` routes for any x402 middleware. Each route `accepts` one option per currency the endpoint is priced in.
62
62
  - `createX402RouteSource()` adds what the framework packages do on top: one load, a refresh every minute, and the last good routes kept when a refresh fails.
63
63
 
64
64
  ```ts
@@ -76,6 +76,8 @@ await source.ready(); // rejects if the prices can't load
76
76
  const httpServer = source.current()!.value; // rebuilt only when the prices change
77
77
  ```
78
78
 
79
+ Behind a proxy that rewrites paths, build it with `createHTTPResourceServer(resourceServer, routes, createPublicRequestMapper({ pathPrefix: '/v1' }))`. It matches routes and builds `resource.url` on the public path. `publicPath` and `publicBaseUrl` are the other options.
80
+
79
81
  ## Sandbox
80
82
 
81
83
  Pass `sandbox: true` and use a key from your [sandbox account](https://docs.cryptonly.net/guides/sandbox-environment/). The sandbox settles on Base Sepolia (`eip155:84532`) and Solana Devnet.
package/dist/client.d.ts CHANGED
@@ -27,7 +27,8 @@ export declare function resolveMerchantApiOrigin(config: Pick<CryptonlyFacilitat
27
27
  * Cryptonly facilitator client for the x402 protocol.
28
28
  *
29
29
  * Extends `HTTPFacilitatorClient` from `@x402/core/server`. The API key goes
30
- * on `/verify`, `/settle`, `/supported` and the bazaar discovery calls.
30
+ * on `/verify`, `/settle` and `/supported`. The discovery feed is elsewhere:
31
+ * see `DISCOVERY_FEED_URL`.
31
32
  *
32
33
  * @example
33
34
  * ```ts
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAO1D,4DAA4D;AAC5D,MAAM,MAAM,0BAA0B,GAAG;IACvC;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,IAAI,CAAC,0BAA0B,EAAE,SAAS,GAAG,SAAS,CAAC,GAC9D,MAAM,CAQR;AAMD;;;;;;;;;;;;;;;;;GAiBG;AACH,qBAAa,0BAA2B,SAAQ,qBAAqB;gBACvD,MAAM,EAAE,0BAA0B;CAgB/C"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAO1D,4DAA4D;AAC5D,MAAM,MAAM,0BAA0B,GAAG;IACvC;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,IAAI,CAAC,0BAA0B,EAAE,SAAS,GAAG,SAAS,CAAC,GAC9D,MAAM,CAQR;AAMD;;;;;;;;;;;;;;;;;;GAkBG;AACH,qBAAa,0BAA2B,SAAQ,qBAAqB;gBACvD,MAAM,EAAE,0BAA0B;CAc/C"}
package/dist/client.js CHANGED
@@ -25,7 +25,8 @@ function resolveFacilitatorUrl(config) {
25
25
  * Cryptonly facilitator client for the x402 protocol.
26
26
  *
27
27
  * Extends `HTTPFacilitatorClient` from `@x402/core/server`. The API key goes
28
- * on `/verify`, `/settle`, `/supported` and the bazaar discovery calls.
28
+ * on `/verify`, `/settle` and `/supported`. The discovery feed is elsewhere:
29
+ * see `DISCOVERY_FEED_URL`.
29
30
  *
30
31
  * @example
31
32
  * ```ts
@@ -51,8 +52,6 @@ class CryptonlyFacilitatorClient extends server_1.HTTPFacilitatorClient {
51
52
  verify: headers,
52
53
  settle: headers,
53
54
  supported: headers,
54
- // `withBazaar(client).extensions.bazaar.listResources()`.
55
- bazaar: headers,
56
55
  }),
57
56
  });
58
57
  }
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":";;;AA+BA,4DAUC;AAzCD,8CAA0D;AAC1D,iDAIwB;AAoBxB;;;;;GAKG;AACH,SAAgB,wBAAwB,CACtC,MAA+D;IAE/D,MAAM,MAAM,GACV,OAAO,MAAM,CAAC,OAAO,KAAK,QAAQ,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC;QAC7D,CAAC,CAAC,MAAM,CAAC,OAAO;QAChB,CAAC,CAAC,MAAM,CAAC,OAAO;YACd,CAAC,CAAC,4CAA6B;YAC/B,CAAC,CAAC,oCAAqB,CAAC;IAC9B,OAAO,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;AACpC,CAAC;AAED,SAAS,qBAAqB,CAAC,MAAkC;IAC/D,OAAO,GAAG,wBAAwB,CAAC,MAAM,CAAC,OAAO,CAAC;AACpD,CAAC;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAa,0BAA2B,SAAQ,8BAAqB;IACnE,YAAY,MAAkC;QAC5C,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC;YACpB,MAAM,IAAI,SAAS,CAAC,kDAAkD,CAAC,CAAC;QAC1E,CAAC;QACD,MAAM,OAAO,GAAG,EAAE,CAAC,sCAAuB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC;QAC7D,KAAK,CAAC;YACJ,GAAG,EAAE,qBAAqB,CAAC,MAAM,CAAC;YAClC,iBAAiB,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC;gBAC9B,MAAM,EAAE,OAAO;gBACf,MAAM,EAAE,OAAO;gBACf,SAAS,EAAE,OAAO;gBAClB,0DAA0D;gBAC1D,MAAM,EAAE,OAAO;aAChB,CAAC;SACH,CAAC,CAAC;IACL,CAAC;CACF;AAjBD,gEAiBC"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":";;;AA+BA,4DAUC;AAzCD,8CAA0D;AAC1D,iDAIwB;AAoBxB;;;;;GAKG;AACH,SAAgB,wBAAwB,CACtC,MAA+D;IAE/D,MAAM,MAAM,GACV,OAAO,MAAM,CAAC,OAAO,KAAK,QAAQ,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC;QAC7D,CAAC,CAAC,MAAM,CAAC,OAAO;QAChB,CAAC,CAAC,MAAM,CAAC,OAAO;YACd,CAAC,CAAC,4CAA6B;YAC/B,CAAC,CAAC,oCAAqB,CAAC;IAC9B,OAAO,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;AACpC,CAAC;AAED,SAAS,qBAAqB,CAAC,MAAkC;IAC/D,OAAO,GAAG,wBAAwB,CAAC,MAAM,CAAC,OAAO,CAAC;AACpD,CAAC;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAa,0BAA2B,SAAQ,8BAAqB;IACnE,YAAY,MAAkC;QAC5C,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC;YACpB,MAAM,IAAI,SAAS,CAAC,kDAAkD,CAAC,CAAC;QAC1E,CAAC;QACD,MAAM,OAAO,GAAG,EAAE,CAAC,sCAAuB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC;QAC7D,KAAK,CAAC;YACJ,GAAG,EAAE,qBAAqB,CAAC,MAAM,CAAC;YAClC,iBAAiB,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC;gBAC9B,MAAM,EAAE,OAAO;gBACf,MAAM,EAAE,OAAO;gBACf,SAAS,EAAE,OAAO;aACnB,CAAC;SACH,CAAC,CAAC;IACL,CAAC;CACF;AAfD,gEAeC"}
package/dist/config.d.ts CHANGED
@@ -33,6 +33,16 @@ export type X402ConfigAsset = {
33
33
  /** Solana: the facilitator's fee payer; goes into `extra.feePayer`. */
34
34
  feePayer?: string;
35
35
  };
36
+ /** One price of a dashboard resource: an `accepts` entry of its 402. */
37
+ export type X402ConfigPrice = {
38
+ /** Atomic units. */
39
+ amount: string;
40
+ /** Token contract address or SPL mint. */
41
+ asset: string;
42
+ currencyCode: string;
43
+ /** CAIP-2 network of the asset. */
44
+ network?: Network;
45
+ };
36
46
  /** A paid resource configured in the dashboard. */
37
47
  export type X402ConfigResource = {
38
48
  id: string;
@@ -42,15 +52,8 @@ export type X402ConfigResource = {
42
52
  url: string;
43
53
  /** Path of {@link url}, the route pattern (`/weather/:city`). */
44
54
  path: string;
45
- price: {
46
- /** Atomic units. */
47
- amount: string;
48
- /** Token contract address or SPL mint. */
49
- asset: string;
50
- currencyCode: string;
51
- /** CAIP-2 network of the asset. */
52
- network?: Network;
53
- };
55
+ /** One per currency, in the order the 402 offers them; never empty. */
56
+ prices: X402ConfigPrice[];
54
57
  scheme: string;
55
58
  maxTimeoutSeconds: number;
56
59
  description: string | null;
@@ -147,7 +150,10 @@ export type RoutesFromConfigOptions = {
147
150
  * Default: loaded when installed. `null` leaves extensions out.
148
151
  */
149
152
  extensions?: X402ExtensionsModule | null;
150
- /** Called for each resource left out, with the reason. */
153
+ /**
154
+ * Called for each resource left out, and for each price left out of a
155
+ * resource that is still served, with the reason.
156
+ */
151
157
  onSkip?: (resource: X402ConfigResource, reason: string) => void;
152
158
  };
153
159
  /** Route key of a resource: `METHOD /path`, or just `/path` for method `*`. */
@@ -163,7 +169,9 @@ export declare function isSolanaNetwork(network: string): boolean;
163
169
  export declare function assertPayableConfig(config: X402Config): void;
164
170
  /**
165
171
  * Builds stock `@x402/core` routes (for `paymentMiddleware` and
166
- * `x402HTTPResourceServer`) from the dashboard configuration.
172
+ * `x402HTTPResourceServer`) from the dashboard configuration. Each route
173
+ * `accepts` one option per price, in the dashboard's order; a price the
174
+ * account cannot be paid in is left out, and a resource with none left.
167
175
  *
168
176
  * Fails closed: an account that cannot be paid throws instead of yielding
169
177
  * no routes, since no routes would serve paid endpoints for free.
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
package/dist/config.js CHANGED
@@ -113,11 +113,18 @@ function parseX402Config(body) {
113
113
  if (!isObject(resource) ||
114
114
  typeof resource.method !== 'string' ||
115
115
  typeof resource.path !== 'string' ||
116
- !isObject(resource.price) ||
117
- typeof resource.price.amount !== 'string' ||
118
- typeof resource.price.asset !== 'string' ||
119
116
  typeof resource.scheme !== 'string') {
120
- throw invalid('a resource lacks `method`, `path`, `price` or `scheme`');
117
+ throw invalid('a resource lacks `method`, `path` or `scheme`');
118
+ }
119
+ if (!Array.isArray(resource.prices) || resource.prices.length === 0) {
120
+ throw invalid(isObject(resource.price)
121
+ ? 'a resource has `price`, not `prices`: the API is older than this package'
122
+ : 'a resource lacks `prices`');
123
+ }
124
+ for (const price of resource.prices) {
125
+ if (!isObject(price) || typeof price.amount !== 'string' || typeof price.asset !== 'string') {
126
+ throw invalid('a price lacks `amount` or `asset`');
127
+ }
121
128
  }
122
129
  }
123
130
  return body;
@@ -205,7 +212,9 @@ function assertPayableConfig(config) {
205
212
  }
206
213
  /**
207
214
  * Builds stock `@x402/core` routes (for `paymentMiddleware` and
208
- * `x402HTTPResourceServer`) from the dashboard configuration.
215
+ * `x402HTTPResourceServer`) from the dashboard configuration. Each route
216
+ * `accepts` one option per price, in the dashboard's order; a price the
217
+ * account cannot be paid in is left out, and a resource with none left.
209
218
  *
210
219
  * Fails closed: an account that cannot be paid throws instead of yielding
211
220
  * no routes, since no routes would serve paid endpoints for free.
@@ -222,27 +231,34 @@ function routesFromConfig(config, options = {}) {
222
231
  skip(resource, `scheme "${resource.scheme}" is not registered`);
223
232
  continue;
224
233
  }
225
- const network = resource.price.network ?? config.network;
226
- const asset = config.assets.find((candidate) => (candidate.network ?? config.network) === network &&
227
- sameAsset(network, candidate.address, resource.price.asset));
228
- if (!asset) {
229
- skip(resource, `asset ${resource.price.asset} is not accepted`);
230
- continue;
231
- }
232
- const payTo = asset.network ? asset.payTo : config.payTo.address;
233
- if (!payTo) {
234
- skip(resource, `no payTo on ${network}; set one in the dashboard`);
234
+ // One `accepts` entry per price the account can be paid in.
235
+ const priced = resource.prices.flatMap((price) => {
236
+ const network = price.network ?? config.network;
237
+ const asset = config.assets.find((candidate) => (candidate.network ?? config.network) === network &&
238
+ sameAsset(network, candidate.address, price.asset));
239
+ if (!asset) {
240
+ skip(resource, `${price.currencyCode}: asset ${price.asset} is not accepted`);
241
+ return [];
242
+ }
243
+ const payTo = asset.network ? asset.payTo : config.payTo.address;
244
+ if (!payTo) {
245
+ skip(resource, `${price.currencyCode}: no payTo on ${network}; set one in the dashboard`);
246
+ return [];
247
+ }
248
+ return [{ price, network, asset, payTo }];
249
+ });
250
+ if (priced.length === 0)
235
251
  continue;
236
- }
237
252
  const key = routeKey(resource);
238
253
  if (routes[key]) {
239
254
  skip(resource, `duplicate route "${key}"`);
240
255
  continue;
241
256
  }
242
- const permit2Only = asset.methods.includes('permit2') && !asset.methods.includes('eip3009');
257
+ const isPermit2Only = (asset) => asset.methods.includes('permit2') && !asset.methods.includes('eip3009');
243
258
  const method = resource.method.trim().toUpperCase();
244
259
  const routeExtensions = {};
245
- if (permit2Only && extensions?.declareEip2612GasSponsoringExtension) {
260
+ if (priced.some(({ asset }) => isPermit2Only(asset)) &&
261
+ extensions?.declareEip2612GasSponsoringExtension) {
246
262
  // A buyer without a Permit2 approval signs an EIP-2612 permit too.
247
263
  Object.assign(routeExtensions, extensions.declareEip2612GasSponsoringExtension());
248
264
  }
@@ -253,23 +269,23 @@ function routesFromConfig(config, options = {}) {
253
269
  }), resource.outputSchema));
254
270
  }
255
271
  routes[key] = {
256
- accepts: {
272
+ accepts: priced.map(({ price, network, asset, payTo }) => ({
257
273
  scheme: resource.scheme,
258
274
  network: network,
259
275
  payTo,
260
276
  price: {
261
- asset: resource.price.asset,
262
- amount: resource.price.amount,
277
+ asset: price.asset,
278
+ amount: price.amount,
263
279
  extra: isSolanaNetwork(network)
264
280
  ? { ...(asset.feePayer ? { feePayer: asset.feePayer } : {}) }
265
281
  : {
266
282
  name: asset.eip712?.name,
267
283
  version: asset.eip712?.version,
268
- ...(permit2Only ? { assetTransferMethod: 'permit2' } : {}),
284
+ ...(isPermit2Only(asset) ? { assetTransferMethod: 'permit2' } : {}),
269
285
  },
270
286
  },
271
287
  maxTimeoutSeconds: resource.maxTimeoutSeconds,
272
- },
288
+ })),
273
289
  ...(resource.description ? { description: resource.description } : {}),
274
290
  ...(resource.mimeType ? { mimeType: resource.mimeType } : {}),
275
291
  ...(resource.discoverable && config.account.name ? { serviceName: config.account.name } : {}),
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
@@ -2,6 +2,14 @@
2
2
  export declare const MERCHANT_API_BASE_URL: "https://api-merchant.cryptonly.net";
3
3
  /** Origin for the sandbox merchant API. */
4
4
  export declare const SANDBOX_MERCHANT_API_BASE_URL: "https://sandbox-api-merchant.cryptonly.net";
5
+ /**
6
+ * The public x402 discovery (Bazaar) feed, as a facilitator URL for
7
+ * `withBazaar(new HTTPFacilitatorClient({ url: DISCOVERY_FEED_URL }))`. It is
8
+ * on the public API host, not the merchant API, and needs no key.
9
+ */
10
+ export declare const DISCOVERY_FEED_URL: "https://api.cryptonly.net/x402";
11
+ /** The sandbox discovery feed. */
12
+ export declare const SANDBOX_DISCOVERY_FEED_URL: "https://sandbox-api.cryptonly.net/x402";
5
13
  /** Header that carries the merchant (tenant) API key. */
6
14
  export declare const MERCHANT_API_KEY_HEADER: "x-tenant-api-key";
7
15
  //# sourceMappingURL=constants.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,wEAAwE;AACxE,eAAO,MAAM,qBAAqB,EAAG,oCAA6C,CAAC;AAEnF,2CAA2C;AAC3C,eAAO,MAAM,6BAA6B,EACxC,4CAAqD,CAAC;AAExD,yDAAyD;AACzD,eAAO,MAAM,uBAAuB,EAAG,kBAA2B,CAAC"}
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,wEAAwE;AACxE,eAAO,MAAM,qBAAqB,EAAG,oCAA6C,CAAC;AAEnF,2CAA2C;AAC3C,eAAO,MAAM,6BAA6B,EACxC,4CAAqD,CAAC;AAExD;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,EAAG,gCAAyC,CAAC;AAE5E,kCAAkC;AAClC,eAAO,MAAM,0BAA0B,EAAG,wCAAiD,CAAC;AAE5F,yDAAyD;AACzD,eAAO,MAAM,uBAAuB,EAAG,kBAA2B,CAAC"}
package/dist/constants.js CHANGED
@@ -1,10 +1,18 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.MERCHANT_API_KEY_HEADER = exports.SANDBOX_MERCHANT_API_BASE_URL = exports.MERCHANT_API_BASE_URL = void 0;
3
+ exports.MERCHANT_API_KEY_HEADER = exports.SANDBOX_DISCOVERY_FEED_URL = exports.DISCOVERY_FEED_URL = exports.SANDBOX_MERCHANT_API_BASE_URL = exports.MERCHANT_API_BASE_URL = void 0;
4
4
  /** Default origin for the merchant API (no path; no trailing slash). */
5
5
  exports.MERCHANT_API_BASE_URL = 'https://api-merchant.cryptonly.net';
6
6
  /** Origin for the sandbox merchant API. */
7
7
  exports.SANDBOX_MERCHANT_API_BASE_URL = 'https://sandbox-api-merchant.cryptonly.net';
8
+ /**
9
+ * The public x402 discovery (Bazaar) feed, as a facilitator URL for
10
+ * `withBazaar(new HTTPFacilitatorClient({ url: DISCOVERY_FEED_URL }))`. It is
11
+ * on the public API host, not the merchant API, and needs no key.
12
+ */
13
+ exports.DISCOVERY_FEED_URL = 'https://api.cryptonly.net/x402';
14
+ /** The sandbox discovery feed. */
15
+ exports.SANDBOX_DISCOVERY_FEED_URL = 'https://sandbox-api.cryptonly.net/x402';
8
16
  /** Header that carries the merchant (tenant) API key. */
9
17
  exports.MERCHANT_API_KEY_HEADER = 'x-tenant-api-key';
10
18
  //# sourceMappingURL=constants.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":";;;AAAA,wEAAwE;AAC3D,QAAA,qBAAqB,GAAG,oCAA6C,CAAC;AAEnF,2CAA2C;AAC9B,QAAA,6BAA6B,GACxC,4CAAqD,CAAC;AAExD,yDAAyD;AAC5C,QAAA,uBAAuB,GAAG,kBAA2B,CAAC"}
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":";;;AAAA,wEAAwE;AAC3D,QAAA,qBAAqB,GAAG,oCAA6C,CAAC;AAEnF,2CAA2C;AAC9B,QAAA,6BAA6B,GACxC,4CAAqD,CAAC;AAExD;;;;GAIG;AACU,QAAA,kBAAkB,GAAG,gCAAyC,CAAC;AAE5E,kCAAkC;AACrB,QAAA,0BAA0B,GAAG,wCAAiD,CAAC;AAE5F,yDAAyD;AAC5C,QAAA,uBAAuB,GAAG,kBAA2B,CAAC"}
package/dist/index.d.ts CHANGED
@@ -1,8 +1,10 @@
1
1
  export { CryptonlyFacilitatorClient, resolveMerchantApiOrigin, } from './client.js';
2
2
  export type { CryptonlyFacilitatorConfig } from './client.js';
3
3
  export { X402ConfigError, assertPayableConfig, fetchX402Config, isSolanaNetwork, loadX402Extensions, parseX402Config, routeKey, routesFromConfig, } from './config.js';
4
- export type { FetchX402ConfigOptions, RoutesFromConfigOptions, X402AccountStatus, X402Config, X402ConfigAsset, X402ConfigErrorCode, X402ConfigResource, X402ExtensionsModule, } from './config.js';
5
- export { MERCHANT_API_BASE_URL, MERCHANT_API_KEY_HEADER, SANDBOX_MERCHANT_API_BASE_URL, } from './constants.js';
6
- export { X402_CONFIG_UNAVAILABLE, X402_LOG_PREFIX, createResourceServer, createX402RouteSource, defaultEvmSchemes, defaultSvmSchemes, describeError, solanaNetworksOf, } from './route-source.js';
4
+ export type { FetchX402ConfigOptions, RoutesFromConfigOptions, X402AccountStatus, X402Config, X402ConfigAsset, X402ConfigErrorCode, X402ConfigPrice, X402ConfigResource, X402ExtensionsModule, } from './config.js';
5
+ export { DISCOVERY_FEED_URL, MERCHANT_API_BASE_URL, MERCHANT_API_KEY_HEADER, SANDBOX_DISCOVERY_FEED_URL, SANDBOX_MERCHANT_API_BASE_URL, } from './constants.js';
6
+ export { createHTTPResourceServer, createPublicRequestMapper } from './public-url.js';
7
+ export type { X402PublicRequestMapper, X402PublicUrlOptions } from './public-url.js';
8
+ export { X402_CONFIG_UNAVAILABLE, X402_LOG_PREFIX, createResourceServer, createX402RouteSource, defaultEvmSchemes, defaultSvmSchemes, describeError, evmNetworksOf, solanaNetworksOf, } from './route-source.js';
7
9
  export type { X402Logger, X402RouteSet, X402RouteSetBuilder, X402RouteSource, X402RouteSourceOptions, } from './route-source.js';
8
10
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,0BAA0B,EAC1B,wBAAwB,GACzB,MAAM,aAAa,CAAC;AACrB,YAAY,EAAE,0BAA0B,EAAE,MAAM,aAAa,CAAC;AAC9D,OAAO,EACL,eAAe,EACf,mBAAmB,EACnB,eAAe,EACf,eAAe,EACf,kBAAkB,EAClB,eAAe,EACf,QAAQ,EACR,gBAAgB,GACjB,MAAM,aAAa,CAAC;AACrB,YAAY,EACV,sBAAsB,EACtB,uBAAuB,EACvB,iBAAiB,EACjB,UAAU,EACV,eAAe,EACf,mBAAmB,EACnB,kBAAkB,EAClB,oBAAoB,GACrB,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,qBAAqB,EACrB,uBAAuB,EACvB,6BAA6B,GAC9B,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,uBAAuB,EACvB,eAAe,EACf,oBAAoB,EACpB,qBAAqB,EACrB,iBAAiB,EACjB,iBAAiB,EACjB,aAAa,EACb,gBAAgB,GACjB,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EACV,UAAU,EACV,YAAY,EACZ,mBAAmB,EACnB,eAAe,EACf,sBAAsB,GACvB,MAAM,mBAAmB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,0BAA0B,EAC1B,wBAAwB,GACzB,MAAM,aAAa,CAAC;AACrB,YAAY,EAAE,0BAA0B,EAAE,MAAM,aAAa,CAAC;AAC9D,OAAO,EACL,eAAe,EACf,mBAAmB,EACnB,eAAe,EACf,eAAe,EACf,kBAAkB,EAClB,eAAe,EACf,QAAQ,EACR,gBAAgB,GACjB,MAAM,aAAa,CAAC;AACrB,YAAY,EACV,sBAAsB,EACtB,uBAAuB,EACvB,iBAAiB,EACjB,UAAU,EACV,eAAe,EACf,mBAAmB,EACnB,eAAe,EACf,kBAAkB,EAClB,oBAAoB,GACrB,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,kBAAkB,EAClB,qBAAqB,EACrB,uBAAuB,EACvB,0BAA0B,EAC1B,6BAA6B,GAC9B,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,wBAAwB,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAC;AACtF,YAAY,EAAE,uBAAuB,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AACrF,OAAO,EACL,uBAAuB,EACvB,eAAe,EACf,oBAAoB,EACpB,qBAAqB,EACrB,iBAAiB,EACjB,iBAAiB,EACjB,aAAa,EACb,aAAa,EACb,gBAAgB,GACjB,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EACV,UAAU,EACV,YAAY,EACZ,mBAAmB,EACnB,eAAe,EACf,sBAAsB,GACvB,MAAM,mBAAmB,CAAC"}
package/dist/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.solanaNetworksOf = exports.describeError = exports.defaultSvmSchemes = exports.defaultEvmSchemes = exports.createX402RouteSource = exports.createResourceServer = exports.X402_LOG_PREFIX = exports.X402_CONFIG_UNAVAILABLE = exports.SANDBOX_MERCHANT_API_BASE_URL = exports.MERCHANT_API_KEY_HEADER = exports.MERCHANT_API_BASE_URL = exports.routesFromConfig = exports.routeKey = exports.parseX402Config = exports.loadX402Extensions = exports.isSolanaNetwork = exports.fetchX402Config = exports.assertPayableConfig = exports.X402ConfigError = exports.resolveMerchantApiOrigin = exports.CryptonlyFacilitatorClient = void 0;
3
+ exports.solanaNetworksOf = exports.evmNetworksOf = exports.describeError = exports.defaultSvmSchemes = exports.defaultEvmSchemes = exports.createX402RouteSource = exports.createResourceServer = exports.X402_LOG_PREFIX = exports.X402_CONFIG_UNAVAILABLE = exports.createPublicRequestMapper = exports.createHTTPResourceServer = exports.SANDBOX_MERCHANT_API_BASE_URL = exports.SANDBOX_DISCOVERY_FEED_URL = exports.MERCHANT_API_KEY_HEADER = exports.MERCHANT_API_BASE_URL = exports.DISCOVERY_FEED_URL = exports.routesFromConfig = exports.routeKey = exports.parseX402Config = exports.loadX402Extensions = exports.isSolanaNetwork = exports.fetchX402Config = exports.assertPayableConfig = exports.X402ConfigError = exports.resolveMerchantApiOrigin = exports.CryptonlyFacilitatorClient = void 0;
4
4
  var client_js_1 = require("./client.js");
5
5
  Object.defineProperty(exports, "CryptonlyFacilitatorClient", { enumerable: true, get: function () { return client_js_1.CryptonlyFacilitatorClient; } });
6
6
  Object.defineProperty(exports, "resolveMerchantApiOrigin", { enumerable: true, get: function () { return client_js_1.resolveMerchantApiOrigin; } });
@@ -14,9 +14,14 @@ Object.defineProperty(exports, "parseX402Config", { enumerable: true, get: funct
14
14
  Object.defineProperty(exports, "routeKey", { enumerable: true, get: function () { return config_js_1.routeKey; } });
15
15
  Object.defineProperty(exports, "routesFromConfig", { enumerable: true, get: function () { return config_js_1.routesFromConfig; } });
16
16
  var constants_js_1 = require("./constants.js");
17
+ Object.defineProperty(exports, "DISCOVERY_FEED_URL", { enumerable: true, get: function () { return constants_js_1.DISCOVERY_FEED_URL; } });
17
18
  Object.defineProperty(exports, "MERCHANT_API_BASE_URL", { enumerable: true, get: function () { return constants_js_1.MERCHANT_API_BASE_URL; } });
18
19
  Object.defineProperty(exports, "MERCHANT_API_KEY_HEADER", { enumerable: true, get: function () { return constants_js_1.MERCHANT_API_KEY_HEADER; } });
20
+ Object.defineProperty(exports, "SANDBOX_DISCOVERY_FEED_URL", { enumerable: true, get: function () { return constants_js_1.SANDBOX_DISCOVERY_FEED_URL; } });
19
21
  Object.defineProperty(exports, "SANDBOX_MERCHANT_API_BASE_URL", { enumerable: true, get: function () { return constants_js_1.SANDBOX_MERCHANT_API_BASE_URL; } });
22
+ var public_url_js_1 = require("./public-url.js");
23
+ Object.defineProperty(exports, "createHTTPResourceServer", { enumerable: true, get: function () { return public_url_js_1.createHTTPResourceServer; } });
24
+ Object.defineProperty(exports, "createPublicRequestMapper", { enumerable: true, get: function () { return public_url_js_1.createPublicRequestMapper; } });
20
25
  var route_source_js_1 = require("./route-source.js");
21
26
  Object.defineProperty(exports, "X402_CONFIG_UNAVAILABLE", { enumerable: true, get: function () { return route_source_js_1.X402_CONFIG_UNAVAILABLE; } });
22
27
  Object.defineProperty(exports, "X402_LOG_PREFIX", { enumerable: true, get: function () { return route_source_js_1.X402_LOG_PREFIX; } });
@@ -25,5 +30,6 @@ Object.defineProperty(exports, "createX402RouteSource", { enumerable: true, get:
25
30
  Object.defineProperty(exports, "defaultEvmSchemes", { enumerable: true, get: function () { return route_source_js_1.defaultEvmSchemes; } });
26
31
  Object.defineProperty(exports, "defaultSvmSchemes", { enumerable: true, get: function () { return route_source_js_1.defaultSvmSchemes; } });
27
32
  Object.defineProperty(exports, "describeError", { enumerable: true, get: function () { return route_source_js_1.describeError; } });
33
+ Object.defineProperty(exports, "evmNetworksOf", { enumerable: true, get: function () { return route_source_js_1.evmNetworksOf; } });
28
34
  Object.defineProperty(exports, "solanaNetworksOf", { enumerable: true, get: function () { return route_source_js_1.solanaNetworksOf; } });
29
35
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,yCAGqB;AAFnB,uHAAA,0BAA0B,OAAA;AAC1B,qHAAA,wBAAwB,OAAA;AAG1B,yCASqB;AARnB,4GAAA,eAAe,OAAA;AACf,gHAAA,mBAAmB,OAAA;AACnB,4GAAA,eAAe,OAAA;AACf,4GAAA,eAAe,OAAA;AACf,+GAAA,kBAAkB,OAAA;AAClB,4GAAA,eAAe,OAAA;AACf,qGAAA,QAAQ,OAAA;AACR,6GAAA,gBAAgB,OAAA;AAYlB,+CAIwB;AAHtB,qHAAA,qBAAqB,OAAA;AACrB,uHAAA,uBAAuB,OAAA;AACvB,6HAAA,6BAA6B,OAAA;AAE/B,qDAS2B;AARzB,0HAAA,uBAAuB,OAAA;AACvB,kHAAA,eAAe,OAAA;AACf,uHAAA,oBAAoB,OAAA;AACpB,wHAAA,qBAAqB,OAAA;AACrB,oHAAA,iBAAiB,OAAA;AACjB,oHAAA,iBAAiB,OAAA;AACjB,gHAAA,aAAa,OAAA;AACb,mHAAA,gBAAgB,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,yCAGqB;AAFnB,uHAAA,0BAA0B,OAAA;AAC1B,qHAAA,wBAAwB,OAAA;AAG1B,yCASqB;AARnB,4GAAA,eAAe,OAAA;AACf,gHAAA,mBAAmB,OAAA;AACnB,4GAAA,eAAe,OAAA;AACf,4GAAA,eAAe,OAAA;AACf,+GAAA,kBAAkB,OAAA;AAClB,4GAAA,eAAe,OAAA;AACf,qGAAA,QAAQ,OAAA;AACR,6GAAA,gBAAgB,OAAA;AAalB,+CAMwB;AALtB,kHAAA,kBAAkB,OAAA;AAClB,qHAAA,qBAAqB,OAAA;AACrB,uHAAA,uBAAuB,OAAA;AACvB,0HAAA,0BAA0B,OAAA;AAC1B,6HAAA,6BAA6B,OAAA;AAE/B,iDAAsF;AAA7E,yHAAA,wBAAwB,OAAA;AAAE,0HAAA,yBAAyB,OAAA;AAE5D,qDAU2B;AATzB,0HAAA,uBAAuB,OAAA;AACvB,kHAAA,eAAe,OAAA;AACf,uHAAA,oBAAoB,OAAA;AACpB,wHAAA,qBAAqB,OAAA;AACrB,oHAAA,iBAAiB,OAAA;AACjB,oHAAA,iBAAiB,OAAA;AACjB,gHAAA,aAAa,OAAA;AACb,gHAAA,aAAa,OAAA;AACb,mHAAA,gBAAgB,OAAA"}
@@ -0,0 +1,36 @@
1
+ import { x402HTTPResourceServer, type HTTPAdapter, type HTTPRequestContext, type RoutesConfig, type x402ResourceServer } from '@x402/core/server';
2
+ /**
3
+ * Where the app sits behind a reverse proxy that rewrites its URLs. Dashboard
4
+ * prices are keyed by the public path, so the path the app sees is mapped to
5
+ * it before matching.
6
+ */
7
+ export type X402PublicUrlOptions = {
8
+ /**
9
+ * Prefix the proxy strips before the request reaches the app: the public
10
+ * path is `pathPrefix` + the app's path. `/v1` when the proxy serves the
11
+ * public `/v1/weather` from the app's `/weather`.
12
+ */
13
+ pathPrefix?: string;
14
+ /**
15
+ * Maps the path the app sees to the public path, for other rewrites. A
16
+ * proxy that adds `/internal`: `(path) => path.replace(/^\/internal/, '')`.
17
+ * Not together with `pathPrefix`.
18
+ */
19
+ publicPath?: (path: string, request: HTTPAdapter) => string;
20
+ /**
21
+ * Public origin buyers call (`https://api.example.com`). The 402's
22
+ * `resource.url` is built from it, else from the request's own host and
23
+ * protocol.
24
+ */
25
+ publicBaseUrl?: string;
26
+ };
27
+ /** Maps a request context to its public path and URL. Mapping twice is a no-op. */
28
+ export type X402PublicRequestMapper = (context: HTTPRequestContext) => HTTPRequestContext;
29
+ /**
30
+ * The mapper for `options`, or `undefined` when the app is served at its
31
+ * public URL. Throws on invalid options, so call it at startup.
32
+ */
33
+ export declare function createPublicRequestMapper(options: X402PublicUrlOptions): X402PublicRequestMapper | undefined;
34
+ /** An `x402HTTPResourceServer` for `routes`, on the public URL when `toPublic` is given. */
35
+ export declare function createHTTPResourceServer(resourceServer: x402ResourceServer, routes: RoutesConfig, toPublic?: X402PublicRequestMapper): x402HTTPResourceServer;
36
+ //# sourceMappingURL=public-url.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"public-url.d.ts","sourceRoot":"","sources":["../src/public-url.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,sBAAsB,EACtB,KAAK,WAAW,EAChB,KAAK,kBAAkB,EAGvB,KAAK,YAAY,EACjB,KAAK,kBAAkB,EACxB,MAAM,mBAAmB,CAAC;AAE3B;;;;GAIG;AACH,MAAM,MAAM,oBAAoB,GAAG;IACjC;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;OAIG;IACH,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,KAAK,MAAM,CAAC;IAC5D;;;;OAIG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF,mFAAmF;AACnF,MAAM,MAAM,uBAAuB,GAAG,CAAC,OAAO,EAAE,kBAAkB,KAAK,kBAAkB,CAAC;AAI1F;;;GAGG;AACH,wBAAgB,yBAAyB,CACvC,OAAO,EAAE,oBAAoB,GAC5B,uBAAuB,GAAG,SAAS,CAiCrC;AA0CD,4FAA4F;AAC5F,wBAAgB,wBAAwB,CACtC,cAAc,EAAE,kBAAkB,EAClC,MAAM,EAAE,YAAY,EACpB,QAAQ,CAAC,EAAE,uBAAuB,GACjC,sBAAsB,CAIxB"}
@@ -0,0 +1,120 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createPublicRequestMapper = createPublicRequestMapper;
4
+ exports.createHTTPResourceServer = createHTTPResourceServer;
5
+ const server_1 = require("@x402/core/server");
6
+ const MAPPED = Symbol('cryptonly.x402.publicRequest');
7
+ /**
8
+ * The mapper for `options`, or `undefined` when the app is served at its
9
+ * public URL. Throws on invalid options, so call it at startup.
10
+ */
11
+ function createPublicRequestMapper(options) {
12
+ const { pathPrefix, publicPath, publicBaseUrl } = options;
13
+ if (pathPrefix !== undefined && publicPath) {
14
+ throw new Error('[@cryptonly/x402] set either `pathPrefix` or `publicPath`, not both');
15
+ }
16
+ const prefix = pathPrefix === undefined ? undefined : normalizePrefix(pathPrefix);
17
+ const origin = publicBaseUrl === undefined ? undefined : originOf(publicBaseUrl);
18
+ if (!prefix && !publicPath && !origin)
19
+ return undefined;
20
+ const toPublic = (path, adapter) => {
21
+ if (prefix)
22
+ return path === '/' ? prefix : `${prefix}${path}`;
23
+ if (!publicPath)
24
+ return path;
25
+ const mapped = publicPath(path, adapter);
26
+ return mapped.startsWith('/') ? mapped : `/${mapped}`;
27
+ };
28
+ return (context) => {
29
+ if (context[MAPPED])
30
+ return context;
31
+ const inner = context.adapter;
32
+ const path = toPublic(context.path, inner);
33
+ const adapter = withPublicUrl(inner, path, origin);
34
+ return Object.assign({
35
+ ...context,
36
+ adapter,
37
+ path,
38
+ ...(context.decodedPath === undefined
39
+ ? {}
40
+ : { decodedPath: toPublic(context.decodedPath, inner) }),
41
+ }, { [MAPPED]: true });
42
+ };
43
+ }
44
+ /**
45
+ * An `x402HTTPResourceServer` that matches routes and builds `resource.url`
46
+ * on the public URL. For middleware that builds the request context itself
47
+ * (the stock Express and Fastify ones).
48
+ */
49
+ class PublicUrlHTTPResourceServer extends server_1.x402HTTPResourceServer {
50
+ toPublic;
51
+ constructor(resourceServer, routes, toPublic) {
52
+ super(resourceServer, routes);
53
+ this.toPublic = toPublic;
54
+ }
55
+ requiresPayment(context) {
56
+ return super.requiresPayment(this.toPublic(context));
57
+ }
58
+ processHTTPRequest(context, paywallConfig) {
59
+ return super.processHTTPRequest(this.toPublic(context), paywallConfig);
60
+ }
61
+ processSettlement(...args) {
62
+ const [payload, requirements, extensions, transport, ...rest] = args;
63
+ return super.processSettlement(payload, requirements, extensions, transport && this.publicTransport(transport), ...rest);
64
+ }
65
+ publicTransport(transport) {
66
+ return { ...transport, request: this.toPublic(transport.request) };
67
+ }
68
+ }
69
+ /** An `x402HTTPResourceServer` for `routes`, on the public URL when `toPublic` is given. */
70
+ function createHTTPResourceServer(resourceServer, routes, toPublic) {
71
+ return toPublic
72
+ ? new PublicUrlHTTPResourceServer(resourceServer, routes, toPublic)
73
+ : new server_1.x402HTTPResourceServer(resourceServer, routes);
74
+ }
75
+ function normalizePrefix(prefix) {
76
+ if (!prefix.startsWith('/') || /[?#]/.test(prefix)) {
77
+ throw new Error(`[@cryptonly/x402] pathPrefix must be a path like "/v1", got "${prefix}"`);
78
+ }
79
+ const trimmed = prefix.replace(/\/+$/, '');
80
+ return trimmed === '' ? undefined : trimmed;
81
+ }
82
+ function originOf(baseUrl) {
83
+ let url;
84
+ try {
85
+ url = new URL(baseUrl);
86
+ }
87
+ catch {
88
+ throw new Error(`[@cryptonly/x402] publicBaseUrl must be an absolute URL, got "${baseUrl}"`);
89
+ }
90
+ if (!/^https?:$/.test(url.protocol) || url.pathname !== '/' || url.search || url.hash) {
91
+ throw new Error(`[@cryptonly/x402] publicBaseUrl must be an http(s) origin like "https://api.example.com" ` +
92
+ `(put a path in pathPrefix), got "${baseUrl}"`);
93
+ }
94
+ return url.origin;
95
+ }
96
+ /** `inner`, answering with the public path and URL. */
97
+ function withPublicUrl(inner, path, origin) {
98
+ const getUrl = () => {
99
+ const own = inner.getUrl();
100
+ let url;
101
+ try {
102
+ url = new URL(own);
103
+ }
104
+ catch {
105
+ return origin ? `${origin}${path}` : own;
106
+ }
107
+ return `${origin ?? url.origin}${path}${url.search}`;
108
+ };
109
+ return new Proxy(inner, {
110
+ get(target, property, receiver) {
111
+ if (property === 'getPath')
112
+ return () => path;
113
+ if (property === 'getUrl')
114
+ return getUrl;
115
+ const value = Reflect.get(target, property, receiver);
116
+ return typeof value === 'function' ? value.bind(target) : value;
117
+ },
118
+ });
119
+ }
120
+ //# sourceMappingURL=public-url.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"public-url.js","sourceRoot":"","sources":["../src/public-url.ts"],"names":[],"mappings":"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"}
@@ -2,10 +2,11 @@ import { x402ResourceServer, type RoutesConfig } from '@x402/core/server';
2
2
  import type { SchemeNetworkServer } from '@x402/core/types';
3
3
  import { CryptonlyFacilitatorClient, type CryptonlyFacilitatorConfig } from './client.js';
4
4
  import { type X402Config, type X402ExtensionsModule } from './config.js';
5
+ import type { X402PublicUrlOptions } from './public-url.js';
5
6
  /** Logger used for refresh failures and skipped resources. */
6
7
  export type X402Logger = Pick<Console, 'info' | 'warn' | 'error'>;
7
8
  /** Options shared by every framework adapter. */
8
- export type X402RouteSourceOptions = CryptonlyFacilitatorConfig & {
9
+ export type X402RouteSourceOptions = CryptonlyFacilitatorConfig & X402PublicUrlOptions & {
9
10
  /**
10
11
  * How often to reload `GET /x402/config`. Defaults to 60 s; `0` turns
11
12
  * refreshing off.
@@ -87,13 +88,15 @@ export declare const X402_LOG_PREFIX = "[@cryptonly/x402]";
87
88
  export declare function createX402RouteSource<T>(options: X402RouteSourceOptions, build: X402RouteSetBuilder<T>): X402RouteSource<T>;
88
89
  /**
89
90
  * A fresh `x402ResourceServer` on the facilitator, with the EVM schemes
90
- * registered on the account's network and the SVM schemes on each of its
91
- * Solana networks.
91
+ * registered on each of the account's EVM networks and the SVM schemes on
92
+ * each of its Solana networks.
92
93
  *
93
94
  * Build one per route set: `initialize()` on a shared one would clear its
94
95
  * facilitator data under requests still in flight.
95
96
  */
96
97
  export declare function createResourceServer(config: X402Config, facilitator: CryptonlyFacilitatorClient, schemes: readonly SchemeNetworkServer[], svmSchemes: readonly SchemeNetworkServer[]): x402ResourceServer;
98
+ /** The EVM networks an account accepts payments on; Base first. */
99
+ export declare function evmNetworksOf(config: X402Config): X402Config['network'][];
97
100
  /** The Solana networks an account accepts payments on. */
98
101
  export declare function solanaNetworksOf(config: X402Config): X402Config['network'][];
99
102
  /** `[new ExactEvmScheme()]` from `@x402/evm`. Throws when it is not installed. */
@@ -1 +1 @@
1
- {"version":3,"file":"route-source.d.ts","sourceRoot":"","sources":["../src/route-source.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"route-source.d.ts","sourceRoot":"","sources":["../src/route-source.ts"],"names":[],"mappings":"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"}
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.X402_LOG_PREFIX = exports.X402_CONFIG_UNAVAILABLE = void 0;
4
4
  exports.createX402RouteSource = createX402RouteSource;
5
5
  exports.createResourceServer = createResourceServer;
6
+ exports.evmNetworksOf = evmNetworksOf;
6
7
  exports.solanaNetworksOf = solanaNetworksOf;
7
8
  exports.defaultEvmSchemes = defaultEvmSchemes;
8
9
  exports.defaultSvmSchemes = defaultSvmSchemes;
@@ -58,13 +59,20 @@ function createX402RouteSource(options, build) {
58
59
  ...(options.extensions !== undefined ? { extensions: options.extensions } : {}),
59
60
  onSkip: (resource, reason) => skipped.push(`${resource.method} ${resource.path}: ${reason}`),
60
61
  });
62
+ // Every option must have one: core refuses the whole server otherwise.
61
63
  for (const [key, route] of Object.entries(routes)) {
62
- const accepts = Array.isArray(route.accepts) ? route.accepts[0] : route.accepts;
63
- const names = (0, config_js_1.isSolanaNetwork)(accepts.network) ? svmNames : evmNames;
64
- if (!names.includes(accepts.scheme)) {
65
- skipped.push(`${key}: no ${accepts.scheme} scheme for ${accepts.network}`);
64
+ const options = Array.isArray(route.accepts) ? route.accepts : [route.accepts];
65
+ const servable = options.filter((option) => {
66
+ const names = (0, config_js_1.isSolanaNetwork)(option.network) ? svmNames : evmNames;
67
+ if (names.includes(option.scheme))
68
+ return true;
69
+ skipped.push(`${key}: no ${option.scheme} scheme for ${option.network}`);
70
+ return false;
71
+ });
72
+ if (servable.length === 0)
66
73
  delete routes[key];
67
- }
74
+ else
75
+ route.accepts = servable;
68
76
  }
69
77
  const key = JSON.stringify([config.network, routes]);
70
78
  if (current?.key === key)
@@ -142,16 +150,18 @@ function createX402RouteSource(options, build) {
142
150
  }
143
151
  /**
144
152
  * A fresh `x402ResourceServer` on the facilitator, with the EVM schemes
145
- * registered on the account's network and the SVM schemes on each of its
146
- * Solana networks.
153
+ * registered on each of the account's EVM networks and the SVM schemes on
154
+ * each of its Solana networks.
147
155
  *
148
156
  * Build one per route set: `initialize()` on a shared one would clear its
149
157
  * facilitator data under requests still in flight.
150
158
  */
151
159
  function createResourceServer(config, facilitator, schemes, svmSchemes) {
152
160
  const server = new server_1.x402ResourceServer(facilitator);
153
- for (const scheme of schemes) {
154
- server.register(config.network, scheme);
161
+ for (const network of evmNetworksOf(config)) {
162
+ for (const scheme of schemes) {
163
+ server.register(network, scheme);
164
+ }
155
165
  }
156
166
  for (const network of solanaNetworksOf(config)) {
157
167
  for (const scheme of svmSchemes) {
@@ -160,18 +170,24 @@ function createResourceServer(config, facilitator, schemes, svmSchemes) {
160
170
  }
161
171
  return server;
162
172
  }
163
- /** The Solana networks an account accepts payments on. */
164
- function solanaNetworksOf(config) {
165
- const networks = new Set();
166
- for (const entry of config.networks ?? []) {
167
- if ((0, config_js_1.isSolanaNetwork)(entry.network))
168
- networks.add(entry.network);
169
- }
173
+ /** Every network the account lists, itself or through an asset. */
174
+ function networksOf(config) {
175
+ const networks = new Set([config.network]);
176
+ for (const entry of config.networks ?? [])
177
+ networks.add(entry.network);
170
178
  for (const asset of config.assets) {
171
- if (asset.network && (0, config_js_1.isSolanaNetwork)(asset.network))
179
+ if (asset.network)
172
180
  networks.add(asset.network);
173
181
  }
174
- return [...networks];
182
+ return networks;
183
+ }
184
+ /** The EVM networks an account accepts payments on; Base first. */
185
+ function evmNetworksOf(config) {
186
+ return [...networksOf(config)].filter((network) => !(0, config_js_1.isSolanaNetwork)(network));
187
+ }
188
+ /** The Solana networks an account accepts payments on. */
189
+ function solanaNetworksOf(config) {
190
+ return [...networksOf(config)].filter(config_js_1.isSolanaNetwork);
175
191
  }
176
192
  let evmModule;
177
193
  let svmModule;
@@ -1 +1 @@
1
- {"version":3,"file":"route-source.js","sourceRoot":"","sources":["../src/route-source.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"route-source.js","sourceRoot":"","sources":["../src/route-source.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cryptonly/x402",
3
- "version": "0.6.0",
3
+ "version": "0.8.0",
4
4
  "description": "Cryptonly x402 facilitator client and dashboard price loader. Framework adapters: @cryptonly/x402-express, @cryptonly/x402-fastify, @cryptonly/x402-nestjs.",
5
5
  "license": "MIT",
6
6
  "private": false,