Skip to content

Commit

Permalink
Remove old type (coinbase#1485)
Browse files Browse the repository at this point in the history
* remove old type

* fix type
  • Loading branch information
cb-jake authored Jan 24, 2025
1 parent 93605f1 commit 9bc9a6c
Show file tree
Hide file tree
Showing 11 changed files with 37 additions and 39 deletions.
3 changes: 1 addition & 2 deletions packages/wallet-sdk/src/CoinbaseWalletProvider.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@ import { CB_WALLET_RPC_URL } from ':core/constants.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 @@ -30,7 +29,7 @@ beforeEach(() => {
vi.spyOn(util, 'createSigner').mockImplementation((params) => {
callback = params.callback;
return {
accounts: [AddressString('0x123')],
accounts: ['0x123'],
chainId: 1,
handshake: mockHandshake,
request: mockRequest,
Expand Down
5 changes: 2 additions & 3 deletions packages/wallet-sdk/src/core/type/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,9 +13,6 @@ export function OpaqueType<T extends Tag<string, unknown>>() {
export type HexString = OpaqueType<'HexString', string>;
export const HexString = OpaqueType<HexString>();

export type AddressString = OpaqueType<'AddressString', string>;
export const AddressString = OpaqueType<AddressString>();

export type BigIntString = OpaqueType<'BigIntString', string>;
export const BigIntString = OpaqueType<BigIntString>();

Expand All @@ -28,3 +25,5 @@ export type RegExpString = OpaqueType<'RegExpString', string>;
export const RegExpString = OpaqueType<RegExpString>();

export type Callback<T> = (err: Error | null, result: T | null) => void;

export type Address = `0x${string}`;
8 changes: 4 additions & 4 deletions packages/wallet-sdk/src/core/type/util.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
// Copyright (c) 2018-2023 Coinbase, Inc. <https://www.coinbase.com/>

import { standardErrors } from '../error/errors.js';
import { AddressString, BigIntString, HexString, IntNumber, RegExpString } from './index.js';
import { Address, BigIntString, HexString, IntNumber, RegExpString } from './index.js';

const INT_STRING_REGEX = /^[0-9]*$/;
const HEXADECIMAL_STRING_REGEX = /^[a-f0-9]*$/;
Expand Down Expand Up @@ -87,11 +87,11 @@ export function ensureEvenLengthHexString(hex: unknown, includePrefix = false):
return includePrefix ? HexString(`0x${h}`) : h;
}

export function ensureAddressString(str: unknown): AddressString {
export function ensureAddressString(str: unknown): Address {
if (typeof str === 'string') {
const s = strip0x(str).toLowerCase();
if (isHexString(s) && s.length === 40) {
return AddressString(prepend0x(s));
return prepend0x(s) as Address;
}
}
throw standardErrors.rpc.invalidParams(`Invalid Ethereum address: ${String(str)}`);
Expand Down Expand Up @@ -196,6 +196,6 @@ export function getFavicon(): string | null {
return `${protocol}//${host}${href}`;
}

export function areAddressArraysEqual(arr1: AddressString[], arr2: AddressString[]): boolean {
export function areAddressArraysEqual(arr1: Address[], arr2: Address[]): boolean {
return arr1.length === arr2.length && arr1.every((value, index) => value === arr2[index]);
}
6 changes: 3 additions & 3 deletions packages/wallet-sdk/src/sign/scw/SCWSigner.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ import { RPCRequestMessage, RPCResponseMessage } from ':core/message/RPCMessage.
import { RPCResponse } from ':core/message/RPCResponse.js';
import { AppMetadata, ProviderEventCallback, RequestArguments } from ':core/provider/interface.js';
import { ScopedLocalStorage } from ':core/storage/ScopedLocalStorage.js';
import { AddressString } from ':core/type/index.js';
import { Address } from ':core/type/index.js';
import { ensureIntNumber, hexStringFromNumber } from ':core/type/util.js';
import {
decryptContent,
Expand Down Expand Up @@ -39,7 +39,7 @@ export class SCWSigner implements Signer {
private readonly storage: ScopedLocalStorage;
private callback: ProviderEventCallback | null;

private accounts: AddressString[];
private accounts: Address[];
private chain: Chain;

constructor(params: ConstructorOptions) {
Expand Down Expand Up @@ -86,7 +86,7 @@ export class SCWSigner implements Signer {

switch (args.method) {
case 'eth_requestAccounts': {
const accounts = result.value as AddressString[];
const accounts = result.value as Address[];
this.accounts = accounts;
this.storage.storeObject(ACCOUNTS_KEY, accounts);
this.callback?.('accountsChanged', accounts);
Expand Down
14 changes: 7 additions & 7 deletions packages/wallet-sdk/src/sign/walletlink/WalletLinkSigner.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ import { standardErrorCodes } from ':core/error/constants.js';
import { standardErrors } from ':core/error/errors.js';
import { ProviderEventCallback } from ':core/provider/interface.js';
import { ScopedLocalStorage } from ':core/storage/ScopedLocalStorage.js';
import { AddressString } from ':core/type/index.js';
import { Address } from ':core/type/index.js';

vi.mock('./relay/WalletLinkRelay', () => {
return {
Expand Down Expand Up @@ -43,7 +43,7 @@ describe('LegacyProvider', () => {

it('handles enabling the provider successfully', async () => {
const provider = createAdapter();
const response = (await provider.request({ method: 'eth_requestAccounts' })) as AddressString[];
const response = (await provider.request({ method: 'eth_requestAccounts' })) as Address[];
expect(response[0]).toBe(MOCK_ADDERESS.toLowerCase());
expect(mockCallback).toHaveBeenCalledWith('connect', { chainId: '0x1' });
});
Expand All @@ -61,7 +61,7 @@ describe('LegacyProvider', () => {
const provider = createAdapter();
const response = (await provider.request({
method: 'eth_requestAccounts',
})) as AddressString[];
})) as Address[];
expect(response[0]).toBe(MOCK_ADDERESS.toLowerCase());
});

Expand Down Expand Up @@ -97,7 +97,7 @@ describe('LegacyProvider', () => {
// Set the account on the first request
const response1 = (await provider.request({
method: 'eth_requestAccounts',
})) as AddressString[];
})) as Address[];
expect(response1[0]).toBe(MOCK_ADDERESS.toLowerCase());

// @ts-expect-error accessing private value for test
Expand All @@ -106,7 +106,7 @@ describe('LegacyProvider', () => {
// Set the account on the first request
const response2 = (await provider.request({
method: 'eth_requestAccounts',
})) as AddressString[];
})) as Address[];
expect(response2[0]).toBe(MOCK_ADDERESS.toLowerCase());
});

Expand All @@ -120,7 +120,7 @@ describe('LegacyProvider', () => {
// Set the account on the first request
const response = (await provider.request({
method: 'eth_requestAccounts',
})) as AddressString[];
})) as Address[];
expect(response[0]).toBe(MOCK_ADDERESS.toLowerCase());
});

Expand All @@ -131,7 +131,7 @@ describe('LegacyProvider', () => {

beforeEach(() => {
sendRequestSpy.mockResolvedValue({
result: AddressString(MOCK_ADDERESS),
result: MOCK_ADDERESS,
});
});

Expand Down
8 changes: 4 additions & 4 deletions packages/wallet-sdk/src/sign/walletlink/WalletLinkSigner.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ import { WALLETLINK_URL } from ':core/constants.js';
import { standardErrors } from ':core/error/errors.js';
import { AppMetadata, ProviderEventCallback, RequestArguments } from ':core/provider/interface.js';
import { ScopedLocalStorage } from ':core/storage/ScopedLocalStorage.js';
import { AddressString } from ':core/type/index.js';
import { Address } from ':core/type/index.js';
import {
encodeToHexString,
ensureAddressString,
Expand All @@ -34,7 +34,7 @@ export class WalletLinkSigner implements Signer {
private metadata: AppMetadata;
private _relay: WalletLinkRelay | null = null;
private readonly _storage: ScopedLocalStorage;
private _addresses: AddressString[] = [];
private _addresses: Address[] = [];
private callback: ProviderEventCallback | null;

constructor(options: { metadata: AppMetadata; callback?: ProviderEventCallback }) {
Expand All @@ -44,7 +44,7 @@ export class WalletLinkSigner implements Signer {

const cachedAddresses = this._storage.getItem(LOCAL_STORAGE_ADDRESSES_KEY);
if (cachedAddresses) {
const addresses = cachedAddresses.split(' ') as AddressString[];
const addresses = cachedAddresses.split(' ') as Address[];
if (addresses[0] !== '') {
this._addresses = addresses.map((address) => ensureAddressString(address));
}
Expand All @@ -63,7 +63,7 @@ export class WalletLinkSigner implements Signer {
await this._eth_requestAccounts();
}

private get selectedAddress(): AddressString | undefined {
private get selectedAddress(): Address | undefined {
return this._addresses[0] || undefined;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ import { WLMobileRelayUI } from './ui/WLMobileRelayUI.js';
import { standardErrors } from ':core/error/errors.js';
import { AppMetadata } from ':core/provider/interface.js';
import { ScopedLocalStorage } from ':core/storage/ScopedLocalStorage.js';
import { AddressString } from ':core/type/index.js';
import { Address } from ':core/type/index.js';
import { bigIntStringFromBigInt, hexStringFromBuffer, randomBytesHex } from ':core/type/util.js';

export interface WalletLinkRelayOptions {
Expand Down Expand Up @@ -97,7 +97,7 @@ export class WalletLinkRelay implements WalletLinkConnectionUpdateListener {
this.isUnlinkedErrorState = false;

if (cachedAddresses) {
const addresses = cachedAddresses.split(' ') as AddressString[];
const addresses = cachedAddresses.split(' ') as string[];
const wasConnectedViaStandalone = this.storage.getItem('IsStandaloneSigning') === 'true';
if (addresses[0] !== '' && !linked && this._session.linked && !wasConnectedViaStandalone) {
this.isUnlinkedErrorState = true;
Expand Down Expand Up @@ -137,7 +137,7 @@ export class WalletLinkRelay implements WalletLinkConnectionUpdateListener {
Array.from(WalletLinkRelay.accountRequestCallbackIds.values()).forEach((id) => {
this.invokeCallback(id, {
method: 'requestEthereumAccounts',
result: [selectedAddress as AddressString],
result: [selectedAddress as Address],
});
});
WalletLinkRelay.accountRequestCallbackIds.clear();
Expand Down
4 changes: 2 additions & 2 deletions packages/wallet-sdk/src/sign/walletlink/relay/mocks/relay.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { Web3Response } from '../type/Web3Response.js';
import { WalletLinkRelay } from '../WalletLinkRelay.js';
import { MOCK_ADDERESS, MOCK_TX } from './fixtures.js';
import { AddressString, HexString } from ':core/type/index.js';
import { HexString } from ':core/type/index.js';

export function mockedWalletLinkRelay(): WalletLinkRelay {
return mock as unknown as WalletLinkRelay;
Expand All @@ -16,7 +16,7 @@ const mock = {
requestEthereumAccounts() {
return makeMockReturn({
method: 'requestEthereumAccounts',
result: [AddressString(MOCK_ADDERESS)],
result: [MOCK_ADDERESS],
});
},
addEthereumChain() {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import { AddressString, IntNumber } from ':core/type/index.js';
import { Address, IntNumber } from ':core/type/index.js';

export interface EthereumTransactionParams {
fromAddress: AddressString;
toAddress: AddressString | null;
fromAddress: Address;
toAddress: Address | null;
weiValue: bigint;
data: Buffer;
nonce: IntNumber | null;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
// Copyright (c) 2018-2023 Coinbase, Inc. <https://www.coinbase.com/>

import { AddressString, BigIntString, HexString, IntNumber } from ':core/type/index.js';
import { Address, BigIntString, HexString, IntNumber } from ':core/type/index.js';

export type Web3Method = _Web3Request['method'];
export type Web3Request<M extends Web3Method = Web3Method> = Extract<_Web3Request, { method: M }>;
Expand Down Expand Up @@ -58,16 +58,16 @@ type _Web3Request =
method: 'signEthereumMessage';
params: {
message: HexString;
address: AddressString;
address: Address;
addPrefix: boolean;
typedDataJson: string | null;
};
}
| {
method: 'signEthereumTransaction';
params: {
fromAddress: AddressString;
toAddress: AddressString | null;
fromAddress: Address;
toAddress: Address | null;
weiValue: BigIntString;
data: HexString;
nonce: IntNumber | null;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
// Copyright (c) 2018-2023 Coinbase, Inc. <https://www.coinbase.com/>

import { Web3Method } from './Web3Request.js';
import { AddressString, HexString } from ':core/type/index.js';
import { Address, HexString } from ':core/type/index.js';

export type Web3Response<M extends Web3Method = Web3Method> =
| Extract<_Web3Response, { method: M }>
Expand All @@ -21,7 +21,7 @@ type _Web3Response =
| {
method: 'connectAndSignIn';
result: {
accounts: AddressString[];
accounts: Address[];
message: HexString;
signature: HexString;
};
Expand All @@ -42,7 +42,7 @@ type _Web3Response =
}
| {
method: 'requestEthereumAccounts';
result: AddressString[];
result: Address[];
}
| {
method: 'watchAsset';
Expand All @@ -62,5 +62,5 @@ type _Web3Response =
}
| {
method: 'ethereumAddressFromSignedMessage';
result: AddressString;
result: Address;
};

0 comments on commit 9bc9a6c

Please sign in to comment.