diff --git a/packages/lucide-angular/scripts/exportTemplate.mts b/packages/lucide-angular/scripts/exportTemplate.mts index 09e81d0ce..76c6ab8d8 100644 --- a/packages/lucide-angular/scripts/exportTemplate.mts +++ b/packages/lucide-angular/scripts/exportTemplate.mts @@ -13,22 +13,24 @@ export default defineExportTemplate(async ({ }) => { const svgContents = await getSvg(); const svgBase64 = base64SVG(svgContents); - const angularComponentName = `Lucide${componentName}Component`; - const selectors = [`svg[lucide-${iconName}]`]; - const aliasExports: {[aliasComponentName: string]: boolean} = {}; + const angularComponentName = `Lucide${componentName}`; + const selectors = [`svg[lucide${toPascalCase(iconName)}]`]; + const aliasComponentNames: string[] = []; for (const alias of aliases) { const aliasName = typeof alias === 'string' ? alias : alias.name; - const aliasComponentName = `Lucide${toPascalCase(aliasName)}Component`; - const aliasSelector = `svg[lucide-${aliasName}]`; - selectors.push(aliasSelector); - if (aliasComponentName !== angularComponentName && !(aliasComponentName in aliasExports)) { - aliasExports[aliasComponentName] = true; + const aliasComponentName = `Lucide${toPascalCase(aliasName)}`; + const aliasSelector = `svg[lucide${toPascalCase(aliasName)}]`; + if (!selectors.includes(aliasSelector)) { + selectors.push(aliasSelector); + } + if (aliasComponentName !== angularComponentName && !aliasComponentNames.includes(aliasComponentName)) { + aliasComponentNames.push(aliasComponentName); } } return `\ import { LucideIconData } from './types'; -import { LucideAngularComponent } from '../lib/lucide-angular.component'; +import { LucideIcon } from '../lib/lucide-icon.component'; import { Component } from '@angular/core'; /** @@ -46,12 +48,18 @@ import { Component } from '@angular/core'; template: '', standalone: true, }) -export class ${angularComponentName} extends LucideAngularComponent { - override icon = ${JSON.stringify(children)} as LucideIconData; - override name = '${iconName}'; +export class ${angularComponentName} extends LucideIcon { + static iconData: LucideIconData = ${JSON.stringify(children)}; + static iconName = '${iconName}'; + override get icon() { + return ${angularComponentName}.iconData; + } + override get name() { + return ${angularComponentName}.iconName; + } } -${Object.entries(aliasExports).map(([aliasComponentName]) => { +${aliasComponentNames.map(([aliasComponentName]) => { return ` /** * @deprecated diff --git a/packages/lucide-angular/src/lib/lucide-angular.component.spec.ts b/packages/lucide-angular/src/lib/lucide-icon.component.spec.ts similarity index 95% rename from packages/lucide-angular/src/lib/lucide-angular.component.spec.ts rename to packages/lucide-angular/src/lib/lucide-icon.component.spec.ts index 8e01f6497..a1b414631 100644 --- a/packages/lucide-angular/src/lib/lucide-angular.component.spec.ts +++ b/packages/lucide-angular/src/lib/lucide-icon.component.spec.ts @@ -1,6 +1,6 @@ import { Component } from '@angular/core'; import { ComponentFixture, TestBed } from '@angular/core/testing'; -import { formatFixed, LucideAngularComponent } from './lucide-angular.component'; +import { formatFixed, LucideIcon } from './lucide-icon.component'; import defaultAttributes from '../icons/constants/default-attributes'; import { LucideIconData } from '../icons/types'; @@ -12,7 +12,7 @@ describe('LucideAngularComponent', () => { const testIcon: LucideIconData = [['polyline', { points: '1 1 22 22' }]]; beforeEach(async () => { await TestBed.configureTestingModule({ - declarations: [LucideAngularComponent, TestHostComponent], + declarations: [LucideIcon, TestHostComponent], imports: [], }).compileComponents(); testHostFixture = TestBed.createComponent(TestHostComponent); diff --git a/packages/lucide-angular/src/lib/lucide-angular.component.ts b/packages/lucide-angular/src/lib/lucide-icon.component.ts similarity index 84% rename from packages/lucide-angular/src/lib/lucide-angular.component.ts rename to packages/lucide-angular/src/lib/lucide-icon.component.ts index 5c41354c7..4f940e17b 100644 --- a/packages/lucide-angular/src/lib/lucide-angular.component.ts +++ b/packages/lucide-angular/src/lib/lucide-icon.component.ts @@ -8,6 +8,7 @@ import { OnInit, Renderer2, SimpleChange, + Type, } from '@angular/core'; import { LucideIconData } from '../icons/types'; import defaultAttributes from '../icons/constants/default-attributes'; @@ -34,16 +35,41 @@ export function formatFixed(number: number, decimals = 3): string { return parseFloat(number.toFixed(decimals)).toString(10); } +export type LucideIconComponentType = Type & { iconData: LucideIconData; name: string }; + +function isLucideIconComponent(icon: unknown): icon is LucideIconComponentType { + return ( + icon instanceof Type && + 'iconData' in icon && + Array.isArray(icon.iconData) && + 'iconName' in icon && + typeof icon.iconName === 'string' + ); +} + @Component({ // eslint-disable-next-line @angular-eslint/component-selector selector: 'svg[lucideIcon]', template: '', standalone: true, }) -export class LucideAngularComponent implements OnInit, OnChanges { +// eslint-disable-next-line @angular-eslint/component-class-suffix +export class LucideIcon implements OnInit, OnChanges { @Input() class?: string; - @Input() name?: string; - @Input('lucideIcon') icon?: LucideIconData; + _name?: string; + @Input() set name(name: string | undefined) { + this._name = name; + } + get name() { + return this._name; + } + _icon?: LucideIconData | LucideIconComponentType | null; + @Input('lucideIcon') set icon(icon: LucideIconData | LucideIconComponentType | null | undefined) { + this._icon = icon; + } + get icon() { + return this._icon; + } @Input() color?: string; @Input() absoluteStrokeWidth = false; defaultSize: number; @@ -55,7 +81,6 @@ export class LucideAngularComponent implements OnInit, OnChanges { @Inject(LucideIconConfig) protected iconConfig: LucideIconConfig ) { this.defaultSize = defaultAttributes.height; - console.log(this.name, this.icon); } _size?: number; @@ -113,7 +138,7 @@ export class LucideAngularComponent implements OnInit, OnChanges { this.absoluteStrokeWidth = this.absoluteStrokeWidth ?? this.iconConfig.absoluteStrokeWidth; console.log('Hello, my name is ', this.name, ' my icon is ', this.icon); if (this.icon) { - this.replaceElement(this.icon); + this.replaceElement(isLucideIconComponent(this.icon) ? this.icon.iconData : this.icon); } } diff --git a/packages/lucide-angular/src/public-api.ts b/packages/lucide-angular/src/public-api.ts index ceb2b5e4d..69a020e65 100644 --- a/packages/lucide-angular/src/public-api.ts +++ b/packages/lucide-angular/src/public-api.ts @@ -1,6 +1,6 @@ import * as icons from './icons/lucide-icons'; -export * from './lib/lucide-angular.component'; +export * from './lib/lucide-icon.component'; export * from './lib/lucide-icon.config'; export * from './icons/lucide-icons'; export * from './icons/types'; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 29e44989b..b7547451d 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -385,39 +385,6 @@ importers: version: 0.11.8 publishDirectory: dist - packages/lucide-icons: - devDependencies: - '@lucide/build-icons': - specifier: workspace:* - version: link:../../tools/build-icons - '@lucide/rollup-plugins': - specifier: workspace:* - version: link:../../tools/rollup-plugins - '@rollup/plugin-replace': - specifier: ^6.0.1 - version: 6.0.3(rollup@4.53.3) - '@testing-library/jest-dom': - specifier: ^6.1.6 - version: 6.9.1 - jest-serializer-html: - specifier: ^7.1.0 - version: 7.1.0 - rollup: - specifier: ^4.22.4 - version: 4.53.3 - rollup-plugin-dts: - specifier: ^6.1.0 - version: 6.2.3(rollup@4.53.3)(typescript@4.9.5) - typescript: - specifier: ^4.9.3 - version: 4.9.5 - vite: - specifier: 5.4.14 - version: 5.4.14(@types/node@24.10.1)(less@4.2.0)(sass@1.77.8)(stylus@0.56.0)(terser@5.44.1) - vitest: - specifier: ^1.1.1 - version: 1.6.1(@types/node@24.10.1)(jsdom@20.0.3)(less@4.2.0)(sass@1.77.8)(stylus@0.56.0)(terser@5.44.1) - packages/lucide-preact: devDependencies: '@lucide/build-icons': @@ -5470,9 +5437,6 @@ packages: vite: ^5.0.0 || ^6.0.0 || ^7.0.0 vue: ^3.2.25 - '@vitest/expect@1.6.1': - resolution: {integrity: sha512-jXL+9+ZNIJKruofqXuuTClf44eSpcHlgj3CiuNihUF3Ioujtmc0zIa3UJOW5RjDK1YLBJZnWBlPuqhYycLioog==} - '@vitest/expect@4.0.12': resolution: {integrity: sha512-is+g0w8V3/ZhRNrRizrJNr8PFQKwYmctWlU4qg8zy5r9aIV5w8IxXLlfbbxJCwSpsVl2PXPTm2/zruqTqz3QSg==} @@ -5490,27 +5454,15 @@ packages: '@vitest/pretty-format@4.0.12': resolution: {integrity: sha512-R7nMAcnienG17MvRN8TPMJiCG8rrZJblV9mhT7oMFdBXvS0x+QD6S1G4DxFusR2E0QIS73f7DqSR1n87rrmE+g==} - '@vitest/runner@1.6.1': - resolution: {integrity: sha512-3nSnYXkVkf3mXFfE7vVyPmi3Sazhb/2cfZGGs0JRzFsPFvAMBEcrweV1V1GsrstdXeKCTXlJbvnQwGWgEIHmOA==} - '@vitest/runner@4.0.12': resolution: {integrity: sha512-hDlCIJWuwlcLumfukPsNfPDOJokTv79hnOlf11V+n7E14rHNPz0Sp/BO6h8sh9qw4/UjZiKyYpVxK2ZNi+3ceQ==} - '@vitest/snapshot@1.6.1': - resolution: {integrity: sha512-WvidQuWAzU2p95u8GAKlRMqMyN1yOJkGHnx3M1PL9Raf7AQ1kwLKg04ADlCa3+OXUZE7BceOhVZiuWAbzCKcUQ==} - '@vitest/snapshot@4.0.12': resolution: {integrity: sha512-2jz9zAuBDUSbnfyixnyOd1S2YDBrZO23rt1bicAb6MA/ya5rHdKFRikPIDpBj/Dwvh6cbImDmudegnDAkHvmRQ==} - '@vitest/spy@1.6.1': - resolution: {integrity: sha512-MGcMmpGkZebsMZhbQKkAf9CX5zGvjkBTqf8Zx3ApYWXr3wG+QvEu2eXWfnIIWYSJExIp4V9FCKDEeygzkYrXMw==} - '@vitest/spy@4.0.12': resolution: {integrity: sha512-GZjI9PPhiOYNX8Nsyqdw7JQB+u0BptL5fSnXiottAUBHlcMzgADV58A7SLTXXQwcN1yZ6gfd1DH+2bqjuUlCzw==} - '@vitest/utils@1.6.1': - resolution: {integrity: sha512-jOrrUvXM4Av9ZWiG1EajNto0u96kWAhJ1LmPmJhXXQx/32MecEKd10pOLYgS2BQx1TgkGhloPU1ArDW2vvaY6g==} - '@vitest/utils@4.0.12': resolution: {integrity: sha512-DVS/TLkLdvGvj1avRy0LSmKfrcI9MNFvNGN6ECjTUHWJdlcgPDOXhjMis5Dh7rBH62nAmSXnkPbE+DZ5YD75Rw==} @@ -5959,9 +5911,6 @@ packages: asap@2.0.6: resolution: {integrity: sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==} - assertion-error@1.1.0: - resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==} - ast-types@0.15.2: resolution: {integrity: sha512-c27loCv9QkZinsa5ProX751khO9DJl/AcB5c2KNtA6NRvHKS0PgLfcftz72KVq504vB0Gku5s2kUZzDBvQWvHg==} engines: {node: '>=4'} @@ -6239,10 +6188,6 @@ packages: magicast: optional: true - cac@6.7.14: - resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} - engines: {node: '>=8'} - cacache@18.0.4: resolution: {integrity: sha512-B+L5iIa9mgcjLbliir2th36yEwPftrzteHYujzsx3dFP/31GCHcIeS8f5MGd80odLOjaOvSpU3EEAmRQptkxLQ==} engines: {node: ^16.14.0 || >=18.0.0} @@ -6296,10 +6241,6 @@ packages: ccount@2.0.1: resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} - chai@4.5.0: - resolution: {integrity: sha512-RITGBfijLkBddZvnn8jdqoTypxvqbOLYQkGGxXzeFjVHvudaPw0HNFD9x928/eUwYWd2dPCugVqspGALTZZQKw==} - engines: {node: '>=4'} - chai@6.2.1: resolution: {integrity: sha512-p4Z49OGG5W/WBCPSS/dH3jQ73kD6tiMmUM+bckNK6Jr5JHMG3k9bg/BvKR8lKmtVBKmOiuVaV2ws8s9oSbwysg==} engines: {node: '>=18'} @@ -6328,9 +6269,6 @@ packages: chardet@0.7.0: resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} - check-error@1.0.3: - resolution: {integrity: sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==} - cheerio-select@2.1.0: resolution: {integrity: sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==} @@ -6877,10 +6815,6 @@ packages: dedent-js@1.0.1: resolution: {integrity: sha512-OUepMozQULMLUmhxS95Vudo0jb0UchLimi3+pQ2plj61Fcy8axbP9hbiD4Sz6DPqn6XG3kfmziVfQ1rSys5AJQ==} - deep-eql@4.1.4: - resolution: {integrity: sha512-SUwdGfqdKOwxCPeVYjwSyRpJ7Z+fhpwIAtmCUdZIWZ/YP5R9WAsyuSgpLVDi9bjWoN2LXHNss/dk3urXtdQxGg==} - engines: {node: '>=6'} - deep-equal@2.2.2: resolution: {integrity: sha512-xjVyBf0w5vH0I42jdAZzOKVldmPgSulmiyPRywoyq7HXC9qdgo17kxJE+rdnif5Tz6+pIrpJI8dCpMNLIGkUiA==} @@ -6986,10 +6920,6 @@ packages: di@0.0.1: resolution: {integrity: sha512-uJaamHkagcZtHPqCIHZxnFrXlunQXgBOsZSUOWwFw31QJCAbyTBoHMW75YOTur5ZNx8pIeAKgf6GWIgaqqiLhA==} - diff-sequences@29.6.3: - resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - diff@4.0.2: resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} engines: {node: '>=0.3.1'} @@ -7805,9 +7735,6 @@ packages: resolution: {integrity: sha512-vpeMIQKxczTD/0s2CdEWHcb0eeJe6TFjxb+J5xgX7hScxqrGuyjmv4c1D4A/gelKfyox0gJJwIHF+fLjeaM8kQ==} engines: {node: '>=18'} - get-func-name@2.0.2: - resolution: {integrity: sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==} - get-intrinsic@1.3.0: resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==} engines: {node: '>= 0.4'} @@ -8916,10 +8843,6 @@ packages: resolution: {integrity: sha512-ZvFw1KWS3GVyYBYb7qkmRM/WwL2TQQBxgCK62rlvm4WpVQ23Nb4tYjApUlfjrEGvOs7KHEsmyUn75OHZrJMWPw==} engines: {node: '>= 12.13.0'} - local-pkg@0.5.1: - resolution: {integrity: sha512-9rrA30MRRP3gBD3HTGnC6cDFpaE1kVDWxWgqWJUN0RvDNAo+Nz/9GxB+nHOH0ifbVFy0hSA1V6vFDvnx54lTEQ==} - engines: {node: '>=14'} - local-pkg@1.1.2: resolution: {integrity: sha512-arhlxbFRmoQHl33a0Zkle/YWlmNwoyt6QNZEIJcqNbdrsix5Lvc4HyyI3EnwxTYlZYc32EbYrQ8SzEZ7dqgg9A==} engines: {node: '>=14'} @@ -8983,9 +8906,6 @@ packages: resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} hasBin: true - loupe@2.3.7: - resolution: {integrity: sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==} - lower-case@2.0.2: resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==} @@ -9845,10 +9765,6 @@ packages: resolution: {integrity: sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - p-limit@5.0.0: - resolution: {integrity: sha512-/Eaoq+QyLSiXQ4lyYV23f14mZRQcXnxfHrN0vCai+ak9G0pp9iEQukIIZq5NccEvwRB8PUnZT0KsOoDCINS1qQ==} - engines: {node: '>=18'} - p-limit@6.2.0: resolution: {integrity: sha512-kuUqqHNUqoIWp/c467RI4X6mmyuojY5jGutNU0wVTmEOOfcuwLqyMVoAi9MKi2Ak+5i9+nhmrK4ufZE8069kHA==} engines: {node: '>=18'} @@ -10025,9 +9941,6 @@ packages: pathe@2.0.3: resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==} - pathval@1.1.1: - resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==} - peek-readable@4.1.0: resolution: {integrity: sha512-ZI3LnwUv5nOGbQzD9c2iDG6toheuXSZP5esSHBjopsXH4dg19soufvpUGA3uohi5anFtGb2lhAVdHzH6R/Evvg==} engines: {node: '>=8'} @@ -11529,18 +11442,10 @@ packages: resolution: {integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==} engines: {node: '>=12.0.0'} - tinypool@0.8.4: - resolution: {integrity: sha512-i11VH5gS6IFeLY3gMBQ00/MmLncVP7JLXOw1vlgkytLmJK7QnEr7NXf0LBdxfmNPAeyetukOk0bOYrJrFGjYJQ==} - engines: {node: '>=14.0.0'} - tinyrainbow@3.0.3: resolution: {integrity: sha512-PSkbLUoxOFRzJYjjxHJt9xro7D+iilgMX/C9lawzVuYiIdcihh9DXmVibBe8lmcFrRi/VzlPjBxbN7rH24q8/Q==} engines: {node: '>=14.0.0'} - tinyspy@2.2.1: - resolution: {integrity: sha512-KYad6Vy5VDWV4GH3fjpseMQ/XU2BhIYP7Vzd0LG44qRWm/Yt2WCOTicFdvmgo6gWaqooMQCawTtILVQJupKu7A==} - engines: {node: '>=14.0.0'} - tmp@0.0.33: resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} engines: {node: '>=0.6.0'} @@ -11672,10 +11577,6 @@ packages: resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} engines: {node: '>=4'} - type-detect@4.1.0: - resolution: {integrity: sha512-Acylog8/luQ8L7il+geoSxhEkazvkslg7PSNKOX59mbB9cOveP5aq9h74Y7YU8yDpJwetzQQrfIwtf4Wp4LKcw==} - engines: {node: '>=4'} - type-fest@0.20.2: resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} engines: {node: '>=10'} @@ -11723,11 +11624,6 @@ packages: typed-assert@1.0.9: resolution: {integrity: sha512-KNNZtayBCtmnNmbo5mG47p1XsCyrx6iVqomjcZnec/1Y5GGARaxPs6r49RnSPeUP3YjNYiU9sQHAtY4BBvnZwg==} - typescript@4.9.5: - resolution: {integrity: sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==} - engines: {node: '>=4.2.0'} - hasBin: true - typescript@5.4.5: resolution: {integrity: sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==} engines: {node: '>=14.17'} @@ -12013,11 +11909,6 @@ packages: vfile@6.0.3: resolution: {integrity: sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==} - vite-node@1.6.1: - resolution: {integrity: sha512-YAXkfvGtuTzwWbDSACdJSg4A4DZiAqckWe90Zapc/sEX3XvHcw1NdurM/6od8J207tSDqNbSsgdCacBgvJKFuA==} - engines: {node: ^18.0.0 || >=20.0.0} - hasBin: true - vite-plugin-solid@2.11.10: resolution: {integrity: sha512-Yr1dQybmtDtDAHkii6hXuc1oVH9CPcS/Zb2jN/P36qqcrkNnVPsMTzQ06jyzFPFjj3U1IYKMVt/9ZqcwGCEbjw==} peerDependencies: @@ -12033,37 +11924,6 @@ packages: peerDependencies: vite: 5.x || 6.x || 7.x - vite@5.4.14: - resolution: {integrity: sha512-EK5cY7Q1D8JNhSaPKVK4pwBFvaTmZxEnoKXLG/U9gmdDcihQGNzFlgIvaxezFR4glP1LsuiedwMBqCXH3wZccA==} - engines: {node: ^18.0.0 || >=20.0.0} - hasBin: true - peerDependencies: - '@types/node': ^18.0.0 || >=20.0.0 - less: '*' - lightningcss: ^1.21.0 - sass: '*' - sass-embedded: '*' - stylus: '*' - sugarss: '*' - terser: ^5.4.0 - peerDependenciesMeta: - '@types/node': - optional: true - less: - optional: true - lightningcss: - optional: true - sass: - optional: true - sass-embedded: - optional: true - stylus: - optional: true - sugarss: - optional: true - terser: - optional: true - vite@5.4.21: resolution: {integrity: sha512-o5a9xKjbtuhY6Bi5S3+HvbRERmouabWbyUcpXXUA1u+GNUKoROi9byOJ8M0nHbHYHkYICiMlqxkg1KkYmm25Sw==} engines: {node: ^18.0.0 || >=20.0.0} @@ -12251,31 +12111,6 @@ packages: postcss: optional: true - vitest@1.6.1: - resolution: {integrity: sha512-Ljb1cnSJSivGN0LqXd/zmDbWEM0RNNg2t1QW/XUhYl/qPqyu7CsqeWtqQXHVaJsecLPuDoak2oJcZN2QoRIOag==} - engines: {node: ^18.0.0 || >=20.0.0} - hasBin: true - peerDependencies: - '@edge-runtime/vm': '*' - '@types/node': ^18.0.0 || >=20.0.0 - '@vitest/browser': 1.6.1 - '@vitest/ui': 1.6.1 - happy-dom: '*' - jsdom: '*' - peerDependenciesMeta: - '@edge-runtime/vm': - optional: true - '@types/node': - optional: true - '@vitest/browser': - optional: true - '@vitest/ui': - optional: true - happy-dom: - optional: true - jsdom: - optional: true - vitest@4.0.12: resolution: {integrity: sha512-pmW4GCKQ8t5Ko1jYjC3SqOr7TUKN7uHOHB/XGsAIb69eYu6d1ionGSsb5H9chmPf+WeXt0VE7jTXsB1IvWoNbw==} engines: {node: ^20.0.0 || ^22.0.0 || >=24.0.0} @@ -18037,12 +17872,6 @@ snapshots: vite: 7.2.4(@types/node@24.10.1)(jiti@2.6.1)(less@4.2.0)(sass@1.77.8)(stylus@0.56.0)(terser@5.44.1)(yaml@2.8.0) vue: 3.5.24(typescript@5.9.3) - '@vitest/expect@1.6.1': - dependencies: - '@vitest/spy': 1.6.1 - '@vitest/utils': 1.6.1 - chai: 4.5.0 - '@vitest/expect@4.0.12': dependencies: '@standard-schema/spec': 1.0.0 @@ -18064,42 +17893,19 @@ snapshots: dependencies: tinyrainbow: 3.0.3 - '@vitest/runner@1.6.1': - dependencies: - '@vitest/utils': 1.6.1 - p-limit: 5.0.0 - pathe: 1.1.2 - '@vitest/runner@4.0.12': dependencies: '@vitest/utils': 4.0.12 pathe: 2.0.3 - '@vitest/snapshot@1.6.1': - dependencies: - magic-string: 0.30.21 - pathe: 1.1.2 - pretty-format: 29.7.0 - '@vitest/snapshot@4.0.12': dependencies: '@vitest/pretty-format': 4.0.12 magic-string: 0.30.21 pathe: 2.0.3 - '@vitest/spy@1.6.1': - dependencies: - tinyspy: 2.2.1 - '@vitest/spy@4.0.12': {} - '@vitest/utils@1.6.1': - dependencies: - diff-sequences: 29.6.3 - estree-walker: 3.0.3 - loupe: 2.3.7 - pretty-format: 29.7.0 - '@vitest/utils@4.0.12': dependencies: '@vitest/pretty-format': 4.0.12 @@ -18632,8 +18438,6 @@ snapshots: asap@2.0.6: {} - assertion-error@1.1.0: {} - ast-types@0.15.2: dependencies: tslib: 2.8.1 @@ -19098,8 +18902,6 @@ snapshots: pkg-types: 1.3.1 rc9: 2.1.2 - cac@6.7.14: {} - cacache@18.0.4: dependencies: '@npmcli/fs': 3.1.0 @@ -19156,16 +18958,6 @@ snapshots: ccount@2.0.1: {} - chai@4.5.0: - dependencies: - assertion-error: 1.1.0 - check-error: 1.0.3 - deep-eql: 4.1.4 - get-func-name: 2.0.2 - loupe: 2.3.7 - pathval: 1.1.1 - type-detect: 4.1.0 - chai@6.2.1: {} chalk@4.1.2: @@ -19185,10 +18977,6 @@ snapshots: chardet@0.7.0: {} - check-error@1.0.3: - dependencies: - get-func-name: 2.0.2 - cheerio-select@2.1.0: dependencies: boolbase: 1.0.0 @@ -19689,10 +19477,6 @@ snapshots: dedent-js@1.0.1: {} - deep-eql@4.1.4: - dependencies: - type-detect: 4.1.0 - deep-equal@2.2.2: dependencies: array-buffer-byte-length: 1.0.2 @@ -19790,8 +19574,6 @@ snapshots: di@0.0.1: {} - diff-sequences@29.6.3: {} - diff@4.0.2: {} diff@5.2.0: {} @@ -20957,8 +20739,6 @@ snapshots: get-east-asian-width@1.3.0: {} - get-func-name@2.0.2: {} - get-intrinsic@1.3.0: dependencies: call-bind-apply-helpers: 1.0.2 @@ -22320,11 +22100,6 @@ snapshots: loader-utils@3.2.1: {} - local-pkg@0.5.1: - dependencies: - mlly: 1.8.0 - pkg-types: 1.3.1 - local-pkg@1.1.2: dependencies: mlly: 1.8.0 @@ -22395,10 +22170,6 @@ snapshots: dependencies: js-tokens: 4.0.0 - loupe@2.3.7: - dependencies: - get-func-name: 2.0.2 - lower-case@2.0.2: dependencies: tslib: 2.8.1 @@ -23705,10 +23476,6 @@ snapshots: dependencies: yocto-queue: 1.2.0 - p-limit@5.0.0: - dependencies: - yocto-queue: 1.2.0 - p-limit@6.2.0: dependencies: yocto-queue: 1.2.0 @@ -23894,8 +23661,6 @@ snapshots: pathe@2.0.3: {} - pathval@1.1.1: {} - peek-readable@4.1.0: {} perfect-debounce@1.0.0: {} @@ -24565,14 +24330,6 @@ snapshots: globby: 10.0.1 is-plain-object: 3.0.1 - rollup-plugin-dts@6.2.3(rollup@4.53.3)(typescript@4.9.5): - dependencies: - magic-string: 0.30.17 - rollup: 4.53.3 - typescript: 4.9.5 - optionalDependencies: - '@babel/code-frame': 7.27.1 - rollup-plugin-dts@6.2.3(rollup@4.53.3)(typescript@5.9.3): dependencies: magic-string: 0.30.17 @@ -25739,12 +25496,8 @@ snapshots: fdir: 6.5.0(picomatch@4.0.3) picomatch: 4.0.3 - tinypool@0.8.4: {} - tinyrainbow@3.0.3: {} - tinyspy@2.2.1: {} - tmp@0.0.33: dependencies: os-tmpdir: 1.0.2 @@ -25898,8 +25651,6 @@ snapshots: type-detect@4.0.8: {} - type-detect@4.1.0: {} - type-fest@0.20.2: {} type-fest@0.21.3: {} @@ -25952,8 +25703,6 @@ snapshots: typed-assert@1.0.9: {} - typescript@4.9.5: {} - typescript@5.4.5: {} typescript@5.9.3: {} @@ -26246,24 +25995,6 @@ snapshots: '@types/unist': 3.0.3 vfile-message: 4.0.2 - vite-node@1.6.1(@types/node@24.10.1)(less@4.2.0)(sass@1.77.8)(stylus@0.56.0)(terser@5.44.1): - dependencies: - cac: 6.7.14 - debug: 4.4.3 - pathe: 1.1.2 - picocolors: 1.1.1 - vite: 5.4.14(@types/node@24.10.1)(less@4.2.0)(sass@1.77.8)(stylus@0.56.0)(terser@5.44.1) - transitivePeerDependencies: - - '@types/node' - - less - - lightningcss - - sass - - sass-embedded - - stylus - - sugarss - - supports-color - - terser - vite-plugin-solid@2.11.10(@testing-library/jest-dom@6.9.1)(solid-js@1.9.10)(vite@7.2.4(@types/node@24.10.1)(jiti@2.6.1)(less@4.2.0)(sass@1.77.8)(stylus@0.56.0)(terser@5.44.1)(yaml@2.8.0)): dependencies: '@babel/core': 7.28.5 @@ -26289,19 +26020,6 @@ snapshots: stack-trace: 1.0.0-pre2 vite: 7.2.4(@types/node@24.10.1)(jiti@2.6.1)(less@4.2.0)(sass@1.77.8)(stylus@0.56.0)(terser@5.44.1)(yaml@2.8.0) - vite@5.4.14(@types/node@24.10.1)(less@4.2.0)(sass@1.77.8)(stylus@0.56.0)(terser@5.44.1): - dependencies: - esbuild: 0.21.5 - postcss: 8.5.6 - rollup: 4.53.3 - optionalDependencies: - '@types/node': 24.10.1 - fsevents: 2.3.3 - less: 4.2.0 - sass: 1.77.8 - stylus: 0.56.0 - terser: 5.44.1 - vite@5.4.21(@types/node@12.20.55)(less@4.2.0)(sass@1.71.1)(stylus@0.56.0)(terser@5.29.1): dependencies: esbuild: 0.21.5 @@ -26443,41 +26161,6 @@ snapshots: - typescript - universal-cookie - vitest@1.6.1(@types/node@24.10.1)(jsdom@20.0.3)(less@4.2.0)(sass@1.77.8)(stylus@0.56.0)(terser@5.44.1): - dependencies: - '@vitest/expect': 1.6.1 - '@vitest/runner': 1.6.1 - '@vitest/snapshot': 1.6.1 - '@vitest/spy': 1.6.1 - '@vitest/utils': 1.6.1 - acorn-walk: 8.3.3 - chai: 4.5.0 - debug: 4.4.3 - execa: 8.0.1 - local-pkg: 0.5.1 - magic-string: 0.30.21 - pathe: 1.1.2 - picocolors: 1.1.1 - std-env: 3.10.0 - strip-literal: 2.1.1 - tinybench: 2.9.0 - tinypool: 0.8.4 - vite: 5.4.14(@types/node@24.10.1)(less@4.2.0)(sass@1.77.8)(stylus@0.56.0)(terser@5.44.1) - vite-node: 1.6.1(@types/node@24.10.1)(less@4.2.0)(sass@1.77.8)(stylus@0.56.0)(terser@5.44.1) - why-is-node-running: 2.3.0 - optionalDependencies: - '@types/node': 24.10.1 - jsdom: 20.0.3 - transitivePeerDependencies: - - less - - lightningcss - - sass - - sass-embedded - - stylus - - sugarss - - supports-color - - terser - vitest@4.0.12(@types/debug@4.1.12)(@types/node@24.10.1)(jiti@2.6.1)(jsdom@20.0.3)(less@4.2.0)(sass@1.77.8)(stylus@0.56.0)(terser@5.44.1)(yaml@2.8.0): dependencies: '@vitest/expect': 4.0.12