From 805a5611347f0bc28d2a49ecc77503475e32e1a8 Mon Sep 17 00:00:00 2001 From: hotwater Date: Wed, 5 Jun 2024 15:22:11 +0300 Subject: [PATCH] refactor: drop tests and fix typecheck --- package.json | 1 + packages/core/package.json | 5 +- packages/core/src/actions/app/channel.test.ts | 42 ----- .../src/actions/app/createChannel.test.ts | 71 -------- .../app/pollChannelTillCompleted.test.ts | 35 ---- .../src/actions/app/verifySiweMessage.test.ts | 80 --------- .../src/actions/auth/authenticate.test.ts | 80 --------- .../core/src/clients/createAppClient.test.ts | 38 ---- .../core/src/clients/createClient.test.ts | 61 ------- .../src/clients/createWalletClient.test.ts | 37 ---- .../core/src/clients/transports/http.test.ts | 156 ---------------- packages/react/package.json | 2 +- packages/react/tsconfig.build.json | 2 +- packages/react/tsconfig.json | 2 +- pnpm-lock.yaml | 167 ++++++++++++++---- tsconfig.base.json | 1 + tsconfig.json | 5 +- turbo.json | 3 + 18 files changed, 141 insertions(+), 647 deletions(-) delete mode 100644 packages/core/src/actions/app/channel.test.ts delete mode 100644 packages/core/src/actions/app/createChannel.test.ts delete mode 100644 packages/core/src/actions/app/pollChannelTillCompleted.test.ts delete mode 100644 packages/core/src/actions/app/verifySiweMessage.test.ts delete mode 100644 packages/core/src/actions/auth/authenticate.test.ts delete mode 100644 packages/core/src/clients/createAppClient.test.ts delete mode 100644 packages/core/src/clients/createClient.test.ts delete mode 100644 packages/core/src/clients/createWalletClient.test.ts delete mode 100644 packages/core/src/clients/transports/http.test.ts diff --git a/package.json b/package.json index 4425e30..b04f193 100644 --- a/package.json +++ b/package.json @@ -8,6 +8,7 @@ "dev": "turbo run dev --parallel", "test": "turbo run test", "test:ci": "turbo run test:ci -- --passWithNoTests", + "typecheck": "turbo run typecheck", "format": "biome format . --write", "lint": "biome check .", "preconstruct": "node --import tsx .scripts/preconstruct.ts", diff --git a/packages/core/package.json b/packages/core/package.json index 536c62a..fe6f664 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -78,10 +78,11 @@ "siwe": "^2.3.2" }, "peerDependencies": { - "viem": "1.x || 2.x" + "viem": "2.x" }, "devDependencies": { - "viem": "^1.21.4" + "@jest/globals": "^29.7.0", + "viem": "^2.13.6" }, "keywords": [ "farcaster", diff --git a/packages/core/src/actions/app/channel.test.ts b/packages/core/src/actions/app/channel.test.ts deleted file mode 100644 index b675313..0000000 --- a/packages/core/src/actions/app/channel.test.ts +++ /dev/null @@ -1,42 +0,0 @@ -import { jest } from '@jest/globals' -import { createAppClient } from '../../clients/createAppClient.js' -import { viemConnector } from '../../clients/ethereum/viemConnector.js' -import type { ChannelReturnType } from './channel.js' - -describe('channel', () => { - const client = createAppClient({ - ethereum: viemConnector(), - }) - - afterEach(() => { - jest.restoreAllMocks() - }) - - const channelResponseDataStub: ChannelReturnType = { - state: 'pending', - nonce: 'abcd1234', - url: 'https://warpcast.com/~/sign-in-with-farcaster?nonce=abcd1234[...]', - } - - test('constructs request', async () => { - const spy = jest - .spyOn(global, 'fetch') - .mockResolvedValue(new Response(JSON.stringify(channelResponseDataStub))) - - const res = await client.channel({ - channelToken: 'some-channel-token', - }) - - expect(res).toEqual(channelResponseDataStub) - expect(spy).toHaveBeenCalledTimes(1) - expect(spy).toHaveBeenCalledWith( - 'https://relay.farcaster.xyz/v1/channel/channel', - { - headers: { - 'Content-Type': 'application/json', - Authorization: 'Bearer some-channel-token', - }, - }, - ) - }) -}) diff --git a/packages/core/src/actions/app/createChannel.test.ts b/packages/core/src/actions/app/createChannel.test.ts deleted file mode 100644 index 3bf215d..0000000 --- a/packages/core/src/actions/app/createChannel.test.ts +++ /dev/null @@ -1,71 +0,0 @@ -import { jest } from '@jest/globals' -import { createAppClient } from '../../clients/createAppClient.js' -import { viemConnector } from '../../clients/ethereum/viemConnector.js' -import { AuthClientError } from '../../errors.js' -import type { CreateChannelReturnType } from './createChannel.js' - -describe('createChannel', () => { - const client = createAppClient({ - ethereum: viemConnector(), - }) - - afterEach(() => { - jest.restoreAllMocks() - }) - - const siweUri = 'https://example.com/login' - const domain = 'example.com' - const nonce = 'abcd1234' - - const createChannelResponseDataStub: CreateChannelReturnType = { - url: 'https://some-url', - state: 'pending', - nonce, - } - - test('constructs API request', async () => { - const spy = jest - .spyOn(global, 'fetch') - .mockResolvedValue( - new Response(JSON.stringify(createChannelResponseDataStub)), - ) - - const res = await client.createChannel({ - siweUri, - domain, - nonce, - }) - - expect(res).toEqual(createChannelResponseDataStub) - expect(spy).toHaveBeenCalledTimes(1) - expect(spy).toHaveBeenCalledWith('https://relay.farcaster.xyz/v1/channel', { - method: 'POST', - body: JSON.stringify({ - siweUri, - domain, - nonce, - }), - headers: { - 'Content-Type': 'application/json', - }, - }) - }) - - test('handles errors', async () => { - const spy = jest - .spyOn(global, 'fetch') - .mockRejectedValue(new Error('some error')) - - try { - await client.createChannel({ - siweUri, - domain, - nonce, - }) - expect(true).toBe(false) - } catch (e) { - expect(spy).toHaveBeenCalledTimes(1) - expect(e).toEqual(new AuthClientError('unknown', 'some error')) - } - }) -}) diff --git a/packages/core/src/actions/app/pollChannelTillCompleted.test.ts b/packages/core/src/actions/app/pollChannelTillCompleted.test.ts deleted file mode 100644 index 36c8b44..0000000 --- a/packages/core/src/actions/app/pollChannelTillCompleted.test.ts +++ /dev/null @@ -1,35 +0,0 @@ -import { jest } from '@jest/globals' -import { createAppClient } from '../../clients/createAppClient.js' -import { viemConnector } from '../../clients/ethereum/viemConnector.js' - -describe('channel', () => { - const client = createAppClient({ - ethereum: viemConnector(), - }) - - afterEach(() => { - jest.restoreAllMocks() - }) - - test('polls for channel changes', async () => { - const pending1 = new Response(JSON.stringify({ state: 'pending' }), { - status: 202, - }) - const pending2 = new Response(JSON.stringify({ state: 'pending' }), { - status: 202, - }) - const completed = new Response(JSON.stringify({ state: 'completed' })) - const fetchSpy = jest - .spyOn(global, 'fetch') - .mockResolvedValueOnce(pending1) - .mockResolvedValueOnce(pending2) - .mockResolvedValueOnce(completed) - - const res = await client.pollChannelTillCompleted({ - channelToken: 'some-channel-token', - }) - - expect(res).toEqual({ state: 'completed' }) - expect(fetchSpy).toHaveBeenCalledTimes(3) - }) -}) diff --git a/packages/core/src/actions/app/verifySiweMessage.test.ts b/packages/core/src/actions/app/verifySiweMessage.test.ts deleted file mode 100644 index 863f353..0000000 --- a/packages/core/src/actions/app/verifySiweMessage.test.ts +++ /dev/null @@ -1,80 +0,0 @@ -import { JsonRpcProvider } from 'ethers' -import { generatePrivateKey, privateKeyToAccount } from 'viem/accounts' -import { createAppClient } from '../../clients/createAppClient.js' -import { viemConnector } from '../../clients/ethereum/viemConnector.js' -import { AuthClientError } from '../../errors.js' -import { createSiweMessage } from '../../utils/createSiweMessage.js' - -describe('verifySiweMessage', () => { - const client = createAppClient( - { - ethereum: viemConnector(), - }, - new JsonRpcProvider('https://mainnet.optimism.io/', 10), - ) - - const account = privateKeyToAccount(generatePrivateKey()) - - const siweParams = { - domain: 'example.com', - uri: 'https://example.com/login', - version: '1', - issuedAt: '2023-10-01T00:00:00.000Z', - nonce: 'abcd1234', - } - const { nonce, domain } = siweParams - - test('verifies sign in message', async () => { - const siweMessage = createSiweMessage({ - ...siweParams, - address: account.address, - fid: 1234, - }) - - const signature = await account.signMessage({ - message: siweMessage.toMessage(), - }) - - const errMsg = `Invalid resource: signer ${account.address} does not own fid 1234.` - const err = new AuthClientError('unauthorized', errMsg) - try { - await client.verifySiweMessage({ - nonce, - domain, - message: siweMessage.toMessage(), - signature, - }) - expect(true).toBe(false) - } catch (e) { - expect(e).toStrictEqual(err) - } - }) - - test('verifies 1271 sign in message', async () => { - const LGTM = '0xC89858205c6AdDAD842E1F58eD6c42452671885A' - const siweMessage = createSiweMessage({ - ...siweParams, - address: LGTM, - fid: 1234, - }) - - const signature = await account.signMessage({ - message: siweMessage.toMessage(), - }) - - const errMsg = `Invalid resource: signer ${LGTM} does not own fid 1234.` - const err = new AuthClientError('unauthorized', errMsg) - - try { - await client.verifySiweMessage({ - nonce, - domain, - message: siweMessage, - signature, - }) - expect(true).toBe(false) - } catch (e) { - expect(e).toStrictEqual(err) - } - }) -}) diff --git a/packages/core/src/actions/auth/authenticate.test.ts b/packages/core/src/actions/auth/authenticate.test.ts deleted file mode 100644 index fef816c..0000000 --- a/packages/core/src/actions/auth/authenticate.test.ts +++ /dev/null @@ -1,80 +0,0 @@ -import { jest } from '@jest/globals' -import { createWalletClient } from '../../clients/createWalletClient.js' -import { viemConnector } from '../../clients/ethereum/viemConnector.js' -import type { AuthenticateReturnType } from './authenticate.js' - -describe('authenticate', () => { - const client = createWalletClient({ - relay: 'https://relay.farcaster.xyz', - ethereum: viemConnector(), - }) - - afterEach(() => { - jest.restoreAllMocks() - }) - - const message = - 'example.com wants you to sign in with your Ethereum account = [...]' - const signature = '0xabcd1234' - const fid = 1 - const username = 'alice' - const bio = "I'm a little teapot who didn't fill out my bio" - const displayName = 'Alice Teapot' - const pfpUrl = 'https://example.com/alice.png' - - const statusResponseDataStub: AuthenticateReturnType = { - status: 'completed', - nonce: 'abcd1234', - url: 'https://warpcast.com/~/sign-in-with-farcaster?nonce=abcd1234[...]', - message, - signature, - fid, - username, - bio, - displayName, - pfpUrl, - verifications: [], - custody: '0x0000000000000000000000000000000000000000', - } - - test('constructs API request', async () => { - const spy = jest - .spyOn(global, 'fetch') - .mockResolvedValue(new Response(JSON.stringify(statusResponseDataStub))) - - const res = await client.authenticate({ - authKey: 'some-auth-key', - channelToken: 'some-channel-token', - message, - signature, - fid, - username, - bio, - displayName, - pfpUrl, - }) - - expect(res).toEqual(statusResponseDataStub) - expect(spy).toHaveBeenCalledTimes(1) - expect(spy).toHaveBeenCalledWith( - 'https://relay.farcaster.xyz/v1/channel/authenticate', - { - method: 'POST', - body: JSON.stringify({ - message, - signature, - fid, - username, - bio, - displayName, - pfpUrl, - }), - headers: { - 'Content-Type': 'application/json', - Authorization: 'Bearer some-channel-token', - 'X-Farcaster-Auth-Relay-Key': 'some-auth-key', - }, - }, - ) - }) -}) diff --git a/packages/core/src/clients/createAppClient.test.ts b/packages/core/src/clients/createAppClient.test.ts deleted file mode 100644 index 272e0d6..0000000 --- a/packages/core/src/clients/createAppClient.test.ts +++ /dev/null @@ -1,38 +0,0 @@ -import { type AppClient, createAppClient } from './createAppClient.js' -import { viemConnector } from './ethereum/viemConnector.js' - -describe('createAppClient', () => { - const config = { - ethereum: viemConnector(), - } - - let appClient: AppClient - - beforeEach(() => { - appClient = createAppClient(config) - }) - - test('adds version to config', () => { - expect(appClient.config).toEqual({ - relay: 'https://relay.farcaster.xyz', - version: 'v1', - }) - }) - - test('overrides version', () => { - appClient = createAppClient({ - ...config, - version: 'v2', - }) - - expect(appClient.config).toEqual({ - relay: 'https://relay.farcaster.xyz', - version: 'v2', - }) - }) - - test('includes app actions', () => { - expect(appClient.createChannel).toBeDefined() - expect(appClient.status).toBeDefined() - }) -}) diff --git a/packages/core/src/clients/createClient.test.ts b/packages/core/src/clients/createClient.test.ts deleted file mode 100644 index 3691b69..0000000 --- a/packages/core/src/clients/createClient.test.ts +++ /dev/null @@ -1,61 +0,0 @@ -import { type Client, createClient } from './createClient.js' -import { viemConnector } from './ethereum/viemConnector.js' - -describe('createClient', () => { - const ethereum = viemConnector() - const config = { - ethereum, - } - - let client: Client - - beforeEach(() => { - client = createClient(config) - }) - - test('adds defaults to config', () => { - expect(client.config).toEqual({ - relay: 'https://relay.farcaster.xyz', - version: 'v1', - }) - }) - - test('overrides version', () => { - client = createClient({ - ...config, - version: 'v2', - }) - - expect(client.config).toEqual({ - relay: 'https://relay.farcaster.xyz', - version: 'v2', - }) - }) - - test('overrides relay', () => { - client = createClient({ - ...config, - relay: 'https://custom-server.example.com', - }) - - expect(client.config).toEqual({ - relay: 'https://custom-server.example.com', - version: 'v1', - }) - }) - - test('includes no actions', () => { - client = createClient({ - ...config, - version: 'v2', - }) - - expect(client).toEqual({ - config: { - relay: 'https://relay.farcaster.xyz', - version: 'v2', - }, - ethereum, - }) - }) -}) diff --git a/packages/core/src/clients/createWalletClient.test.ts b/packages/core/src/clients/createWalletClient.test.ts deleted file mode 100644 index 6b5a830..0000000 --- a/packages/core/src/clients/createWalletClient.test.ts +++ /dev/null @@ -1,37 +0,0 @@ -import { type WalletClient, createWalletClient } from './createWalletClient.js' -import { viemConnector } from './ethereum/viemConnector.js' - -describe('createWalletClient', () => { - const config = { - ethereum: viemConnector(), - } - - let walletClient: WalletClient - - beforeEach(() => { - walletClient = createWalletClient(config) - }) - - test('adds version to config', () => { - expect(walletClient.config).toEqual({ - relay: 'https://relay.farcaster.xyz', - version: 'v1', - }) - }) - - test('overrides version', () => { - walletClient = createWalletClient({ - ...config, - version: 'v2', - }) - - expect(walletClient.config).toEqual({ - relay: 'https://relay.farcaster.xyz', - version: 'v2', - }) - }) - - test('includes app actions', () => { - expect(walletClient.authenticate).toBeDefined() - }) -}) diff --git a/packages/core/src/clients/transports/http.test.ts b/packages/core/src/clients/transports/http.test.ts deleted file mode 100644 index 681ca22..0000000 --- a/packages/core/src/clients/transports/http.test.ts +++ /dev/null @@ -1,156 +0,0 @@ -import { jest } from '@jest/globals' -import { createClient } from '../createClient.js' -import { viemConnector } from '../ethereum/viemConnector.js' -import { get, poll, post } from './http.js' - -describe('http', () => { - const config = { - relay: 'https://relay.farcaster.xyz', - ethereum: viemConnector(), - } - - const client = createClient(config) - - const bodyData = { data: 'response stub' } - let httpResponse: Response - - beforeEach(() => { - httpResponse = new Response(JSON.stringify(bodyData)) - }) - - afterEach(() => { - jest.restoreAllMocks() - }) - - describe('get', () => { - test('returns parsed body data', async () => { - jest.spyOn(global, 'fetch').mockResolvedValue(httpResponse) - - const data = await get(client, 'path') - - expect(data).toEqual(bodyData) - }) - - test('constructs fetch request', async () => { - const spy = jest.spyOn(global, 'fetch').mockResolvedValue(httpResponse) - - await get(client, 'path') - - expect(spy).toHaveBeenCalledTimes(1) - expect(spy).toHaveBeenCalledWith('https://relay.farcaster.xyz/v1/path', { - headers: { 'Content-Type': 'application/json' }, - }) - }) - - test('adds optional params', async () => { - const spy = jest.spyOn(global, 'fetch').mockResolvedValue(httpResponse) - - await get(client, 'path', { - authToken: 'some-auth-token', - headers: { 'X-Some-Header': 'some-header-value' }, - }) - - expect(spy).toHaveBeenCalledTimes(1) - expect(spy).toHaveBeenCalledWith('https://relay.farcaster.xyz/v1/path', { - headers: { - 'Content-Type': 'application/json', - Authorization: 'Bearer some-auth-token', - 'X-Some-Header': 'some-header-value', - }, - }) - }) - }) - - describe('post', () => { - test('returns fetch response', async () => { - jest.spyOn(global, 'fetch').mockResolvedValue(httpResponse) - - const requestData = { data: 'request stub' } - const data = await post(client, 'path', requestData) - - expect(data).toEqual(bodyData) - }) - - test('returns parsed body data', async () => { - jest.spyOn(global, 'fetch').mockResolvedValue(httpResponse) - - const requestData = { data: 'request stub' } - const data = await post(client, 'path', requestData) - - expect(data).toEqual(bodyData) - }) - - test('constructs fetch request', async () => { - const spy = jest.spyOn(global, 'fetch').mockResolvedValue(httpResponse) - - const requestData = { data: 'request stub' } - await post(client, 'path', requestData, { - authToken: 'some-auth-token', - headers: { 'X-Some-Header': 'some-header-value' }, - }) - - expect(spy).toHaveBeenCalledTimes(1) - expect(spy).toHaveBeenCalledWith('https://relay.farcaster.xyz/v1/path', { - method: 'POST', - body: JSON.stringify(requestData), - headers: { - 'Content-Type': 'application/json', - Authorization: 'Bearer some-auth-token', - 'X-Some-Header': 'some-header-value', - }, - }) - }) - }) - - describe('poll', () => { - test('polls for success response', async () => { - let i = 0 - const spy = jest.spyOn(global, 'fetch').mockImplementation(async () => { - if (i === 2) - return new Response(JSON.stringify({ state: 'completed' }), { - status: 200, - }) - i++ - return new Response(JSON.stringify({ state: 'pending' }), { - status: 202, - }) - }) - // .mockResolvedValueOnce(accepted1) - // .mockResolvedValueOnce(accepted2) - // .mockResolvedValueOnce(ok); - - let data: { state: string } = { - state: 'error', - } - for await (const generatorResponse of poll(client, 'path', { - interval: 100, - })) { - data = generatorResponse - if (generatorResponse.state === 'completed') break - } - - expect(spy).toHaveBeenCalledTimes(3) - expect(data).toEqual({ state: 'completed' }) - }) - - test('times out', async () => { - const accepted = new Response(JSON.stringify({ state: 'pending' }), { - status: 202, - }) - - jest.spyOn(global, 'fetch').mockResolvedValue(accepted) - - let i = 0 - try { - for await (const _generatorResponse of poll(client, 'path', { - timeout: 1, - interval: 1, - })) { - if (i++ === 1) expect(true).toBe(false) - } - } catch (e: unknown) { - expect((e as Error).message).toBe('Polling timed out after 1ms') - } - }) - }) -}) diff --git a/packages/react/package.json b/packages/react/package.json index f48eff3..cda2494 100644 --- a/packages/react/package.json +++ b/packages/react/package.json @@ -72,7 +72,7 @@ "react": "^18.3.1", "react-dom": "^18.3.1", "typescript": "^5.4.5", - "viem": "^1.21.4", + "viem": "^2.13.6", "vite": "^5.2.11", "vite-plugin-dts": "^3.9.1", "vite-plugin-node-polyfills": "^0.19.0" diff --git a/packages/react/tsconfig.build.json b/packages/react/tsconfig.build.json index 48154fd..bbe22d9 100644 --- a/packages/react/tsconfig.build.json +++ b/packages/react/tsconfig.build.json @@ -7,7 +7,7 @@ "isolatedModules": true, "noEmit": true, "allowJs": false, - "skipLibCheck": false, + "skipLibCheck": true, "esModuleInterop": false, "allowSyntheticDefaultImports": true, "strict": true, diff --git a/packages/react/tsconfig.json b/packages/react/tsconfig.json index b248a38..dbdf710 100644 --- a/packages/react/tsconfig.json +++ b/packages/react/tsconfig.json @@ -1,5 +1,5 @@ { "extends": "./tsconfig.build.json", "include": ["src/**/*.ts", "src/**/*.tsx", "test/**/*.ts"], - "exclude": ["vite.config.ts"] + "exclude": ["vite.config.ts", "node_modules"] } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 7eae625..feced4e 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -280,9 +280,12 @@ importers: specifier: ^2.3.2 version: 2.3.2(ethers@6.13.0) devDependencies: + '@jest/globals': + specifier: ^29.7.0 + version: 29.7.0 viem: - specifier: ^1.21.4 - version: 1.21.4(typescript@5.4.5)(zod@3.23.8) + specifier: ^2.13.6 + version: 2.13.6(typescript@5.4.5)(zod@3.23.8) packages/react: dependencies: @@ -325,7 +328,7 @@ importers: version: 6.21.0(eslint@8.57.0)(typescript@5.4.5) '@vanilla-extract/vite-plugin': specifier: ^3.9.5 - version: 3.9.5(@types/node@20.14.2)(ts-node@10.9.2)(vite@5.2.12) + version: 3.9.5(vite@5.2.12) '@vitejs/plugin-react': specifier: ^4.2.1 version: 4.3.0(vite@5.2.12) @@ -351,14 +354,14 @@ importers: specifier: ^5.4.5 version: 5.4.5 viem: - specifier: ^1.21.4 - version: 1.21.4(typescript@5.4.5)(zod@3.23.8) + specifier: ^2.13.6 + version: 2.13.6(typescript@5.4.5) vite: specifier: ^5.2.11 - version: 5.2.12(@types/node@20.14.2) + version: 5.2.12 vite-plugin-dts: specifier: ^3.9.1 - version: 3.9.1(@types/node@20.14.2)(typescript@5.4.5)(vite@5.2.12) + version: 3.9.1(typescript@5.4.5)(vite@5.2.12) vite-plugin-node-polyfills: specifier: ^0.19.0 version: 0.19.0(vite@5.2.12) @@ -3606,27 +3609,27 @@ packages: read-yaml-file: 1.1.0 dev: true - /@microsoft/api-extractor-model@7.28.13(@types/node@20.14.2): + /@microsoft/api-extractor-model@7.28.13: resolution: {integrity: sha512-39v/JyldX4MS9uzHcdfmjjfS6cYGAoXV+io8B5a338pkHiSt+gy2eXQ0Q7cGFJ7quSa1VqqlMdlPrB6sLR/cAw==} dependencies: '@microsoft/tsdoc': 0.14.2 '@microsoft/tsdoc-config': 0.16.2 - '@rushstack/node-core-library': 4.0.2(@types/node@20.14.2) + '@rushstack/node-core-library': 4.0.2 transitivePeerDependencies: - '@types/node' dev: true - /@microsoft/api-extractor@7.43.0(@types/node@20.14.2): + /@microsoft/api-extractor@7.43.0: resolution: {integrity: sha512-GFhTcJpB+MI6FhvXEI9b2K0snulNLWHqC/BbcJtyNYcKUiw7l3Lgis5ApsYncJ0leALX7/of4XfmXk+maT111w==} hasBin: true dependencies: - '@microsoft/api-extractor-model': 7.28.13(@types/node@20.14.2) + '@microsoft/api-extractor-model': 7.28.13 '@microsoft/tsdoc': 0.14.2 '@microsoft/tsdoc-config': 0.16.2 - '@rushstack/node-core-library': 4.0.2(@types/node@20.14.2) + '@rushstack/node-core-library': 4.0.2 '@rushstack/rig-package': 0.5.2 - '@rushstack/terminal': 0.10.0(@types/node@20.14.2) - '@rushstack/ts-command-line': 4.19.1(@types/node@20.14.2) + '@rushstack/terminal': 0.10.0 + '@rushstack/ts-command-line': 4.19.1 lodash: 4.17.21 minimatch: 3.0.8 resolve: 1.22.8 @@ -4396,7 +4399,7 @@ packages: resolution: {integrity: sha512-qC/xYId4NMebE6w/V33Fh9gWxLgURiNYgVNObbJl2LZv0GUUItCcCqC5axQSwRaAgaxl2mELq1rMzlswaQ0Zxg==} dev: true - /@rushstack/node-core-library@4.0.2(@types/node@20.14.2): + /@rushstack/node-core-library@4.0.2: resolution: {integrity: sha512-hyES82QVpkfQMeBMteQUnrhASL/KHPhd7iJ8euduwNJG4mu2GSOKybf0rOEjOm1Wz7CwJEUm9y0yD7jg2C1bfg==} peerDependencies: '@types/node': '*' @@ -4404,7 +4407,6 @@ packages: '@types/node': optional: true dependencies: - '@types/node': 20.14.2 fs-extra: 7.0.1 import-lazy: 4.0.0 jju: 1.4.0 @@ -4420,7 +4422,7 @@ packages: strip-json-comments: 3.1.1 dev: true - /@rushstack/terminal@0.10.0(@types/node@20.14.2): + /@rushstack/terminal@0.10.0: resolution: {integrity: sha512-UbELbXnUdc7EKwfH2sb8ChqNgapUOdqcCIdQP4NGxBpTZV2sQyeekuK3zmfQSa/MN+/7b4kBogl2wq0vpkpYGw==} peerDependencies: '@types/node': '*' @@ -4428,15 +4430,14 @@ packages: '@types/node': optional: true dependencies: - '@rushstack/node-core-library': 4.0.2(@types/node@20.14.2) - '@types/node': 20.14.2 + '@rushstack/node-core-library': 4.0.2 supports-color: 8.1.1 dev: true - /@rushstack/ts-command-line@4.19.1(@types/node@20.14.2): + /@rushstack/ts-command-line@4.19.1: resolution: {integrity: sha512-J7H768dgcpG60d7skZ5uSSwyCZs/S2HrWP1Ds8d1qYAyaaeJmpmmLr9BVw97RjFzmQPOYnoXcKA4GkqDCkduQg==} dependencies: - '@rushstack/terminal': 0.10.0(@types/node@20.14.2) + '@rushstack/terminal': 0.10.0 '@types/argparse': 1.0.38 argparse: 1.0.10 string-argv: 0.3.2 @@ -5079,7 +5080,7 @@ packages: transitivePeerDependencies: - babel-plugin-macros - /@vanilla-extract/integration@6.5.0(@types/node@20.14.2): + /@vanilla-extract/integration@6.5.0: resolution: {integrity: sha512-E2YcfO8vA+vs+ua+gpvy1HRqvgWbI+MTlUpxA8FvatOvybuNcWAY0CKwQ/Gpj7rswYKtC6C7+xw33emM6/ImdQ==} dependencies: '@babel/core': 7.24.6 @@ -5093,8 +5094,8 @@ packages: lodash: 4.17.21 mlly: 1.7.1 outdent: 0.8.0 - vite: 5.2.12(@types/node@20.14.2) - vite-node: 1.6.0(@types/node@20.14.2) + vite: 5.2.12 + vite-node: 1.6.0 transitivePeerDependencies: - '@types/node' - babel-plugin-macros @@ -5110,16 +5111,16 @@ packages: /@vanilla-extract/private@1.0.5: resolution: {integrity: sha512-6YXeOEKYTA3UV+RC8DeAjFk+/okoNz/h88R+McnzA2zpaVqTR/Ep+vszkWYlGBcMNO7vEkqbq5nT/JMMvhi+tw==} - /@vanilla-extract/vite-plugin@3.9.5(@types/node@20.14.2)(ts-node@10.9.2)(vite@5.2.12): + /@vanilla-extract/vite-plugin@3.9.5(vite@5.2.12): resolution: {integrity: sha512-CWI/CtrVW6i3HKccI6T7uGQkTJ8bd8Xl2UMBg3Pkr7dwWMmavXTeucV0I9KSbmXaYXSbEj+Q8c9y0xAZwtmTig==} peerDependencies: vite: ^2.2.3 || ^3.0.0 || ^4.0.3 || ^5.0.0 dependencies: - '@vanilla-extract/integration': 6.5.0(@types/node@20.14.2) + '@vanilla-extract/integration': 6.5.0 outdent: 0.8.0 postcss: 8.4.38 - postcss-load-config: 4.0.2(postcss@8.4.38)(ts-node@10.9.2) - vite: 5.2.12(@types/node@20.14.2) + postcss-load-config: 4.0.2(postcss@8.4.38) + vite: 5.2.12 transitivePeerDependencies: - '@types/node' - babel-plugin-macros @@ -5144,7 +5145,7 @@ packages: '@babel/plugin-transform-react-jsx-source': 7.24.6(@babel/core@7.24.6) '@types/babel__core': 7.20.5 react-refresh: 0.14.2 - vite: 5.2.12(@types/node@20.14.2) + vite: 5.2.12 transitivePeerDependencies: - supports-color dev: true @@ -5232,6 +5233,21 @@ packages: dependencies: typescript: 5.4.5 zod: 3.23.8 + dev: false + + /abitype@1.0.0(typescript@5.4.5): + resolution: {integrity: sha512-NMeMah//6bJ56H5XRj8QCV4AwuW6hB6zqz2LnhhLdcWVQOsXki6/Pn3APeqxCma62nXIcmZWdu1DlHWS74umVQ==} + peerDependencies: + typescript: '>=5.0.4' + zod: ^3 >=3.22.0 + peerDependenciesMeta: + typescript: + optional: true + zod: + optional: true + dependencies: + typescript: 5.4.5 + dev: true /abitype@1.0.0(typescript@5.4.5)(zod@3.23.8): resolution: {integrity: sha512-NMeMah//6bJ56H5XRj8QCV4AwuW6hB6zqz2LnhhLdcWVQOsXki6/Pn3APeqxCma62nXIcmZWdu1DlHWS74umVQ==} @@ -5246,7 +5262,6 @@ packages: dependencies: typescript: 5.4.5 zod: 3.23.8 - dev: false /abort-controller@3.0.0: resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==} @@ -6449,6 +6464,7 @@ packages: /commander@9.5.0: resolution: {integrity: sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==} engines: {node: ^12.20.0 || >=14} + requiresBuild: true /commondir@1.0.1: resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==} @@ -9215,6 +9231,7 @@ packages: ws: '*' dependencies: ws: 8.13.0 + dev: false /isows@1.0.4(ws@8.13.0): resolution: {integrity: sha512-hEzjY+x9u9hPmBom9IIAqdJCwNLax+xrPb51vEPpERoFlIxgmZcHzsT5jKG06nvInKOBGvReAVz80Umed5CczQ==} @@ -9222,7 +9239,6 @@ packages: ws: '*' dependencies: ws: 8.13.0 - dev: false /istanbul-lib-coverage@3.2.2: resolution: {integrity: sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==} @@ -11591,6 +11607,23 @@ packages: resolution: {integrity: sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==} engines: {node: '>= 0.4'} + /postcss-load-config@4.0.2(postcss@8.4.38): + resolution: {integrity: sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==} + engines: {node: '>= 14'} + peerDependencies: + postcss: '>=8.0.9' + ts-node: '>=9.0.0' + peerDependenciesMeta: + postcss: + optional: true + ts-node: + optional: true + dependencies: + lilconfig: 3.1.1 + postcss: 8.4.38 + yaml: 2.4.3 + dev: true + /postcss-load-config@4.0.2(postcss@8.4.38)(ts-node@10.9.2): resolution: {integrity: sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==} engines: {node: '>= 14'} @@ -13948,6 +13981,30 @@ packages: - bufferutil - utf-8-validate - zod + dev: false + + /viem@2.13.6(typescript@5.4.5): + resolution: {integrity: sha512-BhvYhLrExC9P4AH9Gu/2A3VPUFkJT/ayH+A9anco2Ja/D0h3NStq+2uF4htcly1e68/U7IOrlCyX3Jz9zqeEJA==} + peerDependencies: + typescript: '>=5.0.4' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@adraffy/ens-normalize': 1.10.0 + '@noble/curves': 1.2.0 + '@noble/hashes': 1.3.2 + '@scure/bip32': 1.3.2 + '@scure/bip39': 1.2.1 + abitype: 1.0.0(typescript@5.4.5) + isows: 1.0.4(ws@8.13.0) + typescript: 5.4.5 + ws: 8.13.0 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + - zod + dev: true /viem@2.13.6(typescript@5.4.5)(zod@3.23.8): resolution: {integrity: sha512-BhvYhLrExC9P4AH9Gu/2A3VPUFkJT/ayH+A9anco2Ja/D0h3NStq+2uF4htcly1e68/U7IOrlCyX3Jz9zqeEJA==} @@ -13970,9 +14027,8 @@ packages: - bufferutil - utf-8-validate - zod - dev: false - /vite-node@1.6.0(@types/node@20.14.2): + /vite-node@1.6.0: resolution: {integrity: sha512-de6HJgzC+TFzOu0NTC4RAIsyf/DY/ibWDYQUcuEA84EMHhcefTUGkjFHKKEJhQN4A+6I0u++kr3l36ZF2d7XRw==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true @@ -13981,7 +14037,7 @@ packages: debug: 4.3.5 pathe: 1.1.2 picocolors: 1.0.1 - vite: 5.2.12(@types/node@20.14.2) + vite: 5.2.12 transitivePeerDependencies: - '@types/node' - less @@ -13993,7 +14049,7 @@ packages: - terser dev: true - /vite-plugin-dts@3.9.1(@types/node@20.14.2)(typescript@5.4.5)(vite@5.2.12): + /vite-plugin-dts@3.9.1(typescript@5.4.5)(vite@5.2.12): resolution: {integrity: sha512-rVp2KM9Ue22NGWB8dNtWEr+KekN3rIgz1tWD050QnRGlriUCmaDwa7qA5zDEjbXg5lAXhYMSBJtx3q3hQIJZSg==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: @@ -14003,14 +14059,14 @@ packages: vite: optional: true dependencies: - '@microsoft/api-extractor': 7.43.0(@types/node@20.14.2) + '@microsoft/api-extractor': 7.43.0 '@rollup/pluginutils': 5.1.0 '@vue/language-core': 1.8.27(typescript@5.4.5) debug: 4.3.5 kolorist: 1.8.0 magic-string: 0.30.10 typescript: 5.4.5 - vite: 5.2.12(@types/node@20.14.2) + vite: 5.2.12 vue-tsc: 1.8.27(typescript@5.4.5) transitivePeerDependencies: - '@types/node' @@ -14025,7 +14081,7 @@ packages: dependencies: '@rollup/plugin-inject': 5.0.5 node-stdlib-browser: 1.2.0 - vite: 5.2.12(@types/node@20.14.2) + vite: 5.2.12 transitivePeerDependencies: - rollup dev: true @@ -14042,6 +14098,41 @@ packages: - rollup dev: false + /vite@5.2.12: + resolution: {integrity: sha512-/gC8GxzxMK5ntBwb48pR32GGhENnjtY30G4A0jemunsBkiEZFw60s8InGpN8gkhHEkjnRK1aSAxeQgwvFhUHAA==} + engines: {node: ^18.0.0 || >=20.0.0} + hasBin: true + peerDependencies: + '@types/node': ^18.0.0 || >=20.0.0 + less: '*' + lightningcss: ^1.21.0 + sass: '*' + stylus: '*' + sugarss: '*' + terser: ^5.4.0 + peerDependenciesMeta: + '@types/node': + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + dependencies: + esbuild: 0.20.2 + postcss: 8.4.38 + rollup: 4.18.0 + optionalDependencies: + fsevents: 2.3.3 + dev: true + /vite@5.2.12(@types/node@20.14.2): resolution: {integrity: sha512-/gC8GxzxMK5ntBwb48pR32GGhENnjtY30G4A0jemunsBkiEZFw60s8InGpN8gkhHEkjnRK1aSAxeQgwvFhUHAA==} engines: {node: ^18.0.0 || >=20.0.0} diff --git a/tsconfig.base.json b/tsconfig.base.json index f7dcd96..6008cec 100644 --- a/tsconfig.base.json +++ b/tsconfig.base.json @@ -1,6 +1,7 @@ { // This tsconfig file contains the shared config for the build (tsconfig.build.json) and type checking (tsconfig.json) config. "include": [], + "exclude": ["**/node_modules/**"], "compilerOptions": { // Incremental builds // NOTE: Enabling incremental builds speeds up `tsc`. Keep in mind though that it does not reliably bust the cache when the `tsconfig.json` file changes. diff --git a/tsconfig.json b/tsconfig.json index 7150b1a..5322963 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,8 +1,5 @@ { "extends": "./tsconfig.base.json", "include": ["vitest.workspace.ts", "vitest.config.ts"], - "exclude": [], - "compilerOptions": { - "types": ["bun-types"] - } + "exclude": ["**/node_modules/**"], } diff --git a/turbo.json b/turbo.json index b4935d0..d58f7f3 100644 --- a/turbo.json +++ b/turbo.json @@ -19,6 +19,9 @@ "lint:ci": { "outputs": [] }, + "typecheck": { + "outputs": [] + }, "protoc": { "outputs": [] },