@tronweb3/tronwallet-adapter-react-hooks 1.0.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,204 @@
1
+ import { WalletNotSelectedError, AdapterState } from '@tronweb3/tronwallet-abstract-adapter';
2
+ import { TronLinkAdapter } from '@tronweb3/tronwallet-adapter-tronlink';
3
+ import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';
4
+ import { WalletContext } from './useWallet.js';
5
+ import { useLocalStorage } from './useLocalStorage.js';
6
+ const initialState = {
7
+ wallet: null,
8
+ address: null,
9
+ connected: false,
10
+ adapter: null,
11
+ };
12
+ export const WalletProvider = function ({ children, adapters: adaptersPro = null, onError = (error) => console.error(error), localStorageKey = 'tronAdapterName', autoConnect = true, }) {
13
+ const [name, setName] = useLocalStorage(localStorageKey, null);
14
+ const [{ wallet, connected, address, adapter }, setState] = useState(initialState);
15
+ const [connecting, setConnecting] = useState(false);
16
+ const [disconnecting, setDisconnecting] = useState(false);
17
+ const isConnecting = useRef(false);
18
+ const isDisconnecting = useRef(false);
19
+ // set default supported adapters
20
+ const adapters = useMemo(() => {
21
+ if (adaptersPro === null) {
22
+ return [new TronLinkAdapter()];
23
+ }
24
+ return adaptersPro;
25
+ }, [adaptersPro]);
26
+ const [wallets, setWallets] = useState(() => adapters.map((adapter) => ({
27
+ adapter,
28
+ state: adapter.state,
29
+ })));
30
+ useEffect(function () {
31
+ setWallets((prevWallets) => adapters.map((adapter, index) => {
32
+ const wallet = prevWallets[index];
33
+ if (wallet && wallet.adapter === adapter && wallet.state === adapter.state) {
34
+ return wallet;
35
+ }
36
+ return {
37
+ adapter,
38
+ state: adapter.state,
39
+ };
40
+ }));
41
+ function handleStateChange() {
42
+ setWallets((prevWallets) => {
43
+ const index = prevWallets.findIndex((wallet) => wallet.adapter === this);
44
+ if (index === -1) {
45
+ return prevWallets;
46
+ }
47
+ return prevWallets.map((wallet, idx) => {
48
+ if (idx === index) {
49
+ return {
50
+ ...wallet,
51
+ state: wallet.adapter.state,
52
+ };
53
+ }
54
+ return wallet;
55
+ });
56
+ });
57
+ }
58
+ adapters.forEach((adapter) => adapter.on('stateChanged', handleStateChange, adapter));
59
+ return () => adapters.forEach((adapter) => adapter.off('stateChanged', handleStateChange, adapter));
60
+ }, [adapters]);
61
+ // Set state when choosen wallet changes
62
+ useEffect(function () {
63
+ const wallet = name && wallets.find((item) => item.adapter.name === name);
64
+ if (wallet) {
65
+ setState({
66
+ wallet,
67
+ adapter: wallet.adapter,
68
+ connected: wallet.adapter.connected,
69
+ address: wallet.adapter.address,
70
+ });
71
+ }
72
+ else {
73
+ setState(initialState);
74
+ }
75
+ }, [name, wallets]);
76
+ const handleConnect = useCallback(function () {
77
+ if (!adapter) {
78
+ return setName(null);
79
+ }
80
+ setState((state) => ({
81
+ ...state,
82
+ connected: adapter.connected,
83
+ address: adapter.address,
84
+ }));
85
+ }, [adapter, setName]);
86
+ const handleDisconnect = useCallback(function () {
87
+ setName(null);
88
+ }, [setName]);
89
+ const handleError = useCallback(function (error) {
90
+ onError(error);
91
+ return error;
92
+ }, [onError]);
93
+ const handleAccountChange = useCallback(function (address) {
94
+ setState((state) => ({ ...state, address }));
95
+ }, []);
96
+ useEffect(function () {
97
+ if (adapter) {
98
+ adapter.on('connect', handleConnect);
99
+ adapter.on('disconnect', handleDisconnect);
100
+ adapter.on('error', handleError);
101
+ adapter.on('accountsChanged', handleAccountChange);
102
+ return () => {
103
+ adapter.off('connect', handleConnect);
104
+ adapter.off('disconnect', handleDisconnect);
105
+ adapter.off('error', handleError);
106
+ adapter.off('accountsChanged', handleAccountChange);
107
+ };
108
+ }
109
+ }, [adapter, handleConnect, handleDisconnect, handleError, handleAccountChange]);
110
+ // disconnect the previous when wallet changes
111
+ useEffect(() => {
112
+ return () => {
113
+ adapter?.disconnect();
114
+ };
115
+ }, [adapter]);
116
+ // auto connect
117
+ useEffect(function () {
118
+ if (isConnecting.current ||
119
+ connected ||
120
+ !autoConnect ||
121
+ !adapter ||
122
+ adapter.state !== AdapterState.Disconnect) {
123
+ return;
124
+ }
125
+ (async function connect() {
126
+ isConnecting.current = true;
127
+ setConnecting(true);
128
+ try {
129
+ await adapter.connect();
130
+ }
131
+ catch (error) {
132
+ setName(null);
133
+ }
134
+ finally {
135
+ setConnecting(false);
136
+ isConnecting.current = false;
137
+ }
138
+ })();
139
+ }, [isConnecting, autoConnect, adapter, connected, setName]);
140
+ const connect = useCallback(async function () {
141
+ if (isConnecting.current || isDisconnecting.current || connected) {
142
+ return;
143
+ }
144
+ if (!adapter)
145
+ throw handleError(new WalletNotSelectedError());
146
+ isConnecting.current = true;
147
+ setConnecting(true);
148
+ try {
149
+ await adapter.connect();
150
+ }
151
+ catch (error) {
152
+ setName(null);
153
+ throw error;
154
+ }
155
+ finally {
156
+ setConnecting(false);
157
+ isConnecting.current = false;
158
+ }
159
+ }, [isConnecting, isDisconnecting, adapter, connected, handleError, setName]);
160
+ const disconnect = useCallback(async function () {
161
+ if (isDisconnecting.current)
162
+ return;
163
+ if (!adapter)
164
+ return setName(null);
165
+ isDisconnecting.current = true;
166
+ setDisconnecting(true);
167
+ try {
168
+ await adapter.disconnect();
169
+ }
170
+ catch (error) {
171
+ setName(null);
172
+ throw error;
173
+ }
174
+ finally {
175
+ setDisconnecting(false);
176
+ isDisconnecting.current = false;
177
+ }
178
+ }, [adapter, isDisconnecting, setName]);
179
+ const signTransaction = useCallback(async function (transaction, privateKey) {
180
+ if (!adapter)
181
+ throw handleError(new WalletNotSelectedError());
182
+ return await adapter.signTransaction(transaction, privateKey);
183
+ }, [adapter, handleError]);
184
+ const signMessage = useCallback(async function (message, privateKey) {
185
+ if (!adapter)
186
+ throw handleError(new WalletNotSelectedError());
187
+ return await adapter.signMessage(message, privateKey);
188
+ }, [adapter, handleError]);
189
+ return (React.createElement(WalletContext.Provider, { value: {
190
+ autoConnect,
191
+ wallets,
192
+ wallet,
193
+ address,
194
+ connecting,
195
+ connected,
196
+ disconnecting,
197
+ select: setName,
198
+ connect,
199
+ disconnect,
200
+ signTransaction,
201
+ signMessage,
202
+ } }, children));
203
+ };
204
+ //# sourceMappingURL=WalletProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WalletProvider.js","sourceRoot":"","sources":["../../src/WalletProvider.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ export * from './useLocalStorage.js';
2
+ export * from './useWallet.js';
3
+ export * from './WalletProvider.js';
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAC;AACrC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,qBAAqB,CAAC"}
@@ -0,0 +1,39 @@
1
+ import { useEffect, useRef, useState } from 'react';
2
+ import { isInBrowser } from '@tronweb3/tronwallet-abstract-adapter';
3
+ export function useLocalStorage(key, defaultState) {
4
+ const [state, setState] = useState(() => {
5
+ try {
6
+ const value = localStorage.getItem(key);
7
+ if (value)
8
+ return JSON.parse(value);
9
+ }
10
+ catch (error) {
11
+ if (isInBrowser()) {
12
+ console.error(error);
13
+ }
14
+ }
15
+ return defaultState;
16
+ });
17
+ const isFirstRender = useRef(true);
18
+ useEffect(() => {
19
+ if (isFirstRender.current) {
20
+ isFirstRender.current = false;
21
+ return;
22
+ }
23
+ try {
24
+ if (state === null) {
25
+ localStorage.removeItem(key);
26
+ }
27
+ else {
28
+ localStorage.setItem(key, JSON.stringify(state));
29
+ }
30
+ }
31
+ catch (error) {
32
+ if (isInBrowser()) {
33
+ console.error(error);
34
+ }
35
+ }
36
+ }, [state, key]);
37
+ return [state, setState];
38
+ }
39
+ //# sourceMappingURL=useLocalStorage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useLocalStorage.js","sourceRoot":"","sources":["../../src/useLocalStorage.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,uCAAuC,CAAC;AAEpE,MAAM,UAAU,eAAe,CAAI,GAAW,EAAE,YAAe;IAC3D,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAI,GAAG,EAAE;QACvC,IAAI;YACA,MAAM,KAAK,GAAG,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YACxC,IAAI,KAAK;gBAAE,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAM,CAAC;SAC5C;QAAC,OAAO,KAAc,EAAE;YACrB,IAAI,WAAW,EAAE,EAAE;gBACf,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;aACxB;SACJ;QAED,OAAO,YAAY,CAAC;IACxB,CAAC,CAAC,CAAC;IAEH,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;IACnC,SAAS,CAAC,GAAG,EAAE;QACX,IAAI,aAAa,CAAC,OAAO,EAAE;YACvB,aAAa,CAAC,OAAO,GAAG,KAAK,CAAC;YAC9B,OAAO;SACV;QACD,IAAI;YACA,IAAI,KAAK,KAAK,IAAI,EAAE;gBAChB,YAAY,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;aAChC;iBAAM;gBACH,YAAY,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;aACpD;SACJ;QAAC,OAAO,KAAU,EAAE;YACjB,IAAI,WAAW,EAAE,EAAE;gBACf,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;aACxB;SACJ;IACL,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC;IAEjB,OAAO,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;AAC7B,CAAC"}
@@ -0,0 +1,57 @@
1
+ import { createContext, useContext } from 'react';
2
+ function printError() {
3
+ console.error(`
4
+ You are using WalletContext without provide the WalletContext.Provider.
5
+ Please wrap your sub-components with a WalletProvider and provide required values.
6
+ `);
7
+ }
8
+ const DEFAULT_CONTEXT = {
9
+ autoConnect: false,
10
+ connecting: false,
11
+ connected: false,
12
+ disconnecting: false,
13
+ /* eslint-disable */
14
+ select(_name) {
15
+ printError();
16
+ },
17
+ connect() {
18
+ printError();
19
+ return Promise.reject();
20
+ },
21
+ disconnect() {
22
+ printError();
23
+ return Promise.reject();
24
+ },
25
+ signTransaction(_transaction) {
26
+ printError();
27
+ return Promise.reject();
28
+ },
29
+ signMessage(_message) {
30
+ printError();
31
+ return Promise.reject();
32
+ },
33
+ /* eslint-enable */
34
+ };
35
+ Object.defineProperty(DEFAULT_CONTEXT, 'wallets', {
36
+ get() {
37
+ printError();
38
+ return [];
39
+ },
40
+ });
41
+ Object.defineProperty(DEFAULT_CONTEXT, 'wallet', {
42
+ get() {
43
+ printError();
44
+ return null;
45
+ },
46
+ });
47
+ Object.defineProperty(DEFAULT_CONTEXT, 'address', {
48
+ get() {
49
+ printError();
50
+ return null;
51
+ },
52
+ });
53
+ export const WalletContext = createContext(DEFAULT_CONTEXT);
54
+ export function useWallet() {
55
+ return useContext(WalletContext);
56
+ }
57
+ //# sourceMappingURL=useWallet.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useWallet.js","sourceRoot":"","sources":["../../src/useWallet.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAsBlD,SAAS,UAAU;IACf,OAAO,CAAC,KAAK,CAAC;;;CAGjB,CAAC,CAAC;AACH,CAAC;AACD,MAAM,eAAe,GAAG;IACpB,WAAW,EAAE,KAAK;IAClB,UAAU,EAAE,KAAK;IACjB,SAAS,EAAE,KAAK;IAChB,aAAa,EAAE,KAAK;IACpB,oBAAoB;IACpB,MAAM,CAAC,KAAkB;QACrB,UAAU,EAAE,CAAC;IACjB,CAAC;IACD,OAAO;QACH,UAAU,EAAE,CAAC;QACb,OAAO,OAAO,CAAC,MAAM,EAAE,CAAC;IAC5B,CAAC;IACD,UAAU;QACN,UAAU,EAAE,CAAC;QACb,OAAO,OAAO,CAAC,MAAM,EAAE,CAAC;IAC5B,CAAC;IACD,eAAe,CAAC,YAAyB;QACrC,UAAU,EAAE,CAAC;QACb,OAAO,OAAO,CAAC,MAAM,EAAE,CAAC;IAC5B,CAAC;IACD,WAAW,CAAC,QAAgB;QACxB,UAAU,EAAE,CAAC;QACb,OAAO,OAAO,CAAC,MAAM,EAAE,CAAC;IAC5B,CAAC;IACD,mBAAmB;CACA,CAAC;AAExB,MAAM,CAAC,cAAc,CAAC,eAAe,EAAE,SAAS,EAAE;IAC9C,GAAG;QACC,UAAU,EAAE,CAAC;QACb,OAAO,EAAE,CAAC;IACd,CAAC;CACJ,CAAC,CAAC;AACH,MAAM,CAAC,cAAc,CAAC,eAAe,EAAE,QAAQ,EAAE;IAC7C,GAAG;QACC,UAAU,EAAE,CAAC;QACb,OAAO,IAAI,CAAC;IAChB,CAAC;CACJ,CAAC,CAAC;AACH,MAAM,CAAC,cAAc,CAAC,eAAe,EAAE,SAAS,EAAE;IAC9C,GAAG;QACC,UAAU,EAAE,CAAC;QACb,OAAO,IAAI,CAAC;IAChB,CAAC;CACJ,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,aAAa,GAAG,aAAa,CAAqB,eAAqC,CAAC,CAAC;AACtG,MAAM,UAAU,SAAS;IACrB,OAAO,UAAU,CAAC,aAAa,CAAC,CAAC;AACrC,CAAC"}
@@ -0,0 +1,11 @@
1
+ import type { Adapter, WalletError } from '@tronweb3/tronwallet-abstract-adapter';
2
+ import type { FC, ReactNode } from 'react';
3
+ export interface WalletProviderProps {
4
+ children: ReactNode;
5
+ adapters?: Adapter[];
6
+ onError?: (error: WalletError) => void;
7
+ localStorageKey?: string;
8
+ autoConnect?: boolean;
9
+ }
10
+ export declare const WalletProvider: FC<WalletProviderProps>;
11
+ //# sourceMappingURL=WalletProvider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WalletProvider.d.ts","sourceRoot":"","sources":["../../src/WalletProvider.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,WAAW,EAA4B,MAAM,uCAAuC,CAAC;AAE5G,OAAO,KAAK,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAM3C,MAAM,WAAW,mBAAmB;IAChC,QAAQ,EAAE,SAAS,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAC;IACrB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,CAAC;IACvC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,WAAW,CAAC,EAAE,OAAO,CAAC;CACzB;AAcD,eAAO,MAAM,cAAc,EAAE,EAAE,CAAC,mBAAmB,CAqPlD,CAAC"}
@@ -0,0 +1,4 @@
1
+ export * from './useLocalStorage.js';
2
+ export * from './useWallet.js';
3
+ export * from './WalletProvider.js';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAC;AACrC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,qBAAqB,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { Dispatch, SetStateAction } from 'react';
2
+ export declare function useLocalStorage<T>(key: string, defaultState: T): [T, Dispatch<SetStateAction<T>>];
3
+ //# sourceMappingURL=useLocalStorage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useLocalStorage.d.ts","sourceRoot":"","sources":["../../src/useLocalStorage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAItD,wBAAgB,eAAe,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAkCjG"}
@@ -0,0 +1,23 @@
1
+ /// <reference types="react" />
2
+ import type { Adapter, AdapterName, AdapterState } from '@tronweb3/tronwallet-abstract-adapter';
3
+ export interface Wallet {
4
+ adapter: Adapter;
5
+ state: AdapterState;
6
+ }
7
+ export interface WalletContextState {
8
+ autoConnect: boolean;
9
+ wallets: Wallet[];
10
+ wallet: Wallet | null;
11
+ address: string | null;
12
+ connecting: boolean;
13
+ connected: boolean;
14
+ disconnecting: boolean;
15
+ select(adapterName: AdapterName): void;
16
+ connect(): Promise<void>;
17
+ disconnect(): Promise<void>;
18
+ signTransaction: Adapter['signTransaction'];
19
+ signMessage: Adapter['signMessage'];
20
+ }
21
+ export declare const WalletContext: import("react").Context<WalletContextState>;
22
+ export declare function useWallet(): WalletContextState;
23
+ //# sourceMappingURL=useWallet.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useWallet.d.ts","sourceRoot":"","sources":["../../src/useWallet.ts"],"names":[],"mappings":";AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,WAAW,EAAe,YAAY,EAAE,MAAM,uCAAuC,CAAC;AAG7G,MAAM,WAAW,MAAM;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,YAAY,CAAC;CACvB;AACD,MAAM,WAAW,kBAAkB;IAC/B,WAAW,EAAE,OAAO,CAAC;IACrB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,UAAU,EAAE,OAAO,CAAC;IACpB,SAAS,EAAE,OAAO,CAAC;IACnB,aAAa,EAAE,OAAO,CAAC;IAEvB,MAAM,CAAC,WAAW,EAAE,WAAW,GAAG,IAAI,CAAC;IACvC,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACzB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAE5B,eAAe,EAAE,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAC5C,WAAW,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;CACvC;AAsDD,eAAO,MAAM,aAAa,6CAA2E,CAAC;AACtG,wBAAgB,SAAS,IAAI,kBAAkB,CAE9C"}
package/package.json ADDED
@@ -0,0 +1,53 @@
1
+ {
2
+ "name": "@tronweb3/tronwallet-adapter-react-hooks",
3
+ "version": "1.0.0",
4
+ "author": "tronprotocol",
5
+ "repository": {
6
+ "type": "git",
7
+ "url": "https://github.com/tronprotocol/tronwallet-adapter"
8
+ },
9
+ "license": "MIT",
10
+ "type": "module",
11
+ "sideEffects": false,
12
+ "engines": {
13
+ "node": ">=16",
14
+ "pnpm": ">=7"
15
+ },
16
+ "main": "./lib/cjs/index.js",
17
+ "module": "./lib/esm/index.js",
18
+ "types": "./lib/types/index.d.ts",
19
+ "exports": {
20
+ "require": "./lib/cjs/index.js",
21
+ "import": "./lib/esm/index.js",
22
+ "types": "./lib/types/index.d.ts"
23
+ },
24
+ "files": [
25
+ "lib",
26
+ "src",
27
+ "LICENSE"
28
+ ],
29
+ "publishConfig": {
30
+ "access": "public"
31
+ },
32
+ "peerDependencies": {
33
+ "react": "*",
34
+ "react-dom": "*"
35
+ },
36
+ "dependencies": {
37
+ "@tronweb3/tronwallet-abstract-adapter": "^1.0.0",
38
+ "@tronweb3/tronwallet-adapter-tronlink": "^1.0.0"
39
+ },
40
+ "devDependencies": {
41
+ "@types/react": "^18.0.26",
42
+ "@types/react-dom": "^18.0.6",
43
+ "jest-localstorage-mock": "^2.4.22",
44
+ "react": "^18.2.0",
45
+ "react-dom": "^18.2.0",
46
+ "shx": "^0.3.4"
47
+ },
48
+ "scripts": {
49
+ "clean": "shx mkdir -p lib && shx rm -rf lib",
50
+ "package": "shx echo '{ \"type\": \"commonjs\" }' > lib/cjs/package.json",
51
+ "test": "jest"
52
+ }
53
+ }