diff --git a/.changeset/six-rings-hammer.md b/.changeset/six-rings-hammer.md new file mode 100644 index 0000000000..00731f2c61 --- /dev/null +++ b/.changeset/six-rings-hammer.md @@ -0,0 +1,5 @@ +--- +"@wagmi/cli": patch +--- + +Removed `ora` for `nanospinner`. diff --git a/packages/cli/package.json b/packages/cli/package.json index 56f94d81fd..fe55cf278c 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -76,7 +76,7 @@ "fdir": "^6.1.1", "find-up": "^6.3.0", "fs-extra": "^11.2.0", - "ora": "^6.3.1", + "nanospinner": "1.2.2", "pathe": "^1.1.2", "picocolors": "^1.0.0", "picomatch": "^3.0.0", diff --git a/packages/cli/src/commands/generate.test.ts b/packages/cli/src/commands/generate.test.ts index e755291cd9..4986292890 100644 --- a/packages/cli/src/commands/generate.test.ts +++ b/packages/cli/src/commands/generate.test.ts @@ -43,15 +43,15 @@ test('generates output', async () => { await generate() expect(console.formatted).toMatchInlineSnapshot(` - "- Validating plugins - ✔ Validating plugins - - Resolving contracts - ✔ Resolving contracts - - Running plugins - ✔ Running plugins - - Writing to generated.js - ✔ Writing to generated.js" - `) + "- Validating plugins + √ Validating plugins + - Resolving contracts + √ Resolving contracts + - Running plugins + √ Running plugins + - Writing to generated.js + √ Writing to generated.js" + `) }) test('generates typescript output', async () => { @@ -77,15 +77,15 @@ test('generates typescript output', async () => { await generate() expect(console.formatted).toMatchInlineSnapshot(` - "- Validating plugins - ✔ Validating plugins - - Resolving contracts - ✔ Resolving contracts - - Running plugins - ✔ Running plugins - - Writing to generated.ts - ✔ Writing to generated.ts" - `) + "- Validating plugins + √ Validating plugins + - Resolving contracts + √ Resolving contracts + - Running plugins + √ Running plugins + - Writing to generated.ts + √ Writing to generated.ts" + `) await expect(typecheck(paths.tsconfig)).resolves.toMatchInlineSnapshot('""') }) @@ -124,15 +124,15 @@ test('generates output with plugin', async () => { await generate() expect(console.formatted).toMatchInlineSnapshot(` - "- Validating plugins - ✔ Validating plugins - - Resolving contracts - ✔ Resolving contracts - - Running plugins - ✔ Running plugins - - Writing to generated.ts - ✔ Writing to generated.ts" - `) + "- Validating plugins + √ Validating plugins + - Resolving contracts + √ Resolving contracts + - Running plugins + √ Running plugins + - Writing to generated.ts + √ Writing to generated.ts" + `) /* eslint-disable no-irregular-whitespace */ await expect( readFile(resolve(dir, 'generated.ts'), 'utf8'), @@ -273,12 +273,12 @@ test('behavior: displays message if no contracts found', async () => { expect(console.formatted).toMatchInlineSnapshot( ` - "- Validating plugins - ✔ Validating plugins - - Resolving contracts - ✖ Resolving contracts - No contracts found." - `, + "- Validating plugins + √ Validating plugins + - Resolving contracts + × Resolving contracts + No contracts found." + `, ) }) @@ -389,16 +389,16 @@ test('behavior: displays message if using --watch flag without watchers configur await generate({ watch: true }) expect(console.formatted).toMatchInlineSnapshot(` - "- Validating plugins - ✔ Validating plugins - - Resolving contracts - ✔ Resolving contracts - - Running plugins - ✔ Running plugins - - Writing to generated.ts - ✔ Writing to generated.ts - Used --watch flag, but no plugins are watching." - `) + "- Validating plugins + √ Validating plugins + - Resolving contracts + √ Resolving contracts + - Running plugins + √ Running plugins + - Writing to generated.ts + √ Writing to generated.ts + Used --watch flag, but no plugins are watching." + `) }) test.todo('behavior: save config file logs change') diff --git a/packages/cli/src/commands/generate.ts b/packages/cli/src/commands/generate.ts index 551b241afa..73612db748 100644 --- a/packages/cli/src/commands/generate.ts +++ b/packages/cli/src/commands/generate.ts @@ -76,12 +76,12 @@ export async function generate(options: Generate = {}) { ...x, id: `${x.name}-${i}`, })) - const spinner = logger.spinner() - spinner.start('Validating plugins') + const spinner = logger.spinner('Validating plugins') + spinner.start() for (const plugin of plugins) { await plugin.validate?.() } - spinner.succeed() + spinner.success() // Add plugin contracts to config contracts const contractConfigs = config.contracts ?? [] @@ -113,11 +113,11 @@ export async function generate(options: Generate = {}) { const sortedAscContractMap = new Map([...contractMap].sort()) const contracts = [...sortedAscContractMap.values()] if (!contracts.length && !options.watch) { - spinner.fail() + spinner.error() logger.warn('No contracts found.') return } - spinner.succeed() + spinner.success() // Run plugins const imports = [] @@ -144,7 +144,7 @@ export async function generate(options: Generate = {}) { result.imports && imports.push(result.imports) result.prepend && prepend.push(result.prepend) } - spinner.succeed() + spinner.success() // Write output to file spinner.start(`Writing to ${pc.gray(config.out)}`) @@ -155,7 +155,7 @@ export async function generate(options: Generate = {}) { prepend, filename: config.out, }) - spinner.succeed() + spinner.success() if (options.watch) { if (!watchConfigs.length) { @@ -227,8 +227,10 @@ export async function generate(options: Generate = {}) { result.prepend && prepend.push(result.prepend) } - const spinner = logger.spinner() - spinner.start(`Writing to ${pc.gray(config.out)}`) + const spinner = logger.spinner( + `Writing to ${pc.gray(config.out)}`, + ) + spinner.start() await writeContracts({ content, contracts, @@ -236,7 +238,7 @@ export async function generate(options: Generate = {}) { prepend, filename: config.out, }) - spinner.succeed() + spinner.success() }, watchWriteDelay) needsWrite = false } diff --git a/packages/cli/src/commands/init.test.ts b/packages/cli/src/commands/init.test.ts index b463a28f41..caca01180c 100644 --- a/packages/cli/src/commands/init.test.ts +++ b/packages/cli/src/commands/init.test.ts @@ -38,10 +38,10 @@ test('creates config file', async () => { expect( console.formatted.replaceAll(dir, 'path/to/project'), ).toMatchInlineSnapshot(` - "- Creating config - ✔ Creating config - Config created at wagmi.config.js" - `) + "- Creating config + √ Creating config + Config created at wagmi.config.js" + `) }) test('parameters: config', async () => { @@ -68,10 +68,10 @@ test('parameters: config', async () => { expect( console.formatted.replaceAll(dir, 'path/to/project'), ).toMatchInlineSnapshot(` - "- Creating config - ✔ Creating config - Config created at foo.config.ts" - `) + "- Creating config + √ Creating config + Config created at foo.config.ts" + `) }) test('parameters: content', async () => { @@ -104,10 +104,10 @@ test('parameters: content', async () => { expect( console.formatted.replaceAll(dir, 'path/to/project'), ).toMatchInlineSnapshot(` - "- Creating config - ✔ Creating config - Config created at wagmi.config.ts" - `) + "- Creating config + √ Creating config + Config created at wagmi.config.ts" + `) }) test('parameters: root', async () => { @@ -135,10 +135,10 @@ test('parameters: root', async () => { expect( console.formatted.replaceAll(dir, 'path/to/project'), ).toMatchInlineSnapshot(` - "- Creating config - ✔ Creating config - Config created at foo/wagmi.config.js" - `) + "- Creating config + √ Creating config + Config created at foo/wagmi.config.js" + `) }) test('behavior: creates config file in TypeScript format', async () => { @@ -166,10 +166,10 @@ test('behavior: creates config file in TypeScript format', async () => { expect( console.formatted.replaceAll(dir, 'path/to/project'), ).toMatchInlineSnapshot(` - "- Creating config - ✔ Creating config - Config created at wagmi.config.ts" - `) + "- Creating config + √ Creating config + Config created at wagmi.config.ts" + `) }) test('behavior: displays config file location when config exists', async () => { diff --git a/packages/cli/src/commands/init.ts b/packages/cli/src/commands/init.ts index 968f38cfdb..b954ed723f 100644 --- a/packages/cli/src/commands/init.ts +++ b/packages/cli/src/commands/init.ts @@ -47,8 +47,8 @@ export async function init(options: Init = {}) { return configPath } - const spinner = logger.spinner() - spinner.start('Creating config') + const spinner = logger.spinner('Creating config') + spinner.start() // Check if project is using TypeScript const isUsingTypeScript = await getIsUsingTypeScript() const rootDir = resolve(options.root || process.cwd()) @@ -86,7 +86,7 @@ export async function init(options: Init = {}) { const formatted = await format(content) await fs.writeFile(outPath, formatted) - spinner.succeed() + spinner.success() logger.success( `Config created at ${pc.gray(relative(process.cwd(), outPath))}`, ) diff --git a/packages/cli/src/logger.test.ts b/packages/cli/src/logger.test.ts index a5843b814a..7338c3bb14 100644 --- a/packages/cli/src/logger.test.ts +++ b/packages/cli/src/logger.test.ts @@ -20,14 +20,13 @@ test.each(['success', 'info', 'log', 'warn', 'error'])('%s()', (level) => { test('spinner', () => { const console = watchConsole() - const spinner = logger.spinner() - - spinner.start('Foo bar baz') - spinner.succeed('Foo bar baz') - spinner.fail('Foo bar baz') + const spinner = logger.spinner('start') + spinner.start() + spinner.success('success') + spinner.error('error') expect(console.formatted).toMatchInlineSnapshot(` - "- Foo bar baz - ✔ Foo bar baz - ✖ Foo bar baz" - `) + "- start + √ success + × error" + `) }) diff --git a/packages/cli/src/logger.ts b/packages/cli/src/logger.ts index 9f96151a93..b56fb9728b 100644 --- a/packages/cli/src/logger.ts +++ b/packages/cli/src/logger.ts @@ -1,5 +1,5 @@ import { format as utilFormat } from 'node:util' -import ora from 'ora' +import { createSpinner } from 'nanospinner' import pc from 'picocolors' function format(args: any[]) { @@ -30,9 +30,8 @@ export function error(...args: any[]) { console.error(pc.red(format(args))) } -export function spinner() { - return ora({ +export function spinner(text: string) { + return createSpinner(text, { color: 'yellow', - spinner: 'dots', }) } diff --git a/packages/cli/test/setup.ts b/packages/cli/test/setup.ts index 21a31f4aa6..33564d7508 100644 --- a/packages/cli/test/setup.ts +++ b/packages/cli/test/setup.ts @@ -1,38 +1,43 @@ import { homedir } from 'node:os' import { default as fs } from 'fs-extra' +import type { createSpinner as nanospinner_createSpinner } from 'nanospinner' import { join } from 'pathe' import { vi } from 'vitest' const cacheDir = join(homedir(), '.wagmi-cli/plugins/fetch/cache') await fs.ensureDir(cacheDir) -vi.mock('ora', async () => { - function ora() { - class Ora { - #text: string | undefined +vi.mock('nanospinner', async (importOriginal) => { + const mod = await importOriginal<{ + createSpinner: typeof nanospinner_createSpinner + }>() - start(text: string | undefined = 'start') { + function createSpinner( + initialText: string, + opts: Parameters[1], + ) { + let currentText = '' + const spinner = mod.createSpinner(initialText, opts) + return { + ...spinner, + start(text = initialText) { // biome-ignore lint/suspicious/noConsoleLog: console.log is used for logging console.log(`- ${text}`) - this.#text = text - } - - succeed(text: string | undefined = this.#text ?? 'succeed') { + spinner.start(text) + currentText = text + }, + success(text = currentText) { // biome-ignore lint/suspicious/noConsoleLog: console.log is used for logging - console.log(`✔ ${text}`) - this.#text = undefined - } - - fail(text: string | undefined = this.#text ?? 'fail') { - console.error(`✖ ${text}`) - this.#text = undefined - } + console.log(`√ ${text}`) + spinner.success(text) + }, + error(text = currentText) { + console.error(`× ${text}`) + spinner.error(text) + }, } - return new Ora() - } - return { - default: ora, } + return { createSpinner } }) vi.mock('picocolors', async () => { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 96f33a1e9f..6607ecc792 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -140,9 +140,9 @@ importers: fs-extra: specifier: ^11.2.0 version: 11.2.0 - ora: - specifier: ^6.3.1 - version: 6.3.1 + nanospinner: + specifier: 1.2.2 + version: 1.2.2 pathe: specifier: ^1.1.2 version: 1.1.2 @@ -3833,9 +3833,6 @@ packages: birpc@0.2.19: resolution: {integrity: sha512-5WeXXAvTmitV1RqJFppT5QtUiz2p1mRSYU000Jkft5ZUCLJIk4uQriYNO50HknxKwM6jd8utNc66K1qGIwwWBQ==} - bl@5.1.0: - resolution: {integrity: sha512-tv1ZJHLfTDnXE6tMHv73YgSJaWR2AFuPwMntBe7XL/GBFHnT0CLnsHMogfk5+GzCDC5ZWarSCYaIGATZt9dNsQ==} - blakejs@1.2.1: resolution: {integrity: sha512-QXUSXI3QVc/gJME0dBpXrag1kbzOqCjCX8/b54ntNyW6sjtoqxqRk3LTmXzaJoh71zMsDCjM+47jS7XiwN/+fQ==} @@ -4053,19 +4050,11 @@ packages: resolution: {integrity: sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==} engines: {node: '>=6'} - cli-cursor@4.0.0: - resolution: {integrity: sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - cli-highlight@2.1.11: resolution: {integrity: sha512-9KDcoEVwyUXrjcJNvHD0NFc/hiwe/WPVYIleQh2O1N2Zro5gWJZ/K+3DGn8w8P/F6FxOgzyC5bxDyHIgCSPhGg==} engines: {node: '>=8.0.0', npm: '>=5.0.0'} hasBin: true - cli-spinners@2.7.0: - resolution: {integrity: sha512-qu3pN8Y3qHNgE2AFweciB1IfMnmZ/fsNTEE+NOFjmGB2F/7rLhnhzppvpCnN4FovtP26k8lHyy9ptEbNwWFLzw==} - engines: {node: '>=6'} - cli-spinners@2.9.2: resolution: {integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==} engines: {node: '>=6'} @@ -5294,10 +5283,6 @@ packages: resolution: {integrity: sha512-K55T22lfpQ63N4KEN57jZUAaAYqYHEe8veb/TycJRk9DdSCLLcovXz/mL6mOnhQaZsQGwPhuFopdQIlqGSEjiQ==} engines: {node: '>=18'} - is-interactive@2.0.0: - resolution: {integrity: sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ==} - engines: {node: '>=12'} - is-lambda@1.0.1: resolution: {integrity: sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==} @@ -5361,10 +5346,6 @@ packages: resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} engines: {node: '>=10'} - is-unicode-supported@1.3.0: - resolution: {integrity: sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==} - engines: {node: '>=12'} - is-unicode-supported@2.0.0: resolution: {integrity: sha512-FRdAyx5lusK1iHG0TWpVtk9+1i+GjrzRffhDg4ovQ7mcidMQ6mj+MhKPmvh7Xwyv5gIS06ns49CA7Sqg7lC22Q==} engines: {node: '>=18'} @@ -5621,10 +5602,6 @@ packages: resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} engines: {node: '>=10'} - log-symbols@5.1.0: - resolution: {integrity: sha512-l0x2DvrW294C9uDCoQe1VSU4gf529FkSZ6leBl4TiqZH/e+0R7hSfHQBNut2mNygDgHwvYHfFLn6Oxb3VWj2rA==} - engines: {node: '>=12'} - lokijs@1.5.12: resolution: {integrity: sha512-Q5ALD6JiS6xAUWCwX3taQmgwxyveCtIIuL08+ml0nHwT3k0S/GIFJN+Hd38b1qYIMaE5X++iqsqWVksz7SYW+Q==} @@ -6041,6 +6018,9 @@ packages: engines: {node: ^18 || >=20} hasBin: true + nanospinner@1.2.2: + resolution: {integrity: sha512-Zt/AmG6qRU3e+WnzGGLuMCEAO/dAu45stNbHY223tUxldaDAeE+FxSPsd9Q+j+paejmm0ZbrNVs5Sraqy3dRxA==} + negotiator@0.6.3: resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} engines: {node: '>= 0.6'} @@ -6291,10 +6271,6 @@ packages: resolution: {integrity: sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==} hasBin: true - ora@6.3.1: - resolution: {integrity: sha512-ERAyNnZOfqM+Ao3RAvIXkYh5joP220yf59gVe2X/cI6SiCxIdi4c9HZKZD8R6q/RDXEje1THBju6iExiSsgJaQ==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - os-tmpdir@1.0.2: resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} engines: {node: '>=0.10.0'} @@ -6467,6 +6443,9 @@ packages: picocolors@1.1.0: resolution: {integrity: sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==} + picocolors@1.1.1: + resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} + picomatch@2.3.1: resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} engines: {node: '>=8.6'} @@ -6933,10 +6912,6 @@ packages: resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} hasBin: true - restore-cursor@4.0.0: - resolution: {integrity: sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - retry@0.12.0: resolution: {integrity: sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==} engines: {node: '>= 4'} @@ -7308,10 +7283,6 @@ packages: std-env@3.7.0: resolution: {integrity: sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg==} - stdin-discarder@0.1.0: - resolution: {integrity: sha512-xhV7w8S+bUwlPTb4bAOUQhv8/cSS5offJuX8GQGq32ONF0ZtDWKfkdomM3HMRA+LhX6um/FZ0COqlwsjD53LeQ==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - stream-shift@1.0.1: resolution: {integrity: sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==} @@ -8549,7 +8520,7 @@ snapshots: '@babel/code-frame@7.24.2': dependencies: '@babel/highlight': 7.24.5 - picocolors: 1.1.0 + picocolors: 1.1.1 '@babel/compat-data@7.24.4': {} @@ -8685,7 +8656,7 @@ snapshots: '@babel/helper-validator-identifier': 7.25.9 chalk: 2.4.2 js-tokens: 4.0.0 - picocolors: 1.1.0 + picocolors: 1.1.1 '@babel/parser@7.24.5': dependencies: @@ -11140,7 +11111,7 @@ snapshots: '@testing-library/dom@10.4.0': dependencies: '@babel/code-frame': 7.24.2 - '@babel/runtime': 7.23.4 + '@babel/runtime': 7.26.0 '@types/aria-query': 5.0.4 aria-query: 5.3.0 chalk: 4.1.2 @@ -11150,7 +11121,7 @@ snapshots: '@testing-library/react@16.0.1(@testing-library/dom@10.4.0)(@types/react-dom@18.3.0)(@types/react@18.3.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@babel/runtime': 7.23.4 + '@babel/runtime': 7.26.0 '@testing-library/dom': 10.4.0 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) @@ -12707,7 +12678,7 @@ snapshots: caniuse-lite: 1.0.30001616 fraction.js: 4.3.7 normalize-range: 0.1.2 - picocolors: 1.1.0 + picocolors: 1.1.1 postcss: 8.4.47 postcss-value-parser: 4.2.0 @@ -12740,12 +12711,6 @@ snapshots: birpc@0.2.19: {} - bl@5.1.0: - dependencies: - buffer: 6.0.3 - inherits: 2.0.4 - readable-stream: 3.6.2 - blakejs@1.2.1: {} bn.js@4.12.0: {} @@ -13000,10 +12965,6 @@ snapshots: cli-boxes@2.2.1: {} - cli-cursor@4.0.0: - dependencies: - restore-cursor: 4.0.0 - cli-highlight@2.1.11: dependencies: chalk: 4.1.2 @@ -13013,8 +12974,6 @@ snapshots: parse5-htmlparser2-tree-adapter: 6.0.1 yargs: 16.2.0 - cli-spinners@2.7.0: {} - cli-spinners@2.9.2: {} cli-table3@0.6.5: @@ -13051,7 +13010,8 @@ snapshots: strip-ansi: 6.0.1 wrap-ansi: 7.0.0 - clone@1.0.4: {} + clone@1.0.4: + optional: true clsx@1.2.1: {} @@ -13318,6 +13278,7 @@ snapshots: defaults@1.0.4: dependencies: clone: 1.0.4 + optional: true define-lazy-prop@2.0.0: {} @@ -14417,8 +14378,6 @@ snapshots: global-directory: 4.0.1 is-path-inside: 4.0.0 - is-interactive@2.0.0: {} - is-lambda@1.0.1: {} is-module@1.0.0: {} @@ -14461,8 +14420,6 @@ snapshots: is-unicode-supported@0.1.0: {} - is-unicode-supported@1.3.0: {} - is-unicode-supported@2.0.0: {} is-what@4.1.16: {} @@ -14633,7 +14590,7 @@ snapshots: launch-editor@2.6.1: dependencies: - picocolors: 1.1.0 + picocolors: 1.1.1 shell-quote: 1.8.1 lazystream@1.0.1: @@ -14730,11 +14687,6 @@ snapshots: chalk: 4.1.2 is-unicode-supported: 0.1.0 - log-symbols@5.1.0: - dependencies: - chalk: 5.3.0 - is-unicode-supported: 1.3.0 - lokijs@1.5.12: {} longest-streak@3.1.0: {} @@ -15318,6 +15270,10 @@ snapshots: nanoid@5.0.7: {} + nanospinner@1.2.2: + dependencies: + picocolors: 1.1.1 + negotiator@0.6.3: {} next@14.2.4(@opentelemetry/api@1.8.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1): @@ -15896,18 +15852,6 @@ snapshots: opener@1.5.2: {} - ora@6.3.1: - dependencies: - chalk: 5.3.0 - cli-cursor: 4.0.0 - cli-spinners: 2.7.0 - is-interactive: 2.0.0 - is-unicode-supported: 1.3.0 - log-symbols: 5.1.0 - stdin-discarder: 0.1.0 - strip-ansi: 7.0.1 - wcwidth: 1.0.1 - os-tmpdir@1.0.2: {} outdent@0.5.0: {} @@ -16063,6 +16007,8 @@ snapshots: picocolors@1.1.0: {} + picocolors@1.1.1: {} + picomatch@2.3.1: {} picomatch@3.0.1: {} @@ -16297,19 +16243,19 @@ snapshots: postcss@8.4.31: dependencies: nanoid: 3.3.7 - picocolors: 1.0.0 + picocolors: 1.1.1 source-map-js: 1.2.0 postcss@8.4.38: dependencies: nanoid: 3.3.7 - picocolors: 1.0.0 + picocolors: 1.1.1 source-map-js: 1.2.0 postcss@8.4.47: dependencies: nanoid: 3.3.7 - picocolors: 1.1.0 + picocolors: 1.1.1 source-map-js: 1.2.1 preact@10.17.1: {} @@ -16521,11 +16467,6 @@ snapshots: path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 - restore-cursor@4.0.0: - dependencies: - onetime: 5.1.2 - signal-exit: 3.0.7 - retry@0.12.0: {} reusify@1.0.4: {} @@ -16941,10 +16882,6 @@ snapshots: std-env@3.7.0: {} - stdin-discarder@0.1.0: - dependencies: - bl: 5.1.0 - stream-shift@1.0.1: {} streamsearch@1.1.0: {} @@ -17067,7 +17004,7 @@ snapshots: css-tree: 2.3.1 css-what: 6.1.0 csso: 5.0.5 - picocolors: 1.1.0 + picocolors: 1.1.1 system-architecture@0.1.0: {} @@ -17487,7 +17424,7 @@ snapshots: dependencies: browserslist: 4.23.0 escalade: 3.1.2 - picocolors: 1.1.0 + picocolors: 1.1.1 uqr@0.1.2: {} @@ -17641,7 +17578,7 @@ snapshots: cac: 6.7.14 debug: 4.3.4(supports-color@8.1.1) pathe: 1.1.2 - picocolors: 1.1.0 + picocolors: 1.1.1 vite: 5.2.11(@types/node@20.12.10)(terser@5.31.0) transitivePeerDependencies: - '@types/node' @@ -17722,7 +17659,7 @@ snapshots: fs-extra: 11.2.0 open: 10.1.0 perfect-debounce: 1.0.0 - picocolors: 1.1.0 + picocolors: 1.1.1 sirv: 2.0.4 vite: 5.4.10(@types/node@20.12.10)(terser@5.31.0) optionalDependencies: @@ -18014,6 +17951,7 @@ snapshots: wcwidth@1.0.1: dependencies: defaults: 1.0.4 + optional: true webauthn-p256@0.0.10: dependencies: @@ -18038,7 +17976,7 @@ snapshots: html-escaper: 2.0.2 is-plain-object: 5.0.0 opener: 1.5.2 - picocolors: 1.0.0 + picocolors: 1.1.0 sirv: 2.0.3 ws: 7.5.9(bufferutil@4.0.8)(utf-8-validate@5.0.10) transitivePeerDependencies: