mirror of
https://github.com/Memo-2023/mana-monorepo.git
synced 2026-05-14 20:01:09 +02:00
feat(infra): add workspace dependency audit script
New script scans source imports vs package.json deps to catch missing workspace dependencies that work locally but break in Docker. Fixed: manadeck-web and presi-web missing shared-stores. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
bf7517d24d
commit
f2488f86fe
5 changed files with 696 additions and 231 deletions
|
|
@ -7,6 +7,7 @@ interface AppDefinition {
|
|||
score: number;
|
||||
status: AppStatus;
|
||||
categories: CategoryScores;
|
||||
previousScore?: number;
|
||||
}
|
||||
|
||||
function getPlantType(status: AppStatus, score: number): PlantType {
|
||||
|
|
@ -19,37 +20,40 @@ function getPlantType(status: AppStatus, score: number): PlantType {
|
|||
return 'youngTree';
|
||||
}
|
||||
|
||||
// Real ManaScore data from 2026-03-24 audits
|
||||
const APP_DEFINITIONS: AppDefinition[] = [
|
||||
{
|
||||
id: 'calendar',
|
||||
displayName: 'Calendar',
|
||||
score: 97,
|
||||
previousScore: 82,
|
||||
status: 'mature',
|
||||
categories: {
|
||||
backend: 95,
|
||||
frontend: 96,
|
||||
database: 95,
|
||||
testing: 98,
|
||||
deployment: 100,
|
||||
database: 92,
|
||||
testing: 90,
|
||||
deployment: 92,
|
||||
documentation: 98,
|
||||
security: 95,
|
||||
ux: 98,
|
||||
security: 92,
|
||||
ux: 95,
|
||||
},
|
||||
},
|
||||
{
|
||||
id: 'todo',
|
||||
displayName: 'Todo',
|
||||
score: 96,
|
||||
previousScore: 80,
|
||||
status: 'mature',
|
||||
categories: {
|
||||
backend: 94,
|
||||
frontend: 95,
|
||||
database: 95,
|
||||
testing: 97,
|
||||
deployment: 98,
|
||||
database: 88,
|
||||
testing: 90,
|
||||
deployment: 92,
|
||||
documentation: 95,
|
||||
security: 95,
|
||||
ux: 96,
|
||||
security: 90,
|
||||
ux: 94,
|
||||
},
|
||||
},
|
||||
{
|
||||
|
|
@ -60,12 +64,12 @@ const APP_DEFINITIONS: AppDefinition[] = [
|
|||
categories: {
|
||||
backend: 92,
|
||||
frontend: 90,
|
||||
database: 95,
|
||||
testing: 92,
|
||||
deployment: 95,
|
||||
documentation: 95,
|
||||
security: 95,
|
||||
ux: 94,
|
||||
database: 88,
|
||||
testing: 88,
|
||||
deployment: 90,
|
||||
documentation: 92,
|
||||
security: 85,
|
||||
ux: 85,
|
||||
},
|
||||
},
|
||||
{
|
||||
|
|
@ -93,27 +97,28 @@ const APP_DEFINITIONS: AppDefinition[] = [
|
|||
backend: 90,
|
||||
frontend: 82,
|
||||
database: 85,
|
||||
testing: 80,
|
||||
deployment: 90,
|
||||
documentation: 85,
|
||||
testing: 82,
|
||||
deployment: 75,
|
||||
documentation: 90,
|
||||
security: 85,
|
||||
ux: 88,
|
||||
ux: 82,
|
||||
},
|
||||
},
|
||||
{
|
||||
id: 'storage',
|
||||
displayName: 'Storage',
|
||||
score: 84,
|
||||
previousScore: 55,
|
||||
status: 'production',
|
||||
categories: {
|
||||
backend: 88,
|
||||
frontend: 84,
|
||||
database: 82,
|
||||
testing: 78,
|
||||
deployment: 88,
|
||||
documentation: 82,
|
||||
security: 85,
|
||||
ux: 82,
|
||||
deployment: 65,
|
||||
documentation: 78,
|
||||
security: 78,
|
||||
ux: 75,
|
||||
},
|
||||
},
|
||||
{
|
||||
|
|
@ -124,12 +129,12 @@ const APP_DEFINITIONS: AppDefinition[] = [
|
|||
categories: {
|
||||
backend: 90,
|
||||
frontend: 82,
|
||||
database: 80,
|
||||
testing: 68,
|
||||
deployment: 88,
|
||||
database: 95,
|
||||
testing: 60,
|
||||
deployment: 92,
|
||||
documentation: 85,
|
||||
security: 80,
|
||||
ux: 78,
|
||||
security: 82,
|
||||
ux: 80,
|
||||
},
|
||||
},
|
||||
{
|
||||
|
|
@ -140,12 +145,12 @@ const APP_DEFINITIONS: AppDefinition[] = [
|
|||
categories: {
|
||||
backend: 90,
|
||||
frontend: 80,
|
||||
database: 75,
|
||||
testing: 65,
|
||||
deployment: 85,
|
||||
documentation: 82,
|
||||
security: 82,
|
||||
ux: 80,
|
||||
database: 92,
|
||||
testing: 55,
|
||||
deployment: 75,
|
||||
documentation: 78,
|
||||
security: 80,
|
||||
ux: 78,
|
||||
},
|
||||
},
|
||||
{
|
||||
|
|
@ -156,12 +161,12 @@ const APP_DEFINITIONS: AppDefinition[] = [
|
|||
categories: {
|
||||
backend: 90,
|
||||
frontend: 78,
|
||||
database: 80,
|
||||
testing: 60,
|
||||
database: 90,
|
||||
testing: 65,
|
||||
deployment: 85,
|
||||
documentation: 78,
|
||||
security: 80,
|
||||
ux: 80,
|
||||
documentation: 80,
|
||||
security: 78,
|
||||
ux: 60,
|
||||
},
|
||||
},
|
||||
{
|
||||
|
|
@ -172,12 +177,12 @@ const APP_DEFINITIONS: AppDefinition[] = [
|
|||
categories: {
|
||||
backend: 10,
|
||||
frontend: 78,
|
||||
database: 60,
|
||||
testing: 50,
|
||||
deployment: 85,
|
||||
documentation: 70,
|
||||
security: 75,
|
||||
ux: 72,
|
||||
database: 20,
|
||||
testing: 12,
|
||||
deployment: 92,
|
||||
documentation: 92,
|
||||
security: 88,
|
||||
ux: 82,
|
||||
},
|
||||
},
|
||||
{
|
||||
|
|
@ -188,12 +193,12 @@ const APP_DEFINITIONS: AppDefinition[] = [
|
|||
categories: {
|
||||
backend: 78,
|
||||
frontend: 62,
|
||||
database: 65,
|
||||
testing: 42,
|
||||
deployment: 70,
|
||||
documentation: 58,
|
||||
security: 62,
|
||||
ux: 65,
|
||||
database: 80,
|
||||
testing: 58,
|
||||
deployment: 40,
|
||||
documentation: 85,
|
||||
security: 68,
|
||||
ux: 55,
|
||||
},
|
||||
},
|
||||
{
|
||||
|
|
@ -204,12 +209,12 @@ const APP_DEFINITIONS: AppDefinition[] = [
|
|||
categories: {
|
||||
backend: 82,
|
||||
frontend: 65,
|
||||
database: 60,
|
||||
testing: 38,
|
||||
deployment: 68,
|
||||
documentation: 55,
|
||||
security: 60,
|
||||
ux: 62,
|
||||
database: 72,
|
||||
testing: 0,
|
||||
deployment: 85,
|
||||
documentation: 78,
|
||||
security: 65,
|
||||
ux: 55,
|
||||
},
|
||||
},
|
||||
{
|
||||
|
|
@ -220,12 +225,12 @@ const APP_DEFINITIONS: AppDefinition[] = [
|
|||
categories: {
|
||||
backend: 72,
|
||||
frontend: 78,
|
||||
database: 60,
|
||||
testing: 38,
|
||||
deployment: 68,
|
||||
documentation: 55,
|
||||
security: 58,
|
||||
ux: 65,
|
||||
database: 75,
|
||||
testing: 0,
|
||||
deployment: 92,
|
||||
documentation: 20,
|
||||
security: 70,
|
||||
ux: 75,
|
||||
},
|
||||
},
|
||||
{
|
||||
|
|
@ -236,12 +241,12 @@ const APP_DEFINITIONS: AppDefinition[] = [
|
|||
categories: {
|
||||
backend: 75,
|
||||
frontend: 75,
|
||||
database: 55,
|
||||
testing: 32,
|
||||
deployment: 65,
|
||||
documentation: 52,
|
||||
security: 58,
|
||||
ux: 60,
|
||||
database: 82,
|
||||
testing: 55,
|
||||
deployment: 25,
|
||||
documentation: 85,
|
||||
security: 68,
|
||||
ux: 65,
|
||||
},
|
||||
},
|
||||
{
|
||||
|
|
@ -252,12 +257,12 @@ const APP_DEFINITIONS: AppDefinition[] = [
|
|||
categories: {
|
||||
backend: 75,
|
||||
frontend: 70,
|
||||
database: 55,
|
||||
testing: 30,
|
||||
deployment: 62,
|
||||
documentation: 48,
|
||||
security: 55,
|
||||
ux: 58,
|
||||
database: 72,
|
||||
testing: 0,
|
||||
deployment: 88,
|
||||
documentation: 10,
|
||||
security: 60,
|
||||
ux: 55,
|
||||
},
|
||||
},
|
||||
{
|
||||
|
|
@ -268,12 +273,12 @@ const APP_DEFINITIONS: AppDefinition[] = [
|
|||
categories: {
|
||||
backend: 65,
|
||||
frontend: 68,
|
||||
database: 55,
|
||||
testing: 35,
|
||||
deployment: 60,
|
||||
documentation: 50,
|
||||
security: 55,
|
||||
ux: 60,
|
||||
database: 72,
|
||||
testing: 28,
|
||||
deployment: 55,
|
||||
documentation: 62,
|
||||
security: 65,
|
||||
ux: 72,
|
||||
},
|
||||
},
|
||||
{
|
||||
|
|
@ -284,11 +289,11 @@ const APP_DEFINITIONS: AppDefinition[] = [
|
|||
categories: {
|
||||
backend: 68,
|
||||
frontend: 58,
|
||||
database: 45,
|
||||
testing: 25,
|
||||
deployment: 55,
|
||||
documentation: 42,
|
||||
security: 48,
|
||||
database: 70,
|
||||
testing: 0,
|
||||
deployment: 45,
|
||||
documentation: 62,
|
||||
security: 55,
|
||||
ux: 50,
|
||||
},
|
||||
},
|
||||
|
|
@ -300,12 +305,12 @@ const APP_DEFINITIONS: AppDefinition[] = [
|
|||
categories: {
|
||||
backend: 50,
|
||||
frontend: 65,
|
||||
database: 42,
|
||||
testing: 28,
|
||||
deployment: 52,
|
||||
documentation: 45,
|
||||
security: 42,
|
||||
ux: 55,
|
||||
database: 30,
|
||||
testing: 18,
|
||||
deployment: 80,
|
||||
documentation: 25,
|
||||
security: 55,
|
||||
ux: 68,
|
||||
},
|
||||
},
|
||||
{
|
||||
|
|
@ -316,12 +321,12 @@ const APP_DEFINITIONS: AppDefinition[] = [
|
|||
categories: {
|
||||
backend: 88,
|
||||
frontend: 62,
|
||||
database: 40,
|
||||
testing: 20,
|
||||
deployment: 45,
|
||||
documentation: 38,
|
||||
security: 40,
|
||||
ux: 42,
|
||||
database: 78,
|
||||
testing: 0,
|
||||
deployment: 10,
|
||||
documentation: 72,
|
||||
security: 55,
|
||||
ux: 55,
|
||||
},
|
||||
},
|
||||
{
|
||||
|
|
@ -332,12 +337,12 @@ const APP_DEFINITIONS: AppDefinition[] = [
|
|||
categories: {
|
||||
backend: 72,
|
||||
frontend: 10,
|
||||
database: 35,
|
||||
testing: 15,
|
||||
deployment: 40,
|
||||
documentation: 30,
|
||||
security: 35,
|
||||
ux: 25,
|
||||
database: 70,
|
||||
testing: 0,
|
||||
deployment: 8,
|
||||
documentation: 45,
|
||||
security: 55,
|
||||
ux: 35,
|
||||
},
|
||||
},
|
||||
];
|
||||
|
|
@ -345,6 +350,7 @@ const APP_DEFINITIONS: AppDefinition[] = [
|
|||
export function createMockEcosystem(): AppData[] {
|
||||
return APP_DEFINITIONS.map((def) => {
|
||||
const pos = APP_POSITIONS[def.id] || { x: 800, y: 500, lakeId: 'auth' };
|
||||
const trend = def.previousScore ? def.score - def.previousScore : 0;
|
||||
return {
|
||||
id: def.id,
|
||||
name: def.id,
|
||||
|
|
@ -354,7 +360,7 @@ export function createMockEcosystem(): AppData[] {
|
|||
health: 'up' as const,
|
||||
plantType: getPlantType(def.status, def.score),
|
||||
categories: def.categories,
|
||||
trend: 0,
|
||||
trend,
|
||||
lakeId: pos.lakeId,
|
||||
position: { x: pos.x, y: pos.y },
|
||||
};
|
||||
|
|
|
|||
|
|
@ -34,13 +34,14 @@
|
|||
"@manacore/shared-auth": "workspace:*",
|
||||
"@manacore/shared-auth-ui": "workspace:*",
|
||||
"@manacore/shared-branding": "workspace:*",
|
||||
"@manacore/shared-config": "workspace:*",
|
||||
"@manacore/shared-error-tracking": "workspace:*",
|
||||
"@manacore/shared-feedback-service": "workspace:*",
|
||||
"@manacore/shared-feedback-ui": "workspace:*",
|
||||
"@manacore/shared-config": "workspace:*",
|
||||
"@manacore/shared-i18n": "workspace:*",
|
||||
"@manacore/shared-icons": "workspace:*",
|
||||
"@manacore/shared-profile-ui": "workspace:*",
|
||||
"@manacore/shared-stores": "workspace:*",
|
||||
"@manacore/shared-subscription-types": "workspace:*",
|
||||
"@manacore/shared-subscription-ui": "workspace:*",
|
||||
"@manacore/shared-tailwind": "workspace:*",
|
||||
|
|
|
|||
|
|
@ -31,7 +31,6 @@
|
|||
"vite": "^6.0.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"@presi/shared": "workspace:*",
|
||||
"@manacore/shared-app-onboarding": "workspace:*",
|
||||
"@manacore/shared-auth": "workspace:*",
|
||||
"@manacore/shared-auth-ui": "workspace:*",
|
||||
|
|
@ -42,12 +41,14 @@
|
|||
"@manacore/shared-i18n": "workspace:*",
|
||||
"@manacore/shared-icons": "workspace:*",
|
||||
"@manacore/shared-profile-ui": "workspace:*",
|
||||
"@manacore/shared-stores": "workspace:*",
|
||||
"@manacore/shared-subscription-ui": "workspace:*",
|
||||
"@manacore/shared-tailwind": "workspace:*",
|
||||
"@manacore/shared-theme": "workspace:*",
|
||||
"@manacore/shared-theme-ui": "workspace:*",
|
||||
"@manacore/shared-ui": "workspace:*",
|
||||
"@manacore/shared-utils": "workspace:*",
|
||||
"@presi/shared": "workspace:*",
|
||||
"svelte-i18n": "^4.0.1"
|
||||
},
|
||||
"type": "module"
|
||||
|
|
|
|||
377
pnpm-lock.yaml
generated
377
pnpm-lock.yaml
generated
|
|
@ -1038,7 +1038,7 @@ importers:
|
|||
version: 6.4.1(@types/node@20.19.25)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.1)
|
||||
vitest:
|
||||
specifier: ^4.1.1
|
||||
version: 4.1.1(@opentelemetry/api@1.9.0)(@types/node@20.19.25)(jsdom@27.2.0)(vite@6.4.1(@types/node@20.19.25)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.1))
|
||||
version: 4.1.1(@opentelemetry/api@1.9.0)(@types/node@20.19.25)(jsdom@29.0.1(@noble/hashes@2.0.1))(vite@6.4.1(@types/node@20.19.25)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.1))
|
||||
|
||||
apps/clock/apps/backend:
|
||||
dependencies:
|
||||
|
|
@ -2324,7 +2324,7 @@ importers:
|
|||
version: 6.4.1(@types/node@22.19.1)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.1)
|
||||
vitest:
|
||||
specifier: ^4.0.14
|
||||
version: 4.0.14(@opentelemetry/api@1.9.0)(@types/node@22.19.1)(@vitest/ui@4.0.14)(jiti@2.6.1)(jsdom@27.2.0)(lightningcss@1.30.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.1)
|
||||
version: 4.0.14(@opentelemetry/api@1.9.0)(@types/node@22.19.1)(@vitest/ui@4.0.14)(jiti@2.6.1)(jsdom@29.0.1(@noble/hashes@2.0.1))(lightningcss@1.30.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.1)
|
||||
|
||||
apps/manadeck/apps/backend:
|
||||
dependencies:
|
||||
|
|
@ -2685,6 +2685,9 @@ importers:
|
|||
'@manacore/shared-profile-ui':
|
||||
specifier: workspace:*
|
||||
version: link:../../../../packages/shared-profile-ui
|
||||
'@manacore/shared-stores':
|
||||
specifier: workspace:*
|
||||
version: link:../../../../packages/shared-stores
|
||||
'@manacore/shared-subscription-types':
|
||||
specifier: workspace:*
|
||||
version: link:../../../../packages/shared-subscription-types
|
||||
|
|
@ -2992,7 +2995,7 @@ importers:
|
|||
version: 1.2.0(vite@6.4.1(@types/node@22.19.1)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.1))(workbox-build@7.4.0(@types/babel__core@7.20.5))(workbox-window@7.4.0)
|
||||
vitest:
|
||||
specifier: ^4.1.0
|
||||
version: 4.1.0(@opentelemetry/api@1.9.0)(@types/node@22.19.1)(jsdom@27.2.0)(vite@6.4.1(@types/node@22.19.1)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.1))
|
||||
version: 4.1.0(@opentelemetry/api@1.9.0)(@types/node@22.19.1)(jsdom@29.0.1(@noble/hashes@2.0.1))(vite@6.4.1(@types/node@22.19.1)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.1))
|
||||
workbox-window:
|
||||
specifier: ^7.4.0
|
||||
version: 7.4.0
|
||||
|
|
@ -3245,7 +3248,7 @@ importers:
|
|||
version: 4.1.17(vite@6.4.1(@types/node@20.19.25)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.1))
|
||||
'@testing-library/svelte':
|
||||
specifier: ^5.2.6
|
||||
version: 5.3.1(svelte@5.44.0)(vite@6.4.1(@types/node@20.19.25)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.1))(vitest@4.1.0(@opentelemetry/api@1.9.0)(@types/node@20.19.25)(jsdom@27.2.0)(vite@6.4.1(@types/node@20.19.25)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.1)))
|
||||
version: 5.3.1(svelte@5.44.0)(vite@6.4.1(@types/node@20.19.25)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.1))(vitest@4.1.0(@opentelemetry/api@1.9.0)(@types/node@20.19.25)(jsdom@29.0.1(@noble/hashes@2.0.1))(vite@6.4.1(@types/node@20.19.25)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.1)))
|
||||
'@types/node':
|
||||
specifier: ^20.0.0
|
||||
version: 20.19.25
|
||||
|
|
@ -3278,7 +3281,7 @@ importers:
|
|||
version: 6.4.1(@types/node@20.19.25)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.1)
|
||||
vitest:
|
||||
specifier: ^4.1.0
|
||||
version: 4.1.0(@opentelemetry/api@1.9.0)(@types/node@20.19.25)(jsdom@27.2.0)(vite@6.4.1(@types/node@20.19.25)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.1))
|
||||
version: 4.1.0(@opentelemetry/api@1.9.0)(@types/node@20.19.25)(jsdom@29.0.1(@noble/hashes@2.0.1))(vite@6.4.1(@types/node@20.19.25)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.1))
|
||||
|
||||
apps/mukke/packages/shared:
|
||||
devDependencies:
|
||||
|
|
@ -3590,7 +3593,7 @@ importers:
|
|||
version: 5.9.3
|
||||
vitest:
|
||||
specifier: ^2.1.8
|
||||
version: 2.1.9(@types/node@24.10.1)(jsdom@27.2.0)(lightningcss@1.30.2)(terser@5.44.1)
|
||||
version: 2.1.9(@types/node@24.10.1)(jsdom@29.0.1(@noble/hashes@2.0.1))(lightningcss@1.30.2)(terser@5.44.1)
|
||||
|
||||
apps/photos:
|
||||
devDependencies:
|
||||
|
|
@ -4846,6 +4849,9 @@ importers:
|
|||
'@manacore/shared-profile-ui':
|
||||
specifier: workspace:*
|
||||
version: link:../../../../packages/shared-profile-ui
|
||||
'@manacore/shared-stores':
|
||||
specifier: workspace:*
|
||||
version: link:../../../../packages/shared-stores
|
||||
'@manacore/shared-subscription-ui':
|
||||
specifier: workspace:*
|
||||
version: link:../../../../packages/shared-subscription-ui
|
||||
|
|
@ -6552,7 +6558,7 @@ importers:
|
|||
version: 5.9.3
|
||||
vitest:
|
||||
specifier: ^3.0.5
|
||||
version: 3.2.4(@types/debug@4.1.12)(@types/node@24.10.1)(@vitest/browser@3.2.4)(@vitest/ui@3.2.4)(jiti@2.6.1)(jsdom@27.2.0)(lightningcss@1.30.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.1)
|
||||
version: 3.2.4(@types/debug@4.1.12)(@types/node@24.10.1)(@vitest/browser@3.2.4)(@vitest/ui@3.2.4)(jiti@2.6.1)(jsdom@29.0.1(@noble/hashes@2.0.1))(lightningcss@1.30.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.1)
|
||||
|
||||
packages/shared-api-client:
|
||||
dependencies:
|
||||
|
|
@ -6790,10 +6796,16 @@ importers:
|
|||
gray-matter:
|
||||
specifier: ^4.0.3
|
||||
version: 4.0.3
|
||||
isomorphic-dompurify:
|
||||
specifier: ^3.7.1
|
||||
version: 3.7.1(@noble/hashes@2.0.1)
|
||||
marked:
|
||||
specifier: ^15.0.4
|
||||
version: 15.0.12
|
||||
devDependencies:
|
||||
'@types/dompurify':
|
||||
specifier: ^3.2.0
|
||||
version: 3.2.0
|
||||
'@types/node':
|
||||
specifier: ^22.10.2
|
||||
version: 22.19.1
|
||||
|
|
@ -6931,7 +6943,7 @@ importers:
|
|||
version: 5.9.3
|
||||
vitest:
|
||||
specifier: ^2.0.0
|
||||
version: 2.1.9(@types/node@20.19.25)(jsdom@27.2.0)(lightningcss@1.30.2)(terser@5.44.1)
|
||||
version: 2.1.9(@types/node@20.19.25)(jsdom@29.0.1(@noble/hashes@2.0.1))(lightningcss@1.30.2)(terser@5.44.1)
|
||||
|
||||
packages/shared-logger:
|
||||
devDependencies:
|
||||
|
|
@ -7078,7 +7090,7 @@ importers:
|
|||
version: 5.9.3
|
||||
vitest:
|
||||
specifier: ^4.1.0
|
||||
version: 4.1.0(@opentelemetry/api@1.9.0)(@types/node@24.10.1)(jsdom@27.2.0)(vite@7.2.4(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.1))
|
||||
version: 4.1.0(@opentelemetry/api@1.9.0)(@types/node@24.10.1)(jsdom@29.0.1(@noble/hashes@2.0.1))(vite@7.2.4(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.1))
|
||||
|
||||
packages/shared-stores:
|
||||
dependencies:
|
||||
|
|
@ -7261,7 +7273,7 @@ importers:
|
|||
version: 5.9.3
|
||||
vitest:
|
||||
specifier: ^1.6.1
|
||||
version: 1.6.1(@types/node@20.19.25)(jsdom@27.2.0)(lightningcss@1.30.2)(terser@5.44.1)
|
||||
version: 1.6.1(@types/node@20.19.25)(jsdom@29.0.1(@noble/hashes@2.0.1))(lightningcss@1.30.2)(terser@5.44.1)
|
||||
|
||||
packages/test-config:
|
||||
dependencies:
|
||||
|
|
@ -7273,7 +7285,7 @@ importers:
|
|||
version: 29.7.0(@types/node@24.10.1)(ts-node@10.9.2(@types/node@24.10.1)(typescript@5.9.3))
|
||||
vitest:
|
||||
specifier: ^3.0.0
|
||||
version: 3.2.4(@types/debug@4.1.12)(@types/node@24.10.1)(@vitest/browser@3.2.4)(@vitest/ui@3.2.4)(jiti@2.6.1)(jsdom@27.2.0)(lightningcss@1.30.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.1)
|
||||
version: 3.2.4(@types/debug@4.1.12)(@types/node@24.10.1)(@vitest/browser@3.2.4)(@vitest/ui@3.2.4)(jiti@2.6.1)(jsdom@29.0.1(@noble/hashes@2.0.1))(lightningcss@1.30.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.1)
|
||||
devDependencies:
|
||||
'@types/node':
|
||||
specifier: ^24.10.1
|
||||
|
|
@ -7299,7 +7311,7 @@ importers:
|
|||
version: 5.9.3
|
||||
vitest:
|
||||
specifier: ^3.0.5
|
||||
version: 3.2.4(@types/debug@4.1.12)(@types/node@24.10.1)(@vitest/browser@3.2.4)(@vitest/ui@3.2.4)(jiti@2.6.1)(jsdom@27.2.0)(lightningcss@1.30.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.1)
|
||||
version: 3.2.4(@types/debug@4.1.12)(@types/node@24.10.1)(@vitest/browser@3.2.4)(@vitest/ui@3.2.4)(jiti@2.6.1)(jsdom@29.0.1(@noble/hashes@2.0.1))(lightningcss@1.30.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.1)
|
||||
|
||||
services/it-landing:
|
||||
dependencies:
|
||||
|
|
@ -8953,9 +8965,6 @@ packages:
|
|||
graphql:
|
||||
optional: true
|
||||
|
||||
'@acemir/cssom@0.9.24':
|
||||
resolution: {integrity: sha512-5YjgMmAiT2rjJZU7XK1SNI7iqTy92DpaYVgG6x63FxkJ11UpYfLndHJATtinWJClAXiOlW9XWaUyAQf8pMrQPg==}
|
||||
|
||||
'@adobe/css-tools@4.4.4':
|
||||
resolution: {integrity: sha512-Elp+iwUx5rN5+Y8xLt5/GRoG20WGoDCQ/1Fb+1LiGtvwbDavuSk0jhD/eZdckHAuzcDzccnkv+rEjyWfRx18gg==}
|
||||
|
||||
|
|
@ -9027,11 +9036,13 @@ packages:
|
|||
'@asamuzakjp/css-color@3.2.0':
|
||||
resolution: {integrity: sha512-K1A6z8tS3XsmCMM86xoWdn7Fkdn9m6RSVtocUrJYIwZnFVkng/PvkEoWtOWmP+Scc6saYWHWZYbndEEXxl24jw==}
|
||||
|
||||
'@asamuzakjp/css-color@4.1.0':
|
||||
resolution: {integrity: sha512-9xiBAtLn4aNsa4mDnpovJvBn72tNEIACyvlqaNJ+ADemR+yeMJWnBudOi2qGDviJa7SwcDOU/TRh5dnET7qk0w==}
|
||||
'@asamuzakjp/css-color@5.0.1':
|
||||
resolution: {integrity: sha512-2SZFvqMyvboVV1d15lMf7XiI3m7SDqXUuKaTymJYLN6dSGadqp+fVojqJlVoMlbZnlTmu3S0TLwLTJpvBMO1Aw==}
|
||||
engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0}
|
||||
|
||||
'@asamuzakjp/dom-selector@6.7.4':
|
||||
resolution: {integrity: sha512-buQDjkm+wDPXd6c13534URWZqbz0RP5PAhXZ+LIoa5LgwInT9HVJvGIJivg75vi8I13CxDGdTnz+aY5YUJlIAA==}
|
||||
'@asamuzakjp/dom-selector@7.0.4':
|
||||
resolution: {integrity: sha512-jXR6x4AcT3eIrS2fSNAwJpwirOkGcd+E7F7CP3zjdTqz9B/2huHOL8YJZBgekKwLML+u7qB/6P1LXQuMScsx0w==}
|
||||
engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0}
|
||||
|
||||
'@asamuzakjp/nwsapi@2.3.9':
|
||||
resolution: {integrity: sha512-n8GuYSrI9bF7FFZ/SjhwevlHc8xaVlb/7HmHelnc/PZXBD2ZR49NnN9sMMuDdEGPeeRQ5d0hqlSlEpgCX3Wl0Q==}
|
||||
|
|
@ -10189,6 +10200,10 @@ packages:
|
|||
'@borewit/text-codec@0.2.2':
|
||||
resolution: {integrity: sha512-DDaRehssg1aNrH4+2hnj1B7vnUGEjU6OIlyRdkMd0aUdIUvKXrJfXsy8LVtXAy7DRvYVluWbMspsRhz2lcW0mQ==}
|
||||
|
||||
'@bramus/specificity@2.4.2':
|
||||
resolution: {integrity: sha512-ctxtJ/eA+t+6q2++vj5j7FYX3nRu311q1wfYH3xjlLOsczhlhxAg2FWNUXhpGvAw3BWo1xBcvOV6/YLc2r5FJw==}
|
||||
hasBin: true
|
||||
|
||||
'@bull-board/api@6.16.4':
|
||||
resolution: {integrity: sha512-fn4O+QbA3mRj0rEE41mvwbvtiiv0UYgnxQ9ErWb9n74EwIC/yZbiyxQ+Gh/ehU9u7B0PuaNyR0IOG/h3DGo1Mg==}
|
||||
peerDependencies:
|
||||
|
|
@ -10283,6 +10298,10 @@ packages:
|
|||
resolution: {integrity: sha512-S11EXWJyy0Mz5SYvRmY8nJYTFFd1LCNV+7cXyAgQtOOuzb4EsgfqDufL+9esx72/eLhsRdGZwaldu/h+E4t4BA==}
|
||||
engines: {node: '>=18'}
|
||||
|
||||
'@csstools/color-helpers@6.0.2':
|
||||
resolution: {integrity: sha512-LMGQLS9EuADloEFkcTBR3BwV/CGHV7zyDxVRtVDTwdI2Ca4it0CCVTT9wCkxSgokjE5Ho41hEPgb8OEUwoXr6Q==}
|
||||
engines: {node: '>=20.19.0'}
|
||||
|
||||
'@csstools/css-calc@2.1.4':
|
||||
resolution: {integrity: sha512-3N8oaj+0juUw/1H3YwmDDJXCgTB1gKU6Hc/bB502u9zR0q2vd786XJH9QfrKIEgFlZmhZiq6epXl4rHqhzsIgQ==}
|
||||
engines: {node: '>=18'}
|
||||
|
|
@ -10290,6 +10309,13 @@ packages:
|
|||
'@csstools/css-parser-algorithms': ^3.0.5
|
||||
'@csstools/css-tokenizer': ^3.0.4
|
||||
|
||||
'@csstools/css-calc@3.1.1':
|
||||
resolution: {integrity: sha512-HJ26Z/vmsZQqs/o3a6bgKslXGFAungXGbinULZO3eMsOyNJHeBBZfup5FiZInOghgoM4Hwnmw+OgbJCNg1wwUQ==}
|
||||
engines: {node: '>=20.19.0'}
|
||||
peerDependencies:
|
||||
'@csstools/css-parser-algorithms': ^4.0.0
|
||||
'@csstools/css-tokenizer': ^4.0.0
|
||||
|
||||
'@csstools/css-color-parser@3.1.0':
|
||||
resolution: {integrity: sha512-nbtKwh3a6xNVIp/VRuXV64yTKnb1IjTAEEh3irzS+HkKjAOYLTGNb9pmVNntZ8iVBHcWDA2Dof0QtPgFI1BaTA==}
|
||||
engines: {node: '>=18'}
|
||||
|
|
@ -10297,20 +10323,41 @@ packages:
|
|||
'@csstools/css-parser-algorithms': ^3.0.5
|
||||
'@csstools/css-tokenizer': ^3.0.4
|
||||
|
||||
'@csstools/css-color-parser@4.0.2':
|
||||
resolution: {integrity: sha512-0GEfbBLmTFf0dJlpsNU7zwxRIH0/BGEMuXLTCvFYxuL1tNhqzTbtnFICyJLTNK4a+RechKP75e7w42ClXSnJQw==}
|
||||
engines: {node: '>=20.19.0'}
|
||||
peerDependencies:
|
||||
'@csstools/css-parser-algorithms': ^4.0.0
|
||||
'@csstools/css-tokenizer': ^4.0.0
|
||||
|
||||
'@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.17':
|
||||
resolution: {integrity: sha512-LCC++2h8pLUSPY+EsZmrrJ1EOUu+5iClpEiDhhdw3zRJpPbABML/N5lmRuBHjxtKm9VnRcsUzioyD0sekFMF0A==}
|
||||
engines: {node: '>=18'}
|
||||
'@csstools/css-parser-algorithms@4.0.0':
|
||||
resolution: {integrity: sha512-+B87qS7fIG3L5h3qwJ/IFbjoVoOe/bpOdh9hAjXbvx0o8ImEmUsGXN0inFOnk2ChCFgqkkGFQ+TpM5rbhkKe4w==}
|
||||
engines: {node: '>=20.19.0'}
|
||||
peerDependencies:
|
||||
'@csstools/css-tokenizer': ^4.0.0
|
||||
|
||||
'@csstools/css-syntax-patches-for-csstree@1.1.1':
|
||||
resolution: {integrity: sha512-BvqN0AMWNAnLk9G8jnUT77D+mUbY/H2b3uDTvg2isJkHaOufUE2R3AOwxWo7VBQKT1lOdwdvorddo2B/lk64+w==}
|
||||
peerDependencies:
|
||||
css-tree: ^3.2.1
|
||||
peerDependenciesMeta:
|
||||
css-tree:
|
||||
optional: true
|
||||
|
||||
'@csstools/css-tokenizer@3.0.4':
|
||||
resolution: {integrity: sha512-Vd/9EVDiu6PPJt9yAh6roZP6El1xHrdvIVGjyBsHR0RYwNHgL7FJPyIIW4fANJNG6FtyZfvlRPpFI4ZM/lubvw==}
|
||||
engines: {node: '>=18'}
|
||||
|
||||
'@csstools/css-tokenizer@4.0.0':
|
||||
resolution: {integrity: sha512-QxULHAm7cNu72w97JUNCBFODFaXpbDg+dP8b/oWFAZ2MTRppA3U00Y2L1HqaS4J6yBqxwa/Y3nMBaxVKbB/NsA==}
|
||||
engines: {node: '>=20.19.0'}
|
||||
|
||||
'@ctrl/tinycolor@4.2.0':
|
||||
resolution: {integrity: sha512-kzyuwOAQnXJNLS9PSyrk0CWk35nWJW/zl/6KvnTBMFK65gm7U1/Z5BqjxeapjZCIhQcM/DsrEmcbRwDyXyXK4A==}
|
||||
engines: {node: '>=14'}
|
||||
|
|
@ -11461,6 +11508,15 @@ packages:
|
|||
resolution: {integrity: sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA==}
|
||||
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
||||
|
||||
'@exodus/bytes@1.15.0':
|
||||
resolution: {integrity: sha512-UY0nlA+feH81UGSHv92sLEPLCeZFjXOuHhrIo0HQydScuQc8s0A7kL/UdgwgDq8g8ilksmuoF35YVTNphV2aBQ==}
|
||||
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
|
||||
|
||||
'@expo-google-fonts/material-symbols@0.4.25':
|
||||
resolution: {integrity: sha512-MlwOpcYPLYu2+aDAwqv29l3sknNNxA36Jcu07Tg9+MTEvXk2SPcO8eQmwwDeVBbv5Wb6ToD1LmE+e0lLv/9WvA==}
|
||||
|
||||
|
|
@ -15449,6 +15505,10 @@ packages:
|
|||
'@types/deep-eql@4.0.2':
|
||||
resolution: {integrity: sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==}
|
||||
|
||||
'@types/dompurify@3.2.0':
|
||||
resolution: {integrity: sha512-Fgg31wv9QbLDA0SpTOXO3MaxySc4DKGLi8sna4/Utjo4r3ZRPdCt4UQee8BWr+Q5z21yifghREPJGYaEOEIACg==}
|
||||
deprecated: This is a stub types definition. dompurify provides its own type definitions, so you do not need this installed.
|
||||
|
||||
'@types/earcut@3.0.0':
|
||||
resolution: {integrity: sha512-k/9fOUGO39yd2sCjrbAJvGDEQvRwRnQIZlBz43roGwUZo5SHAmyVvSFyaVVZkicRVCaDXPKlbxrUcBuJoSWunQ==}
|
||||
|
||||
|
|
@ -17796,6 +17856,10 @@ packages:
|
|||
resolution: {integrity: sha512-0eW44TGN5SQXU1mWSkKwFstI/22X2bG1nYzZTYMAWjylYURhse752YgbE4Cx46AC+bAvI+/dYTPRk1LqSUnu6w==}
|
||||
engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0}
|
||||
|
||||
css-tree@3.2.1:
|
||||
resolution: {integrity: sha512-X7sjQzceUhu1u7Y/ylrRZFU2FS6LRiFVp6rKLPg23y3x3c3DOKAwuXGDp+PAGjh6CSnCjYeAul8pcT8bAl+lSA==}
|
||||
engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0}
|
||||
|
||||
css-what@6.2.2:
|
||||
resolution: {integrity: sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA==}
|
||||
engines: {node: '>= 6'}
|
||||
|
|
@ -17819,10 +17883,6 @@ packages:
|
|||
resolution: {integrity: sha512-2z+rWdzbbSZv6/rhtvzvqeZQHrBaqgogqt85sqFNbabZOuFbCVFb8kPeEtZjiKkbrm395irpNKiYeFeLiQnFPg==}
|
||||
engines: {node: '>=18'}
|
||||
|
||||
cssstyle@5.3.3:
|
||||
resolution: {integrity: sha512-OytmFH+13/QXONJcC75QNdMtKpceNk3u8ThBjyyYjkEcy/ekBwR1mMAuNvi3gdBPW3N5TlCzQ0WZw8H0lN/bDw==}
|
||||
engines: {node: '>=20'}
|
||||
|
||||
csstype@3.2.3:
|
||||
resolution: {integrity: sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==}
|
||||
|
||||
|
|
@ -17972,9 +18032,9 @@ packages:
|
|||
resolution: {integrity: sha512-ZYP5VBHshaDAiVZxjbRVcFJpc+4xGgT0bK3vzy1HLN8jTO975HEbuYzZJcHoQEY5K1a0z8YayJkyVETa08eNTg==}
|
||||
engines: {node: '>=18'}
|
||||
|
||||
data-urls@6.0.0:
|
||||
resolution: {integrity: sha512-BnBS08aLUM+DKamupXs3w2tJJoqU+AkaE/+6vQxi/G/DPmIZFJJp9Dkb1kM03AZx8ADehDUZgsNxju3mPXZYIA==}
|
||||
engines: {node: '>=20'}
|
||||
data-urls@7.0.0:
|
||||
resolution: {integrity: sha512-23XHcCF+coGYevirZceTVD7NdJOqVn+49IHyxgszm+JIiHLoB2TkmPtsYkNWT1pvRSGkc35L6NHs0yHkN2SumA==}
|
||||
engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0}
|
||||
|
||||
data-view-buffer@1.0.2:
|
||||
resolution: {integrity: sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==}
|
||||
|
|
@ -18222,6 +18282,9 @@ packages:
|
|||
resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==}
|
||||
engines: {node: '>= 4'}
|
||||
|
||||
dompurify@3.3.3:
|
||||
resolution: {integrity: sha512-Oj6pzI2+RqBfFG+qOaOLbFXLQ90ARpcGG6UePL82bJLtdsa6CYJD7nmiU8MW9nQNOtCHV3lZ/Bzq1X0QYbBZCA==}
|
||||
|
||||
domutils@3.2.2:
|
||||
resolution: {integrity: sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==}
|
||||
|
||||
|
|
@ -20711,6 +20774,10 @@ packages:
|
|||
resolution: {integrity: sha512-Y22oTqIU4uuPgEemfz7NDJz6OeKf12Lsu+QC+s3BVpda64lTiMYCyGwg5ki4vFxkMwQdeZDl2adZoqUgdFuTgQ==}
|
||||
engines: {node: '>=18'}
|
||||
|
||||
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==}
|
||||
|
||||
|
|
@ -21235,6 +21302,10 @@ packages:
|
|||
resolution: {integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==}
|
||||
engines: {node: '>=0.10.0'}
|
||||
|
||||
isomorphic-dompurify@3.7.1:
|
||||
resolution: {integrity: sha512-ChhzwwCm7k8h8ANiq1Vc7geCWeHGaAPusgXU5N4mu7Y2wChgn2JHvbUe6aH/XQOUG3+KV+GmqSq95MntW/V1ng==}
|
||||
engines: {node: ^20.19.0 || ^22.13.0 || >=24.0.0}
|
||||
|
||||
isstream@0.1.2:
|
||||
resolution: {integrity: sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==}
|
||||
|
||||
|
|
@ -21737,9 +21808,9 @@ packages:
|
|||
canvas:
|
||||
optional: true
|
||||
|
||||
jsdom@27.2.0:
|
||||
resolution: {integrity: sha512-454TI39PeRDW1LgpyLPyURtB4Zx1tklSr6+OFOipsxGUH1WMTvk6C65JQdrj455+DP2uJ1+veBEHTGFKWVLFoA==}
|
||||
engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0}
|
||||
jsdom@29.0.1:
|
||||
resolution: {integrity: sha512-z6JOK5gRO7aMybVq/y/MlIpKh8JIi68FBKMUtKkK2KH/wMSRlCxQ682d08LB9fYXplyY/UXG8P4XXTScmdjApg==}
|
||||
engines: {node: ^20.19.0 || ^22.13.0 || >=24.0.0}
|
||||
peerDependencies:
|
||||
canvas: ^3.0.0
|
||||
peerDependenciesMeta:
|
||||
|
|
@ -22209,6 +22280,10 @@ packages:
|
|||
resolution: {integrity: sha512-F9ODfyqML2coTIsQpSkRHnLSZMtkU8Q+mSfcaIyKwy58u+8k5nvAYeiNhsyMARvzNcXJ9QfWVrcPsC9e9rAxtg==}
|
||||
engines: {node: 20 || >=22}
|
||||
|
||||
lru-cache@11.2.7:
|
||||
resolution: {integrity: sha512-aY/R+aEsRelme17KGQa/1ZSIpLpNYYrhcrepKTZgE+W3WM16YMCaPwOHLHsmopZHELU0Ojin1lPVxKR0MihncA==}
|
||||
engines: {node: 20 || >=22}
|
||||
|
||||
lru-cache@5.1.1:
|
||||
resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==}
|
||||
|
||||
|
|
@ -22377,6 +22452,9 @@ packages:
|
|||
mdn-data@2.12.2:
|
||||
resolution: {integrity: sha512-IEn+pegP1aManZuckezWCO+XZQDplx1366JoVhTpMpBB1sPey/SbveZQUosKiKiGYjg1wH4pMlNgXbCiYgihQA==}
|
||||
|
||||
mdn-data@2.27.1:
|
||||
resolution: {integrity: sha512-9Yubnt3e8A0OKwxYSXyhLymGW4sCufcLG6VdiDdUGVkPhpqLxlvP5vl1983gQjJl3tqbrM731mjaZaP68AgosQ==}
|
||||
|
||||
mdurl@1.0.1:
|
||||
resolution: {integrity: sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==}
|
||||
|
||||
|
|
@ -25847,8 +25925,8 @@ packages:
|
|||
resolution: {integrity: sha512-FVDYdxtnj0G6Qm/DhNPSb8Ju59ULcup3tuJxkFb5K8Bv2pUXILbf0xZWU8PX8Ov19OXljbUyveOFwRMwkXzO+A==}
|
||||
engines: {node: '>=16'}
|
||||
|
||||
tough-cookie@6.0.0:
|
||||
resolution: {integrity: sha512-kXuRi1mtaKMrsLUxz3sQYvVl37B0Ns6MzfrtV5DvJceE9bPyspOqk9xxv7XbZWcfLWbFmm997vl83qUWVJA64w==}
|
||||
tough-cookie@6.0.1:
|
||||
resolution: {integrity: sha512-LktZQb3IeoUWB9lqR5EWTHgW/VTITCXg4D21M+lvybRVdylLrRMnqaIONLVb5mav8vM19m44HIcGq4qASeu2Qw==}
|
||||
engines: {node: '>=16'}
|
||||
|
||||
tr46@0.0.3:
|
||||
|
|
@ -26218,6 +26296,10 @@ packages:
|
|||
resolution: {integrity: sha512-QEg3HPMll0o3t2ourKwOeUAZ159Kn9mx5pnzHRQO8+Wixmh88YdZRiIwat0iNzNNXn0yoEtXJqFpyW7eM8BV7g==}
|
||||
engines: {node: '>=20.18.1'}
|
||||
|
||||
undici@7.24.5:
|
||||
resolution: {integrity: sha512-3IWdCpjgxp15CbJnsi/Y9TCDE7HWVN19j1hmzVhoAkY/+CJx449tVxT5wZc1Gwg8J+P0LWvzlBzxYRnHJ+1i7Q==}
|
||||
engines: {node: '>=20.18.1'}
|
||||
|
||||
unenv@2.0.0-rc.24:
|
||||
resolution: {integrity: sha512-i7qRCmY42zmCwnYlh9H2SvLEypEFGye5iRmEMKjcGi7zk9UquigRjFtTLz0TYqr0ZGLZhaMHl/foy1bZR+Cwlw==}
|
||||
|
||||
|
|
@ -27089,8 +27171,8 @@ packages:
|
|||
resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==}
|
||||
engines: {node: '>=12'}
|
||||
|
||||
webidl-conversions@8.0.0:
|
||||
resolution: {integrity: sha512-n4W4YFyz5JzOfQeA8oN7dUYpR+MBP3PIUsn2jLjWXwK5ASUzt0Jc/A5sAUZoCYFJRGF0FBKJ+1JjN43rNdsQzA==}
|
||||
webidl-conversions@8.0.1:
|
||||
resolution: {integrity: sha512-BMhLD/Sw+GbJC21C/UgyaZX41nPt8bUTg+jWyDeg7e7YN4xOM05YPSIXceACnXVtqyEw/LMClUQMtMZ+PGGpqQ==}
|
||||
engines: {node: '>=20'}
|
||||
|
||||
webpack-node-externals@3.0.0:
|
||||
|
|
@ -27133,6 +27215,10 @@ 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-minimum@0.1.1:
|
||||
resolution: {integrity: sha512-u2FNVjFVFZhdjb502KzXy1gKn1mEisQRJssmSJT8CPhZdZa0AP6VCbWlXERKyGu0l09t0k50FiDiralpGhBxgA==}
|
||||
|
||||
|
|
@ -27144,9 +27230,9 @@ packages:
|
|||
resolution: {integrity: sha512-De72GdQZzNTUBBChsXueQUnPKDkg/5A5zp7pFDuQAj5UFoENpiACU0wlCvzpAGnTkj++ihpKwKyYewn/XNUbKw==}
|
||||
engines: {node: '>=18'}
|
||||
|
||||
whatwg-url@15.1.0:
|
||||
resolution: {integrity: sha512-2ytDk0kiEj/yu90JOAp44PVPUkO9+jVhyf+SybKlRHSDlvOOZhdPIrr7xTH64l4WixO2cP+wQIcgujkGBPPz6g==}
|
||||
engines: {node: '>=20'}
|
||||
whatwg-url@16.0.1:
|
||||
resolution: {integrity: sha512-1to4zXBxmXHV3IiSSEInrreIlu02vUOvrhxJJH5vcxYTBDAx51cqZiKdyTxlecdKNSjj8EcxGBxNf6Vg+945gw==}
|
||||
engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0}
|
||||
|
||||
whatwg-url@5.0.0:
|
||||
resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==}
|
||||
|
|
@ -27578,9 +27664,6 @@ snapshots:
|
|||
|
||||
'@0no-co/graphql.web@1.2.0': {}
|
||||
|
||||
'@acemir/cssom@0.9.24':
|
||||
optional: true
|
||||
|
||||
'@adobe/css-tools@4.4.4': {}
|
||||
|
||||
'@alloc/quick-lru@5.2.0': {}
|
||||
|
|
@ -27693,26 +27776,23 @@ snapshots:
|
|||
'@csstools/css-tokenizer': 3.0.4
|
||||
lru-cache: 10.4.3
|
||||
|
||||
'@asamuzakjp/css-color@4.1.0':
|
||||
'@asamuzakjp/css-color@5.0.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.2
|
||||
optional: true
|
||||
'@csstools/css-calc': 3.1.1(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0)
|
||||
'@csstools/css-color-parser': 4.0.2(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0)
|
||||
'@csstools/css-parser-algorithms': 4.0.0(@csstools/css-tokenizer@4.0.0)
|
||||
'@csstools/css-tokenizer': 4.0.0
|
||||
lru-cache: 11.2.7
|
||||
|
||||
'@asamuzakjp/dom-selector@6.7.4':
|
||||
'@asamuzakjp/dom-selector@7.0.4':
|
||||
dependencies:
|
||||
'@asamuzakjp/nwsapi': 2.3.9
|
||||
bidi-js: 1.0.3
|
||||
css-tree: 3.1.0
|
||||
css-tree: 3.2.1
|
||||
is-potential-custom-element-name: 1.0.1
|
||||
lru-cache: 11.2.2
|
||||
optional: true
|
||||
lru-cache: 11.2.7
|
||||
|
||||
'@asamuzakjp/nwsapi@2.3.9':
|
||||
optional: true
|
||||
'@asamuzakjp/nwsapi@2.3.9': {}
|
||||
|
||||
'@astrojs/check@0.9.5(prettier-plugin-astro@0.14.1)(prettier@3.6.2)(typescript@5.9.3)':
|
||||
dependencies:
|
||||
|
|
@ -29837,6 +29917,10 @@ snapshots:
|
|||
|
||||
'@borewit/text-codec@0.2.2': {}
|
||||
|
||||
'@bramus/specificity@2.4.2':
|
||||
dependencies:
|
||||
css-tree: 3.2.1
|
||||
|
||||
'@bull-board/api@6.16.4(@bull-board/ui@6.16.4)':
|
||||
dependencies:
|
||||
'@bull-board/ui': 6.16.4
|
||||
|
|
@ -29913,11 +29997,18 @@ snapshots:
|
|||
|
||||
'@csstools/color-helpers@5.1.0': {}
|
||||
|
||||
'@csstools/color-helpers@6.0.2': {}
|
||||
|
||||
'@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
|
||||
|
||||
'@csstools/css-calc@3.1.1(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0)':
|
||||
dependencies:
|
||||
'@csstools/css-parser-algorithms': 4.0.0(@csstools/css-tokenizer@4.0.0)
|
||||
'@csstools/css-tokenizer': 4.0.0
|
||||
|
||||
'@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
|
||||
|
|
@ -29925,15 +30016,29 @@ snapshots:
|
|||
'@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4)
|
||||
'@csstools/css-tokenizer': 3.0.4
|
||||
|
||||
'@csstools/css-color-parser@4.0.2(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0)':
|
||||
dependencies:
|
||||
'@csstools/color-helpers': 6.0.2
|
||||
'@csstools/css-calc': 3.1.1(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0)
|
||||
'@csstools/css-parser-algorithms': 4.0.0(@csstools/css-tokenizer@4.0.0)
|
||||
'@csstools/css-tokenizer': 4.0.0
|
||||
|
||||
'@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4)':
|
||||
dependencies:
|
||||
'@csstools/css-tokenizer': 3.0.4
|
||||
|
||||
'@csstools/css-syntax-patches-for-csstree@1.0.17':
|
||||
optional: true
|
||||
'@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0)':
|
||||
dependencies:
|
||||
'@csstools/css-tokenizer': 4.0.0
|
||||
|
||||
'@csstools/css-syntax-patches-for-csstree@1.1.1(css-tree@3.2.1)':
|
||||
optionalDependencies:
|
||||
css-tree: 3.2.1
|
||||
|
||||
'@csstools/css-tokenizer@3.0.4': {}
|
||||
|
||||
'@csstools/css-tokenizer@4.0.0': {}
|
||||
|
||||
'@ctrl/tinycolor@4.2.0': {}
|
||||
|
||||
'@dabh/diagnostics@2.0.8':
|
||||
|
|
@ -30600,6 +30705,10 @@ snapshots:
|
|||
'@eslint/core': 0.17.0
|
||||
levn: 0.4.1
|
||||
|
||||
'@exodus/bytes@1.15.0(@noble/hashes@2.0.1)':
|
||||
optionalDependencies:
|
||||
'@noble/hashes': 2.0.1
|
||||
|
||||
'@expo-google-fonts/material-symbols@0.4.25': {}
|
||||
|
||||
'@expo/bunyan@4.0.1':
|
||||
|
|
@ -39438,14 +39547,14 @@ snapshots:
|
|||
vite: 6.4.1(@types/node@20.19.25)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.1)
|
||||
vitest: 4.0.18(@opentelemetry/api@1.9.0)(@types/node@20.19.25)(jiti@2.6.1)(jsdom@25.0.1)(lightningcss@1.30.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.1)
|
||||
|
||||
'@testing-library/svelte@5.3.1(svelte@5.44.0)(vite@6.4.1(@types/node@20.19.25)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.1))(vitest@4.1.0(@opentelemetry/api@1.9.0)(@types/node@20.19.25)(jsdom@27.2.0)(vite@6.4.1(@types/node@20.19.25)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.1)))':
|
||||
'@testing-library/svelte@5.3.1(svelte@5.44.0)(vite@6.4.1(@types/node@20.19.25)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.1))(vitest@4.1.0(@opentelemetry/api@1.9.0)(@types/node@20.19.25)(jsdom@29.0.1(@noble/hashes@2.0.1))(vite@6.4.1(@types/node@20.19.25)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.1)))':
|
||||
dependencies:
|
||||
'@testing-library/dom': 10.4.1
|
||||
'@testing-library/svelte-core': 1.0.0(svelte@5.44.0)
|
||||
svelte: 5.44.0
|
||||
optionalDependencies:
|
||||
vite: 6.4.1(@types/node@20.19.25)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.1)
|
||||
vitest: 4.1.0(@opentelemetry/api@1.9.0)(@types/node@20.19.25)(jsdom@27.2.0)(vite@6.4.1(@types/node@20.19.25)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.1))
|
||||
vitest: 4.1.0(@opentelemetry/api@1.9.0)(@types/node@20.19.25)(jsdom@29.0.1(@noble/hashes@2.0.1))(vite@6.4.1(@types/node@20.19.25)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.1))
|
||||
|
||||
'@testing-library/user-event@14.6.1(@testing-library/dom@10.4.1)':
|
||||
dependencies:
|
||||
|
|
@ -39669,6 +39778,10 @@ snapshots:
|
|||
|
||||
'@types/deep-eql@4.0.2': {}
|
||||
|
||||
'@types/dompurify@3.2.0':
|
||||
dependencies:
|
||||
dompurify: 3.3.3
|
||||
|
||||
'@types/earcut@3.0.0': {}
|
||||
|
||||
'@types/eslint-scope@3.7.7':
|
||||
|
|
@ -40883,7 +40996,7 @@ snapshots:
|
|||
magic-string: 0.30.21
|
||||
sirv: 3.0.2
|
||||
tinyrainbow: 2.0.0
|
||||
vitest: 3.2.4(@types/debug@4.1.12)(@types/node@24.10.1)(@vitest/browser@3.2.4)(@vitest/ui@3.2.4)(jiti@2.6.1)(jsdom@27.2.0)(lightningcss@1.30.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.1)
|
||||
vitest: 3.2.4(@types/debug@4.1.12)(@types/node@24.10.1)(@vitest/browser@3.2.4)(@vitest/ui@3.2.4)(jiti@2.6.1)(jsdom@29.0.1(@noble/hashes@2.0.1))(lightningcss@1.30.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.1)
|
||||
ws: 8.18.3
|
||||
optionalDependencies:
|
||||
playwright: 1.57.0
|
||||
|
|
@ -40907,7 +41020,7 @@ snapshots:
|
|||
obug: 2.1.1
|
||||
std-env: 3.10.0
|
||||
tinyrainbow: 3.0.3
|
||||
vitest: 4.0.14(@opentelemetry/api@1.9.0)(@types/node@22.19.1)(@vitest/ui@4.0.14)(jiti@2.6.1)(jsdom@27.2.0)(lightningcss@1.30.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.1)
|
||||
vitest: 4.0.14(@opentelemetry/api@1.9.0)(@types/node@22.19.1)(@vitest/ui@4.0.14)(jiti@2.6.1)(jsdom@29.0.1(@noble/hashes@2.0.1))(lightningcss@1.30.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.1)
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
|
|
@ -41182,7 +41295,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@24.10.1)(@vitest/browser@3.2.4)(@vitest/ui@3.2.4)(jiti@2.6.1)(jsdom@27.2.0)(lightningcss@1.30.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.1)
|
||||
vitest: 3.2.4(@types/debug@4.1.12)(@types/node@24.10.1)(@vitest/browser@3.2.4)(@vitest/ui@3.2.4)(jiti@2.6.1)(jsdom@29.0.1(@noble/hashes@2.0.1))(lightningcss@1.30.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.1)
|
||||
optional: true
|
||||
|
||||
'@vitest/ui@4.0.14(vitest@4.0.14)':
|
||||
|
|
@ -41194,7 +41307,7 @@ snapshots:
|
|||
sirv: 3.0.2
|
||||
tinyglobby: 0.2.15
|
||||
tinyrainbow: 3.0.3
|
||||
vitest: 4.0.14(@opentelemetry/api@1.9.0)(@types/node@22.19.1)(@vitest/ui@4.0.14)(jiti@2.6.1)(jsdom@27.2.0)(lightningcss@1.30.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.1)
|
||||
vitest: 4.0.14(@opentelemetry/api@1.9.0)(@types/node@22.19.1)(@vitest/ui@4.0.14)(jiti@2.6.1)(jsdom@29.0.1(@noble/hashes@2.0.1))(lightningcss@1.30.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.1)
|
||||
|
||||
'@vitest/utils@1.6.1':
|
||||
dependencies:
|
||||
|
|
@ -42508,7 +42621,6 @@ snapshots:
|
|||
bidi-js@1.0.3:
|
||||
dependencies:
|
||||
require-from-string: 2.0.2
|
||||
optional: true
|
||||
|
||||
big-integer@1.6.52: {}
|
||||
|
||||
|
|
@ -43370,6 +43482,11 @@ snapshots:
|
|||
mdn-data: 2.12.2
|
||||
source-map-js: 1.2.1
|
||||
|
||||
css-tree@3.2.1:
|
||||
dependencies:
|
||||
mdn-data: 2.27.1
|
||||
source-map-js: 1.2.1
|
||||
|
||||
css-what@6.2.2: {}
|
||||
|
||||
css.escape@1.5.1: {}
|
||||
|
|
@ -43387,13 +43504,6 @@ snapshots:
|
|||
'@asamuzakjp/css-color': 3.2.0
|
||||
rrweb-cssom: 0.8.0
|
||||
|
||||
cssstyle@5.3.3:
|
||||
dependencies:
|
||||
'@asamuzakjp/css-color': 4.1.0
|
||||
'@csstools/css-syntax-patches-for-csstree': 1.0.17
|
||||
css-tree: 3.1.0
|
||||
optional: true
|
||||
|
||||
csstype@3.2.3: {}
|
||||
|
||||
csv-parse@6.1.0: {}
|
||||
|
|
@ -43566,11 +43676,12 @@ snapshots:
|
|||
whatwg-mimetype: 4.0.0
|
||||
whatwg-url: 14.2.0
|
||||
|
||||
data-urls@6.0.0:
|
||||
data-urls@7.0.0(@noble/hashes@2.0.1):
|
||||
dependencies:
|
||||
whatwg-mimetype: 4.0.0
|
||||
whatwg-url: 15.1.0
|
||||
optional: true
|
||||
whatwg-mimetype: 5.0.0
|
||||
whatwg-url: 16.0.1(@noble/hashes@2.0.1)
|
||||
transitivePeerDependencies:
|
||||
- '@noble/hashes'
|
||||
|
||||
data-view-buffer@1.0.2:
|
||||
dependencies:
|
||||
|
|
@ -43768,6 +43879,10 @@ snapshots:
|
|||
dependencies:
|
||||
domelementtype: 2.3.0
|
||||
|
||||
dompurify@3.3.3:
|
||||
optionalDependencies:
|
||||
'@types/trusted-types': 2.0.7
|
||||
|
||||
domutils@3.2.2:
|
||||
dependencies:
|
||||
dom-serializer: 2.0.0
|
||||
|
|
@ -48732,6 +48847,12 @@ snapshots:
|
|||
dependencies:
|
||||
whatwg-encoding: 3.1.1
|
||||
|
||||
html-encoding-sniffer@6.0.0(@noble/hashes@2.0.1):
|
||||
dependencies:
|
||||
'@exodus/bytes': 1.15.0(@noble/hashes@2.0.1)
|
||||
transitivePeerDependencies:
|
||||
- '@noble/hashes'
|
||||
|
||||
html-escaper@2.0.2: {}
|
||||
|
||||
html-escaper@3.0.3: {}
|
||||
|
|
@ -49276,6 +49397,14 @@ snapshots:
|
|||
|
||||
isobject@3.0.1: {}
|
||||
|
||||
isomorphic-dompurify@3.7.1(@noble/hashes@2.0.1):
|
||||
dependencies:
|
||||
dompurify: 3.3.3
|
||||
jsdom: 29.0.1(@noble/hashes@2.0.1)
|
||||
transitivePeerDependencies:
|
||||
- '@noble/hashes'
|
||||
- canvas
|
||||
|
||||
isstream@0.1.2: {}
|
||||
|
||||
istanbul-lib-coverage@3.2.2: {}
|
||||
|
|
@ -50782,33 +50911,31 @@ snapshots:
|
|||
- supports-color
|
||||
- utf-8-validate
|
||||
|
||||
jsdom@27.2.0:
|
||||
jsdom@29.0.1(@noble/hashes@2.0.1):
|
||||
dependencies:
|
||||
'@acemir/cssom': 0.9.24
|
||||
'@asamuzakjp/dom-selector': 6.7.4
|
||||
cssstyle: 5.3.3
|
||||
data-urls: 6.0.0
|
||||
'@asamuzakjp/css-color': 5.0.1
|
||||
'@asamuzakjp/dom-selector': 7.0.4
|
||||
'@bramus/specificity': 2.4.2
|
||||
'@csstools/css-syntax-patches-for-csstree': 1.1.1(css-tree@3.2.1)
|
||||
'@exodus/bytes': 1.15.0(@noble/hashes@2.0.1)
|
||||
css-tree: 3.2.1
|
||||
data-urls: 7.0.0(@noble/hashes@2.0.1)
|
||||
decimal.js: 10.6.0
|
||||
html-encoding-sniffer: 4.0.0
|
||||
http-proxy-agent: 7.0.2
|
||||
https-proxy-agent: 7.0.6
|
||||
html-encoding-sniffer: 6.0.0(@noble/hashes@2.0.1)
|
||||
is-potential-custom-element-name: 1.0.1
|
||||
lru-cache: 11.2.7
|
||||
parse5: 8.0.0
|
||||
saxes: 6.0.0
|
||||
symbol-tree: 3.2.4
|
||||
tough-cookie: 6.0.0
|
||||
tough-cookie: 6.0.1
|
||||
undici: 7.24.5
|
||||
w3c-xmlserializer: 5.0.0
|
||||
webidl-conversions: 8.0.0
|
||||
whatwg-encoding: 3.1.1
|
||||
whatwg-mimetype: 4.0.0
|
||||
whatwg-url: 15.1.0
|
||||
ws: 8.18.3
|
||||
webidl-conversions: 8.0.1
|
||||
whatwg-mimetype: 5.0.0
|
||||
whatwg-url: 16.0.1(@noble/hashes@2.0.1)
|
||||
xml-name-validator: 5.0.0
|
||||
transitivePeerDependencies:
|
||||
- bufferutil
|
||||
- supports-color
|
||||
- utf-8-validate
|
||||
optional: true
|
||||
- '@noble/hashes'
|
||||
|
||||
jsesc@3.1.0: {}
|
||||
|
||||
|
|
@ -51218,6 +51345,8 @@ snapshots:
|
|||
|
||||
lru-cache@11.2.2: {}
|
||||
|
||||
lru-cache@11.2.7: {}
|
||||
|
||||
lru-cache@5.1.1:
|
||||
dependencies:
|
||||
yallist: 3.1.1
|
||||
|
|
@ -51559,6 +51688,8 @@ snapshots:
|
|||
|
||||
mdn-data@2.12.2: {}
|
||||
|
||||
mdn-data@2.27.1: {}
|
||||
|
||||
mdurl@1.0.1: {}
|
||||
|
||||
media-typer@0.3.0: {}
|
||||
|
|
@ -53403,7 +53534,6 @@ snapshots:
|
|||
parse5@8.0.0:
|
||||
dependencies:
|
||||
entities: 6.0.1
|
||||
optional: true
|
||||
|
||||
parseley@0.12.1:
|
||||
dependencies:
|
||||
|
|
@ -57479,8 +57609,7 @@ snapshots:
|
|||
|
||||
tldts-core@6.1.86: {}
|
||||
|
||||
tldts-core@7.0.19:
|
||||
optional: true
|
||||
tldts-core@7.0.19: {}
|
||||
|
||||
tldts@6.1.86:
|
||||
dependencies:
|
||||
|
|
@ -57489,7 +57618,6 @@ snapshots:
|
|||
tldts@7.0.19:
|
||||
dependencies:
|
||||
tldts-core: 7.0.19
|
||||
optional: true
|
||||
|
||||
tmp-promise@3.0.3:
|
||||
dependencies:
|
||||
|
|
@ -57539,10 +57667,9 @@ snapshots:
|
|||
dependencies:
|
||||
tldts: 6.1.86
|
||||
|
||||
tough-cookie@6.0.0:
|
||||
tough-cookie@6.0.1:
|
||||
dependencies:
|
||||
tldts: 7.0.19
|
||||
optional: true
|
||||
|
||||
tr46@0.0.3: {}
|
||||
|
||||
|
|
@ -57557,7 +57684,6 @@ snapshots:
|
|||
tr46@6.0.0:
|
||||
dependencies:
|
||||
punycode: 2.3.1
|
||||
optional: true
|
||||
|
||||
tree-kill@1.2.2: {}
|
||||
|
||||
|
|
@ -58014,6 +58140,8 @@ snapshots:
|
|||
|
||||
undici@7.16.0: {}
|
||||
|
||||
undici@7.24.5: {}
|
||||
|
||||
unenv@2.0.0-rc.24:
|
||||
dependencies:
|
||||
pathe: 2.0.3
|
||||
|
|
@ -58760,7 +58888,7 @@ snapshots:
|
|||
optionalDependencies:
|
||||
vite: 7.2.4(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.1)
|
||||
|
||||
vitest@1.6.1(@types/node@20.19.25)(jsdom@27.2.0)(lightningcss@1.30.2)(terser@5.44.1):
|
||||
vitest@1.6.1(@types/node@20.19.25)(jsdom@29.0.1(@noble/hashes@2.0.1))(lightningcss@1.30.2)(terser@5.44.1):
|
||||
dependencies:
|
||||
'@vitest/expect': 1.6.1
|
||||
'@vitest/runner': 1.6.1
|
||||
|
|
@ -58784,7 +58912,7 @@ snapshots:
|
|||
why-is-node-running: 2.3.0
|
||||
optionalDependencies:
|
||||
'@types/node': 20.19.25
|
||||
jsdom: 27.2.0
|
||||
jsdom: 29.0.1(@noble/hashes@2.0.1)
|
||||
transitivePeerDependencies:
|
||||
- less
|
||||
- lightningcss
|
||||
|
|
@ -58831,7 +58959,7 @@ snapshots:
|
|||
- supports-color
|
||||
- terser
|
||||
|
||||
vitest@2.1.9(@types/node@20.19.25)(jsdom@27.2.0)(lightningcss@1.30.2)(terser@5.44.1):
|
||||
vitest@2.1.9(@types/node@20.19.25)(jsdom@29.0.1(@noble/hashes@2.0.1))(lightningcss@1.30.2)(terser@5.44.1):
|
||||
dependencies:
|
||||
'@vitest/expect': 2.1.9
|
||||
'@vitest/mocker': 2.1.9(vite@5.4.21(@types/node@20.19.25)(lightningcss@1.30.2)(terser@5.44.1))
|
||||
|
|
@ -58855,7 +58983,7 @@ snapshots:
|
|||
why-is-node-running: 2.3.0
|
||||
optionalDependencies:
|
||||
'@types/node': 20.19.25
|
||||
jsdom: 27.2.0
|
||||
jsdom: 29.0.1(@noble/hashes@2.0.1)
|
||||
transitivePeerDependencies:
|
||||
- less
|
||||
- lightningcss
|
||||
|
|
@ -58867,7 +58995,7 @@ snapshots:
|
|||
- supports-color
|
||||
- terser
|
||||
|
||||
vitest@2.1.9(@types/node@24.10.1)(jsdom@27.2.0)(lightningcss@1.30.2)(terser@5.44.1):
|
||||
vitest@2.1.9(@types/node@24.10.1)(jsdom@29.0.1(@noble/hashes@2.0.1))(lightningcss@1.30.2)(terser@5.44.1):
|
||||
dependencies:
|
||||
'@vitest/expect': 2.1.9
|
||||
'@vitest/mocker': 2.1.9(vite@5.4.21(@types/node@24.10.1)(lightningcss@1.30.2)(terser@5.44.1))
|
||||
|
|
@ -58891,7 +59019,7 @@ snapshots:
|
|||
why-is-node-running: 2.3.0
|
||||
optionalDependencies:
|
||||
'@types/node': 24.10.1
|
||||
jsdom: 27.2.0
|
||||
jsdom: 29.0.1(@noble/hashes@2.0.1)
|
||||
transitivePeerDependencies:
|
||||
- less
|
||||
- lightningcss
|
||||
|
|
@ -58948,7 +59076,7 @@ snapshots:
|
|||
- tsx
|
||||
- yaml
|
||||
|
||||
vitest@3.2.4(@types/debug@4.1.12)(@types/node@24.10.1)(@vitest/browser@3.2.4)(@vitest/ui@3.2.4)(jiti@2.6.1)(jsdom@27.2.0)(lightningcss@1.30.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.1):
|
||||
vitest@3.2.4(@types/debug@4.1.12)(@types/node@24.10.1)(@vitest/browser@3.2.4)(@vitest/ui@3.2.4)(jiti@2.6.1)(jsdom@29.0.1(@noble/hashes@2.0.1))(lightningcss@1.30.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.1):
|
||||
dependencies:
|
||||
'@types/chai': 5.2.3
|
||||
'@vitest/expect': 3.2.4
|
||||
|
|
@ -58978,7 +59106,7 @@ snapshots:
|
|||
'@types/node': 24.10.1
|
||||
'@vitest/browser': 3.2.4(playwright@1.57.0)(vite@6.4.1(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.1))(vitest@3.2.4)
|
||||
'@vitest/ui': 3.2.4(vitest@3.2.4)
|
||||
jsdom: 27.2.0
|
||||
jsdom: 29.0.1(@noble/hashes@2.0.1)
|
||||
transitivePeerDependencies:
|
||||
- jiti
|
||||
- less
|
||||
|
|
@ -58993,7 +59121,7 @@ snapshots:
|
|||
- tsx
|
||||
- yaml
|
||||
|
||||
vitest@4.0.14(@opentelemetry/api@1.9.0)(@types/node@22.19.1)(@vitest/ui@4.0.14)(jiti@2.6.1)(jsdom@27.2.0)(lightningcss@1.30.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.1):
|
||||
vitest@4.0.14(@opentelemetry/api@1.9.0)(@types/node@22.19.1)(@vitest/ui@4.0.14)(jiti@2.6.1)(jsdom@29.0.1(@noble/hashes@2.0.1))(lightningcss@1.30.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.1):
|
||||
dependencies:
|
||||
'@vitest/expect': 4.0.14
|
||||
'@vitest/mocker': 4.0.14(vite@6.4.1(@types/node@22.19.1)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.1))
|
||||
|
|
@ -59019,7 +59147,7 @@ snapshots:
|
|||
'@opentelemetry/api': 1.9.0
|
||||
'@types/node': 22.19.1
|
||||
'@vitest/ui': 4.0.14(vitest@4.0.14)
|
||||
jsdom: 27.2.0
|
||||
jsdom: 29.0.1(@noble/hashes@2.0.1)
|
||||
transitivePeerDependencies:
|
||||
- jiti
|
||||
- less
|
||||
|
|
@ -59101,7 +59229,7 @@ snapshots:
|
|||
transitivePeerDependencies:
|
||||
- msw
|
||||
|
||||
vitest@4.1.0(@opentelemetry/api@1.9.0)(@types/node@20.19.25)(jsdom@27.2.0)(vite@6.4.1(@types/node@20.19.25)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.1)):
|
||||
vitest@4.1.0(@opentelemetry/api@1.9.0)(@types/node@20.19.25)(jsdom@29.0.1(@noble/hashes@2.0.1))(vite@6.4.1(@types/node@20.19.25)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.1)):
|
||||
dependencies:
|
||||
'@vitest/expect': 4.1.0
|
||||
'@vitest/mocker': 4.1.0(vite@6.4.1(@types/node@20.19.25)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.1))
|
||||
|
|
@ -59126,11 +59254,11 @@ snapshots:
|
|||
optionalDependencies:
|
||||
'@opentelemetry/api': 1.9.0
|
||||
'@types/node': 20.19.25
|
||||
jsdom: 27.2.0
|
||||
jsdom: 29.0.1(@noble/hashes@2.0.1)
|
||||
transitivePeerDependencies:
|
||||
- msw
|
||||
|
||||
vitest@4.1.0(@opentelemetry/api@1.9.0)(@types/node@22.19.1)(jsdom@27.2.0)(vite@6.4.1(@types/node@22.19.1)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.1)):
|
||||
vitest@4.1.0(@opentelemetry/api@1.9.0)(@types/node@22.19.1)(jsdom@29.0.1(@noble/hashes@2.0.1))(vite@6.4.1(@types/node@22.19.1)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.1)):
|
||||
dependencies:
|
||||
'@vitest/expect': 4.1.0
|
||||
'@vitest/mocker': 4.1.0(vite@6.4.1(@types/node@22.19.1)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.1))
|
||||
|
|
@ -59155,11 +59283,11 @@ snapshots:
|
|||
optionalDependencies:
|
||||
'@opentelemetry/api': 1.9.0
|
||||
'@types/node': 22.19.1
|
||||
jsdom: 27.2.0
|
||||
jsdom: 29.0.1(@noble/hashes@2.0.1)
|
||||
transitivePeerDependencies:
|
||||
- msw
|
||||
|
||||
vitest@4.1.0(@opentelemetry/api@1.9.0)(@types/node@24.10.1)(jsdom@27.2.0)(vite@7.2.4(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.1)):
|
||||
vitest@4.1.0(@opentelemetry/api@1.9.0)(@types/node@24.10.1)(jsdom@29.0.1(@noble/hashes@2.0.1))(vite@7.2.4(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.1)):
|
||||
dependencies:
|
||||
'@vitest/expect': 4.1.0
|
||||
'@vitest/mocker': 4.1.0(vite@7.2.4(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.1))
|
||||
|
|
@ -59184,11 +59312,11 @@ snapshots:
|
|||
optionalDependencies:
|
||||
'@opentelemetry/api': 1.9.0
|
||||
'@types/node': 24.10.1
|
||||
jsdom: 27.2.0
|
||||
jsdom: 29.0.1(@noble/hashes@2.0.1)
|
||||
transitivePeerDependencies:
|
||||
- msw
|
||||
|
||||
vitest@4.1.1(@opentelemetry/api@1.9.0)(@types/node@20.19.25)(jsdom@27.2.0)(vite@6.4.1(@types/node@20.19.25)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.1)):
|
||||
vitest@4.1.1(@opentelemetry/api@1.9.0)(@types/node@20.19.25)(jsdom@29.0.1(@noble/hashes@2.0.1))(vite@6.4.1(@types/node@20.19.25)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.1)):
|
||||
dependencies:
|
||||
'@vitest/expect': 4.1.1
|
||||
'@vitest/mocker': 4.1.1(vite@6.4.1(@types/node@20.19.25)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.1))
|
||||
|
|
@ -59213,7 +59341,7 @@ snapshots:
|
|||
optionalDependencies:
|
||||
'@opentelemetry/api': 1.9.0
|
||||
'@types/node': 20.19.25
|
||||
jsdom: 27.2.0
|
||||
jsdom: 29.0.1(@noble/hashes@2.0.1)
|
||||
transitivePeerDependencies:
|
||||
- msw
|
||||
|
||||
|
|
@ -59359,8 +59487,7 @@ snapshots:
|
|||
|
||||
webidl-conversions@7.0.0: {}
|
||||
|
||||
webidl-conversions@8.0.0:
|
||||
optional: true
|
||||
webidl-conversions@8.0.1: {}
|
||||
|
||||
webpack-node-externals@3.0.0: {}
|
||||
|
||||
|
|
@ -59498,6 +59625,8 @@ snapshots:
|
|||
|
||||
whatwg-mimetype@4.0.0: {}
|
||||
|
||||
whatwg-mimetype@5.0.0: {}
|
||||
|
||||
whatwg-url-minimum@0.1.1: {}
|
||||
|
||||
whatwg-url-without-unicode@8.0.0-3:
|
||||
|
|
@ -59511,11 +59640,13 @@ snapshots:
|
|||
tr46: 5.1.1
|
||||
webidl-conversions: 7.0.0
|
||||
|
||||
whatwg-url@15.1.0:
|
||||
whatwg-url@16.0.1(@noble/hashes@2.0.1):
|
||||
dependencies:
|
||||
'@exodus/bytes': 1.15.0(@noble/hashes@2.0.1)
|
||||
tr46: 6.0.0
|
||||
webidl-conversions: 8.0.0
|
||||
optional: true
|
||||
webidl-conversions: 8.0.1
|
||||
transitivePeerDependencies:
|
||||
- '@noble/hashes'
|
||||
|
||||
whatwg-url@5.0.0:
|
||||
dependencies:
|
||||
|
|
|
|||
326
scripts/audit-workspace-deps.mjs
Executable file
326
scripts/audit-workspace-deps.mjs
Executable file
|
|
@ -0,0 +1,326 @@
|
|||
#!/usr/bin/env node
|
||||
|
||||
/**
|
||||
* Audit Workspace Dependencies
|
||||
*
|
||||
* Finds SvelteKit web apps that import workspace packages (@manacore/*, @project/shared, etc.)
|
||||
* without declaring them in package.json. This works locally due to pnpm hoisting but breaks
|
||||
* in Docker builds.
|
||||
*
|
||||
* Usage:
|
||||
* node scripts/audit-workspace-deps.mjs # Report missing deps
|
||||
* node scripts/audit-workspace-deps.mjs --fix # Auto-add missing deps and run pnpm install
|
||||
*/
|
||||
|
||||
import { readFileSync, readdirSync, statSync, writeFileSync, existsSync } from 'fs';
|
||||
import { join, relative, dirname } from 'path';
|
||||
import { fileURLToPath } from 'url';
|
||||
import { execSync } from 'child_process';
|
||||
|
||||
const __filename = fileURLToPath(import.meta.url);
|
||||
const __dirname = dirname(__filename);
|
||||
const MONOREPO_ROOT = join(__dirname, '..');
|
||||
|
||||
const FIX_MODE = process.argv.includes('--fix');
|
||||
|
||||
// Colors
|
||||
const RED = '\x1b[31m';
|
||||
const GREEN = '\x1b[32m';
|
||||
const YELLOW = '\x1b[33m';
|
||||
const DIM = '\x1b[2m';
|
||||
const RESET = '\x1b[0m';
|
||||
const BOLD = '\x1b[1m';
|
||||
|
||||
// Directories to skip when scanning source files
|
||||
const SKIP_DIRS = new Set(['node_modules', 'dist', '.svelte-kit', 'build', '.turbo', '.vercel']);
|
||||
|
||||
// File extensions to scan
|
||||
const SCAN_EXTENSIONS = new Set(['.ts', '.svelte', '.js']);
|
||||
|
||||
// Regex to match workspace package imports
|
||||
// Matches: @manacore/*, @calendar/shared, @todo/shared, @zitare/content, etc.
|
||||
const IMPORT_REGEX =
|
||||
/(?:import\s+(?:[\s\S]*?\s+from\s+)?|import\s*\()\s*['"](@[a-z-]+\/[a-z-]+)(?:\/[^'"]*)?['"]/g;
|
||||
|
||||
// Known workspace scopes (to distinguish from npm packages like @sveltejs/kit)
|
||||
const WORKSPACE_SCOPES = new Set([
|
||||
'@manacore',
|
||||
'@calendar',
|
||||
'@chat',
|
||||
'@clock',
|
||||
'@contacts',
|
||||
'@context',
|
||||
'@matrix',
|
||||
'@mukke',
|
||||
'@nutriphi',
|
||||
'@photos',
|
||||
'@picture',
|
||||
'@planta',
|
||||
'@presi',
|
||||
'@storage',
|
||||
'@todo',
|
||||
'@traces',
|
||||
'@zitare',
|
||||
'@mana-core',
|
||||
]);
|
||||
|
||||
/**
|
||||
* Build a set of all workspace package names by scanning the monorepo.
|
||||
*/
|
||||
function buildWorkspacePackageSet() {
|
||||
const names = new Set();
|
||||
const patterns = [
|
||||
'packages/*/package.json',
|
||||
'apps/*/packages/*/package.json',
|
||||
'services/*/package.json',
|
||||
];
|
||||
|
||||
for (const pattern of patterns) {
|
||||
const parts = pattern.split('/');
|
||||
let dirs = [MONOREPO_ROOT];
|
||||
|
||||
for (const part of parts) {
|
||||
const nextDirs = [];
|
||||
for (const dir of dirs) {
|
||||
if (part === '*') {
|
||||
try {
|
||||
const entries = readdirSync(dir);
|
||||
for (const entry of entries) {
|
||||
const full = join(dir, entry);
|
||||
try {
|
||||
if (statSync(full).isDirectory()) {
|
||||
nextDirs.push(full);
|
||||
}
|
||||
} catch {}
|
||||
}
|
||||
} catch {}
|
||||
} else {
|
||||
nextDirs.push(join(dir, part));
|
||||
}
|
||||
}
|
||||
dirs = nextDirs;
|
||||
}
|
||||
|
||||
for (const pkgPath of dirs) {
|
||||
try {
|
||||
const pkg = JSON.parse(readFileSync(pkgPath, 'utf-8'));
|
||||
if (pkg.name) names.add(pkg.name);
|
||||
} catch {}
|
||||
}
|
||||
}
|
||||
|
||||
return names;
|
||||
}
|
||||
|
||||
/**
|
||||
* Recursively collect source files from a directory.
|
||||
*/
|
||||
function collectSourceFiles(dir, files = []) {
|
||||
let entries;
|
||||
try {
|
||||
entries = readdirSync(dir);
|
||||
} catch {
|
||||
return files;
|
||||
}
|
||||
|
||||
for (const entry of entries) {
|
||||
if (SKIP_DIRS.has(entry)) continue;
|
||||
const full = join(dir, entry);
|
||||
try {
|
||||
const stat = statSync(full);
|
||||
if (stat.isDirectory()) {
|
||||
collectSourceFiles(full, files);
|
||||
} else if (stat.isFile()) {
|
||||
const ext = entry.slice(entry.lastIndexOf('.'));
|
||||
if (SCAN_EXTENSIONS.has(ext)) {
|
||||
files.push(full);
|
||||
}
|
||||
}
|
||||
} catch {}
|
||||
}
|
||||
|
||||
return files;
|
||||
}
|
||||
|
||||
/**
|
||||
* Extract workspace package imports from a source file.
|
||||
*/
|
||||
function extractImports(filePath, workspacePackages) {
|
||||
const content = readFileSync(filePath, 'utf-8');
|
||||
const imports = new Set();
|
||||
|
||||
let match;
|
||||
// Reset regex lastIndex
|
||||
IMPORT_REGEX.lastIndex = 0;
|
||||
|
||||
while ((match = IMPORT_REGEX.exec(content)) !== null) {
|
||||
const pkg = match[1]; // e.g. @manacore/shared-utils
|
||||
const scope = pkg.split('/')[0]; // e.g. @manacore
|
||||
|
||||
if (WORKSPACE_SCOPES.has(scope) && workspacePackages.has(pkg)) {
|
||||
imports.add(pkg);
|
||||
}
|
||||
}
|
||||
|
||||
return imports;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get declared dependencies from package.json (both deps and devDeps).
|
||||
*/
|
||||
function getDeclaredDeps(pkgJsonPath) {
|
||||
const pkg = JSON.parse(readFileSync(pkgJsonPath, 'utf-8'));
|
||||
const deps = new Set();
|
||||
|
||||
for (const name of Object.keys(pkg.dependencies || {})) {
|
||||
deps.add(name);
|
||||
}
|
||||
for (const name of Object.keys(pkg.devDependencies || {})) {
|
||||
deps.add(name);
|
||||
}
|
||||
|
||||
return { deps, pkg };
|
||||
}
|
||||
|
||||
/**
|
||||
* Find all SvelteKit web app directories.
|
||||
*/
|
||||
function findWebApps() {
|
||||
const appsDir = join(MONOREPO_ROOT, 'apps');
|
||||
const webApps = [];
|
||||
|
||||
try {
|
||||
const projects = readdirSync(appsDir);
|
||||
for (const project of projects) {
|
||||
// Try the correct path structure: apps/{project}/apps/web
|
||||
const correctWebDir = join(appsDir, project, 'apps', 'web');
|
||||
if (existsSync(join(correctWebDir, 'package.json'))) {
|
||||
webApps.push(correctWebDir);
|
||||
}
|
||||
}
|
||||
} catch {}
|
||||
|
||||
return webApps.sort();
|
||||
}
|
||||
|
||||
// --- Main ---
|
||||
|
||||
console.log(`${BOLD}Workspace Dependency Audit${RESET}`);
|
||||
console.log(`Scanning SvelteKit web apps for undeclared workspace imports...\n`);
|
||||
|
||||
const workspacePackages = buildWorkspacePackageSet();
|
||||
console.log(`${DIM}Found ${workspacePackages.size} workspace packages${RESET}\n`);
|
||||
|
||||
const webApps = findWebApps();
|
||||
let totalMissing = 0;
|
||||
const fixes = []; // { webDir, filterName, missingPkgs }
|
||||
|
||||
for (const webDir of webApps) {
|
||||
const relPath = relative(MONOREPO_ROOT, webDir);
|
||||
const pkgJsonPath = join(webDir, 'package.json');
|
||||
const srcDir = join(webDir, 'src');
|
||||
|
||||
if (!existsSync(srcDir)) {
|
||||
console.log(`${DIM}- ${relPath} - no src/ directory, skipping${RESET}`);
|
||||
continue;
|
||||
}
|
||||
|
||||
const { deps, pkg } = getDeclaredDeps(pkgJsonPath);
|
||||
const sourceFiles = collectSourceFiles(srcDir);
|
||||
|
||||
// Map: packageName -> Set of files that import it
|
||||
const importedPackages = new Map();
|
||||
|
||||
for (const file of sourceFiles) {
|
||||
const fileImports = extractImports(file, workspacePackages);
|
||||
for (const imp of fileImports) {
|
||||
if (!importedPackages.has(imp)) {
|
||||
importedPackages.set(imp, new Set());
|
||||
}
|
||||
importedPackages.get(imp).add(relative(webDir, file));
|
||||
}
|
||||
}
|
||||
|
||||
// Find missing: imported but not declared
|
||||
const missing = new Map();
|
||||
for (const [pkgName, files] of importedPackages) {
|
||||
if (!deps.has(pkgName)) {
|
||||
missing.set(pkgName, files);
|
||||
}
|
||||
}
|
||||
|
||||
if (missing.size === 0) {
|
||||
console.log(`${GREEN}\u2713${RESET} ${relPath} - all imports covered`);
|
||||
} else {
|
||||
totalMissing += missing.size;
|
||||
const filterName = pkg.name || relPath;
|
||||
console.log(
|
||||
`${RED}\u2717${RESET} ${relPath} - ${BOLD}${missing.size}${RESET} missing dep${missing.size > 1 ? 's' : ''}:`
|
||||
);
|
||||
|
||||
const missingPkgs = [];
|
||||
for (const [pkgName, files] of missing) {
|
||||
const fileList = [...files].sort().join(', ');
|
||||
console.log(` ${YELLOW}${pkgName}${RESET} ${DIM}(imported in ${fileList})${RESET}`);
|
||||
missingPkgs.push(pkgName);
|
||||
}
|
||||
console.log(` ${DIM}\u2192 pnpm add ${missingPkgs.join(' ')} --filter ${filterName}${RESET}`);
|
||||
|
||||
fixes.push({ webDir, pkgJsonPath, filterName, missingPkgs });
|
||||
}
|
||||
}
|
||||
|
||||
console.log('');
|
||||
|
||||
if (totalMissing === 0) {
|
||||
console.log(`${GREEN}${BOLD}All workspace imports are properly declared!${RESET}`);
|
||||
process.exit(0);
|
||||
}
|
||||
|
||||
console.log(
|
||||
`${RED}${BOLD}Found ${totalMissing} missing dependency declaration${totalMissing > 1 ? 's' : ''} across ${fixes.length} app${fixes.length > 1 ? 's' : ''}.${RESET}`
|
||||
);
|
||||
|
||||
if (!FIX_MODE) {
|
||||
console.log(`\n${DIM}Run with --fix to automatically add missing dependencies.${RESET}`);
|
||||
process.exit(1);
|
||||
}
|
||||
|
||||
// --- Fix mode ---
|
||||
console.log(`\n${BOLD}Applying fixes...${RESET}\n`);
|
||||
|
||||
for (const { pkgJsonPath, missingPkgs } of fixes) {
|
||||
const relPkgPath = relative(MONOREPO_ROOT, pkgJsonPath);
|
||||
const pkg = JSON.parse(readFileSync(pkgJsonPath, 'utf-8'));
|
||||
|
||||
if (!pkg.dependencies) {
|
||||
pkg.dependencies = {};
|
||||
}
|
||||
|
||||
for (const pkgName of missingPkgs) {
|
||||
pkg.dependencies[pkgName] = 'workspace:*';
|
||||
console.log(` ${GREEN}+${RESET} Added ${pkgName} to ${relPkgPath}`);
|
||||
}
|
||||
|
||||
// Sort dependencies alphabetically
|
||||
const sorted = {};
|
||||
for (const key of Object.keys(pkg.dependencies).sort()) {
|
||||
sorted[key] = pkg.dependencies[key];
|
||||
}
|
||||
pkg.dependencies = sorted;
|
||||
|
||||
writeFileSync(pkgJsonPath, JSON.stringify(pkg, null, '\t') + '\n');
|
||||
}
|
||||
|
||||
console.log(`\n${BOLD}Running pnpm install to update lockfile...${RESET}\n`);
|
||||
|
||||
try {
|
||||
execSync('pnpm install', {
|
||||
cwd: MONOREPO_ROOT,
|
||||
stdio: 'inherit',
|
||||
});
|
||||
console.log(`\n${GREEN}${BOLD}All fixes applied successfully!${RESET}`);
|
||||
} catch {
|
||||
console.error(`\n${RED}pnpm install failed. You may need to run it manually.${RESET}`);
|
||||
process.exit(1);
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue