@x402janus/middleware
v0.1.0
Published
Express/Next.js middleware for x402janus wallet security scanning with x402 micropayments
Downloads
110
Readme
@x402janus/middleware
Express + Next.js middleware for pre-transaction wallet security scanning with x402janus.
- ✅ x402 micropayment flow (EIP-3009
TransferWithAuthorization) - ✅ No API keys / no bearer tokens
- ✅ Risk policy controls (
block/warn/log) - ✅ Direct scan utility for custom integration
Install
npm install @x402janus/middlewareUsage
Express
import express from 'express';
import { withJanusScan } from '@x402janus/middleware';
const app = express();
app.use(express.json());
app.use('/trade', withJanusScan({
tier: 'quick',
onRisk: 'block',
riskThreshold: 50
}));Next.js Route Handler
import { withJanusScan } from '@x402janus/middleware/nextjs';
async function handler(req: Request) {
return Response.json({ ok: true });
}
export const POST = withJanusScan(handler, {
tier: 'quick',
onRisk: 'block'
});Direct scan
import { scanWallet } from '@x402janus/middleware';
const result = await scanWallet('0x000000000000000000000000000000000000dEaD', {
tier: 'standard',
privateKey: process.env.JANUS_PRIVATE_KEY
});Config
interface JanusMiddlewareConfig {
tier: 'free' | 'quick' | 'standard' | 'deep';
privateKey?: string;
onRisk?: 'block' | 'warn' | 'log';
riskThreshold?: number;
apiUrl?: string; // default: https://x402janus.com
extractAddress?: (req: any) => string | null;
timeoutMs?: number; // optional override
}Default private key lookup for paid tiers:
privateKey(config)ETH_PRIVATE_KEYJANUS_PRIVATE_KEY
x402 flow
GET /api/guardian/scan/{address}?tier={tier}- Receive
402with payment requirements - Build EIP-3009
TransferWithAuthorization(USDC on Base) - Sign with caller private key
- Retry request with
X-PAYMENT: <signed payload> - Receive scan JSON
Security
- Private key is never logged.
- Address is validated before request.
- HTTPS is enforced for API endpoint.
- Timeout defaults:
- quick: 10s
- standard: 30s
- deep: 120s
Development
npm test
npm run build