@apitoll/seller-sdk 0.1.0-beta.3 → 0.1.0-beta.5
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/LICENSE +21 -0
- package/README.md +1 -1
- package/dist/analytics.d.ts.map +1 -1
- package/dist/analytics.js +12 -13
- package/dist/analytics.js.map +1 -1
- package/dist/middleware-express.d.ts +2 -1
- package/dist/middleware-express.d.ts.map +1 -1
- package/dist/middleware-express.js +34 -12
- package/dist/middleware-express.js.map +1 -1
- package/dist/middleware-hono.d.ts.map +1 -1
- package/dist/middleware-hono.js +33 -11
- package/dist/middleware-hono.js.map +1 -1
- package/dist/payment.d.ts.map +1 -1
- package/dist/payment.js +0 -2
- package/dist/payment.js.map +1 -1
- package/package.json +22 -6
- package/dist/analytics.test.d.ts +0 -2
- package/dist/analytics.test.d.ts.map +0 -1
- package/dist/analytics.test.js +0 -222
- package/dist/analytics.test.js.map +0 -1
- package/dist/payment.test.d.ts +0 -2
- package/dist/payment.test.d.ts.map +0 -1
- package/dist/payment.test.js +0 -221
- package/dist/payment.test.js.map +0 -1
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2024 TasnidChain
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
CHANGED
|
@@ -94,7 +94,7 @@ import { AnalyticsReporter } from "@apitoll/seller-sdk";
|
|
|
94
94
|
|
|
95
95
|
const reporter = new AnalyticsReporter({
|
|
96
96
|
apiKey: "your-seller-api-key",
|
|
97
|
-
dashboardUrl: "https://
|
|
97
|
+
dashboardUrl: "https://apitoll.com",
|
|
98
98
|
});
|
|
99
99
|
|
|
100
100
|
// Transactions are automatically batched and reported
|
package/dist/analytics.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"analytics.d.ts","sourceRoot":"","sources":["../src/analytics.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,KAAK,cAAc,EAAE,KAAK,YAAY,EAAoC,MAAM,iBAAiB,CAAC;AAI7H,MAAM,WAAW,cAAc;IAC7B,0CAA0C;IAC1C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,gCAAgC;IAChC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,8BAA8B;IAC9B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,8CAA8C;IAC9C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,0DAA0D;IAC1D,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,2BAA2B;IAC3B,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,iBAAiB;IAChC,mCAAmC;IACnC,QAAQ,EAAE,MAAM,CAAC;IACjB,kBAAkB;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,wCAAwC;IACxC,OAAO,EAAE,cAAc,CAAC;IACxB,2BAA2B;IAC3B,cAAc,EAAE,MAAM,CAAC;IACvB,wCAAwC;IACxC,SAAS,EAAE,MAAM,CAAC;IAClB,8CAA8C;IAC9C,YAAY,CAAC,EAAE,YAAY,CAAC;CAC7B;AASD;;;;GAIG;AACH,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,MAAM,CAAiB;IAC/B,OAAO,CAAC,KAAK,CAA4B;IACzC,OAAO,CAAC,UAAU,CAA+C;gBAErD,MAAM,GAAE,cAAmB;IAavC;;OAEG;IACG,MAAM,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAgDtD;;OAEG;IACG,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAMtF;;OAEG;YACW,KAAK;IA6BnB;;;OAGG;YACW,WAAW;
|
|
1
|
+
{"version":3,"file":"analytics.d.ts","sourceRoot":"","sources":["../src/analytics.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,KAAK,cAAc,EAAE,KAAK,YAAY,EAAoC,MAAM,iBAAiB,CAAC;AAI7H,MAAM,WAAW,cAAc;IAC7B,0CAA0C;IAC1C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,gCAAgC;IAChC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,8BAA8B;IAC9B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,8CAA8C;IAC9C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,0DAA0D;IAC1D,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,2BAA2B;IAC3B,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,iBAAiB;IAChC,mCAAmC;IACnC,QAAQ,EAAE,MAAM,CAAC;IACjB,kBAAkB;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,wCAAwC;IACxC,OAAO,EAAE,cAAc,CAAC;IACxB,2BAA2B;IAC3B,cAAc,EAAE,MAAM,CAAC;IACvB,wCAAwC;IACxC,SAAS,EAAE,MAAM,CAAC;IAClB,8CAA8C;IAC9C,YAAY,CAAC,EAAE,YAAY,CAAC;CAC7B;AASD;;;;GAIG;AACH,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,MAAM,CAAiB;IAC/B,OAAO,CAAC,KAAK,CAA4B;IACzC,OAAO,CAAC,UAAU,CAA+C;gBAErD,MAAM,GAAE,cAAmB;IAavC;;OAEG;IACG,MAAM,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAgDtD;;OAEG;IACG,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAMtF;;OAEG;YACW,KAAK;IA6BnB;;;OAGG;YACW,WAAW;IAwCzB;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAO/B"}
|
package/dist/analytics.js
CHANGED
|
@@ -111,19 +111,18 @@ export class AnalyticsReporter {
|
|
|
111
111
|
if (!this.config.webhookUrl)
|
|
112
112
|
return;
|
|
113
113
|
const body = JSON.stringify({
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
],
|
|
114
|
+
type: `transaction.${transaction.status}`,
|
|
115
|
+
data: {
|
|
116
|
+
txHash: transaction.txHash,
|
|
117
|
+
agentAddress: transaction.agentAddress,
|
|
118
|
+
endpointPath: transaction.endpoint,
|
|
119
|
+
method: transaction.method,
|
|
120
|
+
amount: parseFloat(transaction.amount),
|
|
121
|
+
chain: transaction.chain,
|
|
122
|
+
status: transaction.status,
|
|
123
|
+
latencyMs: transaction.latencyMs,
|
|
124
|
+
requestedAt: transaction.requestedAt,
|
|
125
|
+
},
|
|
127
126
|
});
|
|
128
127
|
const headers = {
|
|
129
128
|
"Content-Type": "application/json",
|
package/dist/analytics.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"analytics.js","sourceRoot":"","sources":["../src/analytics.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"analytics.js","sourceRoot":"","sources":["../src/analytics.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
import type { Request, Response, NextFunction } from "express";
|
|
2
2
|
import { type SellerConfig, type EndpointConfig, type FeeBreakdown } from "@apitoll/shared";
|
|
3
|
+
import type { PaymentReceipt } from "@apitoll/shared";
|
|
3
4
|
export interface PaymentMiddlewareOptions extends SellerConfig {
|
|
4
5
|
}
|
|
5
6
|
export declare function paymentMiddleware(options: PaymentMiddlewareOptions): (req: Request, res: Response, next: NextFunction) => Promise<void>;
|
|
6
7
|
/**
|
|
7
8
|
* Helper to access the payment receipt from a request.
|
|
8
9
|
*/
|
|
9
|
-
export declare function getPaymentReceipt(req: Request):
|
|
10
|
+
export declare function getPaymentReceipt(req: Request): PaymentReceipt | null;
|
|
10
11
|
/**
|
|
11
12
|
* Helper to access full x402 context from a request (includes fee info).
|
|
12
13
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"middleware-express.d.ts","sourceRoot":"","sources":["../src/middleware-express.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAC/D,OAAO,EACL,KAAK,YAAY,EACjB,KAAK,cAAc,EAGnB,KAAK,YAAY,EAIlB,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"middleware-express.d.ts","sourceRoot":"","sources":["../src/middleware-express.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAC/D,OAAO,EACL,KAAK,YAAY,EACjB,KAAK,cAAc,EAGnB,KAAK,YAAY,EAIlB,MAAM,iBAAiB,CAAC;AASzB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAoBtD,MAAM,WAAW,wBAAyB,SAAQ,YAAY;CAAG;AAqEjE,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,wBAAwB,IA6I/D,KAAK,OAAO,EACZ,KAAK,QAAQ,EACb,MAAM,YAAY,KACjB,OAAO,CAAC,IAAI,CAAC,CA4KjB;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,OAAO,yBAE7C;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,OAAO,GAAG;IAC5C,OAAO,EAAE,UAAU,CAAC,OAAO,iBAAiB,CAAC,CAAC;IAC9C,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,cAAc,CAAC;CACxB,GAAG,IAAI,CAEP"}
|
|
@@ -86,19 +86,41 @@ export function paymentMiddleware(options) {
|
|
|
86
86
|
const CIRCUIT_RESET_MS = 30_000; // Try again after 30 seconds
|
|
87
87
|
// Redis is optional — if not available, falls through to in-memory rate limiting
|
|
88
88
|
let redis = null;
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
89
|
+
const redisUrl = process.env.REDIS_URL
|
|
90
|
+
|| (process.env.REDIS_HOST
|
|
91
|
+
? `redis://${process.env.REDIS_HOST}:${process.env.REDIS_PORT || '6379'}`
|
|
92
|
+
: null);
|
|
93
|
+
// Lazy-load Redis to avoid require() in ESM
|
|
94
|
+
let redisInitialized = false;
|
|
95
|
+
async function initRedis() {
|
|
96
|
+
if (redisInitialized || !redisUrl)
|
|
97
|
+
return;
|
|
98
|
+
redisInitialized = true;
|
|
99
|
+
try {
|
|
100
|
+
// Dynamic import — redis is an optional peer dependency
|
|
101
|
+
const moduleName = 'redis';
|
|
102
|
+
const Redis = await import(moduleName);
|
|
103
|
+
redis = Redis.createClient({ url: redisUrl });
|
|
104
|
+
redis.on?.('error', (err) => {
|
|
105
|
+
console.warn('Redis connection error, using in-memory rate limiting:', err.message);
|
|
106
|
+
});
|
|
107
|
+
await redis.connect?.();
|
|
108
|
+
circuitOpen = false;
|
|
109
|
+
}
|
|
110
|
+
catch {
|
|
111
|
+
redis = null;
|
|
112
|
+
circuitOpen = true;
|
|
113
|
+
circuitOpenedAt = Date.now();
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
if (redisUrl) {
|
|
117
|
+
// Start connecting in the background — first requests use in-memory fallback
|
|
118
|
+
circuitOpen = true;
|
|
119
|
+
circuitOpenedAt = Date.now();
|
|
120
|
+
initRedis();
|
|
99
121
|
}
|
|
100
|
-
|
|
101
|
-
// Redis
|
|
122
|
+
else {
|
|
123
|
+
// No Redis configured — use in-memory fallback
|
|
102
124
|
circuitOpen = true;
|
|
103
125
|
circuitOpenedAt = Date.now();
|
|
104
126
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"middleware-express.js","sourceRoot":"","sources":["../src/middleware-express.ts"],"names":[],"mappings":"AACA,OAAO,EAOL,qBAAqB,EACrB,gBAAgB,GACjB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,wBAAwB,EACxB,qBAAqB,EACrB,aAAa,EACb,kBAAkB,EAClB,uBAAuB,GACxB,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"middleware-express.js","sourceRoot":"","sources":["../src/middleware-express.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"middleware-hono.d.ts","sourceRoot":"","sources":["../src/middleware-hono.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAiB,iBAAiB,EAAE,MAAM,MAAM,CAAC;AAC7D,OAAO,EACL,KAAK,YAAY,EAMlB,MAAM,iBAAiB,CAAC;AA8EzB,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,YAAY,GAAG,iBAAiB,
|
|
1
|
+
{"version":3,"file":"middleware-hono.d.ts","sourceRoot":"","sources":["../src/middleware-hono.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAiB,iBAAiB,EAAE,MAAM,MAAM,CAAC;AAC7D,OAAO,EACL,KAAK,YAAY,EAMlB,MAAM,iBAAiB,CAAC;AA8EzB,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,YAAY,GAAG,iBAAiB,CAgR1E"}
|
package/dist/middleware-hono.js
CHANGED
|
@@ -78,21 +78,43 @@ export function paymentMiddleware(options) {
|
|
|
78
78
|
const RATE_LIMIT_WINDOW_MS = 60_000;
|
|
79
79
|
const RATE_LIMIT_MAX = 120;
|
|
80
80
|
let redis = null;
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
port: parseInt(process.env.REDIS_PORT || '6379'),
|
|
86
|
-
retryStrategy: (times) => Math.min(times * 50, 2000),
|
|
87
|
-
});
|
|
88
|
-
}
|
|
89
|
-
catch {
|
|
90
|
-
console.warn('Redis not available for Hono middleware, using in-memory rate limiting');
|
|
91
|
-
}
|
|
81
|
+
const redisUrl = process.env.REDIS_URL
|
|
82
|
+
|| (process.env.REDIS_HOST
|
|
83
|
+
? `redis://${process.env.REDIS_HOST}:${process.env.REDIS_PORT || '6379'}`
|
|
84
|
+
: null);
|
|
92
85
|
// Circuit breaker state
|
|
93
86
|
let redisFailureCount = 0;
|
|
94
87
|
let circuitOpen = false;
|
|
95
88
|
let circuitOpenedAt = 0;
|
|
89
|
+
// Lazy-load Redis to avoid require() in ESM
|
|
90
|
+
let redisInitialized = false;
|
|
91
|
+
async function initRedis() {
|
|
92
|
+
if (redisInitialized || !redisUrl)
|
|
93
|
+
return;
|
|
94
|
+
redisInitialized = true;
|
|
95
|
+
try {
|
|
96
|
+
// Dynamic import — redis is an optional peer dependency
|
|
97
|
+
const moduleName = 'redis';
|
|
98
|
+
const Redis = await import(moduleName);
|
|
99
|
+
redis = Redis.createClient({ url: redisUrl });
|
|
100
|
+
await redis.connect?.();
|
|
101
|
+
circuitOpen = false;
|
|
102
|
+
}
|
|
103
|
+
catch {
|
|
104
|
+
redis = null;
|
|
105
|
+
circuitOpen = true;
|
|
106
|
+
circuitOpenedAt = Date.now();
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
if (redisUrl) {
|
|
110
|
+
circuitOpen = true;
|
|
111
|
+
circuitOpenedAt = Date.now();
|
|
112
|
+
initRedis();
|
|
113
|
+
}
|
|
114
|
+
else {
|
|
115
|
+
circuitOpen = true;
|
|
116
|
+
circuitOpenedAt = Date.now();
|
|
117
|
+
}
|
|
96
118
|
const CIRCUIT_FAILURE_THRESHOLD = 5;
|
|
97
119
|
const CIRCUIT_RESET_MS = 30_000;
|
|
98
120
|
// In-memory fallback
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"middleware-hono.js","sourceRoot":"","sources":["../src/middleware-hono.ts"],"names":[],"mappings":"AACA,OAAO,EAKL,qBAAqB,EACrB,gBAAgB,GACjB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,wBAAwB,EACxB,qBAAqB,EACrB,aAAa,EACb,kBAAkB,EAClB,uBAAuB,GACxB,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAEhD;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH;;GAEG;AACH,SAAS,qBAAqB,CAC5B,OAAqB;IAErB,MAAM,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC;IAC9B,IAAI,CAAC,SAAS;QAAE,OAAO,SAAS,CAAC;IAEjC,MAAM,OAAO,GAAG,SAAS,CAAC,YAAY,IAAI,qBAAqB,CAAC;IAEhE,MAAM,OAAO,GAA0B;QACrC,QAAQ,EAAE,SAAS;QACnB,OAAO,EAAE,KAAK;QACd,SAAS,EAAE,GAAG,OAAO,eAAe;QACpC,aAAa,EAAE,GAAG,OAAO,wBAAwB;KAClD,CAAC;IAEF,IAAI,SAAS,CAAC,YAAY,EAAE,CAAC;QAC3B,OAAO,CAAC,QAAQ,GAAG;YACjB,IAAI,EAAE,SAAS,CAAC,YAAY;YAC5B,cAAc,EAAE,SAAS,CAAC,WAAW,IAAI,EAAE;YAC3C,UAAU,EAAE,GAAG,OAAO,8BAA8B,SAAS,CAAC,YAAY,EAAE;SAC7E,CAAC;IACJ,CAAC;IAED,IAAI,SAAS,CAAC,YAAY,IAAI,SAAS,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAChE,OAAO,CAAC,aAAa,GAAG,SAAS,CAAC,YAAY,CAAC;IACjD,CAAC;IAED,IAAI,SAAS,CAAC,mBAAmB,KAAK,KAAK,EAAE,CAAC;QAC5C,OAAO,CAAC,cAAc,GAAG;YACvB,cAAc,EAAE,IAAI;YACpB,gBAAgB,EAAE,IAAI;YACtB,WAAW,EAAE,CAAC,MAAM,EAAE,QAAQ,CAAC;YAC/B,gBAAgB,EAAE,GAAG,OAAO,0BAA0B;SACvD,CAAC;IACJ,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,OAAqB;IACrD,MAAM,EACJ,aAAa,EACb,SAAS,EACT,YAAY,EAAE,kBAAkB,EAChC,cAAc,EACd,UAAU,EACV,cAAc,EACd,WAAW,GACZ,GAAG,OAAO,CAAC;IAEZ,8BAA8B;IAC9B,MAAM,gBAAgB,GAAG,qBAAqB,CAAC,OAAO,CAAC,CAAC;IAExD,MAAM,YAAY,GAAwC;QACxD,IAAI,EAAE,EAAE,GAAG,qBAAqB,CAAC,IAAI,EAAE,GAAG,kBAAkB,EAAE,IAAI,EAAE;QACpE,MAAM,EAAE,EAAE,GAAG,qBAAqB,CAAC,MAAM,EAAE,GAAG,kBAAkB,EAAE,MAAM,EAAE;KAC3E,CAAC;IAEF,MAAM,QAAQ,GAAG,IAAI,iBAAiB,CAAC;QACrC,MAAM,EAAE,cAAc;QACtB,UAAU;QACV,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY;KAC/C,CAAC,CAAC;IAEH,4DAA4D;IAC5D,MAAM,oBAAoB,GAAG,MAAM,CAAC;IACpC,MAAM,cAAc,GAAG,GAAG,CAAC;IAE3B,IAAI,KAAK,
|
|
1
|
+
{"version":3,"file":"middleware-hono.js","sourceRoot":"","sources":["../src/middleware-hono.ts"],"names":[],"mappings":"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"}
|
package/dist/payment.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"payment.d.ts","sourceRoot":"","sources":["../src/payment.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,cAAc,EACnB,KAAK,kBAAkB,EACvB,KAAK,cAAc,EACnB,KAAK,cAAc,EACnB,KAAK,WAAW,EAChB,KAAK,iBAAiB,EACtB,KAAK,YAAY,
|
|
1
|
+
{"version":3,"file":"payment.d.ts","sourceRoot":"","sources":["../src/payment.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,cAAc,EACnB,KAAK,kBAAkB,EACvB,KAAK,cAAc,EACnB,KAAK,cAAc,EACnB,KAAK,WAAW,EAChB,KAAK,iBAAiB,EACtB,KAAK,YAAY,EAMlB,MAAM,iBAAiB,CAAC;AAGzB;;;;GAIG;AACH,wBAAgB,wBAAwB,CACtC,QAAQ,EAAE,cAAc,EACxB,YAAY,EAAE,MAAM,EACpB,YAAY,EAAE,MAAM,CAAC,cAAc,EAAE,WAAW,CAAC,EACjD,WAAW,CAAC,EAAE,iBAAiB,GAC9B,kBAAkB,EAAE,CA+BtB;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,cAAc,EACxB,WAAW,CAAC,EAAE,iBAAiB,GAC9B,YAAY,CAEd;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,YAAY,EAAE,kBAAkB,EAAE,GAAG,MAAM,CAEhF;AAGD,MAAM,WAAW,oBAAoB;IACnC,iDAAiD;IACjD,aAAa,EAAE,MAAM,CAAC;IACtB,kEAAkE;IAClE,YAAY,EAAE,kBAAkB,EAAE,CAAC;IACnC,uCAAuC;IACvC,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,OAAO,CAAC;IACf,OAAO,CAAC,EAAE,cAAc,CAAC;IACzB,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;GAGG;AACH,wBAAsB,aAAa,CACjC,OAAO,EAAE,oBAAoB,EAC7B,WAAW,CAAC,EAAE,iBAAiB,GAC9B,OAAO,CAAC,kBAAkB,CAAC,CAuE7B;AAYD;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,GACxC;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,cAAc,CAAA;CAAE,GAAG,IAAI,CAOpD"}
|
package/dist/payment.js
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { usdcToSmallestUnit, usdcFromSmallestUnit, matchRoute, calculateFeeBreakdown, getPlatformWallet, } from "@apitoll/shared";
|
|
2
|
-
// ─── Payment Requirement Builder ────────────────────────────────
|
|
3
2
|
/**
|
|
4
3
|
* Build the PaymentRequired response body for a given endpoint config.
|
|
5
4
|
* Returns an array of PaymentRequirement objects (one per supported chain).
|
|
@@ -115,7 +114,6 @@ function detectChainFromNetwork(network) {
|
|
|
115
114
|
return "solana";
|
|
116
115
|
return "base"; // default fallback
|
|
117
116
|
}
|
|
118
|
-
// ─── Route Matching ─────────────────────────────────────────────
|
|
119
117
|
/**
|
|
120
118
|
* Find the matching endpoint config for a given request.
|
|
121
119
|
*/
|
package/dist/payment.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"payment.js","sourceRoot":"","sources":["../src/payment.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"payment.js","sourceRoot":"","sources":["../src/payment.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,17 +1,31 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@apitoll/seller-sdk",
|
|
3
|
-
"version": "0.1.0-beta.
|
|
3
|
+
"version": "0.1.0-beta.5",
|
|
4
4
|
"description": "x402 payment middleware for API and MCP tool monetization. Add per-request micropayments in 3 lines of code.",
|
|
5
5
|
"license": "MIT",
|
|
6
|
+
"type": "module",
|
|
6
7
|
"main": "dist/index.js",
|
|
8
|
+
"module": "dist/index.js",
|
|
7
9
|
"types": "dist/index.d.ts",
|
|
8
|
-
"
|
|
10
|
+
"exports": {
|
|
11
|
+
".": {
|
|
12
|
+
"import": "./dist/index.js",
|
|
13
|
+
"require": "./dist/index.js",
|
|
14
|
+
"types": "./dist/index.d.ts",
|
|
15
|
+
"default": "./dist/index.js"
|
|
16
|
+
}
|
|
17
|
+
},
|
|
18
|
+
"files": ["dist", "README.md", "LICENSE"],
|
|
19
|
+
"sideEffects": false,
|
|
9
20
|
"engines": {
|
|
10
21
|
"node": ">=18"
|
|
11
22
|
},
|
|
23
|
+
"homepage": "https://apitoll.com",
|
|
24
|
+
"bugs": "https://github.com/TasnidChain/APITOLL/issues",
|
|
12
25
|
"repository": {
|
|
13
26
|
"type": "git",
|
|
14
|
-
"url": "https://github.com/TasnidChain/APITOLL"
|
|
27
|
+
"url": "https://github.com/TasnidChain/APITOLL",
|
|
28
|
+
"directory": "packages/seller-sdk"
|
|
15
29
|
},
|
|
16
30
|
"publishConfig": {
|
|
17
31
|
"access": "public"
|
|
@@ -23,15 +37,17 @@
|
|
|
23
37
|
},
|
|
24
38
|
"keywords": ["x402", "micropayments", "agent", "mcp", "usdc", "stablecoin", "api-monetization"],
|
|
25
39
|
"dependencies": {
|
|
26
|
-
"@apitoll/shared": "0.1.0-beta.
|
|
40
|
+
"@apitoll/shared": "0.1.0-beta.5"
|
|
27
41
|
},
|
|
28
42
|
"peerDependencies": {
|
|
29
43
|
"express": ">=4.0.0",
|
|
30
|
-
"hono": ">=4.0.0"
|
|
44
|
+
"hono": ">=4.0.0",
|
|
45
|
+
"redis": ">=4.0.0"
|
|
31
46
|
},
|
|
32
47
|
"peerDependenciesMeta": {
|
|
33
48
|
"express": { "optional": true },
|
|
34
|
-
"hono": { "optional": true }
|
|
49
|
+
"hono": { "optional": true },
|
|
50
|
+
"redis": { "optional": true }
|
|
35
51
|
},
|
|
36
52
|
"devDependencies": {
|
|
37
53
|
"typescript": "^5.4.0",
|
package/dist/analytics.test.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"analytics.test.d.ts","sourceRoot":"","sources":["../src/analytics.test.ts"],"names":[],"mappings":""}
|
package/dist/analytics.test.js
DELETED
|
@@ -1,222 +0,0 @@
|
|
|
1
|
-
import { describe, it, expect, vi, beforeEach, afterEach } from "vitest";
|
|
2
|
-
import { AnalyticsReporter } from "./analytics";
|
|
3
|
-
import { verifyHmacSignature } from "@apitoll/shared";
|
|
4
|
-
const TEST_RECEIPT = {
|
|
5
|
-
txHash: "0xabc123",
|
|
6
|
-
chain: "base",
|
|
7
|
-
amount: "0.005000",
|
|
8
|
-
from: "0xPayer",
|
|
9
|
-
to: "0xSeller",
|
|
10
|
-
timestamp: new Date().toISOString(),
|
|
11
|
-
};
|
|
12
|
-
function makeReport(overrides = {}) {
|
|
13
|
-
return {
|
|
14
|
-
endpoint: "GET /api/data",
|
|
15
|
-
method: "GET",
|
|
16
|
-
receipt: TEST_RECEIPT,
|
|
17
|
-
responseStatus: 200,
|
|
18
|
-
latencyMs: 50,
|
|
19
|
-
...overrides,
|
|
20
|
-
};
|
|
21
|
-
}
|
|
22
|
-
// ─── Tests using fake timers (batch/flush/retry) ────────────────
|
|
23
|
-
describe("AnalyticsReporter (batching)", () => {
|
|
24
|
-
const mockFetch = vi.fn();
|
|
25
|
-
beforeEach(() => {
|
|
26
|
-
vi.stubGlobal("fetch", mockFetch);
|
|
27
|
-
mockFetch.mockResolvedValue({ ok: true });
|
|
28
|
-
vi.useFakeTimers({ shouldAdvanceTime: true });
|
|
29
|
-
});
|
|
30
|
-
afterEach(() => {
|
|
31
|
-
vi.restoreAllMocks();
|
|
32
|
-
vi.useRealTimers();
|
|
33
|
-
});
|
|
34
|
-
it("queues transactions and flushes on interval", async () => {
|
|
35
|
-
const reporter = new AnalyticsReporter({
|
|
36
|
-
apiKey: "test-key",
|
|
37
|
-
platformUrl: "https://test-api.com",
|
|
38
|
-
});
|
|
39
|
-
await reporter.report(makeReport());
|
|
40
|
-
await vi.advanceTimersByTimeAsync(5000);
|
|
41
|
-
const batchCall = mockFetch.mock.calls.find((c) => c[0].includes("/v1/transactions/batch"));
|
|
42
|
-
expect(batchCall).toBeDefined();
|
|
43
|
-
expect(batchCall[1].headers.Authorization).toBe("Bearer test-key");
|
|
44
|
-
await reporter.destroy();
|
|
45
|
-
});
|
|
46
|
-
it("flushes immediately when queue hits 50", async () => {
|
|
47
|
-
const reporter = new AnalyticsReporter({
|
|
48
|
-
apiKey: "test-key",
|
|
49
|
-
platformUrl: "https://test-api.com",
|
|
50
|
-
});
|
|
51
|
-
for (let i = 0; i < 50; i++) {
|
|
52
|
-
await reporter.report(makeReport());
|
|
53
|
-
}
|
|
54
|
-
const batchCall = mockFetch.mock.calls.find((c) => c[0].includes("/v1/transactions/batch"));
|
|
55
|
-
expect(batchCall).toBeDefined();
|
|
56
|
-
await reporter.destroy();
|
|
57
|
-
});
|
|
58
|
-
it("discards queue when no API key is configured", async () => {
|
|
59
|
-
const reporter = new AnalyticsReporter({
|
|
60
|
-
platformUrl: "https://test-api.com",
|
|
61
|
-
});
|
|
62
|
-
await reporter.report(makeReport());
|
|
63
|
-
const batchCalls = mockFetch.mock.calls.filter((c) => c[0]?.includes?.("/v1/transactions/batch"));
|
|
64
|
-
expect(batchCalls).toHaveLength(0);
|
|
65
|
-
await reporter.destroy();
|
|
66
|
-
});
|
|
67
|
-
it("marks 2xx responses as settled", async () => {
|
|
68
|
-
const reporter = new AnalyticsReporter({
|
|
69
|
-
apiKey: "key",
|
|
70
|
-
platformUrl: "https://test-api.com",
|
|
71
|
-
});
|
|
72
|
-
await reporter.report(makeReport({ responseStatus: 200 }));
|
|
73
|
-
await vi.advanceTimersByTimeAsync(5000);
|
|
74
|
-
const body = JSON.parse(mockFetch.mock.calls.find((c) => c[0].includes("/v1/transactions/batch"))[1].body);
|
|
75
|
-
expect(body.transactions[0].status).toBe("settled");
|
|
76
|
-
await reporter.destroy();
|
|
77
|
-
});
|
|
78
|
-
it("marks 4xx/5xx responses as failed", async () => {
|
|
79
|
-
const reporter = new AnalyticsReporter({
|
|
80
|
-
apiKey: "key",
|
|
81
|
-
platformUrl: "https://test-api.com",
|
|
82
|
-
});
|
|
83
|
-
await reporter.report(makeReport({ responseStatus: 500 }));
|
|
84
|
-
await vi.advanceTimersByTimeAsync(5000);
|
|
85
|
-
const body = JSON.parse(mockFetch.mock.calls.find((c) => c[0].includes("/v1/transactions/batch"))[1].body);
|
|
86
|
-
expect(body.transactions[0].status).toBe("failed");
|
|
87
|
-
await reporter.destroy();
|
|
88
|
-
});
|
|
89
|
-
it("includes fee breakdown in transaction data", async () => {
|
|
90
|
-
const reporter = new AnalyticsReporter({
|
|
91
|
-
apiKey: "key",
|
|
92
|
-
platformUrl: "https://test-api.com",
|
|
93
|
-
});
|
|
94
|
-
await reporter.report(makeReport({
|
|
95
|
-
feeBreakdown: {
|
|
96
|
-
totalAmount: "0.005000",
|
|
97
|
-
sellerAmount: "0.004850",
|
|
98
|
-
platformFee: "0.000150",
|
|
99
|
-
feeBps: 300,
|
|
100
|
-
},
|
|
101
|
-
}));
|
|
102
|
-
await vi.advanceTimersByTimeAsync(5000);
|
|
103
|
-
const body = JSON.parse(mockFetch.mock.calls.find((c) => c[0].includes("/v1/transactions/batch"))[1].body);
|
|
104
|
-
expect(body.transactions[0].platformFee).toBe("0.000150");
|
|
105
|
-
expect(body.transactions[0].sellerAmount).toBe("0.004850");
|
|
106
|
-
expect(body.transactions[0].feeBps).toBe(300);
|
|
107
|
-
await reporter.destroy();
|
|
108
|
-
});
|
|
109
|
-
it("re-queues transactions on flush failure", async () => {
|
|
110
|
-
mockFetch.mockRejectedValueOnce(new Error("Server down"));
|
|
111
|
-
mockFetch.mockResolvedValueOnce({ ok: true });
|
|
112
|
-
const reporter = new AnalyticsReporter({
|
|
113
|
-
apiKey: "key",
|
|
114
|
-
platformUrl: "https://test-api.com",
|
|
115
|
-
});
|
|
116
|
-
await reporter.report(makeReport());
|
|
117
|
-
await vi.advanceTimersByTimeAsync(5000);
|
|
118
|
-
await vi.advanceTimersByTimeAsync(5000);
|
|
119
|
-
const batchCalls = mockFetch.mock.calls.filter((c) => c[0].includes("/v1/transactions/batch"));
|
|
120
|
-
expect(batchCalls.length).toBeGreaterThanOrEqual(2);
|
|
121
|
-
await reporter.destroy();
|
|
122
|
-
});
|
|
123
|
-
it("flushes remaining queue on destroy", async () => {
|
|
124
|
-
const reporter = new AnalyticsReporter({
|
|
125
|
-
apiKey: "key",
|
|
126
|
-
platformUrl: "https://test-api.com",
|
|
127
|
-
});
|
|
128
|
-
await reporter.report(makeReport());
|
|
129
|
-
await reporter.destroy();
|
|
130
|
-
const batchCall = mockFetch.mock.calls.find((c) => c[0].includes("/v1/transactions/batch"));
|
|
131
|
-
expect(batchCall).toBeDefined();
|
|
132
|
-
});
|
|
133
|
-
it("clears flush timer on destroy", async () => {
|
|
134
|
-
const reporter = new AnalyticsReporter({ apiKey: "key" });
|
|
135
|
-
await reporter.destroy();
|
|
136
|
-
await vi.advanceTimersByTimeAsync(10000);
|
|
137
|
-
// No errors — timer was cleaned up
|
|
138
|
-
});
|
|
139
|
-
});
|
|
140
|
-
// ─── Tests using real timers (webhook / HMAC) ───────────────────
|
|
141
|
-
describe("AnalyticsReporter (webhooks)", () => {
|
|
142
|
-
const mockFetch = vi.fn();
|
|
143
|
-
beforeEach(() => {
|
|
144
|
-
vi.stubGlobal("fetch", mockFetch);
|
|
145
|
-
mockFetch.mockResolvedValue({ ok: true });
|
|
146
|
-
});
|
|
147
|
-
afterEach(() => {
|
|
148
|
-
vi.restoreAllMocks();
|
|
149
|
-
});
|
|
150
|
-
it("sends webhook immediately when configured", async () => {
|
|
151
|
-
const reporter = new AnalyticsReporter({
|
|
152
|
-
webhookUrl: "https://hooks.example.com/tx",
|
|
153
|
-
});
|
|
154
|
-
await reporter.report(makeReport());
|
|
155
|
-
// Webhook is fire-and-forget but without HMAC it's synchronous fetch call
|
|
156
|
-
// Give the microtask queue a tick
|
|
157
|
-
await new Promise((r) => setTimeout(r, 20));
|
|
158
|
-
const webhookCall = mockFetch.mock.calls.find((c) => c[0] === "https://hooks.example.com/tx");
|
|
159
|
-
expect(webhookCall).toBeDefined();
|
|
160
|
-
const body = JSON.parse(webhookCall[1].body);
|
|
161
|
-
expect(body.type).toBe("transaction.settled");
|
|
162
|
-
expect(body.data.txHash).toBe("0xabc123");
|
|
163
|
-
await reporter.destroy();
|
|
164
|
-
});
|
|
165
|
-
it("does not send webhook when not configured", async () => {
|
|
166
|
-
const reporter = new AnalyticsReporter({});
|
|
167
|
-
await reporter.report(makeReport());
|
|
168
|
-
expect(mockFetch).not.toHaveBeenCalled();
|
|
169
|
-
await reporter.destroy();
|
|
170
|
-
});
|
|
171
|
-
it("includes HMAC signature when webhookSecret is set", async () => {
|
|
172
|
-
// Capture the webhook call via a deferred promise
|
|
173
|
-
let capturedArgs = null;
|
|
174
|
-
let resolveCapture;
|
|
175
|
-
const captured = new Promise((resolve) => { resolveCapture = resolve; });
|
|
176
|
-
mockFetch.mockImplementation((...args) => {
|
|
177
|
-
capturedArgs = args;
|
|
178
|
-
resolveCapture();
|
|
179
|
-
return Promise.resolve({ ok: true });
|
|
180
|
-
});
|
|
181
|
-
const secret = "my-webhook-secret";
|
|
182
|
-
const reporter = new AnalyticsReporter({
|
|
183
|
-
webhookUrl: "https://hooks.example.com/tx",
|
|
184
|
-
webhookSecret: secret,
|
|
185
|
-
});
|
|
186
|
-
// Don't await report — it fires webhook as fire-and-forget
|
|
187
|
-
reporter.report(makeReport());
|
|
188
|
-
// Wait for the async webhook (HMAC computation + fetch) to complete
|
|
189
|
-
await captured;
|
|
190
|
-
expect(capturedArgs).not.toBeNull();
|
|
191
|
-
expect(capturedArgs[0]).toBe("https://hooks.example.com/tx");
|
|
192
|
-
const headers = capturedArgs[1].headers;
|
|
193
|
-
const signature = headers["X-Webhook-Signature"];
|
|
194
|
-
expect(signature).toBeDefined();
|
|
195
|
-
expect(signature).toMatch(/^[a-f0-9]{64}$/);
|
|
196
|
-
// Verify the signature matches the payload
|
|
197
|
-
const body = capturedArgs[1].body;
|
|
198
|
-
const isValid = await verifyHmacSignature(body, secret, signature);
|
|
199
|
-
expect(isValid).toBe(true);
|
|
200
|
-
await reporter.destroy();
|
|
201
|
-
});
|
|
202
|
-
it("does not include signature header when no secret", async () => {
|
|
203
|
-
const reporter = new AnalyticsReporter({
|
|
204
|
-
webhookUrl: "https://hooks.example.com/tx",
|
|
205
|
-
});
|
|
206
|
-
await reporter.report(makeReport());
|
|
207
|
-
await new Promise((r) => setTimeout(r, 20));
|
|
208
|
-
const webhookCall = mockFetch.mock.calls.find((c) => c[0] === "https://hooks.example.com/tx");
|
|
209
|
-
expect(webhookCall[1].headers["X-Webhook-Signature"]).toBeUndefined();
|
|
210
|
-
await reporter.destroy();
|
|
211
|
-
});
|
|
212
|
-
it("swallows webhook errors without crashing", async () => {
|
|
213
|
-
mockFetch.mockRejectedValueOnce(new Error("Network error"));
|
|
214
|
-
const reporter = new AnalyticsReporter({
|
|
215
|
-
webhookUrl: "https://hooks.example.com/tx",
|
|
216
|
-
verbose: false,
|
|
217
|
-
});
|
|
218
|
-
await expect(reporter.report(makeReport())).resolves.not.toThrow();
|
|
219
|
-
await reporter.destroy();
|
|
220
|
-
});
|
|
221
|
-
});
|
|
222
|
-
//# sourceMappingURL=analytics.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"analytics.test.js","sourceRoot":"","sources":["../src/analytics.test.ts"],"names":[],"mappings":"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"}
|
package/dist/payment.test.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"payment.test.d.ts","sourceRoot":"","sources":["../src/payment.test.ts"],"names":[],"mappings":""}
|
package/dist/payment.test.js
DELETED
|
@@ -1,221 +0,0 @@
|
|
|
1
|
-
import { describe, it, expect, vi, beforeEach, afterEach } from "vitest";
|
|
2
|
-
import { buildPaymentRequirements, encodePaymentRequired, verifyPayment, findEndpointConfig, getEndpointFeeBreakdown, } from "./payment";
|
|
3
|
-
import { DEFAULT_CHAIN_CONFIGS } from "@apitoll/shared";
|
|
4
|
-
const TEST_WALLET = "0x1234567890abcdef1234567890abcdef12345678";
|
|
5
|
-
const CHAIN_CONFIGS = DEFAULT_CHAIN_CONFIGS;
|
|
6
|
-
const testEndpoint = {
|
|
7
|
-
price: "0.005",
|
|
8
|
-
chains: ["base"],
|
|
9
|
-
description: "Test data endpoint",
|
|
10
|
-
};
|
|
11
|
-
// ─── buildPaymentRequirements ───────────────────────────────────
|
|
12
|
-
describe("buildPaymentRequirements", () => {
|
|
13
|
-
it("builds requirements for a single chain", () => {
|
|
14
|
-
const reqs = buildPaymentRequirements(testEndpoint, TEST_WALLET, CHAIN_CONFIGS);
|
|
15
|
-
expect(reqs).toHaveLength(1);
|
|
16
|
-
expect(reqs[0].scheme).toBe("exact");
|
|
17
|
-
expect(reqs[0].network).toBe("eip155:8453");
|
|
18
|
-
expect(reqs[0].maxAmountRequired).toBe("5000");
|
|
19
|
-
expect(reqs[0].payTo).toBe(TEST_WALLET);
|
|
20
|
-
expect(reqs[0].asset).toBe(DEFAULT_CHAIN_CONFIGS.base.usdcAddress);
|
|
21
|
-
});
|
|
22
|
-
it("builds requirements for multiple chains", () => {
|
|
23
|
-
const multiChain = { ...testEndpoint, chains: ["base", "solana"] };
|
|
24
|
-
const reqs = buildPaymentRequirements(multiChain, TEST_WALLET, CHAIN_CONFIGS);
|
|
25
|
-
expect(reqs).toHaveLength(2);
|
|
26
|
-
expect(reqs[0].network).toBe("eip155:8453");
|
|
27
|
-
expect(reqs[1].network).toBe("solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp");
|
|
28
|
-
});
|
|
29
|
-
it("includes platform fee metadata when configured", () => {
|
|
30
|
-
const platformFee = {
|
|
31
|
-
feeBps: 300,
|
|
32
|
-
platformWalletBase: "0xPlatform",
|
|
33
|
-
};
|
|
34
|
-
const reqs = buildPaymentRequirements(testEndpoint, TEST_WALLET, CHAIN_CONFIGS, platformFee);
|
|
35
|
-
expect(reqs[0].extra).toBeDefined();
|
|
36
|
-
expect(reqs[0].extra.platformFee).toBeDefined();
|
|
37
|
-
expect(reqs[0].extra.platformFee.feeBps).toBe(300);
|
|
38
|
-
expect(reqs[0].extra.platformFee.platformWallet).toBe("0xPlatform");
|
|
39
|
-
});
|
|
40
|
-
it("omits platform fee metadata when feeBps is 0", () => {
|
|
41
|
-
const platformFee = { feeBps: 0, platformWalletBase: "0xPlatform" };
|
|
42
|
-
const reqs = buildPaymentRequirements(testEndpoint, TEST_WALLET, CHAIN_CONFIGS, platformFee);
|
|
43
|
-
expect(reqs[0].extra.platformFee).toBeUndefined();
|
|
44
|
-
});
|
|
45
|
-
it("includes description from endpoint config", () => {
|
|
46
|
-
const reqs = buildPaymentRequirements(testEndpoint, TEST_WALLET, CHAIN_CONFIGS);
|
|
47
|
-
expect(reqs[0].description).toBe("Test data endpoint");
|
|
48
|
-
});
|
|
49
|
-
});
|
|
50
|
-
// ─── encodePaymentRequired ──────────────────────────────────────
|
|
51
|
-
describe("encodePaymentRequired", () => {
|
|
52
|
-
it("encodes requirements to base64", () => {
|
|
53
|
-
const reqs = buildPaymentRequirements(testEndpoint, TEST_WALLET, CHAIN_CONFIGS);
|
|
54
|
-
const encoded = encodePaymentRequired(reqs);
|
|
55
|
-
const decoded = JSON.parse(Buffer.from(encoded, "base64").toString("utf-8"));
|
|
56
|
-
expect(decoded).toEqual(reqs);
|
|
57
|
-
});
|
|
58
|
-
it("produces valid base64 string", () => {
|
|
59
|
-
const reqs = buildPaymentRequirements(testEndpoint, TEST_WALLET, CHAIN_CONFIGS);
|
|
60
|
-
const encoded = encodePaymentRequired(reqs);
|
|
61
|
-
expect(() => Buffer.from(encoded, "base64")).not.toThrow();
|
|
62
|
-
});
|
|
63
|
-
});
|
|
64
|
-
// ─── verifyPayment ──────────────────────────────────────────────
|
|
65
|
-
describe("verifyPayment", () => {
|
|
66
|
-
const mockFetch = vi.fn();
|
|
67
|
-
beforeEach(() => {
|
|
68
|
-
vi.stubGlobal("fetch", mockFetch);
|
|
69
|
-
});
|
|
70
|
-
afterEach(() => {
|
|
71
|
-
vi.restoreAllMocks();
|
|
72
|
-
});
|
|
73
|
-
it("returns valid result on successful verification", async () => {
|
|
74
|
-
mockFetch.mockResolvedValue({
|
|
75
|
-
ok: true,
|
|
76
|
-
json: async () => ({ valid: true, txHash: "0xabc123" }),
|
|
77
|
-
});
|
|
78
|
-
const requirements = buildPaymentRequirements(testEndpoint, TEST_WALLET, CHAIN_CONFIGS);
|
|
79
|
-
const paymentHeader = Buffer.from(JSON.stringify({ network: "eip155:8453", from: "0xPayer" })).toString("base64");
|
|
80
|
-
const result = await verifyPayment({
|
|
81
|
-
paymentHeader,
|
|
82
|
-
requirements,
|
|
83
|
-
facilitatorUrl: "https://test-facilitator.com",
|
|
84
|
-
});
|
|
85
|
-
expect(result.valid).toBe(true);
|
|
86
|
-
expect(result.receipt).toBeDefined();
|
|
87
|
-
expect(result.receipt?.txHash).toBe("0xabc123");
|
|
88
|
-
expect(result.receipt?.chain).toBe("base");
|
|
89
|
-
});
|
|
90
|
-
it("returns valid when facilitator returns success=true", async () => {
|
|
91
|
-
mockFetch.mockResolvedValue({
|
|
92
|
-
ok: true,
|
|
93
|
-
json: async () => ({ success: true, transaction: { hash: "0xdef456" } }),
|
|
94
|
-
});
|
|
95
|
-
const requirements = buildPaymentRequirements(testEndpoint, TEST_WALLET, CHAIN_CONFIGS);
|
|
96
|
-
const paymentHeader = Buffer.from(JSON.stringify({ network: "eip155:8453" })).toString("base64");
|
|
97
|
-
const result = await verifyPayment({
|
|
98
|
-
paymentHeader,
|
|
99
|
-
requirements,
|
|
100
|
-
facilitatorUrl: "https://test-facilitator.com",
|
|
101
|
-
});
|
|
102
|
-
expect(result.valid).toBe(true);
|
|
103
|
-
expect(result.receipt?.txHash).toBe("0xdef456");
|
|
104
|
-
});
|
|
105
|
-
it("returns invalid on facilitator HTTP error", async () => {
|
|
106
|
-
mockFetch.mockResolvedValue({
|
|
107
|
-
ok: false,
|
|
108
|
-
status: 500,
|
|
109
|
-
text: async () => "Internal Server Error",
|
|
110
|
-
});
|
|
111
|
-
const requirements = buildPaymentRequirements(testEndpoint, TEST_WALLET, CHAIN_CONFIGS);
|
|
112
|
-
const paymentHeader = Buffer.from(JSON.stringify({})).toString("base64");
|
|
113
|
-
const result = await verifyPayment({
|
|
114
|
-
paymentHeader,
|
|
115
|
-
requirements,
|
|
116
|
-
facilitatorUrl: "https://test-facilitator.com",
|
|
117
|
-
});
|
|
118
|
-
expect(result.valid).toBe(false);
|
|
119
|
-
expect(result.error).toContain("500");
|
|
120
|
-
});
|
|
121
|
-
it("returns invalid when facilitator says not valid", async () => {
|
|
122
|
-
mockFetch.mockResolvedValue({
|
|
123
|
-
ok: true,
|
|
124
|
-
json: async () => ({ valid: false, error: "Signature mismatch" }),
|
|
125
|
-
});
|
|
126
|
-
const requirements = buildPaymentRequirements(testEndpoint, TEST_WALLET, CHAIN_CONFIGS);
|
|
127
|
-
const paymentHeader = Buffer.from(JSON.stringify({})).toString("base64");
|
|
128
|
-
const result = await verifyPayment({
|
|
129
|
-
paymentHeader,
|
|
130
|
-
requirements,
|
|
131
|
-
facilitatorUrl: "https://test-facilitator.com",
|
|
132
|
-
});
|
|
133
|
-
expect(result.valid).toBe(false);
|
|
134
|
-
expect(result.error).toBe("Signature mismatch");
|
|
135
|
-
});
|
|
136
|
-
it("handles network errors gracefully", async () => {
|
|
137
|
-
mockFetch.mockRejectedValue(new Error("ECONNREFUSED"));
|
|
138
|
-
const requirements = buildPaymentRequirements(testEndpoint, TEST_WALLET, CHAIN_CONFIGS);
|
|
139
|
-
const paymentHeader = Buffer.from(JSON.stringify({})).toString("base64");
|
|
140
|
-
const result = await verifyPayment({
|
|
141
|
-
paymentHeader,
|
|
142
|
-
requirements,
|
|
143
|
-
facilitatorUrl: "https://unreachable.com",
|
|
144
|
-
});
|
|
145
|
-
expect(result.valid).toBe(false);
|
|
146
|
-
expect(result.error).toContain("ECONNREFUSED");
|
|
147
|
-
});
|
|
148
|
-
it("handles malformed payment header", async () => {
|
|
149
|
-
const result = await verifyPayment({
|
|
150
|
-
paymentHeader: "not-valid-base64!!!",
|
|
151
|
-
requirements: [],
|
|
152
|
-
facilitatorUrl: "https://test-facilitator.com",
|
|
153
|
-
});
|
|
154
|
-
expect(result.valid).toBe(false);
|
|
155
|
-
expect(result.error).toBeDefined();
|
|
156
|
-
});
|
|
157
|
-
it("calculates fee breakdown with platform fee config", async () => {
|
|
158
|
-
mockFetch.mockResolvedValue({
|
|
159
|
-
ok: true,
|
|
160
|
-
json: async () => ({ valid: true, txHash: "0xabc" }),
|
|
161
|
-
});
|
|
162
|
-
const requirements = buildPaymentRequirements(testEndpoint, TEST_WALLET, CHAIN_CONFIGS);
|
|
163
|
-
const paymentHeader = Buffer.from(JSON.stringify({ network: "eip155:8453" })).toString("base64");
|
|
164
|
-
const result = await verifyPayment({
|
|
165
|
-
paymentHeader,
|
|
166
|
-
requirements,
|
|
167
|
-
facilitatorUrl: "https://test-facilitator.com",
|
|
168
|
-
}, { feeBps: 300, platformWalletBase: "0xPlatform" });
|
|
169
|
-
expect(result.valid).toBe(true);
|
|
170
|
-
expect(result.feeBreakdown).toBeDefined();
|
|
171
|
-
expect(result.feeBreakdown?.feeBps).toBe(300);
|
|
172
|
-
});
|
|
173
|
-
});
|
|
174
|
-
// ─── findEndpointConfig ─────────────────────────────────────────
|
|
175
|
-
describe("findEndpointConfig", () => {
|
|
176
|
-
const endpoints = {
|
|
177
|
-
"GET /api/data": testEndpoint,
|
|
178
|
-
"POST /api/inference": {
|
|
179
|
-
price: "0.01",
|
|
180
|
-
chains: ["base"],
|
|
181
|
-
description: "AI inference",
|
|
182
|
-
},
|
|
183
|
-
"GET /api/users/:id": {
|
|
184
|
-
price: "0.002",
|
|
185
|
-
chains: ["base"],
|
|
186
|
-
description: "User lookup",
|
|
187
|
-
},
|
|
188
|
-
};
|
|
189
|
-
it("finds matching endpoint", () => {
|
|
190
|
-
const match = findEndpointConfig("GET", "/api/data", endpoints);
|
|
191
|
-
expect(match).not.toBeNull();
|
|
192
|
-
expect(match?.pattern).toBe("GET /api/data");
|
|
193
|
-
expect(match?.config.price).toBe("0.005");
|
|
194
|
-
});
|
|
195
|
-
it("returns null for non-matching endpoint", () => {
|
|
196
|
-
const match = findEndpointConfig("GET", "/api/unknown", endpoints);
|
|
197
|
-
expect(match).toBeNull();
|
|
198
|
-
});
|
|
199
|
-
it("matches parameterized routes", () => {
|
|
200
|
-
const match = findEndpointConfig("GET", "/api/users/123", endpoints);
|
|
201
|
-
expect(match).not.toBeNull();
|
|
202
|
-
expect(match?.pattern).toBe("GET /api/users/:id");
|
|
203
|
-
});
|
|
204
|
-
it("respects HTTP method", () => {
|
|
205
|
-
const match = findEndpointConfig("POST", "/api/data", endpoints);
|
|
206
|
-
expect(match).toBeNull();
|
|
207
|
-
});
|
|
208
|
-
});
|
|
209
|
-
// ─── getEndpointFeeBreakdown ────────────────────────────────────
|
|
210
|
-
describe("getEndpointFeeBreakdown", () => {
|
|
211
|
-
it("returns fee breakdown with platform fee", () => {
|
|
212
|
-
const result = getEndpointFeeBreakdown(testEndpoint, { feeBps: 300 });
|
|
213
|
-
expect(result.totalAmount).toBe("0.005");
|
|
214
|
-
expect(result.feeBps).toBe(300);
|
|
215
|
-
});
|
|
216
|
-
it("returns zero fees without platform fee config", () => {
|
|
217
|
-
const result = getEndpointFeeBreakdown(testEndpoint);
|
|
218
|
-
expect(result.platformFee).toBe("0.000000");
|
|
219
|
-
});
|
|
220
|
-
});
|
|
221
|
-
//# sourceMappingURL=payment.test.js.map
|
package/dist/payment.test.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"payment.test.js","sourceRoot":"","sources":["../src/payment.test.ts"],"names":[],"mappings":"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"}
|