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'), }),