From 16cb8e753b8fbf9dc99e8c03b188a61a27cc6f38 Mon Sep 17 00:00:00 2001 From: Wuesteon Date: Wed, 3 Dec 2025 23:42:37 +0100 Subject: [PATCH 1/6] 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) { From e9caa4a217f90a120bf61cc8a97a0a49342f86c4 Mon Sep 17 00:00:00 2001 From: Wuesteon Date: Thu, 4 Dec 2025 00:32:13 +0100 Subject: [PATCH 2/6] fix lint --- .claude-flow/metrics/system-metrics.json | 1200 +++++++++++++++++ apps/bauntown/apps/landing/eslint.config.js | 11 - apps/calendar/apps/landing/eslint.config.js | 11 - .../packages/shared/src/types/calendar.ts | 10 +- apps/chat/apps/landing/eslint.config.js | 11 - .../apps/landing/eslint.config.js | 11 - apps/manacore/apps/landing/eslint.config.js | 11 - apps/manadeck/apps/landing/eslint.config.js | 11 - apps/memoro/apps/landing/eslint.config.js | 11 - apps/news/apps/landing/eslint.config.js | 11 - apps/nutriphi/apps/landing/eslint.config.js | 11 - apps/picture/apps/landing/eslint.config.js | 11 - .../packages/design-tokens/native/theme.mjs | 1017 +++++++------- .../packages/mobile-ui/cli/src/utils/files.ts | 2 +- .../mobile-ui/cli/src/utils/registry.ts | 2 +- apps/presi/apps/landing/eslint.config.js | 11 - apps/quote/apps/landing/eslint.config.js | 11 - apps/wisekeep/apps/landing/eslint.config.js | 11 - apps/zitare/apps/landing/eslint.config.js | 11 - .../packages/web-ui/src/stores/toast.ts | 2 +- eslint.config.mjs | 14 + games/whopixels/js/scenes/BootScene.js | 4 +- games/whopixels/server.js | 2 +- package.json | 4 +- packages/eslint-config/typescript.js | 2 + .../src/decorators/current-user.decorator.ts | 2 +- .../interfaces/mana-core-options.interface.ts | 2 +- .../src/services/credit-client.service.ts | 15 +- packages/news-database/src/index.ts | 2 +- packages/shared-auth-stores/src/types.ts | 2 - packages/shared-auth/src/core/authService.ts | 7 +- packages/shared-auth/src/core/jwtUtils.ts | 2 +- packages/shared-config/src/env.ts | 2 +- packages/shared-config/src/features.ts | 2 +- .../src/createCreditService.ts | 9 +- packages/shared-credit-service/src/types.ts | 2 - .../shared-errors/src/errors/app-error.ts | 6 +- .../src/nestjs/app-exception.filter.ts | 2 +- .../src/createFeedbackService.ts | 1 - .../src/decorators/current-user.decorator.ts | 4 +- packages/shared-supabase/src/index.ts | 2 +- .../src/user-settings-store.svelte.ts | 6 +- packages/shared-utils/src/date.ts | 2 +- packages/shared-utils/src/format.ts | 16 +- packages/shared-utils/src/string.ts | 2 +- scripts/generate-env.mjs | 11 +- 46 files changed, 1784 insertions(+), 728 deletions(-) delete mode 100644 apps/bauntown/apps/landing/eslint.config.js delete mode 100644 apps/calendar/apps/landing/eslint.config.js delete mode 100644 apps/chat/apps/landing/eslint.config.js delete mode 100644 apps/maerchenzauber/apps/landing/eslint.config.js delete mode 100644 apps/manacore/apps/landing/eslint.config.js delete mode 100644 apps/manadeck/apps/landing/eslint.config.js delete mode 100644 apps/memoro/apps/landing/eslint.config.js delete mode 100644 apps/news/apps/landing/eslint.config.js delete mode 100644 apps/nutriphi/apps/landing/eslint.config.js delete mode 100644 apps/picture/apps/landing/eslint.config.js delete mode 100644 apps/presi/apps/landing/eslint.config.js delete mode 100644 apps/quote/apps/landing/eslint.config.js delete mode 100644 apps/wisekeep/apps/landing/eslint.config.js delete mode 100644 apps/zitare/apps/landing/eslint.config.js diff --git a/.claude-flow/metrics/system-metrics.json b/.claude-flow/metrics/system-metrics.json index f318b78fa..b02b4ddac 100644 --- a/.claude-flow/metrics/system-metrics.json +++ b/.claude-flow/metrics/system-metrics.json @@ -190,5 +190,1205 @@ "cpuLoad": 0.14306640625, "platform": "darwin", "uptime": 165739 + }, + { + "timestamp": 1764801747189, + "memoryTotal": 34359738368, + "memoryUsed": 34252701696, + "memoryFree": 107036672, + "memoryUsagePercent": 99.6884822845459, + "memoryEfficiency": 0.31151771545410156, + "cpuCount": 12, + "cpuLoad": 0.13777669270833334, + "platform": "darwin", + "uptime": 165769 + }, + { + "timestamp": 1764801777190, + "memoryTotal": 34359738368, + "memoryUsed": 31789268992, + "memoryFree": 2570469376, + "memoryUsagePercent": 92.51894950866699, + "memoryEfficiency": 7.481050491333008, + "cpuCount": 12, + "cpuLoad": 0.2985432942708333, + "platform": "darwin", + "uptime": 165799 + }, + { + "timestamp": 1764801807192, + "memoryTotal": 34359738368, + "memoryUsed": 32492240896, + "memoryFree": 1867497472, + "memoryUsagePercent": 94.56486701965332, + "memoryEfficiency": 5.43513298034668, + "cpuCount": 12, + "cpuLoad": 0.228271484375, + "platform": "darwin", + "uptime": 165829 + }, + { + "timestamp": 1764801837193, + "memoryTotal": 34359738368, + "memoryUsed": 33594834944, + "memoryFree": 764903424, + "memoryUsagePercent": 97.77383804321289, + "memoryEfficiency": 2.2261619567871094, + "cpuCount": 12, + "cpuLoad": 0.4375406901041667, + "platform": "darwin", + "uptime": 165859 + }, + { + "timestamp": 1764801867195, + "memoryTotal": 34359738368, + "memoryUsed": 34115747840, + "memoryFree": 243990528, + "memoryUsagePercent": 99.2898941040039, + "memoryEfficiency": 0.7101058959960938, + "cpuCount": 12, + "cpuLoad": 0.3369954427083333, + "platform": "darwin", + "uptime": 165889 + }, + { + "timestamp": 1764801897196, + "memoryTotal": 34359738368, + "memoryUsed": 34266759168, + "memoryFree": 92979200, + "memoryUsagePercent": 99.72939491271973, + "memoryEfficiency": 0.27060508728027344, + "cpuCount": 12, + "cpuLoad": 0.3223876953125, + "platform": "darwin", + "uptime": 165919 + }, + { + "timestamp": 1764801927198, + "memoryTotal": 34359738368, + "memoryUsed": 34255568896, + "memoryFree": 104169472, + "memoryUsagePercent": 99.69682693481445, + "memoryEfficiency": 0.3031730651855469, + "cpuCount": 12, + "cpuLoad": 0.2283935546875, + "platform": "darwin", + "uptime": 165949 + }, + { + "timestamp": 1764801957199, + "memoryTotal": 34359738368, + "memoryUsed": 34242625536, + "memoryFree": 117112832, + "memoryUsagePercent": 99.6591567993164, + "memoryEfficiency": 0.34084320068359375, + "cpuCount": 12, + "cpuLoad": 0.2630208333333333, + "platform": "darwin", + "uptime": 165979 + }, + { + "timestamp": 1764801987200, + "memoryTotal": 34359738368, + "memoryUsed": 33795866624, + "memoryFree": 563871744, + "memoryUsagePercent": 98.35891723632812, + "memoryEfficiency": 1.641082763671875, + "cpuCount": 12, + "cpuLoad": 0.5034586588541666, + "platform": "darwin", + "uptime": 166009 + }, + { + "timestamp": 1764802017200, + "memoryTotal": 34359738368, + "memoryUsed": 34246017024, + "memoryFree": 113721344, + "memoryUsagePercent": 99.66902732849121, + "memoryEfficiency": 0.33097267150878906, + "cpuCount": 12, + "cpuLoad": 0.3601888020833333, + "platform": "darwin", + "uptime": 166039 + }, + { + "timestamp": 1764802047201, + "memoryTotal": 34359738368, + "memoryUsed": 31782846464, + "memoryFree": 2576891904, + "memoryUsagePercent": 92.50025749206543, + "memoryEfficiency": 7.49974250793457, + "cpuCount": 12, + "cpuLoad": 0.2558186848958333, + "platform": "darwin", + "uptime": 166069 + }, + { + "timestamp": 1764802077202, + "memoryTotal": 34359738368, + "memoryUsed": 32250986496, + "memoryFree": 2108751872, + "memoryUsagePercent": 93.86272430419922, + "memoryEfficiency": 6.137275695800781, + "cpuCount": 12, + "cpuLoad": 0.1943359375, + "platform": "darwin", + "uptime": 166099 + }, + { + "timestamp": 1764802107203, + "memoryTotal": 34359738368, + "memoryUsed": 32287342592, + "memoryFree": 2072395776, + "memoryUsagePercent": 93.96853446960449, + "memoryEfficiency": 6.031465530395508, + "cpuCount": 12, + "cpuLoad": 0.15450032552083334, + "platform": "darwin", + "uptime": 166129 + }, + { + "timestamp": 1764802137204, + "memoryTotal": 34359738368, + "memoryUsed": 32872005632, + "memoryFree": 1487732736, + "memoryUsagePercent": 95.67012786865234, + "memoryEfficiency": 4.329872131347656, + "cpuCount": 12, + "cpuLoad": 0.1551513671875, + "platform": "darwin", + "uptime": 166159 + }, + { + "timestamp": 1764802167205, + "memoryTotal": 34359738368, + "memoryUsed": 33340588032, + "memoryFree": 1019150336, + "memoryUsagePercent": 97.03388214111328, + "memoryEfficiency": 2.9661178588867188, + "cpuCount": 12, + "cpuLoad": 0.13468424479166666, + "platform": "darwin", + "uptime": 166189 + }, + { + "timestamp": 1764802197207, + "memoryTotal": 34359738368, + "memoryUsed": 33546076160, + "memoryFree": 813662208, + "memoryUsagePercent": 97.63193130493164, + "memoryEfficiency": 2.3680686950683594, + "cpuCount": 12, + "cpuLoad": 0.1441650390625, + "platform": "darwin", + "uptime": 166219 + }, + { + "timestamp": 1764802227208, + "memoryTotal": 34359738368, + "memoryUsed": 33779236864, + "memoryFree": 580501504, + "memoryUsagePercent": 98.31051826477051, + "memoryEfficiency": 1.6894817352294922, + "cpuCount": 12, + "cpuLoad": 0.170166015625, + "platform": "darwin", + "uptime": 166249 + }, + { + "timestamp": 1764802257210, + "memoryTotal": 34359738368, + "memoryUsed": 33845870592, + "memoryFree": 513867776, + "memoryUsagePercent": 98.50444793701172, + "memoryEfficiency": 1.4955520629882812, + "cpuCount": 12, + "cpuLoad": 0.18473307291666666, + "platform": "darwin", + "uptime": 166279 + }, + { + "timestamp": 1764802287211, + "memoryTotal": 34359738368, + "memoryUsed": 34235056128, + "memoryFree": 124682240, + "memoryUsagePercent": 99.63712692260742, + "memoryEfficiency": 0.3628730773925781, + "cpuCount": 12, + "cpuLoad": 0.14347330729166666, + "platform": "darwin", + "uptime": 166309 + }, + { + "timestamp": 1764802317212, + "memoryTotal": 34359738368, + "memoryUsed": 34210660352, + "memoryFree": 149078016, + "memoryUsagePercent": 99.56612586975098, + "memoryEfficiency": 0.43387413024902344, + "cpuCount": 12, + "cpuLoad": 0.20035807291666666, + "platform": "darwin", + "uptime": 166339 + }, + { + "timestamp": 1764802347213, + "memoryTotal": 34359738368, + "memoryUsed": 34050736128, + "memoryFree": 309002240, + "memoryUsagePercent": 99.1006851196289, + "memoryEfficiency": 0.8993148803710938, + "cpuCount": 12, + "cpuLoad": 0.18831380208333334, + "platform": "darwin", + "uptime": 166369 + }, + { + "timestamp": 1764802377214, + "memoryTotal": 34359738368, + "memoryUsed": 34266578944, + "memoryFree": 93159424, + "memoryUsagePercent": 99.7288703918457, + "memoryEfficiency": 0.2711296081542969, + "cpuCount": 12, + "cpuLoad": 0.24503580729166666, + "platform": "darwin", + "uptime": 166399 + }, + { + "timestamp": 1764802407215, + "memoryTotal": 34359738368, + "memoryUsed": 34224930816, + "memoryFree": 134807552, + "memoryUsagePercent": 99.60765838623047, + "memoryEfficiency": 0.39234161376953125, + "cpuCount": 12, + "cpuLoad": 0.3671875, + "platform": "darwin", + "uptime": 166429 + }, + { + "timestamp": 1764802437216, + "memoryTotal": 34359738368, + "memoryUsed": 34183938048, + "memoryFree": 175800320, + "memoryUsagePercent": 99.48835372924805, + "memoryEfficiency": 0.5116462707519531, + "cpuCount": 12, + "cpuLoad": 0.2810465494791667, + "platform": "darwin", + "uptime": 166459 + }, + { + "timestamp": 1764802467218, + "memoryTotal": 34359738368, + "memoryUsed": 34048901120, + "memoryFree": 310837248, + "memoryUsagePercent": 99.09534454345703, + "memoryEfficiency": 0.9046554565429688, + "cpuCount": 12, + "cpuLoad": 0.20487467447916666, + "platform": "darwin", + "uptime": 166489 + }, + { + "timestamp": 1764802497219, + "memoryTotal": 34359738368, + "memoryUsed": 34060861440, + "memoryFree": 298876928, + "memoryUsagePercent": 99.13015365600586, + "memoryEfficiency": 0.8698463439941406, + "cpuCount": 12, + "cpuLoad": 0.1571044921875, + "platform": "darwin", + "uptime": 166519 + }, + { + "timestamp": 1764802527221, + "memoryTotal": 34359738368, + "memoryUsed": 34274754560, + "memoryFree": 84983808, + "memoryUsagePercent": 99.75266456604004, + "memoryEfficiency": 0.24733543395996094, + "cpuCount": 12, + "cpuLoad": 0.13077799479166666, + "platform": "darwin", + "uptime": 166549 + }, + { + "timestamp": 1764802557222, + "memoryTotal": 34359738368, + "memoryUsed": 34244870144, + "memoryFree": 114868224, + "memoryUsagePercent": 99.66568946838379, + "memoryEfficiency": 0.33431053161621094, + "cpuCount": 12, + "cpuLoad": 0.10628255208333333, + "platform": "darwin", + "uptime": 166579 + }, + { + "timestamp": 1764802587223, + "memoryTotal": 34359738368, + "memoryUsed": 34220195840, + "memoryFree": 139542528, + "memoryUsagePercent": 99.5938777923584, + "memoryEfficiency": 0.40612220764160156, + "cpuCount": 12, + "cpuLoad": 0.09073893229166667, + "platform": "darwin", + "uptime": 166609 + }, + { + "timestamp": 1764802617224, + "memoryTotal": 34359738368, + "memoryUsed": 34025930752, + "memoryFree": 333807616, + "memoryUsagePercent": 99.02849197387695, + "memoryEfficiency": 0.9715080261230469, + "cpuCount": 12, + "cpuLoad": 0.13680013020833334, + "platform": "darwin", + "uptime": 166639 + }, + { + "timestamp": 1764802647226, + "memoryTotal": 34359738368, + "memoryUsed": 34231894016, + "memoryFree": 127844352, + "memoryUsagePercent": 99.6279239654541, + "memoryEfficiency": 0.37207603454589844, + "cpuCount": 12, + "cpuLoad": 0.17045084635416666, + "platform": "darwin", + "uptime": 166669 + }, + { + "timestamp": 1764802677228, + "memoryTotal": 34359738368, + "memoryUsed": 34127970304, + "memoryFree": 231768064, + "memoryUsagePercent": 99.32546615600586, + "memoryEfficiency": 0.6745338439941406, + "cpuCount": 12, + "cpuLoad": 0.136474609375, + "platform": "darwin", + "uptime": 166699 + }, + { + "timestamp": 1764802707229, + "memoryTotal": 34359738368, + "memoryUsed": 34225324032, + "memoryFree": 134414336, + "memoryUsagePercent": 99.60880279541016, + "memoryEfficiency": 0.39119720458984375, + "cpuCount": 12, + "cpuLoad": 0.11572265625, + "platform": "darwin", + "uptime": 166729 + }, + { + "timestamp": 1764802737230, + "memoryTotal": 34359738368, + "memoryUsed": 34229420032, + "memoryFree": 130318336, + "memoryUsagePercent": 99.62072372436523, + "memoryEfficiency": 0.3792762756347656, + "cpuCount": 12, + "cpuLoad": 0.11625162760416667, + "platform": "darwin", + "uptime": 166759 + }, + { + "timestamp": 1764802767232, + "memoryTotal": 34359738368, + "memoryUsed": 34030977024, + "memoryFree": 328761344, + "memoryUsagePercent": 99.04317855834961, + "memoryEfficiency": 0.9568214416503906, + "cpuCount": 12, + "cpuLoad": 0.11600748697916667, + "platform": "darwin", + "uptime": 166789 + }, + { + "timestamp": 1764802797232, + "memoryTotal": 34359738368, + "memoryUsed": 34276163584, + "memoryFree": 83574784, + "memoryUsagePercent": 99.75676536560059, + "memoryEfficiency": 0.24323463439941406, + "cpuCount": 12, + "cpuLoad": 0.16153971354166666, + "platform": "darwin", + "uptime": 166819 + }, + { + "timestamp": 1764802827234, + "memoryTotal": 34359738368, + "memoryUsed": 34289893376, + "memoryFree": 69844992, + "memoryUsagePercent": 99.79672431945801, + "memoryEfficiency": 0.2032756805419922, + "cpuCount": 12, + "cpuLoad": 0.23201497395833334, + "platform": "darwin", + "uptime": 166849 + }, + { + "timestamp": 1764802857229, + "memoryTotal": 34359738368, + "memoryUsed": 34281537536, + "memoryFree": 78200832, + "memoryUsagePercent": 99.77240562438965, + "memoryEfficiency": 0.22759437561035156, + "cpuCount": 12, + "cpuLoad": 0.1956787109375, + "platform": "darwin", + "uptime": 166879 + }, + { + "timestamp": 1764802887225, + "memoryTotal": 34359738368, + "memoryUsed": 34265088000, + "memoryFree": 94650368, + "memoryUsagePercent": 99.72453117370605, + "memoryEfficiency": 0.2754688262939453, + "cpuCount": 12, + "cpuLoad": 0.16984049479166666, + "platform": "darwin", + "uptime": 166909 + }, + { + "timestamp": 1764802917225, + "memoryTotal": 34359738368, + "memoryUsed": 34167193600, + "memoryFree": 192544768, + "memoryUsagePercent": 99.43962097167969, + "memoryEfficiency": 0.5603790283203125, + "cpuCount": 12, + "cpuLoad": 0.13924153645833334, + "platform": "darwin", + "uptime": 166939 + }, + { + "timestamp": 1764802947226, + "memoryTotal": 34359738368, + "memoryUsed": 34245459968, + "memoryFree": 114278400, + "memoryUsagePercent": 99.66740608215332, + "memoryEfficiency": 0.3325939178466797, + "cpuCount": 12, + "cpuLoad": 0.1817626953125, + "platform": "darwin", + "uptime": 166969 + }, + { + "timestamp": 1764802977228, + "memoryTotal": 34359738368, + "memoryUsed": 34219802624, + "memoryFree": 139935744, + "memoryUsagePercent": 99.59273338317871, + "memoryEfficiency": 0.40726661682128906, + "cpuCount": 12, + "cpuLoad": 0.14444986979166666, + "platform": "darwin", + "uptime": 166999 + }, + { + "timestamp": 1764803007229, + "memoryTotal": 34359738368, + "memoryUsed": 34205581312, + "memoryFree": 154157056, + "memoryUsagePercent": 99.55134391784668, + "memoryEfficiency": 0.4486560821533203, + "cpuCount": 12, + "cpuLoad": 0.2279052734375, + "platform": "darwin", + "uptime": 167029 + }, + { + "timestamp": 1764803037230, + "memoryTotal": 34359738368, + "memoryUsed": 34253307904, + "memoryFree": 106430464, + "memoryUsagePercent": 99.69024658203125, + "memoryEfficiency": 0.30975341796875, + "cpuCount": 12, + "cpuLoad": 0.16731770833333334, + "platform": "darwin", + "uptime": 167059 + }, + { + "timestamp": 1764803067231, + "memoryTotal": 34359738368, + "memoryUsed": 34265055232, + "memoryFree": 94683136, + "memoryUsagePercent": 99.72443580627441, + "memoryEfficiency": 0.27556419372558594, + "cpuCount": 12, + "cpuLoad": 0.4049072265625, + "platform": "darwin", + "uptime": 167089 + }, + { + "timestamp": 1764803097232, + "memoryTotal": 34359738368, + "memoryUsed": 34212380672, + "memoryFree": 147357696, + "memoryUsagePercent": 99.57113265991211, + "memoryEfficiency": 0.4288673400878906, + "cpuCount": 12, + "cpuLoad": 0.3048909505208333, + "platform": "darwin", + "uptime": 167119 + }, + { + "timestamp": 1764803127233, + "memoryTotal": 34359738368, + "memoryUsed": 34299723776, + "memoryFree": 60014592, + "memoryUsagePercent": 99.8253345489502, + "memoryEfficiency": 0.1746654510498047, + "cpuCount": 12, + "cpuLoad": 0.3053792317708333, + "platform": "darwin", + "uptime": 167149 + }, + { + "timestamp": 1764803157235, + "memoryTotal": 34359738368, + "memoryUsed": 34293366784, + "memoryFree": 66371584, + "memoryUsagePercent": 99.80683326721191, + "memoryEfficiency": 0.19316673278808594, + "cpuCount": 12, + "cpuLoad": 0.2496337890625, + "platform": "darwin", + "uptime": 167179 + }, + { + "timestamp": 1764803187237, + "memoryTotal": 34359738368, + "memoryUsed": 31464931328, + "memoryFree": 2894807040, + "memoryUsagePercent": 91.57500267028809, + "memoryEfficiency": 8.424997329711914, + "cpuCount": 12, + "cpuLoad": 0.2574055989583333, + "platform": "darwin", + "uptime": 167209 + }, + { + "timestamp": 1764803217237, + "memoryTotal": 34359738368, + "memoryUsed": 32167018496, + "memoryFree": 2192719872, + "memoryUsagePercent": 93.61834526062012, + "memoryEfficiency": 6.381654739379883, + "cpuCount": 12, + "cpuLoad": 0.18302408854166666, + "platform": "darwin", + "uptime": 167239 + }, + { + "timestamp": 1764803247238, + "memoryTotal": 34359738368, + "memoryUsed": 32446464000, + "memoryFree": 1913274368, + "memoryUsagePercent": 94.43163871765137, + "memoryEfficiency": 5.568361282348633, + "cpuCount": 12, + "cpuLoad": 0.19315592447916666, + "platform": "darwin", + "uptime": 167269 + }, + { + "timestamp": 1764803277238, + "memoryTotal": 34359738368, + "memoryUsed": 32651476992, + "memoryFree": 1708261376, + "memoryUsagePercent": 95.02830505371094, + "memoryEfficiency": 4.9716949462890625, + "cpuCount": 12, + "cpuLoad": 0.14164225260416666, + "platform": "darwin", + "uptime": 167299 + }, + { + "timestamp": 1764803307239, + "memoryTotal": 34359738368, + "memoryUsed": 33020035072, + "memoryFree": 1339703296, + "memoryUsagePercent": 96.10095024108887, + "memoryEfficiency": 3.899049758911133, + "cpuCount": 12, + "cpuLoad": 0.14994303385416666, + "platform": "darwin", + "uptime": 167329 + }, + { + "timestamp": 1764803337240, + "memoryTotal": 34359738368, + "memoryUsed": 33426849792, + "memoryFree": 932888576, + "memoryUsagePercent": 97.28493690490723, + "memoryEfficiency": 2.7150630950927734, + "cpuCount": 12, + "cpuLoad": 0.1097412109375, + "platform": "darwin", + "uptime": 167359 + }, + { + "timestamp": 1764803367241, + "memoryTotal": 34359738368, + "memoryUsed": 34162884608, + "memoryFree": 196853760, + "memoryUsagePercent": 99.42708015441895, + "memoryEfficiency": 0.5729198455810547, + "cpuCount": 12, + "cpuLoad": 0.11446126302083333, + "platform": "darwin", + "uptime": 167389 + }, + { + "timestamp": 1764803397243, + "memoryTotal": 34359738368, + "memoryUsed": 34032156672, + "memoryFree": 327581696, + "memoryUsagePercent": 99.04661178588867, + "memoryEfficiency": 0.9533882141113281, + "cpuCount": 12, + "cpuLoad": 0.19022623697916666, + "platform": "darwin", + "uptime": 167419 + }, + { + "timestamp": 1764803427244, + "memoryTotal": 34359738368, + "memoryUsed": 33874755584, + "memoryFree": 484982784, + "memoryUsagePercent": 98.58851432800293, + "memoryEfficiency": 1.4114856719970703, + "cpuCount": 12, + "cpuLoad": 0.19095865885416666, + "platform": "darwin", + "uptime": 167449 + }, + { + "timestamp": 1764803457245, + "memoryTotal": 34359738368, + "memoryUsed": 34070691840, + "memoryFree": 289046528, + "memoryUsagePercent": 99.15876388549805, + "memoryEfficiency": 0.8412361145019531, + "cpuCount": 12, + "cpuLoad": 0.13651529947916666, + "platform": "darwin", + "uptime": 167479 + }, + { + "timestamp": 1764803487246, + "memoryTotal": 34359738368, + "memoryUsed": 33602879488, + "memoryFree": 756858880, + "memoryUsagePercent": 97.79725074768066, + "memoryEfficiency": 2.202749252319336, + "cpuCount": 12, + "cpuLoad": 0.16788736979166666, + "platform": "darwin", + "uptime": 167509 + }, + { + "timestamp": 1764803517248, + "memoryTotal": 34359738368, + "memoryUsed": 33797242880, + "memoryFree": 562495488, + "memoryUsagePercent": 98.36292266845703, + "memoryEfficiency": 1.6370773315429688, + "cpuCount": 12, + "cpuLoad": 0.144775390625, + "platform": "darwin", + "uptime": 167539 + }, + { + "timestamp": 1764803547249, + "memoryTotal": 34359738368, + "memoryUsed": 34059616256, + "memoryFree": 300122112, + "memoryUsagePercent": 99.12652969360352, + "memoryEfficiency": 0.8734703063964844, + "cpuCount": 12, + "cpuLoad": 0.1629638671875, + "platform": "darwin", + "uptime": 167569 + }, + { + "timestamp": 1764803577250, + "memoryTotal": 34359738368, + "memoryUsed": 33967538176, + "memoryFree": 392200192, + "memoryUsagePercent": 98.85854721069336, + "memoryEfficiency": 1.1414527893066406, + "cpuCount": 12, + "cpuLoad": 0.13887532552083334, + "platform": "darwin", + "uptime": 167599 + }, + { + "timestamp": 1764803607252, + "memoryTotal": 34359738368, + "memoryUsed": 34122809344, + "memoryFree": 236929024, + "memoryUsagePercent": 99.31044578552246, + "memoryEfficiency": 0.6895542144775391, + "cpuCount": 12, + "cpuLoad": 0.10986328125, + "platform": "darwin", + "uptime": 167629 + }, + { + "timestamp": 1764803637253, + "memoryTotal": 34359738368, + "memoryUsed": 34164719616, + "memoryFree": 195018752, + "memoryUsagePercent": 99.43242073059082, + "memoryEfficiency": 0.5675792694091797, + "cpuCount": 12, + "cpuLoad": 0.11690266927083333, + "platform": "darwin", + "uptime": 167659 + }, + { + "timestamp": 1764803667253, + "memoryTotal": 34359738368, + "memoryUsed": 34001272832, + "memoryFree": 358465536, + "memoryUsagePercent": 98.95672798156738, + "memoryEfficiency": 1.0432720184326172, + "cpuCount": 12, + "cpuLoad": 0.13907877604166666, + "platform": "darwin", + "uptime": 167689 + }, + { + "timestamp": 1764803697254, + "memoryTotal": 34359738368, + "memoryUsed": 34033139712, + "memoryFree": 326598656, + "memoryUsagePercent": 99.04947280883789, + "memoryEfficiency": 0.9505271911621094, + "cpuCount": 12, + "cpuLoad": 0.1832275390625, + "platform": "darwin", + "uptime": 167719 + }, + { + "timestamp": 1764803727256, + "memoryTotal": 34359738368, + "memoryUsed": 34275131392, + "memoryFree": 84606976, + "memoryUsagePercent": 99.7537612915039, + "memoryEfficiency": 0.24623870849609375, + "cpuCount": 12, + "cpuLoad": 0.21541341145833334, + "platform": "darwin", + "uptime": 167749 + }, + { + "timestamp": 1764803757257, + "memoryTotal": 34359738368, + "memoryUsed": 33937031168, + "memoryFree": 422707200, + "memoryUsagePercent": 98.76976013183594, + "memoryEfficiency": 1.2302398681640625, + "cpuCount": 12, + "cpuLoad": 0.14766438802083334, + "platform": "darwin", + "uptime": 167779 + }, + { + "timestamp": 1764803787259, + "memoryTotal": 34359738368, + "memoryUsed": 34280849408, + "memoryFree": 78888960, + "memoryUsagePercent": 99.7704029083252, + "memoryEfficiency": 0.2295970916748047, + "cpuCount": 12, + "cpuLoad": 0.18497721354166666, + "platform": "darwin", + "uptime": 167809 + }, + { + "timestamp": 1764803817260, + "memoryTotal": 34359738368, + "memoryUsed": 34256551936, + "memoryFree": 103186432, + "memoryUsagePercent": 99.69968795776367, + "memoryEfficiency": 0.3003120422363281, + "cpuCount": 12, + "cpuLoad": 0.19466145833333334, + "platform": "darwin", + "uptime": 167839 + }, + { + "timestamp": 1764803847261, + "memoryTotal": 34359738368, + "memoryUsed": 34217426944, + "memoryFree": 142311424, + "memoryUsagePercent": 99.58581924438477, + "memoryEfficiency": 0.4141807556152344, + "cpuCount": 12, + "cpuLoad": 0.174560546875, + "platform": "darwin", + "uptime": 167869 + }, + { + "timestamp": 1764803877262, + "memoryTotal": 34359738368, + "memoryUsed": 34247409664, + "memoryFree": 112328704, + "memoryUsagePercent": 99.67308044433594, + "memoryEfficiency": 0.3269195556640625, + "cpuCount": 12, + "cpuLoad": 0.1890869140625, + "platform": "darwin", + "uptime": 167899 + }, + { + "timestamp": 1764803907263, + "memoryTotal": 34359738368, + "memoryUsed": 34194227200, + "memoryFree": 165511168, + "memoryUsagePercent": 99.5182991027832, + "memoryEfficiency": 0.4817008972167969, + "cpuCount": 12, + "cpuLoad": 0.13582356770833334, + "platform": "darwin", + "uptime": 167929 + }, + { + "timestamp": 1764803937265, + "memoryTotal": 34359738368, + "memoryUsed": 34198011904, + "memoryFree": 161726464, + "memoryUsagePercent": 99.5293140411377, + "memoryEfficiency": 0.4706859588623047, + "cpuCount": 12, + "cpuLoad": 0.2694905598958333, + "platform": "darwin", + "uptime": 167959 + }, + { + "timestamp": 1764803967265, + "memoryTotal": 34359738368, + "memoryUsed": 34101002240, + "memoryFree": 258736128, + "memoryUsagePercent": 99.24697875976562, + "memoryEfficiency": 0.753021240234375, + "cpuCount": 12, + "cpuLoad": 0.3264567057291667, + "platform": "darwin", + "uptime": 167989 + }, + { + "timestamp": 1764803997266, + "memoryTotal": 34359738368, + "memoryUsed": 34291974144, + "memoryFree": 67764224, + "memoryUsagePercent": 99.80278015136719, + "memoryEfficiency": 0.1972198486328125, + "cpuCount": 12, + "cpuLoad": 0.2711181640625, + "platform": "darwin", + "uptime": 168019 + }, + { + "timestamp": 1764804027268, + "memoryTotal": 34359738368, + "memoryUsed": 30403461120, + "memoryFree": 3956277248, + "memoryUsagePercent": 88.4857177734375, + "memoryEfficiency": 11.5142822265625, + "cpuCount": 12, + "cpuLoad": 0.23819986979166666, + "platform": "darwin", + "uptime": 168049 + }, + { + "timestamp": 1764804057269, + "memoryTotal": 34359738368, + "memoryUsed": 31486754816, + "memoryFree": 2872983552, + "memoryUsagePercent": 91.63851737976074, + "memoryEfficiency": 8.361482620239258, + "cpuCount": 12, + "cpuLoad": 0.18306477864583334, + "platform": "darwin", + "uptime": 168079 + }, + { + "timestamp": 1764804087271, + "memoryTotal": 34359738368, + "memoryUsed": 31314345984, + "memoryFree": 3045392384, + "memoryUsagePercent": 91.1367416381836, + "memoryEfficiency": 8.863258361816406, + "cpuCount": 12, + "cpuLoad": 0.30908203125, + "platform": "darwin", + "uptime": 168109 + }, + { + "timestamp": 1764804117272, + "memoryTotal": 34359738368, + "memoryUsed": 31406915584, + "memoryFree": 2952822784, + "memoryUsagePercent": 91.40615463256836, + "memoryEfficiency": 8.59384536743164, + "cpuCount": 12, + "cpuLoad": 0.22176106770833334, + "platform": "darwin", + "uptime": 168139 + }, + { + "timestamp": 1764804147273, + "memoryTotal": 34359738368, + "memoryUsed": 31460376576, + "memoryFree": 2899361792, + "memoryUsagePercent": 91.56174659729004, + "memoryEfficiency": 8.438253402709961, + "cpuCount": 12, + "cpuLoad": 0.18868001302083334, + "platform": "darwin", + "uptime": 168169 + }, + { + "timestamp": 1764804177274, + "memoryTotal": 34359738368, + "memoryUsed": 31547654144, + "memoryFree": 2812084224, + "memoryUsagePercent": 91.81575775146484, + "memoryEfficiency": 8.184242248535156, + "cpuCount": 12, + "cpuLoad": 0.15486653645833334, + "platform": "darwin", + "uptime": 168199 + }, + { + "timestamp": 1764804207275, + "memoryTotal": 34359738368, + "memoryUsed": 32089276416, + "memoryFree": 2270461952, + "memoryUsagePercent": 93.39208602905273, + "memoryEfficiency": 6.607913970947266, + "cpuCount": 12, + "cpuLoad": 0.11808268229166667, + "platform": "darwin", + "uptime": 168229 + }, + { + "timestamp": 1764804237276, + "memoryTotal": 34359738368, + "memoryUsed": 32846364672, + "memoryFree": 1513373696, + "memoryUsagePercent": 95.59550285339355, + "memoryEfficiency": 4.404497146606445, + "cpuCount": 12, + "cpuLoad": 0.13525390625, + "platform": "darwin", + "uptime": 168259 + }, + { + "timestamp": 1764804267277, + "memoryTotal": 34359738368, + "memoryUsed": 34280407040, + "memoryFree": 79331328, + "memoryUsagePercent": 99.76911544799805, + "memoryEfficiency": 0.23088455200195312, + "cpuCount": 12, + "cpuLoad": 0.14689127604166666, + "platform": "darwin", + "uptime": 168289 + }, + { + "timestamp": 1764804297278, + "memoryTotal": 34359738368, + "memoryUsed": 32223805440, + "memoryFree": 2135932928, + "memoryUsagePercent": 93.78361701965332, + "memoryEfficiency": 6.21638298034668, + "cpuCount": 12, + "cpuLoad": 0.14583333333333334, + "platform": "darwin", + "uptime": 168319 + }, + { + "timestamp": 1764804327279, + "memoryTotal": 34359738368, + "memoryUsed": 32269385728, + "memoryFree": 2090352640, + "memoryUsagePercent": 93.91627311706543, + "memoryEfficiency": 6.08372688293457, + "cpuCount": 12, + "cpuLoad": 0.11604817708333333, + "platform": "darwin", + "uptime": 168349 + }, + { + "timestamp": 1764804357280, + "memoryTotal": 34359738368, + "memoryUsed": 32495009792, + "memoryFree": 1864728576, + "memoryUsagePercent": 94.57292556762695, + "memoryEfficiency": 5.427074432373047, + "cpuCount": 12, + "cpuLoad": 0.10225423177083333, + "platform": "darwin", + "uptime": 168379 + }, + { + "timestamp": 1764804387281, + "memoryTotal": 34359738368, + "memoryUsed": 33348550656, + "memoryFree": 1011187712, + "memoryUsagePercent": 97.05705642700195, + "memoryEfficiency": 2.942943572998047, + "cpuCount": 12, + "cpuLoad": 0.11759440104166667, + "platform": "darwin", + "uptime": 168409 + }, + { + "timestamp": 1764804417283, + "memoryTotal": 34359738368, + "memoryUsed": 33512390656, + "memoryFree": 847347712, + "memoryUsagePercent": 97.53389358520508, + "memoryEfficiency": 2.466106414794922, + "cpuCount": 12, + "cpuLoad": 0.12772623697916666, + "platform": "darwin", + "uptime": 168439 + }, + { + "timestamp": 1764804447284, + "memoryTotal": 34359738368, + "memoryUsed": 33871364096, + "memoryFree": 488374272, + "memoryUsagePercent": 98.57864379882812, + "memoryEfficiency": 1.421356201171875, + "cpuCount": 12, + "cpuLoad": 0.1610107421875, + "platform": "darwin", + "uptime": 168469 + }, + { + "timestamp": 1764804477286, + "memoryTotal": 34359738368, + "memoryUsed": 31891357696, + "memoryFree": 2468380672, + "memoryUsagePercent": 92.81606674194336, + "memoryEfficiency": 7.183933258056641, + "cpuCount": 12, + "cpuLoad": 0.3546142578125, + "platform": "darwin", + "uptime": 168499 + }, + { + "timestamp": 1764804507285, + "memoryTotal": 34359738368, + "memoryUsed": 32701874176, + "memoryFree": 1657864192, + "memoryUsagePercent": 95.17498016357422, + "memoryEfficiency": 4.825019836425781, + "cpuCount": 12, + "cpuLoad": 0.277099609375, + "platform": "darwin", + "uptime": 168529 + }, + { + "timestamp": 1764804537286, + "memoryTotal": 34359738368, + "memoryUsed": 30121508864, + "memoryFree": 4238229504, + "memoryUsagePercent": 87.66512870788574, + "memoryEfficiency": 12.334871292114258, + "cpuCount": 12, + "cpuLoad": 0.2567545572916667, + "platform": "darwin", + "uptime": 168559 + }, + { + "timestamp": 1764804567288, + "memoryTotal": 34359738368, + "memoryUsed": 33887764480, + "memoryFree": 471973888, + "memoryUsagePercent": 98.62637519836426, + "memoryEfficiency": 1.3736248016357422, + "cpuCount": 12, + "cpuLoad": 0.279296875, + "platform": "darwin", + "uptime": 168589 + }, + { + "timestamp": 1764804597289, + "memoryTotal": 34359738368, + "memoryUsed": 29933666304, + "memoryFree": 4426072064, + "memoryUsagePercent": 87.11843490600586, + "memoryEfficiency": 12.88156509399414, + "cpuCount": 12, + "cpuLoad": 0.4444986979166667, + "platform": "darwin", + "uptime": 168619 + }, + { + "timestamp": 1764804627289, + "memoryTotal": 34359738368, + "memoryUsed": 32602750976, + "memoryFree": 1756987392, + "memoryUsagePercent": 94.88649368286133, + "memoryEfficiency": 5.113506317138672, + "cpuCount": 12, + "cpuLoad": 0.3483479817708333, + "platform": "darwin", + "uptime": 168649 + }, + { + "timestamp": 1764804657290, + "memoryTotal": 34359738368, + "memoryUsed": 31566872576, + "memoryFree": 2792865792, + "memoryUsagePercent": 91.87169075012207, + "memoryEfficiency": 8.12830924987793, + "cpuCount": 12, + "cpuLoad": 0.42919921875, + "platform": "darwin", + "uptime": 168679 + }, + { + "timestamp": 1764804687292, + "memoryTotal": 34359738368, + "memoryUsed": 32858275840, + "memoryFree": 1501462528, + "memoryUsagePercent": 95.63016891479492, + "memoryEfficiency": 4.369831085205078, + "cpuCount": 12, + "cpuLoad": 0.3258056640625, + "platform": "darwin", + "uptime": 168709 + }, + { + "timestamp": 1764804717293, + "memoryTotal": 34359738368, + "memoryUsed": 32538378240, + "memoryFree": 1821360128, + "memoryUsagePercent": 94.69914436340332, + "memoryEfficiency": 5.30085563659668, + "cpuCount": 12, + "cpuLoad": 0.2546793619791667, + "platform": "darwin", + "uptime": 168739 } ] \ No newline at end of file diff --git a/apps/bauntown/apps/landing/eslint.config.js b/apps/bauntown/apps/landing/eslint.config.js deleted file mode 100644 index 172a11a3f..000000000 --- a/apps/bauntown/apps/landing/eslint.config.js +++ /dev/null @@ -1,11 +0,0 @@ -// @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/landing/eslint.config.js b/apps/calendar/apps/landing/eslint.config.js deleted file mode 100644 index 172a11a3f..000000000 --- a/apps/calendar/apps/landing/eslint.config.js +++ /dev/null @@ -1,11 +0,0 @@ -// @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/packages/shared/src/types/calendar.ts b/apps/calendar/packages/shared/src/types/calendar.ts index 7a1b749cd..9e110cced 100644 --- a/apps/calendar/packages/shared/src/types/calendar.ts +++ b/apps/calendar/packages/shared/src/types/calendar.ts @@ -60,7 +60,15 @@ export interface UpdateCalendarInput { /** * Calendar view types */ -export type CalendarViewType = 'day' | '5day' | 'week' | '10day' | '14day' | 'month' | 'year' | 'agenda'; +export type CalendarViewType = + | 'day' + | '5day' + | 'week' + | '10day' + | '14day' + | 'month' + | 'year' + | 'agenda'; /** * Default calendar colors diff --git a/apps/chat/apps/landing/eslint.config.js b/apps/chat/apps/landing/eslint.config.js deleted file mode 100644 index 172a11a3f..000000000 --- a/apps/chat/apps/landing/eslint.config.js +++ /dev/null @@ -1,11 +0,0 @@ -// @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/landing/eslint.config.js b/apps/maerchenzauber/apps/landing/eslint.config.js deleted file mode 100644 index 172a11a3f..000000000 --- a/apps/maerchenzauber/apps/landing/eslint.config.js +++ /dev/null @@ -1,11 +0,0 @@ -// @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/eslint.config.js b/apps/manacore/apps/landing/eslint.config.js deleted file mode 100644 index 172a11a3f..000000000 --- a/apps/manacore/apps/landing/eslint.config.js +++ /dev/null @@ -1,11 +0,0 @@ -// @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/eslint.config.js b/apps/manadeck/apps/landing/eslint.config.js deleted file mode 100644 index 172a11a3f..000000000 --- a/apps/manadeck/apps/landing/eslint.config.js +++ /dev/null @@ -1,11 +0,0 @@ -// @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/landing/eslint.config.js b/apps/memoro/apps/landing/eslint.config.js deleted file mode 100644 index 172a11a3f..000000000 --- a/apps/memoro/apps/landing/eslint.config.js +++ /dev/null @@ -1,11 +0,0 @@ -// @ts-check -import { baseConfig, typescriptConfig, prettierConfig } from '@manacore/eslint-config'; - -export default [ - { - ignores: ['dist/**', '.astro/**', 'node_modules/**'], - }, - ...baseConfig, - ...typescriptConfig, - ...prettierConfig, -]; diff --git a/apps/news/apps/landing/eslint.config.js b/apps/news/apps/landing/eslint.config.js deleted file mode 100644 index 172a11a3f..000000000 --- a/apps/news/apps/landing/eslint.config.js +++ /dev/null @@ -1,11 +0,0 @@ -// @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/landing/eslint.config.js b/apps/nutriphi/apps/landing/eslint.config.js deleted file mode 100644 index 172a11a3f..000000000 --- a/apps/nutriphi/apps/landing/eslint.config.js +++ /dev/null @@ -1,11 +0,0 @@ -// @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/landing/eslint.config.js b/apps/picture/apps/landing/eslint.config.js deleted file mode 100644 index 172a11a3f..000000000 --- a/apps/picture/apps/landing/eslint.config.js +++ /dev/null @@ -1,11 +0,0 @@ -// @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/packages/design-tokens/native/theme.mjs b/apps/picture/packages/design-tokens/native/theme.mjs index df8bde93a..0c95e7c68 100644 --- a/apps/picture/packages/design-tokens/native/theme.mjs +++ b/apps/picture/packages/design-tokens/native/theme.mjs @@ -1,547 +1,542 @@ // src/colors.ts -var baseColors = { - // Pure colors - black: "#000000", - white: "#ffffff", - // Grays - gray: { - 50: "#f9fafb", - 100: "#f3f4f6", - 200: "#e5e7eb", - 300: "#d1d5db", - 400: "#9ca3af", - 500: "#6b7280", - 600: "#4b5563", - 700: "#374151", - 800: "#1f2937", - 900: "#111827", - 950: "#0a0a0a" - }, - // Indigo (Default primary) - indigo: { - 200: "#c7d2fe", - 300: "#a5b4fc", - 400: "#818cf8", - 500: "#6366f1", - 600: "#4f46e5", - 700: "#4338ca", - 800: "#3730a3" - }, - // Violet (Default secondary) - violet: { - 300: "#c4b5fd", - 400: "#a78bfa", - 500: "#8b5cf6", - 600: "#7c3aed" - }, - // Orange (Sunset theme) - orange: { - 300: "#fdba74", - 400: "#fb923c", - 500: "#f97316", - 600: "#ea580c" - }, - // Pink (Sunset theme) - pink: { - 300: "#f9a8d4", - 400: "#f472b6", - 500: "#ec4899", - 600: "#db2777" - }, - // Sky (Ocean theme) - sky: { - 300: "#7dd3fc", - 400: "#38bdf8", - 500: "#0ea5e9", - 600: "#0284c7" - }, - // Emerald (Ocean theme + status) - emerald: { - 300: "#6ee7b7", - 400: "#34d399", - 500: "#10b981", - 600: "#059669" - }, - // Status colors - red: { - 500: "#ef4444", - 600: "#dc2626" - }, - amber: { - 500: "#f59e0b" - }, - blue: { - 500: "#3b82f6" - } +const baseColors = { + // Pure colors + black: '#000000', + white: '#ffffff', + // Grays + gray: { + 50: '#f9fafb', + 100: '#f3f4f6', + 200: '#e5e7eb', + 300: '#d1d5db', + 400: '#9ca3af', + 500: '#6b7280', + 600: '#4b5563', + 700: '#374151', + 800: '#1f2937', + 900: '#111827', + 950: '#0a0a0a', + }, + // Indigo (Default primary) + indigo: { + 200: '#c7d2fe', + 300: '#a5b4fc', + 400: '#818cf8', + 500: '#6366f1', + 600: '#4f46e5', + 700: '#4338ca', + 800: '#3730a3', + }, + // Violet (Default secondary) + violet: { + 300: '#c4b5fd', + 400: '#a78bfa', + 500: '#8b5cf6', + 600: '#7c3aed', + }, + // Orange (Sunset theme) + orange: { + 300: '#fdba74', + 400: '#fb923c', + 500: '#f97316', + 600: '#ea580c', + }, + // Pink (Sunset theme) + pink: { + 300: '#f9a8d4', + 400: '#f472b6', + 500: '#ec4899', + 600: '#db2777', + }, + // Sky (Ocean theme) + sky: { + 300: '#7dd3fc', + 400: '#38bdf8', + 500: '#0ea5e9', + 600: '#0284c7', + }, + // Emerald (Ocean theme + status) + emerald: { + 300: '#6ee7b7', + 400: '#34d399', + 500: '#10b981', + 600: '#059669', + }, + // Status colors + red: { + 500: '#ef4444', + 600: '#dc2626', + }, + amber: { + 500: '#f59e0b', + }, + blue: { + 500: '#3b82f6', + }, }; -var semanticColors = { - /** - * Dark mode colors - */ - dark: { - // Backgrounds - background: baseColors.black, - surface: "#1a1a1a", - elevated: "#242424", - overlay: "rgba(0, 0, 0, 0.8)", - // Borders & Dividers - border: "#383838", - divider: "#2a2a2a", - // Input fields - input: { - background: "#1f1f1f", - border: "#383838", - text: baseColors.gray[100], - placeholder: baseColors.gray[500] - }, - // Text colors - text: { - primary: baseColors.gray[100], - secondary: baseColors.gray[300], - tertiary: baseColors.gray[400], - disabled: baseColors.gray[500], - inverse: baseColors.black - }, - // Primary brand color (Indigo) - primary: { - default: baseColors.indigo[400], - hover: baseColors.indigo[300], - active: baseColors.indigo[500], - light: baseColors.indigo[200], - dark: baseColors.indigo[600], - contrast: baseColors.white - }, - // Secondary accent color (Violet) - secondary: { - default: baseColors.violet[400], - light: baseColors.violet[300], - dark: baseColors.violet[500], - contrast: baseColors.white - }, - // Status colors - success: baseColors.emerald[500], - warning: baseColors.amber[500], - error: baseColors.red[500], - info: baseColors.blue[500], - // Semantic colors - favorite: baseColors.red[500], - like: baseColors.red[500], - tag: baseColors.indigo[400], - // Special UI elements - skeleton: "#2a2a2a", - shimmer: "#383838" - }, - /** - * Light mode colors - */ - light: { - // Backgrounds - background: baseColors.white, - surface: baseColors.gray[50], - elevated: baseColors.white, - overlay: "rgba(0, 0, 0, 0.5)", - // Borders & Dividers - border: baseColors.gray[200], - divider: baseColors.gray[100], - // Input fields - input: { - background: baseColors.white, - border: baseColors.gray[300], - text: baseColors.gray[900], - placeholder: baseColors.gray[400] - }, - // Text colors - text: { - primary: baseColors.gray[900], - secondary: baseColors.gray[700], - tertiary: baseColors.gray[500], - disabled: baseColors.gray[400], - inverse: baseColors.white - }, - // Primary brand color (Indigo) - primary: { - default: baseColors.indigo[500], - hover: baseColors.indigo[600], - active: baseColors.indigo[700], - light: baseColors.indigo[400], - dark: baseColors.indigo[800], - contrast: baseColors.white - }, - // Secondary accent color (Violet) - secondary: { - default: baseColors.violet[500], - light: baseColors.violet[400], - dark: baseColors.violet[600], - contrast: baseColors.white - }, - // Status colors - success: baseColors.emerald[500], - warning: baseColors.amber[500], - error: baseColors.red[500], - info: baseColors.blue[500], - // Semantic colors - favorite: baseColors.red[500], - like: baseColors.red[500], - tag: baseColors.indigo[500], - // Special UI elements - skeleton: baseColors.gray[200], - shimmer: baseColors.gray[100] - } +const semanticColors = { + /** + * Dark mode colors + */ + dark: { + // Backgrounds + background: baseColors.black, + surface: '#1a1a1a', + elevated: '#242424', + overlay: 'rgba(0, 0, 0, 0.8)', + // Borders & Dividers + border: '#383838', + divider: '#2a2a2a', + // Input fields + input: { + background: '#1f1f1f', + border: '#383838', + text: baseColors.gray[100], + placeholder: baseColors.gray[500], + }, + // Text colors + text: { + primary: baseColors.gray[100], + secondary: baseColors.gray[300], + tertiary: baseColors.gray[400], + disabled: baseColors.gray[500], + inverse: baseColors.black, + }, + // Primary brand color (Indigo) + primary: { + default: baseColors.indigo[400], + hover: baseColors.indigo[300], + active: baseColors.indigo[500], + light: baseColors.indigo[200], + dark: baseColors.indigo[600], + contrast: baseColors.white, + }, + // Secondary accent color (Violet) + secondary: { + default: baseColors.violet[400], + light: baseColors.violet[300], + dark: baseColors.violet[500], + contrast: baseColors.white, + }, + // Status colors + success: baseColors.emerald[500], + warning: baseColors.amber[500], + error: baseColors.red[500], + info: baseColors.blue[500], + // Semantic colors + favorite: baseColors.red[500], + like: baseColors.red[500], + tag: baseColors.indigo[400], + // Special UI elements + skeleton: '#2a2a2a', + shimmer: '#383838', + }, + /** + * Light mode colors + */ + light: { + // Backgrounds + background: baseColors.white, + surface: baseColors.gray[50], + elevated: baseColors.white, + overlay: 'rgba(0, 0, 0, 0.5)', + // Borders & Dividers + border: baseColors.gray[200], + divider: baseColors.gray[100], + // Input fields + input: { + background: baseColors.white, + border: baseColors.gray[300], + text: baseColors.gray[900], + placeholder: baseColors.gray[400], + }, + // Text colors + text: { + primary: baseColors.gray[900], + secondary: baseColors.gray[700], + tertiary: baseColors.gray[500], + disabled: baseColors.gray[400], + inverse: baseColors.white, + }, + // Primary brand color (Indigo) + primary: { + default: baseColors.indigo[500], + hover: baseColors.indigo[600], + active: baseColors.indigo[700], + light: baseColors.indigo[400], + dark: baseColors.indigo[800], + contrast: baseColors.white, + }, + // Secondary accent color (Violet) + secondary: { + default: baseColors.violet[500], + light: baseColors.violet[400], + dark: baseColors.violet[600], + contrast: baseColors.white, + }, + // Status colors + success: baseColors.emerald[500], + warning: baseColors.amber[500], + error: baseColors.red[500], + info: baseColors.blue[500], + // Semantic colors + favorite: baseColors.red[500], + like: baseColors.red[500], + tag: baseColors.indigo[500], + // Special UI elements + skeleton: baseColors.gray[200], + shimmer: baseColors.gray[100], + }, }; // src/shadows.ts -var shadows = { - dark: { - sm: { - shadowColor: "#000", - shadowOffset: { width: 0, height: 1 }, - shadowOpacity: 0.2, - shadowRadius: 2, - elevation: 2 - // Android - }, - md: { - shadowColor: "#000", - shadowOffset: { width: 0, height: 4 }, - shadowOpacity: 0.3, - shadowRadius: 6, - elevation: 4 - }, - lg: { - shadowColor: "#000", - shadowOffset: { width: 0, height: 10 }, - shadowOpacity: 0.4, - shadowRadius: 15, - elevation: 8 - } - }, - light: { - sm: { - shadowColor: "#000", - shadowOffset: { width: 0, height: 1 }, - shadowOpacity: 0.1, - shadowRadius: 2, - elevation: 2 - }, - md: { - shadowColor: "#000", - shadowOffset: { width: 0, height: 4 }, - shadowOpacity: 0.15, - shadowRadius: 6, - elevation: 4 - }, - lg: { - shadowColor: "#000", - shadowOffset: { width: 0, height: 10 }, - shadowOpacity: 0.2, - shadowRadius: 15, - elevation: 8 - } - } +const shadows = { + dark: { + sm: { + shadowColor: '#000', + shadowOffset: { width: 0, height: 1 }, + shadowOpacity: 0.2, + shadowRadius: 2, + elevation: 2, + // Android + }, + md: { + shadowColor: '#000', + shadowOffset: { width: 0, height: 4 }, + shadowOpacity: 0.3, + shadowRadius: 6, + elevation: 4, + }, + lg: { + shadowColor: '#000', + shadowOffset: { width: 0, height: 10 }, + shadowOpacity: 0.4, + shadowRadius: 15, + elevation: 8, + }, + }, + light: { + sm: { + shadowColor: '#000', + shadowOffset: { width: 0, height: 1 }, + shadowOpacity: 0.1, + shadowRadius: 2, + elevation: 2, + }, + md: { + shadowColor: '#000', + shadowOffset: { width: 0, height: 4 }, + shadowOpacity: 0.15, + shadowRadius: 6, + elevation: 4, + }, + lg: { + shadowColor: '#000', + shadowOffset: { width: 0, height: 10 }, + shadowOpacity: 0.2, + shadowRadius: 15, + elevation: 8, + }, + }, }; -var opacity = { - disabled: 0.5, - overlay: 0.8, - hover: 0.9, - pressed: 0.7 +const opacity = { + disabled: 0.5, + overlay: 0.8, + hover: 0.9, + pressed: 0.7, }; // src/themes/default.ts -var defaultTheme = { - name: "default", - displayName: "Indigo", - colors: { - light: semanticColors.light, - dark: semanticColors.dark - }, - shadows, - opacity +const defaultTheme = { + name: 'default', + displayName: 'Indigo', + colors: { + light: semanticColors.light, + dark: semanticColors.dark, + }, + shadows, + opacity, }; // src/themes/sunset.ts -var sunsetTheme = { - name: "sunset", - displayName: "Sunset", - colors: { - light: semanticColors.light, - // Uses default light mode - dark: { - ...semanticColors.dark, - // Override backgrounds for warmer tone - background: "#0a0a0a", - surface: "#1f1410", - elevated: "#2a1f1a", - // Override borders - border: "#3d2f28", - divider: "#2a1f1a", - // Override input - input: { - background: "#1a1410", - border: "#3d2f28", - text: "#fef3c7", - // amber-100 - placeholder: "#92400e" - // amber-800 - }, - // Override text colors (warmer) - text: { - primary: "#fef3c7", - // amber-100 - secondary: "#fcd34d", - // amber-300 - tertiary: "#f59e0b", - // amber-500 - disabled: "#92400e", - // amber-800 - inverse: "#0a0a0a" - }, - // Primary: Orange - primary: { - default: baseColors.orange[400], - hover: baseColors.orange[300], - active: baseColors.orange[500], - light: "#fed7aa", - // orange-200 - dark: baseColors.orange[600], - contrast: baseColors.white - }, - // Secondary: Pink - secondary: { - default: baseColors.pink[400], - light: baseColors.pink[300], - dark: baseColors.pink[500], - contrast: baseColors.white - }, - // Status - success: baseColors.emerald[500], - warning: "#fbbf24", - // amber-400 - error: "#f43f5e", - // rose-500 - info: "#60a5fa", - // blue-400 - // Semantic - favorite: "#f43f5e", - // rose-500 - like: "#f43f5e", - // rose-500 - tag: baseColors.orange[400], - // Special - skeleton: "#2a1f1a", - shimmer: "#3d2f28" - } - }, - shadows, - opacity +const sunsetTheme = { + name: 'sunset', + displayName: 'Sunset', + colors: { + light: semanticColors.light, + // Uses default light mode + dark: { + ...semanticColors.dark, + // Override backgrounds for warmer tone + background: '#0a0a0a', + surface: '#1f1410', + elevated: '#2a1f1a', + // Override borders + border: '#3d2f28', + divider: '#2a1f1a', + // Override input + input: { + background: '#1a1410', + border: '#3d2f28', + text: '#fef3c7', + // amber-100 + placeholder: '#92400e', + // amber-800 + }, + // Override text colors (warmer) + text: { + primary: '#fef3c7', + // amber-100 + secondary: '#fcd34d', + // amber-300 + tertiary: '#f59e0b', + // amber-500 + disabled: '#92400e', + // amber-800 + inverse: '#0a0a0a', + }, + // Primary: Orange + primary: { + default: baseColors.orange[400], + hover: baseColors.orange[300], + active: baseColors.orange[500], + light: '#fed7aa', + // orange-200 + dark: baseColors.orange[600], + contrast: baseColors.white, + }, + // Secondary: Pink + secondary: { + default: baseColors.pink[400], + light: baseColors.pink[300], + dark: baseColors.pink[500], + contrast: baseColors.white, + }, + // Status + success: baseColors.emerald[500], + warning: '#fbbf24', + // amber-400 + error: '#f43f5e', + // rose-500 + info: '#60a5fa', + // blue-400 + // Semantic + favorite: '#f43f5e', + // rose-500 + like: '#f43f5e', + // rose-500 + tag: baseColors.orange[400], + // Special + skeleton: '#2a1f1a', + shimmer: '#3d2f28', + }, + }, + shadows, + opacity, }; // src/themes/ocean.ts -var oceanColors = { - teal: { - 200: "#99f6e4", - 300: "#5eead4", - 400: "#2dd4bf", - 500: "#14b8a6", - 600: "#0d9488" - }, - cyan: { - 300: "#67e8f9", - 400: "#22d3ee", - 500: "#06b6d4" - }, - slate: { - 700: "#334155", - 800: "#1e293b", - 900: "#0f172a", - 950: "#020617" - } +const oceanColors = { + teal: { + 200: '#99f6e4', + 300: '#5eead4', + 400: '#2dd4bf', + 500: '#14b8a6', + 600: '#0d9488', + }, + cyan: { + 300: '#67e8f9', + 400: '#22d3ee', + 500: '#06b6d4', + }, + slate: { + 700: '#334155', + 800: '#1e293b', + 900: '#0f172a', + 950: '#020617', + }, }; -var oceanTheme = { - name: "ocean", - displayName: "Ocean", - colors: { - light: semanticColors.light, - // Uses default light mode - dark: { - ...semanticColors.dark, - // Override backgrounds for cooler tone - background: oceanColors.slate[950], - surface: oceanColors.slate[900], - elevated: oceanColors.slate[800], - // Override borders - border: oceanColors.slate[700], - divider: oceanColors.slate[800], - // Override input - input: { - background: oceanColors.slate[900], - border: oceanColors.slate[700], - text: "#e0f2fe", - // sky-100 - placeholder: "#0c4a6e" - // sky-900 - }, - // Override text colors (cooler) - text: { - primary: "#e0f2fe", - // sky-100 - secondary: "#7dd3fc", - // sky-300 - tertiary: "#38bdf8", - // sky-400 - disabled: "#0c4a6e", - // sky-900 - inverse: oceanColors.slate[950] - }, - // Primary: Teal - primary: { - default: oceanColors.teal[400], - hover: oceanColors.teal[300], - active: oceanColors.teal[500], - light: oceanColors.teal[200], - dark: oceanColors.teal[600], - contrast: baseColors.white - }, - // Secondary: Cyan - secondary: { - default: oceanColors.cyan[400], - light: oceanColors.cyan[300], - dark: oceanColors.cyan[500], - contrast: baseColors.white - }, - // Status - success: baseColors.emerald[500], - warning: "#fbbf24", - // amber-400 - error: "#f43f5e", - // rose-500 - info: "#0ea5e9", - // sky-500 - // Semantic - favorite: "#f43f5e", - // rose-500 - like: "#f43f5e", - // rose-500 - tag: oceanColors.teal[400], - // Special - skeleton: oceanColors.slate[800], - shimmer: oceanColors.slate[700] - } - }, - shadows, - opacity +const oceanTheme = { + name: 'ocean', + displayName: 'Ocean', + colors: { + light: semanticColors.light, + // Uses default light mode + dark: { + ...semanticColors.dark, + // Override backgrounds for cooler tone + background: oceanColors.slate[950], + surface: oceanColors.slate[900], + elevated: oceanColors.slate[800], + // Override borders + border: oceanColors.slate[700], + divider: oceanColors.slate[800], + // Override input + input: { + background: oceanColors.slate[900], + border: oceanColors.slate[700], + text: '#e0f2fe', + // sky-100 + placeholder: '#0c4a6e', + // sky-900 + }, + // Override text colors (cooler) + text: { + primary: '#e0f2fe', + // sky-100 + secondary: '#7dd3fc', + // sky-300 + tertiary: '#38bdf8', + // sky-400 + disabled: '#0c4a6e', + // sky-900 + inverse: oceanColors.slate[950], + }, + // Primary: Teal + primary: { + default: oceanColors.teal[400], + hover: oceanColors.teal[300], + active: oceanColors.teal[500], + light: oceanColors.teal[200], + dark: oceanColors.teal[600], + contrast: baseColors.white, + }, + // Secondary: Cyan + secondary: { + default: oceanColors.cyan[400], + light: oceanColors.cyan[300], + dark: oceanColors.cyan[500], + contrast: baseColors.white, + }, + // Status + success: baseColors.emerald[500], + warning: '#fbbf24', + // amber-400 + error: '#f43f5e', + // rose-500 + info: '#0ea5e9', + // sky-500 + // Semantic + favorite: '#f43f5e', + // rose-500 + like: '#f43f5e', + // rose-500 + tag: oceanColors.teal[400], + // Special + skeleton: oceanColors.slate[800], + shimmer: oceanColors.slate[700], + }, + }, + shadows, + opacity, }; // src/themes/index.ts -var themes = { - default: defaultTheme, - sunset: sunsetTheme, - ocean: oceanTheme +const themes = { + default: defaultTheme, + sunset: sunsetTheme, + ocean: oceanTheme, }; // src/spacing.ts -var spacing = { - 0: 0, - 1: 4, - // 0.25rem - 2: 8, - // 0.5rem - 3: 12, - // 0.75rem - 4: 16, - // 1rem - 5: 20, - // 1.25rem - 6: 24, - // 1.5rem - 7: 28, - // 1.75rem - 8: 32, - // 2rem - 9: 36, - // 2.25rem - 10: 40, - // 2.5rem - 11: 44, - // 2.75rem - 12: 48, - // 3rem - 14: 56, - // 3.5rem - 16: 64, - // 4rem - 20: 80, - // 5rem - 24: 96, - // 6rem - 28: 112, - // 7rem - 32: 128 - // 8rem +const spacing = { + 0: 0, + 1: 4, + // 0.25rem + 2: 8, + // 0.5rem + 3: 12, + // 0.75rem + 4: 16, + // 1rem + 5: 20, + // 1.25rem + 6: 24, + // 1.5rem + 7: 28, + // 1.75rem + 8: 32, + // 2rem + 9: 36, + // 2.25rem + 10: 40, + // 2.5rem + 11: 44, + // 2.75rem + 12: 48, + // 3rem + 14: 56, + // 3.5rem + 16: 64, + // 4rem + 20: 80, + // 5rem + 24: 96, + // 6rem + 28: 112, + // 7rem + 32: 128, + // 8rem }; -var borderRadius = { - none: 0, - sm: 4, - DEFAULT: 8, - md: 8, - lg: 12, - xl: 16, - "2xl": 24, - "3xl": 32, - full: 9999 +const borderRadius = { + none: 0, + sm: 4, + DEFAULT: 8, + md: 8, + lg: 12, + xl: 16, + '2xl': 24, + '3xl': 32, + full: 9999, }; // src/typography.ts -var fontSize = { - xs: 12, - sm: 14, - base: 16, - lg: 18, - xl: 20, - "2xl": 24, - "3xl": 30, - "4xl": 36, - "5xl": 48, - "6xl": 60, - "7xl": 72, - "8xl": 96 +const fontSize = { + xs: 12, + sm: 14, + base: 16, + lg: 18, + xl: 20, + '2xl': 24, + '3xl': 30, + '4xl': 36, + '5xl': 48, + '6xl': 60, + '7xl': 72, + '8xl': 96, }; -var fontWeight = { - regular: "400", - medium: "500", - semibold: "600", - bold: "700" +const fontWeight = { + regular: '400', + medium: '500', + semibold: '600', + bold: '700', }; // native/theme.ts -function getThemeColors(variant = "default", mode = "dark") { - const theme = themes[variant]; - return theme.colors[mode]; +function getThemeColors(variant = 'default', mode = 'dark') { + const theme = themes[variant]; + return theme.colors[mode]; } -function createNativeTheme(variant = "default", mode = "dark") { - const theme = themes[variant]; - const colors = theme.colors[mode]; - const shadows2 = theme.shadows[mode]; - return { - variant, - mode, - colors, - spacing, - borderRadius, - fontSize, - fontWeight, - shadows: shadows2, - opacity: theme.opacity - }; +function createNativeTheme(variant = 'default', mode = 'dark') { + const theme = themes[variant]; + const colors = theme.colors[mode]; + const shadows2 = theme.shadows[mode]; + return { + variant, + mode, + colors, + spacing, + borderRadius, + fontSize, + fontWeight, + shadows: shadows2, + opacity: theme.opacity, + }; } function getThemeVariants() { - return Object.keys(themes); + return Object.keys(themes); } function isValidThemeVariant(variant) { - return variant in themes; + return variant in themes; } -export { - createNativeTheme, - getThemeColors, - getThemeVariants, - isValidThemeVariant -}; +export { createNativeTheme, getThemeColors, getThemeVariants, isValidThemeVariant }; diff --git a/apps/picture/packages/mobile-ui/cli/src/utils/files.ts b/apps/picture/packages/mobile-ui/cli/src/utils/files.ts index 1a81f15d9..95a3c1084 100644 --- a/apps/picture/packages/mobile-ui/cli/src/utils/files.ts +++ b/apps/picture/packages/mobile-ui/cli/src/utils/files.ts @@ -1,6 +1,6 @@ import fs from 'fs-extra'; import path from 'path'; -import { ComponentInfo } from '../types'; +import { type ComponentInfo } from '../types'; import { getComponentsPath, ensureDir } from './paths'; /** diff --git a/apps/picture/packages/mobile-ui/cli/src/utils/registry.ts b/apps/picture/packages/mobile-ui/cli/src/utils/registry.ts index 8966207fd..49f62e752 100644 --- a/apps/picture/packages/mobile-ui/cli/src/utils/registry.ts +++ b/apps/picture/packages/mobile-ui/cli/src/utils/registry.ts @@ -1,5 +1,5 @@ import fs from 'fs-extra'; -import { ComponentRegistry, ComponentInfo } from '../types'; +import { type ComponentRegistry, type ComponentInfo } from '../types'; import { getRegistryPath } from './paths'; /** diff --git a/apps/presi/apps/landing/eslint.config.js b/apps/presi/apps/landing/eslint.config.js deleted file mode 100644 index 172a11a3f..000000000 --- a/apps/presi/apps/landing/eslint.config.js +++ /dev/null @@ -1,11 +0,0 @@ -// @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/landing/eslint.config.js b/apps/quote/apps/landing/eslint.config.js deleted file mode 100644 index 172a11a3f..000000000 --- a/apps/quote/apps/landing/eslint.config.js +++ /dev/null @@ -1,11 +0,0 @@ -// @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/landing/eslint.config.js b/apps/wisekeep/apps/landing/eslint.config.js deleted file mode 100644 index 172a11a3f..000000000 --- a/apps/wisekeep/apps/landing/eslint.config.js +++ /dev/null @@ -1,11 +0,0 @@ -// @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/eslint.config.js b/apps/zitare/apps/landing/eslint.config.js deleted file mode 100644 index 172a11a3f..000000000 --- a/apps/zitare/apps/landing/eslint.config.js +++ /dev/null @@ -1,11 +0,0 @@ -// @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/packages/web-ui/src/stores/toast.ts b/apps/zitare/packages/web-ui/src/stores/toast.ts index 300aa82bc..e75f5f10c 100644 --- a/apps/zitare/packages/web-ui/src/stores/toast.ts +++ b/apps/zitare/packages/web-ui/src/stores/toast.ts @@ -12,7 +12,7 @@ export interface Toast { function createToastStore() { const { subscribe, update } = writable([]); - function addToast(message: string, type: ToastType = 'info', duration: number = 3000) { + function addToast(message: string, type: ToastType = 'info', duration = 3000) { const id = `toast-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`; const toast: Toast = { diff --git a/eslint.config.mjs b/eslint.config.mjs index 82e0d3e9f..016ca9379 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -38,13 +38,27 @@ export default [ '**/*.d.ts', '**/generated/**', + // Config files (tool-specific, not part of app code) + '**/drizzle.config.ts', + 'playwright.config.ts', + 'vitest.config.ts', + 'tests/**', + + // Documentation examples + 'docs/test-examples/**', + + // Games with specific runtime environments + 'games/whopixels/**', + // 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/**', + 'apps/*/packages/**', // Project-specific packages 'games/*/apps/**', + 'games/*/packages/**', // Game-specific packages 'services/**', ], }, diff --git a/games/whopixels/js/scenes/BootScene.js b/games/whopixels/js/scenes/BootScene.js index 8254f51aa..e984fe27e 100644 --- a/games/whopixels/js/scenes/BootScene.js +++ b/games/whopixels/js/scenes/BootScene.js @@ -315,7 +315,7 @@ class BootScene extends Phaser.Scene { const brickWidth = 16; for (let y = 0; y < tileSize; y += brickHeight) { - let offset = y % (brickHeight * 2) === 0 ? 0 : brickWidth / 2; + const offset = y % (brickHeight * 2) === 0 ? 0 : brickWidth / 2; for (let x = offset; x < tileSize; x += brickWidth) { stoneWallGraphics.fillRect(x, y, brickWidth - 1, brickHeight - 1); } @@ -330,7 +330,7 @@ class BootScene extends Phaser.Scene { // Steinmuster für die Wand stoneWallFlowerGraphics.fillStyle(0x555555); for (let y = 0; y < tileSize; y += brickHeight) { - let offset = y % (brickHeight * 2) === 0 ? 0 : brickWidth / 2; + const offset = y % (brickHeight * 2) === 0 ? 0 : brickWidth / 2; for (let x = offset; x < tileSize; x += brickWidth) { stoneWallFlowerGraphics.fillRect(x, y, brickWidth - 1, brickHeight - 1); } diff --git a/games/whopixels/server.js b/games/whopixels/server.js index 702bbbc8c..6d5f9fe7f 100644 --- a/games/whopixels/server.js +++ b/games/whopixels/server.js @@ -246,7 +246,7 @@ const server = http.createServer((req, res) => { // Get the file extension const extname = path.extname(filePath); - let contentType = MIME_TYPES[extname] || 'application/octet-stream'; + const contentType = MIME_TYPES[extname] || 'application/octet-stream'; // Read the file fs.readFile(filePath, (error, content) => { diff --git a/package.json b/package.json index 256822eef..fb25a5839 100644 --- a/package.json +++ b/package.json @@ -9,8 +9,8 @@ "build": "turbo run build", "test": "turbo run test", "lint": "turbo run lint", - "lint:root": "eslint .", - "lint:fix": "eslint . --fix", + "lint:root": "eslint . --cache", + "lint:fix": "eslint . --fix --cache", "type-check": "turbo run type-check", "clean": "turbo run clean", "format": "prettier --config .prettierrc.json --write \"**/*.{ts,tsx,js,jsx,json,md,svelte,astro}\"", diff --git a/packages/eslint-config/typescript.js b/packages/eslint-config/typescript.js index c885f1a89..a85d2db14 100644 --- a/packages/eslint-config/typescript.js +++ b/packages/eslint-config/typescript.js @@ -21,6 +21,8 @@ export const typescriptConfig = [ parserOptions: { ecmaVersion: 2022, sourceType: 'module', + projectService: true, + tsconfigRootDir: import.meta.dirname, }, }, plugins: { diff --git a/packages/mana-core-nestjs-integration/src/decorators/current-user.decorator.ts b/packages/mana-core-nestjs-integration/src/decorators/current-user.decorator.ts index aef305fd4..16e5150c8 100644 --- a/packages/mana-core-nestjs-integration/src/decorators/current-user.decorator.ts +++ b/packages/mana-core-nestjs-integration/src/decorators/current-user.decorator.ts @@ -1,4 +1,4 @@ -import { createParamDecorator, ExecutionContext } from '@nestjs/common'; +import { createParamDecorator, type ExecutionContext } from '@nestjs/common'; export interface JwtPayload { sub: string; diff --git a/packages/mana-core-nestjs-integration/src/interfaces/mana-core-options.interface.ts b/packages/mana-core-nestjs-integration/src/interfaces/mana-core-options.interface.ts index 893202126..101633f51 100644 --- a/packages/mana-core-nestjs-integration/src/interfaces/mana-core-options.interface.ts +++ b/packages/mana-core-nestjs-integration/src/interfaces/mana-core-options.interface.ts @@ -1,4 +1,4 @@ -import { ModuleMetadata, Type } from '@nestjs/common'; +import { type ModuleMetadata, type Type } from '@nestjs/common'; export interface ManaCoreModuleOptions { /** diff --git a/packages/mana-core-nestjs-integration/src/services/credit-client.service.ts b/packages/mana-core-nestjs-integration/src/services/credit-client.service.ts index 2ea4f9729..8e3e2d17e 100644 --- a/packages/mana-core-nestjs-integration/src/services/credit-client.service.ts +++ b/packages/mana-core-nestjs-integration/src/services/credit-client.service.ts @@ -106,12 +106,17 @@ export class CreditClientService { return this.getDefaultBalance(); } - const data = (await response.json()) as CreditBalance; + const { + balance = 0, + freeCreditsRemaining = 0, + totalEarned = 0, + totalSpent = 0, + } = (await response.json()) as CreditBalance; return { - balance: data.balance || 0, - freeCreditsRemaining: data.freeCreditsRemaining || 0, - totalEarned: data.totalEarned || 0, - totalSpent: data.totalSpent || 0, + balance, + freeCreditsRemaining, + totalEarned, + totalSpent, }; } catch (error) { this.logger.error(`Failed to get balance for user ${userId}:`, error); diff --git a/packages/news-database/src/index.ts b/packages/news-database/src/index.ts index 6a037064f..9505ae03e 100644 --- a/packages/news-database/src/index.ts +++ b/packages/news-database/src/index.ts @@ -1,4 +1,4 @@ -import { drizzle, PostgresJsDatabase } from 'drizzle-orm/postgres-js'; +import { drizzle, type PostgresJsDatabase } from 'drizzle-orm/postgres-js'; import postgres from 'postgres'; import * as schema from './schema'; diff --git a/packages/shared-auth-stores/src/types.ts b/packages/shared-auth-stores/src/types.ts index f88a3f3d9..b88856964 100644 --- a/packages/shared-auth-stores/src/types.ts +++ b/packages/shared-auth-stores/src/types.ts @@ -3,8 +3,6 @@ * Generic types for creating auth stores with custom user types */ -import type { AuthResult as BaseAuthResult } from '@manacore/shared-types'; - /** * Base user interface that all app-specific user types must extend */ diff --git a/packages/shared-auth/src/core/authService.ts b/packages/shared-auth/src/core/authService.ts index 8027bfaa7..3caaf4bcd 100644 --- a/packages/shared-auth/src/core/authService.ts +++ b/packages/shared-auth/src/core/authService.ts @@ -106,10 +106,6 @@ export function createAuthService(config: AuthServiceConfig) { */ async signUp(email: string, password: string): Promise { try { - const storage = getStorageAdapter(); - const deviceAdapter = getDeviceAdapter(); - const deviceInfo = await deviceAdapter.getDeviceInfo(); - const response = await fetch(`${baseUrl}${endpoints.signUp}`, { method: 'POST', headers: { 'Content-Type': 'application/json' }, @@ -128,7 +124,8 @@ export function createAuthService(config: AuthServiceConfig) { return { success: false, error: errorData.message || 'Sign up failed' }; } - const responseData = await response.json(); + // Consume response to avoid unhandled promise + await response.json(); // Mana Core Auth returns user data immediately on registration // User needs to sign in separately to get tokens diff --git a/packages/shared-auth/src/core/jwtUtils.ts b/packages/shared-auth/src/core/jwtUtils.ts index 549883946..0eb39c9c9 100644 --- a/packages/shared-auth/src/core/jwtUtils.ts +++ b/packages/shared-auth/src/core/jwtUtils.ts @@ -30,7 +30,7 @@ export function decodeToken(token: string): DecodedToken | null { /** * Check if a token is valid locally (not expired) */ -export function isTokenValidLocally(token: string, bufferSeconds: number = 10): boolean { +export function isTokenValidLocally(token: string, bufferSeconds = 10): boolean { try { const payload = decodeToken(token); if (!payload || !payload.exp) { diff --git a/packages/shared-config/src/env.ts b/packages/shared-config/src/env.ts index d4f730895..c1148718f 100644 --- a/packages/shared-config/src/env.ts +++ b/packages/shared-config/src/env.ts @@ -118,7 +118,7 @@ export function getEnv( */ export function getBoolEnv( key: string, - defaultValue: boolean = false, + defaultValue = false, env: NodeJS.ProcessEnv = process.env ): boolean { const value = env[key]; diff --git a/packages/shared-config/src/features.ts b/packages/shared-config/src/features.ts index f6c5084a0..0a0e7ecf3 100644 --- a/packages/shared-config/src/features.ts +++ b/packages/shared-config/src/features.ts @@ -99,7 +99,7 @@ export function createFeatureFlags>( */ export function isFeatureEnabled( featureName: string, - defaultValue: boolean = false, + defaultValue = false, env: NodeJS.ProcessEnv = process.env ): boolean { const envVar = `FEATURE_${featureName.toUpperCase().replace(/[^A-Z0-9]/g, '_')}`; diff --git a/packages/shared-credit-service/src/createCreditService.ts b/packages/shared-credit-service/src/createCreditService.ts index 3a1b4e132..2047ac2e0 100644 --- a/packages/shared-credit-service/src/createCreditService.ts +++ b/packages/shared-credit-service/src/createCreditService.ts @@ -230,10 +230,7 @@ export function createCreditService(config: CreditServiceConfig) { /** * Calculate cost for multiple units of an operation */ - async function calculateCost( - operation: StandardOperationType, - quantity: number = 1 - ): Promise { + async function calculateCost(operation: StandardOperationType, quantity = 1): Promise { const unitCost = await getOperationCost(operation); return unitCost * quantity; } @@ -241,7 +238,7 @@ export function createCreditService(config: CreditServiceConfig) { /** * Calculate cost synchronously (uses cached values) */ - function calculateCostSync(operation: StandardOperationType, quantity: number = 1): number { + function calculateCostSync(operation: StandardOperationType, quantity = 1): number { const unitCost = getOperationCostSync(operation); return unitCost * quantity; } @@ -288,7 +285,7 @@ export function createCreditService(config: CreditServiceConfig) { /** * Format credit amount for display */ - function formatCredits(amount: number, locale: string = 'en-US'): string { + function formatCredits(amount: number, locale = 'en-US'): string { return new Intl.NumberFormat(locale).format(amount); } diff --git a/packages/shared-credit-service/src/types.ts b/packages/shared-credit-service/src/types.ts index 46c937403..ffa8da84c 100644 --- a/packages/shared-credit-service/src/types.ts +++ b/packages/shared-credit-service/src/types.ts @@ -4,8 +4,6 @@ * Types for credit/mana operations across all apps */ -import type { OperationPricing, ManaBalance } from '@manacore/shared-subscription-types'; - /** * Credit balance with additional metadata */ diff --git a/packages/shared-errors/src/errors/app-error.ts b/packages/shared-errors/src/errors/app-error.ts index 7497e6d27..87a95db5c 100644 --- a/packages/shared-errors/src/errors/app-error.ts +++ b/packages/shared-errors/src/errors/app-error.ts @@ -1,4 +1,8 @@ -import { ErrorCode, ERROR_CODE_TO_HTTP_STATUS, ERROR_CODE_RETRYABLE } from '../types/error-codes'; +import { + type ErrorCode, + ERROR_CODE_TO_HTTP_STATUS, + ERROR_CODE_RETRYABLE, +} from '../types/error-codes'; /** * Additional context that can be attached to errors. diff --git a/packages/shared-errors/src/nestjs/app-exception.filter.ts b/packages/shared-errors/src/nestjs/app-exception.filter.ts index 41f1c685a..6369a5ff5 100644 --- a/packages/shared-errors/src/nestjs/app-exception.filter.ts +++ b/packages/shared-errors/src/nestjs/app-exception.filter.ts @@ -7,7 +7,7 @@ import { Logger, } from '@nestjs/common'; import type { Request, Response } from 'express'; -import { AppError } from '../errors/app-error'; +import { type AppError } from '../errors/app-error'; import { isAppError, isCreditError, isRateLimitError } from '../guards/type-guards'; import { ErrorCode } from '../types/error-codes'; diff --git a/packages/shared-feedback-service/src/createFeedbackService.ts b/packages/shared-feedback-service/src/createFeedbackService.ts index e0f0563c3..888e68ff8 100644 --- a/packages/shared-feedback-service/src/createFeedbackService.ts +++ b/packages/shared-feedback-service/src/createFeedbackService.ts @@ -18,7 +18,6 @@ */ import type { - Feedback, CreateFeedbackInput, FeedbackQueryParams, FeedbackResponse, diff --git a/packages/shared-nestjs-auth/src/decorators/current-user.decorator.ts b/packages/shared-nestjs-auth/src/decorators/current-user.decorator.ts index 0929abf87..b4572b7d5 100644 --- a/packages/shared-nestjs-auth/src/decorators/current-user.decorator.ts +++ b/packages/shared-nestjs-auth/src/decorators/current-user.decorator.ts @@ -1,5 +1,5 @@ -import { createParamDecorator, ExecutionContext } from '@nestjs/common'; -import { CurrentUserData } from '../types'; +import { createParamDecorator, type ExecutionContext } from '@nestjs/common'; +import { type CurrentUserData } from '../types'; /** * Parameter decorator to extract the current user from the request. diff --git a/packages/shared-supabase/src/index.ts b/packages/shared-supabase/src/index.ts index ba17ea8e5..568c3193d 100644 --- a/packages/shared-supabase/src/index.ts +++ b/packages/shared-supabase/src/index.ts @@ -4,7 +4,7 @@ * This package provides a unified Supabase client and common database utilities. */ -import { createClient, SupabaseClient } from '@supabase/supabase-js'; +import { createClient, type SupabaseClient } from '@supabase/supabase-js'; import type { SupabaseConfig } from '@manacore/shared-types'; export { SupabaseClient } from '@supabase/supabase-js'; diff --git a/packages/shared-theme/src/user-settings-store.svelte.ts b/packages/shared-theme/src/user-settings-store.svelte.ts index 0f31692a0..cc6557fdc 100644 --- a/packages/shared-theme/src/user-settings-store.svelte.ts +++ b/packages/shared-theme/src/user-settings-store.svelte.ts @@ -111,11 +111,7 @@ export function createUserSettingsStore(config: UserSettingsStoreConfig): UserSe /** * Make an API request to the settings endpoint */ - async function apiRequest( - method: string, - path: string, - body?: object - ): Promise { + async function apiRequest(method: string, path: string, body?: object): Promise { const token = await getAccessToken(); if (!token) { console.warn('No access token available for settings API'); diff --git a/packages/shared-utils/src/date.ts b/packages/shared-utils/src/date.ts index d3c0367ba..0f1d29a5f 100644 --- a/packages/shared-utils/src/date.ts +++ b/packages/shared-utils/src/date.ts @@ -17,7 +17,7 @@ export type LocaleKey = keyof typeof locales; */ export function formatDate( date: string | Date, - formatStr: string = 'PPP', + formatStr = 'PPP', locale: LocaleKey = 'de' ): string { const dateObj = typeof date === 'string' ? parseISO(date) : date; diff --git a/packages/shared-utils/src/format.ts b/packages/shared-utils/src/format.ts index fc66e9503..854f14fc8 100644 --- a/packages/shared-utils/src/format.ts +++ b/packages/shared-utils/src/format.ts @@ -93,7 +93,7 @@ export function formatDurationHumanReadable(seconds: number, locale: 'en' | 'de' /** * Format file size from bytes to human readable string */ -export function formatFileSize(bytes: number, decimals: number = 1): string { +export function formatFileSize(bytes: number, decimals = 1): string { if (bytes === 0) return '0 B'; if (!Number.isFinite(bytes) || bytes < 0) return '--'; @@ -107,18 +107,14 @@ export function formatFileSize(bytes: number, decimals: number = 1): string { /** * Format number with thousands separator */ -export function formatNumber(num: number, locale: string = 'de-DE'): string { +export function formatNumber(num: number, locale = 'de-DE'): string { return num.toLocaleString(locale); } /** * Format currency */ -export function formatCurrency( - amount: number, - currency: string = 'EUR', - locale: string = 'de-DE' -): string { +export function formatCurrency(amount: number, currency = 'EUR', locale = 'de-DE'): string { return new Intl.NumberFormat(locale, { style: 'currency', currency, @@ -128,11 +124,7 @@ export function formatCurrency( /** * Format percentage */ -export function formatPercent( - value: number, - decimals: number = 0, - locale: string = 'de-DE' -): string { +export function formatPercent(value: number, decimals = 0, locale = 'de-DE'): string { return new Intl.NumberFormat(locale, { style: 'percent', minimumFractionDigits: decimals, diff --git a/packages/shared-utils/src/string.ts b/packages/shared-utils/src/string.ts index a58916c97..41f0abaef 100644 --- a/packages/shared-utils/src/string.ts +++ b/packages/shared-utils/src/string.ts @@ -21,7 +21,7 @@ export function capitalize(str: string): string { /** * Generate a random string ID */ -export function generateId(length: number = 8): string { +export function generateId(length = 8): string { const chars = 'abcdefghijklmnopqrstuvwxyz0123456789'; let result = ''; for (let i = 0; i < length; i++) { diff --git a/scripts/generate-env.mjs b/scripts/generate-env.mjs index 14d2c02f2..a3db2067a 100644 --- a/scripts/generate-env.mjs +++ b/scripts/generate-env.mjs @@ -30,7 +30,10 @@ function parseEnvFile(content) { if (match) { let [, key, value] = match; // Handle quoted values - if ((value.startsWith('"') && value.endsWith('"')) || (value.startsWith("'") && value.endsWith("'"))) { + if ( + (value.startsWith('"') && value.endsWith('"')) || + (value.startsWith("'") && value.endsWith("'")) + ) { value = value.slice(1, -1); } env[key.trim()] = value; @@ -142,7 +145,8 @@ const APP_CONFIGS = [ { path: 'apps/maerchenzauber/apps/mobile/.env', vars: { - EXPO_PUBLIC_STORYTELLER_BACKEND_URL: (env) => `http://localhost:${env.MAERCHENZAUBER_BACKEND_PORT || '3003'}`, + EXPO_PUBLIC_STORYTELLER_BACKEND_URL: (env) => + `http://localhost:${env.MAERCHENZAUBER_BACKEND_PORT || '3003'}`, EXPO_ROUTER_APP_ROOT: () => 'app', }, }, @@ -227,7 +231,8 @@ const APP_CONFIGS = [ NODE_ENV: () => 'development', PORT: (env) => env.PICTURE_BACKEND_PORT || '3003', BACKEND_URL: (env) => env.PICTURE_BACKEND_URL || 'http://localhost:3003', - DATABASE_URL: (env) => env.PICTURE_DATABASE_URL || 'postgresql://picture:picturepassword@localhost:5434/picture', + DATABASE_URL: (env) => + env.PICTURE_DATABASE_URL || 'postgresql://picture:picturepassword@localhost:5434/picture', MANA_CORE_AUTH_URL: (env) => env.MANA_CORE_AUTH_URL, DEV_BYPASS_AUTH: () => 'true', DEV_USER_ID: (env) => env.DEV_USER_ID || '00000000-0000-0000-0000-000000000000', From 843cf1e6782e91c3121d5a855aab7eeee876d74a Mon Sep 17 00:00:00 2001 From: Wuesteon Date: Thu, 4 Dec 2025 00:51:40 +0100 Subject: [PATCH 3/6] fixes --- .claude-flow/metrics/system-metrics.json | 360 ++++++++++++++++++ apps/calendar/apps/landing/package.json | 1 - apps/calendar/packages/shared/package.json | 3 +- apps/chat/apps/landing/package.json | 3 +- apps/chat/packages/chat-types/package.json | 4 +- apps/manacore/apps/landing/package.json | 3 +- apps/manadeck/apps/landing/package.json | 3 +- apps/picture/apps/landing/package.json | 1 - apps/presi/apps/landing/package.json | 3 +- apps/presi/apps/mobile/app/_layout.tsx | 2 +- apps/presi/apps/mobile/app/deck/[id].tsx | 10 +- apps/presi/apps/mobile/app/index.tsx | 4 +- apps/presi/apps/mobile/app/shared/[id].tsx | 2 +- apps/presi/apps/mobile/app/themes.tsx | 2 +- .../apps/mobile/components/ThemeProvider.tsx | 4 +- .../apps/mobile/components/atoms/Button.tsx | 2 +- .../components/common/ThemeSettings.tsx | 2 +- .../apps/mobile/components/decks/DeckCard.tsx | 2 +- .../apps/mobile/components/decks/DeckList.tsx | 2 +- .../components/decks/DeckShareSettings.tsx | 2 +- .../components/forms/CreateDeckForm.tsx | 2 +- .../presentation/PresentationMode.tsx | 2 +- .../mobile/components/slides/SlideEditor.tsx | 2 +- .../mobile/components/slides/SlideList.tsx | 2 +- .../mobile/components/slides/SlideView.tsx | 2 +- apps/presi/apps/mobile/constants/theme.ts | 2 +- apps/presi/apps/mobile/services/auth.ts | 2 +- apps/presi/apps/mobile/services/firestore.ts | 2 +- .../presi/apps/mobile/theme/ThemeProvider.tsx | 4 +- .../presi/apps/mobile/theme/ThemeSettings.tsx | 2 +- apps/presi/packages/shared/package.json | 3 +- apps/storage/packages/shared/package.json | 3 +- apps/zitare/apps/landing/package.json | 3 +- apps/zitare/packages/content/package.json | 3 +- apps/zitare/packages/shared/package.json | 3 +- apps/zitare/packages/web-ui/package.json | 3 +- 36 files changed, 400 insertions(+), 55 deletions(-) diff --git a/.claude-flow/metrics/system-metrics.json b/.claude-flow/metrics/system-metrics.json index b02b4ddac..c0199d69b 100644 --- a/.claude-flow/metrics/system-metrics.json +++ b/.claude-flow/metrics/system-metrics.json @@ -1390,5 +1390,365 @@ "cpuLoad": 0.2546793619791667, "platform": "darwin", "uptime": 168739 + }, + { + "timestamp": 1764804747294, + "memoryTotal": 34359738368, + "memoryUsed": 31928467456, + "memoryFree": 2431270912, + "memoryUsagePercent": 92.92407035827637, + "memoryEfficiency": 7.075929641723633, + "cpuCount": 12, + "cpuLoad": 0.3412679036458333, + "platform": "darwin", + "uptime": 168769 + }, + { + "timestamp": 1764804777295, + "memoryTotal": 34359738368, + "memoryUsed": 31730237440, + "memoryFree": 2629500928, + "memoryUsagePercent": 92.3471450805664, + "memoryEfficiency": 7.652854919433594, + "cpuCount": 12, + "cpuLoad": 0.2632649739583333, + "platform": "darwin", + "uptime": 168799 + }, + { + "timestamp": 1764804807296, + "memoryTotal": 34359738368, + "memoryUsed": 32342261760, + "memoryFree": 2017476608, + "memoryUsagePercent": 94.12837028503418, + "memoryEfficiency": 5.87162971496582, + "cpuCount": 12, + "cpuLoad": 0.23197428385416666, + "platform": "darwin", + "uptime": 168829 + }, + { + "timestamp": 1764804837297, + "memoryTotal": 34359738368, + "memoryUsed": 33403928576, + "memoryFree": 955809792, + "memoryUsagePercent": 97.21822738647461, + "memoryEfficiency": 2.7817726135253906, + "cpuCount": 12, + "cpuLoad": 0.23291015625, + "platform": "darwin", + "uptime": 168859 + }, + { + "timestamp": 1764804867297, + "memoryTotal": 34359738368, + "memoryUsed": 34050195456, + "memoryFree": 309542912, + "memoryUsagePercent": 99.09911155700684, + "memoryEfficiency": 0.9008884429931641, + "cpuCount": 12, + "cpuLoad": 0.24495442708333334, + "platform": "darwin", + "uptime": 168889 + }, + { + "timestamp": 1764804897298, + "memoryTotal": 34359738368, + "memoryUsed": 31393316864, + "memoryFree": 2966421504, + "memoryUsagePercent": 91.3665771484375, + "memoryEfficiency": 8.6334228515625, + "cpuCount": 12, + "cpuLoad": 0.4297688802083333, + "platform": "darwin", + "uptime": 168919 + }, + { + "timestamp": 1764804927300, + "memoryTotal": 34359738368, + "memoryUsed": 31525306368, + "memoryFree": 2834432000, + "memoryUsagePercent": 91.75071716308594, + "memoryEfficiency": 8.249282836914062, + "cpuCount": 12, + "cpuLoad": 0.447021484375, + "platform": "darwin", + "uptime": 168949 + }, + { + "timestamp": 1764804957300, + "memoryTotal": 34359738368, + "memoryUsed": 31847972864, + "memoryFree": 2511765504, + "memoryUsagePercent": 92.68980026245117, + "memoryEfficiency": 7.310199737548828, + "cpuCount": 12, + "cpuLoad": 0.8130696614583334, + "platform": "darwin", + "uptime": 168979 + }, + { + "timestamp": 1764804987301, + "memoryTotal": 34359738368, + "memoryUsed": 32510230528, + "memoryFree": 1849507840, + "memoryUsagePercent": 94.61722373962402, + "memoryEfficiency": 5.382776260375977, + "cpuCount": 12, + "cpuLoad": 1.1352945963541667, + "platform": "darwin", + "uptime": 169009 + }, + { + "timestamp": 1764805017302, + "memoryTotal": 34359738368, + "memoryUsed": 32548028416, + "memoryFree": 1811709952, + "memoryUsagePercent": 94.72723007202148, + "memoryEfficiency": 5.272769927978516, + "cpuCount": 12, + "cpuLoad": 0.7440185546875, + "platform": "darwin", + "uptime": 169039 + }, + { + "timestamp": 1764805047307, + "memoryTotal": 34359738368, + "memoryUsed": 34271232000, + "memoryFree": 88506368, + "memoryUsagePercent": 99.74241256713867, + "memoryEfficiency": 0.2575874328613281, + "cpuCount": 12, + "cpuLoad": 0.6794026692708334, + "platform": "darwin", + "uptime": 169069 + }, + { + "timestamp": 1764805077309, + "memoryTotal": 34359738368, + "memoryUsed": 30496456704, + "memoryFree": 3863281664, + "memoryUsagePercent": 88.7563705444336, + "memoryEfficiency": 11.243629455566406, + "cpuCount": 12, + "cpuLoad": 0.539794921875, + "platform": "darwin", + "uptime": 169099 + }, + { + "timestamp": 1764805107311, + "memoryTotal": 34359738368, + "memoryUsed": 31044321280, + "memoryFree": 3315417088, + "memoryUsagePercent": 90.35086631774902, + "memoryEfficiency": 9.649133682250977, + "cpuCount": 12, + "cpuLoad": 0.436279296875, + "platform": "darwin", + "uptime": 169129 + }, + { + "timestamp": 1764805137312, + "memoryTotal": 34359738368, + "memoryUsed": 31248367616, + "memoryFree": 3111370752, + "memoryUsagePercent": 90.9447193145752, + "memoryEfficiency": 9.055280685424805, + "cpuCount": 12, + "cpuLoad": 0.3575032552083333, + "platform": "darwin", + "uptime": 169159 + }, + { + "timestamp": 1764805167313, + "memoryTotal": 34359738368, + "memoryUsed": 31985221632, + "memoryFree": 2374516736, + "memoryUsagePercent": 93.08924674987793, + "memoryEfficiency": 6.91075325012207, + "cpuCount": 12, + "cpuLoad": 0.292724609375, + "platform": "darwin", + "uptime": 169189 + }, + { + "timestamp": 1764805197314, + "memoryTotal": 34359738368, + "memoryUsed": 31961088000, + "memoryFree": 2398650368, + "memoryUsagePercent": 93.01900863647461, + "memoryEfficiency": 6.980991363525391, + "cpuCount": 12, + "cpuLoad": 0.2621256510416667, + "platform": "darwin", + "uptime": 169219 + }, + { + "timestamp": 1764805227315, + "memoryTotal": 34359738368, + "memoryUsed": 32411680768, + "memoryFree": 1948057600, + "memoryUsagePercent": 94.33040618896484, + "memoryEfficiency": 5.669593811035156, + "cpuCount": 12, + "cpuLoad": 0.23238118489583334, + "platform": "darwin", + "uptime": 169249 + }, + { + "timestamp": 1764805257316, + "memoryTotal": 34359738368, + "memoryUsed": 32913588224, + "memoryFree": 1446150144, + "memoryUsagePercent": 95.7911491394043, + "memoryEfficiency": 4.208850860595703, + "cpuCount": 12, + "cpuLoad": 0.3552652994791667, + "platform": "darwin", + "uptime": 169279 + }, + { + "timestamp": 1764805287317, + "memoryTotal": 34359738368, + "memoryUsed": 32959627264, + "memoryFree": 1400111104, + "memoryUsagePercent": 95.92514038085938, + "memoryEfficiency": 4.074859619140625, + "cpuCount": 12, + "cpuLoad": 0.3252360026041667, + "platform": "darwin", + "uptime": 169309 + }, + { + "timestamp": 1764805317320, + "memoryTotal": 34359738368, + "memoryUsed": 32839237632, + "memoryFree": 1520500736, + "memoryUsagePercent": 95.57476043701172, + "memoryEfficiency": 4.425239562988281, + "cpuCount": 12, + "cpuLoad": 0.259765625, + "platform": "darwin", + "uptime": 169339 + }, + { + "timestamp": 1764805347320, + "memoryTotal": 34359738368, + "memoryUsed": 33293942784, + "memoryFree": 1065795584, + "memoryUsagePercent": 96.89812660217285, + "memoryEfficiency": 3.1018733978271484, + "cpuCount": 12, + "cpuLoad": 0.4244384765625, + "platform": "darwin", + "uptime": 169369 + }, + { + "timestamp": 1764805377321, + "memoryTotal": 34359738368, + "memoryUsed": 33529135104, + "memoryFree": 830603264, + "memoryUsagePercent": 97.58262634277344, + "memoryEfficiency": 2.4173736572265625, + "cpuCount": 12, + "cpuLoad": 0.4689534505208333, + "platform": "darwin", + "uptime": 169399 + }, + { + "timestamp": 1764805407322, + "memoryTotal": 34359738368, + "memoryUsed": 31573344256, + "memoryFree": 2786394112, + "memoryUsagePercent": 91.8905258178711, + "memoryEfficiency": 8.109474182128906, + "cpuCount": 12, + "cpuLoad": 0.3621419270833333, + "platform": "darwin", + "uptime": 169429 + }, + { + "timestamp": 1764805437323, + "memoryTotal": 34359738368, + "memoryUsed": 33118453760, + "memoryFree": 1241284608, + "memoryUsagePercent": 96.38738632202148, + "memoryEfficiency": 3.6126136779785156, + "cpuCount": 12, + "cpuLoad": 0.3133544921875, + "platform": "darwin", + "uptime": 169459 + }, + { + "timestamp": 1764805467323, + "memoryTotal": 34359738368, + "memoryUsed": 33758134272, + "memoryFree": 601604096, + "memoryUsagePercent": 98.24910163879395, + "memoryEfficiency": 1.7508983612060547, + "cpuCount": 12, + "cpuLoad": 0.22066243489583334, + "platform": "darwin", + "uptime": 169489 + }, + { + "timestamp": 1764805497323, + "memoryTotal": 34359738368, + "memoryUsed": 33651965952, + "memoryFree": 707772416, + "memoryUsagePercent": 97.94011116027832, + "memoryEfficiency": 2.0598888397216797, + "cpuCount": 12, + "cpuLoad": 0.19954427083333334, + "platform": "darwin", + "uptime": 169519 + }, + { + "timestamp": 1764805527325, + "memoryTotal": 34359738368, + "memoryUsed": 33799356416, + "memoryFree": 560381952, + "memoryUsagePercent": 98.36907386779785, + "memoryEfficiency": 1.6309261322021484, + "cpuCount": 12, + "cpuLoad": 0.15824381510416666, + "platform": "darwin", + "uptime": 169549 + }, + { + "timestamp": 1764805557327, + "memoryTotal": 34359738368, + "memoryUsed": 33850228736, + "memoryFree": 509509632, + "memoryUsagePercent": 98.51713180541992, + "memoryEfficiency": 1.4828681945800781, + "cpuCount": 12, + "cpuLoad": 0.1678466796875, + "platform": "darwin", + "uptime": 169579 + }, + { + "timestamp": 1764805587328, + "memoryTotal": 34359738368, + "memoryUsed": 34072035328, + "memoryFree": 287703040, + "memoryUsagePercent": 99.16267395019531, + "memoryEfficiency": 0.8373260498046875, + "cpuCount": 12, + "cpuLoad": 0.308349609375, + "platform": "darwin", + "uptime": 169609 + }, + { + "timestamp": 1764805617330, + "memoryTotal": 34359738368, + "memoryUsed": 33581727744, + "memoryFree": 778010624, + "memoryUsagePercent": 97.73569107055664, + "memoryEfficiency": 2.2643089294433594, + "cpuCount": 12, + "cpuLoad": 0.3234456380208333, + "platform": "darwin", + "uptime": 169639 } ] \ No newline at end of file diff --git a/apps/calendar/apps/landing/package.json b/apps/calendar/apps/landing/package.json index 88eb2d8ba..a91ada7be 100644 --- a/apps/calendar/apps/landing/package.json +++ b/apps/calendar/apps/landing/package.json @@ -10,7 +10,6 @@ "preview": "astro preview", "astro": "astro", "type-check": "astro check", - "lint": "prettier --check . && eslint .", "format": "prettier --write .", "clean": "rm -rf dist .astro node_modules" }, diff --git a/apps/calendar/packages/shared/package.json b/apps/calendar/packages/shared/package.json index d1ac845de..4ffa72483 100644 --- a/apps/calendar/packages/shared/package.json +++ b/apps/calendar/packages/shared/package.json @@ -11,8 +11,7 @@ "./constants": "./src/constants/index.ts" }, "scripts": { - "type-check": "tsc --noEmit", - "lint": "eslint src" + "type-check": "tsc --noEmit" }, "devDependencies": { "typescript": "~5.9.2" diff --git a/apps/chat/apps/landing/package.json b/apps/chat/apps/landing/package.json index 27fcdcad9..09e1c8a29 100644 --- a/apps/chat/apps/landing/package.json +++ b/apps/chat/apps/landing/package.json @@ -9,8 +9,7 @@ "build": "astro check && astro build", "preview": "astro preview", "astro": "astro", - "type-check": "astro check", - "lint": "eslint ." + "type-check": "astro check" }, "dependencies": { "@astrojs/check": "^0.9.0", diff --git a/apps/chat/packages/chat-types/package.json b/apps/chat/packages/chat-types/package.json index bf9e38d10..bdca6f812 100644 --- a/apps/chat/packages/chat-types/package.json +++ b/apps/chat/packages/chat-types/package.json @@ -8,7 +8,5 @@ "exports": { ".": "./src/index.ts" }, - "scripts": { - "lint": "eslint ." - } + "scripts": {} } diff --git a/apps/manacore/apps/landing/package.json b/apps/manacore/apps/landing/package.json index 3fdb2a198..32209e345 100644 --- a/apps/manacore/apps/landing/package.json +++ b/apps/manacore/apps/landing/package.json @@ -5,8 +5,7 @@ "scripts": { "dev": "astro dev", "build": "astro build", - "preview": "astro preview", - "lint": "eslint ." + "preview": "astro preview" }, "dependencies": { "@astrojs/react": "^3.6.0", diff --git a/apps/manadeck/apps/landing/package.json b/apps/manadeck/apps/landing/package.json index 86d7016f0..a5512b7b4 100644 --- a/apps/manadeck/apps/landing/package.json +++ b/apps/manadeck/apps/landing/package.json @@ -9,8 +9,7 @@ "build": "astro check && astro build", "preview": "astro preview", "astro": "astro", - "type-check": "astro check", - "lint": "eslint ." + "type-check": "astro check" }, "dependencies": { "@astrojs/check": "^0.9.0", diff --git a/apps/picture/apps/landing/package.json b/apps/picture/apps/landing/package.json index bfea7b00c..873c96774 100644 --- a/apps/picture/apps/landing/package.json +++ b/apps/picture/apps/landing/package.json @@ -10,7 +10,6 @@ "preview": "astro preview", "astro": "astro", "type-check": "astro check", - "lint": "prettier --check . && eslint .", "format": "prettier --write .", "clean": "rm -rf dist .astro node_modules" }, diff --git a/apps/presi/apps/landing/package.json b/apps/presi/apps/landing/package.json index b5922a906..412a163e7 100644 --- a/apps/presi/apps/landing/package.json +++ b/apps/presi/apps/landing/package.json @@ -9,8 +9,7 @@ "build": "astro check && astro build", "preview": "astro preview", "astro": "astro", - "type-check": "astro check", - "lint": "eslint ." + "type-check": "astro check" }, "dependencies": { "@astrojs/check": "^0.9.0", diff --git a/apps/presi/apps/mobile/app/_layout.tsx b/apps/presi/apps/mobile/app/_layout.tsx index b4944e2ac..850190508 100644 --- a/apps/presi/apps/mobile/app/_layout.tsx +++ b/apps/presi/apps/mobile/app/_layout.tsx @@ -18,7 +18,7 @@ function StackNavigator() { header: ({ route, options }) => { let title = options.title || ''; let showAddDeck = false; - let rightContent = options.headerRight?.({}); + const rightContent = options.headerRight?.({}); if (route.name === 'index') { title = `My Decks (${route.params?.deckCount || 0})`; diff --git a/apps/presi/apps/mobile/app/deck/[id].tsx b/apps/presi/apps/mobile/app/deck/[id].tsx index 082eeafcb..569b3279a 100644 --- a/apps/presi/apps/mobile/app/deck/[id].tsx +++ b/apps/presi/apps/mobile/app/deck/[id].tsx @@ -11,7 +11,7 @@ import { } from 'react-native'; import { useLocalSearchParams, useRouter } from 'expo-router'; import { getDeckSlides, getDeck, deleteSlide, reorderSlide } from '../../services/firestore'; -import { Slide, Deck } from '../../types/models'; +import { type Slide, type Deck } from '../../types/models'; import { SlideList } from '../../components/slides/SlideList'; import { SlideEditor } from '../../components/slides/SlideEditor'; import { PresentationMode } from '../../components/presentation/PresentationMode'; @@ -234,7 +234,7 @@ export default function DeckScreen() { />
{ setIsCreateModalVisible(false); setEditingSlide(null); @@ -314,7 +314,7 @@ export default function DeckScreen() { setIsDeleteModalVisible(false)} > setIsPresentationMode(false)} - statusBarTranslucent={true} + statusBarTranslucent > setIsPresentationMode(false)} /> diff --git a/apps/presi/apps/mobile/app/index.tsx b/apps/presi/apps/mobile/app/index.tsx index 029088024..148bd8993 100644 --- a/apps/presi/apps/mobile/app/index.tsx +++ b/apps/presi/apps/mobile/app/index.tsx @@ -7,12 +7,12 @@ import { getDeckSlides, migrateDecksToNewSchema, } from '../services/firestore'; -import { Deck, Slide } from '../types/models'; +import { type Deck, Slide } from '../types/models'; import { DeckList } from '../components/decks/DeckList'; import { CreateDeckForm } from '../components/forms/CreateDeckForm'; import { DeckShareSettings } from '../components/decks/DeckShareSettings'; import { auth } from '../firebaseConfig'; -import { onAuthStateChanged, User } from 'firebase/auth'; +import { onAuthStateChanged, type User } from 'firebase/auth'; import MaterialIcons from 'react-native-vector-icons/MaterialIcons'; import { ThemeProvider } from '../components/ThemeProvider'; import { useTheme } from '../components/ThemeProvider'; diff --git a/apps/presi/apps/mobile/app/shared/[id].tsx b/apps/presi/apps/mobile/app/shared/[id].tsx index a6dafc5f8..e9653d59b 100644 --- a/apps/presi/apps/mobile/app/shared/[id].tsx +++ b/apps/presi/apps/mobile/app/shared/[id].tsx @@ -2,7 +2,7 @@ import { useLocalSearchParams } from 'expo-router'; import React, { useEffect, useState } from 'react'; import { View, Text, StyleSheet } from 'react-native'; import { useTheme } from '../../components/ThemeProvider'; -import { Deck } from '../../types/models'; +import { type Deck } from '../../types/models'; import { doc, getDoc } from 'firebase/firestore'; import { db } from '../../firebaseConfig'; import { SlideList } from '../../components/slides/SlideList'; diff --git a/apps/presi/apps/mobile/app/themes.tsx b/apps/presi/apps/mobile/app/themes.tsx index 1c5543c7a..b32d969ff 100644 --- a/apps/presi/apps/mobile/app/themes.tsx +++ b/apps/presi/apps/mobile/app/themes.tsx @@ -1,7 +1,7 @@ import React from 'react'; import { View, Text, StyleSheet, ScrollView, TouchableOpacity, Image } from 'react-native'; import { useRouter } from 'expo-router'; -import { useTheme, ThemeVariant } from '../components/ThemeProvider'; +import { useTheme, type ThemeVariant } from '../components/ThemeProvider'; import MaterialIcons from '@expo/vector-icons/MaterialIcons'; const THEME_PATTERNS: Record = { diff --git a/apps/presi/apps/mobile/components/ThemeProvider.tsx b/apps/presi/apps/mobile/components/ThemeProvider.tsx index a3979a7ae..f35cbab61 100644 --- a/apps/presi/apps/mobile/components/ThemeProvider.tsx +++ b/apps/presi/apps/mobile/components/ThemeProvider.tsx @@ -1,6 +1,6 @@ import React, { createContext, useContext, useState, useEffect, useMemo } from 'react'; import { useColorScheme } from 'react-native'; -import { getTheme, Theme, ThemeVariant } from '../constants/theme'; +import { getTheme, type Theme, type ThemeVariant } from '../constants/theme'; export type ColorMode = 'system' | 'light' | 'dark'; export type ContrastLevel = 1 | 2 | 3 | 4 | 5; @@ -18,7 +18,7 @@ const hexToRgb = (hex: string) => { }; // Hilfsfunktion zum Konvertieren von RGB zu Hex mit Alpha -const rgbaToHex = (r: number, g: number, b: number, a: number = 1) => { +const rgbaToHex = (r: number, g: number, b: number, a = 1) => { const alpha = Math.round(a * 255); return ( '#' + diff --git a/apps/presi/apps/mobile/components/atoms/Button.tsx b/apps/presi/apps/mobile/components/atoms/Button.tsx index 387d12cd9..80c189d6c 100644 --- a/apps/presi/apps/mobile/components/atoms/Button.tsx +++ b/apps/presi/apps/mobile/components/atoms/Button.tsx @@ -1,5 +1,5 @@ import { TouchableOpacity, Text, StyleSheet, ActivityIndicator } from 'react-native'; -import { ReactNode } from 'react'; +import { type ReactNode } from 'react'; interface ButtonProps { onPress: () => void; diff --git a/apps/presi/apps/mobile/components/common/ThemeSettings.tsx b/apps/presi/apps/mobile/components/common/ThemeSettings.tsx index f83dba601..e9e4bad68 100644 --- a/apps/presi/apps/mobile/components/common/ThemeSettings.tsx +++ b/apps/presi/apps/mobile/components/common/ThemeSettings.tsx @@ -1,6 +1,6 @@ import React from 'react'; import { View, Text, TouchableOpacity, StyleSheet, Pressable } from 'react-native'; -import { useTheme, ColorMode, ContrastLevel } from '../ThemeProvider'; +import { useTheme, type ColorMode, type ContrastLevel } from '../ThemeProvider'; const COLOR_MODES: { label: string; value: ColorMode }[] = [ { label: 'System', value: 'system' }, diff --git a/apps/presi/apps/mobile/components/decks/DeckCard.tsx b/apps/presi/apps/mobile/components/decks/DeckCard.tsx index 676fb3052..e425cd78f 100644 --- a/apps/presi/apps/mobile/components/decks/DeckCard.tsx +++ b/apps/presi/apps/mobile/components/decks/DeckCard.tsx @@ -1,6 +1,6 @@ import React from 'react'; import { View, Text, TouchableOpacity, StyleSheet, Image } from 'react-native'; -import { Deck } from '../../types/models'; +import { type Deck } from '../../types/models'; import { MaterialIcons } from '@expo/vector-icons'; import { useTheme } from '../../components/ThemeProvider'; diff --git a/apps/presi/apps/mobile/components/decks/DeckList.tsx b/apps/presi/apps/mobile/components/decks/DeckList.tsx index 03c0f0a1a..9ca819447 100644 --- a/apps/presi/apps/mobile/components/decks/DeckList.tsx +++ b/apps/presi/apps/mobile/components/decks/DeckList.tsx @@ -11,7 +11,7 @@ import { Pressable, } from 'react-native'; import MaterialIcons from '@expo/vector-icons/MaterialIcons'; -import { Deck } from '../../types/models'; +import { type Deck } from '../../types/models'; import { useTheme } from '../../components/ThemeProvider'; import { CreateItemButton } from '../common/CreateItemButton'; import { MenuRoot, MenuTrigger, MenuContent, MenuItem, MenuItemTitle } from '../common/menu'; diff --git a/apps/presi/apps/mobile/components/decks/DeckShareSettings.tsx b/apps/presi/apps/mobile/components/decks/DeckShareSettings.tsx index e84d5e714..0fb38d31d 100644 --- a/apps/presi/apps/mobile/components/decks/DeckShareSettings.tsx +++ b/apps/presi/apps/mobile/components/decks/DeckShareSettings.tsx @@ -11,7 +11,7 @@ import { } from 'react-native'; import { useTheme } from '../ThemeProvider'; import MaterialIcons from '@expo/vector-icons/MaterialIcons'; -import { Deck, CollaboratorRole } from '../../types/models'; +import { type Deck, type CollaboratorRole } from '../../types/models'; interface DeckShareSettingsProps { deck: Deck; diff --git a/apps/presi/apps/mobile/components/forms/CreateDeckForm.tsx b/apps/presi/apps/mobile/components/forms/CreateDeckForm.tsx index 6fe461950..ee8a3c182 100644 --- a/apps/presi/apps/mobile/components/forms/CreateDeckForm.tsx +++ b/apps/presi/apps/mobile/components/forms/CreateDeckForm.tsx @@ -10,7 +10,7 @@ import { } from 'react-native'; import { useTheme } from '../ThemeProvider'; import { createDeck } from '../../services/firestore'; -import { Deck } from '../../types/models'; +import { type Deck } from '../../types/models'; import MaterialIcons from '@expo/vector-icons/MaterialIcons'; interface CreateDeckFormProps { diff --git a/apps/presi/apps/mobile/components/presentation/PresentationMode.tsx b/apps/presi/apps/mobile/components/presentation/PresentationMode.tsx index ddc0c4a88..f41de416e 100644 --- a/apps/presi/apps/mobile/components/presentation/PresentationMode.tsx +++ b/apps/presi/apps/mobile/components/presentation/PresentationMode.tsx @@ -11,7 +11,7 @@ import { } from 'react-native'; import { Ionicons } from '@expo/vector-icons'; import { SlideView } from '../slides/SlideView'; -import { Slide } from '../../types/models'; +import { type Slide } from '../../types/models'; import * as ScreenOrientation from 'expo-screen-orientation'; import { useTheme } from '../ThemeProvider'; diff --git a/apps/presi/apps/mobile/components/slides/SlideEditor.tsx b/apps/presi/apps/mobile/components/slides/SlideEditor.tsx index f5b68def7..64936ceaa 100644 --- a/apps/presi/apps/mobile/components/slides/SlideEditor.tsx +++ b/apps/presi/apps/mobile/components/slides/SlideEditor.tsx @@ -13,7 +13,7 @@ import * as ImagePicker from 'expo-image-picker'; import { storage } from '../../firebaseConfig'; import { ref, uploadBytes, getDownloadURL } from 'firebase/storage'; import { createSlide, updateSlide } from '../../services/firestore'; -import { Slide } from '../../types/models'; +import { type Slide } from '../../types/models'; import MaterialIcons from '@expo/vector-icons/MaterialIcons'; import { useTheme } from '../ThemeProvider'; diff --git a/apps/presi/apps/mobile/components/slides/SlideList.tsx b/apps/presi/apps/mobile/components/slides/SlideList.tsx index b53987986..f9d7f9f80 100644 --- a/apps/presi/apps/mobile/components/slides/SlideList.tsx +++ b/apps/presi/apps/mobile/components/slides/SlideList.tsx @@ -11,7 +11,7 @@ import { Pressable, } from 'react-native'; import MaterialIcons from '@expo/vector-icons/MaterialIcons'; -import { Slide } from '../../types/models'; +import { type Slide } from '../../types/models'; import { useTheme } from '../ThemeProvider'; import { MenuRoot, MenuTrigger, MenuContent, MenuItem, MenuItemTitle } from '../common/menu'; diff --git a/apps/presi/apps/mobile/components/slides/SlideView.tsx b/apps/presi/apps/mobile/components/slides/SlideView.tsx index 99db757bc..aa8cae91f 100644 --- a/apps/presi/apps/mobile/components/slides/SlideView.tsx +++ b/apps/presi/apps/mobile/components/slides/SlideView.tsx @@ -1,6 +1,6 @@ import React from 'react'; import { View, Text, Image, StyleSheet, Dimensions, TouchableOpacity } from 'react-native'; -import { Slide } from '../../types/models'; +import { type Slide } from '../../types/models'; import MaterialIcons from 'react-native-vector-icons/MaterialIcons'; import { useTheme } from '../ThemeProvider'; diff --git a/apps/presi/apps/mobile/constants/theme.ts b/apps/presi/apps/mobile/constants/theme.ts index acc40334a..147b4b132 100644 --- a/apps/presi/apps/mobile/constants/theme.ts +++ b/apps/presi/apps/mobile/constants/theme.ts @@ -1,4 +1,4 @@ -import { ColorSchemeName } from 'react-native'; +import { type ColorSchemeName } from 'react-native'; // Theme types export type ThemeVariant = 'lume' | 'nature' | 'stone'; diff --git a/apps/presi/apps/mobile/services/auth.ts b/apps/presi/apps/mobile/services/auth.ts index a1571fda1..98cbdbfbf 100644 --- a/apps/presi/apps/mobile/services/auth.ts +++ b/apps/presi/apps/mobile/services/auth.ts @@ -4,7 +4,7 @@ import { signOut, sendPasswordResetEmail, onAuthStateChanged, - User, + type User, } from 'firebase/auth'; import { auth } from '../firebaseConfig'; import { doc, setDoc } from 'firebase/firestore'; diff --git a/apps/presi/apps/mobile/services/firestore.ts b/apps/presi/apps/mobile/services/firestore.ts index ce8e2c9d9..c1d90b608 100644 --- a/apps/presi/apps/mobile/services/firestore.ts +++ b/apps/presi/apps/mobile/services/firestore.ts @@ -13,7 +13,7 @@ import { writeBatch, } from 'firebase/firestore'; import { db, auth } from '../firebaseConfig'; -import { Deck, Slide } from '../types/models'; +import { type Deck, type Slide } from '../types/models'; // Decks export const getUserDecks = async (userId: string): Promise => { diff --git a/apps/presi/apps/mobile/theme/ThemeProvider.tsx b/apps/presi/apps/mobile/theme/ThemeProvider.tsx index 5758d4ac2..f4da8084e 100644 --- a/apps/presi/apps/mobile/theme/ThemeProvider.tsx +++ b/apps/presi/apps/mobile/theme/ThemeProvider.tsx @@ -1,7 +1,7 @@ import React, { createContext, useContext, useState, useEffect } from 'react'; import { useColorScheme } from 'react-native'; import AsyncStorage from '@react-native-async-storage/async-storage'; -import { getTheme, Theme } from './constants'; +import { getTheme, type Theme } from './constants'; export type ColorMode = 'system' | 'light' | 'dark'; export type ContrastLevel = 1 | 2 | 3 | 4 | 5; @@ -42,7 +42,7 @@ const hexToRgb = (hex: string) => { }; // Hilfsfunktion zum Konvertieren von RGB zu Hex mit Alpha -const rgbaToHex = (r: number, g: number, b: number, a: number = 1) => { +const rgbaToHex = (r: number, g: number, b: number, a = 1) => { const alpha = Math.round(a * 255); return ( '#' + diff --git a/apps/presi/apps/mobile/theme/ThemeSettings.tsx b/apps/presi/apps/mobile/theme/ThemeSettings.tsx index 40aed8f33..f4e803507 100644 --- a/apps/presi/apps/mobile/theme/ThemeSettings.tsx +++ b/apps/presi/apps/mobile/theme/ThemeSettings.tsx @@ -1,6 +1,6 @@ import React from 'react'; import { View, Text, TouchableOpacity, StyleSheet, Pressable } from 'react-native'; -import { useTheme, ColorMode, ContrastLevel } from './ThemeProvider'; +import { useTheme, type ColorMode, type ContrastLevel } from './ThemeProvider'; const COLOR_MODES: { label: string; value: ColorMode }[] = [ { label: 'System', value: 'system' }, diff --git a/apps/presi/packages/shared/package.json b/apps/presi/packages/shared/package.json index 5cd60a1c8..78d85febe 100644 --- a/apps/presi/packages/shared/package.json +++ b/apps/presi/packages/shared/package.json @@ -5,8 +5,7 @@ "main": "./src/index.ts", "types": "./src/index.ts", "scripts": { - "type-check": "tsc --noEmit", - "lint": "eslint ." + "type-check": "tsc --noEmit" }, "devDependencies": { "typescript": "^5.7.2" diff --git a/apps/storage/packages/shared/package.json b/apps/storage/packages/shared/package.json index c11e3d6c7..c520e6b2a 100644 --- a/apps/storage/packages/shared/package.json +++ b/apps/storage/packages/shared/package.json @@ -9,8 +9,7 @@ "./types": "./src/types/index.ts" }, "scripts": { - "type-check": "tsc --noEmit", - "lint": "eslint ." + "type-check": "tsc --noEmit" }, "devDependencies": { "typescript": "^5.7.3" diff --git a/apps/zitare/apps/landing/package.json b/apps/zitare/apps/landing/package.json index 6973c1234..a8afe7f8a 100644 --- a/apps/zitare/apps/landing/package.json +++ b/apps/zitare/apps/landing/package.json @@ -6,8 +6,7 @@ "dev": "astro dev", "build": "astro build", "preview": "astro preview", - "astro": "astro", - "lint": "eslint ." + "astro": "astro" }, "dependencies": { "@manacore/shared-landing-ui": "workspace:*", diff --git a/apps/zitare/packages/content/package.json b/apps/zitare/packages/content/package.json index 8a6dc5835..5adb330dd 100644 --- a/apps/zitare/packages/content/package.json +++ b/apps/zitare/packages/content/package.json @@ -10,8 +10,7 @@ "./config": "./src/config/index.ts" }, "scripts": { - "type-check": "tsc --noEmit", - "lint": "eslint ." + "type-check": "tsc --noEmit" }, "dependencies": { "@zitare/shared": "workspace:*" diff --git a/apps/zitare/packages/shared/package.json b/apps/zitare/packages/shared/package.json index f32df37f5..59fb4f379 100644 --- a/apps/zitare/packages/shared/package.json +++ b/apps/zitare/packages/shared/package.json @@ -12,8 +12,7 @@ "./services": "./src/services/index.ts" }, "scripts": { - "type-check": "tsc --noEmit", - "lint": "eslint src" + "type-check": "tsc --noEmit" }, "devDependencies": { "typescript": "~5.9.2" diff --git a/apps/zitare/packages/web-ui/package.json b/apps/zitare/packages/web-ui/package.json index 9e86e02c1..f49afeb21 100644 --- a/apps/zitare/packages/web-ui/package.json +++ b/apps/zitare/packages/web-ui/package.json @@ -9,8 +9,7 @@ "./stores/*": "./src/stores/*.ts" }, "scripts": { - "check": "svelte-check --tsconfig ./tsconfig.json", - "lint": "eslint ." + "check": "svelte-check --tsconfig ./tsconfig.json" }, "peerDependencies": { "svelte": "^5.0.0" From 490010602196e3e506510edd74d2f76308e701bc Mon Sep 17 00:00:00 2001 From: Wuesteon Date: Thu, 4 Dec 2025 01:05:10 +0100 Subject: [PATCH 4/6] =?UTF-8?q?=F0=9F=8E=A8=20style:=20fix=20Prettier=20fo?= =?UTF-8?q?rmatting=20issues?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fixed formatting in 21 files across calendar, contacts, manacore, manadeck, picture, storage apps and shared-ui package. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude --- .../components/calendar/CalendarHeader.svelte | 33 +- .../lib/components/calendar/DayView.svelte | 63 ++- .../lib/components/calendar/MonthView.svelte | 38 +- .../components/calendar/MultiDayView.svelte | 82 ++- .../lib/components/calendar/WeekView.svelte | 72 ++- .../components/event/EventDetailModal.svelte | 137 ++++- .../src/lib/components/event/EventForm.svelte | 38 +- .../components/event/QuickEventOverlay.svelte | 487 ++++++++++-------- .../apps/web/src/lib/stores/events.svelte.ts | 4 +- .../apps/web/src/lib/stores/view.svelte.ts | 5 +- .../apps/web/src/routes/+layout.svelte | 5 +- .../calendar/apps/web/src/routes/+page.svelte | 32 +- .../apps/web/src/routes/agenda/+page.svelte | 3 +- .../apps/web/src/routes/settings/+page.svelte | 34 +- .../src/routes/(app)/settings/+page.svelte | 3 +- .../src/routes/(app)/settings/+page.svelte | 65 ++- .../src/routes/(app)/settings/+page.svelte | 3 +- .../web/src/routes/app/settings/+page.svelte | 3 +- .../apps/web/src/routes/settings/+page.svelte | 3 +- .../src/navigation/PillNavigation.svelte | 29 +- .../src/settings/GlobalSettingsSection.svelte | 40 +- 21 files changed, 788 insertions(+), 391 deletions(-) diff --git a/apps/calendar/apps/web/src/lib/components/calendar/CalendarHeader.svelte b/apps/calendar/apps/web/src/lib/components/calendar/CalendarHeader.svelte index 3cff869bd..9f1169c0e 100644 --- a/apps/calendar/apps/web/src/lib/components/calendar/CalendarHeader.svelte +++ b/apps/calendar/apps/web/src/lib/components/calendar/CalendarHeader.svelte @@ -19,7 +19,15 @@ }; // Views to show in selector - const visibleViews: CalendarViewType[] = ['day', '5day', 'week', '10day', '14day', 'month', 'year']; + const visibleViews: CalendarViewType[] = [ + 'day', + '5day', + 'week', + '10day', + '14day', + 'month', + 'year', + ]; // Format title based on view type let title = $derived.by(() => { @@ -30,9 +38,17 @@ // Helper to format date range const formatRange = () => { if (rangeStart.getMonth() === rangeEnd.getMonth()) { - return format(rangeStart, 'd.', { locale: de }) + ' - ' + format(rangeEnd, 'd. MMMM yyyy', { locale: de }); + return ( + format(rangeStart, 'd.', { locale: de }) + + ' - ' + + format(rangeEnd, 'd. MMMM yyyy', { locale: de }) + ); } - return format(rangeStart, 'd. MMM', { locale: de }) + ' - ' + format(rangeEnd, 'd. MMM yyyy', { locale: de }); + return ( + format(rangeStart, 'd. MMM', { locale: de }) + + ' - ' + + format(rangeEnd, 'd. MMM yyyy', { locale: de }) + ); }; switch (viewStore.viewType) { @@ -61,14 +77,17 @@
- + -
+
{#each hours as hour}
{/each} @@ -308,7 +315,6 @@ .month-view { display: flex; flex-direction: column; - } .weekday-headers { @@ -408,7 +414,10 @@ text-overflow: ellipsis; touch-action: none; user-select: none; - transition: transform 150ms ease, box-shadow 150ms ease, opacity 150ms ease; + transition: + transform 150ms ease, + box-shadow 150ms ease, + opacity 150ms ease; } .event-pill:hover { @@ -429,7 +438,8 @@ } @keyframes pulse-outline { - 0%, 100% { + 0%, + 100% { outline-color: hsl(var(--color-primary)); } 50% { diff --git a/apps/calendar/apps/web/src/lib/components/calendar/MultiDayView.svelte b/apps/calendar/apps/web/src/lib/components/calendar/MultiDayView.svelte index 8736a724d..89d638460 100644 --- a/apps/calendar/apps/web/src/lib/components/calendar/MultiDayView.svelte +++ b/apps/calendar/apps/web/src/lib/components/calendar/MultiDayView.svelte @@ -32,7 +32,9 @@ // Get date-fns locale based on current app locale const dateLocales = { de, en: enUS, fr, es, it }; - let currentDateLocale = $derived(dateLocales[$locale?.substring(0, 2) as keyof typeof dateLocales] || de); + let currentDateLocale = $derived( + dateLocales[$locale?.substring(0, 2) as keyof typeof dateLocales] || de + ); // Generate days based on view range, optionally filtering weekends let allDays = $derived( @@ -55,7 +57,9 @@ ); // Calculate visible hours range for positioning - let firstVisibleHour = $derived(settingsStore.filterHoursEnabled ? settingsStore.dayStartHour : 0); + let firstVisibleHour = $derived( + settingsStore.filterHoursEnabled ? settingsStore.dayStartHour : 0 + ); let lastVisibleHour = $derived(settingsStore.filterHoursEnabled ? settingsStore.dayEndHour : 24); let totalVisibleHours = $derived(lastVisibleHour - firstVisibleHour); @@ -125,16 +129,16 @@ // Split all-day events by display mode function getHeaderAllDayEventsForDay(day: Date) { - return getAllDayEventsForDay(day).filter(e => getEventDisplayMode(e) === 'header'); + return getAllDayEventsForDay(day).filter((e) => getEventDisplayMode(e) === 'header'); } function getBlockAllDayEventsForDay(day: Date) { - return getAllDayEventsForDay(day).filter(e => getEventDisplayMode(e) === 'block'); + return getAllDayEventsForDay(day).filter((e) => getEventDisplayMode(e) === 'block'); } // Check if there are any all-day events to show in header let hasAnyHeaderAllDayEvents = $derived( - days.some(day => getHeaderAllDayEventsForDay(day).length > 0) + days.some((day) => getHeaderAllDayEventsForDay(day).length > 0) ); function getEventStyle(event: any) { @@ -162,7 +166,9 @@ if (isDragging || isResizing || hasMoved) { e.preventDefault(); e.stopPropagation(); - setTimeout(() => { hasMoved = false; }, 100); + setTimeout(() => { + hasMoved = false; + }, 100); return; } goto(`/?event=${event.id}`); @@ -248,7 +254,10 @@ const newMinutes = getMinutesFromY(e.clientY) - dragOffsetMinutes; // Clamp to valid range (firstVisibleHour to lastVisibleHour) - const clampedMinutes = Math.max(firstVisibleHour * 60, Math.min(lastVisibleHour * 60 - 15, newMinutes)); + const clampedMinutes = Math.max( + firstVisibleHour * 60, + Math.min(lastVisibleHour * 60 - 15, newMinutes) + ); // Update preview dragPreviewTop = minutesToPercent(clampedMinutes); @@ -268,8 +277,14 @@ return; } - const start = typeof draggedEvent.startTime === 'string' ? parseISO(draggedEvent.startTime) : draggedEvent.startTime; - const end = typeof draggedEvent.endTime === 'string' ? parseISO(draggedEvent.endTime) : draggedEvent.endTime; + const start = + typeof draggedEvent.startTime === 'string' + ? parseISO(draggedEvent.startTime) + : draggedEvent.startTime; + const end = + typeof draggedEvent.endTime === 'string' + ? parseISO(draggedEvent.endTime) + : draggedEvent.endTime; const duration = differenceInMinutes(end, start); // Calculate new start time @@ -336,17 +351,24 @@ hasMoved = true; const currentMinutes = getMinutesFromY(e.clientY); - const originalStartMinutes = resizeOriginalStart.getHours() * 60 + resizeOriginalStart.getMinutes(); + const originalStartMinutes = + resizeOriginalStart.getHours() * 60 + resizeOriginalStart.getMinutes(); const originalEndMinutes = resizeOriginalEnd.getHours() * 60 + resizeOriginalEnd.getMinutes(); if (resizeEdge === 'bottom') { // Resize from bottom - change end time - const newEndMinutes = Math.max(originalStartMinutes + 15, Math.min(lastVisibleHour * 60, currentMinutes)); + const newEndMinutes = Math.max( + originalStartMinutes + 15, + Math.min(lastVisibleHour * 60, currentMinutes) + ); const newDuration = newEndMinutes - originalStartMinutes; resizePreviewHeight = (newDuration / (totalVisibleHours * 60)) * 100; } else { // Resize from top - change start time - const newStartMinutes = Math.max(firstVisibleHour * 60, Math.min(originalEndMinutes - 15, currentMinutes)); + const newStartMinutes = Math.max( + firstVisibleHour * 60, + Math.min(originalEndMinutes - 15, currentMinutes) + ); const newDuration = originalEndMinutes - newStartMinutes; resizePreviewTop = minutesToPercent(newStartMinutes); resizePreviewHeight = (newDuration / (totalVisibleHours * 60)) * 100; @@ -367,20 +389,27 @@ } const currentMinutes = getMinutesFromY(e.clientY); - const originalStartMinutes = resizeOriginalStart.getHours() * 60 + resizeOriginalStart.getMinutes(); + const originalStartMinutes = + resizeOriginalStart.getHours() * 60 + resizeOriginalStart.getMinutes(); const originalEndMinutes = resizeOriginalEnd.getHours() * 60 + resizeOriginalEnd.getMinutes(); let newStart = resizeOriginalStart; let newEnd = resizeOriginalEnd; if (resizeEdge === 'bottom') { - const newEndMinutes = Math.max(originalStartMinutes + 15, Math.min(lastVisibleHour * 60, currentMinutes)); + const newEndMinutes = Math.max( + originalStartMinutes + 15, + Math.min(lastVisibleHour * 60, currentMinutes) + ); const newHours = Math.floor(newEndMinutes / 60); const newMins = newEndMinutes % 60; newEnd = setHours(new Date(resizeOriginalEnd), newHours); newEnd = setMinutes(newEnd, newMins); } else { - const newStartMinutes = Math.max(firstVisibleHour * 60, Math.min(originalEndMinutes - 15, currentMinutes)); + const newStartMinutes = Math.max( + firstVisibleHour * 60, + Math.min(originalEndMinutes - 15, currentMinutes) + ); const newHours = Math.floor(newStartMinutes / 60); const newMins = newStartMinutes % 60; newStart = setHours(new Date(resizeOriginalStart), newHours); @@ -434,7 +463,11 @@ }); -
+
{#if hasAnyHeaderAllDayEvents}
@@ -461,7 +494,9 @@
{#each days as day}
- {format(day, columnClass === 'very-compact' ? 'EEEEE' : 'EEE', { locale: de })} + {format(day, columnClass === 'very-compact' ? 'EEEEE' : 'EEE', { locale: de })} {format(day, 'd')}
{/each} @@ -553,10 +588,12 @@ {/each} - {#if isDragging && draggedEvent && dragTargetDay && isSameDay(day, dragTargetDay) && !getEventsForDay(day).some(e => e.id === draggedEvent.id)} + {#if isDragging && draggedEvent && dragTargetDay && isSameDay(day, dragTargetDay) && !getEventsForDay(day).some((e) => e.id === draggedEvent.id)}
{#if columnClass !== 'very-compact'} {formatEventTime(draggedEvent.startTime)} @@ -795,7 +832,9 @@ padding: 2px 4px; border-radius: var(--radius-sm); overflow: hidden; - transition: box-shadow 0.15s ease, opacity 0.15s ease; + transition: + box-shadow 0.15s ease, + opacity 0.15s ease; touch-action: none; user-select: none; } @@ -826,7 +865,8 @@ } @keyframes pulse-outline { - 0%, 100% { + 0%, + 100% { outline-color: hsl(var(--color-primary)); } 50% { diff --git a/apps/calendar/apps/web/src/lib/components/calendar/WeekView.svelte b/apps/calendar/apps/web/src/lib/components/calendar/WeekView.svelte index df0a5f2da..ed05c57a1 100644 --- a/apps/calendar/apps/web/src/lib/components/calendar/WeekView.svelte +++ b/apps/calendar/apps/web/src/lib/components/calendar/WeekView.svelte @@ -33,7 +33,9 @@ // Get date-fns locale based on current app locale const dateLocales = { de, en: enUS, fr, es, it }; - let currentDateLocale = $derived(dateLocales[$locale?.substring(0, 2) as keyof typeof dateLocales] || de); + let currentDateLocale = $derived( + dateLocales[$locale?.substring(0, 2) as keyof typeof dateLocales] || de + ); // Generate days of the week, optionally filtering weekends let allDays = $derived( @@ -61,7 +63,9 @@ ); // Calculate visible hours range for positioning - let firstVisibleHour = $derived(settingsStore.filterHoursEnabled ? settingsStore.dayStartHour : 0); + let firstVisibleHour = $derived( + settingsStore.filterHoursEnabled ? settingsStore.dayStartHour : 0 + ); let lastVisibleHour = $derived(settingsStore.filterHoursEnabled ? settingsStore.dayEndHour : 24); let totalVisibleHours = $derived(lastVisibleHour - firstVisibleHour); @@ -124,16 +128,16 @@ // Split all-day events by display mode function getHeaderAllDayEventsForDay(day: Date) { - return getAllDayEventsForDay(day).filter(e => getEventDisplayMode(e) === 'header'); + return getAllDayEventsForDay(day).filter((e) => getEventDisplayMode(e) === 'header'); } function getBlockAllDayEventsForDay(day: Date) { - return getAllDayEventsForDay(day).filter(e => getEventDisplayMode(e) === 'block'); + return getAllDayEventsForDay(day).filter((e) => getEventDisplayMode(e) === 'block'); } // Check if there are any all-day events to show in header let hasAnyHeaderAllDayEvents = $derived( - days.some(day => getHeaderAllDayEventsForDay(day).length > 0) + days.some((day) => getHeaderAllDayEventsForDay(day).length > 0) ); function getEventStyle(event: any) { @@ -162,7 +166,9 @@ e.preventDefault(); e.stopPropagation(); // Reset hasMoved after a short delay to allow for the next clean click - setTimeout(() => { hasMoved = false; }, 100); + setTimeout(() => { + hasMoved = false; + }, 100); return; } goto(`/?event=${event.id}`); @@ -248,7 +254,10 @@ const newMinutes = getMinutesFromY(e.clientY) - dragOffsetMinutes; // Clamp to valid range (firstVisibleHour to lastVisibleHour) - const clampedMinutes = Math.max(firstVisibleHour * 60, Math.min(lastVisibleHour * 60 - 15, newMinutes)); + const clampedMinutes = Math.max( + firstVisibleHour * 60, + Math.min(lastVisibleHour * 60 - 15, newMinutes) + ); // Update preview dragPreviewTop = minutesToPercent(clampedMinutes); @@ -268,8 +277,14 @@ return; } - const start = typeof draggedEvent.startTime === 'string' ? parseISO(draggedEvent.startTime) : draggedEvent.startTime; - const end = typeof draggedEvent.endTime === 'string' ? parseISO(draggedEvent.endTime) : draggedEvent.endTime; + const start = + typeof draggedEvent.startTime === 'string' + ? parseISO(draggedEvent.startTime) + : draggedEvent.startTime; + const end = + typeof draggedEvent.endTime === 'string' + ? parseISO(draggedEvent.endTime) + : draggedEvent.endTime; const duration = differenceInMinutes(end, start); // Calculate new start time @@ -336,17 +351,24 @@ hasMoved = true; const currentMinutes = getMinutesFromY(e.clientY); - const originalStartMinutes = resizeOriginalStart.getHours() * 60 + resizeOriginalStart.getMinutes(); + const originalStartMinutes = + resizeOriginalStart.getHours() * 60 + resizeOriginalStart.getMinutes(); const originalEndMinutes = resizeOriginalEnd.getHours() * 60 + resizeOriginalEnd.getMinutes(); if (resizeEdge === 'bottom') { // Resize from bottom - change end time - const newEndMinutes = Math.max(originalStartMinutes + 15, Math.min(lastVisibleHour * 60, currentMinutes)); + const newEndMinutes = Math.max( + originalStartMinutes + 15, + Math.min(lastVisibleHour * 60, currentMinutes) + ); const newDuration = newEndMinutes - originalStartMinutes; resizePreviewHeight = (newDuration / (totalVisibleHours * 60)) * 100; } else { // Resize from top - change start time - const newStartMinutes = Math.max(firstVisibleHour * 60, Math.min(originalEndMinutes - 15, currentMinutes)); + const newStartMinutes = Math.max( + firstVisibleHour * 60, + Math.min(originalEndMinutes - 15, currentMinutes) + ); const newDuration = originalEndMinutes - newStartMinutes; resizePreviewTop = minutesToPercent(newStartMinutes); resizePreviewHeight = (newDuration / (totalVisibleHours * 60)) * 100; @@ -367,20 +389,27 @@ } const currentMinutes = getMinutesFromY(e.clientY); - const originalStartMinutes = resizeOriginalStart.getHours() * 60 + resizeOriginalStart.getMinutes(); + const originalStartMinutes = + resizeOriginalStart.getHours() * 60 + resizeOriginalStart.getMinutes(); const originalEndMinutes = resizeOriginalEnd.getHours() * 60 + resizeOriginalEnd.getMinutes(); let newStart = resizeOriginalStart; let newEnd = resizeOriginalEnd; if (resizeEdge === 'bottom') { - const newEndMinutes = Math.max(originalStartMinutes + 15, Math.min(lastVisibleHour * 60, currentMinutes)); + const newEndMinutes = Math.max( + originalStartMinutes + 15, + Math.min(lastVisibleHour * 60, currentMinutes) + ); const newHours = Math.floor(newEndMinutes / 60); const newMins = newEndMinutes % 60; newEnd = setHours(new Date(resizeOriginalEnd), newHours); newEnd = setMinutes(newEnd, newMins); } else { - const newStartMinutes = Math.max(firstVisibleHour * 60, Math.min(originalEndMinutes - 15, currentMinutes)); + const newStartMinutes = Math.max( + firstVisibleHour * 60, + Math.min(originalEndMinutes - 15, currentMinutes) + ); const newHours = Math.floor(newStartMinutes / 60); const newMins = newStartMinutes % 60; newStart = setHours(new Date(resizeOriginalStart), newHours); @@ -563,10 +592,12 @@ {/each} - {#if isDragging && draggedEvent && dragTargetDay && isSameDay(day, dragTargetDay) && !getEventsForDay(day).some(e => e.id === draggedEvent.id)} + {#if isDragging && draggedEvent && dragTargetDay && isSameDay(day, dragTargetDay) && !getEventsForDay(day).some((e) => e.id === draggedEvent.id)}
{formatEventTime(draggedEvent.startTime)} {draggedEvent.title} @@ -764,7 +795,9 @@ cursor: grab; z-index: 1; overflow: hidden; - transition: box-shadow 0.15s ease, opacity 0.15s ease; + transition: + box-shadow 0.15s ease, + opacity 0.15s ease; touch-action: none; user-select: none; } @@ -801,7 +834,8 @@ } @keyframes pulse-outline { - 0%, 100% { + 0%, + 100% { outline-color: hsl(var(--color-primary)); } 50% { diff --git a/apps/calendar/apps/web/src/lib/components/event/EventDetailModal.svelte b/apps/calendar/apps/web/src/lib/components/event/EventDetailModal.svelte index b85cf4e44..2c5334b45 100644 --- a/apps/calendar/apps/web/src/lib/components/event/EventDetailModal.svelte +++ b/apps/calendar/apps/web/src/lib/components/event/EventDetailModal.svelte @@ -104,11 +104,9 @@ // Get calendar info for the event let calendarName = $derived( - event ? calendarsStore.calendars.find(c => c.id === event!.calendarId)?.name : undefined - ); - let calendarColor = $derived( - event ? calendarsStore.getColor(event.calendarId) : '#3b82f6' + event ? calendarsStore.calendars.find((c) => c.id === event!.calendarId)?.name : undefined ); + let calendarColor = $derived(event ? calendarsStore.getColor(event.calendarId) : '#3b82f6'); // Format recurrence rule to human readable text function formatRecurrence(rule: string): string { @@ -120,9 +118,18 @@ const days = rule.match(/BYDAY=([A-Z,]+)/)?.[1]; if (days) { const dayMap: Record = { - MO: 'Mo', TU: 'Di', WE: 'Mi', TH: 'Do', FR: 'Fr', SA: 'Sa', SU: 'So' + MO: 'Mo', + TU: 'Di', + WE: 'Mi', + TH: 'Do', + FR: 'Fr', + SA: 'Sa', + SU: 'So', }; - const translatedDays = days.split(',').map(d => dayMap[d] || d).join(', '); + const translatedDays = days + .split(',') + .map((d) => dayMap[d] || d) + .join(', '); return `Wöchentlich (${translatedDays})`; } } @@ -153,20 +160,35 @@ {#if !isEditing} {/if}
@@ -194,7 +216,12 @@
- +
@@ -208,7 +235,12 @@
- +
@@ -223,8 +255,18 @@
- - + +
@@ -257,15 +299,30 @@
- +
Videokonferenz - + Beitreten - +
@@ -277,15 +334,30 @@
- + @@ -297,7 +369,12 @@
- +
@@ -312,7 +389,12 @@
- +
@@ -322,8 +404,17 @@
{attendee.name || attendee.email} {#if attendee.status} - - {attendee.status === 'accepted' ? '✓' : attendee.status === 'declined' ? '✗' : '?'} + + {attendee.status === 'accepted' + ? '✓' + : attendee.status === 'declined' + ? '✗' + : '?'} {/if}
diff --git a/apps/calendar/apps/web/src/lib/components/event/EventForm.svelte b/apps/calendar/apps/web/src/lib/components/event/EventForm.svelte index 6e0edb42d..251df6fd0 100644 --- a/apps/calendar/apps/web/src/lib/components/event/EventForm.svelte +++ b/apps/calendar/apps/web/src/lib/components/event/EventForm.svelte @@ -1,7 +1,12 @@