@cryptonly/x402 0.5.0 → 0.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -0
- package/dist/client.d.ts +2 -1
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +2 -3
- package/dist/client.js.map +1 -1
- package/dist/constants.d.ts +8 -0
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +9 -1
- package/dist/constants.js.map +1 -1
- package/dist/index.d.ts +3 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -1
- package/dist/index.js.map +1 -1
- package/dist/public-url.d.ts +36 -0
- package/dist/public-url.d.ts.map +1 -0
- package/dist/public-url.js +120 -0
- package/dist/public-url.js.map +1 -0
- package/dist/route-source.d.ts +2 -1
- package/dist/route-source.d.ts.map +1 -1
- package/dist/route-source.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -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
|
|
30
|
+
* on `/verify`, `/settle` and `/supported`. The discovery feed is elsewhere:
|
|
31
|
+
* see `DISCOVERY_FEED_URL`.
|
|
31
32
|
*
|
|
32
33
|
* @example
|
|
33
34
|
* ```ts
|
package/dist/client.d.ts.map
CHANGED
|
@@ -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
|
|
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
|
|
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
|
}
|
package/dist/client.js.map
CHANGED
|
@@ -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
|
|
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/constants.d.ts
CHANGED
|
@@ -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
|
package/dist/constants.d.ts.map
CHANGED
|
@@ -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
|
package/dist/constants.js.map
CHANGED
|
@@ -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
|
@@ -2,7 +2,9 @@ export { CryptonlyFacilitatorClient, resolveMerchantApiOrigin, } from './client.
|
|
|
2
2
|
export type { CryptonlyFacilitatorConfig } from './client.js';
|
|
3
3
|
export { X402ConfigError, assertPayableConfig, fetchX402Config, isSolanaNetwork, loadX402Extensions, parseX402Config, routeKey, routesFromConfig, } from './config.js';
|
|
4
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';
|
|
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';
|
|
6
8
|
export { X402_CONFIG_UNAVAILABLE, X402_LOG_PREFIX, createResourceServer, createX402RouteSource, defaultEvmSchemes, defaultSvmSchemes, describeError, 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
|
package/dist/index.d.ts.map
CHANGED
|
@@ -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,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,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.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; } });
|
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,+
|
|
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,+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,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"}
|
|
@@ -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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"}
|
package/dist/route-source.d.ts
CHANGED
|
@@ -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.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"route-source.d.ts","sourceRoot":"","sources":["../src/route-source.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,KAAK,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAC1E,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,EAAE,0BAA0B,EAAE,KAAK,0BAA0B,EAAE,MAAM,aAAa,CAAC;AAC1F,OAAO,EAIL,KAAK,UAAU,EACf,KAAK,oBAAoB,EAC1B,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"route-source.d.ts","sourceRoot":"","sources":["../src/route-source.ts"],"names":[],"mappings":"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"}
|
package/dist/route-source.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"route-source.js","sourceRoot":"","sources":["../src/route-source.ts"],"names":[],"mappings":";;;
|
|
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.
|
|
3
|
+
"version": "0.7.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,
|