refactor: 🚨 Turn every linter rule on and fix issues (there were a LOT :3)

This commit is contained in:
Jesse Wierzbinski 2024-06-12 16:26:43 -10:00
parent 2e98859153
commit a1e02d0d78
No known key found for this signature in database
177 changed files with 1826 additions and 1248 deletions

View file

@ -23,13 +23,14 @@ export const setupDatabase = async (
if (
(e as Error).message ===
"Client has already been connected. You cannot reuse a client."
)
) {
return;
}
await logger.logError(LogLevel.CRITICAL, "Database", e as Error);
await logger.logError(LogLevel.Critical, "Database", e as Error);
await logger.log(
LogLevel.CRITICAL,
LogLevel.Critical,
"Database",
"Failed to connect to database. Please check your configuration.",
);
@ -38,23 +39,23 @@ export const setupDatabase = async (
// Migrate the database
info &&
(await logger.log(LogLevel.INFO, "Database", "Migrating database..."));
(await logger.log(LogLevel.Info, "Database", "Migrating database..."));
try {
await migrate(db, {
migrationsFolder: "./drizzle/migrations",
});
} catch (e) {
await logger.logError(LogLevel.CRITICAL, "Database", e as Error);
await logger.logError(LogLevel.Critical, "Database", e as Error);
await logger.log(
LogLevel.CRITICAL,
LogLevel.Critical,
"Database",
"Failed to migrate database. Please check your configuration.",
);
process.exit(1);
}
info && (await logger.log(LogLevel.INFO, "Database", "Database migrated"));
info && (await logger.log(LogLevel.Info, "Database", "Database migrated"));
};
export const db = drizzle(client, { schema });

View file

@ -14,7 +14,7 @@ import {
uniqueIndex,
uuid,
} from "drizzle-orm/pg-core";
import type { Source as APISource } from "~/types/mastodon/source";
import type { Source as apiSource } from "~/types/mastodon/source";
export const CaptchaChallenges = pgTable("CaptchaChallenges", {
id: uuid("id").default(sql`uuid_generate_v7()`).primaryKey().notNull(),
@ -386,7 +386,7 @@ export const Users = pgTable(
inbox: string;
outbox: string;
}> | null>(),
source: jsonb("source").notNull().$type<APISource>(),
source: jsonb("source").notNull().$type<apiSource>(),
avatar: text("avatar").notNull(),
header: text("header").notNull(),
createdAt: timestamp("created_at", { precision: 3, mode: "string" })
@ -508,100 +508,100 @@ export const ModTags = pgTable("ModTags", {
* - Owner: Only manage their own resources
*/
export enum RolePermissions {
MANAGE_NOTES = "notes",
MANAGE_OWN_NOTES = "owner:note",
VIEW_NOTES = "read:note",
VIEW_NOTE_LIKES = "read:note_likes",
VIEW_NOTE_BOOSTS = "read:note_boosts",
MANAGE_ACCOUNTS = "accounts",
MANAGE_OWN_ACCOUNT = "owner:account",
VIEW_ACCOUNT_FOLLOWS = "read:account_follows",
MANAGE_LIKES = "likes",
MANAGE_OWN_LIKES = "owner:like",
MANAGE_BOOSTS = "boosts",
MANAGE_OWN_BOOSTS = "owner:boost",
VIEW_ACCOUNTS = "read:account",
MANAGE_EMOJIS = "emojis",
VIEW_EMOJIS = "read:emoji",
MANAGE_OWN_EMOJIS = "owner:emoji",
MANAGE_MEDIA = "media",
MANAGE_OWN_MEDIA = "owner:media",
MANAGE_BLOCKS = "blocks",
MANAGE_OWN_BLOCKS = "owner:block",
MANAGE_FILTERS = "filters",
MANAGE_OWN_FILTERS = "owner:filter",
MANAGE_MUTES = "mutes",
MANAGE_OWN_MUTES = "owner:mute",
MANAGE_REPORTS = "reports",
MANAGE_OWN_REPORTS = "owner:report",
MANAGE_SETTINGS = "settings",
MANAGE_OWN_SETTINGS = "owner:settings",
MANAGE_ROLES = "roles",
MANAGE_NOTIFICATIONS = "notifications",
MANAGE_OWN_NOTIFICATIONS = "owner:notification",
MANAGE_FOLLOWS = "follows",
MANAGE_OWN_FOLLOWS = "owner:follow",
MANAGE_OWN_APPS = "owner:app",
SEARCH = "search",
VIEW_PUBLIC_TIMELINES = "public_timelines",
VIEW_PRIVATE_TIMELINES = "private_timelines",
IGNORE_RATE_LIMITS = "ignore_rate_limits",
IMPERSONATE = "impersonate",
MANAGE_INSTANCE = "instance",
MANAGE_INSTANCE_FEDERATION = "instance:federation",
MANAGE_INSTANCE_SETTINGS = "instance:settings",
ManageNotes = "notes",
ManageOwnNotes = "owner:note",
ViewNotes = "read:note",
ViewNoteLikes = "read:note_likes",
ViewNoteBoosts = "read:note_boosts",
ManageAccounts = "accounts",
ManageOwnAccount = "owner:account",
ViewAccountFollows = "read:account_follows",
ManageLikes = "likes",
ManageOwnLikes = "owner:like",
ManageBoosts = "boosts",
ManageOwnBoosts = "owner:boost",
ViewAccounts = "read:account",
ManageEmojis = "emojis",
ViewEmojis = "read:emoji",
ManageOwnEmojis = "owner:emoji",
ManageMedia = "media",
ManageOwnMedia = "owner:media",
ManageBlocks = "blocks",
ManageOwnBlocks = "owner:block",
ManageFilters = "filters",
ManageOwnFilters = "owner:filter",
ManageMutes = "mutes",
ManageOwnMutes = "owner:mute",
ManageReports = "reports",
ManageOwnReports = "owner:report",
ManageSettings = "settings",
ManageOwnSettings = "owner:settings",
ManageRoles = "roles",
ManageNotifications = "notifications",
ManageOwnNotifications = "owner:notification",
ManageFollows = "follows",
ManageOwnFollows = "owner:follow",
ManageOwnApps = "owner:app",
Search = "search",
ViewPublicTimelines = "public_timelines",
ViewPrimateTimelines = "private_timelines",
IgnoreRateLimits = "ignore_rate_limits",
Impersonate = "impersonate",
ManageInstance = "instance",
ManageInstanceFederation = "instance:federation",
ManageInstanceSettings = "instance:settings",
/** Users who do not have this permission will not be able to login! */
OAUTH = "oauth",
OAuth = "oauth",
}
export const DEFAULT_ROLES = [
RolePermissions.MANAGE_OWN_NOTES,
RolePermissions.VIEW_NOTES,
RolePermissions.VIEW_NOTE_LIKES,
RolePermissions.VIEW_NOTE_BOOSTS,
RolePermissions.MANAGE_OWN_ACCOUNT,
RolePermissions.VIEW_ACCOUNT_FOLLOWS,
RolePermissions.MANAGE_OWN_LIKES,
RolePermissions.MANAGE_OWN_BOOSTS,
RolePermissions.VIEW_ACCOUNTS,
RolePermissions.MANAGE_OWN_EMOJIS,
RolePermissions.VIEW_EMOJIS,
RolePermissions.MANAGE_OWN_MEDIA,
RolePermissions.MANAGE_OWN_BLOCKS,
RolePermissions.MANAGE_OWN_FILTERS,
RolePermissions.MANAGE_OWN_MUTES,
RolePermissions.MANAGE_OWN_REPORTS,
RolePermissions.MANAGE_OWN_SETTINGS,
RolePermissions.MANAGE_OWN_NOTIFICATIONS,
RolePermissions.MANAGE_OWN_FOLLOWS,
RolePermissions.MANAGE_OWN_APPS,
RolePermissions.SEARCH,
RolePermissions.VIEW_PUBLIC_TIMELINES,
RolePermissions.VIEW_PRIVATE_TIMELINES,
RolePermissions.OAUTH,
RolePermissions.ManageOwnNotes,
RolePermissions.ViewNotes,
RolePermissions.ViewNoteLikes,
RolePermissions.ViewNoteBoosts,
RolePermissions.ManageOwnAccount,
RolePermissions.ViewAccountFollows,
RolePermissions.ManageOwnLikes,
RolePermissions.ManageOwnBoosts,
RolePermissions.ViewAccounts,
RolePermissions.ManageOwnEmojis,
RolePermissions.ViewEmojis,
RolePermissions.ManageOwnMedia,
RolePermissions.ManageOwnBlocks,
RolePermissions.ManageOwnFilters,
RolePermissions.ManageOwnMutes,
RolePermissions.ManageOwnReports,
RolePermissions.ManageOwnSettings,
RolePermissions.ManageOwnNotifications,
RolePermissions.ManageOwnFollows,
RolePermissions.ManageOwnApps,
RolePermissions.Search,
RolePermissions.ViewPublicTimelines,
RolePermissions.ViewPrimateTimelines,
RolePermissions.OAuth,
];
export const ADMIN_ROLES = [
...DEFAULT_ROLES,
RolePermissions.MANAGE_NOTES,
RolePermissions.MANAGE_ACCOUNTS,
RolePermissions.MANAGE_LIKES,
RolePermissions.MANAGE_BOOSTS,
RolePermissions.MANAGE_EMOJIS,
RolePermissions.MANAGE_MEDIA,
RolePermissions.MANAGE_BLOCKS,
RolePermissions.MANAGE_FILTERS,
RolePermissions.MANAGE_MUTES,
RolePermissions.MANAGE_REPORTS,
RolePermissions.MANAGE_SETTINGS,
RolePermissions.MANAGE_ROLES,
RolePermissions.MANAGE_NOTIFICATIONS,
RolePermissions.MANAGE_FOLLOWS,
RolePermissions.IMPERSONATE,
RolePermissions.IGNORE_RATE_LIMITS,
RolePermissions.MANAGE_INSTANCE,
RolePermissions.MANAGE_INSTANCE_FEDERATION,
RolePermissions.MANAGE_INSTANCE_SETTINGS,
RolePermissions.ManageNotes,
RolePermissions.ManageAccounts,
RolePermissions.ManageLikes,
RolePermissions.ManageBoosts,
RolePermissions.ManageEmojis,
RolePermissions.ManageMedia,
RolePermissions.ManageBlocks,
RolePermissions.ManageFilters,
RolePermissions.ManageMutes,
RolePermissions.ManageReports,
RolePermissions.ManageSettings,
RolePermissions.ManageRoles,
RolePermissions.ManageNotifications,
RolePermissions.ManageFollows,
RolePermissions.Impersonate,
RolePermissions.IgnoreRateLimits,
RolePermissions.ManageInstance,
RolePermissions.ManageInstanceFederation,
RolePermissions.ManageInstanceSettings,
];
export const Roles = pgTable("Roles", {