[READ-ONLY] Mirror of https://github.com/bombshell-dev/clack. Effortlessly build beautiful command-line apps bomb.sh/docs/clack/basics/getting-started/
cli command-line command-line-app node prompt prompts
5

Configure Feed

Select the types of activity you want to include in your feed.

test(core): add initial tests

Adds some tests for the core package and fixes a small bug found during
writing them.

The bug is basically that we never unhide the cursor on `process.exit`
conditions, meaning we leave it hidden in the terminal after our prompt
has been cancelled.

43081j (Jun 4, 2024, 10:36 PM +0100) e68bee76 45ee73bf

+1240 -3
+1
packages/core/package.json
··· 57 57 "sisteransi": "^1.0.5" 58 58 }, 59 59 "devDependencies": { 60 + "vitest": "^1.6.0", 60 61 "wrap-ansi": "^8.1.0" 61 62 } 62 63 }
+4 -2
packages/core/src/utils.ts
··· 24 24 const clear = (data: Buffer, { name }: Key) => { 25 25 const str = String(data); 26 26 if (str === '\x03') { 27 + if (hideCursor) output.write(cursor.show); 27 28 process.exit(0); 29 + return; 28 30 } 29 31 if (!overwrite) return; 30 32 let dx = name === 'return' ? 0 : -1; ··· 36 38 }); 37 39 }); 38 40 }; 39 - if (hideCursor) process.stdout.write(cursor.hide); 41 + if (hideCursor) output.write(cursor.hide); 40 42 input.once('keypress', clear); 41 43 42 44 return () => { 43 45 input.off('keypress', clear); 44 - if (hideCursor) process.stdout.write(cursor.show); 46 + if (hideCursor) output.write(cursor.show); 45 47 46 48 // Prevent Windows specific issues: https://github.com/natemoo-re/clack/issues/176 47 49 if (input.isTTY && !isWindows) input.setRawMode(false);
+26
packages/core/test/mock-readable.ts
··· 1 + import { Readable } from 'node:stream'; 2 + 3 + export class MockReadable extends Readable { 4 + protected _buffer: unknown[] | null = []; 5 + 6 + _read() { 7 + if (this._buffer === null) { 8 + this.push(null); 9 + return; 10 + } 11 + 12 + for (const val of this._buffer) { 13 + this.push(val); 14 + } 15 + 16 + this._buffer = []; 17 + } 18 + 19 + pushValue(val: unknown): void { 20 + this._buffer.push(val); 21 + } 22 + 23 + close(): void { 24 + this._buffer = null; 25 + } 26 + }
+10
packages/core/test/mock-writable.ts
··· 1 + import { Writable } from 'node:stream'; 2 + 3 + export class MockWritable extends Writable { 4 + public buffer: string[] = []; 5 + 6 + _write(chunk, encoding, callback) { 7 + this.buffer.push(chunk.toString()); 8 + callback(); 9 + } 10 + }
+231
packages/core/test/prompts/prompt.test.ts
··· 1 + import { describe, expect, test, afterEach, beforeEach, vi } from 'vitest'; 2 + import { default as Prompt, isCancel } from '../../src/prompts/prompt.js'; 3 + import { cursor } from 'sisteransi'; 4 + import { MockReadable } from '../mock-readable.js'; 5 + import { MockWritable } from '../mock-writable.js'; 6 + 7 + describe('Prompt', () => { 8 + let input: MockReadable; 9 + let output: MockWritable; 10 + 11 + beforeEach(() => { 12 + input = new MockReadable(); 13 + output = new MockWritable(); 14 + }); 15 + 16 + afterEach(() => { 17 + vi.restoreAllMocks(); 18 + }); 19 + 20 + test('renders render() result', () => { 21 + const instance = new Prompt({ 22 + input, 23 + output, 24 + render: () => 'foo', 25 + }); 26 + // leave the promise hanging since we don't want to submit in this test 27 + instance.prompt(); 28 + expect(output.buffer).to.deep.equal([cursor.hide, 'foo']); 29 + }); 30 + 31 + test('submits on return key', async () => { 32 + const instance = new Prompt({ 33 + input, 34 + output, 35 + render: () => 'foo', 36 + }); 37 + const resultPromise = instance.prompt(); 38 + input.emit('keypress', '', { name: 'return' }); 39 + const result = await resultPromise; 40 + expect(result).to.equal(''); 41 + expect(isCancel(result)).to.equal(false); 42 + expect(instance.state).to.equal('submit'); 43 + expect(output.buffer).to.deep.equal([cursor.hide, 'foo', '\n', cursor.show]); 44 + }); 45 + 46 + test('cancels on ctrl-c', async () => { 47 + const instance = new Prompt({ 48 + input, 49 + output, 50 + render: () => 'foo', 51 + }); 52 + const resultPromise = instance.prompt(); 53 + input.emit('keypress', '\x03', { name: 'c' }); 54 + const result = await resultPromise; 55 + expect(isCancel(result)).to.equal(true); 56 + expect(instance.state).to.equal('cancel'); 57 + expect(output.buffer).to.deep.equal([cursor.hide, 'foo', '\n', cursor.show]); 58 + }); 59 + 60 + test('writes initialValue to value', () => { 61 + const eventSpy = vi.fn(); 62 + const instance = new Prompt({ 63 + input, 64 + output, 65 + render: () => 'foo', 66 + initialValue: 'bananas', 67 + }); 68 + instance.on('value', eventSpy); 69 + instance.prompt(); 70 + expect(instance.value).to.equal('bananas'); 71 + expect(eventSpy).toHaveBeenCalled(); 72 + }); 73 + 74 + test('re-renders on resize', () => { 75 + const renderFn = vi.fn().mockImplementation(() => 'foo'); 76 + const instance = new Prompt({ 77 + input, 78 + output, 79 + render: renderFn, 80 + }); 81 + instance.prompt(); 82 + 83 + expect(renderFn).toHaveBeenCalledTimes(1); 84 + 85 + output.emit('resize'); 86 + 87 + expect(renderFn).toHaveBeenCalledTimes(2); 88 + }); 89 + 90 + test('state is active after first render', async () => { 91 + const instance = new Prompt({ 92 + input, 93 + output, 94 + render: () => 'foo', 95 + }); 96 + 97 + expect(instance.state).to.equal('initial'); 98 + 99 + instance.prompt(); 100 + 101 + expect(instance.state).to.equal('active'); 102 + }); 103 + 104 + test('emits truthy confirm on y press', () => { 105 + const eventFn = vi.fn(); 106 + const instance = new Prompt({ 107 + input, 108 + output, 109 + render: () => 'foo', 110 + }); 111 + 112 + instance.on('confirm', eventFn); 113 + 114 + instance.prompt(); 115 + 116 + input.emit('keypress', 'y', { name: 'y' }); 117 + 118 + expect(eventFn).toBeCalledWith(true); 119 + }); 120 + 121 + test('emits falsey confirm on n press', () => { 122 + const eventFn = vi.fn(); 123 + const instance = new Prompt({ 124 + input, 125 + output, 126 + render: () => 'foo', 127 + }); 128 + 129 + instance.on('confirm', eventFn); 130 + 131 + instance.prompt(); 132 + 133 + input.emit('keypress', 'n', { name: 'n' }); 134 + 135 + expect(eventFn).toBeCalledWith(false); 136 + }); 137 + 138 + test('sets value as placeholder on tab if one is set', () => { 139 + const instance = new Prompt({ 140 + input, 141 + output, 142 + render: () => 'foo', 143 + placeholder: 'piwa', 144 + }); 145 + 146 + instance.prompt(); 147 + 148 + input.emit('keypress', '\t', { name: 'tab' }); 149 + 150 + expect(instance.value).to.equal('piwa'); 151 + }); 152 + 153 + test('does not set placeholder value on tab if value already set', () => { 154 + const instance = new Prompt({ 155 + input, 156 + output, 157 + render: () => 'foo', 158 + placeholder: 'piwa', 159 + initialValue: 'trzy', 160 + }); 161 + 162 + instance.prompt(); 163 + 164 + input.emit('keypress', '\t', { name: 'tab' }); 165 + 166 + expect(instance.value).to.equal('trzy'); 167 + }); 168 + 169 + test('emits key event for unknown chars', () => { 170 + const eventSpy = vi.fn(); 171 + const instance = new Prompt({ 172 + input, 173 + output, 174 + render: () => 'foo', 175 + }); 176 + 177 + instance.on('key', eventSpy); 178 + 179 + instance.prompt(); 180 + 181 + input.emit('keypress', 'z', { name: 'z' }); 182 + 183 + expect(eventSpy).toBeCalledWith('z'); 184 + }); 185 + 186 + test('emits cursor events for movement keys', () => { 187 + const keys = ['up', 'down', 'left', 'right']; 188 + const eventSpy = vi.fn(); 189 + const instance = new Prompt({ 190 + input, 191 + output, 192 + render: () => 'foo', 193 + }); 194 + 195 + instance.on('cursor', eventSpy); 196 + 197 + instance.prompt(); 198 + 199 + for (const key of keys) { 200 + input.emit('keypress', key, { name: key }); 201 + expect(eventSpy).toBeCalledWith(key); 202 + } 203 + }); 204 + 205 + test('emits cursor events for movement key aliases when not tracking', () => { 206 + const keys = [ 207 + ['k', 'up'], 208 + ['j', 'down'], 209 + ['h', 'left'], 210 + ['l', 'right'], 211 + ]; 212 + const eventSpy = vi.fn(); 213 + const instance = new Prompt( 214 + { 215 + input, 216 + output, 217 + render: () => 'foo', 218 + }, 219 + false 220 + ); 221 + 222 + instance.on('cursor', eventSpy); 223 + 224 + instance.prompt(); 225 + 226 + for (const [alias, key] of keys) { 227 + input.emit('keypress', alias, { name: alias }); 228 + expect(eventSpy).toBeCalledWith(key); 229 + } 230 + }); 231 + });
+89
packages/core/test/utils.test.ts
··· 1 + import { describe, expect, test, afterEach, vi } from 'vitest'; 2 + import { block } from '../src/utils.js'; 3 + import type { Key } from 'node:readline'; 4 + import { cursor } from 'sisteransi'; 5 + import { MockReadable } from './mock-readable.js'; 6 + import { MockWritable } from './mock-writable.js'; 7 + 8 + describe('utils', () => { 9 + afterEach(() => { 10 + vi.restoreAllMocks(); 11 + }); 12 + 13 + describe('block', () => { 14 + test('clears output on keypress', () => { 15 + const input = new MockReadable(); 16 + const output = new MockWritable(); 17 + const callback = block({ input, output }); 18 + 19 + const event: Key = { 20 + name: 'x', 21 + }; 22 + const eventData = Buffer.from('bloop'); 23 + input.emit('keypress', eventData, event); 24 + callback(); 25 + expect(output.buffer).to.deep.equal([cursor.hide, cursor.move(-1, 0), cursor.show]); 26 + }); 27 + 28 + test('clears output vertically when return pressed', () => { 29 + const input = new MockReadable(); 30 + const output = new MockWritable(); 31 + const callback = block({ input, output }); 32 + 33 + const event: Key = { 34 + name: 'return', 35 + }; 36 + const eventData = Buffer.from('bloop'); 37 + input.emit('keypress', eventData, event); 38 + callback(); 39 + expect(output.buffer).to.deep.equal([cursor.hide, cursor.move(0, -1), cursor.show]); 40 + }); 41 + 42 + test('ignores additional keypresses after dispose', () => { 43 + const input = new MockReadable(); 44 + const output = new MockWritable(); 45 + const callback = block({ input, output }); 46 + 47 + const event: Key = { 48 + name: 'x', 49 + }; 50 + const eventData = Buffer.from('bloop'); 51 + input.emit('keypress', eventData, event); 52 + callback(); 53 + input.emit('keypress', eventData, event); 54 + expect(output.buffer).to.deep.equal([cursor.hide, cursor.move(-1, 0), cursor.show]); 55 + }); 56 + 57 + test('exits on ctrl-c', () => { 58 + const input = new MockReadable(); 59 + const output = new MockWritable(); 60 + // purposely don't keep the callback since we would exit the process 61 + block({ input, output }); 62 + const spy = vi.spyOn(process, 'exit').mockImplementation(() => { 63 + return; 64 + }); 65 + 66 + const event: Key = { 67 + name: 'c', 68 + }; 69 + const eventData = Buffer.from('\x03'); 70 + input.emit('keypress', eventData, event); 71 + expect(spy).toHaveBeenCalled(); 72 + expect(output.buffer).to.deep.equal([cursor.hide, cursor.show]); 73 + }); 74 + 75 + test('does not clear if overwrite=false', () => { 76 + const input = new MockReadable(); 77 + const output = new MockWritable(); 78 + const callback = block({ input, output, overwrite: false }); 79 + 80 + const event: Key = { 81 + name: 'c', 82 + }; 83 + const eventData = Buffer.from('bloop'); 84 + input.emit('keypress', eventData, event); 85 + callback(); 86 + expect(output.buffer).to.deep.equal([cursor.hide, cursor.show]); 87 + }); 88 + }); 89 + });
+1 -1
packages/prompts/src/index.ts
··· 8 8 SelectKeyPrompt, 9 9 SelectPrompt, 10 10 State, 11 - TextPrompt 11 + TextPrompt, 12 12 } from '@clack/core'; 13 13 import isUnicodeSupported from 'is-unicode-supported'; 14 14 import color from 'picocolors';
+878
pnpm-lock.yaml
··· 68 68 specifier: ^1.0.5 69 69 version: 1.0.5 70 70 devDependencies: 71 + vitest: 72 + specifier: ^1.6.0 73 + version: 1.6.0(@types/node@18.16.0) 71 74 wrap-ansi: 72 75 specifier: ^8.1.0 73 76 version: 8.1.0 ··· 486 489 prettier: 2.8.8 487 490 dev: true 488 491 492 + /@esbuild/aix-ppc64@0.20.2: 493 + resolution: {integrity: sha512-D+EBOJHXdNZcLJRBkhENNG8Wji2kgc9AZ9KiPr1JuZjsNtyHzrsfLRrY0tk2H2aoFu6RANO1y1iPPUCDYWkb5g==} 494 + engines: {node: '>=12'} 495 + cpu: [ppc64] 496 + os: [aix] 497 + requiresBuild: true 498 + dev: true 499 + optional: true 500 + 489 501 /@esbuild/android-arm64@0.18.20: 490 502 resolution: {integrity: sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==} 491 503 engines: {node: '>=12'} ··· 504 516 dev: true 505 517 optional: true 506 518 519 + /@esbuild/android-arm64@0.20.2: 520 + resolution: {integrity: sha512-mRzjLacRtl/tWU0SvD8lUEwb61yP9cqQo6noDZP/O8VkwafSYwZ4yWy24kan8jE/IMERpYncRt2dw438LP3Xmg==} 521 + engines: {node: '>=12'} 522 + cpu: [arm64] 523 + os: [android] 524 + requiresBuild: true 525 + dev: true 526 + optional: true 527 + 507 528 /@esbuild/android-arm@0.18.20: 508 529 resolution: {integrity: sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==} 509 530 engines: {node: '>=12'} ··· 515 536 516 537 /@esbuild/android-arm@0.19.2: 517 538 resolution: {integrity: sha512-tM8yLeYVe7pRyAu9VMi/Q7aunpLwD139EY1S99xbQkT4/q2qa6eA4ige/WJQYdJ8GBL1K33pPFhPfPdJ/WzT8Q==} 539 + engines: {node: '>=12'} 540 + cpu: [arm] 541 + os: [android] 542 + requiresBuild: true 543 + dev: true 544 + optional: true 545 + 546 + /@esbuild/android-arm@0.20.2: 547 + resolution: {integrity: sha512-t98Ra6pw2VaDhqNWO2Oph2LXbz/EJcnLmKLGBJwEwXX/JAN83Fym1rU8l0JUWK6HkIbWONCSSatf4sf2NBRx/w==} 518 548 engines: {node: '>=12'} 519 549 cpu: [arm] 520 550 os: [android] ··· 540 570 dev: true 541 571 optional: true 542 572 573 + /@esbuild/android-x64@0.20.2: 574 + resolution: {integrity: sha512-btzExgV+/lMGDDa194CcUQm53ncxzeBrWJcncOBxuC6ndBkKxnHdFJn86mCIgTELsooUmwUm9FkhSp5HYu00Rg==} 575 + engines: {node: '>=12'} 576 + cpu: [x64] 577 + os: [android] 578 + requiresBuild: true 579 + dev: true 580 + optional: true 581 + 543 582 /@esbuild/darwin-arm64@0.18.20: 544 583 resolution: {integrity: sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==} 545 584 engines: {node: '>=12'} ··· 558 597 dev: true 559 598 optional: true 560 599 600 + /@esbuild/darwin-arm64@0.20.2: 601 + resolution: {integrity: sha512-4J6IRT+10J3aJH3l1yzEg9y3wkTDgDk7TSDFX+wKFiWjqWp/iCfLIYzGyasx9l0SAFPT1HwSCR+0w/h1ES/MjA==} 602 + engines: {node: '>=12'} 603 + cpu: [arm64] 604 + os: [darwin] 605 + requiresBuild: true 606 + dev: true 607 + optional: true 608 + 561 609 /@esbuild/darwin-x64@0.18.20: 562 610 resolution: {integrity: sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==} 563 611 engines: {node: '>=12'} ··· 569 617 570 618 /@esbuild/darwin-x64@0.19.2: 571 619 resolution: {integrity: sha512-tP+B5UuIbbFMj2hQaUr6EALlHOIOmlLM2FK7jeFBobPy2ERdohI4Ka6ZFjZ1ZYsrHE/hZimGuU90jusRE0pwDw==} 620 + engines: {node: '>=12'} 621 + cpu: [x64] 622 + os: [darwin] 623 + requiresBuild: true 624 + dev: true 625 + optional: true 626 + 627 + /@esbuild/darwin-x64@0.20.2: 628 + resolution: {integrity: sha512-tBcXp9KNphnNH0dfhv8KYkZhjc+H3XBkF5DKtswJblV7KlT9EI2+jeA8DgBjp908WEuYll6pF+UStUCfEpdysA==} 572 629 engines: {node: '>=12'} 573 630 cpu: [x64] 574 631 os: [darwin] ··· 594 651 dev: true 595 652 optional: true 596 653 654 + /@esbuild/freebsd-arm64@0.20.2: 655 + resolution: {integrity: sha512-d3qI41G4SuLiCGCFGUrKsSeTXyWG6yem1KcGZVS+3FYlYhtNoNgYrWcvkOoaqMhwXSMrZRl69ArHsGJ9mYdbbw==} 656 + engines: {node: '>=12'} 657 + cpu: [arm64] 658 + os: [freebsd] 659 + requiresBuild: true 660 + dev: true 661 + optional: true 662 + 597 663 /@esbuild/freebsd-x64@0.18.20: 598 664 resolution: {integrity: sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==} 599 665 engines: {node: '>=12'} ··· 612 678 dev: true 613 679 optional: true 614 680 681 + /@esbuild/freebsd-x64@0.20.2: 682 + resolution: {integrity: sha512-d+DipyvHRuqEeM5zDivKV1KuXn9WeRX6vqSqIDgwIfPQtwMP4jaDsQsDncjTDDsExT4lR/91OLjRo8bmC1e+Cw==} 683 + engines: {node: '>=12'} 684 + cpu: [x64] 685 + os: [freebsd] 686 + requiresBuild: true 687 + dev: true 688 + optional: true 689 + 615 690 /@esbuild/linux-arm64@0.18.20: 616 691 resolution: {integrity: sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==} 617 692 engines: {node: '>=12'} ··· 623 698 624 699 /@esbuild/linux-arm64@0.19.2: 625 700 resolution: {integrity: sha512-ig2P7GeG//zWlU0AggA3pV1h5gdix0MA3wgB+NsnBXViwiGgY77fuN9Wr5uoCrs2YzaYfogXgsWZbm+HGr09xg==} 701 + engines: {node: '>=12'} 702 + cpu: [arm64] 703 + os: [linux] 704 + requiresBuild: true 705 + dev: true 706 + optional: true 707 + 708 + /@esbuild/linux-arm64@0.20.2: 709 + resolution: {integrity: sha512-9pb6rBjGvTFNira2FLIWqDk/uaf42sSyLE8j1rnUpuzsODBq7FvpwHYZxQ/It/8b+QOS1RYfqgGFNLRI+qlq2A==} 626 710 engines: {node: '>=12'} 627 711 cpu: [arm64] 628 712 os: [linux] ··· 648 732 dev: true 649 733 optional: true 650 734 735 + /@esbuild/linux-arm@0.20.2: 736 + resolution: {integrity: sha512-VhLPeR8HTMPccbuWWcEUD1Az68TqaTYyj6nfE4QByZIQEQVWBB8vup8PpR7y1QHL3CpcF6xd5WVBU/+SBEvGTg==} 737 + engines: {node: '>=12'} 738 + cpu: [arm] 739 + os: [linux] 740 + requiresBuild: true 741 + dev: true 742 + optional: true 743 + 651 744 /@esbuild/linux-ia32@0.18.20: 652 745 resolution: {integrity: sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==} 653 746 engines: {node: '>=12'} ··· 666 759 dev: true 667 760 optional: true 668 761 762 + /@esbuild/linux-ia32@0.20.2: 763 + resolution: {integrity: sha512-o10utieEkNPFDZFQm9CoP7Tvb33UutoJqg3qKf1PWVeeJhJw0Q347PxMvBgVVFgouYLGIhFYG0UGdBumROyiig==} 764 + engines: {node: '>=12'} 765 + cpu: [ia32] 766 + os: [linux] 767 + requiresBuild: true 768 + dev: true 769 + optional: true 770 + 669 771 /@esbuild/linux-loong64@0.18.20: 670 772 resolution: {integrity: sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==} 671 773 engines: {node: '>=12'} ··· 684 786 dev: true 685 787 optional: true 686 788 789 + /@esbuild/linux-loong64@0.20.2: 790 + resolution: {integrity: sha512-PR7sp6R/UC4CFVomVINKJ80pMFlfDfMQMYynX7t1tNTeivQ6XdX5r2XovMmha/VjR1YN/HgHWsVcTRIMkymrgQ==} 791 + engines: {node: '>=12'} 792 + cpu: [loong64] 793 + os: [linux] 794 + requiresBuild: true 795 + dev: true 796 + optional: true 797 + 687 798 /@esbuild/linux-mips64el@0.18.20: 688 799 resolution: {integrity: sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==} 689 800 engines: {node: '>=12'} ··· 695 806 696 807 /@esbuild/linux-mips64el@0.19.2: 697 808 resolution: {integrity: sha512-KbXaC0Sejt7vD2fEgPoIKb6nxkfYW9OmFUK9XQE4//PvGIxNIfPk1NmlHmMg6f25x57rpmEFrn1OotASYIAaTg==} 809 + engines: {node: '>=12'} 810 + cpu: [mips64el] 811 + os: [linux] 812 + requiresBuild: true 813 + dev: true 814 + optional: true 815 + 816 + /@esbuild/linux-mips64el@0.20.2: 817 + resolution: {integrity: sha512-4BlTqeutE/KnOiTG5Y6Sb/Hw6hsBOZapOVF6njAESHInhlQAghVVZL1ZpIctBOoTFbQyGW+LsVYZ8lSSB3wkjA==} 698 818 engines: {node: '>=12'} 699 819 cpu: [mips64el] 700 820 os: [linux] ··· 720 840 dev: true 721 841 optional: true 722 842 843 + /@esbuild/linux-ppc64@0.20.2: 844 + resolution: {integrity: sha512-rD3KsaDprDcfajSKdn25ooz5J5/fWBylaaXkuotBDGnMnDP1Uv5DLAN/45qfnf3JDYyJv/ytGHQaziHUdyzaAg==} 845 + engines: {node: '>=12'} 846 + cpu: [ppc64] 847 + os: [linux] 848 + requiresBuild: true 849 + dev: true 850 + optional: true 851 + 723 852 /@esbuild/linux-riscv64@0.18.20: 724 853 resolution: {integrity: sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==} 725 854 engines: {node: '>=12'} ··· 731 860 732 861 /@esbuild/linux-riscv64@0.19.2: 733 862 resolution: {integrity: sha512-7Z/jKNFufZ/bbu4INqqCN6DDlrmOTmdw6D0gH+6Y7auok2r02Ur661qPuXidPOJ+FSgbEeQnnAGgsVynfLuOEw==} 863 + engines: {node: '>=12'} 864 + cpu: [riscv64] 865 + os: [linux] 866 + requiresBuild: true 867 + dev: true 868 + optional: true 869 + 870 + /@esbuild/linux-riscv64@0.20.2: 871 + resolution: {integrity: sha512-snwmBKacKmwTMmhLlz/3aH1Q9T8v45bKYGE3j26TsaOVtjIag4wLfWSiZykXzXuE1kbCE+zJRmwp+ZbIHinnVg==} 734 872 engines: {node: '>=12'} 735 873 cpu: [riscv64] 736 874 os: [linux] ··· 756 894 dev: true 757 895 optional: true 758 896 897 + /@esbuild/linux-s390x@0.20.2: 898 + resolution: {integrity: sha512-wcWISOobRWNm3cezm5HOZcYz1sKoHLd8VL1dl309DiixxVFoFe/o8HnwuIwn6sXre88Nwj+VwZUvJf4AFxkyrQ==} 899 + engines: {node: '>=12'} 900 + cpu: [s390x] 901 + os: [linux] 902 + requiresBuild: true 903 + dev: true 904 + optional: true 905 + 759 906 /@esbuild/linux-x64@0.18.20: 760 907 resolution: {integrity: sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==} 761 908 engines: {node: '>=12'} ··· 774 921 dev: true 775 922 optional: true 776 923 924 + /@esbuild/linux-x64@0.20.2: 925 + resolution: {integrity: sha512-1MdwI6OOTsfQfek8sLwgyjOXAu+wKhLEoaOLTjbijk6E2WONYpH9ZU2mNtR+lZ2B4uwr+usqGuVfFT9tMtGvGw==} 926 + engines: {node: '>=12'} 927 + cpu: [x64] 928 + os: [linux] 929 + requiresBuild: true 930 + dev: true 931 + optional: true 932 + 777 933 /@esbuild/netbsd-x64@0.18.20: 778 934 resolution: {integrity: sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==} 779 935 engines: {node: '>=12'} ··· 785 941 786 942 /@esbuild/netbsd-x64@0.19.2: 787 943 resolution: {integrity: sha512-WNa5zZk1XpTTwMDompZmvQLHszDDDN7lYjEHCUmAGB83Bgs20EMs7ICD+oKeT6xt4phV4NDdSi/8OfjPbSbZfQ==} 944 + engines: {node: '>=12'} 945 + cpu: [x64] 946 + os: [netbsd] 947 + requiresBuild: true 948 + dev: true 949 + optional: true 950 + 951 + /@esbuild/netbsd-x64@0.20.2: 952 + resolution: {integrity: sha512-K8/DhBxcVQkzYc43yJXDSyjlFeHQJBiowJ0uVL6Tor3jGQfSGHNNJcWxNbOI8v5k82prYqzPuwkzHt3J1T1iZQ==} 788 953 engines: {node: '>=12'} 789 954 cpu: [x64] 790 955 os: [netbsd] ··· 810 975 dev: true 811 976 optional: true 812 977 978 + /@esbuild/openbsd-x64@0.20.2: 979 + resolution: {integrity: sha512-eMpKlV0SThJmmJgiVyN9jTPJ2VBPquf6Kt/nAoo6DgHAoN57K15ZghiHaMvqjCye/uU4X5u3YSMgVBI1h3vKrQ==} 980 + engines: {node: '>=12'} 981 + cpu: [x64] 982 + os: [openbsd] 983 + requiresBuild: true 984 + dev: true 985 + optional: true 986 + 813 987 /@esbuild/sunos-x64@0.18.20: 814 988 resolution: {integrity: sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==} 815 989 engines: {node: '>=12'} ··· 828 1002 dev: true 829 1003 optional: true 830 1004 1005 + /@esbuild/sunos-x64@0.20.2: 1006 + resolution: {integrity: sha512-2UyFtRC6cXLyejf/YEld4Hajo7UHILetzE1vsRcGL3earZEW77JxrFjH4Ez2qaTiEfMgAXxfAZCm1fvM/G/o8w==} 1007 + engines: {node: '>=12'} 1008 + cpu: [x64] 1009 + os: [sunos] 1010 + requiresBuild: true 1011 + dev: true 1012 + optional: true 1013 + 831 1014 /@esbuild/win32-arm64@0.18.20: 832 1015 resolution: {integrity: sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==} 833 1016 engines: {node: '>=12'} ··· 846 1029 dev: true 847 1030 optional: true 848 1031 1032 + /@esbuild/win32-arm64@0.20.2: 1033 + resolution: {integrity: sha512-GRibxoawM9ZCnDxnP3usoUDO9vUkpAxIIZ6GQI+IlVmr5kP3zUq+l17xELTHMWTWzjxa2guPNyrpq1GWmPvcGQ==} 1034 + engines: {node: '>=12'} 1035 + cpu: [arm64] 1036 + os: [win32] 1037 + requiresBuild: true 1038 + dev: true 1039 + optional: true 1040 + 849 1041 /@esbuild/win32-ia32@0.18.20: 850 1042 resolution: {integrity: sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==} 851 1043 engines: {node: '>=12'} ··· 857 1049 858 1050 /@esbuild/win32-ia32@0.19.2: 859 1051 resolution: {integrity: sha512-47gL/ek1v36iN0wL9L4Q2MFdujR0poLZMJwhO2/N3gA89jgHp4MR8DKCmwYtGNksbfJb9JoTtbkoe6sDhg2QTA==} 1052 + engines: {node: '>=12'} 1053 + cpu: [ia32] 1054 + os: [win32] 1055 + requiresBuild: true 1056 + dev: true 1057 + optional: true 1058 + 1059 + /@esbuild/win32-ia32@0.20.2: 1060 + resolution: {integrity: sha512-HfLOfn9YWmkSKRQqovpnITazdtquEW8/SoHW7pWpuEeguaZI4QnCRW6b+oZTztdBnZOS2hqJ6im/D5cPzBTTlQ==} 860 1061 engines: {node: '>=12'} 861 1062 cpu: [ia32] 862 1063 os: [win32] ··· 881 1082 requiresBuild: true 882 1083 dev: true 883 1084 optional: true 1085 + 1086 + /@esbuild/win32-x64@0.20.2: 1087 + resolution: {integrity: sha512-N49X4lJX27+l9jbLKSqZ6bKNjzQvHaT8IIFUy+YIqmXQdjYCToGWwOItDrfby14c78aDd5NHQl29xingXfCdLQ==} 1088 + engines: {node: '>=12'} 1089 + cpu: [x64] 1090 + os: [win32] 1091 + requiresBuild: true 1092 + dev: true 1093 + optional: true 1094 + 1095 + /@jest/schemas@29.6.3: 1096 + resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==} 1097 + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 1098 + dependencies: 1099 + '@sinclair/typebox': 0.27.8 1100 + dev: true 884 1101 885 1102 /@jridgewell/gen-mapping@0.3.3: 886 1103 resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==} ··· 1044 1261 rollup: 3.28.1 1045 1262 dev: true 1046 1263 1264 + /@rollup/rollup-android-arm-eabi@4.18.0: 1265 + resolution: {integrity: sha512-Tya6xypR10giZV1XzxmH5wr25VcZSncG0pZIjfePT0OVBvqNEurzValetGNarVrGiq66EBVAFn15iYX4w6FKgQ==} 1266 + cpu: [arm] 1267 + os: [android] 1268 + requiresBuild: true 1269 + dev: true 1270 + optional: true 1271 + 1272 + /@rollup/rollup-android-arm64@4.18.0: 1273 + resolution: {integrity: sha512-avCea0RAP03lTsDhEyfy+hpfr85KfyTctMADqHVhLAF3MlIkq83CP8UfAHUssgXTYd+6er6PaAhx/QGv4L1EiA==} 1274 + cpu: [arm64] 1275 + os: [android] 1276 + requiresBuild: true 1277 + dev: true 1278 + optional: true 1279 + 1280 + /@rollup/rollup-darwin-arm64@4.18.0: 1281 + resolution: {integrity: sha512-IWfdwU7KDSm07Ty0PuA/W2JYoZ4iTj3TUQjkVsO/6U+4I1jN5lcR71ZEvRh52sDOERdnNhhHU57UITXz5jC1/w==} 1282 + cpu: [arm64] 1283 + os: [darwin] 1284 + requiresBuild: true 1285 + dev: true 1286 + optional: true 1287 + 1288 + /@rollup/rollup-darwin-x64@4.18.0: 1289 + resolution: {integrity: sha512-n2LMsUz7Ynu7DoQrSQkBf8iNrjOGyPLrdSg802vk6XT3FtsgX6JbE8IHRvposskFm9SNxzkLYGSq9QdpLYpRNA==} 1290 + cpu: [x64] 1291 + os: [darwin] 1292 + requiresBuild: true 1293 + dev: true 1294 + optional: true 1295 + 1296 + /@rollup/rollup-linux-arm-gnueabihf@4.18.0: 1297 + resolution: {integrity: sha512-C/zbRYRXFjWvz9Z4haRxcTdnkPt1BtCkz+7RtBSuNmKzMzp3ZxdM28Mpccn6pt28/UWUCTXa+b0Mx1k3g6NOMA==} 1298 + cpu: [arm] 1299 + os: [linux] 1300 + requiresBuild: true 1301 + dev: true 1302 + optional: true 1303 + 1304 + /@rollup/rollup-linux-arm-musleabihf@4.18.0: 1305 + resolution: {integrity: sha512-l3m9ewPgjQSXrUMHg93vt0hYCGnrMOcUpTz6FLtbwljo2HluS4zTXFy2571YQbisTnfTKPZ01u/ukJdQTLGh9A==} 1306 + cpu: [arm] 1307 + os: [linux] 1308 + requiresBuild: true 1309 + dev: true 1310 + optional: true 1311 + 1312 + /@rollup/rollup-linux-arm64-gnu@4.18.0: 1313 + resolution: {integrity: sha512-rJ5D47d8WD7J+7STKdCUAgmQk49xuFrRi9pZkWoRD1UeSMakbcepWXPF8ycChBoAqs1pb2wzvbY6Q33WmN2ftw==} 1314 + cpu: [arm64] 1315 + os: [linux] 1316 + requiresBuild: true 1317 + dev: true 1318 + optional: true 1319 + 1320 + /@rollup/rollup-linux-arm64-musl@4.18.0: 1321 + resolution: {integrity: sha512-be6Yx37b24ZwxQ+wOQXXLZqpq4jTckJhtGlWGZs68TgdKXJgw54lUUoFYrg6Zs/kjzAQwEwYbp8JxZVzZLRepQ==} 1322 + cpu: [arm64] 1323 + os: [linux] 1324 + requiresBuild: true 1325 + dev: true 1326 + optional: true 1327 + 1328 + /@rollup/rollup-linux-powerpc64le-gnu@4.18.0: 1329 + resolution: {integrity: sha512-hNVMQK+qrA9Todu9+wqrXOHxFiD5YmdEi3paj6vP02Kx1hjd2LLYR2eaN7DsEshg09+9uzWi2W18MJDlG0cxJA==} 1330 + cpu: [ppc64] 1331 + os: [linux] 1332 + requiresBuild: true 1333 + dev: true 1334 + optional: true 1335 + 1336 + /@rollup/rollup-linux-riscv64-gnu@4.18.0: 1337 + resolution: {integrity: sha512-ROCM7i+m1NfdrsmvwSzoxp9HFtmKGHEqu5NNDiZWQtXLA8S5HBCkVvKAxJ8U+CVctHwV2Gb5VUaK7UAkzhDjlg==} 1338 + cpu: [riscv64] 1339 + os: [linux] 1340 + requiresBuild: true 1341 + dev: true 1342 + optional: true 1343 + 1344 + /@rollup/rollup-linux-s390x-gnu@4.18.0: 1345 + resolution: {integrity: sha512-0UyyRHyDN42QL+NbqevXIIUnKA47A+45WyasO+y2bGJ1mhQrfrtXUpTxCOrfxCR4esV3/RLYyucGVPiUsO8xjg==} 1346 + cpu: [s390x] 1347 + os: [linux] 1348 + requiresBuild: true 1349 + dev: true 1350 + optional: true 1351 + 1352 + /@rollup/rollup-linux-x64-gnu@4.18.0: 1353 + resolution: {integrity: sha512-xuglR2rBVHA5UsI8h8UbX4VJ470PtGCf5Vpswh7p2ukaqBGFTnsfzxUBetoWBWymHMxbIG0Cmx7Y9qDZzr648w==} 1354 + cpu: [x64] 1355 + os: [linux] 1356 + requiresBuild: true 1357 + dev: true 1358 + optional: true 1359 + 1360 + /@rollup/rollup-linux-x64-musl@4.18.0: 1361 + resolution: {integrity: sha512-LKaqQL9osY/ir2geuLVvRRs+utWUNilzdE90TpyoX0eNqPzWjRm14oMEE+YLve4k/NAqCdPkGYDaDF5Sw+xBfg==} 1362 + cpu: [x64] 1363 + os: [linux] 1364 + requiresBuild: true 1365 + dev: true 1366 + optional: true 1367 + 1368 + /@rollup/rollup-win32-arm64-msvc@4.18.0: 1369 + resolution: {integrity: sha512-7J6TkZQFGo9qBKH0pk2cEVSRhJbL6MtfWxth7Y5YmZs57Pi+4x6c2dStAUvaQkHQLnEQv1jzBUW43GvZW8OFqA==} 1370 + cpu: [arm64] 1371 + os: [win32] 1372 + requiresBuild: true 1373 + dev: true 1374 + optional: true 1375 + 1376 + /@rollup/rollup-win32-ia32-msvc@4.18.0: 1377 + resolution: {integrity: sha512-Txjh+IxBPbkUB9+SXZMpv+b/vnTEtFyfWZgJ6iyCmt2tdx0OF5WhFowLmnh8ENGNpfUlUZkdI//4IEmhwPieNg==} 1378 + cpu: [ia32] 1379 + os: [win32] 1380 + requiresBuild: true 1381 + dev: true 1382 + optional: true 1383 + 1384 + /@rollup/rollup-win32-x64-msvc@4.18.0: 1385 + resolution: {integrity: sha512-UOo5FdvOL0+eIVTgS4tIdbW+TtnBLWg1YBCcU2KWM7nuNwRz9bksDX1bekJJCpu25N1DVWaCwnT39dVQxzqS8g==} 1386 + cpu: [x64] 1387 + os: [win32] 1388 + requiresBuild: true 1389 + dev: true 1390 + optional: true 1391 + 1392 + /@sinclair/typebox@0.27.8: 1393 + resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} 1394 + dev: true 1395 + 1047 1396 /@ts-morph/common@0.16.0: 1048 1397 resolution: {integrity: sha512-SgJpzkTgZKLKqQniCjLaE3c2L2sdL7UShvmTmPBejAKd2OKV/yfMpQ2IWpAuA+VY5wy7PkSUaEObIqEK6afFuw==} 1049 1398 dependencies: ··· 1055 1404 1056 1405 /@types/estree@1.0.1: 1057 1406 resolution: {integrity: sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==} 1407 + dev: true 1408 + 1409 + /@types/estree@1.0.5: 1410 + resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} 1058 1411 dev: true 1059 1412 1060 1413 /@types/is-ci@3.0.0: ··· 1095 1448 resolution: {integrity: sha512-7NQmHra/JILCd1QqpSzl8+mJRc8ZHz3uDm8YV1Ks9IhK0epEiTw8aIErbvH9PI+6XbqhyIQy3462nEsn7UVzjQ==} 1096 1449 dev: true 1097 1450 1451 + /@vitest/expect@1.6.0: 1452 + resolution: {integrity: sha512-ixEvFVQjycy/oNgHjqsL6AZCDduC+tflRluaHIzKIsdbzkLn2U/iBnVeJwB6HsIjQBdfMR8Z0tRxKUsvFJEeWQ==} 1453 + dependencies: 1454 + '@vitest/spy': 1.6.0 1455 + '@vitest/utils': 1.6.0 1456 + chai: 4.4.1 1457 + dev: true 1458 + 1459 + /@vitest/runner@1.6.0: 1460 + resolution: {integrity: sha512-P4xgwPjwesuBiHisAVz/LSSZtDjOTPYZVmNAnpHHSR6ONrf8eCJOFRvUwdHn30F5M1fxhqtl7QZQUk2dprIXAg==} 1461 + dependencies: 1462 + '@vitest/utils': 1.6.0 1463 + p-limit: 5.0.0 1464 + pathe: 1.1.1 1465 + dev: true 1466 + 1467 + /@vitest/snapshot@1.6.0: 1468 + resolution: {integrity: sha512-+Hx43f8Chus+DCmygqqfetcAZrDJwvTj0ymqjQq4CvmpKFSTVteEOBzCusu1x2tt4OJcvBflyHUE0DZSLgEMtQ==} 1469 + dependencies: 1470 + magic-string: 0.30.10 1471 + pathe: 1.1.1 1472 + pretty-format: 29.7.0 1473 + dev: true 1474 + 1475 + /@vitest/spy@1.6.0: 1476 + resolution: {integrity: sha512-leUTap6B/cqi/bQkXUu6bQV5TZPx7pmMBKBQiI0rJA8c3pB56ZsaTbREnF7CJfmvAS4V2cXIBAh/3rVwrrCYgw==} 1477 + dependencies: 1478 + tinyspy: 2.2.1 1479 + dev: true 1480 + 1481 + /@vitest/utils@1.6.0: 1482 + resolution: {integrity: sha512-21cPiuGMoMZwiOHa2i4LXkMkMkCGzA+MVFV70jRwHo95dL4x/ts5GZhML1QWuy7yfp3WzK3lRvZi3JnXTYqrBw==} 1483 + dependencies: 1484 + diff-sequences: 29.6.3 1485 + estree-walker: 3.0.3 1486 + loupe: 2.3.7 1487 + pretty-format: 29.7.0 1488 + dev: true 1489 + 1490 + /acorn-walk@8.3.2: 1491 + resolution: {integrity: sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==} 1492 + engines: {node: '>=0.4.0'} 1493 + dev: true 1494 + 1098 1495 /acorn@8.10.0: 1099 1496 resolution: {integrity: sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==} 1100 1497 engines: {node: '>=0.4.0'} 1101 1498 hasBin: true 1102 1499 dev: true 1103 1500 1501 + /acorn@8.11.3: 1502 + resolution: {integrity: sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==} 1503 + engines: {node: '>=0.4.0'} 1504 + hasBin: true 1505 + dev: true 1506 + 1104 1507 /ansi-colors@4.1.3: 1105 1508 resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} 1106 1509 engines: {node: '>=6'} ··· 1128 1531 engines: {node: '>=8'} 1129 1532 dependencies: 1130 1533 color-convert: 2.0.1 1534 + dev: true 1535 + 1536 + /ansi-styles@5.2.0: 1537 + resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} 1538 + engines: {node: '>=10'} 1131 1539 dev: true 1132 1540 1133 1541 /ansi-styles@6.2.1: ··· 1178 1586 /arrify@1.0.1: 1179 1587 resolution: {integrity: sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==} 1180 1588 engines: {node: '>=0.10.0'} 1589 + dev: true 1590 + 1591 + /assertion-error@1.1.0: 1592 + resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==} 1181 1593 dev: true 1182 1594 1183 1595 /available-typed-arrays@1.0.5: ··· 1231 1643 engines: {node: '>=6'} 1232 1644 dev: true 1233 1645 1646 + /cac@6.7.14: 1647 + resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} 1648 + engines: {node: '>=8'} 1649 + dev: true 1650 + 1234 1651 /call-bind@1.0.2: 1235 1652 resolution: {integrity: sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==} 1236 1653 dependencies: ··· 1256 1673 resolution: {integrity: sha512-I5q5cisATTPZ1mc588Z//pj/Ox80ERYDfR71YnvY7raS/NOk8xXlZcB0sF7JdqaV//kOaa6aus7lRfpdnt1eBA==} 1257 1674 dev: true 1258 1675 1676 + /chai@4.4.1: 1677 + resolution: {integrity: sha512-13sOfMv2+DWduEU+/xbun3LScLoqN17nBeTLUsmDfKdoiC1fr0n9PU4guu4AhRcOVFk/sW8LyZWHuhWtQZiF+g==} 1678 + engines: {node: '>=4'} 1679 + dependencies: 1680 + assertion-error: 1.1.0 1681 + check-error: 1.0.3 1682 + deep-eql: 4.1.3 1683 + get-func-name: 2.0.2 1684 + loupe: 2.3.7 1685 + pathval: 1.1.1 1686 + type-detect: 4.0.8 1687 + dev: true 1688 + 1259 1689 /chalk@2.4.2: 1260 1690 resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} 1261 1691 engines: {node: '>=4'} ··· 1280 1710 1281 1711 /chardet@0.7.0: 1282 1712 resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} 1713 + dev: true 1714 + 1715 + /check-error@1.0.3: 1716 + resolution: {integrity: sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==} 1717 + dependencies: 1718 + get-func-name: 2.0.2 1283 1719 dev: true 1284 1720 1285 1721 /ci-info@3.8.0: ··· 1348 1784 resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==} 1349 1785 dev: true 1350 1786 1787 + /confbox@0.1.7: 1788 + resolution: {integrity: sha512-uJcB/FKZtBMCJpK8MQji6bJHgu1tixKPxRLeGkNzBoOZzpnZUJm0jm2/sBDWcuBx1dYgxV4JU+g5hmNxCyAmdA==} 1789 + dev: true 1790 + 1351 1791 /consola@3.2.3: 1352 1792 resolution: {integrity: sha512-I5qxpzLv+sJhTVEoLYNcTW+bThDCPsit0vLNKShZx6rLtpilNpmmeTPaeqJb9ZE9dV3DGaeby6Vuhrw38WjeyQ==} 1353 1793 engines: {node: ^14.18.0 || >=16.10.0} ··· 1363 1803 lru-cache: 4.1.5 1364 1804 shebang-command: 1.2.0 1365 1805 which: 1.3.1 1806 + dev: true 1807 + 1808 + /cross-spawn@7.0.3: 1809 + resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} 1810 + engines: {node: '>= 8'} 1811 + dependencies: 1812 + path-key: 3.1.1 1813 + shebang-command: 2.0.0 1814 + which: 2.0.2 1366 1815 dev: true 1367 1816 1368 1817 /csv-generate@3.4.3: ··· 1412 1861 engines: {node: '>=0.10.0'} 1413 1862 dev: true 1414 1863 1864 + /deep-eql@4.1.3: 1865 + resolution: {integrity: sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==} 1866 + engines: {node: '>=6'} 1867 + dependencies: 1868 + type-detect: 4.0.8 1869 + dev: true 1870 + 1415 1871 /deepmerge@4.3.1: 1416 1872 resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} 1417 1873 engines: {node: '>=0.10.0'} ··· 1438 1894 /detect-indent@6.1.0: 1439 1895 resolution: {integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==} 1440 1896 engines: {node: '>=8'} 1897 + dev: true 1898 + 1899 + /diff-sequences@29.6.3: 1900 + resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==} 1901 + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 1441 1902 dev: true 1442 1903 1443 1904 /dir-glob@3.0.1: ··· 1616 2077 '@esbuild/win32-x64': 0.19.2 1617 2078 dev: true 1618 2079 2080 + /esbuild@0.20.2: 2081 + resolution: {integrity: sha512-WdOOppmUNU+IbZ0PaDiTst80zjnrOkyJNHoKupIcVyU8Lvla3Ugx94VzkQ32Ijqd7UhHJy75gNWDMUekcrSJ6g==} 2082 + engines: {node: '>=12'} 2083 + hasBin: true 2084 + requiresBuild: true 2085 + optionalDependencies: 2086 + '@esbuild/aix-ppc64': 0.20.2 2087 + '@esbuild/android-arm': 0.20.2 2088 + '@esbuild/android-arm64': 0.20.2 2089 + '@esbuild/android-x64': 0.20.2 2090 + '@esbuild/darwin-arm64': 0.20.2 2091 + '@esbuild/darwin-x64': 0.20.2 2092 + '@esbuild/freebsd-arm64': 0.20.2 2093 + '@esbuild/freebsd-x64': 0.20.2 2094 + '@esbuild/linux-arm': 0.20.2 2095 + '@esbuild/linux-arm64': 0.20.2 2096 + '@esbuild/linux-ia32': 0.20.2 2097 + '@esbuild/linux-loong64': 0.20.2 2098 + '@esbuild/linux-mips64el': 0.20.2 2099 + '@esbuild/linux-ppc64': 0.20.2 2100 + '@esbuild/linux-riscv64': 0.20.2 2101 + '@esbuild/linux-s390x': 0.20.2 2102 + '@esbuild/linux-x64': 0.20.2 2103 + '@esbuild/netbsd-x64': 0.20.2 2104 + '@esbuild/openbsd-x64': 0.20.2 2105 + '@esbuild/sunos-x64': 0.20.2 2106 + '@esbuild/win32-arm64': 0.20.2 2107 + '@esbuild/win32-ia32': 0.20.2 2108 + '@esbuild/win32-x64': 0.20.2 2109 + dev: true 2110 + 1619 2111 /escalade@3.1.1: 1620 2112 resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} 1621 2113 engines: {node: '>=6'} ··· 1636 2128 resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} 1637 2129 dev: true 1638 2130 2131 + /estree-walker@3.0.3: 2132 + resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} 2133 + dependencies: 2134 + '@types/estree': 1.0.1 2135 + dev: true 2136 + 2137 + /execa@8.0.1: 2138 + resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==} 2139 + engines: {node: '>=16.17'} 2140 + dependencies: 2141 + cross-spawn: 7.0.3 2142 + get-stream: 8.0.1 2143 + human-signals: 5.0.0 2144 + is-stream: 3.0.0 2145 + merge-stream: 2.0.0 2146 + npm-run-path: 5.3.0 2147 + onetime: 6.0.0 2148 + signal-exit: 4.1.0 2149 + strip-final-newline: 3.0.0 2150 + dev: true 2151 + 1639 2152 /extendable-error@0.1.7: 1640 2153 resolution: {integrity: sha512-UOiS2in6/Q0FK0R0q6UY9vYpQ21mr/Qn1KOnte7vsACuNJf514WvCCUHSRCPcgjPT2bAhNIJdlE6bVap1GKmeg==} 1641 2154 dev: true ··· 1769 2282 engines: {node: 6.* || 8.* || >= 10.*} 1770 2283 dev: true 1771 2284 2285 + /get-func-name@2.0.2: 2286 + resolution: {integrity: sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==} 2287 + dev: true 2288 + 1772 2289 /get-intrinsic@1.2.1: 1773 2290 resolution: {integrity: sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==} 1774 2291 dependencies: ··· 1776 2293 has: 1.0.3 1777 2294 has-proto: 1.0.1 1778 2295 has-symbols: 1.0.3 2296 + dev: true 2297 + 2298 + /get-stream@8.0.1: 2299 + resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==} 2300 + engines: {node: '>=16'} 1779 2301 dev: true 1780 2302 1781 2303 /get-symbol-description@1.0.0: ··· 1914 2436 resolution: {integrity: sha512-UNopramDEhHJD+VR+ehk8rOslwSfByxPIZyJRfV739NDhN5LF1fa1MqnzKm2lGTQRjNrjK19Q5fhkgIfjlVUKw==} 1915 2437 dev: true 1916 2438 2439 + /human-signals@5.0.0: 2440 + resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==} 2441 + engines: {node: '>=16.17.0'} 2442 + dev: true 2443 + 1917 2444 /iconv-lite@0.4.24: 1918 2445 resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} 1919 2446 engines: {node: '>=0.10.0'} ··· 2072 2599 call-bind: 1.0.2 2073 2600 dev: true 2074 2601 2602 + /is-stream@3.0.0: 2603 + resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} 2604 + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 2605 + dev: true 2606 + 2075 2607 /is-string@1.0.7: 2076 2608 resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} 2077 2609 engines: {node: '>= 0.4'} ··· 2137 2669 /js-tokens@4.0.0: 2138 2670 resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} 2139 2671 requiresBuild: true 2672 + dev: true 2673 + 2674 + /js-tokens@9.0.0: 2675 + resolution: {integrity: sha512-WriZw1luRMlmV3LGJaR6QOJjWwgLUTf89OwT2lUOyjX2dJGBwgmIkbcz+7WFZjrZM635JOIR517++e/67CP9dQ==} 2140 2676 dev: true 2141 2677 2142 2678 /js-yaml@3.14.1: ··· 2205 2741 strip-bom: 3.0.0 2206 2742 dev: true 2207 2743 2744 + /local-pkg@0.5.0: 2745 + resolution: {integrity: sha512-ok6z3qlYyCDS4ZEU27HaU6x/xZa9Whf8jD4ptH5UZTQYZVYeb9bnZ3ojVhiJNLiXK1Hfc0GNbLXcmZ5plLDDBg==} 2746 + engines: {node: '>=14'} 2747 + dependencies: 2748 + mlly: 1.7.0 2749 + pkg-types: 1.0.3 2750 + dev: true 2751 + 2208 2752 /locate-path@5.0.0: 2209 2753 resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} 2210 2754 engines: {node: '>=8'} ··· 2223 2767 resolution: {integrity: sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==} 2224 2768 dev: true 2225 2769 2770 + /loupe@2.3.7: 2771 + resolution: {integrity: sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==} 2772 + dependencies: 2773 + get-func-name: 2.0.2 2774 + dev: true 2775 + 2226 2776 /lru-cache@4.1.5: 2227 2777 resolution: {integrity: sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==} 2228 2778 dependencies: ··· 2246 2796 /magic-string@0.27.0: 2247 2797 resolution: {integrity: sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==} 2248 2798 engines: {node: '>=12'} 2799 + dependencies: 2800 + '@jridgewell/sourcemap-codec': 1.4.15 2801 + dev: true 2802 + 2803 + /magic-string@0.30.10: 2804 + resolution: {integrity: sha512-iIRwTIf0QKV3UAnYK4PU8uiEc4SRh5jX0mwpIwETPpHdhVM4f53RSwS/vXvN1JhGX+Cs7B8qIq3d6AH49O5fAQ==} 2249 2805 dependencies: 2250 2806 '@jridgewell/sourcemap-codec': 1.4.15 2251 2807 dev: true ··· 2284 2840 yargs-parser: 18.1.3 2285 2841 dev: true 2286 2842 2843 + /merge-stream@2.0.0: 2844 + resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} 2845 + dev: true 2846 + 2287 2847 /merge2@1.4.1: 2288 2848 resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} 2289 2849 engines: {node: '>= 8'} ··· 2297 2857 picomatch: 2.3.1 2298 2858 dev: true 2299 2859 2860 + /mimic-fn@4.0.0: 2861 + resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} 2862 + engines: {node: '>=12'} 2863 + dev: true 2864 + 2300 2865 /min-indent@1.0.1: 2301 2866 resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} 2302 2867 engines: {node: '>=4'} ··· 2362 2927 ufo: 1.3.0 2363 2928 dev: true 2364 2929 2930 + /mlly@1.7.0: 2931 + resolution: {integrity: sha512-U9SDaXGEREBYQgfejV97coK0UL1r+qnF2SyO9A3qcI8MzKnsIFKHNVEkrDyNncQTKQQumsasmeq84eNMdBfsNQ==} 2932 + dependencies: 2933 + acorn: 8.11.3 2934 + pathe: 1.1.2 2935 + pkg-types: 1.1.1 2936 + ufo: 1.5.3 2937 + dev: true 2938 + 2365 2939 /mri@1.2.0: 2366 2940 resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} 2367 2941 engines: {node: '>=4'} ··· 2371 2945 resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} 2372 2946 dev: true 2373 2947 2948 + /nanoid@3.3.7: 2949 + resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} 2950 + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} 2951 + hasBin: true 2952 + dev: true 2953 + 2374 2954 /node-releases@2.0.13: 2375 2955 resolution: {integrity: sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==} 2376 2956 dev: true ··· 2382 2962 resolve: 1.22.4 2383 2963 semver: 5.7.2 2384 2964 validate-npm-package-license: 3.0.4 2965 + dev: true 2966 + 2967 + /npm-run-path@5.3.0: 2968 + resolution: {integrity: sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==} 2969 + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 2970 + dependencies: 2971 + path-key: 4.0.0 2385 2972 dev: true 2386 2973 2387 2974 /object-inspect@1.12.3: ··· 2409 2996 wrappy: 1.0.2 2410 2997 dev: true 2411 2998 2999 + /onetime@6.0.0: 3000 + resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} 3001 + engines: {node: '>=12'} 3002 + dependencies: 3003 + mimic-fn: 4.0.0 3004 + dev: true 3005 + 2412 3006 /organize-imports-cli@0.10.0: 2413 3007 resolution: {integrity: sha512-cVyNEeiDxX/zA6gdK1QS2rr3TK1VymIkT0LagnAk4f6eE0IC0bo3BeUkMzm3q3GnCJzYC+6lfuMpBE0Cequ7Vg==} 2414 3008 hasBin: true ··· 2449 3043 yocto-queue: 0.1.0 2450 3044 dev: true 2451 3045 3046 + /p-limit@5.0.0: 3047 + resolution: {integrity: sha512-/Eaoq+QyLSiXQ4lyYV23f14mZRQcXnxfHrN0vCai+ak9G0pp9iEQukIIZq5NccEvwRB8PUnZT0KsOoDCINS1qQ==} 3048 + engines: {node: '>=18'} 3049 + dependencies: 3050 + yocto-queue: 1.0.0 3051 + dev: true 3052 + 2452 3053 /p-locate@4.1.0: 2453 3054 resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} 2454 3055 engines: {node: '>=8'} ··· 2492 3093 engines: {node: '>=8'} 2493 3094 dev: true 2494 3095 3096 + /path-key@3.1.1: 3097 + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} 3098 + engines: {node: '>=8'} 3099 + dev: true 3100 + 3101 + /path-key@4.0.0: 3102 + resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} 3103 + engines: {node: '>=12'} 3104 + dev: true 3105 + 2495 3106 /path-parse@1.0.7: 2496 3107 resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} 2497 3108 dev: true ··· 2505 3116 resolution: {integrity: sha512-d+RQGp0MAYTIaDBIMmOfMwz3E+LOZnxx1HZd5R18mmCZY0QBlK0LDZfPc8FW8Ed2DlvsuE6PRjroDY+wg4+j/Q==} 2506 3117 dev: true 2507 3118 3119 + /pathe@1.1.2: 3120 + resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==} 3121 + dev: true 3122 + 3123 + /pathval@1.1.1: 3124 + resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==} 3125 + dev: true 3126 + 2508 3127 /picocolors@1.0.0: 2509 3128 resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} 2510 3129 ··· 2533 3152 pathe: 1.1.1 2534 3153 dev: true 2535 3154 3155 + /pkg-types@1.1.1: 3156 + resolution: {integrity: sha512-ko14TjmDuQJ14zsotODv7dBlwxKhUKQEhuhmbqo1uCi9BB0Z2alo/wAXg6q1dTR5TyuqYyWhjtfe/Tsh+X28jQ==} 3157 + dependencies: 3158 + confbox: 0.1.7 3159 + mlly: 1.7.0 3160 + pathe: 1.1.2 3161 + dev: true 3162 + 3163 + /postcss@8.4.38: 3164 + resolution: {integrity: sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==} 3165 + engines: {node: ^10 || ^12 || >=14} 3166 + dependencies: 3167 + nanoid: 3.3.7 3168 + picocolors: 1.0.0 3169 + source-map-js: 1.2.0 3170 + dev: true 3171 + 2536 3172 /preferred-pm@3.0.3: 2537 3173 resolution: {integrity: sha512-+wZgbxNES/KlJs9q40F/1sfOd/j7f1O9JaHcW5Dsn3aUUOZg3L2bjpVUcKV2jvtElYfoTuQiNeMfQJ4kwUAhCQ==} 2538 3174 engines: {node: '>=10'} ··· 2560 3196 engines: {node: ^14.13.1 || >=16.0.0} 2561 3197 dev: true 2562 3198 3199 + /pretty-format@29.7.0: 3200 + resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==} 3201 + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 3202 + dependencies: 3203 + '@jest/schemas': 29.6.3 3204 + ansi-styles: 5.2.0 3205 + react-is: 18.3.1 3206 + dev: true 3207 + 2563 3208 /pseudomap@1.0.2: 2564 3209 resolution: {integrity: sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==} 2565 3210 dev: true ··· 2571 3216 /quick-lru@4.0.1: 2572 3217 resolution: {integrity: sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==} 2573 3218 engines: {node: '>=8'} 3219 + dev: true 3220 + 3221 + /react-is@18.3.1: 3222 + resolution: {integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==} 2574 3223 dev: true 2575 3224 2576 3225 /read-pkg-up@7.0.1: ··· 2673 3322 fsevents: 2.3.3 2674 3323 dev: true 2675 3324 3325 + /rollup@4.18.0: 3326 + resolution: {integrity: sha512-QmJz14PX3rzbJCN1SG4Xe/bAAX2a6NpCP8ab2vfu2GiUr8AQcr2nCV/oEO3yneFarB67zk8ShlIyWb2LGTb3Sg==} 3327 + engines: {node: '>=18.0.0', npm: '>=8.0.0'} 3328 + hasBin: true 3329 + dependencies: 3330 + '@types/estree': 1.0.5 3331 + optionalDependencies: 3332 + '@rollup/rollup-android-arm-eabi': 4.18.0 3333 + '@rollup/rollup-android-arm64': 4.18.0 3334 + '@rollup/rollup-darwin-arm64': 4.18.0 3335 + '@rollup/rollup-darwin-x64': 4.18.0 3336 + '@rollup/rollup-linux-arm-gnueabihf': 4.18.0 3337 + '@rollup/rollup-linux-arm-musleabihf': 4.18.0 3338 + '@rollup/rollup-linux-arm64-gnu': 4.18.0 3339 + '@rollup/rollup-linux-arm64-musl': 4.18.0 3340 + '@rollup/rollup-linux-powerpc64le-gnu': 4.18.0 3341 + '@rollup/rollup-linux-riscv64-gnu': 4.18.0 3342 + '@rollup/rollup-linux-s390x-gnu': 4.18.0 3343 + '@rollup/rollup-linux-x64-gnu': 4.18.0 3344 + '@rollup/rollup-linux-x64-musl': 4.18.0 3345 + '@rollup/rollup-win32-arm64-msvc': 4.18.0 3346 + '@rollup/rollup-win32-ia32-msvc': 4.18.0 3347 + '@rollup/rollup-win32-x64-msvc': 4.18.0 3348 + fsevents: 2.3.3 3349 + dev: true 3350 + 2676 3351 /run-parallel@1.2.0: 2677 3352 resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} 2678 3353 dependencies: ··· 2734 3409 shebang-regex: 1.0.0 2735 3410 dev: true 2736 3411 3412 + /shebang-command@2.0.0: 3413 + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} 3414 + engines: {node: '>=8'} 3415 + dependencies: 3416 + shebang-regex: 3.0.0 3417 + dev: true 3418 + 2737 3419 /shebang-regex@1.0.0: 2738 3420 resolution: {integrity: sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==} 2739 3421 engines: {node: '>=0.10.0'} 3422 + dev: true 3423 + 3424 + /shebang-regex@3.0.0: 3425 + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} 3426 + engines: {node: '>=8'} 2740 3427 dev: true 2741 3428 2742 3429 /side-channel@1.0.4: ··· 2747 3434 object-inspect: 1.12.3 2748 3435 dev: true 2749 3436 3437 + /siginfo@2.0.0: 3438 + resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} 3439 + dev: true 3440 + 2750 3441 /sigmund@1.0.1: 2751 3442 resolution: {integrity: sha512-fCvEXfh6NWpm+YSuY2bpXb/VIihqWA6hLsgboC+0nl71Q7N7o2eaCW8mJa/NLvQhs6jpd3VZV4UiUQlV6+lc8g==} 2752 3443 dev: true 2753 3444 2754 3445 /signal-exit@3.0.7: 2755 3446 resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} 3447 + dev: true 3448 + 3449 + /signal-exit@4.1.0: 3450 + resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} 3451 + engines: {node: '>=14'} 2756 3452 dev: true 2757 3453 2758 3454 /sisteransi@1.0.5: ··· 2780 3476 strip-ansi: 6.0.1 2781 3477 wcwidth: 1.0.1 2782 3478 yargs: 15.4.1 3479 + dev: true 3480 + 3481 + /source-map-js@1.2.0: 3482 + resolution: {integrity: sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==} 3483 + engines: {node: '>=0.10.0'} 2783 3484 dev: true 2784 3485 2785 3486 /spawndamnit@2.0.0: ··· 2815 3516 resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} 2816 3517 dev: true 2817 3518 3519 + /stackback@0.0.2: 3520 + resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} 3521 + dev: true 3522 + 3523 + /std-env@3.7.0: 3524 + resolution: {integrity: sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg==} 3525 + dev: true 3526 + 2818 3527 /stream-transform@2.1.3: 2819 3528 resolution: {integrity: sha512-9GHUiM5hMiCi6Y03jD2ARC1ettBXkQBoQAe7nJsPknnI0ow10aXjTnew8QtYQmLjzn974BnmWEAJgCY6ZP1DeQ==} 2820 3529 dependencies: ··· 2881 3590 /strip-bom@3.0.0: 2882 3591 resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} 2883 3592 engines: {node: '>=4'} 3593 + dev: true 3594 + 3595 + /strip-final-newline@3.0.0: 3596 + resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} 3597 + engines: {node: '>=12'} 2884 3598 dev: true 2885 3599 2886 3600 /strip-indent@3.0.0: ··· 2895 3609 engines: {node: '>=0.10.0'} 2896 3610 dev: true 2897 3611 3612 + /strip-literal@2.1.0: 3613 + resolution: {integrity: sha512-Op+UycaUt/8FbN/Z2TWPBLge3jWrP3xj10f3fnYxf052bKuS3EKs1ZQcVGjnEMdsNVAM+plXRdmjrZ/KgG3Skw==} 3614 + dependencies: 3615 + js-tokens: 9.0.0 3616 + dev: true 3617 + 2898 3618 /supports-color@5.5.0: 2899 3619 resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} 2900 3620 engines: {node: '>=4'} ··· 2919 3639 engines: {node: '>=8'} 2920 3640 dev: true 2921 3641 3642 + /tinybench@2.8.0: 3643 + resolution: {integrity: sha512-1/eK7zUnIklz4JUUlL+658n58XO2hHLQfSk1Zf2LKieUjxidN16eKFEoDEfjHc3ohofSSqK3X5yO6VGb6iW8Lw==} 3644 + dev: true 3645 + 3646 + /tinypool@0.8.4: 3647 + resolution: {integrity: sha512-i11VH5gS6IFeLY3gMBQ00/MmLncVP7JLXOw1vlgkytLmJK7QnEr7NXf0LBdxfmNPAeyetukOk0bOYrJrFGjYJQ==} 3648 + engines: {node: '>=14.0.0'} 3649 + dev: true 3650 + 3651 + /tinyspy@2.2.1: 3652 + resolution: {integrity: sha512-KYad6Vy5VDWV4GH3fjpseMQ/XU2BhIYP7Vzd0LG44qRWm/Yt2WCOTicFdvmgo6gWaqooMQCawTtILVQJupKu7A==} 3653 + engines: {node: '>=14.0.0'} 3654 + dev: true 3655 + 2922 3656 /tmp@0.0.33: 2923 3657 resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} 2924 3658 engines: {node: '>=0.6.0'} ··· 2973 3707 yargs: 17.7.2 2974 3708 dev: true 2975 3709 3710 + /type-detect@4.0.8: 3711 + resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} 3712 + engines: {node: '>=4'} 3713 + dev: true 3714 + 2976 3715 /type-fest@0.13.1: 2977 3716 resolution: {integrity: sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==} 2978 3717 engines: {node: '>=10'} ··· 3036 3775 resolution: {integrity: sha512-bRn3CsoojyNStCZe0BG0Mt4Nr/4KF+rhFlnNXybgqt5pXHNFRlqinSoQaTrGyzE4X8aHplSb+TorH+COin9Yxw==} 3037 3776 dev: true 3038 3777 3778 + /ufo@1.5.3: 3779 + resolution: {integrity: sha512-Y7HYmWaFwPUmkoQCUIAYpKqkOf+SbVj/2fJJZ4RJMCfZp0rTGwRbzQD+HghfnhKOjL9E01okqz+ncJskGYfBNw==} 3780 + dev: true 3781 + 3039 3782 /unbox-primitive@1.0.2: 3040 3783 resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} 3041 3784 dependencies: ··· 3127 3870 spdx-expression-parse: 3.0.1 3128 3871 dev: true 3129 3872 3873 + /vite-node@1.6.0(@types/node@18.16.0): 3874 + resolution: {integrity: sha512-de6HJgzC+TFzOu0NTC4RAIsyf/DY/ibWDYQUcuEA84EMHhcefTUGkjFHKKEJhQN4A+6I0u++kr3l36ZF2d7XRw==} 3875 + engines: {node: ^18.0.0 || >=20.0.0} 3876 + hasBin: true 3877 + dependencies: 3878 + cac: 6.7.14 3879 + debug: 4.3.4 3880 + pathe: 1.1.1 3881 + picocolors: 1.0.0 3882 + vite: 5.2.12(@types/node@18.16.0) 3883 + transitivePeerDependencies: 3884 + - '@types/node' 3885 + - less 3886 + - lightningcss 3887 + - sass 3888 + - stylus 3889 + - sugarss 3890 + - supports-color 3891 + - terser 3892 + dev: true 3893 + 3894 + /vite@5.2.12(@types/node@18.16.0): 3895 + resolution: {integrity: sha512-/gC8GxzxMK5ntBwb48pR32GGhENnjtY30G4A0jemunsBkiEZFw60s8InGpN8gkhHEkjnRK1aSAxeQgwvFhUHAA==} 3896 + engines: {node: ^18.0.0 || >=20.0.0} 3897 + hasBin: true 3898 + peerDependencies: 3899 + '@types/node': ^18.0.0 || >=20.0.0 3900 + less: '*' 3901 + lightningcss: ^1.21.0 3902 + sass: '*' 3903 + stylus: '*' 3904 + sugarss: '*' 3905 + terser: ^5.4.0 3906 + peerDependenciesMeta: 3907 + '@types/node': 3908 + optional: true 3909 + less: 3910 + optional: true 3911 + lightningcss: 3912 + optional: true 3913 + sass: 3914 + optional: true 3915 + stylus: 3916 + optional: true 3917 + sugarss: 3918 + optional: true 3919 + terser: 3920 + optional: true 3921 + dependencies: 3922 + '@types/node': 18.16.0 3923 + esbuild: 0.20.2 3924 + postcss: 8.4.38 3925 + rollup: 4.18.0 3926 + optionalDependencies: 3927 + fsevents: 2.3.3 3928 + dev: true 3929 + 3930 + /vitest@1.6.0(@types/node@18.16.0): 3931 + resolution: {integrity: sha512-H5r/dN06swuFnzNFhq/dnz37bPXnq8xB2xB5JOVk8K09rUtoeNN+LHWkoQ0A/i3hvbUKKcCei9KpbxqHMLhLLA==} 3932 + engines: {node: ^18.0.0 || >=20.0.0} 3933 + hasBin: true 3934 + peerDependencies: 3935 + '@edge-runtime/vm': '*' 3936 + '@types/node': ^18.0.0 || >=20.0.0 3937 + '@vitest/browser': 1.6.0 3938 + '@vitest/ui': 1.6.0 3939 + happy-dom: '*' 3940 + jsdom: '*' 3941 + peerDependenciesMeta: 3942 + '@edge-runtime/vm': 3943 + optional: true 3944 + '@types/node': 3945 + optional: true 3946 + '@vitest/browser': 3947 + optional: true 3948 + '@vitest/ui': 3949 + optional: true 3950 + happy-dom: 3951 + optional: true 3952 + jsdom: 3953 + optional: true 3954 + dependencies: 3955 + '@types/node': 18.16.0 3956 + '@vitest/expect': 1.6.0 3957 + '@vitest/runner': 1.6.0 3958 + '@vitest/snapshot': 1.6.0 3959 + '@vitest/spy': 1.6.0 3960 + '@vitest/utils': 1.6.0 3961 + acorn-walk: 8.3.2 3962 + chai: 4.4.1 3963 + debug: 4.3.4 3964 + execa: 8.0.1 3965 + local-pkg: 0.5.0 3966 + magic-string: 0.30.10 3967 + pathe: 1.1.1 3968 + picocolors: 1.0.0 3969 + std-env: 3.7.0 3970 + strip-literal: 2.1.0 3971 + tinybench: 2.8.0 3972 + tinypool: 0.8.4 3973 + vite: 5.2.12(@types/node@18.16.0) 3974 + vite-node: 1.6.0(@types/node@18.16.0) 3975 + why-is-node-running: 2.2.2 3976 + transitivePeerDependencies: 3977 + - less 3978 + - lightningcss 3979 + - sass 3980 + - stylus 3981 + - sugarss 3982 + - supports-color 3983 + - terser 3984 + dev: true 3985 + 3130 3986 /wcwidth@1.0.1: 3131 3987 resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} 3132 3988 dependencies: ··· 3171 4027 hasBin: true 3172 4028 dependencies: 3173 4029 isexe: 2.0.0 4030 + dev: true 4031 + 4032 + /which@2.0.2: 4033 + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} 4034 + engines: {node: '>= 8'} 4035 + hasBin: true 4036 + dependencies: 4037 + isexe: 2.0.0 4038 + dev: true 4039 + 4040 + /why-is-node-running@2.2.2: 4041 + resolution: {integrity: sha512-6tSwToZxTOcotxHeA+qGCq1mVzKR3CwcJGmVcY+QE8SHy6TnpFnh8PAvPNHYr7EcuVeG0QSMxtYCuO1ta/G/oA==} 4042 + engines: {node: '>=8'} 4043 + hasBin: true 4044 + dependencies: 4045 + siginfo: 2.0.0 4046 + stackback: 0.0.2 3174 4047 dev: true 3175 4048 3176 4049 /wrap-ansi@6.2.0: ··· 3272 4145 resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} 3273 4146 engines: {node: '>=10'} 3274 4147 dev: true 4148 + 4149 + /yocto-queue@1.0.0: 4150 + resolution: {integrity: sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==} 4151 + engines: {node: '>=12.20'} 4152 + dev: true