diff --git a/apps/studio/components/interfaces/ConnectSheet/Connect.utils.test.ts b/apps/studio/components/interfaces/ConnectSheet/Connect.utils.test.ts index cfd72b11957..62d04774378 100644 --- a/apps/studio/components/interfaces/ConnectSheet/Connect.utils.test.ts +++ b/apps/studio/components/interfaces/ConnectSheet/Connect.utils.test.ts @@ -2,7 +2,7 @@ import { describe, test, expect } from 'vitest' import { resolveFrameworkLibraryKey } from './Connect.utils' describe('Connect.utils:resolveFrameworkLibraryKey', () => { - test('should return null when framework is not provided', () => { + test('should return null if no framework provided', () => { const result = resolveFrameworkLibraryKey({ framework: undefined, frameworkVariant: undefined, @@ -11,7 +11,7 @@ describe('Connect.utils:resolveFrameworkLibraryKey', () => { expect(result).toBeNull() }) - test('should return null when framework is empty string', () => { + test('should return null for empty framework string', () => { const result = resolveFrameworkLibraryKey({ framework: '', frameworkVariant: undefined, @@ -20,75 +20,63 @@ describe('Connect.utils:resolveFrameworkLibraryKey', () => { expect(result).toBeNull() }) - test('should return library directly if provided', () => { + test('should return explicit library if provided', () => { const result = resolveFrameworkLibraryKey({ framework: 'nextjs', frameworkVariant: 'app', - library: 'supabasejs', + library: 'custom-library', }) - expect(result).toBe('supabasejs') + expect(result).toBe('custom-library') }) - test('should resolve library for nextjs with app variant', () => { + test('should resolve library for Next.js App Router', () => { const result = resolveFrameworkLibraryKey({ framework: 'nextjs', frameworkVariant: 'app', library: undefined, }) - // nextjs > app > supabasejs + // Next.js App Router has supabasejs as its library expect(result).toBe('supabasejs') }) - test('should resolve library for nextjs with pages variant', () => { + test('should resolve library for Next.js Pages Router', () => { const result = resolveFrameworkLibraryKey({ framework: 'nextjs', frameworkVariant: 'pages', library: undefined, }) - // nextjs > pages > supabasejs expect(result).toBe('supabasejs') }) - test('should resolve library for react with vite variant', () => { + test('should resolve library for React with Vite variant', () => { const result = resolveFrameworkLibraryKey({ framework: 'react', frameworkVariant: 'vite', library: undefined, }) - // react > vite > supabasejs expect(result).toBe('supabasejs') }) - test('should resolve library for react with create-react-app variant', () => { + test('should resolve library for React with Create React App variant', () => { const result = resolveFrameworkLibraryKey({ framework: 'react', frameworkVariant: 'create-react-app', library: undefined, }) - // react > create-react-app > supabasejs expect(result).toBe('supabasejs') }) - test('should resolve library for framework without variants (nuxt)', () => { - const result = resolveFrameworkLibraryKey({ - framework: 'nuxt', - frameworkVariant: undefined, - library: undefined, - }) - // nuxt has single child: supabasejs - expect(result).toBe('supabasejs') - }) - - test('should resolve library for framework without variants (remix)', () => { + test('should resolve library for framework without variants (Remix)', () => { const result = resolveFrameworkLibraryKey({ framework: 'remix', frameworkVariant: undefined, library: undefined, }) + // Remix has single child which is supabasejs expect(result).toBe('supabasejs') }) - test('should resolve library for mobile framework (flutter)', () => { + test('should resolve library for Flutter', () => { const result = resolveFrameworkLibraryKey({ framework: 'flutter', frameworkVariant: undefined, @@ -97,7 +85,7 @@ describe('Connect.utils:resolveFrameworkLibraryKey', () => { expect(result).toBe('supabaseflutter') }) - test('should resolve library for mobile framework (swift)', () => { + test('should resolve library for Swift', () => { const result = resolveFrameworkLibraryKey({ framework: 'swift', frameworkVariant: undefined, @@ -106,7 +94,7 @@ describe('Connect.utils:resolveFrameworkLibraryKey', () => { expect(result).toBe('supabaseswift') }) - test('should resolve library for mobile framework (android kotlin)', () => { + test('should resolve library for Android Kotlin', () => { const result = resolveFrameworkLibraryKey({ framework: 'androidkotlin', frameworkVariant: undefined, @@ -115,16 +103,7 @@ describe('Connect.utils:resolveFrameworkLibraryKey', () => { expect(result).toBe('supabasekt') }) - test('should resolve library for expo react native', () => { - const result = resolveFrameworkLibraryKey({ - framework: 'exporeactnative', - frameworkVariant: undefined, - library: undefined, - }) - expect(result).toBe('supabasejs') - }) - - test('should resolve library for flask (python)', () => { + test('should resolve library for Flask (Python)', () => { const result = resolveFrameworkLibraryKey({ framework: 'flask', frameworkVariant: undefined, @@ -133,6 +112,16 @@ describe('Connect.utils:resolveFrameworkLibraryKey', () => { expect(result).toBe('supabasepy') }) + test('should fallback to first variant library when variant not specified for multi-variant framework', () => { + const result = resolveFrameworkLibraryKey({ + framework: 'nextjs', + frameworkVariant: undefined, + library: undefined, + }) + // Should get library from first variant (app router) + expect(result).toBe('supabasejs') + }) + test('should return null for unknown framework', () => { const result = resolveFrameworkLibraryKey({ framework: 'unknown-framework', @@ -142,23 +131,93 @@ describe('Connect.utils:resolveFrameworkLibraryKey', () => { expect(result).toBeNull() }) - test('should fallback to first variant when frameworkVariant not specified for multi-variant framework', () => { + test('should handle SvelteKit framework', () => { const result = resolveFrameworkLibraryKey({ - framework: 'nextjs', + framework: 'sveltekit', frameworkVariant: undefined, library: undefined, }) - // Should use first variant (app) and its first library expect(result).toBe('supabasejs') }) - test('should handle invalid variant by falling back', () => { + test('should handle Nuxt framework', () => { const result = resolveFrameworkLibraryKey({ - framework: 'nextjs', - frameworkVariant: 'invalid-variant', + framework: 'nuxt', + frameworkVariant: undefined, + library: undefined, + }) + expect(result).toBe('supabasejs') + }) + + test('should handle Vue.js framework', () => { + const result = resolveFrameworkLibraryKey({ + framework: 'vuejs', + frameworkVariant: undefined, + library: undefined, + }) + expect(result).toBe('supabasejs') + }) + + test('should handle Solid.js framework', () => { + const result = resolveFrameworkLibraryKey({ + framework: 'solidjs', + frameworkVariant: undefined, + library: undefined, + }) + expect(result).toBe('supabasejs') + }) + + test('should handle Astro framework', () => { + const result = resolveFrameworkLibraryKey({ + framework: 'astro', + frameworkVariant: undefined, + library: undefined, + }) + expect(result).toBe('supabasejs') + }) + + test('should handle Expo React Native', () => { + const result = resolveFrameworkLibraryKey({ + framework: 'exporeactnative', + frameworkVariant: undefined, + library: undefined, + }) + expect(result).toBe('supabasejs') + }) + + test('should handle Ionic React', () => { + const result = resolveFrameworkLibraryKey({ + framework: 'ionicreact', + frameworkVariant: undefined, + library: undefined, + }) + expect(result).toBe('supabasejs') + }) + + test('should handle Ionic Angular', () => { + const result = resolveFrameworkLibraryKey({ + framework: 'ionicangular', + frameworkVariant: undefined, + library: undefined, + }) + expect(result).toBe('supabasejs') + }) + + test('should handle Refine framework', () => { + const result = resolveFrameworkLibraryKey({ + framework: 'refine', + frameworkVariant: undefined, + library: undefined, + }) + expect(result).toBe('supabasejs') + }) + + test('should handle TanStack Start framework', () => { + const result = resolveFrameworkLibraryKey({ + framework: 'tanstack', + frameworkVariant: undefined, library: undefined, }) - // Invalid variant should fallback to first child expect(result).toBe('supabasejs') }) }) diff --git a/apps/studio/package.json b/apps/studio/package.json index d3db90acbe4..34ce7623e11 100644 --- a/apps/studio/package.json +++ b/apps/studio/package.json @@ -193,6 +193,7 @@ "eslint-plugin-barrel-files": "^2.0.7", "graphql-ws": "5.14.1", "import-in-the-middle": "^2.0.0", + "jsdom": "^27.4.0", "jsdom-testing-mocks": "^1.13.1", "libpg-query": "17.6.0", "msw": "^2.3.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 1a9427438f9..7023816f5a8 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -771,7 +771,7 @@ importers: version: 4.3.2(supports-color@8.1.1)(typescript@5.9.3)(vite@7.3.1(@types/node@22.19.7)(jiti@2.6.1)(sass@1.97.2)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.2)) vitest: specifier: 'catalog:' - version: 3.2.4(@types/debug@4.1.12)(@types/node@22.19.7)(@vitest/ui@3.2.4)(jiti@2.6.1)(msw@2.12.7(@types/node@22.19.7)(typescript@5.9.3))(sass@1.97.2)(supports-color@8.1.1)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.2) + version: 3.2.4(@types/debug@4.1.12)(@types/node@22.19.7)(@vitest/ui@3.2.4)(jiti@2.6.1)(jsdom@27.4.0(@noble/hashes@1.8.0)(supports-color@8.1.1))(msw@2.12.7(@types/node@22.19.7)(typescript@5.9.3))(sass@1.97.2)(supports-color@8.1.1)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.2) apps/studio: dependencies: @@ -1306,7 +1306,7 @@ importers: version: 4.3.2(supports-color@8.1.1)(typescript@5.9.3)(vite@7.3.1(@types/node@22.19.7)(jiti@2.6.1)(sass@1.97.2)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.2)) vitest: specifier: 'catalog:' - version: 3.2.4(@types/debug@4.1.12)(@types/node@22.19.7)(@vitest/ui@3.2.4)(jiti@2.6.1)(msw@2.12.7(@types/node@22.19.7)(typescript@5.9.3))(sass@1.97.2)(supports-color@8.1.1)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.2) + version: 3.2.4(@types/debug@4.1.12)(@types/node@22.19.7)(@vitest/ui@3.2.4)(jiti@2.6.1)(jsdom@27.4.0(@noble/hashes@1.8.0)(supports-color@8.1.1))(msw@2.12.7(@types/node@22.19.7)(typescript@5.9.3))(sass@1.97.2)(supports-color@8.1.1)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.2) apps/ui-library: dependencies: @@ -2007,7 +2007,7 @@ importers: version: 7.3.1(@types/node@22.19.7)(jiti@2.6.1)(sass@1.97.2)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.2) vitest: specifier: 'catalog:' - version: 3.2.4(@types/debug@4.1.12)(@types/node@22.19.7)(@vitest/ui@3.2.4)(jiti@2.6.1)(msw@2.12.7(@types/node@22.19.7)(typescript@5.9.3))(sass@1.97.2)(supports-color@8.1.1)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.2) + version: 3.2.4(@types/debug@4.1.12)(@types/node@22.19.7)(@vitest/ui@3.2.4)(jiti@2.6.1)(jsdom@27.4.0(@noble/hashes@1.8.0)(supports-color@8.1.1))(msw@2.12.7(@types/node@22.19.7)(typescript@5.9.3))(sass@1.97.2)(supports-color@8.1.1)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.2) packages/api-types: devDependencies: @@ -2113,7 +2113,7 @@ importers: version: 5.9.3 vitest: specifier: 'catalog:' - version: 3.2.4(@types/debug@4.1.12)(@types/node@22.19.7)(@vitest/ui@3.2.4)(jiti@2.6.1)(msw@2.12.7(@types/node@22.19.7)(typescript@5.9.3))(sass@1.97.2)(supports-color@8.1.1)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.2) + version: 3.2.4(@types/debug@4.1.12)(@types/node@22.19.7)(@vitest/ui@3.2.4)(jiti@2.6.1)(jsdom@27.4.0(@noble/hashes@1.8.0)(supports-color@8.1.1))(msw@2.12.7(@types/node@22.19.7)(typescript@5.9.3))(sass@1.97.2)(supports-color@8.1.1)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.2) packages/config: dependencies: @@ -2248,7 +2248,7 @@ importers: version: 7.3.1(@types/node@25.0.9)(jiti@2.6.1)(sass@1.97.2)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.2) vitest: specifier: 'catalog:' - version: 3.2.4(@types/debug@4.1.12)(@types/node@25.0.9)(@vitest/ui@3.2.4)(jiti@2.6.1)(msw@2.12.7(@types/node@25.0.9)(typescript@5.9.3))(sass@1.97.2)(supports-color@8.1.1)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.2) + version: 3.2.4(@types/debug@4.1.12)(@types/node@25.0.9)(@vitest/ui@3.2.4)(jiti@2.6.1)(jsdom@27.4.0(@noble/hashes@1.8.0)(supports-color@8.1.1))(msw@2.12.7(@types/node@25.0.9)(typescript@5.9.3))(sass@1.97.2)(supports-color@8.1.1)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.2) packages/shared-data: devDependencies: @@ -2497,7 +2497,7 @@ importers: version: 7.3.1(@types/node@22.19.7)(jiti@2.6.1)(sass@1.97.2)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.2) vitest: specifier: 'catalog:' - version: 3.2.4(@types/debug@4.1.12)(@types/node@22.19.7)(@vitest/ui@3.2.4)(jiti@2.6.1)(msw@2.12.7(@types/node@22.19.7)(typescript@5.9.3))(sass@1.97.2)(supports-color@8.1.1)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.2) + version: 3.2.4(@types/debug@4.1.12)(@types/node@22.19.7)(@vitest/ui@3.2.4)(jiti@2.6.1)(jsdom@27.4.0(@noble/hashes@1.8.0)(supports-color@8.1.1))(msw@2.12.7(@types/node@22.19.7)(typescript@5.9.3))(sass@1.97.2)(supports-color@8.1.1)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.2) packages/ui-patterns: dependencies: @@ -2699,10 +2699,13 @@ importers: version: 7.3.1(@types/node@22.19.7)(jiti@2.6.1)(sass@1.97.2)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.2) vitest: specifier: 'catalog:' - version: 3.2.4(@types/debug@4.1.12)(@types/node@22.19.7)(@vitest/ui@3.2.4)(jiti@2.6.1)(msw@2.12.7(@types/node@22.19.7)(typescript@5.9.3))(sass@1.97.2)(supports-color@8.1.1)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.2) + version: 3.2.4(@types/debug@4.1.12)(@types/node@22.19.7)(@vitest/ui@3.2.4)(jiti@2.6.1)(jsdom@27.4.0(@noble/hashes@1.8.0)(supports-color@8.1.1))(msw@2.12.7(@types/node@22.19.7)(typescript@5.9.3))(sass@1.97.2)(supports-color@8.1.1)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.2) packages: + '@acemir/cssom@0.9.31': + resolution: {integrity: sha512-ZnR3GSaH+/vJ0YlHau21FjfLYjMpYVIzTD8M8vIEQvIGxeOXyXdzCI140rrCY862p/C/BbzWsjc1dgnM9mkoTA==} + '@adobe/css-tools@4.4.4': resolution: {integrity: sha512-Elp+iwUx5rN5+Y8xLt5/GRoG20WGoDCQ/1Fb+1LiGtvwbDavuSk0jhD/eZdckHAuzcDzccnkv+rEjyWfRx18gg==} @@ -2795,6 +2798,15 @@ packages: peerDependencies: graphql: '*' + '@asamuzakjp/css-color@4.1.1': + resolution: {integrity: sha512-B0Hv6G3gWGMn0xKJ0txEi/jM5iFpT3MfDxmhZFb4W047GvytCf1DHQ1D69W3zHI4yWe2aTZAA0JnbMZ7Xc8DuQ==} + + '@asamuzakjp/dom-selector@6.7.6': + resolution: {integrity: sha512-hBaJER6A9MpdG3WgdlOolHmbOYvSk46y7IQN/1+iqiCuUu6iWdQrs9DGKF8ocqsEqWujWf/V7b7vaDgiUmIvUg==} + + '@asamuzakjp/nwsapi@2.3.9': + resolution: {integrity: sha512-n8GuYSrI9bF7FFZ/SjhwevlHc8xaVlb/7HmHelnc/PZXBD2ZR49NnN9sMMuDdEGPeeRQ5d0hqlSlEpgCX3Wl0Q==} + '@aws-crypto/crc32@5.2.0': resolution: {integrity: sha512-nLbCWqQNgUiwwtFsen1AdzAtvuLRsQS8rYgMuxCrdKf9kOssamGLuPwyTY9wyYblNr9+1XM8v6zoDTPPSIeANg==} engines: {node: '>=16.0.0'} @@ -3294,6 +3306,38 @@ packages: '@effect-ts/otel-node': optional: true + '@csstools/color-helpers@5.1.0': + resolution: {integrity: sha512-S11EXWJyy0Mz5SYvRmY8nJYTFFd1LCNV+7cXyAgQtOOuzb4EsgfqDufL+9esx72/eLhsRdGZwaldu/h+E4t4BA==} + engines: {node: '>=18'} + + '@csstools/css-calc@2.1.4': + resolution: {integrity: sha512-3N8oaj+0juUw/1H3YwmDDJXCgTB1gKU6Hc/bB502u9zR0q2vd786XJH9QfrKIEgFlZmhZiq6epXl4rHqhzsIgQ==} + engines: {node: '>=18'} + peerDependencies: + '@csstools/css-parser-algorithms': ^3.0.5 + '@csstools/css-tokenizer': ^3.0.4 + + '@csstools/css-color-parser@3.1.0': + resolution: {integrity: sha512-nbtKwh3a6xNVIp/VRuXV64yTKnb1IjTAEEh3irzS+HkKjAOYLTGNb9pmVNntZ8iVBHcWDA2Dof0QtPgFI1BaTA==} + engines: {node: '>=18'} + peerDependencies: + '@csstools/css-parser-algorithms': ^3.0.5 + '@csstools/css-tokenizer': ^3.0.4 + + '@csstools/css-parser-algorithms@3.0.5': + resolution: {integrity: sha512-DaDeUkXZKjdGhgYaHNJTV9pV7Y9B3b644jCLs9Upc3VeNGg6LWARAT6O+Q+/COo+2gg/bM5rhpMAtf70WqfBdQ==} + engines: {node: '>=18'} + peerDependencies: + '@csstools/css-tokenizer': ^3.0.4 + + '@csstools/css-syntax-patches-for-csstree@1.0.25': + resolution: {integrity: sha512-g0Kw9W3vjx5BEBAF8c5Fm2NcB/Fs8jJXh85aXqwEXiL+tqtOut07TWgyaGzAAfTM+gKckrrncyeGEZPcaRgm2Q==} + engines: {node: '>=18'} + + '@csstools/css-tokenizer@3.0.4': + resolution: {integrity: sha512-Vd/9EVDiu6PPJt9yAh6roZP6El1xHrdvIVGjyBsHR0RYwNHgL7FJPyIIW4fANJNG6FtyZfvlRPpFI4ZM/lubvw==} + engines: {node: '>=18'} + '@ctrl/tinycolor@3.6.1': resolution: {integrity: sha512-SITSV6aIXsuVNV3f3O0f2n/cgyEDWoSqtZMYiAmcsYHydcKrOz3gUxB/iXd/Qf08+IZX4KpgNbvUdMBmWz+kcA==} engines: {node: '>=10'} @@ -3685,6 +3729,15 @@ packages: resolution: {integrity: sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@exodus/bytes@1.9.0': + resolution: {integrity: sha512-lagqsvnk09NKogQaN/XrtlWeUF8SRhT12odMvbTIIaVObqzwAogL6jhR4DAp0gPuKoM1AOVrKUshJpRdpMFrww==} + engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} + peerDependencies: + '@noble/hashes': ^1.8.0 || ^2.0.0 + peerDependenciesMeta: + '@noble/hashes': + optional: true + '@exodus/schemasafe@1.3.0': resolution: {integrity: sha512-5Aap/GaRupgNx/feGBwLLTVv8OQFfv3pq2lPRzPg9R+IOBnDgghTGW7l7EuVXOvg5cc/xSAlRW8rBrjIC3Nvqw==} @@ -9441,6 +9494,9 @@ packages: bezier-easing@2.1.0: resolution: {integrity: sha512-gbIqZ/eslnUFC1tjEvtz0sgx+xTK20wDnYMIA27VA04R7w6xxXQPZDbibjA9DTWZRA2CXtwHykkVzlCaAJAZig==} + bidi-js@1.0.3: + resolution: {integrity: sha512-RKshQI1R3YQ+n9YJz2QQ147P66ELpa1FQEg20Dk8oW9t2KgLbpDLLp9aGZ7y8WHSshDknG0bknqGw5/tyCs5tw==} + big-integer@1.6.52: resolution: {integrity: sha512-QxD8cf2eVqJOOz63z6JIN9BzvVs/dlySa5HGSBH5xtR8dPteIRQnBxxKqkNTiT6jbDTF6jAfrd4oMcND9RGbQg==} engines: {node: '>=0.6'} @@ -10235,6 +10291,10 @@ packages: resolution: {integrity: sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==} engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0, npm: '>=7.0.0'} + cssstyle@5.3.7: + resolution: {integrity: sha512-7D2EPVltRrsTkhpQmksIu+LxeWAIEk6wRDMJ1qljlv+CKHJM+cJLlfhWIzNA44eAsHXSNe3+vO6DW1yCYx8SuQ==} + engines: {node: '>=20'} + csstype@3.1.3: resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} @@ -10414,6 +10474,10 @@ packages: resolution: {integrity: sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==} engines: {node: '>= 12'} + data-urls@6.0.1: + resolution: {integrity: sha512-euIQENZg6x8mj3fO6o9+fOW8MimUI4PpD/fZBhJfeioZVy9TUpM4UY7KjQNVZFlqwJ0UdzRDzkycB997HEq1BQ==} + engines: {node: '>=20'} + data-view-buffer@1.0.2: resolution: {integrity: sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==} engines: {node: '>= 0.4'} @@ -10508,6 +10572,9 @@ packages: decimal.js-light@2.5.1: resolution: {integrity: sha512-qIMFpTMZmny+MMIitAB6D7iVPEorVw6YQRWkvarTkT4tBeSLLiHzcwj6q0MmYSFCiVpiqPJTJEYIrpcPzVEIvg==} + decimal.js@10.6.0: + resolution: {integrity: sha512-YpgQiITW3JXGntzdUmyUR1V812Hn8T1YVXhCu+wO3OpS4eU9l4YdD3qjyiKdV6mvV29zapkMeD390UVEf2lkUg==} + decko@1.2.0: resolution: {integrity: sha512-m8FnyHXV1QX+S1cl+KPFDIl6NMkxtKsy6+U/aYyjrOqWMuwAwYWu7ePqrsUHtDR5Y8Yk2pi/KIDSgF+vT4cPOQ==} @@ -12244,6 +12311,10 @@ packages: hosted-git-info@2.8.9: resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} + html-encoding-sniffer@6.0.0: + resolution: {integrity: sha512-CV9TW3Y3f8/wT0BRFc1/KAVQ3TUHiXmaAb6VW9vtiMFf7SLoMd1PdAc4W3KFOFETBJUb90KatHqlsZMWV+R9Gg==} + engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} + html-escaper@2.0.2: resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} @@ -12683,6 +12754,9 @@ packages: resolution: {integrity: sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==} engines: {node: '>=0.10.0'} + is-potential-custom-element-name@1.0.1: + resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==} + is-primitive@3.0.1: resolution: {integrity: sha512-GljRxhWvlCNRfZyORiH77FwdFwGcMO620o37EOYC0ORWdq+WYNVqW0w2Juzew4M+L81l6/QS3t5gkkihyRqv9w==} engines: {node: '>=0.10.0'} @@ -12957,6 +13031,15 @@ packages: resolution: {integrity: sha512-wLrulXiLpjmcUYOYGEvz4XARkrmdVpyxzdBl9IAMbQ+ib2/UhUTRCn49McdNfXLff2ysGBUms49ZKX0LR1Q0gg==} engines: {node: '>=14'} + jsdom@27.4.0: + resolution: {integrity: sha512-mjzqwWRD9Y1J1KUi7W97Gja1bwOOM5Ug0EZ6UDK3xS7j7mndrkwozHtSblfomlzyB4NepioNt+B2sOSzczVgtQ==} + engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} + peerDependencies: + canvas: ^3.0.0 + peerDependenciesMeta: + canvas: + optional: true + jsep@1.4.0: resolution: {integrity: sha512-B7qPcEVE3NVkmSJbaYxvv4cHkVW7DQsZz13pUMrfS8z8Q/BuShN+gcTXrUlPiGqM2/t/EEaI030bpxMqY8gMlw==} engines: {node: '>= 10.16.0'} @@ -14818,6 +14901,9 @@ packages: parse5@7.3.0: resolution: {integrity: sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==} + parse5@8.0.0: + resolution: {integrity: sha512-9m4m5GSgXjL4AjumKzq1Fgfp3Z8rsvjRNbnkVwfu2ImRqE5D0LnY2QfDen18FSY9C573YU5XxSapdHZTZ2WolA==} + parseurl@1.3.3: resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} engines: {node: '>= 0.8'} @@ -16395,6 +16481,10 @@ packages: resolution: {integrity: sha512-1n3r/tGXO6b6VXMdFT54SHzT9ytu9yr7TaELowdYpMqY/Ao7EnlQGmAQ1+RatX7Tkkdm6hONI2owqNx2aZj5Sw==} engines: {node: '>=11.0.0'} + saxes@6.0.0: + resolution: {integrity: sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==} + engines: {node: '>=v12.22.7'} + scheduler@0.23.2: resolution: {integrity: sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==} @@ -17112,6 +17202,9 @@ packages: peerDependencies: react: ^16.11.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + symbol-tree@3.2.4: + resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} + sync-fetch@0.6.0: resolution: {integrity: sha512-IELLEvzHuCfc1uTsshPK58ViSdNqXxlml1U+fmwJIKLYKOr/rAtBrorE2RYm5IHaMpDNlmC0fr1LAvdXvyheEQ==} engines: {node: '>=18'} @@ -17351,6 +17444,10 @@ packages: tr46@0.0.3: resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} + tr46@6.0.0: + resolution: {integrity: sha512-bLVMLPtstlZ4iMQHpFHTR7GAGj2jxi8Dg0s2h2MafAE4uSWF98FC/3MomU51iQAMf8/qDUbKWf5GxuvvVcXEhw==} + engines: {node: '>=20'} + tree-dump@1.1.0: resolution: {integrity: sha512-rMuvhU4MCDbcbnleZTFezWsaZXRFemSqAM+7jPnzUl1fo9w3YEKOxAeui0fz3OI4EU4hf23iyA7uQRVko+UaBA==} engines: {node: '>=10.0'} @@ -18239,6 +18336,10 @@ packages: w3c-keyname@2.2.8: resolution: {integrity: sha512-dpojBhNsCNN7T82Tm7k26A6G9ML3NkhDsnw9n/eoxSRlVBB4CEtIQ/KTCLI2Fwf3ataSXRhYFkQi3SlnFwPvPQ==} + w3c-xmlserializer@5.0.0: + resolution: {integrity: sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==} + engines: {node: '>=18'} + warning@4.0.3: resolution: {integrity: sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==} @@ -18266,6 +18367,10 @@ packages: webidl-conversions@3.0.1: resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} + webidl-conversions@8.0.1: + resolution: {integrity: sha512-BMhLD/Sw+GbJC21C/UgyaZX41nPt8bUTg+jWyDeg7e7YN4xOM05YPSIXceACnXVtqyEw/LMClUQMtMZ+PGGpqQ==} + engines: {node: '>=20'} + webpack-bundle-analyzer@4.10.1: resolution: {integrity: sha512-s3P7pgexgT/HTUSYgxJyn28A+99mmLq4HsJepMPzu0R8ImJc52QNqaFYW1Z2z2uIb1/J3eYgaAWVpaC+v/1aAQ==} engines: {node: '>= 10.13.0'} @@ -18300,6 +18405,14 @@ packages: resolution: {integrity: sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==} engines: {node: '>=18'} + whatwg-mimetype@5.0.0: + resolution: {integrity: sha512-sXcNcHOC51uPGF0P/D4NVtrkjSU2fNsm9iog4ZvZJsL3rjoDAzXZhkm2MWt1y+PUdggKAYVoMAIYcs78wJ51Cw==} + engines: {node: '>=20'} + + whatwg-url@15.1.0: + resolution: {integrity: sha512-2ytDk0kiEj/yu90JOAp44PVPUkO9+jVhyf+SybKlRHSDlvOOZhdPIrr7xTH64l4WixO2cP+wQIcgujkGBPPz6g==} + engines: {node: '>=20'} + whatwg-url@5.0.0: resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} @@ -18415,6 +18528,10 @@ packages: xml-lexer@0.2.2: resolution: {integrity: sha512-G0i98epIwiUEiKmMcavmVdhtymW+pCAohMRgybyIME9ygfVu8QheIi+YoQh3ngiThsT0SQzJT4R0sKDEv8Ou0w==} + xml-name-validator@5.0.0: + resolution: {integrity: sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg==} + engines: {node: '>=18'} + xml-reader@2.4.3: resolution: {integrity: sha512-xWldrIxjeAMAu6+HSf9t50ot1uL5M+BtOidRCWHXIeewvSeIpscWCsp4Zxjk8kHHhdqFBrfK8U0EJeCcnyQ/gA==} @@ -18422,6 +18539,9 @@ packages: resolution: {integrity: sha512-bx8Q1STctnNaaDymWnkfQLKofs0mGNN7rLLapJlGuV3VlvegD7Ls4ggMjE3aUSWItCCzU0PEv45lI87iSigiCA==} engines: {node: '>=20.0'} + xmlchars@2.2.0: + resolution: {integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==} + xss@1.0.15: resolution: {integrity: sha512-FVdlVVC67WOIPvfOwhoMETV72f6GbW7aOabBC3WxN/oUdoEMDyLz4OgRv5/gck2ZeNqEQu+Tb0kloovXOfpYVg==} engines: {node: '>= 0.10.0'} @@ -18557,6 +18677,9 @@ packages: snapshots: + '@acemir/cssom@0.9.31': + optional: true + '@adobe/css-tools@4.4.4': {} '@ai-sdk/amazon-bedrock@3.0.73(zod@3.25.76)': @@ -18674,6 +18797,27 @@ snapshots: transitivePeerDependencies: - encoding + '@asamuzakjp/css-color@4.1.1': + dependencies: + '@csstools/css-calc': 2.1.4(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + '@csstools/css-color-parser': 3.1.0(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 + lru-cache: 11.2.4 + optional: true + + '@asamuzakjp/dom-selector@6.7.6': + dependencies: + '@asamuzakjp/nwsapi': 2.3.9 + bidi-js: 1.0.3 + css-tree: 3.1.0 + is-potential-custom-element-name: 1.0.1 + lru-cache: 11.2.4 + optional: true + + '@asamuzakjp/nwsapi@2.3.9': + optional: true + '@aws-crypto/crc32@5.2.0': dependencies: '@aws-crypto/util': 5.2.0 @@ -19804,6 +19948,34 @@ snapshots: ts-pattern: 5.9.0 type-fest: 4.41.0 + '@csstools/color-helpers@5.1.0': + optional: true + + '@csstools/css-calc@2.1.4(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4)': + dependencies: + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 + optional: true + + '@csstools/css-color-parser@3.1.0(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4)': + dependencies: + '@csstools/color-helpers': 5.1.0 + '@csstools/css-calc': 2.1.4(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 + optional: true + + '@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4)': + dependencies: + '@csstools/css-tokenizer': 3.0.4 + optional: true + + '@csstools/css-syntax-patches-for-csstree@1.0.25': + optional: true + + '@csstools/css-tokenizer@3.0.4': + optional: true + '@ctrl/tinycolor@3.6.1': {} '@dagrejs/dagre@1.1.8': @@ -20178,6 +20350,11 @@ snapshots: '@eslint/core': 0.17.0 levn: 0.4.1 + '@exodus/bytes@1.9.0(@noble/hashes@1.8.0)': + optionalDependencies: + '@noble/hashes': 1.8.0 + optional: true + '@exodus/schemasafe@1.3.0': {} '@faceless-ui/modal@3.0.0-beta.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': @@ -26569,7 +26746,7 @@ snapshots: std-env: 3.10.0 test-exclude: 7.0.1 tinyrainbow: 2.0.0 - vitest: 3.2.4(@types/debug@4.1.12)(@types/node@22.19.7)(@vitest/ui@3.2.4)(jiti@2.6.1)(msw@2.12.7(@types/node@22.19.7)(typescript@5.9.3))(sass@1.97.2)(supports-color@8.1.1)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.2) + vitest: 3.2.4(@types/debug@4.1.12)(@types/node@22.19.7)(@vitest/ui@3.2.4)(jiti@2.6.1)(jsdom@27.4.0(@noble/hashes@1.8.0)(supports-color@8.1.1))(msw@2.12.7(@types/node@22.19.7)(typescript@5.9.3))(sass@1.97.2)(supports-color@8.1.1)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.2) transitivePeerDependencies: - supports-color @@ -26628,7 +26805,7 @@ snapshots: sirv: 3.0.2 tinyglobby: 0.2.15 tinyrainbow: 2.0.0 - vitest: 3.2.4(@types/debug@4.1.12)(@types/node@22.19.7)(@vitest/ui@3.2.4)(jiti@2.6.1)(msw@2.12.7(@types/node@22.19.7)(typescript@5.9.3))(sass@1.97.2)(supports-color@8.1.1)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.2) + vitest: 3.2.4(@types/debug@4.1.12)(@types/node@22.19.7)(@vitest/ui@3.2.4)(jiti@2.6.1)(jsdom@27.4.0(@noble/hashes@1.8.0)(supports-color@8.1.1))(msw@2.12.7(@types/node@22.19.7)(typescript@5.9.3))(sass@1.97.2)(supports-color@8.1.1)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.2) '@vitest/utils@3.2.4': dependencies: @@ -27316,6 +27493,11 @@ snapshots: bezier-easing@2.1.0: {} + bidi-js@1.0.3: + dependencies: + require-from-string: 2.0.2 + optional: true + big-integer@1.6.52: {} big.js@5.2.2: {} @@ -28256,6 +28438,14 @@ snapshots: dependencies: css-tree: 2.2.1 + cssstyle@5.3.7: + dependencies: + '@asamuzakjp/css-color': 4.1.1 + '@csstools/css-syntax-patches-for-csstree': 1.0.25 + css-tree: 3.1.0 + lru-cache: 11.2.4 + optional: true + csstype@3.1.3: {} csstype@3.2.3: {} @@ -28457,6 +28647,12 @@ snapshots: data-uri-to-buffer@4.0.1: {} + data-urls@6.0.1: + dependencies: + whatwg-mimetype: 5.0.0 + whatwg-url: 15.1.0 + optional: true + data-view-buffer@1.0.2: dependencies: call-bound: 1.0.4 @@ -28528,6 +28724,9 @@ snapshots: decimal.js-light@2.5.1: {} + decimal.js@10.6.0: + optional: true + decko@1.2.0: {} decode-named-character-reference@1.2.0: @@ -30571,6 +30770,13 @@ snapshots: hosted-git-info@2.8.9: {} + html-encoding-sniffer@6.0.0(@noble/hashes@1.8.0): + dependencies: + '@exodus/bytes': 1.9.0(@noble/hashes@1.8.0) + transitivePeerDependencies: + - '@noble/hashes' + optional: true + html-escaper@2.0.2: {} html-to-image@1.11.13: {} @@ -30979,6 +31185,9 @@ snapshots: is-plain-object@5.0.0: {} + is-potential-custom-element-name@1.0.1: + optional: true + is-primitive@3.0.1: {} is-promise@4.0.0: {} @@ -31228,6 +31437,35 @@ snapshots: bezier-easing: 2.1.0 css-mediaquery: 0.1.2 + jsdom@27.4.0(@noble/hashes@1.8.0)(supports-color@8.1.1): + dependencies: + '@acemir/cssom': 0.9.31 + '@asamuzakjp/dom-selector': 6.7.6 + '@exodus/bytes': 1.9.0(@noble/hashes@1.8.0) + cssstyle: 5.3.7 + data-urls: 6.0.1 + decimal.js: 10.6.0 + html-encoding-sniffer: 6.0.0(@noble/hashes@1.8.0) + http-proxy-agent: 7.0.2(supports-color@8.1.1) + https-proxy-agent: 7.0.6(supports-color@8.1.1) + is-potential-custom-element-name: 1.0.1 + parse5: 8.0.0 + saxes: 6.0.0 + symbol-tree: 3.2.4 + tough-cookie: 6.0.0 + w3c-xmlserializer: 5.0.0 + webidl-conversions: 8.0.1 + whatwg-mimetype: 4.0.0 + whatwg-url: 15.1.0 + ws: 8.19.0 + xml-name-validator: 5.0.0 + transitivePeerDependencies: + - '@noble/hashes' + - bufferutil + - supports-color + - utf-8-validate + optional: true + jsep@1.4.0: {} jsesc@3.0.2: {} @@ -34072,6 +34310,11 @@ snapshots: dependencies: entities: 6.0.1 + parse5@8.0.0: + dependencies: + entities: 6.0.1 + optional: true + parseurl@1.3.3: {} pascal-case@3.1.2: @@ -35972,6 +36215,11 @@ snapshots: sax@1.4.4: {} + saxes@6.0.0: + dependencies: + xmlchars: 2.2.0 + optional: true + scheduler@0.23.2: dependencies: loose-envify: 1.4.0 @@ -36918,6 +37166,9 @@ snapshots: react: 18.3.1 use-sync-external-store: 1.6.0(react@18.3.1) + symbol-tree@3.2.4: + optional: true + sync-fetch@0.6.0: dependencies: node-fetch: 3.3.2 @@ -37193,6 +37444,11 @@ snapshots: tr46@0.0.3: {} + tr46@6.0.0: + dependencies: + punycode: 2.3.1 + optional: true + tree-dump@1.1.0(tslib@2.8.1): dependencies: tslib: 2.8.1 @@ -38088,7 +38344,7 @@ snapshots: optionalDependencies: vite: 7.3.1(@types/node@25.0.9)(jiti@2.6.1)(sass@1.97.2)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.2) - vitest@3.2.4(@types/debug@4.1.12)(@types/node@22.19.7)(@vitest/ui@3.2.4)(jiti@2.6.1)(msw@2.12.7(@types/node@22.19.7)(typescript@5.9.3))(sass@1.97.2)(supports-color@8.1.1)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.2): + vitest@3.2.4(@types/debug@4.1.12)(@types/node@22.19.7)(@vitest/ui@3.2.4)(jiti@2.6.1)(jsdom@27.4.0(@noble/hashes@1.8.0)(supports-color@8.1.1))(msw@2.12.7(@types/node@22.19.7)(typescript@5.9.3))(sass@1.97.2)(supports-color@8.1.1)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.2): dependencies: '@types/chai': 5.2.3 '@vitest/expect': 3.2.4 @@ -38117,6 +38373,7 @@ snapshots: '@types/debug': 4.1.12 '@types/node': 22.19.7 '@vitest/ui': 3.2.4(vitest@3.2.4) + jsdom: 27.4.0(@noble/hashes@1.8.0)(supports-color@8.1.1) transitivePeerDependencies: - jiti - less @@ -38131,7 +38388,7 @@ snapshots: - tsx - yaml - vitest@3.2.4(@types/debug@4.1.12)(@types/node@25.0.9)(@vitest/ui@3.2.4)(jiti@2.6.1)(msw@2.12.7(@types/node@25.0.9)(typescript@5.9.3))(sass@1.97.2)(supports-color@8.1.1)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.2): + vitest@3.2.4(@types/debug@4.1.12)(@types/node@25.0.9)(@vitest/ui@3.2.4)(jiti@2.6.1)(jsdom@27.4.0(@noble/hashes@1.8.0)(supports-color@8.1.1))(msw@2.12.7(@types/node@25.0.9)(typescript@5.9.3))(sass@1.97.2)(supports-color@8.1.1)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.2): dependencies: '@types/chai': 5.2.3 '@vitest/expect': 3.2.4 @@ -38160,6 +38417,7 @@ snapshots: '@types/debug': 4.1.12 '@types/node': 25.0.9 '@vitest/ui': 3.2.4(vitest@3.2.4) + jsdom: 27.4.0(@noble/hashes@1.8.0)(supports-color@8.1.1) transitivePeerDependencies: - jiti - less @@ -38216,6 +38474,11 @@ snapshots: w3c-keyname@2.2.8: {} + w3c-xmlserializer@5.0.0: + dependencies: + xml-name-validator: 5.0.0 + optional: true + warning@4.0.3: dependencies: loose-envify: 1.4.0 @@ -38239,6 +38502,9 @@ snapshots: webidl-conversions@3.0.1: {} + webidl-conversions@8.0.1: + optional: true + webpack-bundle-analyzer@4.10.1: dependencies: '@discoveryjs/json-ext': 0.5.7 @@ -38335,6 +38601,15 @@ snapshots: whatwg-mimetype@4.0.0: {} + whatwg-mimetype@5.0.0: + optional: true + + whatwg-url@15.1.0: + dependencies: + tr46: 6.0.0 + webidl-conversions: 8.0.1 + optional: true + whatwg-url@5.0.0: dependencies: tr46: 0.0.3 @@ -38462,6 +38737,9 @@ snapshots: dependencies: eventemitter3: 2.0.3 + xml-name-validator@5.0.0: + optional: true + xml-reader@2.4.3: dependencies: eventemitter3: 2.0.3 @@ -38474,6 +38752,9 @@ snapshots: '@oozcitak/util': 10.0.0 js-yaml: 4.1.1 + xmlchars@2.2.0: + optional: true + xss@1.0.15: dependencies: commander: 2.20.3