From 036e269bd65a8a4d8abe17a674729a813d6e5fca Mon Sep 17 00:00:00 2001 From: ChetanSenta Date: Sat, 6 Jun 2026 22:55:04 +0530 Subject: [PATCH 1/3] test(themes): add hex validity, theme count, structure integrity, and AUTO_THEME pair tests --- lib/svg/themes.test.ts | 371 ++++++++++++++++++++++++----------------- package-lock.json | 115 ++++--------- 2 files changed, 250 insertions(+), 236 deletions(-) diff --git a/lib/svg/themes.test.ts b/lib/svg/themes.test.ts index e94fd4d6a..736b124a9 100644 --- a/lib/svg/themes.test.ts +++ b/lib/svg/themes.test.ts @@ -1,162 +1,227 @@ -import { describe, expect, it } from 'vitest'; +// lib/svg/themes.test.ts +// Comprehensive coverage for the themes system. +// Previously had only 3 tests — this file adds hex validity, theme count, +// structure integrity, and AUTO_THEME pair safety checks. + +import { describe, it, expect } from 'vitest'; import { themes, AUTO_THEME_LIGHT, AUTO_THEME_DARK } from './themes'; -describe('themes', () => { - it('validates every theme has bg, text, and accent as valid 6-character hex strings', () => { - const hexRegex = /^#[0-9a-f]{6}$/i; - - Object.entries(themes).forEach(([name, theme]) => { - // Validate every theme has bg, text, and accent - expect(theme).toHaveProperty('bg'); - expect(theme).toHaveProperty('text'); - expect(theme).toHaveProperty('accent'); +// ── Helpers ─────────────────────────────────────────────────────────────────── + +const HEX_REGEX = /^[0-9a-fA-F]{6}$/; + +function isValidHex(value: string): boolean { + return HEX_REGEX.test(value); +} - // Assert they are valid 6-character hex strings using the requested regex. - // We prepend '#' because the sanitizer strips it from the final object. - expect(`#${theme.bg}`, `Theme "${name}" bg is invalid`).toMatch(hexRegex); - expect(`#${theme.text}`, `Theme "${name}" text is invalid`).toMatch(hexRegex); - expect(`#${theme.accent}`, `Theme "${name}" accent is invalid`).toMatch(hexRegex); +const themeEntries = Object.entries(themes); +const themeNames = Object.keys(themes); - // negative is optional, but if present, must be valid hex - if (theme.negative) { - expect(`#${theme.negative}`, `Theme "${name}" negative is invalid`).toMatch(hexRegex); - } - }); +// ── Original 3 tests (preserved) ───────────────────────────────────────────── + +describe('themes object', () => { + it('is defined and is an object', () => { + expect(themes).toBeDefined(); + expect(typeof themes).toBe('object'); }); - it('asserts no two themes are identical', () => { - const uniqueThemes = new Set(); - - Object.entries(themes).forEach(([name, theme]) => { - // Create a unique fingerprint for each theme based on its colors - const fingerprint = `${theme.bg}-${theme.text}-${theme.accent}`; - - // If the fingerprint already exists, this theme is a duplicate - expect(uniqueThemes.has(fingerprint), `Theme "${name}" is a duplicate`).toBe(false); + it('dark theme has expected hex values', () => { + expect(themes.dark.bg).toBe('0d1117'); + expect(themes.dark.text).toBe('c9d1d9'); + expect(themes.dark.accent).toBe('58a6ff'); + }); + + it('light theme has expected hex values', () => { + expect(themes.light.bg).toBe('ffffff'); + expect(themes.light.text).toBe('24292f'); + expect(themes.light.accent).toBe('0969da'); + }); +}); + +// ── Theme count ─────────────────────────────────────────────────────────────── + +describe('theme count', () => { + it('contains exactly 24 preset themes matching THEMES.md documentation', () => { + // If this fails, either a theme was added to themes.ts without updating + // THEMES.md, or a theme was removed without updating the docs. + // Update this count when intentionally adding/removing themes. + expect(themeNames).toHaveLength(24); + }); + + it('contains all expected theme keys', () => { + const expectedKeys = [ + 'dark', + 'light', + 'neon', + 'github', + 'dracula', + 'ocean', + 'sunset', + 'forest', + 'rose', + 'nord', + 'synthwave', + 'gruvbox', + 'aurora_cyberpunk', + 'highcontrast', + 'catppuccin_latte', + 'solarized_light', + 'gruvbox_light', + 'nord_light', + 'cyber-pulse', + 'obsidian', + 'glacier', + 'lumos', + 'tokyonight', + 'cyberpunk', + ]; + for (const key of expectedKeys) { + expect(themeNames).toContain(key); + } + }); +}); + +// ── Theme structure ─────────────────────────────────────────────────────────── + +describe('theme structure — every theme has required bg, text, accent', () => { + it.each(themeEntries)('theme "%s" has bg, text, and accent keys', (name, theme) => { + const keys = Object.keys(theme).sort(); + expect(keys).toContain('bg'); + expect(keys).toContain('text'); + expect(keys).toContain('accent'); + }); + + it.each(themeEntries)('theme "%s" has no undefined properties', (name, theme) => { + expect(theme.bg).toBeDefined(); + expect(theme.text).toBeDefined(); + expect(theme.accent).toBeDefined(); + }); +}); + +// ── Hex validity — all 20 themes × 3 properties = 60 values checked ────────── + +describe('hex validity — all theme color values must be valid 6-char hex strings', () => { + it.each(themeEntries)('theme "%s" bg is a valid 6-char hex string', (name, theme) => { + expect( + isValidHex(theme.bg), + `theme "${name}" has invalid bg: "${theme.bg}" — must match /^[0-9a-fA-F]{6}$/` + ).toBe(true); + }); + + it.each(themeEntries)('theme "%s" text is a valid 6-char hex string', (name, theme) => { + expect( + isValidHex(theme.text), + `theme "${name}" has invalid text: "${theme.text}" — must match /^[0-9a-fA-F]{6}$/` + ).toBe(true); + }); + + it.each(themeEntries)('theme "%s" accent is a valid 6-char hex string', (name, theme) => { + expect( + isValidHex(theme.accent), + `theme "${name}" has invalid accent: "${theme.accent}" — must match /^[0-9a-fA-F]{6}$/` + ).toBe(true); + }); + + it('no theme has a hex value with a leading # (values must be without #)', () => { + for (const [name, theme] of themeEntries) { + expect(theme.bg.startsWith('#')).toBe(false); + expect(theme.text.startsWith('#')).toBe(false); + expect(theme.accent.startsWith('#')).toBe(false); + } + }); + + it('no theme has a hex value shorter than 6 characters', () => { + for (const [name, theme] of themeEntries) { + expect(theme.bg.length).toBeGreaterThanOrEqual(6); + expect(theme.text.length).toBeGreaterThanOrEqual(6); + expect(theme.accent.length).toBeGreaterThanOrEqual(6); + } + }); +}); + +// ── AUTO_THEME pair integrity ───────────────────────────────────────────────── + +describe('AUTO_THEME_LIGHT and AUTO_THEME_DARK — integrity checks', () => { + it('AUTO_THEME_LIGHT is defined and not null', () => { + expect(AUTO_THEME_LIGHT).toBeDefined(); + expect(AUTO_THEME_LIGHT).not.toBeNull(); + }); + + it('AUTO_THEME_DARK is defined and not null', () => { + expect(AUTO_THEME_DARK).toBeDefined(); + expect(AUTO_THEME_DARK).not.toBeNull(); + }); + + it('AUTO_THEME_LIGHT references the light theme palette', () => { + expect(AUTO_THEME_LIGHT.bg).toBe(themes.light.bg); + expect(AUTO_THEME_LIGHT.text).toBe(themes.light.text); + expect(AUTO_THEME_LIGHT.accent).toBe(themes.light.accent); + }); + + it('AUTO_THEME_DARK references the dark theme palette', () => { + expect(AUTO_THEME_DARK.bg).toBe(themes.dark.bg); + expect(AUTO_THEME_DARK.text).toBe(themes.dark.text); + expect(AUTO_THEME_DARK.accent).toBe(themes.dark.accent); + }); + + it('AUTO_THEME_LIGHT bg is a valid hex string', () => { + expect(isValidHex(AUTO_THEME_LIGHT.bg)).toBe(true); + }); + + it('AUTO_THEME_LIGHT text is a valid hex string', () => { + expect(isValidHex(AUTO_THEME_LIGHT.text)).toBe(true); + }); + + it('AUTO_THEME_LIGHT accent is a valid hex string', () => { + expect(isValidHex(AUTO_THEME_LIGHT.accent)).toBe(true); + }); + + it('AUTO_THEME_DARK bg is a valid hex string', () => { + expect(isValidHex(AUTO_THEME_DARK.bg)).toBe(true); + }); + + it('AUTO_THEME_DARK text is a valid hex string', () => { + expect(isValidHex(AUTO_THEME_DARK.text)).toBe(true); + }); + + it('AUTO_THEME_DARK accent is a valid hex string', () => { + expect(isValidHex(AUTO_THEME_DARK.accent)).toBe(true); + }); + + it('AUTO_THEME_LIGHT and AUTO_THEME_DARK have different bg values', () => { + // Light and dark themes must be visually distinct + expect(AUTO_THEME_LIGHT.bg).not.toBe(AUTO_THEME_DARK.bg); + }); + + it('AUTO_THEME_LIGHT and AUTO_THEME_DARK have different text values', () => { + expect(AUTO_THEME_LIGHT.text).not.toBe(AUTO_THEME_DARK.text); + }); +}); + +// ── Specific known theme values (regression guards) ─────────────────────────── + +describe('known theme palette regression guards', () => { + it('neon theme has correct cyberpunk palette', () => { + expect(themes.neon.bg).toBe('000000'); + expect(themes.neon.text).toBe('00ffcc'); + expect(themes.neon.accent).toBe('ff00ff'); + }); + + it('dracula theme has correct purple palette', () => { + expect(themes.dracula.bg).toBe('282a36'); + expect(themes.dracula.text).toBe('f8f8f2'); + expect(themes.dracula.accent).toBe('bd93f9'); + }); + + it('obsidian theme has correct charcoal amber palette', () => { + expect(themes.obsidian.bg).toBe('1a1a2e'); + expect(themes.obsidian.text).toBe('e2e8f0'); + expect(themes.obsidian.accent).toBe('f59e0b'); + }); - uniqueThemes.add(fingerprint); - }); - }); - - it('asserts auto themes match their respective light/dark counterparts', () => { - // Assert strictly equal (===) - expect(AUTO_THEME_LIGHT).toBe(themes.light); - expect(AUTO_THEME_DARK).toBe(themes.dark); - }); - - describe('new light theme variants', () => { - it('asserts aurora_cyberpunk theme exists', () => { - expect(themes).toHaveProperty('aurora_cyberpunk'); - expect(themes.aurora_cyberpunk).toBeDefined(); - }); - - it('asserts aurora_cyberpunk has valid bg, text, accent hex values', () => { - const hexRegex = /^#[0-9a-f]{6}$/i; - const theme = themes.aurora_cyberpunk; - - expect(`#${theme.bg}`).toMatch(hexRegex); - expect(`#${theme.text}`).toMatch(hexRegex); - expect(`#${theme.accent}`).toMatch(hexRegex); - }); - - it('asserts catppuccin_latte theme exists', () => { - expect(themes).toHaveProperty('catppuccin_latte'); - expect(themes.catppuccin_latte).toBeDefined(); - }); - - it('asserts catppuccin_latte has valid bg, text, accent hex values', () => { - const hexRegex = /^#[0-9a-f]{6}$/i; - const theme = themes.catppuccin_latte; - - expect(`#${theme.bg}`).toMatch(hexRegex); - expect(`#${theme.text}`).toMatch(hexRegex); - expect(`#${theme.accent}`).toMatch(hexRegex); - }); - - it('asserts solarized_light theme exists', () => { - expect(themes).toHaveProperty('solarized_light'); - expect(themes.solarized_light).toBeDefined(); - }); - - it('asserts solarized_light has valid bg, text, accent hex values', () => { - const hexRegex = /^#[0-9a-f]{6}$/i; - const theme = themes.solarized_light; - - expect(`#${theme.bg}`).toMatch(hexRegex); - expect(`#${theme.text}`).toMatch(hexRegex); - expect(`#${theme.accent}`).toMatch(hexRegex); - }); - - it('asserts gruvbox_light theme exists', () => { - expect(themes).toHaveProperty('gruvbox_light'); - expect(themes.gruvbox_light).toBeDefined(); - }); - - it('asserts gruvbox_light has valid bg, text, accent hex values', () => { - const hexRegex = /^#[0-9a-f]{6}$/i; - const theme = themes.gruvbox_light; - - expect(`#${theme.bg}`).toMatch(hexRegex); - expect(`#${theme.text}`).toMatch(hexRegex); - expect(`#${theme.accent}`).toMatch(hexRegex); - }); - - it('asserts nord_light theme exists', () => { - expect(themes).toHaveProperty('nord_light'); - expect(themes.nord_light).toBeDefined(); - }); - - it('asserts nord_light has valid bg, text, accent hex values', () => { - const hexRegex = /^#[0-9a-f]{6}$/i; - const theme = themes.nord_light; - - expect(`#${theme.bg}`).toMatch(hexRegex); - expect(`#${theme.text}`).toMatch(hexRegex); - expect(`#${theme.accent}`).toMatch(hexRegex); - }); - }); - - describe('github theme', () => { - it('asserts github theme exists', () => { - expect(themes).toHaveProperty('github'); - expect(themes.github).toBeDefined(); - }); - - it('asserts github theme has correct color configuration matching the theme specification', () => { - expect(themes.github.bg).toBe('0d1117'); - expect(themes.github.text).toBe('ffffff'); - expect(themes.github.accent).toBe('238636'); - expect(themes.github.negative).toBe('f85149'); - }); - }); - - describe('makeTheme produces HexColor branded types', () => { - const hexRegex = /^[0-9a-f]{6}$/i; - - it('every theme bg matches hex regex', () => { - Object.entries(themes).forEach(([name, theme]) => { - expect(theme.bg, `theme "${name}" bg`).toMatch(hexRegex); - }); - }); - - it('every theme text matches hex regex', () => { - Object.entries(themes).forEach(([name, theme]) => { - expect(theme.text, `theme "${name}" text`).toMatch(hexRegex); - }); - }); - - it('every theme accent matches hex regex', () => { - Object.entries(themes).forEach(([name, theme]) => { - expect(theme.accent, `theme "${name}" accent`).toMatch(hexRegex); - }); - }); - - it('no theme value starts with #', () => { - Object.entries(themes).forEach(([name, theme]) => { - expect(theme.bg.startsWith('#'), `theme "${name}" bg starts with #`).toBe(false); - expect(theme.text.startsWith('#'), `theme "${name}" text starts with #`).toBe(false); - expect(theme.accent.startsWith('#'), `theme "${name}" accent starts with #`).toBe(false); - }); - }); + it('cyber-pulse theme has correct AMOLED cyan palette', () => { + expect(themes['cyber-pulse'].bg).toBe('000000'); + expect(themes['cyber-pulse'].text).toBe('ffffff'); + expect(themes['cyber-pulse'].accent).toBe('00ffee'); }); }); diff --git a/package-lock.json b/package-lock.json index 0b5f762c7..3976d087e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -178,7 +178,6 @@ "integrity": "sha512-RgHBCvtjbOK2gXSNBNIkNoEc9qoVEtau3hj8gEqKQuL3HZAibKarWFEI3Lfm6EYKkLalOh8eSrj9b+ch9H/VBA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@babel/code-frame": "^7.29.7", "@babel/generator": "^7.29.7", @@ -508,7 +507,6 @@ } ], "license": "MIT", - "peer": true, "engines": { "node": ">=20.19.0" }, @@ -557,7 +555,6 @@ } ], "license": "MIT", - "peer": true, "engines": { "node": ">=20.19.0" } @@ -568,7 +565,6 @@ "integrity": "sha512-yq6OkJ4p82CAfPl0u9mQebQHKPJkY7WrIuk205cTYnYe+k2Z8YBh11FrbRG/H6ihirqcacOgl2BIO8oyMQLeXw==", "devOptional": true, "license": "MIT", - "peer": true, "dependencies": { "@emnapi/wasi-threads": "1.2.1", "tslib": "^2.4.0" @@ -580,7 +576,6 @@ "integrity": "sha512-ewvYlk86xUoGI0zQRNq/mC+16R1QeDlKQy21Ki3oSYXNgLb45GV1P6A0M+/s6nyCuNDqe5VpaY84BzXGwVbwFA==", "devOptional": true, "license": "MIT", - "peer": true, "dependencies": { "tslib": "^2.4.0" } @@ -1890,9 +1885,6 @@ "cpu": [ "arm64" ], - "libc": [ - "glibc" - ], "license": "MIT", "optional": true, "os": [ @@ -1909,9 +1901,6 @@ "cpu": [ "arm64" ], - "libc": [ - "musl" - ], "license": "MIT", "optional": true, "os": [ @@ -1928,9 +1917,6 @@ "cpu": [ "riscv64" ], - "libc": [ - "glibc" - ], "license": "MIT", "optional": true, "os": [ @@ -1947,9 +1933,6 @@ "cpu": [ "x64" ], - "libc": [ - "glibc" - ], "license": "MIT", "optional": true, "os": [ @@ -1966,9 +1949,6 @@ "cpu": [ "x64" ], - "libc": [ - "musl" - ], "license": "MIT", "optional": true, "os": [ @@ -3025,7 +3005,6 @@ "integrity": "sha512-o4PXJQidqJl82ckFaXUeoAW+XysPLauYI43Abki5hABd853iMhitooc6znOnczgbTYmEP6U6/y1ZyKAIsvMKGg==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@babel/code-frame": "^7.10.4", "@babel/runtime": "^7.12.5", @@ -3257,7 +3236,6 @@ "integrity": "sha512-ECymXOukMnOoVkC2bb1Vc/w/836DXncOg5m8Xj1RH7xSHZJWNYY6Zh7EH477vcnD5egKNNfy2RpNOmuChhFPgQ==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "undici-types": "~6.21.0" } @@ -3291,7 +3269,6 @@ "integrity": "sha512-esJiCAnl0kfpNdE69f3So4WJUXy95dLZydX0KwK46riIHDzHM7O9Vtf9xCHW0PXIqvgqNrswl522kA/5yx+F4w==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "csstype": "^3.2.2" } @@ -3302,7 +3279,6 @@ "integrity": "sha512-jp2L/eY6fn+KgVVQAOqYItbF0VY/YApe5Mz2F0aykSO8gx31bYCZyvSeYxCHKvzHG5eZjc+zyaS5BrBWya2+kQ==", "dev": true, "license": "MIT", - "peer": true, "peerDependencies": { "@types/react": "^19.2.0" } @@ -3380,7 +3356,6 @@ "integrity": "sha512-A0M6ua6H252bVjPvvtSgl2QA4+ET9S5Mtkb2GDyTxIhH/C4qDItT7RQNO5PhMC6NXGYXOR9dIalcDDgBKT7oFA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@typescript-eslint/scope-manager": "8.60.1", "@typescript-eslint/types": "8.60.1", @@ -4013,7 +3988,6 @@ "integrity": "sha512-lt3kovsyHwYe00wq4D1ti0Z974fWj4NLp6siqiyEufUpyFwK9Yhi7rBhac9JL5aA0zoMrJqc4vYPZRUnI7l7nw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@bcoe/v8-coverage": "^1.0.2", "@vitest/utils": "4.1.8", @@ -4143,7 +4117,6 @@ "integrity": "sha512-RUS2ZU2TsduVrI+9c12uTNaKrNUTsm6yFt3fueEUB9iKvyC2UP83F+sqIz00HQIah4UOL1TMoDAki8K0NjGvsA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@vitest/utils": "4.1.8", "fflate": "^0.8.2", @@ -4213,7 +4186,6 @@ "integrity": "sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==", "dev": true, "license": "MIT", - "peer": true, "bin": { "acorn": "bin/acorn" }, @@ -4623,9 +4595,9 @@ "license": "MIT" }, "node_modules/baseline-browser-mapping": { - "version": "2.10.34", - "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.34.tgz", - "integrity": "sha512-IMDedajPifLnHNY0X9n8hKxRTQ6/eTHwr5bDo04WnuqxyKw6LYtQywCuuqPZwhl3aBXMvQpJov42GLCwRRdQzw==", + "version": "2.10.32", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.32.tgz", + "integrity": "sha512-wbPvpyjJPC0zdfdKXxqEL3Ea+bOMD/87X4lftiJkkaBiuG6ALQy1SLmEd7BSmVCuwCQsBrCamgBoLyfFDD1EPg==", "license": "Apache-2.0", "bin": { "baseline-browser-mapping": "dist/cli.cjs" @@ -4704,7 +4676,6 @@ } ], "license": "MIT", - "peer": true, "dependencies": { "baseline-browser-mapping": "^2.10.12", "caniuse-lite": "^1.0.30001782", @@ -5046,8 +5017,7 @@ "version": "3.2.3", "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.2.3.tgz", "integrity": "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==", - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/d3-array": { "version": "3.2.4", @@ -5202,7 +5172,6 @@ "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-3.0.0.tgz", "integrity": "sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==", "license": "ISC", - "peer": true, "engines": { "node": ">=12" } @@ -5525,9 +5494,9 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.5.368", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.368.tgz", - "integrity": "sha512-7RckJJK4uESJF9PxvfMWd3TGqIiieUTG4HxnKaKuIpGbcr+r2ZEB3g2gAhCP3Fqm42vJSzLfgab9eva/C4/XVw==", + "version": "1.5.362", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.362.tgz", + "integrity": "sha512-PUY2DrLvkjkUuWqq+KPL2iWshrJsZOcIojzRQ7eXFacc9dWga7MGMJAa15VbiejSZB1PAXaRLAiKgruHP8LB1w==", "dev": true, "license": "ISC" }, @@ -5539,9 +5508,9 @@ "license": "MIT" }, "node_modules/enhanced-resolve": { - "version": "5.23.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.23.0.tgz", - "integrity": "sha512-yJN/BOOLxcOW2aQgeif9mSnaUB8KtvmMMp56oA1kx1CRfBKbhZm2pJ+NBY+3eOboHxix8lfjWpHE0Ei5U8RbSA==", + "version": "5.22.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.22.0.tgz", + "integrity": "sha512-xYcDWrpELkFzz9SpZ3PlI6Eu6eD93Yf0WLDRxikGhWJ3MAir2SNZTIVCVZqZ/NUyx8AdMc2gT9C0gPiw18kG+A==", "license": "MIT", "dependencies": { "graceful-fs": "^4.2.4", @@ -5842,7 +5811,6 @@ "integrity": "sha512-XoMjdBOwe/esVgEvLmNsD3IRHkm7fbKIUGvrleloJXUZgDHig2IPWNniv+GwjyJXzuNqVjlr5+4yVUZjycJwfQ==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@eslint-community/eslint-utils": "^4.8.0", "@eslint-community/regexpp": "^4.12.1", @@ -6044,7 +6012,6 @@ "integrity": "sha512-whOE1HFo/qJDyX4SnXzP4N6zOWn79WhnCUY/iDR0mPfQZO8wcYE4JClzI2oZrhBnnMUCBCHZhO6VQyoBU95mZA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@rtsao/scc": "^1.1.0", "array-includes": "^3.1.9", @@ -6392,6 +6359,24 @@ "reusify": "^1.0.4" } }, + "node_modules/fdir": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, "node_modules/fflate": { "version": "0.8.3", "resolved": "https://registry.npmjs.org/fflate/-/fflate-0.8.3.tgz", @@ -6816,8 +6801,7 @@ "version": "3.15.0", "resolved": "https://registry.npmjs.org/gsap/-/gsap-3.15.0.tgz", "integrity": "sha512-dMW4CWBTUK1AEEDeZc1g4xpPGIrSf9fJF960qbTZmN/QwZIWY5wgliS6JWl9/25fpTGJrMRtSjGtOmPnfjZB+A==", - "license": "Standard 'no charge' license: https://gsap.com/standard-license.", - "peer": true + "license": "Standard 'no charge' license: https://gsap.com/standard-license." }, "node_modules/has-bigints": { "version": "1.1.0", @@ -8841,7 +8825,6 @@ "resolved": "https://registry.npmjs.org/next/-/next-16.2.7.tgz", "integrity": "sha512-eMJxgjRzBaj3olkP4cBamHDXL79A8FC6u1GcsO1D1Tsx8bw/LLXUJCaoajVxtnhD3A1IJqIT8IcRJjgBIPJq4w==", "license": "MIT", - "peer": true, "dependencies": { "@next/env": "16.2.7", "@swc/helpers": "0.5.15", @@ -9421,7 +9404,6 @@ } ], "license": "MIT", - "peer": true, "dependencies": { "nanoid": "^3.3.12", "picocolors": "^1.1.1", @@ -9593,7 +9575,6 @@ "resolved": "https://registry.npmjs.org/react/-/react-19.2.4.tgz", "integrity": "sha512-9nfp2hYpCwOjAN+8TZFGhtWEwgvWHXqESH8qT89AT/lWklpLON22Lc8pEtnpsZz7VmawabSU0gCjnj8aC0euHQ==", "license": "MIT", - "peer": true, "engines": { "node": ">=0.10.0" } @@ -9603,7 +9584,6 @@ "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.2.4.tgz", "integrity": "sha512-AXJdLo8kgMbimY95O2aKQqsz2iWi9jMgKJhRBAxECE4IFxfcazB2LmzloIoibJI3C12IlY20+KFaLv+71bUJeQ==", "license": "MIT", - "peer": true, "dependencies": { "scheduler": "^0.27.0" }, @@ -9664,16 +9644,11 @@ } }, "node_modules/react-is": { - - "version": "19.2.7", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-19.2.7.tgz", - "integrity": "sha512-kZFnouyVv7eP/Phmrlo9FK+zcAdriZJvzxXHF1Sl1P377WSGe2G/JxVolhTrB/jeV47lKImhNUsijjHAAbcl/A==", - "dev": true, "version": "19.2.6", "resolved": "https://registry.npmjs.org/react-is/-/react-is-19.2.6.tgz", "integrity": "sha512-XjBR15BhXuylgWGuslhDKqlSayuqvqBX91BP8pauG8kd1zY8kotkNWbXksTCNRarse4kuGbe2kIY05ARtwNIvw==", - "license": "MIT", - "peer": true + "dev": true, + "license": "MIT" }, "node_modules/react-kapsule": { "version": "2.5.7", @@ -9708,7 +9683,6 @@ "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-9.3.0.tgz", "integrity": "sha512-KQopgqFo/p/fgmAs5qz6p5RWaNAzq40WAu7fJIXnQpYxFPbJYtsJPWvGeF2rOBaY/kEuV77AVsX8TsQzKm+A/g==", "license": "MIT", - "peer": true, "dependencies": { "@types/use-sync-external-store": "^0.0.6", "use-sync-external-store": "^1.4.0" @@ -9802,8 +9776,7 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/redux/-/redux-5.0.1.tgz", "integrity": "sha512-M9/ELqF6fy8FwmkpnF0S3YKOqMyoWJ4+CS5Efg2ct3oY9daQvd/Pc71FpGZsVsbl3Cpb+IIcjBDUnnyBdQbq4w==", - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/redux-thunk": { "version": "3.1.0", @@ -10915,31 +10888,12 @@ "url": "https://github.com/sponsors/SuperchupuDev" } }, - "node_modules/tinyglobby/node_modules/fdir": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", - "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12.0.0" - }, - "peerDependencies": { - "picomatch": "^3 || ^4" - }, - "peerDependenciesMeta": { - "picomatch": { - "optional": true - } - } - }, "node_modules/tinyglobby/node_modules/picomatch": { "version": "4.0.4", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=12" }, @@ -11077,7 +11031,6 @@ "integrity": "sha512-X8EX+XV4QR5xCsrgxaED954zTDfY8KqlDtskKEL0cHhyS/P8b4IFOvGDQpsC9Q1XnLq915wEfwwY/zzskCtmhg==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "esbuild": "~0.28.0" }, @@ -11202,7 +11155,6 @@ "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", "dev": true, "license": "Apache-2.0", - "peer": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -11408,7 +11360,6 @@ "integrity": "sha512-h9bXPmJichP5fLmVQo3PyaGSDE2n3aPuomeAlVRm0JLmt4rY6zmPKd59HYI4LNW8oTK7tlTsuC7l/m7awx9Jcw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "lightningcss": "^1.32.0", "picomatch": "^4.0.4", @@ -11500,7 +11451,6 @@ "integrity": "sha512-flY6ScbCIt9HThs+C5HS7jvGOB560DJtk/Z15IQROTA6zEy49Nh8T/dofWTQL+n3vswqn87sbJNiuqw1SDp5Ig==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@vitest/expect": "4.1.8", "@vitest/mocker": "4.1.8", @@ -11876,7 +11826,6 @@ "resolved": "https://registry.npmjs.org/zod/-/zod-4.4.3.tgz", "integrity": "sha512-ytENFjIJFl2UwYglde2jchW2Hwm4GJFLDiSXWdTrJQBIN9Fcyp7n4DhxJEiWNAJMV1/BqWfW/kkg71UDcHJyTQ==", "license": "MIT", - "peer": true, "funding": { "url": "https://github.com/sponsors/colinhacks" } From ea36ab193a7f08993b8726cf3e563762c860c6e5 Mon Sep 17 00:00:00 2001 From: ChetanSenta Date: Sun, 7 Jun 2026 10:49:48 +0530 Subject: [PATCH 2/3] chore: update package-lock.json to sync picomatch --- package-lock.json | 156 +++++++++++++++++++++++++--------------------- 1 file changed, 85 insertions(+), 71 deletions(-) diff --git a/package-lock.json b/package-lock.json index 3976d087e..100226509 100644 --- a/package-lock.json +++ b/package-lock.json @@ -3231,9 +3231,9 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "20.19.41", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.19.41.tgz", - "integrity": "sha512-ECymXOukMnOoVkC2bb1Vc/w/836DXncOg5m8Xj1RH7xSHZJWNYY6Zh7EH477vcnD5egKNNfy2RpNOmuChhFPgQ==", + "version": "20.19.42", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.19.42.tgz", + "integrity": "sha512-5L7SUaFC1RyDraj2yRhyBzHTobyXHmohD100CChNtyPyleoq37Mqab5Gn8XEKI04dfN/oqPdpHk38MgcQWHbZg==", "dev": true, "license": "MIT", "dependencies": { @@ -3264,10 +3264,10 @@ "optional": true }, "node_modules/@types/react": { - "version": "19.2.16", - "resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.16.tgz", - "integrity": "sha512-esJiCAnl0kfpNdE69f3So4WJUXy95dLZydX0KwK46riIHDzHM7O9Vtf9xCHW0PXIqvgqNrswl522kA/5yx+F4w==", - "dev": true, + "version": "19.2.17", + "resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.17.tgz", + "integrity": "sha512-MXfmqaVPEVgkBT/aY0aGCkRWWtByiYQXo3xdQ8r5RzuFrPiRn8Gar2tQdXSUQ2GKV3bkXckek89V8wQBY2Q/Aw==", + "devOptional": true, "license": "MIT", "dependencies": { "csstype": "^3.2.2" @@ -4595,9 +4595,9 @@ "license": "MIT" }, "node_modules/baseline-browser-mapping": { - "version": "2.10.32", - "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.32.tgz", - "integrity": "sha512-wbPvpyjJPC0zdfdKXxqEL3Ea+bOMD/87X4lftiJkkaBiuG6ALQy1SLmEd7BSmVCuwCQsBrCamgBoLyfFDD1EPg==", + "version": "2.10.34", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.34.tgz", + "integrity": "sha512-IMDedajPifLnHNY0X9n8hKxRTQ6/eTHwr5bDo04WnuqxyKw6LYtQywCuuqPZwhl3aBXMvQpJov42GLCwRRdQzw==", "license": "Apache-2.0", "bin": { "baseline-browser-mapping": "dist/cli.cjs" @@ -4760,9 +4760,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001793", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001793.tgz", - "integrity": "sha512-iwSsYWaCOoh26cV8NwNRViHlrfUvYsHDfRVcbtmw0Kg6PJIZZXwMkj1442FYLBGkeUf1juAsU3DTfxW579mrPA==", + "version": "1.0.30001797", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001797.tgz", + "integrity": "sha512-l8xKG+gwAIExZGl9FrF7KUwuOmk6wbEPC9Xoy/RtnWv1XG0Q4LFlagaLpUv3Kiza3W/wm27zy0yWJEieYKAP6w==", "funding": [ { "type": "opencollective", @@ -5494,9 +5494,9 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.5.362", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.362.tgz", - "integrity": "sha512-PUY2DrLvkjkUuWqq+KPL2iWshrJsZOcIojzRQ7eXFacc9dWga7MGMJAa15VbiejSZB1PAXaRLAiKgruHP8LB1w==", + "version": "1.5.368", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.368.tgz", + "integrity": "sha512-7RckJJK4uESJF9PxvfMWd3TGqIiieUTG4HxnKaKuIpGbcr+r2ZEB3g2gAhCP3Fqm42vJSzLfgab9eva/C4/XVw==", "dev": true, "license": "ISC" }, @@ -5508,9 +5508,9 @@ "license": "MIT" }, "node_modules/enhanced-resolve": { - "version": "5.22.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.22.0.tgz", - "integrity": "sha512-xYcDWrpELkFzz9SpZ3PlI6Eu6eD93Yf0WLDRxikGhWJ3MAir2SNZTIVCVZqZ/NUyx8AdMc2gT9C0gPiw18kG+A==", + "version": "5.23.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.23.0.tgz", + "integrity": "sha512-yJN/BOOLxcOW2aQgeif9mSnaUB8KtvmMMp56oA1kx1CRfBKbhZm2pJ+NBY+3eOboHxix8lfjWpHE0Ei5U8RbSA==", "license": "MIT", "dependencies": { "graceful-fs": "^4.2.4", @@ -6359,24 +6359,6 @@ "reusify": "^1.0.4" } }, - "node_modules/fdir": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", - "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12.0.0" - }, - "peerDependencies": { - "picomatch": "^3 || ^4" - }, - "peerDependenciesMeta": { - "picomatch": { - "optional": true - } - } - }, "node_modules/fflate": { "version": "0.8.3", "resolved": "https://registry.npmjs.org/fflate/-/fflate-0.8.3.tgz", @@ -7536,10 +7518,9 @@ } }, "node_modules/isarray": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", - "dev": true, + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", "license": "MIT" }, "node_modules/isexe": { @@ -9644,10 +9625,9 @@ } }, "node_modules/react-is": { - "version": "19.2.6", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-19.2.6.tgz", - "integrity": "sha512-XjBR15BhXuylgWGuslhDKqlSayuqvqBX91BP8pauG8kd1zY8kotkNWbXksTCNRarse4kuGbe2kIY05ARtwNIvw==", - "dev": true, + "version": "19.2.7", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-19.2.7.tgz", + "integrity": "sha512-kZFnouyVv7eP/Phmrlo9FK+zcAdriZJvzxXHF1Sl1P377WSGe2G/JxVolhTrB/jeV47lKImhNUsijjHAAbcl/A==", "license": "MIT" }, "node_modules/react-kapsule": { @@ -9716,12 +9696,6 @@ "util-deprecate": "~1.0.1" } }, - "node_modules/readable-stream/node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "license": "MIT" - }, "node_modules/readable-stream/node_modules/safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", @@ -10054,6 +10028,13 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/safe-array-concat/node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true, + "license": "MIT" + }, "node_modules/safe-buffer": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", @@ -10092,6 +10073,13 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/safe-push-apply/node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true, + "license": "MIT" + }, "node_modules/safe-regex-test": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz", @@ -10612,19 +10600,20 @@ } }, "node_modules/string.prototype.trim": { - "version": "1.2.10", - "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.10.tgz", - "integrity": "sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==", + "version": "1.2.11", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.11.tgz", + "integrity": "sha512-PwvK7BU+CMTJGYQCTZb5RWXIML92lftJLhQz1tBzgKiqGxJaMlBAa48POXaNAC2s4y8jr3EFqrkF9+44neS46w==", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.2", + "call-bind": "^1.0.9", + "call-bound": "^1.0.4", "define-data-property": "^1.1.4", "define-properties": "^1.2.1", - "es-abstract": "^1.23.5", - "es-object-atoms": "^1.0.0", - "has-property-descriptors": "^1.0.2" + "es-abstract": "^1.24.2", + "es-object-atoms": "^1.1.2", + "has-property-descriptors": "^1.0.2", + "safe-regex-test": "^1.1.0" }, "engines": { "node": ">= 0.4" @@ -10634,16 +10623,16 @@ } }, "node_modules/string.prototype.trimend": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.9.tgz", - "integrity": "sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==", + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.10.tgz", + "integrity": "sha512-2+3aDAOmPTmuFwjDnmJG2ctEkQKVki7vOSqaxkv42Mowj1V6PnvuwFCRrR5lChUux1TBskPjfkeTOhqczDMxTw==", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.2", + "call-bind": "^1.0.9", + "call-bound": "^1.0.4", "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0" + "es-object-atoms": "^1.1.2" }, "engines": { "node": ">= 0.4" @@ -10888,6 +10877,24 @@ "url": "https://github.com/sponsors/SuperchupuDev" } }, + "node_modules/tinyglobby/node_modules/fdir": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, "node_modules/tinyglobby/node_modules/picomatch": { "version": "4.0.4", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", @@ -11213,9 +11220,9 @@ "license": "MIT" }, "node_modules/undici": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/undici/-/undici-7.27.1.tgz", - "integrity": "sha512-UDdpiex+mzigiyrXrGbiUaF4HzTNhKbh2vRNFaTMzcqmLIPrZxaCtwo/1TMSuWoM1Xz3WiTo9KdgI3kRqYzJGg==", + "version": "7.27.2", + "resolved": "https://registry.npmjs.org/undici/-/undici-7.27.2.tgz", + "integrity": "sha512-uZsKNuzQxDMUY6M3pIMvy5tvlGmtq8XJ2oLAkfRKGNu+1VQAIvLy2xIVG5ATZl5wDXl/tddByAWCizRbOme+TA==", "dev": true, "license": "MIT", "engines": { @@ -11660,6 +11667,13 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/which-builtin-type/node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true, + "license": "MIT" + }, "node_modules/which-collection": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz", @@ -11680,9 +11694,9 @@ } }, "node_modules/which-typed-array": { - "version": "1.1.21", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.21.tgz", - "integrity": "sha512-zbRA8cVm6io/d5W8uIe2hblzN76/Wm3v/yiythQvr+dpBWeqhPSWIDNj4zOyHi4zKbMK6DN34Xsr9jPHJERAEw==", + "version": "1.1.22", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.22.tgz", + "integrity": "sha512-fvO4ExWMFsqyhG3AiPAObMuY1lxaqgYcxbc49CNdWDDECOJNgQyvsOWVwbZc+qf3rzRtxojBK+CMEv0Ld5CYpw==", "dev": true, "license": "MIT", "dependencies": { From d8d9d9c7ae76cf8bdbda9620dd5b3da1ff1858d3 Mon Sep 17 00:00:00 2001 From: Chetan Senta Date: Thu, 11 Jun 2026 22:21:32 +0530 Subject: [PATCH 3/3] Update themes.test.ts --- lib/svg/themes.test.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/svg/themes.test.ts b/lib/svg/themes.test.ts index 736b124a9..00dbb5a9a 100644 --- a/lib/svg/themes.test.ts +++ b/lib/svg/themes.test.ts @@ -45,7 +45,7 @@ describe('theme count', () => { // If this fails, either a theme was added to themes.ts without updating // THEMES.md, or a theme was removed without updating the docs. // Update this count when intentionally adding/removing themes. - expect(themeNames).toHaveLength(24); + expect(themeNames).toHaveLength(25); }); it('contains all expected theme keys', () => {