@armory-sh/client-ethers 0.2.26-alpha.23.73 → 0.2.26-alpha.23.76

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 CHANGED
@@ -1,7 +1,7 @@
1
- import { PaymentRequirementsV2, Address, PaymentPayloadV2, CustomToken, NetworkId, TokenId, ArmoryPaymentResult, ValidationError } from '@armory-sh/base';
2
- export { Address, BalanceOfParams, CAIP2ChainId, CAIPAssetId, EIP712_TYPES, ERC20_ABI, Extensions, NETWORKS, NetworkConfig, PayToV2, PaymentPayload, PaymentPayloadV2, PaymentRequirements, PaymentRequirementsV2, SettlementResponse, SettlementResponseV2, Signature, TransferWithAuthorizationParams, V2_HEADERS, createEIP712Domain, createTransferWithAuthorization, decodePayment, decodePaymentV2, decodeSettlementV2, detectPaymentVersion, encodePaymentV2, encodeSettlementV2, getMainnets, getNetworkByChainId, getNetworkConfig, getTestnets, getTxHash, isCAIP2ChainId, isCAIPAssetId, isPaymentV2, isSettlementSuccessful, isSettlementV2, isX402V2PaymentRequired, safeBase64Decode, validateTransferWithAuthorization } from '@armory-sh/base';
3
1
  import { Signer, Provider } from 'ethers';
4
2
  export { Provider, Signer } from 'ethers';
3
+ import { PaymentRequirementsV2, Address, PaymentPayloadV2, X402ClientError, CustomToken, NetworkId, TokenId, ArmoryPaymentResult, ValidationError } from '@armory-sh/base';
4
+ export { PaymentException as PaymentError, SigningError, X402ClientError } from '@armory-sh/base';
5
5
 
6
6
  /**
7
7
  * X402 Protocol Implementation for Ethers Client (V2 Only)
@@ -33,16 +33,6 @@ declare function parsePaymentRequired(response: Response): ParsedPaymentRequirem
33
33
  */
34
34
  declare function createX402Payment(signer: Signer, parsed: ParsedPaymentRequirements, fromAddress: Address, nonce?: `0x${string}`, validBefore?: number, domainName?: string, domainVersion?: string): Promise<PaymentPayloadV2>;
35
35
 
36
- declare class X402ClientError extends Error {
37
- readonly cause?: unknown;
38
- constructor(message: string, cause?: unknown);
39
- }
40
- declare class SigningError extends X402ClientError {
41
- constructor(message: string, cause?: unknown);
42
- }
43
- declare class PaymentError extends X402ClientError {
44
- constructor(message: string, cause?: unknown);
45
- }
46
36
  declare class SignerRequiredError extends X402ClientError {
47
37
  constructor(message?: string);
48
38
  }
@@ -306,4 +296,4 @@ interface ArmoryInstance {
306
296
  }
307
297
  declare const createArmory: (config: ArmoryConfig) => ArmoryInstance;
308
298
 
309
- export { type ArmoryConfig, type ArmoryInstance, AuthorizationError, type ClientConfig, type HttpMethod, type NormalizedWallet, type ParsedPaymentRequirements, PaymentError, type PaymentOptions, ProviderRequiredError, SignerRequiredError, SigningError, type SimpleWalletInput, type X402Client, type X402ClientConfig, X402ClientError, type X402RequestInit, type X402Transport, type X402TransportConfig, armoryDelete, armoryGet, armoryPatch, armoryPay, armoryPost, armoryPut, createArmory, createX402Client, createX402Payment, createX402Transport, detectX402Version, getNetworks, getPaymentHeaderName, getTokens, getWalletAddress, normalizeWallet, parsePaymentRequired, recoverEIP3009Signer, signEIP3009, signEIP3009WithDomain, signPayment, validateNetwork, validateToken };
299
+ export { type ArmoryConfig, type ArmoryInstance, AuthorizationError, type ClientConfig, type HttpMethod, type NormalizedWallet, type ParsedPaymentRequirements, type PaymentOptions, ProviderRequiredError, SignerRequiredError, type SimpleWalletInput, type X402Client, type X402ClientConfig, type X402RequestInit, type X402Transport, type X402TransportConfig, armoryDelete, armoryGet, armoryPatch, armoryPay, armoryPost, armoryPut, createArmory, createX402Client, createX402Payment, createX402Transport, detectX402Version, getNetworks, getPaymentHeaderName, getTokens, getWalletAddress, normalizeWallet, parsePaymentRequired, recoverEIP3009Signer, signEIP3009, signEIP3009WithDomain, signPayment, validateNetwork, validateToken };
package/dist/index.js CHANGED
@@ -1,5 +1,5 @@
1
- import { createEIP712Domain, V2_HEADERS, isX402V2PaymentRequired, validatePaymentConfig, isValidationError, resolveNetwork, resolveToken, getNetworkConfig, normalizeNetworkName, encodePaymentV2, decodeSettlementV2 } from '@armory-sh/base';
2
- export { EIP712_TYPES, ERC20_ABI, NETWORKS, V2_HEADERS, createEIP712Domain, createTransferWithAuthorization, decodePayment, decodePaymentV2, decodeSettlementV2, detectPaymentVersion, encodePaymentV2, encodeSettlementV2, getMainnets, getNetworkByChainId, getNetworkConfig, getTestnets, getTxHash, isCAIP2ChainId, isCAIPAssetId, isPaymentV2, isSettlementSuccessful, isSettlementV2, isX402V2PaymentRequired, safeBase64Decode, validateTransferWithAuthorization } from '@armory-sh/base';
1
+ import { X402ClientError, createEIP712Domain, V2_HEADERS, PaymentException, isX402V2PaymentRequired, validatePaymentConfig, isValidationError, resolveNetwork, resolveToken, normalizeBase64Url, decodeBase64ToUtf8, getNetworkConfig, normalizeNetworkName, encodePaymentV2, decodeSettlementV2 } from '@armory-sh/base';
2
+ export { PaymentException as PaymentError, SigningError, X402ClientError } from '@armory-sh/base';
3
3
  import { ethers } from 'ethers';
4
4
 
5
5
  var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, {
@@ -8,28 +8,6 @@ var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require
8
8
  if (typeof require !== "undefined") return require.apply(this, arguments);
9
9
  throw Error('Dynamic require of "' + x + '" is not supported');
10
10
  });
11
-
12
- // src/errors.ts
13
- var X402ClientError = class extends Error {
14
- cause;
15
- constructor(message, cause) {
16
- super(message);
17
- this.name = "X402ClientError";
18
- this.cause = cause;
19
- }
20
- };
21
- var SigningError = class extends X402ClientError {
22
- constructor(message, cause) {
23
- super(`Signing failed: ${message}`, cause);
24
- this.name = "SigningError";
25
- }
26
- };
27
- var PaymentError = class extends X402ClientError {
28
- constructor(message, cause) {
29
- super(`Payment failed: ${message}`, cause);
30
- this.name = "PaymentError";
31
- }
32
- };
33
11
  var SignerRequiredError = class extends X402ClientError {
34
12
  constructor(message = "Signer is required for this operation") {
35
13
  super(message);
@@ -116,38 +94,6 @@ async function recoverEIP3009Signer(params, signature, domain) {
116
94
  return address;
117
95
  }
118
96
 
119
- // src/bytes.ts
120
- new TextEncoder();
121
- var textDecoder = new TextDecoder();
122
- function getNodeBuffer() {
123
- if ("Buffer" in globalThis) {
124
- return globalThis.Buffer;
125
- }
126
- return void 0;
127
- }
128
- function fromBase64(base64) {
129
- if (typeof atob === "function") {
130
- const binary = atob(base64);
131
- const bytes = new Uint8Array(binary.length);
132
- for (let index = 0; index < binary.length; index += 1) {
133
- bytes[index] = binary.charCodeAt(index);
134
- }
135
- return bytes;
136
- }
137
- const nodeBuffer = getNodeBuffer();
138
- if (nodeBuffer) {
139
- return Uint8Array.from(nodeBuffer.from(base64, "base64"));
140
- }
141
- throw new Error("No base64 decoder available in this runtime");
142
- }
143
- function decodeBase64ToUtf8(value) {
144
- const bytes = fromBase64(value);
145
- return textDecoder.decode(bytes);
146
- }
147
- function normalizeBase64Url(value) {
148
- return value.replace(/-/g, "+").replace(/_/g, "/").padEnd(Math.ceil(value.length / 4) * 4, "=");
149
- }
150
-
151
97
  // src/protocol.ts
152
98
  function detectX402Version(_response) {
153
99
  return 2;
@@ -166,23 +112,23 @@ function parseJsonOrBase64(value) {
166
112
  function parsePaymentRequired(response) {
167
113
  const v2Header = response.headers.get(V2_HEADERS.PAYMENT_REQUIRED);
168
114
  if (!v2Header) {
169
- throw new PaymentError("No PAYMENT-REQUIRED header found in V2 response");
115
+ throw new PaymentException("No PAYMENT-REQUIRED header found in V2 response");
170
116
  }
171
117
  try {
172
118
  const parsed = parseJsonOrBase64(v2Header);
173
119
  if (!isX402V2PaymentRequired(parsed)) {
174
- throw new PaymentError("Invalid x402 V2 payment required format");
120
+ throw new PaymentException("Invalid x402 V2 payment required format");
175
121
  }
176
122
  if (!parsed.accepts || parsed.accepts.length === 0) {
177
- throw new PaymentError("No payment requirements found in accepts array");
123
+ throw new PaymentException("No payment requirements found in accepts array");
178
124
  }
179
125
  return {
180
126
  version: 2,
181
127
  requirements: parsed.accepts[0]
182
128
  };
183
129
  } catch (error) {
184
- if (error instanceof PaymentError) throw error;
185
- throw new PaymentError(`Failed to parse V2 PAYMENT-REQUIRED header: ${error}`);
130
+ if (error instanceof PaymentException) throw error;
131
+ throw new PaymentException(`Failed to parse V2 PAYMENT-REQUIRED header: ${error}`);
186
132
  }
187
133
  }
188
134
  function extractChainId(network) {
@@ -193,7 +139,7 @@ function extractChainId(network) {
193
139
  if (net) {
194
140
  return net.chainId;
195
141
  }
196
- throw new PaymentError(`Unsupported network: ${network}`);
142
+ throw new PaymentException(`Unsupported network: ${network}`);
197
143
  }
198
144
  function createNonce() {
199
145
  const now = Math.floor(Date.now() / 1e3);
@@ -202,13 +148,14 @@ function createNonce() {
202
148
  async function createX402V2Payment(signer, requirements, fromAddress, nonce, validBefore, domainName, domainVersion) {
203
149
  const contractAddress = requirements.asset;
204
150
  const chainId = extractChainId(requirements.network);
151
+ const now = Math.floor(Date.now() / 1e3);
205
152
  const domain = createEIP712Domain(chainId, contractAddress);
206
153
  const customDomain = domainName || domainVersion ? { ...domain, name: domainName ?? domain.name, version: domainVersion ?? domain.version } : domain;
207
154
  const authorization = {
208
155
  from: fromAddress,
209
156
  to: requirements.payTo,
210
157
  value: requirements.amount,
211
- validAfter: "0",
158
+ validAfter: (now - 600).toString(),
212
159
  validBefore: validBefore.toString(),
213
160
  nonce
214
161
  };
@@ -300,7 +247,7 @@ var handlePaymentRequired = async (state, response) => {
300
247
  parsed,
301
248
  from,
302
249
  void 0,
303
- void 0,
250
+ Math.floor(Date.now() / 1e3) + parsed.requirements.maxTimeoutSeconds,
304
251
  requirementDomain.domainName,
305
252
  requirementDomain.domainVersion
306
253
  );
@@ -587,4 +534,4 @@ var createArmory = (config) => {
587
534
  };
588
535
  };
589
536
 
590
- export { AuthorizationError, PaymentError, ProviderRequiredError, SignerRequiredError, SigningError, X402ClientError, armoryDelete, armoryGet, armoryPatch, armoryPay, armoryPost, armoryPut, createArmory, createX402Client, createX402Payment, createX402Transport, detectX402Version, getNetworks, getPaymentHeaderName, getTokens, getWalletAddress, normalizeWallet, parsePaymentRequired, recoverEIP3009Signer, signEIP3009, signEIP3009WithDomain, signPayment, validateNetwork, validateToken };
537
+ export { AuthorizationError, ProviderRequiredError, SignerRequiredError, armoryDelete, armoryGet, armoryPatch, armoryPay, armoryPost, armoryPut, createArmory, createX402Client, createX402Payment, createX402Transport, detectX402Version, getNetworks, getPaymentHeaderName, getTokens, getWalletAddress, normalizeWallet, parsePaymentRequired, recoverEIP3009Signer, signEIP3009, signEIP3009WithDomain, signPayment, validateNetwork, validateToken };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@armory-sh/client-ethers",
3
- "version": "0.2.26-alpha.23.73",
3
+ "version": "0.2.26-alpha.23.76",
4
4
  "license": "MIT",
5
5
  "author": "Sawyer Cutler <sawyer@dirtroad.dev>",
6
6
  "keywords": [
@@ -47,7 +47,7 @@
47
47
  "directory": "packages/client-ethers"
48
48
  },
49
49
  "dependencies": {
50
- "@armory-sh/base": "0.2.27-alpha.23.73",
50
+ "@armory-sh/base": "0.2.27-alpha.23.76",
51
51
  "ethers": "6.16.0"
52
52
  },
53
53
  "devDependencies": {