@reown/appkit-universal-connector 1.8.15-viem-upgrade.0 → 1.8.15-wc-linking-reset-headless.0

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.
@@ -0,0 +1,2 @@
1
+ export { UniversalConnector } from '../src/UniversalConnector.js';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../exports/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAA"}
@@ -0,0 +1,33 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { createContext, useContext, useEffect, useState } from 'react';
3
+ import { UniversalConnector } from '../src/UniversalConnector.js';
4
+ export const UniversalConnectorContext = createContext(null);
5
+ export function useUniversalConnector() {
6
+ const context = useContext(UniversalConnectorContext);
7
+ if (!context) {
8
+ throw new Error('useUniversalConnector must be used within UniversalConnectorProvider');
9
+ }
10
+ return context;
11
+ }
12
+ export function UniversalConnectorProvider({ children, ...props }) {
13
+ const [connector, setConnector] = useState(null);
14
+ const [isReady, setIsReady] = useState(false);
15
+ async function initConnector(config) {
16
+ try {
17
+ if (!connector) {
18
+ const universalConnector = await UniversalConnector.init(config);
19
+ setConnector(universalConnector);
20
+ setIsReady(true);
21
+ }
22
+ }
23
+ catch (error) {
24
+ console.log('Failed to initialize UniversalConnector', error);
25
+ setIsReady(true);
26
+ }
27
+ }
28
+ useEffect(() => {
29
+ initConnector(props);
30
+ }, [props]);
31
+ return (_jsx(UniversalConnectorContext.Provider, { value: { connector, ready: isReady }, children: children }));
32
+ }
33
+ //# sourceMappingURL=react.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"react.js","sourceRoot":"","sources":["../../../exports/react.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAkB,aAAa,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAEtF,OAAO,EACL,kBAAkB,EAEnB,MAAM,8BAA8B,CAAA;AAQrC,MAAM,CAAC,MAAM,yBAAyB,GAAG,aAAa,CAG5C,IAAI,CAAC,CAAA;AAEf,MAAM,UAAU,qBAAqB;IACnC,MAAM,OAAO,GAAG,UAAU,CAAC,yBAAyB,CAAC,CAAA;IACrD,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,sEAAsE,CAAC,CAAA;IACzF,CAAC;IAED,OAAO,OAAO,CAAA;AAChB,CAAC;AAGD,MAAM,UAAU,0BAA0B,CAAC,EACzC,QAAQ,EACR,GAAG,KAAK,EACwB;IAChC,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAEhC,IAAI,CAAC,CAAA;IAEf,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IAE7C,KAAK,UAAU,aAAa,CAAC,MAAgC;QAC3D,IAAI,CAAC;YACH,IAAI,CAAC,SAAS,EAAE,CAAC;gBACf,MAAM,kBAAkB,GAAG,MAAM,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;gBAChE,YAAY,CAAC,kBAAkB,CAAC,CAAA;gBAChC,UAAU,CAAC,IAAI,CAAC,CAAA;YAClB,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAEf,OAAO,CAAC,GAAG,CAAC,yCAAyC,EAAE,KAAK,CAAC,CAAA;YAC7D,UAAU,CAAC,IAAI,CAAC,CAAA;QAClB,CAAC;IACH,CAAC;IAED,SAAS,CAAC,GAAG,EAAE;QACb,aAAa,CAAC,KAAK,CAAC,CAAA;IACtB,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAA;IAEX,OAAO,CACL,KAAC,yBAAyB,CAAC,QAAQ,IAAC,KAAK,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,YACrE,QAAQ,GAC0B,CACtC,CAAA;AACH,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { UniversalConnector } from './src/UniversalConnector.js';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAA"}
@@ -0,0 +1,62 @@
1
+ import { UniversalProvider } from '@walletconnect/universal-provider';
2
+ import { AppKit, createAppKit } from '@reown/appkit/core';
3
+ export class UniversalConnector {
4
+ constructor({ appKit, provider, config }) {
5
+ this.appKit = appKit;
6
+ this.provider = provider;
7
+ this.config = config;
8
+ }
9
+ static async init(config) {
10
+ const provider = await UniversalProvider.init({
11
+ ...(config.providerConfig || {}),
12
+ projectId: config.projectId,
13
+ metadata: config.metadata
14
+ });
15
+ const appKitConfig = {
16
+ ...(config.modalConfig || {}),
17
+ networks: config.networks.flatMap(network => network.chains),
18
+ projectId: config.projectId,
19
+ metadata: config.metadata,
20
+ universalProvider: provider,
21
+ manualWCControl: true
22
+ };
23
+ const appKit = createAppKit(appKitConfig);
24
+ return new UniversalConnector({ appKit, provider, config });
25
+ }
26
+ async connect(params) {
27
+ const namespaces = this.config?.networks.reduce((acc, namespace) => {
28
+ acc[namespace.namespace] = {
29
+ ...(namespace || {}),
30
+ methods: namespace?.methods || [],
31
+ events: namespace?.events || [],
32
+ chains: namespace?.chains?.map((chain) => chain.caipNetworkId) || []
33
+ };
34
+ return acc;
35
+ }, {});
36
+ try {
37
+ await this.appKit.open();
38
+ const session = await this.provider.connect({
39
+ ...(params || {}),
40
+ optionalNamespaces: namespaces
41
+ });
42
+ if (!session) {
43
+ throw new Error('Error connecting to wallet: No session found');
44
+ }
45
+ await this.appKit.close();
46
+ return { session };
47
+ }
48
+ catch (error) {
49
+ await this.appKit.close();
50
+ throw new Error(`Error connecting to wallet: ${error instanceof Error ? error.message : 'Unknown error'}`);
51
+ }
52
+ }
53
+ async disconnect() {
54
+ await this.appKit.disconnect();
55
+ await this.provider.disconnect();
56
+ }
57
+ async request(params, chain) {
58
+ return await this.provider.request(params, chain);
59
+ }
60
+ }
61
+ export default UniversalConnector;
62
+ //# sourceMappingURL=UniversalConnector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UniversalConnector.js","sourceRoot":"","sources":["../../../src/UniversalConnector.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,125 @@
1
+ import UniversalProvider from '@walletconnect/universal-provider';
2
+ import { beforeEach, describe, expect, it, vi } from 'vitest';
3
+ import * as AppKitCore from '@reown/appkit/core';
4
+ import { UniversalConnector } from '../src/UniversalConnector';
5
+ const provider = {
6
+ connect: vi.fn(),
7
+ disconnect: vi.fn(),
8
+ request: vi.fn()
9
+ };
10
+ const mockAppKit = {
11
+ open: vi.fn(),
12
+ close: vi.fn(),
13
+ disconnect: vi.fn()
14
+ };
15
+ const baseConfig = {
16
+ projectId: 'test-project',
17
+ metadata: {
18
+ name: 'Test Dapp',
19
+ description: 'A test dapp',
20
+ url: 'https://test.dapp',
21
+ icons: ['https://test.dapp/icon.png']
22
+ },
23
+ networks: [
24
+ {
25
+ namespace: 'eip155',
26
+ chains: [
27
+ {
28
+ caipNetworkId: 'eip155:1'
29
+ }
30
+ ],
31
+ methods: ['eth_sendTransaction'],
32
+ events: []
33
+ }
34
+ ],
35
+ modalConfig: {
36
+ themeMode: 'light'
37
+ },
38
+ providerConfig: {
39
+ logger: 'debug'
40
+ }
41
+ };
42
+ describe('UniversalConnector', () => {
43
+ beforeEach(() => {
44
+ vi.restoreAllMocks();
45
+ });
46
+ describe('init', () => {
47
+ it('should initialize UniversalProvider and return a UniversalConnector instance', async () => {
48
+ vi.spyOn(UniversalProvider, 'init').mockResolvedValue(provider);
49
+ vi.spyOn(AppKitCore, 'createAppKit').mockReturnValue(mockAppKit);
50
+ const connector = await UniversalConnector.init(baseConfig);
51
+ expect(UniversalProvider.init).toHaveBeenCalledWith({
52
+ projectId: baseConfig.projectId,
53
+ metadata: baseConfig.metadata,
54
+ ...baseConfig.providerConfig
55
+ });
56
+ expect(AppKitCore.createAppKit).toHaveBeenCalledWith(expect.objectContaining(baseConfig.modalConfig));
57
+ expect(connector).toBeInstanceOf(UniversalConnector);
58
+ expect(connector.provider).toBe(provider);
59
+ });
60
+ });
61
+ describe('connect', () => {
62
+ let connector;
63
+ beforeEach(() => {
64
+ vi.restoreAllMocks();
65
+ connector = new UniversalConnector({
66
+ appKit: mockAppKit,
67
+ provider: provider,
68
+ config: baseConfig
69
+ });
70
+ });
71
+ it('should establish a session and close the AppKit', async () => {
72
+ const mockSession = { topic: 'mock_session_topic' };
73
+ provider.connect.mockResolvedValueOnce(mockSession);
74
+ const result = await connector.connect();
75
+ expect(mockAppKit.open).toHaveBeenCalled();
76
+ expect(provider.connect).toHaveBeenCalled();
77
+ expect(mockAppKit.close).toHaveBeenCalled();
78
+ expect(result).toEqual({ session: mockSession });
79
+ });
80
+ it('should throw when no session is returned', async () => {
81
+ provider.connect.mockResolvedValueOnce(undefined);
82
+ await expect(connector.connect()).rejects.toThrow('Error connecting to wallet: No session found');
83
+ expect(mockAppKit.close).toHaveBeenCalled();
84
+ });
85
+ it('should throw and close AppKit when provider.connect rejects', async () => {
86
+ const error = new Error('connect failed');
87
+ provider.connect.mockRejectedValueOnce(error);
88
+ await expect(connector.connect()).rejects.toThrow(`Error connecting to wallet: ${error.message}`);
89
+ expect(mockAppKit.close).toHaveBeenCalled();
90
+ });
91
+ });
92
+ describe('disconnect', () => {
93
+ beforeEach(() => {
94
+ vi.restoreAllMocks();
95
+ });
96
+ it('should call disconnect on AppKit and provider', async () => {
97
+ const connector = new UniversalConnector({
98
+ appKit: mockAppKit,
99
+ provider: provider,
100
+ config: baseConfig
101
+ });
102
+ await connector.disconnect();
103
+ expect(mockAppKit.disconnect).toHaveBeenCalled();
104
+ expect(provider.disconnect).toHaveBeenCalled();
105
+ });
106
+ });
107
+ describe('request', () => {
108
+ beforeEach(() => {
109
+ vi.restoreAllMocks();
110
+ });
111
+ it('should delegate the request to the provider', async () => {
112
+ const connector = new UniversalConnector({
113
+ appKit: mockAppKit,
114
+ provider: provider,
115
+ config: baseConfig
116
+ });
117
+ const params = { method: 'eth_chainId', params: [] };
118
+ provider.request.mockResolvedValueOnce('0x1');
119
+ const result = await connector.request(params, 'eip155:1');
120
+ expect(provider.request).toHaveBeenCalledWith(params, 'eip155:1');
121
+ expect(result).toBe('0x1');
122
+ });
123
+ });
124
+ });
125
+ //# sourceMappingURL=UniversalConnector.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UniversalConnector.test.js","sourceRoot":"","sources":["../../../tests/UniversalConnector.test.ts"],"names":[],"mappings":"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"}