@coin-voyage/crypto 0.0.20 → 0.0.21

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.
@@ -1,6 +1,6 @@
1
+ import type { BaseConnector } from "../types/base-connector";
1
2
  import { SignInWith } from "../types/sign-in-with";
2
- import { BaseConnector } from "../types/base-connector";
3
- export declare function useSignInWithEvm({ signIn, callbackUrl }: SignInWith): {
3
+ export declare function useSignInWithEvm({ signIn, onError, generateNonce }: SignInWith): {
4
4
  onSelect: (id: string) => Promise<void>;
5
5
  wallets: BaseConnector[];
6
6
  };
@@ -1,46 +1,55 @@
1
- import { useAccount, useConfig, useConnect, useConnectors, useSignMessage } from "wagmi";
1
+ import { randomStringForEntropy } from "@stablelib/random";
2
+ import { useCallback, useEffect, useState } from "react";
3
+ import { useAccount, useConnect, useConnectors, useSignMessage } from "wagmi";
2
4
  import { isWalletInstalled } from "../lib/utils/is-wallet-installed";
3
5
  import { toMessage } from "../lib/utils/message";
4
6
  import { toBaseConnector } from "./utils";
5
- export function useSignInWithEvm({ signIn, callbackUrl }) {
6
- const { address, connector } = useAccount();
7
+ export function useSignInWithEvm({ signIn, onError, generateNonce }) {
8
+ const { address, connector, isConnected } = useAccount();
7
9
  const { connectAsync } = useConnect();
8
- const connectors = useConnectors();
9
- const wagmiConnectors = useConfig().connectors;
10
- const wallets = Array.from(wagmiConnectors).filter((c) => isWalletInstalled(c.id)).map(toBaseConnector);
11
10
  const { signMessageAsync } = useSignMessage();
12
- const handleSignature = async (address) => {
11
+ const connectors = useConnectors();
12
+ const [wallets, setWallets] = useState([]);
13
+ const handleSignature = useCallback(async (address) => {
14
+ const nonce = generateNonce ? await generateNonce() : randomStringForEntropy(96);
13
15
  const msg = {
14
16
  domain: window.location.host,
15
17
  address,
16
18
  statement: "Sign in with Ethereum to CoinVoyage.io",
17
19
  uri: window.location.origin,
18
- nonce: Math.random().toString(),
20
+ nonce,
19
21
  version: "1"
20
22
  };
21
23
  const message = toMessage(msg, "Ethereum");
22
- const signature = await signMessageAsync({ message });
23
- signIn("ethereum", {
24
+ const signature = await signMessageAsync({ message }, {
25
+ onError
26
+ });
27
+ signIn({
24
28
  address,
25
29
  message,
26
30
  domain: window.location.host,
27
31
  signature,
28
- callbackUrl: callbackUrl ?? "/"
29
32
  });
30
- };
31
- const onSelect = async (id) => {
33
+ }, [generateNonce, onError, signIn, signMessageAsync]);
34
+ useEffect(() => {
35
+ const installedWallets = Array.from(connectors)
36
+ .filter((c) => isWalletInstalled(c.id))
37
+ .map(toBaseConnector);
38
+ setWallets(installedWallets);
39
+ }, [connectors]);
40
+ const onSelect = useCallback(async (id) => {
32
41
  const selectedConnector = connectors.find((w) => w.id === id);
33
42
  if (!selectedConnector)
34
43
  return;
35
- if (connector?.id === selectedConnector.id && address) {
36
- handleSignature(address);
44
+ if (connector?.id === selectedConnector.id && isConnected && address) {
45
+ await handleSignature(address);
37
46
  return;
38
47
  }
39
48
  const res = await connectAsync({ connector: selectedConnector });
40
49
  if (!res.accounts[0])
41
50
  return;
42
- handleSignature(res.accounts[0]);
43
- };
51
+ await handleSignature(res.accounts[0]);
52
+ }, [address, connector?.id, connectors, connectAsync, handleSignature, isConnected]);
44
53
  return { onSelect, wallets };
45
54
  }
46
55
  //# sourceMappingURL=use-sign-in-with-evm.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"use-sign-in-with-evm.js","sourceRoot":"","sources":["../../src/evm/use-sign-in-with-evm.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AACzF,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AACrE,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEjD,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAI1C,MAAM,UAAU,gBAAgB,CAAC,EAAE,MAAM,EAAE,WAAW,EAAc;IAChE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,UAAU,EAAE,CAAC;IAC5C,MAAM,EAAE,YAAY,EAAE,GAAG,UAAU,EAAE,CAAC;IACtC,MAAM,UAAU,GAAG,aAAa,EAAE,CAAA;IAElC,MAAM,eAAe,GAAG,SAAS,EAAE,CAAC,UAAU,CAAA;IAC9C,MAAM,OAAO,GACT,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;IAC5F,MAAM,EAAE,gBAAgB,EAAE,GAAG,cAAc,EAAE,CAAC;IAE9C,MAAM,eAAe,GAAG,KAAK,EAAE,OAAe,EAAE,EAAE;QAC9C,MAAM,GAAG,GAAG;YACR,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,IAAI;YAC5B,OAAO;YACP,SAAS,EAAE,wCAAwC;YACnD,GAAG,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM;YAC3B,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;YAC/B,OAAO,EAAE,GAAG;SACE,CAAC;QAEnB,MAAM,OAAO,GAAG,SAAS,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;QAC3C,MAAM,SAAS,GAAG,MAAM,gBAAgB,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;QAEtD,MAAM,CAAC,UAAU,EAAE;YACf,OAAO;YACP,OAAO;YACP,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,IAAI;YAC5B,SAAS;YACT,WAAW,EAAE,WAAW,IAAI,GAAG;SAClC,CAAC,CAAC;IACP,CAAC,CAAC;IAEF,MAAM,QAAQ,GAAG,KAAK,EAAE,EAAU,EAAE,EAAE;QAClC,MAAM,iBAAiB,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;QAC9D,IAAI,CAAC,iBAAiB;YAAE,OAAO;QAC/B,IAAI,SAAS,EAAE,EAAE,KAAK,iBAAiB,CAAC,EAAE,IAAI,OAAO,EAAE,CAAC;YACpD,eAAe,CAAC,OAAO,CAAC,CAAC;YACzB,OAAO;QACX,CAAC;QAED,MAAM,GAAG,GAAG,MAAM,YAAY,CAAC,EAAE,SAAS,EAAE,iBAAiB,EAAE,CAAC,CAAC;QACjE,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC;YAAE,OAAO;QAC7B,eAAe,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IACrC,CAAC,CAAC;IAEF,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC;AACjC,CAAC"}
1
+ {"version":3,"file":"use-sign-in-with-evm.js","sourceRoot":"","sources":["../../src/evm/use-sign-in-with-evm.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export declare function getNonceFromMessage(message: string): string | null;
@@ -0,0 +1,5 @@
1
+ export function getNonceFromMessage(message) {
2
+ const nonceMatch = message.match(/Nonce:\s*([^\n]+)/);
3
+ return nonceMatch ? nonceMatch[1].trim() : null;
4
+ }
5
+ //# sourceMappingURL=get-nonce-from-message.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-nonce-from-message.js","sourceRoot":"","sources":["../../../src/lib/utils/get-nonce-from-message.ts"],"names":[],"mappings":"AACA,MAAM,UAAU,mBAAmB,CAAC,OAAe;IAC/C,MAAM,UAAU,GAAG,OAAO,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;IACtD,OAAO,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;AACpD,CAAC"}
@@ -1,10 +1,11 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import { ConnectionProvider, WalletProvider, } from "@solana/wallet-adapter-react";
3
+ import { CoinbaseWalletAdapter } from '@solana/wallet-adapter-coinbase';
3
4
  import { useMemo } from "react";
4
5
  const DEFAULT_SOLANA_RPC = "https://proportionate-light-research.solana-mainnet.quiknode.pro/139da87a36c1883d642064c0ebe64ba9819a98cf/";
5
- const wallets = [];
6
+ const wallets = [new CoinbaseWalletAdapter()];
6
7
  export function SolanaBaseProvider({ children, config }) {
7
8
  const solanaConfig = useMemo(() => config, [JSON.stringify(config)]);
8
- return (_jsx(ConnectionProvider, { endpoint: solanaConfig?.rpcUrl ?? DEFAULT_SOLANA_RPC, children: _jsx(WalletProvider, { ...solanaConfig?.walletConfiguration, autoConnect: solanaConfig?.walletConfiguration?.autoConnect || true, wallets: solanaConfig?.walletConfiguration?.wallets || wallets, children: children }) }));
9
+ return (_jsx(ConnectionProvider, { endpoint: solanaConfig?.rpcUrl ?? DEFAULT_SOLANA_RPC, children: _jsx(WalletProvider, { ...solanaConfig?.walletConfiguration, localStorageKey: solanaConfig?.walletConfiguration?.localStorageKey || "coin-voyage-widget-solana-wallet-connection", autoConnect: solanaConfig?.walletConfiguration?.autoConnect || true, wallets: solanaConfig?.walletConfiguration?.wallets || wallets, children: children }) }));
9
10
  }
10
11
  //# sourceMappingURL=base-provider.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"base-provider.js","sourceRoot":"","sources":["../../src/solana/base-provider.tsx"],"names":[],"mappings":";AACA,OAAO,EACL,kBAAkB,EAClB,cAAc,GACf,MAAM,8BAA8B,CAAA;AACrC,OAAO,EAAE,OAAO,EAA0B,MAAM,OAAO,CAAA;AAGvD,MAAM,kBAAkB,GAAG,4GAA4G,CAAA;AAEvI,MAAM,OAAO,GAAc,EAAE,CAAA;AAE7B,MAAM,UAAU,kBAAkB,CAAC,EAAE,QAAQ,EAAE,MAAM,EAEnD;IACA,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;IACpE,OAAO,CACL,KAAC,kBAAkB,IAAC,QAAQ,EAAE,YAAY,EAAE,MAAM,IAAI,kBAAkB,YACtE,KAAC,cAAc,OACT,YAAY,EAAE,mBAAmB,EACrC,WAAW,EAAE,YAAY,EAAE,mBAAmB,EAAE,WAAW,IAAI,IAAI,EACnE,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,OAAO,IAAI,OAAO,YAE7D,QAAQ,GACM,GACE,CACtB,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"base-provider.js","sourceRoot":"","sources":["../../src/solana/base-provider.tsx"],"names":[],"mappings":";AACA,OAAO,EACL,kBAAkB,EAClB,cAAc,GACf,MAAM,8BAA8B,CAAA;AACrC,OAAO,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAA;AACvE,OAAO,EAAE,OAAO,EAA0B,MAAM,OAAO,CAAA;AAGvD,MAAM,kBAAkB,GAAG,4GAA4G,CAAA;AAEvI,MAAM,OAAO,GAAc,CAAC,IAAI,qBAAqB,EAAE,CAAC,CAAA;AAExD,MAAM,UAAU,kBAAkB,CAAC,EAAE,QAAQ,EAAE,MAAM,EAEnD;IACA,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;IACpE,OAAO,CACL,KAAC,kBAAkB,IAAC,QAAQ,EAAE,YAAY,EAAE,MAAM,IAAI,kBAAkB,YACtE,KAAC,cAAc,OACT,YAAY,EAAE,mBAAmB,EACrC,eAAe,EAAE,YAAY,EAAE,mBAAmB,EAAE,eAAe,IAAI,6CAA6C,EACpH,WAAW,EAAE,YAAY,EAAE,mBAAmB,EAAE,WAAW,IAAI,IAAI,EACnE,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,OAAO,IAAI,OAAO,YAE7D,QAAQ,GACM,GACE,CACtB,CAAA;AACH,CAAC"}
@@ -6,6 +6,6 @@ export function SuiBaseProvider({ children, config }) {
6
6
  return (_jsx(SuiClientProvider, { networks: {
7
7
  mainnet: { url: config?.rpcUrl ?? "https://fullnode.mainnet.sui.io:443" },
8
8
  devnet: { url: "https://fullnode.devnet.sui.io:443" },
9
- }, defaultNetwork: "mainnet", children: _jsx(WalletProvider, { ...suiConfig?.walletConfiguration, autoConnect: suiConfig?.walletConfiguration?.autoConnect || true, children: children }) }));
9
+ }, defaultNetwork: "mainnet", children: _jsx(WalletProvider, { ...suiConfig?.walletConfiguration, storageKey: suiConfig?.walletConfiguration?.storageKey || "coin-voyage-widget-sui-wallet-connection", autoConnect: suiConfig?.walletConfiguration?.autoConnect || true, children: children }) }));
10
10
  }
11
11
  //# sourceMappingURL=base-provider.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"base-provider.js","sourceRoot":"","sources":["../../src/sui/base-provider.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AACpE,OAAO,EAAE,OAAO,EAA0B,MAAM,OAAO,CAAA;AAGvD,MAAM,UAAU,eAAe,CAAC,EAAE,QAAQ,EAAE,MAAM,EAEhD;IACA,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;IACjE,OAAO,CACL,KAAC,iBAAiB,IAChB,QAAQ,EAAE;YACR,OAAO,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,IAAI,qCAAqC,EAAE;YACzE,MAAM,EAAE,EAAE,GAAG,EAAE,oCAAoC,EAAE;SACtD,EACD,cAAc,EAAE,SAAS,YAEzB,KAAC,cAAc,OACT,SAAS,EAAE,mBAAmB,EAClC,WAAW,EAAE,SAAS,EAAE,mBAAmB,EAAE,WAAW,IAAI,IAAI,YAChE,QAAQ,GAAkB,GACV,CACrB,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"base-provider.js","sourceRoot":"","sources":["../../src/sui/base-provider.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AACpE,OAAO,EAAE,OAAO,EAA0B,MAAM,OAAO,CAAA;AAGvD,MAAM,UAAU,eAAe,CAAC,EAAE,QAAQ,EAAE,MAAM,EAEhD;IACA,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;IACjE,OAAO,CACL,KAAC,iBAAiB,IAChB,QAAQ,EAAE;YACR,OAAO,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,IAAI,qCAAqC,EAAE;YACzE,MAAM,EAAE,EAAE,GAAG,EAAE,oCAAoC,EAAE;SACtD,EACD,cAAc,EAAC,SAAS,YAExB,KAAC,cAAc,OACT,SAAS,EAAE,mBAAmB,EAClC,UAAU,EAAE,SAAS,EAAE,mBAAmB,EAAE,UAAU,IAAI,0CAA0C,EACpG,WAAW,EAAE,SAAS,EAAE,mBAAmB,EAAE,WAAW,IAAI,IAAI,YAChE,QAAQ,GAAkB,GACV,CACrB,CAAA;AACH,CAAC"}
@@ -1,6 +1,6 @@
1
1
  import { BaseConnector } from "../types/base-connector";
2
2
  import { SignInWith } from "../types/sign-in-with";
3
- export declare function useSignInWithSui({ signIn, onError, callbackUrl }: SignInWith): {
4
- onSelect: (id: string) => void;
3
+ export declare function useSignInWithSui({ signIn, onError, generateNonce }: SignInWith): {
4
+ onSelect: (id: string) => Promise<void>;
5
5
  wallets: BaseConnector[];
6
6
  };
@@ -1,44 +1,50 @@
1
- import { useConnectWallet, useSignPersonalMessage, useWallets } from "@mysten/dapp-kit";
1
+ import { useConnectWallet, useCurrentWallet, useSignPersonalMessage, useWallets } from "@mysten/dapp-kit";
2
+ import { randomStringForEntropy } from "@stablelib/random";
2
3
  import { toMessage } from "../lib/utils/message";
3
- export function useSignInWithSui({ signIn, onError, callbackUrl }) {
4
+ export function useSignInWithSui({ signIn, onError, generateNonce }) {
4
5
  const { mutate: connect } = useConnectWallet();
6
+ const { currentWallet, isConnected } = useCurrentWallet();
5
7
  const { mutate: signPersonalMessage } = useSignPersonalMessage();
6
8
  const wallets = useWallets();
7
9
  const handleSignature = async (address) => {
10
+ const nonce = generateNonce ? await generateNonce() : randomStringForEntropy(96);
8
11
  const msg = {
9
12
  domain: window.location.host,
10
13
  address,
11
14
  statement: "Sign in with Sui to CoinVoyage.io",
12
15
  uri: window.location.origin,
13
- nonce: Math.random().toString(),
16
+ nonce,
14
17
  version: "1"
15
18
  };
16
19
  const message = toMessage(msg, "Sui");
17
20
  signPersonalMessage({ message: new TextEncoder().encode(message) }, {
18
21
  onSuccess: (result) => {
19
- signIn("sui", {
22
+ signIn({
20
23
  address,
21
24
  message,
22
25
  domain: window.location.host,
23
26
  signature: result.signature,
24
- callbackUrl: callbackUrl ?? "/"
25
27
  });
26
28
  },
27
- onError: (error) => {
28
- onError?.(error);
29
- }
29
+ onError
30
30
  });
31
31
  };
32
- const onSelect = (id) => {
32
+ const onSelect = async (id) => {
33
33
  const selectedWallet = wallets.find((w) => w.id === id);
34
+ console.log("selectedWallet", selectedWallet);
34
35
  if (!selectedWallet)
35
36
  return;
37
+ console.log("currentWallet", currentWallet?.id, "isConnected", isConnected);
38
+ if (currentWallet?.id === selectedWallet.id && isConnected && currentWallet.accounts[0]?.address) {
39
+ await handleSignature(currentWallet.accounts[0].address);
40
+ return;
41
+ }
36
42
  connect({ wallet: selectedWallet }, {
37
43
  onSuccess: (res) => handleSignature(res.accounts[0].address)
38
44
  });
39
45
  };
40
46
  const toBaseConnector = (wallet) => ({
41
- id: wallet.name,
47
+ id: wallet.id ?? wallet.name,
42
48
  name: wallet.name,
43
49
  icon: wallet.icon,
44
50
  });
@@ -1 +1 @@
1
- {"version":3,"file":"use-sign-in-with-sui.js","sourceRoot":"","sources":["../../src/sui/use-sign-in-with-sui.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAExF,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAIjD,MAAM,UAAU,gBAAgB,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAc;IAC3E,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,gBAAgB,EAAE,CAAC;IAC/C,MAAM,EAAE,MAAM,EAAE,mBAAmB,EAAE,GAAG,sBAAsB,EAAE,CAAC;IACjE,MAAM,OAAO,GAAG,UAAU,EAAE,CAAA;IAE5B,MAAM,eAAe,GAAG,KAAK,EAAE,OAAe,EAAE,EAAE;QAChD,MAAM,GAAG,GAAG;YACV,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,IAAI;YAC5B,OAAO;YACP,SAAS,EAAE,mCAAmC;YAC9C,GAAG,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM;YAC3B,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;YAC/B,OAAO,EAAE,GAAG;SACI,CAAC;QAEnB,MAAM,OAAO,GAAG,SAAS,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAEtC,mBAAmB,CAAC,EAAE,OAAO,EAAE,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,EAAE;YAClE,SAAS,EAAE,CAAC,MAAM,EAAE,EAAE;gBACpB,MAAM,CAAC,KAAK,EAAE;oBACZ,OAAO;oBACP,OAAO;oBACP,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,IAAI;oBAC5B,SAAS,EAAE,MAAM,CAAC,SAAS;oBAC3B,WAAW,EAAE,WAAW,IAAI,GAAG;iBAChC,CAAC,CAAC;YACL,CAAC;YACD,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;gBACjB,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC;YACnB,CAAC;SACF,CAAC,CAAC;IACL,CAAC,CAAC;IAEF,MAAM,QAAQ,GAAG,CAAC,EAAU,EAAE,EAAE;QAC9B,MAAM,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;QACxD,IAAI,CAAC,cAAc;YAAE,OAAO;QAC5B,OAAO,CAAC,EAAE,MAAM,EAAE,cAAc,EAAE,EAAE;YAClC,SAAS,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,eAAe,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;SAC7D,CAAC,CAAA;IACJ,CAAC,CAAC;IAEF,MAAM,eAAe,GAAG,CAAC,MAAkC,EAAiB,EAAE,CAAC,CAAC;QAC9E,EAAE,EAAE,MAAM,CAAC,IAAI;QACf,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,IAAI,EAAE,MAAM,CAAC,IAAI;KAClB,CAAC,CAAC;IAEH,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,EAAE,CAAA;AAC5D,CAAC"}
1
+ {"version":3,"file":"use-sign-in-with-sui.js","sourceRoot":"","sources":["../../src/sui/use-sign-in-with-sui.ts"],"names":[],"mappings":"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"}
@@ -1,13 +1,13 @@
1
+ export type SignInWithData = {
2
+ address: string;
3
+ message: string;
4
+ domain: string;
5
+ signature: string;
6
+ };
1
7
  export interface SignInWith {
2
- signIn: (provider: string, data: {
3
- address: string;
4
- message: string;
5
- domain: string;
6
- signature: string;
7
- callbackUrl?: string;
8
- }) => void;
8
+ signIn: (data: SignInWithData) => void;
9
9
  onError?: (error: Error) => void;
10
- callbackUrl?: string;
10
+ generateNonce?: () => Promise<string>;
11
11
  }
12
12
  export type SignInMessage = {
13
13
  address: string;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@coin-voyage/crypto",
3
3
  "description": "Crypto utilities for Coin Voyage",
4
- "version": "0.0.20",
4
+ "version": "0.0.21",
5
5
  "private": false,
6
6
  "sideEffects": false,
7
7
  "author": "Lars <lars@coinvoyage.io>",
@@ -34,6 +34,7 @@
34
34
  "@noble/secp256k1": "1.7.1",
35
35
  "@scure/base": "1.1.1",
36
36
  "@scure/btc-signer": "1.6.0",
37
+ "@stablelib/random": "2.0.1",
37
38
  "jsontokens": "4.0.1",
38
39
  "bitcoinjs-lib": "6.1.7",
39
40
  "bitcoinjs-message": "^2.2.0",
@@ -42,6 +43,7 @@
42
43
  "@mysten/wallet-standard": "0.15.6",
43
44
  "@solana/spl-token": "0.4.13",
44
45
  "@solana/wallet-adapter-base": "0.9.26",
46
+ "@solana/wallet-adapter-coinbase": "0.1.23",
45
47
  "@coin-voyage/shared": "0.0.12"
46
48
  },
47
49
  "devDependencies": {