anymal-protocol 1.0.97 → 1.0.99

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.mts CHANGED
@@ -274,6 +274,7 @@ interface ActionRecord {
274
274
  claimedAt?: string | null;
275
275
  claimQuantity?: number | null;
276
276
  failure_reason?: string | null;
277
+ campaignStatus: string | null;
277
278
  }
278
279
  interface ActionDefinition {
279
280
  id: string;
package/dist/index.d.ts CHANGED
@@ -274,6 +274,7 @@ interface ActionRecord {
274
274
  claimedAt?: string | null;
275
275
  claimQuantity?: number | null;
276
276
  failure_reason?: string | null;
277
+ campaignStatus: string | null;
277
278
  }
278
279
  interface ActionDefinition {
279
280
  id: string;
package/dist/index.js CHANGED
@@ -1740,7 +1740,6 @@ function useApproveKibbleToken() {
1740
1740
  // amount to approve
1741
1741
  ]
1742
1742
  });
1743
- console.log("About to call sendUserOperation");
1744
1743
  const userOpHash = await bundlerClient.sendUserOperation({
1745
1744
  account: smartAccount,
1746
1745
  calls: [
@@ -1752,14 +1751,11 @@ function useApproveKibbleToken() {
1752
1751
  maxPriorityFeePerGas: (0, import_viem3.parseGwei)("0.001")
1753
1752
  // maxFeePerGas: parseGwei("0.01"),
1754
1753
  });
1755
- console.log("sendUserOperation has been called");
1756
- console.log("About to call waitForUserOperationReceipt");
1757
1754
  await bundlerClient.waitForUserOperationReceipt({
1758
1755
  hash: userOpHash,
1759
1756
  timeout: 3e4,
1760
1757
  retryCount: 10
1761
1758
  });
1762
- console.log("waitForUserOperationReceipt has been called");
1763
1759
  return {
1764
1760
  success: true,
1765
1761
  message: "Approval transaction completed successfully."
@@ -2226,7 +2222,8 @@ var convertToActionRecord = (fr) => {
2226
2222
  claimIndex: fr.claimIndex ?? null,
2227
2223
  claimedAt: fr.claimedAt ?? null,
2228
2224
  claimQuantity: fr.claimQuantity ?? null,
2229
- failure_reason: fr.failure_reason ?? null
2225
+ failure_reason: fr.failure_reason ?? null,
2226
+ campaignStatus: fr.campaignStatus ?? null
2230
2227
  };
2231
2228
  };
2232
2229
  var convertToActionDefinition = (fr) => {
@@ -2486,7 +2483,8 @@ function useSubmitContractAction() {
2486
2483
  clientInfo: {
2487
2484
  userAgent: navigator.userAgent,
2488
2485
  locale: navigator.language
2489
- }
2486
+ },
2487
+ referral: payload.referral
2490
2488
  };
2491
2489
  switch (payload.source) {
2492
2490
  case "GRAPHQL" /* GRAPHQL */:
package/dist/index.mjs CHANGED
@@ -1677,7 +1677,6 @@ function useApproveKibbleToken() {
1677
1677
  // amount to approve
1678
1678
  ]
1679
1679
  });
1680
- console.log("About to call sendUserOperation");
1681
1680
  const userOpHash = await bundlerClient.sendUserOperation({
1682
1681
  account: smartAccount,
1683
1682
  calls: [
@@ -1689,14 +1688,11 @@ function useApproveKibbleToken() {
1689
1688
  maxPriorityFeePerGas: parseGwei3("0.001")
1690
1689
  // maxFeePerGas: parseGwei("0.01"),
1691
1690
  });
1692
- console.log("sendUserOperation has been called");
1693
- console.log("About to call waitForUserOperationReceipt");
1694
1691
  await bundlerClient.waitForUserOperationReceipt({
1695
1692
  hash: userOpHash,
1696
1693
  timeout: 3e4,
1697
1694
  retryCount: 10
1698
1695
  });
1699
- console.log("waitForUserOperationReceipt has been called");
1700
1696
  return {
1701
1697
  success: true,
1702
1698
  message: "Approval transaction completed successfully."
@@ -2083,7 +2079,8 @@ var convertToActionRecord = (fr) => {
2083
2079
  claimIndex: fr.claimIndex ?? null,
2084
2080
  claimedAt: fr.claimedAt ?? null,
2085
2081
  claimQuantity: fr.claimQuantity ?? null,
2086
- failure_reason: fr.failure_reason ?? null
2082
+ failure_reason: fr.failure_reason ?? null,
2083
+ campaignStatus: fr.campaignStatus ?? null
2087
2084
  };
2088
2085
  };
2089
2086
  var convertToActionDefinition = (fr) => {
@@ -2343,7 +2340,8 @@ function useSubmitContractAction() {
2343
2340
  clientInfo: {
2344
2341
  userAgent: navigator.userAgent,
2345
2342
  locale: navigator.language
2346
- }
2343
+ },
2344
+ referral: payload.referral
2347
2345
  };
2348
2346
  switch (payload.source) {
2349
2347
  case "GRAPHQL" /* GRAPHQL */:
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "anymal-protocol",
3
- "version": "1.0.97",
3
+ "version": "1.0.99",
4
4
  "description": "A React/TypeScript-based utility library for reusable functions and hooks inside of the Anymal Ecosystem.",
5
5
  "main": "dist/index.js",
6
6
  "bin": {
@@ -1,93 +0,0 @@
1
- var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, {
2
- get: (a, b) => (typeof require !== "undefined" ? require : a)[b]
3
- }) : x)(function(x) {
4
- if (typeof require !== "undefined") return require.apply(this, arguments);
5
- throw Error('Dynamic require of "' + x + '" is not supported');
6
- });
7
-
8
- // src/helpers/CryptoUtils.tsx
9
- import { ec as EC } from "elliptic";
10
- var ec = new EC("secp256k1");
11
- var Network = /* @__PURE__ */ ((Network2) => {
12
- Network2["Testnet"] = "testnet";
13
- Network2["Localnet"] = "localnet";
14
- return Network2;
15
- })(Network || {});
16
- var NETWORK_HOSTS = {
17
- ["testnet" /* Testnet */]: "https://dev-db.petastic.com",
18
- ["localnet" /* Localnet */]: "http://host.docker.internal:9181"
19
- };
20
- function loadExistingSecp256k1PrivateKey(hexKey) {
21
- if (!hexKey) {
22
- throw new Error("Private key hex must be provided");
23
- }
24
- return ec.keyFromPrivate(hexKey, "hex");
25
- }
26
- function serializePublicKeyCompressed(keyPair) {
27
- return keyPair.getPublic(true, "hex");
28
- }
29
- function base64url(input) {
30
- let buf;
31
- if (typeof input === "string") buf = Buffer.from(input);
32
- else if (input instanceof ArrayBuffer) buf = Buffer.from(input);
33
- else buf = input;
34
- return buf.toString("base64").replace(/=/g, "").replace(/\+/g, "-").replace(/\//g, "_");
35
- }
36
- function sha256HashNode(data) {
37
- const { createHash } = __require("crypto");
38
- return createHash("sha256").update(data).digest();
39
- }
40
- async function hashInput(data) {
41
- if (typeof window !== "undefined" && window.crypto?.subtle) {
42
- const encoder = new TextEncoder();
43
- const encoded = encoder.encode(data);
44
- const hashBuffer = await window.crypto.subtle.digest("SHA-256", encoded);
45
- return Buffer.from(hashBuffer);
46
- } else {
47
- return sha256HashNode(data);
48
- }
49
- }
50
- async function generateJWT(sub, aud, keyPair, expiresInSeconds = 24 * 60 * 60) {
51
- const iat = Math.floor(Date.now() / 1e3);
52
- const exp = iat + expiresInSeconds;
53
- const header = { alg: "ES256", typ: "JWT" };
54
- const payload = { sub, aud, iat, exp };
55
- const encodedHeader = base64url(JSON.stringify(header));
56
- const encodedPayload = base64url(JSON.stringify(payload));
57
- const signingInput = `${encodedHeader}.${encodedPayload}`;
58
- const hash = await hashInput(signingInput);
59
- const signature = keyPair.sign(hash, { canonical: true });
60
- const rBuf = signature.r.toArrayLike(Buffer, "be", 32);
61
- const sBuf = signature.s.toArrayLike(Buffer, "be", 32);
62
- const rawSig = Buffer.concat([rBuf, sBuf]);
63
- const encodedSig = base64url(rawSig);
64
- return `${signingInput}.${encodedSig}`;
65
- }
66
- async function createAuthEnvelope(privateKeyHex, network = "testnet" /* Testnet */, options) {
67
- const keyPair = loadExistingSecp256k1PrivateKey(privateKeyHex);
68
- const publicKey = serializePublicKeyCompressed(keyPair);
69
- const host = NETWORK_HOSTS[network];
70
- if (!host) {
71
- throw new Error(`Unsupported network: ${network}`);
72
- }
73
- const token = await generateJWT(publicKey, host, keyPair, options?.expiresInSeconds);
74
- return { publicKey, token };
75
- }
76
- async function generateAppSignature(privateKeyHex, clientId, redirectUri, state) {
77
- const keyPair = loadExistingSecp256k1PrivateKey(privateKeyHex);
78
- const message = `${clientId}:${redirectUri}:${state}`;
79
- const hash = await hashInput(message);
80
- const signatureDER = keyPair.sign(hash, { canonical: true }).toDER();
81
- return Buffer.from(signatureDER).toString("hex");
82
- }
83
-
84
- export {
85
- __require,
86
- Network,
87
- NETWORK_HOSTS,
88
- loadExistingSecp256k1PrivateKey,
89
- serializePublicKeyCompressed,
90
- generateJWT,
91
- createAuthEnvelope,
92
- generateAppSignature
93
- };
@@ -1,93 +0,0 @@
1
- var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, {
2
- get: (a, b) => (typeof require !== "undefined" ? require : a)[b]
3
- }) : x)(function(x) {
4
- if (typeof require !== "undefined") return require.apply(this, arguments);
5
- throw Error('Dynamic require of "' + x + '" is not supported');
6
- });
7
-
8
- // src/helpers/CryptoUtils.tsx
9
- import { ec as EC } from "elliptic";
10
- var ec = new EC("secp256k1");
11
- var Network = /* @__PURE__ */ ((Network2) => {
12
- Network2["Testnet"] = "testnet";
13
- Network2["Localnet"] = "localnet";
14
- return Network2;
15
- })(Network || {});
16
- var NETWORK_HOSTS = {
17
- ["testnet" /* Testnet */]: "https://dev-db.petastic.com",
18
- ["localnet" /* Localnet */]: "http://docker.host.internal:9181"
19
- };
20
- function loadExistingSecp256k1PrivateKey(hexKey) {
21
- if (!hexKey) {
22
- throw new Error("Private key hex must be provided");
23
- }
24
- return ec.keyFromPrivate(hexKey, "hex");
25
- }
26
- function serializePublicKeyCompressed(keyPair) {
27
- return keyPair.getPublic(true, "hex");
28
- }
29
- function base64url(input) {
30
- let buf;
31
- if (typeof input === "string") buf = Buffer.from(input);
32
- else if (input instanceof ArrayBuffer) buf = Buffer.from(input);
33
- else buf = input;
34
- return buf.toString("base64").replace(/=/g, "").replace(/\+/g, "-").replace(/\//g, "_");
35
- }
36
- function sha256HashNode(data) {
37
- const { createHash } = __require("crypto");
38
- return createHash("sha256").update(data).digest();
39
- }
40
- async function hashInput(data) {
41
- if (typeof window !== "undefined" && window.crypto?.subtle) {
42
- const encoder = new TextEncoder();
43
- const encoded = encoder.encode(data);
44
- const hashBuffer = await window.crypto.subtle.digest("SHA-256", encoded);
45
- return Buffer.from(hashBuffer);
46
- } else {
47
- return sha256HashNode(data);
48
- }
49
- }
50
- async function generateJWT(sub, aud, keyPair, expiresInSeconds = 24 * 60 * 60) {
51
- const iat = Math.floor(Date.now() / 1e3);
52
- const exp = iat + expiresInSeconds;
53
- const header = { alg: "ES256", typ: "JWT" };
54
- const payload = { sub, aud, iat, exp };
55
- const encodedHeader = base64url(JSON.stringify(header));
56
- const encodedPayload = base64url(JSON.stringify(payload));
57
- const signingInput = `${encodedHeader}.${encodedPayload}`;
58
- const hash = await hashInput(signingInput);
59
- const signature = keyPair.sign(hash, { canonical: true });
60
- const rBuf = signature.r.toArrayLike(Buffer, "be", 32);
61
- const sBuf = signature.s.toArrayLike(Buffer, "be", 32);
62
- const rawSig = Buffer.concat([rBuf, sBuf]);
63
- const encodedSig = base64url(rawSig);
64
- return `${signingInput}.${encodedSig}`;
65
- }
66
- async function createAuthEnvelope(privateKeyHex, network = "testnet" /* Testnet */, options) {
67
- const keyPair = loadExistingSecp256k1PrivateKey(privateKeyHex);
68
- const publicKey = serializePublicKeyCompressed(keyPair);
69
- const host = NETWORK_HOSTS[network];
70
- if (!host) {
71
- throw new Error(`Unsupported network: ${network}`);
72
- }
73
- const token = await generateJWT(publicKey, host, keyPair, options?.expiresInSeconds);
74
- return { publicKey, token };
75
- }
76
- async function generateAppSignature(privateKeyHex, clientId, redirectUri, state) {
77
- const keyPair = loadExistingSecp256k1PrivateKey(privateKeyHex);
78
- const message = `${clientId}:${redirectUri}:${state}`;
79
- const hash = await hashInput(message);
80
- const signatureDER = keyPair.sign(hash, { canonical: true }).toDER();
81
- return Buffer.from(signatureDER).toString("hex");
82
- }
83
-
84
- export {
85
- __require,
86
- Network,
87
- NETWORK_HOSTS,
88
- loadExistingSecp256k1PrivateKey,
89
- serializePublicKeyCompressed,
90
- generateJWT,
91
- createAuthEnvelope,
92
- generateAppSignature
93
- };
@@ -1,91 +0,0 @@
1
- var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, {
2
- get: (a, b) => (typeof require !== "undefined" ? require : a)[b]
3
- }) : x)(function(x) {
4
- if (typeof require !== "undefined") return require.apply(this, arguments);
5
- throw Error('Dynamic require of "' + x + '" is not supported');
6
- });
7
-
8
- // src/helpers/CryptoUtils.tsx
9
- import { ec as EC } from "elliptic";
10
- var ec = new EC("secp256k1");
11
- var Network = /* @__PURE__ */ ((Network2) => {
12
- Network2["Testnet"] = "testnet";
13
- return Network2;
14
- })(Network || {});
15
- var NETWORK_HOSTS = {
16
- ["testnet" /* Testnet */]: "https://dev-db.petastic.com"
17
- };
18
- function loadExistingSecp256k1PrivateKey(hexKey) {
19
- if (!hexKey) {
20
- throw new Error("Private key hex must be provided");
21
- }
22
- return ec.keyFromPrivate(hexKey, "hex");
23
- }
24
- function serializePublicKeyCompressed(keyPair) {
25
- return keyPair.getPublic(true, "hex");
26
- }
27
- function base64url(input) {
28
- let buf;
29
- if (typeof input === "string") buf = Buffer.from(input);
30
- else if (input instanceof ArrayBuffer) buf = Buffer.from(input);
31
- else buf = input;
32
- return buf.toString("base64").replace(/=/g, "").replace(/\+/g, "-").replace(/\//g, "_");
33
- }
34
- function sha256HashNode(data) {
35
- const { createHash } = __require("crypto");
36
- return createHash("sha256").update(data).digest();
37
- }
38
- async function hashInput(data) {
39
- if (typeof window !== "undefined" && window.crypto?.subtle) {
40
- const encoder = new TextEncoder();
41
- const encoded = encoder.encode(data);
42
- const hashBuffer = await window.crypto.subtle.digest("SHA-256", encoded);
43
- return Buffer.from(hashBuffer);
44
- } else {
45
- return sha256HashNode(data);
46
- }
47
- }
48
- async function generateJWT(sub, aud, keyPair, expiresInSeconds = 24 * 60 * 60) {
49
- const iat = Math.floor(Date.now() / 1e3);
50
- const exp = iat + expiresInSeconds;
51
- const header = { alg: "ES256", typ: "JWT" };
52
- const payload = { sub, aud, iat, exp };
53
- const encodedHeader = base64url(JSON.stringify(header));
54
- const encodedPayload = base64url(JSON.stringify(payload));
55
- const signingInput = `${encodedHeader}.${encodedPayload}`;
56
- const hash = await hashInput(signingInput);
57
- const signature = keyPair.sign(hash, { canonical: true });
58
- const rBuf = signature.r.toArrayLike(Buffer, "be", 32);
59
- const sBuf = signature.s.toArrayLike(Buffer, "be", 32);
60
- const rawSig = Buffer.concat([rBuf, sBuf]);
61
- const encodedSig = base64url(rawSig);
62
- return `${signingInput}.${encodedSig}`;
63
- }
64
- async function createAuthEnvelope(privateKeyHex, network = "testnet" /* Testnet */, options) {
65
- const keyPair = loadExistingSecp256k1PrivateKey(privateKeyHex);
66
- const publicKey = serializePublicKeyCompressed(keyPair);
67
- const host = NETWORK_HOSTS[network];
68
- if (!host) {
69
- throw new Error(`Unsupported network: ${network}`);
70
- }
71
- const token = await generateJWT(publicKey, host, keyPair, options?.expiresInSeconds);
72
- return { publicKey, token };
73
- }
74
- async function generateAppSignature(privateKeyHex, clientId, redirectUri, state) {
75
- const keyPair = loadExistingSecp256k1PrivateKey(privateKeyHex);
76
- const message = `${clientId}:${redirectUri}:${state}`;
77
- const hash = await hashInput(message);
78
- const signatureDER = keyPair.sign(hash, { canonical: true }).toDER();
79
- return Buffer.from(signatureDER).toString("hex");
80
- }
81
-
82
- export {
83
- __require,
84
- Network,
85
- NETWORK_HOSTS,
86
- loadExistingSecp256k1PrivateKey,
87
- serializePublicKeyCompressed,
88
- generateJWT,
89
- createAuthEnvelope,
90
- generateAppSignature
91
- };
@@ -1,93 +0,0 @@
1
- var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, {
2
- get: (a, b) => (typeof require !== "undefined" ? require : a)[b]
3
- }) : x)(function(x) {
4
- if (typeof require !== "undefined") return require.apply(this, arguments);
5
- throw Error('Dynamic require of "' + x + '" is not supported');
6
- });
7
-
8
- // src/helpers/CryptoUtils.tsx
9
- import { ec as EC } from "elliptic";
10
- var ec = new EC("secp256k1");
11
- var Network = /* @__PURE__ */ ((Network2) => {
12
- Network2["Testnet"] = "testnet";
13
- Network2["Localnet"] = "localnet";
14
- return Network2;
15
- })(Network || {});
16
- var NETWORK_HOSTS = {
17
- ["testnet" /* Testnet */]: "dev-db.petastic.com",
18
- ["localnet" /* Localnet */]: "host.docker.internal:9181"
19
- };
20
- function loadExistingSecp256k1PrivateKey(hexKey) {
21
- if (!hexKey) {
22
- throw new Error("Private key hex must be provided");
23
- }
24
- return ec.keyFromPrivate(hexKey, "hex");
25
- }
26
- function serializePublicKeyCompressed(keyPair) {
27
- return keyPair.getPublic(true, "hex");
28
- }
29
- function base64url(input) {
30
- let buf;
31
- if (typeof input === "string") buf = Buffer.from(input);
32
- else if (input instanceof ArrayBuffer) buf = Buffer.from(input);
33
- else buf = input;
34
- return buf.toString("base64").replace(/=/g, "").replace(/\+/g, "-").replace(/\//g, "_");
35
- }
36
- function sha256HashNode(data) {
37
- const { createHash } = __require("crypto");
38
- return createHash("sha256").update(data).digest();
39
- }
40
- async function hashInput(data) {
41
- if (typeof window !== "undefined" && window.crypto?.subtle) {
42
- const encoder = new TextEncoder();
43
- const encoded = encoder.encode(data);
44
- const hashBuffer = await window.crypto.subtle.digest("SHA-256", encoded);
45
- return Buffer.from(hashBuffer);
46
- } else {
47
- return sha256HashNode(data);
48
- }
49
- }
50
- async function generateJWT(sub, aud, keyPair, expiresInSeconds = 24 * 60 * 60) {
51
- const iat = Math.floor(Date.now() / 1e3);
52
- const exp = iat + expiresInSeconds;
53
- const header = { alg: "ES256", typ: "JWT" };
54
- const payload = { sub, aud, iat, exp };
55
- const encodedHeader = base64url(JSON.stringify(header));
56
- const encodedPayload = base64url(JSON.stringify(payload));
57
- const signingInput = `${encodedHeader}.${encodedPayload}`;
58
- const hash = await hashInput(signingInput);
59
- const signature = keyPair.sign(hash, { canonical: true });
60
- const rBuf = signature.r.toArrayLike(Buffer, "be", 32);
61
- const sBuf = signature.s.toArrayLike(Buffer, "be", 32);
62
- const rawSig = Buffer.concat([rBuf, sBuf]);
63
- const encodedSig = base64url(rawSig);
64
- return `${signingInput}.${encodedSig}`;
65
- }
66
- async function createAuthEnvelope(privateKeyHex, network = "testnet" /* Testnet */, options) {
67
- const keyPair = loadExistingSecp256k1PrivateKey(privateKeyHex);
68
- const publicKey = serializePublicKeyCompressed(keyPair);
69
- const host = NETWORK_HOSTS[network];
70
- if (!host) {
71
- throw new Error(`Unsupported network: ${network}`);
72
- }
73
- const token = await generateJWT(publicKey, host, keyPair, options?.expiresInSeconds);
74
- return { publicKey, token };
75
- }
76
- async function generateAppSignature(privateKeyHex, clientId, redirectUri, state) {
77
- const keyPair = loadExistingSecp256k1PrivateKey(privateKeyHex);
78
- const message = `${clientId}:${redirectUri}:${state}`;
79
- const hash = await hashInput(message);
80
- const signatureDER = keyPair.sign(hash, { canonical: true }).toDER();
81
- return Buffer.from(signatureDER).toString("hex");
82
- }
83
-
84
- export {
85
- __require,
86
- Network,
87
- NETWORK_HOSTS,
88
- loadExistingSecp256k1PrivateKey,
89
- serializePublicKeyCompressed,
90
- generateJWT,
91
- createAuthEnvelope,
92
- generateAppSignature
93
- };
@@ -1,93 +0,0 @@
1
- var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, {
2
- get: (a, b) => (typeof require !== "undefined" ? require : a)[b]
3
- }) : x)(function(x) {
4
- if (typeof require !== "undefined") return require.apply(this, arguments);
5
- throw Error('Dynamic require of "' + x + '" is not supported');
6
- });
7
-
8
- // src/helpers/CryptoUtils.tsx
9
- import { ec as EC } from "elliptic";
10
- var ec = new EC("secp256k1");
11
- var Network = /* @__PURE__ */ ((Network2) => {
12
- Network2["Testnet"] = "testnet";
13
- Network2["Localnet"] = "localnet";
14
- return Network2;
15
- })(Network || {});
16
- var NETWORK_HOSTS = {
17
- ["testnet" /* Testnet */]: "https://dev-db.petastic.com",
18
- ["localnet" /* Localnet */]: "host.docker.internal:9181"
19
- };
20
- function loadExistingSecp256k1PrivateKey(hexKey) {
21
- if (!hexKey) {
22
- throw new Error("Private key hex must be provided");
23
- }
24
- return ec.keyFromPrivate(hexKey, "hex");
25
- }
26
- function serializePublicKeyCompressed(keyPair) {
27
- return keyPair.getPublic(true, "hex");
28
- }
29
- function base64url(input) {
30
- let buf;
31
- if (typeof input === "string") buf = Buffer.from(input);
32
- else if (input instanceof ArrayBuffer) buf = Buffer.from(input);
33
- else buf = input;
34
- return buf.toString("base64").replace(/=/g, "").replace(/\+/g, "-").replace(/\//g, "_");
35
- }
36
- function sha256HashNode(data) {
37
- const { createHash } = __require("crypto");
38
- return createHash("sha256").update(data).digest();
39
- }
40
- async function hashInput(data) {
41
- if (typeof window !== "undefined" && window.crypto?.subtle) {
42
- const encoder = new TextEncoder();
43
- const encoded = encoder.encode(data);
44
- const hashBuffer = await window.crypto.subtle.digest("SHA-256", encoded);
45
- return Buffer.from(hashBuffer);
46
- } else {
47
- return sha256HashNode(data);
48
- }
49
- }
50
- async function generateJWT(sub, aud, keyPair, expiresInSeconds = 24 * 60 * 60) {
51
- const iat = Math.floor(Date.now() / 1e3);
52
- const exp = iat + expiresInSeconds;
53
- const header = { alg: "ES256", typ: "JWT" };
54
- const payload = { sub, aud, iat, exp };
55
- const encodedHeader = base64url(JSON.stringify(header));
56
- const encodedPayload = base64url(JSON.stringify(payload));
57
- const signingInput = `${encodedHeader}.${encodedPayload}`;
58
- const hash = await hashInput(signingInput);
59
- const signature = keyPair.sign(hash, { canonical: true });
60
- const rBuf = signature.r.toArrayLike(Buffer, "be", 32);
61
- const sBuf = signature.s.toArrayLike(Buffer, "be", 32);
62
- const rawSig = Buffer.concat([rBuf, sBuf]);
63
- const encodedSig = base64url(rawSig);
64
- return `${signingInput}.${encodedSig}`;
65
- }
66
- async function createAuthEnvelope(privateKeyHex, network = "testnet" /* Testnet */, options) {
67
- const keyPair = loadExistingSecp256k1PrivateKey(privateKeyHex);
68
- const publicKey = serializePublicKeyCompressed(keyPair);
69
- const host = NETWORK_HOSTS[network];
70
- if (!host) {
71
- throw new Error(`Unsupported network: ${network}`);
72
- }
73
- const token = await generateJWT(publicKey, host, keyPair, options?.expiresInSeconds);
74
- return { publicKey, token };
75
- }
76
- async function generateAppSignature(privateKeyHex, clientId, redirectUri, state) {
77
- const keyPair = loadExistingSecp256k1PrivateKey(privateKeyHex);
78
- const message = `${clientId}:${redirectUri}:${state}`;
79
- const hash = await hashInput(message);
80
- const signatureDER = keyPair.sign(hash, { canonical: true }).toDER();
81
- return Buffer.from(signatureDER).toString("hex");
82
- }
83
-
84
- export {
85
- __require,
86
- Network,
87
- NETWORK_HOSTS,
88
- loadExistingSecp256k1PrivateKey,
89
- serializePublicKeyCompressed,
90
- generateJWT,
91
- createAuthEnvelope,
92
- generateAppSignature
93
- };