@sundaeswap/wallet-lite 0.0.96 → 0.0.98

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 (49) hide show
  1. package/dist/cjs/classes/WalletBalanceMap.class.js +1 -1
  2. package/dist/cjs/classes/WalletBalanceMap.class.js.map +1 -1
  3. package/dist/cjs/classes/WalletObserverUtils.class.js +2 -1
  4. package/dist/cjs/classes/WalletObserverUtils.class.js.map +1 -1
  5. package/dist/cjs/react-components/WalletObserverProvider/WalletObserverProvider.js +4 -2
  6. package/dist/cjs/react-components/WalletObserverProvider/WalletObserverProvider.js.map +1 -1
  7. package/dist/cjs/react-components/WalletObserverProvider/hooks/effects/useSyncWalletWithInterval.js +26 -0
  8. package/dist/cjs/react-components/WalletObserverProvider/hooks/effects/useSyncWalletWithInterval.js.map +1 -0
  9. package/dist/cjs/react-components/hooks/useWalletHandles.js +7 -2
  10. package/dist/cjs/react-components/hooks/useWalletHandles.js.map +1 -1
  11. package/dist/esm/classes/WalletBalanceMap.class.js +1 -1
  12. package/dist/esm/classes/WalletBalanceMap.class.js.map +1 -1
  13. package/dist/esm/classes/WalletObserverUtils.class.js +2 -1
  14. package/dist/esm/classes/WalletObserverUtils.class.js.map +1 -1
  15. package/dist/esm/react-components/WalletObserverProvider/WalletObserverProvider.js +4 -2
  16. package/dist/esm/react-components/WalletObserverProvider/WalletObserverProvider.js.map +1 -1
  17. package/dist/esm/react-components/WalletObserverProvider/hooks/effects/useSyncWalletWithInterval.js +21 -0
  18. package/dist/esm/react-components/WalletObserverProvider/hooks/effects/useSyncWalletWithInterval.js.map +1 -0
  19. package/dist/esm/react-components/hooks/useWalletHandles.js +2 -1
  20. package/dist/esm/react-components/hooks/useWalletHandles.js.map +1 -1
  21. package/dist/types/classes/WalletObserverUtils.class.d.ts.map +1 -1
  22. package/dist/types/react-components/WalletObserverProvider/WalletObserverProvider.d.ts.map +1 -1
  23. package/dist/types/react-components/WalletObserverProvider/hooks/effects/useSyncWalletWithInterval.d.ts +10 -0
  24. package/dist/types/react-components/WalletObserverProvider/hooks/effects/useSyncWalletWithInterval.d.ts.map +1 -0
  25. package/dist/types/react-components/hooks/useWalletHandles.d.ts.map +1 -1
  26. package/dist/types/tsconfig.build.tsbuildinfo +1 -1
  27. package/package.json +2 -2
  28. package/src/__data__/assets.ts +16 -106
  29. package/src/__data__/eternl.ts +5 -5
  30. package/src/classes/WalletBalanceMap.class.ts +1 -1
  31. package/src/classes/WalletObserverUtils.class.ts +3 -1
  32. package/src/classes/__tests__/WalletBalanceMap.test.ts +31 -19
  33. package/src/classes/__tests__/WalletObserver.test.ts +47 -35
  34. package/src/classes/__tests__/WalletObserverUtils.test.ts +12 -50
  35. package/src/react-components/WalletObserverProvider/WalletObserverProvider.tsx +3 -6
  36. package/src/react-components/WalletObserverProvider/hooks/effects/useSyncWalletWithInterval.ts +23 -0
  37. package/src/react-components/__tests__/RenderWallet.test.tsx +13 -2
  38. package/src/react-components/__tests__/hooks/useAvailableExtensions.test.tsx +13 -2
  39. package/src/react-components/__tests__/hooks/useWalletObserver.test.tsx +39 -19
  40. package/src/react-components/__tests__/hooks/useWalletObserverRef.test.tsx +19 -10
  41. package/src/react-components/hooks/useWalletHandles.ts +6 -1
  42. package/dist/cjs/react-components/WalletObserverProvider/hooks/effects/useProviderRefreshInterval.js +0 -28
  43. package/dist/cjs/react-components/WalletObserverProvider/hooks/effects/useProviderRefreshInterval.js.map +0 -1
  44. package/dist/esm/react-components/WalletObserverProvider/hooks/effects/useProviderRefreshInterval.js +0 -22
  45. package/dist/esm/react-components/WalletObserverProvider/hooks/effects/useProviderRefreshInterval.js.map +0 -1
  46. package/dist/types/react-components/WalletObserverProvider/hooks/effects/useProviderRefreshInterval.d.ts +0 -12
  47. package/dist/types/react-components/WalletObserverProvider/hooks/effects/useProviderRefreshInterval.d.ts.map +0 -1
  48. package/src/react-components/WalletObserverProvider/hooks/effects/useProviderRefreshInterval.ts +0 -30
  49. package/src/react-components/__tests__/RenderWalletHandles.test.tsx +0 -77
@@ -3,7 +3,9 @@ import { act } from "@testing-library/react";
3
3
  import { renderHook } from "@testing-library/react-hooks";
4
4
  import { describe, expect, it } from "bun:test";
5
5
 
6
- import { mockedEternlWallet } from "../../../../setup-tests.js";
6
+ import { QueryClient, QueryClientProvider } from "@tanstack/react-query";
7
+ import { FC, PropsWithChildren } from "react";
8
+ import { mockedEternlWallet } from "../../../../../setup-tests.js";
7
9
  import {
8
10
  IWalletObserverProviderProps,
9
11
  useAvailableExtensions,
@@ -12,13 +14,22 @@ import {
12
14
 
13
15
  const INTERVAL_AMOUNT = 10;
14
16
 
17
+ const client = new QueryClient();
18
+ const QueryProvider: FC<PropsWithChildren> = ({ children }) => (
19
+ <QueryClientProvider client={client}>{children}</QueryClientProvider>
20
+ );
21
+
15
22
  describe("useAvailableExtensions", () => {
16
23
  it("should correctly retrieve the instance", async () => {
17
24
  const { result } = renderHook<
18
25
  IWalletObserverProviderProps,
19
26
  ReturnType<typeof useAvailableExtensions>
20
27
  >(() => useAvailableExtensions(INTERVAL_AMOUNT), {
21
- wrapper: (props) => <WalletObserverProvider {...props} />,
28
+ wrapper: (props) => (
29
+ <QueryProvider>
30
+ <WalletObserverProvider {...props} />
31
+ </QueryProvider>
32
+ ),
22
33
  });
23
34
 
24
35
  act(() => {
@@ -1,11 +1,14 @@
1
+ import { Cardano } from "@cardano-sdk/core";
2
+ import { QueryClient, QueryClientProvider } from "@tanstack/react-query";
1
3
  import { act, renderHook } from "@testing-library/react-hooks";
2
4
  import { describe, expect, it } from "bun:test";
5
+ import { FC, PropsWithChildren } from "react";
3
6
 
4
- import { assetIds } from "../../../__data__/assets.js";
7
+ import { mockWalletAssetIds } from "../../../__data__/assets.js";
5
8
  import {
6
- network,
7
- unusedAddresses,
8
- usedAddresses,
9
+ mockNetwork,
10
+ mockUnusedAddresses,
11
+ mockUsedAddresses,
9
12
  } from "../../../__data__/eternl.js";
10
13
  import { WalletObserver } from "../../../classes/WalletObserver.class.js";
11
14
  import {
@@ -14,6 +17,11 @@ import {
14
17
  useWalletObserver,
15
18
  } from "../../../index.js";
16
19
 
20
+ const client = new QueryClient();
21
+ const QueryProvider: FC<PropsWithChildren> = ({ children }) => (
22
+ <QueryClientProvider client={client}>{children}</QueryClientProvider>
23
+ );
24
+
17
25
  describe("useWalletObserver", () => {
18
26
  it("should correctly retrieve the context", async () => {
19
27
  const { result } = renderHook<
@@ -21,16 +29,18 @@ describe("useWalletObserver", () => {
21
29
  ReturnType<typeof useWalletObserver>
22
30
  >(() => useWalletObserver(), {
23
31
  wrapper: (props) => (
24
- <WalletObserverProvider
25
- {...{
26
- ...props,
27
- observerOptions: {
28
- ...props.options?.observerOptions,
29
- // Quick resolve time for tests.
30
- connectTimeout: 10,
31
- },
32
- }}
33
- />
32
+ <QueryProvider>
33
+ <WalletObserverProvider
34
+ {...{
35
+ ...props,
36
+ observerOptions: {
37
+ ...props.options?.observerOptions,
38
+ // Quick resolve time for tests.
39
+ connectTimeout: 10,
40
+ },
41
+ }}
42
+ />
43
+ </QueryProvider>
34
44
  ),
35
45
  });
36
46
 
@@ -52,11 +62,21 @@ describe("useWalletObserver", () => {
52
62
 
53
63
  expect(result.current.activeWallet).toEqual("eternl");
54
64
  expect(result.current.adaBalance.amount.toString()).not.toEqual("0");
55
- expect(result.current.balance.size).toEqual(assetIds.length);
65
+ expect(result.current.balance.size).toEqual(mockWalletAssetIds.length);
56
66
  expect(result.current.isCip45).toBeFalse();
57
- expect(result.current.mainAddress).toEqual(usedAddresses[0]);
58
- expect(result.current.network).toEqual(network);
59
- expect(result.current.unusedAddresses).toEqual(unusedAddresses);
60
- expect(result.current.usedAddresses).toEqual(usedAddresses);
67
+ expect(result.current.mainAddress).toEqual(
68
+ Cardano.Address.fromString(mockUsedAddresses[0])!.toBech32(),
69
+ );
70
+ expect(result.current.network).toEqual(mockNetwork);
71
+ expect(result.current.unusedAddresses).toEqual(
72
+ mockUnusedAddresses.map((cbor) =>
73
+ Cardano.Address.fromString(cbor)!.toBech32(),
74
+ ),
75
+ );
76
+ expect(result.current.usedAddresses).toEqual(
77
+ mockUsedAddresses.map((cbor) =>
78
+ Cardano.Address.fromString(cbor)!.toBech32(),
79
+ ),
80
+ );
61
81
  });
62
82
  });
@@ -1,5 +1,7 @@
1
+ import { QueryClient, QueryClientProvider } from "@tanstack/react-query";
1
2
  import { renderHook } from "@testing-library/react-hooks";
2
3
  import { describe, expect, it } from "bun:test";
4
+ import { FC, PropsWithChildren } from "react";
3
5
 
4
6
  import { WalletObserver } from "../../../classes/WalletObserver.class.js";
5
7
  import {
@@ -8,6 +10,11 @@ import {
8
10
  } from "../../../index.js";
9
11
  import { useProviderWalletObserverRef } from "../../WalletObserverProvider/hooks/useProviderWalletObserverRef.js";
10
12
 
13
+ const client = new QueryClient();
14
+ const QueryProvider: FC<PropsWithChildren> = ({ children }) => (
15
+ <QueryClientProvider client={client}>{children}</QueryClientProvider>
16
+ );
17
+
11
18
  describe("useWalletObserverRef", () => {
12
19
  it("should correctly retrieve the instance", async () => {
13
20
  const { result } = renderHook<
@@ -15,16 +22,18 @@ describe("useWalletObserverRef", () => {
15
22
  ReturnType<typeof useProviderWalletObserverRef>
16
23
  >(() => useProviderWalletObserverRef(), {
17
24
  wrapper: (props) => (
18
- <WalletObserverProvider
19
- {...{
20
- ...props,
21
- observerOptions: {
22
- ...props.options?.observerOptions,
23
- // Quick resolve time for tests.
24
- connectTimeout: 10,
25
- },
26
- }}
27
- />
25
+ <QueryProvider>
26
+ <WalletObserverProvider
27
+ {...{
28
+ ...props,
29
+ observerOptions: {
30
+ ...props.options?.observerOptions,
31
+ // Quick resolve time for tests.
32
+ connectTimeout: 10,
33
+ },
34
+ }}
35
+ />
36
+ </QueryProvider>
28
37
  ),
29
38
  });
30
39
 
@@ -22,7 +22,12 @@ export const useWalletHandles = <
22
22
  >({
23
23
  queryKey,
24
24
  queryFn: async () => {
25
- return getHandleMetadata(state.balance.getHandles(), state.network || 0);
25
+ const result = await getHandleMetadata(
26
+ state.balance.getHandles(),
27
+ state.network || 0,
28
+ );
29
+
30
+ return result;
26
31
  },
27
32
  refetchInterval: false,
28
33
  notifyOnChangeProps: ["data", "isLoading"],
@@ -1,28 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.useProviderRefreshInterval = void 0;
7
- var _react = require("react");
8
- /**
9
- * Internal use only. This hook is responsible for attaching
10
- * a refresh interval to the WalletObserver. If set to 0, then
11
- * the refresh interval is not attached.
12
- *
13
- * @param observer
14
- * @param refreshInterval
15
- * @param syncWallet
16
- */
17
- var useProviderRefreshInterval = exports.useProviderRefreshInterval = function useProviderRefreshInterval(observer, syncWallet, refreshInterval) {
18
- (0, _react.useEffect)(function () {
19
- if (!refreshInterval) {
20
- return;
21
- }
22
- var interval = setInterval(syncWallet, refreshInterval);
23
- return function () {
24
- clearInterval(interval);
25
- };
26
- }, [refreshInterval, syncWallet, observer]);
27
- };
28
- //# sourceMappingURL=useProviderRefreshInterval.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useProviderRefreshInterval.js","names":["_react","require","useProviderRefreshInterval","exports","observer","syncWallet","refreshInterval","useEffect","interval","setInterval","clearInterval"],"sources":["../../../../../../src/react-components/WalletObserverProvider/hooks/effects/useProviderRefreshInterval.ts"],"sourcesContent":["import { useEffect } from \"react\";\n\nimport { WalletObserver } from \"../../../../classes/WalletObserver.class.js\";\n\n/**\n * Internal use only. This hook is responsible for attaching\n * a refresh interval to the WalletObserver. If set to 0, then\n * the refresh interval is not attached.\n *\n * @param observer\n * @param refreshInterval\n * @param syncWallet\n */\nexport const useProviderRefreshInterval = (\n observer: WalletObserver,\n syncWallet: () => Promise<void>,\n refreshInterval?: number,\n) => {\n useEffect(() => {\n if (!refreshInterval) {\n return;\n }\n\n const interval = setInterval(syncWallet, refreshInterval);\n\n return () => {\n clearInterval(interval);\n };\n }, [refreshInterval, syncWallet, observer]);\n};\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,IAAMC,0BAA0B,GAAAC,OAAA,CAAAD,0BAAA,GAAG,SAA7BA,0BAA0BA,CACrCE,QAAwB,EACxBC,UAA+B,EAC/BC,eAAwB,EACrB;EACH,IAAAC,gBAAS,EAAC,YAAM;IACd,IAAI,CAACD,eAAe,EAAE;MACpB;IACF;IAEA,IAAME,QAAQ,GAAGC,WAAW,CAACJ,UAAU,EAAEC,eAAe,CAAC;IAEzD,OAAO,YAAM;MACXI,aAAa,CAACF,QAAQ,CAAC;IACzB,CAAC;EACH,CAAC,EAAE,CAACF,eAAe,EAAED,UAAU,EAAED,QAAQ,CAAC,CAAC;AAC7C,CAAC","ignoreList":[]}
@@ -1,22 +0,0 @@
1
- import { useEffect } from "react";
2
- /**
3
- * Internal use only. This hook is responsible for attaching
4
- * a refresh interval to the WalletObserver. If set to 0, then
5
- * the refresh interval is not attached.
6
- *
7
- * @param observer
8
- * @param refreshInterval
9
- * @param syncWallet
10
- */
11
- export const useProviderRefreshInterval = (observer, syncWallet, refreshInterval) => {
12
- useEffect(() => {
13
- if (!refreshInterval) {
14
- return;
15
- }
16
- const interval = setInterval(syncWallet, refreshInterval);
17
- return () => {
18
- clearInterval(interval);
19
- };
20
- }, [refreshInterval, syncWallet, observer]);
21
- };
22
- //# sourceMappingURL=useProviderRefreshInterval.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useProviderRefreshInterval.js","names":["useEffect","useProviderRefreshInterval","observer","syncWallet","refreshInterval","interval","setInterval","clearInterval"],"sources":["../../../../../../src/react-components/WalletObserverProvider/hooks/effects/useProviderRefreshInterval.ts"],"sourcesContent":["import { useEffect } from \"react\";\n\nimport { WalletObserver } from \"../../../../classes/WalletObserver.class.js\";\n\n/**\n * Internal use only. This hook is responsible for attaching\n * a refresh interval to the WalletObserver. If set to 0, then\n * the refresh interval is not attached.\n *\n * @param observer\n * @param refreshInterval\n * @param syncWallet\n */\nexport const useProviderRefreshInterval = (\n observer: WalletObserver,\n syncWallet: () => Promise<void>,\n refreshInterval?: number,\n) => {\n useEffect(() => {\n if (!refreshInterval) {\n return;\n }\n\n const interval = setInterval(syncWallet, refreshInterval);\n\n return () => {\n clearInterval(interval);\n };\n }, [refreshInterval, syncWallet, observer]);\n};\n"],"mappings":"AAAA,SAASA,SAAS,QAAQ,OAAO;AAIjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,0BAA0B,GAAGA,CACxCC,QAAwB,EACxBC,UAA+B,EAC/BC,eAAwB,KACrB;EACHJ,SAAS,CAAC,MAAM;IACd,IAAI,CAACI,eAAe,EAAE;MACpB;IACF;IAEA,MAAMC,QAAQ,GAAGC,WAAW,CAACH,UAAU,EAAEC,eAAe,CAAC;IAEzD,OAAO,MAAM;MACXG,aAAa,CAACF,QAAQ,CAAC;IACzB,CAAC;EACH,CAAC,EAAE,CAACD,eAAe,EAAED,UAAU,EAAED,QAAQ,CAAC,CAAC;AAC7C,CAAC","ignoreList":[]}
@@ -1,12 +0,0 @@
1
- import { WalletObserver } from "../../../../classes/WalletObserver.class.js";
2
- /**
3
- * Internal use only. This hook is responsible for attaching
4
- * a refresh interval to the WalletObserver. If set to 0, then
5
- * the refresh interval is not attached.
6
- *
7
- * @param observer
8
- * @param refreshInterval
9
- * @param syncWallet
10
- */
11
- export declare const useProviderRefreshInterval: (observer: WalletObserver, syncWallet: () => Promise<void>, refreshInterval?: number) => void;
12
- //# sourceMappingURL=useProviderRefreshInterval.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useProviderRefreshInterval.d.ts","sourceRoot":"","sources":["../../../../../../src/react-components/WalletObserverProvider/hooks/effects/useProviderRefreshInterval.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,6CAA6C,CAAC;AAE7E;;;;;;;;GAQG;AACH,eAAO,MAAM,0BAA0B,aAC3B,cAAc,cACZ,MAAM,QAAQ,IAAI,CAAC,oBACb,MAAM,SAazB,CAAC"}
@@ -1,30 +0,0 @@
1
- import { useEffect } from "react";
2
-
3
- import { WalletObserver } from "../../../../classes/WalletObserver.class.js";
4
-
5
- /**
6
- * Internal use only. This hook is responsible for attaching
7
- * a refresh interval to the WalletObserver. If set to 0, then
8
- * the refresh interval is not attached.
9
- *
10
- * @param observer
11
- * @param refreshInterval
12
- * @param syncWallet
13
- */
14
- export const useProviderRefreshInterval = (
15
- observer: WalletObserver,
16
- syncWallet: () => Promise<void>,
17
- refreshInterval?: number,
18
- ) => {
19
- useEffect(() => {
20
- if (!refreshInterval) {
21
- return;
22
- }
23
-
24
- const interval = setInterval(syncWallet, refreshInterval);
25
-
26
- return () => {
27
- clearInterval(interval);
28
- };
29
- }, [refreshInterval, syncWallet, observer]);
30
- };
@@ -1,77 +0,0 @@
1
- import { KoraLabsProvider } from "@koralabs/adahandle-sdk";
2
- import { render } from "@testing-library/react";
3
- import { userEvent } from "@testing-library/user-event";
4
- import { describe, expect, it, spyOn } from "bun:test";
5
-
6
- import { QueryClient, QueryClientProvider } from "@tanstack/react-query";
7
- import { mockHandleMetadata } from "../../__data__/handles.js";
8
- import {
9
- RenderWalletHandles,
10
- TRenderWalletHandlesFunctionState,
11
- WalletObserverProvider,
12
- } from "../../index.js";
13
-
14
- const TestComponent = (state: TRenderWalletHandlesFunctionState) => {
15
- return (
16
- <pre>
17
- {state.activeWallet?.toString()}
18
- {(state.adaBalance.amount > 0n).toString()}
19
- {state.isCip45?.toString()}
20
- {state.mainAddress?.toString()}
21
- {state.network?.toString()}
22
- {state.unusedAddresses.toString()}
23
- {state.usedAddresses.toString()}
24
- {state.handles &&
25
- [...state.handles.values()].map(({ metadata }) => (
26
- <p key={metadata.assetId} data-testid={metadata.name}>
27
- {JSON.stringify(metadata)}
28
- </p>
29
- ))}
30
- <button
31
- data-testid="connect-with-handles"
32
- onClick={() => state.connectWallet("eternl")}
33
- ></button>
34
- </pre>
35
- );
36
- };
37
-
38
- describe("RenderWalletHandles", () => {
39
- it("should successfully update state with handle metadata", async () => {
40
- const user = userEvent.setup();
41
- const spiedOnGetAllDataBatch = spyOn(
42
- KoraLabsProvider.prototype,
43
- "getAllDataBatch",
44
- );
45
- spiedOnGetAllDataBatch.mockImplementation(
46
- // @ts-expect-error Bug in Bun.sh that mocks the function result rather than the reference.
47
- () => async () => mockHandleMetadata,
48
- );
49
-
50
- const { container, getByTestId, queryByTestId, rerender } = render(
51
- <RenderWalletHandles render={TestComponent} />,
52
- {
53
- wrapper(props) {
54
- return (
55
- <QueryClientProvider client={new QueryClient()}>
56
- <WalletObserverProvider {...props} />
57
- </QueryClientProvider>
58
- );
59
- },
60
- },
61
- );
62
-
63
- expect(spiedOnGetAllDataBatch).not.toHaveBeenCalled();
64
- expect(queryByTestId("calvin")).toBeNull();
65
- expect(queryByTestId("pi")).toBeNull();
66
- expect(container.innerHTML).toMatchSnapshot();
67
-
68
- const button = getByTestId("connect-with-handles");
69
- await user.click(button);
70
- expect(spiedOnGetAllDataBatch).toHaveBeenCalled();
71
-
72
- rerender(<RenderWalletHandles render={TestComponent} />);
73
- expect(queryByTestId("calvin")).not.toBeNull();
74
- expect(queryByTestId("pi")).not.toBeNull();
75
- expect(container.innerHTML).toMatchSnapshot();
76
- });
77
- });