From 16cb8e753b8fbf9dc99e8c03b188a61a27cc6f38 Mon Sep 17 00:00:00 2001 From: Wuesteon Date: Wed, 3 Dec 2025 23:42:37 +0100 Subject: [PATCH] improve code quality --- .claude-flow/metrics/performance.json | 10 +- .claude-flow/metrics/system-metrics.json | 1652 ++--------------- .claude-flow/metrics/task-metrics.json | 6 +- .../maerchenzauber/apps/web/eslint.config.js | 17 + .../memoro/apps/web/eslint.config.js | 17 + apps-archived/news/apps/web/eslint.config.js | 17 + .../nutriphi/apps/web/eslint.config.js | 17 + .../wisekeep/apps/web/eslint.config.js | 17 + apps/bauntown/apps/landing/eslint.config.js | 11 + apps/calendar/apps/backend/eslint.config.mjs | 17 + apps/calendar/apps/landing/eslint.config.js | 11 + apps/calendar/apps/web/eslint.config.js | 17 + apps/calendar/package.json | 1 - .../packages/shared/src/utils/recurrence.ts | 7 +- apps/chat/apps/backend/eslint.config.mjs | 17 + .../apps/backend/src/chat/chat.controller.ts | 6 +- .../apps/backend/src/chat/chat.service.ts | 4 +- .../conversation/conversation.controller.ts | 4 +- apps/chat/apps/backend/src/db/connection.ts | 2 +- .../apps/backend/src/db/database.module.ts | 2 +- .../src/document/document.controller.ts | 4 +- .../backend/src/model/model.controller.ts | 2 +- .../backend/src/space/space.controller.ts | 4 +- .../src/template/template.controller.ts | 4 +- apps/chat/apps/landing/eslint.config.js | 11 + apps/chat/apps/landing/package.json | 3 +- apps/chat/apps/mobile/eslint.config.mjs | 12 + apps/chat/apps/mobile/package.json | 6 +- apps/chat/apps/web/eslint.config.js | 17 + apps/chat/apps/web/package.json | 3 +- apps/chat/package.json | 3 +- apps/chat/packages/chat-types/package.json | 3 + apps/contacts/apps/backend/eslint.config.mjs | 17 + apps/contacts/apps/web/eslint.config.js | 17 + apps/contacts/package.json | 1 - .../apps/backend/eslint.config.mjs | 17 + .../apps/landing/eslint.config.js | 11 + .../apps/mobile/eslint.config.mjs | 12 + apps/manacore/apps/landing/eslint.config.js | 11 + apps/manacore/apps/landing/package.json | 3 +- apps/manacore/apps/mobile/app-env.d.ts | 2 +- .../apps/mobile/app/(drawer)/get-mana.tsx | 3 +- .../apps/mobile/app/(drawer)/index.tsx | 3 +- .../app/(drawer)/organizations/[id].tsx | 14 +- .../app/(drawer)/organizations/index.tsx | 2 +- .../apps/mobile/app/(drawer)/settings.tsx | 5 +- .../apps/mobile/app/(drawer)/teams/[id].tsx | 58 +- .../apps/mobile/app/(drawer)/teams/index.tsx | 2 +- apps/manacore/apps/mobile/app/+not-found.tsx | 2 +- apps/manacore/apps/mobile/app/_layout.tsx | 3 +- .../apps/mobile/app/auth/reset-password.tsx | 2 +- .../apps/mobile/components/Account.tsx | 3 +- apps/manacore/apps/mobile/components/Auth.tsx | 13 +- .../apps/mobile/components/Button.tsx | 2 +- .../mobile/components/CreateOrganization.tsx | 2 +- .../apps/mobile/components/CreateTeam.tsx | 4 +- .../apps/mobile/components/DashboardStats.tsx | 2 +- .../apps/mobile/components/HeaderButton.tsx | 2 +- .../mobile/components/OrganizationList.tsx | 3 +- .../apps/mobile/components/SendMana.tsx | 132 +- .../apps/mobile/components/TeamList.tsx | 2 +- .../apps/mobile/components/TeamMembers.tsx | 6 +- apps/manacore/apps/mobile/eslint.config.mjs | 20 + apps/manacore/apps/mobile/package.json | 6 +- .../apps/mobile/utils/memoryStorage.ts | 4 +- apps/manacore/apps/web/eslint.config.js | 17 + apps/manadeck/apps/backend/eslint.config.mjs | 47 +- apps/manadeck/apps/landing/eslint.config.js | 11 + apps/manadeck/apps/landing/package.json | 3 +- apps/manadeck/apps/mobile/eslint.config.js | 15 - apps/manadeck/apps/mobile/eslint.config.mjs | 12 + apps/manadeck/apps/mobile/package.json | 4 +- apps/manadeck/apps/web/eslint.config.js | 17 + apps/manadeck/apps/web/package.json | 3 +- apps/memoro/apps/landing/eslint.config.js | 11 + apps/memoro/apps/mobile/eslint.config.mjs | 12 + apps/news/apps/landing/eslint.config.js | 11 + apps/nutriphi/apps/backend/eslint.config.mjs | 17 + apps/nutriphi/apps/landing/eslint.config.js | 11 + apps/nutriphi/apps/mobile/eslint.config.mjs | 12 + apps/picture/apps/backend/eslint.config.mjs | 17 + apps/picture/apps/landing/eslint.config.js | 11 + apps/picture/apps/mobile/eslint.config.js | 15 - apps/picture/apps/mobile/eslint.config.mjs | 12 + apps/picture/apps/mobile/package.json | 4 +- apps/picture/apps/web/eslint.config.js | 52 +- apps/picture/package.json | 2 - apps/presi/apps/backend/eslint.config.mjs | 17 + apps/presi/apps/backend/src/db/connection.ts | 2 +- .../apps/backend/src/db/database.module.ts | 2 +- .../apps/backend/src/deck/deck.controller.ts | 6 +- .../apps/backend/src/deck/deck.service.ts | 4 +- .../backend/src/share/share.controller.ts | 6 +- .../apps/backend/src/share/share.service.ts | 4 +- .../backend/src/slide/slide.controller.ts | 6 +- .../apps/backend/src/slide/slide.service.ts | 6 +- .../backend/src/theme/theme.controller.ts | 2 +- apps/presi/apps/landing/eslint.config.js | 11 + apps/presi/apps/landing/package.json | 3 +- apps/presi/apps/mobile/eslint.config.mjs | 12 + apps/presi/apps/mobile/package.json | 4 +- apps/presi/apps/web/eslint.config.js | 17 + apps/presi/packages/shared/package.json | 3 +- apps/quote/apps/backend/eslint.config.mjs | 17 + apps/quote/apps/landing/eslint.config.js | 11 + apps/quote/apps/mobile/eslint.config.mjs | 12 + apps/quote/apps/web/eslint.config.js | 17 + apps/reader/apps/mobile/eslint.config.mjs | 12 + apps/storage/apps/backend/eslint.config.mjs | 17 + apps/storage/apps/web/eslint.config.js | 17 + apps/storage/packages/shared/package.json | 3 +- apps/wisekeep/apps/backend/eslint.config.mjs | 17 + apps/wisekeep/apps/landing/eslint.config.js | 11 + apps/wisekeep/apps/mobile/eslint.config.mjs | 12 + apps/zitare/apps/backend/eslint.config.mjs | 17 + apps/zitare/apps/landing/eslint.config.js | 11 + apps/zitare/apps/landing/package.json | 3 +- apps/zitare/apps/mobile/eslint.config.mjs | 12 + apps/zitare/apps/mobile/package.json | 4 +- apps/zitare/apps/web/eslint.config.js | 17 + apps/zitare/package.json | 1 - apps/zitare/packages/content/package.json | 3 +- apps/zitare/packages/web-ui/package.json | 3 +- eslint.config.mjs | 94 +- .../mana-games/apps/backend/eslint.config.mjs | 17 + games/mana-games/apps/backend/package.json | 3 +- .../game-submission/dto/submit-game.dto.ts | 2 +- games/mana-games/apps/web/eslint.config.js | 23 + games/mana-games/apps/web/package.json | 3 +- .../voxel-lava/apps/backend/eslint.config.mjs | 49 +- .../decorators/current-user.decorator.ts | 2 +- .../src/common/guards/jwt-auth.guard.ts | 9 +- .../apps/backend/src/db/database.module.ts | 2 +- .../backend/src/level/level.controller.ts | 10 +- .../apps/backend/src/level/level.service.ts | 8 +- games/voxel-lava/apps/web/eslint.config.js | 47 +- games/voxel-lava/apps/web/package.json | 2 +- games/voxel-lava/package.json | 1 - packages/eslint-config/base.js | 77 + packages/eslint-config/index.js | 44 + packages/eslint-config/nestjs.js | 122 ++ packages/eslint-config/package.json | 40 + packages/eslint-config/prettier.js | 37 + packages/eslint-config/react.js | 85 + packages/eslint-config/svelte.js | 90 + packages/eslint-config/typescript.js | 92 + .../mana-core-nestjs-integration/package.json | 3 +- packages/manadeck-database/package.json | 3 +- .../src/migrate-from-supabase.ts | 1 - .../src/schema/studySessions.ts | 2 +- packages/news-database/package.json | 3 +- packages/news-database/src/schema/auth.ts | 2 +- packages/nutriphi-database/package.json | 3 +- packages/shared-auth-stores/package.json | 3 +- packages/shared-auth-ui/package.json | 3 + packages/shared-auth/package.json | 3 +- packages/shared-branding/package.json | 3 +- packages/shared-config/package.json | 3 +- packages/shared-credit-service/package.json | 3 +- packages/shared-errors/package.json | 3 +- packages/shared-feedback-service/package.json | 3 +- packages/shared-feedback-types/package.json | 3 +- packages/shared-feedback-ui/package.json | 3 +- packages/shared-i18n/package.json | 3 +- packages/shared-i18n/src/utils.ts | 16 +- packages/shared-icons/package.json | 3 +- packages/shared-landing-ui/package.json | 3 +- packages/shared-nestjs-auth/package.json | 3 +- packages/shared-profile-ui/package.json | 3 +- packages/shared-storage/package.json | 3 +- .../shared-subscription-types/package.json | 3 +- packages/shared-subscription-ui/package.json | 3 +- packages/shared-supabase/package.json | 3 +- packages/shared-tailwind/package.json | 3 + packages/shared-theme-ui/package.json | 3 + packages/shared-theme/package.json | 3 + packages/shared-theme/src/a11y-utils.ts | 39 +- packages/shared-theme/src/utils.ts | 2 +- packages/shared-types/package.json | 3 +- packages/shared-ui/package.json | 3 + packages/shared-utils/package.json | 3 +- packages/shared-utils/src/cache.ts | 2 +- packages/test-config/package.json | 3 +- packages/uload-database/package.json | 3 +- packages/uload-database/src/schema/users.ts | 1 - pnpm-lock.yaml | 916 ++++----- services/mana-core-auth/eslint.config.mjs | 17 + .../src/__tests__/utils/mock-factories.ts | 8 +- .../src/__tests__/utils/test-helpers.ts | 10 +- services/mana-core-auth/src/ai/ai.service.ts | 2 +- .../src/auth/auth.controller.spec.ts | 2 +- .../src/auth/auth.controller.ts | 16 +- .../src/auth/jwt-validation.spec.ts | 4 +- .../auth/services/better-auth.service.spec.ts | 2 +- .../src/auth/services/better-auth.service.ts | 2 +- .../decorators/current-user.decorator.ts | 2 +- .../common/filters/http-exception.filter.ts | 10 +- .../src/common/guards/jwt-auth.guard.ts | 9 +- .../src/common/guards/optional-auth.guard.ts | 4 +- .../src/credits/credits.controller.spec.ts | 4 +- .../src/credits/credits.controller.ts | 8 +- .../src/credits/credits.service.spec.ts | 2 +- .../src/credits/credits.service.ts | 16 +- .../src/feedback/feedback.controller.ts | 6 +- .../src/feedback/feedback.service.ts | 6 +- .../src/settings/settings.controller.ts | 6 +- .../src/settings/settings.service.ts | 12 +- .../test/e2e/b2b-journey.e2e-spec.ts | 6 +- .../test/e2e/b2c-journey.e2e-spec.ts | 4 +- .../integration/auth-flow.integration.spec.ts | 2 +- .../credit-flow.integration.spec.ts | 2 +- services/mana-core-auth/test/setup-e2e.ts | 4 +- services/mana-core-auth/test/setup.ts | 6 +- 213 files changed, 2409 insertions(+), 2644 deletions(-) create mode 100644 apps-archived/maerchenzauber/apps/web/eslint.config.js create mode 100644 apps-archived/memoro/apps/web/eslint.config.js create mode 100644 apps-archived/news/apps/web/eslint.config.js create mode 100644 apps-archived/nutriphi/apps/web/eslint.config.js create mode 100644 apps-archived/wisekeep/apps/web/eslint.config.js create mode 100644 apps/bauntown/apps/landing/eslint.config.js create mode 100644 apps/calendar/apps/backend/eslint.config.mjs create mode 100644 apps/calendar/apps/landing/eslint.config.js create mode 100644 apps/calendar/apps/web/eslint.config.js create mode 100644 apps/chat/apps/backend/eslint.config.mjs create mode 100644 apps/chat/apps/landing/eslint.config.js create mode 100644 apps/chat/apps/mobile/eslint.config.mjs create mode 100644 apps/chat/apps/web/eslint.config.js create mode 100644 apps/contacts/apps/backend/eslint.config.mjs create mode 100644 apps/contacts/apps/web/eslint.config.js create mode 100644 apps/maerchenzauber/apps/backend/eslint.config.mjs create mode 100644 apps/maerchenzauber/apps/landing/eslint.config.js create mode 100644 apps/maerchenzauber/apps/mobile/eslint.config.mjs create mode 100644 apps/manacore/apps/landing/eslint.config.js create mode 100644 apps/manacore/apps/mobile/eslint.config.mjs create mode 100644 apps/manacore/apps/web/eslint.config.js create mode 100644 apps/manadeck/apps/landing/eslint.config.js delete mode 100644 apps/manadeck/apps/mobile/eslint.config.js create mode 100644 apps/manadeck/apps/mobile/eslint.config.mjs create mode 100644 apps/manadeck/apps/web/eslint.config.js create mode 100644 apps/memoro/apps/landing/eslint.config.js create mode 100644 apps/memoro/apps/mobile/eslint.config.mjs create mode 100644 apps/news/apps/landing/eslint.config.js create mode 100644 apps/nutriphi/apps/backend/eslint.config.mjs create mode 100644 apps/nutriphi/apps/landing/eslint.config.js create mode 100644 apps/nutriphi/apps/mobile/eslint.config.mjs create mode 100644 apps/picture/apps/backend/eslint.config.mjs create mode 100644 apps/picture/apps/landing/eslint.config.js delete mode 100644 apps/picture/apps/mobile/eslint.config.js create mode 100644 apps/picture/apps/mobile/eslint.config.mjs create mode 100644 apps/presi/apps/backend/eslint.config.mjs create mode 100644 apps/presi/apps/landing/eslint.config.js create mode 100644 apps/presi/apps/mobile/eslint.config.mjs create mode 100644 apps/presi/apps/web/eslint.config.js create mode 100644 apps/quote/apps/backend/eslint.config.mjs create mode 100644 apps/quote/apps/landing/eslint.config.js create mode 100644 apps/quote/apps/mobile/eslint.config.mjs create mode 100644 apps/quote/apps/web/eslint.config.js create mode 100644 apps/reader/apps/mobile/eslint.config.mjs create mode 100644 apps/storage/apps/backend/eslint.config.mjs create mode 100644 apps/storage/apps/web/eslint.config.js create mode 100644 apps/wisekeep/apps/backend/eslint.config.mjs create mode 100644 apps/wisekeep/apps/landing/eslint.config.js create mode 100644 apps/wisekeep/apps/mobile/eslint.config.mjs create mode 100644 apps/zitare/apps/backend/eslint.config.mjs create mode 100644 apps/zitare/apps/landing/eslint.config.js create mode 100644 apps/zitare/apps/mobile/eslint.config.mjs create mode 100644 apps/zitare/apps/web/eslint.config.js create mode 100644 games/mana-games/apps/backend/eslint.config.mjs create mode 100644 games/mana-games/apps/web/eslint.config.js create mode 100644 packages/eslint-config/base.js create mode 100644 packages/eslint-config/index.js create mode 100644 packages/eslint-config/nestjs.js create mode 100644 packages/eslint-config/package.json create mode 100644 packages/eslint-config/prettier.js create mode 100644 packages/eslint-config/react.js create mode 100644 packages/eslint-config/svelte.js create mode 100644 packages/eslint-config/typescript.js create mode 100644 services/mana-core-auth/eslint.config.mjs diff --git a/.claude-flow/metrics/performance.json b/.claude-flow/metrics/performance.json index 26fdb50c3..7a33653f4 100644 --- a/.claude-flow/metrics/performance.json +++ b/.claude-flow/metrics/performance.json @@ -1,10 +1,10 @@ { - "startTime": 1764606551673, - "sessionId": "session-1764606551673", - "lastActivity": 1764606551673, + "startTime": 1764801237027, + "sessionId": "session-1764801237027", + "lastActivity": 1764801237027, "sessionDuration": 0, - "totalTasks": 2, - "successfulTasks": 2, + "totalTasks": 1, + "successfulTasks": 1, "failedTasks": 0, "totalAgents": 0, "activeAgents": 0, diff --git a/.claude-flow/metrics/system-metrics.json b/.claude-flow/metrics/system-metrics.json index 072fe2253..f318b78fa 100644 --- a/.claude-flow/metrics/system-metrics.json +++ b/.claude-flow/metrics/system-metrics.json @@ -1,1622 +1,194 @@ [ { - "timestamp": 1764606581786, + "timestamp": 1764801267150, "memoryTotal": 34359738368, - "memoryUsed": 34264432640, - "memoryFree": 95305728, - "memoryUsagePercent": 99.72262382507324, - "memoryEfficiency": 0.2773761749267578, + "memoryUsed": 34272837632, + "memoryFree": 86900736, + "memoryUsagePercent": 99.74708557128906, + "memoryEfficiency": 0.2529144287109375, "cpuCount": 12, - "cpuLoad": 0.4644775390625, + "cpuLoad": 0.21484375, "platform": "darwin", - "uptime": 110927 + "uptime": 165289 }, { - "timestamp": 1764606611787, + "timestamp": 1764801297151, "memoryTotal": 34359738368, - "memoryUsed": 34237661184, - "memoryFree": 122077184, - "memoryUsagePercent": 99.64470863342285, - "memoryEfficiency": 0.35529136657714844, + "memoryUsed": 34281340928, + "memoryFree": 78397440, + "memoryUsagePercent": 99.7718334197998, + "memoryEfficiency": 0.2281665802001953, "cpuCount": 12, - "cpuLoad": 0.4963785807291667, + "cpuLoad": 0.17854817708333334, "platform": "darwin", - "uptime": 110957 + "uptime": 165319 }, { - "timestamp": 1764606641788, + "timestamp": 1764801327152, "memoryTotal": 34359738368, - "memoryUsed": 34286387200, - "memoryFree": 73351168, - "memoryUsagePercent": 99.78652000427246, - "memoryEfficiency": 0.21347999572753906, + "memoryUsed": 34161672192, + "memoryFree": 198066176, + "memoryUsagePercent": 99.42355155944824, + "memoryEfficiency": 0.5764484405517578, "cpuCount": 12, - "cpuLoad": 0.353515625, + "cpuLoad": 0.18697102864583334, "platform": "darwin", - "uptime": 110987 + "uptime": 165349 }, { - "timestamp": 1764606671789, + "timestamp": 1764801357153, "memoryTotal": 34359738368, - "memoryUsed": 34286026752, - "memoryFree": 73711616, - "memoryUsagePercent": 99.78547096252441, - "memoryEfficiency": 0.21452903747558594, + "memoryUsed": 34194079744, + "memoryFree": 165658624, + "memoryUsagePercent": 99.51786994934082, + "memoryEfficiency": 0.4821300506591797, "cpuCount": 12, - "cpuLoad": 0.2768961588541667, + "cpuLoad": 0.16813151041666666, "platform": "darwin", - "uptime": 111017 + "uptime": 165379 }, { - "timestamp": 1764606701790, + "timestamp": 1764801387155, "memoryTotal": 34359738368, - "memoryUsed": 34283225088, - "memoryFree": 76513280, - "memoryUsagePercent": 99.77731704711914, - "memoryEfficiency": 0.22268295288085938, + "memoryUsed": 33719730176, + "memoryFree": 640008192, + "memoryUsagePercent": 98.13733100891113, + "memoryEfficiency": 1.8626689910888672, "cpuCount": 12, - "cpuLoad": 0.2895100911458333, + "cpuLoad": 0.17496744791666666, "platform": "darwin", - "uptime": 111047 + "uptime": 165409 }, { - "timestamp": 1764606731790, + "timestamp": 1764801417161, "memoryTotal": 34359738368, - "memoryUsed": 34282094592, - "memoryFree": 77643776, - "memoryUsagePercent": 99.77402687072754, - "memoryEfficiency": 0.22597312927246094, + "memoryUsed": 34166226944, + "memoryFree": 193511424, + "memoryUsagePercent": 99.43680763244629, + "memoryEfficiency": 0.5631923675537109, "cpuCount": 12, - "cpuLoad": 0.2627766927083333, + "cpuLoad": 0.20377604166666666, "platform": "darwin", - "uptime": 111077 + "uptime": 165439 }, { - "timestamp": 1764606761792, + "timestamp": 1764801447175, "memoryTotal": 34359738368, - "memoryUsed": 34296659968, - "memoryFree": 63078400, - "memoryUsagePercent": 99.8164176940918, - "memoryEfficiency": 0.18358230590820312, + "memoryUsed": 33436041216, + "memoryFree": 923697152, + "memoryUsagePercent": 97.31168746948242, + "memoryEfficiency": 2.688312530517578, "cpuCount": 12, - "cpuLoad": 0.3104654947916667, + "cpuLoad": 0.1602783203125, "platform": "darwin", - "uptime": 111107 + "uptime": 165469 }, { - "timestamp": 1764606791792, + "timestamp": 1764801477179, "memoryTotal": 34359738368, - "memoryUsed": 34293809152, - "memoryFree": 65929216, - "memoryUsagePercent": 99.80812072753906, - "memoryEfficiency": 0.1918792724609375, + "memoryUsed": 33496301568, + "memoryFree": 863436800, + "memoryUsagePercent": 97.48706817626953, + "memoryEfficiency": 2.5129318237304688, "cpuCount": 12, - "cpuLoad": 0.3295491536458333, + "cpuLoad": 0.13191731770833334, "platform": "darwin", - "uptime": 111137 + "uptime": 165499 }, { - "timestamp": 1764606821794, + "timestamp": 1764801507180, "memoryTotal": 34359738368, - "memoryUsed": 34278801408, - "memoryFree": 80936960, - "memoryUsagePercent": 99.76444244384766, - "memoryEfficiency": 0.23555755615234375, + "memoryUsed": 34201632768, + "memoryFree": 158105600, + "memoryUsagePercent": 99.53985214233398, + "memoryEfficiency": 0.4601478576660156, "cpuCount": 12, - "cpuLoad": 0.2636311848958333, + "cpuLoad": 0.114013671875, "platform": "darwin", - "uptime": 111167 + "uptime": 165529 }, { - "timestamp": 1764606851794, + "timestamp": 1764801537183, "memoryTotal": 34359738368, - "memoryUsed": 34260140032, - "memoryFree": 99598336, - "memoryUsagePercent": 99.71013069152832, - "memoryEfficiency": 0.2898693084716797, + "memoryUsed": 34281766912, + "memoryFree": 77971456, + "memoryUsagePercent": 99.77307319641113, + "memoryEfficiency": 0.2269268035888672, "cpuCount": 12, - "cpuLoad": 0.2754720052083333, + "cpuLoad": 0.09635416666666667, "platform": "darwin", - "uptime": 111197 + "uptime": 165559 }, { - "timestamp": 1764606881796, + "timestamp": 1764801567183, "memoryTotal": 34359738368, - "memoryUsed": 34290417664, - "memoryFree": 69320704, - "memoryUsagePercent": 99.79825019836426, - "memoryEfficiency": 0.2017498016357422, + "memoryUsed": 34257518592, + "memoryFree": 102219776, + "memoryUsagePercent": 99.70250129699707, + "memoryEfficiency": 0.2974987030029297, "cpuCount": 12, - "cpuLoad": 0.21883138020833334, + "cpuLoad": 0.19612630208333334, "platform": "darwin", - "uptime": 111227 + "uptime": 165589 }, { - "timestamp": 1764606911797, + "timestamp": 1764801597184, "memoryTotal": 34359738368, - "memoryUsed": 34244329472, - "memoryFree": 115408896, - "memoryUsagePercent": 99.66411590576172, - "memoryEfficiency": 0.33588409423828125, + "memoryUsed": 34194980864, + "memoryFree": 164757504, + "memoryUsagePercent": 99.52049255371094, + "memoryEfficiency": 0.4795074462890625, "cpuCount": 12, - "cpuLoad": 0.2169189453125, + "cpuLoad": 0.2692057291666667, "platform": "darwin", - "uptime": 111257 + "uptime": 165619 }, { - "timestamp": 1764606941797, + "timestamp": 1764801627185, "memoryTotal": 34359738368, - "memoryUsed": 34283634688, - "memoryFree": 76103680, - "memoryUsagePercent": 99.77850914001465, - "memoryEfficiency": 0.22149085998535156, + "memoryUsed": 34274443264, + "memoryFree": 85295104, + "memoryUsagePercent": 99.75175857543945, + "memoryEfficiency": 0.24824142456054688, "cpuCount": 12, - "cpuLoad": 0.17268880208333334, + "cpuLoad": 0.23429361979166666, "platform": "darwin", - "uptime": 111287 + "uptime": 165649 }, { - "timestamp": 1764606971798, + "timestamp": 1764801657185, "memoryTotal": 34359738368, - "memoryUsed": 34263924736, - "memoryFree": 95813632, - "memoryUsagePercent": 99.72114562988281, - "memoryEfficiency": 0.2788543701171875, + "memoryUsed": 34246066176, + "memoryFree": 113672192, + "memoryUsagePercent": 99.66917037963867, + "memoryEfficiency": 0.3308296203613281, "cpuCount": 12, - "cpuLoad": 0.130859375, + "cpuLoad": 0.17635091145833334, "platform": "darwin", - "uptime": 111317 + "uptime": 165679 }, { - "timestamp": 1764607001800, + "timestamp": 1764801687187, "memoryTotal": 34359738368, - "memoryUsed": 34275557376, - "memoryFree": 84180992, - "memoryUsagePercent": 99.75500106811523, - "memoryEfficiency": 0.24499893188476562, + "memoryUsed": 34242707456, + "memoryFree": 117030912, + "memoryUsagePercent": 99.65939521789551, + "memoryEfficiency": 0.3406047821044922, "cpuCount": 12, - "cpuLoad": 0.12418619791666667, + "cpuLoad": 0.19942220052083334, "platform": "darwin", - "uptime": 111347 + "uptime": 165709 }, { - "timestamp": 1764607031801, + "timestamp": 1764801717189, "memoryTotal": 34359738368, - "memoryUsed": 34270953472, - "memoryFree": 88784896, - "memoryUsagePercent": 99.74160194396973, - "memoryEfficiency": 0.25839805603027344, + "memoryUsed": 33905098752, + "memoryFree": 454639616, + "memoryUsagePercent": 98.67682456970215, + "memoryEfficiency": 1.3231754302978516, "cpuCount": 12, - "cpuLoad": 0.129638671875, + "cpuLoad": 0.14306640625, "platform": "darwin", - "uptime": 111377 - }, - { - "timestamp": 1764607061802, - "memoryTotal": 34359738368, - "memoryUsed": 34252111872, - "memoryFree": 107626496, - "memoryUsagePercent": 99.68676567077637, - "memoryEfficiency": 0.3132343292236328, - "cpuCount": 12, - "cpuLoad": 0.10575358072916667, - "platform": "darwin", - "uptime": 111407 - }, - { - "timestamp": 1764607091803, - "memoryTotal": 34359738368, - "memoryUsed": 34254290944, - "memoryFree": 105447424, - "memoryUsagePercent": 99.69310760498047, - "memoryEfficiency": 0.30689239501953125, - "cpuCount": 12, - "cpuLoad": 0.09757486979166667, - "platform": "darwin", - "uptime": 111437 - }, - { - "timestamp": 1764607121804, - "memoryTotal": 34359738368, - "memoryUsed": 34149154816, - "memoryFree": 210583552, - "memoryUsagePercent": 99.38712120056152, - "memoryEfficiency": 0.6128787994384766, - "cpuCount": 12, - "cpuLoad": 0.11775716145833333, - "platform": "darwin", - "uptime": 111467 - }, - { - "timestamp": 1764607151804, - "memoryTotal": 34359738368, - "memoryUsed": 34224455680, - "memoryFree": 135282688, - "memoryUsagePercent": 99.60627555847168, - "memoryEfficiency": 0.3937244415283203, - "cpuCount": 12, - "cpuLoad": 0.14583333333333334, - "platform": "darwin", - "uptime": 111497 - }, - { - "timestamp": 1764607181805, - "memoryTotal": 34359738368, - "memoryUsed": 34262925312, - "memoryFree": 96813056, - "memoryUsagePercent": 99.71823692321777, - "memoryEfficiency": 0.28176307678222656, - "cpuCount": 12, - "cpuLoad": 0.11490885416666667, - "platform": "darwin", - "uptime": 111527 - }, - { - "timestamp": 1764607211808, - "memoryTotal": 34359738368, - "memoryUsed": 34222391296, - "memoryFree": 137347072, - "memoryUsagePercent": 99.60026741027832, - "memoryEfficiency": 0.3997325897216797, - "cpuCount": 12, - "cpuLoad": 0.17069498697916666, - "platform": "darwin", - "uptime": 111557 - }, - { - "timestamp": 1764607241808, - "memoryTotal": 34359738368, - "memoryUsed": 34221670400, - "memoryFree": 138067968, - "memoryUsagePercent": 99.59816932678223, - "memoryEfficiency": 0.40183067321777344, - "cpuCount": 12, - "cpuLoad": 0.4423014322916667, - "platform": "darwin", - "uptime": 111587 - }, - { - "timestamp": 1764607271810, - "memoryTotal": 34359738368, - "memoryUsed": 34217574400, - "memoryFree": 142163968, - "memoryUsagePercent": 99.58624839782715, - "memoryEfficiency": 0.41375160217285156, - "cpuCount": 12, - "cpuLoad": 0.3418375651041667, - "platform": "darwin", - "uptime": 111617 - }, - { - "timestamp": 1764607301810, - "memoryTotal": 34359738368, - "memoryUsed": 34232680448, - "memoryFree": 127057920, - "memoryUsagePercent": 99.63021278381348, - "memoryEfficiency": 0.36978721618652344, - "cpuCount": 12, - "cpuLoad": 0.2733561197916667, - "platform": "darwin", - "uptime": 111647 - }, - { - "timestamp": 1764607331811, - "memoryTotal": 34359738368, - "memoryUsed": 34222751744, - "memoryFree": 136986624, - "memoryUsagePercent": 99.60131645202637, - "memoryEfficiency": 0.3986835479736328, - "cpuCount": 12, - "cpuLoad": 0.24613444010416666, - "platform": "darwin", - "uptime": 111677 - }, - { - "timestamp": 1764607361812, - "memoryTotal": 34359738368, - "memoryUsed": 34260729856, - "memoryFree": 99008512, - "memoryUsagePercent": 99.71184730529785, - "memoryEfficiency": 0.28815269470214844, - "cpuCount": 12, - "cpuLoad": 0.16133626302083334, - "platform": "darwin", - "uptime": 111707 - }, - { - "timestamp": 1764607391813, - "memoryTotal": 34359738368, - "memoryUsed": 34261942272, - "memoryFree": 97796096, - "memoryUsagePercent": 99.71537590026855, - "memoryEfficiency": 0.2846240997314453, - "cpuCount": 12, - "cpuLoad": 0.16035970052083334, - "platform": "darwin", - "uptime": 111737 - }, - { - "timestamp": 1764607421815, - "memoryTotal": 34359738368, - "memoryUsed": 34261352448, - "memoryFree": 98385920, - "memoryUsagePercent": 99.71365928649902, - "memoryEfficiency": 0.28634071350097656, - "cpuCount": 12, - "cpuLoad": 0.11710611979166667, - "platform": "darwin", - "uptime": 111767 - }, - { - "timestamp": 1764607451816, - "memoryTotal": 34359738368, - "memoryUsed": 34215362560, - "memoryFree": 144375808, - "memoryUsagePercent": 99.5798110961914, - "memoryEfficiency": 0.42018890380859375, - "cpuCount": 12, - "cpuLoad": 0.15181477864583334, - "platform": "darwin", - "uptime": 111797 - }, - { - "timestamp": 1764607481817, - "memoryTotal": 34359738368, - "memoryUsed": 34272477184, - "memoryFree": 87261184, - "memoryUsagePercent": 99.74603652954102, - "memoryEfficiency": 0.2539634704589844, - "cpuCount": 12, - "cpuLoad": 0.09757486979166667, - "platform": "darwin", - "uptime": 111827 - }, - { - "timestamp": 1764607511817, - "memoryTotal": 34359738368, - "memoryUsed": 34199928832, - "memoryFree": 159809536, - "memoryUsagePercent": 99.53489303588867, - "memoryEfficiency": 0.4651069641113281, - "cpuCount": 12, - "cpuLoad": 0.1002197265625, - "platform": "darwin", - "uptime": 111857 - }, - { - "timestamp": 1764607541818, - "memoryTotal": 34359738368, - "memoryUsed": 34266021888, - "memoryFree": 93716480, - "memoryUsagePercent": 99.72724914550781, - "memoryEfficiency": 0.2727508544921875, - "cpuCount": 12, - "cpuLoad": 0.10042317708333333, - "platform": "darwin", - "uptime": 111887 - }, - { - "timestamp": 1764607571819, - "memoryTotal": 34359738368, - "memoryUsed": 34280390656, - "memoryFree": 79347712, - "memoryUsagePercent": 99.76906776428223, - "memoryEfficiency": 0.23093223571777344, - "cpuCount": 12, - "cpuLoad": 0.14481608072916666, - "platform": "darwin", - "uptime": 111917 - }, - { - "timestamp": 1764607601821, - "memoryTotal": 34359738368, - "memoryUsed": 34265415680, - "memoryFree": 94322688, - "memoryUsagePercent": 99.72548484802246, - "memoryEfficiency": 0.27451515197753906, - "cpuCount": 12, - "cpuLoad": 0.1158447265625, - "platform": "darwin", - "uptime": 111947 - }, - { - "timestamp": 1764607631822, - "memoryTotal": 34359738368, - "memoryUsed": 34241134592, - "memoryFree": 118603776, - "memoryUsagePercent": 99.65481758117676, - "memoryEfficiency": 0.3451824188232422, - "cpuCount": 12, - "cpuLoad": 0.137939453125, - "platform": "darwin", - "uptime": 111977 - }, - { - "timestamp": 1764607661822, - "memoryTotal": 34359738368, - "memoryUsed": 34283503616, - "memoryFree": 76234752, - "memoryUsagePercent": 99.77812767028809, - "memoryEfficiency": 0.22187232971191406, - "cpuCount": 12, - "cpuLoad": 0.17740885416666666, - "platform": "darwin", - "uptime": 112007 - }, - { - "timestamp": 1764607691822, - "memoryTotal": 34359738368, - "memoryUsed": 34231418880, - "memoryFree": 128319488, - "memoryUsagePercent": 99.62654113769531, - "memoryEfficiency": 0.3734588623046875, - "cpuCount": 12, - "cpuLoad": 0.15816243489583334, - "platform": "darwin", - "uptime": 112037 - }, - { - "timestamp": 1764607721823, - "memoryTotal": 34359738368, - "memoryUsed": 34285305856, - "memoryFree": 74432512, - "memoryUsagePercent": 99.78337287902832, - "memoryEfficiency": 0.2166271209716797, - "cpuCount": 12, - "cpuLoad": 0.13130696614583334, - "platform": "darwin", - "uptime": 112067 - }, - { - "timestamp": 1764607751825, - "memoryTotal": 34359738368, - "memoryUsed": 34251800576, - "memoryFree": 107937792, - "memoryUsagePercent": 99.68585968017578, - "memoryEfficiency": 0.31414031982421875, - "cpuCount": 12, - "cpuLoad": 0.13313802083333334, - "platform": "darwin", - "uptime": 112097 - }, - { - "timestamp": 1764607781825, - "memoryTotal": 34359738368, - "memoryUsed": 34291269632, - "memoryFree": 68468736, - "memoryUsagePercent": 99.80072975158691, - "memoryEfficiency": 0.19927024841308594, - "cpuCount": 12, - "cpuLoad": 0.23335774739583334, - "platform": "darwin", - "uptime": 112127 - }, - { - "timestamp": 1764607811827, - "memoryTotal": 34359738368, - "memoryUsed": 34182529024, - "memoryFree": 177209344, - "memoryUsagePercent": 99.4842529296875, - "memoryEfficiency": 0.5157470703125, - "cpuCount": 12, - "cpuLoad": 0.1744384765625, - "platform": "darwin", - "uptime": 112157 - }, - { - "timestamp": 1764607841828, - "memoryTotal": 34359738368, - "memoryUsed": 34221588480, - "memoryFree": 138149888, - "memoryUsagePercent": 99.59793090820312, - "memoryEfficiency": 0.402069091796875, - "cpuCount": 12, - "cpuLoad": 0.15205891927083334, - "platform": "darwin", - "uptime": 112187 - }, - { - "timestamp": 1764607871829, - "memoryTotal": 34359738368, - "memoryUsed": 34012250112, - "memoryFree": 347488256, - "memoryUsagePercent": 98.98867607116699, - "memoryEfficiency": 1.0113239288330078, - "cpuCount": 12, - "cpuLoad": 0.1572265625, - "platform": "darwin", - "uptime": 112217 - }, - { - "timestamp": 1764607901829, - "memoryTotal": 34359738368, - "memoryUsed": 34258190336, - "memoryFree": 101548032, - "memoryUsagePercent": 99.7044563293457, - "memoryEfficiency": 0.2955436706542969, - "cpuCount": 12, - "cpuLoad": 0.1060791015625, - "platform": "darwin", - "uptime": 112247 - }, - { - "timestamp": 1764607931831, - "memoryTotal": 34359738368, - "memoryUsed": 34284552192, - "memoryFree": 75186176, - "memoryUsagePercent": 99.78117942810059, - "memoryEfficiency": 0.21882057189941406, - "cpuCount": 12, - "cpuLoad": 0.08711751302083333, - "platform": "darwin", - "uptime": 112277 - }, - { - "timestamp": 1764607961831, - "memoryTotal": 34359738368, - "memoryUsed": 34281750528, - "memoryFree": 77987840, - "memoryUsagePercent": 99.77302551269531, - "memoryEfficiency": 0.2269744873046875, - "cpuCount": 12, - "cpuLoad": 0.1539306640625, - "platform": "darwin", - "uptime": 112307 - }, - { - "timestamp": 1764607991832, - "memoryTotal": 34359738368, - "memoryUsed": 34241003520, - "memoryFree": 118734848, - "memoryUsagePercent": 99.6544361114502, - "memoryEfficiency": 0.3455638885498047, - "cpuCount": 12, - "cpuLoad": 0.12186686197916667, - "platform": "darwin", - "uptime": 112337 - }, - { - "timestamp": 1764608021832, - "memoryTotal": 34359738368, - "memoryUsed": 34292809728, - "memoryFree": 66928640, - "memoryUsagePercent": 99.80521202087402, - "memoryEfficiency": 0.19478797912597656, - "cpuCount": 12, - "cpuLoad": 0.17610677083333334, - "platform": "darwin", - "uptime": 112367 - }, - { - "timestamp": 1764608051832, - "memoryTotal": 34359738368, - "memoryUsed": 34255847424, - "memoryFree": 103890944, - "memoryUsagePercent": 99.6976375579834, - "memoryEfficiency": 0.30236244201660156, - "cpuCount": 12, - "cpuLoad": 0.14619954427083334, - "platform": "darwin", - "uptime": 112397 - }, - { - "timestamp": 1764608081831, - "memoryTotal": 34359738368, - "memoryUsed": 34285043712, - "memoryFree": 74694656, - "memoryUsagePercent": 99.7826099395752, - "memoryEfficiency": 0.2173900604248047, - "cpuCount": 12, - "cpuLoad": 0.15266927083333334, - "platform": "darwin", - "uptime": 112427 - }, - { - "timestamp": 1764608111832, - "memoryTotal": 34359738368, - "memoryUsed": 34266890240, - "memoryFree": 92848128, - "memoryUsagePercent": 99.72977638244629, - "memoryEfficiency": 0.27022361755371094, - "cpuCount": 12, - "cpuLoad": 0.14729817708333334, - "platform": "darwin", - "uptime": 112457 - }, - { - "timestamp": 1764608141833, - "memoryTotal": 34359738368, - "memoryUsed": 34291269632, - "memoryFree": 68468736, - "memoryUsagePercent": 99.80072975158691, - "memoryEfficiency": 0.19927024841308594, - "cpuCount": 12, - "cpuLoad": 0.20930989583333334, - "platform": "darwin", - "uptime": 112487 - }, - { - "timestamp": 1764608171835, - "memoryTotal": 34359738368, - "memoryUsed": 34288844800, - "memoryFree": 70893568, - "memoryUsagePercent": 99.79367256164551, - "memoryEfficiency": 0.2063274383544922, - "cpuCount": 12, - "cpuLoad": 0.18359375, - "platform": "darwin", - "uptime": 112517 - }, - { - "timestamp": 1764608201835, - "memoryTotal": 34359738368, - "memoryUsed": 34296774656, - "memoryFree": 62963712, - "memoryUsagePercent": 99.81675148010254, - "memoryEfficiency": 0.18324851989746094, - "cpuCount": 12, - "cpuLoad": 0.233642578125, - "platform": "darwin", - "uptime": 112547 - }, - { - "timestamp": 1764608231836, - "memoryTotal": 34359738368, - "memoryUsed": 34281619456, - "memoryFree": 78118912, - "memoryUsagePercent": 99.77264404296875, - "memoryEfficiency": 0.22735595703125, - "cpuCount": 12, - "cpuLoad": 0.19978841145833334, - "platform": "darwin", - "uptime": 112577 - }, - { - "timestamp": 1764608261836, - "memoryTotal": 34359738368, - "memoryUsed": 34287534080, - "memoryFree": 72204288, - "memoryUsagePercent": 99.78985786437988, - "memoryEfficiency": 0.2101421356201172, - "cpuCount": 12, - "cpuLoad": 0.22163899739583334, - "platform": "darwin", - "uptime": 112607 - }, - { - "timestamp": 1764608291874, - "memoryTotal": 34359738368, - "memoryUsed": 34280275968, - "memoryFree": 79462400, - "memoryUsagePercent": 99.76873397827148, - "memoryEfficiency": 0.23126602172851562, - "cpuCount": 12, - "cpuLoad": 0.16007486979166666, - "platform": "darwin", - "uptime": 112637 - }, - { - "timestamp": 1764608321883, - "memoryTotal": 34359738368, - "memoryUsed": 34271559680, - "memoryFree": 88178688, - "memoryUsagePercent": 99.74336624145508, - "memoryEfficiency": 0.2566337585449219, - "cpuCount": 12, - "cpuLoad": 0.1414794921875, - "platform": "darwin", - "uptime": 112667 - }, - { - "timestamp": 1764608351885, - "memoryTotal": 34359738368, - "memoryUsed": 34286075904, - "memoryFree": 73662464, - "memoryUsagePercent": 99.78561401367188, - "memoryEfficiency": 0.214385986328125, - "cpuCount": 12, - "cpuLoad": 0.14640299479166666, - "platform": "darwin", - "uptime": 112697 - }, - { - "timestamp": 1764608381886, - "memoryTotal": 34359738368, - "memoryUsed": 34272608256, - "memoryFree": 87130112, - "memoryUsagePercent": 99.74641799926758, - "memoryEfficiency": 0.2535820007324219, - "cpuCount": 12, - "cpuLoad": 0.14375813802083334, - "platform": "darwin", - "uptime": 112727 - }, - { - "timestamp": 1764608411888, - "memoryTotal": 34359738368, - "memoryUsed": 32668696576, - "memoryFree": 1691041792, - "memoryUsagePercent": 95.07842063903809, - "memoryEfficiency": 4.921579360961914, - "cpuCount": 12, - "cpuLoad": 0.3475748697916667, - "platform": "darwin", - "uptime": 112757 - }, - { - "timestamp": 1764608441888, - "memoryTotal": 34359738368, - "memoryUsed": 34221228032, - "memoryFree": 138510336, - "memoryUsagePercent": 99.59688186645508, - "memoryEfficiency": 0.4031181335449219, - "cpuCount": 12, - "cpuLoad": 0.2943929036458333, - "platform": "darwin", - "uptime": 112787 - }, - { - "timestamp": 1764608471891, - "memoryTotal": 34359738368, - "memoryUsed": 32246480896, - "memoryFree": 2113257472, - "memoryUsagePercent": 93.84961128234863, - "memoryEfficiency": 6.150388717651367, - "cpuCount": 12, - "cpuLoad": 0.3447265625, - "platform": "darwin", - "uptime": 112817 - }, - { - "timestamp": 1764608501892, - "memoryTotal": 34359738368, - "memoryUsed": 33238466560, - "memoryFree": 1121271808, - "memoryUsagePercent": 96.73666954040527, - "memoryEfficiency": 3.2633304595947266, - "cpuCount": 12, - "cpuLoad": 0.274658203125, - "platform": "darwin", - "uptime": 112847 - }, - { - "timestamp": 1764608531893, - "memoryTotal": 34359738368, - "memoryUsed": 33430929408, - "memoryFree": 928808960, - "memoryUsagePercent": 97.29681015014648, - "memoryEfficiency": 2.7031898498535156, - "cpuCount": 12, - "cpuLoad": 0.22330729166666666, - "platform": "darwin", - "uptime": 112877 - }, - { - "timestamp": 1764608561893, - "memoryTotal": 34359738368, - "memoryUsed": 33820753920, - "memoryFree": 538984448, - "memoryUsagePercent": 98.43134880065918, - "memoryEfficiency": 1.5686511993408203, - "cpuCount": 12, - "cpuLoad": 0.14839680989583334, - "platform": "darwin", - "uptime": 112907 - }, - { - "timestamp": 1764608591895, - "memoryTotal": 34359738368, - "memoryUsed": 33762197504, - "memoryFree": 597540864, - "memoryUsagePercent": 98.26092720031738, - "memoryEfficiency": 1.7390727996826172, - "cpuCount": 12, - "cpuLoad": 0.1102294921875, - "platform": "darwin", - "uptime": 112937 - }, - { - "timestamp": 1764608621896, - "memoryTotal": 34359738368, - "memoryUsed": 33841709056, - "memoryFree": 518029312, - "memoryUsagePercent": 98.49233627319336, - "memoryEfficiency": 1.5076637268066406, - "cpuCount": 12, - "cpuLoad": 0.10555013020833333, - "platform": "darwin", - "uptime": 112967 - }, - { - "timestamp": 1764608651897, - "memoryTotal": 34359738368, - "memoryUsed": 33920417792, - "memoryFree": 439320576, - "memoryUsagePercent": 98.72140884399414, - "memoryEfficiency": 1.2785911560058594, - "cpuCount": 12, - "cpuLoad": 0.1175537109375, - "platform": "darwin", - "uptime": 112997 - }, - { - "timestamp": 1764608681897, - "memoryTotal": 34359738368, - "memoryUsed": 33990803456, - "memoryFree": 368934912, - "memoryUsagePercent": 98.9262580871582, - "memoryEfficiency": 1.0737419128417969, - "cpuCount": 12, - "cpuLoad": 0.10856119791666667, - "platform": "darwin", - "uptime": 113027 - }, - { - "timestamp": 1764608711899, - "memoryTotal": 34359738368, - "memoryUsed": 34004303872, - "memoryFree": 355434496, - "memoryUsagePercent": 98.96554946899414, - "memoryEfficiency": 1.0344505310058594, - "cpuCount": 12, - "cpuLoad": 0.09419759114583333, - "platform": "darwin", - "uptime": 113057 - }, - { - "timestamp": 1764608741900, - "memoryTotal": 34359738368, - "memoryUsed": 33923514368, - "memoryFree": 436224000, - "memoryUsagePercent": 98.73042106628418, - "memoryEfficiency": 1.2695789337158203, - "cpuCount": 12, - "cpuLoad": 0.0916748046875, - "platform": "darwin", - "uptime": 113087 - }, - { - "timestamp": 1764608771900, - "memoryTotal": 34359738368, - "memoryUsed": 33693777920, - "memoryFree": 665960448, - "memoryUsagePercent": 98.06180000305176, - "memoryEfficiency": 1.9381999969482422, - "cpuCount": 12, - "cpuLoad": 0.11942545572916667, - "platform": "darwin", - "uptime": 113117 - }, - { - "timestamp": 1764608801900, - "memoryTotal": 34359738368, - "memoryUsed": 33882882048, - "memoryFree": 476856320, - "memoryUsagePercent": 98.6121654510498, - "memoryEfficiency": 1.3878345489501953, - "cpuCount": 12, - "cpuLoad": 0.111328125, - "platform": "darwin", - "uptime": 113147 - }, - { - "timestamp": 1764608831901, - "memoryTotal": 34359738368, - "memoryUsed": 33795063808, - "memoryFree": 564674560, - "memoryUsagePercent": 98.35658073425293, - "memoryEfficiency": 1.6434192657470703, - "cpuCount": 12, - "cpuLoad": 0.08536783854166667, - "platform": "darwin", - "uptime": 113177 - }, - { - "timestamp": 1764608861903, - "memoryTotal": 34359738368, - "memoryUsed": 33906278400, - "memoryFree": 453459968, - "memoryUsagePercent": 98.68025779724121, - "memoryEfficiency": 1.319742202758789, - "cpuCount": 12, - "cpuLoad": 0.0767822265625, - "platform": "darwin", - "uptime": 113207 - }, - { - "timestamp": 1764608891906, - "memoryTotal": 34359738368, - "memoryUsed": 33996324864, - "memoryFree": 363413504, - "memoryUsagePercent": 98.94232749938965, - "memoryEfficiency": 1.0576725006103516, - "cpuCount": 12, - "cpuLoad": 0.12251790364583333, - "platform": "darwin", - "uptime": 113237 - }, - { - "timestamp": 1764608921908, - "memoryTotal": 34359738368, - "memoryUsed": 34237661184, - "memoryFree": 122077184, - "memoryUsagePercent": 99.64470863342285, - "memoryEfficiency": 0.35529136657714844, - "cpuCount": 12, - "cpuLoad": 0.10213216145833333, - "platform": "darwin", - "uptime": 113267 - }, - { - "timestamp": 1764608951910, - "memoryTotal": 34359738368, - "memoryUsed": 34252767232, - "memoryFree": 106971136, - "memoryUsagePercent": 99.68867301940918, - "memoryEfficiency": 0.3113269805908203, - "cpuCount": 12, - "cpuLoad": 0.09366861979166667, - "platform": "darwin", - "uptime": 113297 - }, - { - "timestamp": 1764608981912, - "memoryTotal": 34359738368, - "memoryUsed": 34291384320, - "memoryFree": 68354048, - "memoryUsagePercent": 99.80106353759766, - "memoryEfficiency": 0.19893646240234375, - "cpuCount": 12, - "cpuLoad": 0.11637369791666667, - "platform": "darwin", - "uptime": 113327 - }, - { - "timestamp": 1764609011914, - "memoryTotal": 34359738368, - "memoryUsed": 34219130880, - "memoryFree": 140607488, - "memoryUsagePercent": 99.59077835083008, - "memoryEfficiency": 0.4092216491699219, - "cpuCount": 12, - "cpuLoad": 0.12845865885416666, - "platform": "darwin", - "uptime": 113357 - }, - { - "timestamp": 1764609041915, - "memoryTotal": 34359738368, - "memoryUsed": 34214739968, - "memoryFree": 144998400, - "memoryUsagePercent": 99.57799911499023, - "memoryEfficiency": 0.4220008850097656, - "cpuCount": 12, - "cpuLoad": 0.14274088541666666, - "platform": "darwin", - "uptime": 113387 - }, - { - "timestamp": 1764609071917, - "memoryTotal": 34359738368, - "memoryUsed": 34246426624, - "memoryFree": 113311744, - "memoryUsagePercent": 99.67021942138672, - "memoryEfficiency": 0.32978057861328125, - "cpuCount": 12, - "cpuLoad": 0.13688151041666666, - "platform": "darwin", - "uptime": 113417 - }, - { - "timestamp": 1764609101918, - "memoryTotal": 34359738368, - "memoryUsed": 34255093760, - "memoryFree": 104644608, - "memoryUsagePercent": 99.69544410705566, - "memoryEfficiency": 0.30455589294433594, - "cpuCount": 12, - "cpuLoad": 0.134765625, - "platform": "darwin", - "uptime": 113447 - }, - { - "timestamp": 1764609131918, - "memoryTotal": 34359738368, - "memoryUsed": 34268577792, - "memoryFree": 91160576, - "memoryUsagePercent": 99.73468780517578, - "memoryEfficiency": 0.26531219482421875, - "cpuCount": 12, - "cpuLoad": 0.10990397135416667, - "platform": "darwin", - "uptime": 113477 - }, - { - "timestamp": 1764609161920, - "memoryTotal": 34359738368, - "memoryUsed": 34250227712, - "memoryFree": 109510656, - "memoryUsagePercent": 99.68128204345703, - "memoryEfficiency": 0.31871795654296875, - "cpuCount": 12, - "cpuLoad": 0.10880533854166667, - "platform": "darwin", - "uptime": 113507 - }, - { - "timestamp": 1764609191921, - "memoryTotal": 34359738368, - "memoryUsed": 34270527488, - "memoryFree": 89210880, - "memoryUsagePercent": 99.7403621673584, - "memoryEfficiency": 0.25963783264160156, - "cpuCount": 12, - "cpuLoad": 0.0928955078125, - "platform": "darwin", - "uptime": 113537 - }, - { - "timestamp": 1764609221921, - "memoryTotal": 34359738368, - "memoryUsed": 34278440960, - "memoryFree": 81297408, - "memoryUsagePercent": 99.76339340209961, - "memoryEfficiency": 0.23660659790039062, - "cpuCount": 12, - "cpuLoad": 0.079345703125, - "platform": "darwin", - "uptime": 113567 - }, - { - "timestamp": 1764609251923, - "memoryTotal": 34359738368, - "memoryUsed": 34241019904, - "memoryFree": 118718464, - "memoryUsagePercent": 99.65448379516602, - "memoryEfficiency": 0.3455162048339844, - "cpuCount": 12, - "cpuLoad": 0.08707682291666667, - "platform": "darwin", - "uptime": 113597 - }, - { - "timestamp": 1764609281924, - "memoryTotal": 34359738368, - "memoryUsed": 34286190592, - "memoryFree": 73547776, - "memoryUsagePercent": 99.78594779968262, - "memoryEfficiency": 0.2140522003173828, - "cpuCount": 12, - "cpuLoad": 0.10591634114583333, - "platform": "darwin", - "uptime": 113627 - }, - { - "timestamp": 1764609311925, - "memoryTotal": 34359738368, - "memoryUsed": 34193571840, - "memoryFree": 166166528, - "memoryUsagePercent": 99.51639175415039, - "memoryEfficiency": 0.4836082458496094, - "cpuCount": 12, - "cpuLoad": 0.0869140625, - "platform": "darwin", - "uptime": 113657 - }, - { - "timestamp": 1764609341926, - "memoryTotal": 34359738368, - "memoryUsed": 34206318592, - "memoryFree": 153419776, - "memoryUsagePercent": 99.5534896850586, - "memoryEfficiency": 0.44651031494140625, - "cpuCount": 12, - "cpuLoad": 0.09619140625, - "platform": "darwin", - "uptime": 113687 - }, - { - "timestamp": 1764609371926, - "memoryTotal": 34359738368, - "memoryUsed": 34164998144, - "memoryFree": 194740224, - "memoryUsagePercent": 99.43323135375977, - "memoryEfficiency": 0.5667686462402344, - "cpuCount": 12, - "cpuLoad": 0.1181640625, - "platform": "darwin", - "uptime": 113717 - }, - { - "timestamp": 1764609401927, - "memoryTotal": 34359738368, - "memoryUsed": 34175467520, - "memoryFree": 184270848, - "memoryUsagePercent": 99.46370124816895, - "memoryEfficiency": 0.5362987518310547, - "cpuCount": 12, - "cpuLoad": 0.11348470052083333, - "platform": "darwin", - "uptime": 113747 - }, - { - "timestamp": 1764609431928, - "memoryTotal": 34359738368, - "memoryUsed": 34072166400, - "memoryFree": 287571968, - "memoryUsagePercent": 99.16305541992188, - "memoryEfficiency": 0.836944580078125, - "cpuCount": 12, - "cpuLoad": 0.08915201822916667, - "platform": "darwin", - "uptime": 113777 - }, - { - "timestamp": 1764609461929, - "memoryTotal": 34359738368, - "memoryUsed": 34220818432, - "memoryFree": 138919936, - "memoryUsagePercent": 99.59568977355957, - "memoryEfficiency": 0.4043102264404297, - "cpuCount": 12, - "cpuLoad": 0.06351725260416667, - "platform": "darwin", - "uptime": 113807 - }, - { - "timestamp": 1764609491930, - "memoryTotal": 34359738368, - "memoryUsed": 34258747392, - "memoryFree": 100990976, - "memoryUsagePercent": 99.7060775756836, - "memoryEfficiency": 0.29392242431640625, - "cpuCount": 12, - "cpuLoad": 0.09822591145833333, - "platform": "darwin", - "uptime": 113837 - }, - { - "timestamp": 1764609521932, - "memoryTotal": 34359738368, - "memoryUsed": 34227847168, - "memoryFree": 131891200, - "memoryUsagePercent": 99.61614608764648, - "memoryEfficiency": 0.3838539123535156, - "cpuCount": 12, - "cpuLoad": 0.14542643229166666, - "platform": "darwin", - "uptime": 113867 - }, - { - "timestamp": 1764609551934, - "memoryTotal": 34359738368, - "memoryUsed": 34214903808, - "memoryFree": 144834560, - "memoryUsagePercent": 99.57847595214844, - "memoryEfficiency": 0.4215240478515625, - "cpuCount": 12, - "cpuLoad": 0.13614908854166666, - "platform": "darwin", - "uptime": 113897 - }, - { - "timestamp": 1764609581934, - "memoryTotal": 34359738368, - "memoryUsed": 34181742592, - "memoryFree": 177995776, - "memoryUsagePercent": 99.48196411132812, - "memoryEfficiency": 0.518035888671875, - "cpuCount": 12, - "cpuLoad": 0.11604817708333333, - "platform": "darwin", - "uptime": 113927 - }, - { - "timestamp": 1764609611934, - "memoryTotal": 34359738368, - "memoryUsed": 34205040640, - "memoryFree": 154697728, - "memoryUsagePercent": 99.54977035522461, - "memoryEfficiency": 0.4502296447753906, - "cpuCount": 12, - "cpuLoad": 0.17329915364583334, - "platform": "darwin", - "uptime": 113957 - }, - { - "timestamp": 1764609641935, - "memoryTotal": 34359738368, - "memoryUsed": 34196291584, - "memoryFree": 163446784, - "memoryUsagePercent": 99.52430725097656, - "memoryEfficiency": 0.4756927490234375, - "cpuCount": 12, - "cpuLoad": 0.3548583984375, - "platform": "darwin", - "uptime": 113987 - }, - { - "timestamp": 1764609671936, - "memoryTotal": 34359738368, - "memoryUsed": 34133458944, - "memoryFree": 226279424, - "memoryUsagePercent": 99.34144020080566, - "memoryEfficiency": 0.6585597991943359, - "cpuCount": 12, - "cpuLoad": 0.2666829427083333, - "platform": "darwin", - "uptime": 114017 - }, - { - "timestamp": 1764609701936, - "memoryTotal": 34359738368, - "memoryUsed": 34243510272, - "memoryFree": 116228096, - "memoryUsagePercent": 99.6617317199707, - "memoryEfficiency": 0.3382682800292969, - "cpuCount": 12, - "cpuLoad": 0.18379720052083334, - "platform": "darwin", - "uptime": 114047 - }, - { - "timestamp": 1764609731938, - "memoryTotal": 34359738368, - "memoryUsed": 34054881280, - "memoryFree": 304857088, - "memoryUsagePercent": 99.11274909973145, - "memoryEfficiency": 0.8872509002685547, - "cpuCount": 12, - "cpuLoad": 0.16988118489583334, - "platform": "darwin", - "uptime": 114077 - }, - { - "timestamp": 1764609761939, - "memoryTotal": 34359738368, - "memoryUsed": 34252914688, - "memoryFree": 106823680, - "memoryUsagePercent": 99.68910217285156, - "memoryEfficiency": 0.3108978271484375, - "cpuCount": 12, - "cpuLoad": 0.13480631510416666, - "platform": "darwin", - "uptime": 114107 - }, - { - "timestamp": 1764609791941, - "memoryTotal": 34359738368, - "memoryUsed": 34290335744, - "memoryFree": 69402624, - "memoryUsagePercent": 99.79801177978516, - "memoryEfficiency": 0.20198822021484375, - "cpuCount": 12, - "cpuLoad": 0.13492838541666666, - "platform": "darwin", - "uptime": 114137 - }, - { - "timestamp": 1764609821942, - "memoryTotal": 34359738368, - "memoryUsed": 34232942592, - "memoryFree": 126795776, - "memoryUsagePercent": 99.6309757232666, - "memoryEfficiency": 0.36902427673339844, - "cpuCount": 12, - "cpuLoad": 0.149169921875, - "platform": "darwin", - "uptime": 114167 - }, - { - "timestamp": 1764609851944, - "memoryTotal": 34359738368, - "memoryUsed": 34253799424, - "memoryFree": 105938944, - "memoryUsagePercent": 99.69167709350586, - "memoryEfficiency": 0.3083229064941406, - "cpuCount": 12, - "cpuLoad": 0.13993326822916666, - "platform": "darwin", - "uptime": 114197 - }, - { - "timestamp": 1764609881944, - "memoryTotal": 34359738368, - "memoryUsed": 34194636800, - "memoryFree": 165101568, - "memoryUsagePercent": 99.51949119567871, - "memoryEfficiency": 0.48050880432128906, - "cpuCount": 12, - "cpuLoad": 0.11116536458333333, - "platform": "darwin", - "uptime": 114227 - }, - { - "timestamp": 1764609911945, - "memoryTotal": 34359738368, - "memoryUsed": 34248769536, - "memoryFree": 110968832, - "memoryUsagePercent": 99.67703819274902, - "memoryEfficiency": 0.32296180725097656, - "cpuCount": 12, - "cpuLoad": 0.09122721354166667, - "platform": "darwin", - "uptime": 114257 - }, - { - "timestamp": 1764609941946, - "memoryTotal": 34359738368, - "memoryUsed": 34097774592, - "memoryFree": 261963776, - "memoryUsagePercent": 99.23758506774902, - "memoryEfficiency": 0.7624149322509766, - "cpuCount": 12, - "cpuLoad": 0.07181803385416667, - "platform": "darwin", - "uptime": 114287 - }, - { - "timestamp": 1764609971947, - "memoryTotal": 34359738368, - "memoryUsed": 34248933376, - "memoryFree": 110804992, - "memoryUsagePercent": 99.67751502990723, - "memoryEfficiency": 0.32248497009277344, - "cpuCount": 12, - "cpuLoad": 0.084716796875, - "platform": "darwin", - "uptime": 114317 - }, - { - "timestamp": 1764610001949, - "memoryTotal": 34359738368, - "memoryUsed": 34264399872, - "memoryFree": 95338496, - "memoryUsagePercent": 99.7225284576416, - "memoryEfficiency": 0.27747154235839844, - "cpuCount": 12, - "cpuLoad": 0.3263753255208333, - "platform": "darwin", - "uptime": 114347 - }, - { - "timestamp": 1764610031950, - "memoryTotal": 34359738368, - "memoryUsed": 34268168192, - "memoryFree": 91570176, - "memoryUsagePercent": 99.73349571228027, - "memoryEfficiency": 0.26650428771972656, - "cpuCount": 12, - "cpuLoad": 0.2508951822916667, - "platform": "darwin", - "uptime": 114377 - }, - { - "timestamp": 1764610061952, - "memoryTotal": 34359738368, - "memoryUsed": 34270429184, - "memoryFree": 89309184, - "memoryUsagePercent": 99.74007606506348, - "memoryEfficiency": 0.25992393493652344, - "cpuCount": 12, - "cpuLoad": 0.22054036458333334, - "platform": "darwin", - "uptime": 114407 - }, - { - "timestamp": 1764610091953, - "memoryTotal": 34359738368, - "memoryUsed": 34221670400, - "memoryFree": 138067968, - "memoryUsagePercent": 99.59816932678223, - "memoryEfficiency": 0.40183067321777344, - "cpuCount": 12, - "cpuLoad": 0.205078125, - "platform": "darwin", - "uptime": 114437 - }, - { - "timestamp": 1764610121954, - "memoryTotal": 34359738368, - "memoryUsed": 34237644800, - "memoryFree": 122093568, - "memoryUsagePercent": 99.64466094970703, - "memoryEfficiency": 0.35533905029296875, - "cpuCount": 12, - "cpuLoad": 0.2974039713541667, - "platform": "darwin", - "uptime": 114467 - }, - { - "timestamp": 1764610151955, - "memoryTotal": 34359738368, - "memoryUsed": 34227961856, - "memoryFree": 131776512, - "memoryUsagePercent": 99.61647987365723, - "memoryEfficiency": 0.38352012634277344, - "cpuCount": 12, - "cpuLoad": 0.20743815104166666, - "platform": "darwin", - "uptime": 114497 - }, - { - "timestamp": 1764610181955, - "memoryTotal": 34359738368, - "memoryUsed": 34231926784, - "memoryFree": 127811584, - "memoryUsagePercent": 99.62801933288574, - "memoryEfficiency": 0.3719806671142578, - "cpuCount": 12, - "cpuLoad": 0.1700439453125, - "platform": "darwin", - "uptime": 114527 - }, - { - "timestamp": 1764610211957, - "memoryTotal": 34359738368, - "memoryUsed": 34044362752, - "memoryFree": 315375616, - "memoryUsagePercent": 99.0821361541748, - "memoryEfficiency": 0.9178638458251953, - "cpuCount": 12, - "cpuLoad": 0.176513671875, - "platform": "darwin", - "uptime": 114557 - }, - { - "timestamp": 1764610241957, - "memoryTotal": 34359738368, - "memoryUsed": 34225455104, - "memoryFree": 134283264, - "memoryUsagePercent": 99.60918426513672, - "memoryEfficiency": 0.39081573486328125, - "cpuCount": 12, - "cpuLoad": 0.1912841796875, - "platform": "darwin", - "uptime": 114587 - }, - { - "timestamp": 1764610271958, - "memoryTotal": 34359738368, - "memoryUsed": 34200748032, - "memoryFree": 158990336, - "memoryUsagePercent": 99.53727722167969, - "memoryEfficiency": 0.4627227783203125, - "cpuCount": 12, - "cpuLoad": 0.208740234375, - "platform": "darwin", - "uptime": 114617 - }, - { - "timestamp": 1764610301959, - "memoryTotal": 34359738368, - "memoryUsed": 34250620928, - "memoryFree": 109117440, - "memoryUsagePercent": 99.68242645263672, - "memoryEfficiency": 0.31757354736328125, - "cpuCount": 12, - "cpuLoad": 0.2500813802083333, - "platform": "darwin", - "uptime": 114647 - }, - { - "timestamp": 1764610331961, - "memoryTotal": 34359738368, - "memoryUsed": 34277998592, - "memoryFree": 81739776, - "memoryUsagePercent": 99.76210594177246, - "memoryEfficiency": 0.23789405822753906, - "cpuCount": 12, - "cpuLoad": 0.21663411458333334, - "platform": "darwin", - "uptime": 114677 - }, - { - "timestamp": 1764610361961, - "memoryTotal": 34359738368, - "memoryUsed": 34274738176, - "memoryFree": 85000192, - "memoryUsagePercent": 99.75261688232422, - "memoryEfficiency": 0.24738311767578125, - "cpuCount": 12, - "cpuLoad": 0.14921061197916666, - "platform": "darwin", - "uptime": 114707 - }, - { - "timestamp": 1764610391962, - "memoryTotal": 34359738368, - "memoryUsed": 34281226240, - "memoryFree": 78512128, - "memoryUsagePercent": 99.77149963378906, - "memoryEfficiency": 0.2285003662109375, - "cpuCount": 12, - "cpuLoad": 0.10477701822916667, - "platform": "darwin", - "uptime": 114737 - }, - { - "timestamp": 1764610421948, - "memoryTotal": 34359738368, - "memoryUsed": 34270150656, - "memoryFree": 89587712, - "memoryUsagePercent": 99.73926544189453, - "memoryEfficiency": 0.26073455810546875, - "cpuCount": 12, - "cpuLoad": 0.2904052734375, - "platform": "darwin", - "uptime": 114767 - }, - { - "timestamp": 1764610451945, - "memoryTotal": 34359738368, - "memoryUsed": 34268151808, - "memoryFree": 91586560, - "memoryUsagePercent": 99.73344802856445, - "memoryEfficiency": 0.2665519714355469, - "cpuCount": 12, - "cpuLoad": 0.2763671875, - "platform": "darwin", - "uptime": 114797 - }, - { - "timestamp": 1764610481947, - "memoryTotal": 34359738368, - "memoryUsed": 34266480640, - "memoryFree": 93257728, - "memoryUsagePercent": 99.72858428955078, - "memoryEfficiency": 0.27141571044921875, - "cpuCount": 12, - "cpuLoad": 0.20182291666666666, - "platform": "darwin", - "uptime": 114827 - }, - { - "timestamp": 1764610511947, - "memoryTotal": 34359738368, - "memoryUsed": 33359659008, - "memoryFree": 1000079360, - "memoryUsagePercent": 97.08938598632812, - "memoryEfficiency": 2.910614013671875, - "cpuCount": 12, - "cpuLoad": 0.13785807291666666, - "platform": "darwin", - "uptime": 114857 - }, - { - "timestamp": 1764610541948, - "memoryTotal": 34359738368, - "memoryUsed": 33351974912, - "memoryFree": 1007763456, - "memoryUsagePercent": 97.0670223236084, - "memoryEfficiency": 2.9329776763916016, - "cpuCount": 12, - "cpuLoad": 0.2374267578125, - "platform": "darwin", - "uptime": 114887 - }, - { - "timestamp": 1764610571949, - "memoryTotal": 34359738368, - "memoryUsed": 34061729792, - "memoryFree": 298008576, - "memoryUsagePercent": 99.13268089294434, - "memoryEfficiency": 0.8673191070556641, - "cpuCount": 12, - "cpuLoad": 0.2659505208333333, - "platform": "darwin", - "uptime": 114917 - }, - { - "timestamp": 1764610601950, - "memoryTotal": 34359738368, - "memoryUsed": 34294054912, - "memoryFree": 65683456, - "memoryUsagePercent": 99.80883598327637, - "memoryEfficiency": 0.1911640167236328, - "cpuCount": 12, - "cpuLoad": 0.1744384765625, - "platform": "darwin", - "uptime": 114947 + "uptime": 165739 } ] \ No newline at end of file diff --git a/.claude-flow/metrics/task-metrics.json b/.claude-flow/metrics/task-metrics.json index 28a9c4bf4..41f7372d9 100644 --- a/.claude-flow/metrics/task-metrics.json +++ b/.claude-flow/metrics/task-metrics.json @@ -1,10 +1,10 @@ [ { - "id": "cmd-swarm-1764606576686", + "id": "cmd-swarm-1764801237142", "type": "swarm", "success": true, - "duration": 4.44541700000002, - "timestamp": 1764606576691, + "duration": 5.236916000000008, + "timestamp": 1764801237147, "metadata": {} } ] \ No newline at end of file diff --git a/apps-archived/maerchenzauber/apps/web/eslint.config.js b/apps-archived/maerchenzauber/apps/web/eslint.config.js new file mode 100644 index 000000000..f0e51b62e --- /dev/null +++ b/apps-archived/maerchenzauber/apps/web/eslint.config.js @@ -0,0 +1,17 @@ +// @ts-check +import { + baseConfig, + typescriptConfig, + svelteConfig, + prettierConfig, +} from '@manacore/eslint-config'; + +export default [ + { + ignores: ['dist/**', '.svelte-kit/**', 'node_modules/**'], + }, + ...baseConfig, + ...typescriptConfig, + ...svelteConfig, + ...prettierConfig, +]; diff --git a/apps-archived/memoro/apps/web/eslint.config.js b/apps-archived/memoro/apps/web/eslint.config.js new file mode 100644 index 000000000..f0e51b62e --- /dev/null +++ b/apps-archived/memoro/apps/web/eslint.config.js @@ -0,0 +1,17 @@ +// @ts-check +import { + baseConfig, + typescriptConfig, + svelteConfig, + prettierConfig, +} from '@manacore/eslint-config'; + +export default [ + { + ignores: ['dist/**', '.svelte-kit/**', 'node_modules/**'], + }, + ...baseConfig, + ...typescriptConfig, + ...svelteConfig, + ...prettierConfig, +]; diff --git a/apps-archived/news/apps/web/eslint.config.js b/apps-archived/news/apps/web/eslint.config.js new file mode 100644 index 000000000..f0e51b62e --- /dev/null +++ b/apps-archived/news/apps/web/eslint.config.js @@ -0,0 +1,17 @@ +// @ts-check +import { + baseConfig, + typescriptConfig, + svelteConfig, + prettierConfig, +} from '@manacore/eslint-config'; + +export default [ + { + ignores: ['dist/**', '.svelte-kit/**', 'node_modules/**'], + }, + ...baseConfig, + ...typescriptConfig, + ...svelteConfig, + ...prettierConfig, +]; diff --git a/apps-archived/nutriphi/apps/web/eslint.config.js b/apps-archived/nutriphi/apps/web/eslint.config.js new file mode 100644 index 000000000..f0e51b62e --- /dev/null +++ b/apps-archived/nutriphi/apps/web/eslint.config.js @@ -0,0 +1,17 @@ +// @ts-check +import { + baseConfig, + typescriptConfig, + svelteConfig, + prettierConfig, +} from '@manacore/eslint-config'; + +export default [ + { + ignores: ['dist/**', '.svelte-kit/**', 'node_modules/**'], + }, + ...baseConfig, + ...typescriptConfig, + ...svelteConfig, + ...prettierConfig, +]; diff --git a/apps-archived/wisekeep/apps/web/eslint.config.js b/apps-archived/wisekeep/apps/web/eslint.config.js new file mode 100644 index 000000000..f0e51b62e --- /dev/null +++ b/apps-archived/wisekeep/apps/web/eslint.config.js @@ -0,0 +1,17 @@ +// @ts-check +import { + baseConfig, + typescriptConfig, + svelteConfig, + prettierConfig, +} from '@manacore/eslint-config'; + +export default [ + { + ignores: ['dist/**', '.svelte-kit/**', 'node_modules/**'], + }, + ...baseConfig, + ...typescriptConfig, + ...svelteConfig, + ...prettierConfig, +]; diff --git a/apps/bauntown/apps/landing/eslint.config.js b/apps/bauntown/apps/landing/eslint.config.js new file mode 100644 index 000000000..172a11a3f --- /dev/null +++ b/apps/bauntown/apps/landing/eslint.config.js @@ -0,0 +1,11 @@ +// @ts-check +import { baseConfig, typescriptConfig, prettierConfig } from '@manacore/eslint-config'; + +export default [ + { + ignores: ['dist/**', '.astro/**', 'node_modules/**'], + }, + ...baseConfig, + ...typescriptConfig, + ...prettierConfig, +]; diff --git a/apps/calendar/apps/backend/eslint.config.mjs b/apps/calendar/apps/backend/eslint.config.mjs new file mode 100644 index 000000000..41ef245c0 --- /dev/null +++ b/apps/calendar/apps/backend/eslint.config.mjs @@ -0,0 +1,17 @@ +// @ts-check +import { + baseConfig, + typescriptConfig, + nestjsConfig, + prettierConfig, +} from '@manacore/eslint-config'; + +export default [ + { + ignores: ['dist/**', 'node_modules/**'], + }, + ...baseConfig, + ...typescriptConfig, + ...nestjsConfig, + ...prettierConfig, +]; diff --git a/apps/calendar/apps/landing/eslint.config.js b/apps/calendar/apps/landing/eslint.config.js new file mode 100644 index 000000000..172a11a3f --- /dev/null +++ b/apps/calendar/apps/landing/eslint.config.js @@ -0,0 +1,11 @@ +// @ts-check +import { baseConfig, typescriptConfig, prettierConfig } from '@manacore/eslint-config'; + +export default [ + { + ignores: ['dist/**', '.astro/**', 'node_modules/**'], + }, + ...baseConfig, + ...typescriptConfig, + ...prettierConfig, +]; diff --git a/apps/calendar/apps/web/eslint.config.js b/apps/calendar/apps/web/eslint.config.js new file mode 100644 index 000000000..f0e51b62e --- /dev/null +++ b/apps/calendar/apps/web/eslint.config.js @@ -0,0 +1,17 @@ +// @ts-check +import { + baseConfig, + typescriptConfig, + svelteConfig, + prettierConfig, +} from '@manacore/eslint-config'; + +export default [ + { + ignores: ['dist/**', '.svelte-kit/**', 'node_modules/**'], + }, + ...baseConfig, + ...typescriptConfig, + ...svelteConfig, + ...prettierConfig, +]; diff --git a/apps/calendar/package.json b/apps/calendar/package.json index 3133b8029..f80322b09 100644 --- a/apps/calendar/package.json +++ b/apps/calendar/package.json @@ -10,7 +10,6 @@ "dev:landing": "pnpm --filter @calendar/landing dev", "dev:mobile": "pnpm --filter @calendar/mobile dev", "build": "turbo run build", - "lint": "turbo run lint", "clean": "turbo run clean", "db:push": "pnpm --filter @calendar/backend db:push", "db:studio": "pnpm --filter @calendar/backend db:studio", diff --git a/apps/calendar/packages/shared/src/utils/recurrence.ts b/apps/calendar/packages/shared/src/utils/recurrence.ts index 5802478c2..5c5722150 100644 --- a/apps/calendar/packages/shared/src/utils/recurrence.ts +++ b/apps/calendar/packages/shared/src/utils/recurrence.ts @@ -1,5 +1,5 @@ import type { RecurrencePattern, RecurrenceFrequency, Weekday } from '../types/recurrence'; -import { addDays, addWeeks, addMonths, addYears } from './date'; +import { addDays, addMonths, addYears } from './date'; /** * Parse an RFC 5545 RRULE string to a RecurrencePattern object @@ -46,13 +46,14 @@ export function parseRRule(rrule: string): RecurrencePattern | null { pattern.count = parseInt(value, 10); break; - case 'UNTIL': + case 'UNTIL': { // Parse UNTIL date (format: YYYYMMDD or YYYYMMDDTHHMMSSZ) const year = parseInt(value.substring(0, 4), 10); const month = parseInt(value.substring(4, 6), 10) - 1; const day = parseInt(value.substring(6, 8), 10); pattern.until = new Date(year, month, day, 23, 59, 59); break; + } } } @@ -188,7 +189,7 @@ export function generateOccurrences( rangeStart: Date, rangeEnd: Date, exceptions: string[] = [], - maxOccurrences: number = 365 + maxOccurrences = 365 ): Date[] { const occurrences: Date[] = []; const exceptionsSet = new Set(exceptions); diff --git a/apps/chat/apps/backend/eslint.config.mjs b/apps/chat/apps/backend/eslint.config.mjs new file mode 100644 index 000000000..41ef245c0 --- /dev/null +++ b/apps/chat/apps/backend/eslint.config.mjs @@ -0,0 +1,17 @@ +// @ts-check +import { + baseConfig, + typescriptConfig, + nestjsConfig, + prettierConfig, +} from '@manacore/eslint-config'; + +export default [ + { + ignores: ['dist/**', 'node_modules/**'], + }, + ...baseConfig, + ...typescriptConfig, + ...nestjsConfig, + ...prettierConfig, +]; diff --git a/apps/chat/apps/backend/src/chat/chat.controller.ts b/apps/chat/apps/backend/src/chat/chat.controller.ts index 0f5355dc3..db04a070d 100644 --- a/apps/chat/apps/backend/src/chat/chat.controller.ts +++ b/apps/chat/apps/backend/src/chat/chat.controller.ts @@ -1,8 +1,8 @@ import { Body, Controller, Get, Post, UseGuards } from '@nestjs/common'; import { isOk } from '@manacore/shared-errors'; -import { ChatService } from './chat.service'; -import { ChatCompletionDto, ChatCompletionResponseDto } from './dto/chat-completion.dto'; -import { JwtAuthGuard, CurrentUser, CurrentUserData } from '@manacore/shared-nestjs-auth'; +import { type ChatService } from './chat.service'; +import { type ChatCompletionDto, type ChatCompletionResponseDto } from './dto/chat-completion.dto'; +import { JwtAuthGuard, CurrentUser, type CurrentUserData } from '@manacore/shared-nestjs-auth'; @Controller('chat') @UseGuards(JwtAuthGuard) diff --git a/apps/chat/apps/backend/src/chat/chat.service.ts b/apps/chat/apps/backend/src/chat/chat.service.ts index 400bcd85c..f9e298925 100644 --- a/apps/chat/apps/backend/src/chat/chat.service.ts +++ b/apps/chat/apps/backend/src/chat/chat.service.ts @@ -1,12 +1,12 @@ import { Injectable, Inject, Logger } from '@nestjs/common'; -import { ConfigService } from '@nestjs/config'; +import { type ConfigService } from '@nestjs/config'; import { eq } from 'drizzle-orm'; import { type AsyncResult, ok, err, ValidationError, ServiceError } from '@manacore/shared-errors'; import { GoogleGenerativeAI } from '@google/generative-ai'; import { DATABASE_CONNECTION } from '../db/database.module'; import { type Database } from '../db/connection'; import { models, type Model } from '../db/schema/models.schema'; -import { ChatCompletionDto, ChatCompletionResponseDto } from './dto/chat-completion.dto'; +import { type ChatCompletionDto, type ChatCompletionResponseDto } from './dto/chat-completion.dto'; @Injectable() export class ChatService { diff --git a/apps/chat/apps/backend/src/conversation/conversation.controller.ts b/apps/chat/apps/backend/src/conversation/conversation.controller.ts index e225baaf3..2f5052ab0 100644 --- a/apps/chat/apps/backend/src/conversation/conversation.controller.ts +++ b/apps/chat/apps/backend/src/conversation/conversation.controller.ts @@ -10,10 +10,10 @@ import { UseGuards, } from '@nestjs/common'; import { isOk } from '@manacore/shared-errors'; -import { ConversationService } from './conversation.service'; +import { type ConversationService } from './conversation.service'; import { type Conversation } from '../db/schema/conversations.schema'; import { type Message } from '../db/schema/messages.schema'; -import { JwtAuthGuard, CurrentUser, CurrentUserData } from '@manacore/shared-nestjs-auth'; +import { JwtAuthGuard, CurrentUser, type CurrentUserData } from '@manacore/shared-nestjs-auth'; @Controller('conversations') @UseGuards(JwtAuthGuard) diff --git a/apps/chat/apps/backend/src/db/connection.ts b/apps/chat/apps/backend/src/db/connection.ts index fccc63f4a..fcdeb9016 100644 --- a/apps/chat/apps/backend/src/db/connection.ts +++ b/apps/chat/apps/backend/src/db/connection.ts @@ -2,7 +2,7 @@ import { drizzle } from 'drizzle-orm/postgres-js'; import * as schema from './schema'; // Use require for postgres to avoid ESM/CommonJS interop issues -// eslint-disable-next-line @typescript-eslint/no-var-requires + const postgres = require('postgres'); let connection: ReturnType | null = null; diff --git a/apps/chat/apps/backend/src/db/database.module.ts b/apps/chat/apps/backend/src/db/database.module.ts index b4d1f2af6..4cb99eb71 100644 --- a/apps/chat/apps/backend/src/db/database.module.ts +++ b/apps/chat/apps/backend/src/db/database.module.ts @@ -1,4 +1,4 @@ -import { Module, Global, OnModuleDestroy } from '@nestjs/common'; +import { Module, Global, type OnModuleDestroy } from '@nestjs/common'; import { ConfigService } from '@nestjs/config'; import { getDb, closeConnection, type Database } from './connection'; diff --git a/apps/chat/apps/backend/src/document/document.controller.ts b/apps/chat/apps/backend/src/document/document.controller.ts index 498218592..cf12d45bd 100644 --- a/apps/chat/apps/backend/src/document/document.controller.ts +++ b/apps/chat/apps/backend/src/document/document.controller.ts @@ -1,8 +1,8 @@ import { Body, Controller, Delete, Get, Param, Post, UseGuards } from '@nestjs/common'; import { isOk } from '@manacore/shared-errors'; -import { DocumentService } from './document.service'; +import { type DocumentService } from './document.service'; import { type Document } from '../db/schema/documents.schema'; -import { JwtAuthGuard, CurrentUser, CurrentUserData } from '@manacore/shared-nestjs-auth'; +import { JwtAuthGuard, CurrentUser, type CurrentUserData } from '@manacore/shared-nestjs-auth'; @Controller('documents') @UseGuards(JwtAuthGuard) diff --git a/apps/chat/apps/backend/src/model/model.controller.ts b/apps/chat/apps/backend/src/model/model.controller.ts index 88c0274b9..cd827009f 100644 --- a/apps/chat/apps/backend/src/model/model.controller.ts +++ b/apps/chat/apps/backend/src/model/model.controller.ts @@ -1,6 +1,6 @@ import { Controller, Get, Param } from '@nestjs/common'; import { isOk } from '@manacore/shared-errors'; -import { ModelService } from './model.service'; +import { type ModelService } from './model.service'; import { type Model } from '../db/schema/models.schema'; // Models are publicly accessible - no auth required to list available models diff --git a/apps/chat/apps/backend/src/space/space.controller.ts b/apps/chat/apps/backend/src/space/space.controller.ts index dc0299ecc..0c6094ad2 100644 --- a/apps/chat/apps/backend/src/space/space.controller.ts +++ b/apps/chat/apps/backend/src/space/space.controller.ts @@ -1,8 +1,8 @@ import { Body, Controller, Delete, Get, Param, Patch, Post, UseGuards } from '@nestjs/common'; import { isOk } from '@manacore/shared-errors'; -import { SpaceService } from './space.service'; +import { type SpaceService } from './space.service'; import { type Space, type SpaceMember } from '../db/schema/spaces.schema'; -import { JwtAuthGuard, CurrentUser, CurrentUserData } from '@manacore/shared-nestjs-auth'; +import { JwtAuthGuard, CurrentUser, type CurrentUserData } from '@manacore/shared-nestjs-auth'; @Controller('spaces') @UseGuards(JwtAuthGuard) diff --git a/apps/chat/apps/backend/src/template/template.controller.ts b/apps/chat/apps/backend/src/template/template.controller.ts index e34fe5f6a..bbdf1e3fb 100644 --- a/apps/chat/apps/backend/src/template/template.controller.ts +++ b/apps/chat/apps/backend/src/template/template.controller.ts @@ -1,8 +1,8 @@ import { Body, Controller, Delete, Get, Param, Patch, Post, UseGuards } from '@nestjs/common'; import { isOk } from '@manacore/shared-errors'; -import { TemplateService } from './template.service'; +import { type TemplateService } from './template.service'; import { type Template } from '../db/schema/templates.schema'; -import { JwtAuthGuard, CurrentUser, CurrentUserData } from '@manacore/shared-nestjs-auth'; +import { JwtAuthGuard, CurrentUser, type CurrentUserData } from '@manacore/shared-nestjs-auth'; @Controller('templates') @UseGuards(JwtAuthGuard) diff --git a/apps/chat/apps/landing/eslint.config.js b/apps/chat/apps/landing/eslint.config.js new file mode 100644 index 000000000..172a11a3f --- /dev/null +++ b/apps/chat/apps/landing/eslint.config.js @@ -0,0 +1,11 @@ +// @ts-check +import { baseConfig, typescriptConfig, prettierConfig } from '@manacore/eslint-config'; + +export default [ + { + ignores: ['dist/**', '.astro/**', 'node_modules/**'], + }, + ...baseConfig, + ...typescriptConfig, + ...prettierConfig, +]; diff --git a/apps/chat/apps/landing/package.json b/apps/chat/apps/landing/package.json index 09e1c8a29..27fcdcad9 100644 --- a/apps/chat/apps/landing/package.json +++ b/apps/chat/apps/landing/package.json @@ -9,7 +9,8 @@ "build": "astro check && astro build", "preview": "astro preview", "astro": "astro", - "type-check": "astro check" + "type-check": "astro check", + "lint": "eslint ." }, "dependencies": { "@astrojs/check": "^0.9.0", diff --git a/apps/chat/apps/mobile/eslint.config.mjs b/apps/chat/apps/mobile/eslint.config.mjs new file mode 100644 index 000000000..0a8233f8d --- /dev/null +++ b/apps/chat/apps/mobile/eslint.config.mjs @@ -0,0 +1,12 @@ +// @ts-check +import { baseConfig, typescriptConfig, reactConfig, prettierConfig } from '@manacore/eslint-config'; + +export default [ + { + ignores: ['dist/**', '.expo/**', 'node_modules/**', 'android/**', 'ios/**'], + }, + ...baseConfig, + ...typescriptConfig, + ...reactConfig, + ...prettierConfig, +]; diff --git a/apps/chat/apps/mobile/package.json b/apps/chat/apps/mobile/package.json index a4173c4c4..0d2c91a8e 100644 --- a/apps/chat/apps/mobile/package.json +++ b/apps/chat/apps/mobile/package.json @@ -12,8 +12,8 @@ "build:preview": "eas build --profile preview", "build:prod": "eas build --profile production", "prebuild": "expo prebuild", - "lint": "eslint \"**/*.{js,jsx,ts,tsx}\" && prettier -c \"**/*.{js,jsx,ts,tsx,json}\"", - "format": "eslint \"**/*.{js,jsx,ts,tsx}\" --fix && prettier \"**/*.{js,jsx,ts,tsx,json}\" --write", + "lint": "eslint .", + "format": "eslint . --fix", "web": "expo start --web" }, "dependencies": { @@ -49,7 +49,7 @@ "@typescript-eslint/eslint-plugin": "^7.7.0", "@typescript-eslint/parser": "^7.7.0", "dotenv": "^16.4.7", - "eslint": "^8.57.0", + "eslint": "^9.39.1", "eslint-config-universe": "^12.0.1", "prettier": "^3.2.5", "prettier-plugin-tailwindcss": "^0.5.11", diff --git a/apps/chat/apps/web/eslint.config.js b/apps/chat/apps/web/eslint.config.js new file mode 100644 index 000000000..f0e51b62e --- /dev/null +++ b/apps/chat/apps/web/eslint.config.js @@ -0,0 +1,17 @@ +// @ts-check +import { + baseConfig, + typescriptConfig, + svelteConfig, + prettierConfig, +} from '@manacore/eslint-config'; + +export default [ + { + ignores: ['dist/**', '.svelte-kit/**', 'node_modules/**'], + }, + ...baseConfig, + ...typescriptConfig, + ...svelteConfig, + ...prettierConfig, +]; diff --git a/apps/chat/apps/web/package.json b/apps/chat/apps/web/package.json index 45f69cbbf..1ace8143e 100644 --- a/apps/chat/apps/web/package.json +++ b/apps/chat/apps/web/package.json @@ -10,7 +10,8 @@ "prepare": "svelte-kit sync || echo ''", "check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json", "check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch", - "type-check": "echo 'Skipping type-check: @chat/web needs shared-ui component fixes'" + "type-check": "echo 'Skipping type-check: @chat/web needs shared-ui component fixes'", + "lint": "eslint ." }, "devDependencies": { "@sveltejs/adapter-auto": "^6.0.0", diff --git a/apps/chat/package.json b/apps/chat/package.json index bcaba90a3..84b834b55 100644 --- a/apps/chat/package.json +++ b/apps/chat/package.json @@ -4,7 +4,6 @@ "private": true, "description": "Chat project - AI chat application with mobile, web and landing", "scripts": { - "dev": "turbo run dev", - "lint": "turbo run lint" + "dev": "turbo run dev" } } diff --git a/apps/chat/packages/chat-types/package.json b/apps/chat/packages/chat-types/package.json index 803dbe16f..bf9e38d10 100644 --- a/apps/chat/packages/chat-types/package.json +++ b/apps/chat/packages/chat-types/package.json @@ -7,5 +7,8 @@ "types": "./src/index.ts", "exports": { ".": "./src/index.ts" + }, + "scripts": { + "lint": "eslint ." } } diff --git a/apps/contacts/apps/backend/eslint.config.mjs b/apps/contacts/apps/backend/eslint.config.mjs new file mode 100644 index 000000000..41ef245c0 --- /dev/null +++ b/apps/contacts/apps/backend/eslint.config.mjs @@ -0,0 +1,17 @@ +// @ts-check +import { + baseConfig, + typescriptConfig, + nestjsConfig, + prettierConfig, +} from '@manacore/eslint-config'; + +export default [ + { + ignores: ['dist/**', 'node_modules/**'], + }, + ...baseConfig, + ...typescriptConfig, + ...nestjsConfig, + ...prettierConfig, +]; diff --git a/apps/contacts/apps/web/eslint.config.js b/apps/contacts/apps/web/eslint.config.js new file mode 100644 index 000000000..f0e51b62e --- /dev/null +++ b/apps/contacts/apps/web/eslint.config.js @@ -0,0 +1,17 @@ +// @ts-check +import { + baseConfig, + typescriptConfig, + svelteConfig, + prettierConfig, +} from '@manacore/eslint-config'; + +export default [ + { + ignores: ['dist/**', '.svelte-kit/**', 'node_modules/**'], + }, + ...baseConfig, + ...typescriptConfig, + ...svelteConfig, + ...prettierConfig, +]; diff --git a/apps/contacts/package.json b/apps/contacts/package.json index 84650e486..c39c749ef 100644 --- a/apps/contacts/package.json +++ b/apps/contacts/package.json @@ -10,7 +10,6 @@ "dev:landing": "pnpm --filter @contacts/landing dev", "dev:mobile": "pnpm --filter @contacts/mobile dev", "build": "turbo run build", - "lint": "turbo run lint", "clean": "turbo run clean", "db:push": "pnpm --filter @contacts/backend db:push", "db:studio": "pnpm --filter @contacts/backend db:studio", diff --git a/apps/maerchenzauber/apps/backend/eslint.config.mjs b/apps/maerchenzauber/apps/backend/eslint.config.mjs new file mode 100644 index 000000000..41ef245c0 --- /dev/null +++ b/apps/maerchenzauber/apps/backend/eslint.config.mjs @@ -0,0 +1,17 @@ +// @ts-check +import { + baseConfig, + typescriptConfig, + nestjsConfig, + prettierConfig, +} from '@manacore/eslint-config'; + +export default [ + { + ignores: ['dist/**', 'node_modules/**'], + }, + ...baseConfig, + ...typescriptConfig, + ...nestjsConfig, + ...prettierConfig, +]; diff --git a/apps/maerchenzauber/apps/landing/eslint.config.js b/apps/maerchenzauber/apps/landing/eslint.config.js new file mode 100644 index 000000000..172a11a3f --- /dev/null +++ b/apps/maerchenzauber/apps/landing/eslint.config.js @@ -0,0 +1,11 @@ +// @ts-check +import { baseConfig, typescriptConfig, prettierConfig } from '@manacore/eslint-config'; + +export default [ + { + ignores: ['dist/**', '.astro/**', 'node_modules/**'], + }, + ...baseConfig, + ...typescriptConfig, + ...prettierConfig, +]; diff --git a/apps/maerchenzauber/apps/mobile/eslint.config.mjs b/apps/maerchenzauber/apps/mobile/eslint.config.mjs new file mode 100644 index 000000000..0a8233f8d --- /dev/null +++ b/apps/maerchenzauber/apps/mobile/eslint.config.mjs @@ -0,0 +1,12 @@ +// @ts-check +import { baseConfig, typescriptConfig, reactConfig, prettierConfig } from '@manacore/eslint-config'; + +export default [ + { + ignores: ['dist/**', '.expo/**', 'node_modules/**', 'android/**', 'ios/**'], + }, + ...baseConfig, + ...typescriptConfig, + ...reactConfig, + ...prettierConfig, +]; diff --git a/apps/manacore/apps/landing/eslint.config.js b/apps/manacore/apps/landing/eslint.config.js new file mode 100644 index 000000000..172a11a3f --- /dev/null +++ b/apps/manacore/apps/landing/eslint.config.js @@ -0,0 +1,11 @@ +// @ts-check +import { baseConfig, typescriptConfig, prettierConfig } from '@manacore/eslint-config'; + +export default [ + { + ignores: ['dist/**', '.astro/**', 'node_modules/**'], + }, + ...baseConfig, + ...typescriptConfig, + ...prettierConfig, +]; diff --git a/apps/manacore/apps/landing/package.json b/apps/manacore/apps/landing/package.json index 32209e345..3fdb2a198 100644 --- a/apps/manacore/apps/landing/package.json +++ b/apps/manacore/apps/landing/package.json @@ -5,7 +5,8 @@ "scripts": { "dev": "astro dev", "build": "astro build", - "preview": "astro preview" + "preview": "astro preview", + "lint": "eslint ." }, "dependencies": { "@astrojs/react": "^3.6.0", diff --git a/apps/manacore/apps/mobile/app-env.d.ts b/apps/manacore/apps/mobile/app-env.d.ts index 88dc403ea..0d1036dec 100644 --- a/apps/manacore/apps/mobile/app-env.d.ts +++ b/apps/manacore/apps/mobile/app-env.d.ts @@ -1,2 +1,2 @@ -// @ts-ignore +// @ts-expect-error nativewind types /// diff --git a/apps/manacore/apps/mobile/app/(drawer)/get-mana.tsx b/apps/manacore/apps/mobile/app/(drawer)/get-mana.tsx index 14b24fff4..eff6417d8 100644 --- a/apps/manacore/apps/mobile/app/(drawer)/get-mana.tsx +++ b/apps/manacore/apps/mobile/app/(drawer)/get-mana.tsx @@ -1,11 +1,10 @@ import React, { useState } from 'react'; import { Stack } from 'expo-router'; -import { ScrollView, Text, View, TouchableOpacity, Image, Alert } from 'react-native'; +import { ScrollView, Text, View, TouchableOpacity, Alert } from 'react-native'; import { FontAwesome5 } from '@expo/vector-icons'; import { Container } from '~/components/Container'; import { useTheme } from '../../utils/themeContext'; -import { supabase } from '../../utils/supabase'; // Definiere die Mana-Pakete const manaPacks = [ diff --git a/apps/manacore/apps/mobile/app/(drawer)/index.tsx b/apps/manacore/apps/mobile/app/(drawer)/index.tsx index 203892b0c..8fa810171 100644 --- a/apps/manacore/apps/mobile/app/(drawer)/index.tsx +++ b/apps/manacore/apps/mobile/app/(drawer)/index.tsx @@ -1,8 +1,7 @@ import { Stack, useRouter } from 'expo-router'; -import { ScrollView, Text, View, TouchableOpacity, Pressable } from 'react-native'; +import { ScrollView, Text, View, TouchableOpacity } from 'react-native'; import { FontAwesome5 } from '@expo/vector-icons'; -import { Container } from '~/components/Container'; import DashboardStats from '../../components/DashboardStats'; import { useTheme } from '../../utils/themeContext'; diff --git a/apps/manacore/apps/mobile/app/(drawer)/organizations/[id].tsx b/apps/manacore/apps/mobile/app/(drawer)/organizations/[id].tsx index 5d5109390..0fea23920 100644 --- a/apps/manacore/apps/mobile/app/(drawer)/organizations/[id].tsx +++ b/apps/manacore/apps/mobile/app/(drawer)/organizations/[id].tsx @@ -47,6 +47,7 @@ export default function OrganizationDetails() { } fetchOrganizationDetails(); + // eslint-disable-next-line react-hooks/exhaustive-deps }, [initialOrgName, orgId]); const fetchOrganizationDetails = async () => { @@ -94,14 +95,6 @@ export default function OrganizationDetails() { .eq('user_id', session.user.id) .eq('organization_id', orgId); - // Supabase gibt die Daten in einem anderen Format zurück als erwartet - // Definiere den korrekten Typ für die Benutzerrolle - interface UserRoleWithRoles { - roles: { - name: string; - }; - } - if (currentUserRolesError) throw currentUserRolesError; // Finde die höchste Rolle @@ -314,7 +307,7 @@ export default function OrganizationDetails() { {/* Lösch-Bestätigungsmodal */} @@ -339,8 +332,7 @@ export default function OrganizationDetails() { - Möchtest du die Organisation "{orgName}" wirklich löschen? Diese Aktion kann nicht - rückgängig gemacht werden. + {`Möchtest du die Organisation "${orgName}" wirklich löschen? Diese Aktion kann nicht rückgängig gemacht werden.`} diff --git a/apps/manacore/apps/mobile/app/(drawer)/organizations/index.tsx b/apps/manacore/apps/mobile/app/(drawer)/organizations/index.tsx index e7d43e356..ab94b7477 100644 --- a/apps/manacore/apps/mobile/app/(drawer)/organizations/index.tsx +++ b/apps/manacore/apps/mobile/app/(drawer)/organizations/index.tsx @@ -68,7 +68,7 @@ export default function Organizations() { Neue Organisation - + ) : ( <> diff --git a/apps/manacore/apps/mobile/app/(drawer)/settings.tsx b/apps/manacore/apps/mobile/app/(drawer)/settings.tsx index 17479b0a9..ba8ce9708 100644 --- a/apps/manacore/apps/mobile/app/(drawer)/settings.tsx +++ b/apps/manacore/apps/mobile/app/(drawer)/settings.tsx @@ -7,14 +7,13 @@ import { ScrollView, TextInput, Alert, - ActivityIndicator, } from 'react-native'; import { Stack } from 'expo-router'; import { FontAwesome5 } from '@expo/vector-icons'; import { Container } from '~/components/Container'; -import { useTheme, ThemeMode } from '~/utils/themeContext'; +import { useTheme, type ThemeMode } from '~/utils/themeContext'; import { supabase } from '../../utils/supabase'; -import { Session } from '@supabase/supabase-js'; +import { type Session } from '@supabase/supabase-js'; interface Profile { id: string; diff --git a/apps/manacore/apps/mobile/app/(drawer)/teams/[id].tsx b/apps/manacore/apps/mobile/app/(drawer)/teams/[id].tsx index e6bd0f7b4..a17073746 100644 --- a/apps/manacore/apps/mobile/app/(drawer)/teams/[id].tsx +++ b/apps/manacore/apps/mobile/app/(drawer)/teams/[id].tsx @@ -5,11 +5,9 @@ import { Text, View, TouchableOpacity, - TextInput, Alert, ActivityIndicator, Modal, - Pressable, } from 'react-native'; import { FontAwesome5 } from '@expo/vector-icons'; @@ -27,16 +25,12 @@ export default function TeamDetails() { }>(); const { isDarkMode } = useTheme(); const [teamName, setTeamName] = useState(initialTeamName || ''); - const [isEditing, setIsEditing] = useState(false); - const [newTeamName, setNewTeamName] = useState(''); - const [loading, setLoading] = useState(false); const [deletingTeam, setDeletingTeam] = useState(false); const [showDeleteModal, setShowDeleteModal] = useState(false); useEffect(() => { if (initialTeamName) { setTeamName(initialTeamName); - setNewTeamName(initialTeamName); } }, [initialTeamName]); @@ -44,47 +38,6 @@ export default function TeamDetails() { router.push('/teams'); }; - const startEditing = () => { - setIsEditing(true); - setNewTeamName(teamName); - }; - - const cancelEditing = () => { - setIsEditing(false); - }; - - const updateTeamName = async () => { - if (!newTeamName.trim()) { - Alert.alert('Fehler', 'Der Teamname darf nicht leer sein.'); - return; - } - - if (newTeamName.trim() === teamName) { - setIsEditing(false); - return; - } - - setLoading(true); - - try { - const { error } = await supabase - .from('teams') - .update({ name: newTeamName.trim() }) - .eq('id', teamId); - - if (error) throw error; - - setTeamName(newTeamName.trim()); - setIsEditing(false); - Alert.alert('Erfolg', 'Der Teamname wurde erfolgreich aktualisiert.'); - } catch (error) { - console.error('Fehler beim Aktualisieren des Teamnamens:', error); - Alert.alert('Fehler', 'Es ist ein Fehler beim Aktualisieren des Teamnamens aufgetreten.'); - } finally { - setLoading(false); - } - }; - const deleteTeam = () => { console.log('Delete team button clicked, teamId:', teamId); // Modal öffnen statt Alert anzeigen @@ -111,7 +64,7 @@ export default function TeamDetails() { console.log('Checking for dependencies...'); // 1. Prüfe auf credit_transactions - const { data: txData, error: txCheckError } = await supabase + const { data: txData } = await supabase .from('credit_transactions') .select('id') .eq('team_id', teamId); @@ -119,7 +72,7 @@ export default function TeamDetails() { console.log('Credit transactions:', txData); // 2. Prüfe auf team_members - const { data: memberData, error: memberCheckError } = await supabase + const { data: memberData } = await supabase .from('team_members') .select('user_id') .eq('team_id', teamId); @@ -127,7 +80,7 @@ export default function TeamDetails() { console.log('Team members:', memberData); // 3. Prüfe auf user_roles - const { data: roleData, error: roleCheckError } = await supabase + const { data: roleData } = await supabase .from('user_roles') .select('id') .eq('team_id', teamId); @@ -240,7 +193,7 @@ export default function TeamDetails() { {/* Lösch-Bestätigungsmodal */} @@ -265,8 +218,7 @@ export default function TeamDetails() { - Möchtest du das Team "{teamName}" wirklich löschen? Diese Aktion kann nicht rückgängig - gemacht werden. + {`Möchtest du das Team "${teamName}" wirklich löschen? Diese Aktion kann nicht rückgängig gemacht werden.`} diff --git a/apps/manacore/apps/mobile/app/(drawer)/teams/index.tsx b/apps/manacore/apps/mobile/app/(drawer)/teams/index.tsx index 912be8991..76e04aac2 100644 --- a/apps/manacore/apps/mobile/app/(drawer)/teams/index.tsx +++ b/apps/manacore/apps/mobile/app/(drawer)/teams/index.tsx @@ -55,7 +55,7 @@ export default function Teams() { Neues Team - + ) : ( <> diff --git a/apps/manacore/apps/mobile/app/+not-found.tsx b/apps/manacore/apps/mobile/app/+not-found.tsx index a05c422ff..40596703b 100644 --- a/apps/manacore/apps/mobile/app/+not-found.tsx +++ b/apps/manacore/apps/mobile/app/+not-found.tsx @@ -8,7 +8,7 @@ export default function NotFoundScreen() { <> - This screen doesn't exist. + This screen does not exist. Go to home screen! diff --git a/apps/manacore/apps/mobile/app/_layout.tsx b/apps/manacore/apps/mobile/app/_layout.tsx index 2d36b0e4d..f2c9def7a 100644 --- a/apps/manacore/apps/mobile/app/_layout.tsx +++ b/apps/manacore/apps/mobile/app/_layout.tsx @@ -5,7 +5,7 @@ import { Stack, useRouter, useSegments } from 'expo-router'; import { GestureHandlerRootView } from 'react-native-gesture-handler'; import { ThemeProvider } from '~/utils/themeContext'; import { supabase } from '../utils/supabase'; -import { Session } from '@supabase/supabase-js'; +import { type Session } from '@supabase/supabase-js'; export const unstable_settings = { // Ensure that reloading on `/modal` keeps a back button present. @@ -54,6 +54,7 @@ function AuthProvider({ children }: { children: React.ReactNode }) { // leite ihn zur Hauptseite um router.replace('/'); } + // eslint-disable-next-line react-hooks/exhaustive-deps }, [session, segments, isLoading]); // Zeige nichts während des Ladens diff --git a/apps/manacore/apps/mobile/app/auth/reset-password.tsx b/apps/manacore/apps/mobile/app/auth/reset-password.tsx index 79a2f67cf..a334b73de 100644 --- a/apps/manacore/apps/mobile/app/auth/reset-password.tsx +++ b/apps/manacore/apps/mobile/app/auth/reset-password.tsx @@ -10,7 +10,6 @@ import { Platform, } from 'react-native'; import { Stack, useRouter, useLocalSearchParams } from 'expo-router'; -import { supabase } from '../../utils/supabase'; import { useTheme } from '../../utils/themeContext'; export default function ResetPasswordScreen() { @@ -32,6 +31,7 @@ export default function ResetPasswordScreen() { return; } verifyToken(); + // eslint-disable-next-line react-hooks/exhaustive-deps }, []); const verifyToken = async () => { diff --git a/apps/manacore/apps/mobile/components/Account.tsx b/apps/manacore/apps/mobile/components/Account.tsx index 633a2e498..f3a2349b1 100644 --- a/apps/manacore/apps/mobile/components/Account.tsx +++ b/apps/manacore/apps/mobile/components/Account.tsx @@ -1,7 +1,7 @@ import React, { useState, useEffect } from 'react'; import { View, Text, TextInput, TouchableOpacity, StyleSheet, Alert } from 'react-native'; import { supabase } from '../utils/supabase'; -import { Session } from '@supabase/supabase-js'; +import { type Session } from '@supabase/supabase-js'; interface Profile { id: string; @@ -21,6 +21,7 @@ export default function Account({ session }: { session: Session }) { useEffect(() => { if (session) getProfile(); + // eslint-disable-next-line react-hooks/exhaustive-deps }, [session]); async function getProfile() { diff --git a/apps/manacore/apps/mobile/components/Auth.tsx b/apps/manacore/apps/mobile/components/Auth.tsx index 5caf6a6c9..e56954969 100644 --- a/apps/manacore/apps/mobile/components/Auth.tsx +++ b/apps/manacore/apps/mobile/components/Auth.tsx @@ -1,17 +1,8 @@ import React, { useState } from 'react'; -import { - Alert, - StyleSheet, - View, - TextInput, - TouchableOpacity, - Text, - Image, - Platform, -} from 'react-native'; +import { Alert, StyleSheet, View, TextInput, TouchableOpacity, Text, Platform } from 'react-native'; import { FontAwesome5 } from '@expo/vector-icons'; import { supabase } from '../utils/supabase'; -import { useTheme, useThemeColors, lightColors, darkColors } from '../utils/themeContext'; +import { useTheme, useThemeColors } from '../utils/themeContext'; export default function Auth() { const { isDarkMode } = useTheme(); diff --git a/apps/manacore/apps/mobile/components/Button.tsx b/apps/manacore/apps/mobile/components/Button.tsx index 03934bd9f..a14a5f7cb 100644 --- a/apps/manacore/apps/mobile/components/Button.tsx +++ b/apps/manacore/apps/mobile/components/Button.tsx @@ -1,5 +1,5 @@ import { forwardRef } from 'react'; -import { Text, TouchableOpacity, TouchableOpacityProps, View } from 'react-native'; +import { Text, TouchableOpacity, type TouchableOpacityProps, type View } from 'react-native'; type ButtonProps = { title: string; diff --git a/apps/manacore/apps/mobile/components/CreateOrganization.tsx b/apps/manacore/apps/mobile/components/CreateOrganization.tsx index 62653ef16..57480ca72 100644 --- a/apps/manacore/apps/mobile/components/CreateOrganization.tsx +++ b/apps/manacore/apps/mobile/components/CreateOrganization.tsx @@ -9,7 +9,7 @@ import { ScrollView, } from 'react-native'; import { supabase } from '../utils/supabase'; -import { Session } from '@supabase/supabase-js'; +import { type Session } from '@supabase/supabase-js'; import { useTheme } from '../utils/themeContext'; interface UserRole { diff --git a/apps/manacore/apps/mobile/components/CreateTeam.tsx b/apps/manacore/apps/mobile/components/CreateTeam.tsx index e12200de1..f7835bf41 100644 --- a/apps/manacore/apps/mobile/components/CreateTeam.tsx +++ b/apps/manacore/apps/mobile/components/CreateTeam.tsx @@ -9,7 +9,7 @@ import { ScrollView, } from 'react-native'; import { supabase } from '../utils/supabase'; -import { Session } from '@supabase/supabase-js'; +import { type Session } from '@supabase/supabase-js'; import { useTheme } from '../utils/themeContext'; import { useRouter } from 'expo-router'; @@ -30,7 +30,7 @@ interface CreateTeamProps { } export default function CreateTeam({ onTeamCreated }: CreateTeamProps) { - const router = useRouter(); + const _router = useRouter(); const [session, setSession] = useState(null); const [loading, setLoading] = useState(false); const [organizations, setOrganizations] = useState([]); diff --git a/apps/manacore/apps/mobile/components/DashboardStats.tsx b/apps/manacore/apps/mobile/components/DashboardStats.tsx index 892ed8f22..a6ec5ed43 100644 --- a/apps/manacore/apps/mobile/components/DashboardStats.tsx +++ b/apps/manacore/apps/mobile/components/DashboardStats.tsx @@ -3,7 +3,7 @@ import { View, Text, TouchableOpacity, ActivityIndicator } from 'react-native'; import { FontAwesome5 } from '@expo/vector-icons'; import { useRouter } from 'expo-router'; import { supabase } from '../utils/supabase'; -import { Session } from '@supabase/supabase-js'; +import { type Session } from '@supabase/supabase-js'; import { useTheme, lightColors, darkColors } from '../utils/themeContext'; export default function DashboardStats() { diff --git a/apps/manacore/apps/mobile/components/HeaderButton.tsx b/apps/manacore/apps/mobile/components/HeaderButton.tsx index 57122b853..18ef2b67b 100644 --- a/apps/manacore/apps/mobile/components/HeaderButton.tsx +++ b/apps/manacore/apps/mobile/components/HeaderButton.tsx @@ -3,7 +3,7 @@ import { forwardRef } from 'react'; import { Pressable, StyleSheet } from 'react-native'; export const HeaderButton = forwardRef void }>( - ({ onPress }, ref) => { + ({ onPress }, _ref) => { return ( {({ pressed }) => ( diff --git a/apps/manacore/apps/mobile/components/OrganizationList.tsx b/apps/manacore/apps/mobile/components/OrganizationList.tsx index aaf60f442..326546a2a 100644 --- a/apps/manacore/apps/mobile/components/OrganizationList.tsx +++ b/apps/manacore/apps/mobile/components/OrganizationList.tsx @@ -2,7 +2,7 @@ import React, { useState, useEffect, forwardRef, useImperativeHandle } from 'rea import { View, Text, FlatList, TouchableOpacity, ActivityIndicator, Alert } from 'react-native'; import { FontAwesome5 } from '@expo/vector-icons'; import { supabase } from '../utils/supabase'; -import { Session } from '@supabase/supabase-js'; +import { type Session } from '@supabase/supabase-js'; import { useTheme } from '../utils/themeContext'; import { useRouter } from 'expo-router'; @@ -67,6 +67,7 @@ const OrganizationList = forwardRef( }); return () => subscription.unsubscribe(); + // eslint-disable-next-line react-hooks/exhaustive-deps }, []); async function fetchUserOrganizations(userId: string) { diff --git a/apps/manacore/apps/mobile/components/SendMana.tsx b/apps/manacore/apps/mobile/components/SendMana.tsx index c4f0e5986..a2387b9aa 100644 --- a/apps/manacore/apps/mobile/components/SendMana.tsx +++ b/apps/manacore/apps/mobile/components/SendMana.tsx @@ -9,7 +9,7 @@ import { ActivityIndicator, } from 'react-native'; import { supabase } from '../utils/supabase'; -import { Session } from '@supabase/supabase-js'; +import { type Session } from '@supabase/supabase-js'; import { useTheme } from '../utils/themeContext'; interface User { @@ -464,133 +464,3 @@ export default function SendMana() { ); } - -const styles = StyleSheet.create({ - container: { - backgroundColor: 'white', - borderRadius: 10, - padding: 20, - marginBottom: 20, - shadowColor: '#000', - shadowOffset: { width: 0, height: 2 }, - shadowOpacity: 0.1, - shadowRadius: 4, - elevation: 3, - }, - header: { - fontSize: 22, - fontWeight: 'bold', - marginBottom: 20, - color: '#333', - }, - creditInfo: { - flexDirection: 'row', - alignItems: 'center', - backgroundColor: '#f0f8ff', - padding: 15, - borderRadius: 8, - marginBottom: 20, - }, - creditLabel: { - fontSize: 16, - fontWeight: '500', - color: '#333', - }, - creditAmount: { - fontSize: 18, - fontWeight: 'bold', - color: '#0055FF', - marginLeft: 10, - }, - formGroup: { - marginBottom: 15, - }, - label: { - fontSize: 16, - marginBottom: 8, - fontWeight: '500', - color: '#333', - }, - input: { - height: 50, - borderWidth: 1, - borderColor: '#ddd', - borderRadius: 8, - paddingHorizontal: 15, - backgroundColor: '#f9f9f9', - fontSize: 16, - }, - searchContainer: { - flexDirection: 'row', - alignItems: 'center', - }, - searchInput: { - flex: 1, - height: 50, - borderWidth: 1, - borderColor: '#ddd', - borderRadius: 8, - paddingHorizontal: 15, - backgroundColor: '#f9f9f9', - fontSize: 16, - }, - searchButton: { - backgroundColor: '#0055FF', - height: 50, - paddingHorizontal: 15, - borderRadius: 8, - justifyContent: 'center', - alignItems: 'center', - marginLeft: 10, - }, - searchButtonText: { - color: 'white', - fontSize: 14, - fontWeight: 'bold', - }, - userCard: { - backgroundColor: '#f0f8ff', - padding: 15, - borderRadius: 8, - marginBottom: 20, - borderLeftWidth: 4, - borderLeftColor: '#0055FF', - }, - userCardTitle: { - fontSize: 14, - color: '#666', - marginBottom: 5, - }, - userCardEmail: { - fontSize: 16, - fontWeight: 'bold', - color: '#333', - }, - userCardName: { - fontSize: 14, - color: '#666', - marginTop: 5, - }, - sendButton: { - backgroundColor: '#0055FF', - height: 50, - borderRadius: 8, - justifyContent: 'center', - alignItems: 'center', - marginTop: 10, - }, - sendButtonText: { - color: 'white', - fontSize: 16, - fontWeight: 'bold', - }, - disabledButton: { - backgroundColor: '#ccc', - }, - notLoggedIn: { - fontSize: 16, - color: '#666', - textAlign: 'center', - padding: 20, - }, -}); diff --git a/apps/manacore/apps/mobile/components/TeamList.tsx b/apps/manacore/apps/mobile/components/TeamList.tsx index 8cb04e4a2..3ebcc86e6 100644 --- a/apps/manacore/apps/mobile/components/TeamList.tsx +++ b/apps/manacore/apps/mobile/components/TeamList.tsx @@ -10,7 +10,7 @@ import { } from 'react-native'; import { FontAwesome5 } from '@expo/vector-icons'; import { supabase } from '../utils/supabase'; -import { Session } from '@supabase/supabase-js'; +import { type Session } from '@supabase/supabase-js'; import { useRouter } from 'expo-router'; import { useTheme } from '../utils/themeContext'; diff --git a/apps/manacore/apps/mobile/components/TeamMembers.tsx b/apps/manacore/apps/mobile/components/TeamMembers.tsx index 9500ddeaf..9d0fb4740 100644 --- a/apps/manacore/apps/mobile/components/TeamMembers.tsx +++ b/apps/manacore/apps/mobile/components/TeamMembers.tsx @@ -10,8 +10,7 @@ import { } from 'react-native'; import { FontAwesome5 } from '@expo/vector-icons'; import { supabase } from '../utils/supabase'; -import { Session } from '@supabase/supabase-js'; -import { useLocalSearchParams } from 'expo-router'; +import { type Session } from '@supabase/supabase-js'; import { useTheme } from '../utils/themeContext'; interface TeamMember { @@ -45,7 +44,7 @@ export default function TeamMembers({ teamId }: TeamMembersProps) { const [members, setMembers] = useState([]); const [newMemberEmail, setNewMemberEmail] = useState(''); const [inviting, setInviting] = useState(false); - const [userRole, setUserRole] = useState(null); + const [_userRole, setUserRole] = useState(null); const [isAdmin, setIsAdmin] = useState(false); const { isDarkMode } = useTheme(); const [isEditing, setIsEditing] = useState(false); @@ -95,6 +94,7 @@ export default function TeamMembers({ teamId }: TeamMembersProps) { }); return () => subscription.unsubscribe(); + // eslint-disable-next-line react-hooks/exhaustive-deps }, [teamId]); async function checkUserRole(userId: string, teamId: string) { diff --git a/apps/manacore/apps/mobile/eslint.config.mjs b/apps/manacore/apps/mobile/eslint.config.mjs new file mode 100644 index 000000000..791c25c12 --- /dev/null +++ b/apps/manacore/apps/mobile/eslint.config.mjs @@ -0,0 +1,20 @@ +// @ts-check +import { baseConfig, typescriptConfig, reactConfig, prettierConfig } from '@manacore/eslint-config'; + +export default [ + { + ignores: [ + 'dist/**', + '.expo/**', + 'node_modules/**', + 'android/**', + 'ios/**', + 'metro.config.js', + 'tailwind.config.js', + ], + }, + ...baseConfig, + ...typescriptConfig, + ...reactConfig, + ...prettierConfig, +]; diff --git a/apps/manacore/apps/mobile/package.json b/apps/manacore/apps/mobile/package.json index 4bd8c7fa7..0e5206ea4 100644 --- a/apps/manacore/apps/mobile/package.json +++ b/apps/manacore/apps/mobile/package.json @@ -10,8 +10,8 @@ "build:preview": "eas build --profile preview", "build:prod": "eas build --profile production", "prebuild": "expo prebuild", - "lint": "eslint \"**/*.{js,jsx,ts,tsx}\" && prettier -c \"**/*.{js,jsx,ts,tsx,json}\"", - "format": "eslint \"**/*.{js,jsx,ts,tsx}\" --fix && prettier \"**/*.{js,jsx,ts,tsx,json}\" --write", + "lint": "eslint .", + "format": "eslint . --fix", "web": "expo start --web --port 19006", "web:dev": "expo start --web --port 19006" }, @@ -47,7 +47,7 @@ "@types/react-dom": "^19.2.3", "@typescript-eslint/eslint-plugin": "^7.7.0", "@typescript-eslint/parser": "^7.7.0", - "eslint": "^8.57.0", + "eslint": "^9.39.1", "eslint-config-universe": "^12.0.1", "prettier": "^3.2.5", "prettier-plugin-tailwindcss": "^0.5.11", diff --git a/apps/manacore/apps/mobile/utils/memoryStorage.ts b/apps/manacore/apps/mobile/utils/memoryStorage.ts index cba8026bd..6a3cbd00f 100644 --- a/apps/manacore/apps/mobile/utils/memoryStorage.ts +++ b/apps/manacore/apps/mobile/utils/memoryStorage.ts @@ -12,7 +12,7 @@ interface StorageData { class HybridStorageService { private memoryStorage: StorageData = {}; - private isAsyncStorageAvailable: boolean = false; + private isAsyncStorageAvailable = false; constructor() { // Check if we're in an environment where AsyncStorage is available @@ -34,7 +34,7 @@ class HybridStorageService { if (this.isAsyncStorageAvailable) { await this.syncFromAsyncStorage(); } - } catch (error) { + } catch (_error) { console.warn('AsyncStorage not available, falling back to memory storage'); this.isAsyncStorageAvailable = false; } diff --git a/apps/manacore/apps/web/eslint.config.js b/apps/manacore/apps/web/eslint.config.js new file mode 100644 index 000000000..f0e51b62e --- /dev/null +++ b/apps/manacore/apps/web/eslint.config.js @@ -0,0 +1,17 @@ +// @ts-check +import { + baseConfig, + typescriptConfig, + svelteConfig, + prettierConfig, +} from '@manacore/eslint-config'; + +export default [ + { + ignores: ['dist/**', '.svelte-kit/**', 'node_modules/**'], + }, + ...baseConfig, + ...typescriptConfig, + ...svelteConfig, + ...prettierConfig, +]; diff --git a/apps/manadeck/apps/backend/eslint.config.mjs b/apps/manadeck/apps/backend/eslint.config.mjs index caebf6e70..41ef245c0 100644 --- a/apps/manadeck/apps/backend/eslint.config.mjs +++ b/apps/manadeck/apps/backend/eslint.config.mjs @@ -1,34 +1,17 @@ // @ts-check -import eslint from '@eslint/js'; -import eslintPluginPrettierRecommended from 'eslint-plugin-prettier/recommended'; -import globals from 'globals'; -import tseslint from 'typescript-eslint'; +import { + baseConfig, + typescriptConfig, + nestjsConfig, + prettierConfig, +} from '@manacore/eslint-config'; -export default tseslint.config( - { - ignores: ['eslint.config.mjs'], - }, - eslint.configs.recommended, - ...tseslint.configs.recommendedTypeChecked, - eslintPluginPrettierRecommended, - { - languageOptions: { - globals: { - ...globals.node, - ...globals.jest, - }, - sourceType: 'commonjs', - parserOptions: { - projectService: true, - tsconfigRootDir: import.meta.dirname, - }, - }, - }, - { - rules: { - '@typescript-eslint/no-explicit-any': 'off', - '@typescript-eslint/no-floating-promises': 'warn', - '@typescript-eslint/no-unsafe-argument': 'warn' - }, - }, -); \ No newline at end of file +export default [ + { + ignores: ['dist/**', 'node_modules/**'], + }, + ...baseConfig, + ...typescriptConfig, + ...nestjsConfig, + ...prettierConfig, +]; diff --git a/apps/manadeck/apps/landing/eslint.config.js b/apps/manadeck/apps/landing/eslint.config.js new file mode 100644 index 000000000..172a11a3f --- /dev/null +++ b/apps/manadeck/apps/landing/eslint.config.js @@ -0,0 +1,11 @@ +// @ts-check +import { baseConfig, typescriptConfig, prettierConfig } from '@manacore/eslint-config'; + +export default [ + { + ignores: ['dist/**', '.astro/**', 'node_modules/**'], + }, + ...baseConfig, + ...typescriptConfig, + ...prettierConfig, +]; diff --git a/apps/manadeck/apps/landing/package.json b/apps/manadeck/apps/landing/package.json index a5512b7b4..86d7016f0 100644 --- a/apps/manadeck/apps/landing/package.json +++ b/apps/manadeck/apps/landing/package.json @@ -9,7 +9,8 @@ "build": "astro check && astro build", "preview": "astro preview", "astro": "astro", - "type-check": "astro check" + "type-check": "astro check", + "lint": "eslint ." }, "dependencies": { "@astrojs/check": "^0.9.0", diff --git a/apps/manadeck/apps/mobile/eslint.config.js b/apps/manadeck/apps/mobile/eslint.config.js deleted file mode 100644 index 23a1dd3a7..000000000 --- a/apps/manadeck/apps/mobile/eslint.config.js +++ /dev/null @@ -1,15 +0,0 @@ -/* eslint-env node */ -const { defineConfig } = require('eslint/config'); -const expoConfig = require('eslint-config-expo/flat'); - -module.exports = defineConfig([ - expoConfig, - { - ignores: ['dist/*'], - }, - { - rules: { - 'react/display-name': 'off', - }, - }, -]); diff --git a/apps/manadeck/apps/mobile/eslint.config.mjs b/apps/manadeck/apps/mobile/eslint.config.mjs new file mode 100644 index 000000000..0a8233f8d --- /dev/null +++ b/apps/manadeck/apps/mobile/eslint.config.mjs @@ -0,0 +1,12 @@ +// @ts-check +import { baseConfig, typescriptConfig, reactConfig, prettierConfig } from '@manacore/eslint-config'; + +export default [ + { + ignores: ['dist/**', '.expo/**', 'node_modules/**', 'android/**', 'ios/**'], + }, + ...baseConfig, + ...typescriptConfig, + ...reactConfig, + ...prettierConfig, +]; diff --git a/apps/manadeck/apps/mobile/package.json b/apps/manadeck/apps/mobile/package.json index 098f1297c..e13f16c84 100644 --- a/apps/manadeck/apps/mobile/package.json +++ b/apps/manadeck/apps/mobile/package.json @@ -12,8 +12,8 @@ "build:preview": "eas build --profile preview", "build:prod": "eas build --profile production", "prebuild": "expo prebuild", - "lint": "eslint \"**/*.{js,jsx,ts,tsx}\" && prettier -c \"**/*.{js,jsx,ts,tsx,json}\"", - "format": "eslint \"**/*.{js,jsx,ts,tsx}\" --fix && prettier \"**/*.{js,jsx,ts,tsx,json}\" --write", + "lint": "eslint .", + "format": "eslint . --fix", "web": "expo start --web" }, "dependencies": { diff --git a/apps/manadeck/apps/web/eslint.config.js b/apps/manadeck/apps/web/eslint.config.js new file mode 100644 index 000000000..f0e51b62e --- /dev/null +++ b/apps/manadeck/apps/web/eslint.config.js @@ -0,0 +1,17 @@ +// @ts-check +import { + baseConfig, + typescriptConfig, + svelteConfig, + prettierConfig, +} from '@manacore/eslint-config'; + +export default [ + { + ignores: ['dist/**', '.svelte-kit/**', 'node_modules/**'], + }, + ...baseConfig, + ...typescriptConfig, + ...svelteConfig, + ...prettierConfig, +]; diff --git a/apps/manadeck/apps/web/package.json b/apps/manadeck/apps/web/package.json index c5b20ec60..7325e06ab 100644 --- a/apps/manadeck/apps/web/package.json +++ b/apps/manadeck/apps/web/package.json @@ -9,7 +9,8 @@ "preview": "vite preview", "prepare": "svelte-kit sync || echo ''", "check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json", - "check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch" + "check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch", + "lint": "eslint ." }, "devDependencies": { "@sveltejs/adapter-auto": "^7.0.0", diff --git a/apps/memoro/apps/landing/eslint.config.js b/apps/memoro/apps/landing/eslint.config.js new file mode 100644 index 000000000..172a11a3f --- /dev/null +++ b/apps/memoro/apps/landing/eslint.config.js @@ -0,0 +1,11 @@ +// @ts-check +import { baseConfig, typescriptConfig, prettierConfig } from '@manacore/eslint-config'; + +export default [ + { + ignores: ['dist/**', '.astro/**', 'node_modules/**'], + }, + ...baseConfig, + ...typescriptConfig, + ...prettierConfig, +]; diff --git a/apps/memoro/apps/mobile/eslint.config.mjs b/apps/memoro/apps/mobile/eslint.config.mjs new file mode 100644 index 000000000..0a8233f8d --- /dev/null +++ b/apps/memoro/apps/mobile/eslint.config.mjs @@ -0,0 +1,12 @@ +// @ts-check +import { baseConfig, typescriptConfig, reactConfig, prettierConfig } from '@manacore/eslint-config'; + +export default [ + { + ignores: ['dist/**', '.expo/**', 'node_modules/**', 'android/**', 'ios/**'], + }, + ...baseConfig, + ...typescriptConfig, + ...reactConfig, + ...prettierConfig, +]; diff --git a/apps/news/apps/landing/eslint.config.js b/apps/news/apps/landing/eslint.config.js new file mode 100644 index 000000000..172a11a3f --- /dev/null +++ b/apps/news/apps/landing/eslint.config.js @@ -0,0 +1,11 @@ +// @ts-check +import { baseConfig, typescriptConfig, prettierConfig } from '@manacore/eslint-config'; + +export default [ + { + ignores: ['dist/**', '.astro/**', 'node_modules/**'], + }, + ...baseConfig, + ...typescriptConfig, + ...prettierConfig, +]; diff --git a/apps/nutriphi/apps/backend/eslint.config.mjs b/apps/nutriphi/apps/backend/eslint.config.mjs new file mode 100644 index 000000000..41ef245c0 --- /dev/null +++ b/apps/nutriphi/apps/backend/eslint.config.mjs @@ -0,0 +1,17 @@ +// @ts-check +import { + baseConfig, + typescriptConfig, + nestjsConfig, + prettierConfig, +} from '@manacore/eslint-config'; + +export default [ + { + ignores: ['dist/**', 'node_modules/**'], + }, + ...baseConfig, + ...typescriptConfig, + ...nestjsConfig, + ...prettierConfig, +]; diff --git a/apps/nutriphi/apps/landing/eslint.config.js b/apps/nutriphi/apps/landing/eslint.config.js new file mode 100644 index 000000000..172a11a3f --- /dev/null +++ b/apps/nutriphi/apps/landing/eslint.config.js @@ -0,0 +1,11 @@ +// @ts-check +import { baseConfig, typescriptConfig, prettierConfig } from '@manacore/eslint-config'; + +export default [ + { + ignores: ['dist/**', '.astro/**', 'node_modules/**'], + }, + ...baseConfig, + ...typescriptConfig, + ...prettierConfig, +]; diff --git a/apps/nutriphi/apps/mobile/eslint.config.mjs b/apps/nutriphi/apps/mobile/eslint.config.mjs new file mode 100644 index 000000000..0a8233f8d --- /dev/null +++ b/apps/nutriphi/apps/mobile/eslint.config.mjs @@ -0,0 +1,12 @@ +// @ts-check +import { baseConfig, typescriptConfig, reactConfig, prettierConfig } from '@manacore/eslint-config'; + +export default [ + { + ignores: ['dist/**', '.expo/**', 'node_modules/**', 'android/**', 'ios/**'], + }, + ...baseConfig, + ...typescriptConfig, + ...reactConfig, + ...prettierConfig, +]; diff --git a/apps/picture/apps/backend/eslint.config.mjs b/apps/picture/apps/backend/eslint.config.mjs new file mode 100644 index 000000000..41ef245c0 --- /dev/null +++ b/apps/picture/apps/backend/eslint.config.mjs @@ -0,0 +1,17 @@ +// @ts-check +import { + baseConfig, + typescriptConfig, + nestjsConfig, + prettierConfig, +} from '@manacore/eslint-config'; + +export default [ + { + ignores: ['dist/**', 'node_modules/**'], + }, + ...baseConfig, + ...typescriptConfig, + ...nestjsConfig, + ...prettierConfig, +]; diff --git a/apps/picture/apps/landing/eslint.config.js b/apps/picture/apps/landing/eslint.config.js new file mode 100644 index 000000000..172a11a3f --- /dev/null +++ b/apps/picture/apps/landing/eslint.config.js @@ -0,0 +1,11 @@ +// @ts-check +import { baseConfig, typescriptConfig, prettierConfig } from '@manacore/eslint-config'; + +export default [ + { + ignores: ['dist/**', '.astro/**', 'node_modules/**'], + }, + ...baseConfig, + ...typescriptConfig, + ...prettierConfig, +]; diff --git a/apps/picture/apps/mobile/eslint.config.js b/apps/picture/apps/mobile/eslint.config.js deleted file mode 100644 index 23a1dd3a7..000000000 --- a/apps/picture/apps/mobile/eslint.config.js +++ /dev/null @@ -1,15 +0,0 @@ -/* eslint-env node */ -const { defineConfig } = require('eslint/config'); -const expoConfig = require('eslint-config-expo/flat'); - -module.exports = defineConfig([ - expoConfig, - { - ignores: ['dist/*'], - }, - { - rules: { - 'react/display-name': 'off', - }, - }, -]); diff --git a/apps/picture/apps/mobile/eslint.config.mjs b/apps/picture/apps/mobile/eslint.config.mjs new file mode 100644 index 000000000..0a8233f8d --- /dev/null +++ b/apps/picture/apps/mobile/eslint.config.mjs @@ -0,0 +1,12 @@ +// @ts-check +import { baseConfig, typescriptConfig, reactConfig, prettierConfig } from '@manacore/eslint-config'; + +export default [ + { + ignores: ['dist/**', '.expo/**', 'node_modules/**', 'android/**', 'ios/**'], + }, + ...baseConfig, + ...typescriptConfig, + ...reactConfig, + ...prettierConfig, +]; diff --git a/apps/picture/apps/mobile/package.json b/apps/picture/apps/mobile/package.json index 8ff0b6b9a..9f597d622 100644 --- a/apps/picture/apps/mobile/package.json +++ b/apps/picture/apps/mobile/package.json @@ -11,8 +11,8 @@ "build:preview": "eas build --profile preview", "build:prod": "eas build --profile production", "prebuild": "expo prebuild", - "lint": "eslint \"**/*.{js,jsx,ts,tsx}\" && prettier -c \"**/*.{js,jsx,ts,tsx,json}\"", - "format": "eslint \"**/*.{js,jsx,ts,tsx}\" --fix && prettier \"**/*.{js,jsx,ts,tsx,json}\" --write", + "lint": "eslint .", + "format": "eslint . --fix", "type-check": "echo 'Skipping type-check: @picture/mobile needs theme system migration'", "postinstall": "patch-package && ./scripts/build-workspace-deps.sh" }, diff --git a/apps/picture/apps/web/eslint.config.js b/apps/picture/apps/web/eslint.config.js index c477a1cf5..f0e51b62e 100644 --- a/apps/picture/apps/web/eslint.config.js +++ b/apps/picture/apps/web/eslint.config.js @@ -1,41 +1,17 @@ -import prettier from 'eslint-config-prettier'; -import { fileURLToPath } from 'node:url'; -import { includeIgnoreFile } from '@eslint/compat'; -import js from '@eslint/js'; -import svelte from 'eslint-plugin-svelte'; -import { defineConfig } from 'eslint/config'; -import globals from 'globals'; -import ts from 'typescript-eslint'; -import svelteConfig from './svelte.config.js'; +// @ts-check +import { + baseConfig, + typescriptConfig, + svelteConfig, + prettierConfig, +} from '@manacore/eslint-config'; -const gitignorePath = fileURLToPath(new URL('./.gitignore', import.meta.url)); - -export default defineConfig( - includeIgnoreFile(gitignorePath), - js.configs.recommended, - ...ts.configs.recommended, - ...svelte.configs.recommended, - prettier, - ...svelte.configs.prettier, +export default [ { - languageOptions: { - globals: { ...globals.browser, ...globals.node }, - }, - rules: { - // typescript-eslint strongly recommend that you do not use the no-undef lint rule on TypeScript projects. - // see: https://typescript-eslint.io/troubleshooting/faqs/eslint/#i-get-errors-from-the-no-undef-rule-about-global-variables-not-being-defined-even-though-there-are-no-typescript-errors - 'no-undef': 'off', - }, + ignores: ['dist/**', '.svelte-kit/**', 'node_modules/**'], }, - { - files: ['**/*.svelte', '**/*.svelte.ts', '**/*.svelte.js'], - languageOptions: { - parserOptions: { - projectService: true, - extraFileExtensions: ['.svelte'], - parser: ts.parser, - svelteConfig, - }, - }, - } -); + ...baseConfig, + ...typescriptConfig, + ...svelteConfig, + ...prettierConfig, +]; diff --git a/apps/picture/package.json b/apps/picture/package.json index 8d7c62f38..c181a6796 100644 --- a/apps/picture/package.json +++ b/apps/picture/package.json @@ -11,8 +11,6 @@ "build:mobile": "pnpm --filter @picture/mobile build:prod", "build:web": "pnpm --filter @picture/web build", "build:landing": "pnpm --filter @picture/landing build", - "lint": "pnpm run --recursive lint", - "type-check": "pnpm run --recursive type-check", "clean": "pnpm run --recursive clean && rm -rf node_modules", "android": "expo run:android", "ios": "expo run:ios" diff --git a/apps/presi/apps/backend/eslint.config.mjs b/apps/presi/apps/backend/eslint.config.mjs new file mode 100644 index 000000000..41ef245c0 --- /dev/null +++ b/apps/presi/apps/backend/eslint.config.mjs @@ -0,0 +1,17 @@ +// @ts-check +import { + baseConfig, + typescriptConfig, + nestjsConfig, + prettierConfig, +} from '@manacore/eslint-config'; + +export default [ + { + ignores: ['dist/**', 'node_modules/**'], + }, + ...baseConfig, + ...typescriptConfig, + ...nestjsConfig, + ...prettierConfig, +]; diff --git a/apps/presi/apps/backend/src/db/connection.ts b/apps/presi/apps/backend/src/db/connection.ts index c687f3a09..eb4eaccc4 100644 --- a/apps/presi/apps/backend/src/db/connection.ts +++ b/apps/presi/apps/backend/src/db/connection.ts @@ -2,7 +2,7 @@ import { drizzle, type PostgresJsDatabase } from 'drizzle-orm/postgres-js'; import * as schema from './schema'; // Use require for postgres to avoid ESM/CommonJS interop issues -// eslint-disable-next-line @typescript-eslint/no-var-requires + const postgres = require('postgres'); let connection: ReturnType | null = null; diff --git a/apps/presi/apps/backend/src/db/database.module.ts b/apps/presi/apps/backend/src/db/database.module.ts index b4d1f2af6..4cb99eb71 100644 --- a/apps/presi/apps/backend/src/db/database.module.ts +++ b/apps/presi/apps/backend/src/db/database.module.ts @@ -1,4 +1,4 @@ -import { Module, Global, OnModuleDestroy } from '@nestjs/common'; +import { Module, Global, type OnModuleDestroy } from '@nestjs/common'; import { ConfigService } from '@nestjs/config'; import { getDb, closeConnection, type Database } from './connection'; diff --git a/apps/presi/apps/backend/src/deck/deck.controller.ts b/apps/presi/apps/backend/src/deck/deck.controller.ts index 1fde404f8..eb27b9c19 100644 --- a/apps/presi/apps/backend/src/deck/deck.controller.ts +++ b/apps/presi/apps/backend/src/deck/deck.controller.ts @@ -1,7 +1,7 @@ import { Controller, Get, Post, Put, Delete, Body, Param, UseGuards } from '@nestjs/common'; -import { DeckService } from './deck.service'; -import { CreateDeckDto, UpdateDeckDto } from './deck.dto'; -import { JwtAuthGuard, CurrentUser, CurrentUserData } from '@manacore/shared-nestjs-auth'; +import { type DeckService } from './deck.service'; +import { type CreateDeckDto, type UpdateDeckDto } from './deck.dto'; +import { JwtAuthGuard, CurrentUser, type CurrentUserData } from '@manacore/shared-nestjs-auth'; @Controller('decks') @UseGuards(JwtAuthGuard) diff --git a/apps/presi/apps/backend/src/deck/deck.service.ts b/apps/presi/apps/backend/src/deck/deck.service.ts index 291f50509..b5b2b0eea 100644 --- a/apps/presi/apps/backend/src/deck/deck.service.ts +++ b/apps/presi/apps/backend/src/deck/deck.service.ts @@ -1,9 +1,9 @@ -import { Injectable, Inject, NotFoundException, ForbiddenException } from '@nestjs/common'; +import { Injectable, Inject, NotFoundException } from '@nestjs/common'; import { eq, and, desc } from 'drizzle-orm'; import { DATABASE_CONNECTION } from '../db/database.module'; import { type Database } from '../db/connection'; import { decks, slides } from '../db/schema'; -import { CreateDeckDto, UpdateDeckDto } from './deck.dto'; +import { type CreateDeckDto, type UpdateDeckDto } from './deck.dto'; @Injectable() export class DeckService { diff --git a/apps/presi/apps/backend/src/share/share.controller.ts b/apps/presi/apps/backend/src/share/share.controller.ts index 3250d29f2..8f3f19ad7 100644 --- a/apps/presi/apps/backend/src/share/share.controller.ts +++ b/apps/presi/apps/backend/src/share/share.controller.ts @@ -1,7 +1,7 @@ import { Controller, Get, Post, Delete, Body, Param, UseGuards } from '@nestjs/common'; -import { ShareService } from './share.service'; -import { CreateShareDto } from './share.dto'; -import { JwtAuthGuard, CurrentUser, CurrentUserData } from '@manacore/shared-nestjs-auth'; +import { type ShareService } from './share.service'; +import { type CreateShareDto } from './share.dto'; +import { JwtAuthGuard, CurrentUser, type CurrentUserData } from '@manacore/shared-nestjs-auth'; @Controller('share') export class ShareController { diff --git a/apps/presi/apps/backend/src/share/share.service.ts b/apps/presi/apps/backend/src/share/share.service.ts index b00ee7564..00aff0254 100644 --- a/apps/presi/apps/backend/src/share/share.service.ts +++ b/apps/presi/apps/backend/src/share/share.service.ts @@ -2,8 +2,8 @@ import { Injectable, Inject, NotFoundException, ForbiddenException } from '@nest import { eq, and, gt, or, isNull } from 'drizzle-orm'; import { DATABASE_CONNECTION } from '../db/database.module'; import { type Database } from '../db/connection'; -import { sharedDecks, decks, slides } from '../db/schema'; -import { DeckService } from '../deck/deck.service'; +import { sharedDecks, slides } from '../db/schema'; +import { type DeckService } from '../deck/deck.service'; import { randomBytes } from 'crypto'; @Injectable() diff --git a/apps/presi/apps/backend/src/slide/slide.controller.ts b/apps/presi/apps/backend/src/slide/slide.controller.ts index 232325800..03e2e20a6 100644 --- a/apps/presi/apps/backend/src/slide/slide.controller.ts +++ b/apps/presi/apps/backend/src/slide/slide.controller.ts @@ -1,7 +1,7 @@ import { Controller, Post, Put, Delete, Body, Param, UseGuards } from '@nestjs/common'; -import { SlideService } from './slide.service'; -import { CreateSlideDto, UpdateSlideDto, ReorderSlidesDto } from './slide.dto'; -import { JwtAuthGuard, CurrentUser, CurrentUserData } from '@manacore/shared-nestjs-auth'; +import { type SlideService } from './slide.service'; +import { type CreateSlideDto, type UpdateSlideDto, type ReorderSlidesDto } from './slide.dto'; +import { JwtAuthGuard, CurrentUser, type CurrentUserData } from '@manacore/shared-nestjs-auth'; @Controller() @UseGuards(JwtAuthGuard) diff --git a/apps/presi/apps/backend/src/slide/slide.service.ts b/apps/presi/apps/backend/src/slide/slide.service.ts index 28107a066..269702fbd 100644 --- a/apps/presi/apps/backend/src/slide/slide.service.ts +++ b/apps/presi/apps/backend/src/slide/slide.service.ts @@ -1,10 +1,10 @@ import { Injectable, Inject, NotFoundException, ForbiddenException } from '@nestjs/common'; -import { eq, and, max } from 'drizzle-orm'; +import { eq, max } from 'drizzle-orm'; import { DATABASE_CONNECTION } from '../db/database.module'; import { type Database } from '../db/connection'; import { slides, decks } from '../db/schema'; -import { DeckService } from '../deck/deck.service'; -import { CreateSlideDto, UpdateSlideDto, ReorderSlidesDto } from './slide.dto'; +import { type DeckService } from '../deck/deck.service'; +import { type CreateSlideDto, type UpdateSlideDto, type ReorderSlidesDto } from './slide.dto'; @Injectable() export class SlideService { diff --git a/apps/presi/apps/backend/src/theme/theme.controller.ts b/apps/presi/apps/backend/src/theme/theme.controller.ts index 0157afa52..261965daa 100644 --- a/apps/presi/apps/backend/src/theme/theme.controller.ts +++ b/apps/presi/apps/backend/src/theme/theme.controller.ts @@ -1,5 +1,5 @@ import { Controller, Get, Param } from '@nestjs/common'; -import { ThemeService } from './theme.service'; +import { type ThemeService } from './theme.service'; @Controller('themes') export class ThemeController { diff --git a/apps/presi/apps/landing/eslint.config.js b/apps/presi/apps/landing/eslint.config.js new file mode 100644 index 000000000..172a11a3f --- /dev/null +++ b/apps/presi/apps/landing/eslint.config.js @@ -0,0 +1,11 @@ +// @ts-check +import { baseConfig, typescriptConfig, prettierConfig } from '@manacore/eslint-config'; + +export default [ + { + ignores: ['dist/**', '.astro/**', 'node_modules/**'], + }, + ...baseConfig, + ...typescriptConfig, + ...prettierConfig, +]; diff --git a/apps/presi/apps/landing/package.json b/apps/presi/apps/landing/package.json index 412a163e7..b5922a906 100644 --- a/apps/presi/apps/landing/package.json +++ b/apps/presi/apps/landing/package.json @@ -9,7 +9,8 @@ "build": "astro check && astro build", "preview": "astro preview", "astro": "astro", - "type-check": "astro check" + "type-check": "astro check", + "lint": "eslint ." }, "dependencies": { "@astrojs/check": "^0.9.0", diff --git a/apps/presi/apps/mobile/eslint.config.mjs b/apps/presi/apps/mobile/eslint.config.mjs new file mode 100644 index 000000000..0a8233f8d --- /dev/null +++ b/apps/presi/apps/mobile/eslint.config.mjs @@ -0,0 +1,12 @@ +// @ts-check +import { baseConfig, typescriptConfig, reactConfig, prettierConfig } from '@manacore/eslint-config'; + +export default [ + { + ignores: ['dist/**', '.expo/**', 'node_modules/**', 'android/**', 'ios/**'], + }, + ...baseConfig, + ...typescriptConfig, + ...reactConfig, + ...prettierConfig, +]; diff --git a/apps/presi/apps/mobile/package.json b/apps/presi/apps/mobile/package.json index a97c96464..f773a036c 100644 --- a/apps/presi/apps/mobile/package.json +++ b/apps/presi/apps/mobile/package.json @@ -8,7 +8,8 @@ "android": "expo start --android", "ios": "expo start --ios", "web": "expo start --web", - "lint": "expo lint", + "lint": "eslint .", + "format": "eslint . --fix", "type-check": "echo 'Skipping type-check: @presi/mobile needs Firebase migration'" }, "dependencies": { @@ -46,6 +47,7 @@ "devDependencies": { "@babel/core": "^7.25.2", "@types/react": "~18.3.12", + "eslint": "^9.39.1", "typescript": "^5.7.2" } } diff --git a/apps/presi/apps/web/eslint.config.js b/apps/presi/apps/web/eslint.config.js new file mode 100644 index 000000000..f0e51b62e --- /dev/null +++ b/apps/presi/apps/web/eslint.config.js @@ -0,0 +1,17 @@ +// @ts-check +import { + baseConfig, + typescriptConfig, + svelteConfig, + prettierConfig, +} from '@manacore/eslint-config'; + +export default [ + { + ignores: ['dist/**', '.svelte-kit/**', 'node_modules/**'], + }, + ...baseConfig, + ...typescriptConfig, + ...svelteConfig, + ...prettierConfig, +]; diff --git a/apps/presi/packages/shared/package.json b/apps/presi/packages/shared/package.json index 78d85febe..5cd60a1c8 100644 --- a/apps/presi/packages/shared/package.json +++ b/apps/presi/packages/shared/package.json @@ -5,7 +5,8 @@ "main": "./src/index.ts", "types": "./src/index.ts", "scripts": { - "type-check": "tsc --noEmit" + "type-check": "tsc --noEmit", + "lint": "eslint ." }, "devDependencies": { "typescript": "^5.7.2" diff --git a/apps/quote/apps/backend/eslint.config.mjs b/apps/quote/apps/backend/eslint.config.mjs new file mode 100644 index 000000000..41ef245c0 --- /dev/null +++ b/apps/quote/apps/backend/eslint.config.mjs @@ -0,0 +1,17 @@ +// @ts-check +import { + baseConfig, + typescriptConfig, + nestjsConfig, + prettierConfig, +} from '@manacore/eslint-config'; + +export default [ + { + ignores: ['dist/**', 'node_modules/**'], + }, + ...baseConfig, + ...typescriptConfig, + ...nestjsConfig, + ...prettierConfig, +]; diff --git a/apps/quote/apps/landing/eslint.config.js b/apps/quote/apps/landing/eslint.config.js new file mode 100644 index 000000000..172a11a3f --- /dev/null +++ b/apps/quote/apps/landing/eslint.config.js @@ -0,0 +1,11 @@ +// @ts-check +import { baseConfig, typescriptConfig, prettierConfig } from '@manacore/eslint-config'; + +export default [ + { + ignores: ['dist/**', '.astro/**', 'node_modules/**'], + }, + ...baseConfig, + ...typescriptConfig, + ...prettierConfig, +]; diff --git a/apps/quote/apps/mobile/eslint.config.mjs b/apps/quote/apps/mobile/eslint.config.mjs new file mode 100644 index 000000000..0a8233f8d --- /dev/null +++ b/apps/quote/apps/mobile/eslint.config.mjs @@ -0,0 +1,12 @@ +// @ts-check +import { baseConfig, typescriptConfig, reactConfig, prettierConfig } from '@manacore/eslint-config'; + +export default [ + { + ignores: ['dist/**', '.expo/**', 'node_modules/**', 'android/**', 'ios/**'], + }, + ...baseConfig, + ...typescriptConfig, + ...reactConfig, + ...prettierConfig, +]; diff --git a/apps/quote/apps/web/eslint.config.js b/apps/quote/apps/web/eslint.config.js new file mode 100644 index 000000000..f0e51b62e --- /dev/null +++ b/apps/quote/apps/web/eslint.config.js @@ -0,0 +1,17 @@ +// @ts-check +import { + baseConfig, + typescriptConfig, + svelteConfig, + prettierConfig, +} from '@manacore/eslint-config'; + +export default [ + { + ignores: ['dist/**', '.svelte-kit/**', 'node_modules/**'], + }, + ...baseConfig, + ...typescriptConfig, + ...svelteConfig, + ...prettierConfig, +]; diff --git a/apps/reader/apps/mobile/eslint.config.mjs b/apps/reader/apps/mobile/eslint.config.mjs new file mode 100644 index 000000000..0a8233f8d --- /dev/null +++ b/apps/reader/apps/mobile/eslint.config.mjs @@ -0,0 +1,12 @@ +// @ts-check +import { baseConfig, typescriptConfig, reactConfig, prettierConfig } from '@manacore/eslint-config'; + +export default [ + { + ignores: ['dist/**', '.expo/**', 'node_modules/**', 'android/**', 'ios/**'], + }, + ...baseConfig, + ...typescriptConfig, + ...reactConfig, + ...prettierConfig, +]; diff --git a/apps/storage/apps/backend/eslint.config.mjs b/apps/storage/apps/backend/eslint.config.mjs new file mode 100644 index 000000000..41ef245c0 --- /dev/null +++ b/apps/storage/apps/backend/eslint.config.mjs @@ -0,0 +1,17 @@ +// @ts-check +import { + baseConfig, + typescriptConfig, + nestjsConfig, + prettierConfig, +} from '@manacore/eslint-config'; + +export default [ + { + ignores: ['dist/**', 'node_modules/**'], + }, + ...baseConfig, + ...typescriptConfig, + ...nestjsConfig, + ...prettierConfig, +]; diff --git a/apps/storage/apps/web/eslint.config.js b/apps/storage/apps/web/eslint.config.js new file mode 100644 index 000000000..f0e51b62e --- /dev/null +++ b/apps/storage/apps/web/eslint.config.js @@ -0,0 +1,17 @@ +// @ts-check +import { + baseConfig, + typescriptConfig, + svelteConfig, + prettierConfig, +} from '@manacore/eslint-config'; + +export default [ + { + ignores: ['dist/**', '.svelte-kit/**', 'node_modules/**'], + }, + ...baseConfig, + ...typescriptConfig, + ...svelteConfig, + ...prettierConfig, +]; diff --git a/apps/storage/packages/shared/package.json b/apps/storage/packages/shared/package.json index c520e6b2a..c11e3d6c7 100644 --- a/apps/storage/packages/shared/package.json +++ b/apps/storage/packages/shared/package.json @@ -9,7 +9,8 @@ "./types": "./src/types/index.ts" }, "scripts": { - "type-check": "tsc --noEmit" + "type-check": "tsc --noEmit", + "lint": "eslint ." }, "devDependencies": { "typescript": "^5.7.3" diff --git a/apps/wisekeep/apps/backend/eslint.config.mjs b/apps/wisekeep/apps/backend/eslint.config.mjs new file mode 100644 index 000000000..41ef245c0 --- /dev/null +++ b/apps/wisekeep/apps/backend/eslint.config.mjs @@ -0,0 +1,17 @@ +// @ts-check +import { + baseConfig, + typescriptConfig, + nestjsConfig, + prettierConfig, +} from '@manacore/eslint-config'; + +export default [ + { + ignores: ['dist/**', 'node_modules/**'], + }, + ...baseConfig, + ...typescriptConfig, + ...nestjsConfig, + ...prettierConfig, +]; diff --git a/apps/wisekeep/apps/landing/eslint.config.js b/apps/wisekeep/apps/landing/eslint.config.js new file mode 100644 index 000000000..172a11a3f --- /dev/null +++ b/apps/wisekeep/apps/landing/eslint.config.js @@ -0,0 +1,11 @@ +// @ts-check +import { baseConfig, typescriptConfig, prettierConfig } from '@manacore/eslint-config'; + +export default [ + { + ignores: ['dist/**', '.astro/**', 'node_modules/**'], + }, + ...baseConfig, + ...typescriptConfig, + ...prettierConfig, +]; diff --git a/apps/wisekeep/apps/mobile/eslint.config.mjs b/apps/wisekeep/apps/mobile/eslint.config.mjs new file mode 100644 index 000000000..0a8233f8d --- /dev/null +++ b/apps/wisekeep/apps/mobile/eslint.config.mjs @@ -0,0 +1,12 @@ +// @ts-check +import { baseConfig, typescriptConfig, reactConfig, prettierConfig } from '@manacore/eslint-config'; + +export default [ + { + ignores: ['dist/**', '.expo/**', 'node_modules/**', 'android/**', 'ios/**'], + }, + ...baseConfig, + ...typescriptConfig, + ...reactConfig, + ...prettierConfig, +]; diff --git a/apps/zitare/apps/backend/eslint.config.mjs b/apps/zitare/apps/backend/eslint.config.mjs new file mode 100644 index 000000000..41ef245c0 --- /dev/null +++ b/apps/zitare/apps/backend/eslint.config.mjs @@ -0,0 +1,17 @@ +// @ts-check +import { + baseConfig, + typescriptConfig, + nestjsConfig, + prettierConfig, +} from '@manacore/eslint-config'; + +export default [ + { + ignores: ['dist/**', 'node_modules/**'], + }, + ...baseConfig, + ...typescriptConfig, + ...nestjsConfig, + ...prettierConfig, +]; diff --git a/apps/zitare/apps/landing/eslint.config.js b/apps/zitare/apps/landing/eslint.config.js new file mode 100644 index 000000000..172a11a3f --- /dev/null +++ b/apps/zitare/apps/landing/eslint.config.js @@ -0,0 +1,11 @@ +// @ts-check +import { baseConfig, typescriptConfig, prettierConfig } from '@manacore/eslint-config'; + +export default [ + { + ignores: ['dist/**', '.astro/**', 'node_modules/**'], + }, + ...baseConfig, + ...typescriptConfig, + ...prettierConfig, +]; diff --git a/apps/zitare/apps/landing/package.json b/apps/zitare/apps/landing/package.json index a8afe7f8a..6973c1234 100644 --- a/apps/zitare/apps/landing/package.json +++ b/apps/zitare/apps/landing/package.json @@ -6,7 +6,8 @@ "dev": "astro dev", "build": "astro build", "preview": "astro preview", - "astro": "astro" + "astro": "astro", + "lint": "eslint ." }, "dependencies": { "@manacore/shared-landing-ui": "workspace:*", diff --git a/apps/zitare/apps/mobile/eslint.config.mjs b/apps/zitare/apps/mobile/eslint.config.mjs new file mode 100644 index 000000000..0a8233f8d --- /dev/null +++ b/apps/zitare/apps/mobile/eslint.config.mjs @@ -0,0 +1,12 @@ +// @ts-check +import { baseConfig, typescriptConfig, reactConfig, prettierConfig } from '@manacore/eslint-config'; + +export default [ + { + ignores: ['dist/**', '.expo/**', 'node_modules/**', 'android/**', 'ios/**'], + }, + ...baseConfig, + ...typescriptConfig, + ...reactConfig, + ...prettierConfig, +]; diff --git a/apps/zitare/apps/mobile/package.json b/apps/zitare/apps/mobile/package.json index a88691681..c4ff2f742 100644 --- a/apps/zitare/apps/mobile/package.json +++ b/apps/zitare/apps/mobile/package.json @@ -15,8 +15,8 @@ "build:preview": "pnpm run build:biographies && eas build --profile preview", "build:prod": "pnpm run build:biographies && eas build --profile production", "prebuild": "expo prebuild", - "lint": "eslint \"**/*.{js,jsx,ts,tsx}\" && prettier -c \"**/*.{js,jsx,ts,tsx,json}\"", - "format": "eslint \"**/*.{js,jsx,ts,tsx}\" --fix && prettier \"**/*.{js,jsx,ts,tsx,json}\" --write", + "lint": "eslint .", + "format": "eslint . --fix", "web": "pnpm run build:biographies && expo start --web" }, "dependencies": { diff --git a/apps/zitare/apps/web/eslint.config.js b/apps/zitare/apps/web/eslint.config.js new file mode 100644 index 000000000..f0e51b62e --- /dev/null +++ b/apps/zitare/apps/web/eslint.config.js @@ -0,0 +1,17 @@ +// @ts-check +import { + baseConfig, + typescriptConfig, + svelteConfig, + prettierConfig, +} from '@manacore/eslint-config'; + +export default [ + { + ignores: ['dist/**', '.svelte-kit/**', 'node_modules/**'], + }, + ...baseConfig, + ...typescriptConfig, + ...svelteConfig, + ...prettierConfig, +]; diff --git a/apps/zitare/package.json b/apps/zitare/package.json index b67130a8a..552bf5a4e 100644 --- a/apps/zitare/package.json +++ b/apps/zitare/package.json @@ -10,7 +10,6 @@ "dev:landing": "pnpm --filter @zitare/landing dev", "dev:mobile": "pnpm --filter @zitare/mobile dev", "build": "turbo run build", - "lint": "turbo run lint", "clean": "turbo run clean", "db:push": "pnpm --filter @zitare/backend db:push", "db:studio": "pnpm --filter @zitare/backend db:studio", diff --git a/apps/zitare/packages/content/package.json b/apps/zitare/packages/content/package.json index 5adb330dd..8a6dc5835 100644 --- a/apps/zitare/packages/content/package.json +++ b/apps/zitare/packages/content/package.json @@ -10,7 +10,8 @@ "./config": "./src/config/index.ts" }, "scripts": { - "type-check": "tsc --noEmit" + "type-check": "tsc --noEmit", + "lint": "eslint ." }, "dependencies": { "@zitare/shared": "workspace:*" diff --git a/apps/zitare/packages/web-ui/package.json b/apps/zitare/packages/web-ui/package.json index f49afeb21..9e86e02c1 100644 --- a/apps/zitare/packages/web-ui/package.json +++ b/apps/zitare/packages/web-ui/package.json @@ -9,7 +9,8 @@ "./stores/*": "./src/stores/*.ts" }, "scripts": { - "check": "svelte-check --tsconfig ./tsconfig.json" + "check": "svelte-check --tsconfig ./tsconfig.json", + "lint": "eslint ." }, "peerDependencies": { "svelte": "^5.0.0" diff --git a/eslint.config.mjs b/eslint.config.mjs index 9a00696c7..82e0d3e9f 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -1,66 +1,58 @@ // @ts-check -import eslint from '@eslint/js'; -import eslintPluginPrettierRecommended from 'eslint-plugin-prettier/recommended'; -import globals from 'globals'; -import tseslint from 'typescript-eslint'; - /** - * Root ESLint config for the monorepo. - * Individual projects can override with their own eslint.config.* files. + * Root ESLint configuration for Manacore monorepo + * + * Uses @manacore/eslint-config for unified linting across all packages. + * Apps can use their own eslint.config.* to add framework-specific rules. + * + * Config hierarchy: + * 1. Root: base + typescript + prettier (this file) + * 2. SvelteKit: adds svelteConfig + * 3. Expo Mobile: adds reactConfig + * 4. NestJS Backend: adds nestjsConfig */ -export default tseslint.config( +import { baseConfig, typescriptConfig, prettierConfig } from '@manacore/eslint-config'; + +export default [ + // ============================================ // Global ignores + // ============================================ { ignores: [ + // Build outputs '**/node_modules/**', '**/dist/**', '**/build/**', + '**/coverage/**', + '**/.turbo/**', + + // Framework-specific '**/.svelte-kit/**', '**/.expo/**', '**/.next/**', - '**/coverage/**', + + // Archived projects '**/apps-archived/**', - // Ignore projects with their own ESLint configs - 'apps/manadeck/apps/mobile/**', - 'apps/picture/apps/mobile/**', - 'apps/picture/apps/web/**', - 'games/voxel-lava/apps/web/**', + + // Generated files + '**/*.d.ts', + '**/generated/**', + + // Apps with their own ESLint configs (framework-specific) + // These import from @manacore/eslint-config but add framework rules + 'apps/*/apps/mobile/**', + 'apps/*/apps/web/**', + 'apps/*/apps/backend/**', + 'apps/*/apps/landing/**', + 'games/*/apps/**', + 'services/**', ], }, - // Base JavaScript rules - eslint.configs.recommended, - // TypeScript rules (without type-checking for speed) - ...tseslint.configs.recommended, - // Prettier integration - eslintPluginPrettierRecommended, - // Global settings - { - languageOptions: { - globals: { - ...globals.node, - ...globals.browser, - ...globals.es2022, - }, - ecmaVersion: 2022, - sourceType: 'module', - }, - }, - // TypeScript-specific rules - { - files: ['**/*.ts', '**/*.tsx', '**/*.mts', '**/*.cts'], - rules: { - '@typescript-eslint/no-explicit-any': 'warn', - '@typescript-eslint/no-unused-vars': [ - 'error', - { argsIgnorePattern: '^_', varsIgnorePattern: '^_' }, - ], - }, - }, - // JavaScript-specific rules - { - files: ['**/*.js', '**/*.jsx', '**/*.mjs', '**/*.cjs'], - rules: { - 'no-unused-vars': ['error', { argsIgnorePattern: '^_', varsIgnorePattern: '^_' }], - }, - } -); + + // ============================================ + // Base configuration for all files + // ============================================ + ...baseConfig, + ...typescriptConfig, + ...prettierConfig, +]; diff --git a/games/mana-games/apps/backend/eslint.config.mjs b/games/mana-games/apps/backend/eslint.config.mjs new file mode 100644 index 000000000..41ef245c0 --- /dev/null +++ b/games/mana-games/apps/backend/eslint.config.mjs @@ -0,0 +1,17 @@ +// @ts-check +import { + baseConfig, + typescriptConfig, + nestjsConfig, + prettierConfig, +} from '@manacore/eslint-config'; + +export default [ + { + ignores: ['dist/**', 'node_modules/**'], + }, + ...baseConfig, + ...typescriptConfig, + ...nestjsConfig, + ...prettierConfig, +]; diff --git a/games/mana-games/apps/backend/package.json b/games/mana-games/apps/backend/package.json index 4960b5401..69ed72fac 100644 --- a/games/mana-games/apps/backend/package.json +++ b/games/mana-games/apps/backend/package.json @@ -6,7 +6,8 @@ "dev": "nest start --watch", "build": "nest build", "start": "nest start", - "start:prod": "node dist/main" + "start:prod": "node dist/main", + "lint": "eslint ." }, "dependencies": { "@anthropic-ai/sdk": "^0.65.0", diff --git a/games/mana-games/apps/backend/src/game-submission/dto/submit-game.dto.ts b/games/mana-games/apps/backend/src/game-submission/dto/submit-game.dto.ts index 48c4f1112..b69d74209 100644 --- a/games/mana-games/apps/backend/src/game-submission/dto/submit-game.dto.ts +++ b/games/mana-games/apps/backend/src/game-submission/dto/submit-game.dto.ts @@ -1,4 +1,4 @@ -import { IsString, IsArray, IsOptional, IsObject, ValidateNested, IsIn } from 'class-validator'; +import { IsString, IsArray, IsOptional, ValidateNested, IsIn } from 'class-validator'; import { Type } from 'class-transformer'; class AuthorDto { diff --git a/games/mana-games/apps/web/eslint.config.js b/games/mana-games/apps/web/eslint.config.js new file mode 100644 index 000000000..62349efa0 --- /dev/null +++ b/games/mana-games/apps/web/eslint.config.js @@ -0,0 +1,23 @@ +// @ts-check +import { + baseConfig, + typescriptConfig, + svelteConfig, + prettierConfig, +} from '@manacore/eslint-config'; + +export default [ + { + ignores: [ + 'dist/**', + '.svelte-kit/**', + '.astro/**', + 'node_modules/**', + '**/stats-integration-template.js', + ], + }, + ...baseConfig, + ...typescriptConfig, + ...svelteConfig, + ...prettierConfig, +]; diff --git a/games/mana-games/apps/web/package.json b/games/mana-games/apps/web/package.json index c4b2f11d4..b064a6624 100644 --- a/games/mana-games/apps/web/package.json +++ b/games/mana-games/apps/web/package.json @@ -7,7 +7,8 @@ "dev": "astro dev", "build": "rm -rf dist && astro build", "preview": "astro preview", - "astro": "astro" + "astro": "astro", + "lint": "eslint ." }, "dependencies": { "astro": "^5.10.1" diff --git a/games/voxel-lava/apps/backend/eslint.config.mjs b/games/voxel-lava/apps/backend/eslint.config.mjs index cd199c5be..41ef245c0 100644 --- a/games/voxel-lava/apps/backend/eslint.config.mjs +++ b/games/voxel-lava/apps/backend/eslint.config.mjs @@ -1,40 +1,17 @@ // @ts-check -import eslint from '@eslint/js'; -import eslintPluginPrettierRecommended from 'eslint-plugin-prettier/recommended'; -import globals from 'globals'; -import tseslint from 'typescript-eslint'; +import { + baseConfig, + typescriptConfig, + nestjsConfig, + prettierConfig, +} from '@manacore/eslint-config'; -export default tseslint.config( +export default [ { - ignores: ['eslint.config.mjs', 'dist/**'], + ignores: ['dist/**', 'node_modules/**'], }, - eslint.configs.recommended, - ...tseslint.configs.recommendedTypeChecked, - eslintPluginPrettierRecommended, - { - languageOptions: { - globals: { - ...globals.node, - ...globals.jest, - }, - sourceType: 'commonjs', - parserOptions: { - projectService: true, - tsconfigRootDir: import.meta.dirname, - }, - }, - }, - { - rules: { - '@typescript-eslint/no-explicit-any': 'off', - '@typescript-eslint/no-floating-promises': 'warn', - '@typescript-eslint/no-unsafe-argument': 'warn', - '@typescript-eslint/no-unsafe-assignment': 'off', - '@typescript-eslint/no-unsafe-member-access': 'off', - '@typescript-eslint/no-unsafe-call': 'off', - '@typescript-eslint/no-unsafe-return': 'off', - '@typescript-eslint/no-require-imports': 'off', - '@typescript-eslint/no-redundant-type-constituents': 'off', - }, - }, -); + ...baseConfig, + ...typescriptConfig, + ...nestjsConfig, + ...prettierConfig, +]; diff --git a/games/voxel-lava/apps/backend/src/common/decorators/current-user.decorator.ts b/games/voxel-lava/apps/backend/src/common/decorators/current-user.decorator.ts index 3fa4d4088..6f578b5ec 100644 --- a/games/voxel-lava/apps/backend/src/common/decorators/current-user.decorator.ts +++ b/games/voxel-lava/apps/backend/src/common/decorators/current-user.decorator.ts @@ -1,4 +1,4 @@ -import { createParamDecorator, ExecutionContext } from '@nestjs/common'; +import { createParamDecorator, type ExecutionContext } from '@nestjs/common'; export interface CurrentUserPayload { userId: string; diff --git a/games/voxel-lava/apps/backend/src/common/guards/jwt-auth.guard.ts b/games/voxel-lava/apps/backend/src/common/guards/jwt-auth.guard.ts index 1d68d7fce..2b0ba4649 100644 --- a/games/voxel-lava/apps/backend/src/common/guards/jwt-auth.guard.ts +++ b/games/voxel-lava/apps/backend/src/common/guards/jwt-auth.guard.ts @@ -1,5 +1,10 @@ -import { Injectable, CanActivate, ExecutionContext, UnauthorizedException } from '@nestjs/common'; -import { ConfigService } from '@nestjs/config'; +import { + Injectable, + type CanActivate, + type ExecutionContext, + UnauthorizedException, +} from '@nestjs/common'; +import { type ConfigService } from '@nestjs/config'; @Injectable() export class JwtAuthGuard implements CanActivate { diff --git a/games/voxel-lava/apps/backend/src/db/database.module.ts b/games/voxel-lava/apps/backend/src/db/database.module.ts index b4d1f2af6..4cb99eb71 100644 --- a/games/voxel-lava/apps/backend/src/db/database.module.ts +++ b/games/voxel-lava/apps/backend/src/db/database.module.ts @@ -1,4 +1,4 @@ -import { Module, Global, OnModuleDestroy } from '@nestjs/common'; +import { Module, Global, type OnModuleDestroy } from '@nestjs/common'; import { ConfigService } from '@nestjs/config'; import { getDb, closeConnection, type Database } from './connection'; diff --git a/games/voxel-lava/apps/backend/src/level/level.controller.ts b/games/voxel-lava/apps/backend/src/level/level.controller.ts index e200dbd27..178428b92 100644 --- a/games/voxel-lava/apps/backend/src/level/level.controller.ts +++ b/games/voxel-lava/apps/backend/src/level/level.controller.ts @@ -1,10 +1,10 @@ import { Controller, Get, Post, Put, Delete, Body, Param, Query, UseGuards } from '@nestjs/common'; -import { LevelService } from './level.service'; -import { CreateLevelDto } from './dto/create-level.dto'; -import { UpdateLevelDto } from './dto/update-level.dto'; -import { RecordPlayDto } from './dto/record-play.dto'; +import { type LevelService } from './level.service'; +import { type CreateLevelDto } from './dto/create-level.dto'; +import { type UpdateLevelDto } from './dto/update-level.dto'; +import { type RecordPlayDto } from './dto/record-play.dto'; import { JwtAuthGuard } from '../common/guards/jwt-auth.guard'; -import { CurrentUser, CurrentUserPayload } from '../common/decorators/current-user.decorator'; +import { CurrentUser, type CurrentUserPayload } from '../common/decorators/current-user.decorator'; @Controller('levels') export class LevelController { diff --git a/games/voxel-lava/apps/backend/src/level/level.service.ts b/games/voxel-lava/apps/backend/src/level/level.service.ts index be6ac39d2..d12bba060 100644 --- a/games/voxel-lava/apps/backend/src/level/level.service.ts +++ b/games/voxel-lava/apps/backend/src/level/level.service.ts @@ -1,11 +1,11 @@ import { Injectable, Inject, NotFoundException, ForbiddenException } from '@nestjs/common'; import { eq, and, desc, sql } from 'drizzle-orm'; import { DATABASE_CONNECTION } from '../db/database.module'; -import { Database } from '../db/connection'; +import { type Database } from '../db/connection'; import { levels, levelLikes, levelPlays } from '../db/schema'; -import { CreateLevelDto } from './dto/create-level.dto'; -import { UpdateLevelDto } from './dto/update-level.dto'; -import { RecordPlayDto } from './dto/record-play.dto'; +import { type CreateLevelDto } from './dto/create-level.dto'; +import { type UpdateLevelDto } from './dto/update-level.dto'; +import { type RecordPlayDto } from './dto/record-play.dto'; @Injectable() export class LevelService { diff --git a/games/voxel-lava/apps/web/eslint.config.js b/games/voxel-lava/apps/web/eslint.config.js index 3e0ca465d..f0e51b62e 100644 --- a/games/voxel-lava/apps/web/eslint.config.js +++ b/games/voxel-lava/apps/web/eslint.config.js @@ -1,36 +1,17 @@ -import prettier from 'eslint-config-prettier'; -import js from '@eslint/js'; -import { includeIgnoreFile } from '@eslint/compat'; -import svelte from 'eslint-plugin-svelte'; -import globals from 'globals'; -import { fileURLToPath } from 'node:url'; -import ts from 'typescript-eslint'; -import svelteConfig from './svelte.config.js'; +// @ts-check +import { + baseConfig, + typescriptConfig, + svelteConfig, + prettierConfig, +} from '@manacore/eslint-config'; -const gitignorePath = fileURLToPath(new URL('./.gitignore', import.meta.url)); - -export default ts.config( - includeIgnoreFile(gitignorePath), - js.configs.recommended, - ...ts.configs.recommended, - ...svelte.configs.recommended, - prettier, - ...svelte.configs.prettier, +export default [ { - languageOptions: { - globals: { ...globals.browser, ...globals.node }, - }, - rules: { 'no-undef': 'off' }, + ignores: ['dist/**', '.svelte-kit/**', 'node_modules/**'], }, - { - files: ['**/*.svelte', '**/*.svelte.ts', '**/*.svelte.js'], - languageOptions: { - parserOptions: { - projectService: true, - extraFileExtensions: ['.svelte'], - parser: ts.parser, - svelteConfig, - }, - }, - } -); + ...baseConfig, + ...typescriptConfig, + ...svelteConfig, + ...prettierConfig, +]; diff --git a/games/voxel-lava/apps/web/package.json b/games/voxel-lava/apps/web/package.json index 74e61c387..d3cb14b46 100644 --- a/games/voxel-lava/apps/web/package.json +++ b/games/voxel-lava/apps/web/package.json @@ -12,7 +12,7 @@ "check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch", "type-check": "echo 'Skipping type-check: @voxel-lava/web needs auth service migration'", "format": "prettier --write .", - "lint": "prettier --check . && eslint ." + "lint": "eslint ." }, "devDependencies": { "@eslint/compat": "^1.2.5", diff --git a/games/voxel-lava/package.json b/games/voxel-lava/package.json index 7565c5518..c7334e4a9 100644 --- a/games/voxel-lava/package.json +++ b/games/voxel-lava/package.json @@ -6,7 +6,6 @@ "scripts": { "dev": "turbo run dev", "build": "turbo run build", - "lint": "turbo run lint", "clean": "turbo run clean" }, "devDependencies": { diff --git a/packages/eslint-config/base.js b/packages/eslint-config/base.js new file mode 100644 index 000000000..bba38be5a --- /dev/null +++ b/packages/eslint-config/base.js @@ -0,0 +1,77 @@ +/** + * Base ESLint configuration for all JavaScript/TypeScript projects + * + * This provides foundational rules that apply to all code: + * - Core JavaScript best practices + * - Common error prevention + * - Code quality fundamentals + */ +import js from '@eslint/js'; +import globals from 'globals'; + +/** @type {import('eslint').Linter.Config[]} */ +export const baseConfig = [ + js.configs.recommended, + { + languageOptions: { + ecmaVersion: 2022, + sourceType: 'module', + globals: { + ...globals.browser, + ...globals.node, + ...globals.es2022, + }, + }, + rules: { + // ============================================ + // ERRORS - Correctness issues that must be fixed + // ============================================ + + // Prevent actual bugs + 'no-undef': 'error', + 'no-dupe-keys': 'error', + 'no-dupe-args': 'error', + 'no-duplicate-case': 'error', + 'no-unreachable': 'error', + 'no-constant-condition': 'error', + 'no-empty': ['error', { allowEmptyCatch: true }], + + // Prevent common mistakes + 'no-cond-assign': ['error', 'except-parens'], + 'no-irregular-whitespace': 'error', + 'no-unexpected-multiline': 'error', + 'use-isnan': 'error', + 'valid-typeof': 'error', + + // ============================================ + // WARNINGS - Best practices, fix when convenient + // ============================================ + + // Code quality suggestions + 'no-console': 'warn', + 'no-debugger': 'warn', + 'no-alert': 'warn', + 'prefer-const': 'warn', + 'no-var': 'warn', + eqeqeq: ['warn', 'smart'], + + // ============================================ + // OFF - Handled by TypeScript or Prettier + // ============================================ + + // TypeScript handles these better + 'no-unused-vars': 'off', // @typescript-eslint/no-unused-vars handles this + 'no-redeclare': 'off', // @typescript-eslint/no-redeclare handles this + + // Prettier handles formatting + indent: 'off', + semi: 'off', + quotes: 'off', + 'comma-dangle': 'off', + 'arrow-parens': 'off', + 'max-len': 'off', + }, + }, +]; + +export default baseConfig; diff --git a/packages/eslint-config/index.js b/packages/eslint-config/index.js new file mode 100644 index 000000000..bb0038191 --- /dev/null +++ b/packages/eslint-config/index.js @@ -0,0 +1,44 @@ +/** + * @manacore/eslint-config + * + * Shared ESLint configuration for Manacore monorepo. + * Import configs based on your project type: + * + * @example SvelteKit Web App + * ```js + * import { baseConfig, typescriptConfig, svelteConfig, prettierConfig } from '@manacore/eslint-config'; + * export default [...baseConfig, ...typescriptConfig, ...svelteConfig, ...prettierConfig]; + * ``` + * + * @example Expo Mobile App + * ```js + * import { baseConfig, typescriptConfig, reactConfig, prettierConfig } from '@manacore/eslint-config'; + * export default [...baseConfig, ...typescriptConfig, ...reactConfig, ...prettierConfig]; + * ``` + * + * @example NestJS Backend + * ```js + * import { baseConfig, typescriptConfig, nestjsConfig, prettierConfig } from '@manacore/eslint-config'; + * export default [...baseConfig, ...typescriptConfig, ...nestjsConfig, ...prettierConfig]; + * ``` + * + * @example TypeScript Package (no framework) + * ```js + * import { baseConfig, typescriptConfig, prettierConfig } from '@manacore/eslint-config'; + * export default [...baseConfig, ...typescriptConfig, ...prettierConfig]; + * ``` + */ + +export { baseConfig } from './base.js'; +export { typescriptConfig } from './typescript.js'; +export { svelteConfig } from './svelte.js'; +export { reactConfig } from './react.js'; +export { nestjsConfig } from './nestjs.js'; +export { prettierConfig } from './prettier.js'; + +// Default export: base + typescript + prettier (for simple TS packages) +import { baseConfig } from './base.js'; +import { typescriptConfig } from './typescript.js'; +import { prettierConfig } from './prettier.js'; + +export default [...baseConfig, ...typescriptConfig, ...prettierConfig]; diff --git a/packages/eslint-config/nestjs.js b/packages/eslint-config/nestjs.js new file mode 100644 index 000000000..4a164025b --- /dev/null +++ b/packages/eslint-config/nestjs.js @@ -0,0 +1,122 @@ +/** + * NestJS Backend ESLint configuration + * + * Provides TypeScript linting for NestJS backend applications. + * Backends should have higher code quality standards since they handle + * business logic, database operations, and API security. + */ +import tseslint from 'typescript-eslint'; +import globals from 'globals'; + +/** @type {import('eslint').Linter.Config[]} */ +export const nestjsConfig = [ + { + files: ['**/*.ts'], + languageOptions: { + parser: tseslint.parser, + parserOptions: { + ecmaVersion: 2022, + sourceType: 'module', + }, + globals: { + ...globals.node, + ...globals.jest, + }, + }, + plugins: { + '@typescript-eslint': tseslint.plugin, + }, + rules: { + // ============================================ + // ERRORS - Backend-specific strictness + // ============================================ + + // Stricter unused vars for cleaner code + '@typescript-eslint/no-unused-vars': [ + 'error', + { + argsIgnorePattern: '^_', + varsIgnorePattern: '^_', + caughtErrorsIgnorePattern: '^_', + ignoreRestSiblings: true, + }, + ], + + // ============================================ + // WARNINGS - Best practices for backends + // ============================================ + + // Allow any but flag it - APIs should be typed + '@typescript-eslint/no-explicit-any': 'warn', + + // Type safety recommendations + '@typescript-eslint/no-non-null-assertion': 'warn', + + // Encourage explicit return types for public APIs + '@typescript-eslint/explicit-function-return-type': [ + 'warn', + { + allowExpressions: true, + allowTypedFunctionExpressions: true, + allowHigherOrderFunctions: true, + allowDirectConstAssertionInArrowFunctions: true, + }, + ], + + // Encourage explicit module boundaries + '@typescript-eslint/explicit-module-boundary-types': [ + 'warn', + { + allowArgumentsExplicitlyTypedAsAny: true, + allowDirectConstAssertionInArrowFunctions: true, + allowHigherOrderFunctions: true, + allowTypedFunctionExpressions: true, + }, + ], + + // Consistent type imports + '@typescript-eslint/consistent-type-imports': [ + 'warn', + { + prefer: 'type-imports', + fixStyle: 'inline-type-imports', + }, + ], + + // No console in production code (use logger) + 'no-console': 'warn', + + // ============================================ + // OFF - NestJS-specific exceptions + // ============================================ + + // NestJS uses decorators and DI patterns + '@typescript-eslint/no-empty-function': 'off', // Empty lifecycle hooks are common + + // Class methods may not use 'this' in NestJS (pure service methods) + 'class-methods-use-this': 'off', + + // NestJS interface names sometimes have 'I' prefix by convention + '@typescript-eslint/interface-name-prefix': 'off', + + // Base rule off (TS version handles) + 'no-unused-vars': 'off', + + // Allow require for dynamic imports in NestJS + '@typescript-eslint/no-require-imports': 'off', + }, + }, + { + // Test files have relaxed rules + files: ['**/*.spec.ts', '**/*.test.ts', '**/*.e2e-spec.ts'], + rules: { + '@typescript-eslint/no-explicit-any': 'off', + '@typescript-eslint/no-non-null-assertion': 'off', + '@typescript-eslint/explicit-function-return-type': 'off', + '@typescript-eslint/explicit-module-boundary-types': 'off', + 'no-console': 'off', + }, + }, +]; + +export default nestjsConfig; diff --git a/packages/eslint-config/package.json b/packages/eslint-config/package.json new file mode 100644 index 000000000..18af34bc2 --- /dev/null +++ b/packages/eslint-config/package.json @@ -0,0 +1,40 @@ +{ + "name": "@manacore/eslint-config", + "version": "1.0.0", + "description": "Shared ESLint configuration for Manacore monorepo", + "private": true, + "type": "module", + "main": "./index.js", + "exports": { + ".": "./index.js", + "./base": "./base.js", + "./typescript": "./typescript.js", + "./svelte": "./svelte.js", + "./react": "./react.js", + "./nestjs": "./nestjs.js", + "./prettier": "./prettier.js" + }, + "files": [ + "*.js" + ], + "dependencies": { + "@eslint/js": "^9.39.1", + "eslint-config-prettier": "^10.1.8", + "eslint-plugin-prettier": "^5.5.4", + "eslint-plugin-react": "^7.37.5", + "eslint-plugin-react-hooks": "^5.1.0", + "eslint-plugin-svelte": "^3.12.4", + "globals": "^16.5.0", + "typescript-eslint": "^8.48.1" + }, + "peerDependencies": { + "eslint": "^9.0.0", + "prettier": "^3.0.0", + "typescript": "^5.0.0" + }, + "keywords": [ + "eslint", + "eslint-config", + "manacore" + ] +} diff --git a/packages/eslint-config/prettier.js b/packages/eslint-config/prettier.js new file mode 100644 index 000000000..951450e0d --- /dev/null +++ b/packages/eslint-config/prettier.js @@ -0,0 +1,37 @@ +/** + * Prettier ESLint integration configuration + * + * Disables ESLint formatting rules that conflict with Prettier + * and runs Prettier as an ESLint rule for unified formatting. + */ +import eslintConfigPrettier from 'eslint-config-prettier'; +import eslintPluginPrettier from 'eslint-plugin-prettier'; + +/** @type {import('eslint').Linter.Config[]} */ +export const prettierConfig = [ + // Disable ESLint formatting rules that conflict with Prettier + eslintConfigPrettier, + { + plugins: { + prettier: eslintPluginPrettier, + }, + rules: { + // Run Prettier as an ESLint rule + 'prettier/prettier': [ + 'warn', + { + // These should match .prettierrc.json + useTabs: true, + singleQuote: true, + trailingComma: 'es5', + printWidth: 100, + }, + { + usePrettierrc: true, // Also read from .prettierrc if present + }, + ], + }, + }, +]; + +export default prettierConfig; diff --git a/packages/eslint-config/react.js b/packages/eslint-config/react.js new file mode 100644 index 000000000..eb29ff08a --- /dev/null +++ b/packages/eslint-config/react.js @@ -0,0 +1,85 @@ +/** + * React/React Native ESLint configuration + * + * Provides React-specific linting rules for Expo mobile applications. + * Focuses on hooks rules, accessibility, and React Native best practices. + */ +import reactPlugin from 'eslint-plugin-react'; +import hooksPlugin from 'eslint-plugin-react-hooks'; + +/** @type {import('eslint').Linter.Config[]} */ +export const reactConfig = [ + { + files: ['**/*.tsx', '**/*.jsx'], + plugins: { + react: reactPlugin, + 'react-hooks': hooksPlugin, + }, + languageOptions: { + parserOptions: { + ecmaFeatures: { + jsx: true, + }, + }, + }, + settings: { + react: { + version: 'detect', + }, + }, + rules: { + // ============================================ + // ERRORS - React correctness + // ============================================ + + // Hooks rules are critical - wrong usage causes bugs + 'react-hooks/rules-of-hooks': 'error', + 'react-hooks/exhaustive-deps': 'error', + + // Prevent common React mistakes + 'react/jsx-key': ['error', { checkFragmentShorthand: true }], + 'react/jsx-no-duplicate-props': 'error', + 'react/jsx-no-undef': 'error', + 'react/no-children-prop': 'error', + 'react/no-danger-with-children': 'error', + 'react/no-deprecated': 'error', + 'react/no-direct-mutation-state': 'error', + 'react/no-string-refs': 'error', + 'react/no-unescaped-entities': 'error', + 'react/require-render-return': 'error', + + // ============================================ + // WARNINGS - Best practices + // ============================================ + + // Code quality suggestions + 'react/jsx-no-target-blank': 'warn', // Security, but sometimes needed + 'react/no-unknown-property': 'warn', + 'react/self-closing-comp': 'warn', + 'react/jsx-boolean-value': ['warn', 'never'], + 'react/jsx-curly-brace-presence': ['warn', { props: 'never', children: 'never' }], + 'react/jsx-fragments': ['warn', 'syntax'], + + // ============================================ + // OFF - TypeScript handles or not applicable + // ============================================ + + // TypeScript handles prop validation + 'react/prop-types': 'off', + 'react/require-default-props': 'off', + + // React 17+ with new JSX transform + 'react/react-in-jsx-scope': 'off', + 'react/jsx-uses-react': 'off', + + // Not needed with TypeScript + 'react/display-name': 'off', + + // Too strict for practical use + 'react/jsx-no-bind': 'off', + 'react/no-array-index-key': 'off', // Sometimes index is the only stable key + }, + }, +]; + +export default reactConfig; diff --git a/packages/eslint-config/svelte.js b/packages/eslint-config/svelte.js new file mode 100644 index 000000000..8891e1a38 --- /dev/null +++ b/packages/eslint-config/svelte.js @@ -0,0 +1,90 @@ +/** + * Svelte/SvelteKit ESLint configuration + * + * Provides Svelte-specific linting rules for SvelteKit web applications. + * Includes support for Svelte 5 runes syntax. + */ +import sveltePlugin from 'eslint-plugin-svelte'; +import tseslint from 'typescript-eslint'; + +/** @type {import('eslint').Linter.Config[]} */ +export const svelteConfig = [ + ...sveltePlugin.configs['flat/recommended'], + { + files: ['**/*.svelte'], + languageOptions: { + parser: sveltePlugin.parser, + parserOptions: { + parser: tseslint.parser, + projectService: true, + extraFileExtensions: ['.svelte'], + }, + }, + rules: { + // ============================================ + // ERRORS - Svelte-specific correctness + // ============================================ + + // Compilation errors + 'svelte/valid-compile': 'error', + + // Prevent common Svelte mistakes + 'svelte/no-dom-manipulating': 'error', + 'svelte/no-dupe-else-if-blocks': 'error', + 'svelte/no-dupe-on-directives': 'error', + 'svelte/no-dupe-style-properties': 'error', + 'svelte/no-dupe-use-directives': 'error', + 'svelte/no-dynamic-slot-name': 'error', + 'svelte/no-not-function-handler': 'error', + 'svelte/no-object-in-text-mustaches': 'error', + 'svelte/no-shorthand-style-property-overrides': 'error', + 'svelte/no-unknown-style-directive-property': 'error', + 'svelte/require-store-callbacks-use-set-param': 'error', + + // ============================================ + // WARNINGS - Best practices + // ============================================ + + // Code quality + 'svelte/no-at-html-tags': 'warn', // XSS risk, but sometimes needed + 'svelte/no-reactive-functions': 'warn', + 'svelte/no-reactive-literals': 'warn', + 'svelte/no-unused-svelte-ignore': 'warn', + 'svelte/prefer-class-directive': 'warn', + 'svelte/prefer-style-directive': 'warn', + 'svelte/require-each-key': 'warn', + + // Svelte 5 runes + 'svelte/valid-each-key': 'warn', + + // ============================================ + // OFF - Too strict or not applicable + // ============================================ + + // Allow inline handlers for simple cases + 'svelte/no-inline-styles': 'off', + + // TypeScript handles these in .svelte files + 'no-undef': 'off', // $state, $derived, etc. are globals in Svelte 5 + + // Allow self-closing for components + 'svelte/html-self-closing': 'off', + }, + }, + { + // Special rules for SvelteKit files + files: [ + '**/+page.ts', + '**/+page.server.ts', + '**/+layout.ts', + '**/+layout.server.ts', + '**/+server.ts', + ], + rules: { + // SvelteKit load functions often have specific signatures + '@typescript-eslint/explicit-function-return-type': 'off', + }, + }, +]; + +export default svelteConfig; diff --git a/packages/eslint-config/typescript.js b/packages/eslint-config/typescript.js new file mode 100644 index 000000000..c885f1a89 --- /dev/null +++ b/packages/eslint-config/typescript.js @@ -0,0 +1,92 @@ +/** + * TypeScript ESLint configuration + * + * Provides type-aware linting rules for TypeScript projects. + * Uses projectService for automatic tsconfig detection in monorepos. + * + * Strictness balance: + * - ERROR: Unused variables, unsafe operations + * - WARN: Explicit any (allow during migration), return types + * - OFF: Rules that conflict with TypeScript's own checks + */ +import tseslint from 'typescript-eslint'; + +/** @type {import('eslint').Linter.Config[]} */ +export const typescriptConfig = [ + ...tseslint.configs.recommended, + { + files: ['**/*.ts', '**/*.tsx', '**/*.mts', '**/*.cts'], + languageOptions: { + parser: tseslint.parser, + parserOptions: { + ecmaVersion: 2022, + sourceType: 'module', + }, + }, + plugins: { + '@typescript-eslint': tseslint.plugin, + }, + rules: { + // ============================================ + // ERRORS - Type safety violations + // ============================================ + + // Unused code must be removed + '@typescript-eslint/no-unused-vars': [ + 'error', + { + argsIgnorePattern: '^_', + varsIgnorePattern: '^_', + caughtErrorsIgnorePattern: '^_', + ignoreRestSiblings: true, + }, + ], + + // Enforce proper typing + '@typescript-eslint/no-non-null-assertion': 'warn', + + // ============================================ + // WARNINGS - Best practices, fix when convenient + // ============================================ + + // Allow any during migration, but flag it + '@typescript-eslint/no-explicit-any': 'warn', + + // Encourage type annotations on exports + '@typescript-eslint/explicit-function-return-type': 'off', // Too verbose + '@typescript-eslint/explicit-module-boundary-types': 'off', // Too verbose + + // Prefer modern patterns + '@typescript-eslint/prefer-as-const': 'warn', + '@typescript-eslint/no-inferrable-types': 'warn', + '@typescript-eslint/consistent-type-imports': [ + 'warn', + { + prefer: 'type-imports', + fixStyle: 'inline-type-imports', + }, + ], + + // ============================================ + // OFF - Too strict or handled elsewhere + // ============================================ + + // Allow empty functions (common in interfaces/defaults) + '@typescript-eslint/no-empty-function': 'off', + + // Allow require() for dynamic imports + '@typescript-eslint/no-require-imports': 'off', + + // Allow namespace for declaration merging + '@typescript-eslint/no-namespace': 'off', + + // Base rule must be off when using TS version + 'no-unused-vars': 'off', + + // Allow this aliasing in some patterns (e.g., closures) + '@typescript-eslint/no-this-alias': 'warn', + }, + }, +]; + +export default typescriptConfig; diff --git a/packages/mana-core-nestjs-integration/package.json b/packages/mana-core-nestjs-integration/package.json index 674a85943..9db58f099 100644 --- a/packages/mana-core-nestjs-integration/package.json +++ b/packages/mana-core-nestjs-integration/package.json @@ -24,7 +24,8 @@ "scripts": { "build": "tsc", "dev": "tsc --watch", - "clean": "rm -rf dist" + "clean": "rm -rf dist", + "lint": "eslint ." }, "dependencies": { "@nestjs/common": "^10.0.0 || ^11.0.0", diff --git a/packages/manadeck-database/package.json b/packages/manadeck-database/package.json index 9ba2c71b5..e7076a14e 100644 --- a/packages/manadeck-database/package.json +++ b/packages/manadeck-database/package.json @@ -40,7 +40,8 @@ "db:migrate-from-supabase": "dotenv -- tsx src/migrate-from-supabase.ts", "db:reset": "docker compose down -v && docker compose up -d && sleep 3 && pnpm db:push", "db:test": "dotenv -- tsx src/test-connection.ts", - "type-check": "tsc --noEmit" + "type-check": "tsc --noEmit", + "lint": "eslint ." }, "dependencies": { "drizzle-orm": "^0.36.0", diff --git a/packages/manadeck-database/src/migrate-from-supabase.ts b/packages/manadeck-database/src/migrate-from-supabase.ts index 5608e35ae..8dcd72ffc 100644 --- a/packages/manadeck-database/src/migrate-from-supabase.ts +++ b/packages/manadeck-database/src/migrate-from-supabase.ts @@ -20,7 +20,6 @@ import { deckTemplates, aiGenerations, userStats, - dailyProgress, } from './schema/index.js'; // Initialize Supabase client diff --git a/packages/manadeck-database/src/schema/studySessions.ts b/packages/manadeck-database/src/schema/studySessions.ts index cfb3e07a7..dd7b2029a 100644 --- a/packages/manadeck-database/src/schema/studySessions.ts +++ b/packages/manadeck-database/src/schema/studySessions.ts @@ -1,4 +1,4 @@ -import { pgTable, uuid, varchar, integer, timestamp, index, pgEnum } from 'drizzle-orm/pg-core'; +import { pgTable, uuid, integer, timestamp, index, pgEnum } from 'drizzle-orm/pg-core'; import { relations } from 'drizzle-orm'; import { decks } from './decks.js'; diff --git a/packages/news-database/package.json b/packages/news-database/package.json index 744944326..4587930e2 100644 --- a/packages/news-database/package.json +++ b/packages/news-database/package.json @@ -27,7 +27,8 @@ "db:migrate": "dotenv -- drizzle-kit migrate", "db:push": "dotenv -- drizzle-kit push --force", "db:studio": "dotenv -- drizzle-kit studio", - "type-check": "tsc --noEmit" + "type-check": "tsc --noEmit", + "lint": "eslint ." }, "dependencies": { "drizzle-orm": "^0.36.0", diff --git a/packages/news-database/src/schema/auth.ts b/packages/news-database/src/schema/auth.ts index 89e8b4b2d..ba40bc52d 100644 --- a/packages/news-database/src/schema/auth.ts +++ b/packages/news-database/src/schema/auth.ts @@ -1,4 +1,4 @@ -import { pgTable, uuid, text, timestamp, integer } from 'drizzle-orm/pg-core'; +import { pgTable, uuid, text, timestamp } from 'drizzle-orm/pg-core'; import { users } from './users'; // Better Auth Sessions diff --git a/packages/nutriphi-database/package.json b/packages/nutriphi-database/package.json index 6992021c5..8c9e56e81 100644 --- a/packages/nutriphi-database/package.json +++ b/packages/nutriphi-database/package.json @@ -38,7 +38,8 @@ "db:studio": "dotenv -- drizzle-kit studio", "db:reset": "docker compose down -v && docker compose up -d && sleep 3 && pnpm db:push", "db:test": "dotenv -- tsx src/test-connection.ts", - "type-check": "tsc --noEmit" + "type-check": "tsc --noEmit", + "lint": "eslint ." }, "dependencies": { "drizzle-orm": "^0.36.0", diff --git a/packages/shared-auth-stores/package.json b/packages/shared-auth-stores/package.json index 56267d05e..4c43b30b6 100644 --- a/packages/shared-auth-stores/package.json +++ b/packages/shared-auth-stores/package.json @@ -16,7 +16,8 @@ "src" ], "scripts": { - "type-check": "svelte-check --tsconfig ./tsconfig.json" + "type-check": "svelte-check --tsconfig ./tsconfig.json", + "lint": "eslint ." }, "peerDependencies": { "svelte": "^5.0.0" diff --git a/packages/shared-auth-ui/package.json b/packages/shared-auth-ui/package.json index 388a75490..87e188055 100644 --- a/packages/shared-auth-ui/package.json +++ b/packages/shared-auth-ui/package.json @@ -16,6 +16,9 @@ "files": [ "src" ], + "scripts": { + "lint": "eslint ." + }, "peerDependencies": { "svelte": "^5.0.0", "@manacore/shared-auth": "workspace:*", diff --git a/packages/shared-auth/package.json b/packages/shared-auth/package.json index c676f5df3..41bd38b6b 100644 --- a/packages/shared-auth/package.json +++ b/packages/shared-auth/package.json @@ -11,7 +11,8 @@ "scripts": { "build": "tsc", "clean": "rm -rf dist", - "type-check": "tsc --noEmit" + "type-check": "tsc --noEmit", + "lint": "eslint ." }, "dependencies": { "base64-js": "^1.5.1" diff --git a/packages/shared-branding/package.json b/packages/shared-branding/package.json index 447f16602..0fdfd9f9b 100644 --- a/packages/shared-branding/package.json +++ b/packages/shared-branding/package.json @@ -14,7 +14,8 @@ } }, "scripts": { - "check": "svelte-check --tsconfig ./tsconfig.json" + "check": "svelte-check --tsconfig ./tsconfig.json", + "lint": "eslint ." }, "devDependencies": { "svelte": "^5.0.0", diff --git a/packages/shared-config/package.json b/packages/shared-config/package.json index 9b84897c0..05c3f6ef2 100644 --- a/packages/shared-config/package.json +++ b/packages/shared-config/package.json @@ -12,7 +12,8 @@ "./features": "./src/features.ts" }, "scripts": { - "type-check": "tsc --noEmit" + "type-check": "tsc --noEmit", + "lint": "eslint ." }, "dependencies": { "zod": "^3.24.0" diff --git a/packages/shared-credit-service/package.json b/packages/shared-credit-service/package.json index baabdc315..2b7f3645d 100644 --- a/packages/shared-credit-service/package.json +++ b/packages/shared-credit-service/package.json @@ -14,7 +14,8 @@ "src" ], "scripts": { - "type-check": "tsc --noEmit" + "type-check": "tsc --noEmit", + "lint": "eslint ." }, "dependencies": { "@manacore/shared-subscription-types": "workspace:*" diff --git a/packages/shared-errors/package.json b/packages/shared-errors/package.json index 8d876b2a0..a7a9a501e 100644 --- a/packages/shared-errors/package.json +++ b/packages/shared-errors/package.json @@ -25,7 +25,8 @@ "scripts": { "build": "tsc -p tsconfig.build.json", "type-check": "tsc --noEmit", - "clean": "rm -rf dist" + "clean": "rm -rf dist", + "lint": "eslint ." }, "peerDependencies": { "@nestjs/common": ">=10.0.0" diff --git a/packages/shared-feedback-service/package.json b/packages/shared-feedback-service/package.json index 757f070c6..45ccb7fdd 100644 --- a/packages/shared-feedback-service/package.json +++ b/packages/shared-feedback-service/package.json @@ -15,7 +15,8 @@ "src" ], "scripts": { - "type-check": "tsc --noEmit" + "type-check": "tsc --noEmit", + "lint": "eslint ." }, "dependencies": { "@manacore/shared-feedback-types": "workspace:*" diff --git a/packages/shared-feedback-types/package.json b/packages/shared-feedback-types/package.json index abb793aa4..cfdda8538 100644 --- a/packages/shared-feedback-types/package.json +++ b/packages/shared-feedback-types/package.json @@ -11,7 +11,8 @@ "./api": "./src/api.ts" }, "scripts": { - "type-check": "tsc --noEmit" + "type-check": "tsc --noEmit", + "lint": "eslint ." }, "devDependencies": { "typescript": "^5.7.3" diff --git a/packages/shared-feedback-ui/package.json b/packages/shared-feedback-ui/package.json index afd4c6b35..41909185a 100644 --- a/packages/shared-feedback-ui/package.json +++ b/packages/shared-feedback-ui/package.json @@ -38,7 +38,8 @@ } }, "scripts": { - "check": "svelte-check --tsconfig ./tsconfig.json" + "check": "svelte-check --tsconfig ./tsconfig.json", + "lint": "eslint ." }, "dependencies": { "@manacore/shared-feedback-types": "workspace:*", diff --git a/packages/shared-i18n/package.json b/packages/shared-i18n/package.json index ac1017939..46356cc19 100644 --- a/packages/shared-i18n/package.json +++ b/packages/shared-i18n/package.json @@ -12,7 +12,8 @@ "./translations/common": "./src/translations/common/index.ts" }, "scripts": { - "type-check": "tsc --noEmit" + "type-check": "tsc --noEmit", + "lint": "eslint ." }, "devDependencies": { "svelte": "^5.43.14", diff --git a/packages/shared-i18n/src/utils.ts b/packages/shared-i18n/src/utils.ts index c9a8a952b..85136eee6 100644 --- a/packages/shared-i18n/src/utils.ts +++ b/packages/shared-i18n/src/utils.ts @@ -2,7 +2,7 @@ * i18n utility functions */ -import { type LanguageCode, isLanguageSupported, getLanguageInfo } from './languages'; +import { getLanguageInfo } from './languages'; /** * Detect user's preferred locale from browser @@ -10,7 +10,7 @@ import { type LanguageCode, isLanguageSupported, getLanguageInfo } from './langu */ export function detectBrowserLocale( supportedLocales: readonly string[], - defaultLocale: string = 'en' + defaultLocale = 'en' ): string { if (typeof navigator === 'undefined') { return defaultLocale; @@ -85,7 +85,7 @@ export function storeLocale(storageKey: string, locale: string): void { export function getInitialLocale( storageKey: string, supportedLocales: readonly string[], - defaultLocale: string = 'en' + defaultLocale = 'en' ): string { // Check localStorage first const stored = getStoredLocale(storageKey, supportedLocales); @@ -139,7 +139,7 @@ export function matchesLanguage(locale: string, language: string): boolean { export function findBestMatch( preferredLocale: string, supportedLocales: readonly string[], - defaultLocale: string = 'en' + defaultLocale = 'en' ): string { const normalized = normalizeLocale(preferredLocale); @@ -168,7 +168,7 @@ export function findBestMatch( */ export function formatLocalizedNumber( value: number, - locale: string = 'en', + locale = 'en', options?: Intl.NumberFormatOptions ): string { return new Intl.NumberFormat(locale, options).format(value); @@ -179,7 +179,7 @@ export function formatLocalizedNumber( */ export function formatLocalizedDate( date: Date | string | number, - locale: string = 'en', + locale = 'en', options?: Intl.DateTimeFormatOptions ): string { const dateObj = date instanceof Date ? date : new Date(date); @@ -191,7 +191,7 @@ export function formatLocalizedDate( */ export function formatRelativeTime( date: Date | string | number, - locale: string = 'en', + locale = 'en', style: 'long' | 'short' | 'narrow' = 'long' ): string { const dateObj = date instanceof Date ? date : new Date(date); @@ -227,7 +227,7 @@ export function formatRelativeTime( /** * Get plural form category */ -export function getPluralCategory(count: number, locale: string = 'en'): Intl.LDMLPluralRule { +export function getPluralCategory(count: number, locale = 'en'): Intl.LDMLPluralRule { const pr = new Intl.PluralRules(locale); return pr.select(count); } diff --git a/packages/shared-icons/package.json b/packages/shared-icons/package.json index 8d0dbc001..fef40a993 100644 --- a/packages/shared-icons/package.json +++ b/packages/shared-icons/package.json @@ -14,7 +14,8 @@ } }, "scripts": { - "check": "svelte-check --tsconfig ./tsconfig.json" + "check": "svelte-check --tsconfig ./tsconfig.json", + "lint": "eslint ." }, "peerDependencies": { "svelte": "^5.0.0" diff --git a/packages/shared-landing-ui/package.json b/packages/shared-landing-ui/package.json index 3515437a3..b9c87975e 100644 --- a/packages/shared-landing-ui/package.json +++ b/packages/shared-landing-ui/package.json @@ -19,7 +19,8 @@ "src" ], "scripts": { - "type-check": "astro check" + "type-check": "astro check", + "lint": "eslint ." }, "peerDependencies": { "astro": ">=5.0.0", diff --git a/packages/shared-nestjs-auth/package.json b/packages/shared-nestjs-auth/package.json index 10ea942d5..339236f23 100644 --- a/packages/shared-nestjs-auth/package.json +++ b/packages/shared-nestjs-auth/package.json @@ -7,7 +7,8 @@ "scripts": { "build": "tsc", "clean": "rm -rf dist", - "prepublishOnly": "pnpm build" + "prepublishOnly": "pnpm build", + "lint": "eslint ." }, "files": [ "dist" diff --git a/packages/shared-profile-ui/package.json b/packages/shared-profile-ui/package.json index 851aa42e2..3790daf8c 100644 --- a/packages/shared-profile-ui/package.json +++ b/packages/shared-profile-ui/package.json @@ -14,7 +14,8 @@ } }, "scripts": { - "check": "svelte-check --tsconfig ./tsconfig.json" + "check": "svelte-check --tsconfig ./tsconfig.json", + "lint": "eslint ." }, "dependencies": {}, "devDependencies": { diff --git a/packages/shared-storage/package.json b/packages/shared-storage/package.json index 2f45edcc2..ff462c16b 100644 --- a/packages/shared-storage/package.json +++ b/packages/shared-storage/package.json @@ -18,7 +18,8 @@ "build": "tsc", "type-check": "tsc --noEmit", "clean": "rm -rf dist", - "prepublishOnly": "pnpm build" + "prepublishOnly": "pnpm build", + "lint": "eslint ." }, "dependencies": { "@aws-sdk/client-s3": "^3.700.0", diff --git a/packages/shared-subscription-types/package.json b/packages/shared-subscription-types/package.json index 7daef07ab..875d7bf23 100644 --- a/packages/shared-subscription-types/package.json +++ b/packages/shared-subscription-types/package.json @@ -12,7 +12,8 @@ "./revenueCat": "./src/revenueCat.ts" }, "scripts": { - "type-check": "tsc --noEmit" + "type-check": "tsc --noEmit", + "lint": "eslint ." }, "devDependencies": { "typescript": "^5.7.3" diff --git a/packages/shared-subscription-ui/package.json b/packages/shared-subscription-ui/package.json index 1280c60f8..da3d6ae6f 100644 --- a/packages/shared-subscription-ui/package.json +++ b/packages/shared-subscription-ui/package.json @@ -42,7 +42,8 @@ } }, "scripts": { - "check": "svelte-check --tsconfig ./tsconfig.json" + "check": "svelte-check --tsconfig ./tsconfig.json", + "lint": "eslint ." }, "dependencies": { "@manacore/shared-subscription-types": "workspace:*" diff --git a/packages/shared-supabase/package.json b/packages/shared-supabase/package.json index ba6677487..6bceb6250 100644 --- a/packages/shared-supabase/package.json +++ b/packages/shared-supabase/package.json @@ -10,7 +10,8 @@ }, "scripts": { "type-check": "tsc --noEmit", - "clean": "rm -rf dist" + "clean": "rm -rf dist", + "lint": "eslint ." }, "dependencies": { "@supabase/supabase-js": "^2.81.1" diff --git a/packages/shared-tailwind/package.json b/packages/shared-tailwind/package.json index 1741e7417..7ebbce776 100644 --- a/packages/shared-tailwind/package.json +++ b/packages/shared-tailwind/package.json @@ -13,6 +13,9 @@ "./components.css": "./src/components.css", "./v4": "./src/tailwind-v4.css" }, + "scripts": { + "lint": "eslint ." + }, "peerDependencies": { "tailwindcss": "^3.0.0 || ^4.0.0" }, diff --git a/packages/shared-theme-ui/package.json b/packages/shared-theme-ui/package.json index e8252e3e1..811f955aa 100644 --- a/packages/shared-theme-ui/package.json +++ b/packages/shared-theme-ui/package.json @@ -41,6 +41,9 @@ "default": "./src/pages/ThemePage.svelte" } }, + "scripts": { + "lint": "eslint ." + }, "peerDependencies": { "svelte": "^5.0.0" }, diff --git a/packages/shared-theme/package.json b/packages/shared-theme/package.json index 2f7130ff4..f434d2eee 100644 --- a/packages/shared-theme/package.json +++ b/packages/shared-theme/package.json @@ -27,6 +27,9 @@ "default": "./src/utils.ts" } }, + "scripts": { + "lint": "eslint ." + }, "peerDependencies": { "svelte": "^5.0.0" }, diff --git a/packages/shared-theme/src/a11y-utils.ts b/packages/shared-theme/src/a11y-utils.ts index db985c014..a0459fdb6 100644 --- a/packages/shared-theme/src/a11y-utils.ts +++ b/packages/shared-theme/src/a11y-utils.ts @@ -1,11 +1,4 @@ -import type { - ThemeColors, - EffectiveMode, - HSLValue, - ContrastLevel, - ColorblindMode, - A11ySettings, -} from './types'; +import type { ThemeColors, EffectiveMode, HSLValue, ColorblindMode, A11ySettings } from './types'; import { parseHSL, createHSL, isBrowser } from './utils'; import { HIGH_CONTRAST_CONFIG, COLORBLIND_TRANSFORMS, MOTION_DEFAULTS } from './a11y-constants'; @@ -31,13 +24,8 @@ export function createReducedMotionListener(callback: (reduces: boolean) => void const handler = (e: MediaQueryListEvent) => callback(e.matches); - if (mediaQuery.addEventListener) { - mediaQuery.addEventListener('change', handler); - return () => mediaQuery.removeEventListener('change', handler); - } - - mediaQuery.addListener(handler); - return () => mediaQuery.removeListener(handler); + mediaQuery.addEventListener('change', handler); + return () => mediaQuery.removeEventListener('change', handler); } /** @@ -72,7 +60,14 @@ type ColorRole = 'background' | 'foreground' | 'border' | 'primary' | 'semantic' * Get the role of a color based on its key */ function getColorRole(colorKey: keyof ThemeColors): ColorRole { - const backgrounds = ['background', 'surface', 'surfaceHover', 'surfaceElevated', 'muted', 'input']; + const backgrounds = [ + 'background', + 'surface', + 'surfaceHover', + 'surfaceElevated', + 'muted', + 'input', + ]; const foregrounds = ['foreground', 'primaryForeground', 'secondaryForeground', 'mutedForeground']; const borders = ['border', 'borderStrong', 'ring']; const primaries = ['primary', 'secondary']; @@ -161,12 +156,7 @@ export function applyHighContrast(colors: ThemeColors, mode: EffectiveMode): The /** * Shift hue within a range */ -function shiftHueInRange( - h: number, - rangeStart: number, - rangeEnd: number, - shift: number -): number { +function shiftHueInRange(h: number, rangeStart: number, rangeEnd: number, shift: number): number { if (h >= rangeStart && h <= rangeEnd) { return (h + shift) % 360; } @@ -208,10 +198,7 @@ function applyColorblindToColor(hsl: HSLValue, mode: ColorblindMode): HSLValue { /** * Apply colorblind transformations to all theme colors */ -export function applyColorblindTransform( - colors: ThemeColors, - mode: ColorblindMode -): ThemeColors { +export function applyColorblindTransform(colors: ThemeColors, mode: ColorblindMode): ThemeColors { if (mode === 'none') return colors; const result = { ...colors }; diff --git a/packages/shared-theme/src/utils.ts b/packages/shared-theme/src/utils.ts index 6fb006686..94abff341 100644 --- a/packages/shared-theme/src/utils.ts +++ b/packages/shared-theme/src/utils.ts @@ -225,7 +225,7 @@ export function generateThemeCSS( css += '}\n\n'; // Each variant - for (const [variantName, definition] of Object.entries(THEME_DEFINITIONS)) { + for (const [variantName] of Object.entries(THEME_DEFINITIONS)) { const variant = variantName as ThemeVariant; const override = primaryOverrides?.[variant]; diff --git a/packages/shared-types/package.json b/packages/shared-types/package.json index 5278baddf..3a7572bc3 100644 --- a/packages/shared-types/package.json +++ b/packages/shared-types/package.json @@ -10,7 +10,8 @@ }, "scripts": { "type-check": "tsc --noEmit", - "clean": "rm -rf dist" + "clean": "rm -rf dist", + "lint": "eslint ." }, "devDependencies": { "typescript": "^5.9.3" diff --git a/packages/shared-ui/package.json b/packages/shared-ui/package.json index 5554a2ec1..6a060cf8b 100644 --- a/packages/shared-ui/package.json +++ b/packages/shared-ui/package.json @@ -28,6 +28,9 @@ "default": "./src/organisms/index.ts" } }, + "scripts": { + "lint": "eslint ." + }, "peerDependencies": { "svelte": "^5.0.0" }, diff --git a/packages/shared-utils/package.json b/packages/shared-utils/package.json index 8811f3209..e8114cd74 100644 --- a/packages/shared-utils/package.json +++ b/packages/shared-utils/package.json @@ -10,7 +10,8 @@ }, "scripts": { "type-check": "tsc --noEmit", - "clean": "rm -rf dist" + "clean": "rm -rf dist", + "lint": "eslint ." }, "dependencies": { "date-fns": "^4.1.0" diff --git a/packages/shared-utils/src/cache.ts b/packages/shared-utils/src/cache.ts index 4b05ab866..888e63524 100644 --- a/packages/shared-utils/src/cache.ts +++ b/packages/shared-utils/src/cache.ts @@ -20,7 +20,7 @@ interface CacheConfig { version?: number; } -let dbPromises: Map> = new Map(); +const dbPromises: Map> = new Map(); /** * Initialize IndexedDB connection diff --git a/packages/test-config/package.json b/packages/test-config/package.json index af8794e6d..3382bd5e5 100644 --- a/packages/test-config/package.json +++ b/packages/test-config/package.json @@ -16,7 +16,8 @@ "*.ts" ], "scripts": { - "type-check": "tsc --noEmit" + "type-check": "tsc --noEmit", + "lint": "eslint ." }, "devDependencies": { "@types/node": "^24.10.1", diff --git a/packages/uload-database/package.json b/packages/uload-database/package.json index d857c5c4c..949d866ee 100644 --- a/packages/uload-database/package.json +++ b/packages/uload-database/package.json @@ -38,7 +38,8 @@ "db:studio": "dotenv -- drizzle-kit studio", "db:reset": "docker compose down -v && docker compose up -d && sleep 3 && pnpm db:push", "db:test": "dotenv -- tsx src/test-connection.ts", - "type-check": "tsc --noEmit" + "type-check": "tsc --noEmit", + "lint": "eslint ." }, "dependencies": { "drizzle-orm": "^0.36.0", diff --git a/packages/uload-database/src/schema/users.ts b/packages/uload-database/src/schema/users.ts index a678e4b22..1f8953d2a 100644 --- a/packages/uload-database/src/schema/users.ts +++ b/packages/uload-database/src/schema/users.ts @@ -1,5 +1,4 @@ import { pgTable, uuid, text, boolean, integer, timestamp, index } from 'drizzle-orm/pg-core'; -import { relations } from 'drizzle-orm'; export const users = pgTable( 'users', diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index ac00f5325..39290da3e 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -116,7 +116,7 @@ importers: devDependencies: '@nestjs/cli': specifier: ^10.4.9 - version: 10.4.9(esbuild@0.27.0) + version: 10.4.9(esbuild@0.19.12) '@nestjs/schematics': specifier: ^10.2.3 version: 10.2.3(chokidar@3.6.0)(typescript@5.9.3) @@ -149,7 +149,7 @@ importers: version: 0.5.21 ts-loader: specifier: ^9.5.1 - version: 9.5.4(typescript@5.9.3)(webpack@5.100.2(esbuild@0.27.0)) + version: 9.5.4(typescript@5.9.3)(webpack@5.97.1(esbuild@0.19.12)) ts-node: specifier: ^10.9.2 version: 10.9.2(@types/node@22.19.1)(typescript@5.9.3) @@ -173,14 +173,14 @@ importers: version: link:../../../../packages/shared-landing-ui astro: specifier: ^5.16.0 - version: 5.16.0(@netlify/blobs@10.4.1)(@types/node@20.19.25)(ioredis@5.8.2)(jiti@2.6.1)(lightningcss@1.30.2)(rollup@4.53.3)(terser@5.44.1)(tsx@4.20.6)(typescript@5.9.3)(yaml@2.8.1) + version: 5.16.0(@netlify/blobs@10.4.1)(@types/node@20.19.25)(ioredis@5.8.2)(jiti@1.21.7)(lightningcss@1.30.2)(rollup@4.53.3)(terser@5.44.1)(tsx@4.20.6)(typescript@5.9.3)(yaml@2.8.1) typescript: specifier: ^5.9.2 version: 5.9.3 devDependencies: '@astrojs/tailwind': specifier: ^6.0.2 - version: 6.0.2(astro@5.16.0(@netlify/blobs@10.4.1)(@types/node@20.19.25)(ioredis@5.8.2)(jiti@2.6.1)(lightningcss@1.30.2)(rollup@4.53.3)(terser@5.44.1)(tsx@4.20.6)(typescript@5.9.3)(yaml@2.8.1))(tailwindcss@3.4.18(tsx@4.20.6)(yaml@2.8.1))(ts-node@10.9.2(@types/node@20.19.25)(typescript@5.9.3)) + version: 6.0.2(astro@5.16.0(@netlify/blobs@10.4.1)(@types/node@20.19.25)(ioredis@5.8.2)(jiti@1.21.7)(lightningcss@1.30.2)(rollup@4.53.3)(terser@5.44.1)(tsx@4.20.6)(typescript@5.9.3)(yaml@2.8.1))(tailwindcss@3.4.18(tsx@4.20.6)(yaml@2.8.1))(ts-node@10.9.2(@types/node@20.19.25)(typescript@5.9.3)) '@tailwindcss/typography': specifier: ^0.5.18 version: 0.5.19(tailwindcss@3.4.18(tsx@4.20.6)(yaml@2.8.1)) @@ -189,13 +189,13 @@ importers: version: 20.19.25 eslint: specifier: ^9.0.0 - version: 9.39.1(jiti@2.6.1) + version: 9.39.1(jiti@1.21.7) eslint-config-prettier: specifier: ^9.1.0 - version: 9.1.2(eslint@9.39.1(jiti@2.6.1)) + version: 9.1.2(eslint@9.39.1(jiti@1.21.7)) eslint-plugin-astro: specifier: ^1.0.0 - version: 1.5.0(eslint@9.39.1(jiti@2.6.1)) + version: 1.5.0(eslint@9.39.1(jiti@1.21.7)) prettier: specifier: ^3.6.2 version: 3.6.2 @@ -528,19 +528,19 @@ importers: version: 18.3.27 '@typescript-eslint/eslint-plugin': specifier: ^7.7.0 - version: 7.18.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.3.3))(eslint@8.57.1)(typescript@5.3.3) + version: 7.18.0(@typescript-eslint/parser@7.18.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.3.3))(eslint@9.39.1(jiti@2.6.1))(typescript@5.3.3) '@typescript-eslint/parser': specifier: ^7.7.0 - version: 7.18.0(eslint@8.57.1)(typescript@5.3.3) + version: 7.18.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.3.3) dotenv: specifier: ^16.4.7 version: 16.6.1 eslint: - specifier: ^8.57.0 - version: 8.57.1 + specifier: ^9.39.1 + version: 9.39.1(jiti@2.6.1) eslint-config-universe: specifier: ^12.0.1 - version: 12.1.0(@types/eslint@9.6.1)(eslint@8.57.1)(prettier@3.6.2)(typescript@5.3.3) + version: 12.1.0(@types/eslint@9.6.1)(eslint@9.39.1(jiti@2.6.1))(prettier@3.6.2)(typescript@5.3.3) prettier: specifier: ^3.2.5 version: 3.6.2 @@ -967,16 +967,16 @@ importers: version: 19.2.3(@types/react@19.2.7) '@typescript-eslint/eslint-plugin': specifier: ^7.7.0 - version: 7.18.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + version: 7.18.0(@typescript-eslint/parser@7.18.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) '@typescript-eslint/parser': specifier: ^7.7.0 - version: 7.18.0(eslint@8.57.1)(typescript@5.9.3) + version: 7.18.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) eslint: - specifier: ^8.57.0 - version: 8.57.1 + specifier: ^9.39.1 + version: 9.39.1(jiti@2.6.1) eslint-config-universe: specifier: ^12.0.1 - version: 12.1.0(@types/eslint@9.6.1)(eslint@8.57.1)(prettier@3.6.2)(typescript@5.9.3) + version: 12.1.0(@types/eslint@9.6.1)(eslint@9.39.1(jiti@2.6.1))(prettier@3.6.2)(typescript@5.9.3) prettier: specifier: ^3.2.5 version: 3.6.2 @@ -2264,6 +2264,9 @@ importers: '@types/react': specifier: ~18.3.12 version: 18.3.27 + eslint: + specifier: ^9.39.1 + version: 9.39.1(jiti@2.6.1) typescript: specifier: ^5.7.2 version: 5.9.3 @@ -3104,7 +3107,7 @@ importers: version: 9.39.1 '@nestjs/cli': specifier: ^10.4.9 - version: 10.4.9(esbuild@0.19.12) + version: 10.4.9(esbuild@0.27.0) '@nestjs/schematics': specifier: ^10.2.3 version: 10.2.3(chokidar@3.6.0)(typescript@5.9.3) @@ -3140,7 +3143,7 @@ importers: version: 0.5.21 ts-loader: specifier: ^9.5.1 - version: 9.5.4(typescript@5.9.3)(webpack@5.100.2(esbuild@0.19.12)) + version: 9.5.4(typescript@5.9.3)(webpack@5.100.2(esbuild@0.27.0)) ts-node: specifier: ^10.9.2 version: 10.9.2(@types/node@22.19.1)(typescript@5.9.3) @@ -3224,6 +3227,42 @@ importers: specifier: ^2.7.0 version: 2.7.0 + packages/eslint-config: + dependencies: + '@eslint/js': + specifier: ^9.39.1 + version: 9.39.1 + eslint: + specifier: ^9.0.0 + version: 9.39.1(jiti@2.6.1) + eslint-config-prettier: + specifier: ^10.1.8 + version: 10.1.8(eslint@9.39.1(jiti@2.6.1)) + eslint-plugin-prettier: + specifier: ^5.5.4 + version: 5.5.4(@types/eslint@9.6.1)(eslint-config-prettier@10.1.8(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1))(prettier@3.6.2) + eslint-plugin-react: + specifier: ^7.37.5 + version: 7.37.5(eslint@9.39.1(jiti@2.6.1)) + eslint-plugin-react-hooks: + specifier: ^5.1.0 + version: 5.2.0(eslint@9.39.1(jiti@2.6.1)) + eslint-plugin-svelte: + specifier: ^3.12.4 + version: 3.13.0(eslint@9.39.1(jiti@2.6.1))(svelte@5.44.0)(ts-node@10.9.2(@types/node@24.10.1)(typescript@5.9.3)) + globals: + specifier: ^16.5.0 + version: 16.5.0 + prettier: + specifier: ^3.0.0 + version: 3.6.2 + typescript: + specifier: ^5.0.0 + version: 5.9.3 + typescript-eslint: + specifier: ^8.48.1 + version: 8.48.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) + packages/mana-core-nestjs-integration: dependencies: '@nestjs/common': @@ -5980,18 +6019,10 @@ packages: resolution: {integrity: sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/eslintrc@2.1.4': - resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - '@eslint/eslintrc@3.3.1': resolution: {integrity: sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/js@8.57.1': - resolution: {integrity: sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - '@eslint/js@9.39.1': resolution: {integrity: sha512-S26Stp4zCy88tH94QbBv3XCuzRQiZ9yXofEILmglYTh/Ug/a9/umqvgFtYBAo3Lp0nsI/5/qH1CCrbdK3AP1Tw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -6006,7 +6037,7 @@ packages: '@expo/bunyan@4.0.1': resolution: {integrity: sha512-+Lla7nYSiHZirgK+U/uYzsLv/X+HaJienbD5AKX1UQZHYfWaP+9uuQluRB4GrEVWF0GZ7vEVp/jzaOT9k/SQlg==} - engines: {node: '>=0.10.0'} + engines: {'0': node >=0.10.0} '@expo/cli@0.22.26': resolution: {integrity: sha512-I689wc8Fn/AX7aUGiwrh3HnssiORMJtR2fpksX+JIe8Cj/EDleblYMSwRPd0025wrwOV9UN1KM/RuEt/QjCS3Q==} @@ -6367,19 +6398,10 @@ packages: resolution: {integrity: sha512-/zUx+yOsIrG4Y43Eh2peDeKCxlRt/gET6aHfaKpuq267qXdYDFViVHfMaLyygZOnl0kGWxFIgsBy8QFuTLUXEQ==} engines: {node: '>=18.18.0'} - '@humanwhocodes/config-array@0.13.0': - resolution: {integrity: sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==} - engines: {node: '>=10.10.0'} - deprecated: Use @eslint/config-array instead - '@humanwhocodes/module-importer@1.0.1': resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} engines: {node: '>=12.22'} - '@humanwhocodes/object-schema@2.0.3': - resolution: {integrity: sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==} - deprecated: Use @eslint/object-schema instead - '@humanwhocodes/retry@0.4.3': resolution: {integrity: sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==} engines: {node: '>=18.18'} @@ -11069,10 +11091,6 @@ packages: resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} engines: {node: '>=0.10.0'} - doctrine@3.0.0: - resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} - engines: {node: '>=6.0.0'} - dom-accessibility-api@0.5.16: resolution: {integrity: sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==} @@ -11822,10 +11840,6 @@ packages: resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} engines: {node: '>=8.0.0'} - eslint-scope@7.2.2: - resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - eslint-scope@8.4.0: resolution: {integrity: sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -11846,12 +11860,6 @@ packages: resolution: {integrity: sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - eslint@8.57.1: - resolution: {integrity: sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - deprecated: This version is no longer supported. Please see https://eslint.org/version-support for other options. - hasBin: true - eslint@9.39.1: resolution: {integrity: sha512-BhHmn2yNOFA9H9JmmIVKJmd288g9hrVRDkdoIgRCRuSySRUHH7r/DI6aAXW9T1WwUuY3DFgrcaqB+deURBLR5g==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -11873,10 +11881,6 @@ packages: resolution: {integrity: sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - espree@9.6.1: - resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - esprima@4.0.1: resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} engines: {node: '>=4'} @@ -12605,10 +12609,6 @@ packages: resolution: {integrity: sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==} engines: {node: '>=8'} - file-entry-cache@6.0.1: - resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} - engines: {node: ^10.12.0 || >=12.0.0} - file-entry-cache@8.0.0: resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} engines: {node: '>=16.0.0'} @@ -12666,10 +12666,6 @@ packages: fix-dts-default-cjs-exports@1.0.1: resolution: {integrity: sha512-pVIECanWFC61Hzl2+oOCtoJ3F17kglZC/6N94eRWycFgBH35hHx0Li604ZIzhseh97mf2p0cv7vVrOZGoqhlEg==} - flat-cache@3.2.0: - resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==} - engines: {node: ^10.12.0 || >=12.0.0} - flat-cache@4.0.1: resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} engines: {node: '>=16'} @@ -12943,10 +12939,6 @@ packages: resolution: {integrity: sha512-NknMLn7F2J7aflwFOlGdNIuCDpN3VGoSoB+aap3KABFWbHVn1TCgFC+np23J8W2BiZbjfEw3BFBycSMv1AFblg==} engines: {node: '>=4'} - globals@13.24.0: - resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==} - engines: {node: '>=8'} - globals@14.0.0: resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} engines: {node: '>=18'} @@ -17262,9 +17254,6 @@ packages: text-hex@1.0.0: resolution: {integrity: sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg==} - text-table@0.2.0: - resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} - thenify-all@1.6.0: resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} engines: {node: '>=0.8'} @@ -18957,6 +18946,16 @@ snapshots: transitivePeerDependencies: - ts-node + '@astrojs/tailwind@6.0.2(astro@5.16.0(@netlify/blobs@10.4.1)(@types/node@20.19.25)(ioredis@5.8.2)(jiti@1.21.7)(lightningcss@1.30.2)(rollup@4.53.3)(terser@5.44.1)(tsx@4.20.6)(typescript@5.9.3)(yaml@2.8.1))(tailwindcss@3.4.18(tsx@4.20.6)(yaml@2.8.1))(ts-node@10.9.2(@types/node@20.19.25)(typescript@5.9.3))': + dependencies: + astro: 5.16.0(@netlify/blobs@10.4.1)(@types/node@20.19.25)(ioredis@5.8.2)(jiti@1.21.7)(lightningcss@1.30.2)(rollup@4.53.3)(terser@5.44.1)(tsx@4.20.6)(typescript@5.9.3)(yaml@2.8.1) + autoprefixer: 10.4.22(postcss@8.5.6) + postcss: 8.5.6 + postcss-load-config: 4.0.2(postcss@8.5.6)(ts-node@10.9.2(@types/node@20.19.25)(typescript@5.9.3)) + tailwindcss: 3.4.18(tsx@4.20.6)(yaml@2.8.1) + transitivePeerDependencies: + - ts-node + '@astrojs/tailwind@6.0.2(astro@5.16.0(@netlify/blobs@10.4.1)(@types/node@20.19.25)(ioredis@5.8.2)(jiti@2.6.1)(lightningcss@1.30.2)(rollup@4.53.3)(terser@5.44.1)(tsx@4.20.6)(typescript@5.9.3)(yaml@2.8.1))(tailwindcss@3.4.18(tsx@4.20.6)(yaml@2.8.1))(ts-node@10.9.2(@types/node@20.19.25)(typescript@5.9.3))': dependencies: astro: 5.16.0(@netlify/blobs@10.4.1)(@types/node@20.19.25)(ioredis@5.8.2)(jiti@2.6.1)(lightningcss@1.30.2)(rollup@4.53.3)(terser@5.44.1)(tsx@4.20.6)(typescript@5.9.3)(yaml@2.8.1) @@ -21026,9 +21025,9 @@ snapshots: '@esbuild/win32-x64@0.27.0': optional: true - '@eslint-community/eslint-utils@4.9.0(eslint@8.57.1)': + '@eslint-community/eslint-utils@4.9.0(eslint@9.39.1(jiti@1.21.7))': dependencies: - eslint: 8.57.1 + eslint: 9.39.1(jiti@1.21.7) eslint-visitor-keys: 3.4.3 '@eslint-community/eslint-utils@4.9.0(eslint@9.39.1(jiti@2.6.1))': @@ -21060,20 +21059,6 @@ snapshots: dependencies: '@types/json-schema': 7.0.15 - '@eslint/eslintrc@2.1.4': - dependencies: - ajv: 6.12.6 - debug: 4.4.3 - espree: 9.6.1 - globals: 13.24.0 - ignore: 5.3.2 - import-fresh: 3.3.1 - js-yaml: 4.1.1 - minimatch: 3.1.2 - strip-json-comments: 3.1.1 - transitivePeerDependencies: - - supports-color - '@eslint/eslintrc@3.3.1': dependencies: ajv: 6.12.6 @@ -21088,8 +21073,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@eslint/js@8.57.1': {} - '@eslint/js@9.39.1': {} '@eslint/object-schema@2.1.7': {} @@ -21406,7 +21389,7 @@ snapshots: wrap-ansi: 7.0.0 ws: 8.18.3 optionalDependencies: - expo-router: 6.0.15(jiucxy5ca3jdtbnulaxuc46jdq) + expo-router: 6.0.15(5e7ih2rh6mb55wruwvjljgzihq) react-native: 0.81.4(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.1.0) transitivePeerDependencies: - '@modelcontextprotocol/sdk' @@ -21483,7 +21466,7 @@ snapshots: wrap-ansi: 7.0.0 ws: 8.18.3 optionalDependencies: - expo-router: 6.0.15(dux2nvtiztnejw7mxzfaajqvh4) + expo-router: 6.0.15(nttrd3tw67nnyhowcwgdzipb5e) react-native: 0.81.5(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.1.0) transitivePeerDependencies: - '@modelcontextprotocol/sdk' @@ -22303,18 +22286,8 @@ snapshots: '@humanfs/core': 0.19.1 '@humanwhocodes/retry': 0.4.3 - '@humanwhocodes/config-array@0.13.0': - dependencies: - '@humanwhocodes/object-schema': 2.0.3 - debug: 4.4.3 - minimatch: 3.1.2 - transitivePeerDependencies: - - supports-color - '@humanwhocodes/module-importer@1.0.1': {} - '@humanwhocodes/object-schema@2.0.3': {} - '@humanwhocodes/retry@0.4.3': {} '@iarna/toml@2.2.5': {} @@ -22793,6 +22766,43 @@ snapshots: - supports-color - ts-node + '@jest/core@30.2.0(esbuild-register@3.6.0(esbuild@0.19.12))(ts-node@10.9.2(@types/node@22.19.1)(typescript@5.9.3))': + dependencies: + '@jest/console': 30.2.0 + '@jest/pattern': 30.0.1 + '@jest/reporters': 30.2.0 + '@jest/test-result': 30.2.0 + '@jest/transform': 30.2.0 + '@jest/types': 30.2.0 + '@types/node': 22.19.1 + ansi-escapes: 4.3.2 + chalk: 4.1.2 + ci-info: 4.3.1 + exit-x: 0.2.2 + graceful-fs: 4.2.11 + jest-changed-files: 30.2.0 + jest-config: 30.2.0(@types/node@22.19.1)(esbuild-register@3.6.0(esbuild@0.19.12))(ts-node@10.9.2(@types/node@22.19.1)(typescript@5.9.3)) + jest-haste-map: 30.2.0 + jest-message-util: 30.2.0 + jest-regex-util: 30.0.1 + jest-resolve: 30.2.0 + jest-resolve-dependencies: 30.2.0 + jest-runner: 30.2.0 + jest-runtime: 30.2.0 + jest-snapshot: 30.2.0 + jest-util: 30.2.0 + jest-validate: 30.2.0 + jest-watcher: 30.2.0 + micromatch: 4.0.8 + pretty-format: 30.2.0 + slash: 3.0.0 + transitivePeerDependencies: + - babel-plugin-macros + - esbuild-register + - supports-color + - ts-node + optional: true + '@jest/core@30.2.0(esbuild-register@3.6.0(esbuild@0.27.0))': dependencies: '@jest/console': 30.2.0 @@ -26127,17 +26137,17 @@ snapshots: react-test-renderer: 19.1.0(react@19.1.0) redent: 3.0.0 - '@testing-library/react-native@13.3.3(jest@30.2.0(@types/node@20.19.25)(esbuild-register@3.6.0(esbuild@0.27.0)))(react-native@0.81.4(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.1.0))(react-test-renderer@19.1.0(react@19.1.0))(react@19.1.0)': + '@testing-library/react-native@13.3.3(jest@30.2.0(@types/node@22.19.1)(esbuild-register@3.6.0(esbuild@0.19.12))(ts-node@10.9.2(@types/node@22.19.1)(typescript@5.9.3)))(react-native@0.81.5(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.1.0))(react-test-renderer@19.1.0(react@19.1.0))(react@19.1.0)': dependencies: jest-matcher-utils: 30.2.0 picocolors: 1.1.1 pretty-format: 30.2.0 react: 19.1.0 - react-native: 0.81.4(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.1.0) + react-native: 0.81.5(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.1.0) react-test-renderer: 19.1.0(react@19.1.0) redent: 3.0.0 optionalDependencies: - jest: 30.2.0(@types/node@20.19.25)(esbuild-register@3.6.0(esbuild@0.27.0)) + jest: 30.2.0(@types/node@22.19.1)(esbuild-register@3.6.0(esbuild@0.19.12))(ts-node@10.9.2(@types/node@22.19.1)(typescript@5.9.3)) optional: true '@testing-library/react-native@13.3.3(jest@30.2.0(@types/node@24.10.1)(esbuild-register@3.6.0(esbuild@0.27.0)))(react-native@0.81.4(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.1.0))(react-test-renderer@19.1.0(react@19.1.0))(react@19.1.0)': @@ -26506,16 +26516,16 @@ snapshots: '@types/node': 22.19.1 optional: true - '@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.3.3))(eslint@8.57.1)(typescript@5.3.3)': + '@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.3.3))(eslint@9.39.1(jiti@2.6.1))(typescript@5.3.3)': dependencies: '@eslint-community/regexpp': 4.12.2 - '@typescript-eslint/parser': 6.21.0(eslint@8.57.1)(typescript@5.3.3) + '@typescript-eslint/parser': 6.21.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.3.3) '@typescript-eslint/scope-manager': 6.21.0 - '@typescript-eslint/type-utils': 6.21.0(eslint@8.57.1)(typescript@5.3.3) - '@typescript-eslint/utils': 6.21.0(eslint@8.57.1)(typescript@5.3.3) + '@typescript-eslint/type-utils': 6.21.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.3.3) + '@typescript-eslint/utils': 6.21.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.3.3) '@typescript-eslint/visitor-keys': 6.21.0 debug: 4.4.3 - eslint: 8.57.1 + eslint: 9.39.1(jiti@2.6.1) graphemer: 1.4.0 ignore: 5.3.2 natural-compare: 1.4.0 @@ -26526,16 +26536,16 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3)': + '@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)': dependencies: '@eslint-community/regexpp': 4.12.2 - '@typescript-eslint/parser': 6.21.0(eslint@8.57.1)(typescript@5.9.3) + '@typescript-eslint/parser': 6.21.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) '@typescript-eslint/scope-manager': 6.21.0 - '@typescript-eslint/type-utils': 6.21.0(eslint@8.57.1)(typescript@5.9.3) - '@typescript-eslint/utils': 6.21.0(eslint@8.57.1)(typescript@5.9.3) + '@typescript-eslint/type-utils': 6.21.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/utils': 6.21.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) '@typescript-eslint/visitor-keys': 6.21.0 debug: 4.4.3 - eslint: 8.57.1 + eslint: 9.39.1(jiti@2.6.1) graphemer: 1.4.0 ignore: 5.3.2 natural-compare: 1.4.0 @@ -26546,15 +26556,15 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/eslint-plugin@7.18.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.3.3))(eslint@8.57.1)(typescript@5.3.3)': + '@typescript-eslint/eslint-plugin@7.18.0(@typescript-eslint/parser@7.18.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.3.3))(eslint@9.39.1(jiti@2.6.1))(typescript@5.3.3)': dependencies: '@eslint-community/regexpp': 4.12.2 - '@typescript-eslint/parser': 7.18.0(eslint@8.57.1)(typescript@5.3.3) + '@typescript-eslint/parser': 7.18.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.3.3) '@typescript-eslint/scope-manager': 7.18.0 - '@typescript-eslint/type-utils': 7.18.0(eslint@8.57.1)(typescript@5.3.3) - '@typescript-eslint/utils': 7.18.0(eslint@8.57.1)(typescript@5.3.3) + '@typescript-eslint/type-utils': 7.18.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.3.3) + '@typescript-eslint/utils': 7.18.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.3.3) '@typescript-eslint/visitor-keys': 7.18.0 - eslint: 8.57.1 + eslint: 9.39.1(jiti@2.6.1) graphemer: 1.4.0 ignore: 5.3.2 natural-compare: 1.4.0 @@ -26564,15 +26574,15 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/eslint-plugin@7.18.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3)': + '@typescript-eslint/eslint-plugin@7.18.0(@typescript-eslint/parser@7.18.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)': dependencies: '@eslint-community/regexpp': 4.12.2 - '@typescript-eslint/parser': 7.18.0(eslint@8.57.1)(typescript@5.9.3) + '@typescript-eslint/parser': 7.18.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) '@typescript-eslint/scope-manager': 7.18.0 - '@typescript-eslint/type-utils': 7.18.0(eslint@8.57.1)(typescript@5.9.3) - '@typescript-eslint/utils': 7.18.0(eslint@8.57.1)(typescript@5.9.3) + '@typescript-eslint/type-utils': 7.18.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/utils': 7.18.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) '@typescript-eslint/visitor-keys': 7.18.0 - eslint: 8.57.1 + eslint: 9.39.1(jiti@2.6.1) graphemer: 1.4.0 ignore: 5.3.2 natural-compare: 1.4.0 @@ -26633,53 +26643,53 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.3.3)': + '@typescript-eslint/parser@6.21.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.3.3)': dependencies: '@typescript-eslint/scope-manager': 6.21.0 '@typescript-eslint/types': 6.21.0 '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.3.3) '@typescript-eslint/visitor-keys': 6.21.0 debug: 4.4.3 - eslint: 8.57.1 + eslint: 9.39.1(jiti@2.6.1) optionalDependencies: typescript: 5.3.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3)': + '@typescript-eslint/parser@6.21.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)': dependencies: '@typescript-eslint/scope-manager': 6.21.0 '@typescript-eslint/types': 6.21.0 '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.9.3) '@typescript-eslint/visitor-keys': 6.21.0 debug: 4.4.3 - eslint: 8.57.1 + eslint: 9.39.1(jiti@2.6.1) optionalDependencies: typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.3.3)': + '@typescript-eslint/parser@7.18.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.3.3)': dependencies: '@typescript-eslint/scope-manager': 7.18.0 '@typescript-eslint/types': 7.18.0 '@typescript-eslint/typescript-estree': 7.18.0(typescript@5.3.3) '@typescript-eslint/visitor-keys': 7.18.0 debug: 4.4.3 - eslint: 8.57.1 + eslint: 9.39.1(jiti@2.6.1) optionalDependencies: typescript: 5.3.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.9.3)': + '@typescript-eslint/parser@7.18.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)': dependencies: '@typescript-eslint/scope-manager': 7.18.0 '@typescript-eslint/types': 7.18.0 '@typescript-eslint/typescript-estree': 7.18.0(typescript@5.9.3) '@typescript-eslint/visitor-keys': 7.18.0 debug: 4.4.3 - eslint: 8.57.1 + eslint: 9.39.1(jiti@2.6.1) optionalDependencies: typescript: 5.9.3 transitivePeerDependencies: @@ -26780,48 +26790,48 @@ snapshots: dependencies: typescript: 5.9.3 - '@typescript-eslint/type-utils@6.21.0(eslint@8.57.1)(typescript@5.3.3)': + '@typescript-eslint/type-utils@6.21.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.3.3)': dependencies: '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.3.3) - '@typescript-eslint/utils': 6.21.0(eslint@8.57.1)(typescript@5.3.3) + '@typescript-eslint/utils': 6.21.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.3.3) debug: 4.4.3 - eslint: 8.57.1 + eslint: 9.39.1(jiti@2.6.1) ts-api-utils: 1.4.3(typescript@5.3.3) optionalDependencies: typescript: 5.3.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/type-utils@6.21.0(eslint@8.57.1)(typescript@5.9.3)': + '@typescript-eslint/type-utils@6.21.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)': dependencies: '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.9.3) - '@typescript-eslint/utils': 6.21.0(eslint@8.57.1)(typescript@5.9.3) + '@typescript-eslint/utils': 6.21.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) debug: 4.4.3 - eslint: 8.57.1 + eslint: 9.39.1(jiti@2.6.1) ts-api-utils: 1.4.3(typescript@5.9.3) optionalDependencies: typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/type-utils@7.18.0(eslint@8.57.1)(typescript@5.3.3)': + '@typescript-eslint/type-utils@7.18.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.3.3)': dependencies: '@typescript-eslint/typescript-estree': 7.18.0(typescript@5.3.3) - '@typescript-eslint/utils': 7.18.0(eslint@8.57.1)(typescript@5.3.3) + '@typescript-eslint/utils': 7.18.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.3.3) debug: 4.4.3 - eslint: 8.57.1 + eslint: 9.39.1(jiti@2.6.1) ts-api-utils: 1.4.3(typescript@5.3.3) optionalDependencies: typescript: 5.3.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/type-utils@7.18.0(eslint@8.57.1)(typescript@5.9.3)': + '@typescript-eslint/type-utils@7.18.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)': dependencies: '@typescript-eslint/typescript-estree': 7.18.0(typescript@5.9.3) - '@typescript-eslint/utils': 7.18.0(eslint@8.57.1)(typescript@5.9.3) + '@typescript-eslint/utils': 7.18.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) debug: 4.4.3 - eslint: 8.57.1 + eslint: 9.39.1(jiti@2.6.1) ts-api-utils: 1.4.3(typescript@5.9.3) optionalDependencies: typescript: 5.9.3 @@ -26977,52 +26987,52 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@6.21.0(eslint@8.57.1)(typescript@5.3.3)': + '@typescript-eslint/utils@6.21.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.3.3)': dependencies: - '@eslint-community/eslint-utils': 4.9.0(eslint@8.57.1) + '@eslint-community/eslint-utils': 4.9.0(eslint@9.39.1(jiti@2.6.1)) '@types/json-schema': 7.0.15 '@types/semver': 7.7.1 '@typescript-eslint/scope-manager': 6.21.0 '@typescript-eslint/types': 6.21.0 '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.3.3) - eslint: 8.57.1 + eslint: 9.39.1(jiti@2.6.1) semver: 7.7.3 transitivePeerDependencies: - supports-color - typescript - '@typescript-eslint/utils@6.21.0(eslint@8.57.1)(typescript@5.9.3)': + '@typescript-eslint/utils@6.21.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)': dependencies: - '@eslint-community/eslint-utils': 4.9.0(eslint@8.57.1) + '@eslint-community/eslint-utils': 4.9.0(eslint@9.39.1(jiti@2.6.1)) '@types/json-schema': 7.0.15 '@types/semver': 7.7.1 '@typescript-eslint/scope-manager': 6.21.0 '@typescript-eslint/types': 6.21.0 '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.9.3) - eslint: 8.57.1 + eslint: 9.39.1(jiti@2.6.1) semver: 7.7.3 transitivePeerDependencies: - supports-color - typescript - '@typescript-eslint/utils@7.18.0(eslint@8.57.1)(typescript@5.3.3)': + '@typescript-eslint/utils@7.18.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.3.3)': dependencies: - '@eslint-community/eslint-utils': 4.9.0(eslint@8.57.1) + '@eslint-community/eslint-utils': 4.9.0(eslint@9.39.1(jiti@2.6.1)) '@typescript-eslint/scope-manager': 7.18.0 '@typescript-eslint/types': 7.18.0 '@typescript-eslint/typescript-estree': 7.18.0(typescript@5.3.3) - eslint: 8.57.1 + eslint: 9.39.1(jiti@2.6.1) transitivePeerDependencies: - supports-color - typescript - '@typescript-eslint/utils@7.18.0(eslint@8.57.1)(typescript@5.9.3)': + '@typescript-eslint/utils@7.18.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)': dependencies: - '@eslint-community/eslint-utils': 4.9.0(eslint@8.57.1) + '@eslint-community/eslint-utils': 4.9.0(eslint@9.39.1(jiti@2.6.1)) '@typescript-eslint/scope-manager': 7.18.0 '@typescript-eslint/types': 7.18.0 '@typescript-eslint/typescript-estree': 7.18.0(typescript@5.9.3) - eslint: 8.57.1 + eslint: 9.39.1(jiti@2.6.1) transitivePeerDependencies: - supports-color - typescript @@ -27804,6 +27814,108 @@ snapshots: transitivePeerDependencies: - supports-color + astro@5.16.0(@netlify/blobs@10.4.1)(@types/node@20.19.25)(ioredis@5.8.2)(jiti@1.21.7)(lightningcss@1.30.2)(rollup@4.53.3)(terser@5.44.1)(tsx@4.20.6)(typescript@5.9.3)(yaml@2.8.1): + dependencies: + '@astrojs/compiler': 2.13.0 + '@astrojs/internal-helpers': 0.7.5 + '@astrojs/markdown-remark': 6.3.9 + '@astrojs/telemetry': 3.3.0 + '@capsizecss/unpack': 3.0.1 + '@oslojs/encoding': 1.1.0 + '@rollup/pluginutils': 5.3.0(rollup@4.53.3) + acorn: 8.15.0 + aria-query: 5.3.2 + axobject-query: 4.1.0 + boxen: 8.0.1 + ci-info: 4.3.1 + clsx: 2.1.1 + common-ancestor-path: 1.0.1 + cookie: 1.1.0 + cssesc: 3.0.0 + debug: 4.4.3 + deterministic-object-hash: 2.0.2 + devalue: 5.5.0 + diff: 5.2.0 + dlv: 1.1.3 + dset: 3.1.4 + es-module-lexer: 1.7.0 + esbuild: 0.25.12 + estree-walker: 3.0.3 + flattie: 1.1.1 + fontace: 0.3.1 + github-slugger: 2.0.0 + html-escaper: 3.0.3 + http-cache-semantics: 4.2.0 + import-meta-resolve: 4.2.0 + js-yaml: 4.1.1 + magic-string: 0.30.21 + magicast: 0.5.1 + mrmime: 2.0.1 + neotraverse: 0.6.18 + p-limit: 6.2.0 + p-queue: 8.1.1 + package-manager-detector: 1.5.0 + piccolore: 0.1.3 + picomatch: 4.0.3 + prompts: 2.4.2 + rehype: 13.0.2 + semver: 7.7.3 + shiki: 3.15.0 + smol-toml: 1.5.2 + svgo: 4.0.0 + tinyexec: 1.0.2 + tinyglobby: 0.2.15 + tsconfck: 3.1.6(typescript@5.9.3) + ultrahtml: 1.6.0 + unifont: 0.6.0 + unist-util-visit: 5.0.0 + unstorage: 1.17.3(@netlify/blobs@10.4.1)(ioredis@5.8.2) + vfile: 6.0.3 + vite: 6.4.1(@types/node@20.19.25)(jiti@1.21.7)(lightningcss@1.30.2)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1) + vitefu: 1.1.1(vite@6.4.1(@types/node@20.19.25)(jiti@1.21.7)(lightningcss@1.30.2)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1)) + xxhash-wasm: 1.1.0 + yargs-parser: 21.1.1 + yocto-spinner: 0.2.3 + zod: 3.25.76 + zod-to-json-schema: 3.25.0(zod@3.25.76) + zod-to-ts: 1.2.0(typescript@5.9.3)(zod@3.25.76) + optionalDependencies: + sharp: 0.34.5 + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@deno/kv' + - '@netlify/blobs' + - '@planetscale/database' + - '@types/node' + - '@upstash/redis' + - '@vercel/blob' + - '@vercel/functions' + - '@vercel/kv' + - aws4fetch + - db0 + - idb-keyval + - ioredis + - jiti + - less + - lightningcss + - rollup + - sass + - sass-embedded + - stylus + - sugarss + - supports-color + - terser + - tsx + - typescript + - uploadthing + - yaml + astro@5.16.0(@netlify/blobs@10.4.1)(@types/node@20.19.25)(ioredis@5.8.2)(jiti@2.6.1)(lightningcss@1.30.2)(rollup@4.53.3)(terser@5.44.1)(tsx@4.20.6)(typescript@5.9.3)(yaml@2.8.1): dependencies: '@astrojs/compiler': 2.13.0 @@ -29328,10 +29440,6 @@ snapshots: dependencies: esutils: 2.0.3 - doctrine@3.0.0: - dependencies: - esutils: 2.0.3 - dom-accessibility-api@0.5.16: optional: true @@ -29929,6 +30037,11 @@ snapshots: optionalDependencies: source-map: 0.6.1 + eslint-compat-utils@0.6.5(eslint@9.39.1(jiti@1.21.7)): + dependencies: + eslint: 9.39.1(jiti@1.21.7) + semver: 7.7.3 + eslint-compat-utils@0.6.5(eslint@9.39.1(jiti@2.6.1)): dependencies: eslint: 9.39.1(jiti@2.6.1) @@ -29939,9 +30052,9 @@ snapshots: '@typescript-eslint/eslint-plugin': 8.48.0(@typescript-eslint/parser@8.48.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) '@typescript-eslint/parser': 8.48.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) eslint: 9.39.1(jiti@2.6.1) - eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@9.39.1(jiti@2.6.1)) + eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.48.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1)) eslint-plugin-expo: 1.0.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) - eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.48.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.1(jiti@2.6.1)) + eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.48.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.1(jiti@2.6.1)) eslint-plugin-react: 7.37.5(eslint@9.39.1(jiti@2.6.1)) eslint-plugin-react-hooks: 5.2.0(eslint@9.39.1(jiti@2.6.1)) globals: 16.5.0 @@ -29956,9 +30069,9 @@ snapshots: '@typescript-eslint/eslint-plugin': 8.48.0(@typescript-eslint/parser@8.48.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.8.3))(eslint@9.39.1(jiti@2.6.1))(typescript@5.8.3) '@typescript-eslint/parser': 8.48.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.8.3) eslint: 9.39.1(jiti@2.6.1) - eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@9.39.1(jiti@2.6.1)) + eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.48.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.8.3))(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1)) eslint-plugin-expo: 0.1.4(eslint@9.39.1(jiti@2.6.1))(typescript@5.8.3) - eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.48.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.8.3))(eslint@9.39.1(jiti@2.6.1)) + eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.48.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.8.3))(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.1(jiti@2.6.1)) eslint-plugin-react: 7.37.5(eslint@9.39.1(jiti@2.6.1)) eslint-plugin-react-hooks: 5.2.0(eslint@9.39.1(jiti@2.6.1)) globals: 16.5.0 @@ -29972,25 +30085,29 @@ snapshots: dependencies: eslint: 9.39.1(jiti@2.6.1) - eslint-config-prettier@8.10.2(eslint@8.57.1): + eslint-config-prettier@8.10.2(eslint@9.39.1(jiti@2.6.1)): dependencies: - eslint: 8.57.1 + eslint: 9.39.1(jiti@2.6.1) + + eslint-config-prettier@9.1.2(eslint@9.39.1(jiti@1.21.7)): + dependencies: + eslint: 9.39.1(jiti@1.21.7) eslint-config-prettier@9.1.2(eslint@9.39.1(jiti@2.6.1)): dependencies: eslint: 9.39.1(jiti@2.6.1) - eslint-config-universe@12.1.0(@types/eslint@9.6.1)(eslint@8.57.1)(prettier@3.6.2)(typescript@5.3.3): + eslint-config-universe@12.1.0(@types/eslint@9.6.1)(eslint@9.39.1(jiti@2.6.1))(prettier@3.6.2)(typescript@5.3.3): dependencies: - '@typescript-eslint/eslint-plugin': 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.3.3))(eslint@8.57.1)(typescript@5.3.3) - '@typescript-eslint/parser': 6.21.0(eslint@8.57.1)(typescript@5.3.3) - eslint: 8.57.1 - eslint-config-prettier: 8.10.2(eslint@8.57.1) - eslint-plugin-import: 2.32.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.3.3))(eslint@8.57.1) - eslint-plugin-node: 11.1.0(eslint@8.57.1) - eslint-plugin-prettier: 5.5.4(@types/eslint@9.6.1)(eslint-config-prettier@8.10.2(eslint@8.57.1))(eslint@8.57.1)(prettier@3.6.2) - eslint-plugin-react: 7.37.5(eslint@8.57.1) - eslint-plugin-react-hooks: 4.6.2(eslint@8.57.1) + '@typescript-eslint/eslint-plugin': 6.21.0(@typescript-eslint/parser@6.21.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.3.3))(eslint@9.39.1(jiti@2.6.1))(typescript@5.3.3) + '@typescript-eslint/parser': 6.21.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.3.3) + eslint: 9.39.1(jiti@2.6.1) + eslint-config-prettier: 8.10.2(eslint@9.39.1(jiti@2.6.1)) + eslint-plugin-import: 2.32.0(@typescript-eslint/parser@6.21.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.3.3))(eslint@9.39.1(jiti@2.6.1)) + eslint-plugin-node: 11.1.0(eslint@9.39.1(jiti@2.6.1)) + eslint-plugin-prettier: 5.5.4(@types/eslint@9.6.1)(eslint-config-prettier@8.10.2(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1))(prettier@3.6.2) + eslint-plugin-react: 7.37.5(eslint@9.39.1(jiti@2.6.1)) + eslint-plugin-react-hooks: 4.6.2(eslint@9.39.1(jiti@2.6.1)) optionalDependencies: prettier: 3.6.2 transitivePeerDependencies: @@ -30000,17 +30117,17 @@ snapshots: - supports-color - typescript - eslint-config-universe@12.1.0(@types/eslint@9.6.1)(eslint@8.57.1)(prettier@3.6.2)(typescript@5.9.3): + eslint-config-universe@12.1.0(@types/eslint@9.6.1)(eslint@9.39.1(jiti@2.6.1))(prettier@3.6.2)(typescript@5.9.3): dependencies: - '@typescript-eslint/eslint-plugin': 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) - '@typescript-eslint/parser': 6.21.0(eslint@8.57.1)(typescript@5.9.3) - eslint: 8.57.1 - eslint-config-prettier: 8.10.2(eslint@8.57.1) - eslint-plugin-import: 2.32.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1) - eslint-plugin-node: 11.1.0(eslint@8.57.1) - eslint-plugin-prettier: 5.5.4(@types/eslint@9.6.1)(eslint-config-prettier@8.10.2(eslint@8.57.1))(eslint@8.57.1)(prettier@3.6.2) - eslint-plugin-react: 7.37.5(eslint@8.57.1) - eslint-plugin-react-hooks: 4.6.2(eslint@8.57.1) + '@typescript-eslint/eslint-plugin': 6.21.0(@typescript-eslint/parser@6.21.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/parser': 6.21.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) + eslint: 9.39.1(jiti@2.6.1) + eslint-config-prettier: 8.10.2(eslint@9.39.1(jiti@2.6.1)) + eslint-plugin-import: 2.32.0(@typescript-eslint/parser@6.21.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.1(jiti@2.6.1)) + eslint-plugin-node: 11.1.0(eslint@9.39.1(jiti@2.6.1)) + eslint-plugin-prettier: 5.5.4(@types/eslint@9.6.1)(eslint-config-prettier@8.10.2(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1))(prettier@3.6.2) + eslint-plugin-react: 7.37.5(eslint@9.39.1(jiti@2.6.1)) + eslint-plugin-react-hooks: 4.6.2(eslint@9.39.1(jiti@2.6.1)) optionalDependencies: prettier: 3.6.2 transitivePeerDependencies: @@ -30028,7 +30145,7 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0)(eslint@9.39.1(jiti@2.6.1)): + eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.48.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.8.3))(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1)): dependencies: '@nolyfill/is-core-module': 1.0.39 debug: 4.4.3 @@ -30039,49 +30156,78 @@ snapshots: tinyglobby: 0.2.15 unrs-resolver: 1.11.1 optionalDependencies: - eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.48.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.1(jiti@2.6.1)) + eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.48.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.8.3))(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.1(jiti@2.6.1)) transitivePeerDependencies: - supports-color - eslint-module-utils@2.12.1(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.3.3))(eslint-import-resolver-node@0.3.9)(eslint@8.57.1): + eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.48.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1)): + dependencies: + '@nolyfill/is-core-module': 1.0.39 + debug: 4.4.3 + eslint: 9.39.1(jiti@2.6.1) + get-tsconfig: 4.13.0 + is-bun-module: 2.0.0 + stable-hash: 0.0.5 + tinyglobby: 0.2.15 + unrs-resolver: 1.11.1 + optionalDependencies: + eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.48.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.1(jiti@2.6.1)) + transitivePeerDependencies: + - supports-color + + eslint-module-utils@2.12.1(@typescript-eslint/parser@6.21.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.3.3))(eslint-import-resolver-node@0.3.9)(eslint@9.39.1(jiti@2.6.1)): dependencies: debug: 3.2.7 optionalDependencies: - '@typescript-eslint/parser': 6.21.0(eslint@8.57.1)(typescript@5.3.3) - eslint: 8.57.1 + '@typescript-eslint/parser': 6.21.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.3.3) + eslint: 9.39.1(jiti@2.6.1) eslint-import-resolver-node: 0.3.9 transitivePeerDependencies: - supports-color - eslint-module-utils@2.12.1(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@8.57.1): + eslint-module-utils@2.12.1(@typescript-eslint/parser@6.21.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@9.39.1(jiti@2.6.1)): dependencies: debug: 3.2.7 optionalDependencies: - '@typescript-eslint/parser': 6.21.0(eslint@8.57.1)(typescript@5.9.3) - eslint: 8.57.1 + '@typescript-eslint/parser': 6.21.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) + eslint: 9.39.1(jiti@2.6.1) eslint-import-resolver-node: 0.3.9 transitivePeerDependencies: - supports-color - eslint-module-utils@2.12.1(@typescript-eslint/parser@8.48.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.1(jiti@2.6.1)): + eslint-module-utils@2.12.1(@typescript-eslint/parser@8.48.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.48.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.8.3))(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1)): dependencies: debug: 3.2.7 optionalDependencies: '@typescript-eslint/parser': 8.48.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.8.3) eslint: 9.39.1(jiti@2.6.1) eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@9.39.1(jiti@2.6.1)) + eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.48.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.8.3))(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1)) transitivePeerDependencies: - supports-color - eslint-module-utils@2.12.1(@typescript-eslint/parser@8.48.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.1(jiti@2.6.1)): + eslint-module-utils@2.12.1(@typescript-eslint/parser@8.48.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.48.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1)): dependencies: debug: 3.2.7 optionalDependencies: '@typescript-eslint/parser': 8.48.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) eslint: 9.39.1(jiti@2.6.1) eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@9.39.1(jiti@2.6.1)) + eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.48.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1)) + transitivePeerDependencies: + - supports-color + + eslint-plugin-astro@1.5.0(eslint@9.39.1(jiti@1.21.7)): + dependencies: + '@eslint-community/eslint-utils': 4.9.0(eslint@9.39.1(jiti@1.21.7)) + '@jridgewell/sourcemap-codec': 1.5.5 + '@typescript-eslint/types': 8.48.0 + astro-eslint-parser: 1.2.2 + eslint: 9.39.1(jiti@1.21.7) + eslint-compat-utils: 0.6.5(eslint@9.39.1(jiti@1.21.7)) + globals: 16.5.0 + postcss: 8.5.6 + postcss-selector-parser: 7.1.0 transitivePeerDependencies: - supports-color @@ -30099,9 +30245,9 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-plugin-es@3.0.1(eslint@8.57.1): + eslint-plugin-es@3.0.1(eslint@9.39.1(jiti@2.6.1)): dependencies: - eslint: 8.57.1 + eslint: 9.39.1(jiti@2.6.1) eslint-utils: 2.1.0 regexpp: 3.2.0 @@ -30123,65 +30269,7 @@ snapshots: - supports-color - typescript - eslint-plugin-import@2.32.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.3.3))(eslint@8.57.1): - dependencies: - '@rtsao/scc': 1.1.0 - array-includes: 3.1.9 - array.prototype.findlastindex: 1.2.6 - array.prototype.flat: 1.3.3 - array.prototype.flatmap: 1.3.3 - debug: 3.2.7 - doctrine: 2.1.0 - eslint: 8.57.1 - eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.12.1(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.3.3))(eslint-import-resolver-node@0.3.9)(eslint@8.57.1) - hasown: 2.0.2 - is-core-module: 2.16.1 - is-glob: 4.0.3 - minimatch: 3.1.2 - object.fromentries: 2.0.8 - object.groupby: 1.0.3 - object.values: 1.2.1 - semver: 6.3.1 - string.prototype.trimend: 1.0.9 - tsconfig-paths: 3.15.0 - optionalDependencies: - '@typescript-eslint/parser': 6.21.0(eslint@8.57.1)(typescript@5.3.3) - transitivePeerDependencies: - - eslint-import-resolver-typescript - - eslint-import-resolver-webpack - - supports-color - - eslint-plugin-import@2.32.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1): - dependencies: - '@rtsao/scc': 1.1.0 - array-includes: 3.1.9 - array.prototype.findlastindex: 1.2.6 - array.prototype.flat: 1.3.3 - array.prototype.flatmap: 1.3.3 - debug: 3.2.7 - doctrine: 2.1.0 - eslint: 8.57.1 - eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.12.1(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@8.57.1) - hasown: 2.0.2 - is-core-module: 2.16.1 - is-glob: 4.0.3 - minimatch: 3.1.2 - object.fromentries: 2.0.8 - object.groupby: 1.0.3 - object.values: 1.2.1 - semver: 6.3.1 - string.prototype.trimend: 1.0.9 - tsconfig-paths: 3.15.0 - optionalDependencies: - '@typescript-eslint/parser': 6.21.0(eslint@8.57.1)(typescript@5.9.3) - transitivePeerDependencies: - - eslint-import-resolver-typescript - - eslint-import-resolver-webpack - - supports-color - - eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.48.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.8.3))(eslint@9.39.1(jiti@2.6.1)): + eslint-plugin-import@2.32.0(@typescript-eslint/parser@6.21.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.3.3))(eslint@9.39.1(jiti@2.6.1)): dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.9 @@ -30192,7 +30280,65 @@ snapshots: doctrine: 2.1.0 eslint: 9.39.1(jiti@2.6.1) eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.48.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.1(jiti@2.6.1)) + eslint-module-utils: 2.12.1(@typescript-eslint/parser@6.21.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.3.3))(eslint-import-resolver-node@0.3.9)(eslint@9.39.1(jiti@2.6.1)) + hasown: 2.0.2 + is-core-module: 2.16.1 + is-glob: 4.0.3 + minimatch: 3.1.2 + object.fromentries: 2.0.8 + object.groupby: 1.0.3 + object.values: 1.2.1 + semver: 6.3.1 + string.prototype.trimend: 1.0.9 + tsconfig-paths: 3.15.0 + optionalDependencies: + '@typescript-eslint/parser': 6.21.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.3.3) + transitivePeerDependencies: + - eslint-import-resolver-typescript + - eslint-import-resolver-webpack + - supports-color + + eslint-plugin-import@2.32.0(@typescript-eslint/parser@6.21.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.1(jiti@2.6.1)): + dependencies: + '@rtsao/scc': 1.1.0 + array-includes: 3.1.9 + array.prototype.findlastindex: 1.2.6 + array.prototype.flat: 1.3.3 + array.prototype.flatmap: 1.3.3 + debug: 3.2.7 + doctrine: 2.1.0 + eslint: 9.39.1(jiti@2.6.1) + eslint-import-resolver-node: 0.3.9 + eslint-module-utils: 2.12.1(@typescript-eslint/parser@6.21.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@9.39.1(jiti@2.6.1)) + hasown: 2.0.2 + is-core-module: 2.16.1 + is-glob: 4.0.3 + minimatch: 3.1.2 + object.fromentries: 2.0.8 + object.groupby: 1.0.3 + object.values: 1.2.1 + semver: 6.3.1 + string.prototype.trimend: 1.0.9 + tsconfig-paths: 3.15.0 + optionalDependencies: + '@typescript-eslint/parser': 6.21.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) + transitivePeerDependencies: + - eslint-import-resolver-typescript + - eslint-import-resolver-webpack + - supports-color + + eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.48.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.8.3))(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.1(jiti@2.6.1)): + dependencies: + '@rtsao/scc': 1.1.0 + array-includes: 3.1.9 + array.prototype.findlastindex: 1.2.6 + array.prototype.flat: 1.3.3 + array.prototype.flatmap: 1.3.3 + debug: 3.2.7 + doctrine: 2.1.0 + eslint: 9.39.1(jiti@2.6.1) + eslint-import-resolver-node: 0.3.9 + eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.48.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.48.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.8.3))(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1)) hasown: 2.0.2 is-core-module: 2.16.1 is-glob: 4.0.3 @@ -30210,7 +30356,7 @@ snapshots: - eslint-import-resolver-webpack - supports-color - eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.48.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.1(jiti@2.6.1)): + eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.48.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.1(jiti@2.6.1)): dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.9 @@ -30221,7 +30367,7 @@ snapshots: doctrine: 2.1.0 eslint: 9.39.1(jiti@2.6.1) eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.48.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.1(jiti@2.6.1)) + eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.48.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.48.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1)) hasown: 2.0.2 is-core-module: 2.16.1 is-glob: 4.0.3 @@ -30239,10 +30385,10 @@ snapshots: - eslint-import-resolver-webpack - supports-color - eslint-plugin-node@11.1.0(eslint@8.57.1): + eslint-plugin-node@11.1.0(eslint@9.39.1(jiti@2.6.1)): dependencies: - eslint: 8.57.1 - eslint-plugin-es: 3.0.1(eslint@8.57.1) + eslint: 9.39.1(jiti@2.6.1) + eslint-plugin-es: 3.0.1(eslint@9.39.1(jiti@2.6.1)) eslint-utils: 2.1.0 ignore: 5.3.2 minimatch: 3.1.2 @@ -30259,15 +30405,15 @@ snapshots: '@types/eslint': 9.6.1 eslint-config-prettier: 10.1.8(eslint@9.39.1(jiti@2.6.1)) - eslint-plugin-prettier@5.5.4(@types/eslint@9.6.1)(eslint-config-prettier@8.10.2(eslint@8.57.1))(eslint@8.57.1)(prettier@3.6.2): + eslint-plugin-prettier@5.5.4(@types/eslint@9.6.1)(eslint-config-prettier@8.10.2(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1))(prettier@3.6.2): dependencies: - eslint: 8.57.1 + eslint: 9.39.1(jiti@2.6.1) prettier: 3.6.2 prettier-linter-helpers: 1.0.0 synckit: 0.11.11 optionalDependencies: '@types/eslint': 9.6.1 - eslint-config-prettier: 8.10.2(eslint@8.57.1) + eslint-config-prettier: 8.10.2(eslint@9.39.1(jiti@2.6.1)) eslint-plugin-prettier@5.5.4(@types/eslint@9.6.1)(eslint-config-prettier@9.1.2(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1))(prettier@3.6.2): dependencies: @@ -30279,36 +30425,14 @@ snapshots: '@types/eslint': 9.6.1 eslint-config-prettier: 9.1.2(eslint@9.39.1(jiti@2.6.1)) - eslint-plugin-react-hooks@4.6.2(eslint@8.57.1): + eslint-plugin-react-hooks@4.6.2(eslint@9.39.1(jiti@2.6.1)): dependencies: - eslint: 8.57.1 + eslint: 9.39.1(jiti@2.6.1) eslint-plugin-react-hooks@5.2.0(eslint@9.39.1(jiti@2.6.1)): dependencies: eslint: 9.39.1(jiti@2.6.1) - eslint-plugin-react@7.37.5(eslint@8.57.1): - dependencies: - array-includes: 3.1.9 - array.prototype.findlast: 1.2.5 - array.prototype.flatmap: 1.3.3 - array.prototype.tosorted: 1.1.4 - doctrine: 2.1.0 - es-iterator-helpers: 1.2.1 - eslint: 8.57.1 - estraverse: 5.3.0 - hasown: 2.0.2 - jsx-ast-utils: 3.3.5 - minimatch: 3.1.2 - object.entries: 1.1.9 - object.fromentries: 2.0.8 - object.values: 1.2.1 - prop-types: 15.8.1 - resolve: 2.0.0-next.5 - semver: 6.3.1 - string.prototype.matchall: 4.0.12 - string.prototype.repeat: 1.0.0 - eslint-plugin-react@7.37.5(eslint@9.39.1(jiti@2.6.1)): dependencies: array-includes: 3.1.9 @@ -30372,11 +30496,6 @@ snapshots: esrecurse: 4.3.0 estraverse: 4.3.0 - eslint-scope@7.2.2: - dependencies: - esrecurse: 4.3.0 - estraverse: 5.3.0 - eslint-scope@8.4.0: dependencies: esrecurse: 4.3.0 @@ -30392,46 +30511,44 @@ snapshots: eslint-visitor-keys@4.2.1: {} - eslint@8.57.1: + eslint@9.39.1(jiti@1.21.7): dependencies: - '@eslint-community/eslint-utils': 4.9.0(eslint@8.57.1) + '@eslint-community/eslint-utils': 4.9.0(eslint@9.39.1(jiti@1.21.7)) '@eslint-community/regexpp': 4.12.2 - '@eslint/eslintrc': 2.1.4 - '@eslint/js': 8.57.1 - '@humanwhocodes/config-array': 0.13.0 + '@eslint/config-array': 0.21.1 + '@eslint/config-helpers': 0.4.2 + '@eslint/core': 0.17.0 + '@eslint/eslintrc': 3.3.1 + '@eslint/js': 9.39.1 + '@eslint/plugin-kit': 0.4.1 + '@humanfs/node': 0.16.7 '@humanwhocodes/module-importer': 1.0.1 - '@nodelib/fs.walk': 1.2.8 - '@ungap/structured-clone': 1.3.0 + '@humanwhocodes/retry': 0.4.3 + '@types/estree': 1.0.8 ajv: 6.12.6 chalk: 4.1.2 cross-spawn: 7.0.6 debug: 4.4.3 - doctrine: 3.0.0 escape-string-regexp: 4.0.0 - eslint-scope: 7.2.2 - eslint-visitor-keys: 3.4.3 - espree: 9.6.1 + eslint-scope: 8.4.0 + eslint-visitor-keys: 4.2.1 + espree: 10.4.0 esquery: 1.6.0 esutils: 2.0.3 fast-deep-equal: 3.1.3 - file-entry-cache: 6.0.1 + file-entry-cache: 8.0.0 find-up: 5.0.0 glob-parent: 6.0.2 - globals: 13.24.0 - graphemer: 1.4.0 ignore: 5.3.2 imurmurhash: 0.1.4 is-glob: 4.0.3 - is-path-inside: 3.0.3 - js-yaml: 4.1.1 json-stable-stringify-without-jsonify: 1.0.1 - levn: 0.4.1 lodash.merge: 4.6.2 minimatch: 3.1.2 natural-compare: 1.4.0 optionator: 0.9.4 - strip-ansi: 6.0.1 - text-table: 0.2.0 + optionalDependencies: + jiti: 1.21.7 transitivePeerDependencies: - supports-color @@ -30491,12 +30608,6 @@ snapshots: acorn-jsx: 5.3.2(acorn@8.15.0) eslint-visitor-keys: 4.2.1 - espree@9.6.1: - dependencies: - acorn: 8.15.0 - acorn-jsx: 5.3.2(acorn@8.15.0) - eslint-visitor-keys: 3.4.3 - esprima@4.0.1: {} esquery@1.6.0: @@ -31364,21 +31475,21 @@ snapshots: - '@types/react-dom' - supports-color - expo-router@6.0.15(jiucxy5ca3jdtbnulaxuc46jdq): + expo-router@6.0.15(nttrd3tw67nnyhowcwgdzipb5e): dependencies: - '@expo/metro-runtime': 6.1.2(expo@54.0.25)(react-dom@19.1.0(react@19.1.0))(react-native@0.81.4(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.1.0))(react@19.1.0) + '@expo/metro-runtime': 6.1.2(expo@54.0.25)(react-dom@19.1.0(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.1.0))(react@19.1.0) '@expo/schema-utils': 0.1.7 '@radix-ui/react-slot': 1.2.0(@types/react@19.2.7)(react@19.1.0) '@radix-ui/react-tabs': 1.1.13(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@react-navigation/bottom-tabs': 7.8.6(@react-navigation/native@7.1.21(react-native@0.81.4(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.2(react-native@0.81.4(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.1.0))(react@19.1.0))(react-native-screens@4.16.0(react-native@0.81.4(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.1.0))(react@19.1.0))(react-native@0.81.4(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.1.0))(react@19.1.0) - '@react-navigation/native': 7.1.21(react-native@0.81.4(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.1.0))(react@19.1.0) - '@react-navigation/native-stack': 7.8.0(@react-navigation/native@7.1.21(react-native@0.81.4(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.2(react-native@0.81.4(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.1.0))(react@19.1.0))(react-native-screens@4.16.0(react-native@0.81.4(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.1.0))(react@19.1.0))(react-native@0.81.4(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.1.0))(react@19.1.0) + '@react-navigation/bottom-tabs': 7.8.6(@react-navigation/native@7.1.21(react-native@0.81.5(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.1.0))(react@19.1.0))(react-native-screens@4.16.0(react-native@0.81.5(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.1.0))(react@19.1.0) + '@react-navigation/native': 7.1.21(react-native@0.81.5(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.1.0))(react@19.1.0) + '@react-navigation/native-stack': 7.8.0(@react-navigation/native@7.1.21(react-native@0.81.5(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.1.0))(react@19.1.0))(react-native-screens@4.16.0(react-native@0.81.5(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.1.0))(react@19.1.0) client-only: 0.0.1 debug: 4.4.3 escape-string-regexp: 4.0.0 - expo: 54.0.25(@babel/core@7.28.5)(@expo/metro-runtime@6.1.2)(expo-router@6.0.15)(react-native-webview@13.12.2(react-native@0.81.4(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.1.0))(react@19.1.0))(react-native@0.81.4(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.1.0))(react@19.1.0) - expo-constants: 18.0.10(expo@54.0.25)(react-native@0.81.4(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.1.0)) - expo-linking: 8.0.9(expo@54.0.25)(react-native@0.81.4(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.1.0))(react@19.1.0) + expo: 54.0.25(@babel/core@7.28.5)(@expo/metro-runtime@6.1.2)(expo-router@6.0.15)(react-native-webview@13.12.2(react-native@0.81.5(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.1.0))(react@19.1.0) + expo-constants: 18.0.10(expo@54.0.25)(react-native@0.81.5(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.1.0)) + expo-linking: 8.0.9(expo@54.0.25)(react-native@0.81.5(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.1.0))(react@19.1.0) expo-server: 1.0.4 fast-deep-equal: 3.1.3 invariant: 2.2.4 @@ -31386,10 +31497,10 @@ snapshots: query-string: 7.1.3 react: 19.1.0 react-fast-compare: 3.2.2 - react-native: 0.81.4(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.1.0) - react-native-is-edge-to-edge: 1.2.1(react-native@0.81.4(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.1.0))(react@19.1.0) - react-native-safe-area-context: 5.6.2(react-native@0.81.4(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.1.0))(react@19.1.0) - react-native-screens: 4.16.0(react-native@0.81.4(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.1.0))(react@19.1.0) + react-native: 0.81.5(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.1.0) + react-native-is-edge-to-edge: 1.2.1(react-native@0.81.5(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.1.0))(react@19.1.0) + react-native-safe-area-context: 5.6.2(react-native@0.81.5(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.1.0))(react@19.1.0) + react-native-screens: 4.16.0(react-native@0.81.5(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.1.0))(react@19.1.0) semver: 7.6.3 server-only: 0.0.1 sf-symbols-typescript: 2.1.0 @@ -31397,13 +31508,13 @@ snapshots: use-latest-callback: 0.2.6(react@19.1.0) vaul: 1.1.2(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) optionalDependencies: - '@react-navigation/drawer': 7.7.4(@react-navigation/native@7.1.21(react-native@0.81.4(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.1.0))(react@19.1.0))(react-native-gesture-handler@2.28.0(react-native@0.81.4(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.1.0))(react@19.1.0))(react-native-reanimated@4.1.5(@babel/core@7.28.5)(react-native-worklets@0.6.1(@babel/core@7.28.5)(react-native@0.81.4(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.1.0))(react@19.1.0))(react-native@0.81.4(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.2(react-native@0.81.4(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.1.0))(react@19.1.0))(react-native-screens@4.16.0(react-native@0.81.4(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.1.0))(react@19.1.0))(react-native@0.81.4(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.1.0))(react@19.1.0) - '@testing-library/react-native': 13.3.3(jest@30.2.0(@types/node@20.19.25)(esbuild-register@3.6.0(esbuild@0.27.0)))(react-native@0.81.4(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.1.0))(react-test-renderer@19.1.0(react@19.1.0))(react@19.1.0) + '@react-navigation/drawer': 7.7.4(@react-navigation/native@7.1.21(react-native@0.81.5(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.1.0))(react@19.1.0))(react-native-gesture-handler@2.28.0(react-native@0.81.5(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.1.0))(react@19.1.0))(react-native-reanimated@4.1.5(@babel/core@7.28.5)(react-native-worklets@0.6.1(@babel/core@7.28.5)(react-native@0.81.5(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.1.0))(react@19.1.0))(react-native-screens@4.16.0(react-native@0.81.5(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.1.0))(react@19.1.0) + '@testing-library/react-native': 13.3.3(jest@30.2.0(@types/node@22.19.1)(esbuild-register@3.6.0(esbuild@0.19.12))(ts-node@10.9.2(@types/node@22.19.1)(typescript@5.9.3)))(react-native@0.81.5(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.1.0))(react-test-renderer@19.1.0(react@19.1.0))(react@19.1.0) react-dom: 19.1.0(react@19.1.0) - react-native-gesture-handler: 2.28.0(react-native@0.81.4(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.1.0))(react@19.1.0) - react-native-reanimated: 4.1.5(@babel/core@7.28.5)(react-native-worklets@0.6.1(@babel/core@7.28.5)(react-native@0.81.4(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.1.0))(react@19.1.0))(react-native@0.81.4(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.1.0))(react@19.1.0) + react-native-gesture-handler: 2.28.0(react-native@0.81.5(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.1.0))(react@19.1.0) + react-native-reanimated: 4.1.5(@babel/core@7.28.5)(react-native-worklets@0.6.1(@babel/core@7.28.5)(react-native@0.81.5(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.1.0))(react@19.1.0) react-native-web: 0.21.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - react-server-dom-webpack: 19.0.0(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(webpack@5.100.2(esbuild@0.27.0)) + react-server-dom-webpack: 19.0.0(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(webpack@5.97.1(esbuild@0.19.12)) transitivePeerDependencies: - '@react-native-masked-view/masked-view' - '@types/react' @@ -32113,10 +32224,6 @@ snapshots: dependencies: escape-string-regexp: 1.0.5 - file-entry-cache@6.0.1: - dependencies: - flat-cache: 3.2.0 - file-entry-cache@8.0.0: dependencies: flat-cache: 4.0.1 @@ -32214,12 +32321,6 @@ snapshots: mlly: 1.8.0 rollup: 4.53.3 - flat-cache@3.2.0: - dependencies: - flatted: 3.3.3 - keyv: 4.5.4 - rimraf: 3.0.2 - flat-cache@4.0.1: dependencies: flatted: 3.3.3 @@ -32605,10 +32706,6 @@ snapshots: dependencies: ini: 1.3.8 - globals@13.24.0: - dependencies: - type-fest: 0.20.2 - globals@14.0.0: {} globals@15.15.0: {} @@ -33460,15 +33557,15 @@ snapshots: - supports-color - ts-node - jest-cli@30.2.0(@types/node@20.19.25)(esbuild-register@3.6.0(esbuild@0.27.0)): + jest-cli@30.2.0(@types/node@22.19.1)(esbuild-register@3.6.0(esbuild@0.19.12))(ts-node@10.9.2(@types/node@22.19.1)(typescript@5.9.3)): dependencies: - '@jest/core': 30.2.0(esbuild-register@3.6.0(esbuild@0.27.0)) + '@jest/core': 30.2.0(esbuild-register@3.6.0(esbuild@0.19.12))(ts-node@10.9.2(@types/node@22.19.1)(typescript@5.9.3)) '@jest/test-result': 30.2.0 '@jest/types': 30.2.0 chalk: 4.1.2 exit-x: 0.2.2 import-local: 3.2.0 - jest-config: 30.2.0(@types/node@20.19.25)(esbuild-register@3.6.0(esbuild@0.27.0)) + jest-config: 30.2.0(@types/node@22.19.1)(esbuild-register@3.6.0(esbuild@0.19.12))(ts-node@10.9.2(@types/node@22.19.1)(typescript@5.9.3)) jest-util: 30.2.0 jest-validate: 30.2.0 yargs: 17.7.2 @@ -33631,7 +33728,7 @@ snapshots: - babel-plugin-macros - supports-color - jest-config@30.2.0(@types/node@20.19.25)(esbuild-register@3.6.0(esbuild@0.27.0)): + jest-config@30.2.0(@types/node@22.19.1)(esbuild-register@3.6.0(esbuild@0.19.12))(ts-node@10.9.2(@types/node@22.19.1)(typescript@5.9.3)): dependencies: '@babel/core': 7.28.5 '@jest/get-type': 30.1.0 @@ -33658,8 +33755,9 @@ snapshots: slash: 3.0.0 strip-json-comments: 3.1.1 optionalDependencies: - '@types/node': 20.19.25 - esbuild-register: 3.6.0(esbuild@0.27.0) + '@types/node': 22.19.1 + esbuild-register: 3.6.0(esbuild@0.19.12) + ts-node: 10.9.2(@types/node@22.19.1)(typescript@5.9.3) transitivePeerDependencies: - babel-plugin-macros - supports-color @@ -34320,12 +34418,12 @@ snapshots: - supports-color - ts-node - jest@30.2.0(@types/node@20.19.25)(esbuild-register@3.6.0(esbuild@0.27.0)): + jest@30.2.0(@types/node@22.19.1)(esbuild-register@3.6.0(esbuild@0.19.12))(ts-node@10.9.2(@types/node@22.19.1)(typescript@5.9.3)): dependencies: - '@jest/core': 30.2.0(esbuild-register@3.6.0(esbuild@0.27.0)) + '@jest/core': 30.2.0(esbuild-register@3.6.0(esbuild@0.19.12))(ts-node@10.9.2(@types/node@22.19.1)(typescript@5.9.3)) '@jest/types': 30.2.0 import-local: 3.2.0 - jest-cli: 30.2.0(@types/node@20.19.25)(esbuild-register@3.6.0(esbuild@0.27.0)) + jest-cli: 30.2.0(@types/node@22.19.1)(esbuild-register@3.6.0(esbuild@0.19.12))(ts-node@10.9.2(@types/node@22.19.1)(typescript@5.9.3)) transitivePeerDependencies: - '@types/node' - babel-plugin-macros @@ -38015,6 +38113,16 @@ snapshots: webpack: 5.100.2(esbuild@0.27.0) webpack-sources: 3.3.3 + react-server-dom-webpack@19.0.0(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(webpack@5.97.1(esbuild@0.19.12)): + dependencies: + acorn-loose: 8.5.2 + neo-async: 2.6.2 + react: 19.1.0 + react-dom: 19.1.0(react@19.1.0) + webpack: 5.97.1(esbuild@0.19.12) + webpack-sources: 3.3.3 + optional: true + react-style-singleton@2.2.3(@types/react@18.3.27)(react@18.3.1): dependencies: get-nonce: 1.0.1 @@ -39266,17 +39374,6 @@ snapshots: ansi-escapes: 4.3.2 supports-hyperlinks: 2.3.0 - terser-webpack-plugin@5.3.14(esbuild@0.19.12)(webpack@5.100.2(esbuild@0.19.12)): - dependencies: - '@jridgewell/trace-mapping': 0.3.31 - jest-worker: 27.5.1 - schema-utils: 4.3.3 - serialize-javascript: 6.0.2 - terser: 5.44.1 - webpack: 5.100.2(esbuild@0.19.12) - optionalDependencies: - esbuild: 0.19.12 - terser-webpack-plugin@5.3.14(esbuild@0.19.12)(webpack@5.97.1(esbuild@0.19.12)): dependencies: '@jridgewell/trace-mapping': 0.3.31 @@ -39343,8 +39440,6 @@ snapshots: text-hex@1.0.0: {} - text-table@0.2.0: {} - thenify-all@1.6.0: dependencies: thenify: 3.3.1 @@ -39517,16 +39612,6 @@ snapshots: babel-jest: 30.2.0(@babel/core@7.28.5) jest-util: 30.2.0 - ts-loader@9.5.4(typescript@5.9.3)(webpack@5.100.2(esbuild@0.19.12)): - dependencies: - chalk: 4.1.2 - enhanced-resolve: 5.18.3 - micromatch: 4.0.8 - semver: 7.7.3 - source-map: 0.7.6 - typescript: 5.9.3 - webpack: 5.100.2(esbuild@0.19.12) - ts-loader@9.5.4(typescript@5.9.3)(webpack@5.100.2(esbuild@0.27.0)): dependencies: chalk: 4.1.2 @@ -39547,6 +39632,16 @@ snapshots: typescript: 5.9.3 webpack: 5.100.2 + ts-loader@9.5.4(typescript@5.9.3)(webpack@5.97.1(esbuild@0.19.12)): + dependencies: + chalk: 4.1.2 + enhanced-resolve: 5.18.3 + micromatch: 4.0.8 + semver: 7.7.3 + source-map: 0.7.6 + typescript: 5.9.3 + webpack: 5.97.1(esbuild@0.19.12) + ts-node@10.9.2(@types/node@20.19.25)(typescript@5.9.3): dependencies: '@cspotcode/source-map-support': 0.8.1 @@ -40135,6 +40230,23 @@ snapshots: lightningcss: 1.30.2 terser: 5.44.1 + vite@6.4.1(@types/node@20.19.25)(jiti@1.21.7)(lightningcss@1.30.2)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1): + dependencies: + esbuild: 0.25.12 + fdir: 6.5.0(picomatch@4.0.3) + picomatch: 4.0.3 + postcss: 8.5.6 + rollup: 4.53.3 + tinyglobby: 0.2.15 + optionalDependencies: + '@types/node': 20.19.25 + fsevents: 2.3.3 + jiti: 1.21.7 + lightningcss: 1.30.2 + terser: 5.44.1 + tsx: 4.20.6 + yaml: 2.8.1 + vite@6.4.1(@types/node@20.19.25)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1): dependencies: esbuild: 0.25.12 @@ -40238,6 +40350,10 @@ snapshots: tsx: 4.20.6 yaml: 2.8.1 + vitefu@1.1.1(vite@6.4.1(@types/node@20.19.25)(jiti@1.21.7)(lightningcss@1.30.2)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1)): + optionalDependencies: + vite: 6.4.1(@types/node@20.19.25)(jiti@1.21.7)(lightningcss@1.30.2)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1) + vitefu@1.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.20.6)(yaml@2.8.1)): optionalDependencies: vite: 6.4.1(@types/node@20.19.25)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1) @@ -40526,38 +40642,6 @@ snapshots: - esbuild - uglify-js - webpack@5.100.2(esbuild@0.19.12): - dependencies: - '@types/eslint-scope': 3.7.7 - '@types/estree': 1.0.8 - '@types/json-schema': 7.0.15 - '@webassemblyjs/ast': 1.14.1 - '@webassemblyjs/wasm-edit': 1.14.1 - '@webassemblyjs/wasm-parser': 1.14.1 - acorn: 8.15.0 - acorn-import-phases: 1.0.4(acorn@8.15.0) - browserslist: 4.28.0 - chrome-trace-event: 1.0.4 - enhanced-resolve: 5.18.3 - es-module-lexer: 1.7.0 - eslint-scope: 5.1.1 - events: 3.3.0 - glob-to-regexp: 0.4.1 - graceful-fs: 4.2.11 - json-parse-even-better-errors: 2.3.1 - loader-runner: 4.3.1 - mime-types: 2.1.35 - neo-async: 2.6.2 - schema-utils: 4.3.3 - tapable: 2.3.0 - terser-webpack-plugin: 5.3.14(esbuild@0.19.12)(webpack@5.100.2(esbuild@0.19.12)) - watchpack: 2.4.4 - webpack-sources: 3.3.3 - transitivePeerDependencies: - - '@swc/core' - - esbuild - - uglify-js - webpack@5.100.2(esbuild@0.27.0): dependencies: '@types/eslint-scope': 3.7.7 diff --git a/services/mana-core-auth/eslint.config.mjs b/services/mana-core-auth/eslint.config.mjs new file mode 100644 index 000000000..41ef245c0 --- /dev/null +++ b/services/mana-core-auth/eslint.config.mjs @@ -0,0 +1,17 @@ +// @ts-check +import { + baseConfig, + typescriptConfig, + nestjsConfig, + prettierConfig, +} from '@manacore/eslint-config'; + +export default [ + { + ignores: ['dist/**', 'node_modules/**'], + }, + ...baseConfig, + ...typescriptConfig, + ...nestjsConfig, + ...prettierConfig, +]; diff --git a/services/mana-core-auth/src/__tests__/utils/mock-factories.ts b/services/mana-core-auth/src/__tests__/utils/mock-factories.ts index 0b3508fdf..b39d3fb99 100644 --- a/services/mana-core-auth/src/__tests__/utils/mock-factories.ts +++ b/services/mana-core-auth/src/__tests__/utils/mock-factories.ts @@ -55,14 +55,14 @@ export const mockSessionFactory = { * Mock Password Factory */ export const mockPasswordFactory = { - create: async (userId: string, password: string = 'TestPassword123!') => ({ + create: async (userId: string, password = 'TestPassword123!') => ({ userId, hashedPassword: await bcrypt.hash(password, 12), createdAt: new Date(), updatedAt: new Date(), }), - createSync: (userId: string, password: string = 'TestPassword123!') => ({ + createSync: (userId: string, password = 'TestPassword123!') => ({ userId, hashedPassword: bcrypt.hashSync(password, 12), createdAt: new Date(), @@ -88,7 +88,7 @@ export const mockBalanceFactory = { ...overrides, }), - withBalance: (userId: string, balance: number, freeCredits: number = 0) => { + withBalance: (userId: string, balance: number, freeCredits = 0) => { return mockBalanceFactory.create(userId, { balance, freeCreditsRemaining: freeCredits, @@ -263,7 +263,7 @@ export const mockOrganizationBalanceFactory = { ...overrides, }), - withBalance: (organizationId: string, balance: number, allocated: number = 0) => { + withBalance: (organizationId: string, balance: number, allocated = 0) => { return mockOrganizationBalanceFactory.create(organizationId, { balance, allocatedCredits: allocated, diff --git a/services/mana-core-auth/src/__tests__/utils/test-helpers.ts b/services/mana-core-auth/src/__tests__/utils/test-helpers.ts index eb557b512..24e9fa101 100644 --- a/services/mana-core-auth/src/__tests__/utils/test-helpers.ts +++ b/services/mana-core-auth/src/__tests__/utils/test-helpers.ts @@ -4,7 +4,7 @@ * Common utilities for writing tests */ -import { ConfigService } from '@nestjs/config'; +import { type ConfigService } from '@nestjs/config'; /** * Create mock ConfigService @@ -40,7 +40,7 @@ export const createMockConfigService = (overrides: Record = {}): Co /** * Create a test date with specific offset */ -export const createTestDate = (offsetMs: number = 0): Date => { +export const createTestDate = (offsetMs = 0): Date => { return new Date(Date.now() + offsetMs); }; @@ -110,7 +110,7 @@ export const assertHelpers = { /** * Assert that a date is recent (within last N seconds) */ - assertIsRecent: (date: Date, withinSeconds: number = 5) => { + assertIsRecent: (date: Date, withinSeconds = 5) => { const now = Date.now(); const dateMs = date.getTime(); const diff = Math.abs(now - dateMs); @@ -206,7 +206,7 @@ export const securityTestHelpers = { isConstantTime: async ( fn1: () => Promise, fn2: () => Promise, - threshold: number = 10 + threshold = 10 ): Promise => { const time1 = await securityTestHelpers.measureExecutionTime(fn1); const time2 = await securityTestHelpers.measureExecutionTime(fn2); @@ -265,7 +265,7 @@ export const performanceHelpers = { /** * Run a function N times and measure average execution time */ - benchmark: async (fn: () => Promise, iterations: number = 100): Promise => { + benchmark: async (fn: () => Promise, iterations = 100): Promise => { const times: number[] = []; for (let i = 0; i < iterations; i++) { diff --git a/services/mana-core-auth/src/ai/ai.service.ts b/services/mana-core-auth/src/ai/ai.service.ts index 22b4405c4..50ce8c87e 100644 --- a/services/mana-core-auth/src/ai/ai.service.ts +++ b/services/mana-core-auth/src/ai/ai.service.ts @@ -1,5 +1,5 @@ import { Injectable, Logger } from '@nestjs/common'; -import { ConfigService } from '@nestjs/config'; +import { type ConfigService } from '@nestjs/config'; import { GoogleGenerativeAI } from '@google/generative-ai'; export interface FeedbackAnalysis { diff --git a/services/mana-core-auth/src/auth/auth.controller.spec.ts b/services/mana-core-auth/src/auth/auth.controller.spec.ts index 8330103f8..b75886104 100644 --- a/services/mana-core-auth/src/auth/auth.controller.spec.ts +++ b/services/mana-core-auth/src/auth/auth.controller.spec.ts @@ -22,7 +22,7 @@ * - POST /auth/organizations/set-active - Set active organization */ -import { Test, TestingModule } from '@nestjs/testing'; +import { Test, type TestingModule } from '@nestjs/testing'; import { UnauthorizedException, ConflictException, diff --git a/services/mana-core-auth/src/auth/auth.controller.ts b/services/mana-core-auth/src/auth/auth.controller.ts index 980ff9301..5a67d1a4d 100644 --- a/services/mana-core-auth/src/auth/auth.controller.ts +++ b/services/mana-core-auth/src/auth/auth.controller.ts @@ -10,14 +10,14 @@ import { HttpCode, HttpStatus, } from '@nestjs/common'; -import { BetterAuthService } from './services/better-auth.service'; -import { RegisterDto } from './dto/register.dto'; -import { LoginDto } from './dto/login.dto'; -import { RefreshTokenDto } from './dto/refresh-token.dto'; -import { RegisterB2BDto } from './dto/register-b2b.dto'; -import { InviteEmployeeDto } from './dto/invite-employee.dto'; -import { AcceptInvitationDto } from './dto/accept-invitation.dto'; -import { SetActiveOrganizationDto } from './dto/set-active-organization.dto'; +import { type BetterAuthService } from './services/better-auth.service'; +import { type RegisterDto } from './dto/register.dto'; +import { type LoginDto } from './dto/login.dto'; +import { type RefreshTokenDto } from './dto/refresh-token.dto'; +import { type RegisterB2BDto } from './dto/register-b2b.dto'; +import { type InviteEmployeeDto } from './dto/invite-employee.dto'; +import { type AcceptInvitationDto } from './dto/accept-invitation.dto'; +import { type SetActiveOrganizationDto } from './dto/set-active-organization.dto'; import { JwtAuthGuard } from '../common/guards/jwt-auth.guard'; /** diff --git a/services/mana-core-auth/src/auth/jwt-validation.spec.ts b/services/mana-core-auth/src/auth/jwt-validation.spec.ts index 1e542af7c..432717728 100644 --- a/services/mana-core-auth/src/auth/jwt-validation.spec.ts +++ b/services/mana-core-auth/src/auth/jwt-validation.spec.ts @@ -19,9 +19,9 @@ */ import { Test, TestingModule } from '@nestjs/testing'; -import { ConfigService } from '@nestjs/config'; +import { type ConfigService } from '@nestjs/config'; import * as jwt from 'jsonwebtoken'; -import { JWTCustomPayload } from './better-auth.config'; +import { type JWTCustomPayload } from './better-auth.config'; import { createMockConfigService } from '../__tests__/utils/test-helpers'; import { mockUserFactory } from '../__tests__/utils/mock-factories'; diff --git a/services/mana-core-auth/src/auth/services/better-auth.service.spec.ts b/services/mana-core-auth/src/auth/services/better-auth.service.spec.ts index 1bcc1f132..ef63117ad 100644 --- a/services/mana-core-auth/src/auth/services/better-auth.service.spec.ts +++ b/services/mana-core-auth/src/auth/services/better-auth.service.spec.ts @@ -9,7 +9,7 @@ * - Credit balance initialization */ -import { Test, TestingModule } from '@nestjs/testing'; +import { Test, type TestingModule } from '@nestjs/testing'; import { ConfigService } from '@nestjs/config'; import { ConflictException, NotFoundException, ForbiddenException } from '@nestjs/common'; import { BetterAuthService } from './better-auth.service'; diff --git a/services/mana-core-auth/src/auth/services/better-auth.service.ts b/services/mana-core-auth/src/auth/services/better-auth.service.ts index 20233d5e2..99f651a52 100644 --- a/services/mana-core-auth/src/auth/services/better-auth.service.ts +++ b/services/mana-core-auth/src/auth/services/better-auth.service.ts @@ -20,7 +20,7 @@ import { ForbiddenException, UnauthorizedException, } from '@nestjs/common'; -import { ConfigService } from '@nestjs/config'; +import { type ConfigService } from '@nestjs/config'; import { createBetterAuth, type BetterAuthInstance } from '../better-auth.config'; import { getDb } from '../../db/connection'; import { balances, organizationBalances } from '../../db/schema/credits.schema'; diff --git a/services/mana-core-auth/src/common/decorators/current-user.decorator.ts b/services/mana-core-auth/src/common/decorators/current-user.decorator.ts index c1dcd7ce4..086e87af7 100644 --- a/services/mana-core-auth/src/common/decorators/current-user.decorator.ts +++ b/services/mana-core-auth/src/common/decorators/current-user.decorator.ts @@ -1,4 +1,4 @@ -import { createParamDecorator, ExecutionContext } from '@nestjs/common'; +import { createParamDecorator, type ExecutionContext } from '@nestjs/common'; export interface CurrentUserData { userId: string; diff --git a/services/mana-core-auth/src/common/filters/http-exception.filter.ts b/services/mana-core-auth/src/common/filters/http-exception.filter.ts index be7b276d1..c1bd069d2 100644 --- a/services/mana-core-auth/src/common/filters/http-exception.filter.ts +++ b/services/mana-core-auth/src/common/filters/http-exception.filter.ts @@ -1,5 +1,11 @@ -import { ExceptionFilter, Catch, ArgumentsHost, HttpException, HttpStatus } from '@nestjs/common'; -import { Response } from 'express'; +import { + type ExceptionFilter, + Catch, + type ArgumentsHost, + HttpException, + HttpStatus, +} from '@nestjs/common'; +import { type Response } from 'express'; @Catch() export class HttpExceptionFilter implements ExceptionFilter { diff --git a/services/mana-core-auth/src/common/guards/jwt-auth.guard.ts b/services/mana-core-auth/src/common/guards/jwt-auth.guard.ts index 366d89743..b532763ce 100644 --- a/services/mana-core-auth/src/common/guards/jwt-auth.guard.ts +++ b/services/mana-core-auth/src/common/guards/jwt-auth.guard.ts @@ -1,5 +1,10 @@ -import { Injectable, CanActivate, ExecutionContext, UnauthorizedException } from '@nestjs/common'; -import { ConfigService } from '@nestjs/config'; +import { + Injectable, + type CanActivate, + type ExecutionContext, + UnauthorizedException, +} from '@nestjs/common'; +import { type ConfigService } from '@nestjs/config'; import * as jwt from 'jsonwebtoken'; @Injectable() diff --git a/services/mana-core-auth/src/common/guards/optional-auth.guard.ts b/services/mana-core-auth/src/common/guards/optional-auth.guard.ts index 6a37722cf..7976b55eb 100644 --- a/services/mana-core-auth/src/common/guards/optional-auth.guard.ts +++ b/services/mana-core-auth/src/common/guards/optional-auth.guard.ts @@ -1,5 +1,5 @@ -import { Injectable, CanActivate, ExecutionContext } from '@nestjs/common'; -import { ConfigService } from '@nestjs/config'; +import { Injectable, type CanActivate, type ExecutionContext } from '@nestjs/common'; +import { type ConfigService } from '@nestjs/config'; import * as jwt from 'jsonwebtoken'; /** diff --git a/services/mana-core-auth/src/credits/credits.controller.spec.ts b/services/mana-core-auth/src/credits/credits.controller.spec.ts index 389ab34da..7f646b1dc 100644 --- a/services/mana-core-auth/src/credits/credits.controller.spec.ts +++ b/services/mana-core-auth/src/credits/credits.controller.spec.ts @@ -17,12 +17,12 @@ * - POST /credits/organization/:orgId/use - Use credits with org tracking */ -import { Test, TestingModule } from '@nestjs/testing'; +import { Test, type TestingModule } from '@nestjs/testing'; import { BadRequestException, ForbiddenException, NotFoundException } from '@nestjs/common'; import { CreditsController } from './credits.controller'; import { CreditsService } from './credits.service'; import { JwtAuthGuard } from '../common/guards/jwt-auth.guard'; -import { CurrentUserData } from '../common/decorators/current-user.decorator'; +import { type CurrentUserData } from '../common/decorators/current-user.decorator'; import { mockBalanceFactory, mockTransactionFactory, diff --git a/services/mana-core-auth/src/credits/credits.controller.ts b/services/mana-core-auth/src/credits/credits.controller.ts index 586806038..7901b1cca 100644 --- a/services/mana-core-auth/src/credits/credits.controller.ts +++ b/services/mana-core-auth/src/credits/credits.controller.ts @@ -1,9 +1,9 @@ import { Controller, Get, Post, Body, UseGuards, Query, ParseIntPipe, Param } from '@nestjs/common'; -import { CreditsService } from './credits.service'; +import { type CreditsService } from './credits.service'; import { JwtAuthGuard } from '../common/guards/jwt-auth.guard'; -import { CurrentUser, CurrentUserData } from '../common/decorators/current-user.decorator'; -import { UseCreditsDto } from './dto/use-credits.dto'; -import { AllocateCreditsDto } from './dto/allocate-credits.dto'; +import { CurrentUser, type CurrentUserData } from '../common/decorators/current-user.decorator'; +import { type UseCreditsDto } from './dto/use-credits.dto'; +import { type AllocateCreditsDto } from './dto/allocate-credits.dto'; @Controller('credits') @UseGuards(JwtAuthGuard) diff --git a/services/mana-core-auth/src/credits/credits.service.spec.ts b/services/mana-core-auth/src/credits/credits.service.spec.ts index 430d88af6..7cb0bfb7d 100644 --- a/services/mana-core-auth/src/credits/credits.service.spec.ts +++ b/services/mana-core-auth/src/credits/credits.service.spec.ts @@ -9,7 +9,7 @@ * - Idempotency */ -import { Test, TestingModule } from '@nestjs/testing'; +import { Test, type TestingModule } from '@nestjs/testing'; import { ConfigService } from '@nestjs/config'; import { BadRequestException, diff --git a/services/mana-core-auth/src/credits/credits.service.ts b/services/mana-core-auth/src/credits/credits.service.ts index c19cff448..3a5442709 100644 --- a/services/mana-core-auth/src/credits/credits.service.ts +++ b/services/mana-core-auth/src/credits/credits.service.ts @@ -5,7 +5,7 @@ import { ConflictException, ForbiddenException, } from '@nestjs/common'; -import { ConfigService } from '@nestjs/config'; +import { type ConfigService } from '@nestjs/config'; import { eq, and, sql, desc, sum } from 'drizzle-orm'; import { getDb } from '../db/connection'; import { @@ -19,8 +19,8 @@ import { members, organizations, } from '../db/schema'; -import { UseCreditsDto } from './dto/use-credits.dto'; -import { AllocateCreditsDto } from './dto/allocate-credits.dto'; +import { type UseCreditsDto } from './dto/use-credits.dto'; +import { type AllocateCreditsDto } from './dto/allocate-credits.dto'; @Injectable() export class CreditsService { @@ -138,8 +138,8 @@ export class CreditsService { } // Calculate deduction from free and paid credits - let freeCreditsUsed = Math.min(useCreditsDto.amount, currentBalance.freeCreditsRemaining); - let paidCreditsUsed = useCreditsDto.amount - freeCreditsUsed; + const freeCreditsUsed = Math.min(useCreditsDto.amount, currentBalance.freeCreditsRemaining); + const paidCreditsUsed = useCreditsDto.amount - freeCreditsUsed; const newFreeCredits = currentBalance.freeCreditsRemaining - freeCreditsUsed; const newBalance = currentBalance.balance - paidCreditsUsed; @@ -204,7 +204,7 @@ export class CreditsService { }); } - async getTransactionHistory(userId: string, limit: number = 50, offset: number = 0) { + async getTransactionHistory(userId: string, limit = 50, offset = 0) { const db = this.getDb(); const transactionList = await db @@ -596,8 +596,8 @@ export class CreditsService { } // Calculate deduction from free and paid credits - let freeCreditsUsed = Math.min(useCreditsDto.amount, currentBalance.freeCreditsRemaining); - let paidCreditsUsed = useCreditsDto.amount - freeCreditsUsed; + const freeCreditsUsed = Math.min(useCreditsDto.amount, currentBalance.freeCreditsRemaining); + const paidCreditsUsed = useCreditsDto.amount - freeCreditsUsed; const newFreeCredits = currentBalance.freeCreditsRemaining - freeCreditsUsed; const newBalance = currentBalance.balance - paidCreditsUsed; diff --git a/services/mana-core-auth/src/feedback/feedback.controller.ts b/services/mana-core-auth/src/feedback/feedback.controller.ts index 1488263de..32ea1aad1 100644 --- a/services/mana-core-auth/src/feedback/feedback.controller.ts +++ b/services/mana-core-auth/src/feedback/feedback.controller.ts @@ -9,11 +9,11 @@ import { UseGuards, Headers, } from '@nestjs/common'; -import { FeedbackService } from './feedback.service'; +import { type FeedbackService } from './feedback.service'; import { JwtAuthGuard } from '../common/guards/jwt-auth.guard'; import { OptionalAuthGuard } from '../common/guards/optional-auth.guard'; -import { CurrentUser, CurrentUserData } from '../common/decorators/current-user.decorator'; -import { CreateFeedbackDto, FeedbackQueryDto } from './dto'; +import { CurrentUser, type CurrentUserData } from '../common/decorators/current-user.decorator'; +import { type CreateFeedbackDto, type FeedbackQueryDto } from './dto'; @Controller('feedback') export class FeedbackController { diff --git a/services/mana-core-auth/src/feedback/feedback.service.ts b/services/mana-core-auth/src/feedback/feedback.service.ts index 9bcd914e3..4576099d4 100644 --- a/services/mana-core-auth/src/feedback/feedback.service.ts +++ b/services/mana-core-auth/src/feedback/feedback.service.ts @@ -1,10 +1,10 @@ import { Injectable, NotFoundException, ConflictException, Logger } from '@nestjs/common'; -import { ConfigService } from '@nestjs/config'; +import { type ConfigService } from '@nestjs/config'; import { eq, and, desc, sql, count } from 'drizzle-orm'; import { getDb } from '../db/connection'; import { userFeedback, feedbackVotes } from '../db/schema'; -import { CreateFeedbackDto, FeedbackQueryDto } from './dto'; -import { AiService } from '../ai/ai.service'; +import { type CreateFeedbackDto, type FeedbackQueryDto } from './dto'; +import { type AiService } from '../ai/ai.service'; @Injectable() export class FeedbackService { diff --git a/services/mana-core-auth/src/settings/settings.controller.ts b/services/mana-core-auth/src/settings/settings.controller.ts index 5d4bb7a85..755482a97 100644 --- a/services/mana-core-auth/src/settings/settings.controller.ts +++ b/services/mana-core-auth/src/settings/settings.controller.ts @@ -1,8 +1,8 @@ import { Controller, Get, Patch, Delete, Body, Param, UseGuards } from '@nestjs/common'; -import { SettingsService } from './settings.service'; +import { type SettingsService } from './settings.service'; import { JwtAuthGuard } from '../common/guards/jwt-auth.guard'; -import { CurrentUser, CurrentUserData } from '../common/decorators/current-user.decorator'; -import { UpdateGlobalSettingsDto, UpdateAppOverrideDto } from './dto'; +import { CurrentUser, type CurrentUserData } from '../common/decorators/current-user.decorator'; +import { type UpdateGlobalSettingsDto, type UpdateAppOverrideDto } from './dto'; @Controller('settings') @UseGuards(JwtAuthGuard) diff --git a/services/mana-core-auth/src/settings/settings.service.ts b/services/mana-core-auth/src/settings/settings.service.ts index 459c0e458..edd16ee30 100644 --- a/services/mana-core-auth/src/settings/settings.service.ts +++ b/services/mana-core-auth/src/settings/settings.service.ts @@ -1,14 +1,14 @@ import { Injectable, Logger } from '@nestjs/common'; -import { ConfigService } from '@nestjs/config'; +import { type ConfigService } from '@nestjs/config'; import { eq } from 'drizzle-orm'; import { getDb } from '../db/connection'; import { userSettings } from '../db/schema'; import { - UpdateGlobalSettingsDto, - UpdateAppOverrideDto, - GlobalSettings, - AppOverride, - UserSettingsResponse, + type UpdateGlobalSettingsDto, + type UpdateAppOverrideDto, + type GlobalSettings, + type AppOverride, + type UserSettingsResponse, } from './dto'; // Default settings for new users diff --git a/services/mana-core-auth/test/e2e/b2b-journey.e2e-spec.ts b/services/mana-core-auth/test/e2e/b2b-journey.e2e-spec.ts index 6e28b8d60..afef87392 100644 --- a/services/mana-core-auth/test/e2e/b2b-journey.e2e-spec.ts +++ b/services/mana-core-auth/test/e2e/b2b-journey.e2e-spec.ts @@ -15,8 +15,8 @@ * These tests will be updated when Better Auth organization plugin is fully integrated. */ -import { Test, TestingModule } from '@nestjs/testing'; -import { INestApplication } from '@nestjs/common'; +import { Test, type TestingModule } from '@nestjs/testing'; +import { type INestApplication } from '@nestjs/common'; import request from 'supertest'; import { AppModule } from '../../src/app.module'; import { ConfigService } from '@nestjs/config'; @@ -25,7 +25,7 @@ import { organizations, members } from '../../src/db/schema'; import { randomBytes } from 'crypto'; // Helper to generate random IDs (avoiding nanoid ESM issues in Jest) -const generateId = (length: number = 16): string => { +const generateId = (length = 16): string => { return randomBytes(Math.ceil(length / 2)) .toString('hex') .slice(0, length); diff --git a/services/mana-core-auth/test/e2e/b2c-journey.e2e-spec.ts b/services/mana-core-auth/test/e2e/b2c-journey.e2e-spec.ts index 37d27c8e3..ac1838d2d 100644 --- a/services/mana-core-auth/test/e2e/b2c-journey.e2e-spec.ts +++ b/services/mana-core-auth/test/e2e/b2c-journey.e2e-spec.ts @@ -10,8 +10,8 @@ * 6. Logout */ -import { Test, TestingModule } from '@nestjs/testing'; -import { INestApplication } from '@nestjs/common'; +import { Test, type TestingModule } from '@nestjs/testing'; +import { type INestApplication } from '@nestjs/common'; import request from 'supertest'; import { AppModule } from '../../src/app.module'; diff --git a/services/mana-core-auth/test/integration/auth-flow.integration.spec.ts b/services/mana-core-auth/test/integration/auth-flow.integration.spec.ts index c1b71d91a..1cc22542b 100644 --- a/services/mana-core-auth/test/integration/auth-flow.integration.spec.ts +++ b/services/mana-core-auth/test/integration/auth-flow.integration.spec.ts @@ -7,7 +7,7 @@ * - Multi-device sessions */ -import { Test, TestingModule } from '@nestjs/testing'; +import { Test, type TestingModule } from '@nestjs/testing'; import { ConfigModule, ConfigService } from '@nestjs/config'; import { AuthService } from '../../src/auth/auth.service'; import { CreditsService } from '../../src/credits/credits.service'; diff --git a/services/mana-core-auth/test/integration/credit-flow.integration.spec.ts b/services/mana-core-auth/test/integration/credit-flow.integration.spec.ts index 4589fd3c5..3d3c39b00 100644 --- a/services/mana-core-auth/test/integration/credit-flow.integration.spec.ts +++ b/services/mana-core-auth/test/integration/credit-flow.integration.spec.ts @@ -7,7 +7,7 @@ * - Daily free credit reset */ -import { Test, TestingModule } from '@nestjs/testing'; +import { Test, type TestingModule } from '@nestjs/testing'; import { ConfigModule } from '@nestjs/config'; import { CreditsService } from '../../src/credits/credits.service'; import { AuthService } from '../../src/auth/auth.service'; diff --git a/services/mana-core-auth/test/setup-e2e.ts b/services/mana-core-auth/test/setup-e2e.ts index 11590182c..d270bfe11 100644 --- a/services/mana-core-auth/test/setup-e2e.ts +++ b/services/mana-core-auth/test/setup-e2e.ts @@ -11,7 +11,7 @@ jest.setTimeout(30000); /** * Generate random ID using crypto */ -const generateRandomId = (length: number = 10): string => { +const generateRandomId = (length = 10): string => { return crypto .randomBytes(Math.ceil(length / 2)) .toString('hex') @@ -41,7 +41,7 @@ global.e2eTestUtils = { /** * Wait for server to be ready */ - waitForServer: async (url: string, maxAttempts: number = 30): Promise => { + waitForServer: async (url: string, maxAttempts = 30): Promise => { for (let i = 0; i < maxAttempts; i++) { try { const response = await fetch(`${url}/health/live`); diff --git a/services/mana-core-auth/test/setup.ts b/services/mana-core-auth/test/setup.ts index 795e4a418..7bfbce427 100644 --- a/services/mana-core-auth/test/setup.ts +++ b/services/mana-core-auth/test/setup.ts @@ -19,11 +19,7 @@ global.testUtils = { /** * Wait for a condition to be true */ - waitFor: async ( - condition: () => boolean, - timeout: number = 5000, - interval: number = 100 - ): Promise => { + waitFor: async (condition: () => boolean, timeout = 5000, interval = 100): Promise => { const startTime = Date.now(); while (!condition()) { if (Date.now() - startTime > timeout) {