@solinkify/gate
Advanced tools
+29
-0
@@ -31,2 +31,6 @@ import type { GateConfig, PaymentManifest, GateDiscoveryDocument, X402PaymentRequirements, X402ResourceInfo } from './types.js'; | ||
| botName?: string | null; | ||
| /** The payment this request was verified against, whichever wire form it | ||
| * arrived in (`x-solinkify-payment` or the canonical `PAYMENT-SIGNATURE`). | ||
| * Adapters use it to file a delivery record without re-reading headers. */ | ||
| paymentId?: string; | ||
| } | { | ||
@@ -57,2 +61,7 @@ action: 'block'; | ||
| export declare function resolveClientIp(forwardedFor: string | null | undefined, realIp: string | null | undefined, directIp: string | null | undefined, trustProxy: boolean): string | null; | ||
| /** Drop trailing slashes before matching an exempt path. Some hosts canonical- | ||
| * redirect into the slashed form (WordPress on plain permalinks sends | ||
| * /robots.txt → /robots.txt/), and the redirected request must stay exempt. | ||
| * '/' is left alone; every other path loses its trailing slashes. */ | ||
| export declare function stripTrailingSlash(pathname: string): string; | ||
| /** SEO-critical paths that must ALWAYS be reachable by crawlers, even in strict | ||
@@ -74,2 +83,8 @@ * mode or when misconfigured — a 402 here would break robots.txt/sitemap. */ | ||
| export declare const WELL_KNOWN_PATH = "/.well-known/solinkify"; | ||
| /** x402 scheme id for the Solinkify flow. Deliberately not `exact`: that scheme | ||
| * is defined on `solana:*` as a direct SPL transfer to `payTo`, which this gate | ||
| * rejects (it verifies an escrow PDA, so a direct transfer yields no payment_id | ||
| * and the payer loses the money). An unknown scheme id is the honest signal — | ||
| * a conformant client skips the entry rather than mis-paying. */ | ||
| export declare const ESCROW_SCHEME = "solinkify-escrow"; | ||
| /** Infer the x402 v2 CAIP-2 network id from the settlement mint: any known | ||
@@ -92,2 +107,16 @@ * devnet mint → Solana devnet, else Solana mainnet (custom mints alike). */ | ||
| export declare function buildDiscoveryDocument(config: ResolvedGateConfig): GateDiscoveryDocument; | ||
| /** | ||
| * Read the canonical x402 v2 request header. The HTTP transport spec puts the | ||
| * payment in `PAYMENT-SIGNATURE` as a base64 `PaymentPayload`; for the | ||
| * `solinkify-escrow` scheme its `payload` carries the escrow lock's | ||
| * `payment_id` and the `payer` that signed it — the same two values the | ||
| * `x-solinkify-payment` / `x-solinkify-payer` headers have always carried. | ||
| * | ||
| * Never throws: a malformed header must not take a creator's site down, and a | ||
| * request with no usable payment simply falls through to the 402 path. | ||
| */ | ||
| export declare function readPaymentSignature(headers?: Record<string, string | undefined>): { | ||
| paymentId?: string; | ||
| payer?: string; | ||
| }; | ||
| /** Build the HTTP 402 response headers (Content-Type set by each adapter). | ||
@@ -94,0 +123,0 @@ * `PAYMENT-REQUIRED` is the x402 v2 canonical wire location for the |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../src/core.ts"],"names":[],"mappings":"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"} | ||
| {"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../src/core.ts"],"names":[],"mappings":"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"} |
+64
-9
@@ -97,6 +97,13 @@ // Framework-agnostic core for @solinkify/gate. | ||
| } | ||
| /** Drop trailing slashes before matching an exempt path. Some hosts canonical- | ||
| * redirect into the slashed form (WordPress on plain permalinks sends | ||
| * /robots.txt → /robots.txt/), and the redirected request must stay exempt. | ||
| * '/' is left alone; every other path loses its trailing slashes. */ | ||
| export function stripTrailingSlash(pathname) { | ||
| return pathname.length > 1 ? pathname.replace(/\/+$/, '') : pathname; | ||
| } | ||
| /** SEO-critical paths that must ALWAYS be reachable by crawlers, even in strict | ||
| * mode or when misconfigured — a 402 here would break robots.txt/sitemap. */ | ||
| export function isSeoInfraPath(pathname) { | ||
| const p = pathname.toLowerCase(); | ||
| const p = stripTrailingSlash(pathname.toLowerCase()); | ||
| return p === '/robots.txt' || (p.startsWith('/sitemap') && p.endsWith('.xml')); | ||
@@ -139,2 +146,8 @@ } | ||
| const CAIP2_SOLANA_DEVNET = 'solana:EtWTRABZaYq6iMfeYKouRu166VU2xqa1'; | ||
| /** x402 scheme id for the Solinkify flow. Deliberately not `exact`: that scheme | ||
| * is defined on `solana:*` as a direct SPL transfer to `payTo`, which this gate | ||
| * rejects (it verifies an escrow PDA, so a direct transfer yields no payment_id | ||
| * and the payer loses the money). An unknown scheme id is the honest signal — | ||
| * a conformant client skips the entry rather than mis-paying. */ | ||
| export const ESCROW_SCHEME = 'solinkify-escrow'; | ||
| /** Infer the x402 v2 CAIP-2 network id from the settlement mint: any known | ||
@@ -161,3 +174,3 @@ * devnet mint → Solana devnet, else Solana mainnet (custom mints alike). */ | ||
| return { | ||
| scheme: 'exact', | ||
| scheme: ESCROW_SCHEME, | ||
| network: inferNetwork(eff.tokenMint), | ||
@@ -292,2 +305,39 @@ amount: String(Math.round(eff.price * 10 ** TOKEN_DECIMALS)), | ||
| } | ||
| /** base64 → utf8 without assuming Node (core also runs on Workers/Edge). */ | ||
| function fromBase64(s) { | ||
| if (typeof Buffer !== 'undefined') | ||
| return Buffer.from(s, 'base64').toString('utf8'); | ||
| const bin = atob(s); | ||
| const bytes = Uint8Array.from(bin, (c) => c.charCodeAt(0)); | ||
| return new TextDecoder().decode(bytes); | ||
| } | ||
| /** | ||
| * Read the canonical x402 v2 request header. The HTTP transport spec puts the | ||
| * payment in `PAYMENT-SIGNATURE` as a base64 `PaymentPayload`; for the | ||
| * `solinkify-escrow` scheme its `payload` carries the escrow lock's | ||
| * `payment_id` and the `payer` that signed it — the same two values the | ||
| * `x-solinkify-payment` / `x-solinkify-payer` headers have always carried. | ||
| * | ||
| * Never throws: a malformed header must not take a creator's site down, and a | ||
| * request with no usable payment simply falls through to the 402 path. | ||
| */ | ||
| export function readPaymentSignature(headers) { | ||
| const raw = headers?.['payment-signature']; | ||
| if (!raw) | ||
| return {}; | ||
| try { | ||
| const payload = JSON.parse(fromBase64(raw)).payload; | ||
| if (!payload) | ||
| return {}; | ||
| const paymentId = payload['payment_id'] ?? payload['paymentId']; | ||
| const payer = payload['payer']; | ||
| return { | ||
| paymentId: typeof paymentId === 'string' && paymentId ? paymentId : undefined, | ||
| payer: typeof payer === 'string' && payer ? payer : undefined, | ||
| }; | ||
| } | ||
| catch { | ||
| return {}; | ||
| } | ||
| } | ||
| /** utf8 → base64 without assuming Node (core also runs on Workers/Edge). */ | ||
@@ -384,3 +434,3 @@ function toBase64(s) { | ||
| // before path rules so it's always reachable (it is never priced content). | ||
| if (info.pathname === WELL_KNOWN_PATH) { | ||
| if (stripTrailingSlash(info.pathname) === WELL_KNOWN_PATH) { | ||
| return { | ||
@@ -451,3 +501,8 @@ action: 'block', // "respond directly" — see GateResult docs | ||
| // Step 4: no payment header → freemium check, then 402 challenge. | ||
| const paymentId = info.paymentId; | ||
| // Two accepted wire forms, same meaning: the vendor headers the SDK has | ||
| // always used, and the canonical x402 v2 `PAYMENT-SIGNATURE` header. The | ||
| // vendor headers win when both are present, so existing agents are untouched. | ||
| const canonical = readPaymentSignature(info.headers); | ||
| const paymentId = info.paymentId || canonical.paymentId; | ||
| const payerPubkey = info.payerPubkey || canonical.payer; | ||
| if (!paymentId) { | ||
@@ -460,5 +515,5 @@ // Fase 10 — settlement WITHOUT a per-request transaction: | ||
| // the normal freemium/402 path so the agent still gets the manifest. | ||
| if (info.payerPubkey && info.headers) { | ||
| if (payerPubkey && info.headers) { | ||
| if (info.headers['x-solinkify-prepaid']) { | ||
| if (await verifyPrepaidAccess(config, info.payerPubkey, eff.endpointId, info.headers['x-solinkify-prepaid-token'])) { | ||
| if (await verifyPrepaidAccess(config, payerPubkey, eff.endpointId, info.headers['x-solinkify-prepaid-token'])) { | ||
| if (config.analytics) | ||
@@ -470,3 +525,3 @@ trackGateEvent(config.apiUrl, config.wallet, 'paid', detection.botName); | ||
| else if (info.headers['x-solinkify-subscription']) { | ||
| if (await verifySubscriptionAccess(config, info.payerPubkey, eff.endpointId)) { | ||
| if (await verifySubscriptionAccess(config, payerPubkey, eff.endpointId)) { | ||
| if (config.analytics) | ||
@@ -490,3 +545,3 @@ trackGateEvent(config.apiUrl, config.wallet, 'paid', detection.botName); | ||
| // Step 5: verify payment on-chain via backend (bound to the tier's endpoint+amount). | ||
| const result = await verifyPayment(paymentId, config, info.payerPubkey ?? undefined, eff); | ||
| const result = await verifyPayment(paymentId, config, payerPubkey ?? undefined, eff); | ||
| if (!result.valid) { | ||
@@ -500,3 +555,3 @@ trackBlocked(config, detection.botName ?? (detection.isBot ? 'unknown' : 'stealth')); | ||
| } | ||
| return { action: 'next', verified: true, botName: detection.botName }; | ||
| return { action: 'next', verified: true, botName: detection.botName, paymentId }; | ||
| } | ||
@@ -503,0 +558,0 @@ function trackBlocked(config, bot) { |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"express.d.ts","sourceRoot":"","sources":["../src/express.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAQ7C,MAAM,WAAW,kBAAkB;IACjC;oEACgE;IAChE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,CAAC,CAAC;IACvD,6EAA6E;IAC7E,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,kEAAkE;IAClE,MAAM,CAAC,EAAE;QAAE,aAAa,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACpC,8EAA8E;IAC9E,SAAS,CAAC,EAAE;QAAE,QAAQ,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC;CAC3D;AAED,MAAM,WAAW,mBAAmB;IAClC,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,mBAAmB,CAAC;IAC1C,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,mBAAmB,CAAC;IACvD,IAAI,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC;IAC7B,IAAI,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC;CAC9B;AAED,MAAM,MAAM,WAAW,GAAG,CAAC,GAAG,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;AAgBlD;;;;;;;;;GASG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,UAAU,IAKnD,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,EACxB,MAAM,WAAW,KAChB,OAAO,CAAC,IAAI,CAAC,CAkEjB"} | ||
| {"version":3,"file":"express.d.ts","sourceRoot":"","sources":["../src/express.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAQ7C,MAAM,WAAW,kBAAkB;IACjC;oEACgE;IAChE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,CAAC,CAAC;IACvD,6EAA6E;IAC7E,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,kEAAkE;IAClE,MAAM,CAAC,EAAE;QAAE,aAAa,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACpC,8EAA8E;IAC9E,SAAS,CAAC,EAAE;QAAE,QAAQ,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC;CAC3D;AAED,MAAM,WAAW,mBAAmB;IAClC,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,mBAAmB,CAAC;IAC1C,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,mBAAmB,CAAC;IACvD,IAAI,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC;IAC7B,IAAI,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC;CAC9B;AAED,MAAM,MAAM,WAAW,GAAG,CAAC,GAAG,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;AAgBlD;;;;;;;;;GASG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,UAAU,IAKnD,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,EACxB,MAAM,WAAW,KAChB,OAAO,CAAC,IAAI,CAAC,CAmEjB"} |
+2
-1
@@ -64,3 +64,4 @@ import { assertValidConfig, resolveConfig, resolveClientIp, evaluateGate } from './core.js'; | ||
| res.set('X-Solinkify-Bot', result.botName ?? 'unknown'); | ||
| const paymentId = headerValue(req.headers['x-solinkify-payment']); | ||
| // Core already resolved it from whichever wire form arrived. | ||
| const paymentId = result.paymentId; | ||
| if (resolved.deliveryRecords && paymentId) { | ||
@@ -67,0 +68,0 @@ captureNodeDelivery(res, { |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"fastify.d.ts","sourceRoot":"","sources":["../src/fastify.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAE3D,MAAM,WAAW,kBAAkB;IACjC,uDAAuD;IACvD,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,CAAC,CAAC;IACvD,sEAAsE;IACtE,EAAE,CAAC,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,CAAC,UAAU,EAAE,MAAM,GAAG,gBAAgB,CAAC;IAC3C,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,gBAAgB,CAAC;IACtD,IAAI,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC;IAC7B;;4BAEwB;IACxB,GAAG,CAAC,EAAE,gBAAgB,CAAC;CACxB;AAOD,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,UAAU,IAIpC,SAAS,kBAAkB,EAAE,OAAO,gBAAgB,KAAG,OAAO,CAAC,IAAI,CAAC,CA2DnF"} | ||
| {"version":3,"file":"fastify.d.ts","sourceRoot":"","sources":["../src/fastify.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAE3D,MAAM,WAAW,kBAAkB;IACjC,uDAAuD;IACvD,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,CAAC,CAAC;IACvD,sEAAsE;IACtE,EAAE,CAAC,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,CAAC,UAAU,EAAE,MAAM,GAAG,gBAAgB,CAAC;IAC3C,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,gBAAgB,CAAC;IACtD,IAAI,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC;IAC7B;;4BAEwB;IACxB,GAAG,CAAC,EAAE,gBAAgB,CAAC;CACxB;AAOD,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,UAAU,IAIpC,SAAS,kBAAkB,EAAE,OAAO,gBAAgB,KAAG,OAAO,CAAC,IAAI,CAAC,CA4DnF"} |
+2
-1
@@ -54,3 +54,4 @@ // Fastify adapter — register as an onRequest hook. | ||
| reply.header('X-Solinkify-Bot', result.botName ?? 'unknown'); | ||
| const paymentId = headerValue(request.headers['x-solinkify-payment']); | ||
| // Core already resolved it from whichever wire form arrived. | ||
| const paymentId = result.paymentId; | ||
| if (resolved.deliveryRecords && paymentId && reply.raw) { | ||
@@ -57,0 +58,0 @@ captureNodeDelivery(reply.raw, { |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"fetch.d.ts","sourceRoot":"","sources":["../src/fetch.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,eAAe,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAGjF;;;mFAGmF;AACnF,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,EAAE,UAAU,UAAO,GAAG,eAAe,CAcvF;AAED,4DAA4D;AAC5D,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,OAAO,CAAC,UAAU,EAAE;IAAE,MAAM,EAAE,OAAO,CAAA;CAAE,CAAC,GAC/C,QAAQ,CAKV;AAED,kFAAkF;AAClF,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,OAAO,CAAC,UAAU,EAAE;IAAE,MAAM,EAAE,WAAW,CAAA;CAAE,CAAC,GACnD,QAAQ,CAKV;AAED,kFAAkF;AAClF,wBAAgB,YAAY,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,QAAQ,CAI7F;AAED;;;;GAIG;AACH,wBAAsB,cAAc,CAClC,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,kBAAkB,EAC5B,OAAO,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAClC,SAAS,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GACnC,OAAO,CAAC,QAAQ,CAAC,CASnB;AAED;;;;;;GAMG;AACH,wBAAsB,UAAU,CAC9B,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,kBAAkB,EAC5B,IAAI,EAAE,MAAM,OAAO,CAAC,QAAQ,CAAC,GAAG,QAAQ,GACvC,OAAO,CAAC,QAAQ,CAAC,CAQnB"} | ||
| {"version":3,"file":"fetch.d.ts","sourceRoot":"","sources":["../src/fetch.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,eAAe,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAGjF;;;mFAGmF;AACnF,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,EAAE,UAAU,UAAO,GAAG,eAAe,CAcvF;AAED,4DAA4D;AAC5D,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,OAAO,CAAC,UAAU,EAAE;IAAE,MAAM,EAAE,OAAO,CAAA;CAAE,CAAC,GAC/C,QAAQ,CAKV;AAED,kFAAkF;AAClF,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,OAAO,CAAC,UAAU,EAAE;IAAE,MAAM,EAAE,WAAW,CAAA;CAAE,CAAC,GACnD,QAAQ,CAKV;AAED,kFAAkF;AAClF,wBAAgB,YAAY,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,QAAQ,CAI7F;AAED;;;;GAIG;AACH,wBAAsB,cAAc,CAClC,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,kBAAkB,EAC5B,OAAO,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAClC,SAAS,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GACnC,OAAO,CAAC,QAAQ,CAAC,CASnB;AAED;;;;;;GAMG;AACH,wBAAsB,UAAU,CAC9B,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,kBAAkB,EAC5B,IAAI,EAAE,MAAM,OAAO,CAAC,QAAQ,CAAC,GAAG,QAAQ,GACvC,OAAO,CAAC,QAAQ,CAAC,CAOnB"} |
+1
-1
@@ -78,3 +78,3 @@ // Shared helpers for Web Fetch API frameworks (Astro, SvelteKit, Hono, Nuxt/ | ||
| return response; | ||
| return finishVerified(response, resolved, result.botName, request.headers.get('x-solinkify-payment')); | ||
| return finishVerified(response, resolved, result.botName, result.paymentId); | ||
| } |
+7
-1
@@ -203,3 +203,9 @@ export interface GateConfig { | ||
| export interface X402PaymentRequirements { | ||
| scheme: 'exact'; | ||
| /** NOT `exact`. On a `solana:*` network the x402 `exact` scheme means "sign an | ||
| * SPL transfer straight to payTo and present it in the PAYMENT header" — | ||
| * Solinkify does not honour that. Settlement here is an escrow-PDA lock the | ||
| * backend verifies against chain state, so the scheme carries its own id and | ||
| * a conformant client can tell it does not know this flow (and skip it) | ||
| * instead of paying into a void. See `extra` for the retry headers. */ | ||
| scheme: 'solinkify-escrow'; | ||
| /** CAIP-2 network id: 'solana:5eykt4…' (mainnet) | 'solana:EtWTRA…' (devnet). */ | ||
@@ -206,0 +212,0 @@ network: string; |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"} | ||
| {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"} |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"worker.d.ts","sourceRoot":"","sources":["../src/worker.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAI7C,MAAM,WAAW,SAAS;IACxB,gBAAgB,EAAE,MAAM,CAAC;IACzB,qBAAqB,EAAE,MAAM,CAAC;IAC9B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,wBAAwB,CAAC,EAAE,MAAM,CAAC;CACnC;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAsB,mBAAmB,CACvC,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,UAAU,EAClB,IAAI,EAAE,MAAM,OAAO,CAAC,QAAQ,CAAC,GAAG,QAAQ,GACvC,OAAO,CAAC,QAAQ,CAAC,CAwCnB;AAED;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,KACnB,SAAS,OAAO,EAAE,KAAK,SAAS,KAAG,OAAO,CAAC,QAAQ,CAAC,CAkBnE"} | ||
| {"version":3,"file":"worker.d.ts","sourceRoot":"","sources":["../src/worker.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAI7C,MAAM,WAAW,SAAS;IACxB,gBAAgB,EAAE,MAAM,CAAC;IACzB,qBAAqB,EAAE,MAAM,CAAC;IAC9B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,wBAAwB,CAAC,EAAE,MAAM,CAAC;CACnC;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAsB,mBAAmB,CACvC,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,UAAU,EAClB,IAAI,EAAE,MAAM,OAAO,CAAC,QAAQ,CAAC,GAAG,QAAQ,GACvC,OAAO,CAAC,QAAQ,CAAC,CAuCnB;AAED;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,KACnB,SAAS,OAAO,EAAE,KAAK,SAAS,KAAG,OAAO,CAAC,QAAQ,CAAC,CAkBnE"} |
+1
-1
@@ -54,3 +54,3 @@ import { assertValidConfig, resolveConfig, evaluateGate } from './core.js'; | ||
| return response; | ||
| return finishVerified(response, resolved, result.botName, request.headers.get('x-solinkify-payment')); | ||
| return finishVerified(response, resolved, result.botName, result.paymentId); | ||
| } | ||
@@ -57,0 +57,0 @@ /** |
+2
-2
| { | ||
| "name": "@solinkify/gate", | ||
| "version": "0.4.3", | ||
| "description": "Creator middleware (Next.js, Express, Cloudflare Workers) — blocks AI scrapers with HTTP 402 paywall, monetizes ethical AI agents on Solana.", | ||
| "version": "0.5.0", | ||
| "description": "Creator middleware (Next.js, Express, Cloudflare Workers) \u2014 blocks AI scrapers with HTTP 402 paywall, monetizes ethical AI agents on Solana.", | ||
| "type": "module", | ||
@@ -6,0 +6,0 @@ "main": "./dist/index.js", |
URL strings
Supply chain riskPackage contains fragments of external URLs or IP addresses, which the package may be accessing at runtime.
URL strings
Supply chain riskPackage contains fragments of external URLs or IP addresses, which the package may be accessing at runtime.
185648
3%3095
3.06%