From f4e518b2df3e9835950ea543cc8b80ba65f61afa Mon Sep 17 00:00:00 2001 From: Maurice Date: Sat, 10 Oct 2026 21:21:16 +0200 Subject: [PATCH] build(server): Prettier leaves the generated entity files to their generator src/db/entities/ is written by scripts/generate-entities.ts, and check:entities holds every file byte for byte to its output, which puts the MikroORM import first where Prettier's import sorting puts it last. Formatting them would fail that gate, and npm run format would do it on any run. lint:format no longer scans the directory (its 133 entries leave the format baseline) and a .prettierignore keeps the format script off it. --- server/.prettierignore | 3 + server/scripts/format-baseline.json | 133 ---------------------------- server/scripts/format-lint.mjs | 8 +- 3 files changed, 10 insertions(+), 134 deletions(-) create mode 100644 server/.prettierignore diff --git a/server/.prettierignore b/server/.prettierignore new file mode 100644 index 000000000..530a8ab95 --- /dev/null +++ b/server/.prettierignore @@ -0,0 +1,3 @@ +# Written by scripts/generate-entities.ts and held byte for byte to its output +# by check:entities, so Prettier must not rewrite them. +src/db/entities/ diff --git a/server/scripts/format-baseline.json b/server/scripts/format-baseline.json index ce1c30423..05b3e73ef 100644 --- a/server/scripts/format-baseline.json +++ b/server/scripts/format-baseline.json @@ -11,139 +11,6 @@ "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", diff --git a/server/scripts/format-lint.mjs b/server/scripts/format-lint.mjs index 29959574f..f371ababb 100644 --- a/server/scripts/format-lint.mjs +++ b/server/scripts/format-lint.mjs @@ -16,6 +16,8 @@ * npm run lint:format -- --update take formatted and deleted files off the list; * it never adds one * + * src/db/entities/ is generated and checked by check:entities instead. + * * 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. @@ -26,12 +28,16 @@ import { check } from '../../scripts/lib/format.mjs'; import { runCli } from '../../scripts/lib/ratchet.mjs'; const root = fileURLToPath(new URL('..', import.meta.url)); +// The entity files are written by scripts/generate-entities.ts and held byte for +// byte to its output by check:entities, so their layout is the generator's, not +// Prettier's. .prettierignore keeps `npm run format` off them for the same reason. +const GENERATED = 'src/db/entities/'; await runCli('lint:format', (args) => check({ prettier, root, dirs: ['src', 'tests'], - accepts: (key) => key.endsWith('.ts'), + accepts: (key) => key.endsWith('.ts') && !key.startsWith(GENERATED), update: args.includes('--update'), list: args.includes('--list'), }),