diff --git a/.github/workflows/lint-prettier.yml b/.github/workflows/lint-prettier.yml index 326450167..442997495 100644 --- a/.github/workflows/lint-prettier.yml +++ b/.github/workflows/lint-prettier.yml @@ -23,12 +23,16 @@ jobs: run: npm install - name: Run lint & format check + # Both are check-only: lint used to run eslint --fix, which rewrote the + # files before format:check looked at them, so neither could fail on + # formatting. lint:format holds every file outside + # scripts/format-baseline.json to Prettier; the list only shrinks. id: checks continue-on-error: true run: | cd shared npm run lint - npm run format:check + npm run lint:format - name: Comment on PR if checks failed if: steps.checks.outcome == 'failure' @@ -46,8 +50,9 @@ jobs: '', '```bash', 'cd shared', - 'npm run lint', - 'npm run format', + 'npm run lint:fix', + 'npx prettier --write # each file lint:format names', + 'npm run lint:format -- --update # when a listed file is formatted now', '```', '', 'Then commit and push the changes.', diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index b2517a028..1cd65315b 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -260,6 +260,13 @@ jobs: NODE_OPTIONS: --max-old-space-size=8192 run: cd server && npm run lint:warnings + - name: Formatting check + # Prettier over src/ and tests/: a file outside + # scripts/format-baseline.json must be formatted, and the list only + # shrinks. Once the mechanical reformat lands and --update empties the + # list, this is a full prettier --check. + run: cd server && npm run lint:format + - name: DB call-graph gate (no sync DB-touching methods, no raw transactions) run: cd server && npm run db:call-graph -- --sync --tx diff --git a/CLAUDE.md b/CLAUDE.md index 3ecc1fafd..e9cead8d8 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -20,7 +20,7 @@ Run from the repo root unless noted. **Use `npm run ... --workspace=`, not ```bash npm run dev # build shared, then watch shared + server + client concurrently npm run build # build shared → server → client (order matters) -npm run lint # lint all three workspaces (server and shared run eslint --fix and rewrite files; client is check-only) +npm run lint # lint all three workspaces, check-only (npm run lint:fix applies the fixes in shared and server) npm run format # prettier --write all three ``` @@ -40,6 +40,7 @@ cd client && npm run lint:pairs # desktop and phone views of cd client && npm run lint:size # no source file past 1000 lines, longer ones only shrink (CI gate; server has the same) cd client && npm run lint:warnings # eslint errors fail, warnings per rule may only shrink (CI gate) cd server && npm run lint:warnings # the same for the server, against server/scripts/eslint-baseline.json (CI gate) +cd server && npm run lint:format # Prettier outside the baseline list (CI gate; shared has the same in lint-prettier.yml) cd client && npm run lint:format # Prettier outside the baseline list (CI gate) cd client && npm run lint:layers # components never import pages/ or mobile/ (CI gate) cd client && npm run lint:offline # views may not import src/api/ beyond the baseline (CI gate) @@ -124,7 +125,7 @@ These principles come out of a full-repo audit and shape all new code: ## Quality gates in CI -`.github/workflows/test.yml` runs, per package: typecheck (server also `typecheck:tests`), lint (client and server through `lint:warnings`, which also holds the warning count per rule), `lint:pages`, `lint:rtl`, `lint:size` (client and server), the server's `lint:boundaries`, `lint:tx`, `lint:dialect` and `lint:test-sql`, the client's `lint:format`, `lint:layers`, `lint:offline`, `lint:dup`, `lint:pairs`, `lint:skips` and `lint:i18n-keys`, shared's `contracts:open`, `check:plugin-facts`, `i18n:parity:strict` (with the untranslated-strings ratchet), the S3 contract suite, the Postgres probe (`postgres-probe`: every dialect helper on SQLite and Postgres, and the statements every repository method reaches with sample arguments against a Postgres service; the SQL errors per method and the list of methods it cannot measure are held to a baseline that only shrinks and fails while it is still unmeasured; see `server/CLAUDE.md`), the browser end-to-end flows (Chromium and WebKit), a client build with `check:gl-split`, coverage for all four packages, then a SonarCloud scan. It also builds the Docker image and boots it until `/api/health/ready` answers (`docker-image`), and lints and renders the Helm chart against the Kubernetes schemas and runs `docker compose config` on every compose file (`deploy-manifests`). `lint-prettier.yml` additionally runs `lint` + `format:check` on `shared/`. `plugin-sdk` has no lint script and is outside the eslint gates. **Not in CI**: `theme:lint` and the screenshot and help-media Playwright projects; run them locally. There are no git hooks; nothing runs before a commit except you. Other workflows build Docker images, scan them, and publish `trek-plugin-sdk` on `plugin-sdk-v*` tags. +`.github/workflows/test.yml` runs, per package: typecheck (server also `typecheck:tests`), lint (client and server through `lint:warnings`, which also holds the warning count per rule), `lint:pages`, `lint:rtl`, `lint:size` (client and server), the server's `lint:boundaries`, `lint:tx`, `lint:dialect` and `lint:test-sql`, the client's and server's `lint:format`, `lint:layers`, `lint:offline`, `lint:dup`, `lint:pairs`, `lint:skips` and `lint:i18n-keys`, shared's `contracts:open`, `check:plugin-facts`, `i18n:parity:strict` (with the untranslated-strings ratchet), the S3 contract suite, the Postgres probe (`postgres-probe`: every dialect helper on SQLite and Postgres, and the statements every repository method reaches with sample arguments against a Postgres service; the SQL errors per method and the list of methods it cannot measure are held to a baseline that only shrinks and fails while it is still unmeasured; see `server/CLAUDE.md`), the browser end-to-end flows (Chromium and WebKit), a client build with `check:gl-split`, coverage for all four packages, then a SonarCloud scan. It also builds the Docker image and boots it until `/api/health/ready` answers (`docker-image`), and lints and renders the Helm chart against the Kubernetes schemas and runs `docker compose config` on every compose file (`deploy-manifests`). `lint-prettier.yml` additionally runs `lint` + `lint:format` on `shared/`, both check-only. `plugin-sdk` has no lint script and is outside the eslint gates. **Not in CI**: `theme:lint` and the screenshot and help-media Playwright projects; run them locally. There are no git hooks; nothing runs before a commit except you. Other workflows build Docker images, scan them, and publish `trek-plugin-sdk` on `plugin-sdk-v*` tags. - **`ci-ok` is the required check.** The branch ruleset requires `ci-ok` (plus `lint` and `check-target` from their own workflows), and `ci-ok` needs every job above except the scan. It fails if any of them failed or was cancelled and passes if they passed or were skipped. A new gate job counts only once it is listed in `ci-ok`'s `needs:`. - **Guides name paths that exist**: the `changes` job runs `scripts/ci/doc-paths.mjs`, which resolves every backtick path in the CLAUDE.md files, `README.md`, `server/src/nest/README.md` and the wiki against the tracked files; the missing ones are listed in `scripts/ci/doc-paths-baseline.json`, which only shrinks (`--update` after a fix). diff --git a/package-lock.json b/package-lock.json index 616b2c01f..c7c414a27 100644 --- a/package-lock.json +++ b/package-lock.json @@ -6530,6 +6530,8 @@ "integrity": "sha512-SEeaJLb3qBNF/OaXnaR1NmmBbFYk1zC0ZH/52fATcRPLFg/p791YrcyFFy44Bo9sLaGuSuLp5Q6axbb/O+v/RA==", "dev": true, "license": "MIT", + "optional": true, + "peer": true, "engines": { "node": "^14.18.0 || >=16.0.0" }, @@ -11525,37 +11527,6 @@ "eslint": ">=7.0.0" } }, - "node_modules/eslint-plugin-prettier": { - "version": "5.5.6", - "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.5.6.tgz", - "integrity": "sha512-ifetmTcxWfz+4qRW3pH/ujdTq2jQIj59AxJMIN26K5avYgU8dxycUETQonWiW+wPrYXA0j3Try0l1CnwVQtDqQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "prettier-linter-helpers": "^1.0.1", - "synckit": "^0.11.13" - }, - "engines": { - "node": "^14.18.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint-plugin-prettier" - }, - "peerDependencies": { - "@types/eslint": ">=8.0.0", - "eslint": ">=8.0.0", - "eslint-config-prettier": ">= 7.0.0 <10.0.0 || >=10.1.0", - "prettier": ">=3.0.0" - }, - "peerDependenciesMeta": { - "@types/eslint": { - "optional": true - }, - "eslint-config-prettier": { - "optional": true - } - } - }, "node_modules/eslint-plugin-react-hooks": { "version": "7.1.1", "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-7.1.1.tgz", @@ -11974,13 +11945,6 @@ "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", "license": "MIT" }, - "node_modules/fast-diff": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz", - "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==", - "dev": true, - "license": "Apache-2.0" - }, "node_modules/fast-fifo": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz", @@ -17299,19 +17263,6 @@ "url": "https://github.com/prettier/prettier?sponsor=1" } }, - "node_modules/prettier-linter-helpers": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.1.tgz", - "integrity": "sha512-SxToR7P8Y2lWmv/kTzVLC1t/GDI2WGjMwNhLLE9qtH8Q13C+aEmuRlzDst4Up4s0Wc8sF2M+J57iB3cMLqftfg==", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-diff": "^1.1.2" - }, - "engines": { - "node": ">=6.0.0" - } - }, "node_modules/prettier-plugin-organize-imports": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/prettier-plugin-organize-imports/-/prettier-plugin-organize-imports-4.3.0.tgz", @@ -19572,6 +19523,8 @@ "integrity": "sha512-eNRKgb3z66Yp3D2CixVujOUvXLFUTij/zVnV8KRyvFdQwpz7I5DS8UfRkTeLzb64u+dkzDSdelE24izu+zSSUg==", "dev": true, "license": "MIT", + "optional": true, + "peer": true, "dependencies": { "@pkgr/core": "^0.3.6" }, @@ -22129,7 +22082,6 @@ "eslint": "^9.39.5", "eslint-config-flat-gitignore": "^2.4.0", "eslint-config-prettier": "^10.1.8", - "eslint-plugin-prettier": "^5.5.6", "prettier": "^3.9.8", "prettier-plugin-organize-imports": "^4.3.0", "supertest": "^7.2.2", @@ -22436,7 +22388,6 @@ "eslint": "^10.11.0", "eslint-config-flat-gitignore": "^2.4.0", "eslint-config-prettier": "^10.1.8", - "eslint-plugin-prettier": "^5.5.6", "prettier": "3.9.8", "prettier-plugin-organize-imports": "^4.3.0", "tsdown": "^0.23.0", diff --git a/package.json b/package.json index 633c6e7c2..048e4ab46 100644 --- a/package.json +++ b/package.json @@ -26,6 +26,7 @@ "test:ci-scripts": "node --test scripts/ci/*.test.mjs", "test:lib-scripts": "node --test scripts/lib/*.test.mjs", "lint": "npm run lint --workspace=shared && npm run lint --workspace=server && npm run lint --workspace=client", + "lint:fix": "npm run lint:fix --workspace=shared && npm run lint:fix --workspace=server", "format": "npm run format --workspace=shared && npm run format --workspace=server && npm run format --workspace=client", "format:check": "npm run format:check --workspace=shared && npm run format:check --workspace=server && npm run format:check --workspace=client" }, diff --git a/server/CLAUDE.md b/server/CLAUDE.md index 19d26782a..21440b867 100644 --- a/server/CLAUDE.md +++ b/server/CLAUDE.md @@ -12,6 +12,7 @@ npm run typecheck:tests # tsc over tests/ — CI runs this too; vitest green d npm run lint # eslint, no fix npm run lint:fix # eslint --fix npm run lint:warnings # eslint errors fail, warnings per rule may only shrink (CI gate, scripts/eslint-baseline.json) +npm run lint:format # Prettier over src/ and tests/ outside scripts/format-baseline.json, which only shrinks (CI gate) npm run test # vitest run; also test:unit / test:integration / test:ws / test:e2e npm run test:coverage # istanbul coverage; per-domain ratchet over src/nest/** npm run gen:plugin-facts # regenerate the plugin-protocol tables into plugin-sdk/ + shared/ diff --git a/server/package.json b/server/package.json index 35f8f7998..516cfbc2b 100644 --- a/server/package.json +++ b/server/package.json @@ -17,6 +17,7 @@ "db:call-graph": "node scripts/db-call-graph.mjs", "lint:size": "node scripts/size-lint.mjs", "lint:warnings": "node scripts/eslint-ratchet.mjs", + "lint:format": "node scripts/format-lint.mjs", "lint:boundaries": "node scripts/import-boundaries.mjs", "lint:dialect": "node scripts/dialect-lint.mjs", "lint:tx": "node scripts/tx-writes.mjs", @@ -29,8 +30,8 @@ "gen:db-types": "node --import tsx scripts/generate-db-types.ts", "check:db-types": "node --import tsx scripts/generate-db-types.ts --check", "probe:pg": "node --import tsx scripts/pg-probe.ts", - "format": "prettier --write \"src/**/*.ts\" \"test/**/*.ts\"", - "format:check": "prettier --check \"src/**/*.ts\" \"test/**/*.ts\"", + "format": "prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"", + "format:check": "prettier --check \"src/**/*.ts\" \"tests/**/*.ts\"", "lint": "eslint .", "lint:fix": "eslint . --fix", "lint:check": "eslint .", @@ -132,7 +133,6 @@ "eslint": "^9.39.5", "eslint-config-flat-gitignore": "^2.4.0", "eslint-config-prettier": "^10.1.8", - "eslint-plugin-prettier": "^5.5.6", "prettier": "^3.9.8", "prettier-plugin-organize-imports": "^4.3.0", "supertest": "^7.2.2", diff --git a/server/scripts/format-baseline.json b/server/scripts/format-baseline.json new file mode 100644 index 000000000..a6026d9f8 --- /dev/null +++ b/server/scripts/format-baseline.json @@ -0,0 +1,1773 @@ +[ + "src/addons.ts", + "src/app-config/data-paths.ts", + "src/app-config/derive.ts", + "src/app-config/env.schema.ts", + "src/app-config/parsers.ts", + "src/bootstrap.ts", + "src/config.ts", + "src/db/dialect/kysely-functions.ts", + "src/db/dialect/sql-functions.ts", + "src/db/document-provider-seed.ts", + "src/db/durability.ts", + "src/db/email-case-index.ts", + "src/db/entities/Addons.entity.ts", + "src/db/entities/AppSettings.entity.ts", + "src/db/entities/AssignmentParticipants.entity.ts", + "src/db/entities/AuditLog.entity.ts", + "src/db/entities/BucketList.entity.ts", + "src/db/entities/BudgetCategoryOrder.entity.ts", + "src/db/entities/BudgetItemMembers.entity.ts", + "src/db/entities/BudgetItemPayers.entity.ts", + "src/db/entities/BudgetItems.entity.ts", + "src/db/entities/BudgetSettlements.entity.ts", + "src/db/entities/Categories.entity.ts", + "src/db/entities/CollabLinks.entity.ts", + "src/db/entities/CollabMessageReactions.entity.ts", + "src/db/entities/CollabMessages.entity.ts", + "src/db/entities/CollabNotes.entity.ts", + "src/db/entities/CollabPollVotes.entity.ts", + "src/db/entities/CollabPolls.entity.ts", + "src/db/entities/CollectionLabels.entity.ts", + "src/db/entities/CollectionMembers.entity.ts", + "src/db/entities/CollectionPlaceRatings.entity.ts", + "src/db/entities/CollectionPlaces.entity.ts", + "src/db/entities/Collections.entity.ts", + "src/db/entities/DawarichConnections.entity.ts", + "src/db/entities/DawarichVisitSuggestions.entity.ts", + "src/db/entities/DayAccommodations.entity.ts", + "src/db/entities/DayAssignments.entity.ts", + "src/db/entities/DayNotes.entity.ts", + "src/db/entities/Days.entity.ts", + "src/db/entities/DocumentConnections.entity.ts", + "src/db/entities/DocumentProviderFields.entity.ts", + "src/db/entities/DocumentProviders.entity.ts", + "src/db/entities/DocumentSyncItems.entity.ts", + "src/db/entities/FileLinks.entity.ts", + "src/db/entities/GoogleApiUsage.entity.ts", + "src/db/entities/GooglePlacePhotoMeta.entity.ts", + "src/db/entities/HiddenCountries.entity.ts", + "src/db/entities/HiddenRegions.entity.ts", + "src/db/entities/IdempotencyKeys.entity.ts", + "src/db/entities/InviteTokens.entity.ts", + "src/db/entities/JourneyBooks.entity.ts", + "src/db/entities/JourneyContributors.entity.ts", + "src/db/entities/JourneyEntries.entity.ts", + "src/db/entities/JourneyEntryPhotos.entity.ts", + "src/db/entities/JourneyPhotos.entity.ts", + "src/db/entities/JourneyShareTokens.entity.ts", + "src/db/entities/JourneyTrips.entity.ts", + "src/db/entities/Journeys.entity.ts", + "src/db/entities/McpTokens.entity.ts", + "src/db/entities/Migrations.entity.ts", + "src/db/entities/NotificationChannelPreferences.entity.ts", + "src/db/entities/Notifications.entity.ts", + "src/db/entities/OauthClients.entity.ts", + "src/db/entities/OauthConsents.entity.ts", + "src/db/entities/OauthTokens.entity.ts", + "src/db/entities/PackingBags.entity.ts", + "src/db/entities/PackingCategoryAssignees.entity.ts", + "src/db/entities/PackingItemContributors.entity.ts", + "src/db/entities/PackingItems.entity.ts", + "src/db/entities/PackingTemplateCategories.entity.ts", + "src/db/entities/PackingTemplateItems.entity.ts", + "src/db/entities/PackingTemplates.entity.ts", + "src/db/entities/PasswordResetTokens.entity.ts", + "src/db/entities/PhotoProviderFields.entity.ts", + "src/db/entities/PhotoProviders.entity.ts", + "src/db/entities/Photos.entity.ts", + "src/db/entities/PlaceDetailsCache.entity.ts", + "src/db/entities/PlaceRatings.entity.ts", + "src/db/entities/PlaceRegions.entity.ts", + "src/db/entities/PlaceShadowPicks.entity.ts", + "src/db/entities/Places.entity.ts", + "src/db/entities/PluginActions.entity.ts", + "src/db/entities/PluginCapabilityAudit.entity.ts", + "src/db/entities/PluginEgressHosts.entity.ts", + "src/db/entities/PluginEntityMetadata.entity.ts", + "src/db/entities/PluginErrorLog.entity.ts", + "src/db/entities/PluginMetaMigrations.entity.ts", + "src/db/entities/PluginOauthState.entity.ts", + "src/db/entities/PluginOauthTokens.entity.ts", + "src/db/entities/PluginScheduledTasks.entity.ts", + "src/db/entities/PluginSettingsFields.entity.ts", + "src/db/entities/PluginUserConfig.entity.ts", + "src/db/entities/PluginUserErasureQueue.entity.ts", + "src/db/entities/Plugins.entity.ts", + "src/db/entities/PushSubscriptions.entity.ts", + "src/db/entities/ReservationDayPositions.entity.ts", + "src/db/entities/ReservationEndpoints.entity.ts", + "src/db/entities/ReservationTravelers.entity.ts", + "src/db/entities/Reservations.entity.ts", + "src/db/entities/RoadtripDayBoundaries.entity.ts", + "src/db/entities/RoadtripDayTracks.entity.ts", + "src/db/entities/RoadtripPreferences.entity.ts", + "src/db/entities/RoadtripVias.entity.ts", + "src/db/entities/RouteUsageDaily.entity.ts", + "src/db/entities/SchedulerLeases.entity.ts", + "src/db/entities/SchemaVersion.entity.ts", + "src/db/entities/SchoolHolidayCountries.entity.ts", + "src/db/entities/SchoolHolidayPeriods.entity.ts", + "src/db/entities/SchoolHolidayRegions.entity.ts", + "src/db/entities/Settings.entity.ts", + "src/db/entities/ShareTokens.entity.ts", + "src/db/entities/Tags.entity.ts", + "src/db/entities/TodoCategoryAssignees.entity.ts", + "src/db/entities/TodoItems.entity.ts", + "src/db/entities/TourTypes.entity.ts", + "src/db/entities/TourWaypoints.entity.ts", + "src/db/entities/Tours.entity.ts", + "src/db/entities/TrekPhotoCacheMeta.entity.ts", + "src/db/entities/TrekPhotos.entity.ts", + "src/db/entities/TripAlbumLinks.entity.ts", + "src/db/entities/TripDocumentLinks.entity.ts", + "src/db/entities/TripFiles.entity.ts", + "src/db/entities/TripInviteTokens.entity.ts", + "src/db/entities/TripMembers.entity.ts", + "src/db/entities/TripPhotos.entity.ts", + "src/db/entities/Trips.entity.ts", + "src/db/entities/UserNoticeDismissals.entity.ts", + "src/db/entities/UserSessions.entity.ts", + "src/db/entities/Users.entity.ts", + "src/db/entities/VacayCompanyHolidays.entity.ts", + "src/db/entities/VacayEntries.entity.ts", + "src/db/entities/VacayHolidayCalendars.entity.ts", + "src/db/entities/VacayPlanMembers.entity.ts", + "src/db/entities/VacayPlans.entity.ts", + "src/db/entities/VacayShares.entity.ts", + "src/db/entities/VacayUserColors.entity.ts", + "src/db/entities/VacayUserSettings.entity.ts", + "src/db/entities/VacayUserYears.entity.ts", + "src/db/entities/VacayYears.entity.ts", + "src/db/entities/VisitedCountries.entity.ts", + "src/db/entities/VisitedRegions.entity.ts", + "src/db/entities/WebauthnChallenges.entity.ts", + "src/db/entities/WebauthnCredentials.entity.ts", + "src/db/entities/index.ts", + "src/db/legacy-baseline.ts", + "src/db/migrations/Migration20200101040200_trek_photo_cache_meta_cache_key_not_null.ts", + "src/db/migrations/Migration20200101040300_a_booked_night_finally_took_the_seat_a_new.ts", + "src/db/migrations/Migration20200101042000_tours.ts", + "src/db/migrations/Migration20200101042200_an_index_on_every_foreign_key.ts", + "src/db/migrations/Migration20200101042300_every_tour_type_the_contract_names.ts", + "src/db/nul-safe-sqlite-platform.ts", + "src/db/orm-driver.ts", + "src/db/orm.ts", + "src/db/repositories/AssignmentParticipants.repository.ts", + "src/db/repositories/AuditLog.repository.ts", + "src/db/repositories/BucketList.repository.ts", + "src/db/repositories/BudgetCategoryOrder.repository.ts", + "src/db/repositories/BudgetItemMembers.repository.ts", + "src/db/repositories/BudgetItemPayers.repository.ts", + "src/db/repositories/BudgetItems.repository.ts", + "src/db/repositories/BudgetSettlements.repository.ts", + "src/db/repositories/Categories.repository.ts", + "src/db/repositories/CollabLinks.repository.ts", + "src/db/repositories/CollabMessages.repository.ts", + "src/db/repositories/CollabNotes.repository.ts", + "src/db/repositories/CollabPolls.repository.ts", + "src/db/repositories/CollectionLabels.repository.ts", + "src/db/repositories/CollectionMembers.repository.ts", + "src/db/repositories/CollectionPlaceRatings.repository.ts", + "src/db/repositories/CollectionPlaces.repository.ts", + "src/db/repositories/Collections.repository.ts", + "src/db/repositories/DawarichConnections.repository.ts", + "src/db/repositories/DawarichVisitSuggestions.repository.ts", + "src/db/repositories/DayAccommodations.repository.ts", + "src/db/repositories/DayAssignments.repository.ts", + "src/db/repositories/DayNotes.repository.ts", + "src/db/repositories/Days.repository.ts", + "src/db/repositories/DemoRepository.ts", + "src/db/repositories/DocumentConnections.repository.ts", + "src/db/repositories/DocumentProviders.repository.ts", + "src/db/repositories/DocumentSyncItems.repository.ts", + "src/db/repositories/FileLinks.repository.ts", + "src/db/repositories/GoogleApiUsage.repository.ts", + "src/db/repositories/HiddenCountries.repository.ts", + "src/db/repositories/HiddenRegions.repository.ts", + "src/db/repositories/IdempotencyKeys.repository.ts", + "src/db/repositories/InviteTokens.repository.ts", + "src/db/repositories/JourneyBooks.repository.ts", + "src/db/repositories/JourneyContributors.repository.ts", + "src/db/repositories/JourneyEntries.repository.ts", + "src/db/repositories/JourneyEntryPhotos.repository.ts", + "src/db/repositories/JourneyPhotos.repository.ts", + "src/db/repositories/JourneyShareTokens.repository.ts", + "src/db/repositories/JourneyTrips.repository.ts", + "src/db/repositories/Journeys.repository.ts", + "src/db/repositories/MaintenanceRepository.ts", + "src/db/repositories/McpTokens.repository.ts", + "src/db/repositories/Notifications.repository.ts", + "src/db/repositories/OauthClients.repository.ts", + "src/db/repositories/OauthConsents.repository.ts", + "src/db/repositories/OauthTokens.repository.ts", + "src/db/repositories/PackingBags.repository.ts", + "src/db/repositories/PackingCategoryAssignees.repository.ts", + "src/db/repositories/PackingItemContributors.repository.ts", + "src/db/repositories/PackingItems.repository.ts", + "src/db/repositories/PackingTemplateCategories.repository.ts", + "src/db/repositories/PackingTemplateItems.repository.ts", + "src/db/repositories/PackingTemplates.repository.ts", + "src/db/repositories/PasswordResetTokens.repository.ts", + "src/db/repositories/PhotoProviderFields.repository.ts", + "src/db/repositories/Photos.repository.ts", + "src/db/repositories/PlaceDetailsCache.repository.ts", + "src/db/repositories/PlaceRatings.repository.ts", + "src/db/repositories/PlaceRegions.repository.ts", + "src/db/repositories/PlaceShadowPicks.repository.ts", + "src/db/repositories/Places.repository.ts", + "src/db/repositories/PluginActions.repository.ts", + "src/db/repositories/PluginCapabilityAudit.repository.ts", + "src/db/repositories/PluginEgressHosts.repository.ts", + "src/db/repositories/PluginEntityMetadata.repository.ts", + "src/db/repositories/PluginErrorLog.repository.ts", + "src/db/repositories/PluginOauthState.repository.ts", + "src/db/repositories/PluginOauthTokens.repository.ts", + "src/db/repositories/PluginScheduledTasks.repository.ts", + "src/db/repositories/PluginSettingsFields.repository.ts", + "src/db/repositories/PluginUserConfig.repository.ts", + "src/db/repositories/PluginUserErasureQueue.repository.ts", + "src/db/repositories/Plugins.repository.ts", + "src/db/repositories/PushSubscriptions.repository.ts", + "src/db/repositories/ReservationDayPositions.repository.ts", + "src/db/repositories/ReservationEndpoints.repository.ts", + "src/db/repositories/ReservationTravelers.repository.ts", + "src/db/repositories/Reservations.repository.ts", + "src/db/repositories/RoadtripDayBoundaries.repository.ts", + "src/db/repositories/RoadtripDayTracks.repository.ts", + "src/db/repositories/RoadtripPreferences.repository.ts", + "src/db/repositories/RoadtripVias.repository.ts", + "src/db/repositories/RouteUsageDaily.repository.ts", + "src/db/repositories/SchedulerLeases.repository.ts", + "src/db/repositories/SchoolHolidayCountries.repository.ts", + "src/db/repositories/SchoolHolidayPeriods.repository.ts", + "src/db/repositories/SchoolHolidayRegions.repository.ts", + "src/db/repositories/ShareTokens.repository.ts", + "src/db/repositories/Tags.repository.ts", + "src/db/repositories/TodoCategoryAssignees.repository.ts", + "src/db/repositories/TodoItems.repository.ts", + "src/db/repositories/TourWaypoints.repository.ts", + "src/db/repositories/Tours.repository.ts", + "src/db/repositories/TrekPhotoCacheMeta.repository.ts", + "src/db/repositories/TrekPhotos.repository.ts", + "src/db/repositories/TripAlbumLinks.repository.ts", + "src/db/repositories/TripDocumentLinks.repository.ts", + "src/db/repositories/TripFiles.repository.ts", + "src/db/repositories/TripInviteTokens.repository.ts", + "src/db/repositories/TripMembers.repository.ts", + "src/db/repositories/TripPhotos.repository.ts", + "src/db/repositories/Trips.repository.ts", + "src/db/repositories/UserNoticeDismissals.repository.ts", + "src/db/repositories/UserSessions.repository.ts", + "src/db/repositories/Users.repository.ts", + "src/db/repositories/VacayCompanyHolidays.repository.ts", + "src/db/repositories/VacayEntries.repository.ts", + "src/db/repositories/VacayHolidayCalendars.repository.ts", + "src/db/repositories/VacayPlanMembers.repository.ts", + "src/db/repositories/VacayPlans.repository.ts", + "src/db/repositories/VacayShares.repository.ts", + "src/db/repositories/VacayUserColors.repository.ts", + "src/db/repositories/VacayUserSettings.repository.ts", + "src/db/repositories/VacayUserYears.repository.ts", + "src/db/repositories/VacayYears.repository.ts", + "src/db/repositories/VisitedCountries.repository.ts", + "src/db/repositories/VisitedRegions.repository.ts", + "src/db/repositories/WebauthnChallenges.repository.ts", + "src/db/repositories/WebauthnCredentials.repository.ts", + "src/db/repositories/_shared/owned-lookup.ts", + "src/db/repositories/_shared/packing-visibility.ts", + "src/db/repositories/_shared/presence-set.ts", + "src/db/repositories/_shared/reservation-travelers-owns.ts", + "src/db/repositories/_shared/reservation-visibility.ts", + "src/db/repositories/_shared/trek-repository.ts", + "src/db/reseat-booked-nights.ts", + "src/db/seeders/AddonSeeder.ts", + "src/db/seeders/DatabaseSeeder.ts", + "src/db/seeders/DocumentProviderSeeder.ts", + "src/db/seeders/PhotoProviderSeeder.ts", + "src/db/seeders/SchemaVersionSeeder.ts", + "src/demo/demo-reset.ts", + "src/demo/demo-seed.ts", + "src/index.ts", + "src/mcp/index.ts", + "src/mcp/scopes.ts", + "src/mcp/sessionManager.ts", + "src/mcp/tools.ts", + "src/middleware/globalMiddleware.ts", + "src/mikro-orm.config.ts", + "src/nest-mcp/registry.ts", + "src/nest/accommodations/accommodations-domain.module.ts", + "src/nest/accommodations/accommodations.controller.ts", + "src/nest/accommodations/accommodations.dto.ts", + "src/nest/accommodations/accommodations.mcp.ts", + "src/nest/accommodations/accommodations.module.ts", + "src/nest/accommodations/accommodations.rpc.ts", + "src/nest/accommodations/accommodations.service.ts", + "src/nest/accommodations/night-seat.ts", + "src/nest/addons/addon-gate.ts", + "src/nest/addons/addon.guard.ts", + "src/nest/addons/addons.controller.ts", + "src/nest/addons/addons.module.ts", + "src/nest/addons/addons.service.ts", + "src/nest/addons/mcp-addon-gate.ts", + "src/nest/admin/admin.controller.ts", + "src/nest/admin/admin.dto.ts", + "src/nest/admin/admin.module.ts", + "src/nest/admin/admin.service.ts", + "src/nest/admin/demo-reset.job.ts", + "src/nest/admin/version-check.job.ts", + "src/nest/airports/airports.controller.ts", + "src/nest/airports/airports.data.ts", + "src/nest/airports/airports.mcp.ts", + "src/nest/airports/airports.module.ts", + "src/nest/airports/airports.service.ts", + "src/nest/app-config/app-config.module.ts", + "src/nest/app-config/data-paths.service.ts", + "src/nest/app-config/runtime-env.service.ts", + "src/nest/app-config/tokens.ts", + "src/nest/app.module.ts", + "src/nest/assignments/assignments-domain.module.ts", + "src/nest/assignments/assignments.controller.ts", + "src/nest/assignments/assignments.dto.ts", + "src/nest/assignments/assignments.mcp.ts", + "src/nest/assignments/assignments.module.ts", + "src/nest/assignments/assignments.service.ts", + "src/nest/assignments/itinerary.rpc.ts", + "src/nest/atlas/atlas-geo.ts", + "src/nest/atlas/atlas.controller.ts", + "src/nest/atlas/atlas.dto.ts", + "src/nest/atlas/atlas.mcp.ts", + "src/nest/atlas/atlas.module.ts", + "src/nest/atlas/atlas.rpc.ts", + "src/nest/atlas/atlas.service.ts", + "src/nest/atlas/city-from-address.ts", + "src/nest/atlas/known-countries.ts", + "src/nest/atlas/place-regions-repair.job.ts", + "src/nest/atlas/public-stats.controller.ts", + "src/nest/atlas/travel-stats.controller.ts", + "src/nest/audit/audit-log.logger.ts", + "src/nest/audit/audit.module.ts", + "src/nest/audit/audit.service.ts", + "src/nest/audit/entry-trace.logger.ts", + "src/nest/auth/admin.guard.ts", + "src/nest/auth/auth-public.controller.ts", + "src/nest/auth/auth.controller.ts", + "src/nest/auth/auth.dto.ts", + "src/nest/auth/auth.helpers.ts", + "src/nest/auth/auth.mcp.ts", + "src/nest/auth/auth.module.ts", + "src/nest/auth/auth.service.ts", + "src/nest/auth/cookie-auth.guard.ts", + "src/nest/auth/current-user.decorator.ts", + "src/nest/auth/ephemeral-token.module.ts", + "src/nest/auth/ephemeral-token.service.ts", + "src/nest/auth/ephemeral-tokens.ts", + "src/nest/auth/global-auth.guard.ts", + "src/nest/auth/jwt-auth.guard.ts", + "src/nest/auth/jwt-verify.ts", + "src/nest/auth/mfa-policy.guard.ts", + "src/nest/auth/optional-jwt.guard.ts", + "src/nest/auth/passkey-enabled.guard.ts", + "src/nest/auth/passkey.controller.ts", + "src/nest/auth/passkey.service.ts", + "src/nest/auth/registration-invites.service.ts", + "src/nest/auth/session-renewal.interceptor.ts", + "src/nest/auth/sessions.controller.ts", + "src/nest/auth/user-cleanup.service.ts", + "src/nest/auth/user-profile.service.ts", + "src/nest/auth/webauthn-config.service.ts", + "src/nest/backup/auto-backup.job.ts", + "src/nest/backup/auto-backup.settings.ts", + "src/nest/backup/backup-archive.ts", + "src/nest/backup/backup.controller.ts", + "src/nest/backup/backup.dto.ts", + "src/nest/backup/backup.impl.ts", + "src/nest/backup/backup.module.ts", + "src/nest/backup/backup.service.ts", + "src/nest/backup/boot-restore.ts", + "src/nest/backup/database-backup.module.ts", + "src/nest/backup/sqlite-database-backup.ts", + "src/nest/booking-import/booking-import.module.ts", + "src/nest/booking-import/booking-import.service.ts", + "src/nest/booking-import/import-jobs.service.ts", + "src/nest/booking-import/kitinerary-extractor.module.ts", + "src/nest/booking-import/kitinerary-extractor.service.ts", + "src/nest/booking-import/kitinerary-mapper.ts", + "src/nest/booking-import/kitinerary.types.ts", + "src/nest/budget/budget.controller.ts", + "src/nest/budget/budget.dto.ts", + "src/nest/budget/budget.mcp.ts", + "src/nest/budget/budget.module.ts", + "src/nest/budget/budget.service.ts", + "src/nest/budget/costs.rpc.ts", + "src/nest/budget/exchange-rates.service.ts", + "src/nest/calendar/calendar.module.ts", + "src/nest/calendar/calendar.service.ts", + "src/nest/categories/categories.controller.ts", + "src/nest/categories/categories.dto.ts", + "src/nest/categories/categories.mcp.ts", + "src/nest/categories/categories.module.ts", + "src/nest/categories/categories.service.ts", + "src/nest/collab/collab.controller.ts", + "src/nest/collab/collab.dto.ts", + "src/nest/collab/collab.mcp.ts", + "src/nest/collab/collab.module.ts", + "src/nest/collab/collab.rpc.ts", + "src/nest/collab/collab.service.ts", + "src/nest/collections/collection-gpx.helpers.ts", + "src/nest/collections/collections.controller.ts", + "src/nest/collections/collections.dto.ts", + "src/nest/collections/collections.mcp.ts", + "src/nest/collections/collections.module.ts", + "src/nest/collections/collections.rpc.ts", + "src/nest/collections/collections.service.ts", + "src/nest/common/content-disposition.ts", + "src/nest/common/cookie.ts", + "src/nest/common/crypto/apiKeyCrypto.ts", + "src/nest/common/crypto/mfaCrypto.ts", + "src/nest/common/demo.module.ts", + "src/nest/common/demo.service.ts", + "src/nest/common/demo.ts", + "src/nest/common/geo.ts", + "src/nest/common/idempotency-cleanup.job.ts", + "src/nest/common/idempotency.interceptor.ts", + "src/nest/common/managed.guard.ts", + "src/nest/common/managed.ts", + "src/nest/common/place-image-upload.ts", + "src/nest/common/rate-limit.module.ts", + "src/nest/common/rate-limit.service.ts", + "src/nest/common/rowShape.ts", + "src/nest/common/spool-cleanup.interceptor.ts", + "src/nest/common/timezoneService.ts", + "src/nest/common/trek-exception.filter.ts", + "src/nest/common/validate-body-contracts.ts", + "src/nest/common/validate-managed-routes.ts", + "src/nest/common/validate-route-guards.ts", + "src/nest/common/zod-validation.pipe.ts", + "src/nest/config/config.controller.ts", + "src/nest/config/config.module.ts", + "src/nest/database/database-lifecycle.module.ts", + "src/nest/database/database-lifecycle.service.ts", + "src/nest/database/maintenance.module.ts", + "src/nest/database/orm.module.ts", + "src/nest/database/unit-of-work.ts", + "src/nest/day-notes/day-notes.controller.ts", + "src/nest/day-notes/day-notes.dto.ts", + "src/nest/day-notes/day-notes.mcp.ts", + "src/nest/day-notes/day-notes.module.ts", + "src/nest/day-notes/day-notes.rpc.ts", + "src/nest/day-notes/day-notes.service.ts", + "src/nest/days/day-removal.service.ts", + "src/nest/days/days.controller.ts", + "src/nest/days/days.dto.ts", + "src/nest/days/days.mcp.ts", + "src/nest/days/days.module.ts", + "src/nest/days/days.rpc.ts", + "src/nest/days/days.service.ts", + "src/nest/doc-sync/doc-sync-config.service.ts", + "src/nest/doc-sync/doc-sync-secrets.ts", + "src/nest/doc-sync/doc-sync-webhook.controller.ts", + "src/nest/doc-sync/doc-sync.controller.ts", + "src/nest/doc-sync/doc-sync.dto.ts", + "src/nest/doc-sync/doc-sync.helpers.ts", + "src/nest/doc-sync/doc-sync.job.ts", + "src/nest/doc-sync/doc-sync.mcp.ts", + "src/nest/doc-sync/doc-sync.module.ts", + "src/nest/doc-sync/doc-sync.service.ts", + "src/nest/doc-sync/document-provider.registry.ts", + "src/nest/doc-sync/document-provider.ts", + "src/nest/doc-sync/providers/paperless.client.ts", + "src/nest/doc-sync/providers/paperless.provider.ts", + "src/nest/doc-sync/providers/papra.client.ts", + "src/nest/doc-sync/providers/provider-http.ts", + "src/nest/doc-sync/providers/synology-drive.client.ts", + "src/nest/doc-sync/providers/synology-drive.provider.ts", + "src/nest/doc-sync/providers/webdav.client.ts", + "src/nest/doc-sync/providers/webdav.provider.ts", + "src/nest/feeds/feeds.controller.ts", + "src/nest/feeds/feeds.mcp.ts", + "src/nest/feeds/feeds.module.ts", + "src/nest/feeds/feeds.service.ts", + "src/nest/files/allowed-file-types.module.ts", + "src/nest/files/allowed-file-types.service.ts", + "src/nest/files/files-download.controller.ts", + "src/nest/files/files.constants.ts", + "src/nest/files/files.controller.ts", + "src/nest/files/files.dto.ts", + "src/nest/files/files.mcp.ts", + "src/nest/files/files.module.ts", + "src/nest/files/files.rpc.ts", + "src/nest/files/files.service.ts", + "src/nest/geo/geo.module.ts", + "src/nest/geo/geocoding.service.ts", + "src/nest/geo/nominatim.client.ts", + "src/nest/google-quota/google-quota.controller.ts", + "src/nest/google-quota/google-quota.dto.ts", + "src/nest/google-quota/google-quota.module.ts", + "src/nest/google-quota/google-quota.service.ts", + "src/nest/health/features.controller.ts", + "src/nest/health/health.module.ts", + "src/nest/help/help.controller.ts", + "src/nest/help/help.mcp.ts", + "src/nest/help/help.module.ts", + "src/nest/help/wiki.ts", + "src/nest/integrations/airtrail-core.module.ts", + "src/nest/integrations/airtrail-import.service.ts", + "src/nest/integrations/airtrail-link.service.ts", + "src/nest/integrations/airtrail-sync.helpers.ts", + "src/nest/integrations/airtrail-sync.job.ts", + "src/nest/integrations/airtrail-sync.service.ts", + "src/nest/integrations/airtrail.client.ts", + "src/nest/integrations/airtrail.controller.ts", + "src/nest/integrations/airtrail.dto.ts", + "src/nest/integrations/airtrail.mcp.ts", + "src/nest/integrations/airtrail.module.ts", + "src/nest/integrations/airtrail.service.ts", + "src/nest/integrations/dawarich-suggestions.service.ts", + "src/nest/integrations/dawarich-sync.job.ts", + "src/nest/integrations/dawarich-sync.service.ts", + "src/nest/integrations/dawarich-tracks.service.ts", + "src/nest/integrations/dawarich.client.ts", + "src/nest/integrations/dawarich.controller.ts", + "src/nest/integrations/dawarich.dto.ts", + "src/nest/integrations/dawarich.helpers.ts", + "src/nest/integrations/dawarich.mcp.ts", + "src/nest/integrations/dawarich.module.ts", + "src/nest/integrations/dawarich.service.ts", + "src/nest/journey/journal-rpc.module.ts", + "src/nest/journey/journal.rpc.ts", + "src/nest/journey/journey-book.service.ts", + "src/nest/journey/journey-domain.module.ts", + "src/nest/journey/journey-domain.service.ts", + "src/nest/journey/journey-entry-row.ts", + "src/nest/journey/journey-photo-capture.module.ts", + "src/nest/journey/journey-photo-capture.service.ts", + "src/nest/journey/journey-public.controller.ts", + "src/nest/journey/journey-share.service.ts", + "src/nest/journey/journey-stats.ts", + "src/nest/journey/journey.controller.ts", + "src/nest/journey/journey.dto.ts", + "src/nest/journey/journey.mcp.ts", + "src/nest/journey/journey.module.ts", + "src/nest/journey/journey.service.ts", + "src/nest/llm-parse/clients/anthropic.client.ts", + "src/nest/llm-parse/clients/nuextract.ts", + "src/nest/llm-parse/clients/openai-compatible.client.ts", + "src/nest/llm-parse/image-input.ts", + "src/nest/llm-parse/lenient-json.ts", + "src/nest/llm-parse/llm-capabilities.controller.ts", + "src/nest/llm-parse/llm-client.factory.ts", + "src/nest/llm-parse/llm-config.resolver.ts", + "src/nest/llm-parse/llm-config.ts", + "src/nest/llm-parse/llm-local.controller.ts", + "src/nest/llm-parse/llm-local.service.ts", + "src/nest/llm-parse/llm-parse.module.ts", + "src/nest/llm-parse/llm-parse.service.ts", + "src/nest/llm-parse/mime-email.ts", + "src/nest/llm-parse/receipt-read.ts", + "src/nest/llm-parse/router/extraction-router.ts", + "src/nest/llm-parse/router/flat-schemas.ts", + "src/nest/llm-parse/router/ollama-format.client.ts", + "src/nest/llm-parse/text-extract.ts", + "src/nest/maps/maps-nearby.helpers.ts", + "src/nest/maps/maps.controller.ts", + "src/nest/maps/maps.dto.ts", + "src/nest/maps/maps.helpers.ts", + "src/nest/maps/maps.mcp.ts", + "src/nest/maps/maps.module.ts", + "src/nest/maps/maps.service.ts", + "src/nest/maps/providers/amap.provider.ts", + "src/nest/maps/providers/places-provider.ts", + "src/nest/maps/trek-places.client.ts", + "src/nest/mcp-shared/mcp-shared.module.ts", + "src/nest/mcp-shared/mcp-tool-guards.service.ts", + "src/nest/mcp-transport/mcp-transport.constants.ts", + "src/nest/mcp-transport/mcp-transport.controller.ts", + "src/nest/mcp-transport/mcp-transport.module.ts", + "src/nest/mcp-transport/mcp-transport.service.ts", + "src/nest/memories/immich.controller.ts", + "src/nest/memories/immich.service.ts", + "src/nest/memories/journey-thumbs.job.ts", + "src/nest/memories/memories-access.service.ts", + "src/nest/memories/memories.dto.ts", + "src/nest/memories/memories.helpers.ts", + "src/nest/memories/memories.mcp.ts", + "src/nest/memories/memories.module.ts", + "src/nest/memories/memories.service.ts", + "src/nest/memories/photo-capture-backfill.service.ts", + "src/nest/memories/photo-provider.registry.ts", + "src/nest/memories/photo-provider.ts", + "src/nest/memories/photo-resolver.service.ts", + "src/nest/memories/providers/immich.provider.ts", + "src/nest/memories/providers/synology.provider.ts", + "src/nest/memories/synology.controller.ts", + "src/nest/memories/synology.service.ts", + "src/nest/memories/thumbnail.service.ts", + "src/nest/memories/trek-photo-cache.job.ts", + "src/nest/memories/trek-photo-cache.service.ts", + "src/nest/memories/unified-memories.service.ts", + "src/nest/memories/unified.controller.ts", + "src/nest/notifications/channel-registry.ts", + "src/nest/notifications/channels/builtins.ts", + "src/nest/notifications/mailer/email-html.ts", + "src/nest/notifications/mailer/mailer.module.ts", + "src/nest/notifications/mailer/mailer.service.ts", + "src/nest/notifications/mailer/smtp-diagnostics.ts", + "src/nest/notifications/notification-preferences.service.ts", + "src/nest/notifications/notifications.controller.ts", + "src/nest/notifications/notifications.dto.ts", + "src/nest/notifications/notifications.mcp.ts", + "src/nest/notifications/notifications.module.ts", + "src/nest/notifications/notifications.service.ts", + "src/nest/notifications/push/push-subscription.helpers.ts", + "src/nest/notifications/push/push-subscriptions.service.ts", + "src/nest/notifications/push/push.controller.ts", + "src/nest/notifications/push/vapid-keys.service.ts", + "src/nest/notifications/push/web-push-crypto.ts", + "src/nest/notifications/reminder-jobs.service.ts", + "src/nest/notifications/storage-health-notifier.service.ts", + "src/nest/notifications/transports/ntfy.service.ts", + "src/nest/notifications/transports/web-push.service.ts", + "src/nest/notifications/transports/webhook.service.ts", + "src/nest/oauth/oauth-api.controller.ts", + "src/nest/oauth/oauth-public.controller.ts", + "src/nest/oauth/oauth-sdk.provider.ts", + "src/nest/oauth/oauth-token-retention.job.ts", + "src/nest/oauth/oauth.dto.ts", + "src/nest/oauth/oauth.helpers.ts", + "src/nest/oauth/oauth.module.ts", + "src/nest/oauth/oauth.pending-codes.ts", + "src/nest/oauth/oauth.service.ts", + "src/nest/oidc/oidc.controller.ts", + "src/nest/oidc/oidc.module.ts", + "src/nest/oidc/oidc.service.ts", + "src/nest/packing/admin-packing-templates.controller.ts", + "src/nest/packing/packing.controller.ts", + "src/nest/packing/packing.dto.ts", + "src/nest/packing/packing.mcp.ts", + "src/nest/packing/packing.module.ts", + "src/nest/packing/packing.rpc.ts", + "src/nest/packing/packing.service.ts", + "src/nest/permissions/permissions.module.ts", + "src/nest/permissions/permissions.service.ts", + "src/nest/permissions/trip-access.guard.ts", + "src/nest/permissions/trip-owner.guard.ts", + "src/nest/permissions/trip.decorator.ts", + "src/nest/photos/photos.controller.ts", + "src/nest/photos/photos.module.ts", + "src/nest/photos/photos.service.ts", + "src/nest/photos/trek-photo-registration.service.ts", + "src/nest/photos/trek-photos.module.ts", + "src/nest/place-enrichment/place-enrichment.controller.ts", + "src/nest/place-enrichment/place-enrichment.dto.ts", + "src/nest/place-enrichment/place-enrichment.module.ts", + "src/nest/place-enrichment/place-enrichment.service.ts", + "src/nest/place-photos/place-photo-cache.job.ts", + "src/nest/place-photos/place-photo-cache.service.ts", + "src/nest/place-photos/place-photos.module.ts", + "src/nest/place-shadow/place-shadow.controller.ts", + "src/nest/place-shadow/place-shadow.dto.ts", + "src/nest/place-shadow/place-shadow.job.ts", + "src/nest/place-shadow/place-shadow.module.ts", + "src/nest/place-shadow/place-shadow.service.ts", + "src/nest/places/gpx-export.helpers.ts", + "src/nest/places/kml-import.helpers.ts", + "src/nest/places/maps-dir.helpers.ts", + "src/nest/places/places.controller.ts", + "src/nest/places/places.dto.ts", + "src/nest/places/places.helpers.ts", + "src/nest/places/places.mcp.ts", + "src/nest/places/places.module.ts", + "src/nest/places/places.rpc.ts", + "src/nest/places/places.service.ts", + "src/nest/platform/api-docs.ts", + "src/nest/platform/consent-coop.middleware.ts", + "src/nest/platform/discovery-metadata.service.ts", + "src/nest/platform/discovery.controller.ts", + "src/nest/platform/mcp-metadata.middleware.ts", + "src/nest/platform/platform.module.ts", + "src/nest/platform/platform.routes.ts", + "src/nest/platform/spa-fallback.filter.ts", + "src/nest/plugins/contributions/atlas-layers.controller.ts", + "src/nest/plugins/contributions/day-schedule.controller.ts", + "src/nest/plugins/contributions/day-tints.controller.ts", + "src/nest/plugins/contributions/journal-entry-rows.controller.ts", + "src/nest/plugins/contributions/map-layers.controller.ts", + "src/nest/plugins/contributions/map-markers.controller.ts", + "src/nest/plugins/contributions/pdf-sections.controller.ts", + "src/nest/plugins/contributions/place-details.controller.ts", + "src/nest/plugins/contributions/plugin-calendar.controller.ts", + "src/nest/plugins/contributions/plugin-contributions.module.ts", + "src/nest/plugins/contributions/plugin-mcp-tools.service.ts", + "src/nest/plugins/contributions/plugin-photos.controller.ts", + "src/nest/plugins/contributions/plugin-pois.controller.ts", + "src/nest/plugins/contributions/plugin-pois.helpers.ts", + "src/nest/plugins/contributions/plugin-pois.mcp.ts", + "src/nest/plugins/contributions/plugin-pois.service.ts", + "src/nest/plugins/contributions/plugin-route-normalize.ts", + "src/nest/plugins/contributions/plugin-routes.controller.ts", + "src/nest/plugins/contributions/plugin-search.controller.ts", + "src/nest/plugins/contributions/plugin-search.helpers.ts", + "src/nest/plugins/contributions/plugin-search.mcp.ts", + "src/nest/plugins/contributions/trip-card-contributions.controller.ts", + "src/nest/plugins/contributions/trip-warnings.controller.ts", + "src/nest/plugins/contributions/trip-warnings.mcp.ts", + "src/nest/plugins/contributions/view-contributions.controller.ts", + "src/nest/plugins/dependencies.ts", + "src/nest/plugins/dev-link.ts", + "src/nest/plugins/host/daily-budget.ts", + "src/nest/plugins/host/plugin-audit.ts", + "src/nest/plugins/host/plugin-data.service.ts", + "src/nest/plugins/host/plugin-guards.module.ts", + "src/nest/plugins/host/plugin-guards.service.ts", + "src/nest/plugins/host/plugin-host-state.ts", + "src/nest/plugins/host/plugin-jobs.ts", + "src/nest/plugins/host/plugin-rpc-host.factory.ts", + "src/nest/plugins/host/rate-limit.ts", + "src/nest/plugins/host/rpc-host.ts", + "src/nest/plugins/host/rpc-kit/decorators.ts", + "src/nest/plugins/host/rpc-kit/registry.service.ts", + "src/nest/plugins/host/rpc/db.rpc.ts", + "src/nest/plugins/host/rpc/host-surface.rpc.ts", + "src/nest/plugins/host/rpc/meta.rpc.ts", + "src/nest/plugins/install/discovery.ts", + "src/nest/plugins/install/host-compat.ts", + "src/nest/plugins/install/manifest.ts", + "src/nest/plugins/install/safe-extract.ts", + "src/nest/plugins/install/safe-fetch.ts", + "src/nest/plugins/install/verify-signature.ts", + "src/nest/plugins/mcp-tool-schema.ts", + "src/nest/plugins/oauth/plugin-oauth.controller.ts", + "src/nest/plugins/oauth/plugin-oauth.module.ts", + "src/nest/plugins/oauth/plugin-oauth.service.ts", + "src/nest/plugins/paths.ts", + "src/nest/plugins/plugin-activity.controller.ts", + "src/nest/plugins/plugin-backup.ts", + "src/nest/plugins/plugin-frame.controller.ts", + "src/nest/plugins/plugin-runtime.service.ts", + "src/nest/plugins/plugin-user-settings.controller.ts", + "src/nest/plugins/plugin-user-settings.service.ts", + "src/nest/plugins/plugins-feed.controller.ts", + "src/nest/plugins/plugins-proxy.controller.ts", + "src/nest/plugins/plugins-runtime.module.ts", + "src/nest/plugins/plugins.controller.ts", + "src/nest/plugins/plugins.dto.ts", + "src/nest/plugins/plugins.module.ts", + "src/nest/plugins/plugins.service.ts", + "src/nest/plugins/poi-categories.ts", + "src/nest/plugins/protocol/output-contract.ts", + "src/nest/plugins/registry/registry.service.ts", + "src/nest/plugins/runtime/egress-policy.ts", + "src/nest/plugins/runtime/plugin-host-entry.ts", + "src/nest/plugins/runtime/plugin-sdk.ts", + "src/nest/plugins/signature-status.ts", + "src/nest/plugins/supervisor/plugin-supervisor.ts", + "src/nest/plugins/text-sanitize.ts", + "src/nest/plugins/user-erasure-enqueue.ts", + "src/nest/public-api/api-token.guard.ts", + "src/nest/public-api/public-api-request.ts", + "src/nest/public-api/public-api.controller.ts", + "src/nest/public-api/public-api.module.ts", + "src/nest/public-api/public-api.service.ts", + "src/nest/query-helpers/query-helpers.module.ts", + "src/nest/query-helpers/query-helpers.service.ts", + "src/nest/realtime/realtime-gateway.module.ts", + "src/nest/realtime/realtime.gateway.ts", + "src/nest/realtime/realtime.module.ts", + "src/nest/realtime/realtime.service.ts", + "src/nest/realtime/trek-ws.adapter.ts", + "src/nest/realtime/ws-state.ts", + "src/nest/receipt-scan/receipt-scan.controller.ts", + "src/nest/receipt-scan/receipt-scan.module.ts", + "src/nest/reservation-import/reservation-import.controller.ts", + "src/nest/reservation-import/reservation-import.dto.ts", + "src/nest/reservation-import/reservation-import.mcp.ts", + "src/nest/reservation-import/reservation-import.module.ts", + "src/nest/reservations/reservation-metadata.ts", + "src/nest/reservations/reservations-read.module.ts", + "src/nest/reservations/reservations-read.service.ts", + "src/nest/reservations/reservations.controller.ts", + "src/nest/reservations/reservations.dto.ts", + "src/nest/reservations/reservations.mcp.ts", + "src/nest/reservations/reservations.module.ts", + "src/nest/reservations/reservations.rpc.ts", + "src/nest/reservations/reservations.service.ts", + "src/nest/reservations/upcoming-reservations.controller.ts", + "src/nest/roadtrip/charging-lookup.controller.ts", + "src/nest/roadtrip/charging.controller.ts", + "src/nest/roadtrip/charging.helpers.ts", + "src/nest/roadtrip/charging.mcp.ts", + "src/nest/roadtrip/charging.service.ts", + "src/nest/roadtrip/day-boundaries.controller.ts", + "src/nest/roadtrip/day-boundaries.mcp.ts", + "src/nest/roadtrip/day-boundaries.service.ts", + "src/nest/roadtrip/google-route.controller.ts", + "src/nest/roadtrip/google-route.mcp.ts", + "src/nest/roadtrip/google-route.service.ts", + "src/nest/roadtrip/roadtrip-hazards.controller.ts", + "src/nest/roadtrip/roadtrip-hazards.mcp.ts", + "src/nest/roadtrip/roadtrip-hazards.service.ts", + "src/nest/roadtrip/roadtrip-mcp.helpers.ts", + "src/nest/roadtrip/roadtrip-plan.service.ts", + "src/nest/roadtrip/roadtrip-planning.mcp.ts", + "src/nest/roadtrip/roadtrip-preferences.controller.ts", + "src/nest/roadtrip/roadtrip-preferences.mcp.ts", + "src/nest/roadtrip/roadtrip-preferences.service.ts", + "src/nest/roadtrip/roadtrip-router.service.ts", + "src/nest/roadtrip/roadtrip-search.controller.ts", + "src/nest/roadtrip/roadtrip-search.service.ts", + "src/nest/roadtrip/roadtrip.controller.ts", + "src/nest/roadtrip/roadtrip.dto.ts", + "src/nest/roadtrip/roadtrip.mcp.ts", + "src/nest/roadtrip/roadtrip.module.ts", + "src/nest/roadtrip/roadtrip.service.ts", + "src/nest/route-usage/route-usage.controller.ts", + "src/nest/route-usage/route-usage.dto.ts", + "src/nest/route-usage/route-usage.job.ts", + "src/nest/route-usage/route-usage.module.ts", + "src/nest/route-usage/route-usage.service.ts", + "src/nest/scheduling/cron-registrar.service.ts", + "src/nest/scheduling/scheduling.module.ts", + "src/nest/school-holidays/school-holidays.controller.ts", + "src/nest/school-holidays/school-holidays.mcp.ts", + "src/nest/school-holidays/school-holidays.module.ts", + "src/nest/school-holidays/school-holidays.service.ts", + "src/nest/sessions/session-purge.job.ts", + "src/nest/sessions/sessions.module.ts", + "src/nest/sessions/sessions.service.ts", + "src/nest/settings/instance-api-keys.ts", + "src/nest/settings/settings.controller.ts", + "src/nest/settings/settings.dto.ts", + "src/nest/settings/settings.mcp.ts", + "src/nest/settings/settings.module.ts", + "src/nest/settings/settings.service.ts", + "src/nest/share/share-view.helpers.ts", + "src/nest/share/share.controller.ts", + "src/nest/share/share.dto.ts", + "src/nest/share/share.mcp.ts", + "src/nest/share/share.module.ts", + "src/nest/share/share.service.ts", + "src/nest/storage/content-type.ts", + "src/nest/storage/drivers/local.driver.ts", + "src/nest/storage/drivers/mirror.driver.ts", + "src/nest/storage/drivers/s3.driver.ts", + "src/nest/storage/http-serving.ts", + "src/nest/storage/storage-admin.controller.ts", + "src/nest/storage/storage-admin.dto.ts", + "src/nest/storage/storage-admin.service.ts", + "src/nest/storage/storage-events.service.ts", + "src/nest/storage/storage-jobs.service.ts", + "src/nest/storage/storage-paths.ts", + "src/nest/storage/storage-probe.ts", + "src/nest/storage/storage-registry.service.ts", + "src/nest/storage/storage-secrets.ts", + "src/nest/storage/storage-stats.service.ts", + "src/nest/storage/storage-upload.factory.ts", + "src/nest/storage/storage-usage-scan.job.ts", + "src/nest/storage/storage.module.ts", + "src/nest/storage/storage.service.ts", + "src/nest/storage/storage.types.ts", + "src/nest/system-notices/system-notices.controller.ts", + "src/nest/system-notices/system-notices.module.ts", + "src/nest/system-notices/system-notices.service.ts", + "src/nest/tags/tags.controller.ts", + "src/nest/tags/tags.mcp.ts", + "src/nest/tags/tags.module.ts", + "src/nest/tags/tags.rpc.ts", + "src/nest/tags/tags.service.ts", + "src/nest/todo/todo.controller.ts", + "src/nest/todo/todo.dto.ts", + "src/nest/todo/todo.mcp.ts", + "src/nest/todo/todo.module.ts", + "src/nest/todo/todo.rpc.ts", + "src/nest/todo/todo.service.ts", + "src/nest/tokens/token.service.ts", + "src/nest/tokens/tokens.module.ts", + "src/nest/tours/dto/tour-create.dto.ts", + "src/nest/tours/tours-import.controller.ts", + "src/nest/tours/tours.controller.ts", + "src/nest/tours/tours.module.ts", + "src/nest/tours/tours.service.ts", + "src/nest/transit/google-transit.provider.ts", + "src/nest/transit/transit-itinerary.helpers.ts", + "src/nest/transit/transit-provider.ts", + "src/nest/transit/transit.controller.ts", + "src/nest/transit/transit.mcp.ts", + "src/nest/transit/transit.module.ts", + "src/nest/transit/transit.service.ts", + "src/nest/trip-invite/trip-invite.controller.ts", + "src/nest/trip-invite/trip-invite.dto.ts", + "src/nest/trip-invite/trip-invite.mcp.ts", + "src/nest/trip-invite/trip-invite.module.ts", + "src/nest/trip-invite/trip-invite.service.ts", + "src/nest/trip-members/trip-members.controller.ts", + "src/nest/trip-members/trip-members.module.ts", + "src/nest/trip-members/trip-members.service.ts", + "src/nest/trip-membership/trip-membership.module.ts", + "src/nest/trip-membership/trip-membership.service.ts", + "src/nest/trip-read-model/trip-read-model.module.ts", + "src/nest/trip-read-model/trip-read-model.service.ts", + "src/nest/trips/trip-prompts.mcp.ts", + "src/nest/trips/trips.controller.ts", + "src/nest/trips/trips.dto.ts", + "src/nest/trips/trips.mcp.ts", + "src/nest/trips/trips.module.ts", + "src/nest/trips/trips.rpc.ts", + "src/nest/trips/trips.service.ts", + "src/nest/unsplash/unsplash.module.ts", + "src/nest/unsplash/unsplash.service.ts", + "src/nest/vacay/vacay.controller.ts", + "src/nest/vacay/vacay.dto.ts", + "src/nest/vacay/vacay.mcp.ts", + "src/nest/vacay/vacay.module.ts", + "src/nest/vacay/vacay.rpc.ts", + "src/nest/vacay/vacay.service.ts", + "src/nest/weather/weather.controller.ts", + "src/nest/weather/weather.impl.ts", + "src/nest/weather/weather.mcp.ts", + "src/nest/weather/weather.module.ts", + "src/nest/weather/weather.service.ts", + "src/plugin-event-sink.ts", + "src/plugin-mcp-tools.ts", + "src/shutdown.ts", + "src/systemNotices/conditions.ts", + "src/systemNotices/registry.ts", + "src/systemNotices/service.ts", + "src/systemNotices/types.ts", + "src/types.ts", + "src/typings/express.d.ts", + "src/utils/cappedFetch.ts", + "src/utils/ipv6.ts", + "src/utils/ssrfGuard.ts", + "tests/e2e/addons.e2e.test.ts", + "tests/e2e/admin.e2e.test.ts", + "tests/e2e/airports.e2e.test.ts", + "tests/e2e/assignments.e2e.test.ts", + "tests/e2e/atlas.e2e.test.ts", + "tests/e2e/auth.e2e.test.ts", + "tests/e2e/backup.e2e.test.ts", + "tests/e2e/booking-import.e2e.test.ts", + "tests/e2e/budget.e2e.test.ts", + "tests/e2e/calendar-feed-visibility.e2e.test.ts", + "tests/e2e/categories.e2e.test.ts", + "tests/e2e/collab.e2e.test.ts", + "tests/e2e/collections.e2e.test.ts", + "tests/e2e/config.e2e.test.ts", + "tests/e2e/dawarich.e2e.test.ts", + "tests/e2e/days.e2e.test.ts", + "tests/e2e/doc-sync.e2e.test.ts", + "tests/e2e/feeds.e2e.test.ts", + "tests/e2e/files.e2e.test.ts", + "tests/e2e/google-quota.e2e.test.ts", + "tests/e2e/harness.ts", + "tests/e2e/journey.e2e.test.ts", + "tests/e2e/mailer.e2e.test.ts", + "tests/e2e/maps.e2e.test.ts", + "tests/e2e/memories.e2e.test.ts", + "tests/e2e/notifications.e2e.test.ts", + "tests/e2e/oauth.e2e.test.ts", + "tests/e2e/oidc.e2e.test.ts", + "tests/e2e/packing.e2e.test.ts", + "tests/e2e/place-enrichment.e2e.test.ts", + "tests/e2e/place-shadow.e2e.test.ts", + "tests/e2e/places.e2e.test.ts", + "tests/e2e/plugin-pois.e2e.test.ts", + "tests/e2e/plugin-search.e2e.test.ts", + "tests/e2e/public-api.e2e.test.ts", + "tests/e2e/push.e2e.test.ts", + "tests/e2e/receipt-scan.e2e.test.ts", + "tests/e2e/reservations.e2e.test.ts", + "tests/e2e/roadtrip.e2e.test.ts", + "tests/e2e/school-holidays.e2e.test.ts", + "tests/e2e/session-revocation.e2e.test.ts", + "tests/e2e/sessions.e2e.test.ts", + "tests/e2e/settings.e2e.test.ts", + "tests/e2e/share.e2e.test.ts", + "tests/e2e/spa-fallback.e2e.test.ts", + "tests/e2e/storage-admin.e2e.test.ts", + "tests/e2e/system-notices.e2e.test.ts", + "tests/e2e/tags.e2e.test.ts", + "tests/e2e/todo.e2e.test.ts", + "tests/e2e/tours.e2e.test.ts", + "tests/e2e/transit-provider.e2e.test.ts", + "tests/e2e/transit.e2e.test.ts", + "tests/e2e/trip-invite.e2e.test.ts", + "tests/e2e/trips.e2e.test.ts", + "tests/e2e/vacay.e2e.test.ts", + "tests/e2e/weather.e2e.test.ts", + "tests/helpers/accommodations-service.ts", + "tests/helpers/atlas-repos.ts", + "tests/helpers/auth.ts", + "tests/helpers/budget-repos.ts", + "tests/helpers/collab-repos.ts", + "tests/helpers/dawarich-repos.ts", + "tests/helpers/db-mock.ts", + "tests/helpers/doc-sync-repos.ts", + "tests/helpers/exif-jpeg.ts", + "tests/helpers/factories.ts", + "tests/helpers/factories/atlas.ts", + "tests/helpers/factories/budget.ts", + "tests/helpers/factories/collab.ts", + "tests/helpers/factories/collections.ts", + "tests/helpers/factories/context.ts", + "tests/helpers/factories/files.ts", + "tests/helpers/factories/itinerary.ts", + "tests/helpers/factories/journeys.ts", + "tests/helpers/factories/notifications.ts", + "tests/helpers/factories/packing.ts", + "tests/helpers/factories/photos.ts", + "tests/helpers/factories/places.ts", + "tests/helpers/factories/plugins.ts", + "tests/helpers/factories/reservations.ts", + "tests/helpers/factories/rows.ts", + "tests/helpers/factories/todos.ts", + "tests/helpers/factories/tokens.ts", + "tests/helpers/factories/tours.ts", + "tests/helpers/factories/trips.ts", + "tests/helpers/factories/users.ts", + "tests/helpers/factories/vacay.ts", + "tests/helpers/files-repos.ts", + "tests/helpers/journey-repos.ts", + "tests/helpers/journey-share-repos.ts", + "tests/helpers/mcp-harness.ts", + "tests/helpers/mcp-test-controllers.ts", + "tests/helpers/migration-step.ts", + "tests/helpers/notifications-repos.ts", + "tests/helpers/notifications.ts", + "tests/helpers/packing-repos.ts", + "tests/helpers/plugin-host.ts", + "tests/helpers/rpc-host-deps.ts", + "tests/helpers/school-holidays-repos.ts", + "tests/helpers/sessions.ts", + "tests/helpers/share-repos.ts", + "tests/helpers/storage-fixture.ts", + "tests/helpers/test-addons.ts", + "tests/helpers/test-db.ts", + "tests/helpers/test-orm.ts", + "tests/helpers/test-uow.ts", + "tests/helpers/todo-repos.ts", + "tests/helpers/tours-repos.ts", + "tests/helpers/vacay-repos.ts", + "tests/helpers/ws-client.ts", + "tests/integration/admin.test.ts", + "tests/integration/airtrail-sync-request-context.test.ts", + "tests/integration/api-docs.test.ts", + "tests/integration/app-config.test.ts", + "tests/integration/assignments.test.ts", + "tests/integration/async-closure-truthiness-guards.test.ts", + "tests/integration/atlas-geocode-request-context.test.ts", + "tests/integration/atlas.test.ts", + "tests/integration/auth.test.ts", + "tests/integration/backup.test.ts", + "tests/integration/book-body-size.test.ts", + "tests/integration/boot-sweeps-request-context.test.ts", + "tests/integration/bootstrap.test.ts", + "tests/integration/budget.test.ts", + "tests/integration/categories.test.ts", + "tests/integration/collab.test.ts", + "tests/integration/collections.test.ts", + "tests/integration/database-lifecycle.test.ts", + "tests/integration/dayNotes.test.ts", + "tests/integration/dayReorder.test.ts", + "tests/integration/days.test.ts", + "tests/integration/demo-reset-connection-swap.spike.test.ts", + "tests/integration/demo-seed-request-context.test.ts", + "tests/integration/doc-sync-webhook-request-context.test.ts", + "tests/integration/feeds-request-context.test.ts", + "tests/integration/files.test.ts", + "tests/integration/help.test.ts", + "tests/integration/immich.test.ts", + "tests/integration/journey-place-order.test.ts", + "tests/integration/journey.test.ts", + "tests/integration/leg-mode-incoming.test.ts", + "tests/integration/maps.test.ts", + "tests/integration/mcp.test.ts", + "tests/integration/memories-immich.test.ts", + "tests/integration/memories-synology.test.ts", + "tests/integration/memories-unified.test.ts", + "tests/integration/misc.test.ts", + "tests/integration/notifications.test.ts", + "tests/integration/oauth-authorize.test.ts", + "tests/integration/oauth.test.ts", + "tests/integration/oidc-local-provider.test.ts", + "tests/integration/oidc.test.ts", + "tests/integration/orm-request-context-seams.test.ts", + "tests/integration/packing.test.ts", + "tests/integration/passkey.test.ts", + "tests/integration/places.test.ts", + "tests/integration/plugins/boot-registry-order.test.ts", + "tests/integration/plugins/dev-link.test.ts", + "tests/integration/plugins/plugin-runtime.task2-conversion.test.ts", + "tests/integration/plugins/plugin-runtime.test.ts", + "tests/integration/plugins/plugin-scheduler-sweep.test.ts", + "tests/integration/plugins/registry.test.ts", + "tests/integration/plugins/supervisor.test.ts", + "tests/integration/profile.test.ts", + "tests/integration/reservations.test.ts", + "tests/integration/scheduler-gate.test.ts", + "tests/integration/security.test.ts", + "tests/integration/settings.test.ts", + "tests/integration/share.test.ts", + "tests/integration/storage-health-notifier-request-context.test.ts", + "tests/integration/storage-restore-reload.test.ts", + "tests/integration/storage-stream-abort.test.ts", + "tests/integration/systemNotices.test.ts", + "tests/integration/tags.test.ts", + "tests/integration/todo.test.ts", + "tests/integration/trip-access-primitives.test.ts", + "tests/integration/trips.test.ts", + "tests/integration/uploads-photo-request-context.test.ts", + "tests/integration/uploads-static.test.ts", + "tests/integration/vacay.test.ts", + "tests/setup.console-noise.ts", + "tests/setup.ts", + "tests/unit/app-config/app-url.test.ts", + "tests/unit/app-config/config-ownership.test.ts", + "tests/unit/app-config/config-templates.test.ts", + "tests/unit/app-config/data-paths.test.ts", + "tests/unit/app-config/derive.test.ts", + "tests/unit/app-config/env-reference.test.ts", + "tests/unit/app-config/image-version.test.ts", + "tests/unit/app-config/parsers.test.ts", + "tests/unit/app-config/validate.test.ts", + "tests/unit/auto-backup.test.ts", + "tests/unit/budget/costs.rpc.test.ts", + "tests/unit/config.test.ts", + "tests/unit/days/day-notes.rpc.test.ts", + "tests/unit/days/days-itinerary.rpc.test.ts", + "tests/unit/db/atlas-region-crosswalk.test.ts", + "tests/unit/db/booked-night-reseat.test.ts", + "tests/unit/db/budget-ticket-json-migration.test.ts", + "tests/unit/db/connection.test.ts", + "tests/unit/db/database-lazy-open.test.ts", + "tests/unit/db/dialect/sql-functions.postgres.test.ts", + "tests/unit/db/dialect/sql-functions.test.ts", + "tests/unit/db/durability.test.ts", + "tests/unit/db/email-case-index.test.ts", + "tests/unit/db/entities-index.test.ts", + "tests/unit/db/entities/primary-relations.spike.test.ts", + "tests/unit/db/entity-class-fields.test.ts", + "tests/unit/db/entity-schema-parity.test.ts", + "tests/unit/db/generate-entities.test.ts", + "tests/unit/db/instance-api-key-backfill.test.ts", + "tests/unit/db/known-migrations.test.ts", + "tests/unit/db/legacy-baseline.test.ts", + "tests/unit/db/migrate-encryption-parity.test.ts", + "tests/unit/db/nul-safe-sqlite-platform.test.ts", + "tests/unit/db/repositories/Addons.repository.test.ts", + "tests/unit/db/repositories/AppSettings.repository.test.ts", + "tests/unit/db/repositories/AssignmentParticipants.repository.test.ts", + "tests/unit/db/repositories/AuditLog.repository.test.ts", + "tests/unit/db/repositories/BucketList.repository.test.ts", + "tests/unit/db/repositories/BudgetItems.repository.test.ts", + "tests/unit/db/repositories/Categories.repository.test.ts", + "tests/unit/db/repositories/CollabMessages.repository.test.ts", + "tests/unit/db/repositories/DawarichConnections.repository.test.ts", + "tests/unit/db/repositories/DawarichVisitSuggestions.repository.test.ts", + "tests/unit/db/repositories/DayAccommodations.repository.test.ts", + "tests/unit/db/repositories/DayAssignments.repository.test.ts", + "tests/unit/db/repositories/DayNotes.repository.test.ts", + "tests/unit/db/repositories/Days.repository.test.ts", + "tests/unit/db/repositories/DemoRepository.test.ts", + "tests/unit/db/repositories/DocumentProviders.repository.test.ts", + "tests/unit/db/repositories/DocumentSyncItems.repository.test.ts", + "tests/unit/db/repositories/GooglePlacePhotoMeta.repository.test.ts", + "tests/unit/db/repositories/HiddenRegions.repository.test.ts", + "tests/unit/db/repositories/IdempotencyKeys.repository.test.ts", + "tests/unit/db/repositories/InviteTokens.repository.test.ts", + "tests/unit/db/repositories/MaintenanceRepository.test.ts", + "tests/unit/db/repositories/McpTokens.repository.test.ts", + "tests/unit/db/repositories/NotificationChannelPreferences.repository.test.ts", + "tests/unit/db/repositories/Notifications.repository.test.ts", + "tests/unit/db/repositories/OauthClients.repository.test.ts", + "tests/unit/db/repositories/OauthConsents.repository.test.ts", + "tests/unit/db/repositories/OauthTokens.repository.test.ts", + "tests/unit/db/repositories/PackingItems.repository.test.ts", + "tests/unit/db/repositories/PasswordResetTokens.repository.test.ts", + "tests/unit/db/repositories/PhotoProviderFields.repository.test.ts", + "tests/unit/db/repositories/PhotoProviders.repository.test.ts", + "tests/unit/db/repositories/PlaceDetailsCache.repository.test.ts", + "tests/unit/db/repositories/PlaceRatings.repository.test.ts", + "tests/unit/db/repositories/PlaceRegions.repository.test.ts", + "tests/unit/db/repositories/PlaceShadowPicks.repository.test.ts", + "tests/unit/db/repositories/Places.repository.test.ts", + "tests/unit/db/repositories/PluginOauthTokens.repository.test.ts", + "tests/unit/db/repositories/ReservationDayPositions.repository.test.ts", + "tests/unit/db/repositories/ReservationEndpoints.repository.test.ts", + "tests/unit/db/repositories/ReservationTravelers.repository.test.ts", + "tests/unit/db/repositories/Reservations.repository.test.ts", + "tests/unit/db/repositories/RoadtripDayBoundaries.repository.test.ts", + "tests/unit/db/repositories/RoadtripDayTracks.repository.test.ts", + "tests/unit/db/repositories/RoadtripPreferences.repository.test.ts", + "tests/unit/db/repositories/RoadtripVias.repository.test.ts", + "tests/unit/db/repositories/SchedulerLeases.repository.test.ts", + "tests/unit/db/repositories/Settings.repository.test.ts", + "tests/unit/db/repositories/ShareTokens.repository.test.ts", + "tests/unit/db/repositories/Tags.repository.test.ts", + "tests/unit/db/repositories/TodoItems.repository.test.ts", + "tests/unit/db/repositories/TourWaypoints.repository.test.ts", + "tests/unit/db/repositories/Tours.repository.test.ts", + "tests/unit/db/repositories/TripInviteTokens.repository.test.ts", + "tests/unit/db/repositories/TripMembers.repository.test.ts", + "tests/unit/db/repositories/Trips.repository.test.ts", + "tests/unit/db/repositories/UserNoticeDismissals.repository.test.ts", + "tests/unit/db/repositories/UserSessions.repository.test.ts", + "tests/unit/db/repositories/Users.repository.test.ts", + "tests/unit/db/repositories/VacayCompanyHolidays.repository.test.ts", + "tests/unit/db/repositories/VacayHolidayCalendars.repository.test.ts", + "tests/unit/db/repositories/VacayPlanMembers.repository.test.ts", + "tests/unit/db/repositories/VacayPlans.repository.test.ts", + "tests/unit/db/repositories/VacayShares.repository.test.ts", + "tests/unit/db/repositories/VacayUserSettings.repository.test.ts", + "tests/unit/db/repositories/VacayUserYears.repository.test.ts", + "tests/unit/db/repositories/VacayYears.repository.test.ts", + "tests/unit/db/repositories/VisitedCountries.repository.test.ts", + "tests/unit/db/repositories/VisitedRegions.repository.test.ts", + "tests/unit/db/repositories/WebauthnChallenges.repository.test.ts", + "tests/unit/db/repositories/WebauthnCredentials.repository.test.ts", + "tests/unit/db/repositories/_shared/atlas-travowns-consumers.parity.test.ts", + "tests/unit/db/repositories/_shared/collection-role.parity.test.ts", + "tests/unit/db/repositories/_shared/owned-lookup.test.ts", + "tests/unit/db/repositories/_shared/packing-visibility.parity.test.ts", + "tests/unit/db/repositories/_shared/reservation-travelers-owns.parity.test.ts", + "tests/unit/db/repositories/_shared/reservation-visibility.test.ts", + "tests/unit/db/repositories/addons-config-encryption.test.ts", + "tests/unit/db/repositories/atlas-branch-coverage.test.ts", + "tests/unit/db/repositories/bucket-list-duplicate.parity.test.ts", + "tests/unit/db/repositories/identity-map-writeback.test.ts", + "tests/unit/db/repositories/trek-repository.test.ts", + "tests/unit/db/repositories/vacay-branch-coverage.test.ts", + "tests/unit/db/reservation-ingest-state-migration.test.ts", + "tests/unit/db/reset-admin-sessions.test.ts", + "tests/unit/db/roadtrip-preferences-migration.test.ts", + "tests/unit/db/seeders-insert-ignore.test.ts", + "tests/unit/db/seeds-admin.test.ts", + "tests/unit/db/test-orm.test.ts", + "tests/unit/db/tour-types-migration.test.ts", + "tests/unit/db/tours-migration.test.ts", + "tests/unit/db/transaction-yield.test.ts", + "tests/unit/db/trip-access.test.ts", + "tests/unit/db/trip-days-backfill-migration.test.ts", + "tests/unit/db/trip-files-prefix-migration.test.ts", + "tests/unit/db/types/db-timestamp.type.test.ts", + "tests/unit/db/user-sessions-migration.test.ts", + "tests/unit/demo/demo-reset-path.test.ts", + "tests/unit/demo/demo-reset-sessions.test.ts", + "tests/unit/demo/demo-seed.test.ts", + "tests/unit/docker-entrypoint.test.ts", + "tests/unit/eslint-rules/restricted-syntax-selectors.test.ts", + "tests/unit/files/files.rpc.test.ts", + "tests/unit/helpers/orm-factories.test.ts", + "tests/unit/helpers/test-uow.test.ts", + "tests/unit/idempotency-cleanup.test.ts", + "tests/unit/mcp/nest-mcp-policy.test.ts", + "tests/unit/mcp/scopes.test.ts", + "tests/unit/mcp/sessionManager.test.ts", + "tests/unit/mcp/tools-addon-gating.test.ts", + "tests/unit/mcp/tools-airtrail.test.ts", + "tests/unit/mcp/tools-assignments-reservations-extra.test.ts", + "tests/unit/mcp/tools-assignments.test.ts", + "tests/unit/mcp/tools-atlas-expanded.test.ts", + "tests/unit/mcp/tools-atlas.test.ts", + "tests/unit/mcp/tools-budget-advanced.test.ts", + "tests/unit/mcp/tools-budget.test.ts", + "tests/unit/mcp/tools-categories.test.ts", + "tests/unit/mcp/tools-collab-polls-chat.test.ts", + "tests/unit/mcp/tools-collections.test.ts", + "tests/unit/mcp/tools-days-accommodations.test.ts", + "tests/unit/mcp/tools-days.test.ts", + "tests/unit/mcp/tools-feeds-invite.test.ts", + "tests/unit/mcp/tools-files.test.ts", + "tests/unit/mcp/tools-help-addons.test.ts", + "tests/unit/mcp/tools-journey.test.ts", + "tests/unit/mcp/tools-leg-transport-mode.test.ts", + "tests/unit/mcp/tools-memories.test.ts", + "tests/unit/mcp/tools-notes.test.ts", + "tests/unit/mcp/tools-notifications.test.ts", + "tests/unit/mcp/tools-packing-advanced.test.ts", + "tests/unit/mcp/tools-packing.test.ts", + "tests/unit/mcp/tools-places.test.ts", + "tests/unit/mcp/tools-plugin-pois.test.ts", + "tests/unit/mcp/tools-plugin-search.test.ts", + "tests/unit/mcp/tools-prompts.test.ts", + "tests/unit/mcp/tools-reservations.test.ts", + "tests/unit/mcp/tools-roadtrip.test.ts", + "tests/unit/mcp/tools-settings.test.ts", + "tests/unit/mcp/tools-share.test.ts", + "tests/unit/mcp/tools-tags-maps-weather.test.ts", + "tests/unit/mcp/tools-todos.test.ts", + "tests/unit/mcp/tools-transit.test.ts", + "tests/unit/mcp/tools-transports.test.ts", + "tests/unit/mcp/tools-trip-members.test.ts", + "tests/unit/mcp/tools-trip-warnings.test.ts", + "tests/unit/mcp/tools-trips.test.ts", + "tests/unit/mcp/tools-vacay.test.ts", + "tests/unit/middleware/globalMiddleware.correlation.test.ts", + "tests/unit/middleware/globalMiddleware.cors.test.ts", + "tests/unit/middleware/globalMiddleware.csp.test.ts", + "tests/unit/middleware/globalMiddleware.redaction.test.ts", + "tests/unit/nest-mcp/attach.test.ts", + "tests/unit/nest-mcp/create-test-registry.test.ts", + "tests/unit/nest-mcp/dynamic-tools.test.ts", + "tests/unit/nest/accommodations.controller.test.ts", + "tests/unit/nest/accommodations.service.test.ts", + "tests/unit/nest/addon-guard.test.ts", + "tests/unit/nest/addons.controller.test.ts", + "tests/unit/nest/addons.service.test.ts", + "tests/unit/nest/admin-default-user-settings.controller.test.ts", + "tests/unit/nest/admin-jobs.test.ts", + "tests/unit/nest/admin-notification-preferences.controller.test.ts", + "tests/unit/nest/admin-packing-templates.controller.test.ts", + "tests/unit/nest/admin.controller.test.ts", + "tests/unit/nest/admin.service.test.ts", + "tests/unit/nest/admin.version-notification.test.ts", + "tests/unit/nest/airports.controller.test.ts", + "tests/unit/nest/airports/airports.data.test.ts", + "tests/unit/nest/airports/airports.service.test.ts", + "tests/unit/nest/airtrail-sync.job.test.ts", + "tests/unit/nest/airtrail.service.test.ts", + "tests/unit/nest/app-clock.test.ts", + "tests/unit/nest/app-config.test.ts", + "tests/unit/nest/assignments.controller.test.ts", + "tests/unit/nest/assignments.service.test.ts", + "tests/unit/nest/atlas-transfer-endpoints.test.ts", + "tests/unit/nest/atlas-visit-dates.test.ts", + "tests/unit/nest/atlas.controller.test.ts", + "tests/unit/nest/atlas.service.test.ts", + "tests/unit/nest/audit-log.logger.test.ts", + "tests/unit/nest/audit.service.test.ts", + "tests/unit/nest/auth-guard.test.ts", + "tests/unit/nest/auth.controller.test.ts", + "tests/unit/nest/auth.helpers.test.ts", + "tests/unit/nest/auth.service.test.ts", + "tests/unit/nest/auth/jwt-verify.test.ts", + "tests/unit/nest/auth/sessions.controller.test.ts", + "tests/unit/nest/auto-backup-settings.test.ts", + "tests/unit/nest/backup-archive-version.test.ts", + "tests/unit/nest/backup.controller.test.ts", + "tests/unit/nest/backup.impl.test.ts", + "tests/unit/nest/booking-import/booking-import.service.test.ts", + "tests/unit/nest/booking-import/import-jobs.service.test.ts", + "tests/unit/nest/booking-import/kitinerary-extractor.service.test.ts", + "tests/unit/nest/booking-import/reservation-import.controller.test.ts", + "tests/unit/nest/boot-restore.test.ts", + "tests/unit/nest/budget.controller.test.ts", + "tests/unit/nest/budget.service.calc.test.ts", + "tests/unit/nest/budget.service.db.test.ts", + "tests/unit/nest/budget.service.test.ts", + "tests/unit/nest/cache-sweep-jobs.test.ts", + "tests/unit/nest/calendar.service.test.ts", + "tests/unit/nest/categories.controller.test.ts", + "tests/unit/nest/categories.service.test.ts", + "tests/unit/nest/channel-override.test.ts", + "tests/unit/nest/channel-registry.test.ts", + "tests/unit/nest/charging.test.ts", + "tests/unit/nest/city-from-address.test.ts", + "tests/unit/nest/collab.controller.test.ts", + "tests/unit/nest/collab.service.test.ts", + "tests/unit/nest/collection-gpx.helpers.test.ts", + "tests/unit/nest/collections.controller.test.ts", + "tests/unit/nest/collections.service.test.ts", + "tests/unit/nest/common/request-correlation.test.ts", + "tests/unit/nest/common/row-id.test.ts", + "tests/unit/nest/common/rowShape.test.ts", + "tests/unit/nest/compare.test.ts", + "tests/unit/nest/config.controller.test.ts", + "tests/unit/nest/content-disposition.test.ts", + "tests/unit/nest/cron-registrar.service.test.ts", + "tests/unit/nest/database/database-lifecycle.service.test.ts", + "tests/unit/nest/database/request-context.test.ts", + "tests/unit/nest/database/unit-of-work.d5.test.ts", + "tests/unit/nest/database/unit-of-work.test.ts", + "tests/unit/nest/dawarich-suggestions.service.test.ts", + "tests/unit/nest/dawarich-sync.job.test.ts", + "tests/unit/nest/dawarich-sync.service.test.ts", + "tests/unit/nest/dawarich-tracks.service.test.ts", + "tests/unit/nest/dawarich.client.test.ts", + "tests/unit/nest/dawarich.controller.test.ts", + "tests/unit/nest/dawarich.helpers.test.ts", + "tests/unit/nest/dawarich.mcp.test.ts", + "tests/unit/nest/dawarich.service.test.ts", + "tests/unit/nest/day-boundaries.test.ts", + "tests/unit/nest/day-notes.service.test.ts", + "tests/unit/nest/day-removal.service.test.ts", + "tests/unit/nest/days.controller.test.ts", + "tests/unit/nest/days.service.test.ts", + "tests/unit/nest/demo-service-survivor-sites.test.ts", + "tests/unit/nest/demo-write.test.ts", + "tests/unit/nest/demo.service.test.ts", + "tests/unit/nest/discovery.controller.test.ts", + "tests/unit/nest/doc-sync/doc-sync-config.service.test.ts", + "tests/unit/nest/doc-sync/doc-sync-webhook.controller.test.ts", + "tests/unit/nest/doc-sync/doc-sync.controller.test.ts", + "tests/unit/nest/doc-sync/doc-sync.helpers.test.ts", + "tests/unit/nest/doc-sync/doc-sync.job.test.ts", + "tests/unit/nest/doc-sync/doc-sync.mcp.test.ts", + "tests/unit/nest/doc-sync/doc-sync.service.test.ts", + "tests/unit/nest/doc-sync/paperless.provider.test.ts", + "tests/unit/nest/doc-sync/papra.provider.test.ts", + "tests/unit/nest/doc-sync/provider-http.test.ts", + "tests/unit/nest/doc-sync/synology-drive.provider.test.ts", + "tests/unit/nest/doc-sync/webdav.provider.test.ts", + "tests/unit/nest/entry-trace.logger.test.ts", + "tests/unit/nest/exception-filter.test.ts", + "tests/unit/nest/exchange-rates.service.test.ts", + "tests/unit/nest/features.controller.test.ts", + "tests/unit/nest/feeds.service.test.ts", + "tests/unit/nest/files.controller.test.ts", + "tests/unit/nest/files.service.test.ts", + "tests/unit/nest/files/upload-filters.test.ts", + "tests/unit/nest/geo.nominatim.test.ts", + "tests/unit/nest/google-quota.service.test.ts", + "tests/unit/nest/google-route.test.ts", + "tests/unit/nest/google-transit.provider.test.ts", + "tests/unit/nest/gpx-export.helpers.test.ts", + "tests/unit/nest/idempotency.interceptor.test.ts", + "tests/unit/nest/immich.service.test.ts", + "tests/unit/nest/journey-book.service.test.ts", + "tests/unit/nest/journey-domain.service.test.ts", + "tests/unit/nest/journey-photo-capture.service.test.ts", + "tests/unit/nest/journey-share.service.test.ts", + "tests/unit/nest/journey-stats-trips.test.ts", + "tests/unit/nest/journey-stats.service.test.ts", + "tests/unit/nest/journey-stats.test.ts", + "tests/unit/nest/journey.controller.test.ts", + "tests/unit/nest/llm-parse/clients.test.ts", + "tests/unit/nest/llm-parse/currency-code.test.ts", + "tests/unit/nest/llm-parse/extraction-router.test.ts", + "tests/unit/nest/llm-parse/image-input.test.ts", + "tests/unit/nest/llm-parse/lenient-json.test.ts", + "tests/unit/nest/llm-parse/llm-capabilities.controller.test.ts", + "tests/unit/nest/llm-parse/llm-client.factory.test.ts", + "tests/unit/nest/llm-parse/llm-config.resolver.test.ts", + "tests/unit/nest/llm-parse/llm-config.test.ts", + "tests/unit/nest/llm-parse/llm-local.service.test.ts", + "tests/unit/nest/llm-parse/llm-parse.service.test.ts", + "tests/unit/nest/llm-parse/llm-prompt.test.ts", + "tests/unit/nest/llm-parse/mime-email.test.ts", + "tests/unit/nest/llm-parse/nuextract.test.ts", + "tests/unit/nest/llm-parse/ollama-format.client.test.ts", + "tests/unit/nest/llm-parse/receipt-read.test.ts", + "tests/unit/nest/llm-parse/text-extract.test.ts", + "tests/unit/nest/log-file.test.ts", + "tests/unit/nest/mailer.service.test.ts", + "tests/unit/nest/managed-ext.test.ts", + "tests/unit/nest/managed-inert.test.ts", + "tests/unit/nest/managed-keys.test.ts", + "tests/unit/nest/managed.guard.test.ts", + "tests/unit/nest/managed.test.ts", + "tests/unit/nest/maps-dir.helpers.test.ts", + "tests/unit/nest/maps.amap.test.ts", + "tests/unit/nest/maps.area.test.ts", + "tests/unit/nest/maps.autocomplete.test.ts", + "tests/unit/nest/maps.controller.test.ts", + "tests/unit/nest/maps.curated-images.test.ts", + "tests/unit/nest/maps.geocode.test.ts", + "tests/unit/nest/maps.gers-details.test.ts", + "tests/unit/nest/maps.google-quota.test.ts", + "tests/unit/nest/maps.helpers.test.ts", + "tests/unit/nest/maps.identity.test.ts", + "tests/unit/nest/maps.merge-search.test.ts", + "tests/unit/nest/maps.nearby.test.ts", + "tests/unit/nest/maps.pois.test.ts", + "tests/unit/nest/maps.search-merge.test.ts", + "tests/unit/nest/maps.service.test.ts", + "tests/unit/nest/mcp-addon-gate.test.ts", + "tests/unit/nest/mcp-gated-addons.parity.test.ts", + "tests/unit/nest/mcp-shared.service.test.ts", + "tests/unit/nest/mcp-transport.service.test.ts", + "tests/unit/nest/memories-access.service.test.ts", + "tests/unit/nest/memories.controller.test.ts", + "tests/unit/nest/memories.helpers.test.ts", + "tests/unit/nest/memories.service.test.ts", + "tests/unit/nest/memories/journey-thumbs.job.test.ts", + "tests/unit/nest/memories/trek-photo-cache.job.test.ts", + "tests/unit/nest/mfa-policy.guard.test.ts", + "tests/unit/nest/notification-preferences.service.test.ts", + "tests/unit/nest/notification-transports.test.ts", + "tests/unit/nest/notifications.controller.test.ts", + "tests/unit/nest/notifications.inapp-prefs.test.ts", + "tests/unit/nest/notifications.service.test.ts", + "tests/unit/nest/notifications/in-app-actions.test.ts", + "tests/unit/nest/notifications/push-subscriptions.service.test.ts", + "tests/unit/nest/notifications/push.controller.test.ts", + "tests/unit/nest/notifications/replica-failure-debouncer.test.ts", + "tests/unit/nest/notifications/storage-health-notifier.service.test.ts", + "tests/unit/nest/notifications/vapid-keys.service.test.ts", + "tests/unit/nest/notifications/web-push-crypto.test.ts", + "tests/unit/nest/notifications/web-push-dispatch.test.ts", + "tests/unit/nest/notifications/web-push.service.test.ts", + "tests/unit/nest/oauth-redirect-uri.test.ts", + "tests/unit/nest/oauth-sdk.provider.test.ts", + "tests/unit/nest/oauth-token-retention.job.test.ts", + "tests/unit/nest/oauth.controller.test.ts", + "tests/unit/nest/oauth.service.test.ts", + "tests/unit/nest/oidc-ssrf.test.ts", + "tests/unit/nest/oidc.controller.test.ts", + "tests/unit/nest/oidc.service.test.ts", + "tests/unit/nest/packing.controller.test.ts", + "tests/unit/nest/packing.service.test.ts", + "tests/unit/nest/passkey.service.test.ts", + "tests/unit/nest/permissions.service.test.ts", + "tests/unit/nest/photo-capture-backfill.exif.test.ts", + "tests/unit/nest/photo-capture-backfill.service.test.ts", + "tests/unit/nest/photo-provider.test.ts", + "tests/unit/nest/photo-resolver.service.test.ts", + "tests/unit/nest/place-enrichment.brand.test.ts", + "tests/unit/nest/place-enrichment.controller.test.ts", + "tests/unit/nest/place-enrichment.description.test.ts", + "tests/unit/nest/place-enrichment.service.test.ts", + "tests/unit/nest/place-photos/place-photo-cache.job.test.ts", + "tests/unit/nest/place-photos/place-photo-cache.service.test.ts", + "tests/unit/nest/place-regions-repair.test.ts", + "tests/unit/nest/place-shadow.controller.test.ts", + "tests/unit/nest/place-shadow.job.test.ts", + "tests/unit/nest/place-shadow.service.test.ts", + "tests/unit/nest/places.controller.test.ts", + "tests/unit/nest/places.directions.test.ts", + "tests/unit/nest/places.enrichment.test.ts", + "tests/unit/nest/places.helpers.test.ts", + "tests/unit/nest/places.service.test.ts", + "tests/unit/nest/places/kml-import.helpers.test.ts", + "tests/unit/nest/platform.controller.test.ts", + "tests/unit/nest/process-state-ports.test.ts", + "tests/unit/nest/public-api-scopes.test.ts", + "tests/unit/nest/public-api.controller.test.ts", + "tests/unit/nest/public-api.guard.test.ts", + "tests/unit/nest/public-api.service.test.ts", + "tests/unit/nest/public-stats.controller.test.ts", + "tests/unit/nest/query-helpers.service.test.ts", + "tests/unit/nest/rate-limit.service.test.ts", + "tests/unit/nest/realtime.gateway.test.ts", + "tests/unit/nest/realtime.service.test.ts", + "tests/unit/nest/receipt-scan.controller.test.ts", + "tests/unit/nest/registration-invites.service.test.ts", + "tests/unit/nest/reminder-jobs.service.test.ts", + "tests/unit/nest/reservations.controller.test.ts", + "tests/unit/nest/reservations.service.test.ts", + "tests/unit/nest/roadtrip-hazards.test.ts", + "tests/unit/nest/roadtrip-mcp.helpers.test.ts", + "tests/unit/nest/roadtrip-plan.service.test.ts", + "tests/unit/nest/roadtrip-planning.test.ts", + "tests/unit/nest/roadtrip-read-tools.test.ts", + "tests/unit/nest/roadtrip-router.test.ts", + "tests/unit/nest/roadtrip-search.test.ts", + "tests/unit/nest/roadtrip.controller.test.ts", + "tests/unit/nest/roadtrip.service.test.ts", + "tests/unit/nest/route-inventory.test.ts", + "tests/unit/nest/route-usage.service.test.ts", + "tests/unit/nest/school-holidays.service.test.ts", + "tests/unit/nest/session-renewal.interceptor.test.ts", + "tests/unit/nest/sessions/session-purge.job.test.ts", + "tests/unit/nest/sessions/sessions.service.test.ts", + "tests/unit/nest/settings.controller.test.ts", + "tests/unit/nest/settings.service.test.ts", + "tests/unit/nest/settings/instance-api-keys.test.ts", + "tests/unit/nest/share-view.helpers.test.ts", + "tests/unit/nest/share.controller.test.ts", + "tests/unit/nest/share.service.test.ts", + "tests/unit/nest/smtp-diagnostics.test.ts", + "tests/unit/nest/spool-cleanup.interceptor.test.ts", + "tests/unit/nest/sqlite-database-backup.test.ts", + "tests/unit/nest/storage/content-type.test.ts", + "tests/unit/nest/storage/http-serving.test.ts", + "tests/unit/nest/storage/local.driver.test.ts", + "tests/unit/nest/storage/mirror-backfill.test.ts", + "tests/unit/nest/storage/mirror.driver.test.ts", + "tests/unit/nest/storage/s3.driver.contract.test.ts", + "tests/unit/nest/storage/s3.driver.test.ts", + "tests/unit/nest/storage/storage-admin.controller.test.ts", + "tests/unit/nest/storage/storage-admin.service.test.ts", + "tests/unit/nest/storage/storage-driver.contract.ts", + "tests/unit/nest/storage/storage-jobs.service.test.ts", + "tests/unit/nest/storage/storage-keys.test.ts", + "tests/unit/nest/storage/storage-probe.test.ts", + "tests/unit/nest/storage/storage-registry.service.test.ts", + "tests/unit/nest/storage/storage-secrets.test.ts", + "tests/unit/nest/storage/storage-stats.service.test.ts", + "tests/unit/nest/storage/storage-upload.factory.test.ts", + "tests/unit/nest/storage/storage-usage-scan.job.test.ts", + "tests/unit/nest/storage/storage.service.test.ts", + "tests/unit/nest/strip-html-tags.test.ts", + "tests/unit/nest/synology.service.test.ts", + "tests/unit/nest/system-notices.branch-coverage.test.ts", + "tests/unit/nest/system-notices.controller.test.ts", + "tests/unit/nest/system-notices.service.test.ts", + "tests/unit/nest/tags.controller.test.ts", + "tests/unit/nest/tags.service.test.ts", + "tests/unit/nest/thumbnail.service.test.ts", + "tests/unit/nest/to-client-user.parity.test.ts", + "tests/unit/nest/todo.controller.test.ts", + "tests/unit/nest/todo.service.test.ts", + "tests/unit/nest/token.service.test.ts", + "tests/unit/nest/tours.controller.test.ts", + "tests/unit/nest/tours.gpx.atomic.test.ts", + "tests/unit/nest/tours.permissions.boundaries.mock-only.test.ts", + "tests/unit/nest/tours.permissions.test.ts", + "tests/unit/nest/tours.service.permissions.test.ts", + "tests/unit/nest/tours.service.test.ts", + "tests/unit/nest/transit-itinerary.helpers.test.ts", + "tests/unit/nest/transit.service.test.ts", + "tests/unit/nest/travel-stats.service.test.ts", + "tests/unit/nest/trek-photo-cache.service.test.ts", + "tests/unit/nest/trek-photo-registration.service.test.ts", + "tests/unit/nest/trek-places.client.test.ts", + "tests/unit/nest/trek-ws-adapter.test.ts", + "tests/unit/nest/trip-access.guard.test.ts", + "tests/unit/nest/trip-invite.service.test.ts", + "tests/unit/nest/trip-members.controller.test.ts", + "tests/unit/nest/trip-members.service.test.ts", + "tests/unit/nest/trip-membership/trip-membership.service.test.ts", + "tests/unit/nest/trip-owner.guard.test.ts", + "tests/unit/nest/trip-read-model.service.test.ts", + "tests/unit/nest/trips.controller.test.ts", + "tests/unit/nest/trips.service.test.ts", + "tests/unit/nest/unified-memories.service.test.ts", + "tests/unit/nest/unsplash/unsplash.service.test.ts", + "tests/unit/nest/user-cleanup.service.test.ts", + "tests/unit/nest/user-profile.service.test.ts", + "tests/unit/nest/vacay.controller.test.ts", + "tests/unit/nest/vacay.service.test.ts", + "tests/unit/nest/validate-body-contracts.test.ts", + "tests/unit/nest/validate-managed-routes.test.ts", + "tests/unit/nest/weather.controller.test.ts", + "tests/unit/nest/weather/weather-cache-lifecycle.test.ts", + "tests/unit/nest/weather/weather.impl.test.ts", + "tests/unit/nest/webauthn-config.service.test.ts", + "tests/unit/nest/wiki.test.ts", + "tests/unit/nest/wiring.test.ts", + "tests/unit/nest/ws-bind-failure.test.ts", + "tests/unit/nest/zod-pipe.test.ts", + "tests/unit/packing/packing.rpc.test.ts", + "tests/unit/places/places.rpc.test.ts", + "tests/unit/plugins/addon-domains-errors.rpc.test.ts", + "tests/unit/plugins/addon-gates.rpc.test.ts", + "tests/unit/plugins/atlas-layers.controller.test.ts", + "tests/unit/plugins/daily-budget.test.ts", + "tests/unit/plugins/day-schedule.controller.test.ts", + "tests/unit/plugins/day-tints.controller.test.ts", + "tests/unit/plugins/dependencies.test.ts", + "tests/unit/plugins/discovery.test.ts", + "tests/unit/plugins/egress-policy.test.ts", + "tests/unit/plugins/event-facts.test.ts", + "tests/unit/plugins/event-subscriptions.test.ts", + "tests/unit/plugins/host-compat.test.ts", + "tests/unit/plugins/host-rpc.test.ts", + "tests/unit/plugins/journal-entry-rows.controller.test.ts", + "tests/unit/plugins/journal-photo.rpc.test.ts", + "tests/unit/plugins/manifest.test.ts", + "tests/unit/plugins/map-layers.controller.test.ts", + "tests/unit/plugins/map-markers.controller.test.ts", + "tests/unit/plugins/mcp-session-invalidation.test.ts", + "tests/unit/plugins/mcp-tool-annotations.test.ts", + "tests/unit/plugins/mcp-tool-enforcement.test.ts", + "tests/unit/plugins/mcp-tool-schema.test.ts", + "tests/unit/plugins/mcp-tool-sink.test.ts", + "tests/unit/plugins/native-scan.test.ts", + "tests/unit/plugins/operator-egress.test.ts", + "tests/unit/plugins/output-contract.schema.test.ts", + "tests/unit/plugins/output-contract.test.ts", + "tests/unit/plugins/pdf-sections.controller.test.ts", + "tests/unit/plugins/place-details.controller.test.ts", + "tests/unit/plugins/plugin-audit.test.ts", + "tests/unit/plugins/plugin-backup.test.ts", + "tests/unit/plugins/plugin-data.test.ts", + "tests/unit/plugins/plugin-event-meta.test.ts", + "tests/unit/plugins/plugin-frame.test.ts", + "tests/unit/plugins/plugin-guards.test.ts", + "tests/unit/plugins/plugin-hooks.test.ts", + "tests/unit/plugins/plugin-host-state.test.ts", + "tests/unit/plugins/plugin-instance-settings.test.ts", + "tests/unit/plugins/plugin-jobs.cron-compat.test.ts", + "tests/unit/plugins/plugin-jobs.test.ts", + "tests/unit/plugins/plugin-mcp-tools.test.ts", + "tests/unit/plugins/plugin-oauth.controller.test.ts", + "tests/unit/plugins/plugin-oauth.service.test.ts", + "tests/unit/plugins/plugin-photos-calendar.controller.test.ts", + "tests/unit/plugins/plugin-pois.test.ts", + "tests/unit/plugins/plugin-repository-sql-parity.test.ts", + "tests/unit/plugins/plugin-retrust.controller.test.ts", + "tests/unit/plugins/plugin-route-normalize.test.ts", + "tests/unit/plugins/plugin-routes.controller.test.ts", + "tests/unit/plugins/plugin-runtime.boot-no-orm.test.ts", + "tests/unit/plugins/plugin-sdk.test.ts", + "tests/unit/plugins/plugin-search.controller.test.ts", + "tests/unit/plugins/plugin-user-settings.controller.test.ts", + "tests/unit/plugins/plugin-user-settings.test.ts", + "tests/unit/plugins/plugins-controller-devlink.test.ts", + "tests/unit/plugins/plugins-feed.controller.test.ts", + "tests/unit/plugins/plugins-proxy.test.ts", + "tests/unit/plugins/plugins-service.test.ts", + "tests/unit/plugins/poi-categories.test.ts", + "tests/unit/plugins/protocol-paths.test.ts", + "tests/unit/plugins/provider-hook-grant.test.ts", + "tests/unit/plugins/rate-limit.test.ts", + "tests/unit/plugins/registry-preview.test.ts", + "tests/unit/plugins/request-context.test.ts", + "tests/unit/plugins/rpc-coverage.test.ts", + "tests/unit/plugins/rpc-fallbacks.test.ts", + "tests/unit/plugins/rpc-host-inv-strip.test.ts", + "tests/unit/plugins/rpc-host.test.ts", + "tests/unit/plugins/rpc-kit/decorators.test.ts", + "tests/unit/plugins/rpc-kit/metadata.test.ts", + "tests/unit/plugins/rpc-kit/registry.service.test.ts", + "tests/unit/plugins/rpc-kit/registry.test.ts", + "tests/unit/plugins/rpc-trace.test.ts", + "tests/unit/plugins/safe-extract.test.ts", + "tests/unit/plugins/safe-fetch.test.ts", + "tests/unit/plugins/settings-isolation.test.ts", + "tests/unit/plugins/sql-script.test.ts", + "tests/unit/plugins/supervisor-lifecycle.test.ts", + "tests/unit/plugins/tenant-free.rpc.test.ts", + "tests/unit/plugins/text-sanitize.test.ts", + "tests/unit/plugins/trip-card-contributions.controller.test.ts", + "tests/unit/plugins/trip-warnings.controller.test.ts", + "tests/unit/plugins/verify-signature.test.ts", + "tests/unit/plugins/view-contributions.controller.test.ts", + "tests/unit/reservations/bookings.rpc.test.ts", + "tests/unit/scripts/db-call-graph.test.ts", + "tests/unit/scripts/dialect-lint.test.ts", + "tests/unit/scripts/pg-probe/arg-samples.test.ts", + "tests/unit/scripts/pg-probe/baseline.test.ts", + "tests/unit/scripts/pg-probe/helper-cases.test.ts", + "tests/unit/scripts/pg-probe/recorder.test.ts", + "tests/unit/scripts/pg-probe/report.test.ts", + "tests/unit/scripts/pg-probe/schema.test.ts", + "tests/unit/scripts/test-sql-ratchet.test.ts", + "tests/unit/scripts/tx-writes.test.ts", + "tests/unit/services/airtrailImport.test.ts", + "tests/unit/services/airtrailMapper.test.ts", + "tests/unit/services/airtrailSync.test.ts", + "tests/unit/services/airtrailTestConnection.test.ts", + "tests/unit/services/airtrailWriteGate.test.ts", + "tests/unit/services/airtrailWriteback.test.ts", + "tests/unit/services/apiKeyCrypto.test.ts", + "tests/unit/services/atlasBundle.test.ts", + "tests/unit/services/avatarUrl.test.ts", + "tests/unit/services/conflictUpdate.test.ts", + "tests/unit/services/cookie.test.ts", + "tests/unit/services/kitineraryMapper.test.ts", + "tests/unit/services/mfaCrypto.test.ts", + "tests/unit/services/migration.test.ts", + "tests/unit/services/passwordPolicy.test.ts", + "tests/unit/services/trekPhotoMedia.test.ts", + "tests/unit/services/trimUserWhitespace.test.ts", + "tests/unit/shared-contract.test.ts", + "tests/unit/shutdown.test.ts", + "tests/unit/systemNotices/conditions.test.ts", + "tests/unit/systemNotices/registry.test.ts", + "tests/unit/systemNotices/versionRange.test.ts", + "tests/unit/tags/tags.rpc.test.ts", + "tests/unit/todo/todo.rpc.test.ts", + "tests/unit/trips/trips.rpc.test.ts", + "tests/unit/uploads-dirs.test.ts", + "tests/unit/utils/cappedFetch.test.ts", + "tests/unit/utils/ipv6.test.ts", + "tests/unit/utils/ssrf-dual-stack.test.ts", + "tests/unit/utils/ssrf-llm-timeout.test.ts", + "tests/unit/utils/ssrf-proxy.test.ts", + "tests/unit/utils/ssrf-response-limits.test.ts", + "tests/unit/utils/ssrfGuard.test.ts", + "tests/websocket/connection.test.ts", + "tests/websocket/wire-envelope.test.ts" +] diff --git a/server/scripts/format-lint.mjs b/server/scripts/format-lint.mjs new file mode 100644 index 000000000..29959574f --- /dev/null +++ b/server/scripts/format-lint.mjs @@ -0,0 +1,38 @@ +#!/usr/bin/env node +/* + * lint:format: new server code is formatted with Prettier. + * + * `npm run format:check` was never part of CI, and most files differ from what + * .prettierrc asks for. Formatting all of them belongs in one mechanical + * commit of its own; until it lands, the files that were unformatted when + * this check came in are listed in scripts/format-baseline.json and the list + * only shrinks: every file outside it, a new one in particular, must be + * formatted, and a listed file leaves the list once it has been. After the + * mass reformat, --update empties the list and the check is a plain + * prettier --check over src/ and tests/. + * + * npm run lint:format check against the baseline (CI) + * npm run lint:format -- --list print every unformatted file + * npm run lint:format -- --update take formatted and deleted files off the list; + * it never adds one + * + * To format a file: npx prettier --write . The comparison lives in + * scripts/lib/format.mjs at the repository root; Prettier and its config come + * from this workspace. + */ +import { fileURLToPath } from 'node:url'; +import * as prettier from 'prettier'; +import { check } from '../../scripts/lib/format.mjs'; +import { runCli } from '../../scripts/lib/ratchet.mjs'; + +const root = fileURLToPath(new URL('..', import.meta.url)); +await runCli('lint:format', (args) => + check({ + prettier, + root, + dirs: ['src', 'tests'], + accepts: (key) => key.endsWith('.ts'), + update: args.includes('--update'), + list: args.includes('--list'), + }), +); diff --git a/server/scripts/generate-db-types.ts b/server/scripts/generate-db-types.ts index 71a8c2a3b..d88bcfe92 100644 --- a/server/scripts/generate-db-types.ts +++ b/server/scripts/generate-db-types.ts @@ -114,12 +114,17 @@ function propertyKey(name: string): string { export function renderTable(table: TableInfo): string { const types = table.columns.map((c) => columnType(table, c)); const has = (marker: string) => types.some((t) => t.startsWith(`${marker}<`)); - const imports = - (has('GeneratedAlways') ? "import type { GeneratedAlways } from 'kysely';\n" : '') + - (has('InsertOptional') ? "import type { InsertOptional } from './columns';\n" : ''); - const importBlock = imports === '' ? '' : `${imports}\n`; + // Laid out the way the server's Prettier import sorting leaves them, so the + // output passes lint:format as written: the relative import first, one blank + // line between the groups, and the header comment on the first import with + // no blank line after it. A file without imports keeps its blank line. + const groups = [ + has('InsertOptional') ? "import type { InsertOptional } from './columns';\n" : '', + has('GeneratedAlways') ? "import type { GeneratedAlways } from 'kysely';\n" : '', + ].filter((group) => group !== ''); + const importBlock = groups.length === 0 ? '\n' : `${groups.join('\n')}\n`; const body = table.columns.map((c, i) => ` ${propertyKey(c.name)}: ${types[i]};`).join('\n'); - return `${HEADER}\n${importBlock}export interface ${interfaceName(table.name)} {\n${body}\n}\n`; + return `${HEADER}${importBlock}export interface ${interfaceName(table.name)} {\n${body}\n}\n`; } /** @@ -132,7 +137,7 @@ export function renderTable(table: TableInfo): string { */ export function renderColumns(): string { return ( - `${HEADER}\nimport type { ColumnType } from 'kysely';\n\n` + + `${HEADER}import type { ColumnType } from 'kysely';\n\n` + '/** A column an insert may leave out: the database assigns it (rowid, DEFAULT) or stores NULL. */\n' + 'export type InsertOptional = ColumnType;\n' ); @@ -145,7 +150,7 @@ export function renderDb(tables: readonly TableInfo[]): string { .join('\n'); const body = tables.map((t) => ` ${propertyKey(t.name)}: ${interfaceName(t.name)};`).join('\n'); return ( - `${HEADER}\n${imports}\n\n` + + `${HEADER}${imports}\n\n` + '/** Every table of the migrated schema. A repository narrows it: `this.kysely>()`. */\n' + `export interface DB {\n${body}\n}\n` ); diff --git a/server/src/db/kysely/Addons.table.ts b/server/src/db/kysely/Addons.table.ts index df4438cb2..d24e60a64 100644 --- a/server/src/db/kysely/Addons.table.ts +++ b/server/src/db/kysely/Addons.table.ts @@ -1,6 +1,5 @@ // Generated by scripts/generate-db-types.ts from the migrated schema. Do not edit by hand: // change the migration, then run `npm run gen:db-types`. - import type { InsertOptional } from './columns'; export interface AddonsTable { diff --git a/server/src/db/kysely/AppSettings.table.ts b/server/src/db/kysely/AppSettings.table.ts index d56f040fa..d7e5c0432 100644 --- a/server/src/db/kysely/AppSettings.table.ts +++ b/server/src/db/kysely/AppSettings.table.ts @@ -1,6 +1,5 @@ // Generated by scripts/generate-db-types.ts from the migrated schema. Do not edit by hand: // change the migration, then run `npm run gen:db-types`. - import type { InsertOptional } from './columns'; export interface AppSettingsTable { diff --git a/server/src/db/kysely/AssignmentParticipants.table.ts b/server/src/db/kysely/AssignmentParticipants.table.ts index 7e10f9466..0a8ded2d6 100644 --- a/server/src/db/kysely/AssignmentParticipants.table.ts +++ b/server/src/db/kysely/AssignmentParticipants.table.ts @@ -1,6 +1,5 @@ // Generated by scripts/generate-db-types.ts from the migrated schema. Do not edit by hand: // change the migration, then run `npm run gen:db-types`. - import type { InsertOptional } from './columns'; export interface AssignmentParticipantsTable { diff --git a/server/src/db/kysely/AuditLog.table.ts b/server/src/db/kysely/AuditLog.table.ts index 65d7b3525..479bf5ed1 100644 --- a/server/src/db/kysely/AuditLog.table.ts +++ b/server/src/db/kysely/AuditLog.table.ts @@ -1,6 +1,5 @@ // Generated by scripts/generate-db-types.ts from the migrated schema. Do not edit by hand: // change the migration, then run `npm run gen:db-types`. - import type { InsertOptional } from './columns'; export interface AuditLogTable { diff --git a/server/src/db/kysely/BucketList.table.ts b/server/src/db/kysely/BucketList.table.ts index a03e07f05..1505ce04a 100644 --- a/server/src/db/kysely/BucketList.table.ts +++ b/server/src/db/kysely/BucketList.table.ts @@ -1,6 +1,5 @@ // Generated by scripts/generate-db-types.ts from the migrated schema. Do not edit by hand: // change the migration, then run `npm run gen:db-types`. - import type { InsertOptional } from './columns'; export interface BucketListTable { diff --git a/server/src/db/kysely/BudgetCategoryOrder.table.ts b/server/src/db/kysely/BudgetCategoryOrder.table.ts index 1bb0f4000..1b59c6ef1 100644 --- a/server/src/db/kysely/BudgetCategoryOrder.table.ts +++ b/server/src/db/kysely/BudgetCategoryOrder.table.ts @@ -1,6 +1,5 @@ // Generated by scripts/generate-db-types.ts from the migrated schema. Do not edit by hand: // change the migration, then run `npm run gen:db-types`. - import type { InsertOptional } from './columns'; export interface BudgetCategoryOrderTable { diff --git a/server/src/db/kysely/BudgetItemMembers.table.ts b/server/src/db/kysely/BudgetItemMembers.table.ts index d50b77f0e..45dcd738f 100644 --- a/server/src/db/kysely/BudgetItemMembers.table.ts +++ b/server/src/db/kysely/BudgetItemMembers.table.ts @@ -1,6 +1,5 @@ // Generated by scripts/generate-db-types.ts from the migrated schema. Do not edit by hand: // change the migration, then run `npm run gen:db-types`. - import type { InsertOptional } from './columns'; export interface BudgetItemMembersTable { diff --git a/server/src/db/kysely/BudgetItemPayers.table.ts b/server/src/db/kysely/BudgetItemPayers.table.ts index ce0128708..842473b64 100644 --- a/server/src/db/kysely/BudgetItemPayers.table.ts +++ b/server/src/db/kysely/BudgetItemPayers.table.ts @@ -1,6 +1,5 @@ // Generated by scripts/generate-db-types.ts from the migrated schema. Do not edit by hand: // change the migration, then run `npm run gen:db-types`. - import type { InsertOptional } from './columns'; export interface BudgetItemPayersTable { diff --git a/server/src/db/kysely/BudgetItems.table.ts b/server/src/db/kysely/BudgetItems.table.ts index 34d595e3c..6ffbd5ea4 100644 --- a/server/src/db/kysely/BudgetItems.table.ts +++ b/server/src/db/kysely/BudgetItems.table.ts @@ -1,6 +1,5 @@ // Generated by scripts/generate-db-types.ts from the migrated schema. Do not edit by hand: // change the migration, then run `npm run gen:db-types`. - import type { InsertOptional } from './columns'; export interface BudgetItemsTable { diff --git a/server/src/db/kysely/BudgetSettlements.table.ts b/server/src/db/kysely/BudgetSettlements.table.ts index 15cc0c32b..7dd6c7e33 100644 --- a/server/src/db/kysely/BudgetSettlements.table.ts +++ b/server/src/db/kysely/BudgetSettlements.table.ts @@ -1,6 +1,5 @@ // Generated by scripts/generate-db-types.ts from the migrated schema. Do not edit by hand: // change the migration, then run `npm run gen:db-types`. - import type { InsertOptional } from './columns'; export interface BudgetSettlementsTable { diff --git a/server/src/db/kysely/Categories.table.ts b/server/src/db/kysely/Categories.table.ts index eb6fd89b4..bf78bb429 100644 --- a/server/src/db/kysely/Categories.table.ts +++ b/server/src/db/kysely/Categories.table.ts @@ -1,6 +1,5 @@ // Generated by scripts/generate-db-types.ts from the migrated schema. Do not edit by hand: // change the migration, then run `npm run gen:db-types`. - import type { InsertOptional } from './columns'; export interface CategoriesTable { diff --git a/server/src/db/kysely/CollabLinks.table.ts b/server/src/db/kysely/CollabLinks.table.ts index 23cfd6c92..b2267abf6 100644 --- a/server/src/db/kysely/CollabLinks.table.ts +++ b/server/src/db/kysely/CollabLinks.table.ts @@ -1,6 +1,5 @@ // Generated by scripts/generate-db-types.ts from the migrated schema. Do not edit by hand: // change the migration, then run `npm run gen:db-types`. - import type { InsertOptional } from './columns'; export interface CollabLinksTable { diff --git a/server/src/db/kysely/CollabMessageReactions.table.ts b/server/src/db/kysely/CollabMessageReactions.table.ts index fc3f89cbb..7f5fea9f0 100644 --- a/server/src/db/kysely/CollabMessageReactions.table.ts +++ b/server/src/db/kysely/CollabMessageReactions.table.ts @@ -1,6 +1,5 @@ // Generated by scripts/generate-db-types.ts from the migrated schema. Do not edit by hand: // change the migration, then run `npm run gen:db-types`. - import type { InsertOptional } from './columns'; export interface CollabMessageReactionsTable { diff --git a/server/src/db/kysely/CollabMessages.table.ts b/server/src/db/kysely/CollabMessages.table.ts index 65625bd93..8c0e462c6 100644 --- a/server/src/db/kysely/CollabMessages.table.ts +++ b/server/src/db/kysely/CollabMessages.table.ts @@ -1,6 +1,5 @@ // Generated by scripts/generate-db-types.ts from the migrated schema. Do not edit by hand: // change the migration, then run `npm run gen:db-types`. - import type { InsertOptional } from './columns'; export interface CollabMessagesTable { diff --git a/server/src/db/kysely/CollabNotes.table.ts b/server/src/db/kysely/CollabNotes.table.ts index e460e182b..a3339ecf9 100644 --- a/server/src/db/kysely/CollabNotes.table.ts +++ b/server/src/db/kysely/CollabNotes.table.ts @@ -1,6 +1,5 @@ // Generated by scripts/generate-db-types.ts from the migrated schema. Do not edit by hand: // change the migration, then run `npm run gen:db-types`. - import type { InsertOptional } from './columns'; export interface CollabNotesTable { diff --git a/server/src/db/kysely/CollabPollVotes.table.ts b/server/src/db/kysely/CollabPollVotes.table.ts index 42dc6c2a0..8e4b1f4c1 100644 --- a/server/src/db/kysely/CollabPollVotes.table.ts +++ b/server/src/db/kysely/CollabPollVotes.table.ts @@ -1,6 +1,5 @@ // Generated by scripts/generate-db-types.ts from the migrated schema. Do not edit by hand: // change the migration, then run `npm run gen:db-types`. - import type { InsertOptional } from './columns'; export interface CollabPollVotesTable { diff --git a/server/src/db/kysely/CollabPolls.table.ts b/server/src/db/kysely/CollabPolls.table.ts index 03f43bdd2..357102f0a 100644 --- a/server/src/db/kysely/CollabPolls.table.ts +++ b/server/src/db/kysely/CollabPolls.table.ts @@ -1,6 +1,5 @@ // Generated by scripts/generate-db-types.ts from the migrated schema. Do not edit by hand: // change the migration, then run `npm run gen:db-types`. - import type { InsertOptional } from './columns'; export interface CollabPollsTable { diff --git a/server/src/db/kysely/CollectionLabels.table.ts b/server/src/db/kysely/CollectionLabels.table.ts index 14af8f7cf..f9bbc0735 100644 --- a/server/src/db/kysely/CollectionLabels.table.ts +++ b/server/src/db/kysely/CollectionLabels.table.ts @@ -1,6 +1,5 @@ // Generated by scripts/generate-db-types.ts from the migrated schema. Do not edit by hand: // change the migration, then run `npm run gen:db-types`. - import type { InsertOptional } from './columns'; export interface CollectionLabelsTable { diff --git a/server/src/db/kysely/CollectionMembers.table.ts b/server/src/db/kysely/CollectionMembers.table.ts index 0ff59e68c..6c53e5eef 100644 --- a/server/src/db/kysely/CollectionMembers.table.ts +++ b/server/src/db/kysely/CollectionMembers.table.ts @@ -1,6 +1,5 @@ // Generated by scripts/generate-db-types.ts from the migrated schema. Do not edit by hand: // change the migration, then run `npm run gen:db-types`. - import type { InsertOptional } from './columns'; export interface CollectionMembersTable { diff --git a/server/src/db/kysely/CollectionPlaceRatings.table.ts b/server/src/db/kysely/CollectionPlaceRatings.table.ts index 1ba572197..0e054bd66 100644 --- a/server/src/db/kysely/CollectionPlaceRatings.table.ts +++ b/server/src/db/kysely/CollectionPlaceRatings.table.ts @@ -1,6 +1,5 @@ // Generated by scripts/generate-db-types.ts from the migrated schema. Do not edit by hand: // change the migration, then run `npm run gen:db-types`. - import type { InsertOptional } from './columns'; export interface CollectionPlaceRatingsTable { diff --git a/server/src/db/kysely/CollectionPlaces.table.ts b/server/src/db/kysely/CollectionPlaces.table.ts index c5bf24028..0934ab7af 100644 --- a/server/src/db/kysely/CollectionPlaces.table.ts +++ b/server/src/db/kysely/CollectionPlaces.table.ts @@ -1,6 +1,5 @@ // Generated by scripts/generate-db-types.ts from the migrated schema. Do not edit by hand: // change the migration, then run `npm run gen:db-types`. - import type { InsertOptional } from './columns'; export interface CollectionPlacesTable { diff --git a/server/src/db/kysely/Collections.table.ts b/server/src/db/kysely/Collections.table.ts index 5fa248efd..42f954435 100644 --- a/server/src/db/kysely/Collections.table.ts +++ b/server/src/db/kysely/Collections.table.ts @@ -1,6 +1,5 @@ // Generated by scripts/generate-db-types.ts from the migrated schema. Do not edit by hand: // change the migration, then run `npm run gen:db-types`. - import type { InsertOptional } from './columns'; export interface CollectionsTable { diff --git a/server/src/db/kysely/DawarichConnections.table.ts b/server/src/db/kysely/DawarichConnections.table.ts index 25918b623..9773fa09d 100644 --- a/server/src/db/kysely/DawarichConnections.table.ts +++ b/server/src/db/kysely/DawarichConnections.table.ts @@ -1,6 +1,5 @@ // Generated by scripts/generate-db-types.ts from the migrated schema. Do not edit by hand: // change the migration, then run `npm run gen:db-types`. - import type { InsertOptional } from './columns'; export interface DawarichConnectionsTable { diff --git a/server/src/db/kysely/DawarichVisitSuggestions.table.ts b/server/src/db/kysely/DawarichVisitSuggestions.table.ts index dea3506f0..6b827e2b7 100644 --- a/server/src/db/kysely/DawarichVisitSuggestions.table.ts +++ b/server/src/db/kysely/DawarichVisitSuggestions.table.ts @@ -1,6 +1,5 @@ // Generated by scripts/generate-db-types.ts from the migrated schema. Do not edit by hand: // change the migration, then run `npm run gen:db-types`. - import type { InsertOptional } from './columns'; export interface DawarichVisitSuggestionsTable { diff --git a/server/src/db/kysely/DayAccommodations.table.ts b/server/src/db/kysely/DayAccommodations.table.ts index 4e1de741a..a118b0e11 100644 --- a/server/src/db/kysely/DayAccommodations.table.ts +++ b/server/src/db/kysely/DayAccommodations.table.ts @@ -1,6 +1,5 @@ // Generated by scripts/generate-db-types.ts from the migrated schema. Do not edit by hand: // change the migration, then run `npm run gen:db-types`. - import type { InsertOptional } from './columns'; export interface DayAccommodationsTable { diff --git a/server/src/db/kysely/DayAssignments.table.ts b/server/src/db/kysely/DayAssignments.table.ts index c94e1c30a..d75d832c5 100644 --- a/server/src/db/kysely/DayAssignments.table.ts +++ b/server/src/db/kysely/DayAssignments.table.ts @@ -1,6 +1,5 @@ // Generated by scripts/generate-db-types.ts from the migrated schema. Do not edit by hand: // change the migration, then run `npm run gen:db-types`. - import type { InsertOptional } from './columns'; export interface DayAssignmentsTable { diff --git a/server/src/db/kysely/DayNotes.table.ts b/server/src/db/kysely/DayNotes.table.ts index b21dd6562..2717959c9 100644 --- a/server/src/db/kysely/DayNotes.table.ts +++ b/server/src/db/kysely/DayNotes.table.ts @@ -1,6 +1,5 @@ // Generated by scripts/generate-db-types.ts from the migrated schema. Do not edit by hand: // change the migration, then run `npm run gen:db-types`. - import type { InsertOptional } from './columns'; export interface DayNotesTable { diff --git a/server/src/db/kysely/Days.table.ts b/server/src/db/kysely/Days.table.ts index 63463d3e8..7254ff50b 100644 --- a/server/src/db/kysely/Days.table.ts +++ b/server/src/db/kysely/Days.table.ts @@ -1,6 +1,5 @@ // Generated by scripts/generate-db-types.ts from the migrated schema. Do not edit by hand: // change the migration, then run `npm run gen:db-types`. - import type { InsertOptional } from './columns'; export interface DaysTable { diff --git a/server/src/db/kysely/DocumentConnections.table.ts b/server/src/db/kysely/DocumentConnections.table.ts index 4e59a03be..194fb001c 100644 --- a/server/src/db/kysely/DocumentConnections.table.ts +++ b/server/src/db/kysely/DocumentConnections.table.ts @@ -1,6 +1,5 @@ // Generated by scripts/generate-db-types.ts from the migrated schema. Do not edit by hand: // change the migration, then run `npm run gen:db-types`. - import type { InsertOptional } from './columns'; export interface DocumentConnectionsTable { diff --git a/server/src/db/kysely/DocumentProviderFields.table.ts b/server/src/db/kysely/DocumentProviderFields.table.ts index 36e2b1f21..a6b1d8d7b 100644 --- a/server/src/db/kysely/DocumentProviderFields.table.ts +++ b/server/src/db/kysely/DocumentProviderFields.table.ts @@ -1,6 +1,5 @@ // Generated by scripts/generate-db-types.ts from the migrated schema. Do not edit by hand: // change the migration, then run `npm run gen:db-types`. - import type { InsertOptional } from './columns'; export interface DocumentProviderFieldsTable { diff --git a/server/src/db/kysely/DocumentProviders.table.ts b/server/src/db/kysely/DocumentProviders.table.ts index 881118192..ad4a0c443 100644 --- a/server/src/db/kysely/DocumentProviders.table.ts +++ b/server/src/db/kysely/DocumentProviders.table.ts @@ -1,6 +1,5 @@ // Generated by scripts/generate-db-types.ts from the migrated schema. Do not edit by hand: // change the migration, then run `npm run gen:db-types`. - import type { InsertOptional } from './columns'; export interface DocumentProvidersTable { diff --git a/server/src/db/kysely/DocumentSyncItems.table.ts b/server/src/db/kysely/DocumentSyncItems.table.ts index c225686d4..e1a8d1e3b 100644 --- a/server/src/db/kysely/DocumentSyncItems.table.ts +++ b/server/src/db/kysely/DocumentSyncItems.table.ts @@ -1,6 +1,5 @@ // Generated by scripts/generate-db-types.ts from the migrated schema. Do not edit by hand: // change the migration, then run `npm run gen:db-types`. - import type { InsertOptional } from './columns'; export interface DocumentSyncItemsTable { diff --git a/server/src/db/kysely/FileLinks.table.ts b/server/src/db/kysely/FileLinks.table.ts index e3ccefc58..6429e26d7 100644 --- a/server/src/db/kysely/FileLinks.table.ts +++ b/server/src/db/kysely/FileLinks.table.ts @@ -1,6 +1,5 @@ // Generated by scripts/generate-db-types.ts from the migrated schema. Do not edit by hand: // change the migration, then run `npm run gen:db-types`. - import type { InsertOptional } from './columns'; export interface FileLinksTable { diff --git a/server/src/db/kysely/GoogleApiUsage.table.ts b/server/src/db/kysely/GoogleApiUsage.table.ts index 5ead69264..a726233db 100644 --- a/server/src/db/kysely/GoogleApiUsage.table.ts +++ b/server/src/db/kysely/GoogleApiUsage.table.ts @@ -1,6 +1,5 @@ // Generated by scripts/generate-db-types.ts from the migrated schema. Do not edit by hand: // change the migration, then run `npm run gen:db-types`. - import type { InsertOptional } from './columns'; export interface GoogleApiUsageTable { diff --git a/server/src/db/kysely/GooglePlacePhotoMeta.table.ts b/server/src/db/kysely/GooglePlacePhotoMeta.table.ts index 64ed515e2..4afc4c083 100644 --- a/server/src/db/kysely/GooglePlacePhotoMeta.table.ts +++ b/server/src/db/kysely/GooglePlacePhotoMeta.table.ts @@ -1,6 +1,5 @@ // Generated by scripts/generate-db-types.ts from the migrated schema. Do not edit by hand: // change the migration, then run `npm run gen:db-types`. - import type { InsertOptional } from './columns'; export interface GooglePlacePhotoMetaTable { diff --git a/server/src/db/kysely/HiddenCountries.table.ts b/server/src/db/kysely/HiddenCountries.table.ts index 554ed4a08..3655fa5f3 100644 --- a/server/src/db/kysely/HiddenCountries.table.ts +++ b/server/src/db/kysely/HiddenCountries.table.ts @@ -1,6 +1,5 @@ // Generated by scripts/generate-db-types.ts from the migrated schema. Do not edit by hand: // change the migration, then run `npm run gen:db-types`. - import type { InsertOptional } from './columns'; export interface HiddenCountriesTable { diff --git a/server/src/db/kysely/HiddenRegions.table.ts b/server/src/db/kysely/HiddenRegions.table.ts index fa3756261..df6dad012 100644 --- a/server/src/db/kysely/HiddenRegions.table.ts +++ b/server/src/db/kysely/HiddenRegions.table.ts @@ -1,6 +1,5 @@ // Generated by scripts/generate-db-types.ts from the migrated schema. Do not edit by hand: // change the migration, then run `npm run gen:db-types`. - import type { InsertOptional } from './columns'; export interface HiddenRegionsTable { diff --git a/server/src/db/kysely/IdempotencyKeys.table.ts b/server/src/db/kysely/IdempotencyKeys.table.ts index 2d037491a..4575e3a26 100644 --- a/server/src/db/kysely/IdempotencyKeys.table.ts +++ b/server/src/db/kysely/IdempotencyKeys.table.ts @@ -1,6 +1,5 @@ // Generated by scripts/generate-db-types.ts from the migrated schema. Do not edit by hand: // change the migration, then run `npm run gen:db-types`. - import type { InsertOptional } from './columns'; export interface IdempotencyKeysTable { diff --git a/server/src/db/kysely/InviteTokens.table.ts b/server/src/db/kysely/InviteTokens.table.ts index 81a86d9f3..287276a9f 100644 --- a/server/src/db/kysely/InviteTokens.table.ts +++ b/server/src/db/kysely/InviteTokens.table.ts @@ -1,6 +1,5 @@ // Generated by scripts/generate-db-types.ts from the migrated schema. Do not edit by hand: // change the migration, then run `npm run gen:db-types`. - import type { InsertOptional } from './columns'; export interface InviteTokensTable { diff --git a/server/src/db/kysely/JourneyBooks.table.ts b/server/src/db/kysely/JourneyBooks.table.ts index f4fb66857..359bcb1ef 100644 --- a/server/src/db/kysely/JourneyBooks.table.ts +++ b/server/src/db/kysely/JourneyBooks.table.ts @@ -1,6 +1,5 @@ // Generated by scripts/generate-db-types.ts from the migrated schema. Do not edit by hand: // change the migration, then run `npm run gen:db-types`. - import type { InsertOptional } from './columns'; export interface JourneyBooksTable { diff --git a/server/src/db/kysely/JourneyContributors.table.ts b/server/src/db/kysely/JourneyContributors.table.ts index 085a1d184..92197ebb8 100644 --- a/server/src/db/kysely/JourneyContributors.table.ts +++ b/server/src/db/kysely/JourneyContributors.table.ts @@ -1,6 +1,5 @@ // Generated by scripts/generate-db-types.ts from the migrated schema. Do not edit by hand: // change the migration, then run `npm run gen:db-types`. - import type { InsertOptional } from './columns'; export interface JourneyContributorsTable { diff --git a/server/src/db/kysely/JourneyEntries.table.ts b/server/src/db/kysely/JourneyEntries.table.ts index e7fac7cb7..8734f8f15 100644 --- a/server/src/db/kysely/JourneyEntries.table.ts +++ b/server/src/db/kysely/JourneyEntries.table.ts @@ -1,6 +1,5 @@ // Generated by scripts/generate-db-types.ts from the migrated schema. Do not edit by hand: // change the migration, then run `npm run gen:db-types`. - import type { InsertOptional } from './columns'; export interface JourneyEntriesTable { diff --git a/server/src/db/kysely/JourneyEntryPhotos.table.ts b/server/src/db/kysely/JourneyEntryPhotos.table.ts index e3674d6fd..f5aa2d678 100644 --- a/server/src/db/kysely/JourneyEntryPhotos.table.ts +++ b/server/src/db/kysely/JourneyEntryPhotos.table.ts @@ -1,6 +1,5 @@ // Generated by scripts/generate-db-types.ts from the migrated schema. Do not edit by hand: // change the migration, then run `npm run gen:db-types`. - import type { InsertOptional } from './columns'; export interface JourneyEntryPhotosTable { diff --git a/server/src/db/kysely/JourneyPhotos.table.ts b/server/src/db/kysely/JourneyPhotos.table.ts index a1a79ed27..59f717d24 100644 --- a/server/src/db/kysely/JourneyPhotos.table.ts +++ b/server/src/db/kysely/JourneyPhotos.table.ts @@ -1,6 +1,5 @@ // Generated by scripts/generate-db-types.ts from the migrated schema. Do not edit by hand: // change the migration, then run `npm run gen:db-types`. - import type { InsertOptional } from './columns'; export interface JourneyPhotosTable { diff --git a/server/src/db/kysely/JourneyShareTokens.table.ts b/server/src/db/kysely/JourneyShareTokens.table.ts index 45f7cca01..e110c0a90 100644 --- a/server/src/db/kysely/JourneyShareTokens.table.ts +++ b/server/src/db/kysely/JourneyShareTokens.table.ts @@ -1,6 +1,5 @@ // Generated by scripts/generate-db-types.ts from the migrated schema. Do not edit by hand: // change the migration, then run `npm run gen:db-types`. - import type { InsertOptional } from './columns'; export interface JourneyShareTokensTable { diff --git a/server/src/db/kysely/Journeys.table.ts b/server/src/db/kysely/Journeys.table.ts index d1572982e..d45c94341 100644 --- a/server/src/db/kysely/Journeys.table.ts +++ b/server/src/db/kysely/Journeys.table.ts @@ -1,6 +1,5 @@ // Generated by scripts/generate-db-types.ts from the migrated schema. Do not edit by hand: // change the migration, then run `npm run gen:db-types`. - import type { InsertOptional } from './columns'; export interface JourneysTable { diff --git a/server/src/db/kysely/McpTokens.table.ts b/server/src/db/kysely/McpTokens.table.ts index 73668e7a9..04f3e4d46 100644 --- a/server/src/db/kysely/McpTokens.table.ts +++ b/server/src/db/kysely/McpTokens.table.ts @@ -1,6 +1,5 @@ // Generated by scripts/generate-db-types.ts from the migrated schema. Do not edit by hand: // change the migration, then run `npm run gen:db-types`. - import type { InsertOptional } from './columns'; export interface McpTokensTable { diff --git a/server/src/db/kysely/Migrations.table.ts b/server/src/db/kysely/Migrations.table.ts index 270f8ed78..74b8dfc37 100644 --- a/server/src/db/kysely/Migrations.table.ts +++ b/server/src/db/kysely/Migrations.table.ts @@ -1,6 +1,5 @@ // Generated by scripts/generate-db-types.ts from the migrated schema. Do not edit by hand: // change the migration, then run `npm run gen:db-types`. - import type { InsertOptional } from './columns'; export interface MigrationsTable { diff --git a/server/src/db/kysely/NotificationChannelPreferences.table.ts b/server/src/db/kysely/NotificationChannelPreferences.table.ts index c0f3397e2..8c2b5eebb 100644 --- a/server/src/db/kysely/NotificationChannelPreferences.table.ts +++ b/server/src/db/kysely/NotificationChannelPreferences.table.ts @@ -1,6 +1,5 @@ // Generated by scripts/generate-db-types.ts from the migrated schema. Do not edit by hand: // change the migration, then run `npm run gen:db-types`. - import type { InsertOptional } from './columns'; export interface NotificationChannelPreferencesTable { diff --git a/server/src/db/kysely/Notifications.table.ts b/server/src/db/kysely/Notifications.table.ts index 33577e740..99cbe88cf 100644 --- a/server/src/db/kysely/Notifications.table.ts +++ b/server/src/db/kysely/Notifications.table.ts @@ -1,6 +1,5 @@ // Generated by scripts/generate-db-types.ts from the migrated schema. Do not edit by hand: // change the migration, then run `npm run gen:db-types`. - import type { InsertOptional } from './columns'; export interface NotificationsTable { diff --git a/server/src/db/kysely/OauthClients.table.ts b/server/src/db/kysely/OauthClients.table.ts index c9d054fe6..d2934b0fd 100644 --- a/server/src/db/kysely/OauthClients.table.ts +++ b/server/src/db/kysely/OauthClients.table.ts @@ -1,6 +1,5 @@ // Generated by scripts/generate-db-types.ts from the migrated schema. Do not edit by hand: // change the migration, then run `npm run gen:db-types`. - import type { InsertOptional } from './columns'; export interface OauthClientsTable { diff --git a/server/src/db/kysely/OauthConsents.table.ts b/server/src/db/kysely/OauthConsents.table.ts index 89487e2a4..c5f8b7275 100644 --- a/server/src/db/kysely/OauthConsents.table.ts +++ b/server/src/db/kysely/OauthConsents.table.ts @@ -1,6 +1,5 @@ // Generated by scripts/generate-db-types.ts from the migrated schema. Do not edit by hand: // change the migration, then run `npm run gen:db-types`. - import type { InsertOptional } from './columns'; export interface OauthConsentsTable { diff --git a/server/src/db/kysely/OauthTokens.table.ts b/server/src/db/kysely/OauthTokens.table.ts index 0e0f2bd68..f4360f268 100644 --- a/server/src/db/kysely/OauthTokens.table.ts +++ b/server/src/db/kysely/OauthTokens.table.ts @@ -1,6 +1,5 @@ // Generated by scripts/generate-db-types.ts from the migrated schema. Do not edit by hand: // change the migration, then run `npm run gen:db-types`. - import type { InsertOptional } from './columns'; export interface OauthTokensTable { diff --git a/server/src/db/kysely/PackingBags.table.ts b/server/src/db/kysely/PackingBags.table.ts index a241838a7..c16ab189b 100644 --- a/server/src/db/kysely/PackingBags.table.ts +++ b/server/src/db/kysely/PackingBags.table.ts @@ -1,6 +1,5 @@ // Generated by scripts/generate-db-types.ts from the migrated schema. Do not edit by hand: // change the migration, then run `npm run gen:db-types`. - import type { InsertOptional } from './columns'; export interface PackingBagsTable { diff --git a/server/src/db/kysely/PackingCategoryAssignees.table.ts b/server/src/db/kysely/PackingCategoryAssignees.table.ts index 9b153a8df..48419a4f0 100644 --- a/server/src/db/kysely/PackingCategoryAssignees.table.ts +++ b/server/src/db/kysely/PackingCategoryAssignees.table.ts @@ -1,6 +1,5 @@ // Generated by scripts/generate-db-types.ts from the migrated schema. Do not edit by hand: // change the migration, then run `npm run gen:db-types`. - import type { InsertOptional } from './columns'; export interface PackingCategoryAssigneesTable { diff --git a/server/src/db/kysely/PackingItemContributors.table.ts b/server/src/db/kysely/PackingItemContributors.table.ts index a2b08c4c0..6fa840b13 100644 --- a/server/src/db/kysely/PackingItemContributors.table.ts +++ b/server/src/db/kysely/PackingItemContributors.table.ts @@ -1,6 +1,5 @@ // Generated by scripts/generate-db-types.ts from the migrated schema. Do not edit by hand: // change the migration, then run `npm run gen:db-types`. - import type { InsertOptional } from './columns'; export interface PackingItemContributorsTable { diff --git a/server/src/db/kysely/PackingItems.table.ts b/server/src/db/kysely/PackingItems.table.ts index 95068f6d2..f6f02b9d2 100644 --- a/server/src/db/kysely/PackingItems.table.ts +++ b/server/src/db/kysely/PackingItems.table.ts @@ -1,6 +1,5 @@ // Generated by scripts/generate-db-types.ts from the migrated schema. Do not edit by hand: // change the migration, then run `npm run gen:db-types`. - import type { InsertOptional } from './columns'; export interface PackingItemsTable { diff --git a/server/src/db/kysely/PackingTemplateCategories.table.ts b/server/src/db/kysely/PackingTemplateCategories.table.ts index 8b782be7d..56670e14b 100644 --- a/server/src/db/kysely/PackingTemplateCategories.table.ts +++ b/server/src/db/kysely/PackingTemplateCategories.table.ts @@ -1,6 +1,5 @@ // Generated by scripts/generate-db-types.ts from the migrated schema. Do not edit by hand: // change the migration, then run `npm run gen:db-types`. - import type { InsertOptional } from './columns'; export interface PackingTemplateCategoriesTable { diff --git a/server/src/db/kysely/PackingTemplateItems.table.ts b/server/src/db/kysely/PackingTemplateItems.table.ts index 2af2b5a1d..9f2fa5581 100644 --- a/server/src/db/kysely/PackingTemplateItems.table.ts +++ b/server/src/db/kysely/PackingTemplateItems.table.ts @@ -1,6 +1,5 @@ // Generated by scripts/generate-db-types.ts from the migrated schema. Do not edit by hand: // change the migration, then run `npm run gen:db-types`. - import type { InsertOptional } from './columns'; export interface PackingTemplateItemsTable { diff --git a/server/src/db/kysely/PackingTemplates.table.ts b/server/src/db/kysely/PackingTemplates.table.ts index a1fac5c23..53b486dad 100644 --- a/server/src/db/kysely/PackingTemplates.table.ts +++ b/server/src/db/kysely/PackingTemplates.table.ts @@ -1,6 +1,5 @@ // Generated by scripts/generate-db-types.ts from the migrated schema. Do not edit by hand: // change the migration, then run `npm run gen:db-types`. - import type { InsertOptional } from './columns'; export interface PackingTemplatesTable { diff --git a/server/src/db/kysely/PasswordResetTokens.table.ts b/server/src/db/kysely/PasswordResetTokens.table.ts index 759d77345..c41b0d648 100644 --- a/server/src/db/kysely/PasswordResetTokens.table.ts +++ b/server/src/db/kysely/PasswordResetTokens.table.ts @@ -1,6 +1,5 @@ // Generated by scripts/generate-db-types.ts from the migrated schema. Do not edit by hand: // change the migration, then run `npm run gen:db-types`. - import type { InsertOptional } from './columns'; export interface PasswordResetTokensTable { diff --git a/server/src/db/kysely/PhotoProviderFields.table.ts b/server/src/db/kysely/PhotoProviderFields.table.ts index a02a97a1d..bf979f5cf 100644 --- a/server/src/db/kysely/PhotoProviderFields.table.ts +++ b/server/src/db/kysely/PhotoProviderFields.table.ts @@ -1,6 +1,5 @@ // Generated by scripts/generate-db-types.ts from the migrated schema. Do not edit by hand: // change the migration, then run `npm run gen:db-types`. - import type { InsertOptional } from './columns'; export interface PhotoProviderFieldsTable { diff --git a/server/src/db/kysely/PhotoProviders.table.ts b/server/src/db/kysely/PhotoProviders.table.ts index 42199a140..0b08dd9f3 100644 --- a/server/src/db/kysely/PhotoProviders.table.ts +++ b/server/src/db/kysely/PhotoProviders.table.ts @@ -1,6 +1,5 @@ // Generated by scripts/generate-db-types.ts from the migrated schema. Do not edit by hand: // change the migration, then run `npm run gen:db-types`. - import type { InsertOptional } from './columns'; export interface PhotoProvidersTable { diff --git a/server/src/db/kysely/Photos.table.ts b/server/src/db/kysely/Photos.table.ts index 5813c30df..a2c17676d 100644 --- a/server/src/db/kysely/Photos.table.ts +++ b/server/src/db/kysely/Photos.table.ts @@ -1,6 +1,5 @@ // Generated by scripts/generate-db-types.ts from the migrated schema. Do not edit by hand: // change the migration, then run `npm run gen:db-types`. - import type { InsertOptional } from './columns'; export interface PhotosTable { diff --git a/server/src/db/kysely/PlaceDetailsCache.table.ts b/server/src/db/kysely/PlaceDetailsCache.table.ts index 58993833d..0bbd6f69f 100644 --- a/server/src/db/kysely/PlaceDetailsCache.table.ts +++ b/server/src/db/kysely/PlaceDetailsCache.table.ts @@ -1,6 +1,5 @@ // Generated by scripts/generate-db-types.ts from the migrated schema. Do not edit by hand: // change the migration, then run `npm run gen:db-types`. - import type { InsertOptional } from './columns'; export interface PlaceDetailsCacheTable { diff --git a/server/src/db/kysely/PlaceRatings.table.ts b/server/src/db/kysely/PlaceRatings.table.ts index aa62ad2fd..5ea1af428 100644 --- a/server/src/db/kysely/PlaceRatings.table.ts +++ b/server/src/db/kysely/PlaceRatings.table.ts @@ -1,6 +1,5 @@ // Generated by scripts/generate-db-types.ts from the migrated schema. Do not edit by hand: // change the migration, then run `npm run gen:db-types`. - import type { InsertOptional } from './columns'; export interface PlaceRatingsTable { diff --git a/server/src/db/kysely/PlaceRegions.table.ts b/server/src/db/kysely/PlaceRegions.table.ts index f1186a10b..590650eed 100644 --- a/server/src/db/kysely/PlaceRegions.table.ts +++ b/server/src/db/kysely/PlaceRegions.table.ts @@ -1,6 +1,5 @@ // Generated by scripts/generate-db-types.ts from the migrated schema. Do not edit by hand: // change the migration, then run `npm run gen:db-types`. - import type { InsertOptional } from './columns'; export interface PlaceRegionsTable { diff --git a/server/src/db/kysely/PlaceShadowPicks.table.ts b/server/src/db/kysely/PlaceShadowPicks.table.ts index 58c0d9cc5..a6761f058 100644 --- a/server/src/db/kysely/PlaceShadowPicks.table.ts +++ b/server/src/db/kysely/PlaceShadowPicks.table.ts @@ -1,6 +1,5 @@ // Generated by scripts/generate-db-types.ts from the migrated schema. Do not edit by hand: // change the migration, then run `npm run gen:db-types`. - import type { InsertOptional } from './columns'; export interface PlaceShadowPicksTable { diff --git a/server/src/db/kysely/Places.table.ts b/server/src/db/kysely/Places.table.ts index acb01e2dc..60b9f3abf 100644 --- a/server/src/db/kysely/Places.table.ts +++ b/server/src/db/kysely/Places.table.ts @@ -1,6 +1,5 @@ // Generated by scripts/generate-db-types.ts from the migrated schema. Do not edit by hand: // change the migration, then run `npm run gen:db-types`. - import type { InsertOptional } from './columns'; export interface PlacesTable { diff --git a/server/src/db/kysely/PluginActions.table.ts b/server/src/db/kysely/PluginActions.table.ts index 19742962f..fe8b906f6 100644 --- a/server/src/db/kysely/PluginActions.table.ts +++ b/server/src/db/kysely/PluginActions.table.ts @@ -1,6 +1,5 @@ // Generated by scripts/generate-db-types.ts from the migrated schema. Do not edit by hand: // change the migration, then run `npm run gen:db-types`. - import type { InsertOptional } from './columns'; export interface PluginActionsTable { diff --git a/server/src/db/kysely/PluginCapabilityAudit.table.ts b/server/src/db/kysely/PluginCapabilityAudit.table.ts index cd171d0e3..da71be53d 100644 --- a/server/src/db/kysely/PluginCapabilityAudit.table.ts +++ b/server/src/db/kysely/PluginCapabilityAudit.table.ts @@ -1,6 +1,5 @@ // Generated by scripts/generate-db-types.ts from the migrated schema. Do not edit by hand: // change the migration, then run `npm run gen:db-types`. - import type { InsertOptional } from './columns'; export interface PluginCapabilityAuditTable { diff --git a/server/src/db/kysely/PluginEgressHosts.table.ts b/server/src/db/kysely/PluginEgressHosts.table.ts index 29714554b..60ca768d5 100644 --- a/server/src/db/kysely/PluginEgressHosts.table.ts +++ b/server/src/db/kysely/PluginEgressHosts.table.ts @@ -1,6 +1,5 @@ // Generated by scripts/generate-db-types.ts from the migrated schema. Do not edit by hand: // change the migration, then run `npm run gen:db-types`. - import type { InsertOptional } from './columns'; export interface PluginEgressHostsTable { diff --git a/server/src/db/kysely/PluginEntityMetadata.table.ts b/server/src/db/kysely/PluginEntityMetadata.table.ts index 3d6583cf4..24c419727 100644 --- a/server/src/db/kysely/PluginEntityMetadata.table.ts +++ b/server/src/db/kysely/PluginEntityMetadata.table.ts @@ -1,6 +1,5 @@ // Generated by scripts/generate-db-types.ts from the migrated schema. Do not edit by hand: // change the migration, then run `npm run gen:db-types`. - import type { InsertOptional } from './columns'; export interface PluginEntityMetadataTable { diff --git a/server/src/db/kysely/PluginErrorLog.table.ts b/server/src/db/kysely/PluginErrorLog.table.ts index 8b250c609..3f6187912 100644 --- a/server/src/db/kysely/PluginErrorLog.table.ts +++ b/server/src/db/kysely/PluginErrorLog.table.ts @@ -1,6 +1,5 @@ // Generated by scripts/generate-db-types.ts from the migrated schema. Do not edit by hand: // change the migration, then run `npm run gen:db-types`. - import type { InsertOptional } from './columns'; export interface PluginErrorLogTable { diff --git a/server/src/db/kysely/PluginMetaMigrations.table.ts b/server/src/db/kysely/PluginMetaMigrations.table.ts index fe88d4778..a126de7b0 100644 --- a/server/src/db/kysely/PluginMetaMigrations.table.ts +++ b/server/src/db/kysely/PluginMetaMigrations.table.ts @@ -1,6 +1,5 @@ // Generated by scripts/generate-db-types.ts from the migrated schema. Do not edit by hand: // change the migration, then run `npm run gen:db-types`. - import type { InsertOptional } from './columns'; export interface PluginMetaMigrationsTable { diff --git a/server/src/db/kysely/PluginOauthTokens.table.ts b/server/src/db/kysely/PluginOauthTokens.table.ts index fc0ee4876..8a7d19894 100644 --- a/server/src/db/kysely/PluginOauthTokens.table.ts +++ b/server/src/db/kysely/PluginOauthTokens.table.ts @@ -1,6 +1,5 @@ // Generated by scripts/generate-db-types.ts from the migrated schema. Do not edit by hand: // change the migration, then run `npm run gen:db-types`. - import type { InsertOptional } from './columns'; export interface PluginOauthTokensTable { diff --git a/server/src/db/kysely/PluginScheduledTasks.table.ts b/server/src/db/kysely/PluginScheduledTasks.table.ts index a78f22a75..9413dd0ea 100644 --- a/server/src/db/kysely/PluginScheduledTasks.table.ts +++ b/server/src/db/kysely/PluginScheduledTasks.table.ts @@ -1,6 +1,5 @@ // Generated by scripts/generate-db-types.ts from the migrated schema. Do not edit by hand: // change the migration, then run `npm run gen:db-types`. - import type { InsertOptional } from './columns'; export interface PluginScheduledTasksTable { diff --git a/server/src/db/kysely/PluginSettingsFields.table.ts b/server/src/db/kysely/PluginSettingsFields.table.ts index b542c73f5..cb290de5d 100644 --- a/server/src/db/kysely/PluginSettingsFields.table.ts +++ b/server/src/db/kysely/PluginSettingsFields.table.ts @@ -1,6 +1,5 @@ // Generated by scripts/generate-db-types.ts from the migrated schema. Do not edit by hand: // change the migration, then run `npm run gen:db-types`. - import type { InsertOptional } from './columns'; export interface PluginSettingsFieldsTable { diff --git a/server/src/db/kysely/PluginUserConfig.table.ts b/server/src/db/kysely/PluginUserConfig.table.ts index 6457dbf6e..083656863 100644 --- a/server/src/db/kysely/PluginUserConfig.table.ts +++ b/server/src/db/kysely/PluginUserConfig.table.ts @@ -1,6 +1,5 @@ // Generated by scripts/generate-db-types.ts from the migrated schema. Do not edit by hand: // change the migration, then run `npm run gen:db-types`. - import type { InsertOptional } from './columns'; export interface PluginUserConfigTable { diff --git a/server/src/db/kysely/PluginUserErasureQueue.table.ts b/server/src/db/kysely/PluginUserErasureQueue.table.ts index 40cf56890..d900bc8ff 100644 --- a/server/src/db/kysely/PluginUserErasureQueue.table.ts +++ b/server/src/db/kysely/PluginUserErasureQueue.table.ts @@ -1,6 +1,5 @@ // Generated by scripts/generate-db-types.ts from the migrated schema. Do not edit by hand: // change the migration, then run `npm run gen:db-types`. - import type { InsertOptional } from './columns'; export interface PluginUserErasureQueueTable { diff --git a/server/src/db/kysely/Plugins.table.ts b/server/src/db/kysely/Plugins.table.ts index 12350c6b8..ea015f0b4 100644 --- a/server/src/db/kysely/Plugins.table.ts +++ b/server/src/db/kysely/Plugins.table.ts @@ -1,6 +1,5 @@ // Generated by scripts/generate-db-types.ts from the migrated schema. Do not edit by hand: // change the migration, then run `npm run gen:db-types`. - import type { InsertOptional } from './columns'; export interface PluginsTable { diff --git a/server/src/db/kysely/PushSubscriptions.table.ts b/server/src/db/kysely/PushSubscriptions.table.ts index dc6261c22..f2ba24387 100644 --- a/server/src/db/kysely/PushSubscriptions.table.ts +++ b/server/src/db/kysely/PushSubscriptions.table.ts @@ -1,6 +1,5 @@ // Generated by scripts/generate-db-types.ts from the migrated schema. Do not edit by hand: // change the migration, then run `npm run gen:db-types`. - import type { InsertOptional } from './columns'; export interface PushSubscriptionsTable { diff --git a/server/src/db/kysely/ReservationEndpoints.table.ts b/server/src/db/kysely/ReservationEndpoints.table.ts index d3b5aa6fe..4fe45dc80 100644 --- a/server/src/db/kysely/ReservationEndpoints.table.ts +++ b/server/src/db/kysely/ReservationEndpoints.table.ts @@ -1,6 +1,5 @@ // Generated by scripts/generate-db-types.ts from the migrated schema. Do not edit by hand: // change the migration, then run `npm run gen:db-types`. - import type { InsertOptional } from './columns'; export interface ReservationEndpointsTable { diff --git a/server/src/db/kysely/ReservationTravelers.table.ts b/server/src/db/kysely/ReservationTravelers.table.ts index b72e4da6a..e3540b570 100644 --- a/server/src/db/kysely/ReservationTravelers.table.ts +++ b/server/src/db/kysely/ReservationTravelers.table.ts @@ -1,6 +1,5 @@ // Generated by scripts/generate-db-types.ts from the migrated schema. Do not edit by hand: // change the migration, then run `npm run gen:db-types`. - import type { InsertOptional } from './columns'; export interface ReservationTravelersTable { diff --git a/server/src/db/kysely/Reservations.table.ts b/server/src/db/kysely/Reservations.table.ts index 8253ebe7a..f2e50c0a4 100644 --- a/server/src/db/kysely/Reservations.table.ts +++ b/server/src/db/kysely/Reservations.table.ts @@ -1,6 +1,5 @@ // Generated by scripts/generate-db-types.ts from the migrated schema. Do not edit by hand: // change the migration, then run `npm run gen:db-types`. - import type { InsertOptional } from './columns'; export interface ReservationsTable { diff --git a/server/src/db/kysely/RoadtripDayBoundaries.table.ts b/server/src/db/kysely/RoadtripDayBoundaries.table.ts index 10116f955..d953f3907 100644 --- a/server/src/db/kysely/RoadtripDayBoundaries.table.ts +++ b/server/src/db/kysely/RoadtripDayBoundaries.table.ts @@ -1,6 +1,5 @@ // Generated by scripts/generate-db-types.ts from the migrated schema. Do not edit by hand: // change the migration, then run `npm run gen:db-types`. - import type { InsertOptional } from './columns'; export interface RoadtripDayBoundariesTable { diff --git a/server/src/db/kysely/RoadtripDayTracks.table.ts b/server/src/db/kysely/RoadtripDayTracks.table.ts index c228e6710..528a0896c 100644 --- a/server/src/db/kysely/RoadtripDayTracks.table.ts +++ b/server/src/db/kysely/RoadtripDayTracks.table.ts @@ -1,6 +1,5 @@ // Generated by scripts/generate-db-types.ts from the migrated schema. Do not edit by hand: // change the migration, then run `npm run gen:db-types`. - import type { InsertOptional } from './columns'; export interface RoadtripDayTracksTable { diff --git a/server/src/db/kysely/RoadtripVias.table.ts b/server/src/db/kysely/RoadtripVias.table.ts index f201a565c..5555ed5f0 100644 --- a/server/src/db/kysely/RoadtripVias.table.ts +++ b/server/src/db/kysely/RoadtripVias.table.ts @@ -1,6 +1,5 @@ // Generated by scripts/generate-db-types.ts from the migrated schema. Do not edit by hand: // change the migration, then run `npm run gen:db-types`. - import type { InsertOptional } from './columns'; export interface RoadtripViasTable { diff --git a/server/src/db/kysely/RouteUsageDaily.table.ts b/server/src/db/kysely/RouteUsageDaily.table.ts index 683a09aec..cada1e3bc 100644 --- a/server/src/db/kysely/RouteUsageDaily.table.ts +++ b/server/src/db/kysely/RouteUsageDaily.table.ts @@ -1,6 +1,5 @@ // Generated by scripts/generate-db-types.ts from the migrated schema. Do not edit by hand: // change the migration, then run `npm run gen:db-types`. - import type { InsertOptional } from './columns'; export interface RouteUsageDailyTable { diff --git a/server/src/db/kysely/SchemaVersion.table.ts b/server/src/db/kysely/SchemaVersion.table.ts index 3aab6fe89..8e100c3c9 100644 --- a/server/src/db/kysely/SchemaVersion.table.ts +++ b/server/src/db/kysely/SchemaVersion.table.ts @@ -1,6 +1,5 @@ // Generated by scripts/generate-db-types.ts from the migrated schema. Do not edit by hand: // change the migration, then run `npm run gen:db-types`. - import type { InsertOptional } from './columns'; export interface SchemaVersionTable { diff --git a/server/src/db/kysely/SchoolHolidayPeriods.table.ts b/server/src/db/kysely/SchoolHolidayPeriods.table.ts index 562ddbf72..3556036a3 100644 --- a/server/src/db/kysely/SchoolHolidayPeriods.table.ts +++ b/server/src/db/kysely/SchoolHolidayPeriods.table.ts @@ -1,6 +1,5 @@ // Generated by scripts/generate-db-types.ts from the migrated schema. Do not edit by hand: // change the migration, then run `npm run gen:db-types`. - import type { InsertOptional } from './columns'; export interface SchoolHolidayPeriodsTable { diff --git a/server/src/db/kysely/SchoolHolidayRegions.table.ts b/server/src/db/kysely/SchoolHolidayRegions.table.ts index de737c16a..ad005e2cf 100644 --- a/server/src/db/kysely/SchoolHolidayRegions.table.ts +++ b/server/src/db/kysely/SchoolHolidayRegions.table.ts @@ -1,6 +1,5 @@ // Generated by scripts/generate-db-types.ts from the migrated schema. Do not edit by hand: // change the migration, then run `npm run gen:db-types`. - import type { InsertOptional } from './columns'; export interface SchoolHolidayRegionsTable { diff --git a/server/src/db/kysely/Settings.table.ts b/server/src/db/kysely/Settings.table.ts index 4d509ba11..4d2fd19a6 100644 --- a/server/src/db/kysely/Settings.table.ts +++ b/server/src/db/kysely/Settings.table.ts @@ -1,6 +1,5 @@ // Generated by scripts/generate-db-types.ts from the migrated schema. Do not edit by hand: // change the migration, then run `npm run gen:db-types`. - import type { InsertOptional } from './columns'; export interface SettingsTable { diff --git a/server/src/db/kysely/ShareTokens.table.ts b/server/src/db/kysely/ShareTokens.table.ts index 899677e2c..83a143288 100644 --- a/server/src/db/kysely/ShareTokens.table.ts +++ b/server/src/db/kysely/ShareTokens.table.ts @@ -1,6 +1,5 @@ // Generated by scripts/generate-db-types.ts from the migrated schema. Do not edit by hand: // change the migration, then run `npm run gen:db-types`. - import type { InsertOptional } from './columns'; export interface ShareTokensTable { diff --git a/server/src/db/kysely/Tags.table.ts b/server/src/db/kysely/Tags.table.ts index 2b20f2889..a21c0f785 100644 --- a/server/src/db/kysely/Tags.table.ts +++ b/server/src/db/kysely/Tags.table.ts @@ -1,6 +1,5 @@ // Generated by scripts/generate-db-types.ts from the migrated schema. Do not edit by hand: // change the migration, then run `npm run gen:db-types`. - import type { InsertOptional } from './columns'; export interface TagsTable { diff --git a/server/src/db/kysely/TodoCategoryAssignees.table.ts b/server/src/db/kysely/TodoCategoryAssignees.table.ts index ee7e28ea9..fb754a7fb 100644 --- a/server/src/db/kysely/TodoCategoryAssignees.table.ts +++ b/server/src/db/kysely/TodoCategoryAssignees.table.ts @@ -1,6 +1,5 @@ // Generated by scripts/generate-db-types.ts from the migrated schema. Do not edit by hand: // change the migration, then run `npm run gen:db-types`. - import type { InsertOptional } from './columns'; export interface TodoCategoryAssigneesTable { diff --git a/server/src/db/kysely/TodoItems.table.ts b/server/src/db/kysely/TodoItems.table.ts index 026ffbcd5..673c46424 100644 --- a/server/src/db/kysely/TodoItems.table.ts +++ b/server/src/db/kysely/TodoItems.table.ts @@ -1,6 +1,5 @@ // Generated by scripts/generate-db-types.ts from the migrated schema. Do not edit by hand: // change the migration, then run `npm run gen:db-types`. - import type { InsertOptional } from './columns'; export interface TodoItemsTable { diff --git a/server/src/db/kysely/TourTypes.table.ts b/server/src/db/kysely/TourTypes.table.ts index fda759c8a..f30a2736d 100644 --- a/server/src/db/kysely/TourTypes.table.ts +++ b/server/src/db/kysely/TourTypes.table.ts @@ -1,6 +1,5 @@ // Generated by scripts/generate-db-types.ts from the migrated schema. Do not edit by hand: // change the migration, then run `npm run gen:db-types`. - import type { InsertOptional } from './columns'; export interface TourTypesTable { diff --git a/server/src/db/kysely/TourWaypoints.table.ts b/server/src/db/kysely/TourWaypoints.table.ts index 955f458bd..dad4ec6d1 100644 --- a/server/src/db/kysely/TourWaypoints.table.ts +++ b/server/src/db/kysely/TourWaypoints.table.ts @@ -1,6 +1,5 @@ // Generated by scripts/generate-db-types.ts from the migrated schema. Do not edit by hand: // change the migration, then run `npm run gen:db-types`. - import type { InsertOptional } from './columns'; export interface TourWaypointsTable { diff --git a/server/src/db/kysely/Tours.table.ts b/server/src/db/kysely/Tours.table.ts index 46186ec99..8f4057ff7 100644 --- a/server/src/db/kysely/Tours.table.ts +++ b/server/src/db/kysely/Tours.table.ts @@ -1,6 +1,5 @@ // Generated by scripts/generate-db-types.ts from the migrated schema. Do not edit by hand: // change the migration, then run `npm run gen:db-types`. - import type { InsertOptional } from './columns'; export interface ToursTable { diff --git a/server/src/db/kysely/TrekPhotoCacheMeta.table.ts b/server/src/db/kysely/TrekPhotoCacheMeta.table.ts index 1ad3d001a..0d15142d4 100644 --- a/server/src/db/kysely/TrekPhotoCacheMeta.table.ts +++ b/server/src/db/kysely/TrekPhotoCacheMeta.table.ts @@ -1,6 +1,5 @@ // Generated by scripts/generate-db-types.ts from the migrated schema. Do not edit by hand: // change the migration, then run `npm run gen:db-types`. - import type { InsertOptional } from './columns'; export interface TrekPhotoCacheMetaTable { diff --git a/server/src/db/kysely/TrekPhotos.table.ts b/server/src/db/kysely/TrekPhotos.table.ts index 87344be4a..b4d2068d9 100644 --- a/server/src/db/kysely/TrekPhotos.table.ts +++ b/server/src/db/kysely/TrekPhotos.table.ts @@ -1,6 +1,5 @@ // Generated by scripts/generate-db-types.ts from the migrated schema. Do not edit by hand: // change the migration, then run `npm run gen:db-types`. - import type { InsertOptional } from './columns'; export interface TrekPhotosTable { diff --git a/server/src/db/kysely/TripAlbumLinks.table.ts b/server/src/db/kysely/TripAlbumLinks.table.ts index 6fd804554..6531ad2b5 100644 --- a/server/src/db/kysely/TripAlbumLinks.table.ts +++ b/server/src/db/kysely/TripAlbumLinks.table.ts @@ -1,6 +1,5 @@ // Generated by scripts/generate-db-types.ts from the migrated schema. Do not edit by hand: // change the migration, then run `npm run gen:db-types`. - import type { InsertOptional } from './columns'; export interface TripAlbumLinksTable { diff --git a/server/src/db/kysely/TripDocumentLinks.table.ts b/server/src/db/kysely/TripDocumentLinks.table.ts index fc038a6c8..0d2702446 100644 --- a/server/src/db/kysely/TripDocumentLinks.table.ts +++ b/server/src/db/kysely/TripDocumentLinks.table.ts @@ -1,6 +1,5 @@ // Generated by scripts/generate-db-types.ts from the migrated schema. Do not edit by hand: // change the migration, then run `npm run gen:db-types`. - import type { InsertOptional } from './columns'; export interface TripDocumentLinksTable { diff --git a/server/src/db/kysely/TripFiles.table.ts b/server/src/db/kysely/TripFiles.table.ts index be164484e..055f9a3b3 100644 --- a/server/src/db/kysely/TripFiles.table.ts +++ b/server/src/db/kysely/TripFiles.table.ts @@ -1,6 +1,5 @@ // Generated by scripts/generate-db-types.ts from the migrated schema. Do not edit by hand: // change the migration, then run `npm run gen:db-types`. - import type { InsertOptional } from './columns'; export interface TripFilesTable { diff --git a/server/src/db/kysely/TripInviteTokens.table.ts b/server/src/db/kysely/TripInviteTokens.table.ts index 9645987dd..411d857b5 100644 --- a/server/src/db/kysely/TripInviteTokens.table.ts +++ b/server/src/db/kysely/TripInviteTokens.table.ts @@ -1,6 +1,5 @@ // Generated by scripts/generate-db-types.ts from the migrated schema. Do not edit by hand: // change the migration, then run `npm run gen:db-types`. - import type { InsertOptional } from './columns'; export interface TripInviteTokensTable { diff --git a/server/src/db/kysely/TripMembers.table.ts b/server/src/db/kysely/TripMembers.table.ts index d5df374cc..c3d133e0e 100644 --- a/server/src/db/kysely/TripMembers.table.ts +++ b/server/src/db/kysely/TripMembers.table.ts @@ -1,6 +1,5 @@ // Generated by scripts/generate-db-types.ts from the migrated schema. Do not edit by hand: // change the migration, then run `npm run gen:db-types`. - import type { InsertOptional } from './columns'; export interface TripMembersTable { diff --git a/server/src/db/kysely/TripPhotos.table.ts b/server/src/db/kysely/TripPhotos.table.ts index f08623ba3..2cfbb5ed6 100644 --- a/server/src/db/kysely/TripPhotos.table.ts +++ b/server/src/db/kysely/TripPhotos.table.ts @@ -1,6 +1,5 @@ // Generated by scripts/generate-db-types.ts from the migrated schema. Do not edit by hand: // change the migration, then run `npm run gen:db-types`. - import type { InsertOptional } from './columns'; export interface TripPhotosTable { diff --git a/server/src/db/kysely/Trips.table.ts b/server/src/db/kysely/Trips.table.ts index 6fce64e69..b1b3323a1 100644 --- a/server/src/db/kysely/Trips.table.ts +++ b/server/src/db/kysely/Trips.table.ts @@ -1,6 +1,5 @@ // Generated by scripts/generate-db-types.ts from the migrated schema. Do not edit by hand: // change the migration, then run `npm run gen:db-types`. - import type { InsertOptional } from './columns'; export interface TripsTable { diff --git a/server/src/db/kysely/UserNoticeDismissals.table.ts b/server/src/db/kysely/UserNoticeDismissals.table.ts index 791d17f01..a31a8dea8 100644 --- a/server/src/db/kysely/UserNoticeDismissals.table.ts +++ b/server/src/db/kysely/UserNoticeDismissals.table.ts @@ -1,6 +1,5 @@ // Generated by scripts/generate-db-types.ts from the migrated schema. Do not edit by hand: // change the migration, then run `npm run gen:db-types`. - import type { InsertOptional } from './columns'; export interface UserNoticeDismissalsTable { diff --git a/server/src/db/kysely/UserSessions.table.ts b/server/src/db/kysely/UserSessions.table.ts index 5ecc243b9..61bc96fe2 100644 --- a/server/src/db/kysely/UserSessions.table.ts +++ b/server/src/db/kysely/UserSessions.table.ts @@ -1,6 +1,5 @@ // Generated by scripts/generate-db-types.ts from the migrated schema. Do not edit by hand: // change the migration, then run `npm run gen:db-types`. - import type { InsertOptional } from './columns'; export interface UserSessionsTable { diff --git a/server/src/db/kysely/Users.table.ts b/server/src/db/kysely/Users.table.ts index 08a021c5b..655acf6a1 100644 --- a/server/src/db/kysely/Users.table.ts +++ b/server/src/db/kysely/Users.table.ts @@ -1,6 +1,5 @@ // Generated by scripts/generate-db-types.ts from the migrated schema. Do not edit by hand: // change the migration, then run `npm run gen:db-types`. - import type { InsertOptional } from './columns'; export interface UsersTable { diff --git a/server/src/db/kysely/VacayCompanyHolidays.table.ts b/server/src/db/kysely/VacayCompanyHolidays.table.ts index 882982949..7aa609cfb 100644 --- a/server/src/db/kysely/VacayCompanyHolidays.table.ts +++ b/server/src/db/kysely/VacayCompanyHolidays.table.ts @@ -1,6 +1,5 @@ // Generated by scripts/generate-db-types.ts from the migrated schema. Do not edit by hand: // change the migration, then run `npm run gen:db-types`. - import type { InsertOptional } from './columns'; export interface VacayCompanyHolidaysTable { diff --git a/server/src/db/kysely/VacayEntries.table.ts b/server/src/db/kysely/VacayEntries.table.ts index 4171e21c2..f33b3b66d 100644 --- a/server/src/db/kysely/VacayEntries.table.ts +++ b/server/src/db/kysely/VacayEntries.table.ts @@ -1,6 +1,5 @@ // Generated by scripts/generate-db-types.ts from the migrated schema. Do not edit by hand: // change the migration, then run `npm run gen:db-types`. - import type { InsertOptional } from './columns'; export interface VacayEntriesTable { diff --git a/server/src/db/kysely/VacayHolidayCalendars.table.ts b/server/src/db/kysely/VacayHolidayCalendars.table.ts index 4d1fdd35f..81a1f5563 100644 --- a/server/src/db/kysely/VacayHolidayCalendars.table.ts +++ b/server/src/db/kysely/VacayHolidayCalendars.table.ts @@ -1,6 +1,5 @@ // Generated by scripts/generate-db-types.ts from the migrated schema. Do not edit by hand: // change the migration, then run `npm run gen:db-types`. - import type { InsertOptional } from './columns'; export interface VacayHolidayCalendarsTable { diff --git a/server/src/db/kysely/VacayPlanMembers.table.ts b/server/src/db/kysely/VacayPlanMembers.table.ts index 8d296cddd..cb590d63b 100644 --- a/server/src/db/kysely/VacayPlanMembers.table.ts +++ b/server/src/db/kysely/VacayPlanMembers.table.ts @@ -1,6 +1,5 @@ // Generated by scripts/generate-db-types.ts from the migrated schema. Do not edit by hand: // change the migration, then run `npm run gen:db-types`. - import type { InsertOptional } from './columns'; export interface VacayPlanMembersTable { diff --git a/server/src/db/kysely/VacayPlans.table.ts b/server/src/db/kysely/VacayPlans.table.ts index 1dabaff5d..423f45e57 100644 --- a/server/src/db/kysely/VacayPlans.table.ts +++ b/server/src/db/kysely/VacayPlans.table.ts @@ -1,6 +1,5 @@ // Generated by scripts/generate-db-types.ts from the migrated schema. Do not edit by hand: // change the migration, then run `npm run gen:db-types`. - import type { InsertOptional } from './columns'; export interface VacayPlansTable { diff --git a/server/src/db/kysely/VacayShares.table.ts b/server/src/db/kysely/VacayShares.table.ts index 0f2061297..3dd47ec28 100644 --- a/server/src/db/kysely/VacayShares.table.ts +++ b/server/src/db/kysely/VacayShares.table.ts @@ -1,6 +1,5 @@ // Generated by scripts/generate-db-types.ts from the migrated schema. Do not edit by hand: // change the migration, then run `npm run gen:db-types`. - import type { InsertOptional } from './columns'; export interface VacaySharesTable { diff --git a/server/src/db/kysely/VacayUserColors.table.ts b/server/src/db/kysely/VacayUserColors.table.ts index df9b68f0b..4550ecfcb 100644 --- a/server/src/db/kysely/VacayUserColors.table.ts +++ b/server/src/db/kysely/VacayUserColors.table.ts @@ -1,6 +1,5 @@ // Generated by scripts/generate-db-types.ts from the migrated schema. Do not edit by hand: // change the migration, then run `npm run gen:db-types`. - import type { InsertOptional } from './columns'; export interface VacayUserColorsTable { diff --git a/server/src/db/kysely/VacayUserSettings.table.ts b/server/src/db/kysely/VacayUserSettings.table.ts index 48b505f0d..f9d476bbd 100644 --- a/server/src/db/kysely/VacayUserSettings.table.ts +++ b/server/src/db/kysely/VacayUserSettings.table.ts @@ -1,6 +1,5 @@ // Generated by scripts/generate-db-types.ts from the migrated schema. Do not edit by hand: // change the migration, then run `npm run gen:db-types`. - import type { InsertOptional } from './columns'; export interface VacayUserSettingsTable { diff --git a/server/src/db/kysely/VacayUserYears.table.ts b/server/src/db/kysely/VacayUserYears.table.ts index e1f1dab3a..bca483f06 100644 --- a/server/src/db/kysely/VacayUserYears.table.ts +++ b/server/src/db/kysely/VacayUserYears.table.ts @@ -1,6 +1,5 @@ // Generated by scripts/generate-db-types.ts from the migrated schema. Do not edit by hand: // change the migration, then run `npm run gen:db-types`. - import type { InsertOptional } from './columns'; export interface VacayUserYearsTable { diff --git a/server/src/db/kysely/VacayYears.table.ts b/server/src/db/kysely/VacayYears.table.ts index 68d960655..7fcb59af1 100644 --- a/server/src/db/kysely/VacayYears.table.ts +++ b/server/src/db/kysely/VacayYears.table.ts @@ -1,6 +1,5 @@ // Generated by scripts/generate-db-types.ts from the migrated schema. Do not edit by hand: // change the migration, then run `npm run gen:db-types`. - import type { InsertOptional } from './columns'; export interface VacayYearsTable { diff --git a/server/src/db/kysely/VisitedCountries.table.ts b/server/src/db/kysely/VisitedCountries.table.ts index 925288fe6..2a5c23dce 100644 --- a/server/src/db/kysely/VisitedCountries.table.ts +++ b/server/src/db/kysely/VisitedCountries.table.ts @@ -1,6 +1,5 @@ // Generated by scripts/generate-db-types.ts from the migrated schema. Do not edit by hand: // change the migration, then run `npm run gen:db-types`. - import type { InsertOptional } from './columns'; export interface VisitedCountriesTable { diff --git a/server/src/db/kysely/VisitedRegions.table.ts b/server/src/db/kysely/VisitedRegions.table.ts index 77314c178..e116bfc6f 100644 --- a/server/src/db/kysely/VisitedRegions.table.ts +++ b/server/src/db/kysely/VisitedRegions.table.ts @@ -1,6 +1,5 @@ // Generated by scripts/generate-db-types.ts from the migrated schema. Do not edit by hand: // change the migration, then run `npm run gen:db-types`. - import type { InsertOptional } from './columns'; export interface VisitedRegionsTable { diff --git a/server/src/db/kysely/WebauthnChallenges.table.ts b/server/src/db/kysely/WebauthnChallenges.table.ts index 371d810f6..619785459 100644 --- a/server/src/db/kysely/WebauthnChallenges.table.ts +++ b/server/src/db/kysely/WebauthnChallenges.table.ts @@ -1,6 +1,5 @@ // Generated by scripts/generate-db-types.ts from the migrated schema. Do not edit by hand: // change the migration, then run `npm run gen:db-types`. - import type { InsertOptional } from './columns'; export interface WebauthnChallengesTable { diff --git a/server/src/db/kysely/WebauthnCredentials.table.ts b/server/src/db/kysely/WebauthnCredentials.table.ts index 24bf4d3c5..d6aadf1ff 100644 --- a/server/src/db/kysely/WebauthnCredentials.table.ts +++ b/server/src/db/kysely/WebauthnCredentials.table.ts @@ -1,6 +1,5 @@ // Generated by scripts/generate-db-types.ts from the migrated schema. Do not edit by hand: // change the migration, then run `npm run gen:db-types`. - import type { InsertOptional } from './columns'; export interface WebauthnCredentialsTable { diff --git a/server/src/db/kysely/columns.ts b/server/src/db/kysely/columns.ts index ba50fa677..1ad5ca733 100644 --- a/server/src/db/kysely/columns.ts +++ b/server/src/db/kysely/columns.ts @@ -1,6 +1,5 @@ // Generated by scripts/generate-db-types.ts from the migrated schema. Do not edit by hand: // change the migration, then run `npm run gen:db-types`. - import type { ColumnType } from 'kysely'; /** A column an insert may leave out: the database assigns it (rowid, DEFAULT) or stores NULL. */ diff --git a/server/src/db/kysely/db.ts b/server/src/db/kysely/db.ts index 097ee55c5..4093ef56b 100644 --- a/server/src/db/kysely/db.ts +++ b/server/src/db/kysely/db.ts @@ -1,6 +1,5 @@ // Generated by scripts/generate-db-types.ts from the migrated schema. Do not edit by hand: // change the migration, then run `npm run gen:db-types`. - import type { AddonsTable } from './Addons.table'; import type { AppSettingsTable } from './AppSettings.table'; import type { AssignmentParticipantsTable } from './AssignmentParticipants.table'; diff --git a/server/tests/unit/db/generate-db-types.test.ts b/server/tests/unit/db/generate-db-types.test.ts index c8c3512a1..3523fd24c 100644 --- a/server/tests/unit/db/generate-db-types.test.ts +++ b/server/tests/unit/db/generate-db-types.test.ts @@ -1,7 +1,3 @@ -import fs from 'node:fs'; -import os from 'node:os'; -import path from 'node:path'; -import { describe, expect, it } from 'vitest'; import { checkDbTypes, generateDbTypes, @@ -18,6 +14,11 @@ import { type TableInfo, } from '../../../scripts/generate-db-types'; +import fs from 'node:fs'; +import os from 'node:os'; +import path from 'node:path'; +import { describe, expect, it } from 'vitest'; + function column(overrides: Partial & { name: string }): ColumnInfo { return { type: 'TEXT', notnull: true, hasDefault: false, pk: 0, hidden: 0, ...overrides }; } @@ -80,7 +81,10 @@ describe('renderTable', () => { it('DBTYPES-005: a composite primary key is required on insert, not a rowid', () => { const source = renderTable({ name: 'place_tags', - columns: [column({ name: 'place_id', type: 'INTEGER', pk: 1 }), column({ name: 'tag_id', type: 'INTEGER', pk: 2 })], + columns: [ + column({ name: 'place_id', type: 'INTEGER', pk: 1 }), + column({ name: 'tag_id', type: 'INTEGER', pk: 2 }), + ], }); expect(source).toContain(' place_id: number;'); expect(source).toContain(' tag_id: number;'); @@ -154,13 +158,38 @@ describe('checkDbTypes / writeDbTypes', () => { }); describe('the committed src/db/kysely/', () => { - it( - 'DBTYPES-013: matches what the migrated schema generates (the check:db-types gate)', - async () => { - const files = await generateDbTypes(); - expect(files.get('db.ts')).toContain(' budget_items: BudgetItemsTable;'); - expect(checkDbTypes(KYSELY_DIR, files)).toEqual([]); - }, - 60_000, - ); + it('DBTYPES-013: matches what the migrated schema generates (the check:db-types gate)', async () => { + const files = await generateDbTypes(); + expect(files.get('db.ts')).toContain(' budget_items: BudgetItemsTable;'); + expect(checkDbTypes(KYSELY_DIR, files)).toEqual([]); + }, 60_000); +}); + +describe('formatting', () => { + it('DBTYPES-014: every generated file is already Prettier-clean, so lint:format and check:db-types agree', async () => { + const prettier = await import('prettier'); + // Sorted by name, as readSchema hands them over. + const files = renderAll([ + ITEMS, + { + name: 'place_tags', + columns: [ + column({ name: 'place_id', type: 'INTEGER', pk: 1 }), + column({ name: 'tag_id', type: 'INTEGER', pk: 2 }), + ], + }, + { + name: 't', + columns: [column({ name: 'total', type: 'INTEGER', hidden: 2 }), column({ name: 'note', notnull: false })], + }, + ]); + const verdicts = await Promise.all( + [...files].map(async ([fileName, content]) => { + const filepath = path.join(KYSELY_DIR, fileName); + const options = await prettier.resolveConfig(filepath); + return { fileName, clean: await prettier.check(content, { ...options, filepath }) }; + }), + ); + expect(verdicts).toEqual([...files.keys()].map((fileName) => ({ fileName, clean: true }))); + }); }); diff --git a/shared/CLAUDE.md b/shared/CLAUDE.md index f8d70ab91..56e32ab89 100644 --- a/shared/CLAUDE.md +++ b/shared/CLAUDE.md @@ -8,7 +8,9 @@ Scope: the **`@trek/shared`** workspace — the **single source of truth** for A npm run build # tsdown → dist/ (CJS + ESM + .d.ts). REQUIRED before server/client typecheck or run npm run build:watch # what the root `npm run dev` runs npm run typecheck # tsc --noEmit -npm run lint # eslint --fix (rewrites files) +npm run lint # eslint, check-only (lint-prettier.yml) +npm run lint:fix # eslint --fix +npm run lint:format # Prettier outside scripts/format-baseline.json, which only shrinks (lint-prettier.yml) npm run test # vitest run — co-located *.spec.ts files npm run i18n:parity # audit locale drift, exits 0 npm run i18n:parity:strict # CI gate, exits 1 on any drift (also runs the untranslated ratchet below) diff --git a/shared/eslint.config.mjs b/shared/eslint.config.mjs index 079e0b09b..a97f5a0d5 100644 --- a/shared/eslint.config.mjs +++ b/shared/eslint.config.mjs @@ -2,7 +2,6 @@ import js from '@eslint/js'; import gitignore from 'eslint-config-flat-gitignore'; import eslintConfigPrettier from 'eslint-config-prettier'; -import eslintPluginPrettier from 'eslint-plugin-prettier'; import tseslint from 'typescript-eslint'; export default tseslint.config( @@ -11,11 +10,11 @@ export default tseslint.config( ...tseslint.configs.recommended, eslintConfigPrettier, { - plugins: { - prettier: eslintPluginPrettier, - }, + // Formatting is Prettier's own check (npm run lint:format, held to + // scripts/format-baseline.json until the one mechanical reformat), not an + // ESLint rule: run through ESLint it could only be enforced with --fix, + // which rewrote the files CI was about to check. rules: { - 'prettier/prettier': 'error', '@typescript-eslint/no-unused-vars': [ 'error', { argsIgnorePattern: '^_', varsIgnorePattern: '^_' }, diff --git a/shared/package.json b/shared/package.json index e36461240..c8eb501ce 100644 --- a/shared/package.json +++ b/shared/package.json @@ -71,7 +71,9 @@ "typecheck": "tsc --noEmit", "format": "prettier --write \"src/**/*.ts\"", "format:check": "prettier --check \"src/**/*.ts\"", - "lint": "eslint --fix \"src/**/*.ts\"", + "lint": "eslint \"src/**/*.ts\"", + "lint:fix": "eslint --fix \"src/**/*.ts\"", + "lint:format": "node scripts/format-lint.mjs", "i18n:parity": "node scripts/i18n-parity.mjs", "i18n:parity:strict": "node scripts/i18n-parity.mjs --strict", "contracts:open": "node scripts/open-request-schemas.mjs", @@ -89,7 +91,6 @@ "eslint": "^10.11.0", "eslint-config-flat-gitignore": "^2.4.0", "eslint-config-prettier": "^10.1.8", - "eslint-plugin-prettier": "^5.5.6", "prettier": "3.9.8", "prettier-plugin-organize-imports": "^4.3.0", "tsdown": "^0.23.0", diff --git a/shared/scripts/format-baseline.json b/shared/scripts/format-baseline.json new file mode 100644 index 000000000..55e649361 --- /dev/null +++ b/shared/scripts/format-baseline.json @@ -0,0 +1,383 @@ +[ + "src/book/book-store.schema.ts", + "src/book/book.schema.spec.ts", + "src/book/book.schema.ts", + "src/budget/budget.schema.ts", + "src/category/category.schema.ts", + "src/collection/collection.schema.ts", + "src/datetime/datetime-normalize.spec.ts", + "src/datetime/datetime-normalize.ts", + "src/dawarich/dawarich.schema.ts", + "src/i18n/ar/admin.ts", + "src/i18n/ar/collection.ts", + "src/i18n/ar/dawarich.ts", + "src/i18n/ar/docsync.ts", + "src/i18n/ar/index.ts", + "src/i18n/ar/journey.ts", + "src/i18n/ar/map.ts", + "src/i18n/ar/notif.ts", + "src/i18n/ar/oauth.ts", + "src/i18n/ar/roadtrip.ts", + "src/i18n/ar/settings.ts", + "src/i18n/ar/system_notice.ts", + "src/i18n/az/admin.ts", + "src/i18n/az/airport.ts", + "src/i18n/az/atlas.ts", + "src/i18n/az/backup.ts", + "src/i18n/az/categories.ts", + "src/i18n/az/collab.ts", + "src/i18n/az/collection.ts", + "src/i18n/az/dashboard.ts", + "src/i18n/az/dawarich.ts", + "src/i18n/az/day.ts", + "src/i18n/az/dayplan.ts", + "src/i18n/az/docsync.ts", + "src/i18n/az/files.ts", + "src/i18n/az/index.ts", + "src/i18n/az/inspector.ts", + "src/i18n/az/journey.ts", + "src/i18n/az/login.ts", + "src/i18n/az/map.ts", + "src/i18n/az/members.ts", + "src/i18n/az/memories.ts", + "src/i18n/az/mobileAdmin.ts", + "src/i18n/az/mobileAtlas.ts", + "src/i18n/az/mobileCollections.ts", + "src/i18n/az/mobileJourney.ts", + "src/i18n/az/mobileNav.ts", + "src/i18n/az/mobileSettings.ts", + "src/i18n/az/mobileTrip.ts", + "src/i18n/az/mobileVacay.ts", + "src/i18n/az/notif.ts", + "src/i18n/az/notifications.ts", + "src/i18n/az/oauth.ts", + "src/i18n/az/packing.ts", + "src/i18n/az/pdf.ts", + "src/i18n/az/perm.ts", + "src/i18n/az/planner.ts", + "src/i18n/az/roadtrip.ts", + "src/i18n/az/settings.ts", + "src/i18n/az/share.ts", + "src/i18n/az/shared.ts", + "src/i18n/az/storage.ts", + "src/i18n/az/system_notice.ts", + "src/i18n/az/todo.ts", + "src/i18n/az/trip.ts", + "src/i18n/az/trips.ts", + "src/i18n/az/undo.ts", + "src/i18n/az/vacay.ts", + "src/i18n/br/admin.ts", + "src/i18n/br/collection.ts", + "src/i18n/br/dawarich.ts", + "src/i18n/br/docsync.ts", + "src/i18n/br/index.ts", + "src/i18n/br/journey.ts", + "src/i18n/br/map.ts", + "src/i18n/br/notif.ts", + "src/i18n/br/oauth.ts", + "src/i18n/br/roadtrip.ts", + "src/i18n/br/settings.ts", + "src/i18n/br/storage.ts", + "src/i18n/br/system_notice.ts", + "src/i18n/ca/admin.ts", + "src/i18n/ca/dawarich.ts", + "src/i18n/ca/docsync.ts", + "src/i18n/ca/index.ts", + "src/i18n/ca/journey.ts", + "src/i18n/ca/map.ts", + "src/i18n/ca/notif.ts", + "src/i18n/ca/oauth.ts", + "src/i18n/ca/roadtrip.ts", + "src/i18n/ca/settings.ts", + "src/i18n/ca/storage.ts", + "src/i18n/ca/system_notice.ts", + "src/i18n/cs/admin.ts", + "src/i18n/cs/collection.ts", + "src/i18n/cs/dawarich.ts", + "src/i18n/cs/docsync.ts", + "src/i18n/cs/index.ts", + "src/i18n/cs/journey.ts", + "src/i18n/cs/map.ts", + "src/i18n/cs/notif.ts", + "src/i18n/cs/oauth.ts", + "src/i18n/cs/roadtrip.ts", + "src/i18n/cs/settings.ts", + "src/i18n/cs/system_notice.ts", + "src/i18n/de/admin.ts", + "src/i18n/de/collection.ts", + "src/i18n/de/common.ts", + "src/i18n/de/dawarich.ts", + "src/i18n/de/docsync.ts", + "src/i18n/de/index.ts", + "src/i18n/de/journey.ts", + "src/i18n/de/map.ts", + "src/i18n/de/notif.ts", + "src/i18n/de/oauth.ts", + "src/i18n/de/roadtrip.ts", + "src/i18n/de/settings.ts", + "src/i18n/de/storage.ts", + "src/i18n/de/system_notice.ts", + "src/i18n/en/admin.ts", + "src/i18n/en/collection.ts", + "src/i18n/en/dawarich.ts", + "src/i18n/en/docsync.ts", + "src/i18n/en/index.ts", + "src/i18n/en/journey.ts", + "src/i18n/en/map.ts", + "src/i18n/en/notif.ts", + "src/i18n/en/oauth.ts", + "src/i18n/en/roadtrip.ts", + "src/i18n/en/settings.ts", + "src/i18n/en/system_notice.ts", + "src/i18n/es/admin.ts", + "src/i18n/es/collection.ts", + "src/i18n/es/common.ts", + "src/i18n/es/dawarich.ts", + "src/i18n/es/docsync.ts", + "src/i18n/es/index.ts", + "src/i18n/es/journey.ts", + "src/i18n/es/map.ts", + "src/i18n/es/notif.ts", + "src/i18n/es/oauth.ts", + "src/i18n/es/roadtrip.ts", + "src/i18n/es/settings.ts", + "src/i18n/es/system_notice.ts", + "src/i18n/et/admin.ts", + "src/i18n/et/dawarich.ts", + "src/i18n/et/index.ts", + "src/i18n/et/journey.ts", + "src/i18n/et/settings.ts", + "src/i18n/fr/admin.ts", + "src/i18n/fr/collection.ts", + "src/i18n/fr/common.ts", + "src/i18n/fr/dawarich.ts", + "src/i18n/fr/docsync.ts", + "src/i18n/fr/index.ts", + "src/i18n/fr/journey.ts", + "src/i18n/fr/map.ts", + "src/i18n/fr/notif.ts", + "src/i18n/fr/oauth.ts", + "src/i18n/fr/roadtrip.ts", + "src/i18n/fr/settings.ts", + "src/i18n/fr/storage.ts", + "src/i18n/fr/system_notice.ts", + "src/i18n/gr/admin.ts", + "src/i18n/gr/collection.ts", + "src/i18n/gr/common.ts", + "src/i18n/gr/dawarich.ts", + "src/i18n/gr/docsync.ts", + "src/i18n/gr/index.ts", + "src/i18n/gr/journey.ts", + "src/i18n/gr/map.ts", + "src/i18n/gr/notif.ts", + "src/i18n/gr/oauth.ts", + "src/i18n/gr/roadtrip.ts", + "src/i18n/gr/settings.ts", + "src/i18n/gr/storage.ts", + "src/i18n/gr/system_notice.ts", + "src/i18n/hu/admin.ts", + "src/i18n/hu/collection.ts", + "src/i18n/hu/dawarich.ts", + "src/i18n/hu/docsync.ts", + "src/i18n/hu/index.ts", + "src/i18n/hu/journey.ts", + "src/i18n/hu/map.ts", + "src/i18n/hu/notif.ts", + "src/i18n/hu/oauth.ts", + "src/i18n/hu/roadtrip.ts", + "src/i18n/hu/settings.ts", + "src/i18n/hu/storage.ts", + "src/i18n/hu/system_notice.ts", + "src/i18n/hu/trip.ts", + "src/i18n/i18n-permission-wording.spec.ts", + "src/i18n/id/admin.ts", + "src/i18n/id/collection.ts", + "src/i18n/id/dawarich.ts", + "src/i18n/id/docsync.ts", + "src/i18n/id/index.ts", + "src/i18n/id/journey.ts", + "src/i18n/id/map.ts", + "src/i18n/id/notif.ts", + "src/i18n/id/oauth.ts", + "src/i18n/id/roadtrip.ts", + "src/i18n/id/settings.ts", + "src/i18n/id/storage.ts", + "src/i18n/id/system_notice.ts", + "src/i18n/it/admin.ts", + "src/i18n/it/collection.ts", + "src/i18n/it/common.ts", + "src/i18n/it/dawarich.ts", + "src/i18n/it/docsync.ts", + "src/i18n/it/index.ts", + "src/i18n/it/journey.ts", + "src/i18n/it/map.ts", + "src/i18n/it/notif.ts", + "src/i18n/it/oauth.ts", + "src/i18n/it/roadtrip.ts", + "src/i18n/it/settings.ts", + "src/i18n/it/storage.ts", + "src/i18n/it/system_notice.ts", + "src/i18n/ja/admin.ts", + "src/i18n/ja/collection.ts", + "src/i18n/ja/common.ts", + "src/i18n/ja/dawarich.ts", + "src/i18n/ja/docsync.ts", + "src/i18n/ja/index.ts", + "src/i18n/ja/journey.ts", + "src/i18n/ja/map.ts", + "src/i18n/ja/mobileTrip.ts", + "src/i18n/ja/notif.ts", + "src/i18n/ja/oauth.ts", + "src/i18n/ja/roadtrip.ts", + "src/i18n/ja/settings.ts", + "src/i18n/ja/system_notice.ts", + "src/i18n/ko/admin.ts", + "src/i18n/ko/collection.ts", + "src/i18n/ko/dawarich.ts", + "src/i18n/ko/index.ts", + "src/i18n/ko/journey.ts", + "src/i18n/ko/map.ts", + "src/i18n/ko/memories.ts", + "src/i18n/ko/mobileTrip.ts", + "src/i18n/ko/notif.ts", + "src/i18n/ko/oauth.ts", + "src/i18n/ko/roadtrip.ts", + "src/i18n/ko/settings.ts", + "src/i18n/ko/system_notice.ts", + "src/i18n/nl/admin.ts", + "src/i18n/nl/collection.ts", + "src/i18n/nl/common.ts", + "src/i18n/nl/dawarich.ts", + "src/i18n/nl/docsync.ts", + "src/i18n/nl/index.ts", + "src/i18n/nl/journey.ts", + "src/i18n/nl/map.ts", + "src/i18n/nl/notif.ts", + "src/i18n/nl/oauth.ts", + "src/i18n/nl/roadtrip.ts", + "src/i18n/nl/settings.ts", + "src/i18n/nl/storage.ts", + "src/i18n/nl/system_notice.ts", + "src/i18n/pl/admin.ts", + "src/i18n/pl/collection.ts", + "src/i18n/pl/dawarich.ts", + "src/i18n/pl/docsync.ts", + "src/i18n/pl/index.ts", + "src/i18n/pl/journey.ts", + "src/i18n/pl/map.ts", + "src/i18n/pl/notif.ts", + "src/i18n/pl/oauth.ts", + "src/i18n/pl/roadtrip.ts", + "src/i18n/pl/settings.ts", + "src/i18n/pl/storage.ts", + "src/i18n/pl/system_notice.ts", + "src/i18n/ru/admin.ts", + "src/i18n/ru/collection.ts", + "src/i18n/ru/common.ts", + "src/i18n/ru/dawarich.ts", + "src/i18n/ru/docsync.ts", + "src/i18n/ru/index.ts", + "src/i18n/ru/journey.ts", + "src/i18n/ru/map.ts", + "src/i18n/ru/notif.ts", + "src/i18n/ru/oauth.ts", + "src/i18n/ru/roadtrip.ts", + "src/i18n/ru/settings.ts", + "src/i18n/ru/system_notice.ts", + "src/i18n/sk/admin.ts", + "src/i18n/sk/dawarich.ts", + "src/i18n/sk/index.ts", + "src/i18n/sk/journey.ts", + "src/i18n/sk/settings.ts", + "src/i18n/sv/admin.ts", + "src/i18n/sv/collection.ts", + "src/i18n/sv/common.ts", + "src/i18n/sv/dawarich.ts", + "src/i18n/sv/docsync.ts", + "src/i18n/sv/index.ts", + "src/i18n/sv/journey.ts", + "src/i18n/sv/map.ts", + "src/i18n/sv/notif.ts", + "src/i18n/sv/oauth.ts", + "src/i18n/sv/roadtrip.ts", + "src/i18n/sv/settings.ts", + "src/i18n/sv/system_notice.ts", + "src/i18n/th/admin.ts", + "src/i18n/th/collection.ts", + "src/i18n/th/dashboard.ts", + "src/i18n/th/dayplan.ts", + "src/i18n/th/docsync.ts", + "src/i18n/th/index.ts", + "src/i18n/th/journey.ts", + "src/i18n/th/notif.ts", + "src/i18n/th/roadtrip.ts", + "src/i18n/th/settings.ts", + "src/i18n/th/system_notice.ts", + "src/i18n/th/trip.ts", + "src/i18n/tr/admin.ts", + "src/i18n/tr/collection.ts", + "src/i18n/tr/dawarich.ts", + "src/i18n/tr/docsync.ts", + "src/i18n/tr/index.ts", + "src/i18n/tr/journey.ts", + "src/i18n/tr/map.ts", + "src/i18n/tr/notif.ts", + "src/i18n/tr/oauth.ts", + "src/i18n/tr/roadtrip.ts", + "src/i18n/tr/settings.ts", + "src/i18n/tr/system_notice.ts", + "src/i18n/uk/admin.ts", + "src/i18n/uk/collection.ts", + "src/i18n/uk/dawarich.ts", + "src/i18n/uk/docsync.ts", + "src/i18n/uk/index.ts", + "src/i18n/uk/journey.ts", + "src/i18n/uk/map.ts", + "src/i18n/uk/notif.ts", + "src/i18n/uk/oauth.ts", + "src/i18n/uk/roadtrip.ts", + "src/i18n/uk/settings.ts", + "src/i18n/uk/system_notice.ts", + "src/i18n/vi/admin.ts", + "src/i18n/vi/collection.ts", + "src/i18n/vi/dawarich.ts", + "src/i18n/vi/docsync.ts", + "src/i18n/vi/index.ts", + "src/i18n/vi/journey.ts", + "src/i18n/vi/map.ts", + "src/i18n/vi/notif.ts", + "src/i18n/vi/oauth.ts", + "src/i18n/vi/roadtrip.ts", + "src/i18n/vi/settings.ts", + "src/i18n/vi/system_notice.ts", + "src/i18n/zh-TW/admin.ts", + "src/i18n/zh-TW/dawarich.ts", + "src/i18n/zh-TW/index.ts", + "src/i18n/zh-TW/journey.ts", + "src/i18n/zh-TW/notif.ts", + "src/i18n/zh-TW/oauth.ts", + "src/i18n/zh-TW/roadtrip.ts", + "src/i18n/zh-TW/settings.ts", + "src/i18n/zh-TW/system_notice.ts", + "src/i18n/zh/admin.ts", + "src/i18n/zh/dawarich.ts", + "src/i18n/zh/index.ts", + "src/i18n/zh/journey.ts", + "src/i18n/zh/notif.ts", + "src/i18n/zh/oauth.ts", + "src/i18n/zh/roadtrip.ts", + "src/i18n/zh/settings.ts", + "src/i18n/zh/system_notice.ts", + "src/journey/journey.schema.spec.ts", + "src/journey/journey.schema.ts", + "src/plugins/plugins.schema.spec.ts", + "src/public-api/public-api.schema.ts", + "src/reservation/reservation.schema.spec.ts", + "src/reservation/reservation.schema.ts", + "src/roadtrip/assemble.spec.ts", + "src/roadtrip/dayWindow.spec.ts", + "src/roadtrip/roadtripModel.spec.ts", + "src/roadtrip/roadtripModel.ts", + "src/tours/tours.metrics.test.ts", + "src/vacay/vacay.schema.spec.ts" +] diff --git a/shared/scripts/format-lint.mjs b/shared/scripts/format-lint.mjs new file mode 100644 index 000000000..8667a7550 --- /dev/null +++ b/shared/scripts/format-lint.mjs @@ -0,0 +1,39 @@ +#!/usr/bin/env node +/* + * lint:format: new shared code is formatted with Prettier. + * + * lint-prettier.yml used to run `npm run lint` with --fix ahead of + * format:check, so the check only ever saw files it had just rewritten, and + * many files differ from what .prettierrc asks for. Formatting all of them + * belongs in one mechanical commit of its own; until it lands, the files that were unformatted when + * this check came in are listed in scripts/format-baseline.json and the list + * only shrinks: every file outside it, a new one in particular, must be + * formatted, and a listed file leaves the list once it has been. After the + * mass reformat, --update empties the list and the check is a plain + * prettier --check over src/. + * + * npm run lint:format check against the baseline (CI) + * npm run lint:format -- --list print every unformatted file + * npm run lint:format -- --update take formatted and deleted files off the list; + * it never adds one + * + * To format a file: npx prettier --write . The comparison lives in + * scripts/lib/format.mjs at the repository root; Prettier and its config come + * from this workspace. + */ +import { fileURLToPath } from 'node:url'; +import * as prettier from 'prettier'; +import { check } from '../../scripts/lib/format.mjs'; +import { runCli } from '../../scripts/lib/ratchet.mjs'; + +const root = fileURLToPath(new URL('..', import.meta.url)); +await runCli('lint:format', (args) => + check({ + prettier, + root, + dirs: ['src'], + accepts: (key) => key.endsWith('.ts'), + update: args.includes('--update'), + list: args.includes('--list'), + }), +); diff --git a/wiki/Development-environment.md b/wiki/Development-environment.md index d2f3894b9..13901d88b 100644 --- a/wiki/Development-environment.md +++ b/wiki/Development-environment.md @@ -128,7 +128,8 @@ These commands run across all workspaces at once and are the recommended way to | `npm test` | Run tests in shared, server, and client | | `npm run test:cov` | Run coverage for shared, server, client and plugin-sdk | | `npm run test:e2e` | Run end-to-end tests (server) | -| `npm run lint` | Lint shared, server, and client | +| `npm run lint` | Lint shared, server, and client (check-only) | +| `npm run lint:fix` | Apply ESLint's fixes in shared and server | | `npm run format` | Format shared, server, and client | | `npm run format:check` | Check formatting across all workspaces | @@ -147,7 +148,9 @@ The `@trek/shared` package is the single source of truth for code shared between | `npm run typecheck` | Type-check without emitting | | `npm run i18n:parity` | Check locale key parity | | `npm run i18n:parity:strict`| Strict locale key parity (CI gate) | -| `npm run lint` | Lint source | +| `npm run lint` | Lint source, check-only (CI gate) | +| `npm run lint:fix` | Lint source and apply the fixes | +| `npm run lint:format` | Every file outside the shrinking baseline is Prettier-formatted (CI gate) | | `npm run format` | Format source | | `npm run format:check` | Check formatting | | `npm run contracts:open` | Open shapes in the request contracts may only shrink (CI gate) | @@ -170,8 +173,9 @@ The `@trek/shared` package is the single source of truth for code shared between | `npm run test:e2e` | Run end-to-end tests | | `npm run test:watch` | Run tests in watch mode | | `npm run test:coverage` | Run tests with coverage report | -| `npm run lint` | Lint source | -| `npm run lint:check` | Lint everything, no `--fix` | +| `npm run lint` | Lint everything, check-only | +| `npm run lint:fix` | Lint everything and apply the fixes | +| `npm run lint:check` | Same as `npm run lint` | | `npm run lint:warnings` | ESLint, failing on any error and on warnings above the per-rule baseline (CI gate, replaces `lint:check`) | | `npm run check:plugin-facts` | Verify generated plugin facts (CI gate) | | `npm run lint:size` | No source file grows past its line limit or its baseline entry (CI gate) | @@ -182,6 +186,7 @@ The `@trek/shared` package is the single source of truth for code shared between | `npm run gen:db-types` | Regenerate the Kysely table types in `src/db/kysely/` from the migrated schema | | `npm run check:db-types` | Verify the generated Kysely table types match the migrations (CI gate) | | `npm run probe:pg` | Run the dialect helpers and repository statements against Postgres (CI job, needs `TREK_PG_PROBE_URL`) | +| `npm run lint:format` | Every file outside the shrinking baseline is Prettier-formatted (CI gate) | | `npm run format` | Format source | ### Client (`/client`)