From bcf86b9358b70c829eed7ea579b7d9495dba966c Mon Sep 17 00:00:00 2001 From: Matheus Cardoso Date: Sun, 21 Jul 2024 07:42:57 -0300 Subject: [PATCH 01/32] chore: test @lwc/shared with vitest --- package.json | 5 +- packages/@lwc/shared/vitest.config.js | 11 + .../wire-service/src/__tests__/index.spec.ts | 45 +- packages/@lwc/wire-service/vitest.config.js | 13 + vitest.shared.js | 7 + vitest.workspace.js | 3 + yarn.lock | 503 +++++++++++++++++- 7 files changed, 557 insertions(+), 30 deletions(-) create mode 100644 packages/@lwc/shared/vitest.config.js create mode 100644 packages/@lwc/wire-service/vitest.config.js create mode 100644 vitest.shared.js create mode 100644 vitest.workspace.js diff --git a/package.json b/package.json index 41cfca0dbb..abee6c0e81 100644 --- a/package.json +++ b/package.json @@ -18,6 +18,7 @@ "build:performance:benchmarks": "nx build @lwc/perf-benchmarks", "copy-fork": "./scripts/tasks/unsafe-external-contributor-ci-workaround.sh", "dev": "nx run-many --target=dev --all --parallel=999 --exclude=@lwc/perf-benchmarks,@lwc/perf-benchmarks-components,@lwc/integration-tests,lwc", + "test:vi": "vitest --workspace vitest.workspace.js", "test": "jest --config ./scripts/jest/root.config.js", "test:bespoke": "nx run-many --target=test", "test:debug": "node --inspect node_modules/.bin/jest --config ./scripts/jest/root.config.js --runInBand --watch", @@ -49,6 +50,7 @@ "@types/jest": "^29.5.12", "@types/node": "^20.14.10", "@types/prettier": "^2.7.3", + "@vitest/ui": "^2.0.3", "bytes": "^3.1.2", "es-module-lexer": "^1.5.4", "eslint": "^9.7.0", @@ -71,7 +73,8 @@ "ts-jest": "^29.2.2", "tslib": "^2.6.3", "typescript": "5.5.3", - "typescript-eslint": "^7.16.1" + "typescript-eslint": "^7.16.1", + "vitest": "^2.0.3" }, "lint-staged": { "*.{js,mjs,ts}": "eslint", diff --git a/packages/@lwc/shared/vitest.config.js b/packages/@lwc/shared/vitest.config.js new file mode 100644 index 0000000000..0c0d5065e7 --- /dev/null +++ b/packages/@lwc/shared/vitest.config.js @@ -0,0 +1,11 @@ +import { defineProject, mergeConfig } from 'vitest/config'; +import baseConfig from '../../../vitest.shared'; + +export default mergeConfig( + baseConfig, + defineProject({ + test: { + name: 'lwc-shared', + }, + }) +); diff --git a/packages/@lwc/wire-service/src/__tests__/index.spec.ts b/packages/@lwc/wire-service/src/__tests__/index.spec.ts index d2a14d505b..d79355ad55 100644 --- a/packages/@lwc/wire-service/src/__tests__/index.spec.ts +++ b/packages/@lwc/wire-service/src/__tests__/index.spec.ts @@ -4,6 +4,7 @@ * SPDX-License-Identifier: MIT * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT */ +import { vi } from 'vitest'; import { register, WireEventTarget, ValueChangedEvent } from '../index'; describe('WireEventTarget from register', () => { @@ -17,8 +18,8 @@ describe('WireEventTarget from register', () => { register(adapterId, adapterFactory); const adapter = new (adapterId as any).adapter(() => {}); - const listener1 = jest.fn(); - const listener2 = jest.fn(); + const listener1 = vi.fn(); + const listener2 = vi.fn(); wireEventTarget!.addEventListener('connect', listener1); wireEventTarget!.addEventListener('connect', listener2); @@ -32,15 +33,15 @@ describe('WireEventTarget from register', () => { it('should invoke disconnected listeners', () => { const adapterId = {}; let wireEventTarget: WireEventTarget; - const dataCallback = jest.fn(); + const dataCallback = vi.fn(); const adapterFactory = (wireEvtTarget: WireEventTarget) => (wireEventTarget = wireEvtTarget); register(adapterId, adapterFactory); const adapter = new (adapterId as any).adapter(dataCallback); - const listener1 = jest.fn(); - const listener2 = jest.fn(); + const listener1 = vi.fn(); + const listener2 = vi.fn(); wireEventTarget!.addEventListener('disconnect', listener1); wireEventTarget!.addEventListener('disconnect', listener2); @@ -54,15 +55,15 @@ describe('WireEventTarget from register', () => { it('should invoke config listeners', () => { const adapterId = {}; let wireEventTarget: WireEventTarget; - const dataCallback = jest.fn(); + const dataCallback = vi.fn(); const adapterFactory = (wireEvtTarget: WireEventTarget) => (wireEventTarget = wireEvtTarget); register(adapterId, adapterFactory); const adapter = new (adapterId as any).adapter(dataCallback); - const listener1 = jest.fn(); - const listener2 = jest.fn(); + const listener1 = vi.fn(); + const listener2 = vi.fn(); wireEventTarget!.addEventListener('config', listener1); wireEventTarget!.addEventListener('config', listener2); @@ -82,12 +83,12 @@ describe('WireEventTarget from register', () => { (wireEventTarget = wireEvtTarget); register(adapterId, adapterFactory); - const adapter = new (adapterId as any).adapter(jest.fn()); + const adapter = new (adapterId as any).adapter(vi.fn()); const expectedConfig = {}; adapter.update(expectedConfig); - const listener = jest.fn(); + const listener = vi.fn(); wireEventTarget!.addEventListener('config', listener); expect(listener).toHaveBeenCalledTimes(1); expect(listener.mock.calls[0][0]).toBe(expectedConfig); @@ -100,8 +101,8 @@ describe('WireEventTarget from register', () => { (wireEventTarget = wireEvtTarget); register(adapterId, adapterFactory); - const adapter = new (adapterId as any).adapter(jest.fn()); - const listener = jest.fn(); + const adapter = new (adapterId as any).adapter(vi.fn()); + const listener = vi.fn(); wireEventTarget!.addEventListener('config', listener); expect(listener).not.toBeCalled(); @@ -118,7 +119,7 @@ describe('WireEventTarget from register', () => { it('should invoke data callback when dispatchEvent', () => { const adapterId = {}; let wireEventTarget: WireEventTarget | undefined; - const dataCallback = jest.fn(); + const dataCallback = vi.fn(); const adapterFactory = (wireEvtTarget: WireEventTarget) => (wireEventTarget = wireEvtTarget); @@ -135,9 +136,9 @@ describe('WireEventTarget from register', () => { it('should dispatchEvent in wiredComponent when dispatching event with type wirecontextevent', () => { const adapterId = {}; let wireEventTarget: WireEventTarget | undefined; - const dataCallback = jest.fn(); + const dataCallback = vi.fn(); const wiredElementMock = { - dispatchEvent: jest.fn(), + dispatchEvent: vi.fn(), }; (dataCallback as any).$$DeprecatedWiredElementHostKey$$ = wiredElementMock; (dataCallback as any).$$DeprecatedWiredParamsMetaKey$$ = []; @@ -164,7 +165,7 @@ describe('WireEventTarget from register', () => { it('should throw on non-ValueChangedEvent', () => { const adapterId = {}; let wireEventTarget: WireEventTarget | undefined; - const dataCallback = jest.fn(); + const dataCallback = vi.fn(); const adapterFactory = (wireEvtTarget: WireEventTarget) => (wireEventTarget = wireEvtTarget); @@ -187,7 +188,7 @@ describe('WireEventTarget from register', () => { it('should throw when adding unknown event listener type', () => { const adapterId = {}; let wireEventTarget: WireEventTarget; - const dataCallback = jest.fn(); + const dataCallback = vi.fn(); const adapterFactory = (wireEvtTarget: WireEventTarget) => (wireEventTarget = wireEvtTarget); @@ -215,11 +216,11 @@ describe('WireEventTarget from register', () => { register(adapterId, adapterFactory); - const dataCallback = jest.fn(); + const dataCallback = vi.fn(); (dataCallback as any).$$DeprecatedWiredParamsMetaKey$$ = []; const adapter = new (adapterId as any).adapter(dataCallback); - const listener = jest.fn(); + const listener = vi.fn(); (wireEventTarget as any).addEventListener(eventType, listener); adapter[(eventToAdapterMethod as any)[eventType]]({}); @@ -242,15 +243,15 @@ describe('WireEventTarget from register', () => { expect(() => { const testEvent = 'test' as any; - wireEventTarget.removeEventListener(testEvent, jest.fn()); + wireEventTarget.removeEventListener(testEvent, vi.fn()); }).toThrowError('Invalid event type test.'); }); }); it('should invoke adapter factory once per wire', () => { const adapterId = {}; - const dataCallback = jest.fn(); - const adapterFactory = jest.fn(); + const dataCallback = vi.fn(); + const adapterFactory = vi.fn(); register(adapterId, adapterFactory); new (adapterId as any).adapter(dataCallback); diff --git a/packages/@lwc/wire-service/vitest.config.js b/packages/@lwc/wire-service/vitest.config.js new file mode 100644 index 0000000000..a12e83f038 --- /dev/null +++ b/packages/@lwc/wire-service/vitest.config.js @@ -0,0 +1,13 @@ +import { defineProject, mergeConfig } from 'vitest/config'; +import sharedConfig from '../../../vitest.shared'; + +export default mergeConfig( + sharedConfig, + defineProject({ + test: { + name: 'lwc-wire-service', + environment: 'jsdom', + root: 'src', + }, + }) +); diff --git a/vitest.shared.js b/vitest.shared.js new file mode 100644 index 0000000000..7888b7abbb --- /dev/null +++ b/vitest.shared.js @@ -0,0 +1,7 @@ +import { defineConfig } from 'vitest/config'; + +export default defineConfig({ + test: { + globals: true, + }, +}); diff --git a/vitest.workspace.js b/vitest.workspace.js new file mode 100644 index 0000000000..390a366282 --- /dev/null +++ b/vitest.workspace.js @@ -0,0 +1,3 @@ +import { defineWorkspace } from 'vitest/config'; + +export default defineWorkspace(['packages/@lwc/shared', 'packages/@lwc/wire-service']); diff --git a/yarn.lock b/yarn.lock index fc4f91ed4a..905bd65dab 100644 --- a/yarn.lock +++ b/yarn.lock @@ -7,7 +7,7 @@ resolved "https://registry.yarnpkg.com/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz#bd9154aec9983f77b3a034ecaa015c2e4201f6cf" integrity sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA== -"@ampproject/remapping@^2.2.0": +"@ampproject/remapping@^2.2.0", "@ampproject/remapping@^2.3.0": version "2.3.0" resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.3.0.tgz#ed441b6fa600072520ce18b43d2c8cc8caecc7f4" integrity sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw== @@ -803,6 +803,121 @@ buffer-crc32 "~0.2.3" fd-slicer2 "^1.2.0" +"@esbuild/aix-ppc64@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz#c7184a326533fcdf1b8ee0733e21c713b975575f" + integrity sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ== + +"@esbuild/android-arm64@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz#09d9b4357780da9ea3a7dfb833a1f1ff439b4052" + integrity sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A== + +"@esbuild/android-arm@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.21.5.tgz#9b04384fb771926dfa6d7ad04324ecb2ab9b2e28" + integrity sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg== + +"@esbuild/android-x64@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.21.5.tgz#29918ec2db754cedcb6c1b04de8cd6547af6461e" + integrity sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA== + +"@esbuild/darwin-arm64@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz#e495b539660e51690f3928af50a76fb0a6ccff2a" + integrity sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ== + +"@esbuild/darwin-x64@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz#c13838fa57372839abdddc91d71542ceea2e1e22" + integrity sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw== + +"@esbuild/freebsd-arm64@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz#646b989aa20bf89fd071dd5dbfad69a3542e550e" + integrity sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g== + +"@esbuild/freebsd-x64@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz#aa615cfc80af954d3458906e38ca22c18cf5c261" + integrity sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ== + +"@esbuild/linux-arm64@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz#70ac6fa14f5cb7e1f7f887bcffb680ad09922b5b" + integrity sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q== + +"@esbuild/linux-arm@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz#fc6fd11a8aca56c1f6f3894f2bea0479f8f626b9" + integrity sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA== + +"@esbuild/linux-ia32@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz#3271f53b3f93e3d093d518d1649d6d68d346ede2" + integrity sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg== + +"@esbuild/linux-loong64@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz#ed62e04238c57026aea831c5a130b73c0f9f26df" + integrity sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg== + +"@esbuild/linux-mips64el@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz#e79b8eb48bf3b106fadec1ac8240fb97b4e64cbe" + integrity sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg== + +"@esbuild/linux-ppc64@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz#5f2203860a143b9919d383ef7573521fb154c3e4" + integrity sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w== + +"@esbuild/linux-riscv64@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz#07bcafd99322d5af62f618cb9e6a9b7f4bb825dc" + integrity sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA== + +"@esbuild/linux-s390x@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz#b7ccf686751d6a3e44b8627ababc8be3ef62d8de" + integrity sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A== + +"@esbuild/linux-x64@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz#6d8f0c768e070e64309af8004bb94e68ab2bb3b0" + integrity sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ== + +"@esbuild/netbsd-x64@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz#bbe430f60d378ecb88decb219c602667387a6047" + integrity sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg== + +"@esbuild/openbsd-x64@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz#99d1cf2937279560d2104821f5ccce220cb2af70" + integrity sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow== + +"@esbuild/sunos-x64@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz#08741512c10d529566baba837b4fe052c8f3487b" + integrity sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg== + +"@esbuild/win32-arm64@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz#675b7385398411240735016144ab2e99a60fc75d" + integrity sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A== + +"@esbuild/win32-ia32@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz#1bfc3ce98aa6ca9a0969e4d2af72144c59c1193b" + integrity sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA== + +"@esbuild/win32-x64@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz#acad351d582d157bb145535db2a6ff53dd514b5c" + integrity sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw== + "@eslint-community/eslint-utils@^4.2.0", "@eslint-community/eslint-utils@^4.4.0": version "4.4.0" resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz#a23514e8fb9af1269d5f7788aa556798d61c6b59" @@ -1158,9 +1273,11 @@ "@lwc/eslint-plugin-lwc-internal@link:./scripts/eslint-plugin": version "0.0.0" + uid "" "@lwc/jest-utils-lwc-internals@link:./scripts/jest/utils": version "0.0.0" + uid "" "@nodelib/fs.scandir@2.1.5": version "2.1.5" @@ -1376,6 +1493,11 @@ resolved "https://registry.yarnpkg.com/@pkgjs/parseargs/-/parseargs-0.11.0.tgz#a77ea742fab25775145434eb1d2328cf5013ac33" integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg== +"@polka/url@^1.0.0-next.24": + version "1.0.0-next.25" + resolved "https://registry.yarnpkg.com/@polka/url/-/url-1.0.0-next.25.tgz#f077fdc0b5d0078d30893396ff4827a13f99e817" + integrity sha512-j7P6Rgr3mmtdkeDGTe0E/aYyWEWVtc5yFXtHCRHs28/jptDEWfaVOc5T7cblqy1XKPPfCxJc/8DwQ5YgLOZOVQ== + "@promptbook/utils@0.44.0-17": version "0.44.0-17" resolved "https://registry.yarnpkg.com/@promptbook/utils/-/utils-0.44.0-17.tgz#741c813d6a61c1dff6fc5e07d516a30c7efd383f" @@ -1498,6 +1620,11 @@ resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.18.1.tgz#f0da481244b7d9ea15296b35f7fe39cd81157396" integrity sha512-lncuC4aHicncmbORnx+dUaAgzee9cm/PbIqgWz1PpXuwc+sa1Ct83tnqUDy/GFKleLiN7ZIeytM6KJ4cAn1SxA== +"@rollup/rollup-android-arm-eabi@4.19.0": + version "4.19.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.19.0.tgz#3d9fd50164b94964f5de68c3c4ce61933b3a338d" + integrity sha512-JlPfZ/C7yn5S5p0yKk7uhHTTnFlvTgLetl2VxqE518QgyM7C9bSfFTYvB/Q/ftkq0RIPY4ySxTz+/wKJ/dXC0w== + "@rollup/rollup-android-arm64@4.14.0": version "4.14.0" resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.14.0.tgz#81bba83b37382a2d0e30ceced06c8d3d85138054" @@ -1508,6 +1635,11 @@ resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.18.1.tgz#82ab3c575f4235fb647abea5e08eec6cf325964e" integrity sha512-F/tkdw0WSs4ojqz5Ovrw5r9odqzFjb5LIgHdHZG65dFI1lWTWRVy32KDJLKRISHgJvqUeUhdIvy43fX41znyDg== +"@rollup/rollup-android-arm64@4.19.0": + version "4.19.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.19.0.tgz#e1a6d4bca2eb08c84fd996a4bf896ce4b6f4014c" + integrity sha512-RDxUSY8D1tWYfn00DDi5myxKgOk6RvWPxhmWexcICt/MEC6yEMr4HNCu1sXXYLw8iAsg0D44NuU+qNq7zVWCrw== + "@rollup/rollup-darwin-arm64@4.14.0": version "4.14.0" resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.14.0.tgz#a371bd723a5c4c4a33376da72abfc3938066842b" @@ -1518,6 +1650,11 @@ resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.18.1.tgz#6a530452e68a9152809ce58de1f89597632a085b" integrity sha512-vk+ma8iC1ebje/ahpxpnrfVQJibTMyHdWpOGZ3JpQ7Mgn/3QNHmPq7YwjZbIE7km73dH5M1e6MRRsnEBW7v5CQ== +"@rollup/rollup-darwin-arm64@4.19.0": + version "4.19.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.19.0.tgz#0a3fffea69489a24a96079af414b0be78df8abbc" + integrity sha512-emvKHL4B15x6nlNTBMtIaC9tLPRpeA5jMvRLXVbl/W9Ie7HhkrE7KQjvgS9uxgatL1HmHWDXk5TTS4IaNJxbAA== + "@rollup/rollup-darwin-x64@4.14.0": version "4.14.0" resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.14.0.tgz#8baf2fda277c9729125017c65651296282412886" @@ -1528,6 +1665,11 @@ resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.18.1.tgz#47727479f5ca292cf434d7e75af2725b724ecbc7" integrity sha512-IgpzXKauRe1Tafcej9STjSSuG0Ghu/xGYH+qG6JwsAUxXrnkvNHcq/NL6nz1+jzvWAnQkuAJ4uIwGB48K9OCGA== +"@rollup/rollup-darwin-x64@4.19.0": + version "4.19.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.19.0.tgz#13fbdb15f58f090871b0ffff047ece06ad6ad74c" + integrity sha512-fO28cWA1dC57qCd+D0rfLC4VPbh6EOJXrreBmFLWPGI9dpMlER2YwSPZzSGfq11XgcEpPukPTfEVFtw2q2nYJg== + "@rollup/rollup-linux-arm-gnueabihf@4.14.0": version "4.14.0" resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.14.0.tgz#822830a8f7388d5b81d04c69415408d3bab1079b" @@ -1538,11 +1680,21 @@ resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.18.1.tgz#46193c498aa7902a8db89ac00128060320e84fef" integrity sha512-P9bSiAUnSSM7EmyRK+e5wgpqai86QOSv8BwvkGjLwYuOpaeomiZWifEos517CwbG+aZl1T4clSE1YqqH2JRs+g== +"@rollup/rollup-linux-arm-gnueabihf@4.19.0": + version "4.19.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.19.0.tgz#e9d9219ddf6f6e946e2ee322198af12466d2c868" + integrity sha512-2Rn36Ubxdv32NUcfm0wB1tgKqkQuft00PtM23VqLuCUR4N5jcNWDoV5iBC9jeGdgS38WK66ElncprqgMUOyomw== + "@rollup/rollup-linux-arm-musleabihf@4.18.1": version "4.18.1" resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.18.1.tgz#22d831fe239643c1d05c98906420325cee439d85" integrity sha512-5RnjpACoxtS+aWOI1dURKno11d7krfpGDEn19jI8BuWmSBbUC4ytIADfROM1FZrFhQPSoP+KEa3NlEScznBTyQ== +"@rollup/rollup-linux-arm-musleabihf@4.19.0": + version "4.19.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.19.0.tgz#4ba804a00b5e793196a622f6977e05f23e01f59a" + integrity sha512-gJuzIVdq/X1ZA2bHeCGCISe0VWqCoNT8BvkQ+BfsixXwTOndhtLUpOg0A1Fcx/+eA6ei6rMBzlOz4JzmiDw7JQ== + "@rollup/rollup-linux-arm64-gnu@4.14.0": version "4.14.0" resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.14.0.tgz#e20fbe1bd4414c7119f9e0bba8ad17a6666c8365" @@ -1553,6 +1705,11 @@ resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.18.1.tgz#19abd33695ec9d588b4a858d122631433084e4a3" integrity sha512-8mwmGD668m8WaGbthrEYZ9CBmPug2QPGWxhJxh/vCgBjro5o96gL04WLlg5BA233OCWLqERy4YUzX3bJGXaJgQ== +"@rollup/rollup-linux-arm64-gnu@4.19.0": + version "4.19.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.19.0.tgz#d871e3f41de759a6db27fc99235b782ba47c15cc" + integrity sha512-0EkX2HYPkSADo9cfeGFoQ7R0/wTKb7q6DdwI4Yn/ULFE1wuRRCHybxpl2goQrx4c/yzK3I8OlgtBu4xvted0ug== + "@rollup/rollup-linux-arm64-musl@4.14.0": version "4.14.0" resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.14.0.tgz#13f475596a62e1924f13fe1c8cf2c40e09a99b47" @@ -1563,6 +1720,11 @@ resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.18.1.tgz#d60af8c0b9be424424ff96a0ba19fce65d26f6ab" integrity sha512-dJX9u4r4bqInMGOAQoGYdwDP8lQiisWb9et+T84l2WXk41yEej8v2iGKodmdKimT8cTAYt0jFb+UEBxnPkbXEQ== +"@rollup/rollup-linux-arm64-musl@4.19.0": + version "4.19.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.19.0.tgz#6e63f7ad4cc51bd2c693a2826fd279de9eaa05b5" + integrity sha512-GlIQRj9px52ISomIOEUq/IojLZqzkvRpdP3cLgIE1wUWaiU5Takwlzpz002q0Nxxr1y2ZgxC2obWxjr13lvxNQ== + "@rollup/rollup-linux-powerpc64le-gnu@4.14.0": version "4.14.0" resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.14.0.tgz#6a431c441420d1c510a205e08c6673355a0a2ea9" @@ -1573,6 +1735,11 @@ resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.18.1.tgz#b1194e5ed6d138fdde0842d126fccde74a90f457" integrity sha512-V72cXdTl4EI0x6FNmho4D502sy7ed+LuVW6Ym8aI6DRQ9hQZdp5sj0a2usYOlqvFBNKQnLQGwmYnujo2HvjCxQ== +"@rollup/rollup-linux-powerpc64le-gnu@4.19.0": + version "4.19.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.19.0.tgz#1540b284d91c440bc9fa7a1714cfb71a5597e94d" + integrity sha512-N6cFJzssruDLUOKfEKeovCKiHcdwVYOT1Hs6dovDQ61+Y9n3Ek4zXvtghPPelt6U0AH4aDGnDLb83uiJMkWYzQ== + "@rollup/rollup-linux-riscv64-gnu@4.14.0": version "4.14.0" resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.14.0.tgz#53d9448962c3f9ed7a1672269655476ea2d67567" @@ -1583,6 +1750,11 @@ resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.18.1.tgz#f5a635c017b9bff8b856b0221fbd5c0e3373b7ec" integrity sha512-f+pJih7sxoKmbjghrM2RkWo2WHUW8UbfxIQiWo5yeCaCM0TveMEuAzKJte4QskBp1TIinpnRcxkquY+4WuY/tg== +"@rollup/rollup-linux-riscv64-gnu@4.19.0": + version "4.19.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.19.0.tgz#70ae58103b5bc7ba2e2235738b51d97022c8ef92" + integrity sha512-2DnD3mkS2uuam/alF+I7M84koGwvn3ZVD7uG+LEWpyzo/bq8+kKnus2EVCkcvh6PlNB8QPNFOz6fWd5N8o1CYg== + "@rollup/rollup-linux-s390x-gnu@4.14.0": version "4.14.0" resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.14.0.tgz#95f0c133b324da3e7e5c7d12855e0eb71d21a946" @@ -1593,6 +1765,11 @@ resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.18.1.tgz#f1043d9f4026bf6995863cb3f8dd4732606e4baa" integrity sha512-qb1hMMT3Fr/Qz1OKovCuUM11MUNLUuHeBC2DPPAWUYYUAOFWaxInaTwTQmc7Fl5La7DShTEpmYwgdt2hG+4TEg== +"@rollup/rollup-linux-s390x-gnu@4.19.0": + version "4.19.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.19.0.tgz#579ca5f271421a961d3c73d221202c79e02ff03a" + integrity sha512-D6pkaF7OpE7lzlTOFCB2m3Ngzu2ykw40Nka9WmKGUOTS3xcIieHe82slQlNq69sVB04ch73thKYIWz/Ian8DUA== + "@rollup/rollup-linux-x64-gnu@4.14.0": version "4.14.0" resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.14.0.tgz#820ada75c68ead1acc486e41238ca0d8f8531478" @@ -1603,6 +1780,11 @@ resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.18.1.tgz#1e781730be445119f06c9df5f185e193bc82c610" integrity sha512-7O5u/p6oKUFYjRbZkL2FLbwsyoJAjyeXHCU3O4ndvzg2OFO2GinFPSJFGbiwFDaCFc+k7gs9CF243PwdPQFh5g== +"@rollup/rollup-linux-x64-gnu@4.19.0": + version "4.19.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.19.0.tgz#f0282d761b8b4e7b92b236813475248e37231849" + integrity sha512-HBndjQLP8OsdJNSxpNIN0einbDmRFg9+UQeZV1eiYupIRuZsDEoeGU43NQsS34Pp166DtwQOnpcbV/zQxM+rWA== + "@rollup/rollup-linux-x64-musl@4.14.0": version "4.14.0" resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.14.0.tgz#ca74f22e125efbe94c1148d989ef93329b464443" @@ -1613,6 +1795,11 @@ resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.18.1.tgz#08f12e1965d6f27d6898ff932592121cca6abc4b" integrity sha512-pDLkYITdYrH/9Cv/Vlj8HppDuLMDUBmgsM0+N+xLtFd18aXgM9Nyqupb/Uw+HeidhfYg2lD6CXvz6CjoVOaKjQ== +"@rollup/rollup-linux-x64-musl@4.19.0": + version "4.19.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.19.0.tgz#65da807ac66c505ad14b76f1e5976006cb67dd5f" + integrity sha512-HxfbvfCKJe/RMYJJn0a12eiOI9OOtAUF4G6ozrFUK95BNyoJaSiBjIOHjZskTUffUrB84IPKkFG9H9nEvJGW6A== + "@rollup/rollup-win32-arm64-msvc@4.14.0": version "4.14.0" resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.14.0.tgz#269023332297051d037a9593dcba92c10fef726b" @@ -1623,6 +1810,11 @@ resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.18.1.tgz#4a5dcbbe7af7d41cac92b09798e7c1831da1f599" integrity sha512-W2ZNI323O/8pJdBGil1oCauuCzmVd9lDmWBBqxYZcOqWD6aWqJtVBQ1dFrF4dYpZPks6F+xCZHfzG5hYlSHZ6g== +"@rollup/rollup-win32-arm64-msvc@4.19.0": + version "4.19.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.19.0.tgz#1eed24b91f421c2eea8bb7ca8889ba0c867e1780" + integrity sha512-HxDMKIhmcguGTiP5TsLNolwBUK3nGGUEoV/BO9ldUBoMLBssvh4J0X8pf11i1fTV7WShWItB1bKAKjX4RQeYmg== + "@rollup/rollup-win32-ia32-msvc@4.14.0": version "4.14.0" resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.14.0.tgz#d7701438daf964011fd7ca33e3f13f3ff5129e7b" @@ -1633,6 +1825,11 @@ resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.18.1.tgz#075b0713de627843a73b4cf0e087c56b53e9d780" integrity sha512-ELfEX1/+eGZYMaCIbK4jqLxO1gyTSOIlZr6pbC4SRYFaSIDVKOnZNMdoZ+ON0mrFDp4+H5MhwNC1H/AhE3zQLg== +"@rollup/rollup-win32-ia32-msvc@4.19.0": + version "4.19.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.19.0.tgz#1ed93c9cdc84e185359797a686f4d1576afcea58" + integrity sha512-xItlIAZZaiG/u0wooGzRsx11rokP4qyc/79LkAOdznGRAbOFc+SfEdfUOszG1odsHNgwippUJavag/+W/Etc6Q== + "@rollup/rollup-win32-x64-msvc@4.14.0": version "4.14.0" resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.14.0.tgz#0bb7ac3cd1c3292db1f39afdabfd03ccea3a3d34" @@ -1643,6 +1840,11 @@ resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.18.1.tgz#0cb240c147c0dfd0e3eaff4cc060a772d39e155c" integrity sha512-yjk2MAkQmoaPYCSu35RLJ62+dz358nE83VfTePJRp8CG7aMg25mEJYpXFiD+NcevhX8LxD5OP5tktPXnXN7GDw== +"@rollup/rollup-win32-x64-msvc@4.19.0": + version "4.19.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.19.0.tgz#baf9b65023ea2ecc5e6ec68f787a0fecfd8ee84c" + integrity sha512-xNo5fV5ycvCCKqiZcpB65VMR11NJB+StnxHz20jdqRAktfdfzhgjTiJ2doTDQE/7dqGaV5I7ZGqKpgph6lCIag== + "@sinclair/typebox@^0.27.8": version "0.27.8" resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.27.8.tgz#6667fac16c436b5434a387a34dedb013198f6e6e" @@ -2080,6 +2282,40 @@ "@typescript-eslint/types" "7.16.1" eslint-visitor-keys "^3.4.3" +"@vitest/expect@2.0.3": + version "2.0.3" + resolved "https://registry.yarnpkg.com/@vitest/expect/-/expect-2.0.3.tgz#367727256f2a253e21a3e69cd996af51fc7899b1" + integrity sha512-X6AepoOYePM0lDNUPsGXTxgXZAl3EXd0GYe/MZyVE4HzkUqyUVC6S3PrY5mClDJ6/7/7vALLMV3+xD/Ko60Hqg== + dependencies: + "@vitest/spy" "2.0.3" + "@vitest/utils" "2.0.3" + chai "^5.1.1" + tinyrainbow "^1.2.0" + +"@vitest/pretty-format@2.0.3", "@vitest/pretty-format@^2.0.3": + version "2.0.3" + resolved "https://registry.yarnpkg.com/@vitest/pretty-format/-/pretty-format-2.0.3.tgz#30af705250cd055890091999e467968e41872c82" + integrity sha512-URM4GLsB2xD37nnTyvf6kfObFafxmycCL8un3OC9gaCs5cti2u+5rJdIflZ2fUJUen4NbvF6jCufwViAFLvz1g== + dependencies: + tinyrainbow "^1.2.0" + +"@vitest/runner@2.0.3": + version "2.0.3" + resolved "https://registry.yarnpkg.com/@vitest/runner/-/runner-2.0.3.tgz#4310ff4583d7874f57b5a8a194062bb85f07b0df" + integrity sha512-EmSP4mcjYhAcuBWwqgpjR3FYVeiA4ROzRunqKltWjBfLNs1tnMLtF+qtgd5ClTwkDP6/DGlKJTNa6WxNK0bNYQ== + dependencies: + "@vitest/utils" "2.0.3" + pathe "^1.1.2" + +"@vitest/snapshot@2.0.3": + version "2.0.3" + resolved "https://registry.yarnpkg.com/@vitest/snapshot/-/snapshot-2.0.3.tgz#31acf5906f8c12f9c7fde21b84cc28f043e983b1" + integrity sha512-6OyA6v65Oe3tTzoSuRPcU6kh9m+mPL1vQ2jDlPdn9IQoUxl8rXhBnfICNOC+vwxWY684Vt5UPgtcA2aPFBb6wg== + dependencies: + "@vitest/pretty-format" "2.0.3" + magic-string "^0.30.10" + pathe "^1.1.2" + "@vitest/snapshot@^1.2.1", "@vitest/snapshot@^1.2.2": version "1.5.2" resolved "https://registry.yarnpkg.com/@vitest/snapshot/-/snapshot-1.5.2.tgz#d6f8a5d0da451e1c4dc211fcede600becf4851ed" @@ -2089,6 +2325,36 @@ pathe "^1.1.1" pretty-format "^29.7.0" +"@vitest/spy@2.0.3": + version "2.0.3" + resolved "https://registry.yarnpkg.com/@vitest/spy/-/spy-2.0.3.tgz#62a14f6d7ec4f13caeeecac42d37f903f68c83c1" + integrity sha512-sfqyAw/ypOXlaj4S+w8689qKM1OyPOqnonqOc9T91DsoHbfN5mU7FdifWWv3MtQFf0lEUstEwR9L/q/M390C+A== + dependencies: + tinyspy "^3.0.0" + +"@vitest/ui@^2.0.3": + version "2.0.3" + resolved "https://registry.yarnpkg.com/@vitest/ui/-/ui-2.0.3.tgz#cefa610eb7b9f8434b3e0a5b276ea5f7a7639987" + integrity sha512-UAkzHk5veR3NRF7BNUxWlLly7Cw7H+wzP3+eiMIVeKo3Md33Ey20rYsNQn/9McIqOeO02tMzqHhpThmjk1yRzw== + dependencies: + "@vitest/utils" "2.0.3" + fast-glob "^3.3.2" + fflate "^0.8.2" + flatted "^3.3.1" + pathe "^1.1.2" + sirv "^2.0.4" + tinyrainbow "^1.2.0" + +"@vitest/utils@2.0.3": + version "2.0.3" + resolved "https://registry.yarnpkg.com/@vitest/utils/-/utils-2.0.3.tgz#3c57f5338e49c91e3c4ac5be8c74ae22a3c2d5b4" + integrity sha512-c/UdELMuHitQbbc/EVctlBaxoYAwQPQdSNwv7z/vHyBKy2edYZaFgptE27BRueZB7eW8po+cllotMNTDpL3HWg== + dependencies: + "@vitest/pretty-format" "2.0.3" + estree-walker "^3.0.3" + loupe "^3.1.1" + tinyrainbow "^1.2.0" + "@wdio/cli@^8.39.1": version "8.39.1" resolved "https://registry.yarnpkg.com/@wdio/cli/-/cli-8.39.1.tgz#6cff41ef28679ff10033b3f3582081a2f7b896aa" @@ -2741,6 +3007,11 @@ asciichart@1.5.25: resolved "https://registry.yarnpkg.com/asciichart/-/asciichart-1.5.25.tgz#f5aca189801b4e58019139bbb5922ab3cae3ca90" integrity sha512-PNxzXIPPOtWq8T7bgzBtk9cI2lgS4SJZthUHEiQ1aoIc3lNzGfUvIvo9LiAnq26TACo9t1/4qP6KTGAUbzX9Xg== +assertion-error@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/assertion-error/-/assertion-error-2.0.1.tgz#f641a196b335690b1070bf00b6e7593fec190bf7" + integrity sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA== + ast-types@^0.13.4: version "0.13.4" resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.13.4.tgz#ee0d77b343263965ecc3fb62da16e7222b2b6782" @@ -3171,6 +3442,11 @@ bytes@3.1.2, bytes@^3.1.2: resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5" integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== +cac@^6.7.14: + version "6.7.14" + resolved "https://registry.yarnpkg.com/cac/-/cac-6.7.14.tgz#804e1e6f506ee363cb0e3ccbb09cad5dd9870959" + integrity sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ== + cacache@^15.2.0: version "15.3.0" resolved "https://registry.yarnpkg.com/cacache/-/cacache-15.3.0.tgz#dc85380fb2f556fe3dda4c719bfa0ec875a7f1eb" @@ -3310,6 +3586,17 @@ caw@^2.0.1: tunnel-agent "^0.6.0" url-to-options "^1.0.1" +chai@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/chai/-/chai-5.1.1.tgz#f035d9792a22b481ead1c65908d14bb62ec1c82c" + integrity sha512-pT1ZgP8rPNqUgieVaEY+ryQr6Q4HXNg8Ei9UnLUrjN4IA7dvQC5JB+/kxVcPNDHyBcc/26CXPkbNzq3qwrOEKA== + dependencies: + assertion-error "^2.0.1" + check-error "^2.1.1" + deep-eql "^5.0.1" + loupe "^3.1.0" + pathval "^2.0.0" + chainsaw@~0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/chainsaw/-/chainsaw-0.1.0.tgz#5eab50b28afe58074d0d58291388828b5e5fbc98" @@ -3367,6 +3654,11 @@ chardet@^0.7.0: resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== +check-error@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/check-error/-/check-error-2.1.1.tgz#87eb876ae71ee388fa0471fe423f494be1d96ccc" + integrity sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw== + chokidar@3.5.3: version "3.5.3" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" @@ -4030,6 +4322,13 @@ debug@^3.1.0, debug@^3.2.7: dependencies: ms "^2.1.1" +debug@^4.3.5: + version "4.3.5" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.5.tgz#e83444eceb9fedd4a1da56d671ae2446a01a6e1e" + integrity sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg== + dependencies: + ms "2.1.2" + decamelize@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-4.0.0.tgz#aa472d7bf660eb15f3494efd531cab7f2a709837" @@ -4122,6 +4421,11 @@ dedent@^1.0.0: resolved "https://registry.yarnpkg.com/dedent/-/dedent-1.5.3.tgz#99aee19eb9bae55a67327717b6e848d0bf777e5a" integrity sha512-NHQtfOOW68WD8lgypbLA5oT+Bt0xXJhiYvoR6SmmNXZfpzOGXwdKWmcwG8N7PwVVWV3eF/68nmD9BaJSsTBhyQ== +deep-eql@^5.0.1: + version "5.0.2" + resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-5.0.2.tgz#4b756d8d770a9257300825d52a2c2cff99c3a341" + integrity sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q== + deep-equal@~1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.0.1.tgz#f5d260292b660e084eff4cdbc9f08ad3247448b5" @@ -4687,6 +4991,35 @@ es6-error@^4.1.1: resolved "https://registry.yarnpkg.com/es6-error/-/es6-error-4.1.1.tgz#9e3af407459deed47e9a91f9b885a84eb05c561d" integrity sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg== +esbuild@^0.21.3: + version "0.21.5" + resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.21.5.tgz#9ca301b120922959b766360d8ac830da0d02997d" + integrity sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw== + optionalDependencies: + "@esbuild/aix-ppc64" "0.21.5" + "@esbuild/android-arm" "0.21.5" + "@esbuild/android-arm64" "0.21.5" + "@esbuild/android-x64" "0.21.5" + "@esbuild/darwin-arm64" "0.21.5" + "@esbuild/darwin-x64" "0.21.5" + "@esbuild/freebsd-arm64" "0.21.5" + "@esbuild/freebsd-x64" "0.21.5" + "@esbuild/linux-arm" "0.21.5" + "@esbuild/linux-arm64" "0.21.5" + "@esbuild/linux-ia32" "0.21.5" + "@esbuild/linux-loong64" "0.21.5" + "@esbuild/linux-mips64el" "0.21.5" + "@esbuild/linux-ppc64" "0.21.5" + "@esbuild/linux-riscv64" "0.21.5" + "@esbuild/linux-s390x" "0.21.5" + "@esbuild/linux-x64" "0.21.5" + "@esbuild/netbsd-x64" "0.21.5" + "@esbuild/openbsd-x64" "0.21.5" + "@esbuild/sunos-x64" "0.21.5" + "@esbuild/win32-arm64" "0.21.5" + "@esbuild/win32-ia32" "0.21.5" + "@esbuild/win32-x64" "0.21.5" + escalade@^3.1.1, escalade@^3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.2.tgz#54076e9ab29ea5bf3d8f1ed62acffbb88272df27" @@ -4891,7 +5224,7 @@ estree-walker@^2.0.2: resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-2.0.2.tgz#52f010178c2a4c117a7757cfe942adb7d2da4cac" integrity sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w== -estree-walker@~3.0.3: +estree-walker@^3.0.3, estree-walker@~3.0.3: version "3.0.3" resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-3.0.3.tgz#67c3e549ec402a487b4fc193d1953a524752340d" integrity sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g== @@ -5125,7 +5458,7 @@ fast-fifo@^1.1.0, fast-fifo@^1.2.0: resolved "https://registry.yarnpkg.com/fast-fifo/-/fast-fifo-1.3.2.tgz#286e31de96eb96d38a97899815740ba2a4f3640c" integrity sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ== -fast-glob@3.3.2, fast-glob@^3.2.9, fast-glob@^3.3.0: +fast-glob@3.3.2, fast-glob@^3.2.9, fast-glob@^3.3.0, fast-glob@^3.3.2: version "3.3.2" resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.2.tgz#a904501e57cfdd2ffcded45e99a54fef55e46129" integrity sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow== @@ -5187,6 +5520,11 @@ fetch-blob@^3.1.2, fetch-blob@^3.1.4: node-domexception "^1.0.0" web-streams-polyfill "^3.0.3" +fflate@^0.8.2: + version "0.8.2" + resolved "https://registry.yarnpkg.com/fflate/-/fflate-0.8.2.tgz#fc8631f5347812ad6028bbe4a2308b2792aa1dea" + integrity sha512-cPJU47OaAoCbg0pBvzsgpTPhmhqI5eJjh/JIu8tPj5q+T7iLvW/JAYUqmE7KOB4R1ZyEhzBaIQpQpardBF5z8A== + figures@3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/figures/-/figures-3.2.0.tgz#625c18bd293c604dc4a8ddb2febf0c88341746af" @@ -5370,7 +5708,7 @@ flat@^5.0.2: resolved "https://registry.yarnpkg.com/flat/-/flat-5.0.2.tgz#8ca6fe332069ffa9d324c327198c598259ceb241" integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ== -flatted@^3.2.7, flatted@^3.2.9: +flatted@^3.2.7, flatted@^3.2.9, flatted@^3.3.1: version "3.3.1" resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.3.1.tgz#21db470729a6734d4997002f439cb308987f567a" integrity sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw== @@ -5503,7 +5841,7 @@ fs.realpath@^1.0.0: resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== -fsevents@^2.3.2, fsevents@~2.3.2: +fsevents@^2.3.2, fsevents@~2.3.2, fsevents@~2.3.3: version "2.3.3" resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== @@ -5588,6 +5926,11 @@ get-east-asian-width@^1.0.0: resolved "https://registry.yarnpkg.com/get-east-asian-width/-/get-east-asian-width-1.2.0.tgz#5e6ebd9baee6fb8b7b6bd505221065f0cd91f64e" integrity sha512-2nk+7SIVb14QrgXFHcm84tD4bKQz0RxPuMT8Ag5KPOq7J5fEmAg0UbXdTOSHqNuHSU28k55qnceesxXRZGzKWA== +get-func-name@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/get-func-name/-/get-func-name-2.0.2.tgz#0d7cf20cd13fda808669ffa88f4ffc7a3943fc41" + integrity sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ== + get-intrinsic@^1.1.3, get-intrinsic@^1.2.1, get-intrinsic@^1.2.3, get-intrinsic@^1.2.4: version "1.2.4" resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.4.tgz#e385f5a4b5227d449c3eabbad05494ef0abbeadd" @@ -7884,6 +8227,13 @@ loglevel@^1.6.0: resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.9.1.tgz#d63976ac9bcd03c7c873116d41c2a85bafff1be7" integrity sha512-hP3I3kCrDIMuRwAwHltphhDM1r8i55H33GgqjXbrisuJhF4kRhW1dNuxsRklp4bXl8DSdLaNLuiL4A/LWRfxvg== +loupe@^3.1.0, loupe@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/loupe/-/loupe-3.1.1.tgz#71d038d59007d890e3247c5db97c1ec5a92edc54" + integrity sha512-edNu/8D5MKVfGVFRhFf8aAxiTM6Wumfz5XsaatSxlD3w4R1d/WEKUTydCdPGbl9K7QG/Ca3GnDV2sIKIpXRQcw== + dependencies: + get-func-name "^2.0.1" + lower-case@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-2.0.2.tgz#6fa237c63dbdc4a82ca0fd882e4722dc5e634e28" @@ -8325,6 +8675,11 @@ morgan@^1.7.0: on-finished "~2.3.0" on-headers "~1.0.2" +mrmime@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/mrmime/-/mrmime-2.0.0.tgz#151082a6e06e59a9a39b46b3e14d5cfe92b3abb4" + integrity sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw== + ms@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" @@ -9082,11 +9437,16 @@ path-type@^4.0.0: resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== -pathe@^1.1.1: +pathe@^1.1.1, pathe@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/pathe/-/pathe-1.1.2.tgz#6c4cb47a945692e48a1ddd6e4094d170516437ec" integrity sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ== +pathval@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/pathval/-/pathval-2.0.0.tgz#7e2550b422601d4f6b8e26f1301bc8f15a741a25" + integrity sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA== + pend@^1.2.0, pend@~1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50" @@ -9231,7 +9591,7 @@ postcss-value-parser@~4.2.0: resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514" integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== -postcss@~8.4.39: +postcss@^8.4.39, postcss@~8.4.39: version "8.4.39" resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.39.tgz#aa3c94998b61d3a9c259efa51db4b392e1bde0e3" integrity sha512-0vzE+lAiG7hZl1/9I8yzKLx3aR9Xbof3fBHKunvMfOCYAtMhrsnccJY2iTURb9EZd5+pLuiNV9/c/GZJOHsgIw== @@ -9877,6 +10237,31 @@ rollup@4.14.0: "@rollup/rollup-win32-x64-msvc" "4.14.0" fsevents "~2.3.2" +rollup@^4.13.0: + version "4.19.0" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-4.19.0.tgz#83b08cc0b2bc38c26c194cb7f2cdabd84a2a8c02" + integrity sha512-5r7EYSQIowHsK4eTZ0Y81qpZuJz+MUuYeqmmYmRMl1nwhdmbiYqt5jwzf6u7wyOzJgYqtCRMtVRKOtHANBz7rA== + dependencies: + "@types/estree" "1.0.5" + optionalDependencies: + "@rollup/rollup-android-arm-eabi" "4.19.0" + "@rollup/rollup-android-arm64" "4.19.0" + "@rollup/rollup-darwin-arm64" "4.19.0" + "@rollup/rollup-darwin-x64" "4.19.0" + "@rollup/rollup-linux-arm-gnueabihf" "4.19.0" + "@rollup/rollup-linux-arm-musleabihf" "4.19.0" + "@rollup/rollup-linux-arm64-gnu" "4.19.0" + "@rollup/rollup-linux-arm64-musl" "4.19.0" + "@rollup/rollup-linux-powerpc64le-gnu" "4.19.0" + "@rollup/rollup-linux-riscv64-gnu" "4.19.0" + "@rollup/rollup-linux-s390x-gnu" "4.19.0" + "@rollup/rollup-linux-x64-gnu" "4.19.0" + "@rollup/rollup-linux-x64-musl" "4.19.0" + "@rollup/rollup-win32-arm64-msvc" "4.19.0" + "@rollup/rollup-win32-ia32-msvc" "4.19.0" + "@rollup/rollup-win32-x64-msvc" "4.19.0" + fsevents "~2.3.2" + rollup@^4.18.1: version "4.18.1" resolved "https://registry.yarnpkg.com/rollup/-/rollup-4.18.1.tgz#18a606df5e76ca53b8a69f2d8eab256d69dda851" @@ -10188,6 +10573,11 @@ side-channel@^1.0.4, side-channel@^1.0.6: get-intrinsic "^1.2.4" object-inspect "^1.13.1" +siginfo@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/siginfo/-/siginfo-2.0.0.tgz#32e76c70b79724e3bb567cb9d543eb858ccfaf30" + integrity sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g== + signal-exit@^3.0.0, signal-exit@^3.0.2, signal-exit@^3.0.3, signal-exit@^3.0.7: version "3.0.7" resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" @@ -10233,6 +10623,15 @@ simple-swizzle@^0.2.2: dependencies: is-arrayish "^0.3.1" +sirv@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/sirv/-/sirv-2.0.4.tgz#5dd9a725c578e34e449f332703eb2a74e46a29b0" + integrity sha512-94Bdh3cC2PKrbgSOUqTiGPWVZeSiXfKOVZNJniWoqrWrRkB1CJzBU3NEbiTsPcYy1lDsANA/THzS+9WBiy5nfQ== + dependencies: + "@polka/url" "^1.0.0-next.24" + mrmime "^2.0.0" + totalist "^3.0.0" + sisteransi@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" @@ -10485,6 +10884,11 @@ stack-utils@^2.0.3: dependencies: escape-string-regexp "^2.0.0" +stackback@0.0.2: + version "0.0.2" + resolved "https://registry.yarnpkg.com/stackback/-/stackback-0.0.2.tgz#1ac8a0d9483848d1695e418b6d031a3c3ce68e3b" + integrity sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw== + statuses@2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63" @@ -10495,6 +10899,11 @@ statuses@2.0.1: resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" integrity sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA== +std-env@^3.7.0: + version "3.7.0" + resolved "https://registry.yarnpkg.com/std-env/-/std-env-3.7.0.tgz#c9f7386ced6ecf13360b6c6c55b8aaa4ef7481d2" + integrity sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg== + stream-buffers@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/stream-buffers/-/stream-buffers-3.0.2.tgz#5249005a8d5c2d00b3a32e6e0a6ea209dc4f3521" @@ -10916,6 +11325,26 @@ timed-out@^4.0.1: resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-4.0.1.tgz#f32eacac5a175bea25d7fab565ab3ed8741ef56f" integrity sha512-G7r3AhovYtr5YKOWQkta8RKAPb+J9IsO4uVmzjl8AZwfhs8UcUwTiD6gcJYSgOtzyjvQKrKYn41syHbUWMkafA== +tinybench@^2.8.0: + version "2.8.0" + resolved "https://registry.yarnpkg.com/tinybench/-/tinybench-2.8.0.tgz#30e19ae3a27508ee18273ffed9ac7018949acd7b" + integrity sha512-1/eK7zUnIklz4JUUlL+658n58XO2hHLQfSk1Zf2LKieUjxidN16eKFEoDEfjHc3ohofSSqK3X5yO6VGb6iW8Lw== + +tinypool@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/tinypool/-/tinypool-1.0.0.tgz#a68965218e04f4ad9de037d2a1cd63cda9afb238" + integrity sha512-KIKExllK7jp3uvrNtvRBYBWBOAXSX8ZvoaD8T+7KB/QHIuoJW3Pmr60zucywjAlMb5TeXUkcs/MWeWLu0qvuAQ== + +tinyrainbow@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/tinyrainbow/-/tinyrainbow-1.2.0.tgz#5c57d2fc0fb3d1afd78465c33ca885d04f02abb5" + integrity sha512-weEDEq7Z5eTHPDh4xjX789+fHfF+P8boiFB+0vbWzpbnbsEr/GRaohi/uMKxg8RZMXnl1ItAi/IUHWMsjDV7kQ== + +tinyspy@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/tinyspy/-/tinyspy-3.0.0.tgz#cb61644f2713cd84dee184863f4642e06ddf0585" + integrity sha512-q5nmENpTHgiPVd1cJDDc9cVoYN5x4vCvwT3FMilvKPKneCBZAxn2YWQjDF0UMcE9k0Cay1gBiDfTMU0g+mPMQA== + tmp@^0.0.33: version "0.0.33" resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" @@ -10955,6 +11384,11 @@ toidentifier@1.0.1: resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35" integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA== +totalist@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/totalist/-/totalist-3.0.1.tgz#ba3a3d600c915b1a97872348f79c127475f6acf8" + integrity sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ== + tough-cookie@^4.1.2: version "4.1.3" resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-4.1.3.tgz#97b9adb0728b42280aa3d814b6b999b2ff0318bf" @@ -11386,6 +11820,53 @@ vary@^1, vary@^1.1.2, vary@~1.1.2: resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" integrity sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg== +vite-node@2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/vite-node/-/vite-node-2.0.3.tgz#449b1524178304ba764bd33062bd31a09c5e673f" + integrity sha512-14jzwMx7XTcMB+9BhGQyoEAmSl0eOr3nrnn+Z12WNERtOvLN+d2scbRUvyni05rT3997Bg+rZb47NyP4IQPKXg== + dependencies: + cac "^6.7.14" + debug "^4.3.5" + pathe "^1.1.2" + tinyrainbow "^1.2.0" + vite "^5.0.0" + +vite@^5.0.0: + version "5.3.4" + resolved "https://registry.yarnpkg.com/vite/-/vite-5.3.4.tgz#b36ebd47c8a5e3a8727046375d5f10bf9fdf8715" + integrity sha512-Cw+7zL3ZG9/NZBB8C+8QbQZmR54GwqIz+WMI4b3JgdYJvX+ny9AjJXqkGQlDXSXRP9rP0B4tbciRMOVEKulVOA== + dependencies: + esbuild "^0.21.3" + postcss "^8.4.39" + rollup "^4.13.0" + optionalDependencies: + fsevents "~2.3.3" + +vitest@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/vitest/-/vitest-2.0.3.tgz#daf7e43c9415c6825922ae3a63cac452d1ac705f" + integrity sha512-o3HRvU93q6qZK4rI2JrhKyZMMuxg/JRt30E6qeQs6ueaiz5hr1cPj+Sk2kATgQzMMqsa2DiNI0TIK++1ULx8Jw== + dependencies: + "@ampproject/remapping" "^2.3.0" + "@vitest/expect" "2.0.3" + "@vitest/pretty-format" "^2.0.3" + "@vitest/runner" "2.0.3" + "@vitest/snapshot" "2.0.3" + "@vitest/spy" "2.0.3" + "@vitest/utils" "2.0.3" + chai "^5.1.1" + debug "^4.3.5" + execa "^8.0.1" + magic-string "^0.30.10" + pathe "^1.1.2" + std-env "^3.7.0" + tinybench "^2.8.0" + tinypool "^1.0.0" + tinyrainbow "^1.2.0" + vite "^5.0.0" + vite-node "2.0.3" + why-is-node-running "^2.2.2" + void-elements@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/void-elements/-/void-elements-2.0.1.tgz#c066afb582bb1cb4128d60ea92392e94d5e9dbec" @@ -11603,6 +12084,14 @@ which@^4.0.0: dependencies: isexe "^3.1.1" +why-is-node-running@^2.2.2: + version "2.3.0" + resolved "https://registry.yarnpkg.com/why-is-node-running/-/why-is-node-running-2.3.0.tgz#a3f69a97107f494b3cdc3bdddd883a7d65cebf04" + integrity sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w== + dependencies: + siginfo "^2.0.0" + stackback "0.0.2" + wide-align@^1.1.5: version "1.1.5" resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.5.tgz#df1d4c206854369ecf3c9a4898f1b23fbd9d15d3" From c678adf7e2817fbc58e8219a5d66043659e5df39 Mon Sep 17 00:00:00 2001 From: Matheus Cardoso Date: Sun, 21 Jul 2024 09:04:34 -0300 Subject: [PATCH 02/32] chore: migrate @lwc/style-compiler to vitest --- packages/@lwc/style-compiler/vitest.config.js | 11 +++++++++++ vitest.shared.js | 1 + vitest.workspace.js | 6 +++++- 3 files changed, 17 insertions(+), 1 deletion(-) create mode 100644 packages/@lwc/style-compiler/vitest.config.js diff --git a/packages/@lwc/style-compiler/vitest.config.js b/packages/@lwc/style-compiler/vitest.config.js new file mode 100644 index 0000000000..937385e5e7 --- /dev/null +++ b/packages/@lwc/style-compiler/vitest.config.js @@ -0,0 +1,11 @@ +import { mergeConfig, defineProject } from 'vitest/config'; +import sharedConfig from '../../../vitest.shared'; + +export default mergeConfig( + sharedConfig, + defineProject({ + test: { + name: 'lwc-style-compiler', + }, + }) +); diff --git a/vitest.shared.js b/vitest.shared.js index 7888b7abbb..2df3ddbc8b 100644 --- a/vitest.shared.js +++ b/vitest.shared.js @@ -3,5 +3,6 @@ import { defineConfig } from 'vitest/config'; export default defineConfig({ test: { globals: true, + include: ['**/*.{test,spec}.{js,ts}'], }, }); diff --git a/vitest.workspace.js b/vitest.workspace.js index 390a366282..4f26c5b5f7 100644 --- a/vitest.workspace.js +++ b/vitest.workspace.js @@ -1,3 +1,7 @@ import { defineWorkspace } from 'vitest/config'; -export default defineWorkspace(['packages/@lwc/shared', 'packages/@lwc/wire-service']); +export default defineWorkspace([ + 'packages/@lwc/shared', + 'packages/@lwc/wire-service', + 'packages/@lwc/style-compiler', +]); From df4fb255d3476e8aede9c7f04dd7105faf9c073b Mon Sep 17 00:00:00 2001 From: Matheus Cardoso Date: Sun, 21 Jul 2024 14:39:34 -0300 Subject: [PATCH 03/32] chore: migrate @lwc/errors to vitest --- packages/@lwc/errors/vitest.config.js | 11 +++++++++++ vitest.workspace.js | 1 + 2 files changed, 12 insertions(+) create mode 100644 packages/@lwc/errors/vitest.config.js diff --git a/packages/@lwc/errors/vitest.config.js b/packages/@lwc/errors/vitest.config.js new file mode 100644 index 0000000000..7cacba7c92 --- /dev/null +++ b/packages/@lwc/errors/vitest.config.js @@ -0,0 +1,11 @@ +import { mergeConfig, defineProject } from 'vitest/config'; +import sharedConfig from '../../../vitest.shared'; + +export default mergeConfig( + sharedConfig, + defineProject({ + test: { + name: 'lwc-errors', + }, + }) +); diff --git a/vitest.workspace.js b/vitest.workspace.js index 4f26c5b5f7..6285aacad6 100644 --- a/vitest.workspace.js +++ b/vitest.workspace.js @@ -4,4 +4,5 @@ export default defineWorkspace([ 'packages/@lwc/shared', 'packages/@lwc/wire-service', 'packages/@lwc/style-compiler', + 'packages/@lwc/errors', ]); From ba321293a203cdeedc287d112920bf6f5108955c Mon Sep 17 00:00:00 2001 From: Matheus Cardoso Date: Sun, 21 Jul 2024 14:45:35 -0300 Subject: [PATCH 04/32] chore: migrate @lwc/features to vitest --- .../features/src/__tests__/setFeatureFlag.spec.ts | 9 +++++---- packages/@lwc/features/vitest.config.js | 11 +++++++++++ vitest.workspace.js | 1 + 3 files changed, 17 insertions(+), 4 deletions(-) create mode 100644 packages/@lwc/features/vitest.config.js diff --git a/packages/@lwc/features/src/__tests__/setFeatureFlag.spec.ts b/packages/@lwc/features/src/__tests__/setFeatureFlag.spec.ts index 7fdfa94cea..23c4d11555 100644 --- a/packages/@lwc/features/src/__tests__/setFeatureFlag.spec.ts +++ b/packages/@lwc/features/src/__tests__/setFeatureFlag.spec.ts @@ -5,20 +5,21 @@ * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT */ +import { MockInstance, vi } from 'vitest'; import { lwcRuntimeFlags, setFeatureFlag } from '../index'; describe('setFeatureFlag', () => { ['development', 'production'].forEach((env) => { describe(`${env} mode`, () => { let originalNodeEnv: any; - let info: jest.SpyInstance; - let error: jest.SpyInstance; + let info: MockInstance; + let error: MockInstance; beforeEach(() => { originalNodeEnv = process.env.NODE_ENV; process.env.NODE_ENV = env; - info = jest.spyOn(console, 'info').mockImplementation(() => {}); - error = jest.spyOn(console, 'error').mockImplementation(() => {}); + info = vi.spyOn(console, 'info').mockImplementation(() => {}); + error = vi.spyOn(console, 'error').mockImplementation(() => {}); }); afterEach(() => { diff --git a/packages/@lwc/features/vitest.config.js b/packages/@lwc/features/vitest.config.js new file mode 100644 index 0000000000..609c71571d --- /dev/null +++ b/packages/@lwc/features/vitest.config.js @@ -0,0 +1,11 @@ +import { mergeConfig, defineProject } from 'vitest/config'; +import sharedConfig from '../../../vitest.shared'; + +export default mergeConfig( + sharedConfig, + defineProject({ + test: { + name: 'lwc-features', + }, + }) +); diff --git a/vitest.workspace.js b/vitest.workspace.js index 6285aacad6..534f1d6981 100644 --- a/vitest.workspace.js +++ b/vitest.workspace.js @@ -5,4 +5,5 @@ export default defineWorkspace([ 'packages/@lwc/wire-service', 'packages/@lwc/style-compiler', 'packages/@lwc/errors', + 'packages/@lwc/features', ]); From c547611a697ab0695903afa44a6e7a63a7bd60e5 Mon Sep 17 00:00:00 2001 From: Matheus Cardoso Date: Sun, 21 Jul 2024 14:51:04 -0300 Subject: [PATCH 05/32] chore: migrate @lwc/signals to vitest --- packages/@lwc/signals/src/__tests__/index.spec.ts | 13 +++++++------ packages/@lwc/signals/vitest.config.js | 11 +++++++++++ vitest.workspace.js | 1 + 3 files changed, 19 insertions(+), 6 deletions(-) create mode 100644 packages/@lwc/signals/vitest.config.js diff --git a/packages/@lwc/signals/src/__tests__/index.spec.ts b/packages/@lwc/signals/src/__tests__/index.spec.ts index a4d8d0ee6f..d528874883 100644 --- a/packages/@lwc/signals/src/__tests__/index.spec.ts +++ b/packages/@lwc/signals/src/__tests__/index.spec.ts @@ -5,6 +5,7 @@ * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT */ +import { vi } from 'vitest'; import { Signal } from './signal'; describe('signal protocol', () => { @@ -17,13 +18,13 @@ describe('signal protocol', () => { const s = new Signal(); expect('subscribe' in s).toBe(true); expect(typeof s.subscribe).toBe('function'); - const onUpdate = jest.fn(); + const onUpdate = vi.fn(); expect(() => s.subscribe(onUpdate)).not.toThrow(); }); it('should be able to notify subscribers', () => { const s = new Signal(); - const onUpdate = jest.fn(); + const onUpdate = vi.fn(); s.subscribe(onUpdate); s.value = 1; expect(onUpdate).toHaveBeenCalledTimes(1); @@ -31,15 +32,15 @@ describe('signal protocol', () => { it('subscribe should return an unsubscribe function', () => { const s = new Signal(); - const onUpdate = jest.fn(); + const onUpdate = vi.fn(); const unsubscribe = s.subscribe(onUpdate); expect(typeof unsubscribe).toBe('function'); }); it('should not notify once unsubscribed', () => { const s = new Signal(0); - const onUpdate1 = jest.fn(); - const onUpdate2 = jest.fn(); + const onUpdate1 = vi.fn(); + const onUpdate2 = vi.fn(); const unsubscribe1 = s.subscribe(onUpdate1); const unsubscribe2 = s.subscribe(onUpdate2); @@ -62,7 +63,7 @@ describe('signal protocol', () => { it('SignalBaseClass does not subscribe duplicate OnUpdate callback functions', () => { const s = new Signal(0); - const onUpdate = jest.fn(); + const onUpdate = vi.fn(); s.subscribe(onUpdate); s.subscribe(onUpdate); diff --git a/packages/@lwc/signals/vitest.config.js b/packages/@lwc/signals/vitest.config.js new file mode 100644 index 0000000000..bb920d4b4b --- /dev/null +++ b/packages/@lwc/signals/vitest.config.js @@ -0,0 +1,11 @@ +import { mergeConfig, defineProject } from 'vitest/config'; +import sharedConfig from '../../../vitest.shared'; + +export default mergeConfig( + sharedConfig, + defineProject({ + test: { + name: 'lwc-signals', + }, + }) +); diff --git a/vitest.workspace.js b/vitest.workspace.js index 534f1d6981..88374e84f9 100644 --- a/vitest.workspace.js +++ b/vitest.workspace.js @@ -6,4 +6,5 @@ export default defineWorkspace([ 'packages/@lwc/style-compiler', 'packages/@lwc/errors', 'packages/@lwc/features', + 'packages/@lwc/signals', ]); From 045acda67e8519506312a6e9a87e5e235b16fd0f Mon Sep 17 00:00:00 2001 From: Matheus Cardoso Date: Sun, 21 Jul 2024 17:58:39 -0300 Subject: [PATCH 06/32] chore: migrate @lwc/rollup-plugin to vitest --- packages/@lwc/rollup-plugin/vitest.config.js | 14 ++++++++++++++ vitest.workspace.js | 1 + 2 files changed, 15 insertions(+) create mode 100644 packages/@lwc/rollup-plugin/vitest.config.js diff --git a/packages/@lwc/rollup-plugin/vitest.config.js b/packages/@lwc/rollup-plugin/vitest.config.js new file mode 100644 index 0000000000..21065ecd97 --- /dev/null +++ b/packages/@lwc/rollup-plugin/vitest.config.js @@ -0,0 +1,14 @@ +import { defineProject, mergeConfig } from 'vitest/config'; +import baseConfig from '../../../vitest.shared'; + +export default mergeConfig( + baseConfig, + defineProject({ + test: { + name: 'rollup-plugin-lwc-compiler', + alias: { + '@lwc/shared': '@lwc/shared/src', + }, + }, + }) +); diff --git a/vitest.workspace.js b/vitest.workspace.js index 88374e84f9..9e8faf71fc 100644 --- a/vitest.workspace.js +++ b/vitest.workspace.js @@ -7,4 +7,5 @@ export default defineWorkspace([ 'packages/@lwc/errors', 'packages/@lwc/features', 'packages/@lwc/signals', + 'packages/@lwc/rollup-plugin', ]); From 32ce3fa3c5eb8a553c4a0646d894387b40fe3e61 Mon Sep 17 00:00:00 2001 From: Matheus Cardoso Date: Sun, 21 Jul 2024 18:03:04 -0300 Subject: [PATCH 07/32] chore: migrate @lwc/engine-core to vitest --- packages/@lwc/engine-core/vitest.config.js | 11 +++++++++++ vitest.workspace.js | 1 + 2 files changed, 12 insertions(+) create mode 100644 packages/@lwc/engine-core/vitest.config.js diff --git a/packages/@lwc/engine-core/vitest.config.js b/packages/@lwc/engine-core/vitest.config.js new file mode 100644 index 0000000000..2e1dedb379 --- /dev/null +++ b/packages/@lwc/engine-core/vitest.config.js @@ -0,0 +1,11 @@ +import { defineProject, mergeConfig } from 'vitest/config'; +import baseConfig from '../../../vitest.shared'; + +export default mergeConfig( + baseConfig, + defineProject({ + test: { + name: 'lwc-engine-core', + }, + }) +); diff --git a/vitest.workspace.js b/vitest.workspace.js index 9e8faf71fc..803ef42520 100644 --- a/vitest.workspace.js +++ b/vitest.workspace.js @@ -8,4 +8,5 @@ export default defineWorkspace([ 'packages/@lwc/features', 'packages/@lwc/signals', 'packages/@lwc/rollup-plugin', + 'packages/@lwc/engine-core', ]); From 9407101d78e230c1beb1b00f86a2285e121d4ff3 Mon Sep 17 00:00:00 2001 From: Matheus Cardoso Date: Sun, 21 Jul 2024 18:13:14 -0300 Subject: [PATCH 08/32] chore: migrate @lwc/engine-dom to vitest --- packages/@lwc/engine-dom/vitest.config.js | 12 ++++++++++++ vitest.workspace.js | 1 + 2 files changed, 13 insertions(+) create mode 100644 packages/@lwc/engine-dom/vitest.config.js diff --git a/packages/@lwc/engine-dom/vitest.config.js b/packages/@lwc/engine-dom/vitest.config.js new file mode 100644 index 0000000000..91a0928aa8 --- /dev/null +++ b/packages/@lwc/engine-dom/vitest.config.js @@ -0,0 +1,12 @@ +import { defineProject, mergeConfig } from 'vitest/config'; +import baseConfig from '../../../vitest.shared'; + +export default mergeConfig( + baseConfig, + defineProject({ + test: { + name: 'lwc-engine-dom', + environment: 'jsdom', + }, + }) +); diff --git a/vitest.workspace.js b/vitest.workspace.js index 803ef42520..f05bfb3453 100644 --- a/vitest.workspace.js +++ b/vitest.workspace.js @@ -9,4 +9,5 @@ export default defineWorkspace([ 'packages/@lwc/signals', 'packages/@lwc/rollup-plugin', 'packages/@lwc/engine-core', + 'packages/@lwc/engine-dom', ]); From a28c0a07236620b5dc6e1e8d69832bd29b3aac26 Mon Sep 17 00:00:00 2001 From: Matheus Cardoso Date: Sun, 21 Jul 2024 18:32:23 -0300 Subject: [PATCH 09/32] chore: migrate @lwc/compiler to vitest --- .../__snapshots__/transform-html.spec.ts.snap | 3 +++ .../transformers/__tests__/transform-html.spec.ts | 5 +++-- .../__tests__/transform-javascript.spec.ts | 3 ++- packages/@lwc/compiler/vitest.config.js | 14 ++++++++++++++ vitest.shared.js | 4 ++++ vitest.workspace.js | 1 + 6 files changed, 27 insertions(+), 3 deletions(-) create mode 100644 packages/@lwc/compiler/src/transformers/__tests__/__snapshots__/transform-html.spec.ts.snap create mode 100644 packages/@lwc/compiler/vitest.config.js diff --git a/packages/@lwc/compiler/src/transformers/__tests__/__snapshots__/transform-html.spec.ts.snap b/packages/@lwc/compiler/src/transformers/__tests__/__snapshots__/transform-html.spec.ts.snap new file mode 100644 index 0000000000..34baea89af --- /dev/null +++ b/packages/@lwc/compiler/src/transformers/__tests__/__snapshots__/transform-html.spec.ts.snap @@ -0,0 +1,3 @@ +// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html + +exports[`transformSync > dynamic components > should not allow dynamic components when experimentalDynamicDirective is set to false > "LWC1128: Invalid lwc:dynamic usage. The LWC dynamic directive must be enabled in order to use this feature." 1`] = `[Error: LWC1128: Invalid lwc:dynamic usage. The LWC dynamic directive must be enabled in order to use this feature.]`; diff --git a/packages/@lwc/compiler/src/transformers/__tests__/transform-html.spec.ts b/packages/@lwc/compiler/src/transformers/__tests__/transform-html.spec.ts index 1af4ae7ff3..482d1293c3 100644 --- a/packages/@lwc/compiler/src/transformers/__tests__/transform-html.spec.ts +++ b/packages/@lwc/compiler/src/transformers/__tests__/transform-html.spec.ts @@ -4,6 +4,7 @@ * SPDX-License-Identifier: MIT * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT */ +import { vi } from 'vitest'; import { APIVersion, noop } from '@lwc/shared'; import { TransformOptions } from '../../options'; import { transformSync } from '../transformer'; @@ -198,13 +199,13 @@ describe('transformSync', () => { experimentalDynamicDirective: false, ...TRANSFORMATION_OPTIONS, }) - ).toThrowErrorMatchingInlineSnapshot( + ).toThrowErrorMatchingSnapshot( '"LWC1128: Invalid lwc:dynamic usage. The LWC dynamic directive must be enabled in order to use this feature."' ); }); it('gathers metrics around use of the deprecated dynamic components', () => { - const incrementCounter = jest.fn(); + const incrementCounter = vi.fn(); const template = `