diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 45bb1d37..cd541fc5 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -20,7 +20,7 @@ jobs: commands: > [ "build", - "types", - "test", - "deps" + "lint", + "publint", + "test" ] diff --git a/.prettierignore b/.prettierignore new file mode 100644 index 00000000..ce137b67 --- /dev/null +++ b/.prettierignore @@ -0,0 +1,4 @@ +*.json +*.md +*.yml +*.jsonc diff --git a/AGENTS.md b/AGENTS.md new file mode 100644 index 00000000..70996d2f --- /dev/null +++ b/AGENTS.md @@ -0,0 +1,16 @@ + +# Skill mappings - when working in these areas, load the linked skill file into context. +skills: + - task: "Building packages for publish or generating declarations" + load: "node_modules/@bomb.sh/tools/skills/build/SKILL.md" + - task: "Writing or running tests" + load: "node_modules/@bomb.sh/tools/skills/test/SKILL.md" + - task: "Development workflow, command ordering, monorepo filtering" + load: "node_modules/@bomb.sh/tools/skills/lifecycle/SKILL.md" + - task: "Linting, code quality, or understanding lint violations" + load: "node_modules/@bomb.sh/tools/skills/lint/SKILL.md" + - task: "Formatting source files before committing" + load: "node_modules/@bomb.sh/tools/skills/format/SKILL.md" + - task: "Migrating off biome, unbuild, or other tools to bsh toolchain" + load: "node_modules/@bomb.sh/tools/skills/migrate/SKILL.md" + diff --git a/biome.json b/biome.json deleted file mode 100644 index c303deeb..00000000 --- a/biome.json +++ /dev/null @@ -1,47 +0,0 @@ -{ - "$schema": "https://biomejs.dev/schemas/2.1.2/schema.json", - "vcs": { "enabled": false, "clientKind": "git", "useIgnoreFile": false }, - "files": { "ignoreUnknown": false, "includes": ["**", "!**/dist/**"] }, - "formatter": { - "enabled": true, - "useEditorconfig": true, - "formatWithErrors": false, - "indentStyle": "tab", - "indentWidth": 2, - "lineEnding": "lf", - "lineWidth": 100, - "attributePosition": "auto", - "bracketSpacing": true, - "includes": [ - "**", - "!**/.github/workflows/**/*.yml", - "!**/.changeset/**/*.md", - "!**/pnpm-lock.yaml", - "!**/package.json" - ] - }, - "assist": { "actions": { "source": { "organizeImports": "on" } } }, - "linter": { - "enabled": true, - "rules": { "recommended": true, "suspicious": { "noExplicitAny": "off" } } - }, - "javascript": { - "formatter": { - "jsxQuoteStyle": "double", - "quoteProperties": "asNeeded", - "trailingCommas": "es5", - "semicolons": "always", - "arrowParentheses": "always", - "bracketSameLine": false, - "quoteStyle": "single", - "attributePosition": "auto", - "bracketSpacing": true - } - }, - "overrides": [ - { - "includes": ["**/*.json", "**/*.toml", "**/*.yml"], - "formatter": { "indentStyle": "space" } - } - ] -} diff --git a/build.preset.ts b/build.preset.ts deleted file mode 100644 index ca7a1796..00000000 --- a/build.preset.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { definePreset } from 'unbuild'; - -// @see https://github.com/unjs/unbuild -export default definePreset({ - clean: true, - declaration: 'node16', - sourcemap: true, - rollup: { - emitCJS: false, - inlineDependencies: true, - esbuild: { - minify: true, - }, - }, -}); diff --git a/examples/basic/autocomplete-multiselect.ts b/examples/basic/autocomplete-multiselect.ts index c34420c6..1630ccaf 100644 --- a/examples/basic/autocomplete-multiselect.ts +++ b/examples/basic/autocomplete-multiselect.ts @@ -21,7 +21,7 @@ ${color.cyan('Filter and select multiple items in a single interface:')} - Press ${color.yellow('Enter')} when done selecting all items - Press ${color.yellow('Ctrl+C')} to cancel `, - 'Instructions' + 'Instructions', ); // Frameworks in alphabetical order @@ -80,7 +80,7 @@ ${color.cyan('Filter and select multiple items in a single interface:')} // Display selected frameworks with detailed information p.note( `You selected ${color.green(selectedFrameworks.length)} frameworks:`, - 'Selection Complete' + 'Selection Complete', ); // Show each selected framework with its details diff --git a/examples/basic/autocomplete.ts b/examples/basic/autocomplete.ts index ea94ece1..e3bee627 100644 --- a/examples/basic/autocomplete.ts +++ b/examples/basic/autocomplete.ts @@ -14,7 +14,7 @@ ${color.cyan('This example demonstrates the type-ahead autocomplete feature:')} - Press ${color.yellow('Enter')} to select the highlighted option - Press ${color.yellow('Ctrl+C')} to cancel `, - 'Instructions' + 'Instructions', ); const countries = [ diff --git a/examples/basic/index.ts b/examples/basic/index.ts index 0115d4ac..bd30b9d9 100644 --- a/examples/basic/index.ts +++ b/examples/basic/index.ts @@ -73,7 +73,7 @@ async function main() { p.cancel('Operation cancelled.'); process.exit(0); }, - } + }, ); if (project.install) { diff --git a/examples/basic/spinner-cancel-advanced.ts b/examples/basic/spinner-cancel-advanced.ts index cbf0927d..eed0f439 100644 --- a/examples/basic/spinner-cancel-advanced.ts +++ b/examples/basic/spinner-cancel-advanced.ts @@ -56,7 +56,7 @@ async function main() { onCancel: () => { p.note( 'You cancelled during processing. Any completed work will be saved.', - 'Processing Cancelled' + 'Processing Cancelled', ); }, }); @@ -114,7 +114,7 @@ async function main() { onCancel: () => { p.note( 'Final operation was cancelled, but processing results are still valid.', - 'Final Stage Cancelled' + 'Final Stage Cancelled', ); }, }); diff --git a/examples/basic/stream.ts b/examples/basic/stream.ts index c87ad5bf..db79a396 100644 --- a/examples/basic/stream.ts +++ b/examples/basic/stream.ts @@ -22,7 +22,7 @@ async function main() { await setTimeout(1000); } } - })() + })(), ); p.outro(`Problems? ${color.underline(color.cyan('https://example.com/issues'))}`); diff --git a/examples/changesets/index.ts b/examples/changesets/index.ts index cb9226db..23e7074a 100644 --- a/examples/changesets/index.ts +++ b/examples/changesets/index.ts @@ -56,7 +56,7 @@ async function main() { const major = Array.isArray(results.major) ? results.major : []; const minor = Array.isArray(results.minor) ? results.minor : []; const possiblePackages = packages.filter( - (pkg) => !major.includes(pkg) && !minor.includes(pkg) + (pkg) => !major.includes(pkg) && !minor.includes(pkg), ); if (possiblePackages.length === 0) return; const note = possiblePackages.join(color.dim(', ')); @@ -67,7 +67,7 @@ async function main() { }, { onCancel, - } + }, ); const message = await p.multiline({ diff --git a/package.json b/package.json index fd248bda..bafe2b29 100644 --- a/package.json +++ b/package.json @@ -3,25 +3,21 @@ "private": true, "type": "module", "scripts": { - "stub": "pnpm -r run build --stub", "build": "pnpm --filter \"@clack/*\" run build", "start": "pnpm run dev", "dev": "pnpm --filter @example/changesets run start", - "format": "biome check --write", - "lint": "biome lint --write --unsafe", - "types": "tsc --noEmit", - "deps": "pnpm exec knip --production", + "format": "bsh format", + "lint": "pnpm -r run lint", + "publint": "pnpm -r run publint", "test": "pnpm --color -r run test", "pretest": "pnpm run build" }, "devDependencies": { - "@biomejs/biome": "^2.1.2", + "@bomb.sh/tools": "https://pkg.pr.new/@bomb.sh/tools@400d677", "@changesets/cli": "^2.29.5", "@types/node": "^20.19.39", "jsr": "^0.13.4", - "knip": "^5.62.0", - "typescript": "^6.0.3", - "unbuild": "^3.6.0" + "typescript": "^6.0.3" }, "packageManager": "pnpm@10.33.0", "volta": { diff --git a/packages/core/build.config.ts b/packages/core/build.config.ts deleted file mode 100644 index 8bd1ad27..00000000 --- a/packages/core/build.config.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { defineBuildConfig } from 'unbuild'; - -// @see https://github.com/unjs/unbuild -export default defineBuildConfig({ - preset: '../../build.preset', - entries: ['src/index'], -}); diff --git a/packages/core/package.json b/packages/core/package.json index 960d88c8..ce3778b2 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -51,15 +51,14 @@ "node": ">= 20.12.0" }, "scripts": { - "build": "unbuild", + "build": "bsh build", "prepack": "pnpm build", - "test": "vitest run" + "test": "bsh test", + "lint": "bsh lint", + "publint": "pnpm build && bsh publint" }, "dependencies": { "fast-wrap-ansi": "^0.2.0", "sisteransi": "^1.0.5" - }, - "devDependencies": { - "vitest": "^3.2.4" } } diff --git a/packages/core/src/index.ts b/packages/core/src/index.ts index 478095b8..e59605b1 100644 --- a/packages/core/src/index.ts +++ b/packages/core/src/index.ts @@ -1,25 +1,25 @@ export type { AutocompleteOptions } from './prompts/autocomplete.js'; -export { default as AutocompletePrompt } from './prompts/autocomplete.js'; +export { AutocompletePrompt } from './prompts/autocomplete.js'; export type { ConfirmOptions } from './prompts/confirm.js'; -export { default as ConfirmPrompt } from './prompts/confirm.js'; +export { ConfirmPrompt } from './prompts/confirm.js'; export type { DateFormat, DateOptions, DateParts } from './prompts/date.js'; -export { default as DatePrompt } from './prompts/date.js'; +export { DatePrompt } from './prompts/date.js'; export type { GroupMultiSelectOptions } from './prompts/group-multiselect.js'; -export { default as GroupMultiSelectPrompt } from './prompts/group-multiselect.js'; +export { GroupMultiSelectPrompt } from './prompts/group-multiselect.js'; export type { MultiLineOptions } from './prompts/multi-line.js'; -export { default as MultiLinePrompt } from './prompts/multi-line.js'; +export { MultiLinePrompt } from './prompts/multi-line.js'; export type { MultiSelectOptions } from './prompts/multi-select.js'; -export { default as MultiSelectPrompt } from './prompts/multi-select.js'; +export { MultiSelectPrompt } from './prompts/multi-select.js'; export type { PasswordOptions } from './prompts/password.js'; -export { default as PasswordPrompt } from './prompts/password.js'; +export { PasswordPrompt } from './prompts/password.js'; export type { PromptOptions } from './prompts/prompt.js'; -export { default as Prompt } from './prompts/prompt.js'; +export { Prompt } from './prompts/prompt.js'; export type { SelectOptions } from './prompts/select.js'; -export { default as SelectPrompt } from './prompts/select.js'; +export { SelectPrompt } from './prompts/select.js'; export type { SelectKeyOptions } from './prompts/select-key.js'; -export { default as SelectKeyPrompt } from './prompts/select-key.js'; +export { SelectKeyPrompt } from './prompts/select-key.js'; export type { TextOptions } from './prompts/text.js'; -export { default as TextPrompt } from './prompts/text.js'; +export { TextPrompt } from './prompts/text.js'; export type { ClackState as State } from './types.js'; export { block, getColumns, getRows, isCancel, wrapTextWithPrefix } from './utils/index.js'; export type { ClackSettings } from './utils/settings.js'; diff --git a/packages/core/src/prompts/autocomplete.ts b/packages/core/src/prompts/autocomplete.ts index e023462b..a3cc405a 100644 --- a/packages/core/src/prompts/autocomplete.ts +++ b/packages/core/src/prompts/autocomplete.ts @@ -1,7 +1,7 @@ import type { Key } from 'node:readline'; import { styleText } from 'node:util'; import { findCursor } from '../utils/cursor.js'; -import Prompt, { type PromptOptions } from './prompt.js'; +import { Prompt, type PromptOptions } from './prompt.js'; interface OptionLike { value: unknown; @@ -13,7 +13,7 @@ type FilterFunction = (search: string, opt: T) => boolean; function getCursorForValue( selected: T['value'] | undefined, - items: T[] + items: T[], ): number { if (selected === undefined) { return 0; @@ -46,8 +46,10 @@ function normalisedValue(multiple: boolean, values: T[] | undefined): T | T[] return values[0]; } -export interface AutocompleteOptions - extends PromptOptions> { +export interface AutocompleteOptions extends PromptOptions< + T['value'] | T['value'][], + AutocompletePrompt +> { options: T[] | ((this: AutocompletePrompt) => T[]); filter?: FilterFunction; multiple?: boolean; @@ -60,9 +62,7 @@ export interface AutocompleteOptions placeholder?: string; } -export default class AutocompletePrompt extends Prompt< - T['value'] | T['value'][] -> { +export class AutocompletePrompt extends Prompt { filteredOptions: T[]; multiple: boolean; isNavigating = false; @@ -162,7 +162,7 @@ export default class AutocompletePrompt extends Prompt< placeholder !== undefined && placeholder !== '' && options.some( - (opt) => !opt.disabled && (this.#filterFn ? this.#filterFn(placeholder, opt) : true) + (opt) => !opt.disabled && (this.#filterFn ? this.#filterFn(placeholder, opt) : true), ); if (key.name === 'tab' && isEmptyOrOnlyTab && placeholderMatchesOption) { if (this.userInput === '\t') { diff --git a/packages/core/src/prompts/confirm.ts b/packages/core/src/prompts/confirm.ts index 19276367..65f51267 100644 --- a/packages/core/src/prompts/confirm.ts +++ b/packages/core/src/prompts/confirm.ts @@ -1,5 +1,5 @@ import { cursor } from 'sisteransi'; -import Prompt, { type PromptOptions } from './prompt.js'; +import { Prompt, type PromptOptions } from './prompt.js'; export interface ConfirmOptions extends PromptOptions { active: string; @@ -7,7 +7,7 @@ export interface ConfirmOptions extends PromptOptions { initialValue?: boolean; } -export default class ConfirmPrompt extends Prompt { +export class ConfirmPrompt extends Prompt { get cursor() { return this.value ? 0 : 1; } diff --git a/packages/core/src/prompts/date.ts b/packages/core/src/prompts/date.ts index b04c2b50..1371d30b 100644 --- a/packages/core/src/prompts/date.ts +++ b/packages/core/src/prompts/date.ts @@ -1,6 +1,6 @@ import type { Key } from 'node:readline'; import { settings } from '../utils/settings.js'; -import Prompt, { type PromptOptions } from './prompt.js'; +import { Prompt, type PromptOptions } from './prompt.js'; interface SegmentConfig { type: 'year' | 'month' | 'day'; @@ -78,26 +78,20 @@ function toDate(parts: DateParts): Date | undefined { return p ? new Date(Date.UTC(p.year, p.month - 1, p.day)) : undefined; } +function toParts(date: Date | undefined): { year: number; month: number; day: number } | null { + return date + ? { year: date.getUTCFullYear(), month: date.getUTCMonth() + 1, day: date.getUTCDate() } + : null; +} + +// oxlint-disable-next-line max-params function segmentBounds( type: 'year' | 'month' | 'day', ctx: { year: number; month: number }, - minDate: Date | undefined, - maxDate: Date | undefined + dateConstraints: { minDate: Date | undefined; maxDate: Date | undefined }, ): { min: number; max: number } { - const minP = minDate - ? { - year: minDate.getUTCFullYear(), - month: minDate.getUTCMonth() + 1, - day: minDate.getUTCDate(), - } - : null; - const maxP = maxDate - ? { - year: maxDate.getUTCFullYear(), - month: maxDate.getUTCMonth() + 1, - day: maxDate.getUTCDate(), - } - : null; + const minP = toParts(dateConstraints.minDate); + const maxP = toParts(dateConstraints.maxDate); if (type === 'year') { return { min: minP?.year ?? 1, max: maxP?.year ?? 9999 }; @@ -127,7 +121,7 @@ export interface DateOptions extends PromptOptions { maxDate?: Date; } -export default class DatePrompt extends Prompt { +export class DatePrompt extends Prompt { #segments: SegmentConfig[]; #separator: string; #segmentValues: DateParts; @@ -205,7 +199,7 @@ export default class DatePrompt extends Prompt { if (!segment) return undefined; this.#cursor.positionInSegment = Math.max( 0, - Math.min(this.#cursor.positionInSegment, segment.len - 1) + Math.min(this.#cursor.positionInSegment, segment.len - 1), ); return { segment, index }; } @@ -217,7 +211,7 @@ export default class DatePrompt extends Prompt { if (!ctx) return; this.#cursor.segmentIndex = Math.max( 0, - Math.min(this.#segments.length - 1, ctx.index + direction) + Math.min(this.#segments.length - 1, ctx.index + direction), ); this.#cursor.positionInSegment = 0; this.#segmentSelected = true; @@ -230,12 +224,10 @@ export default class DatePrompt extends Prompt { const raw = this.#segmentValues[segment.type]; const isBlank = !raw || raw.replace(/_/g, '') === ''; const num = Number.parseInt((raw || '0').replace(/_/g, '0'), 10) || 0; - const bounds = segmentBounds( - segment.type, - parse(this.#segmentValues), - this.#minDate, - this.#maxDate - ); + const bounds = segmentBounds(segment.type, parse(this.#segmentValues), { + minDate: this.#minDate, + maxDate: this.#maxDate, + }); let next: number; if (isBlank) { diff --git a/packages/core/src/prompts/group-multiselect.ts b/packages/core/src/prompts/group-multiselect.ts index c189a919..529424ad 100644 --- a/packages/core/src/prompts/group-multiselect.ts +++ b/packages/core/src/prompts/group-multiselect.ts @@ -1,14 +1,16 @@ -import Prompt, { type PromptOptions } from './prompt.js'; +import { Prompt, type PromptOptions } from './prompt.js'; -export interface GroupMultiSelectOptions - extends PromptOptions> { +export interface GroupMultiSelectOptions extends PromptOptions< + T['value'][], + GroupMultiSelectPrompt +> { options: Record; initialValues?: T['value'][]; required?: boolean; cursorAt?: T['value']; selectableGroups?: boolean; } -export default class GroupMultiSelectPrompt extends Prompt { +export class GroupMultiSelectPrompt extends Prompt { options: (T & { group: string | boolean })[]; cursor = 0; #selectableGroups: boolean; @@ -36,7 +38,7 @@ export default class GroupMultiSelectPrompt extends Pr const groupedItems = this.getGroupItems(group); if (this.isGroupSelected(group)) { this.value = this.value.filter( - (v: string) => groupedItems.findIndex((i) => i.value === v) === -1 + (v: string) => groupedItems.findIndex((i) => i.value === v) === -1, ); } else { this.value = [...this.value, ...groupedItems.map((i) => i.value)]; @@ -61,7 +63,7 @@ export default class GroupMultiSelectPrompt extends Pr this.value = [...(opts.initialValues ?? [])]; this.cursor = Math.max( this.options.findIndex(({ value }) => value === opts.cursorAt), - this.#selectableGroups ? 0 : 1 + this.#selectableGroups ? 0 : 1, ); this.on('cursor', (key) => { diff --git a/packages/core/src/prompts/multi-line.ts b/packages/core/src/prompts/multi-line.ts index d3765fc1..81feb76f 100644 --- a/packages/core/src/prompts/multi-line.ts +++ b/packages/core/src/prompts/multi-line.ts @@ -2,7 +2,7 @@ import type { Key } from 'node:readline'; import { styleText } from 'node:util'; import { findTextCursor } from '../utils/cursor.js'; import { type Action, settings } from '../utils/index.js'; -import Prompt, { type PromptOptions } from './prompt.js'; +import { Prompt, type PromptOptions } from './prompt.js'; export interface MultiLineOptions extends PromptOptions { placeholder?: string; @@ -10,7 +10,7 @@ export interface MultiLineOptions extends PromptOptions showSubmit?: boolean; } -export default class MultiLinePrompt extends Prompt { +export class MultiLinePrompt extends Prompt { #lastKeyWasReturn = false; #showSubmit: boolean; public focused: 'editor' | 'submit' = 'editor'; @@ -38,7 +38,7 @@ export default class MultiLinePrompt extends Prompt { return; } this._setUserInput( - this.userInput.slice(0, this.cursor) + char + this.userInput.slice(this.cursor) + this.userInput.slice(0, this.cursor) + char + this.userInput.slice(this.cursor), ); } #handleCursor(key?: Action) { @@ -73,7 +73,7 @@ export default class MultiLinePrompt extends Prompt { if (wasReturn) { if (this.userInput[this.cursor - 1] === '\n') { this._setUserInput( - this.userInput.slice(0, this.cursor - 1) + this.userInput.slice(this.cursor) + this.userInput.slice(0, this.cursor - 1) + this.userInput.slice(this.cursor), ); this._cursor--; } @@ -103,14 +103,14 @@ export default class MultiLinePrompt extends Prompt { this.#lastKeyWasReturn = false; if (key?.name === 'backspace' && this.cursor > 0) { this._setUserInput( - this.userInput.slice(0, this.cursor - 1) + this.userInput.slice(this.cursor) + this.userInput.slice(0, this.cursor - 1) + this.userInput.slice(this.cursor), ); this._cursor--; return; } if (key?.name === 'delete' && this.cursor < this.userInput.length) { this._setUserInput( - this.userInput.slice(0, this.cursor) + this.userInput.slice(this.cursor + 1) + this.userInput.slice(0, this.cursor) + this.userInput.slice(this.cursor + 1), ); return; } diff --git a/packages/core/src/prompts/multi-select.ts b/packages/core/src/prompts/multi-select.ts index a19817a5..7a831aad 100644 --- a/packages/core/src/prompts/multi-select.ts +++ b/packages/core/src/prompts/multi-select.ts @@ -1,19 +1,21 @@ import { findCursor } from '../utils/cursor.js'; -import Prompt, { type PromptOptions } from './prompt.js'; +import { Prompt, type PromptOptions } from './prompt.js'; interface OptionLike { value: any; disabled?: boolean; } -export interface MultiSelectOptions - extends PromptOptions> { +export interface MultiSelectOptions extends PromptOptions< + T['value'][], + MultiSelectPrompt +> { options: T[]; initialValues?: T['value'][]; required?: boolean; cursorAt?: T['value']; } -export default class MultiSelectPrompt extends Prompt { +export class MultiSelectPrompt extends Prompt { options: T[]; cursor = 0; @@ -57,7 +59,7 @@ export default class MultiSelectPrompt extends Prompt value === opts.cursorAt), - 0 + 0, ); this.cursor = this.options[cursor].disabled ? findCursor(cursor, 1, this.options) : cursor; this.on('key', (char) => { diff --git a/packages/core/src/prompts/password.ts b/packages/core/src/prompts/password.ts index 949239d1..4ce0792b 100644 --- a/packages/core/src/prompts/password.ts +++ b/packages/core/src/prompts/password.ts @@ -1,10 +1,10 @@ import { styleText } from 'node:util'; -import Prompt, { type PromptOptions } from './prompt.js'; +import { Prompt, type PromptOptions } from './prompt.js'; export interface PasswordOptions extends PromptOptions { mask?: string; } -export default class PasswordPrompt extends Prompt { +export class PasswordPrompt extends Prompt { private _mask = '•'; get cursor() { return this._cursor; diff --git a/packages/core/src/prompts/prompt.ts b/packages/core/src/prompts/prompt.ts index 4333da9d..193164ab 100644 --- a/packages/core/src/prompts/prompt.ts +++ b/packages/core/src/prompts/prompt.ts @@ -24,7 +24,7 @@ export interface PromptOptions> { signal?: AbortSignal; } -export default class Prompt { +export class Prompt { protected input: Readable; protected output: Writable; private _abortSignal?: AbortSignal; @@ -70,7 +70,7 @@ export default class Prompt { */ private setSubscriber>( event: T, - opts: { cb: ClackEvents[T]; once?: boolean } + opts: { cb: ClackEvents[T]; once?: boolean }, ) { const params = this._subscribers.get(event) ?? []; params.push(opts); @@ -136,7 +136,7 @@ export default class Prompt { this.state = 'cancel'; this.close(); }, - { once: true } + { once: true }, ); } diff --git a/packages/core/src/prompts/select-key.ts b/packages/core/src/prompts/select-key.ts index 2e8e0b10..560bde22 100644 --- a/packages/core/src/prompts/select-key.ts +++ b/packages/core/src/prompts/select-key.ts @@ -1,11 +1,13 @@ -import Prompt, { type PromptOptions } from './prompt.js'; +import { Prompt, type PromptOptions } from './prompt.js'; -export interface SelectKeyOptions - extends PromptOptions> { +export interface SelectKeyOptions extends PromptOptions< + T['value'], + SelectKeyPrompt +> { options: T[]; caseSensitive?: boolean; } -export default class SelectKeyPrompt extends Prompt { +export class SelectKeyPrompt extends Prompt { options: T[]; cursor = 0; diff --git a/packages/core/src/prompts/select.ts b/packages/core/src/prompts/select.ts index 99ed5df9..4b1faaef 100644 --- a/packages/core/src/prompts/select.ts +++ b/packages/core/src/prompts/select.ts @@ -1,14 +1,14 @@ import { findCursor } from '../utils/cursor.js'; -import Prompt, { type PromptOptions } from './prompt.js'; +import { Prompt, type PromptOptions } from './prompt.js'; -export interface SelectOptions - extends PromptOptions> { +export interface SelectOptions extends PromptOptions< + T['value'], + SelectPrompt +> { options: T[]; initialValue?: T['value']; } -export default class SelectPrompt extends Prompt< - T['value'] -> { +export class SelectPrompt extends Prompt { options: T[]; cursor = 0; diff --git a/packages/core/src/prompts/text.ts b/packages/core/src/prompts/text.ts index 1aacc12f..b7c36490 100644 --- a/packages/core/src/prompts/text.ts +++ b/packages/core/src/prompts/text.ts @@ -1,12 +1,12 @@ import { styleText } from 'node:util'; -import Prompt, { type PromptOptions } from './prompt.js'; +import { Prompt, type PromptOptions } from './prompt.js'; export interface TextOptions extends PromptOptions { placeholder?: string; defaultValue?: string; } -export default class TextPrompt extends Prompt { +export class TextPrompt extends Prompt { get userInputWithCursor() { if (this.state === 'submit') { return this.userInput; diff --git a/packages/core/src/utils/cursor.ts b/packages/core/src/utils/cursor.ts index 75df1ac3..59252583 100644 --- a/packages/core/src/utils/cursor.ts +++ b/packages/core/src/utils/cursor.ts @@ -1,7 +1,8 @@ +// oxlint-disable-next-line max-params export function findCursor( cursor: number, delta: number, - options: T[] + options: T[], ) { const hasEnabledOptions = options.some((opt) => !opt.disabled); if (!hasEnabledOptions) { @@ -17,11 +18,12 @@ export function findCursor( return clampedCursor; } +// oxlint-disable-next-line max-params export function findTextCursor( cursor: number, deltaX: number, deltaY: number, - value: string + value: string, ): number { const lines = value.split('\n'); let cursorY = 0; diff --git a/packages/core/src/utils/index.ts b/packages/core/src/utils/index.ts index b2215721..48d009cb 100644 --- a/packages/core/src/utils/index.ts +++ b/packages/core/src/utils/index.ts @@ -98,12 +98,13 @@ export const getRows = (output: Writable): number => { return 20; }; +// oxlint-disable-next-line max-params export function wrapTextWithPrefix( output: Writable | undefined, text: string, prefix: string, startPrefix: string = prefix, - lineFormatter?: (line: string, index: number) => string + lineFormatter?: (line: string, index: number) => string, ): string { const columns = getColumns(output ?? stdout); const wrapped = wrapAnsi(text, columns - prefix.length, { diff --git a/packages/core/test/mock-writable.ts b/packages/core/test/mock-writable.ts index 746b0a0d..c1f17bd9 100644 --- a/packages/core/test/mock-writable.ts +++ b/packages/core/test/mock-writable.ts @@ -6,7 +6,7 @@ export class MockWritable extends Writable { _write( chunk: any, _encoding: BufferEncoding, - callback: (error?: Error | null | undefined) => void + callback: (error?: Error | null | undefined) => void, ): void { this.buffer.push(chunk.toString()); callback(); diff --git a/packages/core/test/prompts/autocomplete.test.ts b/packages/core/test/prompts/autocomplete.test.ts index f1d98e24..5ccd077f 100644 --- a/packages/core/test/prompts/autocomplete.test.ts +++ b/packages/core/test/prompts/autocomplete.test.ts @@ -1,6 +1,6 @@ import { cursor } from 'sisteransi'; import { afterEach, beforeEach, describe, expect, test, vi } from 'vitest'; -import { default as AutocompletePrompt } from '../../src/prompts/autocomplete.js'; +import { AutocompletePrompt } from '../../src/prompts/autocomplete.js'; import { MockReadable } from '../mock-readable.js'; import { MockWritable } from '../mock-writable.js'; diff --git a/packages/core/test/prompts/confirm.test.ts b/packages/core/test/prompts/confirm.test.ts index 8ad14c56..d6d2a6a5 100644 --- a/packages/core/test/prompts/confirm.test.ts +++ b/packages/core/test/prompts/confirm.test.ts @@ -1,6 +1,6 @@ import { cursor } from 'sisteransi'; import { afterEach, beforeEach, describe, expect, test, vi } from 'vitest'; -import { default as ConfirmPrompt } from '../../src/prompts/confirm.js'; +import { ConfirmPrompt } from '../../src/prompts/confirm.js'; import { MockReadable } from '../mock-readable.js'; import { MockWritable } from '../mock-writable.js'; diff --git a/packages/core/test/prompts/date.test.ts b/packages/core/test/prompts/date.test.ts index 8f3ce7e9..4d2c138b 100644 --- a/packages/core/test/prompts/date.test.ts +++ b/packages/core/test/prompts/date.test.ts @@ -1,6 +1,6 @@ import { cursor } from 'sisteransi'; import { afterEach, beforeEach, describe, expect, test, vi } from 'vitest'; -import { default as DatePrompt } from '../../src/prompts/date.js'; +import { DatePrompt } from '../../src/prompts/date.js'; import { isCancel } from '../../src/utils/index.js'; import { MockReadable } from '../mock-readable.js'; import { MockWritable } from '../mock-writable.js'; diff --git a/packages/core/test/prompts/multi-line.test.ts b/packages/core/test/prompts/multi-line.test.ts index 53f86a5d..74d34791 100644 --- a/packages/core/test/prompts/multi-line.test.ts +++ b/packages/core/test/prompts/multi-line.test.ts @@ -1,7 +1,7 @@ import { styleText } from 'node:util'; import { cursor } from 'sisteransi'; import { afterEach, beforeEach, describe, expect, test, vi } from 'vitest'; -import { default as MultiLinePrompt } from '../../src/prompts/multi-line.js'; +import { MultiLinePrompt } from '../../src/prompts/multi-line.js'; import { MockReadable } from '../mock-readable.js'; import { MockWritable } from '../mock-writable.js'; diff --git a/packages/core/test/prompts/multi-select.test.ts b/packages/core/test/prompts/multi-select.test.ts index 99695793..41fe12b0 100644 --- a/packages/core/test/prompts/multi-select.test.ts +++ b/packages/core/test/prompts/multi-select.test.ts @@ -1,6 +1,6 @@ import { cursor } from 'sisteransi'; import { afterEach, beforeEach, describe, expect, test, vi } from 'vitest'; -import { default as MultiSelectPrompt } from '../../src/prompts/multi-select.js'; +import { MultiSelectPrompt } from '../../src/prompts/multi-select.js'; import { MockReadable } from '../mock-readable.js'; import { MockWritable } from '../mock-writable.js'; diff --git a/packages/core/test/prompts/password.test.ts b/packages/core/test/prompts/password.test.ts index 3b37e9d3..025d4200 100644 --- a/packages/core/test/prompts/password.test.ts +++ b/packages/core/test/prompts/password.test.ts @@ -1,7 +1,7 @@ import { styleText } from 'node:util'; import { cursor } from 'sisteransi'; import { afterEach, beforeEach, describe, expect, test, vi } from 'vitest'; -import { default as PasswordPrompt } from '../../src/prompts/password.js'; +import { PasswordPrompt } from '../../src/prompts/password.js'; import { MockReadable } from '../mock-readable.js'; import { MockWritable } from '../mock-writable.js'; diff --git a/packages/core/test/prompts/prompt.test.ts b/packages/core/test/prompts/prompt.test.ts index bc4fa5e6..f13a568d 100644 --- a/packages/core/test/prompts/prompt.test.ts +++ b/packages/core/test/prompts/prompt.test.ts @@ -1,6 +1,6 @@ import { cursor } from 'sisteransi'; import { afterEach, beforeEach, describe, expect, test, vi } from 'vitest'; -import { default as Prompt } from '../../src/prompts/prompt.js'; +import { Prompt } from '../../src/prompts/prompt.js'; import { isCancel } from '../../src/utils/index.js'; import { MockReadable } from '../mock-readable.js'; import { MockWritable } from '../mock-writable.js'; @@ -186,7 +186,7 @@ describe('Prompt', () => { output, render: () => 'foo', }, - false + false, ); instance.on('cursor', eventSpy); diff --git a/packages/core/test/prompts/select.test.ts b/packages/core/test/prompts/select.test.ts index a3583061..b2e6c72c 100644 --- a/packages/core/test/prompts/select.test.ts +++ b/packages/core/test/prompts/select.test.ts @@ -1,6 +1,6 @@ import { cursor } from 'sisteransi'; import { afterEach, beforeEach, describe, expect, test, vi } from 'vitest'; -import { default as SelectPrompt } from '../../src/prompts/select.js'; +import { SelectPrompt } from '../../src/prompts/select.js'; import { MockReadable } from '../mock-readable.js'; import { MockWritable } from '../mock-writable.js'; diff --git a/packages/core/test/prompts/text.test.ts b/packages/core/test/prompts/text.test.ts index 91338a9b..dbc37979 100644 --- a/packages/core/test/prompts/text.test.ts +++ b/packages/core/test/prompts/text.test.ts @@ -1,7 +1,7 @@ import { styleText } from 'node:util'; import { cursor } from 'sisteransi'; import { afterEach, beforeEach, describe, expect, test, vi } from 'vitest'; -import { default as TextPrompt } from '../../src/prompts/text.js'; +import { TextPrompt } from '../../src/prompts/text.js'; import { MockReadable } from '../mock-readable.js'; import { MockWritable } from '../mock-writable.js'; diff --git a/packages/prompts/build.config.ts b/packages/prompts/build.config.ts deleted file mode 100644 index 6a4cead6..00000000 --- a/packages/prompts/build.config.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { defineBuildConfig } from 'unbuild'; - -export default defineBuildConfig({ - preset: '../../build.preset', - entries: ['src/index'], -}); diff --git a/packages/prompts/package.json b/packages/prompts/package.json index 9c9eae49..36d13293 100644 --- a/packages/prompts/package.json +++ b/packages/prompts/package.json @@ -51,9 +51,11 @@ "node": ">= 20.12.0" }, "scripts": { - "build": "unbuild", + "build": "bsh build", "prepack": "pnpm build", - "test": "vitest run" + "test": "bsh test", + "lint": "bsh lint", + "publint": "pnpm build && bsh publint" }, "dependencies": { "@clack/core": "workspace:*", @@ -63,8 +65,6 @@ }, "devDependencies": { "is-unicode-supported": "^1.3.0", - "memfs": "^4.17.2", - "vitest": "^3.2.4", - "vitest-ansi-serializer": "^0.1.2" + "memfs": "^4.17.2" } } diff --git a/packages/prompts/src/autocomplete.ts b/packages/prompts/src/autocomplete.ts index f840c717..c62c7b32 100644 --- a/packages/prompts/src/autocomplete.ts +++ b/packages/prompts/src/autocomplete.ts @@ -158,7 +158,7 @@ export const autocomplete = (opts: AutocompleteOptions) => { this.filteredOptions.length !== options.length ? styleText( 'dim', - ` (${this.filteredOptions.length} match${this.filteredOptions.length === 1 ? '' : 'es'})` + ` (${this.filteredOptions.length} match${this.filteredOptions.length === 1 ? '' : 'es'})`, ) : ''; @@ -177,7 +177,7 @@ export const autocomplete = (opts: AutocompleteOptions) => { headings.push( `${guidePrefix}${styleText('dim', 'Search:')}${searchText}${matches}`, ...noResults, - ...validationError + ...validationError, ); // Show instructions @@ -201,7 +201,7 @@ export const autocomplete = (opts: AutocompleteOptions) => { style: (option, active) => { return opt( option, - option.disabled ? 'disabled' : active ? 'active' : 'inactive' + option.disabled ? 'disabled' : active ? 'active' : 'inactive', ); }, maxItems: opts.maxItems, @@ -239,11 +239,12 @@ export interface AutocompleteMultiSelectOptions extends AutocompleteShare * Integrated autocomplete multiselect - combines type-ahead filtering with multiselect in one UI */ export const autocompleteMultiselect = (opts: AutocompleteMultiSelectOptions) => { + // oxlint-disable-next-line max-params const formatOption = ( option: Option, active: boolean, selectedValues: Value[], - focusedValue: Value | undefined + focusedValue: Value | undefined, ) => { const isSelected = selectedValues.includes(option.value); const label = option.label ?? String(option.value ?? ''); @@ -308,7 +309,7 @@ export const autocompleteMultiselect = (opts: AutocompleteMultiSelectOpti this.filteredOptions.length !== options.length ? styleText( 'dim', - ` (${this.filteredOptions.length} match${this.filteredOptions.length === 1 ? '' : 'es'})` + ` (${this.filteredOptions.length} match${this.filteredOptions.length === 1 ? '' : 'es'})`, ) : ''; @@ -317,13 +318,13 @@ export const autocompleteMultiselect = (opts: AutocompleteMultiSelectOpti case 'submit': { return `${title}${hasGuide ? `${styleText('gray', S_BAR)} ` : ''}${styleText( 'dim', - `${this.selectedValues.length} items selected` + `${this.selectedValues.length} items selected`, )}`; } case 'cancel': { return `${title}${hasGuide ? `${styleText('gray', S_BAR)} ` : ''}${styleText( ['strikethrough', 'dim'], - userInput + userInput, )}`; } default: { diff --git a/packages/prompts/src/box.ts b/packages/prompts/src/box.ts index e8f3b326..1f3955bd 100644 --- a/packages/prompts/src/box.ts +++ b/packages/prompts/src/box.ts @@ -39,26 +39,25 @@ export interface BoxOptions extends CommonOptions { } function getPaddingForLine( - lineLength: number, - innerWidth: number, - padding: number, - contentAlign: BoxAlignment | undefined + sizes: { lineLength: number; innerWidth: number; padding: number }, + contentAlign: BoxAlignment | undefined, ): [number, number] { - let leftPadding = padding; - let rightPadding = padding; + let leftPadding = sizes.padding; + if (contentAlign === 'center') { - leftPadding = Math.floor((innerWidth - lineLength) / 2); + leftPadding = Math.floor((sizes.innerWidth - sizes.lineLength) / 2); } else if (contentAlign === 'right') { - leftPadding = innerWidth - lineLength - padding; + leftPadding = sizes.innerWidth - sizes.lineLength - sizes.padding; } - rightPadding = innerWidth - leftPadding - lineLength; + const rightPadding = sizes.innerWidth - leftPadding - sizes.lineLength; return [leftPadding, rightPadding]; } const defaultFormatBorder = (text: string) => text; +// oxlint-disable-next-line max-params export const box = (message = '', title = '', opts?: BoxOptions) => { const output: Writable = opts?.output ?? process.stdout; const columns = getColumns(output); @@ -103,28 +102,24 @@ export const box = (message = '', title = '', opts?: BoxOptions) => { const truncatedTitle = titleWidth > maxTitleLength ? `${title.slice(0, maxTitleLength - 3)}...` : title; const [titlePaddingLeft, titlePaddingRight] = getPaddingForLine( - stringWidth(truncatedTitle), - innerWidth, - titlePadding, - opts?.titleAlign + { lineLength: stringWidth(truncatedTitle), innerWidth, padding: titlePadding }, + opts?.titleAlign, ); const wrappedMessage = wrapAnsi(message, innerWidth - contentPadding * 2, { hard: true, trim: false, }); output.write( - `${linePrefix}${symbols[0]}${hSymbol.repeat(titlePaddingLeft)}${truncatedTitle}${hSymbol.repeat(titlePaddingRight)}${symbols[1]}\n` + `${linePrefix}${symbols[0]}${hSymbol.repeat(titlePaddingLeft)}${truncatedTitle}${hSymbol.repeat(titlePaddingRight)}${symbols[1]}\n`, ); const wrappedLines = wrappedMessage.split('\n'); for (const line of wrappedLines) { const [leftLinePadding, rightLinePadding] = getPaddingForLine( - stringWidth(line), - innerWidth, - contentPadding, - opts?.contentAlign + { lineLength: stringWidth(line), innerWidth, padding: contentPadding }, + opts?.contentAlign, ); output.write( - `${linePrefix}${vSymbol}${' '.repeat(leftLinePadding)}${line}${' '.repeat(rightLinePadding)}${vSymbol}\n` + `${linePrefix}${vSymbol}${' '.repeat(leftLinePadding)}${line}${' '.repeat(rightLinePadding)}${vSymbol}\n`, ); } output.write(`${linePrefix}${symbols[2]}${hSymbol.repeat(innerWidth)}${symbols[3]}\n`); diff --git a/packages/prompts/src/confirm.ts b/packages/prompts/src/confirm.ts index 75b322ca..2c261e1c 100644 --- a/packages/prompts/src/confirm.ts +++ b/packages/prompts/src/confirm.ts @@ -34,7 +34,7 @@ export const confirm = (opts: ConfirmOptions) => { opts.output, opts.message, titlePrefixBar, - titlePrefix + titlePrefix, ); const title = `${hasGuide ? `${styleText('gray', S_BAR)}\n` : ''}${messageLines}\n`; const value = this.value ? active : inactive; diff --git a/packages/prompts/src/group-multi-select.ts b/packages/prompts/src/group-multi-select.ts index 99c4dbf6..cd7bd8c4 100644 --- a/packages/prompts/src/group-multi-select.ts +++ b/packages/prompts/src/group-multi-select.ts @@ -22,6 +22,7 @@ export interface GroupMultiSelectOptions extends CommonOptions { } export const groupMultiselect = (opts: GroupMultiSelectOptions) => { const { selectableGroups = true, groupSpacing = 0 } = opts; + // oxlint-disable-next-line max-params const opt = ( option: Option & { group: string | boolean }, state: @@ -33,7 +34,7 @@ export const groupMultiselect = (opts: GroupMultiSelectOptions) => | 'group-active-selected' | 'submitted' | 'cancelled', - options: (Option & { group: string | boolean })[] = [] + options: (Option & { group: string | boolean })[] = [], ) => { const label = option.label ?? String(option.value); const isItem = typeof option.group === 'string'; @@ -98,9 +99,9 @@ export const groupMultiselect = (opts: GroupMultiSelectOptions) => 'dim', `Press ${styleText(['gray', 'bgWhite', 'inverse'], ' space ')} to select, ${styleText( 'gray', - styleText(['bgWhite', 'inverse'], ' enter ') - )} to submit` - ) + styleText(['bgWhite', 'inverse'], ' enter '), + )} to submit`, + ), )}`; }, render() { @@ -132,10 +133,11 @@ export const groupMultiselect = (opts: GroupMultiSelectOptions) => .map((ln, i) => i === 0 ? `${hasGuide ? `${styleText('yellow', S_BAR_END)} ` : ''}${styleText('yellow', ln)}` - : ` ${ln}` + : ` ${ln}`, ) .join('\n'); return `${title}${hasGuide ? `${styleText('yellow', S_BAR)} ` : ''}${this.options + // oxlint-disable-next-line max-params .map((option, i, options) => { const selected = value.includes(option.value) || @@ -160,6 +162,7 @@ export const groupMultiselect = (opts: GroupMultiSelectOptions) => } default: { const optionsText = this.options + // oxlint-disable-next-line max-params .map((option, i, options) => { const selected = value.includes(option.value) || @@ -174,7 +177,7 @@ export const groupMultiselect = (opts: GroupMultiSelectOptions) => optionText = opt( option, selected ? 'group-active-selected' : 'group-active', - options + options, ); } else if (active && selected) { optionText = opt(option, 'active-selected', options); diff --git a/packages/prompts/src/group.ts b/packages/prompts/src/group.ts index 25e7365c..740e0093 100644 --- a/packages/prompts/src/group.ts +++ b/packages/prompts/src/group.ts @@ -28,7 +28,7 @@ export type PromptGroup = { */ export const group = async ( prompts: PromptGroup, - opts?: PromptGroupOptions + opts?: PromptGroupOptions, ): Promise>> => { const results = {} as any; const promptNames = Object.keys(prompts); diff --git a/packages/prompts/src/limit-options.ts b/packages/prompts/src/limit-options.ts index f9b63d3d..6fe4c109 100644 --- a/packages/prompts/src/limit-options.ts +++ b/packages/prompts/src/limit-options.ts @@ -14,18 +14,20 @@ export interface LimitOptionsParams extends CommonOptions { const trimLines = ( groups: Array, - initialLineCount: number, - startIndex: number, - endIndex: number, - maxLines: number + options: { + initialLineCount: number; + startIndex: number; + endIndex: number; + outputMaxItems: number; + }, ) => { - let lineCount = initialLineCount; + let lineCount = options.initialLineCount; let removals = 0; - for (let i = startIndex; i < endIndex; i++) { + for (let i = options.startIndex; i < options.endIndex; i++) { const group = groups[i]; lineCount = lineCount - group.length; removals++; - if (lineCount <= maxLines) { + if (lineCount <= options.outputMaxItems) { break; } } @@ -54,7 +56,7 @@ export const limitOptions = ({ if (cursor >= computedMaxItems - 3) { slidingWindowLocation = Math.max( Math.min(cursor - computedMaxItems + 3, options.length - computedMaxItems), - 0 + 0, ); } @@ -64,7 +66,7 @@ export const limitOptions = ({ const slidingWindowLocationEnd = Math.min( slidingWindowLocation + computedMaxItems, - options.length + options.length, ); const lineGroups: Array = []; let lineCount = 0; @@ -95,28 +97,33 @@ export const limitOptions = ({ let newLineCount = lineCount; const cursorGroupIndex = cursor - slidingWindowLocationWithEllipsis; const trimLinesLocal = (startIndex: number, endIndex: number) => - trimLines(lineGroups, newLineCount, startIndex, endIndex, outputMaxItems); + trimLines(lineGroups, { + initialLineCount: newLineCount, + startIndex, + endIndex, + outputMaxItems, + }); if (shouldRenderTopEllipsis) { ({ lineCount: newLineCount, removals: precedingRemovals } = trimLinesLocal( 0, - cursorGroupIndex + cursorGroupIndex, )); if (newLineCount > outputMaxItems) { ({ lineCount: newLineCount, removals: followingRemovals } = trimLinesLocal( cursorGroupIndex + 1, - lineGroups.length + lineGroups.length, )); } } else { ({ lineCount: newLineCount, removals: followingRemovals } = trimLinesLocal( cursorGroupIndex + 1, - lineGroups.length + lineGroups.length, )); if (newLineCount > outputMaxItems) { ({ lineCount: newLineCount, removals: precedingRemovals } = trimLinesLocal( 0, - cursorGroupIndex + cursorGroupIndex, )); } } diff --git a/packages/prompts/src/log.ts b/packages/prompts/src/log.ts index 2728d385..81f70d21 100644 --- a/packages/prompts/src/log.ts +++ b/packages/prompts/src/log.ts @@ -25,7 +25,7 @@ export const log = { output = process.stdout, spacing = 1, withGuide, - }: LogMessageOptions = {} + }: LogMessageOptions = {}, ) => { const parts: string[] = []; const hasGuide = withGuide ?? settings.withGuide; diff --git a/packages/prompts/src/multi-line.ts b/packages/prompts/src/multi-line.ts index 4eac8d8b..e7f42628 100644 --- a/packages/prompts/src/multi-line.ts +++ b/packages/prompts/src/multi-line.ts @@ -42,7 +42,7 @@ export const multiline = (opts: MultiLineOptions) => { const submitPrefix = `${styleText('gray', S_BAR)} `; const lines = hasGuide ? wrapTextWithPrefix(opts.output, value, submitPrefix, undefined, (str) => - styleText('dim', str) + styleText('dim', str), ) : value ? styleText('dim', value) @@ -53,7 +53,7 @@ export const multiline = (opts: MultiLineOptions) => { const cancelPrefix = `${styleText('gray', S_BAR)} `; const lines = hasGuide ? wrapTextWithPrefix(opts.output, value, cancelPrefix, undefined, (str) => - styleText(['strikethrough', 'dim'], str) + styleText(['strikethrough', 'dim'], str), ) : value ? styleText(['strikethrough', 'dim'], value) diff --git a/packages/prompts/src/multi-select.ts b/packages/prompts/src/multi-select.ts index 28b27aab..085a2565 100644 --- a/packages/prompts/src/multi-select.ts +++ b/packages/prompts/src/multi-select.ts @@ -38,7 +38,7 @@ export const multiselect = (opts: MultiSelectOptions) => { | 'active-selected' | 'submitted' | 'cancelled' - | 'disabled' + | 'disabled', ) => { const label = option.label ?? String(option.value); if (state === 'disabled') { @@ -87,9 +87,9 @@ export const multiselect = (opts: MultiSelectOptions) => { 'dim', `Press ${styleText(['gray', 'bgWhite', 'inverse'], ' space ')} to select, ${styleText( 'gray', - styleText('bgWhite', styleText('inverse', ' enter ')) - )} to submit` - ) + styleText('bgWhite', styleText('inverse', ' enter ')), + )} to submit`, + ), )}`; }, render() { @@ -98,7 +98,7 @@ export const multiselect = (opts: MultiSelectOptions) => { opts.output, opts.message, hasGuide ? `${symbolBar(this.state)} ` : '', - `${symbol(this.state)} ` + `${symbol(this.state)} `, ); const title = `${hasGuide ? `${styleText('gray', S_BAR)}\n` : ''}${wrappedMessage}\n`; const value = this.value ?? []; @@ -127,7 +127,7 @@ export const multiselect = (opts: MultiSelectOptions) => { const wrappedSubmitText = wrapTextWithPrefix( opts.output, submitText, - hasGuide ? `${styleText('gray', S_BAR)} ` : '' + hasGuide ? `${styleText('gray', S_BAR)} ` : '', ); return `${title}${wrappedSubmitText}`; } @@ -142,7 +142,7 @@ export const multiselect = (opts: MultiSelectOptions) => { const wrappedLabel = wrapTextWithPrefix( opts.output, label, - hasGuide ? `${styleText('gray', S_BAR)} ` : '' + hasGuide ? `${styleText('gray', S_BAR)} ` : '', ); return `${title}${wrappedLabel}${hasGuide ? `\n${styleText('gray', S_BAR)}` : ''}`; } @@ -153,7 +153,7 @@ export const multiselect = (opts: MultiSelectOptions) => { .map((ln, i) => i === 0 ? `${hasGuide ? `${styleText('yellow', S_BAR_END)} ` : ''}${styleText('yellow', ln)}` - : ` ${ln}` + : ` ${ln}`, ) .join('\n'); // Calculate rowPadding: title lines + footer lines (error message + trailing newline) diff --git a/packages/prompts/src/note.ts b/packages/prompts/src/note.ts index aa68d2b7..4f39aed7 100644 --- a/packages/prompts/src/note.ts +++ b/packages/prompts/src/note.ts @@ -22,6 +22,7 @@ export interface NoteOptions extends CommonOptions { const defaultNoteFormatter = (line: string): string => styleText('dim', line); +// oxlint-disable-next-line max-params const wrapWithFormat = (message: string, width: number, format: FormatFn): string => { const opts: WrapAnsiOptions = { hard: true, @@ -34,6 +35,7 @@ const wrapWithFormat = (message: string, width: number, format: FormatFn): strin return wrapAnsi(message, wrapWidth, opts); }; +// oxlint-disable-next-line max-params export const note = (message = '', title = '', opts?: NoteOptions) => { const output: Writable = opts?.output ?? process.stdout; const hasGuide = opts?.withGuide ?? settings.withGuide; @@ -47,12 +49,12 @@ export const note = (message = '', title = '', opts?: NoteOptions) => { const width = stringWidth(ln); return width > sum ? width : sum; }, 0), - titleLen + titleLen, ) + 2; const msg = lines .map( (ln) => - `${styleText('gray', S_BAR)} ${ln}${' '.repeat(len - stringWidth(ln))}${styleText('gray', S_BAR)}` + `${styleText('gray', S_BAR)} ${ln}${' '.repeat(len - stringWidth(ln))}${styleText('gray', S_BAR)}`, ) .join('\n'); const leadingBorder = hasGuide ? `${styleText('gray', S_BAR)}\n` : ''; @@ -60,7 +62,7 @@ export const note = (message = '', title = '', opts?: NoteOptions) => { output.write( `${leadingBorder}${styleText('green', S_STEP_SUBMIT)} ${styleText('reset', title)} ${styleText( 'gray', - S_BAR_H.repeat(Math.max(len - titleLen - 1, 1)) + S_CORNER_TOP_RIGHT - )}\n${msg}\n${styleText('gray', bottomLeft + S_BAR_H.repeat(len + 2) + S_CORNER_BOTTOM_RIGHT)}\n` + S_BAR_H.repeat(Math.max(len - titleLen - 1, 1)) + S_CORNER_TOP_RIGHT, + )}\n${msg}\n${styleText('gray', bottomLeft + S_BAR_H.repeat(len + 2) + S_CORNER_BOTTOM_RIGHT)}\n`, ); }; diff --git a/packages/prompts/src/path.ts b/packages/prompts/src/path.ts index 70b8618e..a90d8da8 100644 --- a/packages/prompts/src/path.ts +++ b/packages/prompts/src/path.ts @@ -1,4 +1,5 @@ import { existsSync, lstatSync, readdirSync } from 'node:fs'; +// oxlint-disable-next-line no-restricted-imports import { dirname, join } from 'node:path'; import { autocomplete } from './autocomplete.js'; import type { CommonOptions } from './common.js'; @@ -66,13 +67,13 @@ export const path = (opts: PathOptions) => { }; }) .filter( - ({ path, isDirectory }) => path.startsWith(prefix) && (isDirectory || !opts.directory) + ({ path, isDirectory }) => path.startsWith(prefix) && (isDirectory || !opts.directory), ); return items.map((item) => ({ value: item.path, })); - } catch (_e) { + } catch { return []; } }, diff --git a/packages/prompts/src/select-key.ts b/packages/prompts/src/select-key.ts index cceef81e..0316a374 100644 --- a/packages/prompts/src/select-key.ts +++ b/packages/prompts/src/select-key.ts @@ -13,7 +13,7 @@ export interface SelectKeyOptions extends CommonOptions { export const selectKey = (opts: SelectKeyOptions) => { const opt = ( option: Option, - state: 'inactive' | 'active' | 'selected' | 'cancelled' = 'inactive' + state: 'inactive' | 'active' | 'selected' | 'cancelled' = 'inactive', ) => { const label = option.label ?? String(option.value); if (state === 'selected') { @@ -51,7 +51,7 @@ export const selectKey = (opts: SelectKeyOptions) = const wrapped = wrapTextWithPrefix( opts.output, opt(selectedOption, 'selected'), - submitPrefix + submitPrefix, ); return `${title}${wrapped}`; } @@ -60,7 +60,7 @@ export const selectKey = (opts: SelectKeyOptions) = const wrapped = wrapTextWithPrefix( opts.output, opt(this.options[0], 'cancelled'), - cancelPrefix + cancelPrefix, ); return `${title}${wrapped}${hasGuide ? `\n${styleText('gray', S_BAR)}` : ''}`; } @@ -72,8 +72,8 @@ export const selectKey = (opts: SelectKeyOptions) = wrapTextWithPrefix( opts.output, opt(option, i === this.cursor ? 'active' : 'inactive'), - defaultPrefix - ) + defaultPrefix, + ), ) .join('\n'); return `${title}${wrapped}\n${defaultPrefixEnd}\n`; diff --git a/packages/prompts/src/select.ts b/packages/prompts/src/select.ts index a3407cdb..abf626e8 100644 --- a/packages/prompts/src/select.ts +++ b/packages/prompts/src/select.ts @@ -85,7 +85,7 @@ const computeLabel = (label: string, format: (text: string) => string) => { export const select = (opts: SelectOptions) => { const opt = ( option: Option, - state: 'inactive' | 'active' | 'selected' | 'cancelled' | 'disabled' + state: 'inactive' | 'active' | 'selected' | 'cancelled' | 'disabled', ) => { const label = option.label ?? String(option.value); switch (state) { @@ -120,7 +120,7 @@ export const select = (opts: SelectOptions) => { opts.output, opts.message, titlePrefixBar, - titlePrefix + titlePrefix, ); const title = `${hasGuide ? `${styleText('gray', S_BAR)}\n` : ''}${messageLines}\n`; @@ -130,7 +130,7 @@ export const select = (opts: SelectOptions) => { const wrappedLines = wrapTextWithPrefix( opts.output, opt(this.options[this.cursor], 'selected'), - submitPrefix + submitPrefix, ); return `${title}${wrappedLines}`; } @@ -139,7 +139,7 @@ export const select = (opts: SelectOptions) => { const wrappedLines = wrapTextWithPrefix( opts.output, opt(this.options[this.cursor], 'cancelled'), - cancelPrefix + cancelPrefix, ); return `${title}${wrappedLines}${hasGuide ? `\n${styleText('gray', S_BAR)}` : ''}`; } diff --git a/packages/prompts/src/spinner.ts b/packages/prompts/src/spinner.ts index 9b427e3a..2207ac1c 100644 --- a/packages/prompts/src/spinner.ts +++ b/packages/prompts/src/spinner.ts @@ -170,6 +170,7 @@ export const spinner = ({ }, delay); }; + // oxlint-disable-next-line max-params const _stop = (msg = '', code = 0, silent: boolean = false): void => { if (!isSpinnerActive) return; isSpinnerActive = false; diff --git a/packages/prompts/src/stream.ts b/packages/prompts/src/stream.ts index 4ff3db5e..e07dc2e5 100644 --- a/packages/prompts/src/stream.ts +++ b/packages/prompts/src/stream.ts @@ -12,7 +12,7 @@ const prefix = `${styleText('gray', S_BAR)} `; export const stream = { message: async ( iterable: Iterable | AsyncIterable, - { symbol = styleText('gray', S_BAR) }: LogMessageOptions = {} + { symbol = styleText('gray', S_BAR) }: LogMessageOptions = {}, ) => { process.stdout.write(`${styleText('gray', S_BAR)}\n${symbol} `); let lineWidth = 3; diff --git a/packages/prompts/src/task-log.ts b/packages/prompts/src/task-log.ts index e69f2206..4bc7eba9 100644 --- a/packages/prompts/src/task-log.ts +++ b/packages/prompts/src/task-log.ts @@ -37,7 +37,7 @@ interface BufferEntry { } const stripDestructiveANSI = (input: string): string => { - // biome-ignore lint/suspicious/noControlCharactersInRegex: intentional + // oxlint-disable-next-line no-control-regex return input.replace(/\x1b\[(?:\d+;)*\d*[ABCDEFGHfJKSTsu]|\x1b\[(s|u)/g, ''); }; @@ -105,6 +105,7 @@ export const taskLog = (opts: TaskLogOptions) => { output.write(erase.lines(lines)); } }; + // oxlint-disable-next-line max-params const printBuffer = (buffer: BufferEntry, messageSpacing?: number, full?: boolean): void => { const messages = full ? `${buffer.full}\n${buffer.value}` : buffer.value; if (buffer.header !== undefined && buffer.header !== '') { @@ -115,7 +116,7 @@ export const taskLog = (opts: TaskLogOptions) => { secondarySymbol, symbol: secondarySymbol, spacing: 0, - } + }, ); } log.message( @@ -125,7 +126,7 @@ export const taskLog = (opts: TaskLogOptions) => { secondarySymbol, symbol: secondarySymbol, spacing: messageSpacing ?? spacing, - } + }, ); }; const renderBuffer = (): void => { @@ -134,10 +135,18 @@ export const taskLog = (opts: TaskLogOptions) => { if ((header === undefined || header.length === 0) && value.length === 0) { continue; } - printBuffer(buffer, undefined, retainLog === true && full.length > 0); + printBuffer(buffer, undefined, retainLog && full.length > 0); } }; - const message = (buffer: BufferEntry, msg: string, mopts?: TaskLogMessageOptions) => { + const message = ({ + buffer, + msg, + mopts, + }: { + buffer: BufferEntry; + msg: string; + mopts?: TaskLogMessageOptions; + }) => { clear(false); if ((mopts?.raw !== true || !lastMessageWasRaw) && buffer.value !== '') { buffer.value += '\n'; @@ -184,7 +193,8 @@ export const taskLog = (opts: TaskLogOptions) => { return { message(msg: string, mopts?: TaskLogMessageOptions) { - message(buffers[0], msg, mopts); + const buffer = buffers[0]; + message({ buffer, msg, mopts }); }, group(name: string) { const buffer: BufferEntry = { @@ -195,7 +205,7 @@ export const taskLog = (opts: TaskLogOptions) => { buffers.push(buffer); return { message(msg: string, mopts?: TaskLogMessageOptions) { - message(buffer, msg, mopts); + message({ buffer, msg, mopts }); }, error(message: string) { completeBuffer(buffer, { diff --git a/packages/prompts/test/__snapshots__/autocomplete.test.ts.snap b/packages/prompts/test/__snapshots__/autocomplete.test.ts.snap index e508d4f4..efb12990 100644 --- a/packages/prompts/test/__snapshots__/autocomplete.test.ts.snap +++ b/packages/prompts/test/__snapshots__/autocomplete.test.ts.snap @@ -3,36 +3,36 @@ exports[`autocomplete > autocompleteMultiselect respects global withGuide: false 1`] = ` [ "", - "◆ Select fruits + "◆ Select fruits -Search: _ -◻ Apple -◻ Banana -◻ Cherry -◻ Grape -◻ Orange -↑/↓ to navigate • Tab: select • Enter: confirm • Type: to search +Search: _ +◻ Apple +Banana +Cherry +Grape +Orange +↑/↓ to navigate • Tab: select • Enter: confirm • Type: to search ", "", "", "", - "Search:  -◻ Apple -◻ Banana -◻ Cherry -◻ Grape -◻ Orange -↑/↓ to navigate • Space/Tab: select • Enter: confirm • Type: to search + "Search: +Apple +◻ Banana +Cherry +Grape +Orange +↑/↓ to navigate • Space/Tab: select • Enter: confirm • Type: to search ", "", "", "", - "◼ Banana", + "◼ Banana", "", "", "", - "◇ Select fruits -1 items selected", + "◇ Select fruits +1 items selected", " ", "", @@ -42,36 +42,36 @@ exports[`autocomplete > autocompleteMultiselect respects global withGuide: false exports[`autocomplete > autocompleteMultiselect respects withGuide: false 1`] = ` [ "", - "◆ Select fruits + "◆ Select fruits -Search: _ -◻ Apple -◻ Banana -◻ Cherry -◻ Grape -◻ Orange -↑/↓ to navigate • Tab: select • Enter: confirm • Type: to search +Search: _ +◻ Apple +Banana +Cherry +Grape +Orange +↑/↓ to navigate • Tab: select • Enter: confirm • Type: to search ", "", "", "", - "Search:  -◻ Apple -◻ Banana -◻ Cherry -◻ Grape -◻ Orange -↑/↓ to navigate • Space/Tab: select • Enter: confirm • Type: to search + "Search: +Apple +◻ Banana +Cherry +Grape +Orange +↑/↓ to navigate • Space/Tab: select • Enter: confirm • Type: to search ", "", "", "", - "◼ Banana", + "◼ Banana", "", "", "", - "◇ Select fruits -1 items selected", + "◇ Select fruits +1 items selected", " ", "", @@ -81,17 +81,17 @@ exports[`autocomplete > autocompleteMultiselect respects withGuide: false 1`] = exports[`autocomplete > can be aborted by a signal 1`] = ` [ "", - "│ -◆ foo -│ -│ Search: _ -│ ● Apple -│ ○ Banana -│ ○ Cherry -│ ○ Grape -│ ○ Orange -│ ↑/↓ to select • Enter: confirm • Type: to search -└", + "│ +◆ foo +│ +Search: _ +● Apple +Banana +Cherry +Grape +Orange +↑/↓ to select • Enter: confirm • Type: to search +└", " ", "", @@ -101,30 +101,30 @@ exports[`autocomplete > can be aborted by a signal 1`] = ` exports[`autocomplete > cannot select disabled options when only one left 1`] = ` [ "", - "│ -◆ Select a fruit -│ -│ Search: _ -│ ● Apple -│ ○ Banana -│ ○ Cherry -│ ○ Grape -│ ○ Orange -│ ○ Kiwi -│ ↑/↓ to select • Enter: confirm • Type: to search -└", + "│ +◆ Select a fruit +│ +Search: _ +● Apple +Banana +Cherry +Grape +Orange +○ Kiwi +↑/↓ to select • Enter: confirm • Type: to search +└", "", "", "", - "│ Search: k█ (1 match) -│ ○ Kiwi -│ ↑/↓ to select • Enter: confirm • Type: to search -└", + "Search: k█ (1 match) +○ Kiwi +↑/↓ to select • Enter: confirm • Type: to search +└", "", "", "", - "◇ Select a fruit -│", + "◇ Select a fruit +│", " ", "", @@ -134,73 +134,73 @@ exports[`autocomplete > cannot select disabled options when only one left 1`] = exports[`autocomplete > displays disabled options correctly 1`] = ` [ "", - "│ -◆ Select a fruit -│ -│ Search: _ -│ ● Apple -│ ○ Banana -│ ○ Cherry -│ ○ Grape -│ ○ Orange -│ ○ Kiwi -│ ↑/↓ to select • Enter: confirm • Type: to search -└", + "│ +◆ Select a fruit +│ +Search: _ +● Apple +Banana +Cherry +Grape +Orange +○ Kiwi +↑/↓ to select • Enter: confirm • Type: to search +└", "", "", "", - "│ Search: -│ ○ Apple -│ ● Banana -│ ○ Cherry -│ ○ Grape -│ ○ Orange -│ ○ Kiwi -│ ↑/↓ to select • Enter: confirm • Type: to search -└", + "Search: +Apple +● Banana +Cherry +Grape +Orange +○ Kiwi +↑/↓ to select • Enter: confirm • Type: to search +└", "", "", "", - "│ ○ Banana -│ ● Cherry -│ ○ Grape -│ ○ Orange -│ ○ Kiwi -│ ↑/↓ to select • Enter: confirm • Type: to search -└", + "Banana +● Cherry +Grape +Orange +○ Kiwi +↑/↓ to select • Enter: confirm • Type: to search +└", "", "", "", - "│ ○ Cherry -│ ● Grape -│ ○ Orange -│ ○ Kiwi -│ ↑/↓ to select • Enter: confirm • Type: to search -└", + "Cherry +● Grape +Orange +○ Kiwi +↑/↓ to select • Enter: confirm • Type: to search +└", "", "", "", - "│ ○ Grape -│ ● Orange -│ ○ Kiwi -│ ↑/↓ to select • Enter: confirm • Type: to search -└", + "Grape +● Orange +○ Kiwi +↑/↓ to select • Enter: confirm • Type: to search +└", "", "", "", - "│ ● Apple -│ ○ Banana -│ ○ Cherry -│ ○ Grape -│ ○ Orange -│ ○ Kiwi -│ ↑/↓ to select • Enter: confirm • Type: to search -└", + "● Apple +Banana +Cherry +Grape +Orange +○ Kiwi +↑/↓ to select • Enter: confirm • Type: to search +└", "", "", "", - "◇ Select a fruit -│ Apple", + "◇ Select a fruit +Apple", " ", "", @@ -210,23 +210,23 @@ exports[`autocomplete > displays disabled options correctly 1`] = ` exports[`autocomplete > limits displayed options when maxItems is set 1`] = ` [ "", - "│ -◆ Select an option -│ -│ Search: _ -│ ● Option 0 -│ ○ Option 1 -│ ○ Option 2 -│ ○ Option 3 -│ ○ Option 4 -│ ... -│ ↑/↓ to select • Enter: confirm • Type: to search -└", + "│ +◆ Select an option +│ +Search: _ +● Option 0 +Option 1 +Option 2 +Option 3 +Option 4 +... +↑/↓ to select • Enter: confirm • Type: to search +└", "", "", "", - "◇ Select an option -│ Option 0", + "◇ Select an option +Option 0", " ", "", @@ -236,30 +236,30 @@ exports[`autocomplete > limits displayed options when maxItems is set 1`] = ` exports[`autocomplete > placeholder is shown if set 1`] = ` [ "", - "│ -◆ Select a fruit -│ -│ Search: Type to search... -│ ● Apple -│ ○ Banana -│ ○ Cherry -│ ○ Grape -│ ○ Orange -│ ↑/↓ to select • Enter: confirm • Type: to search -└", + "│ +◆ Select a fruit +│ +Search: Type to search... +● Apple +Banana +Cherry +Grape +Orange +↑/↓ to select • Enter: confirm • Type: to search +└", "", "", "", - "│ Search: g█ (2 matches) -│ ● Grape -│ ○ Orange -│ ↑/↓ to select • Enter: confirm • Type: to search -└", + "Search: g█ (2 matches) +● Grape +Orange +↑/↓ to select • Enter: confirm • Type: to search +└", "", "", "", - "◇ Select a fruit -│ Grape", + "◇ Select a fruit +Grape", " ", "", @@ -269,24 +269,24 @@ exports[`autocomplete > placeholder is shown if set 1`] = ` exports[`autocomplete > renders bottom ellipsis when items do not fit 1`] = ` [ "", - "│ -◆ Select an option -│ -│ Search: _ -│ ● Line 0 -│ Line 1 -│ Line 2 -│ Line 3 -│ ... -│ ↑/↓ to select • Enter: confirm • Type: to search -└", + "│ +◆ Select an option +│ +Search: _ +● Line 0 +│ Line 1 +│ Line 2 +│ Line 3 +... +↑/↓ to select • Enter: confirm • Type: to search +└", "", "", - "◇ Select an option -│ Line 0 + "◇ Select an option +Line 0 Line 1 Line 2 -Line 3", +Line 3", " ", "", @@ -296,22 +296,22 @@ Line 3", exports[`autocomplete > renders initial UI with message and instructions 1`] = ` [ "", - "│ -◆ Select a fruit -│ -│ Search: _ -│ ● Apple -│ ○ Banana -│ ○ Cherry -│ ○ Grape -│ ○ Orange -│ ↑/↓ to select • Enter: confirm • Type: to search -└", + "│ +◆ Select a fruit +│ +Search: _ +● Apple +Banana +Cherry +Grape +Orange +↑/↓ to select • Enter: confirm • Type: to search +└", "", "", "", - "◇ Select a fruit -│ Apple", + "◇ Select a fruit +Apple", " ", "", @@ -321,22 +321,22 @@ exports[`autocomplete > renders initial UI with message and instructions 1`] = ` exports[`autocomplete > renders placeholder if set 1`] = ` [ "", - "│ -◆ Select a fruit -│ -│ Search: Type to search... -│ ● Apple -│ ○ Banana -│ ○ Cherry -│ ○ Grape -│ ○ Orange -│ ↑/↓ to select • Enter: confirm • Type: to search -└", + "│ +◆ Select a fruit +│ +Search: Type to search... +● Apple +Banana +Cherry +Grape +Orange +↑/↓ to select • Enter: confirm • Type: to search +└", "", "", "", - "◇ Select a fruit -│ Apple", + "◇ Select a fruit +Apple", " ", "", @@ -346,19 +346,19 @@ exports[`autocomplete > renders placeholder if set 1`] = ` exports[`autocomplete > renders top ellipsis when scrolled down and its do not fit 1`] = ` [ "", - "│ -◆ Select an option -│ -│ Search: _ -│ ... -│ ● Option 2 -│ ↑/↓ to select • Enter: confirm • Type: to search -└", + "│ +◆ Select an option +│ +Search: _ +... +● Option 2 +↑/↓ to select • Enter: confirm • Type: to search +└", "", "", - "│ -◇ Select an option -│ Option 2", + "│ +◇ Select an option +Option 2", " ", "", @@ -368,69 +368,69 @@ exports[`autocomplete > renders top ellipsis when scrolled down and its do not f exports[`autocomplete > shows hint when option has hint and is focused 1`] = ` [ "", - "│ -◆ Select a fruit -│ -│ Search: _ -│ ● Apple -│ ○ Banana -│ ○ Cherry -│ ○ Grape -│ ○ Orange -│ ○ Kiwi -│ ↑/↓ to select • Enter: confirm • Type: to search -└", + "│ +◆ Select a fruit +│ +Search: _ +● Apple +Banana +Cherry +Grape +Orange +Kiwi +↑/↓ to select • Enter: confirm • Type: to search +└", "", "", "", - "│ Search: -│ ○ Apple -│ ● Banana -│ ○ Cherry -│ ○ Grape -│ ○ Orange -│ ○ Kiwi -│ ↑/↓ to select • Enter: confirm • Type: to search -└", + "Search: +Apple +● Banana +Cherry +Grape +Orange +Kiwi +↑/↓ to select • Enter: confirm • Type: to search +└", "", "", "", - "│ ○ Banana -│ ● Cherry -│ ○ Grape -│ ○ Orange -│ ○ Kiwi -│ ↑/↓ to select • Enter: confirm • Type: to search -└", + "Banana +● Cherry +Grape +Orange +Kiwi +↑/↓ to select • Enter: confirm • Type: to search +└", "", "", "", - "│ ○ Cherry -│ ● Grape -│ ○ Orange -│ ○ Kiwi -│ ↑/↓ to select • Enter: confirm • Type: to search -└", + "Cherry +● Grape +Orange +Kiwi +↑/↓ to select • Enter: confirm • Type: to search +└", "", "", "", - "│ ○ Grape -│ ● Orange -│ ○ Kiwi -│ ↑/↓ to select • Enter: confirm • Type: to search -└", + "Grape +● Orange +Kiwi +↑/↓ to select • Enter: confirm • Type: to search +└", "", "", "", - "│ ○ Orange -│ ● Kiwi (New Zealand) -│ ↑/↓ to select • Enter: confirm • Type: to search -└", + "Orange +● Kiwi (New Zealand) +↑/↓ to select • Enter: confirm • Type: to search +└", "", "", "", - "◇ Select a fruit -│ Kiwi", + "◇ Select a fruit +Kiwi", " ", "", @@ -440,29 +440,29 @@ exports[`autocomplete > shows hint when option has hint and is focused 1`] = ` exports[`autocomplete > shows no matches message when search has no results 1`] = ` [ "", - "│ -◆ Select a fruit -│ -│ Search: _ -│ ● Apple -│ ○ Banana -│ ○ Cherry -│ ○ Grape -│ ○ Orange -│ ↑/↓ to select • Enter: confirm • Type: to search -└", + "│ +◆ Select a fruit +│ +Search: _ +● Apple +Banana +Cherry +Grape +Orange +↑/↓ to select • Enter: confirm • Type: to search +└", "", "", "", - "│ Search: z█ (0 matches) -│ No matches found -│ ↑/↓ to select • Enter: confirm • Type: to search -└", + "Search: z█ (0 matches) +No matches found +↑/↓ to select • Enter: confirm • Type: to search +└", "", "", "", - "◇ Select a fruit -│", + "◇ Select a fruit +│", " ", "", @@ -472,33 +472,33 @@ exports[`autocomplete > shows no matches message when search has no results 1`] exports[`autocomplete > shows selected value in submit state 1`] = ` [ "", - "│ -◆ Select a fruit -│ -│ Search: _ -│ ● Apple -│ ○ Banana -│ ○ Cherry -│ ○ Grape -│ ○ Orange -│ ↑/↓ to select • Enter: confirm • Type: to search -└", + "│ +◆ Select a fruit +│ +Search: _ +● Apple +Banana +Cherry +Grape +Orange +↑/↓ to select • Enter: confirm • Type: to search +└", "", "", "", - "│ Search: -│ ○ Apple -│ ● Banana -│ ○ Cherry -│ ○ Grape -│ ○ Orange -│ ↑/↓ to select • Enter: confirm • Type: to search -└", + "Search: +Apple +● Banana +Cherry +Grape +Orange +↑/↓ to select • Enter: confirm • Type: to search +└", "", "", "", - "◇ Select a fruit -│ Banana", + "◇ Select a fruit +Banana", " ", "", @@ -508,22 +508,22 @@ exports[`autocomplete > shows selected value in submit state 1`] = ` exports[`autocomplete > shows strikethrough in cancel state 1`] = ` [ "", - "│ -◆ Select a fruit -│ -│ Search: _ -│ ● Apple -│ ○ Banana -│ ○ Cherry -│ ○ Grape -│ ○ Orange -│ ↑/↓ to select • Enter: confirm • Type: to search -└", + "│ +◆ Select a fruit +│ +Search: _ +● Apple +Banana +Cherry +Grape +Orange +↑/↓ to select • Enter: confirm • Type: to search +└", "", "", "", - "■ Select a fruit -│", + "■ Select a fruit +│", " ", "", @@ -533,22 +533,22 @@ exports[`autocomplete > shows strikethrough in cancel state 1`] = ` exports[`autocomplete > supports initialValue 1`] = ` [ "", - "│ -◆ Select a fruit -│ -│ Search: _ -│ ○ Apple -│ ○ Banana -│ ● Cherry -│ ○ Grape -│ ○ Orange -│ ↑/↓ to select • Enter: confirm • Type: to search -└", + "│ +◆ Select a fruit +│ +Search: _ +Apple +Banana +● Cherry +Grape +Orange +↑/↓ to select • Enter: confirm • Type: to search +└", "", "", "", - "◇ Select a fruit -│ Cherry", + "◇ Select a fruit +Cherry", " ", "", @@ -558,28 +558,28 @@ exports[`autocomplete > supports initialValue 1`] = ` exports[`autocomplete with custom filter > falls back to default filter when not provided 1`] = ` [ "", - "│ -◆ Select a fruit -│ -│ Search: _ -│ ● Apple -│ ○ Banana -│ ○ Cherry -│ ↑/↓ to select • Enter: confirm • Type: to search -└", + "│ +◆ Select a fruit +│ +Search: _ +● Apple +Banana +Cherry +↑/↓ to select • Enter: confirm • Type: to search +└", "", "", "", - "│ Search: a█ (2 matches) -│ ● Apple -│ ○ Banana -│ ↑/↓ to select • Enter: confirm • Type: to search -└", + "Search: a█ (2 matches) +● Apple +Banana +↑/↓ to select • Enter: confirm • Type: to search +└", "", "", "", - "◇ Select a fruit -│ Apple", + "◇ Select a fruit +Apple", " ", "", @@ -589,27 +589,27 @@ exports[`autocomplete with custom filter > falls back to default filter when not exports[`autocomplete with custom filter > uses custom filter function when provided 1`] = ` [ "", - "│ -◆ Select a fruit -│ -│ Search: _ -│ ● Apple -│ ○ Banana -│ ○ Cherry -│ ↑/↓ to select • Enter: confirm • Type: to search -└", + "│ +◆ Select a fruit +│ +Search: _ +● Apple +Banana +Cherry +↑/↓ to select • Enter: confirm • Type: to search +└", "", "", "", - "│ Search: a█ (1 match) -│ ● Apple -│ ↑/↓ to select • Enter: confirm • Type: to search -└", + "Search: a█ (1 match) +● Apple +↑/↓ to select • Enter: confirm • Type: to search +└", "", "", "", - "◇ Select a fruit -│ Apple", + "◇ Select a fruit +Apple", " ", "", @@ -619,17 +619,17 @@ exports[`autocomplete with custom filter > uses custom filter function when prov exports[`autocompleteMultiselect > can be aborted by a signal 1`] = ` [ "", - "│ -◆ foo -│ -│ Search: _ -│ ◻ Apple -│ ◻ Banana -│ ◻ Cherry -│ ◻ Grape -│ ◻ Orange -│ ↑/↓ to navigate • Tab: select • Enter: confirm • Type: to search -└", + "│ +◆ foo +│ +Search: _ +◻ Apple +Banana +Cherry +Grape +Orange +↑/↓ to navigate • Tab: select • Enter: confirm • Type: to search +└", " ", "", @@ -639,52 +639,52 @@ exports[`autocompleteMultiselect > can be aborted by a signal 1`] = ` exports[`autocompleteMultiselect > can use navigation keys to select options 1`] = ` [ "", - "│ -◆ Select fruits -│ -│ Search: _ -│ ◻ Apple -│ ◻ Banana -│ ◻ Cherry -│ ◻ Grape -│ ◻ Orange -│ ↑/↓ to navigate • Tab: select • Enter: confirm • Type: to search -└", + "│ +◆ Select fruits +│ +Search: _ +◻ Apple +Banana +Cherry +Grape +Orange +↑/↓ to navigate • Tab: select • Enter: confirm • Type: to search +└", "", "", "", - "│ Search:  -│ ◻ Apple -│ ◻ Banana -│ ◻ Cherry -│ ◻ Grape -│ ◻ Orange -│ ↑/↓ to navigate • Space/Tab: select • Enter: confirm • Type: to search -└", + "Search: +Apple +◻ Banana +Cherry +Grape +Orange +↑/↓ to navigate • Space/Tab: select • Enter: confirm • Type: to search +└", "", "", "", - "│ ◼ Banana", + "◼ Banana", "", "", "", "", - "│ ◼ Banana -│ ◻ Cherry -│ ◻ Grape -│ ◻ Orange -│ ↑/↓ to navigate • Space/Tab: select • Enter: confirm • Type: to search -└", + "Banana +◻ Cherry +Grape +Orange +↑/↓ to navigate • Space/Tab: select • Enter: confirm • Type: to search +└", "", "", "", - "│ ◼ Cherry", + "◼ Cherry", "", "", "", "", - "◇ Select fruits -│ 2 items selected", + "◇ Select fruits +2 items selected", " ", "", @@ -694,30 +694,30 @@ exports[`autocompleteMultiselect > can use navigation keys to select options 1`] exports[`autocompleteMultiselect > cannot select disabled options when only one left 1`] = ` [ "", - "│ -◆ Select a fruit -│ -│ Search: _ -│ ◻ Apple -│ ◻ Banana -│ ◻ Cherry -│ ◻ Grape -│ ◻ Orange -│ ◻ Kiwi -│ ↑/↓ to navigate • Tab: select • Enter: confirm • Type: to search -└", + "│ +◆ Select a fruit +│ +Search: _ +◻ Apple +Banana +Cherry +Grape +Orange +◻ Kiwi +↑/↓ to navigate • Tab: select • Enter: confirm • Type: to search +└", "", "", "", - "│ Search: k█ (1 match) -│ ◻ Kiwi -│ ↑/↓ to navigate • Tab: select • Enter: confirm • Type: to search -└", + "Search: k█ (1 match) +◻ Kiwi +↑/↓ to navigate • Tab: select • Enter: confirm • Type: to search +└", "", "", "", - "◇ Select a fruit -│ 0 items selected", + "◇ Select a fruit +0 items selected", " ", "", @@ -727,78 +727,78 @@ exports[`autocompleteMultiselect > cannot select disabled options when only one exports[`autocompleteMultiselect > displays disabled options correctly 1`] = ` [ "", - "│ -◆ Select a fruit -│ -│ Search: _ -│ ◻ Apple -│ ◻ Banana -│ ◻ Cherry -│ ◻ Grape -│ ◻ Orange -│ ◻ Kiwi -│ ↑/↓ to navigate • Tab: select • Enter: confirm • Type: to search -└", + "│ +◆ Select a fruit +│ +Search: _ +◻ Apple +Banana +Cherry +Grape +Orange +◻ Kiwi +↑/↓ to navigate • Tab: select • Enter: confirm • Type: to search +└", "", "", "", - "│ Search:  -│ ◻ Apple -│ ◻ Banana -│ ◻ Cherry -│ ◻ Grape -│ ◻ Orange -│ ◻ Kiwi -│ ↑/↓ to navigate • Space/Tab: select • Enter: confirm • Type: to search -└", + "Search: +Apple +◻ Banana +Cherry +Grape +Orange +◻ Kiwi +↑/↓ to navigate • Space/Tab: select • Enter: confirm • Type: to search +└", "", "", "", - "│ ◻ Banana -│ ◻ Cherry -│ ◻ Grape -│ ◻ Orange -│ ◻ Kiwi -│ ↑/↓ to navigate • Space/Tab: select • Enter: confirm • Type: to search -└", + "Banana +◻ Cherry +Grape +Orange +◻ Kiwi +↑/↓ to navigate • Space/Tab: select • Enter: confirm • Type: to search +└", "", "", "", - "│ ◻ Cherry -│ ◻ Grape -│ ◻ Orange -│ ◻ Kiwi -│ ↑/↓ to navigate • Space/Tab: select • Enter: confirm • Type: to search -└", + "Cherry +◻ Grape +Orange +◻ Kiwi +↑/↓ to navigate • Space/Tab: select • Enter: confirm • Type: to search +└", "", "", "", - "│ ◻ Grape -│ ◻ Orange -│ ◻ Kiwi -│ ↑/↓ to navigate • Space/Tab: select • Enter: confirm • Type: to search -└", + "Grape +◻ Orange +◻ Kiwi +↑/↓ to navigate • Space/Tab: select • Enter: confirm • Type: to search +└", "", "", "", - "│ ◻ Apple -│ ◻ Banana -│ ◻ Cherry -│ ◻ Grape -│ ◻ Orange -│ ◻ Kiwi -│ ↑/↓ to navigate • Space/Tab: select • Enter: confirm • Type: to search -└", + "◻ Apple +Banana +Cherry +Grape +Orange +◻ Kiwi +↑/↓ to navigate • Space/Tab: select • Enter: confirm • Type: to search +└", "", "", "", - "│ ◼ Apple", + "◼ Apple", "", "", "", "", - "◇ Select a fruit -│ 1 items selected", + "◇ Select a fruit +1 items selected", " ", "", @@ -808,49 +808,49 @@ exports[`autocompleteMultiselect > displays disabled options correctly 1`] = ` exports[`autocompleteMultiselect > renders error when empty selection & required is true 1`] = ` [ "", - "│ -◆ Select a fruit -│ -│ Search: _ -│ ◻ Apple -│ ◻ Banana -│ ◻ Cherry -│ ◻ Grape -│ ◻ Orange -│ ↑/↓ to navigate • Tab: select • Enter: confirm • Type: to search -└", + "│ +◆ Select a fruit +│ +Search: _ +◻ Apple +Banana +Cherry +Grape +Orange +↑/↓ to navigate • Tab: select • Enter: confirm • Type: to search +└", "", "", "", - "▲ Select a fruit -│ -│ Search: _ -│ Please select at least one item -│ ◻ Apple -│ ◻ Banana -│ ◻ Cherry -│ ◻ Grape -│ ◻ Orange -│ ↑/↓ to navigate • Tab: select • Enter: confirm • Type: to search -└", + "▲ Select a fruit +│ +Search: _ +Please select at least one item +◻ Apple +Banana +Cherry +Grape +Orange +↑/↓ to navigate • Tab: select • Enter: confirm • Type: to search +└", "", "", "", - "◆ Select a fruit -│ -│ Search: _ -│ ◼ Apple -│ ◻ Banana -│ ◻ Cherry -│ ◻ Grape -│ ◻ Orange -│ ↑/↓ to navigate • Tab: select • Enter: confirm • Type: to search -└", + "◆ Select a fruit +│ +Search: _ +◼ Apple +Banana +Cherry +Grape +Orange +↑/↓ to navigate • Tab: select • Enter: confirm • Type: to search +└", "", "", "", - "◇ Select a fruit -│ 1 items selected", + "◇ Select a fruit +1 items selected", " ", "", @@ -860,34 +860,34 @@ exports[`autocompleteMultiselect > renders error when empty selection & required exports[`autocompleteMultiselect > supports custom filter function 1`] = ` [ "", - "│ -◆ Select fruits -│ -│ Search: _ -│ ◻ Apple -│ ◻ Banana -│ ◻ Cherry -│ ◻ Grape -│ ◻ Orange -│ ↑/↓ to navigate • Tab: select • Enter: confirm • Type: to search -└", + "│ +◆ Select fruits +│ +Search: _ +◻ Apple +Banana +Cherry +Grape +Orange +↑/↓ to navigate • Tab: select • Enter: confirm • Type: to search +└", "", "", "", - "│ Search: a█ (1 match) -│ ◻ Apple -│ ↑/↓ to navigate • Tab: select • Enter: confirm • Type: to search -└", + "Search: a█ (1 match) +◻ Apple +↑/↓ to navigate • Tab: select • Enter: confirm • Type: to search +└", "", "", "", - "│ ◼ Apple", + "◼ Apple", "", "", "", "", - "◇ Select fruits -│ 1 items selected", + "◇ Select fruits +1 items selected", " ", "", diff --git a/packages/prompts/test/__snapshots__/box.test.ts.snap b/packages/prompts/test/__snapshots__/box.test.ts.snap index b8926767..cb745226 100644 --- a/packages/prompts/test/__snapshots__/box.test.ts.snap +++ b/packages/prompts/test/__snapshots__/box.test.ts.snap @@ -225,11 +225,11 @@ exports[`box (isCI = false) > renders wide characters with specified width 1`] = exports[`box (isCI = false) > renders with formatBorder formatting 1`] = ` [ - "│ ┌─title──────┐ + "│ ─title┐ ", - "│ │ message │ + "│ │ message │ ", - "│ └────────────┘ + "│ ┘ ", ] `; @@ -500,11 +500,11 @@ exports[`box (isCI = true) > renders wide characters with specified width 1`] = exports[`box (isCI = true) > renders with formatBorder formatting 1`] = ` [ - "│ ┌─title──────┐ + "│ ─title┐ ", - "│ │ message │ + "│ │ message │ ", - "│ └────────────┘ + "│ ┘ ", ] `; diff --git a/packages/prompts/test/__snapshots__/confirm.test.ts.snap b/packages/prompts/test/__snapshots__/confirm.test.ts.snap index bdc4ed63..d7bafcda 100644 --- a/packages/prompts/test/__snapshots__/confirm.test.ts.snap +++ b/packages/prompts/test/__snapshots__/confirm.test.ts.snap @@ -3,10 +3,10 @@ exports[`confirm (isCI = false) > can be aborted by a signal 1`] = ` [ "", - "│ -◆ yes? -│ ● Yes / ○ No -└ + "│ +◆ yes? +● Yes / No +└ ", " ", @@ -17,17 +17,17 @@ exports[`confirm (isCI = false) > can be aborted by a signal 1`] = ` exports[`confirm (isCI = false) > can cancel 1`] = ` [ "", - "│ -◆ foo -│ ● Yes / ○ No -└ + "│ +◆ foo +● Yes / No +└ ", "", "", "", - "■ foo -│ No -│", + "■ foo +│ No +│", " ", "", @@ -37,16 +37,16 @@ exports[`confirm (isCI = false) > can cancel 1`] = ` exports[`confirm (isCI = false) > can set initialValue 1`] = ` [ "", - "│ -◆ foo -│ ○ Yes / ● No -└ + "│ +◆ foo +Yes / ● No +└ ", "", "", "", - "◇ foo -│ No", + "◇ foo +No", " ", "", @@ -56,14 +56,14 @@ exports[`confirm (isCI = false) > can set initialValue 1`] = ` exports[`confirm (isCI = false) > global withGuide: false removes guide 1`] = ` [ "", - "◆ foo -● Yes / ○ No + "◆ foo +● Yes / No ", "", "", - "◇ foo -Yes", + "◇ foo +Yes", " ", "", @@ -73,26 +73,26 @@ exports[`confirm (isCI = false) > global withGuide: false removes guide 1`] = ` exports[`confirm (isCI = false) > left arrow moves to previous choice 1`] = ` [ "", - "│ -◆ foo -│ ● Yes / ○ No -└ + "│ +◆ foo +● Yes / No +└ ", "", "", "", - "│ ○ Yes / ● No", + "Yes / ● No", "", "", "", "", - "│ ● Yes / ○ No", + "● Yes / No", "", "", "", "", - "◇ foo -│ Yes", + "◇ foo +Yes", " ", "", @@ -102,16 +102,16 @@ exports[`confirm (isCI = false) > left arrow moves to previous choice 1`] = ` exports[`confirm (isCI = false) > renders custom active choice 1`] = ` [ "", - "│ -◆ foo -│ ● bleep / ○ No -└ + "│ +◆ foo +● bleep / No +└ ", "", "", "", - "◇ foo -│ bleep", + "◇ foo +bleep", " ", "", @@ -121,16 +121,16 @@ exports[`confirm (isCI = false) > renders custom active choice 1`] = ` exports[`confirm (isCI = false) > renders custom inactive choice 1`] = ` [ "", - "│ -◆ foo -│ ● Yes / ○ bleep -└ + "│ +◆ foo +● Yes / bleep +└ ", "", "", "", - "◇ foo -│ Yes", + "◇ foo +Yes", " ", "", @@ -140,16 +140,16 @@ exports[`confirm (isCI = false) > renders custom inactive choice 1`] = ` exports[`confirm (isCI = false) > renders message with choices 1`] = ` [ "", - "│ -◆ foo -│ ● Yes / ○ No -└ + "│ +◆ foo +● Yes / No +└ ", "", "", "", - "◇ foo -│ Yes", + "◇ foo +Yes", " ", "", @@ -159,20 +159,20 @@ exports[`confirm (isCI = false) > renders message with choices 1`] = ` exports[`confirm (isCI = false) > renders multi-line messages correctly 1`] = ` [ "", - "│ -◆ foo -│ bar -│ baz -│ ● Yes / ○ No -└ + "│ +◆ foo +│ bar +│ baz +● Yes / No +└ ", "", "", "", - "◇ foo -│ bar -│ baz -│ Yes", + "◇ foo +│ bar +│ baz +Yes", " ", "", @@ -182,17 +182,17 @@ exports[`confirm (isCI = false) > renders multi-line messages correctly 1`] = ` exports[`confirm (isCI = false) > renders options in vertical alignment 1`] = ` [ "", - "│ -◆ foo -│ ● Yes -│ ○ No -└ + "│ +◆ foo +● Yes +No +└ ", "", "", "", - "◇ foo -│ Yes", + "◇ foo +Yes", " ", "", @@ -202,21 +202,21 @@ exports[`confirm (isCI = false) > renders options in vertical alignment 1`] = ` exports[`confirm (isCI = false) > right arrow moves to next choice 1`] = ` [ "", - "│ -◆ foo -│ ● Yes / ○ No -└ + "│ +◆ foo +● Yes / No +└ ", "", "", "", - "│ ○ Yes / ● No", + "Yes / ● No", "", "", "", "", - "◇ foo -│ No", + "◇ foo +No", " ", "", @@ -226,14 +226,14 @@ exports[`confirm (isCI = false) > right arrow moves to next choice 1`] = ` exports[`confirm (isCI = false) > withGuide: false removes guide 1`] = ` [ "", - "◆ foo -● Yes / ○ No + "◆ foo +● Yes / No ", "", "", - "◇ foo -Yes", + "◇ foo +Yes", " ", "", @@ -243,10 +243,10 @@ exports[`confirm (isCI = false) > withGuide: false removes guide 1`] = ` exports[`confirm (isCI = true) > can be aborted by a signal 1`] = ` [ "", - "│ -◆ yes? -│ ● Yes / ○ No -└ + "│ +◆ yes? +● Yes / No +└ ", " ", @@ -257,17 +257,17 @@ exports[`confirm (isCI = true) > can be aborted by a signal 1`] = ` exports[`confirm (isCI = true) > can cancel 1`] = ` [ "", - "│ -◆ foo -│ ● Yes / ○ No -└ + "│ +◆ foo +● Yes / No +└ ", "", "", "", - "■ foo -│ No -│", + "■ foo +│ No +│", " ", "", @@ -277,16 +277,16 @@ exports[`confirm (isCI = true) > can cancel 1`] = ` exports[`confirm (isCI = true) > can set initialValue 1`] = ` [ "", - "│ -◆ foo -│ ○ Yes / ● No -└ + "│ +◆ foo +Yes / ● No +└ ", "", "", "", - "◇ foo -│ No", + "◇ foo +No", " ", "", @@ -296,14 +296,14 @@ exports[`confirm (isCI = true) > can set initialValue 1`] = ` exports[`confirm (isCI = true) > global withGuide: false removes guide 1`] = ` [ "", - "◆ foo -● Yes / ○ No + "◆ foo +● Yes / No ", "", "", - "◇ foo -Yes", + "◇ foo +Yes", " ", "", @@ -313,26 +313,26 @@ exports[`confirm (isCI = true) > global withGuide: false removes guide 1`] = ` exports[`confirm (isCI = true) > left arrow moves to previous choice 1`] = ` [ "", - "│ -◆ foo -│ ● Yes / ○ No -└ + "│ +◆ foo +● Yes / No +└ ", "", "", "", - "│ ○ Yes / ● No", + "Yes / ● No", "", "", "", "", - "│ ● Yes / ○ No", + "● Yes / No", "", "", "", "", - "◇ foo -│ Yes", + "◇ foo +Yes", " ", "", @@ -342,16 +342,16 @@ exports[`confirm (isCI = true) > left arrow moves to previous choice 1`] = ` exports[`confirm (isCI = true) > renders custom active choice 1`] = ` [ "", - "│ -◆ foo -│ ● bleep / ○ No -└ + "│ +◆ foo +● bleep / No +└ ", "", "", "", - "◇ foo -│ bleep", + "◇ foo +bleep", " ", "", @@ -361,16 +361,16 @@ exports[`confirm (isCI = true) > renders custom active choice 1`] = ` exports[`confirm (isCI = true) > renders custom inactive choice 1`] = ` [ "", - "│ -◆ foo -│ ● Yes / ○ bleep -└ + "│ +◆ foo +● Yes / bleep +└ ", "", "", "", - "◇ foo -│ Yes", + "◇ foo +Yes", " ", "", @@ -380,16 +380,16 @@ exports[`confirm (isCI = true) > renders custom inactive choice 1`] = ` exports[`confirm (isCI = true) > renders message with choices 1`] = ` [ "", - "│ -◆ foo -│ ● Yes / ○ No -└ + "│ +◆ foo +● Yes / No +└ ", "", "", "", - "◇ foo -│ Yes", + "◇ foo +Yes", " ", "", @@ -399,20 +399,20 @@ exports[`confirm (isCI = true) > renders message with choices 1`] = ` exports[`confirm (isCI = true) > renders multi-line messages correctly 1`] = ` [ "", - "│ -◆ foo -│ bar -│ baz -│ ● Yes / ○ No -└ + "│ +◆ foo +│ bar +│ baz +● Yes / No +└ ", "", "", "", - "◇ foo -│ bar -│ baz -│ Yes", + "◇ foo +│ bar +│ baz +Yes", " ", "", @@ -422,17 +422,17 @@ exports[`confirm (isCI = true) > renders multi-line messages correctly 1`] = ` exports[`confirm (isCI = true) > renders options in vertical alignment 1`] = ` [ "", - "│ -◆ foo -│ ● Yes -│ ○ No -└ + "│ +◆ foo +● Yes +No +└ ", "", "", "", - "◇ foo -│ Yes", + "◇ foo +Yes", " ", "", @@ -442,21 +442,21 @@ exports[`confirm (isCI = true) > renders options in vertical alignment 1`] = ` exports[`confirm (isCI = true) > right arrow moves to next choice 1`] = ` [ "", - "│ -◆ foo -│ ● Yes / ○ No -└ + "│ +◆ foo +● Yes / No +└ ", "", "", "", - "│ ○ Yes / ● No", + "Yes / ● No", "", "", "", "", - "◇ foo -│ No", + "◇ foo +No", " ", "", @@ -466,14 +466,14 @@ exports[`confirm (isCI = true) > right arrow moves to next choice 1`] = ` exports[`confirm (isCI = true) > withGuide: false removes guide 1`] = ` [ "", - "◆ foo -● Yes / ○ No + "◆ foo +● Yes / No ", "", "", - "◇ foo -Yes", + "◇ foo +Yes", " ", "", diff --git a/packages/prompts/test/__snapshots__/date.test.ts.snap b/packages/prompts/test/__snapshots__/date.test.ts.snap index 6af6422b..559b1be9 100644 --- a/packages/prompts/test/__snapshots__/date.test.ts.snap +++ b/packages/prompts/test/__snapshots__/date.test.ts.snap @@ -3,16 +3,16 @@ exports[`date (isCI = false) > can cancel 1`] = ` [ "", - "│ -◆ Pick a date -│ mm/dd/yyyy -└ + "│ +◆ Pick a date +│ mm/dd/yyyy +└ ", "", "", "", - "■ Pick a date -│", + "■ Pick a date +│", " ", "", @@ -22,16 +22,16 @@ exports[`date (isCI = false) > can cancel 1`] = ` exports[`date (isCI = false) > defaultValue used when empty submit 1`] = ` [ "", - "│ -◆ Pick a date -│ 12/25/2025 -└ + "│ +◆ Pick a date +│ 12/25/2025 +└ ", "", "", "", - "◇ Pick a date -│ 12/25/2025", + "◇ Pick a date +12/25/2025", " ", "", @@ -41,16 +41,16 @@ exports[`date (isCI = false) > defaultValue used when empty submit 1`] = ` exports[`date (isCI = false) > renders initial value 1`] = ` [ "", - "│ -◆ Pick a date -│ 01/15/2025 -└ + "│ +◆ Pick a date +│ 01/15/2025 +└ ", "", "", "", - "◇ Pick a date -│ 01/15/2025", + "◇ Pick a date +01/15/2025", " ", "", @@ -60,16 +60,16 @@ exports[`date (isCI = false) > renders initial value 1`] = ` exports[`date (isCI = false) > renders message 1`] = ` [ "", - "│ -◆ Pick a date -│ 01/15/2025 -└ + "│ +◆ Pick a date +│ 01/15/2025 +└ ", "", "", "", - "◇ Pick a date -│ 01/15/2025", + "◇ Pick a date +01/15/2025", " ", "", @@ -79,16 +79,16 @@ exports[`date (isCI = false) > renders message 1`] = ` exports[`date (isCI = false) > renders submitted value 1`] = ` [ "", - "│ -◆ Pick a date -│ 06/15/2025 -└ + "│ +◆ Pick a date +│ 06/15/2025 +└ ", "", "", "", - "◇ Pick a date -│ 06/15/2025", + "◇ Pick a date +06/15/2025", " ", "", @@ -98,16 +98,16 @@ exports[`date (isCI = false) > renders submitted value 1`] = ` exports[`date (isCI = false) > supports MDY format 1`] = ` [ "", - "│ -◆ Pick a date -│ 01/15/2025 -└ + "│ +◆ Pick a date +│ 01/15/2025 +└ ", "", "", "", - "◇ Pick a date -│ 01/15/2025", + "◇ Pick a date +01/15/2025", " ", "", @@ -117,14 +117,14 @@ exports[`date (isCI = false) > supports MDY format 1`] = ` exports[`date (isCI = false) > withGuide: false removes guide 1`] = ` [ "", - "◆ Pick a date -01/15/2025 + "◆ Pick a date +01/15/2025 ", "", "", - "◇ Pick a date - 01/15/2025", + "◇ Pick a date + 01/15/2025", " ", "", @@ -134,16 +134,16 @@ exports[`date (isCI = false) > withGuide: false removes guide 1`] = ` exports[`date (isCI = true) > can cancel 1`] = ` [ "", - "│ -◆ Pick a date -│ mm/dd/yyyy -└ + "│ +◆ Pick a date +│ mm/dd/yyyy +└ ", "", "", "", - "■ Pick a date -│", + "■ Pick a date +│", " ", "", @@ -153,16 +153,16 @@ exports[`date (isCI = true) > can cancel 1`] = ` exports[`date (isCI = true) > defaultValue used when empty submit 1`] = ` [ "", - "│ -◆ Pick a date -│ 12/25/2025 -└ + "│ +◆ Pick a date +│ 12/25/2025 +└ ", "", "", "", - "◇ Pick a date -│ 12/25/2025", + "◇ Pick a date +12/25/2025", " ", "", @@ -172,16 +172,16 @@ exports[`date (isCI = true) > defaultValue used when empty submit 1`] = ` exports[`date (isCI = true) > renders initial value 1`] = ` [ "", - "│ -◆ Pick a date -│ 01/15/2025 -└ + "│ +◆ Pick a date +│ 01/15/2025 +└ ", "", "", "", - "◇ Pick a date -│ 01/15/2025", + "◇ Pick a date +01/15/2025", " ", "", @@ -191,16 +191,16 @@ exports[`date (isCI = true) > renders initial value 1`] = ` exports[`date (isCI = true) > renders message 1`] = ` [ "", - "│ -◆ Pick a date -│ 01/15/2025 -└ + "│ +◆ Pick a date +│ 01/15/2025 +└ ", "", "", "", - "◇ Pick a date -│ 01/15/2025", + "◇ Pick a date +01/15/2025", " ", "", @@ -210,16 +210,16 @@ exports[`date (isCI = true) > renders message 1`] = ` exports[`date (isCI = true) > renders submitted value 1`] = ` [ "", - "│ -◆ Pick a date -│ 06/15/2025 -└ + "│ +◆ Pick a date +│ 06/15/2025 +└ ", "", "", "", - "◇ Pick a date -│ 06/15/2025", + "◇ Pick a date +06/15/2025", " ", "", @@ -229,16 +229,16 @@ exports[`date (isCI = true) > renders submitted value 1`] = ` exports[`date (isCI = true) > supports MDY format 1`] = ` [ "", - "│ -◆ Pick a date -│ 01/15/2025 -└ + "│ +◆ Pick a date +│ 01/15/2025 +└ ", "", "", "", - "◇ Pick a date -│ 01/15/2025", + "◇ Pick a date +01/15/2025", " ", "", @@ -248,14 +248,14 @@ exports[`date (isCI = true) > supports MDY format 1`] = ` exports[`date (isCI = true) > withGuide: false removes guide 1`] = ` [ "", - "◆ Pick a date -01/15/2025 + "◆ Pick a date +01/15/2025 ", "", "", - "◇ Pick a date - 01/15/2025", + "◇ Pick a date + 01/15/2025", " ", "", diff --git a/packages/prompts/test/__snapshots__/group-multi-select.test.ts.snap b/packages/prompts/test/__snapshots__/group-multi-select.test.ts.snap index f439de6e..7db02072 100644 --- a/packages/prompts/test/__snapshots__/group-multi-select.test.ts.snap +++ b/packages/prompts/test/__snapshots__/group-multi-select.test.ts.snap @@ -3,13 +3,13 @@ exports[`groupMultiselect (isCI = false) > can be aborted by a signal 1`] = ` [ "", - "│ -◆ Select a fruit -│ ◻ group1 -│ └ ◻ group1value0 -│ ◻ group2 -│ └ ◻ group2value0 -└ + "│ +◆ Select a fruit +◻ group1 +│ └ group1value0 +group2 +group2value0 +└ ", " ", @@ -20,54 +20,54 @@ exports[`groupMultiselect (isCI = false) > can be aborted by a signal 1`] = ` exports[`groupMultiselect (isCI = false) > can deselect an option 1`] = ` [ "", - "│ -◆ foo -│ ◻ group1 -│ │ ◻ group1value0 -│ └ ◻ group1value1 -└ + "│ +◆ foo +◻ group1 +│ │ group1value0 +│ └ group1value1 +└ ", "", "", "", - "│ ◻ group1 -│ │ ◻ group1value0 -│ └ ◻ group1value1 -└ + "group1 +◻ group1value0 +group1value1 +└ ", "", "", "", - "│ │ ◼ group1value0", + "◼ group1value0", "", "", "", "", - "│ │ ◼ group1value0 -│ └ ◻ group1value1 -└ + "group1value0 +◻ group1value1 +└ ", "", "", "", - "│ ◼ group1 -│ │ ◼ group1value0 -│ └ ◼ group1value1 -└ + "group1 +group1value0 +◼ group1value1 +└ ", "", "", "", - "│ ◻ group1 -│ │ ◼ group1value0 -│ └ ◻ group1value1 -└ + "group1 +group1value0 +◻ group1value1 +└ ", "", "", "", - "◇ foo -│ group1value0", + "◇ foo +group1value0", " ", "", @@ -77,26 +77,26 @@ exports[`groupMultiselect (isCI = false) > can deselect an option 1`] = ` exports[`groupMultiselect (isCI = false) > can select a group 1`] = ` [ "", - "│ -◆ foo -│ ◻ group1 -│ │ ◻ group1value0 -│ └ ◻ group1value1 -└ + "│ +◆ foo +◻ group1 +│ │ group1value0 +│ └ group1value1 +└ ", "", "", "", - "│ ◼ group1 -│ │ ◼ group1value0 -│ └ ◼ group1value1 -└ + "◼ group1 +│ │ group1value0 +│ └ group1value1 +└ ", "", "", "", - "◇ foo -│ group1value0, group1value1", + "◇ foo +group1value0, group1value1", " ", "", @@ -106,46 +106,46 @@ exports[`groupMultiselect (isCI = false) > can select a group 1`] = ` exports[`groupMultiselect (isCI = false) > can select a group by selecting all members 1`] = ` [ "", - "│ -◆ foo -│ ◻ group1 -│ │ ◻ group1value0 -│ └ ◻ group1value1 -└ + "│ +◆ foo +◻ group1 +│ │ group1value0 +│ └ group1value1 +└ ", "", "", "", - "│ ◻ group1 -│ │ ◻ group1value0 -│ └ ◻ group1value1 -└ + "group1 +◻ group1value0 +group1value1 +└ ", "", "", "", - "│ │ ◼ group1value0", + "◼ group1value0", "", "", "", "", - "│ │ ◼ group1value0 -│ └ ◻ group1value1 -└ + "group1value0 +◻ group1value1 +└ ", "", "", "", - "│ ◼ group1 -│ │ ◼ group1value0 -│ └ ◼ group1value1 -└ + "group1 +group1value0 +◼ group1value1 +└ ", "", "", "", - "◇ foo -│ group1value0, group1value1", + "◇ foo +group1value0, group1value1", " ", "", @@ -155,46 +155,46 @@ exports[`groupMultiselect (isCI = false) > can select a group by selecting all m exports[`groupMultiselect (isCI = false) > can select multiple options 1`] = ` [ "", - "│ -◆ foo -│ ◻ group1 -│ │ ◻ group1value0 -│ │ ◻ group1value1 -│ └ ◻ group1value2 -└ + "│ +◆ foo +◻ group1 +│ │ group1value0 +│ │ group1value1 +│ └ group1value2 +└ ", "", "", "", - "│ ◻ group1 -│ │ ◻ group1value0 -│ │ ◻ group1value1 -│ └ ◻ group1value2 -└ + "group1 +◻ group1value0 +group1value1 +group1value2 +└ ", "", "", "", - "│ │ ◼ group1value0", + "◼ group1value0", "", "", "", "", - "│ │ ◼ group1value0 -│ │ ◻ group1value1 -│ └ ◻ group1value2 -└ + "group1value0 +◻ group1value1 +group1value2 +└ ", "", "", "", - "│ │ ◼ group1value1", + "◼ group1value1", "", "", "", "", - "◇ foo -│ group1value0, group1value1", + "◇ foo +group1value0, group1value1", " ", "", @@ -204,18 +204,18 @@ exports[`groupMultiselect (isCI = false) > can select multiple options 1`] = ` exports[`groupMultiselect (isCI = false) > can submit empty selection when require = false 1`] = ` [ "", - "│ -◆ foo -│ ◻ group1 -│ │ ◻ group1value0 -│ └ ◻ group1value1 -└ + "│ +◆ foo +◻ group1 +│ │ group1value0 +│ └ group1value1 +└ ", "", "", "", - "◇ foo -│", + "◇ foo +│", " ", "", @@ -225,23 +225,23 @@ exports[`groupMultiselect (isCI = false) > can submit empty selection when requi exports[`groupMultiselect (isCI = false) > cursorAt sets initial selection 1`] = ` [ "", - "│ -◆ foo -│ ◻ group1 -│ │ ◻ group1value0 -│ └ ◻ group1value1 -└ + "│ +◆ foo +group1 +group1value0 +◻ group1value1 +└ ", "", "", "", - "│ └ ◼ group1value1", + "◼ group1value1", "", "", "", "", - "◇ foo -│ group1value1", + "◇ foo +group1value1", " ", "", @@ -251,29 +251,29 @@ exports[`groupMultiselect (isCI = false) > cursorAt sets initial selection 1`] = exports[`groupMultiselect (isCI = false) > global withGuide: false removes guide 1`] = ` [ "", - "◆ foo - ◻ group1 - │ ◻ group1value0 - └ ◻ group1value1 + "◆ foo + ◻ group1 + │ group1value0 + └ group1value1 ", "", "", "", - " ◻ group1 - │ ◻ group1value0 - └ ◻ group1value1 + " group1 + ◻ group1value0 + group1value1 ", "", "", "", - " │ ◼ group1value0", + " ◼ group1value0", "", "", "", - "◇ foo - group1value0", + "◇ foo + group1value0", " ", "", @@ -283,37 +283,37 @@ exports[`groupMultiselect (isCI = false) > global withGuide: false removes guide exports[`groupMultiselect (isCI = false) > groupSpacing > negative spacing is ignored 1`] = ` [ "", - "│ -◆ foo -│ ◻ group1 -│ └ ◻ group1value0 -│ ◻ group2 -│ └ ◻ group2value0 -└ + "│ +◆ foo +◻ group1 +│ └ group1value0 +group2 +group2value0 +└ ", "", "", "", - "│ ◻ group1 -│ └ ◻ group1value0 -│ ◻ group2 -│ └ ◻ group2value0 -└ + "group1 +◻ group1value0 +group2 +group2value0 +└ ", "", "", "", - "│ ◼ group1 -│ └ ◼ group1value0 -│ ◻ group2 -│ └ ◻ group2value0 -└ + "group1 +◼ group1value0 +group2 +group2value0 +└ ", "", "", "", - "◇ foo -│ group1value0", + "◇ foo +group1value0", " ", "", @@ -323,45 +323,45 @@ exports[`groupMultiselect (isCI = false) > groupSpacing > negative spacing is ig exports[`groupMultiselect (isCI = false) > groupSpacing > renders spaced groups 1`] = ` [ "", - "│ -◆ foo -│ -│ -│ ◻ group1 -│ └ ◻ group1value0 -│ -│ -│ ◻ group2 -│ └ ◻ group2value0 -└ + "│ +◆ foo +│ +│ +◻ group1 +│ └ group1value0 +│ +│ +group2 +group2value0 +└ ", "", "", "", - "│ ◻ group1 -│ └ ◻ group1value0 -│ -│ -│ ◻ group2 -│ └ ◻ group2value0 -└ + "group1 +◻ group1value0 +│ +│ +group2 +group2value0 +└ ", "", "", "", - "│ ◼ group1 -│ └ ◼ group1value0 -│ -│ -│ ◻ group2 -│ └ ◻ group2value0 -└ + "group1 +◼ group1value0 +│ +│ +group2 +group2value0 +└ ", "", "", "", - "◇ foo -│ group1value0", + "◇ foo +group1value0", " ", "", @@ -371,18 +371,18 @@ exports[`groupMultiselect (isCI = false) > groupSpacing > renders spaced groups exports[`groupMultiselect (isCI = false) > initial values can be set 1`] = ` [ "", - "│ -◆ foo -│ ◻ group1 -│ │ ◻ group1value0 -│ └ ◼ group1value1 -└ + "│ +◆ foo +◻ group1 +│ │ group1value0 +│ └ group1value1 +└ ", "", "", "", - "◇ foo -│ group1value1", + "◇ foo +group1value1", " ", "", @@ -392,42 +392,42 @@ exports[`groupMultiselect (isCI = false) > initial values can be set 1`] = ` exports[`groupMultiselect (isCI = false) > renders error when nothing selected 1`] = ` [ "", - "│ -◆ foo -│ ◻ group1 -│ │ ◻ group1value0 -│ └ ◻ group1value1 -└ + "│ +◆ foo +◻ group1 +│ │ group1value0 +│ └ group1value1 +└ ", "", "", "", - "▲ foo -│ ◻ group1 -│ │ ◻ group1value0 -│ └ ◻ group1value1 -└ Please select at least one option. - Press  space  to select,  enter  to submit + "▲ foo +◻ group1 +│ │ group1value0 +│ └ group1value1 +Please select at least one option. + Press  space  to select,  enter  to submit ", "", "", "", - "◆ foo -│ ◻ group1 -│ │ ◻ group1value0 -│ └ ◻ group1value1 -└ + "◆ foo +group1 +◻ group1value0 +group1value1 +└ ", "", "", "", - "│ │ ◼ group1value0", + "◼ group1value0", "", "", "", "", - "◇ foo -│ group1value0", + "◇ foo +group1value0", " ", "", @@ -437,35 +437,35 @@ exports[`groupMultiselect (isCI = false) > renders error when nothing selected 1 exports[`groupMultiselect (isCI = false) > renders message with options 1`] = ` [ "", - "│ -◆ foo -│ ◻ group1 -│ │ ◻ group1value0 -│ └ ◻ group1value1 -│ ◻ group2 -│ └ ◻ group2value0 -└ + "│ +◆ foo +◻ group1 +│ │ group1value0 +│ └ group1value1 +group2 +group2value0 +└ ", "", "", "", - "│ ◻ group1 -│ │ ◻ group1value0 -│ └ ◻ group1value1 -│ ◻ group2 -│ └ ◻ group2value0 -└ + "group1 +◻ group1value0 +group1value1 +group2 +group2value0 +└ ", "", "", "", - "│ │ ◼ group1value0", + "◼ group1value0", "", "", "", "", - "◇ foo -│ group1value0", + "◇ foo +group1value0", " ", "", @@ -475,23 +475,23 @@ exports[`groupMultiselect (isCI = false) > renders message with options 1`] = ` exports[`groupMultiselect (isCI = false) > selectableGroups = false > cannot select groups 1`] = ` [ "", - "│ -◆ foo -│  group1 -│  ◻ group1value0 -│  ◻ group1value1 -└ + "│ +◆ foo + group1 + ◻ group1value0 + group1value1 +└ ", "", "", "", - "│  ◼ group1value0", + " ◼ group1value0", "", "", "", "", - "◇ foo -│ group1value0", + "◇ foo +group1value0", " ", "", @@ -501,35 +501,35 @@ exports[`groupMultiselect (isCI = false) > selectableGroups = false > cannot sel exports[`groupMultiselect (isCI = false) > selectableGroups = false > selecting all members of group does not select group 1`] = ` [ "", - "│ -◆ foo -│  group1 -│  ◻ group1value0 -│  ◻ group1value1 -└ + "│ +◆ foo + group1 + ◻ group1value0 + group1value1 +└ ", "", "", "", - "│  ◼ group1value0", + " ◼ group1value0", "", "", "", "", - "│  ◼ group1value0 -│  ◻ group1value1 -└ + " group1value0 + ◻ group1value1 +└ ", "", "", "", - "│  ◼ group1value1", + " ◼ group1value1", "", "", "", "", - "◇ foo -│ group1value0, group1value1", + "◇ foo +group1value0, group1value1", " ", "", @@ -539,31 +539,31 @@ exports[`groupMultiselect (isCI = false) > selectableGroups = false > selecting exports[`groupMultiselect (isCI = false) > values can be non-primitive 1`] = ` [ "", - "│ -◆ foo -│ ◻ group1 -│ │ ◻ value0 -│ └ ◻ value1 -└ + "│ +◆ foo +◻ group1 +│ │ value0 +│ └ value1 +└ ", "", "", "", - "│ ◻ group1 -│ │ ◻ value0 -│ └ ◻ value1 -└ + "group1 +◻ value0 +value1 +└ ", "", "", "", - "│ │ ◼ value0", + "◼ value0", "", "", "", "", - "◇ foo -│ value0", + "◇ foo +value0", " ", "", @@ -573,29 +573,29 @@ exports[`groupMultiselect (isCI = false) > values can be non-primitive 1`] = ` exports[`groupMultiselect (isCI = false) > withGuide: false removes guide 1`] = ` [ "", - "◆ foo - ◻ group1 - │ ◻ group1value0 - └ ◻ group1value1 + "◆ foo + ◻ group1 + │ group1value0 + └ group1value1 ", "", "", "", - " ◻ group1 - │ ◻ group1value0 - └ ◻ group1value1 + " group1 + ◻ group1value0 + group1value1 ", "", "", "", - " │ ◼ group1value0", + " ◼ group1value0", "", "", "", - "◇ foo - group1value0", + "◇ foo + group1value0", " ", "", @@ -605,13 +605,13 @@ exports[`groupMultiselect (isCI = false) > withGuide: false removes guide 1`] = exports[`groupMultiselect (isCI = true) > can be aborted by a signal 1`] = ` [ "", - "│ -◆ Select a fruit -│ ◻ group1 -│ └ ◻ group1value0 -│ ◻ group2 -│ └ ◻ group2value0 -└ + "│ +◆ Select a fruit +◻ group1 +│ └ group1value0 +group2 +group2value0 +└ ", " ", @@ -622,54 +622,54 @@ exports[`groupMultiselect (isCI = true) > can be aborted by a signal 1`] = ` exports[`groupMultiselect (isCI = true) > can deselect an option 1`] = ` [ "", - "│ -◆ foo -│ ◻ group1 -│ │ ◻ group1value0 -│ └ ◻ group1value1 -└ + "│ +◆ foo +◻ group1 +│ │ group1value0 +│ └ group1value1 +└ ", "", "", "", - "│ ◻ group1 -│ │ ◻ group1value0 -│ └ ◻ group1value1 -└ + "group1 +◻ group1value0 +group1value1 +└ ", "", "", "", - "│ │ ◼ group1value0", + "◼ group1value0", "", "", "", "", - "│ │ ◼ group1value0 -│ └ ◻ group1value1 -└ + "group1value0 +◻ group1value1 +└ ", "", "", "", - "│ ◼ group1 -│ │ ◼ group1value0 -│ └ ◼ group1value1 -└ + "group1 +group1value0 +◼ group1value1 +└ ", "", "", "", - "│ ◻ group1 -│ │ ◼ group1value0 -│ └ ◻ group1value1 -└ + "group1 +group1value0 +◻ group1value1 +└ ", "", "", "", - "◇ foo -│ group1value0", + "◇ foo +group1value0", " ", "", @@ -679,26 +679,26 @@ exports[`groupMultiselect (isCI = true) > can deselect an option 1`] = ` exports[`groupMultiselect (isCI = true) > can select a group 1`] = ` [ "", - "│ -◆ foo -│ ◻ group1 -│ │ ◻ group1value0 -│ └ ◻ group1value1 -└ + "│ +◆ foo +◻ group1 +│ │ group1value0 +│ └ group1value1 +└ ", "", "", "", - "│ ◼ group1 -│ │ ◼ group1value0 -│ └ ◼ group1value1 -└ + "◼ group1 +│ │ group1value0 +│ └ group1value1 +└ ", "", "", "", - "◇ foo -│ group1value0, group1value1", + "◇ foo +group1value0, group1value1", " ", "", @@ -708,46 +708,46 @@ exports[`groupMultiselect (isCI = true) > can select a group 1`] = ` exports[`groupMultiselect (isCI = true) > can select a group by selecting all members 1`] = ` [ "", - "│ -◆ foo -│ ◻ group1 -│ │ ◻ group1value0 -│ └ ◻ group1value1 -└ + "│ +◆ foo +◻ group1 +│ │ group1value0 +│ └ group1value1 +└ ", "", "", "", - "│ ◻ group1 -│ │ ◻ group1value0 -│ └ ◻ group1value1 -└ + "group1 +◻ group1value0 +group1value1 +└ ", "", "", "", - "│ │ ◼ group1value0", + "◼ group1value0", "", "", "", "", - "│ │ ◼ group1value0 -│ └ ◻ group1value1 -└ + "group1value0 +◻ group1value1 +└ ", "", "", "", - "│ ◼ group1 -│ │ ◼ group1value0 -│ └ ◼ group1value1 -└ + "group1 +group1value0 +◼ group1value1 +└ ", "", "", "", - "◇ foo -│ group1value0, group1value1", + "◇ foo +group1value0, group1value1", " ", "", @@ -757,46 +757,46 @@ exports[`groupMultiselect (isCI = true) > can select a group by selecting all me exports[`groupMultiselect (isCI = true) > can select multiple options 1`] = ` [ "", - "│ -◆ foo -│ ◻ group1 -│ │ ◻ group1value0 -│ │ ◻ group1value1 -│ └ ◻ group1value2 -└ + "│ +◆ foo +◻ group1 +│ │ group1value0 +│ │ group1value1 +│ └ group1value2 +└ ", "", "", "", - "│ ◻ group1 -│ │ ◻ group1value0 -│ │ ◻ group1value1 -│ └ ◻ group1value2 -└ + "group1 +◻ group1value0 +group1value1 +group1value2 +└ ", "", "", "", - "│ │ ◼ group1value0", + "◼ group1value0", "", "", "", "", - "│ │ ◼ group1value0 -│ │ ◻ group1value1 -│ └ ◻ group1value2 -└ + "group1value0 +◻ group1value1 +group1value2 +└ ", "", "", "", - "│ │ ◼ group1value1", + "◼ group1value1", "", "", "", "", - "◇ foo -│ group1value0, group1value1", + "◇ foo +group1value0, group1value1", " ", "", @@ -806,18 +806,18 @@ exports[`groupMultiselect (isCI = true) > can select multiple options 1`] = ` exports[`groupMultiselect (isCI = true) > can submit empty selection when require = false 1`] = ` [ "", - "│ -◆ foo -│ ◻ group1 -│ │ ◻ group1value0 -│ └ ◻ group1value1 -└ + "│ +◆ foo +◻ group1 +│ │ group1value0 +│ └ group1value1 +└ ", "", "", "", - "◇ foo -│", + "◇ foo +│", " ", "", @@ -827,23 +827,23 @@ exports[`groupMultiselect (isCI = true) > can submit empty selection when requir exports[`groupMultiselect (isCI = true) > cursorAt sets initial selection 1`] = ` [ "", - "│ -◆ foo -│ ◻ group1 -│ │ ◻ group1value0 -│ └ ◻ group1value1 -└ + "│ +◆ foo +group1 +group1value0 +◻ group1value1 +└ ", "", "", "", - "│ └ ◼ group1value1", + "◼ group1value1", "", "", "", "", - "◇ foo -│ group1value1", + "◇ foo +group1value1", " ", "", @@ -853,29 +853,29 @@ exports[`groupMultiselect (isCI = true) > cursorAt sets initial selection 1`] = exports[`groupMultiselect (isCI = true) > global withGuide: false removes guide 1`] = ` [ "", - "◆ foo - ◻ group1 - │ ◻ group1value0 - └ ◻ group1value1 + "◆ foo + ◻ group1 + │ group1value0 + └ group1value1 ", "", "", "", - " ◻ group1 - │ ◻ group1value0 - └ ◻ group1value1 + " group1 + ◻ group1value0 + group1value1 ", "", "", "", - " │ ◼ group1value0", + " ◼ group1value0", "", "", "", - "◇ foo - group1value0", + "◇ foo + group1value0", " ", "", @@ -885,37 +885,37 @@ exports[`groupMultiselect (isCI = true) > global withGuide: false removes guide exports[`groupMultiselect (isCI = true) > groupSpacing > negative spacing is ignored 1`] = ` [ "", - "│ -◆ foo -│ ◻ group1 -│ └ ◻ group1value0 -│ ◻ group2 -│ └ ◻ group2value0 -└ + "│ +◆ foo +◻ group1 +│ └ group1value0 +group2 +group2value0 +└ ", "", "", "", - "│ ◻ group1 -│ └ ◻ group1value0 -│ ◻ group2 -│ └ ◻ group2value0 -└ + "group1 +◻ group1value0 +group2 +group2value0 +└ ", "", "", "", - "│ ◼ group1 -│ └ ◼ group1value0 -│ ◻ group2 -│ └ ◻ group2value0 -└ + "group1 +◼ group1value0 +group2 +group2value0 +└ ", "", "", "", - "◇ foo -│ group1value0", + "◇ foo +group1value0", " ", "", @@ -925,45 +925,45 @@ exports[`groupMultiselect (isCI = true) > groupSpacing > negative spacing is ign exports[`groupMultiselect (isCI = true) > groupSpacing > renders spaced groups 1`] = ` [ "", - "│ -◆ foo -│ -│ -│ ◻ group1 -│ └ ◻ group1value0 -│ -│ -│ ◻ group2 -│ └ ◻ group2value0 -└ + "│ +◆ foo +│ +│ +◻ group1 +│ └ group1value0 +│ +│ +group2 +group2value0 +└ ", "", "", "", - "│ ◻ group1 -│ └ ◻ group1value0 -│ -│ -│ ◻ group2 -│ └ ◻ group2value0 -└ + "group1 +◻ group1value0 +│ +│ +group2 +group2value0 +└ ", "", "", "", - "│ ◼ group1 -│ └ ◼ group1value0 -│ -│ -│ ◻ group2 -│ └ ◻ group2value0 -└ + "group1 +◼ group1value0 +│ +│ +group2 +group2value0 +└ ", "", "", "", - "◇ foo -│ group1value0", + "◇ foo +group1value0", " ", "", @@ -973,18 +973,18 @@ exports[`groupMultiselect (isCI = true) > groupSpacing > renders spaced groups 1 exports[`groupMultiselect (isCI = true) > initial values can be set 1`] = ` [ "", - "│ -◆ foo -│ ◻ group1 -│ │ ◻ group1value0 -│ └ ◼ group1value1 -└ + "│ +◆ foo +◻ group1 +│ │ group1value0 +│ └ group1value1 +└ ", "", "", "", - "◇ foo -│ group1value1", + "◇ foo +group1value1", " ", "", @@ -994,42 +994,42 @@ exports[`groupMultiselect (isCI = true) > initial values can be set 1`] = ` exports[`groupMultiselect (isCI = true) > renders error when nothing selected 1`] = ` [ "", - "│ -◆ foo -│ ◻ group1 -│ │ ◻ group1value0 -│ └ ◻ group1value1 -└ + "│ +◆ foo +◻ group1 +│ │ group1value0 +│ └ group1value1 +└ ", "", "", "", - "▲ foo -│ ◻ group1 -│ │ ◻ group1value0 -│ └ ◻ group1value1 -└ Please select at least one option. - Press  space  to select,  enter  to submit + "▲ foo +◻ group1 +│ │ group1value0 +│ └ group1value1 +Please select at least one option. + Press  space  to select,  enter  to submit ", "", "", "", - "◆ foo -│ ◻ group1 -│ │ ◻ group1value0 -│ └ ◻ group1value1 -└ + "◆ foo +group1 +◻ group1value0 +group1value1 +└ ", "", "", "", - "│ │ ◼ group1value0", + "◼ group1value0", "", "", "", "", - "◇ foo -│ group1value0", + "◇ foo +group1value0", " ", "", @@ -1039,35 +1039,35 @@ exports[`groupMultiselect (isCI = true) > renders error when nothing selected 1` exports[`groupMultiselect (isCI = true) > renders message with options 1`] = ` [ "", - "│ -◆ foo -│ ◻ group1 -│ │ ◻ group1value0 -│ └ ◻ group1value1 -│ ◻ group2 -│ └ ◻ group2value0 -└ + "│ +◆ foo +◻ group1 +│ │ group1value0 +│ └ group1value1 +group2 +group2value0 +└ ", "", "", "", - "│ ◻ group1 -│ │ ◻ group1value0 -│ └ ◻ group1value1 -│ ◻ group2 -│ └ ◻ group2value0 -└ + "group1 +◻ group1value0 +group1value1 +group2 +group2value0 +└ ", "", "", "", - "│ │ ◼ group1value0", + "◼ group1value0", "", "", "", "", - "◇ foo -│ group1value0", + "◇ foo +group1value0", " ", "", @@ -1077,23 +1077,23 @@ exports[`groupMultiselect (isCI = true) > renders message with options 1`] = ` exports[`groupMultiselect (isCI = true) > selectableGroups = false > cannot select groups 1`] = ` [ "", - "│ -◆ foo -│  group1 -│  ◻ group1value0 -│  ◻ group1value1 -└ + "│ +◆ foo + group1 + ◻ group1value0 + group1value1 +└ ", "", "", "", - "│  ◼ group1value0", + " ◼ group1value0", "", "", "", "", - "◇ foo -│ group1value0", + "◇ foo +group1value0", " ", "", @@ -1103,35 +1103,35 @@ exports[`groupMultiselect (isCI = true) > selectableGroups = false > cannot sele exports[`groupMultiselect (isCI = true) > selectableGroups = false > selecting all members of group does not select group 1`] = ` [ "", - "│ -◆ foo -│  group1 -│  ◻ group1value0 -│  ◻ group1value1 -└ + "│ +◆ foo + group1 + ◻ group1value0 + group1value1 +└ ", "", "", "", - "│  ◼ group1value0", + " ◼ group1value0", "", "", "", "", - "│  ◼ group1value0 -│  ◻ group1value1 -└ + " group1value0 + ◻ group1value1 +└ ", "", "", "", - "│  ◼ group1value1", + " ◼ group1value1", "", "", "", "", - "◇ foo -│ group1value0, group1value1", + "◇ foo +group1value0, group1value1", " ", "", @@ -1141,31 +1141,31 @@ exports[`groupMultiselect (isCI = true) > selectableGroups = false > selecting a exports[`groupMultiselect (isCI = true) > values can be non-primitive 1`] = ` [ "", - "│ -◆ foo -│ ◻ group1 -│ │ ◻ value0 -│ └ ◻ value1 -└ + "│ +◆ foo +◻ group1 +│ │ value0 +│ └ value1 +└ ", "", "", "", - "│ ◻ group1 -│ │ ◻ value0 -│ └ ◻ value1 -└ + "group1 +◻ value0 +value1 +└ ", "", "", "", - "│ │ ◼ value0", + "◼ value0", "", "", "", "", - "◇ foo -│ value0", + "◇ foo +value0", " ", "", @@ -1175,29 +1175,29 @@ exports[`groupMultiselect (isCI = true) > values can be non-primitive 1`] = ` exports[`groupMultiselect (isCI = true) > withGuide: false removes guide 1`] = ` [ "", - "◆ foo - ◻ group1 - │ ◻ group1value0 - └ ◻ group1value1 + "◆ foo + ◻ group1 + │ group1value0 + └ group1value1 ", "", "", "", - " ◻ group1 - │ ◻ group1value0 - └ ◻ group1value1 + " group1 + ◻ group1value0 + group1value1 ", "", "", "", - " │ ◼ group1value0", + " ◼ group1value0", "", "", "", - "◇ foo - group1value0", + "◇ foo + group1value0", " ", "", diff --git a/packages/prompts/test/__snapshots__/log.test.ts.snap b/packages/prompts/test/__snapshots__/log.test.ts.snap index a36e9fd4..af5e5615 100644 --- a/packages/prompts/test/__snapshots__/log.test.ts.snap +++ b/packages/prompts/test/__snapshots__/log.test.ts.snap @@ -2,26 +2,26 @@ exports[`log (isCI = false) > error > renders error message 1`] = ` [ - "│ -■ error message + "│ +■ error message ", ] `; exports[`log (isCI = false) > info > renders info message 1`] = ` [ - "│ -● info message + "│ +● info message ", ] `; exports[`log (isCI = false) > message > renders empty lines correctly 1`] = ` [ - "│ -│ foo -│ -│ bar + "│ +│ foo +│ +│ bar ", ] `; @@ -38,8 +38,8 @@ bar exports[`log (isCI = false) > message > renders empty message correctly 1`] = ` [ - "│ -│ + "│ +│ ", ] `; @@ -54,37 +54,37 @@ exports[`log (isCI = false) > message > renders empty message with guide disable exports[`log (isCI = false) > message > renders message 1`] = ` [ - "│ -│ message + "│ +│ message ", ] `; exports[`log (isCI = false) > message > renders message from array 1`] = ` [ - "│ -│ line 1 -│ line 2 -│ line 3 + "│ +│ line 1 +│ line 2 +│ line 3 ", ] `; exports[`log (isCI = false) > message > renders message with custom spacing 1`] = ` [ - "│ -│ -│ -│ spaced message + "│ +│ +│ +│ spaced message ", ] `; exports[`log (isCI = false) > message > renders message with custom symbols and spacing 1`] = ` [ - "-- ->> custom --- symbols + "-- +>> custom +-- symbols ", ] `; @@ -99,10 +99,10 @@ standalone message exports[`log (isCI = false) > message > renders multiline message 1`] = ` [ - "│ -│ line 1 -│ line 2 -│ line 3 + "│ +│ line 1 +│ line 2 +│ line 3 ", ] `; @@ -119,50 +119,50 @@ line 3 exports[`log (isCI = false) > step > renders step message 1`] = ` [ - "│ -◇ step message + "│ +◇ step message ", ] `; exports[`log (isCI = false) > success > renders success message 1`] = ` [ - "│ -◆ success message + "│ +◆ success message ", ] `; exports[`log (isCI = false) > warn > renders warn message 1`] = ` [ - "│ -▲ warn message + "│ +▲ warn message ", ] `; exports[`log (isCI = true) > error > renders error message 1`] = ` [ - "│ -■ error message + "│ +■ error message ", ] `; exports[`log (isCI = true) > info > renders info message 1`] = ` [ - "│ -● info message + "│ +● info message ", ] `; exports[`log (isCI = true) > message > renders empty lines correctly 1`] = ` [ - "│ -│ foo -│ -│ bar + "│ +│ foo +│ +│ bar ", ] `; @@ -179,8 +179,8 @@ bar exports[`log (isCI = true) > message > renders empty message correctly 1`] = ` [ - "│ -│ + "│ +│ ", ] `; @@ -195,37 +195,37 @@ exports[`log (isCI = true) > message > renders empty message with guide disabled exports[`log (isCI = true) > message > renders message 1`] = ` [ - "│ -│ message + "│ +│ message ", ] `; exports[`log (isCI = true) > message > renders message from array 1`] = ` [ - "│ -│ line 1 -│ line 2 -│ line 3 + "│ +│ line 1 +│ line 2 +│ line 3 ", ] `; exports[`log (isCI = true) > message > renders message with custom spacing 1`] = ` [ - "│ -│ -│ -│ spaced message + "│ +│ +│ +│ spaced message ", ] `; exports[`log (isCI = true) > message > renders message with custom symbols and spacing 1`] = ` [ - "-- ->> custom --- symbols + "-- +>> custom +-- symbols ", ] `; @@ -240,10 +240,10 @@ standalone message exports[`log (isCI = true) > message > renders multiline message 1`] = ` [ - "│ -│ line 1 -│ line 2 -│ line 3 + "│ +│ line 1 +│ line 2 +│ line 3 ", ] `; @@ -260,24 +260,24 @@ line 3 exports[`log (isCI = true) > step > renders step message 1`] = ` [ - "│ -◇ step message + "│ +◇ step message ", ] `; exports[`log (isCI = true) > success > renders success message 1`] = ` [ - "│ -◆ success message + "│ +◆ success message ", ] `; exports[`log (isCI = true) > warn > renders warn message 1`] = ` [ - "│ -▲ warn message + "│ +▲ warn message ", ] `; diff --git a/packages/prompts/test/__snapshots__/multi-line.test.ts.snap b/packages/prompts/test/__snapshots__/multi-line.test.ts.snap index 2acfe22c..8bdb615f 100644 --- a/packages/prompts/test/__snapshots__/multi-line.test.ts.snap +++ b/packages/prompts/test/__snapshots__/multi-line.test.ts.snap @@ -3,10 +3,10 @@ exports[`multiline (isCI = false) > can be aborted by a signal 1`] = ` [ "", - "│ -◆ foo -│ _ -└ + "│ +◆ foo +│ _ +└ ", " ", @@ -17,16 +17,16 @@ exports[`multiline (isCI = false) > can be aborted by a signal 1`] = ` exports[`multiline (isCI = false) > can cancel 1`] = ` [ "", - "│ -◆ foo -│ _ -└ + "│ +◆ foo +│ _ +└ ", "", "", "", - "■ foo -│ escape", + "■ foo +│ escape", " ", "", @@ -36,23 +36,23 @@ exports[`multiline (isCI = false) > can cancel 1`] = ` exports[`multiline (isCI = false) > defaultValue sets the value but does not render 1`] = ` [ "", - "│ -◆ foo -│ _ -└ + "│ +◆ foo +│ _ +└ ", "", "", "", - "│ -│ █ -└ + "│ +│ █ +└ ", "", "", "", - "◇ foo -│ bar", + "◇ foo +bar", " ", "", @@ -62,23 +62,23 @@ exports[`multiline (isCI = false) > defaultValue sets the value but does not ren exports[`multiline (isCI = false) > empty string when no value and no default 1`] = ` [ "", - "│ -◆ foo -│   (submit to use default) -└ + "│ +◆ foo +│   (submit to use default) +└ ", "", "", "", - "│ -│ █ -└ + "│ +│ █ +└ ", "", "", "", - "◇ foo -│ ", + "◇ foo +", " ", "", @@ -88,7 +88,7 @@ exports[`multiline (isCI = false) > empty string when no value and no default 1` exports[`multiline (isCI = false) > global withGuide: false removes guide 1`] = ` [ "", - "◆ foo + "◆ foo _ ", @@ -101,7 +101,7 @@ exports[`multiline (isCI = false) > global withGuide: false removes guide 1`] = ", "", "", - "◇ foo + "◇ foo ", " ", @@ -112,23 +112,23 @@ exports[`multiline (isCI = false) > global withGuide: false removes guide 1`] = exports[`multiline (isCI = false) > placeholder is not used as value when pressing enter 1`] = ` [ "", - "│ -◆ foo -│   (submit to use default) -└ + "│ +◆ foo +│   (submit to use default) +└ ", "", "", "", - "│ -│ █ -└ + "│ +│ █ +└ ", "", "", "", - "◇ foo -│ default-value", + "◇ foo +default-value", " ", "", @@ -138,26 +138,26 @@ exports[`multiline (isCI = false) > placeholder is not used as value when pressi exports[`multiline (isCI = false) > renders cancelled value if one set 1`] = ` [ "", - "│ -◆ foo -│ _ -└ + "│ +◆ foo +│ _ +└ ", "", "", "", - "│ x█", + "│ x█", "", "", "", "", - "│ xy█", + "│ xy█", "", "", "", "", - "■ foo -│ xy", + "■ foo +│ xy", " ", "", @@ -167,23 +167,23 @@ exports[`multiline (isCI = false) > renders cancelled value if one set 1`] = ` exports[`multiline (isCI = false) > renders message 1`] = ` [ "", - "│ -◆ foo -│ _ -└ + "│ +◆ foo +│ _ +└ ", "", "", "", - "│ -│ █ -└ + "│ +│ █ +└ ", "", "", "", - "◇ foo -│ ", + "◇ foo +", " ", "", @@ -193,23 +193,23 @@ exports[`multiline (isCI = false) > renders message 1`] = ` exports[`multiline (isCI = false) > renders placeholder if set 1`] = ` [ "", - "│ -◆ foo -│ bar -└ + "│ +◆ foo +│ bar +└ ", "", "", "", - "│ -│ █ -└ + "│ +│ █ +└ ", "", "", "", - "◇ foo -│ ", + "◇ foo +", " ", "", @@ -219,32 +219,32 @@ exports[`multiline (isCI = false) > renders placeholder if set 1`] = ` exports[`multiline (isCI = false) > renders submit button 1`] = ` [ "", - "│ -◆ foo -│ _ -└ - [ submit ] + "│ +◆ foo +│ _ +└ + [ submit ] ", "", "", "", - "│ x█", + "│ x█", "", "", "", "", - "│ xy█", + "│ xy█", "", "", "", "", - " [ submit ]", + " [ submit ]", "", "", "", "", - "◇ foo -│ xy", + "◇ foo +xy", " ", "", @@ -254,33 +254,33 @@ exports[`multiline (isCI = false) > renders submit button 1`] = ` exports[`multiline (isCI = false) > renders submitted value 1`] = ` [ "", - "│ -◆ foo -│ _ -└ + "│ +◆ foo +│ _ +└ ", "", "", "", - "│ x█", + "│ x█", "", "", "", "", - "│ xy█", + "│ xy█", "", "", "", "", - "│ xy -│ █ -└ + "│ xy +│ █ +└ ", "", "", "", - "◇ foo -│ xy", + "◇ foo +xy", " ", "", @@ -290,49 +290,49 @@ exports[`multiline (isCI = false) > renders submitted value 1`] = ` exports[`multiline (isCI = false) > validation errors render and clear (using Error) 1`] = ` [ "", - "│ -◆ foo -│ _ -└ + "│ +◆ foo +│ _ +└ ", "", "", "", - "│ x█", + "│ x█", "", "", "", "", - "│ x -│ █ -└ + "│ x +│ █ +└ ", "", "", "", - "▲ foo -│ x█ -└ should be xy + "▲ foo +│ x█ +should be xy ", "", "", "", - "◆ foo -│ xy█ -└ + "◆ foo +│ xy█ +└ ", "", "", "", - "│ xy -│ █ -└ + "│ xy +│ █ +└ ", "", "", "", - "◇ foo -│ xy", + "◇ foo +xy", " ", "", @@ -342,49 +342,49 @@ exports[`multiline (isCI = false) > validation errors render and clear (using Er exports[`multiline (isCI = false) > validation errors render and clear 1`] = ` [ "", - "│ -◆ foo -│ _ -└ + "│ +◆ foo +│ _ +└ ", "", "", "", - "│ x█", + "│ x█", "", "", "", "", - "│ x -│ █ -└ + "│ x +│ █ +└ ", "", "", "", - "▲ foo -│ x█ -└ should be xy + "▲ foo +│ x█ +should be xy ", "", "", "", - "◆ foo -│ xy█ -└ + "◆ foo +│ xy█ +└ ", "", "", "", - "│ xy -│ █ -└ + "│ xy +│ █ +└ ", "", "", "", - "◇ foo -│ xy", + "◇ foo +xy", " ", "", @@ -394,7 +394,7 @@ exports[`multiline (isCI = false) > validation errors render and clear 1`] = ` exports[`multiline (isCI = false) > withGuide: false removes guide 1`] = ` [ "", - "◆ foo + "◆ foo _ ", @@ -407,7 +407,7 @@ exports[`multiline (isCI = false) > withGuide: false removes guide 1`] = ` ", "", "", - "◇ foo + "◇ foo ", " ", @@ -418,10 +418,10 @@ exports[`multiline (isCI = false) > withGuide: false removes guide 1`] = ` exports[`multiline (isCI = true) > can be aborted by a signal 1`] = ` [ "", - "│ -◆ foo -│ _ -└ + "│ +◆ foo +│ _ +└ ", " ", @@ -432,16 +432,16 @@ exports[`multiline (isCI = true) > can be aborted by a signal 1`] = ` exports[`multiline (isCI = true) > can cancel 1`] = ` [ "", - "│ -◆ foo -│ _ -└ + "│ +◆ foo +│ _ +└ ", "", "", "", - "■ foo -│ escape", + "■ foo +│ escape", " ", "", @@ -451,23 +451,23 @@ exports[`multiline (isCI = true) > can cancel 1`] = ` exports[`multiline (isCI = true) > defaultValue sets the value but does not render 1`] = ` [ "", - "│ -◆ foo -│ _ -└ + "│ +◆ foo +│ _ +└ ", "", "", "", - "│ -│ █ -└ + "│ +│ █ +└ ", "", "", "", - "◇ foo -│ bar", + "◇ foo +bar", " ", "", @@ -477,23 +477,23 @@ exports[`multiline (isCI = true) > defaultValue sets the value but does not rend exports[`multiline (isCI = true) > empty string when no value and no default 1`] = ` [ "", - "│ -◆ foo -│   (submit to use default) -└ + "│ +◆ foo +│   (submit to use default) +└ ", "", "", "", - "│ -│ █ -└ + "│ +│ █ +└ ", "", "", "", - "◇ foo -│ ", + "◇ foo +", " ", "", @@ -503,7 +503,7 @@ exports[`multiline (isCI = true) > empty string when no value and no default 1`] exports[`multiline (isCI = true) > global withGuide: false removes guide 1`] = ` [ "", - "◆ foo + "◆ foo _ ", @@ -516,7 +516,7 @@ exports[`multiline (isCI = true) > global withGuide: false removes guide 1`] = ` ", "", "", - "◇ foo + "◇ foo ", " ", @@ -527,23 +527,23 @@ exports[`multiline (isCI = true) > global withGuide: false removes guide 1`] = ` exports[`multiline (isCI = true) > placeholder is not used as value when pressing enter 1`] = ` [ "", - "│ -◆ foo -│   (submit to use default) -└ + "│ +◆ foo +│   (submit to use default) +└ ", "", "", "", - "│ -│ █ -└ + "│ +│ █ +└ ", "", "", "", - "◇ foo -│ default-value", + "◇ foo +default-value", " ", "", @@ -553,26 +553,26 @@ exports[`multiline (isCI = true) > placeholder is not used as value when pressin exports[`multiline (isCI = true) > renders cancelled value if one set 1`] = ` [ "", - "│ -◆ foo -│ _ -└ + "│ +◆ foo +│ _ +└ ", "", "", "", - "│ x█", + "│ x█", "", "", "", "", - "│ xy█", + "│ xy█", "", "", "", "", - "■ foo -│ xy", + "■ foo +│ xy", " ", "", @@ -582,23 +582,23 @@ exports[`multiline (isCI = true) > renders cancelled value if one set 1`] = ` exports[`multiline (isCI = true) > renders message 1`] = ` [ "", - "│ -◆ foo -│ _ -└ + "│ +◆ foo +│ _ +└ ", "", "", "", - "│ -│ █ -└ + "│ +│ █ +└ ", "", "", "", - "◇ foo -│ ", + "◇ foo +", " ", "", @@ -608,23 +608,23 @@ exports[`multiline (isCI = true) > renders message 1`] = ` exports[`multiline (isCI = true) > renders placeholder if set 1`] = ` [ "", - "│ -◆ foo -│ bar -└ + "│ +◆ foo +│ bar +└ ", "", "", "", - "│ -│ █ -└ + "│ +│ █ +└ ", "", "", "", - "◇ foo -│ ", + "◇ foo +", " ", "", @@ -634,32 +634,32 @@ exports[`multiline (isCI = true) > renders placeholder if set 1`] = ` exports[`multiline (isCI = true) > renders submit button 1`] = ` [ "", - "│ -◆ foo -│ _ -└ - [ submit ] + "│ +◆ foo +│ _ +└ + [ submit ] ", "", "", "", - "│ x█", + "│ x█", "", "", "", "", - "│ xy█", + "│ xy█", "", "", "", "", - " [ submit ]", + " [ submit ]", "", "", "", "", - "◇ foo -│ xy", + "◇ foo +xy", " ", "", @@ -669,33 +669,33 @@ exports[`multiline (isCI = true) > renders submit button 1`] = ` exports[`multiline (isCI = true) > renders submitted value 1`] = ` [ "", - "│ -◆ foo -│ _ -└ + "│ +◆ foo +│ _ +└ ", "", "", "", - "│ x█", + "│ x█", "", "", "", "", - "│ xy█", + "│ xy█", "", "", "", "", - "│ xy -│ █ -└ + "│ xy +│ █ +└ ", "", "", "", - "◇ foo -│ xy", + "◇ foo +xy", " ", "", @@ -705,49 +705,49 @@ exports[`multiline (isCI = true) > renders submitted value 1`] = ` exports[`multiline (isCI = true) > validation errors render and clear (using Error) 1`] = ` [ "", - "│ -◆ foo -│ _ -└ + "│ +◆ foo +│ _ +└ ", "", "", "", - "│ x█", + "│ x█", "", "", "", "", - "│ x -│ █ -└ + "│ x +│ █ +└ ", "", "", "", - "▲ foo -│ x█ -└ should be xy + "▲ foo +│ x█ +should be xy ", "", "", "", - "◆ foo -│ xy█ -└ + "◆ foo +│ xy█ +└ ", "", "", "", - "│ xy -│ █ -└ + "│ xy +│ █ +└ ", "", "", "", - "◇ foo -│ xy", + "◇ foo +xy", " ", "", @@ -757,49 +757,49 @@ exports[`multiline (isCI = true) > validation errors render and clear (using Err exports[`multiline (isCI = true) > validation errors render and clear 1`] = ` [ "", - "│ -◆ foo -│ _ -└ + "│ +◆ foo +│ _ +└ ", "", "", "", - "│ x█", + "│ x█", "", "", "", "", - "│ x -│ █ -└ + "│ x +│ █ +└ ", "", "", "", - "▲ foo -│ x█ -└ should be xy + "▲ foo +│ x█ +should be xy ", "", "", "", - "◆ foo -│ xy█ -└ + "◆ foo +│ xy█ +└ ", "", "", "", - "│ xy -│ █ -└ + "│ xy +│ █ +└ ", "", "", "", - "◇ foo -│ xy", + "◇ foo +xy", " ", "", @@ -809,7 +809,7 @@ exports[`multiline (isCI = true) > validation errors render and clear 1`] = ` exports[`multiline (isCI = true) > withGuide: false removes guide 1`] = ` [ "", - "◆ foo + "◆ foo _ ", @@ -822,7 +822,7 @@ exports[`multiline (isCI = true) > withGuide: false removes guide 1`] = ` ", "", "", - "◇ foo + "◇ foo ", " ", diff --git a/packages/prompts/test/__snapshots__/multi-select.test.ts.snap b/packages/prompts/test/__snapshots__/multi-select.test.ts.snap index 38714036..a2126a38 100644 --- a/packages/prompts/test/__snapshots__/multi-select.test.ts.snap +++ b/packages/prompts/test/__snapshots__/multi-select.test.ts.snap @@ -3,11 +3,11 @@ exports[`multiselect (isCI = false) > can be aborted by a signal 1`] = ` [ "", - "│ -◆ foo -│ ◻ opt0 -│ ◻ opt1 -└ + "│ +◆ foo +◻ opt0 +opt1 +└ ", " ", @@ -18,17 +18,17 @@ exports[`multiselect (isCI = false) > can be aborted by a signal 1`] = ` exports[`multiselect (isCI = false) > can cancel 1`] = ` [ "", - "│ -◆ foo -│ ◻ opt0 -│ ◻ opt1 -└ + "│ +◆ foo +◻ opt0 +opt1 +└ ", "", "", "", - "■ foo -│", + "■ foo +│", " ", "", @@ -38,22 +38,22 @@ exports[`multiselect (isCI = false) > can cancel 1`] = ` exports[`multiselect (isCI = false) > can render option hints 1`] = ` [ "", - "│ -◆ foo -│ ◻ opt0 (Hint 0) -│ ◻ opt1 -└ + "│ +◆ foo +◻ opt0 (Hint 0) +opt1 +└ ", "", "", "", - "│ ◼ opt0 (Hint 0)", + "◼ opt0 (Hint 0)", "", "", "", "", - "◇ foo -│ opt0", + "◇ foo +opt0", " ", "", @@ -63,22 +63,22 @@ exports[`multiselect (isCI = false) > can render option hints 1`] = ` exports[`multiselect (isCI = false) > can set cursorAt to preselect an option 1`] = ` [ "", - "│ -◆ foo -│ ◻ opt0 -│ ◻ opt1 -└ + "│ +◆ foo +opt0 +◻ opt1 +└ ", "", "", "", - "│ ◼ opt1", + "◼ opt1", "", "", "", "", - "◇ foo -│ opt1", + "◇ foo +opt1", " ", "", @@ -88,22 +88,22 @@ exports[`multiselect (isCI = false) > can set cursorAt to preselect an option 1` exports[`multiselect (isCI = false) > can set custom labels 1`] = ` [ "", - "│ -◆ foo -│ ◻ Option 0 -│ ◻ Option 1 -└ + "│ +◆ foo +◻ Option 0 +Option 1 +└ ", "", "", "", - "│ ◼ Option 0", + "◼ Option 0", "", "", "", "", - "◇ foo -│ Option 0", + "◇ foo +Option 0", " ", "", @@ -113,17 +113,17 @@ exports[`multiselect (isCI = false) > can set custom labels 1`] = ` exports[`multiselect (isCI = false) > can set initial values 1`] = ` [ "", - "│ -◆ foo -│ ◻ opt0 -│ ◼ opt1 -└ + "│ +◆ foo +◻ opt0 +opt1 +└ ", "", "", "", - "◇ foo -│ opt1", + "◇ foo +opt1", " ", "", @@ -133,17 +133,17 @@ exports[`multiselect (isCI = false) > can set initial values 1`] = ` exports[`multiselect (isCI = false) > can submit without selection when required = false 1`] = ` [ "", - "│ -◆ foo -│ ◻ opt0 -│ ◻ opt1 -└ + "│ +◆ foo +◻ opt0 +opt1 +└ ", "", "", "", - "◇ foo -│ none", + "◇ foo +none", " ", "", @@ -153,20 +153,20 @@ exports[`multiselect (isCI = false) > can submit without selection when required exports[`multiselect (isCI = false) > global withGuide: false removes guide 1`] = ` [ "", - "◆ foo -◻ opt0 -◻ opt1 + "◆ foo +◻ opt0 +opt1 ", "", "", "", - "◼ opt0", + "◼ opt0", "", "", "", - "◇ foo -opt0", + "◇ foo +opt0", " ", "", @@ -176,87 +176,87 @@ exports[`multiselect (isCI = false) > global withGuide: false removes guide 1`] exports[`multiselect (isCI = false) > maxItems renders a sliding window 1`] = ` [ "", - "│ -◆ foo -│ ◻ opt0 -│ ◻ opt1 -│ ◻ opt2 -│ ◻ opt3 -│ ◻ opt4 -│ ... -└ + "│ +◆ foo +◻ opt0 +opt1 +opt2 +opt3 +opt4 +... +└ ", "", "", "", - "│ ◻ opt0 -│ ◻ opt1 -│ ◻ opt2 -│ ◻ opt3 -│ ◻ opt4 -│ ... -└ + "opt0 +◻ opt1 +opt2 +opt3 +opt4 +... +└ ", "", "", "", - "│ ◻ opt1 -│ ◻ opt2 -│ ◻ opt3 -│ ◻ opt4 -│ ... -└ + "opt1 +◻ opt2 +opt3 +opt4 +... +└ ", "", "", "", - "│ ◻ opt2 -│ ◻ opt3 -│ ◻ opt4 -│ ... -└ + "opt2 +◻ opt3 +opt4 +... +└ ", "", "", "", - "│ ... -│ ◻ opt2 -│ ◻ opt3 -│ ◻ opt4 -│ ◻ opt5 -│ ... -└ + "... +opt2 +opt3 +◻ opt4 +opt5 +... +└ ", "", "", "", - "│ ◻ opt3 -│ ◻ opt4 -│ ◻ opt5 -│ ◻ opt6 -│ ... -└ + "opt3 +opt4 +◻ opt5 +opt6 +... +└ ", "", "", "", - "│ ◻ opt4 -│ ◻ opt5 -│ ◻ opt6 -│ ◻ opt7 -│ ... -└ + "opt4 +opt5 +◻ opt6 +opt7 +... +└ ", "", "", "", - "│ ◼ opt6", + "◼ opt6", "", "", "", "", - "◇ foo -│ opt6", + "◇ foo +opt6", " ", "", @@ -266,23 +266,23 @@ exports[`multiselect (isCI = false) > maxItems renders a sliding window 1`] = ` exports[`multiselect (isCI = false) > renders disabled options 1`] = ` [ "", - "│ -◆ foo -│ ◻ opt0 -│ ◻ opt1 -│ ◻ opt2 (Hint 2) -└ + "│ +◆ foo +◻ opt0 +◻ opt1 +◻ opt2 (Hint 2) +└ ", "", "", "", - "│ ◼ opt1", + "◼ opt1", "", "", "", "", - "◇ foo -│ opt1", + "◇ foo +opt1", " ", "", @@ -292,22 +292,22 @@ exports[`multiselect (isCI = false) > renders disabled options 1`] = ` exports[`multiselect (isCI = false) > renders message 1`] = ` [ "", - "│ -◆ foo -│ ◻ opt0 -│ ◻ opt1 -└ + "│ +◆ foo +◻ opt0 +opt1 +└ ", "", "", "", - "│ ◼ opt0", + "◼ opt0", "", "", "", "", - "◇ foo -│ opt0", + "◇ foo +opt0", " ", "", @@ -317,37 +317,37 @@ exports[`multiselect (isCI = false) > renders message 1`] = ` exports[`multiselect (isCI = false) > renders multiple cancelled values 1`] = ` [ "", - "│ -◆ foo -│ ◻ opt0 -│ ◻ opt1 -│ ◻ opt2 -└ + "│ +◆ foo +◻ opt0 +opt1 +opt2 +└ ", "", "", "", - "│ ◼ opt0", + "◼ opt0", "", "", "", "", - "│ ◼ opt0 -│ ◻ opt1 -│ ◻ opt2 -└ + "opt0 +◻ opt1 +opt2 +└ ", "", "", "", - "│ ◼ opt1", + "◼ opt1", "", "", "", "", - "■ foo -│ opt0, opt1 -│", + "■ foo +│ opt0, opt1 +│", " ", "", @@ -357,43 +357,43 @@ exports[`multiselect (isCI = false) > renders multiple cancelled values 1`] = ` exports[`multiselect (isCI = false) > renders multiple selected options 1`] = ` [ "", - "│ -◆ foo -│ ◻ opt0 -│ ◻ opt1 -│ ◻ opt2 -└ + "│ +◆ foo +◻ opt0 +opt1 +opt2 +└ ", "", "", "", - "│ ◼ opt0", + "◼ opt0", "", "", "", "", - "│ ◼ opt0 -│ ◻ opt1 -│ ◻ opt2 -└ + "opt0 +◻ opt1 +opt2 +└ ", "", "", "", - "│ ◼ opt1", + "◼ opt1", "", "", "", "", - "│ ◼ opt1 -│ ◻ opt2 -└ + "opt1 +◻ opt2 +└ ", "", "", "", - "◇ foo -│ opt0, opt1", + "◇ foo +opt0, opt1", " ", "", @@ -403,34 +403,34 @@ exports[`multiselect (isCI = false) > renders multiple selected options 1`] = ` exports[`multiselect (isCI = false) > renders validation errors 1`] = ` [ "", - "│ -◆ foo -│ ◻ opt0 -│ ◻ opt1 -└ + "│ +◆ foo +◻ opt0 +opt1 +└ ", "", "", "", - "▲ foo -│ ◻ opt0 -│ ◻ opt1 -└ Please select at least one option. - Press  space  to select,  enter  to submit + "▲ foo +◻ opt0 +opt1 +Please select at least one option. + Press  space  to select,  enter  to submit ", "", "", "", - "◆ foo -│ ◼ opt0 -│ ◻ opt1 -└ + "◆ foo +◼ opt0 +opt1 +└ ", "", "", "", - "◇ foo -│ opt0", + "◇ foo +opt0", " ", "", @@ -440,33 +440,33 @@ exports[`multiselect (isCI = false) > renders validation errors 1`] = ` exports[`multiselect (isCI = false) > shows hints for all selected options 1`] = ` [ "", - "│ -◆ foo -│ ◼ opt0 (Hint 0) -│ ◼ opt1 (Hint 1) -│ ◻ opt2 -└ + "│ +◆ foo +◼ opt0 (Hint 0) +opt1 (Hint 1) +opt2 +└ ", "", "", "", - "│ ◼ opt0 (Hint 0) -│ ◼ opt1 (Hint 1) -│ ◻ opt2 -└ + "opt0 (Hint 0) +◼ opt1 (Hint 1) +opt2 +└ ", "", "", "", - "│ ◼ opt1 (Hint 1) -│ ◻ opt2 (Hint 2) -└ + "opt1 (Hint 1) +◻ opt2 (Hint 2) +└ ", "", "", "", - "◇ foo -│ opt0, opt1", + "◇ foo +opt0, opt1", " ", "", @@ -476,143 +476,143 @@ exports[`multiselect (isCI = false) > shows hints for all selected options 1`] = exports[`multiselect (isCI = false) > sliding window loops downwards 1`] = ` [ "", - "│ -◆ foo -│ ◻ opt0 -│ ◻ opt1 -│ ◻ opt2 -│ ◻ opt3 -│ ◻ opt4 -│ ... -└ + "│ +◆ foo +◻ opt0 +opt1 +opt2 +opt3 +opt4 +... +└ ", "", "", "", - "│ ◻ opt0 -│ ◻ opt1 -│ ◻ opt2 -│ ◻ opt3 -│ ◻ opt4 -│ ... -└ + "opt0 +◻ opt1 +opt2 +opt3 +opt4 +... +└ ", "", "", "", - "│ ◻ opt1 -│ ◻ opt2 -│ ◻ opt3 -│ ◻ opt4 -│ ... -└ + "opt1 +◻ opt2 +opt3 +opt4 +... +└ ", "", "", "", - "│ ◻ opt2 -│ ◻ opt3 -│ ◻ opt4 -│ ... -└ + "opt2 +◻ opt3 +opt4 +... +└ ", "", "", "", - "│ ... -│ ◻ opt2 -│ ◻ opt3 -│ ◻ opt4 -│ ◻ opt5 -│ ... -└ + "... +opt2 +opt3 +◻ opt4 +opt5 +... +└ ", "", "", "", - "│ ◻ opt3 -│ ◻ opt4 -│ ◻ opt5 -│ ◻ opt6 -│ ... -└ + "opt3 +opt4 +◻ opt5 +opt6 +... +└ ", "", "", "", - "│ ◻ opt4 -│ ◻ opt5 -│ ◻ opt6 -│ ◻ opt7 -│ ... -└ + "opt4 +opt5 +◻ opt6 +opt7 +... +└ ", "", "", "", - "│ ◻ opt5 -│ ◻ opt6 -│ ◻ opt7 -│ ◻ opt8 -│ ... -└ + "opt5 +opt6 +◻ opt7 +opt8 +... +└ ", "", "", "", - "│ ◻ opt6 -│ ◻ opt7 -│ ◻ opt8 -│ ◻ opt9 -│ ... -└ + "opt6 +opt7 +◻ opt8 +opt9 +... +└ ", "", "", "", - "│ ◻ opt7 -│ ◻ opt8 -│ ◻ opt9 -│ ◻ opt10 -│ ◻ opt11 -└ + "opt7 +opt8 +◻ opt9 +opt10 +opt11 +└ ", "", "", "", - "│ ◻ opt9 -│ ◻ opt10 -│ ◻ opt11 -└ + "opt9 +◻ opt10 +opt11 +└ ", "", "", "", - "│ ◻ opt10 -│ ◻ opt11 -└ + "opt10 +◻ opt11 +└ ", "", "", "", - "│ ◻ opt0 -│ ◻ opt1 -│ ◻ opt2 -│ ◻ opt3 -│ ◻ opt4 -│ ... -└ + "◻ opt0 +opt1 +opt2 +opt3 +opt4 +... +└ ", "", "", "", - "│ ◼ opt0", + "◼ opt0", "", "", "", "", - "◇ foo -│ opt0", + "◇ foo +opt0", " ", "", @@ -622,37 +622,37 @@ exports[`multiselect (isCI = false) > sliding window loops downwards 1`] = ` exports[`multiselect (isCI = false) > sliding window loops upwards 1`] = ` [ "", - "│ -◆ foo -│ ◻ opt0 -│ ◻ opt1 -│ ◻ opt2 -│ ◻ opt3 -│ ◻ opt4 -│ ... -└ + "│ +◆ foo +◻ opt0 +opt1 +opt2 +opt3 +opt4 +... +└ ", "", "", "", - "│ ... -│ ◻ opt7 -│ ◻ opt8 -│ ◻ opt9 -│ ◻ opt10 -│ ◻ opt11 -└ + "... +opt7 +opt8 +opt9 +opt10 +◻ opt11 +└ ", "", "", "", - "│ ◼ opt11", + "◼ opt11", "", "", "", "", - "◇ foo -│ opt11", + "◇ foo +opt11", " ", "", @@ -662,20 +662,20 @@ exports[`multiselect (isCI = false) > sliding window loops upwards 1`] = ` exports[`multiselect (isCI = false) > withGuide: false removes guide 1`] = ` [ "", - "◆ foo -◻ opt0 -◻ opt1 + "◆ foo +◻ opt0 +opt1 ", "", "", "", - "◼ opt0", + "◼ opt0", "", "", "", - "◇ foo -opt0", + "◇ foo +opt0", " ", "", @@ -685,32 +685,32 @@ exports[`multiselect (isCI = false) > withGuide: false removes guide 1`] = ` exports[`multiselect (isCI = false) > wraps cancelled state with long options 1`] = ` [ "", - "│ -◆ foo -│ ◻ Option 0 Option 0 Option -│ 0 Option 0 Option 0 Option -│ 0 Option 0 Option 0 Option -│ 0 Option 0 -│ ◻ Option 1 Option 1 Option  -│ 1 Option 1 Option 1 Option  -│ 1 Option 1 Option 1 Option  -│ 1 Option 1 -└ + "│ +◆ foo +◻ Option 0 Option 0 Option +│ 0 Option 0 Option 0 Option +│ 0 Option 0 Option 0 Option +│ 0 Option 0 +Option 1 Option 1 Option +1 Option 1 Option 1 Option +1 Option 1 Option 1 Option +1 Option 1 +└ ", "", "", "", - "│ ◼ Option 0 Option 0 Option ", + "◼ Option 0 Option 0 Option ", "", "", "", "", - "■ foo -│ Option 0 Option 0 Option 0  -│ Option 0 Option 0 Option 0  -│ Option 0 Option 0 Option 0  -│ Option 0 -│", + "■ foo +│ Option 0 Option 0 Option 0 +Option 0 Option 0 Option 0 +Option 0 Option 0 Option 0 +Option 0 +│", " ", "", @@ -720,26 +720,26 @@ exports[`multiselect (isCI = false) > wraps cancelled state with long options 1` exports[`multiselect (isCI = false) > wraps long messages 1`] = ` [ "", - "│ -◆ foo foo foo foo foo foo foo -│ foo foo foo foo foo foo -│ foo foo foo foo foo foo foo -│ ◻ opt0 -│ ◻ opt1 -└ + "│ +◆ foo foo foo foo foo foo foo +│ foo foo foo foo foo foo +│ foo foo foo foo foo foo foo +◻ opt0 +opt1 +└ ", "", "", "", - "│ ◼ opt0", + "◼ opt0", "", "", "", "", - "◇ foo foo foo foo foo foo foo -│ foo foo foo foo foo foo -│ foo foo foo foo foo foo foo -│ opt0", + "◇ foo foo foo foo foo foo foo +│ foo foo foo foo foo foo +│ foo foo foo foo foo foo foo +opt0", " ", "", @@ -749,31 +749,31 @@ exports[`multiselect (isCI = false) > wraps long messages 1`] = ` exports[`multiselect (isCI = false) > wraps success state with long options 1`] = ` [ "", - "│ -◆ foo -│ ◻ Option 0 Option 0 Option -│ 0 Option 0 Option 0 Option -│ 0 Option 0 Option 0 Option -│ 0 Option 0 -│ ◻ Option 1 Option 1 Option  -│ 1 Option 1 Option 1 Option  -│ 1 Option 1 Option 1 Option  -│ 1 Option 1 -└ + "│ +◆ foo +◻ Option 0 Option 0 Option +│ 0 Option 0 Option 0 Option +│ 0 Option 0 Option 0 Option +│ 0 Option 0 +Option 1 Option 1 Option +1 Option 1 Option 1 Option +1 Option 1 Option 1 Option +1 Option 1 +└ ", "", "", "", - "│ ◼ Option 0 Option 0 Option ", + "◼ Option 0 Option 0 Option ", "", "", "", "", - "◇ foo -│ Option 0 Option 0 Option 0  -│ Option 0 Option 0 Option 0  -│ Option 0 Option 0 Option 0  -│ Option 0", + "◇ foo +Option 0 Option 0 Option 0 +Option 0 Option 0 Option 0 +Option 0 Option 0 Option 0 +Option 0", " ", "", @@ -783,11 +783,11 @@ exports[`multiselect (isCI = false) > wraps success state with long options 1`] exports[`multiselect (isCI = true) > can be aborted by a signal 1`] = ` [ "", - "│ -◆ foo -│ ◻ opt0 -│ ◻ opt1 -└ + "│ +◆ foo +◻ opt0 +opt1 +└ ", " ", @@ -798,17 +798,17 @@ exports[`multiselect (isCI = true) > can be aborted by a signal 1`] = ` exports[`multiselect (isCI = true) > can cancel 1`] = ` [ "", - "│ -◆ foo -│ ◻ opt0 -│ ◻ opt1 -└ + "│ +◆ foo +◻ opt0 +opt1 +└ ", "", "", "", - "■ foo -│", + "■ foo +│", " ", "", @@ -818,22 +818,22 @@ exports[`multiselect (isCI = true) > can cancel 1`] = ` exports[`multiselect (isCI = true) > can render option hints 1`] = ` [ "", - "│ -◆ foo -│ ◻ opt0 (Hint 0) -│ ◻ opt1 -└ + "│ +◆ foo +◻ opt0 (Hint 0) +opt1 +└ ", "", "", "", - "│ ◼ opt0 (Hint 0)", + "◼ opt0 (Hint 0)", "", "", "", "", - "◇ foo -│ opt0", + "◇ foo +opt0", " ", "", @@ -843,22 +843,22 @@ exports[`multiselect (isCI = true) > can render option hints 1`] = ` exports[`multiselect (isCI = true) > can set cursorAt to preselect an option 1`] = ` [ "", - "│ -◆ foo -│ ◻ opt0 -│ ◻ opt1 -└ + "│ +◆ foo +opt0 +◻ opt1 +└ ", "", "", "", - "│ ◼ opt1", + "◼ opt1", "", "", "", "", - "◇ foo -│ opt1", + "◇ foo +opt1", " ", "", @@ -868,22 +868,22 @@ exports[`multiselect (isCI = true) > can set cursorAt to preselect an option 1`] exports[`multiselect (isCI = true) > can set custom labels 1`] = ` [ "", - "│ -◆ foo -│ ◻ Option 0 -│ ◻ Option 1 -└ + "│ +◆ foo +◻ Option 0 +Option 1 +└ ", "", "", "", - "│ ◼ Option 0", + "◼ Option 0", "", "", "", "", - "◇ foo -│ Option 0", + "◇ foo +Option 0", " ", "", @@ -893,17 +893,17 @@ exports[`multiselect (isCI = true) > can set custom labels 1`] = ` exports[`multiselect (isCI = true) > can set initial values 1`] = ` [ "", - "│ -◆ foo -│ ◻ opt0 -│ ◼ opt1 -└ + "│ +◆ foo +◻ opt0 +opt1 +└ ", "", "", "", - "◇ foo -│ opt1", + "◇ foo +opt1", " ", "", @@ -913,17 +913,17 @@ exports[`multiselect (isCI = true) > can set initial values 1`] = ` exports[`multiselect (isCI = true) > can submit without selection when required = false 1`] = ` [ "", - "│ -◆ foo -│ ◻ opt0 -│ ◻ opt1 -└ + "│ +◆ foo +◻ opt0 +opt1 +└ ", "", "", "", - "◇ foo -│ none", + "◇ foo +none", " ", "", @@ -933,20 +933,20 @@ exports[`multiselect (isCI = true) > can submit without selection when required exports[`multiselect (isCI = true) > global withGuide: false removes guide 1`] = ` [ "", - "◆ foo -◻ opt0 -◻ opt1 + "◆ foo +◻ opt0 +opt1 ", "", "", "", - "◼ opt0", + "◼ opt0", "", "", "", - "◇ foo -opt0", + "◇ foo +opt0", " ", "", @@ -956,87 +956,87 @@ exports[`multiselect (isCI = true) > global withGuide: false removes guide 1`] = exports[`multiselect (isCI = true) > maxItems renders a sliding window 1`] = ` [ "", - "│ -◆ foo -│ ◻ opt0 -│ ◻ opt1 -│ ◻ opt2 -│ ◻ opt3 -│ ◻ opt4 -│ ... -└ + "│ +◆ foo +◻ opt0 +opt1 +opt2 +opt3 +opt4 +... +└ ", "", "", "", - "│ ◻ opt0 -│ ◻ opt1 -│ ◻ opt2 -│ ◻ opt3 -│ ◻ opt4 -│ ... -└ + "opt0 +◻ opt1 +opt2 +opt3 +opt4 +... +└ ", "", "", "", - "│ ◻ opt1 -│ ◻ opt2 -│ ◻ opt3 -│ ◻ opt4 -│ ... -└ + "opt1 +◻ opt2 +opt3 +opt4 +... +└ ", "", "", "", - "│ ◻ opt2 -│ ◻ opt3 -│ ◻ opt4 -│ ... -└ + "opt2 +◻ opt3 +opt4 +... +└ ", "", "", "", - "│ ... -│ ◻ opt2 -│ ◻ opt3 -│ ◻ opt4 -│ ◻ opt5 -│ ... -└ + "... +opt2 +opt3 +◻ opt4 +opt5 +... +└ ", "", "", "", - "│ ◻ opt3 -│ ◻ opt4 -│ ◻ opt5 -│ ◻ opt6 -│ ... -└ + "opt3 +opt4 +◻ opt5 +opt6 +... +└ ", "", "", "", - "│ ◻ opt4 -│ ◻ opt5 -│ ◻ opt6 -│ ◻ opt7 -│ ... -└ + "opt4 +opt5 +◻ opt6 +opt7 +... +└ ", "", "", "", - "│ ◼ opt6", + "◼ opt6", "", "", "", "", - "◇ foo -│ opt6", + "◇ foo +opt6", " ", "", @@ -1046,23 +1046,23 @@ exports[`multiselect (isCI = true) > maxItems renders a sliding window 1`] = ` exports[`multiselect (isCI = true) > renders disabled options 1`] = ` [ "", - "│ -◆ foo -│ ◻ opt0 -│ ◻ opt1 -│ ◻ opt2 (Hint 2) -└ + "│ +◆ foo +◻ opt0 +◻ opt1 +◻ opt2 (Hint 2) +└ ", "", "", "", - "│ ◼ opt1", + "◼ opt1", "", "", "", "", - "◇ foo -│ opt1", + "◇ foo +opt1", " ", "", @@ -1072,22 +1072,22 @@ exports[`multiselect (isCI = true) > renders disabled options 1`] = ` exports[`multiselect (isCI = true) > renders message 1`] = ` [ "", - "│ -◆ foo -│ ◻ opt0 -│ ◻ opt1 -└ + "│ +◆ foo +◻ opt0 +opt1 +└ ", "", "", "", - "│ ◼ opt0", + "◼ opt0", "", "", "", "", - "◇ foo -│ opt0", + "◇ foo +opt0", " ", "", @@ -1097,37 +1097,37 @@ exports[`multiselect (isCI = true) > renders message 1`] = ` exports[`multiselect (isCI = true) > renders multiple cancelled values 1`] = ` [ "", - "│ -◆ foo -│ ◻ opt0 -│ ◻ opt1 -│ ◻ opt2 -└ + "│ +◆ foo +◻ opt0 +opt1 +opt2 +└ ", "", "", "", - "│ ◼ opt0", + "◼ opt0", "", "", "", "", - "│ ◼ opt0 -│ ◻ opt1 -│ ◻ opt2 -└ + "opt0 +◻ opt1 +opt2 +└ ", "", "", "", - "│ ◼ opt1", + "◼ opt1", "", "", "", "", - "■ foo -│ opt0, opt1 -│", + "■ foo +│ opt0, opt1 +│", " ", "", @@ -1137,43 +1137,43 @@ exports[`multiselect (isCI = true) > renders multiple cancelled values 1`] = ` exports[`multiselect (isCI = true) > renders multiple selected options 1`] = ` [ "", - "│ -◆ foo -│ ◻ opt0 -│ ◻ opt1 -│ ◻ opt2 -└ + "│ +◆ foo +◻ opt0 +opt1 +opt2 +└ ", "", "", "", - "│ ◼ opt0", + "◼ opt0", "", "", "", "", - "│ ◼ opt0 -│ ◻ opt1 -│ ◻ opt2 -└ + "opt0 +◻ opt1 +opt2 +└ ", "", "", "", - "│ ◼ opt1", + "◼ opt1", "", "", "", "", - "│ ◼ opt1 -│ ◻ opt2 -└ + "opt1 +◻ opt2 +└ ", "", "", "", - "◇ foo -│ opt0, opt1", + "◇ foo +opt0, opt1", " ", "", @@ -1183,34 +1183,34 @@ exports[`multiselect (isCI = true) > renders multiple selected options 1`] = ` exports[`multiselect (isCI = true) > renders validation errors 1`] = ` [ "", - "│ -◆ foo -│ ◻ opt0 -│ ◻ opt1 -└ + "│ +◆ foo +◻ opt0 +opt1 +└ ", "", "", "", - "▲ foo -│ ◻ opt0 -│ ◻ opt1 -└ Please select at least one option. - Press  space  to select,  enter  to submit + "▲ foo +◻ opt0 +opt1 +Please select at least one option. + Press  space  to select,  enter  to submit ", "", "", "", - "◆ foo -│ ◼ opt0 -│ ◻ opt1 -└ + "◆ foo +◼ opt0 +opt1 +└ ", "", "", "", - "◇ foo -│ opt0", + "◇ foo +opt0", " ", "", @@ -1220,33 +1220,33 @@ exports[`multiselect (isCI = true) > renders validation errors 1`] = ` exports[`multiselect (isCI = true) > shows hints for all selected options 1`] = ` [ "", - "│ -◆ foo -│ ◼ opt0 (Hint 0) -│ ◼ opt1 (Hint 1) -│ ◻ opt2 -└ + "│ +◆ foo +◼ opt0 (Hint 0) +opt1 (Hint 1) +opt2 +└ ", "", "", "", - "│ ◼ opt0 (Hint 0) -│ ◼ opt1 (Hint 1) -│ ◻ opt2 -└ + "opt0 (Hint 0) +◼ opt1 (Hint 1) +opt2 +└ ", "", "", "", - "│ ◼ opt1 (Hint 1) -│ ◻ opt2 (Hint 2) -└ + "opt1 (Hint 1) +◻ opt2 (Hint 2) +└ ", "", "", "", - "◇ foo -│ opt0, opt1", + "◇ foo +opt0, opt1", " ", "", @@ -1256,143 +1256,143 @@ exports[`multiselect (isCI = true) > shows hints for all selected options 1`] = exports[`multiselect (isCI = true) > sliding window loops downwards 1`] = ` [ "", - "│ -◆ foo -│ ◻ opt0 -│ ◻ opt1 -│ ◻ opt2 -│ ◻ opt3 -│ ◻ opt4 -│ ... -└ + "│ +◆ foo +◻ opt0 +opt1 +opt2 +opt3 +opt4 +... +└ ", "", "", "", - "│ ◻ opt0 -│ ◻ opt1 -│ ◻ opt2 -│ ◻ opt3 -│ ◻ opt4 -│ ... -└ + "opt0 +◻ opt1 +opt2 +opt3 +opt4 +... +└ ", "", "", "", - "│ ◻ opt1 -│ ◻ opt2 -│ ◻ opt3 -│ ◻ opt4 -│ ... -└ + "opt1 +◻ opt2 +opt3 +opt4 +... +└ ", "", "", "", - "│ ◻ opt2 -│ ◻ opt3 -│ ◻ opt4 -│ ... -└ + "opt2 +◻ opt3 +opt4 +... +└ ", "", "", "", - "│ ... -│ ◻ opt2 -│ ◻ opt3 -│ ◻ opt4 -│ ◻ opt5 -│ ... -└ + "... +opt2 +opt3 +◻ opt4 +opt5 +... +└ ", "", "", "", - "│ ◻ opt3 -│ ◻ opt4 -│ ◻ opt5 -│ ◻ opt6 -│ ... -└ + "opt3 +opt4 +◻ opt5 +opt6 +... +└ ", "", "", "", - "│ ◻ opt4 -│ ◻ opt5 -│ ◻ opt6 -│ ◻ opt7 -│ ... -└ + "opt4 +opt5 +◻ opt6 +opt7 +... +└ ", "", "", "", - "│ ◻ opt5 -│ ◻ opt6 -│ ◻ opt7 -│ ◻ opt8 -│ ... -└ + "opt5 +opt6 +◻ opt7 +opt8 +... +└ ", "", "", "", - "│ ◻ opt6 -│ ◻ opt7 -│ ◻ opt8 -│ ◻ opt9 -│ ... -└ + "opt6 +opt7 +◻ opt8 +opt9 +... +└ ", "", "", "", - "│ ◻ opt7 -│ ◻ opt8 -│ ◻ opt9 -│ ◻ opt10 -│ ◻ opt11 -└ + "opt7 +opt8 +◻ opt9 +opt10 +opt11 +└ ", "", "", "", - "│ ◻ opt9 -│ ◻ opt10 -│ ◻ opt11 -└ + "opt9 +◻ opt10 +opt11 +└ ", "", "", "", - "│ ◻ opt10 -│ ◻ opt11 -└ + "opt10 +◻ opt11 +└ ", "", "", "", - "│ ◻ opt0 -│ ◻ opt1 -│ ◻ opt2 -│ ◻ opt3 -│ ◻ opt4 -│ ... -└ + "◻ opt0 +opt1 +opt2 +opt3 +opt4 +... +└ ", "", "", "", - "│ ◼ opt0", + "◼ opt0", "", "", "", "", - "◇ foo -│ opt0", + "◇ foo +opt0", " ", "", @@ -1402,37 +1402,37 @@ exports[`multiselect (isCI = true) > sliding window loops downwards 1`] = ` exports[`multiselect (isCI = true) > sliding window loops upwards 1`] = ` [ "", - "│ -◆ foo -│ ◻ opt0 -│ ◻ opt1 -│ ◻ opt2 -│ ◻ opt3 -│ ◻ opt4 -│ ... -└ + "│ +◆ foo +◻ opt0 +opt1 +opt2 +opt3 +opt4 +... +└ ", "", "", "", - "│ ... -│ ◻ opt7 -│ ◻ opt8 -│ ◻ opt9 -│ ◻ opt10 -│ ◻ opt11 -└ + "... +opt7 +opt8 +opt9 +opt10 +◻ opt11 +└ ", "", "", "", - "│ ◼ opt11", + "◼ opt11", "", "", "", "", - "◇ foo -│ opt11", + "◇ foo +opt11", " ", "", @@ -1442,20 +1442,20 @@ exports[`multiselect (isCI = true) > sliding window loops upwards 1`] = ` exports[`multiselect (isCI = true) > withGuide: false removes guide 1`] = ` [ "", - "◆ foo -◻ opt0 -◻ opt1 + "◆ foo +◻ opt0 +opt1 ", "", "", "", - "◼ opt0", + "◼ opt0", "", "", "", - "◇ foo -opt0", + "◇ foo +opt0", " ", "", @@ -1465,32 +1465,32 @@ exports[`multiselect (isCI = true) > withGuide: false removes guide 1`] = ` exports[`multiselect (isCI = true) > wraps cancelled state with long options 1`] = ` [ "", - "│ -◆ foo -│ ◻ Option 0 Option 0 Option -│ 0 Option 0 Option 0 Option -│ 0 Option 0 Option 0 Option -│ 0 Option 0 -│ ◻ Option 1 Option 1 Option  -│ 1 Option 1 Option 1 Option  -│ 1 Option 1 Option 1 Option  -│ 1 Option 1 -└ + "│ +◆ foo +◻ Option 0 Option 0 Option +│ 0 Option 0 Option 0 Option +│ 0 Option 0 Option 0 Option +│ 0 Option 0 +Option 1 Option 1 Option +1 Option 1 Option 1 Option +1 Option 1 Option 1 Option +1 Option 1 +└ ", "", "", "", - "│ ◼ Option 0 Option 0 Option ", + "◼ Option 0 Option 0 Option ", "", "", "", "", - "■ foo -│ Option 0 Option 0 Option 0  -│ Option 0 Option 0 Option 0  -│ Option 0 Option 0 Option 0  -│ Option 0 -│", + "■ foo +│ Option 0 Option 0 Option 0 +Option 0 Option 0 Option 0 +Option 0 Option 0 Option 0 +Option 0 +│", " ", "", @@ -1500,26 +1500,26 @@ exports[`multiselect (isCI = true) > wraps cancelled state with long options 1`] exports[`multiselect (isCI = true) > wraps long messages 1`] = ` [ "", - "│ -◆ foo foo foo foo foo foo foo -│ foo foo foo foo foo foo -│ foo foo foo foo foo foo foo -│ ◻ opt0 -│ ◻ opt1 -└ + "│ +◆ foo foo foo foo foo foo foo +│ foo foo foo foo foo foo +│ foo foo foo foo foo foo foo +◻ opt0 +opt1 +└ ", "", "", "", - "│ ◼ opt0", + "◼ opt0", "", "", "", "", - "◇ foo foo foo foo foo foo foo -│ foo foo foo foo foo foo -│ foo foo foo foo foo foo foo -│ opt0", + "◇ foo foo foo foo foo foo foo +│ foo foo foo foo foo foo +│ foo foo foo foo foo foo foo +opt0", " ", "", @@ -1529,31 +1529,31 @@ exports[`multiselect (isCI = true) > wraps long messages 1`] = ` exports[`multiselect (isCI = true) > wraps success state with long options 1`] = ` [ "", - "│ -◆ foo -│ ◻ Option 0 Option 0 Option -│ 0 Option 0 Option 0 Option -│ 0 Option 0 Option 0 Option -│ 0 Option 0 -│ ◻ Option 1 Option 1 Option  -│ 1 Option 1 Option 1 Option  -│ 1 Option 1 Option 1 Option  -│ 1 Option 1 -└ + "│ +◆ foo +◻ Option 0 Option 0 Option +│ 0 Option 0 Option 0 Option +│ 0 Option 0 Option 0 Option +│ 0 Option 0 +Option 1 Option 1 Option +1 Option 1 Option 1 Option +1 Option 1 Option 1 Option +1 Option 1 +└ ", "", "", "", - "│ ◼ Option 0 Option 0 Option ", + "◼ Option 0 Option 0 Option ", "", "", "", "", - "◇ foo -│ Option 0 Option 0 Option 0  -│ Option 0 Option 0 Option 0  -│ Option 0 Option 0 Option 0  -│ Option 0", + "◇ foo +Option 0 Option 0 Option 0 +Option 0 Option 0 Option 0 +Option 0 Option 0 Option 0 +Option 0", " ", "", diff --git a/packages/prompts/test/__snapshots__/note.test.ts.snap b/packages/prompts/test/__snapshots__/note.test.ts.snap index 032d05c1..eb09ad67 100644 --- a/packages/prompts/test/__snapshots__/note.test.ts.snap +++ b/packages/prompts/test/__snapshots__/note.test.ts.snap @@ -2,384 +2,384 @@ exports[`note (isCI = false) > don't overflow 1`] = ` [ - "│ -◇ title ───────────────────────────────────────────────────────────────╮ -│ │ -│ test string test string test string test string test string test  │ -│ string test string test string test string test string test string  │ -│ test string test string test string test string test string test  │ -│ string test string test string test string test string test string  │ -│ test string test string test string test string test string test  │ -│ string test string test string test string test string  │ -│ test string test string test string test string test string test  │ -│ string test string test string test string test string test string  │ -│ test string test string test string test string test string test  │ -│ string test string test string test string test string test string  │ -│ test string test string test string test string test string test  │ -│ string test string test string test string test string  │ -│ test string test string test string test string test string test  │ -│ string test string test string test string test string test string  │ -│ test string test string test string test string test string test  │ -│ string test string test string test string test string test string  │ -│ test string test string test string test string test string test  │ -│ string test string test string test string test string  │ -│ test string test string test string test string test string test  │ -│ string test string test string test string test string test string  │ -│ test string test string test string test string test string test  │ -│ string test string test string test string test string test string  │ -│ test string test string test string test string test string test  │ -│ string test string test string test string test string │ -│ │ -├───────────────────────────────────────────────────────────────────────╯ + "│ +◇ title ───────────────────────────────────────────────────────────────╮ +│ +test string test string test string test string test string test │ +string test string test string test string test string test string │ +test string test string test string test string test string test │ +string test string test string test string test string test string │ +test string test string test string test string test string test │ +string test string test string test string test string │ +test string test string test string test string test string test │ +string test string test string test string test string test string │ +test string test string test string test string test string test │ +string test string test string test string test string test string │ +test string test string test string test string test string test │ +string test string test string test string test string │ +test string test string test string test string test string test │ +string test string test string test string test string test string │ +test string test string test string test string test string test │ +string test string test string test string test string test string │ +test string test string test string test string test string test │ +string test string test string test string test string │ +test string test string test string test string test string test │ +string test string test string test string test string test string │ +test string test string test string test string test string test │ +string test string test string test string test string test string │ +test string test string test string test string test string test │ +string test string test string test string test string │ +│ +├───────────────────────────────────────────────────────────────────────╯ ", ] `; exports[`note (isCI = false) > don't overflow with formatter 1`] = ` [ - "│ -◇ title ─────────────────────────────────────────────────────────────────╮ -│ │ -│ * test string test string test string test string test string test  * │ -│ * string test string test string test string test string test  * │ -│ * string test string test string test string test string test  * │ -│ * string test string test string test string test string test  * │ -│ * string test string test string test string test string test  * │ -│ * string test string test string test string test string test  * │ -│ * string test string  * │ -│ * test string test string test string test string test string test  * │ -│ * string test string test string test string test string test  * │ -│ * string test string test string test string test string test  * │ -│ * string test string test string test string test string test  * │ -│ * string test string test string test string test string test  * │ -│ * string test string test string test string test string test  * │ -│ * string test string  * │ -│ * test string test string test string test string test string test  * │ -│ * string test string test string test string test string test  * │ -│ * string test string test string test string test string test  * │ -│ * string test string test string test string test string test  * │ -│ * string test string test string test string test string test  * │ -│ * string test string test string test string test string test  * │ -│ * string test string  * │ -│ * test string test string test string test string test string test  * │ -│ * string test string test string test string test string test  * │ -│ * string test string test string test string test string test  * │ -│ * string test string test string test string test string test  * │ -│ * string test string test string test string test string test  * │ -│ * string test string test string test string test string test  * │ -│ * string test string * │ -│ │ -├─────────────────────────────────────────────────────────────────────────╯ + "│ +◇ title ─────────────────────────────────────────────────────────────────╮ +│ +* test string test string test string test string test string test * │ +* string test string test string test string test string test * │ +* string test string test string test string test string test * │ +* string test string test string test string test string test * │ +* string test string test string test string test string test * │ +* string test string test string test string test string test * │ +* string test string * │ +* test string test string test string test string test string test * │ +* string test string test string test string test string test * │ +* string test string test string test string test string test * │ +* string test string test string test string test string test * │ +* string test string test string test string test string test * │ +* string test string test string test string test string test * │ +* string test string * │ +* test string test string test string test string test string test * │ +* string test string test string test string test string test * │ +* string test string test string test string test string test * │ +* string test string test string test string test string test * │ +* string test string test string test string test string test * │ +* string test string test string test string test string test * │ +* string test string * │ +* test string test string test string test string test string test * │ +* string test string test string test string test string test * │ +* string test string test string test string test string test * │ +* string test string test string test string test string test * │ +* string test string test string test string test string test * │ +* string test string test string test string test string test * │ +* string test string * │ +│ +├─────────────────────────────────────────────────────────────────────────╯ ", ] `; exports[`note (isCI = false) > formatter which adds colors works 1`] = ` [ - "│ -◇ title ──╮ -│ │ -│ line 0 │ -│ line 1 │ -│ line 2 │ -│ │ -├──────────╯ + "│ +◇ title ──╮ +│ +line 0 │ +line 1 │ +line 2 │ +│ +├──────────╯ ", ] `; exports[`note (isCI = false) > formatter which adds length works 1`] = ` [ - "│ -◇ title ──────╮ -│ │ -│ * line 0 * │ -│ * line 1 * │ -│ * line 2 * │ -│ │ -├──────────────╯ + "│ +◇ title ──────╮ +│ +│ * line 0 * │ +│ * line 1 * │ +│ * line 2 * │ +│ +├──────────────╯ ", ] `; exports[`note (isCI = false) > handle wide characters 1`] = ` [ - "│ -◇ 这是标题 ─╮ -│ │ -│ 이게 │ -│  첫  │ -│ 번째 │ -│   │ -│ 줄이 │ -│ 에요 │ -│ これ │ -│ は次 │ -│ の行 │ -│ です │ -│ │ -├────────────╯ + "│ +◇ 这是标题 ─╮ +│ +이게 │ +│ +번째 │ + │ +줄이 │ +에요 │ +これ │ +は次 │ +の行 │ +です │ +│ +├────────────╯ ", ] `; exports[`note (isCI = false) > handle wide characters with formatter 1`] = ` [ - "│ -◇ 这是标题 ─╮ -│ │ -│ *  * │ -│ * 이 * │ -│ * 게 * │ -│ *   * │ -│ * 첫 * │ -│ *   * │ -│ * 번 * │ -│ * 째 * │ -│ *   * │ -│ * 줄 * │ -│ * 이 * │ -│ * 에 * │ -│ * 요 * │ -│ *  * │ -│ * こ * │ -│ * れ * │ -│ * は * │ -│ * 次 * │ -│ * の * │ -│ * 行 * │ -│ * で * │ -│ * す * │ -│ │ -├────────────╯ + "│ +◇ 这是标题 ─╮ +│ +* * │ +* * │ +* * │ +* * │ +* * │ +* * │ +* * │ +* * │ +* * │ +* * │ +* * │ +* * │ +* * │ +* * │ +* * │ +* * │ +* * │ +* * │ +* * │ +* * │ +* * │ +* * │ +│ +├────────────╯ ", ] `; exports[`note (isCI = false) > renders as wide as longest line 1`] = ` [ - "│ -◇ title ───────────────────────────╮ -│ │ -│ short │ -│ somewhat questionably long line │ -│ │ -├───────────────────────────────────╯ + "│ +◇ title ───────────────────────────╮ +│ +short │ +somewhat questionably long line │ +│ +├───────────────────────────────────╯ ", ] `; exports[`note (isCI = false) > renders message with title 1`] = ` [ - "│ -◇ title ───╮ -│ │ -│ message │ -│ │ -├───────────╯ + "│ +◇ title ───╮ +│ +message │ +│ +├───────────╯ ", ] `; exports[`note (isCI = false) > without guide 1`] = ` [ - "◇ title ───╮ -│ │ -│ message │ -│ │ -╰───────────╯ + "◇ title ───╮ +│ +message │ +│ +╰───────────╯ ", ] `; exports[`note (isCI = true) > don't overflow 1`] = ` [ - "│ -◇ title ───────────────────────────────────────────────────────────────╮ -│ │ -│ test string test string test string test string test string test  │ -│ string test string test string test string test string test string  │ -│ test string test string test string test string test string test  │ -│ string test string test string test string test string test string  │ -│ test string test string test string test string test string test  │ -│ string test string test string test string test string  │ -│ test string test string test string test string test string test  │ -│ string test string test string test string test string test string  │ -│ test string test string test string test string test string test  │ -│ string test string test string test string test string test string  │ -│ test string test string test string test string test string test  │ -│ string test string test string test string test string  │ -│ test string test string test string test string test string test  │ -│ string test string test string test string test string test string  │ -│ test string test string test string test string test string test  │ -│ string test string test string test string test string test string  │ -│ test string test string test string test string test string test  │ -│ string test string test string test string test string  │ -│ test string test string test string test string test string test  │ -│ string test string test string test string test string test string  │ -│ test string test string test string test string test string test  │ -│ string test string test string test string test string test string  │ -│ test string test string test string test string test string test  │ -│ string test string test string test string test string │ -│ │ -├───────────────────────────────────────────────────────────────────────╯ + "│ +◇ title ───────────────────────────────────────────────────────────────╮ +│ +test string test string test string test string test string test │ +string test string test string test string test string test string │ +test string test string test string test string test string test │ +string test string test string test string test string test string │ +test string test string test string test string test string test │ +string test string test string test string test string │ +test string test string test string test string test string test │ +string test string test string test string test string test string │ +test string test string test string test string test string test │ +string test string test string test string test string test string │ +test string test string test string test string test string test │ +string test string test string test string test string │ +test string test string test string test string test string test │ +string test string test string test string test string test string │ +test string test string test string test string test string test │ +string test string test string test string test string test string │ +test string test string test string test string test string test │ +string test string test string test string test string │ +test string test string test string test string test string test │ +string test string test string test string test string test string │ +test string test string test string test string test string test │ +string test string test string test string test string test string │ +test string test string test string test string test string test │ +string test string test string test string test string │ +│ +├───────────────────────────────────────────────────────────────────────╯ ", ] `; exports[`note (isCI = true) > don't overflow with formatter 1`] = ` [ - "│ -◇ title ─────────────────────────────────────────────────────────────────╮ -│ │ -│ * test string test string test string test string test string test  * │ -│ * string test string test string test string test string test  * │ -│ * string test string test string test string test string test  * │ -│ * string test string test string test string test string test  * │ -│ * string test string test string test string test string test  * │ -│ * string test string test string test string test string test  * │ -│ * string test string  * │ -│ * test string test string test string test string test string test  * │ -│ * string test string test string test string test string test  * │ -│ * string test string test string test string test string test  * │ -│ * string test string test string test string test string test  * │ -│ * string test string test string test string test string test  * │ -│ * string test string test string test string test string test  * │ -│ * string test string  * │ -│ * test string test string test string test string test string test  * │ -│ * string test string test string test string test string test  * │ -│ * string test string test string test string test string test  * │ -│ * string test string test string test string test string test  * │ -│ * string test string test string test string test string test  * │ -│ * string test string test string test string test string test  * │ -│ * string test string  * │ -│ * test string test string test string test string test string test  * │ -│ * string test string test string test string test string test  * │ -│ * string test string test string test string test string test  * │ -│ * string test string test string test string test string test  * │ -│ * string test string test string test string test string test  * │ -│ * string test string test string test string test string test  * │ -│ * string test string * │ -│ │ -├─────────────────────────────────────────────────────────────────────────╯ + "│ +◇ title ─────────────────────────────────────────────────────────────────╮ +│ +* test string test string test string test string test string test * │ +* string test string test string test string test string test * │ +* string test string test string test string test string test * │ +* string test string test string test string test string test * │ +* string test string test string test string test string test * │ +* string test string test string test string test string test * │ +* string test string * │ +* test string test string test string test string test string test * │ +* string test string test string test string test string test * │ +* string test string test string test string test string test * │ +* string test string test string test string test string test * │ +* string test string test string test string test string test * │ +* string test string test string test string test string test * │ +* string test string * │ +* test string test string test string test string test string test * │ +* string test string test string test string test string test * │ +* string test string test string test string test string test * │ +* string test string test string test string test string test * │ +* string test string test string test string test string test * │ +* string test string test string test string test string test * │ +* string test string * │ +* test string test string test string test string test string test * │ +* string test string test string test string test string test * │ +* string test string test string test string test string test * │ +* string test string test string test string test string test * │ +* string test string test string test string test string test * │ +* string test string test string test string test string test * │ +* string test string * │ +│ +├─────────────────────────────────────────────────────────────────────────╯ ", ] `; exports[`note (isCI = true) > formatter which adds colors works 1`] = ` [ - "│ -◇ title ──╮ -│ │ -│ line 0 │ -│ line 1 │ -│ line 2 │ -│ │ -├──────────╯ + "│ +◇ title ──╮ +│ +line 0 │ +line 1 │ +line 2 │ +│ +├──────────╯ ", ] `; exports[`note (isCI = true) > formatter which adds length works 1`] = ` [ - "│ -◇ title ──────╮ -│ │ -│ * line 0 * │ -│ * line 1 * │ -│ * line 2 * │ -│ │ -├──────────────╯ + "│ +◇ title ──────╮ +│ +│ * line 0 * │ +│ * line 1 * │ +│ * line 2 * │ +│ +├──────────────╯ ", ] `; exports[`note (isCI = true) > handle wide characters 1`] = ` [ - "│ -◇ 这是标题 ─╮ -│ │ -│ 이게 │ -│  첫  │ -│ 번째 │ -│   │ -│ 줄이 │ -│ 에요 │ -│ これ │ -│ は次 │ -│ の行 │ -│ です │ -│ │ -├────────────╯ + "│ +◇ 这是标题 ─╮ +│ +이게 │ +│ +번째 │ + │ +줄이 │ +에요 │ +これ │ +は次 │ +の行 │ +です │ +│ +├────────────╯ ", ] `; exports[`note (isCI = true) > handle wide characters with formatter 1`] = ` [ - "│ -◇ 这是标题 ─╮ -│ │ -│ *  * │ -│ * 이 * │ -│ * 게 * │ -│ *   * │ -│ * 첫 * │ -│ *   * │ -│ * 번 * │ -│ * 째 * │ -│ *   * │ -│ * 줄 * │ -│ * 이 * │ -│ * 에 * │ -│ * 요 * │ -│ *  * │ -│ * こ * │ -│ * れ * │ -│ * は * │ -│ * 次 * │ -│ * の * │ -│ * 行 * │ -│ * で * │ -│ * す * │ -│ │ -├────────────╯ + "│ +◇ 这是标题 ─╮ +│ +* * │ +* * │ +* * │ +* * │ +* * │ +* * │ +* * │ +* * │ +* * │ +* * │ +* * │ +* * │ +* * │ +* * │ +* * │ +* * │ +* * │ +* * │ +* * │ +* * │ +* * │ +* * │ +│ +├────────────╯ ", ] `; exports[`note (isCI = true) > renders as wide as longest line 1`] = ` [ - "│ -◇ title ───────────────────────────╮ -│ │ -│ short │ -│ somewhat questionably long line │ -│ │ -├───────────────────────────────────╯ + "│ +◇ title ───────────────────────────╮ +│ +short │ +somewhat questionably long line │ +│ +├───────────────────────────────────╯ ", ] `; exports[`note (isCI = true) > renders message with title 1`] = ` [ - "│ -◇ title ───╮ -│ │ -│ message │ -│ │ -├───────────╯ + "│ +◇ title ───╮ +│ +message │ +│ +├───────────╯ ", ] `; exports[`note (isCI = true) > without guide 1`] = ` [ - "◇ title ───╮ -│ │ -│ message │ -│ │ -╰───────────╯ + "◇ title ───╮ +│ +message │ +│ +╰───────────╯ ", ] `; diff --git a/packages/prompts/test/__snapshots__/password.test.ts.snap b/packages/prompts/test/__snapshots__/password.test.ts.snap index 09df3df4..99b5a8d3 100644 --- a/packages/prompts/test/__snapshots__/password.test.ts.snap +++ b/packages/prompts/test/__snapshots__/password.test.ts.snap @@ -3,10 +3,10 @@ exports[`password (isCI = false) > can be aborted by a signal 1`] = ` [ "", - "│ -◆ foo -│ _ -└ + "│ +◆ foo +│ _ +└ ", " ", @@ -17,40 +17,40 @@ exports[`password (isCI = false) > can be aborted by a signal 1`] = ` exports[`password (isCI = false) > clears input on error when clearOnError is true 1`] = ` [ "", - "│ -◆ foo -│ _ -└ + "│ +◆ foo +│ _ +└ ", "", "", "", - "│ ▪_", + "│ ▪_", "", "", "", "", - "▲ foo -│ ▪ -└ Error + "▲ foo +│ ▪ +Error ", "", "", "", - "◆ foo -│ ▪_ -└ + "◆ foo +│ ▪_ +└ ", "", "", "", - "│ ▪▪_", + "│ ▪▪_", "", "", "", "", - "◇ foo -│ ▪▪", + "◇ foo +▪▪", " ", "", @@ -60,13 +60,13 @@ exports[`password (isCI = false) > clears input on error when clearOnError is tr exports[`password (isCI = false) > global withGuide: false removes guide 1`] = ` [ "", - "◆ foo + "◆ foo _ ", "", "", - "◇ foo + "◇ foo ", " ", @@ -77,35 +77,35 @@ exports[`password (isCI = false) > global withGuide: false removes guide 1`] = ` exports[`password (isCI = false) > renders and clears validation errors 1`] = ` [ "", - "│ -◆ foo -│ _ -└ + "│ +◆ foo +│ _ +└ ", "", "", "", - "│ ▪_", + "│ ▪_", "", "", "", "", - "▲ foo -│ ▪ -└ Password must be at least 2 characters + "▲ foo +│ ▪ +Password must be at least 2 characters ", "", "", "", - "◆ foo -│ ▪▪_ -└ + "◆ foo +│ ▪▪_ +└ ", "", "", "", - "◇ foo -│ ▪▪", + "◇ foo +▪▪", " ", "", @@ -115,22 +115,22 @@ exports[`password (isCI = false) > renders and clears validation errors 1`] = ` exports[`password (isCI = false) > renders cancelled value 1`] = ` [ "", - "│ -◆ foo -│ _ -└ + "│ +◆ foo +│ _ +└ ", "", "", "", - "│ ▪_", + "│ ▪_", "", "", "", "", - "■ foo -│ ▪ -│", + "■ foo +│ ▪ +│", " ", "", @@ -140,26 +140,26 @@ exports[`password (isCI = false) > renders cancelled value 1`] = ` exports[`password (isCI = false) > renders custom mask 1`] = ` [ "", - "│ -◆ foo -│ _ -└ + "│ +◆ foo +│ _ +└ ", "", "", "", - "│ *_", + "│ *_", "", "", "", "", - "│ **_", + "│ **_", "", "", "", "", - "◇ foo -│ **", + "◇ foo +**", " ", "", @@ -169,26 +169,26 @@ exports[`password (isCI = false) > renders custom mask 1`] = ` exports[`password (isCI = false) > renders masked value 1`] = ` [ "", - "│ -◆ foo -│ _ -└ + "│ +◆ foo +│ _ +└ ", "", "", "", - "│ ▪_", + "│ ▪_", "", "", "", "", - "│ ▪▪_", + "│ ▪▪_", "", "", "", "", - "◇ foo -│ ▪▪", + "◇ foo +▪▪", " ", "", @@ -198,16 +198,16 @@ exports[`password (isCI = false) > renders masked value 1`] = ` exports[`password (isCI = false) > renders message 1`] = ` [ "", - "│ -◆ foo -│ _ -└ + "│ +◆ foo +│ _ +└ ", "", "", "", - "◇ foo -│ ", + "◇ foo +│ ", " ", "", @@ -217,13 +217,13 @@ exports[`password (isCI = false) > renders message 1`] = ` exports[`password (isCI = false) > withGuide: false removes guide 1`] = ` [ "", - "◆ foo + "◆ foo _ ", "", "", - "◇ foo + "◇ foo ", " ", @@ -234,10 +234,10 @@ exports[`password (isCI = false) > withGuide: false removes guide 1`] = ` exports[`password (isCI = true) > can be aborted by a signal 1`] = ` [ "", - "│ -◆ foo -│ _ -└ + "│ +◆ foo +│ _ +└ ", " ", @@ -248,40 +248,40 @@ exports[`password (isCI = true) > can be aborted by a signal 1`] = ` exports[`password (isCI = true) > clears input on error when clearOnError is true 1`] = ` [ "", - "│ -◆ foo -│ _ -└ + "│ +◆ foo +│ _ +└ ", "", "", "", - "│ ▪_", + "│ ▪_", "", "", "", "", - "▲ foo -│ ▪ -└ Error + "▲ foo +│ ▪ +Error ", "", "", "", - "◆ foo -│ ▪_ -└ + "◆ foo +│ ▪_ +└ ", "", "", "", - "│ ▪▪_", + "│ ▪▪_", "", "", "", "", - "◇ foo -│ ▪▪", + "◇ foo +▪▪", " ", "", @@ -291,13 +291,13 @@ exports[`password (isCI = true) > clears input on error when clearOnError is tru exports[`password (isCI = true) > global withGuide: false removes guide 1`] = ` [ "", - "◆ foo + "◆ foo _ ", "", "", - "◇ foo + "◇ foo ", " ", @@ -308,35 +308,35 @@ exports[`password (isCI = true) > global withGuide: false removes guide 1`] = ` exports[`password (isCI = true) > renders and clears validation errors 1`] = ` [ "", - "│ -◆ foo -│ _ -└ + "│ +◆ foo +│ _ +└ ", "", "", "", - "│ ▪_", + "│ ▪_", "", "", "", "", - "▲ foo -│ ▪ -└ Password must be at least 2 characters + "▲ foo +│ ▪ +Password must be at least 2 characters ", "", "", "", - "◆ foo -│ ▪▪_ -└ + "◆ foo +│ ▪▪_ +└ ", "", "", "", - "◇ foo -│ ▪▪", + "◇ foo +▪▪", " ", "", @@ -346,22 +346,22 @@ exports[`password (isCI = true) > renders and clears validation errors 1`] = ` exports[`password (isCI = true) > renders cancelled value 1`] = ` [ "", - "│ -◆ foo -│ _ -└ + "│ +◆ foo +│ _ +└ ", "", "", "", - "│ ▪_", + "│ ▪_", "", "", "", "", - "■ foo -│ ▪ -│", + "■ foo +│ ▪ +│", " ", "", @@ -371,26 +371,26 @@ exports[`password (isCI = true) > renders cancelled value 1`] = ` exports[`password (isCI = true) > renders custom mask 1`] = ` [ "", - "│ -◆ foo -│ _ -└ + "│ +◆ foo +│ _ +└ ", "", "", "", - "│ *_", + "│ *_", "", "", "", "", - "│ **_", + "│ **_", "", "", "", "", - "◇ foo -│ **", + "◇ foo +**", " ", "", @@ -400,26 +400,26 @@ exports[`password (isCI = true) > renders custom mask 1`] = ` exports[`password (isCI = true) > renders masked value 1`] = ` [ "", - "│ -◆ foo -│ _ -└ + "│ +◆ foo +│ _ +└ ", "", "", "", - "│ ▪_", + "│ ▪_", "", "", "", "", - "│ ▪▪_", + "│ ▪▪_", "", "", "", "", - "◇ foo -│ ▪▪", + "◇ foo +▪▪", " ", "", @@ -429,16 +429,16 @@ exports[`password (isCI = true) > renders masked value 1`] = ` exports[`password (isCI = true) > renders message 1`] = ` [ "", - "│ -◆ foo -│ _ -└ + "│ +◆ foo +│ _ +└ ", "", "", "", - "◇ foo -│ ", + "◇ foo +│ ", " ", "", @@ -448,13 +448,13 @@ exports[`password (isCI = true) > renders message 1`] = ` exports[`password (isCI = true) > withGuide: false removes guide 1`] = ` [ "", - "◆ foo + "◆ foo _ ", "", "", - "◇ foo + "◇ foo ", " ", diff --git a/packages/prompts/test/__snapshots__/path.test.ts.snap b/packages/prompts/test/__snapshots__/path.test.ts.snap index 0153e166..e9af08d5 100644 --- a/packages/prompts/test/__snapshots__/path.test.ts.snap +++ b/packages/prompts/test/__snapshots__/path.test.ts.snap @@ -3,21 +3,21 @@ exports[`text (isCI = false) > can cancel 1`] = ` [ "", - "│ -◆ foo -│ -│ Search: /tmp/█ -│ ● /tmp/bar -│ ○ /tmp/foo -│ ○ /tmp/hello -│ ○ /tmp/root.zip -│ ↑/↓ to select • Enter: confirm • Type: to search -└", + "│ +◆ foo +│ +Search: /tmp/█ +● /tmp/bar +/tmp/foo +/tmp/hello +/tmp/root.zip +↑/↓ to select • Enter: confirm • Type: to search +└", "", "", "", - "■ foo -│ /tmp/", + "■ foo +│ /tmp/", " ", "", @@ -27,57 +27,57 @@ exports[`text (isCI = false) > can cancel 1`] = ` exports[`text (isCI = false) > cannot submit unknown value 1`] = ` [ "", - "│ -◆ foo -│ -│ Search: /tmp/█ -│ ● /tmp/bar -│ ○ /tmp/foo -│ ○ /tmp/hello -│ ○ /tmp/root.zip -│ ↑/↓ to select • Enter: confirm • Type: to search -└", + "│ +◆ foo +│ +Search: /tmp/█ +● /tmp/bar +/tmp/foo +/tmp/hello +/tmp/root.zip +↑/↓ to select • Enter: confirm • Type: to search +└", "", "", "", - "│ Search: /tmp/_█ -│ No matches found -│ ↑/↓ to select • Enter: confirm • Type: to search -└", + "Search: /tmp/_█ +No matches found +↑/↓ to select • Enter: confirm • Type: to search +└", "", "", "", - "▲ foo -│ -│ Search: /tmp/_█ -│ No matches found -│ Please select a path -│ ↑/↓ to select • Enter: confirm • Type: to search -└", + "▲ foo +│ +Search: /tmp/_█ +No matches found +Please select a path +↑/↓ to select • Enter: confirm • Type: to search +└", "", "", "", - "◆ foo -│ -│ Search: /tmp/█ -│ ● /tmp/bar -│ ○ /tmp/foo -│ ○ /tmp/hello -│ ○ /tmp/root.zip -│ ↑/↓ to select • Enter: confirm • Type: to search -└", + "◆ foo +│ +Search: /tmp/█ +● /tmp/bar +/tmp/foo +/tmp/hello +/tmp/root.zip +↑/↓ to select • Enter: confirm • Type: to search +└", "", "", "", - "│ Search: /tmp/b█ -│ ● /tmp/bar -│ ↑/↓ to select • Enter: confirm • Type: to search -└", + "Search: /tmp/b█ +● /tmp/bar +↑/↓ to select • Enter: confirm • Type: to search +└", "", "", "", - "◇ foo -│ /tmp/bar", + "◇ foo +/tmp/bar", " ", "", @@ -87,18 +87,18 @@ exports[`text (isCI = false) > cannot submit unknown value 1`] = ` exports[`text (isCI = false) > initialValue sets the value 1`] = ` [ "", - "│ -◆ foo -│ -│ Search: /tmp/bar█ -│ ● /tmp/bar -│ ↑/↓ to select • Enter: confirm • Type: to search -└", + "│ +◆ foo +│ +Search: /tmp/bar█ +● /tmp/bar +↑/↓ to select • Enter: confirm • Type: to search +└", "", "", "", - "◇ foo -│ /tmp/bar", + "◇ foo +/tmp/bar", " ", "", @@ -108,33 +108,33 @@ exports[`text (isCI = false) > initialValue sets the value 1`] = ` exports[`text (isCI = false) > renders cancelled value if one set 1`] = ` [ "", - "│ -◆ foo -│ -│ Search: /tmp/█ -│ ● /tmp/bar -│ ○ /tmp/foo -│ ○ /tmp/hello -│ ○ /tmp/root.zip -│ ↑/↓ to select • Enter: confirm • Type: to search -└", + "│ +◆ foo +│ +Search: /tmp/█ +● /tmp/bar +/tmp/foo +/tmp/hello +/tmp/root.zip +↑/↓ to select • Enter: confirm • Type: to search +└", "", "", "", - "│ Search: /tmp/x█ -│ No matches found -│ ↑/↓ to select • Enter: confirm • Type: to search -└", + "Search: /tmp/x█ +No matches found +↑/↓ to select • Enter: confirm • Type: to search +└", "", "", "", - "│ Search: /tmp/xy█", + "Search: /tmp/xy█", "", "", "", "", - "■ foo -│ /tmp/xy", + "■ foo +│ /tmp/xy", " ", "", @@ -144,21 +144,21 @@ exports[`text (isCI = false) > renders cancelled value if one set 1`] = ` exports[`text (isCI = false) > renders message 1`] = ` [ "", - "│ -◆ foo -│ -│ Search: /tmp/█ -│ ● /tmp/bar -│ ○ /tmp/foo -│ ○ /tmp/hello -│ ○ /tmp/root.zip -│ ↑/↓ to select • Enter: confirm • Type: to search -└", + "│ +◆ foo +│ +Search: /tmp/█ +● /tmp/bar +/tmp/foo +/tmp/hello +/tmp/root.zip +↑/↓ to select • Enter: confirm • Type: to search +└", "", "", "", - "◇ foo -│ /tmp/bar", + "◇ foo +/tmp/bar", " ", "", @@ -168,33 +168,33 @@ exports[`text (isCI = false) > renders message 1`] = ` exports[`text (isCI = false) > renders submitted value 1`] = ` [ "", - "│ -◆ foo -│ -│ Search: /tmp/█ -│ ● /tmp/bar -│ ○ /tmp/foo -│ ○ /tmp/hello -│ ○ /tmp/root.zip -│ ↑/↓ to select • Enter: confirm • Type: to search -└", + "│ +◆ foo +│ +Search: /tmp/█ +● /tmp/bar +/tmp/foo +/tmp/hello +/tmp/root.zip +↑/↓ to select • Enter: confirm • Type: to search +└", "", "", "", - "│ Search: /tmp/b█ -│ ● /tmp/bar -│ ↑/↓ to select • Enter: confirm • Type: to search -└", + "Search: /tmp/b█ +● /tmp/bar +↑/↓ to select • Enter: confirm • Type: to search +└", "", "", "", - "│ Search: /tmp/ba█", + "Search: /tmp/ba█", "", "", "", "", - "◇ foo -│ /tmp/bar", + "◇ foo +/tmp/bar", " ", "", @@ -204,57 +204,57 @@ exports[`text (isCI = false) > renders submitted value 1`] = ` exports[`text (isCI = false) > validation errors render and clear (using Error) 1`] = ` [ "", - "│ -◆ foo -│ -│ Search: /tmp/█ -│ ● /tmp/bar -│ ○ /tmp/foo -│ ○ /tmp/hello -│ ○ /tmp/root.zip -│ ↑/↓ to select • Enter: confirm • Type: to search -└", + "│ +◆ foo +│ +Search: /tmp/█ +● /tmp/bar +/tmp/foo +/tmp/hello +/tmp/root.zip +↑/↓ to select • Enter: confirm • Type: to search +└", "", "", "", - "│ Search: /tmp/r█ -│ ● /tmp/root.zip -│ ↑/↓ to select • Enter: confirm • Type: to search -└", + "Search: /tmp/r█ +● /tmp/root.zip +↑/↓ to select • Enter: confirm • Type: to search +└", "", "", "", - "▲ foo -│ -│ Search: /tmp/r█ -│ should be /tmp/bar -│ ● /tmp/root.zip -│ ↑/↓ to select • Enter: confirm • Type: to search -└", + "▲ foo +│ +Search: /tmp/r█ +should be /tmp/bar +● /tmp/root.zip +↑/↓ to select • Enter: confirm • Type: to search +└", "", "", "", - "◆ foo -│ -│ Search: /tmp/█ -│ ○ /tmp/bar -│ ○ /tmp/foo -│ ○ /tmp/hello -│ ● /tmp/root.zip -│ ↑/↓ to select • Enter: confirm • Type: to search -└", + "◆ foo +│ +Search: /tmp/█ +/tmp/bar +/tmp/foo +/tmp/hello +● /tmp/root.zip +↑/↓ to select • Enter: confirm • Type: to search +└", "", "", "", - "│ Search: /tmp/b█ -│ ● /tmp/bar -│ ↑/↓ to select • Enter: confirm • Type: to search -└", + "Search: /tmp/b█ +● /tmp/bar +↑/↓ to select • Enter: confirm • Type: to search +└", "", "", "", - "◇ foo -│ /tmp/bar", + "◇ foo +/tmp/bar", " ", "", @@ -264,57 +264,57 @@ exports[`text (isCI = false) > validation errors render and clear (using Error) exports[`text (isCI = false) > validation errors render and clear 1`] = ` [ "", - "│ -◆ foo -│ -│ Search: /tmp/█ -│ ● /tmp/bar -│ ○ /tmp/foo -│ ○ /tmp/hello -│ ○ /tmp/root.zip -│ ↑/↓ to select • Enter: confirm • Type: to search -└", + "│ +◆ foo +│ +Search: /tmp/█ +● /tmp/bar +/tmp/foo +/tmp/hello +/tmp/root.zip +↑/↓ to select • Enter: confirm • Type: to search +└", "", "", "", - "│ Search: /tmp/r█ -│ ● /tmp/root.zip -│ ↑/↓ to select • Enter: confirm • Type: to search -└", + "Search: /tmp/r█ +● /tmp/root.zip +↑/↓ to select • Enter: confirm • Type: to search +└", "", "", "", - "▲ foo -│ -│ Search: /tmp/r█ -│ should be /tmp/bar -│ ● /tmp/root.zip -│ ↑/↓ to select • Enter: confirm • Type: to search -└", + "▲ foo +│ +Search: /tmp/r█ +should be /tmp/bar +● /tmp/root.zip +↑/↓ to select • Enter: confirm • Type: to search +└", "", "", "", - "◆ foo -│ -│ Search: /tmp/█ -│ ○ /tmp/bar -│ ○ /tmp/foo -│ ○ /tmp/hello -│ ● /tmp/root.zip -│ ↑/↓ to select • Enter: confirm • Type: to search -└", + "◆ foo +│ +Search: /tmp/█ +/tmp/bar +/tmp/foo +/tmp/hello +● /tmp/root.zip +↑/↓ to select • Enter: confirm • Type: to search +└", "", "", "", - "│ Search: /tmp/b█ -│ ● /tmp/bar -│ ↑/↓ to select • Enter: confirm • Type: to search -└", + "Search: /tmp/b█ +● /tmp/bar +↑/↓ to select • Enter: confirm • Type: to search +└", "", "", "", - "◇ foo -│ /tmp/bar", + "◇ foo +/tmp/bar", " ", "", @@ -324,21 +324,21 @@ exports[`text (isCI = false) > validation errors render and clear 1`] = ` exports[`text (isCI = true) > can cancel 1`] = ` [ "", - "│ -◆ foo -│ -│ Search: /tmp/█ -│ ● /tmp/bar -│ ○ /tmp/foo -│ ○ /tmp/hello -│ ○ /tmp/root.zip -│ ↑/↓ to select • Enter: confirm • Type: to search -└", + "│ +◆ foo +│ +Search: /tmp/█ +● /tmp/bar +/tmp/foo +/tmp/hello +/tmp/root.zip +↑/↓ to select • Enter: confirm • Type: to search +└", "", "", "", - "■ foo -│ /tmp/", + "■ foo +│ /tmp/", " ", "", @@ -348,57 +348,57 @@ exports[`text (isCI = true) > can cancel 1`] = ` exports[`text (isCI = true) > cannot submit unknown value 1`] = ` [ "", - "│ -◆ foo -│ -│ Search: /tmp/█ -│ ● /tmp/bar -│ ○ /tmp/foo -│ ○ /tmp/hello -│ ○ /tmp/root.zip -│ ↑/↓ to select • Enter: confirm • Type: to search -└", + "│ +◆ foo +│ +Search: /tmp/█ +● /tmp/bar +/tmp/foo +/tmp/hello +/tmp/root.zip +↑/↓ to select • Enter: confirm • Type: to search +└", "", "", "", - "│ Search: /tmp/_█ -│ No matches found -│ ↑/↓ to select • Enter: confirm • Type: to search -└", + "Search: /tmp/_█ +No matches found +↑/↓ to select • Enter: confirm • Type: to search +└", "", "", "", - "▲ foo -│ -│ Search: /tmp/_█ -│ No matches found -│ Please select a path -│ ↑/↓ to select • Enter: confirm • Type: to search -└", + "▲ foo +│ +Search: /tmp/_█ +No matches found +Please select a path +↑/↓ to select • Enter: confirm • Type: to search +└", "", "", "", - "◆ foo -│ -│ Search: /tmp/█ -│ ● /tmp/bar -│ ○ /tmp/foo -│ ○ /tmp/hello -│ ○ /tmp/root.zip -│ ↑/↓ to select • Enter: confirm • Type: to search -└", + "◆ foo +│ +Search: /tmp/█ +● /tmp/bar +/tmp/foo +/tmp/hello +/tmp/root.zip +↑/↓ to select • Enter: confirm • Type: to search +└", "", "", "", - "│ Search: /tmp/b█ -│ ● /tmp/bar -│ ↑/↓ to select • Enter: confirm • Type: to search -└", + "Search: /tmp/b█ +● /tmp/bar +↑/↓ to select • Enter: confirm • Type: to search +└", "", "", "", - "◇ foo -│ /tmp/bar", + "◇ foo +/tmp/bar", " ", "", @@ -408,18 +408,18 @@ exports[`text (isCI = true) > cannot submit unknown value 1`] = ` exports[`text (isCI = true) > initialValue sets the value 1`] = ` [ "", - "│ -◆ foo -│ -│ Search: /tmp/bar█ -│ ● /tmp/bar -│ ↑/↓ to select • Enter: confirm • Type: to search -└", + "│ +◆ foo +│ +Search: /tmp/bar█ +● /tmp/bar +↑/↓ to select • Enter: confirm • Type: to search +└", "", "", "", - "◇ foo -│ /tmp/bar", + "◇ foo +/tmp/bar", " ", "", @@ -429,33 +429,33 @@ exports[`text (isCI = true) > initialValue sets the value 1`] = ` exports[`text (isCI = true) > renders cancelled value if one set 1`] = ` [ "", - "│ -◆ foo -│ -│ Search: /tmp/█ -│ ● /tmp/bar -│ ○ /tmp/foo -│ ○ /tmp/hello -│ ○ /tmp/root.zip -│ ↑/↓ to select • Enter: confirm • Type: to search -└", + "│ +◆ foo +│ +Search: /tmp/█ +● /tmp/bar +/tmp/foo +/tmp/hello +/tmp/root.zip +↑/↓ to select • Enter: confirm • Type: to search +└", "", "", "", - "│ Search: /tmp/x█ -│ No matches found -│ ↑/↓ to select • Enter: confirm • Type: to search -└", + "Search: /tmp/x█ +No matches found +↑/↓ to select • Enter: confirm • Type: to search +└", "", "", "", - "│ Search: /tmp/xy█", + "Search: /tmp/xy█", "", "", "", "", - "■ foo -│ /tmp/xy", + "■ foo +│ /tmp/xy", " ", "", @@ -465,21 +465,21 @@ exports[`text (isCI = true) > renders cancelled value if one set 1`] = ` exports[`text (isCI = true) > renders message 1`] = ` [ "", - "│ -◆ foo -│ -│ Search: /tmp/█ -│ ● /tmp/bar -│ ○ /tmp/foo -│ ○ /tmp/hello -│ ○ /tmp/root.zip -│ ↑/↓ to select • Enter: confirm • Type: to search -└", + "│ +◆ foo +│ +Search: /tmp/█ +● /tmp/bar +/tmp/foo +/tmp/hello +/tmp/root.zip +↑/↓ to select • Enter: confirm • Type: to search +└", "", "", "", - "◇ foo -│ /tmp/bar", + "◇ foo +/tmp/bar", " ", "", @@ -489,33 +489,33 @@ exports[`text (isCI = true) > renders message 1`] = ` exports[`text (isCI = true) > renders submitted value 1`] = ` [ "", - "│ -◆ foo -│ -│ Search: /tmp/█ -│ ● /tmp/bar -│ ○ /tmp/foo -│ ○ /tmp/hello -│ ○ /tmp/root.zip -│ ↑/↓ to select • Enter: confirm • Type: to search -└", + "│ +◆ foo +│ +Search: /tmp/█ +● /tmp/bar +/tmp/foo +/tmp/hello +/tmp/root.zip +↑/↓ to select • Enter: confirm • Type: to search +└", "", "", "", - "│ Search: /tmp/b█ -│ ● /tmp/bar -│ ↑/↓ to select • Enter: confirm • Type: to search -└", + "Search: /tmp/b█ +● /tmp/bar +↑/↓ to select • Enter: confirm • Type: to search +└", "", "", "", - "│ Search: /tmp/ba█", + "Search: /tmp/ba█", "", "", "", "", - "◇ foo -│ /tmp/bar", + "◇ foo +/tmp/bar", " ", "", @@ -525,57 +525,57 @@ exports[`text (isCI = true) > renders submitted value 1`] = ` exports[`text (isCI = true) > validation errors render and clear (using Error) 1`] = ` [ "", - "│ -◆ foo -│ -│ Search: /tmp/█ -│ ● /tmp/bar -│ ○ /tmp/foo -│ ○ /tmp/hello -│ ○ /tmp/root.zip -│ ↑/↓ to select • Enter: confirm • Type: to search -└", + "│ +◆ foo +│ +Search: /tmp/█ +● /tmp/bar +/tmp/foo +/tmp/hello +/tmp/root.zip +↑/↓ to select • Enter: confirm • Type: to search +└", "", "", "", - "│ Search: /tmp/r█ -│ ● /tmp/root.zip -│ ↑/↓ to select • Enter: confirm • Type: to search -└", + "Search: /tmp/r█ +● /tmp/root.zip +↑/↓ to select • Enter: confirm • Type: to search +└", "", "", "", - "▲ foo -│ -│ Search: /tmp/r█ -│ should be /tmp/bar -│ ● /tmp/root.zip -│ ↑/↓ to select • Enter: confirm • Type: to search -└", + "▲ foo +│ +Search: /tmp/r█ +should be /tmp/bar +● /tmp/root.zip +↑/↓ to select • Enter: confirm • Type: to search +└", "", "", "", - "◆ foo -│ -│ Search: /tmp/█ -│ ○ /tmp/bar -│ ○ /tmp/foo -│ ○ /tmp/hello -│ ● /tmp/root.zip -│ ↑/↓ to select • Enter: confirm • Type: to search -└", + "◆ foo +│ +Search: /tmp/█ +/tmp/bar +/tmp/foo +/tmp/hello +● /tmp/root.zip +↑/↓ to select • Enter: confirm • Type: to search +└", "", "", "", - "│ Search: /tmp/b█ -│ ● /tmp/bar -│ ↑/↓ to select • Enter: confirm • Type: to search -└", + "Search: /tmp/b█ +● /tmp/bar +↑/↓ to select • Enter: confirm • Type: to search +└", "", "", "", - "◇ foo -│ /tmp/bar", + "◇ foo +/tmp/bar", " ", "", @@ -585,57 +585,57 @@ exports[`text (isCI = true) > validation errors render and clear (using Error) 1 exports[`text (isCI = true) > validation errors render and clear 1`] = ` [ "", - "│ -◆ foo -│ -│ Search: /tmp/█ -│ ● /tmp/bar -│ ○ /tmp/foo -│ ○ /tmp/hello -│ ○ /tmp/root.zip -│ ↑/↓ to select • Enter: confirm • Type: to search -└", + "│ +◆ foo +│ +Search: /tmp/█ +● /tmp/bar +/tmp/foo +/tmp/hello +/tmp/root.zip +↑/↓ to select • Enter: confirm • Type: to search +└", "", "", "", - "│ Search: /tmp/r█ -│ ● /tmp/root.zip -│ ↑/↓ to select • Enter: confirm • Type: to search -└", + "Search: /tmp/r█ +● /tmp/root.zip +↑/↓ to select • Enter: confirm • Type: to search +└", "", "", "", - "▲ foo -│ -│ Search: /tmp/r█ -│ should be /tmp/bar -│ ● /tmp/root.zip -│ ↑/↓ to select • Enter: confirm • Type: to search -└", + "▲ foo +│ +Search: /tmp/r█ +should be /tmp/bar +● /tmp/root.zip +↑/↓ to select • Enter: confirm • Type: to search +└", "", "", "", - "◆ foo -│ -│ Search: /tmp/█ -│ ○ /tmp/bar -│ ○ /tmp/foo -│ ○ /tmp/hello -│ ● /tmp/root.zip -│ ↑/↓ to select • Enter: confirm • Type: to search -└", + "◆ foo +│ +Search: /tmp/█ +/tmp/bar +/tmp/foo +/tmp/hello +● /tmp/root.zip +↑/↓ to select • Enter: confirm • Type: to search +└", "", "", "", - "│ Search: /tmp/b█ -│ ● /tmp/bar -│ ↑/↓ to select • Enter: confirm • Type: to search -└", + "Search: /tmp/b█ +● /tmp/bar +↑/↓ to select • Enter: confirm • Type: to search +└", "", "", "", - "◇ foo -│ /tmp/bar", + "◇ foo +/tmp/bar", " ", "", diff --git a/packages/prompts/test/__snapshots__/progress-bar.test.ts.snap b/packages/prompts/test/__snapshots__/progress-bar.test.ts.snap index 8296f517..c1239daa 100644 --- a/packages/prompts/test/__snapshots__/progress-bar.test.ts.snap +++ b/packages/prompts/test/__snapshots__/progress-bar.test.ts.snap @@ -3,21 +3,21 @@ exports[`prompts - progress (isCI = false) > message > sets message for next frame 1`] = ` [ "", - "│ + "│ ", - "◒ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ", + "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ", "", "", - "◐ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ foo", + "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ foo", ] `; exports[`prompts - progress (isCI = false) > process exit handling > prioritizes cancel option over global setting 1`] = ` [ "", - "│ + "│ ", - "■ Progress cancel message + "■ Progress cancel message ", "", ] @@ -26,9 +26,9 @@ exports[`prompts - progress (isCI = false) > process exit handling > prioritizes exports[`prompts - progress (isCI = false) > process exit handling > prioritizes error option over global setting 1`] = ` [ "", - "│ + "│ ", - "▲ Progress error message + "▲ Progress error message ", "", ] @@ -37,9 +37,9 @@ exports[`prompts - progress (isCI = false) > process exit handling > prioritizes exports[`prompts - progress (isCI = false) > process exit handling > uses custom cancel message when provided directly 1`] = ` [ "", - "│ + "│ ", - "■ Custom cancel message + "■ Custom cancel message ", "", ] @@ -48,9 +48,9 @@ exports[`prompts - progress (isCI = false) > process exit handling > uses custom exports[`prompts - progress (isCI = false) > process exit handling > uses custom error message when provided directly 1`] = ` [ "", - "│ + "│ ", - "▲ Custom error message + "▲ Custom error message ", "", ] @@ -59,9 +59,9 @@ exports[`prompts - progress (isCI = false) > process exit handling > uses custom exports[`prompts - progress (isCI = false) > process exit handling > uses default cancel message 1`] = ` [ "", - "│ + "│ ", - "■ Canceled + "■ Canceled ", "", ] @@ -70,9 +70,9 @@ exports[`prompts - progress (isCI = false) > process exit handling > uses defaul exports[`prompts - progress (isCI = false) > process exit handling > uses global custom cancel message from settings 1`] = ` [ "", - "│ + "│ ", - "■ Global cancel message + "■ Global cancel message ", "", ] @@ -81,9 +81,9 @@ exports[`prompts - progress (isCI = false) > process exit handling > uses global exports[`prompts - progress (isCI = false) > process exit handling > uses global custom error message from settings 1`] = ` [ "", - "│ + "│ ", - "▲ Global error message + "▲ Global error message ", "", ] @@ -92,48 +92,48 @@ exports[`prompts - progress (isCI = false) > process exit handling > uses global exports[`prompts - progress (isCI = false) > start > renders frames at interval 1`] = ` [ "", - "│ + "│ ", - "◒ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ", + "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ", "", "", - "◐ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ", + "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ", "", "", - "◓ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ", + "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ", "", "", - "◑ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ", + "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ", ] `; exports[`prompts - progress (isCI = false) > start > renders message 1`] = ` [ "", - "│ + "│ ", - "◒ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ foo", + "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ foo", ] `; exports[`prompts - progress (isCI = false) > start > renders timer when indicator is "timer" 1`] = ` [ "", - "│ + "│ ", - "◒ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ [0s]", + "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ [0s]", ] `; exports[`prompts - progress (isCI = false) > stop > renders cancel symbol when calling cancel() 1`] = ` [ "", - "│ + "│ ", - "◒ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ", + "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ", "", "", - "■ + "■ ", "", ] @@ -142,12 +142,12 @@ exports[`prompts - progress (isCI = false) > stop > renders cancel symbol when c exports[`prompts - progress (isCI = false) > stop > renders error symbol when calling error() 1`] = ` [ "", - "│ + "│ ", - "◒ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ", + "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ", "", "", - "▲ + "▲ ", "", ] @@ -156,12 +156,12 @@ exports[`prompts - progress (isCI = false) > stop > renders error symbol when ca exports[`prompts - progress (isCI = false) > stop > renders message 1`] = ` [ "", - "│ + "│ ", - "◒ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ", + "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ", "", "", - "◇ foo + "◇ foo ", "", ] @@ -170,12 +170,12 @@ exports[`prompts - progress (isCI = false) > stop > renders message 1`] = ` exports[`prompts - progress (isCI = false) > stop > renders message when cancelling 1`] = ` [ "", - "│ + "│ ", - "◒ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ", + "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ", "", "", - "■ cancelled :-( + "■ cancelled :-( ", "", ] @@ -184,12 +184,12 @@ exports[`prompts - progress (isCI = false) > stop > renders message when cancell exports[`prompts - progress (isCI = false) > stop > renders message when erroring 1`] = ` [ "", - "│ + "│ ", - "◒ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ", + "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ", "", "", - "▲ FATAL ERROR! + "▲ FATAL ERROR! ", "", ] @@ -198,12 +198,12 @@ exports[`prompts - progress (isCI = false) > stop > renders message when errorin exports[`prompts - progress (isCI = false) > stop > renders message without removing dots 1`] = ` [ "", - "│ + "│ ", - "◒ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ", + "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ", "", "", - "◇ foo. + "◇ foo. ", "", ] @@ -212,12 +212,12 @@ exports[`prompts - progress (isCI = false) > stop > renders message without remo exports[`prompts - progress (isCI = false) > stop > renders submit symbol and stops progress 1`] = ` [ "", - "│ + "│ ", - "◒ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ", + "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ", "", "", - "◇ + "◇ ", "", ] @@ -226,21 +226,21 @@ exports[`prompts - progress (isCI = false) > stop > renders submit symbol and st exports[`prompts - progress (isCI = false) > style > renders block progressbar 1`] = ` [ "", - "│ + "│ ", - "◒ ██████████ ", + "██████████ ", "", "", - "◐ ██████████ ", + "██████████ ", "", "", - "◓ ██████████ ", + "██████████ ", "", "", - "◑ ██████████ ", + "██████████ ", "", "", - "◇ + "◇ ", "", ] @@ -249,21 +249,21 @@ exports[`prompts - progress (isCI = false) > style > renders block progressbar 1 exports[`prompts - progress (isCI = false) > style > renders heavy progressbar 1`] = ` [ "", - "│ + "│ ", - "◒ ━━━━━━━━━━ ", + "━━━━━━━━━━ ", "", "", - "◐ ━━━━━━━━━━ ", + "━━━━━━━━━━ ", "", "", - "◓ ━━━━━━━━━━ ", + "━━━━━━━━━━ ", "", "", - "◑ ━━━━━━━━━━ ", + "━━━━━━━━━━ ", "", "", - "◇ + "◇ ", "", ] @@ -272,21 +272,21 @@ exports[`prompts - progress (isCI = false) > style > renders heavy progressbar 1 exports[`prompts - progress (isCI = false) > style > renders light progressbar 1`] = ` [ "", - "│ + "│ ", - "◒ ────────── ", + "────────── ", "", "", - "◐ ────────── ", + "────────── ", "", "", - "◓ ────────── ", + "────────── ", "", "", - "◑ ────────── ", + "────────── ", "", "", - "◇ + "◇ ", "", ] @@ -295,23 +295,23 @@ exports[`prompts - progress (isCI = false) > style > renders light progressbar 1 exports[`prompts - progress (isCI = true) > message > sets message for next frame 1`] = ` [ "", - "│ + "│ ", - "◒ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ...", + "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ...", " ", "", "", - "◐ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ foo...", + "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ foo...", ] `; exports[`prompts - progress (isCI = true) > process exit handling > prioritizes cancel option over global setting 1`] = ` [ "", - "│ + "│ ", - "■ Progress cancel message + "■ Progress cancel message ", "", ] @@ -320,9 +320,9 @@ exports[`prompts - progress (isCI = true) > process exit handling > prioritizes exports[`prompts - progress (isCI = true) > process exit handling > prioritizes error option over global setting 1`] = ` [ "", - "│ + "│ ", - "▲ Progress error message + "▲ Progress error message ", "", ] @@ -331,9 +331,9 @@ exports[`prompts - progress (isCI = true) > process exit handling > prioritizes exports[`prompts - progress (isCI = true) > process exit handling > uses custom cancel message when provided directly 1`] = ` [ "", - "│ + "│ ", - "■ Custom cancel message + "■ Custom cancel message ", "", ] @@ -342,9 +342,9 @@ exports[`prompts - progress (isCI = true) > process exit handling > uses custom exports[`prompts - progress (isCI = true) > process exit handling > uses custom error message when provided directly 1`] = ` [ "", - "│ + "│ ", - "▲ Custom error message + "▲ Custom error message ", "", ] @@ -353,9 +353,9 @@ exports[`prompts - progress (isCI = true) > process exit handling > uses custom exports[`prompts - progress (isCI = true) > process exit handling > uses default cancel message 1`] = ` [ "", - "│ + "│ ", - "■ Canceled + "■ Canceled ", "", ] @@ -364,9 +364,9 @@ exports[`prompts - progress (isCI = true) > process exit handling > uses default exports[`prompts - progress (isCI = true) > process exit handling > uses global custom cancel message from settings 1`] = ` [ "", - "│ + "│ ", - "■ Global cancel message + "■ Global cancel message ", "", ] @@ -375,9 +375,9 @@ exports[`prompts - progress (isCI = true) > process exit handling > uses global exports[`prompts - progress (isCI = true) > process exit handling > uses global custom error message from settings 1`] = ` [ "", - "│ + "│ ", - "▲ Global error message + "▲ Global error message ", "", ] @@ -386,41 +386,41 @@ exports[`prompts - progress (isCI = true) > process exit handling > uses global exports[`prompts - progress (isCI = true) > start > renders frames at interval 1`] = ` [ "", - "│ + "│ ", - "◒ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ...", + "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ...", ] `; exports[`prompts - progress (isCI = true) > start > renders message 1`] = ` [ "", - "│ + "│ ", - "◒ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ foo...", + "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ foo...", ] `; exports[`prompts - progress (isCI = true) > start > renders timer when indicator is "timer" 1`] = ` [ "", - "│ + "│ ", - "◒ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ...", + "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ...", ] `; exports[`prompts - progress (isCI = true) > stop > renders cancel symbol when calling cancel() 1`] = ` [ "", - "│ + "│ ", - "◒ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ...", + "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ...", " ", "", "", - "■ + "■ ", "", ] @@ -429,14 +429,14 @@ exports[`prompts - progress (isCI = true) > stop > renders cancel symbol when ca exports[`prompts - progress (isCI = true) > stop > renders error symbol when calling error() 1`] = ` [ "", - "│ + "│ ", - "◒ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ...", + "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ...", " ", "", "", - "▲ + "▲ ", "", ] @@ -445,14 +445,14 @@ exports[`prompts - progress (isCI = true) > stop > renders error symbol when cal exports[`prompts - progress (isCI = true) > stop > renders message 1`] = ` [ "", - "│ + "│ ", - "◒ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ...", + "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ...", " ", "", "", - "◇ foo + "◇ foo ", "", ] @@ -461,14 +461,14 @@ exports[`prompts - progress (isCI = true) > stop > renders message 1`] = ` exports[`prompts - progress (isCI = true) > stop > renders message when cancelling 1`] = ` [ "", - "│ + "│ ", - "◒ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ...", + "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ...", " ", "", "", - "■ cancelled :-( + "■ cancelled :-( ", "", ] @@ -477,14 +477,14 @@ exports[`prompts - progress (isCI = true) > stop > renders message when cancelli exports[`prompts - progress (isCI = true) > stop > renders message when erroring 1`] = ` [ "", - "│ + "│ ", - "◒ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ...", + "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ...", " ", "", "", - "▲ FATAL ERROR! + "▲ FATAL ERROR! ", "", ] @@ -493,14 +493,14 @@ exports[`prompts - progress (isCI = true) > stop > renders message when erroring exports[`prompts - progress (isCI = true) > stop > renders message without removing dots 1`] = ` [ "", - "│ + "│ ", - "◒ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ...", + "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ...", " ", "", "", - "◇ foo. + "◇ foo. ", "", ] @@ -509,14 +509,14 @@ exports[`prompts - progress (isCI = true) > stop > renders message without remov exports[`prompts - progress (isCI = true) > stop > renders submit symbol and stops progress 1`] = ` [ "", - "│ + "│ ", - "◒ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ...", + "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ...", " ", "", "", - "◇ + "◇ ", "", ] @@ -525,19 +525,19 @@ exports[`prompts - progress (isCI = true) > stop > renders submit symbol and sto exports[`prompts - progress (isCI = true) > style > renders block progressbar 1`] = ` [ "", - "│ + "│ ", - "◒ ██████████ ...", + "██████████ ...", " ", "", "", - "◐ ██████████ ...", + "██████████ ...", " ", "", "", - "◇ + "◇ ", "", ] @@ -546,19 +546,19 @@ exports[`prompts - progress (isCI = true) > style > renders block progressbar 1` exports[`prompts - progress (isCI = true) > style > renders heavy progressbar 1`] = ` [ "", - "│ + "│ ", - "◒ ━━━━━━━━━━ ...", + "━━━━━━━━━━ ...", " ", "", "", - "◐ ━━━━━━━━━━ ...", + "━━━━━━━━━━ ...", " ", "", "", - "◇ + "◇ ", "", ] @@ -567,19 +567,19 @@ exports[`prompts - progress (isCI = true) > style > renders heavy progressbar 1` exports[`prompts - progress (isCI = true) > style > renders light progressbar 1`] = ` [ "", - "│ + "│ ", - "◒ ────────── ...", + "────────── ...", " ", "", "", - "◐ ────────── ...", + "────────── ...", " ", "", "", - "◇ + "◇ ", "", ] diff --git a/packages/prompts/test/__snapshots__/select-key.test.ts.snap b/packages/prompts/test/__snapshots__/select-key.test.ts.snap index fe08336f..6922d6c6 100644 --- a/packages/prompts/test/__snapshots__/select-key.test.ts.snap +++ b/packages/prompts/test/__snapshots__/select-key.test.ts.snap @@ -3,18 +3,18 @@ exports[`text (isCI = false) > can cancel by pressing escape 1`] = ` [ "", - "│ -◆ foo -│  a  Option A -│  b  Option B -└ + "│ +◆ foo + a Option A + b  Option B +└ ", "", "", "", - "■ foo -│ Option A -│", + "■ foo +│ Option A +│", " ", "", @@ -24,19 +24,19 @@ exports[`text (isCI = false) > can cancel by pressing escape 1`] = ` exports[`text (isCI = false) > caseSensitive: true makes input case-sensitive 1`] = ` [ "", - "│ -◆ foo -│  a  Option a -│  A  Option A -│  b  Option B -└ + "│ +◆ foo + a Option a + A  Option A + b  Option B +└ ", "", "", "", "", - "◇ foo -│ Option A", + "◇ foo +Option A", " ", ] @@ -45,18 +45,18 @@ exports[`text (isCI = false) > caseSensitive: true makes input case-sensitive 1` exports[`text (isCI = false) > caseSensitive: true makes options case-sensitive 1`] = ` [ "", - "│ -◆ foo -│  A  Option A -│  b  Option B -└ + "│ +◆ foo + A Option A + b  Option B +└ ", "", "", "", - "■ foo -│ Option A -│", + "■ foo +│ Option A +│", " ", "", @@ -66,16 +66,16 @@ exports[`text (isCI = false) > caseSensitive: true makes options case-sensitive exports[`text (isCI = false) > global withGuide: false removes guide 1`] = ` [ "", - "◆ foo - a  Option A - b  Option B + "◆ foo + a Option A + b  Option B ", "", "", "", - "◇ foo -Option A", + "◇ foo +Option A", " ", ] @@ -84,18 +84,18 @@ exports[`text (isCI = false) > global withGuide: false removes guide 1`] = ` exports[`text (isCI = false) > input is case-insensitive by default 1`] = ` [ "", - "│ -◆ foo -│  a  Option A -│  b  Option B -└ + "│ +◆ foo + a Option A + b  Option B +└ ", "", "", "", "", - "◇ foo -│ Option A", + "◇ foo +Option A", " ", ] @@ -104,40 +104,40 @@ exports[`text (isCI = false) > input is case-insensitive by default 1`] = ` exports[`text (isCI = false) > long cancelled labels are wrapped correctly 1`] = ` [ "", - "│ -◆ Select an option: -│  a  This is a somewhat long -│ label This is a somewhat -│ long label This is a -│ somewhat long label This is -│ a somewhat long label This -│ is a somewhat long label -│ This is a somewhat long -│ label This is a somewhat -│ long label This is a -│ somewhat long label This is -│ a somewhat long label This -│ is a somewhat long label -│  b  Short label -└ + "│ +◆ Select an option: + a This is a somewhat long +│ label This is a somewhat +│ long label This is a +│ somewhat long label This is +│ a somewhat long label This +│ is a somewhat long label +│ This is a somewhat long +│ label This is a somewhat +│ long label This is a +│ somewhat long label This is +│ a somewhat long label This +│ is a somewhat long label + b  Short label +└ ", "", "", "", - "■ Select an option: -│ This is a somewhat long  -│ label This is a somewhat  -│ long label This is a  -│ somewhat long label This is -│  a somewhat long label This -│  is a somewhat long label  -│ This is a somewhat long  -│ label This is a somewhat  -│ long label This is a  -│ somewhat long label This is -│  a somewhat long label This -│  is a somewhat long label -│", + "■ Select an option: +│ This is a somewhat long +label This is a somewhat +long label This is a +somewhat long label This is + a somewhat long label This + is a somewhat long label +This is a somewhat long +label This is a somewhat +long label This is a +somewhat long label This is + a somewhat long label This + is a somewhat long label +│", " ", "", @@ -147,40 +147,40 @@ exports[`text (isCI = false) > long cancelled labels are wrapped correctly 1`] = exports[`text (isCI = false) > long option labels are wrapped correctly 1`] = ` [ "", - "│ -◆ Select an option: -│  a  This is a somewhat long -│ label This is a somewhat -│ long label This is a -│ somewhat long label This is -│ a somewhat long label This -│ is a somewhat long label -│ This is a somewhat long -│ label This is a somewhat -│ long label This is a -│ somewhat long label This is -│ a somewhat long label This -│ is a somewhat long label -│  b  Short label -└ + "│ +◆ Select an option: + a This is a somewhat long +│ label This is a somewhat +│ long label This is a +│ somewhat long label This is +│ a somewhat long label This +│ is a somewhat long label +│ This is a somewhat long +│ label This is a somewhat +│ long label This is a +│ somewhat long label This is +│ a somewhat long label This +│ is a somewhat long label + b  Short label +└ ", "", "", "", "", - "◇ Select an option: -│ This is a somewhat long  -│ label This is a somewhat  -│ long label This is a  -│ somewhat long label This is -│  a somewhat long label This -│  is a somewhat long label  -│ This is a somewhat long  -│ label This is a somewhat  -│ long label This is a  -│ somewhat long label This is -│  a somewhat long label This -│  is a somewhat long label", + "◇ Select an option: +This is a somewhat long +label This is a somewhat +long label This is a +somewhat long label This is + a somewhat long label This + is a somewhat long label +This is a somewhat long +label This is a somewhat +long label This is a +somewhat long label This is + a somewhat long label This + is a somewhat long label", " ", ] @@ -189,40 +189,40 @@ exports[`text (isCI = false) > long option labels are wrapped correctly 1`] = ` exports[`text (isCI = false) > long submitted labels are wrapped correctly 1`] = ` [ "", - "│ -◆ Select an option: -│  a  This is a somewhat long -│ label This is a somewhat -│ long label This is a -│ somewhat long label This is -│ a somewhat long label This -│ is a somewhat long label -│ This is a somewhat long -│ label This is a somewhat -│ long label This is a -│ somewhat long label This is -│ a somewhat long label This -│ is a somewhat long label -│  b  Short label -└ + "│ +◆ Select an option: + a This is a somewhat long +│ label This is a somewhat +│ long label This is a +│ somewhat long label This is +│ a somewhat long label This +│ is a somewhat long label +│ This is a somewhat long +│ label This is a somewhat +│ long label This is a +│ somewhat long label This is +│ a somewhat long label This +│ is a somewhat long label + b  Short label +└ ", "", "", "", "", - "◇ Select an option: -│ This is a somewhat long  -│ label This is a somewhat  -│ long label This is a  -│ somewhat long label This is -│  a somewhat long label This -│  is a somewhat long label  -│ This is a somewhat long  -│ label This is a somewhat  -│ long label This is a  -│ somewhat long label This is -│  a somewhat long label This -│  is a somewhat long label", + "◇ Select an option: +This is a somewhat long +label This is a somewhat +long label This is a +somewhat long label This is + a somewhat long label This + is a somewhat long label +This is a somewhat long +label This is a somewhat +long label This is a +somewhat long label This is + a somewhat long label This + is a somewhat long label", " ", ] @@ -231,18 +231,18 @@ exports[`text (isCI = false) > long submitted labels are wrapped correctly 1`] = exports[`text (isCI = false) > options are case-insensitive by default 1`] = ` [ "", - "│ -◆ foo -│  A  Option A -│  b  Option B -└ + "│ +◆ foo + A Option A + b  Option B +└ ", "", "", "", "", - "◇ foo -│ Option A", + "◇ foo +Option A", " ", ] @@ -251,17 +251,17 @@ exports[`text (isCI = false) > options are case-insensitive by default 1`] = ` exports[`text (isCI = false) > renders message with options 1`] = ` [ "", - "│ -◆ foo -│  a  Option A -│  b  Option B -└ + "│ +◆ foo + a Option A + b  Option B +└ ", "", "", "", - "◇ foo -│ Option A", + "◇ foo +Option A", " ", "", @@ -271,18 +271,18 @@ exports[`text (isCI = false) > renders message with options 1`] = ` exports[`text (isCI = false) > selects option by keypress 1`] = ` [ "", - "│ -◆ foo -│  a  Option A -│  b  Option B -└ + "│ +◆ foo + a Option A + b  Option B +└ ", "", "", "", "", - "◇ foo -│ Option B", + "◇ foo +Option B", " ", ] @@ -291,16 +291,16 @@ exports[`text (isCI = false) > selects option by keypress 1`] = ` exports[`text (isCI = false) > withGuide: false removes guide 1`] = ` [ "", - "◆ foo - a  Option A - b  Option B + "◆ foo + a Option A + b  Option B ", "", "", "", - "◇ foo -Option A", + "◇ foo +Option A", " ", ] @@ -309,18 +309,18 @@ exports[`text (isCI = false) > withGuide: false removes guide 1`] = ` exports[`text (isCI = true) > can cancel by pressing escape 1`] = ` [ "", - "│ -◆ foo -│  a  Option A -│  b  Option B -└ + "│ +◆ foo + a Option A + b  Option B +└ ", "", "", "", - "■ foo -│ Option A -│", + "■ foo +│ Option A +│", " ", "", @@ -330,19 +330,19 @@ exports[`text (isCI = true) > can cancel by pressing escape 1`] = ` exports[`text (isCI = true) > caseSensitive: true makes input case-sensitive 1`] = ` [ "", - "│ -◆ foo -│  a  Option a -│  A  Option A -│  b  Option B -└ + "│ +◆ foo + a Option a + A  Option A + b  Option B +└ ", "", "", "", "", - "◇ foo -│ Option A", + "◇ foo +Option A", " ", ] @@ -351,18 +351,18 @@ exports[`text (isCI = true) > caseSensitive: true makes input case-sensitive 1`] exports[`text (isCI = true) > caseSensitive: true makes options case-sensitive 1`] = ` [ "", - "│ -◆ foo -│  A  Option A -│  b  Option B -└ + "│ +◆ foo + A Option A + b  Option B +└ ", "", "", "", - "■ foo -│ Option A -│", + "■ foo +│ Option A +│", " ", "", @@ -372,16 +372,16 @@ exports[`text (isCI = true) > caseSensitive: true makes options case-sensitive 1 exports[`text (isCI = true) > global withGuide: false removes guide 1`] = ` [ "", - "◆ foo - a  Option A - b  Option B + "◆ foo + a Option A + b  Option B ", "", "", "", - "◇ foo -Option A", + "◇ foo +Option A", " ", ] @@ -390,18 +390,18 @@ exports[`text (isCI = true) > global withGuide: false removes guide 1`] = ` exports[`text (isCI = true) > input is case-insensitive by default 1`] = ` [ "", - "│ -◆ foo -│  a  Option A -│  b  Option B -└ + "│ +◆ foo + a Option A + b  Option B +└ ", "", "", "", "", - "◇ foo -│ Option A", + "◇ foo +Option A", " ", ] @@ -410,40 +410,40 @@ exports[`text (isCI = true) > input is case-insensitive by default 1`] = ` exports[`text (isCI = true) > long cancelled labels are wrapped correctly 1`] = ` [ "", - "│ -◆ Select an option: -│  a  This is a somewhat long -│ label This is a somewhat -│ long label This is a -│ somewhat long label This is -│ a somewhat long label This -│ is a somewhat long label -│ This is a somewhat long -│ label This is a somewhat -│ long label This is a -│ somewhat long label This is -│ a somewhat long label This -│ is a somewhat long label -│  b  Short label -└ + "│ +◆ Select an option: + a This is a somewhat long +│ label This is a somewhat +│ long label This is a +│ somewhat long label This is +│ a somewhat long label This +│ is a somewhat long label +│ This is a somewhat long +│ label This is a somewhat +│ long label This is a +│ somewhat long label This is +│ a somewhat long label This +│ is a somewhat long label + b  Short label +└ ", "", "", "", - "■ Select an option: -│ This is a somewhat long  -│ label This is a somewhat  -│ long label This is a  -│ somewhat long label This is -│  a somewhat long label This -│  is a somewhat long label  -│ This is a somewhat long  -│ label This is a somewhat  -│ long label This is a  -│ somewhat long label This is -│  a somewhat long label This -│  is a somewhat long label -│", + "■ Select an option: +│ This is a somewhat long +label This is a somewhat +long label This is a +somewhat long label This is + a somewhat long label This + is a somewhat long label +This is a somewhat long +label This is a somewhat +long label This is a +somewhat long label This is + a somewhat long label This + is a somewhat long label +│", " ", "", @@ -453,40 +453,40 @@ exports[`text (isCI = true) > long cancelled labels are wrapped correctly 1`] = exports[`text (isCI = true) > long option labels are wrapped correctly 1`] = ` [ "", - "│ -◆ Select an option: -│  a  This is a somewhat long -│ label This is a somewhat -│ long label This is a -│ somewhat long label This is -│ a somewhat long label This -│ is a somewhat long label -│ This is a somewhat long -│ label This is a somewhat -│ long label This is a -│ somewhat long label This is -│ a somewhat long label This -│ is a somewhat long label -│  b  Short label -└ + "│ +◆ Select an option: + a This is a somewhat long +│ label This is a somewhat +│ long label This is a +│ somewhat long label This is +│ a somewhat long label This +│ is a somewhat long label +│ This is a somewhat long +│ label This is a somewhat +│ long label This is a +│ somewhat long label This is +│ a somewhat long label This +│ is a somewhat long label + b  Short label +└ ", "", "", "", "", - "◇ Select an option: -│ This is a somewhat long  -│ label This is a somewhat  -│ long label This is a  -│ somewhat long label This is -│  a somewhat long label This -│  is a somewhat long label  -│ This is a somewhat long  -│ label This is a somewhat  -│ long label This is a  -│ somewhat long label This is -│  a somewhat long label This -│  is a somewhat long label", + "◇ Select an option: +This is a somewhat long +label This is a somewhat +long label This is a +somewhat long label This is + a somewhat long label This + is a somewhat long label +This is a somewhat long +label This is a somewhat +long label This is a +somewhat long label This is + a somewhat long label This + is a somewhat long label", " ", ] @@ -495,40 +495,40 @@ exports[`text (isCI = true) > long option labels are wrapped correctly 1`] = ` exports[`text (isCI = true) > long submitted labels are wrapped correctly 1`] = ` [ "", - "│ -◆ Select an option: -│  a  This is a somewhat long -│ label This is a somewhat -│ long label This is a -│ somewhat long label This is -│ a somewhat long label This -│ is a somewhat long label -│ This is a somewhat long -│ label This is a somewhat -│ long label This is a -│ somewhat long label This is -│ a somewhat long label This -│ is a somewhat long label -│  b  Short label -└ + "│ +◆ Select an option: + a This is a somewhat long +│ label This is a somewhat +│ long label This is a +│ somewhat long label This is +│ a somewhat long label This +│ is a somewhat long label +│ This is a somewhat long +│ label This is a somewhat +│ long label This is a +│ somewhat long label This is +│ a somewhat long label This +│ is a somewhat long label + b  Short label +└ ", "", "", "", "", - "◇ Select an option: -│ This is a somewhat long  -│ label This is a somewhat  -│ long label This is a  -│ somewhat long label This is -│  a somewhat long label This -│  is a somewhat long label  -│ This is a somewhat long  -│ label This is a somewhat  -│ long label This is a  -│ somewhat long label This is -│  a somewhat long label This -│  is a somewhat long label", + "◇ Select an option: +This is a somewhat long +label This is a somewhat +long label This is a +somewhat long label This is + a somewhat long label This + is a somewhat long label +This is a somewhat long +label This is a somewhat +long label This is a +somewhat long label This is + a somewhat long label This + is a somewhat long label", " ", ] @@ -537,18 +537,18 @@ exports[`text (isCI = true) > long submitted labels are wrapped correctly 1`] = exports[`text (isCI = true) > options are case-insensitive by default 1`] = ` [ "", - "│ -◆ foo -│  A  Option A -│  b  Option B -└ + "│ +◆ foo + A Option A + b  Option B +└ ", "", "", "", "", - "◇ foo -│ Option A", + "◇ foo +Option A", " ", ] @@ -557,17 +557,17 @@ exports[`text (isCI = true) > options are case-insensitive by default 1`] = ` exports[`text (isCI = true) > renders message with options 1`] = ` [ "", - "│ -◆ foo -│  a  Option A -│  b  Option B -└ + "│ +◆ foo + a Option A + b  Option B +└ ", "", "", "", - "◇ foo -│ Option A", + "◇ foo +Option A", " ", "", @@ -577,18 +577,18 @@ exports[`text (isCI = true) > renders message with options 1`] = ` exports[`text (isCI = true) > selects option by keypress 1`] = ` [ "", - "│ -◆ foo -│  a  Option A -│  b  Option B -└ + "│ +◆ foo + a Option A + b  Option B +└ ", "", "", "", "", - "◇ foo -│ Option B", + "◇ foo +Option B", " ", ] @@ -597,16 +597,16 @@ exports[`text (isCI = true) > selects option by keypress 1`] = ` exports[`text (isCI = true) > withGuide: false removes guide 1`] = ` [ "", - "◆ foo - a  Option A - b  Option B + "◆ foo + a Option A + b  Option B ", "", "", "", - "◇ foo -Option A", + "◇ foo +Option A", " ", ] diff --git a/packages/prompts/test/__snapshots__/select.test.ts.snap b/packages/prompts/test/__snapshots__/select.test.ts.snap index 4d046e4d..636bb748 100644 --- a/packages/prompts/test/__snapshots__/select.test.ts.snap +++ b/packages/prompts/test/__snapshots__/select.test.ts.snap @@ -3,11 +3,11 @@ exports[`select (isCI = false) > can be aborted by a signal 1`] = ` [ "", - "│ -◆ foo -│ ● opt0 -│ ○ opt1 -└ + "│ +◆ foo +● opt0 +opt1 +└ ", " ", @@ -18,18 +18,18 @@ exports[`select (isCI = false) > can be aborted by a signal 1`] = ` exports[`select (isCI = false) > can cancel 1`] = ` [ "", - "│ -◆ foo -│ ● opt0 -│ ○ opt1 -└ + "│ +◆ foo +● opt0 +opt1 +└ ", "", "", "", - "■ foo -│ opt0 -│", + "■ foo +│ opt0 +│", " ", "", @@ -39,59 +39,59 @@ exports[`select (isCI = false) > can cancel 1`] = ` exports[`select (isCI = false) > correctly limits options when message wraps to multiple lines 1`] = ` [ "", - "│ -◆ This is a very -│ long message that -│ will wrap to -│ multiple lines -│ ● Option 0 -│ ○ Option 1 -│ ○ Option 2 -│ ... -└ + "│ +◆ This is a very +│ long message that +│ will wrap to +│ multiple lines +● Option 0 +Option 1 +Option 2 +... +└ ", "", "", "", - "│ ○ Option 0 -│ ● Option 1 -│ ○ Option 2 -│ ... -└ + "Option 0 +● Option 1 +Option 2 +... +└ ", "", "", "", - "│ ○ Option 1 -│ ● Option 2 -│ ... -└ + "Option 1 +● Option 2 +... +└ ", "", "", "", - "│ ... -│ ● Option 3 -│ ○ Option 4 -│ ... -└ + "... +● Option 3 +Option 4 +... +└ ", "", "", "", - "│ ● Option 4 -│ ○ Option 5 -│ ... -└ + "● Option 4 +Option 5 +... +└ ", "", "", "", - "◇ This is a very -│ long message that -│ will wrap to -│ multiple lines -│ Option 4", + "◇ This is a very +│ long message that +│ will wrap to +│ multiple lines +Option 4", " ", "", @@ -101,53 +101,53 @@ exports[`select (isCI = false) > correctly limits options when message wraps to exports[`select (isCI = false) > correctly limits options with explicit multiline message 1`] = ` [ "", - "│ -◆ Choose an option: -│ Line 2 of the message -│ Line 3 of the message -│ ● Option 0 -│ ○ Option 1 -│ ○ Option 2 -│ ○ Option 3 -│ ... -└ + "│ +◆ Choose an option: +│ Line 2 of the message +│ Line 3 of the message +● Option 0 +Option 1 +Option 2 +Option 3 +... +└ ", "", "", "", - "│ ○ Option 0 -│ ● Option 1 -│ ○ Option 2 -│ ○ Option 3 -│ ... -└ + "Option 0 +● Option 1 +Option 2 +Option 3 +... +└ ", "", "", "", - "│ ○ Option 1 -│ ● Option 2 -│ ○ Option 3 -│ ... -└ + "Option 1 +● Option 2 +Option 3 +... +└ ", "", "", "", - "│ ... -│ ○ Option 2 -│ ● Option 3 -│ ○ Option 4 -│ ... -└ + "... +Option 2 +● Option 3 +Option 4 +... +└ ", "", "", "", - "◇ Choose an option: -│ Line 2 of the message -│ Line 3 of the message -│ Option 3", + "◇ Choose an option: +│ Line 2 of the message +│ Line 3 of the message +Option 3", " ", "", @@ -157,24 +157,24 @@ exports[`select (isCI = false) > correctly limits options with explicit multilin exports[`select (isCI = false) > down arrow selects next option 1`] = ` [ "", - "│ -◆ foo -│ ● opt0 -│ ○ opt1 -└ + "│ +◆ foo +● opt0 +opt1 +└ ", "", "", "", - "│ ○ opt0 -│ ● opt1 -└ + "opt0 +● opt1 +└ ", "", "", "", - "◇ foo -│ opt1", + "◇ foo +opt1", " ", "", @@ -184,15 +184,15 @@ exports[`select (isCI = false) > down arrow selects next option 1`] = ` exports[`select (isCI = false) > global withGuide: false removes guide 1`] = ` [ "", - "◆ foo -● opt0 -○ opt1 + "◆ foo +● opt0 +opt1 ", "", "", - "◇ foo -opt0", + "◇ foo +opt0", " ", "", @@ -202,35 +202,35 @@ exports[`select (isCI = false) > global withGuide: false removes guide 1`] = ` exports[`select (isCI = false) > handles mixed size re-renders 1`] = ` [ "", - "│ -◆ Whatever -│ ● Long Option -│ Long Option -│ Long Option -│ Long Option -│ Long Option -│ Long Option -│ Long Option -│ Long Option -│ ... -└ + "│ +◆ Whatever +● Long Option +│ Long Option +│ Long Option +│ Long Option +│ Long Option +│ Long Option +│ Long Option +│ Long Option +... +└ ", "", "", - "│ -◆ Whatever -│ ... -│ ○ Option 0 -│ ○ Option 1 -│ ○ Option 2 -│ ● Option 3 -└ + "│ +◆ Whatever +... +Option 0 +Option 1 +Option 2 +● Option 3 +└ ", "", "", "", - "◇ Whatever -│ Option 3", + "◇ Whatever +Option 3", " ", "", @@ -240,18 +240,18 @@ exports[`select (isCI = false) > handles mixed size re-renders 1`] = ` exports[`select (isCI = false) > renders disabled options 1`] = ` [ "", - "│ -◆ foo -│ ○ Option 0 -│ ● Option 1 -│ ○ Option 2 (Hint 2) -└ + "│ +◆ foo +Option 0 +● Option 1 +Option 2 (Hint 2) +└ ", "", "", "", - "◇ foo -│ Option 1", + "◇ foo +Option 1", " ", "", @@ -261,26 +261,26 @@ exports[`select (isCI = false) > renders disabled options 1`] = ` exports[`select (isCI = false) > renders multi-line option labels 1`] = ` [ "", - "│ -◆ foo -│ ● Option 0 -│ with multiple lines -│ ○ Option 1 -└ + "│ +◆ foo +● Option 0 +│ with multiple lines +Option 1 +└ ", "", "", "", - "│ ○ Option 0 -│ with multiple lines -│ ● Option 1 -└ + "Option 0 +with multiple lines +● Option 1 +└ ", "", "", "", - "◇ foo -│ Option 1", + "◇ foo +Option 1", " ", "", @@ -290,17 +290,17 @@ exports[`select (isCI = false) > renders multi-line option labels 1`] = ` exports[`select (isCI = false) > renders option hints 1`] = ` [ "", - "│ -◆ foo -│ ● opt0 (Hint 0) -│ ○ opt1 -└ + "│ +◆ foo +● opt0 (Hint 0) +opt1 +└ ", "", "", "", - "◇ foo -│ opt0", + "◇ foo +opt0", " ", "", @@ -310,17 +310,17 @@ exports[`select (isCI = false) > renders option hints 1`] = ` exports[`select (isCI = false) > renders option labels 1`] = ` [ "", - "│ -◆ foo -│ ● Option 0 -│ ○ Option 1 -└ + "│ +◆ foo +● Option 0 +Option 1 +└ ", "", "", "", - "◇ foo -│ Option 0", + "◇ foo +Option 0", " ", "", @@ -330,17 +330,17 @@ exports[`select (isCI = false) > renders option labels 1`] = ` exports[`select (isCI = false) > renders options and message 1`] = ` [ "", - "│ -◆ foo -│ ● opt0 -│ ○ opt1 -└ + "│ +◆ foo +● opt0 +opt1 +└ ", "", "", "", - "◇ foo -│ opt0", + "◇ foo +opt0", " ", "", @@ -350,31 +350,31 @@ exports[`select (isCI = false) > renders options and message 1`] = ` exports[`select (isCI = false) > up arrow selects previous option 1`] = ` [ "", - "│ -◆ foo -│ ● opt0 -│ ○ opt1 -└ + "│ +◆ foo +● opt0 +opt1 +└ ", "", "", "", - "│ ○ opt0 -│ ● opt1 -└ + "opt0 +● opt1 +└ ", "", "", "", - "│ ● opt0 -│ ○ opt1 -└ + "● opt0 +opt1 +└ ", "", "", "", - "◇ foo -│ opt0", + "◇ foo +opt0", " ", "", @@ -384,15 +384,15 @@ exports[`select (isCI = false) > up arrow selects previous option 1`] = ` exports[`select (isCI = false) > withGuide: false removes guide 1`] = ` [ "", - "◆ foo -● opt0 -○ opt1 + "◆ foo +● opt0 +opt1 ", "", "", - "◇ foo -opt0", + "◇ foo +opt0", " ", "", @@ -402,26 +402,26 @@ exports[`select (isCI = false) > withGuide: false removes guide 1`] = ` exports[`select (isCI = false) > wraps long cancelled message 1`] = ` [ "", - "│ -◆ foo -│ ● foo foo foo foo foo foo -│ foo foo foo foo foo foo foo -│ foo foo foo foo foo foo -│ foo foo foo foo foo foo foo -│ foo foo foo foo -│ ○ Option 1 -└ + "│ +◆ foo +● foo foo foo foo foo foo +│ foo foo foo foo foo foo foo +│ foo foo foo foo foo foo +│ foo foo foo foo foo foo foo +│ foo foo foo foo +Option 1 +└ ", "", "", "", - "■ foo -│ foo foo foo foo foo foo foo -│  foo foo foo foo foo foo  -│ foo foo foo foo foo foo foo -│  foo foo foo foo foo foo  -│ foo foo foo foo -│", + "■ foo +│ foo foo foo foo foo foo foo + foo foo foo foo foo foo +foo foo foo foo foo foo foo + foo foo foo foo foo foo +foo foo foo foo +│", " ", "", @@ -431,21 +431,21 @@ exports[`select (isCI = false) > wraps long cancelled message 1`] = ` exports[`select (isCI = false) > wraps long messages 1`] = ` [ "", - "│ -◆ foo foo foo foo foo foo foo -│ foo foo foo foo foo foo -│ foo foo foo foo foo foo foo -│ ● opt0 -│ ○ opt1 -└ + "│ +◆ foo foo foo foo foo foo foo +│ foo foo foo foo foo foo +│ foo foo foo foo foo foo foo +● opt0 +opt1 +└ ", "", "", "", - "◇ foo foo foo foo foo foo foo -│ foo foo foo foo foo foo -│ foo foo foo foo foo foo foo -│ opt0", + "◇ foo foo foo foo foo foo foo +│ foo foo foo foo foo foo +│ foo foo foo foo foo foo foo +opt0", " ", "", @@ -455,25 +455,25 @@ exports[`select (isCI = false) > wraps long messages 1`] = ` exports[`select (isCI = false) > wraps long results 1`] = ` [ "", - "│ -◆ foo -│ ● foo foo foo foo foo foo -│ foo foo foo foo foo foo foo -│ foo foo foo foo foo foo -│ foo foo foo foo foo foo foo -│ foo foo foo foo -│ ○ Option 1 -└ + "│ +◆ foo +● foo foo foo foo foo foo +│ foo foo foo foo foo foo foo +│ foo foo foo foo foo foo +│ foo foo foo foo foo foo foo +│ foo foo foo foo +Option 1 +└ ", "", "", "", - "◇ foo -│ foo foo foo foo foo foo foo -│  foo foo foo foo foo foo  -│ foo foo foo foo foo foo foo -│  foo foo foo foo foo foo  -│ foo foo foo foo", + "◇ foo +foo foo foo foo foo foo foo + foo foo foo foo foo foo +foo foo foo foo foo foo foo + foo foo foo foo foo foo +foo foo foo foo", " ", "", @@ -483,11 +483,11 @@ exports[`select (isCI = false) > wraps long results 1`] = ` exports[`select (isCI = true) > can be aborted by a signal 1`] = ` [ "", - "│ -◆ foo -│ ● opt0 -│ ○ opt1 -└ + "│ +◆ foo +● opt0 +opt1 +└ ", " ", @@ -498,18 +498,18 @@ exports[`select (isCI = true) > can be aborted by a signal 1`] = ` exports[`select (isCI = true) > can cancel 1`] = ` [ "", - "│ -◆ foo -│ ● opt0 -│ ○ opt1 -└ + "│ +◆ foo +● opt0 +opt1 +└ ", "", "", "", - "■ foo -│ opt0 -│", + "■ foo +│ opt0 +│", " ", "", @@ -519,59 +519,59 @@ exports[`select (isCI = true) > can cancel 1`] = ` exports[`select (isCI = true) > correctly limits options when message wraps to multiple lines 1`] = ` [ "", - "│ -◆ This is a very -│ long message that -│ will wrap to -│ multiple lines -│ ● Option 0 -│ ○ Option 1 -│ ○ Option 2 -│ ... -└ + "│ +◆ This is a very +│ long message that +│ will wrap to +│ multiple lines +● Option 0 +Option 1 +Option 2 +... +└ ", "", "", "", - "│ ○ Option 0 -│ ● Option 1 -│ ○ Option 2 -│ ... -└ + "Option 0 +● Option 1 +Option 2 +... +└ ", "", "", "", - "│ ○ Option 1 -│ ● Option 2 -│ ... -└ + "Option 1 +● Option 2 +... +└ ", "", "", "", - "│ ... -│ ● Option 3 -│ ○ Option 4 -│ ... -└ + "... +● Option 3 +Option 4 +... +└ ", "", "", "", - "│ ● Option 4 -│ ○ Option 5 -│ ... -└ + "● Option 4 +Option 5 +... +└ ", "", "", "", - "◇ This is a very -│ long message that -│ will wrap to -│ multiple lines -│ Option 4", + "◇ This is a very +│ long message that +│ will wrap to +│ multiple lines +Option 4", " ", "", @@ -581,53 +581,53 @@ exports[`select (isCI = true) > correctly limits options when message wraps to m exports[`select (isCI = true) > correctly limits options with explicit multiline message 1`] = ` [ "", - "│ -◆ Choose an option: -│ Line 2 of the message -│ Line 3 of the message -│ ● Option 0 -│ ○ Option 1 -│ ○ Option 2 -│ ○ Option 3 -│ ... -└ + "│ +◆ Choose an option: +│ Line 2 of the message +│ Line 3 of the message +● Option 0 +Option 1 +Option 2 +Option 3 +... +└ ", "", "", "", - "│ ○ Option 0 -│ ● Option 1 -│ ○ Option 2 -│ ○ Option 3 -│ ... -└ + "Option 0 +● Option 1 +Option 2 +Option 3 +... +└ ", "", "", "", - "│ ○ Option 1 -│ ● Option 2 -│ ○ Option 3 -│ ... -└ + "Option 1 +● Option 2 +Option 3 +... +└ ", "", "", "", - "│ ... -│ ○ Option 2 -│ ● Option 3 -│ ○ Option 4 -│ ... -└ + "... +Option 2 +● Option 3 +Option 4 +... +└ ", "", "", "", - "◇ Choose an option: -│ Line 2 of the message -│ Line 3 of the message -│ Option 3", + "◇ Choose an option: +│ Line 2 of the message +│ Line 3 of the message +Option 3", " ", "", @@ -637,24 +637,24 @@ exports[`select (isCI = true) > correctly limits options with explicit multiline exports[`select (isCI = true) > down arrow selects next option 1`] = ` [ "", - "│ -◆ foo -│ ● opt0 -│ ○ opt1 -└ + "│ +◆ foo +● opt0 +opt1 +└ ", "", "", "", - "│ ○ opt0 -│ ● opt1 -└ + "opt0 +● opt1 +└ ", "", "", "", - "◇ foo -│ opt1", + "◇ foo +opt1", " ", "", @@ -664,15 +664,15 @@ exports[`select (isCI = true) > down arrow selects next option 1`] = ` exports[`select (isCI = true) > global withGuide: false removes guide 1`] = ` [ "", - "◆ foo -● opt0 -○ opt1 + "◆ foo +● opt0 +opt1 ", "", "", - "◇ foo -opt0", + "◇ foo +opt0", " ", "", @@ -682,35 +682,35 @@ exports[`select (isCI = true) > global withGuide: false removes guide 1`] = ` exports[`select (isCI = true) > handles mixed size re-renders 1`] = ` [ "", - "│ -◆ Whatever -│ ● Long Option -│ Long Option -│ Long Option -│ Long Option -│ Long Option -│ Long Option -│ Long Option -│ Long Option -│ ... -└ + "│ +◆ Whatever +● Long Option +│ Long Option +│ Long Option +│ Long Option +│ Long Option +│ Long Option +│ Long Option +│ Long Option +... +└ ", "", "", - "│ -◆ Whatever -│ ... -│ ○ Option 0 -│ ○ Option 1 -│ ○ Option 2 -│ ● Option 3 -└ + "│ +◆ Whatever +... +Option 0 +Option 1 +Option 2 +● Option 3 +└ ", "", "", "", - "◇ Whatever -│ Option 3", + "◇ Whatever +Option 3", " ", "", @@ -720,18 +720,18 @@ exports[`select (isCI = true) > handles mixed size re-renders 1`] = ` exports[`select (isCI = true) > renders disabled options 1`] = ` [ "", - "│ -◆ foo -│ ○ Option 0 -│ ● Option 1 -│ ○ Option 2 (Hint 2) -└ + "│ +◆ foo +Option 0 +● Option 1 +Option 2 (Hint 2) +└ ", "", "", "", - "◇ foo -│ Option 1", + "◇ foo +Option 1", " ", "", @@ -741,26 +741,26 @@ exports[`select (isCI = true) > renders disabled options 1`] = ` exports[`select (isCI = true) > renders multi-line option labels 1`] = ` [ "", - "│ -◆ foo -│ ● Option 0 -│ with multiple lines -│ ○ Option 1 -└ + "│ +◆ foo +● Option 0 +│ with multiple lines +Option 1 +└ ", "", "", "", - "│ ○ Option 0 -│ with multiple lines -│ ● Option 1 -└ + "Option 0 +with multiple lines +● Option 1 +└ ", "", "", "", - "◇ foo -│ Option 1", + "◇ foo +Option 1", " ", "", @@ -770,17 +770,17 @@ exports[`select (isCI = true) > renders multi-line option labels 1`] = ` exports[`select (isCI = true) > renders option hints 1`] = ` [ "", - "│ -◆ foo -│ ● opt0 (Hint 0) -│ ○ opt1 -└ + "│ +◆ foo +● opt0 (Hint 0) +opt1 +└ ", "", "", "", - "◇ foo -│ opt0", + "◇ foo +opt0", " ", "", @@ -790,17 +790,17 @@ exports[`select (isCI = true) > renders option hints 1`] = ` exports[`select (isCI = true) > renders option labels 1`] = ` [ "", - "│ -◆ foo -│ ● Option 0 -│ ○ Option 1 -└ + "│ +◆ foo +● Option 0 +Option 1 +└ ", "", "", "", - "◇ foo -│ Option 0", + "◇ foo +Option 0", " ", "", @@ -810,17 +810,17 @@ exports[`select (isCI = true) > renders option labels 1`] = ` exports[`select (isCI = true) > renders options and message 1`] = ` [ "", - "│ -◆ foo -│ ● opt0 -│ ○ opt1 -└ + "│ +◆ foo +● opt0 +opt1 +└ ", "", "", "", - "◇ foo -│ opt0", + "◇ foo +opt0", " ", "", @@ -830,31 +830,31 @@ exports[`select (isCI = true) > renders options and message 1`] = ` exports[`select (isCI = true) > up arrow selects previous option 1`] = ` [ "", - "│ -◆ foo -│ ● opt0 -│ ○ opt1 -└ + "│ +◆ foo +● opt0 +opt1 +└ ", "", "", "", - "│ ○ opt0 -│ ● opt1 -└ + "opt0 +● opt1 +└ ", "", "", "", - "│ ● opt0 -│ ○ opt1 -└ + "● opt0 +opt1 +└ ", "", "", "", - "◇ foo -│ opt0", + "◇ foo +opt0", " ", "", @@ -864,15 +864,15 @@ exports[`select (isCI = true) > up arrow selects previous option 1`] = ` exports[`select (isCI = true) > withGuide: false removes guide 1`] = ` [ "", - "◆ foo -● opt0 -○ opt1 + "◆ foo +● opt0 +opt1 ", "", "", - "◇ foo -opt0", + "◇ foo +opt0", " ", "", @@ -882,26 +882,26 @@ exports[`select (isCI = true) > withGuide: false removes guide 1`] = ` exports[`select (isCI = true) > wraps long cancelled message 1`] = ` [ "", - "│ -◆ foo -│ ● foo foo foo foo foo foo -│ foo foo foo foo foo foo foo -│ foo foo foo foo foo foo -│ foo foo foo foo foo foo foo -│ foo foo foo foo -│ ○ Option 1 -└ + "│ +◆ foo +● foo foo foo foo foo foo +│ foo foo foo foo foo foo foo +│ foo foo foo foo foo foo +│ foo foo foo foo foo foo foo +│ foo foo foo foo +Option 1 +└ ", "", "", "", - "■ foo -│ foo foo foo foo foo foo foo -│  foo foo foo foo foo foo  -│ foo foo foo foo foo foo foo -│  foo foo foo foo foo foo  -│ foo foo foo foo -│", + "■ foo +│ foo foo foo foo foo foo foo + foo foo foo foo foo foo +foo foo foo foo foo foo foo + foo foo foo foo foo foo +foo foo foo foo +│", " ", "", @@ -911,21 +911,21 @@ exports[`select (isCI = true) > wraps long cancelled message 1`] = ` exports[`select (isCI = true) > wraps long messages 1`] = ` [ "", - "│ -◆ foo foo foo foo foo foo foo -│ foo foo foo foo foo foo -│ foo foo foo foo foo foo foo -│ ● opt0 -│ ○ opt1 -└ + "│ +◆ foo foo foo foo foo foo foo +│ foo foo foo foo foo foo +│ foo foo foo foo foo foo foo +● opt0 +opt1 +└ ", "", "", "", - "◇ foo foo foo foo foo foo foo -│ foo foo foo foo foo foo -│ foo foo foo foo foo foo foo -│ opt0", + "◇ foo foo foo foo foo foo foo +│ foo foo foo foo foo foo +│ foo foo foo foo foo foo foo +opt0", " ", "", @@ -935,25 +935,25 @@ exports[`select (isCI = true) > wraps long messages 1`] = ` exports[`select (isCI = true) > wraps long results 1`] = ` [ "", - "│ -◆ foo -│ ● foo foo foo foo foo foo -│ foo foo foo foo foo foo foo -│ foo foo foo foo foo foo -│ foo foo foo foo foo foo foo -│ foo foo foo foo -│ ○ Option 1 -└ + "│ +◆ foo +● foo foo foo foo foo foo +│ foo foo foo foo foo foo foo +│ foo foo foo foo foo foo +│ foo foo foo foo foo foo foo +│ foo foo foo foo +Option 1 +└ ", "", "", "", - "◇ foo -│ foo foo foo foo foo foo foo -│  foo foo foo foo foo foo  -│ foo foo foo foo foo foo foo -│  foo foo foo foo foo foo  -│ foo foo foo foo", + "◇ foo +foo foo foo foo foo foo foo + foo foo foo foo foo foo +foo foo foo foo foo foo foo + foo foo foo foo foo foo +foo foo foo foo", " ", "", diff --git a/packages/prompts/test/__snapshots__/spinner.test.ts.snap b/packages/prompts/test/__snapshots__/spinner.test.ts.snap index 31412ea1..71cd44a7 100644 --- a/packages/prompts/test/__snapshots__/spinner.test.ts.snap +++ b/packages/prompts/test/__snapshots__/spinner.test.ts.snap @@ -3,9 +3,9 @@ exports[`spinner (isCI = false) > can be aborted by a signal 1`] = ` [ "", - "│ + "│ ", - "■ Canceled + "■ Canceled ", "", ] @@ -14,9 +14,9 @@ exports[`spinner (isCI = false) > can be aborted by a signal 1`] = ` exports[`spinner (isCI = false) > clear > stops and clears the spinner from the output 1`] = ` [ "", - "│ + "│ ", - "◒ Loading", + "◒ Loading", "", "", "", @@ -26,10 +26,10 @@ exports[`spinner (isCI = false) > clear > stops and clears the spinner from the exports[`spinner (isCI = false) > global withGuide: false removes guide 1`] = ` [ "", - "◒ foo", + "◒ foo", "", "", - "◇ + "◇ ", "", ] @@ -38,21 +38,21 @@ exports[`spinner (isCI = false) > global withGuide: false removes guide 1`] = ` exports[`spinner (isCI = false) > indicator customization > custom delay 1`] = ` [ "", - "│ + "│ ", - "◒ ", + "◒ ", "", "", - "◐ ", + "◐ ", "", "", - "◓ ", + "◓ ", "", "", - "◑ ", + "◑ ", "", "", - "◇ + "◇ ", "", ] @@ -61,21 +61,21 @@ exports[`spinner (isCI = false) > indicator customization > custom delay 1`] = ` exports[`spinner (isCI = false) > indicator customization > custom frame style 1`] = ` [ "", - "│ + "│ ", - "◒ ", + "◒ ", "", "", - "◐ ", + "◐ ", "", "", - "◓ ", + "◓ ", "", "", - "◑ ", + "◑ ", "", "", - "◇ + "◇ ", "", ] @@ -84,21 +84,21 @@ exports[`spinner (isCI = false) > indicator customization > custom frame style 1 exports[`spinner (isCI = false) > indicator customization > custom frames 1`] = ` [ "", - "│ + "│ ", - "🐴 ", + "🐴 ", "", "", - "🦋 ", + "🦋 ", "", "", - "🐙 ", + "🐙 ", "", "", - "🐶 ", + "🐶 ", "", "", - "◇ + "◇ ", "", ] @@ -107,201 +107,201 @@ exports[`spinner (isCI = false) > indicator customization > custom frames 1`] = exports[`spinner (isCI = false) > indicator customization > custom frames with lots of frame have consistent ellipsis display 1`] = ` [ "", - "│ + "│ ", - "0 ", + "0 ", "", "", - "1 ", + "1 ", "", "", - "2 ", + "2 ", "", "", - "3 ", + "3 ", "", "", - "4 ", + "4 ", "", "", - "5 ", + "5 ", "", "", - "6 ", + "6 ", "", "", - "7 ", + "7 ", "", "", - "8 .", + "8 .", "", "", - "9 .", + "9 .", "", "", - "0 .", + "0 .", "", "", - "1 .", + "1 .", "", "", - "2 .", + "2 .", "", "", - "3 .", + "3 .", "", "", - "4 .", + "4 .", "", "", - "5 .", + "5 .", "", "", - "6 ..", + "6 ..", "", "", - "7 ..", + "7 ..", "", "", - "8 ..", + "8 ..", "", "", - "9 ..", + "9 ..", "", "", - "0 ..", + "0 ..", "", "", - "1 ..", + "1 ..", "", "", - "2 ..", + "2 ..", "", "", - "3 ..", + "3 ..", "", "", - "4 ...", + "4 ...", "", "", - "5 ...", + "5 ...", "", "", - "6 ...", + "6 ...", "", "", - "7 ...", + "7 ...", "", "", - "8 ...", + "8 ...", "", "", - "9 ...", + "9 ...", "", "", - "0 ...", + "0 ...", "", "", - "1 ...", + "1 ...", "", "", - "2 ...", + "2 ...", "", "", - "3 ", + "3 ", "", "", - "4 ", + "4 ", "", "", - "5 ", + "5 ", "", "", - "6 ", + "6 ", "", "", - "7 ", + "7 ", "", "", - "8 ", + "8 ", "", "", - "9 ", + "9 ", "", "", - "0 ", + "0 ", "", "", - "1 .", + "1 .", "", "", - "2 .", + "2 .", "", "", - "3 .", + "3 .", "", "", - "4 .", + "4 .", "", "", - "5 .", + "5 .", "", "", - "6 .", + "6 .", "", "", - "7 .", + "7 .", "", "", - "8 .", + "8 .", "", "", - "9 ..", + "9 ..", "", "", - "0 ..", + "0 ..", "", "", - "1 ..", + "1 ..", "", "", - "2 ..", + "2 ..", "", "", - "3 ..", + "3 ..", "", "", - "4 ..", + "4 ..", "", "", - "5 ..", + "5 ..", "", "", - "6 ..", + "6 ..", "", "", - "7 ...", + "7 ...", "", "", - "8 ...", + "8 ...", "", "", - "9 ...", + "9 ...", "", "", - "0 ...", + "0 ...", "", "", - "1 ...", + "1 ...", "", "", - "2 ...", + "2 ...", "", "", - "3 ...", + "3 ...", "", "", - "◇ + "◇ ", "", ] @@ -310,15 +310,15 @@ exports[`spinner (isCI = false) > indicator customization > custom frames with l exports[`spinner (isCI = false) > message > sets message for next frame 1`] = ` [ "", - "│ + "│ ", - "◒ ", + "◒ ", "", "", - "◐ foo", + "◐ foo", "", "", - "◇ + "◇ ", "", ] @@ -327,9 +327,9 @@ exports[`spinner (isCI = false) > message > sets message for next frame 1`] = ` exports[`spinner (isCI = false) > process exit handling > prioritizes cancel option over global setting 1`] = ` [ "", - "│ + "│ ", - "■ Spinner cancel message + "■ Spinner cancel message ", "", ] @@ -338,9 +338,9 @@ exports[`spinner (isCI = false) > process exit handling > prioritizes cancel opt exports[`spinner (isCI = false) > process exit handling > prioritizes error option over global setting 1`] = ` [ "", - "│ + "│ ", - "▲ Spinner error message + "▲ Spinner error message ", "", ] @@ -349,9 +349,9 @@ exports[`spinner (isCI = false) > process exit handling > prioritizes error opti exports[`spinner (isCI = false) > process exit handling > uses custom cancel message when provided directly 1`] = ` [ "", - "│ + "│ ", - "■ Custom cancel message + "■ Custom cancel message ", "", ] @@ -360,9 +360,9 @@ exports[`spinner (isCI = false) > process exit handling > uses custom cancel mes exports[`spinner (isCI = false) > process exit handling > uses custom error message when provided directly 1`] = ` [ "", - "│ + "│ ", - "▲ Custom error message + "▲ Custom error message ", "", ] @@ -371,9 +371,9 @@ exports[`spinner (isCI = false) > process exit handling > uses custom error mess exports[`spinner (isCI = false) > process exit handling > uses default cancel message 1`] = ` [ "", - "│ + "│ ", - "■ Canceled + "■ Canceled ", "", ] @@ -382,9 +382,9 @@ exports[`spinner (isCI = false) > process exit handling > uses default cancel me exports[`spinner (isCI = false) > process exit handling > uses global custom cancel message from settings 1`] = ` [ "", - "│ + "│ ", - "■ Global cancel message + "■ Global cancel message ", "", ] @@ -393,9 +393,9 @@ exports[`spinner (isCI = false) > process exit handling > uses global custom can exports[`spinner (isCI = false) > process exit handling > uses global custom error message from settings 1`] = ` [ "", - "│ + "│ ", - "▲ Global error message + "▲ Global error message ", "", ] @@ -404,15 +404,15 @@ exports[`spinner (isCI = false) > process exit handling > uses global custom err exports[`spinner (isCI = false) > start > handles multi-line messages 1`] = ` [ "", - "│ + "│ ", - "◒ foo + "◒ foo bar baz", "", "", "", - "◇ + "◇ ", "", ] @@ -421,14 +421,14 @@ baz", exports[`spinner (isCI = false) > start > handles wrapping 1`] = ` [ "", - "│ + "│ ", - "◒ xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx + "◒ xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxx", "", "", "", - "◇ stopped + "◇ stopped ", "", ] @@ -437,21 +437,21 @@ xxxxxxxxxxxxx", exports[`spinner (isCI = false) > start > renders frames at interval 1`] = ` [ "", - "│ + "│ ", - "◒ ", + "◒ ", "", "", - "◐ ", + "◐ ", "", "", - "◓ ", + "◓ ", "", "", - "◑ ", + "◑ ", "", "", - "◇ + "◇ ", "", ] @@ -460,12 +460,12 @@ exports[`spinner (isCI = false) > start > renders frames at interval 1`] = ` exports[`spinner (isCI = false) > start > renders message 1`] = ` [ "", - "│ + "│ ", - "◒ foo", + "◒ foo", "", "", - "◇ + "◇ ", "", ] @@ -474,12 +474,12 @@ exports[`spinner (isCI = false) > start > renders message 1`] = ` exports[`spinner (isCI = false) > start > renders timer when indicator is "timer" 1`] = ` [ "", - "│ + "│ ", - "◒ [0s]", + "◒ [0s]", "", "", - "◇ [0s] + "◇ [0s] ", "", ] @@ -488,12 +488,12 @@ exports[`spinner (isCI = false) > start > renders timer when indicator is "timer exports[`spinner (isCI = false) > stop > renders cancel symbol when calling cancel() 1`] = ` [ "", - "│ + "│ ", - "◒ ", + "◒ ", "", "", - "■ + "■ ", "", ] @@ -502,12 +502,12 @@ exports[`spinner (isCI = false) > stop > renders cancel symbol when calling canc exports[`spinner (isCI = false) > stop > renders error symbol when calling error() 1`] = ` [ "", - "│ + "│ ", - "◒ ", + "◒ ", "", "", - "▲ + "▲ ", "", ] @@ -516,12 +516,12 @@ exports[`spinner (isCI = false) > stop > renders error symbol when calling error exports[`spinner (isCI = false) > stop > renders message 1`] = ` [ "", - "│ + "│ ", - "◒ ", + "◒ ", "", "", - "◇ foo + "◇ foo ", "", ] @@ -530,12 +530,12 @@ exports[`spinner (isCI = false) > stop > renders message 1`] = ` exports[`spinner (isCI = false) > stop > renders message when cancelling 1`] = ` [ "", - "│ + "│ ", - "◒ ", + "◒ ", "", "", - "■ too dizzy — spinning cancelled + "■ too dizzy — spinning cancelled ", "", ] @@ -544,12 +544,12 @@ exports[`spinner (isCI = false) > stop > renders message when cancelling 1`] = ` exports[`spinner (isCI = false) > stop > renders message when erroring 1`] = ` [ "", - "│ + "│ ", - "◒ ", + "◒ ", "", "", - "▲ error: spun too fast! + "▲ error: spun too fast! ", "", ] @@ -558,12 +558,12 @@ exports[`spinner (isCI = false) > stop > renders message when erroring 1`] = ` exports[`spinner (isCI = false) > stop > renders message without removing dots 1`] = ` [ "", - "│ + "│ ", - "◒ ", + "◒ ", "", "", - "◇ foo. + "◇ foo. ", "", ] @@ -572,12 +572,12 @@ exports[`spinner (isCI = false) > stop > renders message without removing dots 1 exports[`spinner (isCI = false) > stop > renders submit symbol and stops spinner 1`] = ` [ "", - "│ + "│ ", - "◒ ", + "◒ ", "", "", - "◇ + "◇ ", "", ] @@ -586,10 +586,10 @@ exports[`spinner (isCI = false) > stop > renders submit symbol and stops spinner exports[`spinner (isCI = false) > withGuide: false removes guide 1`] = ` [ "", - "◒ foo", + "◒ foo", "", "", - "◇ + "◇ ", "", ] @@ -598,9 +598,9 @@ exports[`spinner (isCI = false) > withGuide: false removes guide 1`] = ` exports[`spinner (isCI = true) > can be aborted by a signal 1`] = ` [ "", - "│ + "│ ", - "■ Canceled + "■ Canceled ", "", ] @@ -609,9 +609,9 @@ exports[`spinner (isCI = true) > can be aborted by a signal 1`] = ` exports[`spinner (isCI = true) > clear > stops and clears the spinner from the output 1`] = ` [ "", - "│ + "│ ", - "◒ Loading...", + "◒ Loading...", " ", "", @@ -623,12 +623,12 @@ exports[`spinner (isCI = true) > clear > stops and clears the spinner from the o exports[`spinner (isCI = true) > global withGuide: false removes guide 1`] = ` [ "", - "◒ foo...", + "◒ foo...", " ", "", "", - "◇ + "◇ ", "", ] @@ -637,14 +637,14 @@ exports[`spinner (isCI = true) > global withGuide: false removes guide 1`] = ` exports[`spinner (isCI = true) > indicator customization > custom delay 1`] = ` [ "", - "│ + "│ ", - "◒ ...", + "◒ ...", " ", "", "", - "◇ + "◇ ", "", ] @@ -653,14 +653,14 @@ exports[`spinner (isCI = true) > indicator customization > custom delay 1`] = ` exports[`spinner (isCI = true) > indicator customization > custom frame style 1`] = ` [ "", - "│ + "│ ", - "◒ ...", + "◒ ...", " ", "", "", - "◇ + "◇ ", "", ] @@ -669,14 +669,14 @@ exports[`spinner (isCI = true) > indicator customization > custom frame style 1` exports[`spinner (isCI = true) > indicator customization > custom frames 1`] = ` [ "", - "│ + "│ ", - "🐴 ...", + "🐴 ...", " ", "", "", - "◇ + "◇ ", "", ] @@ -685,14 +685,14 @@ exports[`spinner (isCI = true) > indicator customization > custom frames 1`] = ` exports[`spinner (isCI = true) > indicator customization > custom frames with lots of frame have consistent ellipsis display 1`] = ` [ "", - "│ + "│ ", - "0 ...", + "0 ...", " ", "", "", - "◇ + "◇ ", "", ] @@ -701,19 +701,19 @@ exports[`spinner (isCI = true) > indicator customization > custom frames with lo exports[`spinner (isCI = true) > message > sets message for next frame 1`] = ` [ "", - "│ + "│ ", - "◒ ...", + "◒ ...", " ", "", "", - "◐ foo...", + "◐ foo...", " ", "", "", - "◇ + "◇ ", "", ] @@ -722,9 +722,9 @@ exports[`spinner (isCI = true) > message > sets message for next frame 1`] = ` exports[`spinner (isCI = true) > process exit handling > prioritizes cancel option over global setting 1`] = ` [ "", - "│ + "│ ", - "■ Spinner cancel message + "■ Spinner cancel message ", "", ] @@ -733,9 +733,9 @@ exports[`spinner (isCI = true) > process exit handling > prioritizes cancel opti exports[`spinner (isCI = true) > process exit handling > prioritizes error option over global setting 1`] = ` [ "", - "│ + "│ ", - "▲ Spinner error message + "▲ Spinner error message ", "", ] @@ -744,9 +744,9 @@ exports[`spinner (isCI = true) > process exit handling > prioritizes error optio exports[`spinner (isCI = true) > process exit handling > uses custom cancel message when provided directly 1`] = ` [ "", - "│ + "│ ", - "■ Custom cancel message + "■ Custom cancel message ", "", ] @@ -755,9 +755,9 @@ exports[`spinner (isCI = true) > process exit handling > uses custom cancel mess exports[`spinner (isCI = true) > process exit handling > uses custom error message when provided directly 1`] = ` [ "", - "│ + "│ ", - "▲ Custom error message + "▲ Custom error message ", "", ] @@ -766,9 +766,9 @@ exports[`spinner (isCI = true) > process exit handling > uses custom error messa exports[`spinner (isCI = true) > process exit handling > uses default cancel message 1`] = ` [ "", - "│ + "│ ", - "■ Canceled + "■ Canceled ", "", ] @@ -777,9 +777,9 @@ exports[`spinner (isCI = true) > process exit handling > uses default cancel mes exports[`spinner (isCI = true) > process exit handling > uses global custom cancel message from settings 1`] = ` [ "", - "│ + "│ ", - "■ Global cancel message + "■ Global cancel message ", "", ] @@ -788,9 +788,9 @@ exports[`spinner (isCI = true) > process exit handling > uses global custom canc exports[`spinner (isCI = true) > process exit handling > uses global custom error message from settings 1`] = ` [ "", - "│ + "│ ", - "▲ Global error message + "▲ Global error message ", "", ] @@ -799,9 +799,9 @@ exports[`spinner (isCI = true) > process exit handling > uses global custom erro exports[`spinner (isCI = true) > start > handles multi-line messages 1`] = ` [ "", - "│ + "│ ", - "◒ foo + "◒ foo bar baz...", " @@ -809,7 +809,7 @@ baz...", "", "", "", - "◇ + "◇ ", "", ] @@ -818,16 +818,16 @@ baz...", exports[`spinner (isCI = true) > start > handles wrapping 1`] = ` [ "", - "│ + "│ ", - "◒ xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx + "◒ xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxx...", " ", "", "", "", - "◇ stopped + "◇ stopped ", "", ] @@ -836,14 +836,14 @@ xxxxxxxxxxxxx...", exports[`spinner (isCI = true) > start > renders frames at interval 1`] = ` [ "", - "│ + "│ ", - "◒ ...", + "◒ ...", " ", "", "", - "◇ + "◇ ", "", ] @@ -852,14 +852,14 @@ exports[`spinner (isCI = true) > start > renders frames at interval 1`] = ` exports[`spinner (isCI = true) > start > renders message 1`] = ` [ "", - "│ + "│ ", - "◒ foo...", + "◒ foo...", " ", "", "", - "◇ + "◇ ", "", ] @@ -868,14 +868,14 @@ exports[`spinner (isCI = true) > start > renders message 1`] = ` exports[`spinner (isCI = true) > start > renders timer when indicator is "timer" 1`] = ` [ "", - "│ + "│ ", - "◒ ...", + "◒ ...", " ", "", "", - "◇ [0s] + "◇ [0s] ", "", ] @@ -884,14 +884,14 @@ exports[`spinner (isCI = true) > start > renders timer when indicator is "timer" exports[`spinner (isCI = true) > stop > renders cancel symbol when calling cancel() 1`] = ` [ "", - "│ + "│ ", - "◒ ...", + "◒ ...", " ", "", "", - "■ + "■ ", "", ] @@ -900,14 +900,14 @@ exports[`spinner (isCI = true) > stop > renders cancel symbol when calling cance exports[`spinner (isCI = true) > stop > renders error symbol when calling error() 1`] = ` [ "", - "│ + "│ ", - "◒ ...", + "◒ ...", " ", "", "", - "▲ + "▲ ", "", ] @@ -916,14 +916,14 @@ exports[`spinner (isCI = true) > stop > renders error symbol when calling error( exports[`spinner (isCI = true) > stop > renders message 1`] = ` [ "", - "│ + "│ ", - "◒ ...", + "◒ ...", " ", "", "", - "◇ foo + "◇ foo ", "", ] @@ -932,14 +932,14 @@ exports[`spinner (isCI = true) > stop > renders message 1`] = ` exports[`spinner (isCI = true) > stop > renders message when cancelling 1`] = ` [ "", - "│ + "│ ", - "◒ ...", + "◒ ...", " ", "", "", - "■ too dizzy — spinning cancelled + "■ too dizzy — spinning cancelled ", "", ] @@ -948,14 +948,14 @@ exports[`spinner (isCI = true) > stop > renders message when cancelling 1`] = ` exports[`spinner (isCI = true) > stop > renders message when erroring 1`] = ` [ "", - "│ + "│ ", - "◒ ...", + "◒ ...", " ", "", "", - "▲ error: spun too fast! + "▲ error: spun too fast! ", "", ] @@ -964,14 +964,14 @@ exports[`spinner (isCI = true) > stop > renders message when erroring 1`] = ` exports[`spinner (isCI = true) > stop > renders message without removing dots 1`] = ` [ "", - "│ + "│ ", - "◒ ...", + "◒ ...", " ", "", "", - "◇ foo. + "◇ foo. ", "", ] @@ -980,14 +980,14 @@ exports[`spinner (isCI = true) > stop > renders message without removing dots 1` exports[`spinner (isCI = true) > stop > renders submit symbol and stops spinner 1`] = ` [ "", - "│ + "│ ", - "◒ ...", + "◒ ...", " ", "", "", - "◇ + "◇ ", "", ] @@ -996,12 +996,12 @@ exports[`spinner (isCI = true) > stop > renders submit symbol and stops spinner exports[`spinner (isCI = true) > withGuide: false removes guide 1`] = ` [ "", - "◒ foo...", + "◒ foo...", " ", "", "", - "◇ + "◇ ", "", ] diff --git a/packages/prompts/test/__snapshots__/task-log.test.ts.snap b/packages/prompts/test/__snapshots__/task-log.test.ts.snap index 39242084..f7f1275a 100644 --- a/packages/prompts/test/__snapshots__/task-log.test.ts.snap +++ b/packages/prompts/test/__snapshots__/task-log.test.ts.snap @@ -2,1211 +2,1211 @@ exports[`taskLog (isCI = false) > error > clears output if showLog = false 1`] = ` [ - "│ + "│ ", - "◇ foo + "◇ foo ", - "│ + "│ ", - "│ line 0 + "line 0 ", "", - "│ line 0 -│ line 1 + "line 0 +line 1 ", "", - "│ -■ some error! + "│ +■ some error! ", ] `; exports[`taskLog (isCI = false) > error > renders output with message 1`] = ` [ - "│ + "│ ", - "◇ foo + "◇ foo ", - "│ + "│ ", - "│ line 0 + "line 0 ", "", - "│ line 0 -│ line 1 + "line 0 +line 1 ", "", - "│ -■ some error! + "│ +■ some error! ", - "│ -│ line 0 -│ line 1 + "│ +line 0 +line 1 ", ] `; exports[`taskLog (isCI = false) > group > applies limit per group 1`] = ` [ - "│ + "│ ", - "◇ Some log + "◇ Some log ", - "│ + "│ ", - "│ Group 0 + "Group 0 ", - "│ Group 0 line 0 + "Group 0 line 0 ", "", - "│ Group 0 + "Group 0 ", - "│ Group 0 line 0 + "Group 0 line 0 ", - "│ Group 1 + "Group 1 ", - "│ Group 1 line 0 + "Group 1 line 0 ", "", - "│ Group 0 + "Group 0 ", - "│ Group 0 line 0 -│ Group 0 line 1 + "Group 0 line 0 +Group 0 line 1 ", - "│ Group 1 + "Group 1 ", - "│ Group 1 line 0 + "Group 1 line 0 ", "", - "│ Group 0 + "Group 0 ", - "│ Group 0 line 0 -│ Group 0 line 1 + "Group 0 line 0 +Group 0 line 1 ", - "│ Group 1 + "Group 1 ", - "│ Group 1 line 0 -│ Group 1 line 1 + "Group 1 line 0 +Group 1 line 1 ", "", - "│ Group 0 + "Group 0 ", - "│ Group 0 line 1 -│ Group 0 line 2 + "Group 0 line 1 +Group 0 line 2 ", - "│ Group 1 + "Group 1 ", - "│ Group 1 line 0 -│ Group 1 line 1 + "Group 1 line 0 +Group 1 line 1 ", "", - "│ Group 0 + "Group 0 ", - "│ Group 0 line 1 -│ Group 0 line 2 + "Group 0 line 1 +Group 0 line 2 ", - "│ Group 1 + "Group 1 ", - "│ Group 1 line 1 -│ Group 1 line 2 + "Group 1 line 1 +Group 1 line 2 ", "", - "│ Group 0 + "Group 0 ", - "│ Group 0 line 2 -│ Group 0 line 3 + "Group 0 line 2 +Group 0 line 3 ", - "│ Group 1 + "Group 1 ", - "│ Group 1 line 1 -│ Group 1 line 2 + "Group 1 line 1 +Group 1 line 2 ", "", - "│ Group 0 + "Group 0 ", - "│ Group 0 line 2 -│ Group 0 line 3 + "Group 0 line 2 +Group 0 line 3 ", - "│ Group 1 + "Group 1 ", - "│ Group 1 line 2 -│ Group 1 line 3 + "Group 1 line 2 +Group 1 line 3 ", "", - "│ Group 0 + "Group 0 ", - "│ Group 0 line 3 -│ Group 0 line 4 + "Group 0 line 3 +Group 0 line 4 ", - "│ Group 1 + "Group 1 ", - "│ Group 1 line 2 -│ Group 1 line 3 + "Group 1 line 2 +Group 1 line 3 ", "", - "│ Group 0 + "Group 0 ", - "│ Group 0 line 3 -│ Group 0 line 4 + "Group 0 line 3 +Group 0 line 4 ", - "│ Group 1 + "Group 1 ", - "│ Group 1 line 3 -│ Group 1 line 4 + "Group 1 line 3 +Group 1 line 4 ", ] `; exports[`taskLog (isCI = false) > group > can render multiple groups of different sizes 1`] = ` [ - "│ + "│ ", - "◇ Some log + "◇ Some log ", - "│ + "│ ", - "│ Group 0 + "Group 0 ", - "│ Group 0 line 0 + "Group 0 line 0 ", "", - "│ Group 0 + "Group 0 ", - "│ Group 0 line 0 -│ Group 0 line 1 + "Group 0 line 0 +Group 0 line 1 ", "", - "│ Group 0 + "Group 0 ", - "│ Group 0 line 0 -│ Group 0 line 1 -│ Group 0 line 2 + "Group 0 line 0 +Group 0 line 1 +Group 0 line 2 ", "", - "│ Group 0 + "Group 0 ", - "│ Group 0 line 0 -│ Group 0 line 1 -│ Group 0 line 2 + "Group 0 line 0 +Group 0 line 1 +Group 0 line 2 ", - "│ Group 1 + "Group 1 ", - "│ Group 1 line 0 + "Group 1 line 0 ", "", - "│ Group 0 + "Group 0 ", - "│ Group 0 line 0 -│ Group 0 line 1 -│ Group 0 line 2 + "Group 0 line 0 +Group 0 line 1 +Group 0 line 2 ", - "│ Group 1 + "Group 1 ", - "│ Group 1 line 0 -│ Group 1 line 1 + "Group 1 line 0 +Group 1 line 1 ", "", - "│ Group 0 + "Group 0 ", - "│ Group 0 line 0 -│ Group 0 line 1 -│ Group 0 line 2 + "Group 0 line 0 +Group 0 line 1 +Group 0 line 2 ", - "│ Group 1 + "Group 1 ", - "│ Group 1 line 0 -│ Group 1 line 1 -│ Group 1 line 2 + "Group 1 line 0 +Group 1 line 1 +Group 1 line 2 ", "", - "│ Group 0 + "Group 0 ", - "│ Group 0 line 0 -│ Group 0 line 1 -│ Group 0 line 2 + "Group 0 line 0 +Group 0 line 1 +Group 0 line 2 ", - "│ Group 1 + "Group 1 ", - "│ Group 1 line 0 -│ Group 1 line 1 -│ Group 1 line 2 -│ Group 1 line 3 + "Group 1 line 0 +Group 1 line 1 +Group 1 line 2 +Group 1 line 3 ", "", - "│ Group 0 + "Group 0 ", - "│ Group 0 line 0 -│ Group 0 line 1 -│ Group 0 line 2 + "Group 0 line 0 +Group 0 line 1 +Group 0 line 2 ", - "│ Group 1 + "Group 1 ", - "│ Group 1 line 0 -│ Group 1 line 1 -│ Group 1 line 2 -│ Group 1 line 3 -│ Group 1 line 4 + "Group 1 line 0 +Group 1 line 1 +Group 1 line 2 +Group 1 line 3 +Group 1 line 4 ", ] `; exports[`taskLog (isCI = false) > group > can render multiple groups of equal size 1`] = ` [ - "│ + "│ ", - "◇ Some log + "◇ Some log ", - "│ + "│ ", - "│ Group 0 + "Group 0 ", - "│ Group 0 line 0 + "Group 0 line 0 ", "", - "│ Group 0 + "Group 0 ", - "│ Group 0 line 0 + "Group 0 line 0 ", - "│ Group 1 + "Group 1 ", - "│ Group 1 line 0 + "Group 1 line 0 ", "", - "│ Group 0 + "Group 0 ", - "│ Group 0 line 0 -│ Group 0 line 1 + "Group 0 line 0 +Group 0 line 1 ", - "│ Group 1 + "Group 1 ", - "│ Group 1 line 0 + "Group 1 line 0 ", "", - "│ Group 0 + "Group 0 ", - "│ Group 0 line 0 -│ Group 0 line 1 + "Group 0 line 0 +Group 0 line 1 ", - "│ Group 1 + "Group 1 ", - "│ Group 1 line 0 -│ Group 1 line 1 + "Group 1 line 0 +Group 1 line 1 ", "", - "│ Group 0 + "Group 0 ", - "│ Group 0 line 0 -│ Group 0 line 1 -│ Group 0 line 2 + "Group 0 line 0 +Group 0 line 1 +Group 0 line 2 ", - "│ Group 1 + "Group 1 ", - "│ Group 1 line 0 -│ Group 1 line 1 + "Group 1 line 0 +Group 1 line 1 ", "", - "│ Group 0 + "Group 0 ", - "│ Group 0 line 0 -│ Group 0 line 1 -│ Group 0 line 2 + "Group 0 line 0 +Group 0 line 1 +Group 0 line 2 ", - "│ Group 1 + "Group 1 ", - "│ Group 1 line 0 -│ Group 1 line 1 -│ Group 1 line 2 + "Group 1 line 0 +Group 1 line 1 +Group 1 line 2 ", "", - "│ Group 0 + "Group 0 ", - "│ Group 0 line 0 -│ Group 0 line 1 -│ Group 0 line 2 -│ Group 0 line 3 + "Group 0 line 0 +Group 0 line 1 +Group 0 line 2 +Group 0 line 3 ", - "│ Group 1 + "Group 1 ", - "│ Group 1 line 0 -│ Group 1 line 1 -│ Group 1 line 2 + "Group 1 line 0 +Group 1 line 1 +Group 1 line 2 ", "", - "│ Group 0 + "Group 0 ", - "│ Group 0 line 0 -│ Group 0 line 1 -│ Group 0 line 2 -│ Group 0 line 3 + "Group 0 line 0 +Group 0 line 1 +Group 0 line 2 +Group 0 line 3 ", - "│ Group 1 + "Group 1 ", - "│ Group 1 line 0 -│ Group 1 line 1 -│ Group 1 line 2 -│ Group 1 line 3 + "Group 1 line 0 +Group 1 line 1 +Group 1 line 2 +Group 1 line 3 ", "", - "│ Group 0 + "Group 0 ", - "│ Group 0 line 0 -│ Group 0 line 1 -│ Group 0 line 2 -│ Group 0 line 3 -│ Group 0 line 4 + "Group 0 line 0 +Group 0 line 1 +Group 0 line 2 +Group 0 line 3 +Group 0 line 4 ", - "│ Group 1 + "Group 1 ", - "│ Group 1 line 0 -│ Group 1 line 1 -│ Group 1 line 2 -│ Group 1 line 3 + "Group 1 line 0 +Group 1 line 1 +Group 1 line 2 +Group 1 line 3 ", "", - "│ Group 0 + "Group 0 ", - "│ Group 0 line 0 -│ Group 0 line 1 -│ Group 0 line 2 -│ Group 0 line 3 -│ Group 0 line 4 + "Group 0 line 0 +Group 0 line 1 +Group 0 line 2 +Group 0 line 3 +Group 0 line 4 ", - "│ Group 1 + "Group 1 ", - "│ Group 1 line 0 -│ Group 1 line 1 -│ Group 1 line 2 -│ Group 1 line 3 -│ Group 1 line 4 + "Group 1 line 0 +Group 1 line 1 +Group 1 line 2 +Group 1 line 3 +Group 1 line 4 ", ] `; exports[`taskLog (isCI = false) > group > handles empty groups 1`] = ` [ - "│ + "│ ", - "◇ Some log + "◇ Some log ", - "│ + "│ ", - "◆ Group success! + "◆ Group success! ", ] `; exports[`taskLog (isCI = false) > group > renders error state 1`] = ` [ - "│ + "│ ", - "◇ Some log + "◇ Some log ", - "│ + "│ ", - "│ Group 0 + "Group 0 ", - "│ Group 0 line 0 + "Group 0 line 0 ", "", - "■ Group error! + "■ Group error! ", ] `; exports[`taskLog (isCI = false) > group > renders group error state 1`] = ` [ - "│ + "│ ", - "◇ Some log + "◇ Some log ", - "│ + "│ ", - "│ Group 0 + "Group 0 ", - "│ Group 0 line 0 + "Group 0 line 0 ", "", - "■ Group error! + "■ Group error! ", ] `; exports[`taskLog (isCI = false) > group > renders group success state 1`] = ` [ - "│ + "│ ", - "◇ Some log + "◇ Some log ", - "│ + "│ ", - "│ Group 0 + "Group 0 ", - "│ Group 0 line 0 + "Group 0 line 0 ", "", - "◆ Group success! + "◆ Group success! ", ] `; exports[`taskLog (isCI = false) > group > renders success state 1`] = ` [ - "│ + "│ ", - "◇ Some log + "◇ Some log ", - "│ + "│ ", - "│ Group 0 + "Group 0 ", - "│ Group 0 line 0 + "Group 0 line 0 ", "", - "◆ Group success! + "◆ Group success! ", ] `; exports[`taskLog (isCI = false) > group > showLog shows all groups in order 1`] = ` [ - "│ + "│ ", - "◇ Some log + "◇ Some log ", - "│ + "│ ", - "│ Group 0 + "Group 0 ", - "│ Group 0 line 0 + "Group 0 line 0 ", "", - "│ Group 0 + "Group 0 ", - "│ Group 0 line 0 -│ Group 0 line 1 + "Group 0 line 0 +Group 0 line 1 ", "", - "│ Group 0 + "Group 0 ", - "│ Group 0 line 0 -│ Group 0 line 1 -│ Group 0 line 2 + "Group 0 line 0 +Group 0 line 1 +Group 0 line 2 ", "", - "│ Group 0 + "Group 0 ", - "│ Group 0 line 0 -│ Group 0 line 1 -│ Group 0 line 2 + "Group 0 line 0 +Group 0 line 1 +Group 0 line 2 ", - "│ Group 1 + "Group 1 ", - "│ Group 1 line 0 + "Group 1 line 0 ", "", - "│ Group 0 + "Group 0 ", - "│ Group 0 line 0 -│ Group 0 line 1 -│ Group 0 line 2 + "Group 0 line 0 +Group 0 line 1 +Group 0 line 2 ", - "│ Group 1 + "Group 1 ", - "│ Group 1 line 0 -│ Group 1 line 1 + "Group 1 line 0 +Group 1 line 1 ", "", - "│ Group 0 + "Group 0 ", - "│ Group 0 line 0 -│ Group 0 line 1 -│ Group 0 line 2 + "Group 0 line 0 +Group 0 line 1 +Group 0 line 2 ", - "│ Group 1 + "Group 1 ", - "│ Group 1 line 0 -│ Group 1 line 1 -│ Group 1 line 2 + "Group 1 line 0 +Group 1 line 1 +Group 1 line 2 ", "", - "│ Group 0 + "Group 0 ", - "│ Group 0 line 0 -│ Group 0 line 1 -│ Group 0 line 2 + "Group 0 line 0 +Group 0 line 1 +Group 0 line 2 ", - "│ Group 1 + "Group 1 ", - "│ Group 1 line 0 -│ Group 1 line 1 -│ Group 1 line 2 -│ Group 1 line 3 + "Group 1 line 0 +Group 1 line 1 +Group 1 line 2 +Group 1 line 3 ", "", - "│ Group 0 + "Group 0 ", - "│ Group 0 line 0 -│ Group 0 line 1 -│ Group 0 line 2 + "Group 0 line 0 +Group 0 line 1 +Group 0 line 2 ", - "│ Group 1 + "Group 1 ", - "│ Group 1 line 0 -│ Group 1 line 1 -│ Group 1 line 2 -│ Group 1 line 3 -│ Group 1 line 4 + "Group 1 line 0 +Group 1 line 1 +Group 1 line 2 +Group 1 line 3 +Group 1 line 4 ", "", - "◆ Group 0 success! + "◆ Group 0 success! ", - "│ Group 1 + "Group 1 ", - "│ Group 1 line 0 -│ Group 1 line 1 -│ Group 1 line 2 -│ Group 1 line 3 -│ Group 1 line 4 + "Group 1 line 0 +Group 1 line 1 +Group 1 line 2 +Group 1 line 3 +Group 1 line 4 ", "", - "◆ Group 0 success! + "◆ Group 0 success! ", - "■ Group 1 error! + "■ Group 1 error! ", "", - "│ -■ overall error + "│ +■ overall error ", - "│ Group 0 + "Group 0 ", - "│ -│ Group 0 line 0 -│ Group 0 line 1 -│ Group 0 line 2 + "│ +Group 0 line 0 +Group 0 line 1 +Group 0 line 2 ", - "│ Group 1 + "Group 1 ", - "│ -│ Group 1 line 0 -│ Group 1 line 1 -│ Group 1 line 2 -│ Group 1 line 3 -│ Group 1 line 4 + "│ +Group 1 line 0 +Group 1 line 1 +Group 1 line 2 +Group 1 line 3 +Group 1 line 4 ", ] `; exports[`taskLog (isCI = false) > message > can write line by line 1`] = ` [ - "│ + "│ ", - "◇ foo + "◇ foo ", - "│ + "│ ", - "│ line 0 + "line 0 ", "", - "│ line 0 -│ line 1 + "line 0 +line 1 ", ] `; exports[`taskLog (isCI = false) > message > can write multiple lines 1`] = ` [ - "│ + "│ ", - "◇ foo + "◇ foo ", - "│ + "│ ", - "│ line 0 -│ line 1 + "line 0 +line 1 ", ] `; exports[`taskLog (isCI = false) > message > destructive ansi codes are stripped 1`] = ` [ - "│ + "│ ", - "◇ foo + "◇ foo ", - "│ + "│ ", - "│ line 1 + "line 1 ", "", - "│ line 1 -│ line 2 bad ansi! + "line 1 +line 2 bad ansi! ", "", - "│ line 1 -│ line 2 bad ansi! -│ line 3 + "line 1 +line 2 bad ansi! +line 3 ", ] `; exports[`taskLog (isCI = false) > message > enforces limit if set 1`] = ` [ - "│ + "│ ", - "◇ foo + "◇ foo ", - "│ + "│ ", - "│ line 0 + "line 0 ", "", - "│ line 0 -│ line 1 + "line 0 +line 1 ", "", - "│ line 1 -│ line 2 + "line 1 +line 2 ", ] `; exports[`taskLog (isCI = false) > message > prints empty lines 1`] = ` [ - "│ + "│ ", - "◇ foo + "◇ foo ", - "│ + "│ ", - "│ line 1 + "line 1 ", "", - "│ line 1 -│  + "line 1 + ", "", - "│ line 1 -│  -│ line 3 + "line 1 + +line 3 ", ] `; exports[`taskLog (isCI = false) > message > raw = true appends message text until newline 1`] = ` [ - "│ + "│ ", - "◇ foo + "◇ foo ", - "│ + "│ ", - "│ line 0 + "line 0 ", "", - "│ line 0still line 0 + "line 0still line 0 ", "", - "│ line 0still line 0 -│ line 1 + "line 0still line 0 +line 1 ", ] `; exports[`taskLog (isCI = false) > message > raw = true works when mixed with non-raw messages 1`] = ` [ - "│ + "│ ", - "◇ foo + "◇ foo ", - "│ + "│ ", - "│ line 0 + "line 0 ", "", - "│ line 0still line 0 + "line 0still line 0 ", "", - "│ line 0still line 0 -│ line 1 + "line 0still line 0 +line 1 ", ] `; exports[`taskLog (isCI = false) > message > raw = true works when started with non-raw messages 1`] = ` [ - "│ + "│ ", - "◇ foo + "◇ foo ", - "│ + "│ ", - "│ line 0 + "line 0 ", "", - "│ line 0 -│ line 1 + "line 0 +line 1 ", "", - "│ line 0 -│ line 1still line 1 + "line 0 +line 1still line 1 ", ] `; exports[`taskLog (isCI = false) > retainLog > error > outputs limited log with limit by default 1`] = ` [ - "│ + "│ ", - "◇ foo + "◇ foo ", - "│ + "│ ", - "│ line 0 + "line 0 ", "", - "│ line 0 -│ line 1 + "line 0 +line 1 ", "", - "│ line 1 -│ line 2 + "line 1 +line 2 ", "", - "│ line 2 -│ line 3 + "line 2 +line 3 ", "", - "│ -■ woo! + "│ +■ woo! ", - "│ -│ line 2 -│ line 3 + "│ +line 2 +line 3 ", ] `; exports[`taskLog (isCI = false) > retainLog > error > retainLog = false outputs full log without limit 1`] = ` [ - "│ + "│ ", - "◇ foo + "◇ foo ", - "│ + "│ ", - "│ line 0 + "line 0 ", "", - "│ line 0 -│ line 1 + "line 0 +line 1 ", "", - "│ line 0 -│ line 1 -│ line 2 + "line 0 +line 1 +line 2 ", "", - "│ line 0 -│ line 1 -│ line 2 -│ line 3 + "line 0 +line 1 +line 2 +line 3 ", "", - "│ -■ woo! + "│ +■ woo! ", - "│ -│ line 0 -│ line 1 -│ line 2 -│ line 3 + "│ +line 0 +line 1 +line 2 +line 3 ", ] `; exports[`taskLog (isCI = false) > retainLog > error > retainLog = false outputs limited log with limit 1`] = ` [ - "│ + "│ ", - "◇ foo + "◇ foo ", - "│ + "│ ", - "│ line 0 + "line 0 ", "", - "│ line 0 -│ line 1 + "line 0 +line 1 ", "", - "│ line 1 -│ line 2 + "line 1 +line 2 ", "", - "│ line 2 -│ line 3 + "line 2 +line 3 ", "", - "│ -■ woo! + "│ +■ woo! ", - "│ -│ line 2 -│ line 3 + "│ +line 2 +line 3 ", ] `; exports[`taskLog (isCI = false) > retainLog > error > retainLog = true outputs full log 1`] = ` [ - "│ + "│ ", - "◇ foo + "◇ foo ", - "│ + "│ ", - "│ line 0 + "line 0 ", "", - "│ line 0 -│ line 1 + "line 0 +line 1 ", "", - "│ line 0 -│ line 1 -│ line 2 + "line 0 +line 1 +line 2 ", "", - "│ line 0 -│ line 1 -│ line 2 -│ line 3 + "line 0 +line 1 +line 2 +line 3 ", "", - "│ -■ woo! + "│ +■ woo! ", - "│ -│ line 0 -│ line 1 -│ line 2 -│ line 3 + "│ +line 0 +line 1 +line 2 +line 3 ", ] `; exports[`taskLog (isCI = false) > retainLog > error > retainLog = true outputs full log with limit 1`] = ` [ - "│ + "│ ", - "◇ foo + "◇ foo ", - "│ + "│ ", - "│ line 0 + "line 0 ", "", - "│ line 0 -│ line 1 + "line 0 +line 1 ", "", - "│ line 1 -│ line 2 + "line 1 +line 2 ", "", - "│ line 2 -│ line 3 + "line 2 +line 3 ", "", - "│ -■ woo! + "│ +■ woo! ", - "│ -│ line 0 -│ line 1 -│ line 2 -│ line 3 + "│ +line 0 +line 1 +line 2 +line 3 ", ] `; exports[`taskLog (isCI = false) > retainLog > success > outputs limited log with limit by default 1`] = ` [ - "│ + "│ ", - "◇ foo + "◇ foo ", - "│ + "│ ", - "│ line 0 + "line 0 ", "", - "│ line 0 -│ line 1 + "line 0 +line 1 ", "", - "│ line 1 -│ line 2 + "line 1 +line 2 ", "", - "│ line 2 -│ line 3 + "line 2 +line 3 ", "", - "│ -◆ woo! + "│ +◆ woo! ", - "│ -│ line 2 -│ line 3 + "│ +line 2 +line 3 ", ] `; exports[`taskLog (isCI = false) > retainLog > success > retainLog = false outputs full log without limit 1`] = ` [ - "│ + "│ ", - "◇ foo + "◇ foo ", - "│ + "│ ", - "│ line 0 + "line 0 ", "", - "│ line 0 -│ line 1 + "line 0 +line 1 ", "", - "│ line 0 -│ line 1 -│ line 2 + "line 0 +line 1 +line 2 ", "", - "│ line 0 -│ line 1 -│ line 2 -│ line 3 + "line 0 +line 1 +line 2 +line 3 ", "", - "│ -◆ woo! + "│ +◆ woo! ", - "│ -│ line 0 -│ line 1 -│ line 2 -│ line 3 + "│ +line 0 +line 1 +line 2 +line 3 ", ] `; exports[`taskLog (isCI = false) > retainLog > success > retainLog = false outputs limited log with limit 1`] = ` [ - "│ + "│ ", - "◇ foo + "◇ foo ", - "│ + "│ ", - "│ line 0 + "line 0 ", "", - "│ line 0 -│ line 1 + "line 0 +line 1 ", "", - "│ line 1 -│ line 2 + "line 1 +line 2 ", "", - "│ line 2 -│ line 3 + "line 2 +line 3 ", "", - "│ -◆ woo! + "│ +◆ woo! ", - "│ -│ line 2 -│ line 3 + "│ +line 2 +line 3 ", ] `; exports[`taskLog (isCI = false) > retainLog > success > retainLog = true outputs full log 1`] = ` [ - "│ + "│ ", - "◇ foo + "◇ foo ", - "│ + "│ ", - "│ line 0 + "line 0 ", "", - "│ line 0 -│ line 1 + "line 0 +line 1 ", "", - "│ line 0 -│ line 1 -│ line 2 + "line 0 +line 1 +line 2 ", "", - "│ line 0 -│ line 1 -│ line 2 -│ line 3 + "line 0 +line 1 +line 2 +line 3 ", "", - "│ -◆ woo! + "│ +◆ woo! ", - "│ -│ line 0 -│ line 1 -│ line 2 -│ line 3 + "│ +line 0 +line 1 +line 2 +line 3 ", ] `; exports[`taskLog (isCI = false) > retainLog > success > retainLog = true outputs full log with limit 1`] = ` [ - "│ + "│ ", - "◇ foo + "◇ foo ", - "│ + "│ ", - "│ line 0 + "line 0 ", "", - "│ line 0 -│ line 1 + "line 0 +line 1 ", "", - "│ line 1 -│ line 2 + "line 1 +line 2 ", "", - "│ line 2 -│ line 3 + "line 2 +line 3 ", "", - "│ -◆ woo! + "│ +◆ woo! ", - "│ -│ line 0 -│ line 1 -│ line 2 -│ line 3 + "│ +line 0 +line 1 +line 2 +line 3 ", ] `; exports[`taskLog (isCI = false) > success > clears output and renders message 1`] = ` [ - "│ + "│ ", - "◇ foo + "◇ foo ", - "│ + "│ ", - "│ line 0 + "line 0 ", "", - "│ line 0 -│ line 1 + "line 0 +line 1 ", "", - "│ -◆ success! + "│ +◆ success! ", ] `; exports[`taskLog (isCI = false) > success > renders output if showLog = true 1`] = ` [ - "│ + "│ ", - "◇ foo + "◇ foo ", - "│ + "│ ", - "│ line 0 + "line 0 ", "", - "│ line 0 -│ line 1 + "line 0 +line 1 ", "", - "│ -◆ success! + "│ +◆ success! ", - "│ -│ line 0 -│ line 1 + "│ +line 0 +line 1 ", ] `; exports[`taskLog (isCI = false) > writes message header 1`] = ` [ - "│ + "│ ", - "◇ foo + "◇ foo ", - "│ + "│ ", ] `; exports[`taskLog (isCI = true) > error > clears output if showLog = false 1`] = ` [ - "│ + "│ ", - "◇ foo + "◇ foo ", - "│ + "│ ", "", "", - "│ -■ some error! + "│ +■ some error! ", ] `; exports[`taskLog (isCI = true) > error > renders output with message 1`] = ` [ - "│ + "│ ", - "◇ foo + "◇ foo ", - "│ + "│ ", "", "", - "│ -■ some error! + "│ +■ some error! ", - "│ -│ line 0 -│ line 1 + "│ +line 0 +line 1 ", ] `; exports[`taskLog (isCI = true) > group > applies limit per group 1`] = ` [ - "│ + "│ ", - "◇ Some log + "◇ Some log ", - "│ + "│ ", "", "", @@ -1222,11 +1222,11 @@ exports[`taskLog (isCI = true) > group > applies limit per group 1`] = ` exports[`taskLog (isCI = true) > group > can render multiple groups of different sizes 1`] = ` [ - "│ + "│ ", - "◇ Some log + "◇ Some log ", - "│ + "│ ", "", "", @@ -1240,11 +1240,11 @@ exports[`taskLog (isCI = true) > group > can render multiple groups of different exports[`taskLog (isCI = true) > group > can render multiple groups of equal size 1`] = ` [ - "│ + "│ ", - "◇ Some log + "◇ Some log ", - "│ + "│ ", "", "", @@ -1260,22 +1260,22 @@ exports[`taskLog (isCI = true) > group > can render multiple groups of equal siz exports[`taskLog (isCI = true) > group > handles empty groups 1`] = ` [ - "│ + "│ ", - "◇ Some log + "◇ Some log ", - "│ + "│ ", ] `; exports[`taskLog (isCI = true) > group > renders error state 1`] = ` [ - "│ + "│ ", - "◇ Some log + "◇ Some log ", - "│ + "│ ", "", ] @@ -1283,11 +1283,11 @@ exports[`taskLog (isCI = true) > group > renders error state 1`] = ` exports[`taskLog (isCI = true) > group > renders group error state 1`] = ` [ - "│ + "│ ", - "◇ Some log + "◇ Some log ", - "│ + "│ ", "", ] @@ -1295,11 +1295,11 @@ exports[`taskLog (isCI = true) > group > renders group error state 1`] = ` exports[`taskLog (isCI = true) > group > renders group success state 1`] = ` [ - "│ + "│ ", - "◇ Some log + "◇ Some log ", - "│ + "│ ", "", ] @@ -1307,11 +1307,11 @@ exports[`taskLog (isCI = true) > group > renders group success state 1`] = ` exports[`taskLog (isCI = true) > group > renders success state 1`] = ` [ - "│ + "│ ", - "◇ Some log + "◇ Some log ", - "│ + "│ ", "", ] @@ -1319,11 +1319,11 @@ exports[`taskLog (isCI = true) > group > renders success state 1`] = ` exports[`taskLog (isCI = true) > group > showLog shows all groups in order 1`] = ` [ - "│ + "│ ", - "◇ Some log + "◇ Some log ", - "│ + "│ ", "", "", @@ -1335,35 +1335,35 @@ exports[`taskLog (isCI = true) > group > showLog shows all groups in order 1`] = "", "", "", - "│ -■ overall error + "│ +■ overall error ", - "│ Group 0 + "Group 0 ", - "│ -│ Group 0 line 0 -│ Group 0 line 1 -│ Group 0 line 2 + "│ +Group 0 line 0 +Group 0 line 1 +Group 0 line 2 ", - "│ Group 1 + "Group 1 ", - "│ -│ Group 1 line 0 -│ Group 1 line 1 -│ Group 1 line 2 -│ Group 1 line 3 -│ Group 1 line 4 + "│ +Group 1 line 0 +Group 1 line 1 +Group 1 line 2 +Group 1 line 3 +Group 1 line 4 ", ] `; exports[`taskLog (isCI = true) > message > can write line by line 1`] = ` [ - "│ + "│ ", - "◇ foo + "◇ foo ", - "│ + "│ ", "", ] @@ -1371,22 +1371,22 @@ exports[`taskLog (isCI = true) > message > can write line by line 1`] = ` exports[`taskLog (isCI = true) > message > can write multiple lines 1`] = ` [ - "│ + "│ ", - "◇ foo + "◇ foo ", - "│ + "│ ", ] `; exports[`taskLog (isCI = true) > message > destructive ansi codes are stripped 1`] = ` [ - "│ + "│ ", - "◇ foo + "◇ foo ", - "│ + "│ ", "", "", @@ -1395,11 +1395,11 @@ exports[`taskLog (isCI = true) > message > destructive ansi codes are stripped 1 exports[`taskLog (isCI = true) > message > enforces limit if set 1`] = ` [ - "│ + "│ ", - "◇ foo + "◇ foo ", - "│ + "│ ", "", "", @@ -1408,11 +1408,11 @@ exports[`taskLog (isCI = true) > message > enforces limit if set 1`] = ` exports[`taskLog (isCI = true) > message > prints empty lines 1`] = ` [ - "│ + "│ ", - "◇ foo + "◇ foo ", - "│ + "│ ", "", "", @@ -1421,11 +1421,11 @@ exports[`taskLog (isCI = true) > message > prints empty lines 1`] = ` exports[`taskLog (isCI = true) > message > raw = true appends message text until newline 1`] = ` [ - "│ + "│ ", - "◇ foo + "◇ foo ", - "│ + "│ ", "", "", @@ -1434,11 +1434,11 @@ exports[`taskLog (isCI = true) > message > raw = true appends message text until exports[`taskLog (isCI = true) > message > raw = true works when mixed with non-raw messages 1`] = ` [ - "│ + "│ ", - "◇ foo + "◇ foo ", - "│ + "│ ", "", "", @@ -1447,11 +1447,11 @@ exports[`taskLog (isCI = true) > message > raw = true works when mixed with non- exports[`taskLog (isCI = true) > message > raw = true works when started with non-raw messages 1`] = ` [ - "│ + "│ ", - "◇ foo + "◇ foo ", - "│ + "│ ", "", "", @@ -1460,279 +1460,279 @@ exports[`taskLog (isCI = true) > message > raw = true works when started with no exports[`taskLog (isCI = true) > retainLog > error > outputs limited log with limit by default 1`] = ` [ - "│ + "│ ", - "◇ foo + "◇ foo ", - "│ + "│ ", "", "", "", "", - "│ -■ woo! + "│ +■ woo! ", - "│ -│ line 2 -│ line 3 + "│ +line 2 +line 3 ", ] `; exports[`taskLog (isCI = true) > retainLog > error > retainLog = false outputs full log without limit 1`] = ` [ - "│ + "│ ", - "◇ foo + "◇ foo ", - "│ + "│ ", "", "", "", "", - "│ -■ woo! + "│ +■ woo! ", - "│ -│ line 0 -│ line 1 -│ line 2 -│ line 3 + "│ +line 0 +line 1 +line 2 +line 3 ", ] `; exports[`taskLog (isCI = true) > retainLog > error > retainLog = false outputs limited log with limit 1`] = ` [ - "│ + "│ ", - "◇ foo + "◇ foo ", - "│ + "│ ", "", "", "", "", - "│ -■ woo! + "│ +■ woo! ", - "│ -│ line 2 -│ line 3 + "│ +line 2 +line 3 ", ] `; exports[`taskLog (isCI = true) > retainLog > error > retainLog = true outputs full log 1`] = ` [ - "│ + "│ ", - "◇ foo + "◇ foo ", - "│ + "│ ", "", "", "", "", - "│ -■ woo! + "│ +■ woo! ", - "│ -│ line 0 -│ line 1 -│ line 2 -│ line 3 + "│ +line 0 +line 1 +line 2 +line 3 ", ] `; exports[`taskLog (isCI = true) > retainLog > error > retainLog = true outputs full log with limit 1`] = ` [ - "│ + "│ ", - "◇ foo + "◇ foo ", - "│ + "│ ", "", "", "", "", - "│ -■ woo! + "│ +■ woo! ", - "│ -│ line 0 -│ line 1 -│ line 2 -│ line 3 + "│ +line 0 +line 1 +line 2 +line 3 ", ] `; exports[`taskLog (isCI = true) > retainLog > success > outputs limited log with limit by default 1`] = ` [ - "│ + "│ ", - "◇ foo + "◇ foo ", - "│ + "│ ", "", "", "", "", - "│ -◆ woo! + "│ +◆ woo! ", - "│ -│ line 2 -│ line 3 + "│ +line 2 +line 3 ", ] `; exports[`taskLog (isCI = true) > retainLog > success > retainLog = false outputs full log without limit 1`] = ` [ - "│ + "│ ", - "◇ foo + "◇ foo ", - "│ + "│ ", "", "", "", "", - "│ -◆ woo! + "│ +◆ woo! ", - "│ -│ line 0 -│ line 1 -│ line 2 -│ line 3 + "│ +line 0 +line 1 +line 2 +line 3 ", ] `; exports[`taskLog (isCI = true) > retainLog > success > retainLog = false outputs limited log with limit 1`] = ` [ - "│ + "│ ", - "◇ foo + "◇ foo ", - "│ + "│ ", "", "", "", "", - "│ -◆ woo! + "│ +◆ woo! ", - "│ -│ line 2 -│ line 3 + "│ +line 2 +line 3 ", ] `; exports[`taskLog (isCI = true) > retainLog > success > retainLog = true outputs full log 1`] = ` [ - "│ + "│ ", - "◇ foo + "◇ foo ", - "│ + "│ ", "", "", "", "", - "│ -◆ woo! + "│ +◆ woo! ", - "│ -│ line 0 -│ line 1 -│ line 2 -│ line 3 + "│ +line 0 +line 1 +line 2 +line 3 ", ] `; exports[`taskLog (isCI = true) > retainLog > success > retainLog = true outputs full log with limit 1`] = ` [ - "│ + "│ ", - "◇ foo + "◇ foo ", - "│ + "│ ", "", "", "", "", - "│ -◆ woo! + "│ +◆ woo! ", - "│ -│ line 0 -│ line 1 -│ line 2 -│ line 3 + "│ +line 0 +line 1 +line 2 +line 3 ", ] `; exports[`taskLog (isCI = true) > success > clears output and renders message 1`] = ` [ - "│ + "│ ", - "◇ foo + "◇ foo ", - "│ + "│ ", "", "", - "│ -◆ success! + "│ +◆ success! ", ] `; exports[`taskLog (isCI = true) > success > renders output if showLog = true 1`] = ` [ - "│ + "│ ", - "◇ foo + "◇ foo ", - "│ + "│ ", "", "", - "│ -◆ success! + "│ +◆ success! ", - "│ -│ line 0 -│ line 1 + "│ +line 0 +line 1 ", ] `; exports[`taskLog (isCI = true) > writes message header 1`] = ` [ - "│ + "│ ", - "◇ foo + "◇ foo ", - "│ + "│ ", ] `; diff --git a/packages/prompts/test/__snapshots__/text.test.ts.snap b/packages/prompts/test/__snapshots__/text.test.ts.snap index 43c38c78..c50bf5b1 100644 --- a/packages/prompts/test/__snapshots__/text.test.ts.snap +++ b/packages/prompts/test/__snapshots__/text.test.ts.snap @@ -3,10 +3,10 @@ exports[`text (isCI = false) > can be aborted by a signal 1`] = ` [ "", - "│ -◆ foo -│ _ -└ + "│ +◆ foo +│ _ +└ ", " ", @@ -17,16 +17,16 @@ exports[`text (isCI = false) > can be aborted by a signal 1`] = ` exports[`text (isCI = false) > can cancel 1`] = ` [ "", - "│ -◆ foo -│ _ -└ + "│ +◆ foo +│ _ +└ ", "", "", "", - "■ foo -│", + "■ foo +│", " ", "", @@ -36,16 +36,16 @@ exports[`text (isCI = false) > can cancel 1`] = ` exports[`text (isCI = false) > defaultValue sets the value but does not render 1`] = ` [ "", - "│ -◆ foo -│ _ -└ + "│ +◆ foo +│ _ +└ ", "", "", "", - "◇ foo -│ bar", + "◇ foo +bar", " ", "", @@ -55,16 +55,16 @@ exports[`text (isCI = false) > defaultValue sets the value but does not render 1 exports[`text (isCI = false) > empty string when no value and no default 1`] = ` [ "", - "│ -◆ foo -│   (hit Enter to use default) -└ + "│ +◆ foo +│   (hit Enter to use default) +└ ", "", "", "", - "◇ foo -│", + "◇ foo +│", " ", "", @@ -74,13 +74,13 @@ exports[`text (isCI = false) > empty string when no value and no default 1`] = ` exports[`text (isCI = false) > global withGuide: false removes guide 1`] = ` [ "", - "◆ foo + "◆ foo _ ", "", "", - "◇ foo + "◇ foo ", " ", @@ -91,16 +91,16 @@ exports[`text (isCI = false) > global withGuide: false removes guide 1`] = ` exports[`text (isCI = false) > placeholder is not used as value when pressing enter 1`] = ` [ "", - "│ -◆ foo -│   (hit Enter to use default) -└ + "│ +◆ foo +│   (hit Enter to use default) +└ ", "", "", "", - "◇ foo -│ default-value", + "◇ foo +default-value", " ", "", @@ -110,27 +110,27 @@ exports[`text (isCI = false) > placeholder is not used as value when pressing en exports[`text (isCI = false) > renders cancelled value if one set 1`] = ` [ "", - "│ -◆ foo -│ _ -└ + "│ +◆ foo +│ _ +└ ", "", "", "", - "│ x█", + "│ x█", "", "", "", "", - "│ xy█", + "│ xy█", "", "", "", "", - "■ foo -│ xy -│", + "■ foo +│ xy +│", " ", "", @@ -140,16 +140,16 @@ exports[`text (isCI = false) > renders cancelled value if one set 1`] = ` exports[`text (isCI = false) > renders message 1`] = ` [ "", - "│ -◆ foo -│ _ -└ + "│ +◆ foo +│ _ +└ ", "", "", "", - "◇ foo -│", + "◇ foo +│", " ", "", @@ -159,16 +159,16 @@ exports[`text (isCI = false) > renders message 1`] = ` exports[`text (isCI = false) > renders placeholder if set 1`] = ` [ "", - "│ -◆ foo -│ bar -└ + "│ +◆ foo +│ bar +└ ", "", "", "", - "◇ foo -│", + "◇ foo +│", " ", "", @@ -178,26 +178,26 @@ exports[`text (isCI = false) > renders placeholder if set 1`] = ` exports[`text (isCI = false) > renders submitted value 1`] = ` [ "", - "│ -◆ foo -│ _ -└ + "│ +◆ foo +│ _ +└ ", "", "", "", - "│ x█", + "│ x█", "", "", "", "", - "│ xy█", + "│ xy█", "", "", "", "", - "◇ foo -│ xy", + "◇ foo +xy", " ", "", @@ -207,35 +207,35 @@ exports[`text (isCI = false) > renders submitted value 1`] = ` exports[`text (isCI = false) > validation errors render and clear (using Error) 1`] = ` [ "", - "│ -◆ foo -│ _ -└ + "│ +◆ foo +│ _ +└ ", "", "", "", - "│ x█", + "│ x█", "", "", "", "", - "▲ foo -│ x█ -└ should be xy + "▲ foo +│ x█ +should be xy ", "", "", "", - "◆ foo -│ xy█ -└ + "◆ foo +│ xy█ +└ ", "", "", "", - "◇ foo -│ xy", + "◇ foo +xy", " ", "", @@ -245,35 +245,35 @@ exports[`text (isCI = false) > validation errors render and clear (using Error) exports[`text (isCI = false) > validation errors render and clear 1`] = ` [ "", - "│ -◆ foo -│ _ -└ + "│ +◆ foo +│ _ +└ ", "", "", "", - "│ x█", + "│ x█", "", "", "", "", - "▲ foo -│ x█ -└ should be xy + "▲ foo +│ x█ +should be xy ", "", "", "", - "◆ foo -│ xy█ -└ + "◆ foo +│ xy█ +└ ", "", "", "", - "◇ foo -│ xy", + "◇ foo +xy", " ", "", @@ -283,13 +283,13 @@ exports[`text (isCI = false) > validation errors render and clear 1`] = ` exports[`text (isCI = false) > withGuide: false removes guide 1`] = ` [ "", - "◆ foo + "◆ foo _ ", "", "", - "◇ foo + "◇ foo ", " ", @@ -300,10 +300,10 @@ exports[`text (isCI = false) > withGuide: false removes guide 1`] = ` exports[`text (isCI = true) > can be aborted by a signal 1`] = ` [ "", - "│ -◆ foo -│ _ -└ + "│ +◆ foo +│ _ +└ ", " ", @@ -314,16 +314,16 @@ exports[`text (isCI = true) > can be aborted by a signal 1`] = ` exports[`text (isCI = true) > can cancel 1`] = ` [ "", - "│ -◆ foo -│ _ -└ + "│ +◆ foo +│ _ +└ ", "", "", "", - "■ foo -│", + "■ foo +│", " ", "", @@ -333,16 +333,16 @@ exports[`text (isCI = true) > can cancel 1`] = ` exports[`text (isCI = true) > defaultValue sets the value but does not render 1`] = ` [ "", - "│ -◆ foo -│ _ -└ + "│ +◆ foo +│ _ +└ ", "", "", "", - "◇ foo -│ bar", + "◇ foo +bar", " ", "", @@ -352,16 +352,16 @@ exports[`text (isCI = true) > defaultValue sets the value but does not render 1` exports[`text (isCI = true) > empty string when no value and no default 1`] = ` [ "", - "│ -◆ foo -│   (hit Enter to use default) -└ + "│ +◆ foo +│   (hit Enter to use default) +└ ", "", "", "", - "◇ foo -│", + "◇ foo +│", " ", "", @@ -371,13 +371,13 @@ exports[`text (isCI = true) > empty string when no value and no default 1`] = ` exports[`text (isCI = true) > global withGuide: false removes guide 1`] = ` [ "", - "◆ foo + "◆ foo _ ", "", "", - "◇ foo + "◇ foo ", " ", @@ -388,16 +388,16 @@ exports[`text (isCI = true) > global withGuide: false removes guide 1`] = ` exports[`text (isCI = true) > placeholder is not used as value when pressing enter 1`] = ` [ "", - "│ -◆ foo -│   (hit Enter to use default) -└ + "│ +◆ foo +│   (hit Enter to use default) +└ ", "", "", "", - "◇ foo -│ default-value", + "◇ foo +default-value", " ", "", @@ -407,27 +407,27 @@ exports[`text (isCI = true) > placeholder is not used as value when pressing ent exports[`text (isCI = true) > renders cancelled value if one set 1`] = ` [ "", - "│ -◆ foo -│ _ -└ + "│ +◆ foo +│ _ +└ ", "", "", "", - "│ x█", + "│ x█", "", "", "", "", - "│ xy█", + "│ xy█", "", "", "", "", - "■ foo -│ xy -│", + "■ foo +│ xy +│", " ", "", @@ -437,16 +437,16 @@ exports[`text (isCI = true) > renders cancelled value if one set 1`] = ` exports[`text (isCI = true) > renders message 1`] = ` [ "", - "│ -◆ foo -│ _ -└ + "│ +◆ foo +│ _ +└ ", "", "", "", - "◇ foo -│", + "◇ foo +│", " ", "", @@ -456,16 +456,16 @@ exports[`text (isCI = true) > renders message 1`] = ` exports[`text (isCI = true) > renders placeholder if set 1`] = ` [ "", - "│ -◆ foo -│ bar -└ + "│ +◆ foo +│ bar +└ ", "", "", "", - "◇ foo -│", + "◇ foo +│", " ", "", @@ -475,26 +475,26 @@ exports[`text (isCI = true) > renders placeholder if set 1`] = ` exports[`text (isCI = true) > renders submitted value 1`] = ` [ "", - "│ -◆ foo -│ _ -└ + "│ +◆ foo +│ _ +└ ", "", "", "", - "│ x█", + "│ x█", "", "", "", "", - "│ xy█", + "│ xy█", "", "", "", "", - "◇ foo -│ xy", + "◇ foo +xy", " ", "", @@ -504,35 +504,35 @@ exports[`text (isCI = true) > renders submitted value 1`] = ` exports[`text (isCI = true) > validation errors render and clear (using Error) 1`] = ` [ "", - "│ -◆ foo -│ _ -└ + "│ +◆ foo +│ _ +└ ", "", "", "", - "│ x█", + "│ x█", "", "", "", "", - "▲ foo -│ x█ -└ should be xy + "▲ foo +│ x█ +should be xy ", "", "", "", - "◆ foo -│ xy█ -└ + "◆ foo +│ xy█ +└ ", "", "", "", - "◇ foo -│ xy", + "◇ foo +xy", " ", "", @@ -542,35 +542,35 @@ exports[`text (isCI = true) > validation errors render and clear (using Error) 1 exports[`text (isCI = true) > validation errors render and clear 1`] = ` [ "", - "│ -◆ foo -│ _ -└ + "│ +◆ foo +│ _ +└ ", "", "", "", - "│ x█", + "│ x█", "", "", "", "", - "▲ foo -│ x█ -└ should be xy + "▲ foo +│ x█ +should be xy ", "", "", "", - "◆ foo -│ xy█ -└ + "◆ foo +│ xy█ +└ ", "", "", "", - "◇ foo -│ xy", + "◇ foo +xy", " ", "", @@ -580,13 +580,13 @@ exports[`text (isCI = true) > validation errors render and clear 1`] = ` exports[`text (isCI = true) > withGuide: false removes guide 1`] = ` [ "", - "◆ foo + "◆ foo _ ", "", "", - "◇ foo + "◇ foo ", " ", diff --git a/packages/prompts/test/date.test.ts b/packages/prompts/test/date.test.ts index 59490052..fbf6a622 100644 --- a/packages/prompts/test/date.test.ts +++ b/packages/prompts/test/date.test.ts @@ -167,7 +167,7 @@ describe.each(['true', 'false'])('date (isCI = %s)', (isCI) => { await new Promise((r) => setImmediate(r)); const hasError = output.buffer.some( - (s) => typeof s === 'string' && s.includes('Date must be on or after') + (s) => typeof s === 'string' && s.includes('Date must be on or after'), ); expect(hasError).toBe(true); diff --git a/packages/prompts/test/path.test.ts b/packages/prompts/test/path.test.ts index 5c1fe1f9..f2fef78c 100644 --- a/packages/prompts/test/path.test.ts +++ b/packages/prompts/test/path.test.ts @@ -33,7 +33,7 @@ describe.each(['true', 'false'])('text (isCI = %s)', (isCI) => { './root.zip': '6', './bar': '7', }, - '/tmp' + '/tmp', ); }); diff --git a/packages/prompts/test/progress-bar.test.ts b/packages/prompts/test/progress-bar.test.ts index a64061c8..c6215e46 100644 --- a/packages/prompts/test/progress-bar.test.ts +++ b/packages/prompts/test/progress-bar.test.ts @@ -325,7 +325,7 @@ describe.each(['true', 'false'])('prompts - progress (isCI = %s)', (isCI) => { result.stop(); expect(output.buffer).toMatchSnapshot(); - } + }, ); }); }); diff --git a/packages/prompts/test/test-utils.ts b/packages/prompts/test/test-utils.ts index 414ce247..4019176f 100644 --- a/packages/prompts/test/test-utils.ts +++ b/packages/prompts/test/test-utils.ts @@ -9,7 +9,7 @@ export class MockWritable extends Writable { _write( chunk: any, _encoding: BufferEncoding, - callback: (error?: Error | null | undefined) => void + callback: (error?: Error | null | undefined) => void, ): void { this.buffer.push(chunk.toString()); callback(); diff --git a/packages/prompts/vitest.config.ts b/packages/prompts/vitest.config.ts deleted file mode 100644 index fd3a35a4..00000000 --- a/packages/prompts/vitest.config.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { defineConfig } from 'vitest/config'; - -export default defineConfig({ - test: { - env: { - FORCE_COLOR: '1', - }, - snapshotSerializers: ['vitest-ansi-serializer'], - }, -}); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 15cb5248..243cd07d 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -8,9 +8,9 @@ importers: .: devDependencies: - '@biomejs/biome': - specifier: ^2.1.2 - version: 2.1.2 + '@bomb.sh/tools': + specifier: https://pkg.pr.new/@bomb.sh/tools@400d677 + version: https://pkg.pr.new/@bomb.sh/tools@400d677(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@20.19.39)(jiti@2.6.1)(oxc-resolver@11.19.1(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0))(typescript@6.0.3)(yaml@2.8.3) '@changesets/cli': specifier: ^2.29.5 version: 2.29.5 @@ -20,15 +20,9 @@ importers: jsr: specifier: ^0.13.4 version: 0.13.4 - knip: - specifier: ^5.62.0 - version: 5.62.0(@types/node@20.19.39)(typescript@6.0.3) typescript: specifier: ^6.0.3 version: 6.0.3 - unbuild: - specifier: ^3.6.0 - version: 3.6.0(typescript@6.0.3) examples/basic: dependencies: @@ -66,10 +60,6 @@ importers: sisteransi: specifier: ^1.0.5 version: 1.0.5 - devDependencies: - vitest: - specifier: ^3.2.4 - version: 3.2.4(@types/node@20.19.39)(jiti@2.5.0) packages/prompts: dependencies: @@ -92,83 +82,41 @@ importers: memfs: specifier: ^4.17.2 version: 4.17.2 - vitest: - specifier: ^3.2.4 - version: 3.2.4(@types/node@20.19.39)(jiti@2.5.0) - vitest-ansi-serializer: - specifier: ^0.1.2 - version: 0.1.2(vitest@3.2.4(@types/node@20.19.39)(jiti@2.5.0)) packages: - '@babel/code-frame@7.26.2': - resolution: {integrity: sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==} - engines: {node: '>=6.9.0'} + '@babel/generator@8.0.0-rc.3': + resolution: {integrity: sha512-em37/13/nR320G4jab/nIIHZgc2Wz2y/D39lxnTyxB4/D/omPQncl/lSdlnJY1OhQcRGugTSIF2l/69o31C9dA==} + engines: {node: ^20.19.0 || >=22.12.0} - '@babel/helper-validator-identifier@7.25.9': - resolution: {integrity: sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==} - engines: {node: '>=6.9.0'} + '@babel/helper-string-parser@8.0.0-rc.3': + resolution: {integrity: sha512-AmwWFx1m8G/a5cXkxLxTiWl+YEoWuoFLUCwqMlNuWO1tqAYITQAbCRPUkyBHv1VOFgfjVOqEj6L3u15J5ZCzTA==} + engines: {node: ^20.19.0 || >=22.12.0} - '@babel/runtime@7.28.2': - resolution: {integrity: sha512-KHp2IflsnGywDjBWDkR9iEqiWSpc8GIi0lgTT3mOElT0PP1tG26P4tmFI2YvAdzgq9RGyoHZQEIEdZy6Ec5xCA==} - engines: {node: '>=6.9.0'} + '@babel/helper-validator-identifier@8.0.0-rc.3': + resolution: {integrity: sha512-8AWCJ2VJJyDFlGBep5GpaaQ9AAaE/FjAcrqI7jyssYhtL7WGV0DOKpJsQqM037xDbpRLHXsY8TwU7zDma7coOw==} + engines: {node: ^20.19.0 || >=22.12.0} - '@biomejs/biome@2.1.2': - resolution: {integrity: sha512-yq8ZZuKuBVDgAS76LWCfFKHSYIAgqkxVB3mGVVpOe2vSkUTs7xG46zXZeNPRNVjiJuw0SZ3+J2rXiYx0RUpfGg==} - engines: {node: '>=14.21.3'} + '@babel/parser@8.0.0-rc.3': + resolution: {integrity: sha512-B20dvP3MfNc/XS5KKCHy/oyWl5IA6Cn9YjXRdDlCjNmUFrjvLXMNUfQq/QUy9fnG2gYkKKcrto2YaF9B32ToOQ==} + engines: {node: ^20.19.0 || >=22.12.0} hasBin: true - '@biomejs/cli-darwin-arm64@2.1.2': - resolution: {integrity: sha512-leFAks64PEIjc7MY/cLjE8u5OcfBKkcDB0szxsWUB4aDfemBep1WVKt0qrEyqZBOW8LPHzrFMyDl3FhuuA0E7g==} - engines: {node: '>=14.21.3'} - cpu: [arm64] - os: [darwin] - - '@biomejs/cli-darwin-x64@2.1.2': - resolution: {integrity: sha512-Nmmv7wRX5Nj7lGmz0FjnWdflJg4zii8Ivruas6PBKzw5SJX/q+Zh2RfnO+bBnuKLXpj8kiI2x2X12otpH6a32A==} - engines: {node: '>=14.21.3'} - cpu: [x64] - os: [darwin] - - '@biomejs/cli-linux-arm64-musl@2.1.2': - resolution: {integrity: sha512-qgHvafhjH7Oca114FdOScmIKf1DlXT1LqbOrrbR30kQDLFPEOpBG0uzx6MhmsrmhGiCFCr2obDamu+czk+X0HQ==} - engines: {node: '>=14.21.3'} - cpu: [arm64] - os: [linux] - libc: [musl] - - '@biomejs/cli-linux-arm64@2.1.2': - resolution: {integrity: sha512-NWNy2Diocav61HZiv2enTQykbPP/KrA/baS7JsLSojC7Xxh2nl9IczuvE5UID7+ksRy2e7yH7klm/WkA72G1dw==} - engines: {node: '>=14.21.3'} - cpu: [arm64] - os: [linux] - libc: [glibc] - - '@biomejs/cli-linux-x64-musl@2.1.2': - resolution: {integrity: sha512-xlB3mU14ZUa3wzLtXfmk2IMOGL+S0aHFhSix/nssWS/2XlD27q+S6f0dlQ8WOCbYoXcuz8BCM7rCn2lxdTrlQA==} - engines: {node: '>=14.21.3'} - cpu: [x64] - os: [linux] - libc: [musl] + '@babel/runtime@7.28.2': + resolution: {integrity: sha512-KHp2IflsnGywDjBWDkR9iEqiWSpc8GIi0lgTT3mOElT0PP1tG26P4tmFI2YvAdzgq9RGyoHZQEIEdZy6Ec5xCA==} + engines: {node: '>=6.9.0'} - '@biomejs/cli-linux-x64@2.1.2': - resolution: {integrity: sha512-Km/UYeVowygTjpX6sGBzlizjakLoMQkxWbruVZSNE6osuSI63i4uCeIL+6q2AJlD3dxoiBJX70dn1enjQnQqwA==} - engines: {node: '>=14.21.3'} - cpu: [x64] - os: [linux] - libc: [glibc] + '@babel/types@8.0.0-rc.3': + resolution: {integrity: sha512-mOm5ZrYmphGfqVWoH5YYMTITb3cDXsFgmvFlvkvWDMsR9X8RFnt7a0Wb6yNIdoFsiMO9WjYLq+U/FMtqIYAF8Q==} + engines: {node: ^20.19.0 || >=22.12.0} - '@biomejs/cli-win32-arm64@2.1.2': - resolution: {integrity: sha512-G8KWZli5ASOXA3yUQgx+M4pZRv3ND16h77UsdunUL17uYpcL/UC7RkWTdkfvMQvogVsAuz5JUcBDjgZHXxlKoA==} - engines: {node: '>=14.21.3'} - cpu: [arm64] - os: [win32] + '@bomb.sh/args@0.3.1': + resolution: {integrity: sha512-CwxKrfgcorUPP6KfYD59aRdBYWBTsfsxT+GmoLVnKo5Tmyoqbpo0UNcjngRMyU+6tiPbd18RuIYxhgAn44wU/Q==} - '@biomejs/cli-win32-x64@2.1.2': - resolution: {integrity: sha512-9zajnk59PMpjBkty3bK2IrjUsUHvqe9HWwyAWQBjGLE7MIBjbX2vwv1XPEhmO2RRuGoTkVx3WCanHrjAytICLA==} - engines: {node: '>=14.21.3'} - cpu: [x64] - os: [win32] + '@bomb.sh/tools@https://pkg.pr.new/@bomb.sh/tools@400d677': + resolution: {integrity: sha512-jQ8tLtkVKzma5jWFuu25h7CTD1uXW9j0K306KOTljLRpgyZGX0qY0rDiI1liN/OLSjwt4+91z71OHHYn5WPksg==, tarball: https://pkg.pr.new/@bomb.sh/tools@400d677} + version: 0.4.2 + hasBin: true '@changesets/apply-release-plan@7.0.12': resolution: {integrity: sha512-EaET7As5CeuhTzvXTQCRZeBUcisoYPDDcXvgTE/2jmmypKp0RC7LxKj/yzqeh/1qFTZI7oDGFcL1PHRuQuketQ==} @@ -225,14 +173,14 @@ packages: '@changesets/write@0.4.0': resolution: {integrity: sha512-CdTLvIOPiCNuH71pyDu3rA+Q0n65cmAbXnwWH84rKGiFumFzkmHNT8KHTMEchcxN+Kl8I54xGUhJ7l3E7X396Q==} - '@emnapi/core@1.4.5': - resolution: {integrity: sha512-XsLw1dEOpkSX/WucdqUhPWP7hDxSvZiY+fsUC14h+FtQ2Ifni4znbBt8punRX+Uj2JG/uDb8nEHVKvrVlvdZ5Q==} + '@emnapi/core@1.10.0': + resolution: {integrity: sha512-yq6OkJ4p82CAfPl0u9mQebQHKPJkY7WrIuk205cTYnYe+k2Z8YBh11FrbRG/H6ihirqcacOgl2BIO8oyMQLeXw==} - '@emnapi/runtime@1.4.5': - resolution: {integrity: sha512-++LApOtY0pEEz1zrd9vy1/zXVaVJJ/EbAF3u0fXIzPJEDtnITsBGbbK0EkM72amhl/R5b+5xx0Y/QhcVOpuulg==} + '@emnapi/runtime@1.10.0': + resolution: {integrity: sha512-ewvYlk86xUoGI0zQRNq/mC+16R1QeDlKQy21Ki3oSYXNgLb45GV1P6A0M+/s6nyCuNDqe5VpaY84BzXGwVbwFA==} - '@emnapi/wasi-threads@1.0.4': - resolution: {integrity: sha512-PJR+bOmMOPH8AtcTGAyYNiuJ3/Fcoj2XN/gBEWzDIKh254XO+mM9XoXHk5GNEhodxeMznbg7BlRojVbKN+gC6g==} + '@emnapi/wasi-threads@1.2.1': + resolution: {integrity: sha512-uTII7OYF+/Mes/MrcIOYp5yOtSMLBWSIoLPpcgwipoiKbli6k322tcoFsxoIIxPDqW01SQGAgko4EzZi2BNv2w==} '@esbuild/aix-ppc64@0.25.8': resolution: {integrity: sha512-urAvrUedIqEiFR3FYSLTWQgLu5tb+m0qZw0NBEasUeo6wuqatkMDaRT+1uABiGXEu5vqgPd7FGE1BhsAIy9QVA==} @@ -390,8 +338,34 @@ packages: cpu: [x64] os: [win32] - '@jridgewell/sourcemap-codec@1.5.0': - resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} + '@humanfs/core@0.19.1': + resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==} + engines: {node: '>=18.18.0'} + + '@humanfs/node@0.16.7': + resolution: {integrity: sha512-/zUx+yOsIrG4Y43Eh2peDeKCxlRt/gET6aHfaKpuq267qXdYDFViVHfMaLyygZOnl0kGWxFIgsBy8QFuTLUXEQ==} + engines: {node: '>=18.18.0'} + + '@humanfs/types@0.15.0': + resolution: {integrity: sha512-ZZ1w0aoQkwuUuC7Yf+7sdeaNfqQiiLcSRbfI08oAxqLtpXQr9AIVX7Ay7HLDuiLYAaFPu8oBYNq/QIi9URHJ3Q==} + engines: {node: '>=18.18.0'} + + '@humanwhocodes/retry@0.4.3': + resolution: {integrity: sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==} + engines: {node: '>=18.18'} + + '@jridgewell/gen-mapping@0.3.13': + resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==} + + '@jridgewell/resolve-uri@3.1.2': + resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} + engines: {node: '>=6.0.0'} + + '@jridgewell/sourcemap-codec@1.5.5': + resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==} + + '@jridgewell/trace-mapping@0.3.31': + resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==} '@jsonjoy.com/base64@1.1.2': resolution: {integrity: sha512-q6XAnWQDIMA3+FTiOYajoYqySkO+JSat0ytXGSuRdq9uXE7o92gzuQwQM14xaCRlBLGq3v5miDGC4vkVTn54xA==} @@ -417,8 +391,11 @@ packages: '@manypkg/get-packages@1.1.3': resolution: {integrity: sha512-fo+QhuU3qE/2TQMQmbVMqaQ6EWbMhi4ABWP+O4AM1NqPBuy0OrApV5LO6BrrgnhtAHS2NH6RrVk9OL181tTi8A==} - '@napi-rs/wasm-runtime@1.0.1': - resolution: {integrity: sha512-KVlQ/jgywZpixGCKMNwxStmmbYEMyokZpCf2YuIChhfJA2uqfAKNEM8INz7zzTo55iEXfBhIIs3VqYyqzDLj8g==} + '@napi-rs/wasm-runtime@1.1.4': + resolution: {integrity: sha512-3NQNNgA1YSlJb/kMH1ildASP9HW7/7kYnRI2szWJaofaS1hWmbGI4H+d3+22aGzXXN9IJ+n+GiFVcGipJP18ow==} + peerDependencies: + '@emnapi/core': ^1.7.1 + '@emnapi/runtime': ^1.7.1 '@nodelib/fs.scandir@2.1.5': resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} @@ -432,425 +409,858 @@ packages: resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} engines: {node: '>= 8'} - '@oxc-resolver/binding-android-arm-eabi@11.6.0': - resolution: {integrity: sha512-UJTf5uZs919qavt9Btvbzkr3eaUu4d+FXBri8AB2BtOezriaTTUvArab2K9fdACQ4yFggTD5ews1l19V/6SW2Q==} + '@oxc-parser/binding-android-arm-eabi@0.128.0': + resolution: {integrity: sha512-aca6ZvzmCBUGOANQRiRQRZuRKYI3ENhcit6GisnknOOmcezfQc7xJ4dxlPU7MV7mOvrC7RNR1u3LAD7xyaiCxA==} + engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [android] - '@oxc-resolver/binding-android-arm64@11.6.0': - resolution: {integrity: sha512-v17j1WLEAIlyc+6JOWPXcky7dkU3fN8nHTP8KSK05zkkBO0t28R3Q0udmNBiJtVSnw4EFB/fy/3Mu2ItpG6bVQ==} + '@oxc-parser/binding-android-arm64@0.128.0': + resolution: {integrity: sha512-BbeDmuohoJ7Rz/it5wnkj69i/OsCPS3Z51nLEzwO/Y6YshtC4JU+15oNwhY8v4LRKRYclRc7ggOikwrsJ/eOEQ==} + engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [android] - '@oxc-resolver/binding-darwin-arm64@11.6.0': - resolution: {integrity: sha512-ZrU+qd5AKe8s7PZDLCHY23UpbGn1RAkcNd4JYjOTnX22XEjSqLvyC6pCMngTyfgGVJ4zXFubBkRzt/k3xOjNlQ==} + '@oxc-parser/binding-darwin-arm64@0.128.0': + resolution: {integrity: sha512-tRUHPt80417QmvNpoSslJT1VY8NUbWdrWR+L14Zn+RbOTcaqB8E6PYE/ZGN8jjWBzqporiA/H4MfO50ew/NCNA==} + engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [darwin] - '@oxc-resolver/binding-darwin-x64@11.6.0': - resolution: {integrity: sha512-qBIlX0X0RSxQHcXQnFpBGKxrDVtj7OdpWFGmrcR3NcndVjZ/wJRPST5uTTM83NfsHyuUeOi/vRZjmDrthvhnSQ==} + '@oxc-parser/binding-darwin-x64@0.128.0': + resolution: {integrity: sha512-rWI2Hb1Nt3U/vKsjyNvZzDC8i/l144U20DKjhzaTmwIhIiSRGeroPWWiImwypmKLqrw8GuIixbWJkpGWLbkzrQ==} + engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [darwin] - '@oxc-resolver/binding-freebsd-x64@11.6.0': - resolution: {integrity: sha512-tTyMlHHNhbkq/oEP/fM8hPZ6lqntHIz6EfOt577/lslrwxC5a/ii0lOOHjPuQtkurpyUBWYPs7Z17EgrZulc4Q==} + '@oxc-parser/binding-freebsd-x64@0.128.0': + resolution: {integrity: sha512-hhpdVMaNCLgQxjgNPeeFzSeJMmZPc5lKfv0NGSI3egZq9EdnEGqeC8JsYsQjK7PoQgbvZ17xlj0SO5ziH5Obkg==} + engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [freebsd] - '@oxc-resolver/binding-linux-arm-gnueabihf@11.6.0': - resolution: {integrity: sha512-tYinHy5k9/rujo21mG2jZckJJD7fsceNDl5HOl/eh5NPjSt2vXQv181PVKeITw3+3i+gI1d666w5EtgpiCegRA==} + '@oxc-parser/binding-linux-arm-gnueabihf@0.128.0': + resolution: {integrity: sha512-093zNw0zZ/e/obML+rhlSdmnzR0mVZluPcAkxunEc5E3F0yBVsFn24Y1ILfsEte11Ud041qn/gp2OJ1jxNqUng==} + engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [linux] - '@oxc-resolver/binding-linux-arm-musleabihf@11.6.0': - resolution: {integrity: sha512-aOlGlSiT9fBgSyiIWvSxbyzaBx3XrgCy6UJRrqBkIvMO9D7W90JmV0RsiLua4w43zJSSrfuQQWqmFCwgIib3Iw==} + '@oxc-parser/binding-linux-arm-musleabihf@0.128.0': + resolution: {integrity: sha512-fq7DmKmfC+dvD97IXrgbph6Jzwe0EDu+PYMofmzZ6fv5X1k9vtaqLpDGMuICO9MmUnyKAQmVl+wIv2RNy4Dz8g==} + engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [linux] - '@oxc-resolver/binding-linux-arm64-gnu@11.6.0': - resolution: {integrity: sha512-EZ/OuxZA9qQoAANBDb9V4krfYXU3MC+LZ9qY+cE0yMYMIxm7NT5AdR0OaRQqfa3tWIbina1VF7FaMR6rpKvmlA==} + '@oxc-parser/binding-linux-arm64-gnu@0.128.0': + resolution: {integrity: sha512-Xvm48jJah8TlIrURIjNOP/gNiGe6aKvCB+r06VliflFo8Kq7VOLE8PxtgShJzZIqubrgdMdYfvuPPozn7F6MbQ==} + engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] libc: [glibc] - '@oxc-resolver/binding-linux-arm64-musl@11.6.0': - resolution: {integrity: sha512-NpF7sID4NnPetpqDk2eOu6TPUt381Qlpos8nGDcSkAluqSsSGFOPfETEB5VbJeqNVQbepEQX9mOxZygFpW0+nA==} + '@oxc-parser/binding-linux-arm64-musl@0.128.0': + resolution: {integrity: sha512-M7iwBGmYJTx+pKOYFjI0buop4gJvlmcVzFGaXPt21DKpQkbQZG1f63Yg7LloIYT/t9yLxCw0Lhfx/RFlAlMSjA==} + engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] libc: [musl] - '@oxc-resolver/binding-linux-ppc64-gnu@11.6.0': - resolution: {integrity: sha512-Sqn9Ha4rxCCpjpfkFi9f9y9phsaBnseaKw+JqHgBQoNMToe+/20A1jwIu9OX+484UuLpduM+wLydgngjnoi7Dg==} + '@oxc-parser/binding-linux-ppc64-gnu@0.128.0': + resolution: {integrity: sha512-21LGNIZb1Pcfk5/EGsqabrxv4yqQOWis1407JJrClS7XpFCrbvr74YAB1V+m54cYbwvO6UWwQqS4WecxiyfCRg==} + engines: {node: ^20.19.0 || >=22.12.0} cpu: [ppc64] os: [linux] libc: [glibc] - '@oxc-resolver/binding-linux-riscv64-gnu@11.6.0': - resolution: {integrity: sha512-eFoNcPhImp1FLAQf5U3Nlph4WNWEsdWohSThSTtKPrX+jhPZiVsj3iBC9gjaRwq2Ez4QhP1x7/PSL6mtKnS6rw==} + '@oxc-parser/binding-linux-riscv64-gnu@0.128.0': + resolution: {integrity: sha512-gyHjOTFpg9bTTYjxPmQirvufb89+VdZwVfcMtAUyPr6F5H8ZswvCQshK4qOW+Q+2Xyb33hduRgY/eFHJQjU/vQ==} + engines: {node: ^20.19.0 || >=22.12.0} cpu: [riscv64] os: [linux] libc: [glibc] - '@oxc-resolver/binding-linux-riscv64-musl@11.6.0': - resolution: {integrity: sha512-WQw3CT10aJg7SIc/X1QPrh6lTx2wOLg5IaCu/+Mqlxf1nZBEW3+tV/+y3PzXG0MCRhq7FDTiHaW8MBVAwBineQ==} + '@oxc-parser/binding-linux-riscv64-musl@0.128.0': + resolution: {integrity: sha512-X6Q2oKUrP5GyDd2xniuEBLk6aFQCZ97W2+aVXGgJXdjx5t4/oFuA9ri0wLOUrBIX+qdSuK581snMBio4z910eA==} + engines: {node: ^20.19.0 || >=22.12.0} cpu: [riscv64] os: [linux] libc: [musl] - '@oxc-resolver/binding-linux-s390x-gnu@11.6.0': - resolution: {integrity: sha512-p5qcPr/EtGJ2PpeeArL3ifZU/YljWLypeu38+e19z2dyPv8Aoby8tjM+D1VTI8+suMwTkseyove/uu6zIUiqRw==} + '@oxc-parser/binding-linux-s390x-gnu@0.128.0': + resolution: {integrity: sha512-BdzTmqxfxoYkpgokoLaSnOX6T+R3/goL42klre2tnG+kHbG2TXS0VN+P5BPofH1axdKOHy5ei4ENZrjmCOt2lA==} + engines: {node: ^20.19.0 || >=22.12.0} cpu: [s390x] os: [linux] libc: [glibc] - '@oxc-resolver/binding-linux-x64-gnu@11.6.0': - resolution: {integrity: sha512-/9M/ieoY5v54k3UjtF9Vw43WQ4bBfed+qRL1uIpFbZcO2qi5aXwVMYnjSd/BoaRtDs5JFV9iOjzHwpw0zdOYZA==} + '@oxc-parser/binding-linux-x64-gnu@0.128.0': + resolution: {integrity: sha512-OO1nW2Q7sSYYvJZpDHdvyFSdRaVcQqRijZSSmWVMqFxPYy8cEF45zJ9fcdIYuzIT3jYq6YRhEFm/VMWNWhE22Q==} + engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] libc: [glibc] - '@oxc-resolver/binding-linux-x64-musl@11.6.0': - resolution: {integrity: sha512-HMtWWHTU7zbwceTFZPAPMMhhWR1nNO2OR60r6i55VprCMvttTWPQl7uLP0AUtAPoU9B/2GqP48rzOuaaKhHnYw==} + '@oxc-parser/binding-linux-x64-musl@0.128.0': + resolution: {integrity: sha512-4NehAe404MRdoZVS9DW8C5XbJwbXIc/KfVlYdpi5vE4081zc9Y0YzKVqyOYj/Puye7/Do+ohaONBFWlEHYl9hw==} + engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] libc: [musl] - '@oxc-resolver/binding-wasm32-wasi@11.6.0': - resolution: {integrity: sha512-rDAwr2oqmnG/6LSZJwvO3Bmt/RC3/Q6myyaUmg3P7GhZDyFPrWJONB7NFhPwU2Q4JIpA73ST4LBdhzmGxMTmrw==} - engines: {node: '>=14.0.0'} + '@oxc-parser/binding-openharmony-arm64@0.128.0': + resolution: {integrity: sha512-kVbqgW9xLL8bh8oc7aYOJilRKXE5G33+tE0jan+duo/9OriaFRpijcCwT2waWs2oqYROYq0GlE7/p3ywoshVeg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [openharmony] + + '@oxc-parser/binding-wasm32-wasi@0.128.0': + resolution: {integrity: sha512-L38ojghJYHmgiz6fJd7jwLB/ESDBpB02NdFxh+smqVM6P2anCEvHn0jhaSrt5eVNR1Ak8+moOeftUlofeyvniA==} + engines: {node: ^20.19.0 || >=22.12.0} cpu: [wasm32] - '@oxc-resolver/binding-win32-arm64-msvc@11.6.0': - resolution: {integrity: sha512-COzy8weljZo2lObWl6ZzW6ypDx1v1rtLdnt7JPjTUARikK1gMzlz9kouQhCtCegNFILx2L2oWw7714fnchqujw==} + '@oxc-parser/binding-win32-arm64-msvc@0.128.0': + resolution: {integrity: sha512-xgvO35GyHBtjlQ5AEpaYr7Rll1rvY7zqIhT6ty8E3ezBW2J1SFLjIDEvI/tcgDg6oaseDAqVcM+jU1HuCekgZw==} + engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [win32] - '@oxc-resolver/binding-win32-ia32-msvc@11.6.0': - resolution: {integrity: sha512-p2tMRdi91CovjLBApDPD/uEy1/5r7U6iVkfagLYDytgvj6nJ1EAxLUdXbhoe6//50IvDC/5I51nGCdxmOUiXlQ==} + '@oxc-parser/binding-win32-ia32-msvc@0.128.0': + resolution: {integrity: sha512-OY+3eM2SN72prHKRB22mPz8o5A/7dJ+f5DFLBVvggyZhEaNDAH9IB+ElMjmOkOIwf5MDCUAowCK7pAncNxzpBA==} + engines: {node: ^20.19.0 || >=22.12.0} cpu: [ia32] os: [win32] - '@oxc-resolver/binding-win32-x64-msvc@11.6.0': - resolution: {integrity: sha512-p6b9q5TACd/y39kDK2HENXqd4lThoVrTkxdvizqd5/VwyHcoSd0cDcIEhHpxvfjc83VsODCBgB/zcjp//TlaqA==} + '@oxc-parser/binding-win32-x64-msvc@0.128.0': + resolution: {integrity: sha512-NE9ny+cPUCCObXa0IKLfj0tCdPd7pe/dz9ZpkxpUOymB3miNeMPybdlYYTBSGJUalMWeBM85/4JcCErCNTqOXw==} + engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [win32] - '@rollup/plugin-alias@5.1.1': - resolution: {integrity: sha512-PR9zDb+rOzkRb2VD+EuKB7UC41vU5DIwZ5qqCpk0KJudcWAyi8rvYOhS7+L5aZCspw1stTViLgN5v6FF1p5cgQ==} - engines: {node: '>=14.0.0'} - peerDependencies: - rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 - peerDependenciesMeta: - rollup: - optional: true - - '@rollup/plugin-commonjs@28.0.6': - resolution: {integrity: sha512-XSQB1K7FUU5QP+3lOQmVCE3I0FcbbNvmNT4VJSj93iUjayaARrTQeoRdiYQoftAJBLrR9t2agwAd3ekaTgHNlw==} - engines: {node: '>=16.0.0 || 14 >= 14.17'} - peerDependencies: - rollup: ^2.68.0||^3.0.0||^4.0.0 - peerDependenciesMeta: - rollup: - optional: true - - '@rollup/plugin-json@6.1.0': - resolution: {integrity: sha512-EGI2te5ENk1coGeADSIwZ7G2Q8CJS2sF120T7jLw4xFw9n7wIOXHo+kIYRAoVpJAN+kmqZSoO3Fp4JtoNF4ReA==} - engines: {node: '>=14.0.0'} - peerDependencies: - rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 - peerDependenciesMeta: - rollup: - optional: true - - '@rollup/plugin-node-resolve@16.0.1': - resolution: {integrity: sha512-tk5YCxJWIG81umIvNkSod2qK5KyQW19qcBF/B78n1bjtOON6gzKoVeSzAE8yHCZEDmqkHKkxplExA8KzdJLJpA==} - engines: {node: '>=14.0.0'} - peerDependencies: - rollup: ^2.78.0||^3.0.0||^4.0.0 - peerDependenciesMeta: - rollup: - optional: true - - '@rollup/plugin-replace@6.0.2': - resolution: {integrity: sha512-7QaYCf8bqF04dOy7w/eHmJeNExxTYwvKAmlSAH/EaWWUzbT0h5sbF6bktFoX/0F/0qwng5/dWFMyf3gzaM8DsQ==} - engines: {node: '>=14.0.0'} - peerDependencies: - rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 - peerDependenciesMeta: - rollup: - optional: true + '@oxc-project/types@0.127.0': + resolution: {integrity: sha512-aIYXQBo4lCbO4z0R3FHeucQHpF46l2LbMdxRvqvuRuW2OxdnSkcng5B8+K12spgLDj93rtN3+J2Vac/TIO+ciQ==} - '@rollup/pluginutils@5.2.0': - resolution: {integrity: sha512-qWJ2ZTbmumwiLFomfzTyt5Kng4hwPi9rwCYN4SHb6eaRU1KNO4ccxINHr/VhH4GgPlt1XfSTLX2LBTme8ne4Zw==} - engines: {node: '>=14.0.0'} - peerDependencies: - rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 - peerDependenciesMeta: - rollup: - optional: true + '@oxc-project/types@0.128.0': + resolution: {integrity: sha512-huv1Y/LzBJkBVHt3OlC7u0zHBW9qXf1FdD7sGmc1rXc2P1mTwHssYv7jyGx5KAACSCH+9B3Bhn6Z9luHRvf7pQ==} - '@rollup/rollup-android-arm-eabi@4.45.1': - resolution: {integrity: sha512-NEySIFvMY0ZQO+utJkgoMiCAjMrGvnbDLHvcmlA33UXJpYBCvlBEbMMtV837uCkS+plG2umfhn0T5mMAxGrlRA==} + '@oxc-resolver/binding-android-arm-eabi@11.19.1': + resolution: {integrity: sha512-aUs47y+xyXHUKlbhqHUjBABjvycq6YSD7bpxSW7vplUmdzAlJ93yXY6ZR0c1o1x5A/QKbENCvs3+NlY8IpIVzg==} cpu: [arm] os: [android] - '@rollup/rollup-android-arm64@4.45.1': - resolution: {integrity: sha512-ujQ+sMXJkg4LRJaYreaVx7Z/VMgBBd89wGS4qMrdtfUFZ+TSY5Rs9asgjitLwzeIbhwdEhyj29zhst3L1lKsRQ==} + '@oxc-resolver/binding-android-arm64@11.19.1': + resolution: {integrity: sha512-oolbkRX+m7Pq2LNjr/kKgYeC7bRDMVTWPgxBGMjSpZi/+UskVo4jsMU3MLheZV55jL6c3rNelPl4oD60ggYmqA==} cpu: [arm64] os: [android] - '@rollup/rollup-darwin-arm64@4.45.1': - resolution: {integrity: sha512-FSncqHvqTm3lC6Y13xncsdOYfxGSLnP+73k815EfNmpewPs+EyM49haPS105Rh4aF5mJKywk9X0ogzLXZzN9lA==} + '@oxc-resolver/binding-darwin-arm64@11.19.1': + resolution: {integrity: sha512-nUC6d2i3R5B12sUW4O646qD5cnMXf2oBGPLIIeaRfU9doJRORAbE2SGv4eW6rMqhD+G7nf2Y8TTJTLiiO3Q/dQ==} cpu: [arm64] os: [darwin] - '@rollup/rollup-darwin-x64@4.45.1': - resolution: {integrity: sha512-2/vVn/husP5XI7Fsf/RlhDaQJ7x9zjvC81anIVbr4b/f0xtSmXQTFcGIQ/B1cXIYM6h2nAhJkdMHTnD7OtQ9Og==} + '@oxc-resolver/binding-darwin-x64@11.19.1': + resolution: {integrity: sha512-cV50vE5+uAgNcFa3QY1JOeKDSkM/9ReIcc/9wn4TavhW/itkDGrXhw9jaKnkQnGbjJ198Yh5nbX/Gr2mr4Z5jQ==} cpu: [x64] os: [darwin] - '@rollup/rollup-freebsd-arm64@4.45.1': - resolution: {integrity: sha512-4g1kaDxQItZsrkVTdYQ0bxu4ZIQ32cotoQbmsAnW1jAE4XCMbcBPDirX5fyUzdhVCKgPcrwWuucI8yrVRBw2+g==} - cpu: [arm64] - os: [freebsd] - - '@rollup/rollup-freebsd-x64@4.45.1': - resolution: {integrity: sha512-L/6JsfiL74i3uK1Ti2ZFSNsp5NMiM4/kbbGEcOCps99aZx3g8SJMO1/9Y0n/qKlWZfn6sScf98lEOUe2mBvW9A==} + '@oxc-resolver/binding-freebsd-x64@11.19.1': + resolution: {integrity: sha512-xZOQiYGFxtk48PBKff+Zwoym7ScPAIVp4c14lfLxizO2LTTTJe5sx9vQNGrBymrf/vatSPNMD4FgsaaRigPkqw==} cpu: [x64] os: [freebsd] - '@rollup/rollup-linux-arm-gnueabihf@4.45.1': - resolution: {integrity: sha512-RkdOTu2jK7brlu+ZwjMIZfdV2sSYHK2qR08FUWcIoqJC2eywHbXr0L8T/pONFwkGukQqERDheaGTeedG+rra6Q==} + '@oxc-resolver/binding-linux-arm-gnueabihf@11.19.1': + resolution: {integrity: sha512-lXZYWAC6kaGe/ky2su94e9jN9t6M0/6c+GrSlCqL//XO1cxi5lpAhnJYdyrKfm0ZEr/c7RNyAx3P7FSBcBd5+A==} cpu: [arm] os: [linux] - libc: [glibc] - '@rollup/rollup-linux-arm-musleabihf@4.45.1': - resolution: {integrity: sha512-3kJ8pgfBt6CIIr1o+HQA7OZ9mp/zDk3ctekGl9qn/pRBgrRgfwiffaUmqioUGN9hv0OHv2gxmvdKOkARCtRb8Q==} + '@oxc-resolver/binding-linux-arm-musleabihf@11.19.1': + resolution: {integrity: sha512-veG1kKsuK5+t2IsO9q0DErYVSw2azvCVvWHnfTOS73WE0STdLLB7Q1bB9WR+yHPQM76ASkFyRbogWo1GR1+WbQ==} cpu: [arm] os: [linux] - libc: [musl] - '@rollup/rollup-linux-arm64-gnu@4.45.1': - resolution: {integrity: sha512-k3dOKCfIVixWjG7OXTCOmDfJj3vbdhN0QYEqB+OuGArOChek22hn7Uy5A/gTDNAcCy5v2YcXRJ/Qcnm4/ma1xw==} + '@oxc-resolver/binding-linux-arm64-gnu@11.19.1': + resolution: {integrity: sha512-heV2+jmXyYnUrpUXSPugqWDRpnsQcDm2AX4wzTuvgdlZfoNYO0O3W2AVpJYaDn9AG4JdM6Kxom8+foE7/BcSig==} cpu: [arm64] os: [linux] libc: [glibc] - '@rollup/rollup-linux-arm64-musl@4.45.1': - resolution: {integrity: sha512-PmI1vxQetnM58ZmDFl9/Uk2lpBBby6B6rF4muJc65uZbxCs0EA7hhKCk2PKlmZKuyVSHAyIw3+/SiuMLxKxWog==} + '@oxc-resolver/binding-linux-arm64-musl@11.19.1': + resolution: {integrity: sha512-jvo2Pjs1c9KPxMuMPIeQsgu0mOJF9rEb3y3TdpsrqwxRM+AN6/nDDwv45n5ZrUnQMsdBy5gIabioMKnQfWo9ew==} cpu: [arm64] os: [linux] libc: [musl] - '@rollup/rollup-linux-loongarch64-gnu@4.45.1': - resolution: {integrity: sha512-9UmI0VzGmNJ28ibHW2GpE2nF0PBQqsyiS4kcJ5vK+wuwGnV5RlqdczVocDSUfGX/Na7/XINRVoUgJyFIgipoRg==} - cpu: [loong64] - os: [linux] - libc: [glibc] - - '@rollup/rollup-linux-powerpc64le-gnu@4.45.1': - resolution: {integrity: sha512-7nR2KY8oEOUTD3pBAxIBBbZr0U7U+R9HDTPNy+5nVVHDXI4ikYniH1oxQz9VoB5PbBU1CZuDGHkLJkd3zLMWsg==} + '@oxc-resolver/binding-linux-ppc64-gnu@11.19.1': + resolution: {integrity: sha512-vLmdNxWCdN7Uo5suays6A/+ywBby2PWBBPXctWPg5V0+eVuzsJxgAn6MMB4mPlshskYbppjpN2Zg83ArHze9gQ==} cpu: [ppc64] os: [linux] libc: [glibc] - '@rollup/rollup-linux-riscv64-gnu@4.45.1': - resolution: {integrity: sha512-nlcl3jgUultKROfZijKjRQLUu9Ma0PeNv/VFHkZiKbXTBQXhpytS8CIj5/NfBeECZtY2FJQubm6ltIxm/ftxpw==} + '@oxc-resolver/binding-linux-riscv64-gnu@11.19.1': + resolution: {integrity: sha512-/b+WgR+VTSBxzgOhDO7TlMXC1ufPIMR6Vj1zN+/x+MnyXGW7prTLzU9eW85Aj7Th7CCEG9ArCbTeqxCzFWdg2w==} cpu: [riscv64] os: [linux] libc: [glibc] - '@rollup/rollup-linux-riscv64-musl@4.45.1': - resolution: {integrity: sha512-HJV65KLS51rW0VY6rvZkiieiBnurSzpzore1bMKAhunQiECPuxsROvyeaot/tcK3A3aGnI+qTHqisrpSgQrpgA==} + '@oxc-resolver/binding-linux-riscv64-musl@11.19.1': + resolution: {integrity: sha512-YlRdeWb9j42p29ROh+h4eg/OQ3dTJlpHSa+84pUM9+p6i3djtPz1q55yLJhgW9XfDch7FN1pQ/Vd6YP+xfRIuw==} cpu: [riscv64] os: [linux] libc: [musl] - '@rollup/rollup-linux-s390x-gnu@4.45.1': - resolution: {integrity: sha512-NITBOCv3Qqc6hhwFt7jLV78VEO/il4YcBzoMGGNxznLgRQf43VQDae0aAzKiBeEPIxnDrACiMgbqjuihx08OOw==} + '@oxc-resolver/binding-linux-s390x-gnu@11.19.1': + resolution: {integrity: sha512-EDpafVOQWF8/MJynsjOGFThcqhRHy417sRyLfQmeiamJ8qVhSKAn2Dn2VVKUGCjVB9C46VGjhNo7nOPUi1x6uA==} cpu: [s390x] os: [linux] libc: [glibc] - '@rollup/rollup-linux-x64-gnu@4.45.1': - resolution: {integrity: sha512-+E/lYl6qu1zqgPEnTrs4WysQtvc/Sh4fC2nByfFExqgYrqkKWp1tWIbe+ELhixnenSpBbLXNi6vbEEJ8M7fiHw==} + '@oxc-resolver/binding-linux-x64-gnu@11.19.1': + resolution: {integrity: sha512-NxjZe+rqWhr+RT8/Ik+5ptA3oz7tUw361Wa5RWQXKnfqwSSHdHyrw6IdcTfYuml9dM856AlKWZIUXDmA9kkiBQ==} cpu: [x64] os: [linux] libc: [glibc] - '@rollup/rollup-linux-x64-musl@4.45.1': - resolution: {integrity: sha512-a6WIAp89p3kpNoYStITT9RbTbTnqarU7D8N8F2CV+4Cl9fwCOZraLVuVFvlpsW0SbIiYtEnhCZBPLoNdRkjQFw==} + '@oxc-resolver/binding-linux-x64-musl@11.19.1': + resolution: {integrity: sha512-cM/hQwsO3ReJg5kR+SpI69DMfvNCp+A/eVR4b4YClE5bVZwz8rh2Nh05InhwI5HR/9cArbEkzMjcKgTHS6UaNw==} cpu: [x64] os: [linux] libc: [musl] - '@rollup/rollup-win32-arm64-msvc@4.45.1': - resolution: {integrity: sha512-T5Bi/NS3fQiJeYdGvRpTAP5P02kqSOpqiopwhj0uaXB6nzs5JVi2XMJb18JUSKhCOX8+UE1UKQufyD6Or48dJg==} + '@oxc-resolver/binding-openharmony-arm64@11.19.1': + resolution: {integrity: sha512-QF080IowFB0+9Rh6RcD19bdgh49BpQHUW5TajG1qvWHvmrQznTZZjYlgE2ltLXyKY+qs4F/v5xuX1XS7Is+3qA==} + cpu: [arm64] + os: [openharmony] + + '@oxc-resolver/binding-wasm32-wasi@11.19.1': + resolution: {integrity: sha512-w8UCKhX826cP/ZLokXDS6+milN8y4X7zidsAttEdWlVoamTNf6lhBJldaWr3ukTDiye7s4HRcuPEPOXNC432Vg==} + engines: {node: '>=14.0.0'} + cpu: [wasm32] + + '@oxc-resolver/binding-win32-arm64-msvc@11.19.1': + resolution: {integrity: sha512-nJ4AsUVZrVKwnU/QRdzPCCrO0TrabBqgJ8pJhXITdZGYOV28TIYystV1VFLbQ7DtAcaBHpocT5/ZJnF78YJPtQ==} cpu: [arm64] os: [win32] - '@rollup/rollup-win32-ia32-msvc@4.45.1': - resolution: {integrity: sha512-lxV2Pako3ujjuUe9jiU3/s7KSrDfH6IgTSQOnDWr9aJ92YsFd7EurmClK0ly/t8dzMkDtd04g60WX6yl0sGfdw==} + '@oxc-resolver/binding-win32-ia32-msvc@11.19.1': + resolution: {integrity: sha512-EW+ND5q2Tl+a3pH81l1QbfgbF3HmqgwLfDfVithRFheac8OTcnbXt/JxqD2GbDkb7xYEqy1zNaVFRr3oeG8npA==} cpu: [ia32] os: [win32] - '@rollup/rollup-win32-x64-msvc@4.45.1': - resolution: {integrity: sha512-M/fKi4sasCdM8i0aWJjCSFm2qEnYRR8AMLG2kxp6wD13+tMGA4Z1tVAuHkNRjud5SW2EM3naLuK35w9twvf6aA==} + '@oxc-resolver/binding-win32-x64-msvc@11.19.1': + resolution: {integrity: sha512-6hIU3RQu45B+VNTY4Ru8ppFwjVS/S5qwYyGhBotmjxfEKk41I2DlGtRfGJndZ5+6lneE2pwloqunlOyZuX/XAw==} cpu: [x64] os: [win32] - '@trysound/sax@0.2.0': - resolution: {integrity: sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==} - engines: {node: '>=10.13.0'} - - '@tybys/wasm-util@0.10.0': - resolution: {integrity: sha512-VyyPYFlOMNylG45GoAe0xDoLwWuowvf92F9kySqzYh8vmYm7D2u4iUJKa1tOUpS70Ku13ASrOkS4ScXFsTaCNQ==} + '@oxfmt/binding-android-arm-eabi@0.47.0': + resolution: {integrity: sha512-KrMQRdMi/upr81qT4ijK6X6BNp6jqpMY7FwILQnwIy9QLc3qpnhUx5rsCLGzn4ewsCQ0CNAspN2ogmP1GXLyLw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm] + os: [android] - '@types/chai@5.2.2': - resolution: {integrity: sha512-8kB30R7Hwqf40JPiKhVzodJs2Qc1ZJ5zuT3uzw5Hq/dhNCl3G3l83jfpdI1e20BP348+fV7VIL/+FxaXkqBmWg==} + '@oxfmt/binding-android-arm64@0.47.0': + resolution: {integrity: sha512-r4ixS/PeUpAFKgrpDoZ5pSkthjZzVzKd95525Aazj+aOv9H4ulK5zYHGb7wFY5n5kZxHK8TbOJUZgoEb1ohddQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [android] - '@types/deep-eql@4.0.2': - resolution: {integrity: sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==} + '@oxfmt/binding-darwin-arm64@0.47.0': + resolution: {integrity: sha512-CLWxiKpMl+195cm09CuaWEhJK0CirRkoMa07aR9+9AFPat2LfIKtwx1JqxZM0MTvcMe6+adlJNdVL6jdInvq3g==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [darwin] - '@types/estree@1.0.8': - resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} + '@oxfmt/binding-darwin-x64@0.47.0': + resolution: {integrity: sha512-Xq5fjTYDC50faUeLSm0rZdBqoTgleXEdD7NpJdARtQIczkCJn3xNjMUSQQkUmh4CtxkKTNL68lytcOK3e/osgg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [darwin] - '@types/node@12.20.55': - resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==} + '@oxfmt/binding-freebsd-x64@0.47.0': + resolution: {integrity: sha512-QOU9ZIJ52p5askcEC0QJvvr8trHAWoonul8bgISo6gYUL3s50zkqafBYcNAr9LJZQbsZtPfIWHk9+5+nUp1qJQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [freebsd] - '@types/node@20.19.39': - resolution: {integrity: sha512-orrrD74MBUyK8jOAD/r0+lfa1I2MO6I+vAkmAWzMYbCcgrN4lCrmK52gRFQq/JRxfYPfonkr4b0jcY7Olqdqbw==} + '@oxfmt/binding-linux-arm-gnueabihf@0.47.0': + resolution: {integrity: sha512-oJxDM1aBhPvz9gmElBv8UpxyiqhwfjcbrSxT5F0xtuUzY6dQI27/AQPIt3eu3Z5Yvn0kQl5R7MA3Z+MbnRvCBw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm] + os: [linux] - '@types/resolve@1.20.2': - resolution: {integrity: sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==} + '@oxfmt/binding-linux-arm-musleabihf@0.47.0': + resolution: {integrity: sha512-g8Lh50VS4ibGz2q6v7r9UZY4D0dM16SdrFYOMzhqIoCwGcai8VMIRUAcqn1/jlCsOOzUXJ741+kCeJt0cofakQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm] + os: [linux] - '@vitest/expect@3.2.4': - resolution: {integrity: sha512-Io0yyORnB6sikFlt8QW5K7slY4OjqNX9jmJQ02QDda8lyM6B5oNgVWoSoKPac8/kgnCUzuHQKrSLtu/uOqqrig==} + '@oxfmt/binding-linux-arm64-gnu@0.47.0': + resolution: {integrity: sha512-YrNT1vQ0asaXoRbrvYENPqmBfOQ9Xr8enPNOULeYfg44VjCcrUowFy5QZr+WawE0zyP8cH9e9Gxxg0fDEFzhcg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [linux] + libc: [glibc] - '@vitest/mocker@3.2.4': - resolution: {integrity: sha512-46ryTE9RZO/rfDd7pEqFl7etuyzekzEhUbTW3BvmeO/BcCMEgq59BKhek3dXDWgAj4oMK6OZi+vRr1wPW6qjEQ==} - peerDependencies: - msw: ^2.4.9 - vite: ^5.0.0 || ^6.0.0 || ^7.0.0-0 - peerDependenciesMeta: - msw: - optional: true - vite: - optional: true + '@oxfmt/binding-linux-arm64-musl@0.47.0': + resolution: {integrity: sha512-IxtQC/sbBi4ubbY+MdwdanRWrG9InQJVZqyMsBa5IUaQcnSg86gQme574HxXMC1p4bo4YhV99zQ+wNnGCvEgzw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [linux] + libc: [musl] - '@vitest/pretty-format@3.2.4': - resolution: {integrity: sha512-IVNZik8IVRJRTr9fxlitMKeJeXFFFN0JaB9PHPGQ8NKQbGpfjlTx9zO4RefN8gp7eqjNy8nyK3NZmBzOPeIxtA==} + '@oxfmt/binding-linux-ppc64-gnu@0.47.0': + resolution: {integrity: sha512-EWXEhOMbWO0q6eJSbu0QLkU8cKi0ljlYLngeDs2Ocu/pm1rrLwyQiYzlFbdnMRURI4w9ndr1sI9rSbhlJ5o23Q==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [ppc64] + os: [linux] + libc: [glibc] - '@vitest/runner@3.2.4': - resolution: {integrity: sha512-oukfKT9Mk41LreEW09vt45f8wx7DordoWUZMYdY/cyAk7w5TWkTRCNZYF7sX7n2wB7jyGAl74OxgwhPgKaqDMQ==} + '@oxfmt/binding-linux-riscv64-gnu@0.47.0': + resolution: {integrity: sha512-tZrjS11TUiDuEpRaqdk8K9F9xETRyKXfuZKmdeW+Gj7coBnm7+8sBEfyt033EAFEQSlkniAXvBLh+Qja2ioGBQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [riscv64] + os: [linux] + libc: [glibc] - '@vitest/snapshot@3.2.4': - resolution: {integrity: sha512-dEYtS7qQP2CjU27QBC5oUOxLE/v5eLkGqPE0ZKEIDGMs4vKWe7IjgLOeauHsR0D5YuuycGRO5oSRXnwnmA78fQ==} + '@oxfmt/binding-linux-riscv64-musl@0.47.0': + resolution: {integrity: sha512-KBFy+2CFKUCZzYwX2ZOPQKck1vjQbz+hextuc19G4r0WRJwadfAeuQMQRQvB+Ivc8brlbOVg7et8K7E467440g==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [riscv64] + os: [linux] + libc: [musl] - '@vitest/spy@3.2.4': - resolution: {integrity: sha512-vAfasCOe6AIK70iP5UD11Ac4siNUNJ9i/9PZ3NKx07sG6sUxeag1LWdNrMWeKKYBLlzuK+Gn65Yd5nyL6ds+nw==} + '@oxfmt/binding-linux-s390x-gnu@0.47.0': + resolution: {integrity: sha512-REUPFKVGSiK99B+9eaPhluEVglzaoj/SMykNC5SUiV2RSsBfV5lWN7Y0iCIc251Wz3GaeAGZsJ/zj3gjarxdFg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [s390x] + os: [linux] + libc: [glibc] - '@vitest/utils@3.2.4': - resolution: {integrity: sha512-fB2V0JFrQSMsCo9HiSq3Ezpdv4iYaXRG1Sx8edX3MwxfyNn83mKiGzOcH+Fkxt4MHxr3y42fQi1oeAInqgX2QA==} + '@oxfmt/binding-linux-x64-gnu@0.47.0': + resolution: {integrity: sha512-KVftVSVEDeIfRW3TIeLe3aNI/iY4m1fu5mDwHcisKMZSCMKLkrhFsjowC7o9RoqNPxbbglm2+/6KAKBIts2t0Q==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [linux] + libc: [glibc] - acorn@8.14.0: - resolution: {integrity: sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==} - engines: {node: '>=0.4.0'} - hasBin: true + '@oxfmt/binding-linux-x64-musl@0.47.0': + resolution: {integrity: sha512-DTsmGEaA2860Aq5VUyDO8/MT9NFxwVL93RnRYmpMwK6DsSkThmvEpqoUDDljziEpAedMRG19SCogrNbINSbLUQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [linux] + libc: [musl] - ansi-colors@4.1.3: - resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} - engines: {node: '>=6'} + '@oxfmt/binding-openharmony-arm64@0.47.0': + resolution: {integrity: sha512-8r5BDro7fLOBoq1JXHLVSs55OlrxQhEso4HVo0TcY7OXJUPYfjPoOaYL5us+yIwqyP9rQwN+rxuiNFSmaxSuOQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [openharmony] - ansi-regex@5.0.1: - resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} - engines: {node: '>=8'} + '@oxfmt/binding-win32-arm64-msvc@0.47.0': + resolution: {integrity: sha512-qtz/gzm8IjSPUlseZ0ofW8zyHLoZsuP5HTfcGGkWkUblB89JT8GNYH3ICqjbDsqsGqXum0/ZndXTFplSdXFIcg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [win32] - argparse@1.0.10: - resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} + '@oxfmt/binding-win32-ia32-msvc@0.47.0': + resolution: {integrity: sha512-5vIcdcIDE7nCx+MXN6sm8kbC4zajDB31E86rez4i45iHNH/2NjdKlJ720xcHTr3eeiMcttCGPHPhE1TjtBDGZw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [ia32] + os: [win32] - argparse@2.0.1: - resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + '@oxfmt/binding-win32-x64-msvc@0.47.0': + resolution: {integrity: sha512-Sr59Y5ms54ONBjxFeWhVlGyQcHXxcl9DxC23f6yXlRkcos7LXBLoO+KDfxexjHIOZh7cWqrWduzvUjJ+pHp8cQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [win32] - array-union@2.1.0: - resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} - engines: {node: '>=8'} + '@oxlint/binding-android-arm-eabi@1.62.0': + resolution: {integrity: sha512-pKsthNECyvJh8lPTICz6VcwVy2jOqdhhsp1rlxCkhgZR47aKvXPmaRWQDv+zlXpRae4qm1MaaTnutkaOk5aofg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm] + os: [android] - assertion-error@2.0.1: - resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} - engines: {node: '>=12'} + '@oxlint/binding-android-arm64@1.62.0': + resolution: {integrity: sha512-b1AUNViByvgmR2xJDubvLIr+dSuu3uraG7bsAoKo+xrpspPvu6RIn6Fhr2JUhobfep3jwUTy18Huco6GkwdvGQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [android] - autoprefixer@10.4.21: - resolution: {integrity: sha512-O+A6LWV5LDHSJD3LjHYoNi4VLsj/Whi7k6zG12xTYaU4cQ8oxQGckXNX8cRHK5yOZ/ppVHe0ZBXGzSV9jXdVbQ==} - engines: {node: ^10 || ^12 || >=14} + '@oxlint/binding-darwin-arm64@1.62.0': + resolution: {integrity: sha512-iG+Tvf70UJ6otfwFYIHk36Sjq9cpPP5YLxkoggANNRtzgi3Tj3g8q6Ybqi6AtkU3+yg9QwF7bDCkCS6bbL4PCg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [darwin] + + '@oxlint/binding-darwin-x64@1.62.0': + resolution: {integrity: sha512-oOWI6YPPr5AJUx+yIDlxmuUbQjS5gZX3OH3QisawYvsZgLiQVvZtR0rPBcJTxLWqt2ClrWg0DlSrlUiG5SQNHg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [darwin] + + '@oxlint/binding-freebsd-x64@1.62.0': + resolution: {integrity: sha512-dLP33T7VLCmLVv4cvjkVX+rmkcwNk2UfxmsZPNur/7BQHoQR60zJ7XLiRvNUawlzn0u8ngCa3itjEG73MAMa/w==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [freebsd] + + '@oxlint/binding-linux-arm-gnueabihf@1.62.0': + resolution: {integrity: sha512-fl//LWNks6qo9chNY60UDYyIwtp7a5cEx4Y/rHPjaarhuwqx6jtbzEpD5V5AqmdL4a6Y5D8zeXg5HF2Cr0QmSQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm] + os: [linux] + + '@oxlint/binding-linux-arm-musleabihf@1.62.0': + resolution: {integrity: sha512-i5vkAuxvueTODV3J2dL61/TXewDHhMFKvtD156cIsk7GsdfiAu7zW7kY0NJXhKeFHeiMZIh7eFNjkPYH6J47HQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm] + os: [linux] + + '@oxlint/binding-linux-arm64-gnu@1.62.0': + resolution: {integrity: sha512-QwN19LLuIGuOjEflSeJkZmOTfBdBMlTmW8xbMf8TZhjd//cxVNYQPq75q7oKZBJc6hRx3gY7sX0Egc8cEIFZYg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [linux] + libc: [glibc] + + '@oxlint/binding-linux-arm64-musl@1.62.0': + resolution: {integrity: sha512-8eCy3FCDuWUM5hWujAv6heMvfZPbcCOU3SdQUAkixZLu5bSzOkNfirJiLGoQFO943xceOKkiQRMQNzH++jM3WA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [linux] + libc: [musl] + + '@oxlint/binding-linux-ppc64-gnu@1.62.0': + resolution: {integrity: sha512-NjQ7K7tpTPDe9J+yq8p/s/J0E7lRCkK2uDBDqvT4XIT6f4Z0tlnr59OBg/WcrmVHER1AbrcfyxhGTXgcG8ytWg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [ppc64] + os: [linux] + libc: [glibc] + + '@oxlint/binding-linux-riscv64-gnu@1.62.0': + resolution: {integrity: sha512-oKZed9gmSwze29dEt3/Wnsv6l/Ygw/FUst+8Kfpv2SGeS/glEoTGZAMQw37SVyzFV76UTHJN2snGgxK2t2+8ow==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [riscv64] + os: [linux] + libc: [glibc] + + '@oxlint/binding-linux-riscv64-musl@1.62.0': + resolution: {integrity: sha512-gBjBxQ+9lGpAYq+ELqw0w8QXsBnkZclFc7GRX2r0LnEVn3ZTEqeIKpKcGjucmp76Q53bvJD0i4qBWBhcfhSfGA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [riscv64] + os: [linux] + libc: [musl] + + '@oxlint/binding-linux-s390x-gnu@1.62.0': + resolution: {integrity: sha512-Ew2Kxs9EQ9/mbAIJ2hvocMC0wsOu6YKzStI2eFBDt+Td5O8seVC/oxgRIHqCcl5sf5ratA1nozQBAuv7tphkHg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [s390x] + os: [linux] + libc: [glibc] + + '@oxlint/binding-linux-x64-gnu@1.62.0': + resolution: {integrity: sha512-5z25jcAA0gfKyVwz71A0VXgaPlocPoTAxhlv/hgoK6tlCrfoNuw7haWbDHvGMfjXhdic4EqVXGRv5XsTqFnbRQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [linux] + libc: [glibc] + + '@oxlint/binding-linux-x64-musl@1.62.0': + resolution: {integrity: sha512-IWpHmMB6ZDllPvqWDkG6AmXrN7JF5e/c4g/0PuURsmlK+vHoYZPB70rr4u1bn3I4LsKCSpqqfveyx6UCOC8wdg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [linux] + libc: [musl] + + '@oxlint/binding-openharmony-arm64@1.62.0': + resolution: {integrity: sha512-fjlSxxrD5pA594vkyikCS9MnPRjQawW6/BLgyTYkO+73wwPlYjkcZ7LSd974l0Q2zkHQmu4DPvJFLYA7o8xrxQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [openharmony] + + '@oxlint/binding-win32-arm64-msvc@1.62.0': + resolution: {integrity: sha512-EiFXr8loNS0Ul3Gu80+9nr1T8jRmnKocqmHHg16tj5ZqTgUXyb97l2rrspVHdDluyFn9JfR4PoJFdNzw4paHww==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [win32] + + '@oxlint/binding-win32-ia32-msvc@1.62.0': + resolution: {integrity: sha512-IgOFvL73li1bFgab+hThXYA0N2Xms2kV2MvZN95cebV+fmrZ9AVui1JSxfeeqRLo3CpPxKZlzhyq4G0cnaAvIw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [ia32] + os: [win32] + + '@oxlint/binding-win32-x64-msvc@1.62.0': + resolution: {integrity: sha512-6hMpyDWQ2zGA1OXFKBrdYMUveUCO8UJhkO6JdwZPd78xIdHZNhjx+pib+4fC2Cljuhjyl0QwA2F3df/bs4Bp6A==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [win32] + + '@publint/pack@0.1.4': + resolution: {integrity: sha512-HDVTWq3H0uTXiU0eeSQntcVUTPP3GamzeXI41+x7uU9J65JgWQh3qWZHblR1i0npXfFtF+mxBiU2nJH8znxWnQ==} + engines: {node: '>=18'} + + '@quansync/fs@1.0.0': + resolution: {integrity: sha512-4TJ3DFtlf1L5LDMaM6CanJ/0lckGNtJcMjQ1NAV6zDmA0tEHKZtxNKin8EgPaVX1YzljbxckyT2tJrpQKAtngQ==} + + '@rolldown/binding-android-arm64@1.0.0-rc.17': + resolution: {integrity: sha512-s70pVGhw4zqGeFnXWvAzJDlvxhlRollagdCCKRgOsgUOH3N1l0LIxf83AtGzmb5SiVM4Hjl5HyarMRfdfj3DaQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [android] + + '@rolldown/binding-darwin-arm64@1.0.0-rc.17': + resolution: {integrity: sha512-4ksWc9n0mhlZpZ9PMZgTGjeOPRu8MB1Z3Tz0Mo02eWfWCHMW1zN82Qz/pL/rC+yQa+8ZnutMF0JjJe7PjwasYw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [darwin] + + '@rolldown/binding-darwin-x64@1.0.0-rc.17': + resolution: {integrity: sha512-SUSDOI6WwUVNcWxd02QEBjLdY1VPHvlEkw6T/8nYG322iYWCTxRb1vzk4E+mWWYehTp7ERibq54LSJGjmouOsw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [darwin] + + '@rolldown/binding-freebsd-x64@1.0.0-rc.17': + resolution: {integrity: sha512-hwnz3nw9dbJ05EDO/PvcjaaewqqDy7Y1rn1UO81l8iIK1GjenME75dl16ajbvSSMfv66WXSRCYKIqfgq2KCfxw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [freebsd] + + '@rolldown/binding-linux-arm-gnueabihf@1.0.0-rc.17': + resolution: {integrity: sha512-IS+W7epTcwANmFSQFrS1SivEXHtl1JtuQA9wlxrZTcNi6mx+FDOYrakGevvvTwgj2JvWiK8B29/qD9BELZPyXQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm] + os: [linux] + + '@rolldown/binding-linux-arm64-gnu@1.0.0-rc.17': + resolution: {integrity: sha512-e6usGaHKW5BMNZOymS1UcEYGowQMWcgZ71Z17Sl/h2+ZziNJ1a9n3Zvcz6LdRyIW5572wBCTH/Z+bKuZouGk9Q==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [linux] + libc: [glibc] + + '@rolldown/binding-linux-arm64-musl@1.0.0-rc.17': + resolution: {integrity: sha512-b/CgbwAJpmrRLp02RPfhbudf5tZnN9nsPWK82znefso832etkem8H7FSZwxrOI9djcdTP7U6YfNhbRnh7djErg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [linux] + libc: [musl] + + '@rolldown/binding-linux-ppc64-gnu@1.0.0-rc.17': + resolution: {integrity: sha512-4EII1iNGRUN5WwGbF/kOh/EIkoDN9HsupgLQoXfY+D1oyJm7/F4t5PYU5n8SWZgG0FEwakyM8pGgwcBYruGTlA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [ppc64] + os: [linux] + libc: [glibc] + + '@rolldown/binding-linux-s390x-gnu@1.0.0-rc.17': + resolution: {integrity: sha512-AH8oq3XqQo4IibpVXvPeLDI5pzkpYn0WiZAfT05kFzoJ6tQNzwRdDYQ45M8I/gslbodRZwW8uxLhbSBbkv96rA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [s390x] + os: [linux] + libc: [glibc] + + '@rolldown/binding-linux-x64-gnu@1.0.0-rc.17': + resolution: {integrity: sha512-cLnjV3xfo7KslbU41Z7z8BH/E1y5mzUYzAqih1d1MDaIGZRCMqTijqLv76/P7fyHuvUcfGsIpqCdddbxLLK9rA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [linux] + libc: [glibc] + + '@rolldown/binding-linux-x64-musl@1.0.0-rc.17': + resolution: {integrity: sha512-0phclDw1spsL7dUB37sIARuis2tAgomCJXAHZlpt8PXZ4Ba0dRP1e+66lsRqrfhISeN9bEGNjQs+T/Fbd7oYGw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [linux] + libc: [musl] + + '@rolldown/binding-openharmony-arm64@1.0.0-rc.17': + resolution: {integrity: sha512-0ag/hEgXOwgw4t8QyQvUCxvEg+V0KBcA6YuOx9g0r02MprutRF5dyljgm3EmR02O292UX7UeS6HzWHAl6KgyhA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [openharmony] + + '@rolldown/binding-wasm32-wasi@1.0.0-rc.17': + resolution: {integrity: sha512-LEXei6vo0E5wTGwpkJ4KoT3OZJRnglwldt5ziLzOlc6qqb55z4tWNq2A+PFqCJuvWWdP53CVhG1Z9NtToDPJrA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [wasm32] + + '@rolldown/binding-win32-arm64-msvc@1.0.0-rc.17': + resolution: {integrity: sha512-gUmyzBl3SPMa6hrqFUth9sVfcLBlYsbMzBx5PlexMroZStgzGqlZ26pYG89rBb45Mnia+oil6YAIFeEWGWhoZA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [win32] + + '@rolldown/binding-win32-x64-msvc@1.0.0-rc.17': + resolution: {integrity: sha512-3hkiolcUAvPB9FLb3UZdfjVVNWherN1f/skkGWJP/fgSQhYUZpSIRr0/I8ZK9TkF3F7kxvJAk0+IcKvPHk9qQg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [win32] + + '@rolldown/pluginutils@1.0.0-rc.17': + resolution: {integrity: sha512-n8iosDOt6Ig1UhJ2AYqoIhHWh/isz0xpicHTzpKBeotdVsTEcxsSA/i3EVM7gQAj0rU27OLAxCjzlj15IWY7bg==} + + '@rollup/rollup-android-arm-eabi@4.45.1': + resolution: {integrity: sha512-NEySIFvMY0ZQO+utJkgoMiCAjMrGvnbDLHvcmlA33UXJpYBCvlBEbMMtV837uCkS+plG2umfhn0T5mMAxGrlRA==} + cpu: [arm] + os: [android] + + '@rollup/rollup-android-arm64@4.45.1': + resolution: {integrity: sha512-ujQ+sMXJkg4LRJaYreaVx7Z/VMgBBd89wGS4qMrdtfUFZ+TSY5Rs9asgjitLwzeIbhwdEhyj29zhst3L1lKsRQ==} + cpu: [arm64] + os: [android] + + '@rollup/rollup-darwin-arm64@4.45.1': + resolution: {integrity: sha512-FSncqHvqTm3lC6Y13xncsdOYfxGSLnP+73k815EfNmpewPs+EyM49haPS105Rh4aF5mJKywk9X0ogzLXZzN9lA==} + cpu: [arm64] + os: [darwin] + + '@rollup/rollup-darwin-x64@4.45.1': + resolution: {integrity: sha512-2/vVn/husP5XI7Fsf/RlhDaQJ7x9zjvC81anIVbr4b/f0xtSmXQTFcGIQ/B1cXIYM6h2nAhJkdMHTnD7OtQ9Og==} + cpu: [x64] + os: [darwin] + + '@rollup/rollup-freebsd-arm64@4.45.1': + resolution: {integrity: sha512-4g1kaDxQItZsrkVTdYQ0bxu4ZIQ32cotoQbmsAnW1jAE4XCMbcBPDirX5fyUzdhVCKgPcrwWuucI8yrVRBw2+g==} + cpu: [arm64] + os: [freebsd] + + '@rollup/rollup-freebsd-x64@4.45.1': + resolution: {integrity: sha512-L/6JsfiL74i3uK1Ti2ZFSNsp5NMiM4/kbbGEcOCps99aZx3g8SJMO1/9Y0n/qKlWZfn6sScf98lEOUe2mBvW9A==} + cpu: [x64] + os: [freebsd] + + '@rollup/rollup-linux-arm-gnueabihf@4.45.1': + resolution: {integrity: sha512-RkdOTu2jK7brlu+ZwjMIZfdV2sSYHK2qR08FUWcIoqJC2eywHbXr0L8T/pONFwkGukQqERDheaGTeedG+rra6Q==} + cpu: [arm] + os: [linux] + libc: [glibc] + + '@rollup/rollup-linux-arm-musleabihf@4.45.1': + resolution: {integrity: sha512-3kJ8pgfBt6CIIr1o+HQA7OZ9mp/zDk3ctekGl9qn/pRBgrRgfwiffaUmqioUGN9hv0OHv2gxmvdKOkARCtRb8Q==} + cpu: [arm] + os: [linux] + libc: [musl] + + '@rollup/rollup-linux-arm64-gnu@4.45.1': + resolution: {integrity: sha512-k3dOKCfIVixWjG7OXTCOmDfJj3vbdhN0QYEqB+OuGArOChek22hn7Uy5A/gTDNAcCy5v2YcXRJ/Qcnm4/ma1xw==} + cpu: [arm64] + os: [linux] + libc: [glibc] + + '@rollup/rollup-linux-arm64-musl@4.45.1': + resolution: {integrity: sha512-PmI1vxQetnM58ZmDFl9/Uk2lpBBby6B6rF4muJc65uZbxCs0EA7hhKCk2PKlmZKuyVSHAyIw3+/SiuMLxKxWog==} + cpu: [arm64] + os: [linux] + libc: [musl] + + '@rollup/rollup-linux-loongarch64-gnu@4.45.1': + resolution: {integrity: sha512-9UmI0VzGmNJ28ibHW2GpE2nF0PBQqsyiS4kcJ5vK+wuwGnV5RlqdczVocDSUfGX/Na7/XINRVoUgJyFIgipoRg==} + cpu: [loong64] + os: [linux] + libc: [glibc] + + '@rollup/rollup-linux-powerpc64le-gnu@4.45.1': + resolution: {integrity: sha512-7nR2KY8oEOUTD3pBAxIBBbZr0U7U+R9HDTPNy+5nVVHDXI4ikYniH1oxQz9VoB5PbBU1CZuDGHkLJkd3zLMWsg==} + cpu: [ppc64] + os: [linux] + libc: [glibc] + + '@rollup/rollup-linux-riscv64-gnu@4.45.1': + resolution: {integrity: sha512-nlcl3jgUultKROfZijKjRQLUu9Ma0PeNv/VFHkZiKbXTBQXhpytS8CIj5/NfBeECZtY2FJQubm6ltIxm/ftxpw==} + cpu: [riscv64] + os: [linux] + libc: [glibc] + + '@rollup/rollup-linux-riscv64-musl@4.45.1': + resolution: {integrity: sha512-HJV65KLS51rW0VY6rvZkiieiBnurSzpzore1bMKAhunQiECPuxsROvyeaot/tcK3A3aGnI+qTHqisrpSgQrpgA==} + cpu: [riscv64] + os: [linux] + libc: [musl] + + '@rollup/rollup-linux-s390x-gnu@4.45.1': + resolution: {integrity: sha512-NITBOCv3Qqc6hhwFt7jLV78VEO/il4YcBzoMGGNxznLgRQf43VQDae0aAzKiBeEPIxnDrACiMgbqjuihx08OOw==} + cpu: [s390x] + os: [linux] + libc: [glibc] + + '@rollup/rollup-linux-x64-gnu@4.45.1': + resolution: {integrity: sha512-+E/lYl6qu1zqgPEnTrs4WysQtvc/Sh4fC2nByfFExqgYrqkKWp1tWIbe+ELhixnenSpBbLXNi6vbEEJ8M7fiHw==} + cpu: [x64] + os: [linux] + libc: [glibc] + + '@rollup/rollup-linux-x64-musl@4.45.1': + resolution: {integrity: sha512-a6WIAp89p3kpNoYStITT9RbTbTnqarU7D8N8F2CV+4Cl9fwCOZraLVuVFvlpsW0SbIiYtEnhCZBPLoNdRkjQFw==} + cpu: [x64] + os: [linux] + libc: [musl] + + '@rollup/rollup-win32-arm64-msvc@4.45.1': + resolution: {integrity: sha512-T5Bi/NS3fQiJeYdGvRpTAP5P02kqSOpqiopwhj0uaXB6nzs5JVi2XMJb18JUSKhCOX8+UE1UKQufyD6Or48dJg==} + cpu: [arm64] + os: [win32] + + '@rollup/rollup-win32-ia32-msvc@4.45.1': + resolution: {integrity: sha512-lxV2Pako3ujjuUe9jiU3/s7KSrDfH6IgTSQOnDWr9aJ92YsFd7EurmClK0ly/t8dzMkDtd04g60WX6yl0sGfdw==} + cpu: [ia32] + os: [win32] + + '@rollup/rollup-win32-x64-msvc@4.45.1': + resolution: {integrity: sha512-M/fKi4sasCdM8i0aWJjCSFm2qEnYRR8AMLG2kxp6wD13+tMGA4Z1tVAuHkNRjud5SW2EM3naLuK35w9twvf6aA==} + cpu: [x64] + os: [win32] + + '@standard-schema/spec@1.1.0': + resolution: {integrity: sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==} + + '@tybys/wasm-util@0.10.1': + resolution: {integrity: sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==} + + '@types/chai@5.2.2': + resolution: {integrity: sha512-8kB30R7Hwqf40JPiKhVzodJs2Qc1ZJ5zuT3uzw5Hq/dhNCl3G3l83jfpdI1e20BP348+fV7VIL/+FxaXkqBmWg==} + + '@types/deep-eql@4.0.2': + resolution: {integrity: sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==} + + '@types/estree@1.0.8': + resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} + + '@types/jsesc@2.5.1': + resolution: {integrity: sha512-9VN+6yxLOPLOav+7PwjZbxiID2bVaeq0ED4qSQmdQTdjnXJSaCVKTR58t15oqH1H5t8Ng2ZX1SabJVoN9Q34bw==} + + '@types/node@12.20.55': + resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==} + + '@types/node@20.19.39': + resolution: {integrity: sha512-orrrD74MBUyK8jOAD/r0+lfa1I2MO6I+vAkmAWzMYbCcgrN4lCrmK52gRFQq/JRxfYPfonkr4b0jcY7Olqdqbw==} + + '@typescript/native-preview-darwin-arm64@7.0.0-dev.20260427.1': + resolution: {integrity: sha512-8zxaaEgIpHSadCoCAvUsp0C6WDH0dUXix7Mm7IBjh+EhSxI2clhXwPZTqgtDqbowXHeE82BG5mBbQx+CXDwGOQ==} + engines: {node: '>=16.20.0'} + cpu: [arm64] + os: [darwin] + + '@typescript/native-preview-darwin-x64@7.0.0-dev.20260427.1': + resolution: {integrity: sha512-6MjekGfajPtny/bBoBYJ+8dTOlgw6nhSSgJ3Us4R/4L8R90ll803Krz+iz907r1SnYeK5eWubDMV/p1ryLNXkQ==} + engines: {node: '>=16.20.0'} + cpu: [x64] + os: [darwin] + + '@typescript/native-preview-linux-arm64@7.0.0-dev.20260427.1': + resolution: {integrity: sha512-a1yG/vrLaN3dORvaMuNqXz5jcTaTEPBfhmq77vzqRn8As7EdqxtizPosfxB9K1s7PEB8NeGQKqHEQroPUCsPFg==} + engines: {node: '>=16.20.0'} + cpu: [arm64] + os: [linux] + + '@typescript/native-preview-linux-arm@7.0.0-dev.20260427.1': + resolution: {integrity: sha512-3bhv/NxU9FHIN3MSmoplIAkIHF62mlF9l5XooAFawwj8yscvPZih/m5fkYIiP5qGri3828XwGyT1Cksaft6FWQ==} + engines: {node: '>=16.20.0'} + cpu: [arm] + os: [linux] + + '@typescript/native-preview-linux-x64@7.0.0-dev.20260427.1': + resolution: {integrity: sha512-lqaA9oF9ZSw1jn87+Ncxo0Sf0d65eVXMjAD0z44ne7QKFRgWd+QpvK4AXAG4lxnFR+XdndWlVm6O1/tdvcG7xQ==} + engines: {node: '>=16.20.0'} + cpu: [x64] + os: [linux] + + '@typescript/native-preview-win32-arm64@7.0.0-dev.20260427.1': + resolution: {integrity: sha512-ZGXRDC0WPVK/Ky2fZRhy2EcNmdHg22biVYWcWgOUK5tCbJd/KJs3VXk758gn0UbFHEQAR5d7dsvDucCCjZkWpA==} + engines: {node: '>=16.20.0'} + cpu: [arm64] + os: [win32] + + '@typescript/native-preview-win32-x64@7.0.0-dev.20260427.1': + resolution: {integrity: sha512-Ut4Hncq1IuSeNIfcPs1s719j8H3ZA+ogsJ53W3s/Wy1UF5BIhu5Hkspdc7TzGgJgYqGJKo/+pr4vsRnbBPdWgQ==} + engines: {node: '>=16.20.0'} + cpu: [x64] + os: [win32] + + '@typescript/native-preview@7.0.0-dev.20260427.1': + resolution: {integrity: sha512-g6L7hed1Y2OGwAzZ+vXoGSvtJUdWUtTqtsn/16+UjYbu3+6pol0cggdWj26SFxI41R+jLfnT2+JGtoXRBdH+RQ==} + engines: {node: '>=16.20.0'} hasBin: true + + '@vitest/expect@4.1.5': + resolution: {integrity: sha512-PWBaRY5JoKuRnHlUHfpV/KohFylaDZTupcXN1H9vYryNLOnitSw60Mw9IAE2r67NbwwzBw/Cc/8q9BK3kIX8Kw==} + + '@vitest/mocker@4.1.5': + resolution: {integrity: sha512-/x2EmFC4mT4NNzqvC3fmesuV97w5FC903KPmey4gsnJiMQ3Be1IlDKVaDaG8iqaLFHqJ2FVEkxZk5VmeLjIItw==} peerDependencies: - postcss: ^8.1.0 + msw: ^2.4.9 + vite: ^6.0.0 || ^7.0.0 || ^8.0.0 + peerDependenciesMeta: + msw: + optional: true + vite: + optional: true - better-path-resolve@1.0.0: - resolution: {integrity: sha512-pbnl5XzGBdrFU/wT4jqmJVPn2B6UHPBOhzMQkY/SPUPB6QtUXtmBHBIwCbXJol93mOpGMnQyP/+BB19q04xj7g==} - engines: {node: '>=4'} + '@vitest/pretty-format@4.1.5': + resolution: {integrity: sha512-7I3q6l5qr03dVfMX2wCo9FxwSJbPdwKjy2uu/YPpU3wfHvIL4QHwVRp57OfGrDFeUJ8/8QdfBKIV12FTtLn00g==} - boolbase@1.0.0: - resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} + '@vitest/runner@4.1.5': + resolution: {integrity: sha512-2D+o7Pr82IEO46YPpoA/YU0neeyr6FTerQb5Ro7BUnBuv6NQtT/kmVnczngiMEBhzgqz2UZYl5gArejsyERDSQ==} - braces@3.0.3: - resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} + '@vitest/snapshot@4.1.5': + resolution: {integrity: sha512-zypXEt4KH/XgKGPUz4eC2AvErYx0My5hfL8oDb1HzGFpEk1P62bxSohdyOmvz+d9UJwanI68MKwr2EquOaOgMQ==} + + '@vitest/spy@4.1.5': + resolution: {integrity: sha512-2lNOsh6+R2Idnf1TCZqSwYlKN2E/iDlD8sgU59kYVl+OMDmvldO1VDk39smRfpUNwYpNRVn3w4YfuC7KfbBnkQ==} + + '@vitest/utils@4.1.5': + resolution: {integrity: sha512-76wdkrmfXfqGjueGgnb45ITPyUi1ycZ4IHgC2bhPDUfWHklY/q3MdLOAB+TF1e6xfl8NxNY0ZYaPCFNWSsw3Ug==} + + ansi-colors@4.1.3: + resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} + engines: {node: '>=6'} + + ansi-regex@5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} + + ansis@4.2.0: + resolution: {integrity: sha512-HqZ5rWlFjGiV0tDm3UxxgNRqsOTniqoKZu0pIAfh7TZQMGuZK+hH0drySty0si0QXj1ieop4+SkSfPZBPPkHig==} + engines: {node: '>=14'} + + argparse@1.0.10: + resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} + + array-union@2.1.0: + resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} engines: {node: '>=8'} - browserslist@4.25.1: - resolution: {integrity: sha512-KGj0KoOMXLpSNkkEI6Z6mShmQy0bc1I+T7K9N81k4WWMrfz+6fQ6es80B/YLAeRoKvjYE1YSHHOW1qe9xIVzHw==} - engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} - hasBin: true + ast-kit@3.0.0-beta.1: + resolution: {integrity: sha512-trmleAnZ2PxN/loHWVhhx1qeOHSRXq4TDsBBxq3GqeJitfk3+jTQ+v/C1km/KYq9M7wKqCewMh+/NAvVH7m+bw==} + engines: {node: '>=20.19.0'} + + better-path-resolve@1.0.0: + resolution: {integrity: sha512-pbnl5XzGBdrFU/wT4jqmJVPn2B6UHPBOhzMQkY/SPUPB6QtUXtmBHBIwCbXJol93mOpGMnQyP/+BB19q04xj7g==} + engines: {node: '>=4'} + + birpc@4.0.0: + resolution: {integrity: sha512-LShSxJP0KTmd101b6DRyGBj57LZxSDYWKitQNW/mi8GRMvZb078Uf9+pveax1DrVL89vm7mWe+TovdI/UDOuPw==} - cac@6.7.14: - resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} + braces@3.0.3: + resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} engines: {node: '>=8'} - caniuse-api@3.0.0: - resolution: {integrity: sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==} - - caniuse-lite@1.0.30001727: - resolution: {integrity: sha512-pB68nIHmbN6L/4C6MH1DokyR3bYqFwjaSs/sWDHGj4CTcFtQUQMuJftVwWkXq7mNWOybD3KhUv3oWHoGxgP14Q==} + cac@7.0.0: + resolution: {integrity: sha512-tixWYgm5ZoOD+3g6UTea91eow5z6AAHaho3g0V9CNSNb45gM8SmflpAc+GRd1InC4AqN/07Unrgp56Y94N9hJQ==} + engines: {node: '>=20.19.0'} - chai@5.2.0: - resolution: {integrity: sha512-mCuXncKXk5iCLhfhwTc0izo0gtEmpz5CtG2y8GiOINBlMVS6v8TMRc5TaLWKS6692m9+dVVfzgeVxR5UxWHTYw==} - engines: {node: '>=12'} + chai@6.2.2: + resolution: {integrity: sha512-NUPRluOfOiTKBKvWPtSD4PhFvWCqOi0BGStNWs57X9js7XGTprSmFoz5F0tWhR4WPjNeR9jXqdC7/UpSJTnlRg==} + engines: {node: '>=18'} chardet@0.7.0: resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} - check-error@2.1.1: - resolution: {integrity: sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==} - engines: {node: '>= 16'} - ci-info@3.9.0: resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} engines: {node: '>=8'} - citty@0.1.6: - resolution: {integrity: sha512-tskPPKEs8D2KPafUypv2gxwJP8h/OaJmC82QQGGDQcHvXX43xF2VDACcJVmZ0EuSxkpO9Kc4MlrA3q0+FG58AQ==} - - colord@2.9.3: - resolution: {integrity: sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==} - - commander@7.2.0: - resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==} - engines: {node: '>= 10'} - - commondir@1.0.1: - resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==} - - confbox@0.1.8: - resolution: {integrity: sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==} - - confbox@0.2.2: - resolution: {integrity: sha512-1NB+BKqhtNipMsov4xI/NnhCKp9XG9NamYp5PVm9klAT0fsrNPjaFICsCFhNhwZJKNh7zB/3q8qXz0E9oaMNtQ==} - - consola@3.4.2: - resolution: {integrity: sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA==} - engines: {node: ^14.18.0 || >=16.10.0} + convert-source-map@2.0.0: + resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} cross-env@7.0.3: resolution: {integrity: sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==} @@ -861,73 +1271,8 @@ packages: resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} engines: {node: '>= 8'} - css-declaration-sorter@7.2.0: - resolution: {integrity: sha512-h70rUM+3PNFuaBDTLe8wF/cdWu+dOZmb7pJt8Z2sedYbAcQVQV/tEchueg3GWxwqS0cxtbxmaHEdkNACqcvsow==} - engines: {node: ^14 || ^16 || >=18} - peerDependencies: - postcss: ^8.0.9 - - css-select@5.1.0: - resolution: {integrity: sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==} - - css-tree@2.2.1: - resolution: {integrity: sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA==} - engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0, npm: '>=7.0.0'} - - css-tree@2.3.1: - resolution: {integrity: sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==} - engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0} - - css-what@6.1.0: - resolution: {integrity: sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==} - engines: {node: '>= 6'} - - cssesc@3.0.0: - resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} - engines: {node: '>=4'} - hasBin: true - - cssnano-preset-default@7.0.6: - resolution: {integrity: sha512-ZzrgYupYxEvdGGuqL+JKOY70s7+saoNlHSCK/OGn1vB2pQK8KSET8jvenzItcY+kA7NoWvfbb/YhlzuzNKjOhQ==} - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} - peerDependencies: - postcss: ^8.4.31 - - cssnano-utils@5.0.0: - resolution: {integrity: sha512-Uij0Xdxc24L6SirFr25MlwC2rCFX6scyUmuKpzI+JQ7cyqDEwD42fJ0xfB3yLfOnRDU5LKGgjQ9FA6LYh76GWQ==} - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} - peerDependencies: - postcss: ^8.4.31 - - cssnano@7.0.6: - resolution: {integrity: sha512-54woqx8SCbp8HwvNZYn68ZFAepuouZW4lTwiMVnBErM3VkO7/Sd4oTOt3Zz3bPx3kxQ36aISppyXj2Md4lg8bw==} - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} - peerDependencies: - postcss: ^8.4.31 - - csso@5.0.5: - resolution: {integrity: sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==} - engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0, npm: '>=7.0.0'} - - debug@4.4.1: - resolution: {integrity: sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==} - engines: {node: '>=6.0'} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - - deep-eql@5.0.2: - resolution: {integrity: sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==} - engines: {node: '>=6'} - - deepmerge@4.3.1: - resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} - engines: {node: '>=0.10.0'} - - defu@6.1.4: - resolution: {integrity: sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==} + defu@6.1.7: + resolution: {integrity: sha512-7z22QmUWiQ/2d0KkdYmANbRUVABpZ9SNYyH5vx6PZ+nE5bcC0l7uFvEfHlyld/HcGBFTL536ClDt3DEcSlEJAQ==} detect-indent@6.1.0: resolution: {integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==} @@ -937,60 +1282,43 @@ packages: resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} engines: {node: '>=8'} - dom-serializer@2.0.0: - resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==} - - domelementtype@2.3.0: - resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} - - domhandler@5.0.3: - resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==} - engines: {node: '>= 4'} - - domutils@3.1.0: - resolution: {integrity: sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==} + dts-resolver@2.1.3: + resolution: {integrity: sha512-bihc7jPC90VrosXNzK0LTE2cuLP6jr0Ro8jk+kMugHReJVLIpHz/xadeq3MhuwyO4TD4OA3L1Q8pBBFRc08Tsw==} + engines: {node: '>=20.19.0'} + peerDependencies: + oxc-resolver: '>=11.0.0' + peerDependenciesMeta: + oxc-resolver: + optional: true - electron-to-chromium@1.5.190: - resolution: {integrity: sha512-k4McmnB2091YIsdCgkS0fMVMPOJgxl93ltFzaryXqwip1AaxeDqKCGLxkXODDA5Ab/D+tV5EL5+aTx76RvLRxw==} + empathic@2.0.0: + resolution: {integrity: sha512-i6UzDscO/XfAcNYD75CfICkmfLedpyPDdozrLMmQc5ORaQcdMoc21OnlEylMIqI7U8eniKrPMxxtj8k0vhmJhA==} + engines: {node: '>=14'} enquirer@2.4.1: resolution: {integrity: sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==} engines: {node: '>=8.6'} - entities@4.5.0: - resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} - engines: {node: '>=0.12'} - - es-module-lexer@1.7.0: - resolution: {integrity: sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==} + es-module-lexer@2.0.0: + resolution: {integrity: sha512-5POEcUuZybH7IdmGsD8wlf0AI55wMecM9rVBTI/qEAy2c1kTOm3DjFYjrBdI2K3BaJjJYfYFeRtM0t9ssnRuxw==} esbuild@0.25.8: resolution: {integrity: sha512-vVC0USHGtMi8+R4Kz8rt6JhEWLxsv9Rnu/lGYbPR8u47B+DCBksq9JarW0zOO7bs37hyOK1l2/oqtbciutL5+Q==} engines: {node: '>=18'} hasBin: true - escalade@3.2.0: - resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} - engines: {node: '>=6'} - esprima@4.0.1: resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} engines: {node: '>=4'} hasBin: true - estree-walker@2.0.2: - resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} - estree-walker@3.0.3: resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} - expect-type@1.2.1: - resolution: {integrity: sha512-/kP8CAwxzLVEeFrMm4kMmy4CCDlpipyA7MYLVrdJIkV0fYF0UaigQHRsxHiuY/GEea+bh4KSv3TIlgr+2UL6bw==} + expect-type@1.3.0: + resolution: {integrity: sha512-knvyeauYhqjOYvQ66MznSMs83wmHrCycNEN6Ao+2AeYEfxUIkuiVxdEa1qlGEPK+We3n0THiDciYSsCcgW/DoA==} engines: {node: '>=12.0.0'} - exsolve@1.0.7: - resolution: {integrity: sha512-VO5fQUzZtI6C+vx4w/4BWJpg3s/5l+6pRQEHzFRM8WFi4XffSP1Z+4qi7GbjWbvRQEbdIco5mIMq+zX4rPuLrw==} - extendable-error@0.1.7: resolution: {integrity: sha512-UOiS2in6/Q0FK0R0q6UY9vYpQ21mr/Qn1KOnte7vsACuNJf514WvCCUHSRCPcgjPT2bAhNIJdlE6bVap1GKmeg==} @@ -1017,8 +1345,9 @@ packages: fd-package-json@2.0.0: resolution: {integrity: sha512-jKmm9YtsNXN789RS/0mSzOC1NUq9mkVd65vbSSVsKdjGvYXBuE4oWe2QOEoFeRmJg+lPuZxpmrfFclNhoRMneQ==} - fdir@6.4.6: - resolution: {integrity: sha512-hiFoqpyZcfNm1yc4u8oWCf9A2c4D3QjCrks3zmoVKVxpQRzmPNar1hUJcBG2RQHvEVGDN+Jm81ZheVLAQMK6+w==} + fdir@6.5.0: + resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==} + engines: {node: '>=12.0.0'} peerDependencies: picomatch: ^3 || ^4 peerDependenciesMeta: @@ -1033,17 +1362,11 @@ packages: resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} engines: {node: '>=8'} - fix-dts-default-cjs-exports@1.0.1: - resolution: {integrity: sha512-pVIECanWFC61Hzl2+oOCtoJ3F17kglZC/6N94eRWycFgBH35hHx0Li604ZIzhseh97mf2p0cv7vVrOZGoqhlEg==} - - formatly@0.2.4: - resolution: {integrity: sha512-lIN7GpcvX/l/i24r/L9bnJ0I8Qn01qijWpQpDDvTLL29nKqSaJJu4h20+7VJ6m2CAhQ2/En/GbxDiHCzq/0MyA==} + formatly@0.3.0: + resolution: {integrity: sha512-9XNj/o4wrRFyhSMJOvsuyMwy8aUfBaZ1VrqHVfohyXf0Sw0e+yfKG+xZaY3arGCOMdwFsqObtzVOc1gU9KiT9w==} engines: {node: '>=18.3.0'} hasBin: true - fraction.js@4.3.7: - resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==} - fs-extra@7.0.1: resolution: {integrity: sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==} engines: {node: '>=6 <7 || >=8'} @@ -1057,8 +1380,8 @@ packages: engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} os: [darwin] - function-bind@1.1.2: - resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + get-tsconfig@4.14.0: + resolution: {integrity: sha512-yTb+8DXzDREzgvYmh6s9vHsSVCHeC0G3PI5bEXNBHtmshPnO+S5O7qgLEOn0I5QvMy6kpZN8K1NKGyilLb93wA==} glob-parent@5.1.2: resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} @@ -1071,12 +1394,8 @@ packages: graceful-fs@4.2.11: resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} - hasown@2.0.2: - resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} - engines: {node: '>= 0.4'} - - hookable@5.5.3: - resolution: {integrity: sha512-Yc+BQe8SvoXH1643Qez1zqLRmbA5rCL+sSmk6TVos0LWVfNIB7PGncdlId77WzLGSIB5KaWgTaNTs2lNVEI6VQ==} + hookable@6.1.1: + resolution: {integrity: sha512-U9LYDy1CwhMCnprUfeAZWZGByVbhd54hwepegYTK7Pi5NvqEj63ifz5z+xukznehT7i6NIZRu89Ay1AZmRsLEQ==} human-id@4.1.1: resolution: {integrity: sha512-3gKm/gCSUipeLsRYZbbdA1BD83lBoWUkZ7G9VFrhWPAU76KwYo5KR8V28bpoPm/ygy0x5/GCbpRQdY7VLYCoIg==} @@ -1094,9 +1413,9 @@ packages: resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} engines: {node: '>= 4'} - is-core-module@2.15.1: - resolution: {integrity: sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==} - engines: {node: '>= 0.4'} + import-without-cache@0.3.3: + resolution: {integrity: sha512-bDxwDdF04gm550DfZHgffvlX+9kUlcz32UD0AeBTmVPFiWkrexF2XVmiuFFbDhiFuP8fQkrkvI2KdSNPYWAXkQ==} + engines: {node: '>=20.19.0'} is-extglob@2.1.1: resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} @@ -1106,16 +1425,10 @@ packages: resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} engines: {node: '>=0.10.0'} - is-module@1.0.0: - resolution: {integrity: sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==} - is-number@7.0.0: resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} engines: {node: '>=0.12.0'} - is-reference@1.2.1: - resolution: {integrity: sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==} - is-subdir@1.2.0: resolution: {integrity: sha512-2AT6j+gXe/1ueqbW6fLZJiIw3F8iXGJtt0yDrZaBhAZEG1raiTxKWU+IPqMCzQAXOUCKdA4UDMgacKH25XG2Cw==} engines: {node: '>=4'} @@ -1135,22 +1448,17 @@ packages: resolution: {integrity: sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==} hasBin: true - jiti@2.5.0: - resolution: {integrity: sha512-NWDAhdnATItTnRhip9VTd8oXDjVcbhetRN6YzckApnXGxpGUooKMAaf0KVvlZG0+KlJMGkeLElVn4M1ReuxKUQ==} + jiti@2.6.1: + resolution: {integrity: sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==} hasBin: true - js-tokens@4.0.0: - resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} - - js-tokens@9.0.1: - resolution: {integrity: sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ==} - js-yaml@3.14.1: resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} hasBin: true - js-yaml@4.1.0: - resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} + jsesc@3.1.0: + resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==} + engines: {node: '>=6'} hasBin: true jsonfile@4.0.0: @@ -1160,48 +1468,23 @@ packages: resolution: {integrity: sha512-GJ9Ju8kf2SxH90C1AqANrMKBFlDjrZu1YoFm4SoMCOBOxix3Bvirdg5JB31gbF8FwPBo3196dAaqV0WUjeuq8Q==} hasBin: true - knip@5.62.0: - resolution: {integrity: sha512-hfTUVzmrMNMT1khlZfAYmBABeehwWUUrizLQoLamoRhSFkygsGIXWx31kaWKBgEaIVL77T3Uz7IxGvSw+CvQ6A==} - engines: {node: '>=18.18.0'} + knip@6.9.0: + resolution: {integrity: sha512-2GLjxteBwmsSA3Z5sJZpPDaNPBIMnlm4/9Nx4CZadEK7YccJZ2/4kwKgPWhVYEqxhwhD0WO4txWXNGTO/Odkkg==} + engines: {node: ^20.19.0 || >=22.12.0} hasBin: true - peerDependencies: - '@types/node': '>=18' - typescript: '>=5.0.4' - - knitwork@1.2.0: - resolution: {integrity: sha512-xYSH7AvuQ6nXkq42x0v5S8/Iry+cfulBz/DJQzhIyESdLD7425jXsPy4vn5cCXU+HhRN2kVw51Vd1K6/By4BQg==} kolorist@1.8.0: resolution: {integrity: sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==} - lilconfig@3.1.2: - resolution: {integrity: sha512-eop+wDAvpItUys0FWkHIKeC9ybYrTGbU41U5K7+bttZZeohvnY7M9dZ5kB21GNWiFT2q1OoPTvncPCgSOVO5ow==} - engines: {node: '>=14'} - locate-path@5.0.0: resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} engines: {node: '>=8'} - lodash.memoize@4.1.2: - resolution: {integrity: sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==} - lodash.startcase@4.4.0: resolution: {integrity: sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==} - lodash.uniq@4.5.0: - resolution: {integrity: sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==} - - loupe@3.2.0: - resolution: {integrity: sha512-2NCfZcT5VGVNX9mSZIxLRkEAegDGBpuQZBy13desuHeVORmBDyAET4TkJr4SjqQy3A8JDofMN6LpkK8Xcm/dlw==} - - magic-string@0.30.17: - resolution: {integrity: sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==} - - mdn-data@2.0.28: - resolution: {integrity: sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==} - - mdn-data@2.0.30: - resolution: {integrity: sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==} + magic-string@0.30.21: + resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==} memfs@4.17.2: resolution: {integrity: sha512-NgYhCOWgovOXSzvYgUW0LQ7Qy72rWQMGGFJDoWg4G30RHd3z77VbYdtJ4fembJXBy8pMIUA31XNAupobOQlwdg==} @@ -1218,60 +1501,21 @@ packages: minimist@1.2.8: resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} - mkdist@2.3.0: - resolution: {integrity: sha512-thkRk+pHdudjdZT3FJpPZ2+pncI6mGlH/B+KBVddlZj4MrFGW41sRIv1wZawZUHU8v7cttGaj+5nx8P+dG664A==} - hasBin: true - peerDependencies: - sass: ^1.85.0 - typescript: '>=5.7.3' - vue: ^3.5.13 - vue-sfc-transformer: ^0.1.1 - vue-tsc: ^1.8.27 || ^2.0.21 - peerDependenciesMeta: - sass: - optional: true - typescript: - optional: true - vue: - optional: true - vue-sfc-transformer: - optional: true - vue-tsc: - optional: true - - mlly@1.7.4: - resolution: {integrity: sha512-qmdSIPC4bDJXgZTCR7XosJiNKySV7O215tsPtDN9iEO/7q/76b/ijtgRu/+epFXSJhijtTCCGp3DWS549P3xKw==} - mri@1.2.0: resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} engines: {node: '>=4'} - ms@2.1.3: - resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} - nanoid@3.3.11: resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true - napi-postinstall@0.3.2: - resolution: {integrity: sha512-tWVJxJHmBWLy69PvO96TZMZDrzmw5KeiZBz3RHmiM2XZ9grBJ2WgMAFVVg25nqp3ZjTFUs2Ftw1JhscL3Teliw==} - engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} - hasBin: true - - node-releases@2.0.19: - resolution: {integrity: sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==} - node-stream-zip@1.15.0: resolution: {integrity: sha512-LN4fydt9TqhZhThkZIVQnF9cwjU3qmUH9h78Mx/K7d3VvfRqqwthLwJEUOEL0QPZ0XQmNN7be5Ggit5+4dq3Bw==} engines: {node: '>=0.12.0'} - normalize-range@0.1.2: - resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} - engines: {node: '>=0.10.0'} - - nth-check@2.1.1: - resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} + obug@2.1.1: + resolution: {integrity: sha512-uTqF9MuPraAQ+IsnPf366RG4cP9RtUi7MLO1N3KEc+wb0a6yKpeL0lmk2IB1jY5KHPAlTc6T/JRdC/YqxHNwkQ==} os-tmpdir@1.0.2: resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} @@ -1280,8 +1524,27 @@ packages: outdent@0.5.0: resolution: {integrity: sha512-/jHxFIzoMXdqPzTaCpFzAAWhpkSjZPF4Vsn6jAfNpmbH/ymsmd7Qc6VE9BGn0L6YMj6uwpQLxCECpus4ukKS9Q==} - oxc-resolver@11.6.0: - resolution: {integrity: sha512-Yj3Wy+zLljtFL8ByKOljaPhiXjJWVe875p5MHaT5VAHoEmzeg1BuswM8s/E7ErpJ3s0fsXJfUYJE4v1bl7N65g==} + oxc-parser@0.128.0: + resolution: {integrity: sha512-XkOw3eiIxAgQ19WRew/Bq9wc5Ga/guaWIzDBzq80z1PyuDNGvWBpPby9k6YGwV8A8uMw+Nlq3xqlzuDYmUFYUw==} + engines: {node: ^20.19.0 || >=22.12.0} + + oxc-resolver@11.19.1: + resolution: {integrity: sha512-qE/CIg/spwrTBFt5aKmwe3ifeDdLfA2NESN30E42X/lII5ClF8V7Wt6WIJhcGZjp0/Q+nQ+9vgxGk//xZNX2hg==} + + oxfmt@0.47.0: + resolution: {integrity: sha512-OFbkbzxKCpooQEnRmpTDnuwTX8KHXzZTQ4Df/hz85fpS67Pl+lxPEFvUtin56HIIS0B1k4X8oIzTXRZPufA2CA==} + engines: {node: ^20.19.0 || >=22.12.0} + hasBin: true + + oxlint@1.62.0: + resolution: {integrity: sha512-1uFkg6HakjsGIpW9wNdeW4/2LOHW9MEkoWjZUTUfQtIHyLIZPYt00w3Sg+H3lH+206FgBPHBbW5dVE5l2ExECQ==} + engines: {node: ^20.19.0 || >=22.12.0} + hasBin: true + peerDependencies: + oxlint-tsgolint: '>=0.18.0' + peerDependenciesMeta: + oxlint-tsgolint: + optional: true p-filter@2.1.0: resolution: {integrity: sha512-ZBxxZ5sL2HghephhpGAQdoskxplTwr7ICaehZwLIlfL6acuVgZPm8yBNuRAFBGEqtD/hmUeq9eqLg2ys9Xr/yw==} @@ -1306,6 +1569,9 @@ packages: package-manager-detector@0.2.11: resolution: {integrity: sha512-BEnLolu+yuz22S56CU1SUKq3XC3PkwD5wv4ikR4MfGvnRVcmzXR9DwSlW2fEamyTPyXHomBJRzgapeuBvRNzJQ==} + package-manager-detector@1.6.0: + resolution: {integrity: sha512-61A5ThoTiDG/C8s8UMZwSorAGwMJ0ERVGj2OjoW5pAalsNOg15+iQiPzrLJ4jhZ1HJzmC2PIHT2oEiH3R5fzNA==} + path-exists@4.0.0: resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} engines: {node: '>=8'} @@ -1314,9 +1580,6 @@ packages: resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} engines: {node: '>=8'} - path-parse@1.0.7: - resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} - path-type@4.0.0: resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} engines: {node: '>=8'} @@ -1324,10 +1587,6 @@ packages: pathe@2.0.3: resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==} - pathval@2.0.0: - resolution: {integrity: sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==} - engines: {node: '>= 14.16'} - picocolors@1.1.1: resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} @@ -1335,199 +1594,14 @@ packages: resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} engines: {node: '>=8.6'} - picomatch@4.0.3: - resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==} + picomatch@4.0.4: + resolution: {integrity: sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==} engines: {node: '>=12'} pify@4.0.1: resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} engines: {node: '>=6'} - pkg-types@1.3.1: - resolution: {integrity: sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==} - - pkg-types@2.2.0: - resolution: {integrity: sha512-2SM/GZGAEkPp3KWORxQZns4M+WSeXbC2HEvmOIJe3Cmiv6ieAJvdVhDldtHqM5J1Y7MrR1XhkBT/rMlhh9FdqQ==} - - postcss-calc@10.0.2: - resolution: {integrity: sha512-DT/Wwm6fCKgpYVI7ZEWuPJ4az8hiEHtCUeYjZXqU7Ou4QqYh1Df2yCQ7Ca6N7xqKPFkxN3fhf+u9KSoOCJNAjg==} - engines: {node: ^18.12 || ^20.9 || >=22.0} - peerDependencies: - postcss: ^8.4.38 - - postcss-colormin@7.0.2: - resolution: {integrity: sha512-YntRXNngcvEvDbEjTdRWGU606eZvB5prmHG4BF0yLmVpamXbpsRJzevyy6MZVyuecgzI2AWAlvFi8DAeCqwpvA==} - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} - peerDependencies: - postcss: ^8.4.31 - - postcss-convert-values@7.0.4: - resolution: {integrity: sha512-e2LSXPqEHVW6aoGbjV9RsSSNDO3A0rZLCBxN24zvxF25WknMPpX8Dm9UxxThyEbaytzggRuZxaGXqaOhxQ514Q==} - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} - peerDependencies: - postcss: ^8.4.31 - - postcss-discard-comments@7.0.3: - resolution: {integrity: sha512-q6fjd4WU4afNhWOA2WltHgCbkRhZPgQe7cXF74fuVB/ge4QbM9HEaOIzGSiMvM+g/cOsNAUGdf2JDzqA2F8iLA==} - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} - peerDependencies: - postcss: ^8.4.31 - - postcss-discard-duplicates@7.0.1: - resolution: {integrity: sha512-oZA+v8Jkpu1ct/xbbrntHRsfLGuzoP+cpt0nJe5ED2FQF8n8bJtn7Bo28jSmBYwqgqnqkuSXJfSUEE7if4nClQ==} - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} - peerDependencies: - postcss: ^8.4.31 - - postcss-discard-empty@7.0.0: - resolution: {integrity: sha512-e+QzoReTZ8IAwhnSdp/++7gBZ/F+nBq9y6PomfwORfP7q9nBpK5AMP64kOt0bA+lShBFbBDcgpJ3X4etHg4lzA==} - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} - peerDependencies: - postcss: ^8.4.31 - - postcss-discard-overridden@7.0.0: - resolution: {integrity: sha512-GmNAzx88u3k2+sBTZrJSDauR0ccpE24omTQCVmaTTZFz1du6AasspjaUPMJ2ud4RslZpoFKyf+6MSPETLojc6w==} - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} - peerDependencies: - postcss: ^8.4.31 - - postcss-merge-longhand@7.0.4: - resolution: {integrity: sha512-zer1KoZA54Q8RVHKOY5vMke0cCdNxMP3KBfDerjH/BYHh4nCIh+1Yy0t1pAEQF18ac/4z3OFclO+ZVH8azjR4A==} - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} - peerDependencies: - postcss: ^8.4.31 - - postcss-merge-rules@7.0.4: - resolution: {integrity: sha512-ZsaamiMVu7uBYsIdGtKJ64PkcQt6Pcpep/uO90EpLS3dxJi6OXamIobTYcImyXGoW0Wpugh7DSD3XzxZS9JCPg==} - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} - peerDependencies: - postcss: ^8.4.31 - - postcss-minify-font-values@7.0.0: - resolution: {integrity: sha512-2ckkZtgT0zG8SMc5aoNwtm5234eUx1GGFJKf2b1bSp8UflqaeFzR50lid4PfqVI9NtGqJ2J4Y7fwvnP/u1cQog==} - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} - peerDependencies: - postcss: ^8.4.31 - - postcss-minify-gradients@7.0.0: - resolution: {integrity: sha512-pdUIIdj/C93ryCHew0UgBnL2DtUS3hfFa5XtERrs4x+hmpMYGhbzo6l/Ir5de41O0GaKVpK1ZbDNXSY6GkXvtg==} - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} - peerDependencies: - postcss: ^8.4.31 - - postcss-minify-params@7.0.2: - resolution: {integrity: sha512-nyqVLu4MFl9df32zTsdcLqCFfE/z2+f8GE1KHPxWOAmegSo6lpV2GNy5XQvrzwbLmiU7d+fYay4cwto1oNdAaQ==} - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} - peerDependencies: - postcss: ^8.4.31 - - postcss-minify-selectors@7.0.4: - resolution: {integrity: sha512-JG55VADcNb4xFCf75hXkzc1rNeURhlo7ugf6JjiiKRfMsKlDzN9CXHZDyiG6x/zGchpjQS+UAgb1d4nqXqOpmA==} - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} - peerDependencies: - postcss: ^8.4.31 - - postcss-nested@7.0.2: - resolution: {integrity: sha512-5osppouFc0VR9/VYzYxO03VaDa3e8F23Kfd6/9qcZTUI8P58GIYlArOET2Wq0ywSl2o2PjELhYOFI4W7l5QHKw==} - engines: {node: '>=18.0'} - peerDependencies: - postcss: ^8.2.14 - - postcss-normalize-charset@7.0.0: - resolution: {integrity: sha512-ABisNUXMeZeDNzCQxPxBCkXexvBrUHV+p7/BXOY+ulxkcjUZO0cp8ekGBwvIh2LbCwnWbyMPNJVtBSdyhM2zYQ==} - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} - peerDependencies: - postcss: ^8.4.31 - - postcss-normalize-display-values@7.0.0: - resolution: {integrity: sha512-lnFZzNPeDf5uGMPYgGOw7v0BfB45+irSRz9gHQStdkkhiM0gTfvWkWB5BMxpn0OqgOQuZG/mRlZyJxp0EImr2Q==} - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} - peerDependencies: - postcss: ^8.4.31 - - postcss-normalize-positions@7.0.0: - resolution: {integrity: sha512-I0yt8wX529UKIGs2y/9Ybs2CelSvItfmvg/DBIjTnoUSrPxSV7Z0yZ8ShSVtKNaV/wAY+m7bgtyVQLhB00A1NQ==} - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} - peerDependencies: - postcss: ^8.4.31 - - postcss-normalize-repeat-style@7.0.0: - resolution: {integrity: sha512-o3uSGYH+2q30ieM3ppu9GTjSXIzOrRdCUn8UOMGNw7Af61bmurHTWI87hRybrP6xDHvOe5WlAj3XzN6vEO8jLw==} - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} - peerDependencies: - postcss: ^8.4.31 - - postcss-normalize-string@7.0.0: - resolution: {integrity: sha512-w/qzL212DFVOpMy3UGyxrND+Kb0fvCiBBujiaONIihq7VvtC7bswjWgKQU/w4VcRyDD8gpfqUiBQ4DUOwEJ6Qg==} - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} - peerDependencies: - postcss: ^8.4.31 - - postcss-normalize-timing-functions@7.0.0: - resolution: {integrity: sha512-tNgw3YV0LYoRwg43N3lTe3AEWZ66W7Dh7lVEpJbHoKOuHc1sLrzMLMFjP8SNULHaykzsonUEDbKedv8C+7ej6g==} - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} - peerDependencies: - postcss: ^8.4.31 - - postcss-normalize-unicode@7.0.2: - resolution: {integrity: sha512-ztisabK5C/+ZWBdYC+Y9JCkp3M9qBv/XFvDtSw0d/XwfT3UaKeW/YTm/MD/QrPNxuecia46vkfEhewjwcYFjkg==} - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} - peerDependencies: - postcss: ^8.4.31 - - postcss-normalize-url@7.0.0: - resolution: {integrity: sha512-+d7+PpE+jyPX1hDQZYG+NaFD+Nd2ris6r8fPTBAjE8z/U41n/bib3vze8x7rKs5H1uEw5ppe9IojewouHk0klQ==} - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} - peerDependencies: - postcss: ^8.4.31 - - postcss-normalize-whitespace@7.0.0: - resolution: {integrity: sha512-37/toN4wwZErqohedXYqWgvcHUGlT8O/m2jVkAfAe9Bd4MzRqlBmXrJRePH0e9Wgnz2X7KymTgTOaaFizQe3AQ==} - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} - peerDependencies: - postcss: ^8.4.31 - - postcss-ordered-values@7.0.1: - resolution: {integrity: sha512-irWScWRL6nRzYmBOXReIKch75RRhNS86UPUAxXdmW/l0FcAsg0lvAXQCby/1lymxn/o0gVa6Rv/0f03eJOwHxw==} - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} - peerDependencies: - postcss: ^8.4.31 - - postcss-reduce-initial@7.0.2: - resolution: {integrity: sha512-pOnu9zqQww7dEKf62Nuju6JgsW2V0KRNBHxeKohU+JkHd/GAH5uvoObqFLqkeB2n20mr6yrlWDvo5UBU5GnkfA==} - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} - peerDependencies: - postcss: ^8.4.31 - - postcss-reduce-transforms@7.0.0: - resolution: {integrity: sha512-pnt1HKKZ07/idH8cpATX/ujMbtOGhUfE+m8gbqwJE05aTaNw8gbo34a2e3if0xc0dlu75sUOiqvwCGY3fzOHew==} - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} - peerDependencies: - postcss: ^8.4.31 - - postcss-selector-parser@6.1.2: - resolution: {integrity: sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==} - engines: {node: '>=4'} - - postcss-selector-parser@7.1.0: - resolution: {integrity: sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==} - engines: {node: '>=4'} - - postcss-svgo@7.0.1: - resolution: {integrity: sha512-0WBUlSL4lhD9rA5k1e5D8EN5wCEyZD6HJk0jIvRxl+FDVOMlJ7DePHYWGGVc5QRqrJ3/06FTXM0bxjmJpmTPSA==} - engines: {node: ^18.12.0 || ^20.9.0 || >= 18} - peerDependencies: - postcss: ^8.4.31 - - postcss-unique-selectors@7.0.3: - resolution: {integrity: sha512-J+58u5Ic5T1QjP/LDV9g3Cx4CNOgB5vz+kM6+OxHHhFACdcDeKhBXjQmB7fnIZM12YSTvsL0Opwco83DmacW2g==} - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} - peerDependencies: - postcss: ^8.4.31 - - postcss-value-parser@4.2.0: - resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} - postcss@8.5.6: resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==} engines: {node: ^10 || ^12 || >=14} @@ -1537,13 +1611,17 @@ packages: engines: {node: '>=10.13.0'} hasBin: true - pretty-bytes@7.0.0: - resolution: {integrity: sha512-U5otLYPR3L0SVjHGrkEUx5mf7MxV2ceXeE7VwWPk+hyzC5drNohsOGNPDZqxCqyX1lkbEN4kl1LiI8QFd7r0ZA==} - engines: {node: '>=20'} + publint@0.3.18: + resolution: {integrity: sha512-JRJFeBTrfx4qLwEuGFPk+haJOJN97KnPuK01yj+4k/Wj5BgoOK5uNsivporiqBjk2JDaslg7qJOhGRnpltGeog==} + engines: {node: '>=18'} + hasBin: true quansync@0.2.10: resolution: {integrity: sha512-t41VRkMYbkHyCYmOvx/6URnN80H7k4X0lLdBMGsz+maAwrJQYB1djpV6vHrQIBE0WBSGqhtEHrK9U3DWWH8v7A==} + quansync@1.0.0: + resolution: {integrity: sha512-5xZacEEufv3HSTPQuchrvV6soaiACMFnq1H8wkVioctoH3TRha9Sz66lOxRwPK/qZj7HPiSveih9yAyh98gvqA==} + queue-microtask@1.2.3: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} @@ -1555,20 +1633,36 @@ packages: resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} engines: {node: '>=8'} - resolve@1.22.8: - resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} - hasBin: true + resolve-pkg-maps@1.0.0: + resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} reusify@1.0.4: resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} engines: {iojs: '>=1.0.0', node: '>=0.10.0'} - rollup-plugin-dts@6.2.1: - resolution: {integrity: sha512-sR3CxYUl7i2CHa0O7bA45mCrgADyAQ0tVtGSqi3yvH28M+eg1+g5d7kQ9hLvEz5dorK3XVsH5L2jwHLQf72DzA==} - engines: {node: '>=16'} + rolldown-plugin-dts@0.23.2: + resolution: {integrity: sha512-PbSqLawLgZBGcOGT3yqWBGn4cX+wh2nt5FuBGdcMHyOhoukmjbhYAl8NT9sE4U38Cm9tqLOIQeOrvzeayM0DLQ==} + engines: {node: '>=20.19.0'} peerDependencies: - rollup: ^3.29.4 || ^4 - typescript: ^4.5 || ^5.0 + '@ts-macro/tsc': ^0.3.6 + '@typescript/native-preview': '>=7.0.0-dev.20260325.1' + rolldown: ^1.0.0-rc.12 + typescript: ^5.0.0 || ^6.0.0 + vue-tsc: ~3.2.0 + peerDependenciesMeta: + '@ts-macro/tsc': + optional: true + '@typescript/native-preview': + optional: true + typescript: + optional: true + vue-tsc: + optional: true + + rolldown@1.0.0-rc.17: + resolution: {integrity: sha512-ZrT53oAKrtA4+YtBWPQbtPOxIbVDbxT0orcYERKd63VJTF13zPcgXTvD4843L8pcsI7M6MErt8QtON6lrB9tyA==} + engines: {node: ^20.19.0 || >=22.12.0} + hasBin: true rollup@4.45.1: resolution: {integrity: sha512-4iya7Jb76fVpQyLoiVpzUrsjQ12r3dM7fIVz+4NwoYvZOShknRmiv+iu9CClZml5ZLGb0XMcYLutK6w9tgxHDw==} @@ -1578,18 +1672,19 @@ packages: run-parallel@1.2.0: resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + sade@1.8.1: + resolution: {integrity: sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==} + engines: {node: '>=6'} + safer-buffer@2.1.2: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} - scule@1.3.0: - resolution: {integrity: sha512-6FtHJEvt+pVMIB9IBY+IcCJ6Z5f1iQnytgyfKMhDKgmzYG+TeH/wx1y3l27rshSbLiSanrR9ffZDrEsmjlQF2g==} - semiver@1.1.0: resolution: {integrity: sha512-QNI2ChmuioGC1/xjyYwyZYADILWyW6AmS1UH6gDj/SFUUUS4MBAWs/7mxnkRPc/F4iHezDP+O8t0dO8WHiEOdg==} engines: {node: '>=6'} - semver@7.7.2: - resolution: {integrity: sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==} + semver@7.7.4: + resolution: {integrity: sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==} engines: {node: '>=10'} hasBin: true @@ -1615,8 +1710,8 @@ packages: resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} engines: {node: '>=8'} - smol-toml@1.4.1: - resolution: {integrity: sha512-CxdwHXyYTONGHThDbq5XdwbFsuY4wlClRGejfE2NtwUtiHYsP1QtNsHb/hnj31jKYSchztJsaA8pSQoVzkfCFg==} + smol-toml@1.6.1: + resolution: {integrity: sha512-dWUG8F5sIIARXih1DTaQAX4SsiTXhInKf1buxdY9DIg4ZYPZK5nGM1VRIYmEbDbsHt7USo99xSLFu5Q1IqTmsg==} engines: {node: '>= 18'} source-map-js@1.2.1: @@ -1632,8 +1727,8 @@ packages: stackback@0.0.2: resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} - std-env@3.9.0: - resolution: {integrity: sha512-UGvjygr6F6tpH7o2qyqR6QYpwraIjKSdtzyBdyytFOHmPZY917kwdwLG0RbOjWOnKmnm3PeHjaoLLMie7kPLQw==} + std-env@4.0.0: + resolution: {integrity: sha512-zUMPtQ/HBY3/50VbpkupYHbRroTRZJPRLvreamgErJVys0ceuzMkD44J/QjqhHjOzK42GQ3QZIeFG1OYfOtKqQ==} strip-ansi@6.0.1: resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} @@ -1643,28 +1738,10 @@ packages: resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} engines: {node: '>=4'} - strip-json-comments@5.0.2: - resolution: {integrity: sha512-4X2FR3UwhNUE9G49aIsJW5hRRR3GXGTBTZRMfv568O60ojM8HcWjV/VxAxCDW3SUND33O6ZY66ZuRcdkj73q2g==} + strip-json-comments@5.0.3: + resolution: {integrity: sha512-1tB5mhVo7U+ETBKNf92xT4hrQa3pm0MZ0PQvuDnWgAAGHDsfp4lPSpiS6psrSiet87wyGPh9ft6wmhOMQ0hDiw==} engines: {node: '>=14.16'} - strip-literal@3.0.0: - resolution: {integrity: sha512-TcccoMhJOM3OebGhSBEmp3UZ2SfDMZUEBdRA/9ynfLi8yYajyWX3JiXArcJt4Umh4vISpspkQIY8ZZoCqjbviA==} - - stylehacks@7.0.4: - resolution: {integrity: sha512-i4zfNrGMt9SB4xRK9L83rlsFCgdGANfeDAYacO1pkqcE7cRHPdWHwnKZVz7WY17Veq/FvyYsRAU++Ga+qDFIww==} - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} - peerDependencies: - postcss: ^8.4.31 - - supports-preserve-symlinks-flag@1.0.0: - resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} - engines: {node: '>= 0.4'} - - svgo@3.3.2: - resolution: {integrity: sha512-OoohrmuUlBs8B8o6MB2Aevn+pRIH9zDALSR+6hhqVfa6fRwG/Qw9VUMSMW9VNg2CFc/MTIfabtdOVl9ODIJjpw==} - engines: {node: '>=14.0.0'} - hasBin: true - term-size@2.2.1: resolution: {integrity: sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==} engines: {node: '>=8'} @@ -1678,23 +1755,20 @@ packages: tinybench@2.9.0: resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==} - tinyexec@0.3.2: - resolution: {integrity: sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==} + tinyexec@1.1.1: + resolution: {integrity: sha512-VKS/ZaQhhkKFMANmAOhhXVoIfBXblQxGX1myCQ2faQrfmobMftXeJPcZGp0gS07ocvGJWDLZGyOZDadDBqYIJg==} + engines: {node: '>=18'} - tinyglobby@0.2.14: - resolution: {integrity: sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ==} + tinyglobby@0.2.16: + resolution: {integrity: sha512-pn99VhoACYR8nFHhxqix+uvsbXineAasWm5ojXoN8xEwK5Kd3/TrhNn1wByuD52UxWRLy8pu+kRMniEi6Eq9Zg==} engines: {node: '>=12.0.0'} - tinypool@1.1.1: - resolution: {integrity: sha512-Zba82s87IFq9A9XmjiX5uZA/ARWDrB03OHlq+Vw1fSdt0I+4/Kutwy8BP4Y/y/aORMo61FQ0vIb5j44vSo5Pkg==} - engines: {node: ^18.0.0 || >=20.0.0} + tinypool@2.1.0: + resolution: {integrity: sha512-Pugqs6M0m7Lv1I7FtxN4aoyToKg1C4tu+/381vH35y8oENM/Ai7f7C4StcoK4/+BSw9ebcS8jRiVrORFKCALLw==} + engines: {node: ^20.0.0 || >=22.0.0} - tinyrainbow@2.0.0: - resolution: {integrity: sha512-op4nsTR47R6p0vMUUoYl/a+ljLFVtlfaXkLQmqfLR1qHma1h/ysYk4hEXZ880bf2CYgTskvTa/e196Vd5dDQXw==} - engines: {node: '>=14.0.0'} - - tinyspy@4.0.3: - resolution: {integrity: sha512-t2T/WLB2WRgZ9EpE4jgPJ9w+i66UZfDc8wHh0xrwiRNN+UwH98GIJkTeZqX9rg0i0ptwzqW+uYeIF0T4F8LR7A==} + tinyrainbow@3.1.0: + resolution: {integrity: sha512-Bf+ILmBgretUrdJxzXM0SgXLZ3XfiaUuOj/IKQHuTXip+05Xn+uyEYdVg0kYDipTBcLrCVyUzAPz7QmArb0mmw==} engines: {node: '>=14.0.0'} tmp@0.0.33: @@ -1711,6 +1785,38 @@ packages: peerDependencies: tslib: '2' + tree-kill@1.2.2: + resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==} + hasBin: true + + tsdown@0.21.10: + resolution: {integrity: sha512-3wk73yBhZe/wX7REqSdivNQ84TDs1mJ+IlnzrrEREP70xlJ/AEIzqaI04l/TzMKVIdkTdC3CPaADn2Lk/0SkdA==} + engines: {node: '>=20.19.0'} + hasBin: true + peerDependencies: + '@arethetypeswrong/core': ^0.18.1 + '@tsdown/css': 0.21.10 + '@tsdown/exe': 0.21.10 + '@vitejs/devtools': '*' + publint: ^0.3.0 + typescript: ^5.0.0 || ^6.0.0 + unplugin-unused: ^0.5.0 + peerDependenciesMeta: + '@arethetypeswrong/core': + optional: true + '@tsdown/css': + optional: true + '@tsdown/exe': + optional: true + '@vitejs/devtools': + optional: true + publint: + optional: true + typescript: + optional: true + unplugin-unused: + optional: true + tslib@2.8.1: resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} @@ -1719,17 +1825,12 @@ packages: engines: {node: '>=14.17'} hasBin: true - ufo@1.5.4: - resolution: {integrity: sha512-UsUk3byDzKd04EyoZ7U4DOlxQaD14JUKQl6/P7wiX4FNvUfm3XL246n9W5AmqwW5RSFJ27NAuM0iLscAOYUiGQ==} + unbash@3.0.0: + resolution: {integrity: sha512-FeFPZ/WFT0mbRCuydiZzpPFlrYN8ZUpphQKoq4EeElVIYjYyGzPMxQR/simUwCOJIyVhpFk4RbtyO7RuMpMnHA==} + engines: {node: '>=14'} - unbuild@3.6.0: - resolution: {integrity: sha512-vWwKMo2bZS9jbMWO7n51nQvKCRUM3WmONA6+k4z0Ttfkkhh6q1DV/JhKkd58d61eeN9UoTGechlAxXvm11sghw==} - hasBin: true - peerDependencies: - typescript: ^5.8.3 - peerDependenciesMeta: - typescript: - optional: true + unconfig-core@7.5.0: + resolution: {integrity: sha512-Su3FauozOGP44ZmKdHy2oE6LPjk51M/TRRjHv2HNCWiDvfvCoxC2lno6jevMA91MYAdCdwP05QnWdWpSbncX/w==} undici-types@6.21.0: resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==} @@ -1738,23 +1839,15 @@ packages: resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} engines: {node: '>= 4.0.0'} - untyped@2.0.0: - resolution: {integrity: sha512-nwNCjxJTjNuLCgFr42fEak5OcLuB3ecca+9ksPFNvtfYSLpjf+iJqSIaSnIile6ZPbKYxI5k2AfXqeopGudK/g==} - hasBin: true - - update-browserslist-db@1.1.3: - resolution: {integrity: sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==} + unrun@0.2.37: + resolution: {integrity: sha512-AA7vDuYsgeSYVzJMm16UKA+aXFKhy7nFqW9z5l7q44K4ppFWZAMqYS58ePRZbugMLPH0fwwMzD5A8nP0avxwZQ==} + engines: {node: '>=20.19.0'} hasBin: true peerDependencies: - browserslist: '>= 4.21.0' - - util-deprecate@1.0.2: - resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} - - vite-node@3.2.4: - resolution: {integrity: sha512-EbKSKh+bh1E1IFxeO0pg1n4dvoOTt0UDiXMd/qn++r98+jPO1xtJilvXldeuQ8giIB5IkpjCgMleHMNEsGH6pg==} - engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} - hasBin: true + synckit: ^0.11.11 + peerDependenciesMeta: + synckit: + optional: true vite@7.0.6: resolution: {integrity: sha512-MHFiOENNBd+Bd9uvc8GEsIzdkn1JxMmEeYX35tI3fv0sJBUTfW5tQsoaOwuY4KhBI09A3dUJ/DXf2yxPVPUceg==} @@ -1796,31 +1889,43 @@ packages: yaml: optional: true - vitest-ansi-serializer@0.1.2: - resolution: {integrity: sha512-9GHM76QixD3bwEPvbuZXWSJfTZKiTml5WuFxk41MlB/ZrSdsIyePaZoG6kA+xDmQepVbzmW1ozg2s0iSpEOp+Q==} + vitest-ansi-serializer@0.2.1: + resolution: {integrity: sha512-IC60vT8raDlHwk2tZAy9wfetJMJkVOGC50jyjcC1HTYBAYfJEXVeKe72Jd5Jzcw1Xt73Nri2cdE98p+K2mnDrA==} peerDependencies: - vitest: ^3.1.1 + vitest: ^3.0.0 || ^4.0.0 - vitest@3.2.4: - resolution: {integrity: sha512-LUCP5ev3GURDysTWiP47wRRUpLKMOfPh+yKTx3kVIEiu5KOMeqzpnYNsKyOoVrULivR8tLcks4+lga33Whn90A==} - engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} + vitest@4.1.5: + resolution: {integrity: sha512-9Xx1v3/ih3m9hN+SbfkUyy0JAs72ap3r7joc87XL6jwF0jGg6mFBvQ1SrwaX+h8BlkX6Hz9shdd1uo6AF+ZGpg==} + engines: {node: ^20.0.0 || ^22.0.0 || >=24.0.0} hasBin: true peerDependencies: '@edge-runtime/vm': '*' - '@types/debug': ^4.1.12 - '@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0 - '@vitest/browser': 3.2.4 - '@vitest/ui': 3.2.4 + '@opentelemetry/api': ^1.9.0 + '@types/node': ^20.0.0 || ^22.0.0 || >=24.0.0 + '@vitest/browser-playwright': 4.1.5 + '@vitest/browser-preview': 4.1.5 + '@vitest/browser-webdriverio': 4.1.5 + '@vitest/coverage-istanbul': 4.1.5 + '@vitest/coverage-v8': 4.1.5 + '@vitest/ui': 4.1.5 happy-dom: '*' jsdom: '*' peerDependenciesMeta: '@edge-runtime/vm': optional: true - '@types/debug': + '@opentelemetry/api': optional: true '@types/node': optional: true - '@vitest/browser': + '@vitest/browser-playwright': + optional: true + '@vitest/browser-preview': + optional: true + '@vitest/browser-webdriverio': + optional: true + '@vitest/coverage-istanbul': + optional: true + '@vitest/coverage-v8': optional: true '@vitest/ui': optional: true @@ -1843,63 +1948,92 @@ packages: engines: {node: '>=8'} hasBin: true - zod-validation-error@3.4.0: - resolution: {integrity: sha512-ZOPR9SVY6Pb2qqO5XHt+MkkTRxGXb4EVtnjc9JpXUOtUB1T9Ru7mZOT361AN3MsetVe7R0a1KZshJDZdgp9miQ==} - engines: {node: '>=18.0.0'} - peerDependencies: - zod: ^3.18.0 + yaml@2.8.3: + resolution: {integrity: sha512-AvbaCLOO2Otw/lW5bmh9d/WEdcDFdQp2Z2ZUH3pX9U2ihyUY0nvLv7J6TrWowklRGPYbB/IuIMfYgxaCPg5Bpg==} + engines: {node: '>= 14.6'} + hasBin: true - zod@3.22.4: - resolution: {integrity: sha512-iC+8Io04lddc+mVqQ9AZ7OQ2MrUKGN+oIQyq1vemgt46jwCwLfhq7/pwnBnNXXXZb8VTVLKwp9EDkx+ryxIWmg==} + zod@4.3.6: + resolution: {integrity: sha512-rftlrkhHZOcjDwkGlnUtZZkvaPHCsDATp4pGpuOOMDaTdDDXF91wuVDJoWoPsKX/3YPQ5fHuF3STjcYyKr+Qhg==} snapshots: - '@babel/code-frame@7.26.2': + '@babel/generator@8.0.0-rc.3': dependencies: - '@babel/helper-validator-identifier': 7.25.9 - js-tokens: 4.0.0 - picocolors: 1.1.1 - optional: true - - '@babel/helper-validator-identifier@7.25.9': - optional: true - - '@babel/runtime@7.28.2': {} - - '@biomejs/biome@2.1.2': - optionalDependencies: - '@biomejs/cli-darwin-arm64': 2.1.2 - '@biomejs/cli-darwin-x64': 2.1.2 - '@biomejs/cli-linux-arm64': 2.1.2 - '@biomejs/cli-linux-arm64-musl': 2.1.2 - '@biomejs/cli-linux-x64': 2.1.2 - '@biomejs/cli-linux-x64-musl': 2.1.2 - '@biomejs/cli-win32-arm64': 2.1.2 - '@biomejs/cli-win32-x64': 2.1.2 - - '@biomejs/cli-darwin-arm64@2.1.2': - optional: true + '@babel/parser': 8.0.0-rc.3 + '@babel/types': 8.0.0-rc.3 + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.31 + '@types/jsesc': 2.5.1 + jsesc: 3.1.0 - '@biomejs/cli-darwin-x64@2.1.2': - optional: true + '@babel/helper-string-parser@8.0.0-rc.3': {} - '@biomejs/cli-linux-arm64-musl@2.1.2': - optional: true + '@babel/helper-validator-identifier@8.0.0-rc.3': {} - '@biomejs/cli-linux-arm64@2.1.2': - optional: true + '@babel/parser@8.0.0-rc.3': + dependencies: + '@babel/types': 8.0.0-rc.3 - '@biomejs/cli-linux-x64-musl@2.1.2': - optional: true + '@babel/runtime@7.28.2': {} - '@biomejs/cli-linux-x64@2.1.2': - optional: true + '@babel/types@8.0.0-rc.3': + dependencies: + '@babel/helper-string-parser': 8.0.0-rc.3 + '@babel/helper-validator-identifier': 8.0.0-rc.3 - '@biomejs/cli-win32-arm64@2.1.2': - optional: true + '@bomb.sh/args@0.3.1': {} - '@biomejs/cli-win32-x64@2.1.2': - optional: true + '@bomb.sh/tools@https://pkg.pr.new/@bomb.sh/tools@400d677(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@20.19.39)(jiti@2.6.1)(oxc-resolver@11.19.1(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0))(typescript@6.0.3)(yaml@2.8.3)': + dependencies: + '@bomb.sh/args': 0.3.1 + '@humanfs/node': 0.16.7 + '@humanfs/types': 0.15.0 + '@typescript/native-preview': 7.0.0-dev.20260427.1 + knip: 6.9.0(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0) + oxfmt: 0.47.0 + oxlint: 1.62.0 + publint: 0.3.18 + tinyexec: 1.1.1 + tsdown: 0.21.10(@typescript/native-preview@7.0.0-dev.20260427.1)(oxc-resolver@11.19.1(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0))(publint@0.3.18)(typescript@6.0.3) + vitest: 4.1.5(@types/node@20.19.39)(jiti@2.6.1)(yaml@2.8.3) + vitest-ansi-serializer: 0.2.1(vitest@4.1.5(@types/node@20.19.39)(jiti@2.6.1)(yaml@2.8.3)) + transitivePeerDependencies: + - '@arethetypeswrong/core' + - '@edge-runtime/vm' + - '@emnapi/core' + - '@emnapi/runtime' + - '@opentelemetry/api' + - '@ts-macro/tsc' + - '@tsdown/css' + - '@tsdown/exe' + - '@types/node' + - '@vitejs/devtools' + - '@vitest/browser-playwright' + - '@vitest/browser-preview' + - '@vitest/browser-webdriverio' + - '@vitest/coverage-istanbul' + - '@vitest/coverage-v8' + - '@vitest/ui' + - happy-dom + - jiti + - jsdom + - less + - lightningcss + - msw + - oxc-resolver + - oxlint-tsgolint + - sass + - sass-embedded + - stylus + - sugarss + - synckit + - terser + - tsx + - typescript + - unplugin-unused + - vue-tsc + - yaml '@changesets/apply-release-plan@7.0.12': dependencies: @@ -1915,7 +2049,7 @@ snapshots: outdent: 0.5.0 prettier: 2.8.8 resolve-from: 5.0.0 - semver: 7.7.2 + semver: 7.7.4 '@changesets/assemble-release-plan@6.0.9': dependencies: @@ -1924,7 +2058,7 @@ snapshots: '@changesets/should-skip-package': 0.1.2 '@changesets/types': 6.1.0 '@manypkg/get-packages': 1.1.3 - semver: 7.7.2 + semver: 7.7.4 '@changesets/changelog-git@0.2.1': dependencies: @@ -1957,7 +2091,7 @@ snapshots: package-manager-detector: 0.2.11 picocolors: 1.1.1 resolve-from: 5.0.0 - semver: 7.7.2 + semver: 7.7.4 spawndamnit: 3.0.1 term-size: 2.2.1 @@ -1980,7 +2114,7 @@ snapshots: '@changesets/types': 6.1.0 '@manypkg/get-packages': 1.1.3 picocolors: 1.1.1 - semver: 7.7.2 + semver: 7.7.4 '@changesets/get-release-plan@4.0.13': dependencies: @@ -2043,18 +2177,18 @@ snapshots: human-id: 4.1.1 prettier: 2.8.8 - '@emnapi/core@1.4.5': + '@emnapi/core@1.10.0': dependencies: - '@emnapi/wasi-threads': 1.0.4 + '@emnapi/wasi-threads': 1.2.1 tslib: 2.8.1 optional: true - '@emnapi/runtime@1.4.5': + '@emnapi/runtime@1.10.0': dependencies: tslib: 2.8.1 optional: true - '@emnapi/wasi-threads@1.0.4': + '@emnapi/wasi-threads@1.2.1': dependencies: tslib: 2.8.1 optional: true @@ -2137,7 +2271,30 @@ snapshots: '@esbuild/win32-x64@0.25.8': optional: true - '@jridgewell/sourcemap-codec@1.5.0': {} + '@humanfs/core@0.19.1': {} + + '@humanfs/node@0.16.7': + dependencies: + '@humanfs/core': 0.19.1 + '@humanwhocodes/retry': 0.4.3 + + '@humanfs/types@0.15.0': {} + + '@humanwhocodes/retry@0.4.3': {} + + '@jridgewell/gen-mapping@0.3.13': + dependencies: + '@jridgewell/sourcemap-codec': 1.5.5 + '@jridgewell/trace-mapping': 0.3.31 + + '@jridgewell/resolve-uri@3.1.2': {} + + '@jridgewell/sourcemap-codec@1.5.5': {} + + '@jridgewell/trace-mapping@0.3.31': + dependencies: + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.5.5 '@jsonjoy.com/base64@1.1.2(tslib@2.8.1)': dependencies: @@ -2171,11 +2328,11 @@ snapshots: globby: 11.1.0 read-yaml-file: 1.1.0 - '@napi-rs/wasm-runtime@1.0.1': + '@napi-rs/wasm-runtime@1.1.4(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)': dependencies: - '@emnapi/core': 1.4.5 - '@emnapi/runtime': 1.4.5 - '@tybys/wasm-util': 0.10.0 + '@emnapi/core': 1.10.0 + '@emnapi/runtime': 1.10.0 + '@tybys/wasm-util': 0.10.1 optional: true '@nodelib/fs.scandir@2.1.5': @@ -2190,111 +2347,309 @@ snapshots: '@nodelib/fs.scandir': 2.1.5 fastq: 1.17.1 - '@oxc-resolver/binding-android-arm-eabi@11.6.0': + '@oxc-parser/binding-android-arm-eabi@0.128.0': optional: true - '@oxc-resolver/binding-android-arm64@11.6.0': + '@oxc-parser/binding-android-arm64@0.128.0': optional: true - '@oxc-resolver/binding-darwin-arm64@11.6.0': + '@oxc-parser/binding-darwin-arm64@0.128.0': optional: true - '@oxc-resolver/binding-darwin-x64@11.6.0': + '@oxc-parser/binding-darwin-x64@0.128.0': optional: true - '@oxc-resolver/binding-freebsd-x64@11.6.0': + '@oxc-parser/binding-freebsd-x64@0.128.0': optional: true - '@oxc-resolver/binding-linux-arm-gnueabihf@11.6.0': + '@oxc-parser/binding-linux-arm-gnueabihf@0.128.0': optional: true - '@oxc-resolver/binding-linux-arm-musleabihf@11.6.0': + '@oxc-parser/binding-linux-arm-musleabihf@0.128.0': optional: true - '@oxc-resolver/binding-linux-arm64-gnu@11.6.0': + '@oxc-parser/binding-linux-arm64-gnu@0.128.0': optional: true - '@oxc-resolver/binding-linux-arm64-musl@11.6.0': + '@oxc-parser/binding-linux-arm64-musl@0.128.0': optional: true - '@oxc-resolver/binding-linux-ppc64-gnu@11.6.0': + '@oxc-parser/binding-linux-ppc64-gnu@0.128.0': optional: true - '@oxc-resolver/binding-linux-riscv64-gnu@11.6.0': + '@oxc-parser/binding-linux-riscv64-gnu@0.128.0': optional: true - '@oxc-resolver/binding-linux-riscv64-musl@11.6.0': + '@oxc-parser/binding-linux-riscv64-musl@0.128.0': optional: true - '@oxc-resolver/binding-linux-s390x-gnu@11.6.0': + '@oxc-parser/binding-linux-s390x-gnu@0.128.0': optional: true - '@oxc-resolver/binding-linux-x64-gnu@11.6.0': + '@oxc-parser/binding-linux-x64-gnu@0.128.0': optional: true - '@oxc-resolver/binding-linux-x64-musl@11.6.0': + '@oxc-parser/binding-linux-x64-musl@0.128.0': optional: true - '@oxc-resolver/binding-wasm32-wasi@11.6.0': + '@oxc-parser/binding-openharmony-arm64@0.128.0': + optional: true + + '@oxc-parser/binding-wasm32-wasi@0.128.0': dependencies: - '@napi-rs/wasm-runtime': 1.0.1 + '@emnapi/core': 1.10.0 + '@emnapi/runtime': 1.10.0 + '@napi-rs/wasm-runtime': 1.1.4(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0) optional: true - '@oxc-resolver/binding-win32-arm64-msvc@11.6.0': + '@oxc-parser/binding-win32-arm64-msvc@0.128.0': optional: true - '@oxc-resolver/binding-win32-ia32-msvc@11.6.0': + '@oxc-parser/binding-win32-ia32-msvc@0.128.0': optional: true - '@oxc-resolver/binding-win32-x64-msvc@11.6.0': + '@oxc-parser/binding-win32-x64-msvc@0.128.0': optional: true - '@rollup/plugin-alias@5.1.1(rollup@4.45.1)': - optionalDependencies: - rollup: 4.45.1 + '@oxc-project/types@0.127.0': {} - '@rollup/plugin-commonjs@28.0.6(rollup@4.45.1)': - dependencies: - '@rollup/pluginutils': 5.2.0(rollup@4.45.1) - commondir: 1.0.1 - estree-walker: 2.0.2 - fdir: 6.4.6(picomatch@4.0.3) - is-reference: 1.2.1 - magic-string: 0.30.17 - picomatch: 4.0.3 - optionalDependencies: - rollup: 4.45.1 + '@oxc-project/types@0.128.0': {} - '@rollup/plugin-json@6.1.0(rollup@4.45.1)': - dependencies: - '@rollup/pluginutils': 5.2.0(rollup@4.45.1) - optionalDependencies: - rollup: 4.45.1 + '@oxc-resolver/binding-android-arm-eabi@11.19.1': + optional: true + + '@oxc-resolver/binding-android-arm64@11.19.1': + optional: true + + '@oxc-resolver/binding-darwin-arm64@11.19.1': + optional: true + + '@oxc-resolver/binding-darwin-x64@11.19.1': + optional: true + + '@oxc-resolver/binding-freebsd-x64@11.19.1': + optional: true + + '@oxc-resolver/binding-linux-arm-gnueabihf@11.19.1': + optional: true + + '@oxc-resolver/binding-linux-arm-musleabihf@11.19.1': + optional: true + + '@oxc-resolver/binding-linux-arm64-gnu@11.19.1': + optional: true + + '@oxc-resolver/binding-linux-arm64-musl@11.19.1': + optional: true + + '@oxc-resolver/binding-linux-ppc64-gnu@11.19.1': + optional: true + + '@oxc-resolver/binding-linux-riscv64-gnu@11.19.1': + optional: true + + '@oxc-resolver/binding-linux-riscv64-musl@11.19.1': + optional: true + + '@oxc-resolver/binding-linux-s390x-gnu@11.19.1': + optional: true + + '@oxc-resolver/binding-linux-x64-gnu@11.19.1': + optional: true + + '@oxc-resolver/binding-linux-x64-musl@11.19.1': + optional: true + + '@oxc-resolver/binding-openharmony-arm64@11.19.1': + optional: true - '@rollup/plugin-node-resolve@16.0.1(rollup@4.45.1)': + '@oxc-resolver/binding-wasm32-wasi@11.19.1(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)': dependencies: - '@rollup/pluginutils': 5.2.0(rollup@4.45.1) - '@types/resolve': 1.20.2 - deepmerge: 4.3.1 - is-module: 1.0.0 - resolve: 1.22.8 - optionalDependencies: - rollup: 4.45.1 + '@napi-rs/wasm-runtime': 1.1.4(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0) + transitivePeerDependencies: + - '@emnapi/core' + - '@emnapi/runtime' + optional: true + + '@oxc-resolver/binding-win32-arm64-msvc@11.19.1': + optional: true + + '@oxc-resolver/binding-win32-ia32-msvc@11.19.1': + optional: true + + '@oxc-resolver/binding-win32-x64-msvc@11.19.1': + optional: true + + '@oxfmt/binding-android-arm-eabi@0.47.0': + optional: true + + '@oxfmt/binding-android-arm64@0.47.0': + optional: true + + '@oxfmt/binding-darwin-arm64@0.47.0': + optional: true + + '@oxfmt/binding-darwin-x64@0.47.0': + optional: true + + '@oxfmt/binding-freebsd-x64@0.47.0': + optional: true + + '@oxfmt/binding-linux-arm-gnueabihf@0.47.0': + optional: true + + '@oxfmt/binding-linux-arm-musleabihf@0.47.0': + optional: true + + '@oxfmt/binding-linux-arm64-gnu@0.47.0': + optional: true + + '@oxfmt/binding-linux-arm64-musl@0.47.0': + optional: true + + '@oxfmt/binding-linux-ppc64-gnu@0.47.0': + optional: true + + '@oxfmt/binding-linux-riscv64-gnu@0.47.0': + optional: true + + '@oxfmt/binding-linux-riscv64-musl@0.47.0': + optional: true + + '@oxfmt/binding-linux-s390x-gnu@0.47.0': + optional: true + + '@oxfmt/binding-linux-x64-gnu@0.47.0': + optional: true + + '@oxfmt/binding-linux-x64-musl@0.47.0': + optional: true + + '@oxfmt/binding-openharmony-arm64@0.47.0': + optional: true + + '@oxfmt/binding-win32-arm64-msvc@0.47.0': + optional: true + + '@oxfmt/binding-win32-ia32-msvc@0.47.0': + optional: true + + '@oxfmt/binding-win32-x64-msvc@0.47.0': + optional: true + + '@oxlint/binding-android-arm-eabi@1.62.0': + optional: true + + '@oxlint/binding-android-arm64@1.62.0': + optional: true + + '@oxlint/binding-darwin-arm64@1.62.0': + optional: true + + '@oxlint/binding-darwin-x64@1.62.0': + optional: true + + '@oxlint/binding-freebsd-x64@1.62.0': + optional: true + + '@oxlint/binding-linux-arm-gnueabihf@1.62.0': + optional: true + + '@oxlint/binding-linux-arm-musleabihf@1.62.0': + optional: true + + '@oxlint/binding-linux-arm64-gnu@1.62.0': + optional: true + + '@oxlint/binding-linux-arm64-musl@1.62.0': + optional: true + + '@oxlint/binding-linux-ppc64-gnu@1.62.0': + optional: true + + '@oxlint/binding-linux-riscv64-gnu@1.62.0': + optional: true + + '@oxlint/binding-linux-riscv64-musl@1.62.0': + optional: true + + '@oxlint/binding-linux-s390x-gnu@1.62.0': + optional: true + + '@oxlint/binding-linux-x64-gnu@1.62.0': + optional: true + + '@oxlint/binding-linux-x64-musl@1.62.0': + optional: true + + '@oxlint/binding-openharmony-arm64@1.62.0': + optional: true + + '@oxlint/binding-win32-arm64-msvc@1.62.0': + optional: true + + '@oxlint/binding-win32-ia32-msvc@1.62.0': + optional: true + + '@oxlint/binding-win32-x64-msvc@1.62.0': + optional: true + + '@publint/pack@0.1.4': {} - '@rollup/plugin-replace@6.0.2(rollup@4.45.1)': + '@quansync/fs@1.0.0': dependencies: - '@rollup/pluginutils': 5.2.0(rollup@4.45.1) - magic-string: 0.30.17 - optionalDependencies: - rollup: 4.45.1 + quansync: 1.0.0 + + '@rolldown/binding-android-arm64@1.0.0-rc.17': + optional: true + + '@rolldown/binding-darwin-arm64@1.0.0-rc.17': + optional: true + + '@rolldown/binding-darwin-x64@1.0.0-rc.17': + optional: true + + '@rolldown/binding-freebsd-x64@1.0.0-rc.17': + optional: true + + '@rolldown/binding-linux-arm-gnueabihf@1.0.0-rc.17': + optional: true + + '@rolldown/binding-linux-arm64-gnu@1.0.0-rc.17': + optional: true + + '@rolldown/binding-linux-arm64-musl@1.0.0-rc.17': + optional: true - '@rollup/pluginutils@5.2.0(rollup@4.45.1)': + '@rolldown/binding-linux-ppc64-gnu@1.0.0-rc.17': + optional: true + + '@rolldown/binding-linux-s390x-gnu@1.0.0-rc.17': + optional: true + + '@rolldown/binding-linux-x64-gnu@1.0.0-rc.17': + optional: true + + '@rolldown/binding-linux-x64-musl@1.0.0-rc.17': + optional: true + + '@rolldown/binding-openharmony-arm64@1.0.0-rc.17': + optional: true + + '@rolldown/binding-wasm32-wasi@1.0.0-rc.17': dependencies: - '@types/estree': 1.0.8 - estree-walker: 2.0.2 - picomatch: 4.0.3 - optionalDependencies: - rollup: 4.45.1 + '@emnapi/core': 1.10.0 + '@emnapi/runtime': 1.10.0 + '@napi-rs/wasm-runtime': 1.1.4(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0) + optional: true + + '@rolldown/binding-win32-arm64-msvc@1.0.0-rc.17': + optional: true + + '@rolldown/binding-win32-x64-msvc@1.0.0-rc.17': + optional: true + + '@rolldown/pluginutils@1.0.0-rc.17': {} '@rollup/rollup-android-arm-eabi@4.45.1': optional: true @@ -2356,9 +2711,9 @@ snapshots: '@rollup/rollup-win32-x64-msvc@4.45.1': optional: true - '@trysound/sax@0.2.0': {} + '@standard-schema/spec@1.1.0': {} - '@tybys/wasm-util@0.10.0': + '@tybys/wasm-util@0.10.1': dependencies: tslib: 2.8.1 optional: true @@ -2371,268 +2726,154 @@ snapshots: '@types/estree@1.0.8': {} + '@types/jsesc@2.5.1': {} + '@types/node@12.20.55': {} '@types/node@20.19.39': dependencies: undici-types: 6.21.0 - '@types/resolve@1.20.2': {} - - '@vitest/expect@3.2.4': - dependencies: - '@types/chai': 5.2.2 - '@vitest/spy': 3.2.4 - '@vitest/utils': 3.2.4 - chai: 5.2.0 - tinyrainbow: 2.0.0 - - '@vitest/mocker@3.2.4(vite@7.0.6(@types/node@20.19.39)(jiti@2.5.0))': - dependencies: - '@vitest/spy': 3.2.4 - estree-walker: 3.0.3 - magic-string: 0.30.17 - optionalDependencies: - vite: 7.0.6(@types/node@20.19.39)(jiti@2.5.0) - - '@vitest/pretty-format@3.2.4': - dependencies: - tinyrainbow: 2.0.0 - - '@vitest/runner@3.2.4': - dependencies: - '@vitest/utils': 3.2.4 - pathe: 2.0.3 - strip-literal: 3.0.0 - - '@vitest/snapshot@3.2.4': - dependencies: - '@vitest/pretty-format': 3.2.4 - magic-string: 0.30.17 - pathe: 2.0.3 - - '@vitest/spy@3.2.4': - dependencies: - tinyspy: 4.0.3 - - '@vitest/utils@3.2.4': - dependencies: - '@vitest/pretty-format': 3.2.4 - loupe: 3.2.0 - tinyrainbow: 2.0.0 - - acorn@8.14.0: {} - - ansi-colors@4.1.3: {} - - ansi-regex@5.0.1: {} - - argparse@1.0.10: - dependencies: - sprintf-js: 1.0.3 - - argparse@2.0.1: {} - - array-union@2.1.0: {} - - assertion-error@2.0.1: {} - - autoprefixer@10.4.21(postcss@8.5.6): - dependencies: - browserslist: 4.25.1 - caniuse-lite: 1.0.30001727 - fraction.js: 4.3.7 - normalize-range: 0.1.2 - picocolors: 1.1.1 - postcss: 8.5.6 - postcss-value-parser: 4.2.0 - - better-path-resolve@1.0.0: - dependencies: - is-windows: 1.0.2 - - boolbase@1.0.0: {} - - braces@3.0.3: - dependencies: - fill-range: 7.1.1 - - browserslist@4.25.1: - dependencies: - caniuse-lite: 1.0.30001727 - electron-to-chromium: 1.5.190 - node-releases: 2.0.19 - update-browserslist-db: 1.1.3(browserslist@4.25.1) - - cac@6.7.14: {} - - caniuse-api@3.0.0: - dependencies: - browserslist: 4.25.1 - caniuse-lite: 1.0.30001727 - lodash.memoize: 4.1.2 - lodash.uniq: 4.5.0 - - caniuse-lite@1.0.30001727: {} - - chai@5.2.0: - dependencies: - assertion-error: 2.0.1 - check-error: 2.1.1 - deep-eql: 5.0.2 - loupe: 3.2.0 - pathval: 2.0.0 - - chardet@0.7.0: {} - - check-error@2.1.1: {} - - ci-info@3.9.0: {} + '@typescript/native-preview-darwin-arm64@7.0.0-dev.20260427.1': + optional: true - citty@0.1.6: - dependencies: - consola: 3.4.2 + '@typescript/native-preview-darwin-x64@7.0.0-dev.20260427.1': + optional: true - colord@2.9.3: {} + '@typescript/native-preview-linux-arm64@7.0.0-dev.20260427.1': + optional: true - commander@7.2.0: {} + '@typescript/native-preview-linux-arm@7.0.0-dev.20260427.1': + optional: true - commondir@1.0.1: {} + '@typescript/native-preview-linux-x64@7.0.0-dev.20260427.1': + optional: true - confbox@0.1.8: {} + '@typescript/native-preview-win32-arm64@7.0.0-dev.20260427.1': + optional: true - confbox@0.2.2: {} + '@typescript/native-preview-win32-x64@7.0.0-dev.20260427.1': + optional: true - consola@3.4.2: {} + '@typescript/native-preview@7.0.0-dev.20260427.1': + optionalDependencies: + '@typescript/native-preview-darwin-arm64': 7.0.0-dev.20260427.1 + '@typescript/native-preview-darwin-x64': 7.0.0-dev.20260427.1 + '@typescript/native-preview-linux-arm': 7.0.0-dev.20260427.1 + '@typescript/native-preview-linux-arm64': 7.0.0-dev.20260427.1 + '@typescript/native-preview-linux-x64': 7.0.0-dev.20260427.1 + '@typescript/native-preview-win32-arm64': 7.0.0-dev.20260427.1 + '@typescript/native-preview-win32-x64': 7.0.0-dev.20260427.1 - cross-env@7.0.3: + '@vitest/expect@4.1.5': dependencies: - cross-spawn: 7.0.6 + '@standard-schema/spec': 1.1.0 + '@types/chai': 5.2.2 + '@vitest/spy': 4.1.5 + '@vitest/utils': 4.1.5 + chai: 6.2.2 + tinyrainbow: 3.1.0 - cross-spawn@7.0.6: + '@vitest/mocker@4.1.5(vite@7.0.6(@types/node@20.19.39)(jiti@2.6.1)(yaml@2.8.3))': dependencies: - path-key: 3.1.1 - shebang-command: 2.0.0 - which: 2.0.2 + '@vitest/spy': 4.1.5 + estree-walker: 3.0.3 + magic-string: 0.30.21 + optionalDependencies: + vite: 7.0.6(@types/node@20.19.39)(jiti@2.6.1)(yaml@2.8.3) - css-declaration-sorter@7.2.0(postcss@8.5.6): + '@vitest/pretty-format@4.1.5': dependencies: - postcss: 8.5.6 + tinyrainbow: 3.1.0 - css-select@5.1.0: + '@vitest/runner@4.1.5': dependencies: - boolbase: 1.0.0 - css-what: 6.1.0 - domhandler: 5.0.3 - domutils: 3.1.0 - nth-check: 2.1.1 + '@vitest/utils': 4.1.5 + pathe: 2.0.3 - css-tree@2.2.1: + '@vitest/snapshot@4.1.5': dependencies: - mdn-data: 2.0.28 - source-map-js: 1.2.1 + '@vitest/pretty-format': 4.1.5 + '@vitest/utils': 4.1.5 + magic-string: 0.30.21 + pathe: 2.0.3 - css-tree@2.3.1: + '@vitest/spy@4.1.5': {} + + '@vitest/utils@4.1.5': dependencies: - mdn-data: 2.0.30 - source-map-js: 1.2.1 + '@vitest/pretty-format': 4.1.5 + convert-source-map: 2.0.0 + tinyrainbow: 3.1.0 + + ansi-colors@4.1.3: {} - css-what@6.1.0: {} + ansi-regex@5.0.1: {} - cssesc@3.0.0: {} + ansis@4.2.0: {} - cssnano-preset-default@7.0.6(postcss@8.5.6): - dependencies: - browserslist: 4.25.1 - css-declaration-sorter: 7.2.0(postcss@8.5.6) - cssnano-utils: 5.0.0(postcss@8.5.6) - postcss: 8.5.6 - postcss-calc: 10.0.2(postcss@8.5.6) - postcss-colormin: 7.0.2(postcss@8.5.6) - postcss-convert-values: 7.0.4(postcss@8.5.6) - postcss-discard-comments: 7.0.3(postcss@8.5.6) - postcss-discard-duplicates: 7.0.1(postcss@8.5.6) - postcss-discard-empty: 7.0.0(postcss@8.5.6) - postcss-discard-overridden: 7.0.0(postcss@8.5.6) - postcss-merge-longhand: 7.0.4(postcss@8.5.6) - postcss-merge-rules: 7.0.4(postcss@8.5.6) - postcss-minify-font-values: 7.0.0(postcss@8.5.6) - postcss-minify-gradients: 7.0.0(postcss@8.5.6) - postcss-minify-params: 7.0.2(postcss@8.5.6) - postcss-minify-selectors: 7.0.4(postcss@8.5.6) - postcss-normalize-charset: 7.0.0(postcss@8.5.6) - postcss-normalize-display-values: 7.0.0(postcss@8.5.6) - postcss-normalize-positions: 7.0.0(postcss@8.5.6) - postcss-normalize-repeat-style: 7.0.0(postcss@8.5.6) - postcss-normalize-string: 7.0.0(postcss@8.5.6) - postcss-normalize-timing-functions: 7.0.0(postcss@8.5.6) - postcss-normalize-unicode: 7.0.2(postcss@8.5.6) - postcss-normalize-url: 7.0.0(postcss@8.5.6) - postcss-normalize-whitespace: 7.0.0(postcss@8.5.6) - postcss-ordered-values: 7.0.1(postcss@8.5.6) - postcss-reduce-initial: 7.0.2(postcss@8.5.6) - postcss-reduce-transforms: 7.0.0(postcss@8.5.6) - postcss-svgo: 7.0.1(postcss@8.5.6) - postcss-unique-selectors: 7.0.3(postcss@8.5.6) - - cssnano-utils@5.0.0(postcss@8.5.6): + argparse@1.0.10: dependencies: - postcss: 8.5.6 + sprintf-js: 1.0.3 + + array-union@2.1.0: {} - cssnano@7.0.6(postcss@8.5.6): + ast-kit@3.0.0-beta.1: dependencies: - cssnano-preset-default: 7.0.6(postcss@8.5.6) - lilconfig: 3.1.2 - postcss: 8.5.6 + '@babel/parser': 8.0.0-rc.3 + estree-walker: 3.0.3 + pathe: 2.0.3 - csso@5.0.5: + better-path-resolve@1.0.0: dependencies: - css-tree: 2.2.1 + is-windows: 1.0.2 + + birpc@4.0.0: {} - debug@4.4.1: + braces@3.0.3: dependencies: - ms: 2.1.3 + fill-range: 7.1.1 - deep-eql@5.0.2: {} + cac@7.0.0: {} - deepmerge@4.3.1: {} + chai@6.2.2: {} - defu@6.1.4: {} + chardet@0.7.0: {} - detect-indent@6.1.0: {} + ci-info@3.9.0: {} - dir-glob@3.0.1: + convert-source-map@2.0.0: {} + + cross-env@7.0.3: dependencies: - path-type: 4.0.0 + cross-spawn: 7.0.6 - dom-serializer@2.0.0: + cross-spawn@7.0.6: dependencies: - domelementtype: 2.3.0 - domhandler: 5.0.3 - entities: 4.5.0 + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 - domelementtype@2.3.0: {} + defu@6.1.7: {} - domhandler@5.0.3: - dependencies: - domelementtype: 2.3.0 + detect-indent@6.1.0: {} - domutils@3.1.0: + dir-glob@3.0.1: dependencies: - dom-serializer: 2.0.0 - domelementtype: 2.3.0 - domhandler: 5.0.3 + path-type: 4.0.0 - electron-to-chromium@1.5.190: {} + dts-resolver@2.1.3(oxc-resolver@11.19.1(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)): + optionalDependencies: + oxc-resolver: 11.19.1(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0) + + empathic@2.0.0: {} enquirer@2.4.1: dependencies: ansi-colors: 4.1.3 strip-ansi: 6.0.1 - entities@4.5.0: {} - - es-module-lexer@1.7.0: {} + es-module-lexer@2.0.0: {} esbuild@0.25.8: optionalDependencies: @@ -2663,19 +2904,13 @@ snapshots: '@esbuild/win32-ia32': 0.25.8 '@esbuild/win32-x64': 0.25.8 - escalade@3.2.0: {} - esprima@4.0.1: {} - estree-walker@2.0.2: {} - estree-walker@3.0.3: dependencies: '@types/estree': 1.0.8 - expect-type@1.2.1: {} - - exsolve@1.0.7: {} + expect-type@1.3.0: {} extendable-error@0.1.7: {} @@ -2711,9 +2946,9 @@ snapshots: dependencies: walk-up-path: 4.0.0 - fdir@6.4.6(picomatch@4.0.3): + fdir@6.5.0(picomatch@4.0.4): optionalDependencies: - picomatch: 4.0.3 + picomatch: 4.0.4 fill-range@7.1.1: dependencies: @@ -2724,18 +2959,10 @@ snapshots: locate-path: 5.0.0 path-exists: 4.0.0 - fix-dts-default-cjs-exports@1.0.1: - dependencies: - magic-string: 0.30.17 - mlly: 1.7.4 - rollup: 4.45.1 - - formatly@0.2.4: + formatly@0.3.0: dependencies: fd-package-json: 2.0.0 - fraction.js@4.3.7: {} - fs-extra@7.0.1: dependencies: graceful-fs: 4.2.11 @@ -2751,7 +2978,9 @@ snapshots: fsevents@2.3.3: optional: true - function-bind@1.1.2: {} + get-tsconfig@4.14.0: + dependencies: + resolve-pkg-maps: 1.0.0 glob-parent@5.1.2: dependencies: @@ -2768,11 +2997,7 @@ snapshots: graceful-fs@4.2.11: {} - hasown@2.0.2: - dependencies: - function-bind: 1.1.2 - - hookable@5.5.3: {} + hookable@6.1.1: {} human-id@4.1.1: {} @@ -2784,9 +3009,7 @@ snapshots: ignore@5.3.2: {} - is-core-module@2.15.1: - dependencies: - hasown: 2.0.2 + import-without-cache@0.3.3: {} is-extglob@2.1.1: {} @@ -2794,14 +3017,8 @@ snapshots: dependencies: is-extglob: 2.1.1 - is-module@1.0.0: {} - is-number@7.0.0: {} - is-reference@1.2.1: - dependencies: - '@types/estree': 1.0.8 - is-subdir@1.2.0: dependencies: better-path-resolve: 1.0.0 @@ -2814,21 +3031,14 @@ snapshots: jiti@1.21.7: {} - jiti@2.5.0: {} - - js-tokens@4.0.0: - optional: true - - js-tokens@9.0.1: {} + jiti@2.6.1: {} js-yaml@3.14.1: dependencies: argparse: 1.0.10 esprima: 4.0.1 - js-yaml@4.1.0: - dependencies: - argparse: 2.0.1 + jsesc@3.1.0: {} jsonfile@4.0.0: optionalDependencies: @@ -2840,49 +3050,37 @@ snapshots: node-stream-zip: 1.15.0 semiver: 1.1.0 - knip@5.62.0(@types/node@20.19.39)(typescript@6.0.3): + knip@6.9.0(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0): dependencies: - '@nodelib/fs.walk': 1.2.8 - '@types/node': 20.19.39 - fast-glob: 3.3.3 - formatly: 0.2.4 - jiti: 2.5.0 - js-yaml: 4.1.0 + fdir: 6.5.0(picomatch@4.0.4) + formatly: 0.3.0 + get-tsconfig: 4.14.0 + jiti: 2.6.1 minimist: 1.2.8 - oxc-resolver: 11.6.0 - picocolors: 1.1.1 - picomatch: 4.0.3 - smol-toml: 1.4.1 - strip-json-comments: 5.0.2 - typescript: 6.0.3 - zod: 3.22.4 - zod-validation-error: 3.4.0(zod@3.22.4) - - knitwork@1.2.0: {} + oxc-parser: 0.128.0 + oxc-resolver: 11.19.1(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0) + picomatch: 4.0.4 + smol-toml: 1.6.1 + strip-json-comments: 5.0.3 + tinyglobby: 0.2.16 + unbash: 3.0.0 + yaml: 2.8.3 + zod: 4.3.6 + transitivePeerDependencies: + - '@emnapi/core' + - '@emnapi/runtime' kolorist@1.8.0: {} - lilconfig@3.1.2: {} - locate-path@5.0.0: dependencies: p-locate: 4.1.0 - lodash.memoize@4.1.2: {} - lodash.startcase@4.4.0: {} - lodash.uniq@4.5.0: {} - - loupe@3.2.0: {} - - magic-string@0.30.17: + magic-string@0.30.21: dependencies: - '@jridgewell/sourcemap-codec': 1.5.0 - - mdn-data@2.0.28: {} - - mdn-data@2.0.30: {} + '@jridgewell/sourcemap-codec': 1.5.5 memfs@4.17.2: dependencies: @@ -2900,76 +3098,114 @@ snapshots: minimist@1.2.8: {} - mkdist@2.3.0(typescript@6.0.3): - dependencies: - autoprefixer: 10.4.21(postcss@8.5.6) - citty: 0.1.6 - cssnano: 7.0.6(postcss@8.5.6) - defu: 6.1.4 - esbuild: 0.25.8 - jiti: 1.21.7 - mlly: 1.7.4 - pathe: 2.0.3 - pkg-types: 2.2.0 - postcss: 8.5.6 - postcss-nested: 7.0.2(postcss@8.5.6) - semver: 7.7.2 - tinyglobby: 0.2.14 - optionalDependencies: - typescript: 6.0.3 - - mlly@1.7.4: - dependencies: - acorn: 8.14.0 - pathe: 2.0.3 - pkg-types: 1.3.1 - ufo: 1.5.4 - mri@1.2.0: {} - ms@2.1.3: {} - nanoid@3.3.11: {} - napi-postinstall@0.3.2: {} - - node-releases@2.0.19: {} - node-stream-zip@1.15.0: {} - normalize-range@0.1.2: {} - - nth-check@2.1.1: - dependencies: - boolbase: 1.0.0 + obug@2.1.1: {} os-tmpdir@1.0.2: {} outdent@0.5.0: {} - oxc-resolver@11.6.0: + oxc-parser@0.128.0: + dependencies: + '@oxc-project/types': 0.128.0 + optionalDependencies: + '@oxc-parser/binding-android-arm-eabi': 0.128.0 + '@oxc-parser/binding-android-arm64': 0.128.0 + '@oxc-parser/binding-darwin-arm64': 0.128.0 + '@oxc-parser/binding-darwin-x64': 0.128.0 + '@oxc-parser/binding-freebsd-x64': 0.128.0 + '@oxc-parser/binding-linux-arm-gnueabihf': 0.128.0 + '@oxc-parser/binding-linux-arm-musleabihf': 0.128.0 + '@oxc-parser/binding-linux-arm64-gnu': 0.128.0 + '@oxc-parser/binding-linux-arm64-musl': 0.128.0 + '@oxc-parser/binding-linux-ppc64-gnu': 0.128.0 + '@oxc-parser/binding-linux-riscv64-gnu': 0.128.0 + '@oxc-parser/binding-linux-riscv64-musl': 0.128.0 + '@oxc-parser/binding-linux-s390x-gnu': 0.128.0 + '@oxc-parser/binding-linux-x64-gnu': 0.128.0 + '@oxc-parser/binding-linux-x64-musl': 0.128.0 + '@oxc-parser/binding-openharmony-arm64': 0.128.0 + '@oxc-parser/binding-wasm32-wasi': 0.128.0 + '@oxc-parser/binding-win32-arm64-msvc': 0.128.0 + '@oxc-parser/binding-win32-ia32-msvc': 0.128.0 + '@oxc-parser/binding-win32-x64-msvc': 0.128.0 + + oxc-resolver@11.19.1(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0): + optionalDependencies: + '@oxc-resolver/binding-android-arm-eabi': 11.19.1 + '@oxc-resolver/binding-android-arm64': 11.19.1 + '@oxc-resolver/binding-darwin-arm64': 11.19.1 + '@oxc-resolver/binding-darwin-x64': 11.19.1 + '@oxc-resolver/binding-freebsd-x64': 11.19.1 + '@oxc-resolver/binding-linux-arm-gnueabihf': 11.19.1 + '@oxc-resolver/binding-linux-arm-musleabihf': 11.19.1 + '@oxc-resolver/binding-linux-arm64-gnu': 11.19.1 + '@oxc-resolver/binding-linux-arm64-musl': 11.19.1 + '@oxc-resolver/binding-linux-ppc64-gnu': 11.19.1 + '@oxc-resolver/binding-linux-riscv64-gnu': 11.19.1 + '@oxc-resolver/binding-linux-riscv64-musl': 11.19.1 + '@oxc-resolver/binding-linux-s390x-gnu': 11.19.1 + '@oxc-resolver/binding-linux-x64-gnu': 11.19.1 + '@oxc-resolver/binding-linux-x64-musl': 11.19.1 + '@oxc-resolver/binding-openharmony-arm64': 11.19.1 + '@oxc-resolver/binding-wasm32-wasi': 11.19.1(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0) + '@oxc-resolver/binding-win32-arm64-msvc': 11.19.1 + '@oxc-resolver/binding-win32-ia32-msvc': 11.19.1 + '@oxc-resolver/binding-win32-x64-msvc': 11.19.1 + transitivePeerDependencies: + - '@emnapi/core' + - '@emnapi/runtime' + + oxfmt@0.47.0: dependencies: - napi-postinstall: 0.3.2 + tinypool: 2.1.0 + optionalDependencies: + '@oxfmt/binding-android-arm-eabi': 0.47.0 + '@oxfmt/binding-android-arm64': 0.47.0 + '@oxfmt/binding-darwin-arm64': 0.47.0 + '@oxfmt/binding-darwin-x64': 0.47.0 + '@oxfmt/binding-freebsd-x64': 0.47.0 + '@oxfmt/binding-linux-arm-gnueabihf': 0.47.0 + '@oxfmt/binding-linux-arm-musleabihf': 0.47.0 + '@oxfmt/binding-linux-arm64-gnu': 0.47.0 + '@oxfmt/binding-linux-arm64-musl': 0.47.0 + '@oxfmt/binding-linux-ppc64-gnu': 0.47.0 + '@oxfmt/binding-linux-riscv64-gnu': 0.47.0 + '@oxfmt/binding-linux-riscv64-musl': 0.47.0 + '@oxfmt/binding-linux-s390x-gnu': 0.47.0 + '@oxfmt/binding-linux-x64-gnu': 0.47.0 + '@oxfmt/binding-linux-x64-musl': 0.47.0 + '@oxfmt/binding-openharmony-arm64': 0.47.0 + '@oxfmt/binding-win32-arm64-msvc': 0.47.0 + '@oxfmt/binding-win32-ia32-msvc': 0.47.0 + '@oxfmt/binding-win32-x64-msvc': 0.47.0 + + oxlint@1.62.0: optionalDependencies: - '@oxc-resolver/binding-android-arm-eabi': 11.6.0 - '@oxc-resolver/binding-android-arm64': 11.6.0 - '@oxc-resolver/binding-darwin-arm64': 11.6.0 - '@oxc-resolver/binding-darwin-x64': 11.6.0 - '@oxc-resolver/binding-freebsd-x64': 11.6.0 - '@oxc-resolver/binding-linux-arm-gnueabihf': 11.6.0 - '@oxc-resolver/binding-linux-arm-musleabihf': 11.6.0 - '@oxc-resolver/binding-linux-arm64-gnu': 11.6.0 - '@oxc-resolver/binding-linux-arm64-musl': 11.6.0 - '@oxc-resolver/binding-linux-ppc64-gnu': 11.6.0 - '@oxc-resolver/binding-linux-riscv64-gnu': 11.6.0 - '@oxc-resolver/binding-linux-riscv64-musl': 11.6.0 - '@oxc-resolver/binding-linux-s390x-gnu': 11.6.0 - '@oxc-resolver/binding-linux-x64-gnu': 11.6.0 - '@oxc-resolver/binding-linux-x64-musl': 11.6.0 - '@oxc-resolver/binding-wasm32-wasi': 11.6.0 - '@oxc-resolver/binding-win32-arm64-msvc': 11.6.0 - '@oxc-resolver/binding-win32-ia32-msvc': 11.6.0 - '@oxc-resolver/binding-win32-x64-msvc': 11.6.0 + '@oxlint/binding-android-arm-eabi': 1.62.0 + '@oxlint/binding-android-arm64': 1.62.0 + '@oxlint/binding-darwin-arm64': 1.62.0 + '@oxlint/binding-darwin-x64': 1.62.0 + '@oxlint/binding-freebsd-x64': 1.62.0 + '@oxlint/binding-linux-arm-gnueabihf': 1.62.0 + '@oxlint/binding-linux-arm-musleabihf': 1.62.0 + '@oxlint/binding-linux-arm64-gnu': 1.62.0 + '@oxlint/binding-linux-arm64-musl': 1.62.0 + '@oxlint/binding-linux-ppc64-gnu': 1.62.0 + '@oxlint/binding-linux-riscv64-gnu': 1.62.0 + '@oxlint/binding-linux-riscv64-musl': 1.62.0 + '@oxlint/binding-linux-s390x-gnu': 1.62.0 + '@oxlint/binding-linux-x64-gnu': 1.62.0 + '@oxlint/binding-linux-x64-musl': 1.62.0 + '@oxlint/binding-openharmony-arm64': 1.62.0 + '@oxlint/binding-win32-arm64-msvc': 1.62.0 + '@oxlint/binding-win32-ia32-msvc': 1.62.0 + '@oxlint/binding-win32-x64-msvc': 1.62.0 p-filter@2.1.0: dependencies: @@ -2991,204 +3227,24 @@ snapshots: dependencies: quansync: 0.2.10 + package-manager-detector@1.6.0: {} + path-exists@4.0.0: {} path-key@3.1.1: {} - path-parse@1.0.7: {} - path-type@4.0.0: {} pathe@2.0.3: {} - pathval@2.0.0: {} - picocolors@1.1.1: {} picomatch@2.3.1: {} - picomatch@4.0.3: {} + picomatch@4.0.4: {} pify@4.0.1: {} - pkg-types@1.3.1: - dependencies: - confbox: 0.1.8 - mlly: 1.7.4 - pathe: 2.0.3 - - pkg-types@2.2.0: - dependencies: - confbox: 0.2.2 - exsolve: 1.0.7 - pathe: 2.0.3 - - postcss-calc@10.0.2(postcss@8.5.6): - dependencies: - postcss: 8.5.6 - postcss-selector-parser: 6.1.2 - postcss-value-parser: 4.2.0 - - postcss-colormin@7.0.2(postcss@8.5.6): - dependencies: - browserslist: 4.25.1 - caniuse-api: 3.0.0 - colord: 2.9.3 - postcss: 8.5.6 - postcss-value-parser: 4.2.0 - - postcss-convert-values@7.0.4(postcss@8.5.6): - dependencies: - browserslist: 4.25.1 - postcss: 8.5.6 - postcss-value-parser: 4.2.0 - - postcss-discard-comments@7.0.3(postcss@8.5.6): - dependencies: - postcss: 8.5.6 - postcss-selector-parser: 6.1.2 - - postcss-discard-duplicates@7.0.1(postcss@8.5.6): - dependencies: - postcss: 8.5.6 - - postcss-discard-empty@7.0.0(postcss@8.5.6): - dependencies: - postcss: 8.5.6 - - postcss-discard-overridden@7.0.0(postcss@8.5.6): - dependencies: - postcss: 8.5.6 - - postcss-merge-longhand@7.0.4(postcss@8.5.6): - dependencies: - postcss: 8.5.6 - postcss-value-parser: 4.2.0 - stylehacks: 7.0.4(postcss@8.5.6) - - postcss-merge-rules@7.0.4(postcss@8.5.6): - dependencies: - browserslist: 4.25.1 - caniuse-api: 3.0.0 - cssnano-utils: 5.0.0(postcss@8.5.6) - postcss: 8.5.6 - postcss-selector-parser: 6.1.2 - - postcss-minify-font-values@7.0.0(postcss@8.5.6): - dependencies: - postcss: 8.5.6 - postcss-value-parser: 4.2.0 - - postcss-minify-gradients@7.0.0(postcss@8.5.6): - dependencies: - colord: 2.9.3 - cssnano-utils: 5.0.0(postcss@8.5.6) - postcss: 8.5.6 - postcss-value-parser: 4.2.0 - - postcss-minify-params@7.0.2(postcss@8.5.6): - dependencies: - browserslist: 4.25.1 - cssnano-utils: 5.0.0(postcss@8.5.6) - postcss: 8.5.6 - postcss-value-parser: 4.2.0 - - postcss-minify-selectors@7.0.4(postcss@8.5.6): - dependencies: - cssesc: 3.0.0 - postcss: 8.5.6 - postcss-selector-parser: 6.1.2 - - postcss-nested@7.0.2(postcss@8.5.6): - dependencies: - postcss: 8.5.6 - postcss-selector-parser: 7.1.0 - - postcss-normalize-charset@7.0.0(postcss@8.5.6): - dependencies: - postcss: 8.5.6 - - postcss-normalize-display-values@7.0.0(postcss@8.5.6): - dependencies: - postcss: 8.5.6 - postcss-value-parser: 4.2.0 - - postcss-normalize-positions@7.0.0(postcss@8.5.6): - dependencies: - postcss: 8.5.6 - postcss-value-parser: 4.2.0 - - postcss-normalize-repeat-style@7.0.0(postcss@8.5.6): - dependencies: - postcss: 8.5.6 - postcss-value-parser: 4.2.0 - - postcss-normalize-string@7.0.0(postcss@8.5.6): - dependencies: - postcss: 8.5.6 - postcss-value-parser: 4.2.0 - - postcss-normalize-timing-functions@7.0.0(postcss@8.5.6): - dependencies: - postcss: 8.5.6 - postcss-value-parser: 4.2.0 - - postcss-normalize-unicode@7.0.2(postcss@8.5.6): - dependencies: - browserslist: 4.25.1 - postcss: 8.5.6 - postcss-value-parser: 4.2.0 - - postcss-normalize-url@7.0.0(postcss@8.5.6): - dependencies: - postcss: 8.5.6 - postcss-value-parser: 4.2.0 - - postcss-normalize-whitespace@7.0.0(postcss@8.5.6): - dependencies: - postcss: 8.5.6 - postcss-value-parser: 4.2.0 - - postcss-ordered-values@7.0.1(postcss@8.5.6): - dependencies: - cssnano-utils: 5.0.0(postcss@8.5.6) - postcss: 8.5.6 - postcss-value-parser: 4.2.0 - - postcss-reduce-initial@7.0.2(postcss@8.5.6): - dependencies: - browserslist: 4.25.1 - caniuse-api: 3.0.0 - postcss: 8.5.6 - - postcss-reduce-transforms@7.0.0(postcss@8.5.6): - dependencies: - postcss: 8.5.6 - postcss-value-parser: 4.2.0 - - postcss-selector-parser@6.1.2: - dependencies: - cssesc: 3.0.0 - util-deprecate: 1.0.2 - - postcss-selector-parser@7.1.0: - dependencies: - cssesc: 3.0.0 - util-deprecate: 1.0.2 - - postcss-svgo@7.0.1(postcss@8.5.6): - dependencies: - postcss: 8.5.6 - postcss-value-parser: 4.2.0 - svgo: 3.3.2 - - postcss-unique-selectors@7.0.3(postcss@8.5.6): - dependencies: - postcss: 8.5.6 - postcss-selector-parser: 6.1.2 - - postcss-value-parser@4.2.0: {} - postcss@8.5.6: dependencies: nanoid: 3.3.11 @@ -3197,10 +3253,17 @@ snapshots: prettier@2.8.8: {} - pretty-bytes@7.0.0: {} + publint@0.3.18: + dependencies: + '@publint/pack': 0.1.4 + package-manager-detector: 1.6.0 + picocolors: 1.1.1 + sade: 1.8.1 quansync@0.2.10: {} + quansync@1.0.0: {} + queue-microtask@1.2.3: {} read-yaml-file@1.1.0: @@ -3212,21 +3275,49 @@ snapshots: resolve-from@5.0.0: {} - resolve@1.22.8: - dependencies: - is-core-module: 2.15.1 - path-parse: 1.0.7 - supports-preserve-symlinks-flag: 1.0.0 + resolve-pkg-maps@1.0.0: {} reusify@1.0.4: {} - rollup-plugin-dts@6.2.1(rollup@4.45.1)(typescript@6.0.3): - dependencies: - magic-string: 0.30.17 - rollup: 4.45.1 + rolldown-plugin-dts@0.23.2(@typescript/native-preview@7.0.0-dev.20260427.1)(oxc-resolver@11.19.1(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0))(rolldown@1.0.0-rc.17)(typescript@6.0.3): + dependencies: + '@babel/generator': 8.0.0-rc.3 + '@babel/helper-validator-identifier': 8.0.0-rc.3 + '@babel/parser': 8.0.0-rc.3 + '@babel/types': 8.0.0-rc.3 + ast-kit: 3.0.0-beta.1 + birpc: 4.0.0 + dts-resolver: 2.1.3(oxc-resolver@11.19.1(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)) + get-tsconfig: 4.14.0 + obug: 2.1.1 + picomatch: 4.0.4 + rolldown: 1.0.0-rc.17 + optionalDependencies: + '@typescript/native-preview': 7.0.0-dev.20260427.1 typescript: 6.0.3 + transitivePeerDependencies: + - oxc-resolver + + rolldown@1.0.0-rc.17: + dependencies: + '@oxc-project/types': 0.127.0 + '@rolldown/pluginutils': 1.0.0-rc.17 optionalDependencies: - '@babel/code-frame': 7.26.2 + '@rolldown/binding-android-arm64': 1.0.0-rc.17 + '@rolldown/binding-darwin-arm64': 1.0.0-rc.17 + '@rolldown/binding-darwin-x64': 1.0.0-rc.17 + '@rolldown/binding-freebsd-x64': 1.0.0-rc.17 + '@rolldown/binding-linux-arm-gnueabihf': 1.0.0-rc.17 + '@rolldown/binding-linux-arm64-gnu': 1.0.0-rc.17 + '@rolldown/binding-linux-arm64-musl': 1.0.0-rc.17 + '@rolldown/binding-linux-ppc64-gnu': 1.0.0-rc.17 + '@rolldown/binding-linux-s390x-gnu': 1.0.0-rc.17 + '@rolldown/binding-linux-x64-gnu': 1.0.0-rc.17 + '@rolldown/binding-linux-x64-musl': 1.0.0-rc.17 + '@rolldown/binding-openharmony-arm64': 1.0.0-rc.17 + '@rolldown/binding-wasm32-wasi': 1.0.0-rc.17 + '@rolldown/binding-win32-arm64-msvc': 1.0.0-rc.17 + '@rolldown/binding-win32-x64-msvc': 1.0.0-rc.17 rollup@4.45.1: dependencies: @@ -3258,13 +3349,15 @@ snapshots: dependencies: queue-microtask: 1.2.3 - safer-buffer@2.1.2: {} + sade@1.8.1: + dependencies: + mri: 1.2.0 - scule@1.3.0: {} + safer-buffer@2.1.2: {} semiver@1.1.0: {} - semver@7.7.2: {} + semver@7.7.4: {} shebang-command@2.0.0: dependencies: @@ -3280,7 +3373,7 @@ snapshots: slash@3.0.0: {} - smol-toml@1.4.1: {} + smol-toml@1.6.1: {} source-map-js@1.2.1: {} @@ -3293,7 +3386,7 @@ snapshots: stackback@0.0.2: {} - std-env@3.9.0: {} + std-env@4.0.0: {} strip-ansi@6.0.1: dependencies: @@ -3301,29 +3394,7 @@ snapshots: strip-bom@3.0.0: {} - strip-json-comments@5.0.2: {} - - strip-literal@3.0.0: - dependencies: - js-tokens: 9.0.1 - - stylehacks@7.0.4(postcss@8.5.6): - dependencies: - browserslist: 4.25.1 - postcss: 8.5.6 - postcss-selector-parser: 6.1.2 - - supports-preserve-symlinks-flag@1.0.0: {} - - svgo@3.3.2: - dependencies: - '@trysound/sax': 0.2.0 - commander: 7.2.0 - css-select: 5.1.0 - css-tree: 2.3.1 - css-what: 6.1.0 - csso: 5.0.5 - picocolors: 1.1.1 + strip-json-comments@5.0.3: {} term-size@2.2.1: {} @@ -3333,18 +3404,16 @@ snapshots: tinybench@2.9.0: {} - tinyexec@0.3.2: {} + tinyexec@1.1.1: {} - tinyglobby@0.2.14: + tinyglobby@0.2.16: dependencies: - fdir: 6.4.6(picomatch@4.0.3) - picomatch: 4.0.3 - - tinypool@1.1.1: {} + fdir: 6.5.0(picomatch@4.0.4) + picomatch: 4.0.4 - tinyrainbow@2.0.0: {} + tinypool@2.1.0: {} - tinyspy@4.0.3: {} + tinyrainbow@3.1.0: {} tmp@0.0.33: dependencies: @@ -3358,128 +3427,94 @@ snapshots: dependencies: tslib: 2.8.1 - tslib@2.8.1: {} - - typescript@6.0.3: {} - - ufo@1.5.4: {} - - unbuild@3.6.0(typescript@6.0.3): - dependencies: - '@rollup/plugin-alias': 5.1.1(rollup@4.45.1) - '@rollup/plugin-commonjs': 28.0.6(rollup@4.45.1) - '@rollup/plugin-json': 6.1.0(rollup@4.45.1) - '@rollup/plugin-node-resolve': 16.0.1(rollup@4.45.1) - '@rollup/plugin-replace': 6.0.2(rollup@4.45.1) - '@rollup/pluginutils': 5.2.0(rollup@4.45.1) - citty: 0.1.6 - consola: 3.4.2 - defu: 6.1.4 - esbuild: 0.25.8 - fix-dts-default-cjs-exports: 1.0.1 - hookable: 5.5.3 - jiti: 2.5.0 - magic-string: 0.30.17 - mkdist: 2.3.0(typescript@6.0.3) - mlly: 1.7.4 - pathe: 2.0.3 - pkg-types: 2.2.0 - pretty-bytes: 7.0.0 - rollup: 4.45.1 - rollup-plugin-dts: 6.2.1(rollup@4.45.1)(typescript@6.0.3) - scule: 1.3.0 - tinyglobby: 0.2.14 - untyped: 2.0.0 + tree-kill@1.2.2: {} + + tsdown@0.21.10(@typescript/native-preview@7.0.0-dev.20260427.1)(oxc-resolver@11.19.1(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0))(publint@0.3.18)(typescript@6.0.3): + dependencies: + ansis: 4.2.0 + cac: 7.0.0 + defu: 6.1.7 + empathic: 2.0.0 + hookable: 6.1.1 + import-without-cache: 0.3.3 + obug: 2.1.1 + picomatch: 4.0.4 + rolldown: 1.0.0-rc.17 + rolldown-plugin-dts: 0.23.2(@typescript/native-preview@7.0.0-dev.20260427.1)(oxc-resolver@11.19.1(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0))(rolldown@1.0.0-rc.17)(typescript@6.0.3) + semver: 7.7.4 + tinyexec: 1.1.1 + tinyglobby: 0.2.16 + tree-kill: 1.2.2 + unconfig-core: 7.5.0 + unrun: 0.2.37 optionalDependencies: + publint: 0.3.18 typescript: 6.0.3 transitivePeerDependencies: - - sass - - vue - - vue-sfc-transformer + - '@ts-macro/tsc' + - '@typescript/native-preview' + - oxc-resolver + - synckit - vue-tsc - undici-types@6.21.0: {} + tslib@2.8.1: {} - universalify@0.1.2: {} + typescript@6.0.3: {} - untyped@2.0.0: - dependencies: - citty: 0.1.6 - defu: 6.1.4 - jiti: 2.5.0 - knitwork: 1.2.0 - scule: 1.3.0 + unbash@3.0.0: {} - update-browserslist-db@1.1.3(browserslist@4.25.1): + unconfig-core@7.5.0: dependencies: - browserslist: 4.25.1 - escalade: 3.2.0 - picocolors: 1.1.1 + '@quansync/fs': 1.0.0 + quansync: 1.0.0 + + undici-types@6.21.0: {} - util-deprecate@1.0.2: {} + universalify@0.1.2: {} - vite-node@3.2.4(@types/node@20.19.39)(jiti@2.5.0): + unrun@0.2.37: dependencies: - cac: 6.7.14 - debug: 4.4.1 - es-module-lexer: 1.7.0 - pathe: 2.0.3 - vite: 7.0.6(@types/node@20.19.39)(jiti@2.5.0) - transitivePeerDependencies: - - '@types/node' - - jiti - - less - - lightningcss - - sass - - sass-embedded - - stylus - - sugarss - - supports-color - - terser - - tsx - - yaml + rolldown: 1.0.0-rc.17 - vite@7.0.6(@types/node@20.19.39)(jiti@2.5.0): + vite@7.0.6(@types/node@20.19.39)(jiti@2.6.1)(yaml@2.8.3): dependencies: esbuild: 0.25.8 - fdir: 6.4.6(picomatch@4.0.3) - picomatch: 4.0.3 + fdir: 6.5.0(picomatch@4.0.4) + picomatch: 4.0.4 postcss: 8.5.6 rollup: 4.45.1 - tinyglobby: 0.2.14 + tinyglobby: 0.2.16 optionalDependencies: '@types/node': 20.19.39 fsevents: 2.3.3 - jiti: 2.5.0 - - vitest-ansi-serializer@0.1.2(vitest@3.2.4(@types/node@20.19.39)(jiti@2.5.0)): - dependencies: - vitest: 3.2.4(@types/node@20.19.39)(jiti@2.5.0) - - vitest@3.2.4(@types/node@20.19.39)(jiti@2.5.0): - dependencies: - '@types/chai': 5.2.2 - '@vitest/expect': 3.2.4 - '@vitest/mocker': 3.2.4(vite@7.0.6(@types/node@20.19.39)(jiti@2.5.0)) - '@vitest/pretty-format': 3.2.4 - '@vitest/runner': 3.2.4 - '@vitest/snapshot': 3.2.4 - '@vitest/spy': 3.2.4 - '@vitest/utils': 3.2.4 - chai: 5.2.0 - debug: 4.4.1 - expect-type: 1.2.1 - magic-string: 0.30.17 + jiti: 2.6.1 + yaml: 2.8.3 + + vitest-ansi-serializer@0.2.1(vitest@4.1.5(@types/node@20.19.39)(jiti@2.6.1)(yaml@2.8.3)): + dependencies: + vitest: 4.1.5(@types/node@20.19.39)(jiti@2.6.1)(yaml@2.8.3) + + vitest@4.1.5(@types/node@20.19.39)(jiti@2.6.1)(yaml@2.8.3): + dependencies: + '@vitest/expect': 4.1.5 + '@vitest/mocker': 4.1.5(vite@7.0.6(@types/node@20.19.39)(jiti@2.6.1)(yaml@2.8.3)) + '@vitest/pretty-format': 4.1.5 + '@vitest/runner': 4.1.5 + '@vitest/snapshot': 4.1.5 + '@vitest/spy': 4.1.5 + '@vitest/utils': 4.1.5 + es-module-lexer: 2.0.0 + expect-type: 1.3.0 + magic-string: 0.30.21 + obug: 2.1.1 pathe: 2.0.3 - picomatch: 4.0.3 - std-env: 3.9.0 + picomatch: 4.0.4 + std-env: 4.0.0 tinybench: 2.9.0 - tinyexec: 0.3.2 - tinyglobby: 0.2.14 - tinypool: 1.1.1 - tinyrainbow: 2.0.0 - vite: 7.0.6(@types/node@20.19.39)(jiti@2.5.0) - vite-node: 3.2.4(@types/node@20.19.39)(jiti@2.5.0) + tinyexec: 1.1.1 + tinyglobby: 0.2.16 + tinyrainbow: 3.1.0 + vite: 7.0.6(@types/node@20.19.39)(jiti@2.6.1)(yaml@2.8.3) why-is-node-running: 2.3.0 optionalDependencies: '@types/node': 20.19.39 @@ -3492,7 +3527,6 @@ snapshots: - sass-embedded - stylus - sugarss - - supports-color - terser - tsx - yaml @@ -3508,8 +3542,6 @@ snapshots: siginfo: 2.0.0 stackback: 0.0.2 - zod-validation-error@3.4.0(zod@3.22.4): - dependencies: - zod: 3.22.4 + yaml@2.8.3: {} - zod@3.22.4: {} + zod@4.3.6: {}