@armory-sh/base 0.2.30 → 0.2.31
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/dist/index.d.ts +1 -1
- package/dist/index.js +47 -1
- package/dist/payment-requirements.d.ts +2 -0
- package/package.json +1 -1
- package/src/index.ts +2 -0
- package/src/payment-requirements.ts +75 -0
package/dist/index.d.ts
CHANGED
|
@@ -12,7 +12,7 @@ export type { FacilitatorClientConfig, SupportedKind, SupportedResponse, } from
|
|
|
12
12
|
export { decodePayloadHeader, extractPayerAddress, getSupported, settlePayment, verifyPayment, } from "./payment-client";
|
|
13
13
|
export { clearFacilitatorCapabilityCache, filterExtensionsForFacilitator, filterExtensionsForFacilitators, filterExtensionsForRequirements, } from "./facilitator-capabilities";
|
|
14
14
|
export type { PaymentConfig, ResolvedRequirementsConfig, } from "./payment-requirements";
|
|
15
|
-
export { createPaymentRequirements, findRequirementByAccepted, findRequirementByNetwork, resolveFacilitatorUrlFromRequirement, } from "./payment-requirements";
|
|
15
|
+
export { createPaymentRequirements, enrichPaymentRequirement, enrichPaymentRequirements, findRequirementByAccepted, findRequirementByNetwork, resolveFacilitatorUrlFromRequirement, } from "./payment-requirements";
|
|
16
16
|
export { calculateValidBefore, detectX402Version, generateNonce, getPaymentHeaderName, parseJsonOrBase64, } from "./protocol";
|
|
17
17
|
export type { AcceptPaymentOptions, ArmoryPaymentResult, FacilitatorConfig, FacilitatorSettleResult, FacilitatorVerifyResult, NetworkId, PaymentError, PaymentErrorCode, PaymentResult, PayToAddress, PricingConfig, ResolvedFacilitator, ResolvedNetwork, ResolvedPaymentConfig, ResolvedToken, SettlementMode, TokenId, ValidationError, } from "./types/api";
|
|
18
18
|
export type { BeforePaymentHook, ClientHook, ClientHookErrorContext, ExtensionHook, HookConfig, HookRegistry, HookResult, OnPaymentRequiredHook, PaymentPayloadContext, PaymentRequiredContext, } from "./types/hooks";
|
package/dist/index.js
CHANGED
|
@@ -1380,6 +1380,50 @@ var DEFAULT_TOKENS = ["usdc"];
|
|
|
1380
1380
|
var isValidationError2 = (value) => {
|
|
1381
1381
|
return typeof value === "object" && value !== null && "code" in value;
|
|
1382
1382
|
};
|
|
1383
|
+
var coerceMetadata = (requirement) => {
|
|
1384
|
+
if (typeof requirement.name === "string" && typeof requirement.version === "string") {
|
|
1385
|
+
return { name: requirement.name, version: requirement.version };
|
|
1386
|
+
}
|
|
1387
|
+
const extraName = requirement.extra && typeof requirement.extra === "object" && typeof requirement.extra.name === "string" ? requirement.extra.name : void 0;
|
|
1388
|
+
const extraVersion = requirement.extra && typeof requirement.extra === "object" && typeof requirement.extra.version === "string" ? requirement.extra.version : void 0;
|
|
1389
|
+
return { name: extraName, version: extraVersion };
|
|
1390
|
+
};
|
|
1391
|
+
var resolveTokenMetadata = (requirement) => {
|
|
1392
|
+
const chainId = parseInt(requirement.network.split(":")[1] || "0", 10);
|
|
1393
|
+
if (!Number.isFinite(chainId) || chainId <= 0) {
|
|
1394
|
+
return {};
|
|
1395
|
+
}
|
|
1396
|
+
const token = getToken(chainId, requirement.asset);
|
|
1397
|
+
if (!token) {
|
|
1398
|
+
return {};
|
|
1399
|
+
}
|
|
1400
|
+
return {
|
|
1401
|
+
name: token.name,
|
|
1402
|
+
version: token.version
|
|
1403
|
+
};
|
|
1404
|
+
};
|
|
1405
|
+
function enrichPaymentRequirement(requirement) {
|
|
1406
|
+
const metadata = coerceMetadata(requirement);
|
|
1407
|
+
const fallback = resolveTokenMetadata(requirement);
|
|
1408
|
+
const name = metadata.name ?? fallback.name;
|
|
1409
|
+
const version = metadata.version ?? fallback.version;
|
|
1410
|
+
if (!name || !version) {
|
|
1411
|
+
return requirement;
|
|
1412
|
+
}
|
|
1413
|
+
return {
|
|
1414
|
+
...requirement,
|
|
1415
|
+
name,
|
|
1416
|
+
version,
|
|
1417
|
+
extra: {
|
|
1418
|
+
...requirement.extra ?? {},
|
|
1419
|
+
name,
|
|
1420
|
+
version
|
|
1421
|
+
}
|
|
1422
|
+
};
|
|
1423
|
+
}
|
|
1424
|
+
function enrichPaymentRequirements(requirements) {
|
|
1425
|
+
return requirements.map(enrichPaymentRequirement);
|
|
1426
|
+
}
|
|
1383
1427
|
function resolvePayTo(config, network, token) {
|
|
1384
1428
|
const chainId = network.config.chainId;
|
|
1385
1429
|
if (config.payToByToken) {
|
|
@@ -1527,6 +1571,8 @@ function createPaymentRequirements(config) {
|
|
|
1527
1571
|
asset: tokenConfig.contractAddress,
|
|
1528
1572
|
payTo: resolvedPayTo,
|
|
1529
1573
|
maxTimeoutSeconds,
|
|
1574
|
+
name: tokenConfig.name,
|
|
1575
|
+
version: tokenConfig.version,
|
|
1530
1576
|
extra: {
|
|
1531
1577
|
name: tokenConfig.name,
|
|
1532
1578
|
version: tokenConfig.version
|
|
@@ -1869,4 +1915,4 @@ function validateRouteConfig(config) {
|
|
|
1869
1915
|
return null;
|
|
1870
1916
|
}
|
|
1871
1917
|
|
|
1872
|
-
export { EIP712_TYPES, ERC20_ABI, EURC_BASE, NETWORKS, PAYMENT_REQUIRED_HEADER, PAYMENT_RESPONSE_HEADER, PAYMENT_SIGNATURE_HEADER, PaymentException, SCHEMES, SKL_SKALE_BASE, SKL_SKALE_BASE_SEPOLIA, SigningError, TOKENS, USDC_BASE, USDC_BASE_SEPOLIA, USDC_DOMAIN, USDC_SKALE_BASE, USDC_SKALE_BASE_SEPOLIA, USDT_SKALE_BASE, USDT_SKALE_BASE_SEPOLIA, V2_HEADERS, WBTC_SKALE_BASE, WBTC_SKALE_BASE_SEPOLIA, WETH_SKALE_BASE, WETH_SKALE_BASE_SEPOLIA, X402ClientError, X402_VERSION, addressToAssetId, assetIdToAddress, caip2ToNetwork, calculateValidBefore, checkFacilitatorSupport, clearFacilitatorCapabilityCache, combineSignature as combineSignatureV2, createEIP712Domain, createError, createNonce, createPaymentRequiredHeaders, createPaymentRequirements, createSettlementHeaders, createTransferWithAuthorization, decodeBase64ToUtf8, decodePayloadHeader, decodePayment, decodePaymentV2, decodeSettlementResponse, decodeSettlementV2, decodeX402Response, detectPaymentVersion, detectX402Version, encodePayment, encodePaymentV2, encodeSettlementResponse, encodeSettlementV2, encodeUtf8ToBase64, encodeX402Response, extractPayerAddress, extractPaymentFromHeaders, filterExtensionsForFacilitator, filterExtensionsForFacilitators, filterExtensionsForRequirements, findMatchingRoute, findRequirementByAccepted, findRequirementByNetwork, fromAtomicUnits, generateNonce, getAllCustomTokens, getAllTokens, getAvailableNetworks, getAvailableTokens, getCurrentTimestamp, getCustomToken, getEURCTokens, getMainnets, getNetworkByChainId, getNetworkConfig, getPaymentHeaderName, getSKLTokens, getSupported, getTestnets, getToken, getTokensByChain, getTokensBySymbol, getTxHash, getUSDCTokens, getUSDTTokens, getWBTCTokens, getWETHTokens, isAddress2 as isAddress, isCAIP2ChainId, isCAIPAssetId, isCustomToken, isExactEvmPayload, isPaymentPayload, isPaymentPayloadV2, isPaymentRequiredV2, isPaymentV2, isResolvedNetwork, isResolvedToken, isSettlementSuccessful, isSettlementV2, isValidAddress, isValidationError, isX402V2Payload, isX402V2PaymentRequired, isX402V2Requirements, isX402V2Settlement, matchRoute, networkToCaip2, normalizeAddress, normalizeBase64Url, normalizeNetworkName, parseJsonOrBase64, parseRoutePattern, parseSignature as parseSignatureV2, registerToken, resolveFacilitator, resolveFacilitatorUrlFromRequirement, resolveNetwork, resolveToken, runAfterPaymentResponseHooks, runBeforeSignPaymentHooks, runOnPaymentRequiredHooks, safeBase64Decode2 as safeBase64Decode, safeBase64Encode2 as safeBase64Encode, selectRequirementWithHooks, settlePayment, toAtomicUnits, toBase64Url, unregisterToken, validateAcceptConfig, validatePaymentConfig, validateRouteConfig, validateTransferWithAuthorization, verifyPayment };
|
|
1918
|
+
export { EIP712_TYPES, ERC20_ABI, EURC_BASE, NETWORKS, PAYMENT_REQUIRED_HEADER, PAYMENT_RESPONSE_HEADER, PAYMENT_SIGNATURE_HEADER, PaymentException, SCHEMES, SKL_SKALE_BASE, SKL_SKALE_BASE_SEPOLIA, SigningError, TOKENS, USDC_BASE, USDC_BASE_SEPOLIA, USDC_DOMAIN, USDC_SKALE_BASE, USDC_SKALE_BASE_SEPOLIA, USDT_SKALE_BASE, USDT_SKALE_BASE_SEPOLIA, V2_HEADERS, WBTC_SKALE_BASE, WBTC_SKALE_BASE_SEPOLIA, WETH_SKALE_BASE, WETH_SKALE_BASE_SEPOLIA, X402ClientError, X402_VERSION, addressToAssetId, assetIdToAddress, caip2ToNetwork, calculateValidBefore, checkFacilitatorSupport, clearFacilitatorCapabilityCache, combineSignature as combineSignatureV2, createEIP712Domain, createError, createNonce, createPaymentRequiredHeaders, createPaymentRequirements, createSettlementHeaders, createTransferWithAuthorization, decodeBase64ToUtf8, decodePayloadHeader, decodePayment, decodePaymentV2, decodeSettlementResponse, decodeSettlementV2, decodeX402Response, detectPaymentVersion, detectX402Version, encodePayment, encodePaymentV2, encodeSettlementResponse, encodeSettlementV2, encodeUtf8ToBase64, encodeX402Response, enrichPaymentRequirement, enrichPaymentRequirements, extractPayerAddress, extractPaymentFromHeaders, filterExtensionsForFacilitator, filterExtensionsForFacilitators, filterExtensionsForRequirements, findMatchingRoute, findRequirementByAccepted, findRequirementByNetwork, fromAtomicUnits, generateNonce, getAllCustomTokens, getAllTokens, getAvailableNetworks, getAvailableTokens, getCurrentTimestamp, getCustomToken, getEURCTokens, getMainnets, getNetworkByChainId, getNetworkConfig, getPaymentHeaderName, getSKLTokens, getSupported, getTestnets, getToken, getTokensByChain, getTokensBySymbol, getTxHash, getUSDCTokens, getUSDTTokens, getWBTCTokens, getWETHTokens, isAddress2 as isAddress, isCAIP2ChainId, isCAIPAssetId, isCustomToken, isExactEvmPayload, isPaymentPayload, isPaymentPayloadV2, isPaymentRequiredV2, isPaymentV2, isResolvedNetwork, isResolvedToken, isSettlementSuccessful, isSettlementV2, isValidAddress, isValidationError, isX402V2Payload, isX402V2PaymentRequired, isX402V2Requirements, isX402V2Settlement, matchRoute, networkToCaip2, normalizeAddress, normalizeBase64Url, normalizeNetworkName, parseJsonOrBase64, parseRoutePattern, parseSignature as parseSignatureV2, registerToken, resolveFacilitator, resolveFacilitatorUrlFromRequirement, resolveNetwork, resolveToken, runAfterPaymentResponseHooks, runBeforeSignPaymentHooks, runOnPaymentRequiredHooks, safeBase64Decode2 as safeBase64Decode, safeBase64Encode2 as safeBase64Encode, selectRequirementWithHooks, settlePayment, toAtomicUnits, toBase64Url, unregisterToken, validateAcceptConfig, validatePaymentConfig, validateRouteConfig, validateTransferWithAuthorization, verifyPayment };
|
|
@@ -23,6 +23,8 @@ export interface FacilitatorRoutingConfig {
|
|
|
23
23
|
facilitatorUrlByChain?: Record<string, string>;
|
|
24
24
|
facilitatorUrlByToken?: Record<string, Record<string, string>>;
|
|
25
25
|
}
|
|
26
|
+
export declare function enrichPaymentRequirement(requirement: PaymentRequirementsV2): PaymentRequirementsV2;
|
|
27
|
+
export declare function enrichPaymentRequirements(requirements: PaymentRequirementsV2[]): PaymentRequirementsV2[];
|
|
26
28
|
export declare function resolveFacilitatorUrlFromRequirement(config: FacilitatorRoutingConfig, requirement: Pick<PaymentRequirementsV2, "network" | "asset">): string | undefined;
|
|
27
29
|
export declare function createPaymentRequirements(config: PaymentConfig): ResolvedRequirementsConfig;
|
|
28
30
|
export declare function findRequirementByNetwork(requirements: PaymentRequirementsV2[], network: string): PaymentRequirementsV2 | undefined;
|
package/package.json
CHANGED
package/src/index.ts
CHANGED
|
@@ -128,6 +128,8 @@ export type {
|
|
|
128
128
|
} from "./payment-requirements";
|
|
129
129
|
export {
|
|
130
130
|
createPaymentRequirements,
|
|
131
|
+
enrichPaymentRequirement,
|
|
132
|
+
enrichPaymentRequirements,
|
|
131
133
|
findRequirementByAccepted,
|
|
132
134
|
findRequirementByNetwork,
|
|
133
135
|
resolveFacilitatorUrlFromRequirement,
|
|
@@ -6,6 +6,7 @@ import type {
|
|
|
6
6
|
ValidationError,
|
|
7
7
|
} from "./types/api";
|
|
8
8
|
import { getNetworkConfig } from "./types/networks";
|
|
9
|
+
import { getToken } from "./data/tokens";
|
|
9
10
|
import type { Address, PaymentRequirementsV2 } from "./types/v2";
|
|
10
11
|
import { toAtomicUnits } from "./utils/x402";
|
|
11
12
|
import {
|
|
@@ -57,6 +58,78 @@ const isValidationError = (value: unknown): value is ValidationError => {
|
|
|
57
58
|
return typeof value === "object" && value !== null && "code" in value;
|
|
58
59
|
};
|
|
59
60
|
|
|
61
|
+
const coerceMetadata = (
|
|
62
|
+
requirement: PaymentRequirementsV2,
|
|
63
|
+
): { name?: string; version?: string } => {
|
|
64
|
+
if (typeof requirement.name === "string" && typeof requirement.version === "string") {
|
|
65
|
+
return { name: requirement.name, version: requirement.version };
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
const extraName =
|
|
69
|
+
requirement.extra &&
|
|
70
|
+
typeof requirement.extra === "object" &&
|
|
71
|
+
typeof requirement.extra.name === "string"
|
|
72
|
+
? requirement.extra.name
|
|
73
|
+
: undefined;
|
|
74
|
+
const extraVersion =
|
|
75
|
+
requirement.extra &&
|
|
76
|
+
typeof requirement.extra === "object" &&
|
|
77
|
+
typeof requirement.extra.version === "string"
|
|
78
|
+
? requirement.extra.version
|
|
79
|
+
: undefined;
|
|
80
|
+
|
|
81
|
+
return { name: extraName, version: extraVersion };
|
|
82
|
+
};
|
|
83
|
+
|
|
84
|
+
const resolveTokenMetadata = (
|
|
85
|
+
requirement: PaymentRequirementsV2,
|
|
86
|
+
): { name?: string; version?: string } => {
|
|
87
|
+
const chainId = parseInt(requirement.network.split(":")[1] || "0", 10);
|
|
88
|
+
if (!Number.isFinite(chainId) || chainId <= 0) {
|
|
89
|
+
return {};
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
const token = getToken(chainId, requirement.asset);
|
|
93
|
+
if (!token) {
|
|
94
|
+
return {};
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
return {
|
|
98
|
+
name: token.name,
|
|
99
|
+
version: token.version,
|
|
100
|
+
};
|
|
101
|
+
};
|
|
102
|
+
|
|
103
|
+
export function enrichPaymentRequirement(
|
|
104
|
+
requirement: PaymentRequirementsV2,
|
|
105
|
+
): PaymentRequirementsV2 {
|
|
106
|
+
const metadata = coerceMetadata(requirement);
|
|
107
|
+
const fallback = resolveTokenMetadata(requirement);
|
|
108
|
+
const name = metadata.name ?? fallback.name;
|
|
109
|
+
const version = metadata.version ?? fallback.version;
|
|
110
|
+
|
|
111
|
+
if (!name || !version) {
|
|
112
|
+
return requirement;
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
return {
|
|
116
|
+
...requirement,
|
|
117
|
+
name,
|
|
118
|
+
version,
|
|
119
|
+
extra: {
|
|
120
|
+
...(requirement.extra ?? {}),
|
|
121
|
+
name,
|
|
122
|
+
version,
|
|
123
|
+
},
|
|
124
|
+
};
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
export function enrichPaymentRequirements(
|
|
128
|
+
requirements: PaymentRequirementsV2[],
|
|
129
|
+
): PaymentRequirementsV2[] {
|
|
130
|
+
return requirements.map(enrichPaymentRequirement);
|
|
131
|
+
}
|
|
132
|
+
|
|
60
133
|
function resolvePayTo(
|
|
61
134
|
config: PaymentConfig,
|
|
62
135
|
network: ResolvedNetwork,
|
|
@@ -275,6 +348,8 @@ export function createPaymentRequirements(
|
|
|
275
348
|
asset: tokenConfig.contractAddress,
|
|
276
349
|
payTo: resolvedPayTo as `0x${string}`,
|
|
277
350
|
maxTimeoutSeconds,
|
|
351
|
+
name: tokenConfig.name,
|
|
352
|
+
version: tokenConfig.version,
|
|
278
353
|
extra: {
|
|
279
354
|
name: tokenConfig.name,
|
|
280
355
|
version: tokenConfig.version,
|