@coinbase/cdp-hooks 0.0.32 → 0.0.34

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.
Files changed (95) hide show
  1. package/README.md +155 -7
  2. package/dist/esm/index.js +18 -15
  3. package/dist/esm/index15.js +1 -1
  4. package/dist/esm/index19.js +3 -3
  5. package/dist/esm/index190.js +40 -7
  6. package/dist/esm/index191.js +2 -7
  7. package/dist/esm/index192.js +4 -36
  8. package/dist/esm/index193.js +10 -15
  9. package/dist/esm/index194.js +19 -8
  10. package/dist/esm/index195.js +7 -40
  11. package/dist/esm/index196.js +12 -2
  12. package/dist/esm/index197.js +66 -4
  13. package/dist/esm/index198.js +64 -9
  14. package/dist/esm/index199.js +183 -17
  15. package/dist/esm/index20.js +2 -2
  16. package/dist/esm/index200.js +22 -7
  17. package/dist/esm/index201.js +41 -10
  18. package/dist/esm/index202.js +72 -62
  19. package/dist/esm/index203.js +36 -61
  20. package/dist/esm/index204.js +15 -184
  21. package/dist/esm/index205.js +12 -21
  22. package/dist/esm/index206.js +7 -42
  23. package/dist/esm/index207.js +6 -76
  24. package/dist/esm/index208.js +36 -40
  25. package/dist/esm/index209.js +15 -16
  26. package/dist/esm/index21.js +3 -3
  27. package/dist/esm/index210.js +8 -13
  28. package/dist/esm/index212.js +9 -11
  29. package/dist/esm/index213.js +16 -9
  30. package/dist/esm/index214.js +21 -15
  31. package/dist/esm/index215.js +30 -22
  32. package/dist/esm/index216.js +2 -31
  33. package/dist/esm/index217.js +14 -2
  34. package/dist/esm/index218.js +12 -13
  35. package/dist/esm/index219.js +45 -10
  36. package/dist/esm/index22.js +2 -2
  37. package/dist/esm/index220.js +9 -47
  38. package/dist/esm/index221.js +12 -8
  39. package/dist/esm/index222.js +14 -13
  40. package/dist/esm/index223.js +8 -14
  41. package/dist/esm/index224.js +13 -6
  42. package/dist/esm/index225.js +24 -15
  43. package/dist/esm/index226.js +11 -24
  44. package/dist/esm/index227.js +23 -10
  45. package/dist/esm/index228.js +51 -24
  46. package/dist/esm/index229.js +17 -51
  47. package/dist/esm/index23.js +3 -3
  48. package/dist/esm/index230.js +14 -17
  49. package/dist/esm/index231.js +11 -14
  50. package/dist/esm/index236.js +1 -1
  51. package/dist/esm/index24.js +6 -6
  52. package/dist/esm/index244.js +3 -16
  53. package/dist/esm/index245.js +136 -3
  54. package/dist/esm/index246.js +144 -125
  55. package/dist/esm/index247.js +9 -155
  56. package/dist/esm/index248.js +16 -9
  57. package/dist/esm/index249.js +3 -3
  58. package/dist/esm/index25.js +2 -2
  59. package/dist/esm/index250.js +1 -1
  60. package/dist/esm/index259.js +1 -1
  61. package/dist/esm/index26.js +1 -1
  62. package/dist/esm/index260.js +1 -1
  63. package/dist/esm/index264.js +1 -1
  64. package/dist/esm/index265.js +1 -1
  65. package/dist/esm/index27.js +1 -1
  66. package/dist/esm/index28.js +1 -1
  67. package/dist/esm/index29.js +1 -1
  68. package/dist/esm/index3.js +95 -85
  69. package/dist/esm/index30.js +1 -1
  70. package/dist/esm/index31.js +1 -1
  71. package/dist/esm/index32.js +4 -4
  72. package/dist/esm/index33.js +1 -1
  73. package/dist/esm/index41.js +1 -1
  74. package/dist/esm/index42.js +2 -2
  75. package/dist/esm/index43.js +1 -1
  76. package/dist/esm/index48.js +1 -1
  77. package/dist/esm/index51.js +1 -1
  78. package/dist/esm/index54.js +1 -1
  79. package/dist/esm/index55.js +1 -1
  80. package/dist/esm/index56.js +3 -3
  81. package/dist/esm/index57.js +2 -2
  82. package/dist/esm/index58.js +1 -1
  83. package/dist/esm/index60.js +1 -1
  84. package/dist/esm/index61.js +1 -1
  85. package/dist/esm/index62.js +3 -3
  86. package/dist/esm/index63.js +3 -3
  87. package/dist/esm/index64.js +3 -3
  88. package/dist/esm/index65.js +3 -3
  89. package/dist/esm/index66.js +3 -3
  90. package/dist/esm/index67.js +3 -3
  91. package/dist/esm/index68.js +3 -3
  92. package/dist/esm/index69.js +1 -1
  93. package/dist/esm/index71.js +1 -1
  94. package/dist/types/index.d.ts +17 -0
  95. package/package.json +3 -3
@@ -1,54 +1,20 @@
1
- import { universalSignatureValidatorAbi as d } from "./index72.js";
2
- import { universalSignatureValidatorByteCode as l } from "./index74.js";
3
- import { CallExecutionError as g } from "./index85.js";
4
- import { encodeDeployData as y } from "./index134.js";
5
- import { getAddress as S } from "./index119.js";
6
- import { isAddressEqual as h } from "./index141.js";
7
- import { isHex as v } from "./index145.js";
8
- import { bytesToHex as x } from "./index109.js";
9
- import { getAction as b } from "./index190.js";
10
- import { isErc6492Signature as A } from "./index155.js";
11
- import { recoverAddress as w } from "./index149.js";
12
- import { serializeErc6492Signature as E } from "./index156.js";
13
- import { serializeSignature as V } from "./index153.js";
14
- import { call as D } from "./index24.js";
15
- import { encodeFunctionData as H } from "./index137.js";
16
- import { hexToBool as z } from "./index142.js";
17
- async function Q(o, p) {
18
- const { address: i, factory: n, factoryData: s, hash: a, signature: r, universalSignatureVerifierAddress: f = o.chain?.contracts?.universalSignatureVerifier?.address, ...m } = p, t = v(r) ? r : typeof r == "object" && "r" in r && "s" in r ? V(r) : x(r), c = await (async () => !n && !s || A(t) ? t : E({
19
- address: n,
20
- data: s,
21
- signature: t
22
- }))();
23
- try {
24
- const e = f ? {
25
- to: f,
26
- data: H({
27
- abi: d,
28
- functionName: "isValidSig",
29
- args: [i, a, c]
30
- }),
31
- ...m
32
- } : {
33
- data: y({
34
- abi: d,
35
- args: [i, a, c],
36
- bytecode: l
37
- }),
38
- ...m
39
- }, { data: u } = await b(o, D, "call")(e);
40
- return z(u ?? "0x0");
41
- } catch (e) {
42
- try {
43
- if (h(S(i), await w({ hash: a, signature: r })))
44
- return !0;
45
- } catch {
46
- }
47
- if (e instanceof g)
48
- return !1;
49
- throw e;
50
- }
1
+ function x(e) {
2
+ const { scheme: n, statement: t, ...c } = e.match(f)?.groups ?? {}, { chainId: s, expirationTime: i, issuedAt: o, notBefore: r, requestId: a, ...d } = e.match(p)?.groups ?? {}, u = e.split("Resources:")[1]?.split(`
3
+ - `).slice(1);
4
+ return {
5
+ ...c,
6
+ ...d,
7
+ ...s ? { chainId: Number(s) } : {},
8
+ ...i ? { expirationTime: new Date(i) } : {},
9
+ ...o ? { issuedAt: new Date(o) } : {},
10
+ ...r ? { notBefore: new Date(r) } : {},
11
+ ...a ? { requestId: a } : {},
12
+ ...u ? { resources: u } : {},
13
+ ...n ? { scheme: n } : {},
14
+ ...t ? { statement: t } : {}
15
+ };
51
16
  }
17
+ const f = /^(?:(?<scheme>[a-zA-Z][a-zA-Z0-9+-.]*):\/\/)?(?<domain>[a-zA-Z0-9+-.]*(?::[0-9]{1,5})?) (?:wants you to sign in with your Ethereum account:\n)(?<address>0x[a-fA-F0-9]{40})\n\n(?:(?<statement>.*)\n\n)?/, p = /(?:URI: (?<uri>.+))\n(?:Version: (?<version>.+))\n(?:Chain ID: (?<chainId>\d+))\n(?:Nonce: (?<nonce>[a-zA-Z0-9]+))\n(?:Issued At: (?<issuedAt>.+))(?:\nExpiration Time: (?<expirationTime>.+))?(?:\nNot Before: (?<notBefore>.+))?(?:\nRequest ID: (?<requestId>.+))?/;
52
18
  export {
53
- Q as verifyHash
19
+ x as parseSiweMessage
54
20
  };
@@ -3,11 +3,11 @@ import { decodeFunctionResult as p } from "./index130.js";
3
3
  import { encodeFunctionData as A } from "./index137.js";
4
4
  import { getChainContractAddress as R } from "./index173.js";
5
5
  import { toHex as b } from "./index109.js";
6
- import { isNullUniversalResolverError as g } from "./index213.js";
6
+ import { isNullUniversalResolverError as g } from "./index212.js";
7
7
  import { localBatchGatewayUrl as w } from "./index163.js";
8
8
  import { namehash as x } from "./index112.js";
9
- import { packetToBytes as C } from "./index214.js";
10
- import { getAction as y } from "./index190.js";
9
+ import { packetToBytes as C } from "./index213.js";
10
+ import { getAction as y } from "./index206.js";
11
11
  import { readContract as N } from "./index55.js";
12
12
  async function j(n, e) {
13
13
  const { blockNumber: s, blockTag: m, key: d, name: t, gatewayUrls: u, strict: f } = e, { chain: o } = n, v = (() => {
@@ -1,20 +1,17 @@
1
- function x(e) {
2
- const { scheme: n, statement: t, ...c } = e.match(f)?.groups ?? {}, { chainId: s, expirationTime: i, issuedAt: o, notBefore: r, requestId: a, ...d } = e.match(p)?.groups ?? {}, u = e.split("Resources:")[1]?.split(`
3
- - `).slice(1);
4
- return {
5
- ...c,
6
- ...d,
7
- ...s ? { chainId: Number(s) } : {},
8
- ...i ? { expirationTime: new Date(i) } : {},
9
- ...o ? { issuedAt: new Date(o) } : {},
10
- ...r ? { notBefore: new Date(r) } : {},
11
- ...a ? { requestId: a } : {},
12
- ...u ? { resources: u } : {},
13
- ...n ? { scheme: n } : {},
14
- ...t ? { statement: t } : {}
15
- };
1
+ import { isAddress as f } from "./index131.js";
2
+ import { isAddressEqual as o } from "./index141.js";
3
+ function l(n) {
4
+ const { address: r, domain: s, message: e, nonce: t, scheme: a, time: i = /* @__PURE__ */ new Date() } = n;
5
+ if (s && e.domain !== s || t && e.nonce !== t || a && e.scheme !== a || e.expirationTime && i >= e.expirationTime || e.notBefore && i < e.notBefore)
6
+ return !1;
7
+ try {
8
+ if (!e.address || !f(e.address, { strict: !1 }) || r && !o(e.address, r))
9
+ return !1;
10
+ } catch {
11
+ return !1;
12
+ }
13
+ return !0;
16
14
  }
17
- const f = /^(?:(?<scheme>[a-zA-Z][a-zA-Z0-9+-.]*):\/\/)?(?<domain>[a-zA-Z0-9+-.]*(?::[0-9]{1,5})?) (?:wants you to sign in with your Ethereum account:\n)(?<address>0x[a-fA-F0-9]{40})\n\n(?:(?<statement>.*)\n\n)?/, p = /(?:URI: (?<uri>.+))\n(?:Version: (?<version>.+))\n(?:Chain ID: (?<chainId>\d+))\n(?:Nonce: (?<nonce>[a-zA-Z0-9]+))\n(?:Issued At: (?<issuedAt>.+))(?:\nExpiration Time: (?<expirationTime>.+))?(?:\nNot Before: (?<notBefore>.+))?(?:\nRequest ID: (?<requestId>.+))?/;
18
15
  export {
19
- x as parseSiweMessage
16
+ l as validateSiweMessage
20
17
  };
@@ -1,17 +1,14 @@
1
- import { isAddress as f } from "./index131.js";
2
- import { isAddressEqual as o } from "./index141.js";
3
- function l(n) {
4
- const { address: r, domain: s, message: e, nonce: t, scheme: a, time: i = /* @__PURE__ */ new Date() } = n;
5
- if (s && e.domain !== s || t && e.nonce !== t || a && e.scheme !== a || e.expirationTime && i >= e.expirationTime || e.notBefore && i < e.notBefore)
6
- return !1;
7
- try {
8
- if (!e.address || !f(e.address, { strict: !1 }) || r && !o(e.address, r))
9
- return !1;
10
- } catch {
11
- return !1;
12
- }
13
- return !0;
1
+ import { LruMap as u } from "./index179.js";
2
+ const t = /* @__PURE__ */ new u(8192);
3
+ function s(r, { enabled: o = !0, id: e }) {
4
+ if (!o || !e)
5
+ return r();
6
+ if (t.get(e))
7
+ return t.get(e);
8
+ const n = r().finally(() => t.delete(e));
9
+ return t.set(e, n), n;
14
10
  }
15
11
  export {
16
- l as validateSiweMessage
12
+ t as promiseCache,
13
+ s as withDedupe
17
14
  };
@@ -1,5 +1,5 @@
1
1
  import { normalizeSignature as o } from "./index237.js";
2
- import { formatAbiItem as n } from "./index197.js";
2
+ import { formatAbiItem as n } from "./index192.js";
3
3
  const m = (r) => {
4
4
  const t = typeof r == "string" ? r : n(r);
5
5
  return o(t);
@@ -1,7 +1,7 @@
1
- import { toRpc as $ } from "./index216.js";
1
+ import { toRpc as $ } from "./index215.js";
2
2
  import { parseAccount as W } from "./index11.js";
3
3
  import { multicall3Abi as O } from "./index72.js";
4
- import { aggregate3Signature as I } from "./index217.js";
4
+ import { aggregate3Signature as I } from "./index216.js";
5
5
  import { deploylessCallViaBytecodeBytecode as J, deploylessCallViaFactoryBytecode as K } from "./index74.js";
6
6
  import { BaseError as N } from "./index82.js";
7
7
  import { ClientChainNotConfiguredError as P, ChainDoesNotSupportContract as Q } from "./index97.js";
@@ -11,13 +11,13 @@ import { encodeDeployData as T } from "./index134.js";
11
11
  import { encodeFunctionData as Z } from "./index137.js";
12
12
  import { getChainContractAddress as tt } from "./index173.js";
13
13
  import { numberToHex as V } from "./index109.js";
14
- import { getCallError as at } from "./index218.js";
15
- import { extract as et } from "./index219.js";
14
+ import { getCallError as at } from "./index217.js";
15
+ import { extract as et } from "./index218.js";
16
16
  import { formatTransactionRequest as rt } from "./index144.js";
17
17
  import { createBatchScheduler as ot } from "./index15.js";
18
- import { serializeStateOverride as ct } from "./index220.js";
18
+ import { serializeStateOverride as ct } from "./index219.js";
19
19
  import { assertRequest as nt } from "./index157.js";
20
- import { parseAbi as z } from "./index201.js";
20
+ import { parseAbi as z } from "./index196.js";
21
21
  async function Et(t, a) {
22
22
  const { account: e = t.account, authorizationList: n, batch: r = !!t.batch?.multicall, blockNumber: m, blockTag: C = t.experimental_blockTag ?? "latest", accessList: x, blobs: D, blockOverrides: d, code: p, data: o, factory: u, factoryData: s, gas: B, gasPrice: b, maxFeePerBlobGas: h, maxFeePerGas: y, maxPriorityFeePerGas: g, nonce: k, to: f, value: H, stateOverride: L, ...j } = a, R = e ? W(e) : void 0;
23
23
  if (p && (u || s))
@@ -1,19 +1,6 @@
1
- import { concatHex as i } from "./index113.js";
2
- import { hexToBytes as m } from "./index108.js";
3
- import { numberToHex as c } from "./index109.js";
4
- import { toRlp as d } from "./index154.js";
5
- import { keccak256 as f } from "./index110.js";
6
- function b(o) {
7
- const { chainId: t, nonce: r, to: s } = o, e = o.contractAddress ?? o.address, n = f(i([
8
- "0x05",
9
- d([
10
- t ? c(t) : "0x",
11
- e,
12
- r ? c(r) : "0x"
13
- ])
14
- ]));
15
- return s === "bytes" ? m(n) : n;
1
+ function n(e) {
2
+ return `[${e.slice(2)}]`;
16
3
  }
17
4
  export {
18
- b as hashAuthorization
5
+ n as encodeLabelhash
19
6
  };
@@ -1,6 +1,139 @@
1
- function n(e) {
2
- return `[${e.slice(2)}]`;
1
+ import { readContract as w } from "./index55.js";
2
+ import { EnsAvatarUriResolutionError as d, EnsAvatarInvalidNftUriError as p, EnsAvatarUnsupportedNamespaceError as I, EnsAvatarInvalidMetadataError as y } from "./index99.js";
3
+ const v = /(?<protocol>https?:\/\/[^\/]*|ipfs:\/|ipns:\/|ar:\/)?(?<root>\/)?(?<subpath>ipfs\/|ipns\/)?(?<target>[\w\-.]+)(?<subtarget>\/.*)?/, A = /^(Qm[1-9A-HJ-NP-Za-km-z]{44,}|b[A-Za-z2-7]{58,}|B[A-Z2-7]{58,}|z[1-9A-HJ-NP-Za-km-z]{48,}|F[0-9A-F]{50,})(\/(?<target>[\w\-.]+))?(?<subtarget>\/.*)?$/, b = /^data:([a-zA-Z\-/+]*);base64,([^"].*)/, E = /^data:([a-zA-Z\-/+]*)?(;[a-zA-Z0-9].*?)?(,)/;
4
+ async function k(e) {
5
+ try {
6
+ const t = await fetch(e, { method: "HEAD" });
7
+ return t.status === 200 ? t.headers.get("content-type")?.startsWith("image/") : !1;
8
+ } catch (t) {
9
+ return typeof t == "object" && typeof t.response < "u" || !globalThis.hasOwnProperty("Image") ? !1 : new Promise((n) => {
10
+ const a = new Image();
11
+ a.onload = () => {
12
+ n(!0);
13
+ }, a.onerror = () => {
14
+ n(!1);
15
+ }, a.src = e;
16
+ });
17
+ }
18
+ }
19
+ function l(e, t) {
20
+ return e ? e.endsWith("/") ? e.slice(0, -1) : e : t;
21
+ }
22
+ function C({ uri: e, gatewayUrls: t }) {
23
+ const n = b.test(e);
24
+ if (n)
25
+ return { uri: e, isOnChain: !0, isEncoded: n };
26
+ const a = l(t?.ipfs, "https://ipfs.io"), r = l(t?.arweave, "https://arweave.net"), f = e.match(v), { protocol: i, subpath: c, target: s, subtarget: h = "" } = f?.groups || {}, u = i === "ipns:/" || c === "ipns/", m = i === "ipfs:/" || c === "ipfs/" || A.test(e);
27
+ if (e.startsWith("http") && !u && !m) {
28
+ let g = e;
29
+ return t?.arweave && (g = e.replace(/https:\/\/arweave.net/g, t?.arweave)), { uri: g, isOnChain: !1, isEncoded: !1 };
30
+ }
31
+ if ((u || m) && s)
32
+ return {
33
+ uri: `${a}/${u ? "ipns" : "ipfs"}/${s}${h}`,
34
+ isOnChain: !1,
35
+ isEncoded: !1
36
+ };
37
+ if (i === "ar:/" && s)
38
+ return {
39
+ uri: `${r}/${s}${h || ""}`,
40
+ isOnChain: !1,
41
+ isEncoded: !1
42
+ };
43
+ let o = e.replace(E, "");
44
+ if (o.startsWith("<svg") && (o = `data:image/svg+xml;base64,${btoa(o)}`), o.startsWith("data:") || o.startsWith("{"))
45
+ return {
46
+ uri: o,
47
+ isOnChain: !0,
48
+ isEncoded: !1
49
+ };
50
+ throw new d({ uri: e });
51
+ }
52
+ function U(e) {
53
+ if (typeof e != "object" || !("image" in e) && !("image_url" in e) && !("image_data" in e))
54
+ throw new y({ data: e });
55
+ return e.image || e.image_url || e.image_data;
56
+ }
57
+ async function $({ gatewayUrls: e, uri: t }) {
58
+ try {
59
+ const n = await fetch(t).then((r) => r.json());
60
+ return await R({
61
+ gatewayUrls: e,
62
+ uri: U(n)
63
+ });
64
+ } catch {
65
+ throw new d({ uri: t });
66
+ }
67
+ }
68
+ async function R({ gatewayUrls: e, uri: t }) {
69
+ const { uri: n, isOnChain: a } = C({ uri: t, gatewayUrls: e });
70
+ if (a || await k(n))
71
+ return n;
72
+ throw new d({ uri: t });
73
+ }
74
+ function D(e) {
75
+ let t = e;
76
+ t.startsWith("did:nft:") && (t = t.replace("did:nft:", "").replace(/_/g, "/"));
77
+ const [n, a, r] = t.split("/"), [f, i] = n.split(":"), [c, s] = a.split(":");
78
+ if (!f || f.toLowerCase() !== "eip155")
79
+ throw new p({ reason: "Only EIP-155 supported" });
80
+ if (!i)
81
+ throw new p({ reason: "Chain ID not found" });
82
+ if (!s)
83
+ throw new p({
84
+ reason: "Contract address not found"
85
+ });
86
+ if (!r)
87
+ throw new p({ reason: "Token ID not found" });
88
+ if (!c)
89
+ throw new p({ reason: "ERC namespace not found" });
90
+ return {
91
+ chainID: Number.parseInt(i),
92
+ namespace: c.toLowerCase(),
93
+ contractAddress: s,
94
+ tokenID: r
95
+ };
96
+ }
97
+ async function O(e, { nft: t }) {
98
+ if (t.namespace === "erc721")
99
+ return w(e, {
100
+ address: t.contractAddress,
101
+ abi: [
102
+ {
103
+ name: "tokenURI",
104
+ type: "function",
105
+ stateMutability: "view",
106
+ inputs: [{ name: "tokenId", type: "uint256" }],
107
+ outputs: [{ name: "", type: "string" }]
108
+ }
109
+ ],
110
+ functionName: "tokenURI",
111
+ args: [BigInt(t.tokenID)]
112
+ });
113
+ if (t.namespace === "erc1155")
114
+ return w(e, {
115
+ address: t.contractAddress,
116
+ abi: [
117
+ {
118
+ name: "uri",
119
+ type: "function",
120
+ stateMutability: "view",
121
+ inputs: [{ name: "_id", type: "uint256" }],
122
+ outputs: [{ name: "", type: "string" }]
123
+ }
124
+ ],
125
+ functionName: "uri",
126
+ args: [BigInt(t.tokenID)]
127
+ });
128
+ throw new I({ namespace: t.namespace });
3
129
  }
4
130
  export {
5
- n as encodeLabelhash
131
+ l as getGateway,
132
+ U as getJsonImage,
133
+ $ as getMetadataAvatarUri,
134
+ O as getNftTokenUri,
135
+ k as isImageUri,
136
+ R as parseAvatarUri,
137
+ D as parseNftUri,
138
+ C as resolveAvatarUri
6
139
  };
@@ -1,139 +1,158 @@
1
- import { readContract as w } from "./index55.js";
2
- import { EnsAvatarUriResolutionError as d, EnsAvatarInvalidNftUriError as p, EnsAvatarUnsupportedNamespaceError as I, EnsAvatarInvalidMetadataError as y } from "./index99.js";
3
- const v = /(?<protocol>https?:\/\/[^\/]*|ipfs:\/|ipns:\/|ar:\/)?(?<root>\/)?(?<subpath>ipfs\/|ipns\/)?(?<target>[\w\-.]+)(?<subtarget>\/.*)?/, A = /^(Qm[1-9A-HJ-NP-Za-km-z]{44,}|b[A-Za-z2-7]{58,}|B[A-Z2-7]{58,}|z[1-9A-HJ-NP-Za-km-z]{48,}|F[0-9A-F]{50,})(\/(?<target>[\w\-.]+))?(?<subtarget>\/.*)?$/, b = /^data:([a-zA-Z\-/+]*);base64,([^"].*)/, E = /^data:([a-zA-Z\-/+]*)?(;[a-zA-Z0-9].*?)?(,)/;
4
- async function k(e) {
1
+ import { BaseError as o } from "./index257.js";
2
+ import { stringify as b } from "./index258.js";
3
+ import { pad as d, assertEndOffset as m, assertSize as g, assertStartOffset as p } from "./index259.js";
4
+ const $ = /* @__PURE__ */ new TextEncoder(), h = /* @__PURE__ */ Array.from({ length: 256 }, (t, e) => e.toString(16).padStart(2, "0"));
5
+ function y(t, e = {}) {
6
+ const { strict: r = !1 } = e;
7
+ if (!t)
8
+ throw new f(t);
9
+ if (typeof t != "string")
10
+ throw new f(t);
11
+ if (r && !/^0x[0-9a-fA-F]*$/.test(t))
12
+ throw new l(t);
13
+ if (!t.startsWith("0x"))
14
+ throw new l(t);
15
+ }
16
+ function B(...t) {
17
+ return `0x${t.reduce((e, r) => e + r.replace("0x", ""), "")}`;
18
+ }
19
+ function P(t, e = {}) {
20
+ const r = `0x${Number(t)}`;
21
+ return typeof e.size == "number" ? (g(r, e.size), x(r, e.size)) : r;
22
+ }
23
+ function w(t, e = {}) {
24
+ let r = "";
25
+ for (let i = 0; i < t.length; i++)
26
+ r += h[t[i]];
27
+ const n = `0x${r}`;
28
+ return typeof e.size == "number" ? (g(n, e.size), E(n, e.size)) : n;
29
+ }
30
+ function V(t, e = {}) {
31
+ const { signed: r, size: n } = e, i = BigInt(t);
32
+ let s;
33
+ n ? r ? s = (1n << BigInt(n) * 8n - 1n) - 1n : s = 2n ** (BigInt(n) * 8n) - 1n : typeof t == "number" && (s = BigInt(Number.MAX_SAFE_INTEGER));
34
+ const u = typeof s == "bigint" && r ? -s - 1n : 0;
35
+ if (s && i > s || i < u) {
36
+ const a = typeof t == "bigint" ? "n" : "";
37
+ throw new O({
38
+ max: s ? `${s}${a}` : void 0,
39
+ min: `${u}${a}`,
40
+ signed: r,
41
+ size: n,
42
+ value: `${t}${a}`
43
+ });
44
+ }
45
+ const c = `0x${(r && i < 0 ? (1n << BigInt(n * 8)) + BigInt(i) : i).toString(16)}`;
46
+ return n ? x(c, n) : c;
47
+ }
48
+ function j(t, e = {}) {
49
+ return w($.encode(t), e);
50
+ }
51
+ function x(t, e) {
52
+ return d(t, { dir: "left", size: e });
53
+ }
54
+ function E(t, e) {
55
+ return d(t, { dir: "right", size: e });
56
+ }
57
+ function v(t, e, r, n = {}) {
58
+ const { strict: i } = n;
59
+ p(t, e);
60
+ const s = `0x${t.replace("0x", "").slice((e ?? 0) * 2, (r ?? t.length) * 2)}`;
61
+ return i && m(s, e, r), s;
62
+ }
63
+ function A(t) {
64
+ return Math.ceil((t.length - 2) / 2);
65
+ }
66
+ function N(t, e = {}) {
67
+ const { strict: r = !1 } = e;
5
68
  try {
6
- const t = await fetch(e, { method: "HEAD" });
7
- return t.status === 200 ? t.headers.get("content-type")?.startsWith("image/") : !1;
8
- } catch (t) {
9
- return typeof t == "object" && typeof t.response < "u" || !globalThis.hasOwnProperty("Image") ? !1 : new Promise((n) => {
10
- const a = new Image();
11
- a.onload = () => {
12
- n(!0);
13
- }, a.onerror = () => {
14
- n(!1);
15
- }, a.src = e;
69
+ return y(t, { strict: r }), !0;
70
+ } catch {
71
+ return !1;
72
+ }
73
+ }
74
+ class O extends o {
75
+ constructor({ max: e, min: r, signed: n, size: i, value: s }) {
76
+ super(`Number \`${s}\` is not in safe${i ? ` ${i * 8}-bit` : ""}${n ? " signed" : " unsigned"} integer range ${e ? `(\`${r}\` to \`${e}\`)` : `(above \`${r}\`)`}`), Object.defineProperty(this, "name", {
77
+ enumerable: !0,
78
+ configurable: !0,
79
+ writable: !0,
80
+ value: "Hex.IntegerOutOfRangeError"
16
81
  });
17
82
  }
18
83
  }
19
- function l(e, t) {
20
- return e ? e.endsWith("/") ? e.slice(0, -1) : e : t;
21
- }
22
- function C({ uri: e, gatewayUrls: t }) {
23
- const n = b.test(e);
24
- if (n)
25
- return { uri: e, isOnChain: !0, isEncoded: n };
26
- const a = l(t?.ipfs, "https://ipfs.io"), r = l(t?.arweave, "https://arweave.net"), f = e.match(v), { protocol: i, subpath: c, target: s, subtarget: h = "" } = f?.groups || {}, u = i === "ipns:/" || c === "ipns/", m = i === "ipfs:/" || c === "ipfs/" || A.test(e);
27
- if (e.startsWith("http") && !u && !m) {
28
- let g = e;
29
- return t?.arweave && (g = e.replace(/https:\/\/arweave.net/g, t?.arweave)), { uri: g, isOnChain: !1, isEncoded: !1 };
84
+ class f extends o {
85
+ constructor(e) {
86
+ super(`Value \`${typeof e == "object" ? b(e) : e}\` of type \`${typeof e}\` is an invalid hex type.`, {
87
+ metaMessages: ['Hex types must be represented as `"0x${string}"`.']
88
+ }), Object.defineProperty(this, "name", {
89
+ enumerable: !0,
90
+ configurable: !0,
91
+ writable: !0,
92
+ value: "Hex.InvalidHexTypeError"
93
+ });
30
94
  }
31
- if ((u || m) && s)
32
- return {
33
- uri: `${a}/${u ? "ipns" : "ipfs"}/${s}${h}`,
34
- isOnChain: !1,
35
- isEncoded: !1
36
- };
37
- if (i === "ar:/" && s)
38
- return {
39
- uri: `${r}/${s}${h || ""}`,
40
- isOnChain: !1,
41
- isEncoded: !1
42
- };
43
- let o = e.replace(E, "");
44
- if (o.startsWith("<svg") && (o = `data:image/svg+xml;base64,${btoa(o)}`), o.startsWith("data:") || o.startsWith("{"))
45
- return {
46
- uri: o,
47
- isOnChain: !0,
48
- isEncoded: !1
49
- };
50
- throw new d({ uri: e });
51
- }
52
- function U(e) {
53
- if (typeof e != "object" || !("image" in e) && !("image_url" in e) && !("image_data" in e))
54
- throw new y({ data: e });
55
- return e.image || e.image_url || e.image_data;
56
- }
57
- async function $({ gatewayUrls: e, uri: t }) {
58
- try {
59
- const n = await fetch(t).then((r) => r.json());
60
- return await R({
61
- gatewayUrls: e,
62
- uri: U(n)
95
+ }
96
+ class l extends o {
97
+ constructor(e) {
98
+ super(`Value \`${e}\` is an invalid hex value.`, {
99
+ metaMessages: [
100
+ 'Hex values must start with `"0x"` and contain only hexadecimal characters (0-9, a-f, A-F).'
101
+ ]
102
+ }), Object.defineProperty(this, "name", {
103
+ enumerable: !0,
104
+ configurable: !0,
105
+ writable: !0,
106
+ value: "Hex.InvalidHexValueError"
63
107
  });
64
- } catch {
65
- throw new d({ uri: t });
66
108
  }
67
109
  }
68
- async function R({ gatewayUrls: e, uri: t }) {
69
- const { uri: n, isOnChain: a } = C({ uri: t, gatewayUrls: e });
70
- if (a || await k(n))
71
- return n;
72
- throw new d({ uri: t });
73
- }
74
- function D(e) {
75
- let t = e;
76
- t.startsWith("did:nft:") && (t = t.replace("did:nft:", "").replace(/_/g, "/"));
77
- const [n, a, r] = t.split("/"), [f, i] = n.split(":"), [c, s] = a.split(":");
78
- if (!f || f.toLowerCase() !== "eip155")
79
- throw new p({ reason: "Only EIP-155 supported" });
80
- if (!i)
81
- throw new p({ reason: "Chain ID not found" });
82
- if (!s)
83
- throw new p({
84
- reason: "Contract address not found"
110
+ class _ extends o {
111
+ constructor({ givenSize: e, maxSize: r }) {
112
+ super(`Size cannot exceed \`${r}\` bytes. Given size: \`${e}\` bytes.`), Object.defineProperty(this, "name", {
113
+ enumerable: !0,
114
+ configurable: !0,
115
+ writable: !0,
116
+ value: "Hex.SizeOverflowError"
85
117
  });
86
- if (!r)
87
- throw new p({ reason: "Token ID not found" });
88
- if (!c)
89
- throw new p({ reason: "ERC namespace not found" });
90
- return {
91
- chainID: Number.parseInt(i),
92
- namespace: c.toLowerCase(),
93
- contractAddress: s,
94
- tokenID: r
95
- };
96
- }
97
- async function O(e, { nft: t }) {
98
- if (t.namespace === "erc721")
99
- return w(e, {
100
- address: t.contractAddress,
101
- abi: [
102
- {
103
- name: "tokenURI",
104
- type: "function",
105
- stateMutability: "view",
106
- inputs: [{ name: "tokenId", type: "uint256" }],
107
- outputs: [{ name: "", type: "string" }]
108
- }
109
- ],
110
- functionName: "tokenURI",
111
- args: [BigInt(t.tokenID)]
118
+ }
119
+ }
120
+ class M extends o {
121
+ constructor({ offset: e, position: r, size: n }) {
122
+ super(`Slice ${r === "start" ? "starting" : "ending"} at offset \`${e}\` is out-of-bounds (size: \`${n}\`).`), Object.defineProperty(this, "name", {
123
+ enumerable: !0,
124
+ configurable: !0,
125
+ writable: !0,
126
+ value: "Hex.SliceOffsetOutOfBoundsError"
112
127
  });
113
- if (t.namespace === "erc1155")
114
- return w(e, {
115
- address: t.contractAddress,
116
- abi: [
117
- {
118
- name: "uri",
119
- type: "function",
120
- stateMutability: "view",
121
- inputs: [{ name: "_id", type: "uint256" }],
122
- outputs: [{ name: "", type: "string" }]
123
- }
124
- ],
125
- functionName: "uri",
126
- args: [BigInt(t.tokenID)]
128
+ }
129
+ }
130
+ class R extends o {
131
+ constructor({ size: e, targetSize: r, type: n }) {
132
+ super(`${n.charAt(0).toUpperCase()}${n.slice(1).toLowerCase()} size (\`${e}\`) exceeds padding size (\`${r}\`).`), Object.defineProperty(this, "name", {
133
+ enumerable: !0,
134
+ configurable: !0,
135
+ writable: !0,
136
+ value: "Hex.SizeExceedsPaddingSizeError"
127
137
  });
128
- throw new I({ namespace: t.namespace });
138
+ }
129
139
  }
130
140
  export {
131
- l as getGateway,
132
- U as getJsonImage,
133
- $ as getMetadataAvatarUri,
134
- O as getNftTokenUri,
135
- k as isImageUri,
136
- R as parseAvatarUri,
137
- D as parseNftUri,
138
- C as resolveAvatarUri
141
+ O as IntegerOutOfRangeError,
142
+ f as InvalidHexTypeError,
143
+ l as InvalidHexValueError,
144
+ R as SizeExceedsPaddingSizeError,
145
+ _ as SizeOverflowError,
146
+ M as SliceOffsetOutOfBoundsError,
147
+ y as assert,
148
+ B as concat,
149
+ P as fromBoolean,
150
+ w as fromBytes,
151
+ V as fromNumber,
152
+ j as fromString,
153
+ x as padLeft,
154
+ E as padRight,
155
+ A as size,
156
+ v as slice,
157
+ N as validate
139
158
  };