Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix: project module resolution #1421

Closed
wants to merge 5 commits into from
Closed
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,7 @@ module.exports = {
// TODO: change this back to error
'@typescript-eslint/no-explicit-any': 'warn',
'no-useless-constructor': 'off',
'jest/no-deprecated-functions': 'off',
},
overrides: [
{
Expand Down
7 changes: 3 additions & 4 deletions packages/wallet-sdk/.npmignore
Original file line number Diff line number Diff line change
Expand Up @@ -10,12 +10,11 @@ tsconfig.build.json
.eslintignore
.eslintrc.js
.prettierignore
babel.config.js
release.sh

# Jest
jest.setup.ts
jest.config.ts
# Vitest
vitest.setup.ts
vitest.config.ts
coverage/**

compile-assets.js
22 changes: 0 additions & 22 deletions packages/wallet-sdk/babel.config.js

This file was deleted.

62 changes: 0 additions & 62 deletions packages/wallet-sdk/jest.config.ts

This file was deleted.

11 changes: 0 additions & 11 deletions packages/wallet-sdk/jest.setup.ts

This file was deleted.

39 changes: 20 additions & 19 deletions packages/wallet-sdk/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -11,59 +11,60 @@
"walletlink",
"web3"
],
"type": "module",
"main": "dist/index.js",
"types": "dist/index.d.ts",
"sideEffects": false,
"repository": "https://github.com/coinbase/coinbase-wallet-sdk.git",
"author": "Coinbase, Inc.",
"license": "Apache-2.0",
"scripts": {
"pretest": "node compile-assets.js",
"test": "jest",
"pretest": "node compile-assets.cjs",
"test": "vitest",
"test:coverage": "yarn test:unit && open coverage/lcov-report/index.html",
"prebuild": "rm -rf ./dist && node -p \"'export const LIB_VERSION = \\'' + require('./package.json').version + '\\';'\" > src/version.ts",
"build": "node compile-assets.js && tsc -p ./tsconfig.build.json && tsc-alias && cp -a src/vendor-js dist",
"build": "node compile-assets.cjs && tsc -p ./tsconfig.build.json && tsc-alias && cp -a src/vendor-js dist",
"dev": "yarn build && tsc --watch & nodemon --watch dist --delay 1 --exec tsc-alias",
"typecheck": "tsc --noEmit",
"lint": "eslint . --ext .ts,.tsx --fix"
"lint": "eslint . --ext .ts,.tsx --fix",
"size": "size-limit"
},
"dependencies": {
"@noble/hashes": "^1.4.0",
"clsx": "^1.2.1",
"eventemitter3": "^5.0.1",
"preact": "^10.16.0"
"preact": "^10.24.2",
"vitest": "^2.1.2"
},
"devDependencies": {
"@babel/core": "^7.22.9",
"@babel/plugin-proposal-decorators": "^7.22.7",
"@babel/plugin-transform-react-jsx": "^7.22.5",
"@babel/preset-env": "^7.22.9",
"@babel/preset-typescript": "^7.22.5",
"@peculiar/webcrypto": "^1.4.3",
"@size-limit/preset-big-lib": "^11.1.6",
"@testing-library/jest-dom": "^6.5.0",
"@testing-library/preact": "^2.0.1",
"@types/jest": "^27.5.2",
"@testing-library/preact": "^3.2.4",
"@types/node": "^14.18.54",
"@typescript-eslint/eslint-plugin": "^6.2.0",
"@typescript-eslint/parser": "^6.2.0",
"babel-jest": "^27.5.1",
"eslint": "^8.45.0",
"eslint-config-preact": "^1.3.0",
"eslint-config-prettier": "^8.8.0",
"eslint-plugin-prettier": "^5.0.0",
"eslint-plugin-simple-import-sort": "^10.0.0",
"eslint-plugin-unused-imports": "^3.0.0",
"glob": "^11.0.0",
"jest": "^27.5.1",
"jest-chrome": "^0.7.2",
"jest-websocket-mock": "^2.4.0",
"jsdom": "^25.0.1",
"nodemon": "^3.1.0",
"prettier": "^3.0.0",
"sass": "^1.64.1",
"ts-jest": "^27.1.5",
"ts-node": "^10.9.1",
"size-limit": "^11.1.6",
"tsc-alias": "^1.8.8",
"tslib": "^2.6.0",
"typescript": "^5.1.6"
}
},
"size-limit": [
cb-jake marked this conversation as resolved.
Show resolved Hide resolved
{
"path": "./dist/index.js",
"limit": "31 KB",
"import": "*"
}
]
}
35 changes: 18 additions & 17 deletions packages/wallet-sdk/src/CoinbaseWalletProvider.test.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
import { CoinbaseWalletProvider } from './CoinbaseWalletProvider';
import { standardErrorCodes, standardErrors } from './core/error';
import * as util from './sign/util';
import { ProviderEventCallback, RequestArguments } from ':core/provider/interface';
import { AddressString } from ':core/type';
import { CoinbaseWalletProvider } from './CoinbaseWalletProvider.js';
import * as util from './sign/util.js';
import { standardErrorCodes } from ':core/error/constants.js';
import { standardErrors } from ':core/error/errors.js';
import { ProviderEventCallback, RequestArguments } from ':core/provider/interface.js';
import { AddressString } from ':core/type/index.js';

function createProvider() {
return new CoinbaseWalletProvider({
Expand All @@ -11,19 +12,19 @@ function createProvider() {
});
}

const mockHandshake = jest.fn();
const mockRequest = jest.fn();
const mockCleanup = jest.fn();
const mockFetchSignerType = jest.spyOn(util, 'fetchSignerType');
const mockStoreSignerType = jest.spyOn(util, 'storeSignerType');
const mockLoadSignerType = jest.spyOn(util, 'loadSignerType');
const mockHandshake = vi.fn();
const mockRequest = vi.fn();
const mockCleanup = vi.fn();
const mockFetchSignerType = vi.spyOn(util, 'fetchSignerType');
const mockStoreSignerType = vi.spyOn(util, 'storeSignerType');
const mockLoadSignerType = vi.spyOn(util, 'loadSignerType');

let provider: CoinbaseWalletProvider;
let callback: ProviderEventCallback;

beforeEach(() => {
jest.resetAllMocks();
jest.spyOn(util, 'createSigner').mockImplementation((params) => {
vi.resetAllMocks();
vi.spyOn(util, 'createSigner').mockImplementation((params) => {
callback = params.callback;
return {
accounts: [AddressString('0x123')],
Expand All @@ -39,7 +40,7 @@ beforeEach(() => {

describe('Event handling', () => {
it('emits disconnect event on user initiated disconnection', async () => {
const disconnectListener = jest.fn();
const disconnectListener = vi.fn();
provider.on('disconnect', disconnectListener);

await provider.disconnect();
Expand All @@ -50,7 +51,7 @@ describe('Event handling', () => {
});

it('should emit chainChanged event on chainId change', async () => {
const chainChangedListener = jest.fn();
const chainChangedListener = vi.fn();
provider.on('chainChanged', chainChangedListener);

await provider.request({ method: 'eth_requestAccounts' });
Expand All @@ -60,7 +61,7 @@ describe('Event handling', () => {
});

it('should emit accountsChanged event on account change', async () => {
const accountsChangedListener = jest.fn();
const accountsChangedListener = vi.fn();
provider.on('accountsChanged', accountsChangedListener);

await provider.request({ method: 'eth_requestAccounts' });
Expand Down Expand Up @@ -106,7 +107,7 @@ describe('Signer configuration', () => {

it('should support enable', async () => {
mockFetchSignerType.mockResolvedValue('scw');
jest.spyOn(console, 'warn').mockImplementation();
vi.spyOn(console, 'warn').mockImplementation(() => {});

await provider.enable();
expect(mockHandshake).toHaveBeenCalledWith({ method: 'eth_requestAccounts' });
Expand Down
21 changes: 11 additions & 10 deletions packages/wallet-sdk/src/CoinbaseWalletProvider.ts
Original file line number Diff line number Diff line change
@@ -1,20 +1,21 @@
import { standardErrorCodes, standardErrors } from './core/error';
import { serializeError } from './core/error/serialize';
import { Signer } from './sign/interface.js';
import { createSigner, fetchSignerType, loadSignerType, storeSignerType } from './sign/util.js';
import { Communicator } from ':core/communicator/Communicator.js';
import { standardErrorCodes } from ':core/error/constants.js';
import { standardErrors } from ':core/error/errors.js';
import { serializeError } from ':core/error/serialize.js';
import { SignerType } from ':core/message/ConfigMessage.js';
import {
AppMetadata,
ConstructorOptions,
Preference,
ProviderEventEmitter,
ProviderInterface,
RequestArguments,
} from './core/provider/interface';
import { Signer } from './sign/interface';
import { createSigner, fetchSignerType, loadSignerType, storeSignerType } from './sign/util';
import { checkErrorForInvalidRequestArgs } from './util/provider';
import { Communicator } from ':core/communicator/Communicator';
import { SignerType } from ':core/message';
import { ScopedLocalStorage } from ':core/storage/ScopedLocalStorage';
import { hexStringFromNumber } from ':core/type/util';
} from ':core/provider/interface.js';
import { ScopedLocalStorage } from ':core/storage/ScopedLocalStorage.js';
import { hexStringFromNumber } from ':core/type/util.js';
import { checkErrorForInvalidRequestArgs } from ':util/provider.js';

export class CoinbaseWalletProvider extends ProviderEventEmitter implements ProviderInterface {
private readonly metadata: AppMetadata;
Expand Down
28 changes: 15 additions & 13 deletions packages/wallet-sdk/src/CoinbaseWalletSDK.test.ts
Original file line number Diff line number Diff line change
@@ -1,18 +1,20 @@
import { CoinbaseWalletProvider } from './CoinbaseWalletProvider';
import { CoinbaseWalletSDK } from './CoinbaseWalletSDK';
import { ProviderInterface } from ':core/provider/interface';
import { getFavicon } from ':core/type/util';
import { getCoinbaseInjectedProvider } from ':util/provider';
import { Mock } from 'vitest';

jest.mock(':core/type/util');
jest.mock(':util/provider');
jest.mock('./CoinbaseWalletProvider');
jest.mock('./util/crossOriginOpenerPolicy');
import { CoinbaseWalletProvider } from './CoinbaseWalletProvider.js';
import { CoinbaseWalletSDK } from './CoinbaseWalletSDK.js';
import { ProviderInterface } from ':core/provider/interface.js';
import { getFavicon } from ':core/type/util.js';
import { getCoinbaseInjectedProvider } from ':util/provider.js';

vi.mock(':core/type/util');
vi.mock(':util/provider');
vi.mock('./CoinbaseWalletProvider');
vi.mock('./util/crossOriginOpenerPolicy');

describe('CoinbaseWalletSDK', () => {
test('@makeWeb3Provider - return Coinbase Injected Provider', () => {
const injectedProvider = {} as unknown as ProviderInterface;
(getCoinbaseInjectedProvider as jest.Mock).mockReturnValue(injectedProvider);
(getCoinbaseInjectedProvider as Mock).mockReturnValue(injectedProvider);

const SDK = new CoinbaseWalletSDK({
appName: 'Test',
Expand All @@ -23,7 +25,7 @@ describe('CoinbaseWalletSDK', () => {
});

test('@makeWeb3Provider - return new CoinbaseWalletProvider', () => {
(getCoinbaseInjectedProvider as jest.Mock).mockReturnValue(undefined);
(getCoinbaseInjectedProvider as Mock).mockReturnValue(undefined);

const SDK = new CoinbaseWalletSDK({
appName: 'Test',
Expand All @@ -45,8 +47,8 @@ describe('CoinbaseWalletSDK', () => {
});

test('@makeWeb3Provider - default values for metadata', () => {
(getFavicon as jest.Mock).mockReturnValue('https://dapp.xyz/pic.png');
(getCoinbaseInjectedProvider as jest.Mock).mockReturnValue(undefined);
(getFavicon as Mock).mockReturnValue('https://dapp.xyz/pic.png');
(getCoinbaseInjectedProvider as Mock).mockReturnValue(undefined);

const SDK = new CoinbaseWalletSDK({
appName: '',
Expand Down
16 changes: 8 additions & 8 deletions packages/wallet-sdk/src/CoinbaseWalletSDK.ts
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
// Copyright (c) 2018-2024 Coinbase, Inc. <https://www.coinbase.com/>

import { LogoType, walletLogo } from './assets/wallet-logo';
import { CoinbaseWalletProvider } from './CoinbaseWalletProvider';
import { AppMetadata, Preference, ProviderInterface } from './core/provider/interface';
import { LIB_VERSION } from './version';
import { ScopedLocalStorage } from ':core/storage/ScopedLocalStorage';
import { getFavicon } from ':core/type/util';
import { checkCrossOriginOpenerPolicy } from ':util/crossOriginOpenerPolicy';
import { getCoinbaseInjectedProvider } from ':util/provider';
import { LogoType, walletLogo } from './assets/wallet-logo.js';
import { CoinbaseWalletProvider } from './CoinbaseWalletProvider.js';
import { LIB_VERSION } from './version.js';
import { AppMetadata, Preference, ProviderInterface } from ':core/provider/interface.js';
import { ScopedLocalStorage } from ':core/storage/ScopedLocalStorage.js';
import { getFavicon } from ':core/type/util.js';
import { checkCrossOriginOpenerPolicy } from ':util/crossOriginOpenerPolicy.js';
import { getCoinbaseInjectedProvider } from ':util/provider.js';

// for backwards compatibility
type CoinbaseWalletSDKOptions = Partial<AppMetadata>;
Expand Down
Loading
Loading