@4mica/x402 1.2.0 → 1.2.2
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/demo/src/server.ts +8 -1
- package/dist/client/scheme.js +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/server/scheme.js +7 -1
- package/dist/types.d.ts +22 -0
- package/dist/types.js +1 -0
- package/package.json +4 -4
- package/src/server/express/index.ts +3 -2
- package/src/server/facilitator.ts +3 -1
package/demo/src/server.ts
CHANGED
|
@@ -7,6 +7,9 @@ app.use(express.json())
|
|
|
7
7
|
|
|
8
8
|
const PORT = process.env.PORT || 3000
|
|
9
9
|
const PAY_TO_ADDRESS = process.env.PAY_TO_ADDRESS
|
|
10
|
+
// This endpoint is hosted by this resource server. Clients call it after receiving
|
|
11
|
+
// a 402 response, and the middleware below forwards the tab-open request to the
|
|
12
|
+
// 4Mica facilitator on the server's behalf.
|
|
10
13
|
const ADVERTISED_ENDPOINT =
|
|
11
14
|
process.env.ADVERTISED_ENDPOINT || `http://localhost:${PORT}/payment/tab`
|
|
12
15
|
|
|
@@ -29,6 +32,8 @@ app.use(
|
|
|
29
32
|
},
|
|
30
33
|
},
|
|
31
34
|
{
|
|
35
|
+
// The middleware injects this URL into paymentRequirements.extra.tabEndpoint
|
|
36
|
+
// and also serves the POST route on this Express app.
|
|
32
37
|
advertisedEndpoint: ADVERTISED_ENDPOINT,
|
|
33
38
|
ttlSeconds: 3600, // 1 hour
|
|
34
39
|
}
|
|
@@ -70,5 +75,7 @@ app.listen(PORT, () => {
|
|
|
70
75
|
console.log(`x402 Demo Server running on http://localhost:${PORT}`)
|
|
71
76
|
console.log(`Protected endpoint: http://localhost:${PORT}/api/premium-data`)
|
|
72
77
|
console.log(`Payment required: $0.01 (4mica credit on Sepolia)`)
|
|
73
|
-
console.log(`
|
|
78
|
+
console.log(`Tab endpoint hosted by this server: POST ${ADVERTISED_ENDPOINT}`)
|
|
79
|
+
console.log('Who calls it: payer clients after a 402 Payment Required response')
|
|
80
|
+
console.log('What it does: opens or reuses a tab via the 4Mica facilitator and returns tab JSON')
|
|
74
81
|
})
|
package/dist/client/scheme.js
CHANGED
|
@@ -2,6 +2,7 @@ import { Client, ConfigBuilder, X402Flow, } from '@4mica/sdk';
|
|
|
2
2
|
import { SUPPORTED_NETWORKS } from '../server/scheme.js';
|
|
3
3
|
const NETWORK_RPC_URLS = {
|
|
4
4
|
'eip155:11155111': 'https://ethereum.sepolia.api.4mica.xyz',
|
|
5
|
+
'eip155:84532': 'https://base.sepolia.api.4mica.xyz',
|
|
5
6
|
'eip155:80002': 'https://api.4mica.xyz',
|
|
6
7
|
};
|
|
7
8
|
export class FourMicaEvmScheme {
|
package/dist/index.d.ts
CHANGED
package/dist/server/scheme.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export const SUPPORTED_NETWORKS = ['eip155:11155111', 'eip155:80002'];
|
|
1
|
+
export const SUPPORTED_NETWORKS = ['eip155:11155111', 'eip155:84532', 'eip155:80002'];
|
|
2
2
|
/**
|
|
3
3
|
* EVM server implementation for the 4mica payment scheme.
|
|
4
4
|
*/
|
|
@@ -163,6 +163,12 @@ export class FourMicaEvmScheme {
|
|
|
163
163
|
version: '2',
|
|
164
164
|
decimals: 6,
|
|
165
165
|
}, // Ethereum Sepolia USDC
|
|
166
|
+
'eip155:84532': {
|
|
167
|
+
address: '0x036CbD53842c5426634e7929541eC2318f3dCF7e',
|
|
168
|
+
name: 'USDC',
|
|
169
|
+
version: '2',
|
|
170
|
+
decimals: 6,
|
|
171
|
+
}, // Base Sepolia USDC
|
|
166
172
|
'eip155:80002': {
|
|
167
173
|
address: '0x41E94Eb019C0762f9Bfcf9Fb1E58725BfB0e7582',
|
|
168
174
|
name: 'USDC',
|
package/dist/types.d.ts
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { PaymentRequirements } from '@x402/core/types';
|
|
2
|
+
/**
|
|
3
|
+
* Extra fields required by the 4mica V2 validation policy.
|
|
4
|
+
*/
|
|
5
|
+
export type FourMicaV2RequirementsExtra = {
|
|
6
|
+
validationRegistryAddress: string;
|
|
7
|
+
validatorAddress: string;
|
|
8
|
+
validatorAgentId: string | number;
|
|
9
|
+
minValidationScore: number;
|
|
10
|
+
jobHash: string;
|
|
11
|
+
requiredValidationTag?: string;
|
|
12
|
+
tabEndpoint?: string;
|
|
13
|
+
rpcUrl?: string;
|
|
14
|
+
resource?: {
|
|
15
|
+
url?: string;
|
|
16
|
+
description?: string;
|
|
17
|
+
mimeType?: string;
|
|
18
|
+
};
|
|
19
|
+
};
|
|
20
|
+
export type FourMicaPaymentRequirementsV2 = PaymentRequirements & {
|
|
21
|
+
extra: FourMicaV2RequirementsExtra;
|
|
22
|
+
};
|
package/dist/types.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@4mica/x402",
|
|
3
|
-
"version": "1.2.
|
|
3
|
+
"version": "1.2.2",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "TypeScript x402 utilities for interacting with the 4Mica payment network",
|
|
6
6
|
"license": "MIT",
|
|
@@ -42,9 +42,9 @@
|
|
|
42
42
|
"demo:dev": "cd demo && yarn dev"
|
|
43
43
|
},
|
|
44
44
|
"dependencies": {
|
|
45
|
-
"@x402/core": "^2.
|
|
46
|
-
"@x402/extensions": "^2.
|
|
47
|
-
"@4mica/sdk": "^
|
|
45
|
+
"@x402/core": "^2.9.0",
|
|
46
|
+
"@x402/extensions": "^2.9.0",
|
|
47
|
+
"@4mica/sdk": "^1.2.3",
|
|
48
48
|
"viem": "^2.45.1"
|
|
49
49
|
},
|
|
50
50
|
"devDependencies": {
|
|
@@ -168,14 +168,15 @@ export function paymentMiddlewareFromHTTPServer(
|
|
|
168
168
|
const advertisedUrl = new URL(tabConfig.advertisedEndpoint)
|
|
169
169
|
if (req.path === advertisedUrl.pathname) {
|
|
170
170
|
// Parse the request body
|
|
171
|
-
const { userAddress, paymentRequirements } = req.body
|
|
171
|
+
const { userAddress, paymentRequirements, x402Version } = req.body
|
|
172
172
|
|
|
173
173
|
try {
|
|
174
174
|
// Call the facilitator to open the tab
|
|
175
175
|
const openTabResponse = await facilitatorClient.openTab(
|
|
176
176
|
userAddress,
|
|
177
177
|
paymentRequirements,
|
|
178
|
-
tabConfig.ttlSeconds
|
|
178
|
+
tabConfig.ttlSeconds,
|
|
179
|
+
x402Version
|
|
179
180
|
)
|
|
180
181
|
|
|
181
182
|
// Return the response
|
|
@@ -51,7 +51,8 @@ export class FourMicaFacilitatorClient extends HTTPFacilitatorClient {
|
|
|
51
51
|
async openTab(
|
|
52
52
|
userAddress: string,
|
|
53
53
|
paymentRequirements: PaymentRequirements,
|
|
54
|
-
ttlSeconds?: number
|
|
54
|
+
ttlSeconds?: number,
|
|
55
|
+
guaranteeVersion?: number
|
|
55
56
|
): Promise<OpenTabResponse> {
|
|
56
57
|
let headers: Record<string, string> = {
|
|
57
58
|
'Content-Type': 'application/json',
|
|
@@ -70,6 +71,7 @@ export class FourMicaFacilitatorClient extends HTTPFacilitatorClient {
|
|
|
70
71
|
network: paymentRequirements.network,
|
|
71
72
|
erc20Token: paymentRequirements.asset,
|
|
72
73
|
ttlSeconds,
|
|
74
|
+
guaranteeVersion: guaranteeVersion ?? 1,
|
|
73
75
|
})
|
|
74
76
|
),
|
|
75
77
|
})
|