3
0
Fork 0
mirror of https://github.com/ZeppelinBot/Zeppelin.git synced 2025-03-14 21:31:50 +00:00

refactor: convert /backend to ESM

This commit is contained in:
Dragory 2024-04-09 20:57:18 +03:00
parent 31d74c05aa
commit 5772e27cda
No known key found for this signature in database
766 changed files with 3473 additions and 3500 deletions

View file

@ -3,6 +3,7 @@
"version": "0.0.1", "version": "0.0.1",
"description": "", "description": "",
"private": true, "private": true,
"type": "module",
"scripts": { "scripts": {
"watch": "tsc-watch --build --onSuccess \"node start-dev.js\"", "watch": "tsc-watch --build --onSuccess \"node start-dev.js\"",
"watch-yaml-parse-test": "tsc-watch --build --onSuccess \"node dist/yamlParseTest.js\"", "watch-yaml-parse-test": "tsc-watch --build --onSuccess \"node dist/yamlParseTest.js\"",
@ -48,12 +49,7 @@
"knub": "^32.0.0-next.21", "knub": "^32.0.0-next.21",
"knub-command-manager": "^9.1.0", "knub-command-manager": "^9.1.0",
"last-commit-log": "^2.1.0", "last-commit-log": "^2.1.0",
"lodash.chunk": "^4.2.0", "lodash": "^4.17.21",
"lodash.clonedeep": "^4.5.0",
"lodash.difference": "^4.5.0",
"lodash.intersection": "^4.4.0",
"lodash.isequal": "^4.5.0",
"lodash.pick": "^4.4.0",
"moment-timezone": "^0.5.21", "moment-timezone": "^0.5.21",
"multer": "^1.4.5-lts.1", "multer": "^1.4.5-lts.1",
"mysql2": "^3.9.3", "mysql2": "^3.9.3",
@ -87,7 +83,6 @@
"@types/lodash.at": "^4.6.3", "@types/lodash.at": "^4.6.3",
"@types/moment-timezone": "^0.5.6", "@types/moment-timezone": "^0.5.6",
"@types/multer": "^1.4.7", "@types/multer": "^1.4.7",
"@types/node": "^18.16.3",
"@types/passport": "^1.0.0", "@types/passport": "^1.0.0",
"@types/passport-oauth2": "^1.4.8", "@types/passport-oauth2": "^1.4.8",
"@types/passport-strategy": "^0.2.35", "@types/passport-strategy": "^0.2.35",

View file

@ -1,4 +1,4 @@
import { SECONDS } from "./utils"; import { SECONDS } from "./utils.js";
type InternalQueueFn = () => Promise<void>; type InternalQueueFn = () => Promise<void>;
type AnyFn = (...args: any[]) => any; type AnyFn = (...args: any[]) => any;

View file

@ -1,4 +1,4 @@
import { Queue } from "./Queue"; import { Queue } from "./Queue.js";
type Listener = (...args: any[]) => void; type Listener = (...args: any[]) => void;

View file

@ -1,7 +1,7 @@
import { EventEmitter } from "events"; import { EventEmitter } from "events";
import { CooldownManager } from "knub"; import { CooldownManager } from "knub";
import { RegExpWorker, TimeoutError } from "regexp-worker"; import { RegExpWorker, TimeoutError } from "regexp-worker";
import { MINUTES, SECONDS } from "./utils"; import { MINUTES, SECONDS } from "./utils.js";
import Timeout = NodeJS.Timeout; import Timeout = NodeJS.Timeout;
const isTimeoutError = (a): a is TimeoutError => { const isTimeoutError = (a): a is TimeoutError => {

View file

@ -1,7 +1,7 @@
import express, { Request, Response } from "express"; import express, { Request, Response } from "express";
import moment from "moment-timezone"; import moment from "moment-timezone";
import { GuildArchives } from "../data/GuildArchives"; import { GuildArchives } from "../data/GuildArchives.js";
import { notFound } from "./responses"; import { notFound } from "./responses.js";
export function initArchives(router: express.Router) { export function initArchives(router: express.Router) {
const archives = new GuildArchives(null); const archives = new GuildArchives(null);

View file

@ -1,15 +1,15 @@
import express, { Request, Response } from "express"; import express, { Request, Response } from "express";
import https from "https"; import https from "https";
import pick from "lodash.pick"; import pick from "lodash/pick.js";
import passport from "passport"; import passport from "passport";
import { Strategy as CustomStrategy } from "passport-custom"; import { Strategy as CustomStrategy } from "passport-custom";
import OAuth2Strategy from "passport-oauth2"; import OAuth2Strategy from "passport-oauth2";
import { ApiLogins } from "../data/ApiLogins"; import { ApiLogins } from "../data/ApiLogins.js";
import { ApiPermissionAssignments } from "../data/ApiPermissionAssignments"; import { ApiPermissionAssignments } from "../data/ApiPermissionAssignments.js";
import { ApiUserInfo } from "../data/ApiUserInfo"; import { ApiUserInfo } from "../data/ApiUserInfo.js";
import { ApiUserInfoData } from "../data/entities/ApiUserInfo"; import { ApiUserInfoData } from "../data/entities/ApiUserInfo.js";
import { env } from "../env"; import { env } from "../env.js";
import { ok } from "./responses"; import { ok } from "./responses.js";
interface IPassportApiUser { interface IPassportApiUser {
apiKey: string; apiKey: string;

View file

@ -1,9 +1,9 @@
import express from "express"; import express from "express";
import z from "zod"; import z from "zod";
import { guildPlugins } from "../plugins/availablePlugins"; import { guildPlugins } from "../plugins/availablePlugins.js";
import { guildPluginInfo } from "../plugins/pluginInfo"; import { guildPluginInfo } from "../plugins/pluginInfo.js";
import { indentLines } from "../utils"; import { indentLines } from "../utils.js";
import { notFound } from "./responses"; import { notFound } from "./responses.js";
function isZodObject(schema: z.ZodTypeAny): schema is z.ZodObject<any> { function isZodObject(schema: z.ZodTypeAny): schema is z.ZodObject<any> {
return schema._def.typeName === "ZodObject"; return schema._def.typeName === "ZodObject";

View file

@ -1,20 +1,22 @@
import { ApiPermissions } from "@zeppelinbot/shared"; import { ApiPermissions } from "@zeppelinbot/shared";
import express, { Request, Response } from "express"; import express, { Request, Response } from "express";
import { YAMLException } from "js-yaml"; import jsYaml from "js-yaml";
import moment from "moment-timezone"; import moment from "moment-timezone";
import { Queue } from "../Queue"; import { Queue } from "../Queue.js";
import { validateGuildConfig } from "../configValidator"; import { validateGuildConfig } from "../configValidator.js";
import { AllowedGuilds } from "../data/AllowedGuilds"; import { AllowedGuilds } from "../data/AllowedGuilds.js";
import { ApiAuditLog } from "../data/ApiAuditLog"; import { ApiAuditLog } from "../data/ApiAuditLog.js";
import { ApiPermissionAssignments, ApiPermissionTypes } from "../data/ApiPermissionAssignments"; import { ApiPermissionAssignments, ApiPermissionTypes } from "../data/ApiPermissionAssignments.js";
import { Configs } from "../data/Configs"; import { Configs } from "../data/Configs.js";
import { AuditLogEventTypes } from "../data/apiAuditLogTypes"; import { AuditLogEventTypes } from "../data/apiAuditLogTypes.js";
import { isSnowflake } from "../utils"; import { isSnowflake } from "../utils.js";
import { loadYamlSafely } from "../utils/loadYamlSafely"; import { loadYamlSafely } from "../utils/loadYamlSafely.js";
import { ObjectAliasError } from "../utils/validateNoObjectAliases"; import { ObjectAliasError } from "../utils/validateNoObjectAliases.js";
import { apiTokenAuthHandlers } from "./auth"; import { apiTokenAuthHandlers } from "./auth.js";
import { hasGuildPermission, requireGuildPermission } from "./permissions"; import { hasGuildPermission, requireGuildPermission } from "./permissions.js";
import { clientError, ok, serverError, unauthorized } from "./responses"; import { clientError, ok, serverError, unauthorized } from "./responses.js";
const YAMLException = jsYaml.YAMLException;
const apiPermissionAssignments = new ApiPermissionAssignments(); const apiPermissionAssignments = new ApiPermissionAssignments();
const auditLog = new ApiAuditLog(); const auditLog = new ApiAuditLog();

View file

@ -2,12 +2,12 @@ import { ApiPermissions } from "@zeppelinbot/shared";
import express, { Request, Response } from "express"; import express, { Request, Response } from "express";
import moment from "moment-timezone"; import moment from "moment-timezone";
import { z } from "zod"; import { z } from "zod";
import { GuildCases } from "../../data/GuildCases"; import { GuildCases } from "../../data/GuildCases.js";
import { Case } from "../../data/entities/Case"; import { Case } from "../../data/entities/Case.js";
import { MINUTES } from "../../utils"; import { MINUTES } from "../../utils.js";
import { requireGuildPermission } from "../permissions"; import { requireGuildPermission } from "../permissions.js";
import { rateLimit } from "../rateLimits"; import { rateLimit } from "../rateLimits.js";
import { clientError, ok } from "../responses"; import { clientError, ok } from "../responses.js";
const caseHandlingModeSchema = z.union([ const caseHandlingModeSchema = z.union([
z.literal("replace"), z.literal("replace"),

View file

@ -1,7 +1,7 @@
import express from "express"; import express from "express";
import { apiTokenAuthHandlers } from "../auth"; import { apiTokenAuthHandlers } from "../auth.js";
import { initGuildsImportExportAPI } from "./importExport"; import { initGuildsImportExportAPI } from "./importExport.js";
import { initGuildsMiscAPI } from "./misc"; import { initGuildsMiscAPI } from "./misc.js";
export function initGuildsAPI(router: express.Router) { export function initGuildsAPI(router: express.Router) {
const guildRouter = express.Router(); const guildRouter = express.Router();

View file

@ -1,19 +1,21 @@
import { ApiPermissions } from "@zeppelinbot/shared"; import { ApiPermissions } from "@zeppelinbot/shared";
import express, { Request, Response } from "express"; import express, { Request, Response } from "express";
import { YAMLException } from "js-yaml"; import jsYaml from "js-yaml";
import moment from "moment-timezone"; import moment from "moment-timezone";
import { Queue } from "../../Queue"; import { Queue } from "../../Queue.js";
import { validateGuildConfig } from "../../configValidator"; import { validateGuildConfig } from "../../configValidator.js";
import { AllowedGuilds } from "../../data/AllowedGuilds"; import { AllowedGuilds } from "../../data/AllowedGuilds.js";
import { ApiAuditLog } from "../../data/ApiAuditLog"; import { ApiAuditLog } from "../../data/ApiAuditLog.js";
import { ApiPermissionAssignments, ApiPermissionTypes } from "../../data/ApiPermissionAssignments"; import { ApiPermissionAssignments, ApiPermissionTypes } from "../../data/ApiPermissionAssignments.js";
import { Configs } from "../../data/Configs"; import { Configs } from "../../data/Configs.js";
import { AuditLogEventTypes } from "../../data/apiAuditLogTypes"; import { AuditLogEventTypes } from "../../data/apiAuditLogTypes.js";
import { isSnowflake } from "../../utils"; import { isSnowflake } from "../../utils.js";
import { loadYamlSafely } from "../../utils/loadYamlSafely"; import { loadYamlSafely } from "../../utils/loadYamlSafely.js";
import { ObjectAliasError } from "../../utils/validateNoObjectAliases"; import { ObjectAliasError } from "../../utils/validateNoObjectAliases.js";
import { hasGuildPermission, requireGuildPermission } from "../permissions"; import { hasGuildPermission, requireGuildPermission } from "../permissions.js";
import { clientError, ok, serverError, unauthorized } from "../responses"; import { clientError, ok, serverError, unauthorized } from "../responses.js";
const YAMLException = jsYaml.YAMLException;
const apiPermissionAssignments = new ApiPermissionAssignments(); const apiPermissionAssignments = new ApiPermissionAssignments();
const auditLog = new ApiAuditLog(); const auditLog = new ApiAuditLog();

View file

@ -1,10 +1,10 @@
// KEEP THIS AS FIRST IMPORT // KEEP THIS AS FIRST IMPORT
// See comment in module for details // See comment in module for details
import "../threadsSignalFix"; import "../threadsSignalFix.js";
import { connect } from "../data/db"; import { connect } from "../data/db.js";
import { env } from "../env"; import { env } from "../env.js";
import { setIsAPI } from "../globals"; import { setIsAPI } from "../globals.js";
if (!env.KEY) { if (!env.KEY) {
// tslint:disable-next-line:no-console // tslint:disable-next-line:no-console

View file

@ -1,8 +1,8 @@
import { ApiPermissions, hasPermission, permissionArrToSet } from "@zeppelinbot/shared"; import { ApiPermissions, hasPermission, permissionArrToSet } from "@zeppelinbot/shared";
import { Request, Response } from "express"; import { Request, Response } from "express";
import { ApiPermissionAssignments } from "../data/ApiPermissionAssignments"; import { ApiPermissionAssignments } from "../data/ApiPermissionAssignments.js";
import { isStaff } from "../staff"; import { isStaff } from "../staff.js";
import { unauthorized } from "./responses"; import { unauthorized } from "./responses.js";
const apiPermissionAssignments = new ApiPermissionAssignments(); const apiPermissionAssignments = new ApiPermissionAssignments();

View file

@ -1,5 +1,5 @@
import { Request, Response } from "express"; import { Request, Response } from "express";
import { error } from "./responses"; import { error } from "./responses.js";
const lastRequestsByKey: Map<string, number> = new Map(); const lastRequestsByKey: Map<string, number> = new Map();

View file

@ -1,6 +1,6 @@
import express, { Request, Response } from "express"; import express, { Request, Response } from "express";
import { isStaff } from "../staff"; import { isStaff } from "../staff.js";
import { apiTokenAuthHandlers } from "./auth"; import { apiTokenAuthHandlers } from "./auth.js";
export function initStaff(app: express.Express) { export function initStaff(app: express.Express) {
const staffRouter = express.Router(); const staffRouter = express.Router();

View file

@ -2,13 +2,13 @@ import cors from "cors";
import express from "express"; import express from "express";
import multer from "multer"; import multer from "multer";
import { TokenError } from "passport-oauth2"; import { TokenError } from "passport-oauth2";
import { env } from "../env"; import { env } from "../env.js";
import { initArchives } from "./archives"; import { initArchives } from "./archives.js";
import { initAuth } from "./auth"; import { initAuth } from "./auth.js";
import { initDocs } from "./docs"; import { initDocs } from "./docs.js";
import { initGuildsAPI } from "./guilds/index"; import { initGuildsAPI } from "./guilds/index.js";
import { clientError, error, notFound } from "./responses"; import { clientError, error, notFound } from "./responses.js";
import { startBackgroundTasks } from "./tasks"; import { startBackgroundTasks } from "./tasks.js";
const apiPathPrefix = env.API_PATH_PREFIX || (env.NODE_ENV === "development" ? "/api" : ""); const apiPathPrefix = env.API_PATH_PREFIX || (env.NODE_ENV === "development" ? "/api" : "");

View file

@ -1,5 +1,5 @@
import { ApiPermissionAssignments } from "../data/ApiPermissionAssignments"; import { ApiPermissionAssignments } from "../data/ApiPermissionAssignments.js";
import { MINUTES } from "../utils"; import { MINUTES } from "../utils.js";
export function startBackgroundTasks() { export function startBackgroundTasks() {
// Clear expired API permissions every minute // Clear expired API permissions every minute

View file

@ -24,9 +24,9 @@ import {
resolveUserId, resolveUserId,
roleMentionRegex, roleMentionRegex,
UnknownUser, UnknownUser,
} from "./utils"; } from "./utils.js";
import { isValidTimezone } from "./utils/isValidTimezone"; import { isValidTimezone } from "./utils/isValidTimezone.js";
import { MessageTarget, resolveMessageTarget } from "./utils/resolveMessageTarget"; import { MessageTarget, resolveMessageTarget } from "./utils/resolveMessageTarget.js";
export const commandTypes = { export const commandTypes = {
...messageCommandBaseTypeConverters, ...messageCommandBaseTypeConverters,

View file

@ -1,9 +1,9 @@
import { ConfigValidationError, GuildPluginBlueprint, PluginConfigManager } from "knub"; import { ConfigValidationError, GuildPluginBlueprint, PluginConfigManager } from "knub";
import moment from "moment-timezone"; import moment from "moment-timezone";
import { ZodError } from "zod"; import { ZodError } from "zod";
import { guildPlugins } from "./plugins/availablePlugins"; import { guildPlugins } from "./plugins/availablePlugins.js";
import { ZeppelinGuildConfig, zZeppelinGuildConfig } from "./types"; import { ZeppelinGuildConfig, zZeppelinGuildConfig } from "./types.js";
import { formatZodIssue } from "./utils/formatZodIssue"; import { formatZodIssue } from "./utils/formatZodIssue.js";
const pluginNameToPlugin = new Map<string, GuildPluginBlueprint<any, any>>(); const pluginNameToPlugin = new Map<string, GuildPluginBlueprint<any, any>>();
for (const plugin of guildPlugins) { for (const plugin of guildPlugins) {

View file

@ -1,10 +1,10 @@
import moment from "moment-timezone"; import moment from "moment-timezone";
import { Repository } from "typeorm"; import { Repository } from "typeorm";
import { DBDateFormat } from "../utils"; import { DBDateFormat } from "../utils.js";
import { ApiPermissionTypes } from "./ApiPermissionAssignments"; import { ApiPermissionTypes } from "./ApiPermissionAssignments.js";
import { BaseRepository } from "./BaseRepository"; import { BaseRepository } from "./BaseRepository.js";
import { dataSource } from "./dataSource"; import { dataSource } from "./dataSource.js";
import { AllowedGuild } from "./entities/AllowedGuild"; import { AllowedGuild } from "./entities/AllowedGuild.js";
export class AllowedGuilds extends BaseRepository { export class AllowedGuilds extends BaseRepository {
private allowedGuilds: Repository<AllowedGuild>; private allowedGuilds: Repository<AllowedGuild>;

View file

@ -1,8 +1,8 @@
import { Repository } from "typeorm/index"; import { Repository } from "typeorm";
import { BaseRepository } from "./BaseRepository"; import { BaseRepository } from "./BaseRepository.js";
import { AuditLogEventData, AuditLogEventType } from "./apiAuditLogTypes"; import { AuditLogEventData, AuditLogEventType } from "./apiAuditLogTypes.js";
import { dataSource } from "./dataSource"; import { dataSource } from "./dataSource.js";
import { ApiAuditLogEntry } from "./entities/ApiAuditLogEntry"; import { ApiAuditLogEntry } from "./entities/ApiAuditLogEntry.js";
export class ApiAuditLog extends BaseRepository { export class ApiAuditLog extends BaseRepository {
private auditLog: Repository<ApiAuditLogEntry<any>>; private auditLog: Repository<ApiAuditLogEntry<any>>;

View file

@ -3,10 +3,10 @@ import moment from "moment-timezone";
import { Repository } from "typeorm"; import { Repository } from "typeorm";
// tslint:disable-next-line:no-submodule-imports // tslint:disable-next-line:no-submodule-imports
import { v4 as uuidv4 } from "uuid"; import { v4 as uuidv4 } from "uuid";
import { DAYS, DBDateFormat } from "../utils"; import { DAYS, DBDateFormat } from "../utils.js";
import { BaseRepository } from "./BaseRepository"; import { BaseRepository } from "./BaseRepository.js";
import { dataSource } from "./dataSource"; import { dataSource } from "./dataSource.js";
import { ApiLogin } from "./entities/ApiLogin"; import { ApiLogin } from "./entities/ApiLogin.js";
const LOGIN_EXPIRY_TIME = 1 * DAYS; const LOGIN_EXPIRY_TIME = 1 * DAYS;

View file

@ -1,10 +1,10 @@
import { ApiPermissions } from "@zeppelinbot/shared"; import { ApiPermissions } from "@zeppelinbot/shared";
import { Repository } from "typeorm"; import { Repository } from "typeorm";
import { ApiAuditLog } from "./ApiAuditLog"; import { ApiAuditLog } from "./ApiAuditLog.js";
import { BaseRepository } from "./BaseRepository"; import { BaseRepository } from "./BaseRepository.js";
import { AuditLogEventTypes } from "./apiAuditLogTypes"; import { AuditLogEventTypes } from "./apiAuditLogTypes.js";
import { dataSource } from "./dataSource"; import { dataSource } from "./dataSource.js";
import { ApiPermissionAssignment } from "./entities/ApiPermissionAssignment"; import { ApiPermissionAssignment } from "./entities/ApiPermissionAssignment.js";
export enum ApiPermissionTypes { export enum ApiPermissionTypes {
User = "USER", User = "USER",

View file

@ -1,9 +1,9 @@
import moment from "moment-timezone"; import moment from "moment-timezone";
import { Repository } from "typeorm"; import { Repository } from "typeorm";
import { DBDateFormat } from "../utils"; import { DBDateFormat } from "../utils.js";
import { BaseRepository } from "./BaseRepository"; import { BaseRepository } from "./BaseRepository.js";
import { dataSource } from "./dataSource"; import { dataSource } from "./dataSource.js";
import { ApiUserInfoData, ApiUserInfo as ApiUserInfoEntity } from "./entities/ApiUserInfo"; import { ApiUserInfoData, ApiUserInfo as ApiUserInfoEntity } from "./entities/ApiUserInfo.js";
export class ApiUserInfo extends BaseRepository { export class ApiUserInfo extends BaseRepository {
private apiUserInfo: Repository<ApiUserInfoEntity>; private apiUserInfo: Repository<ApiUserInfoEntity>;

View file

@ -1,7 +1,7 @@
import { Repository } from "typeorm"; import { Repository } from "typeorm";
import { BaseRepository } from "./BaseRepository"; import { BaseRepository } from "./BaseRepository.js";
import { dataSource } from "./dataSource"; import { dataSource } from "./dataSource.js";
import { ArchiveEntry } from "./entities/ArchiveEntry"; import { ArchiveEntry } from "./entities/ArchiveEntry.js";
export class Archives extends BaseRepository { export class Archives extends BaseRepository {
protected archives: Repository<ArchiveEntry>; protected archives: Repository<ArchiveEntry>;

View file

@ -1,4 +1,4 @@
import { BaseRepository } from "./BaseRepository"; import { BaseRepository } from "./BaseRepository.js";
export class BaseGuildRepository<TEntity = unknown> extends BaseRepository<TEntity> { export class BaseGuildRepository<TEntity = unknown> extends BaseRepository<TEntity> {
private static guildInstances: Map<string, any>; private static guildInstances: Map<string, any>;

View file

@ -1,4 +1,4 @@
import { asyncMap } from "../utils/async"; import { asyncMap } from "../utils/async.js";
export class BaseRepository<TEntity = unknown> { export class BaseRepository<TEntity = unknown> {
private nextRelations: string[]; private nextRelations: string[];

View file

@ -1,10 +1,10 @@
import { Repository } from "typeorm"; import { Repository } from "typeorm";
import { isAPI } from "../globals"; import { isAPI } from "../globals.js";
import { HOURS, SECONDS } from "../utils"; import { HOURS, SECONDS } from "../utils.js";
import { BaseRepository } from "./BaseRepository"; import { BaseRepository } from "./BaseRepository.js";
import { cleanupConfigs } from "./cleanup/configs"; import { cleanupConfigs } from "./cleanup/configs.js";
import { dataSource } from "./dataSource"; import { dataSource } from "./dataSource.js";
import { Config } from "./entities/Config"; import { Config } from "./entities/Config.js";
const CLEANUP_INTERVAL = 1 * HOURS; const CLEANUP_INTERVAL = 1 * HOURS;

View file

@ -1,7 +1,7 @@
import { Repository } from "typeorm"; import { Repository } from "typeorm";
import { BaseGuildRepository } from "./BaseGuildRepository"; import { BaseGuildRepository } from "./BaseGuildRepository.js";
import { dataSource } from "./dataSource"; import { dataSource } from "./dataSource.js";
import { AntiraidLevel } from "./entities/AntiraidLevel"; import { AntiraidLevel } from "./entities/AntiraidLevel.js";
export class GuildAntiraidLevels extends BaseGuildRepository { export class GuildAntiraidLevels extends BaseGuildRepository {
protected antiraidLevels: Repository<AntiraidLevel>; protected antiraidLevels: Repository<AntiraidLevel>;

View file

@ -1,15 +1,15 @@
import { Guild, Snowflake } from "discord.js"; import { Guild, Snowflake } from "discord.js";
import moment from "moment-timezone"; import moment from "moment-timezone";
import { Repository } from "typeorm"; import { Repository } from "typeorm";
import { TemplateSafeValueContainer, renderTemplate } from "../templateFormatter"; import { TemplateSafeValueContainer, renderTemplate } from "../templateFormatter.js";
import { renderUsername, trimLines } from "../utils"; import { renderUsername, trimLines } from "../utils.js";
import { decrypt, encrypt } from "../utils/crypt"; import { decrypt, encrypt } from "../utils/crypt.js";
import { isDefaultSticker } from "../utils/isDefaultSticker"; import { isDefaultSticker } from "../utils/isDefaultSticker.js";
import { channelToTemplateSafeChannel, guildToTemplateSafeGuild } from "../utils/templateSafeObjects"; import { channelToTemplateSafeChannel, guildToTemplateSafeGuild } from "../utils/templateSafeObjects.js";
import { BaseGuildRepository } from "./BaseGuildRepository"; import { BaseGuildRepository } from "./BaseGuildRepository.js";
import { dataSource } from "./dataSource"; import { dataSource } from "./dataSource.js";
import { ArchiveEntry } from "./entities/ArchiveEntry"; import { ArchiveEntry } from "./entities/ArchiveEntry.js";
import { SavedMessage } from "./entities/SavedMessage"; import { SavedMessage } from "./entities/SavedMessage.js";
const DEFAULT_EXPIRY_DAYS = 30; const DEFAULT_EXPIRY_DAYS = 30;

View file

@ -1,7 +1,7 @@
import { Repository } from "typeorm"; import { Repository } from "typeorm";
import { BaseGuildRepository } from "./BaseGuildRepository"; import { BaseGuildRepository } from "./BaseGuildRepository.js";
import { dataSource } from "./dataSource"; import { dataSource } from "./dataSource.js";
import { AutoReaction } from "./entities/AutoReaction"; import { AutoReaction } from "./entities/AutoReaction.js";
export class GuildAutoReactions extends BaseGuildRepository { export class GuildAutoReactions extends BaseGuildRepository {
private autoReactions: Repository<AutoReaction>; private autoReactions: Repository<AutoReaction>;

View file

@ -1,6 +1,6 @@
import { getRepository, Repository } from "typeorm"; import { getRepository, Repository } from "typeorm";
import { BaseGuildRepository } from "./BaseGuildRepository"; import { BaseGuildRepository } from "./BaseGuildRepository.js";
import { ButtonRole } from "./entities/ButtonRole"; import { ButtonRole } from "./entities/ButtonRole.js";
export class GuildButtonRoles extends BaseGuildRepository { export class GuildButtonRoles extends BaseGuildRepository {
private buttonRoles: Repository<ButtonRole>; private buttonRoles: Repository<ButtonRole>;

View file

@ -1,11 +1,11 @@
import { In, InsertResult, Repository } from "typeorm"; import { In, InsertResult, Repository } from "typeorm";
import { Queue } from "../Queue"; import { Queue } from "../Queue.js";
import { chunkArray } from "../utils"; import { chunkArray } from "../utils.js";
import { BaseGuildRepository } from "./BaseGuildRepository"; import { BaseGuildRepository } from "./BaseGuildRepository.js";
import { CaseTypes } from "./CaseTypes"; import { CaseTypes } from "./CaseTypes.js";
import { dataSource } from "./dataSource"; import { dataSource } from "./dataSource.js";
import { Case } from "./entities/Case"; import { Case } from "./entities/Case.js";
import { CaseNote } from "./entities/CaseNote"; import { CaseNote } from "./entities/CaseNote.js";
export class GuildCases extends BaseGuildRepository { export class GuildCases extends BaseGuildRepository {
private cases: Repository<Case>; private cases: Repository<Case>;

View file

@ -1,7 +1,7 @@
import { DeleteResult, InsertResult, Repository } from "typeorm"; import { DeleteResult, InsertResult, Repository } from "typeorm";
import { BaseGuildRepository } from "./BaseGuildRepository"; import { BaseGuildRepository } from "./BaseGuildRepository.js";
import { dataSource } from "./dataSource"; import { dataSource } from "./dataSource.js";
import { ContextMenuLink } from "./entities/ContextMenuLink"; import { ContextMenuLink } from "./entities/ContextMenuLink.js";
export class GuildContextMenuLinks extends BaseGuildRepository { export class GuildContextMenuLinks extends BaseGuildRepository {
private contextLinks: Repository<ContextMenuLink>; private contextLinks: Repository<ContextMenuLink>;

View file

@ -1,13 +1,13 @@
import moment from "moment-timezone"; import moment from "moment-timezone";
import { FindOptionsWhere, In, IsNull, Not, Repository } from "typeorm"; import { FindOptionsWhere, In, IsNull, Not, Repository } from "typeorm";
import { Queue } from "../Queue"; import { Queue } from "../Queue.js";
import { DAYS, DBDateFormat, HOURS, MINUTES } from "../utils"; import { DAYS, DBDateFormat, HOURS, MINUTES } from "../utils.js";
import { BaseGuildRepository } from "./BaseGuildRepository"; import { BaseGuildRepository } from "./BaseGuildRepository.js";
import { dataSource } from "./dataSource"; import { dataSource } from "./dataSource.js";
import { Counter } from "./entities/Counter"; import { Counter } from "./entities/Counter.js";
import { CounterTrigger, TriggerComparisonOp, isValidCounterComparisonOp } from "./entities/CounterTrigger"; import { CounterTrigger, TriggerComparisonOp, isValidCounterComparisonOp } from "./entities/CounterTrigger.js";
import { CounterTriggerState } from "./entities/CounterTriggerState"; import { CounterTriggerState } from "./entities/CounterTriggerState.js";
import { CounterValue } from "./entities/CounterValue"; import { CounterValue } from "./entities/CounterValue.js";
const DELETE_UNUSED_COUNTERS_AFTER = 1 * DAYS; const DELETE_UNUSED_COUNTERS_AFTER = 1 * DAYS;
const DELETE_UNUSED_COUNTER_TRIGGERS_AFTER = 1 * DAYS; const DELETE_UNUSED_COUNTER_TRIGGERS_AFTER = 1 * DAYS;

View file

@ -1,8 +1,8 @@
import { Mute } from "./entities/Mute"; import { Mute } from "./entities/Mute.js";
import { Reminder } from "./entities/Reminder"; import { Reminder } from "./entities/Reminder.js";
import { ScheduledPost } from "./entities/ScheduledPost"; import { ScheduledPost } from "./entities/ScheduledPost.js";
import { Tempban } from "./entities/Tempban"; import { Tempban } from "./entities/Tempban.js";
import { VCAlert } from "./entities/VCAlert"; import { VCAlert } from "./entities/VCAlert.js";
interface GuildEventArgs extends Record<string, unknown[]> { interface GuildEventArgs extends Record<string, unknown[]> {
expiredMute: [Mute]; expiredMute: [Mute];

View file

@ -1,5 +1,5 @@
import * as events from "events"; import * as events from "events";
import { LogType } from "./LogType"; import { LogType } from "./LogType.js";
// Use the same instance for the same guild, even if a new instance is created // Use the same instance for the same guild, even if a new instance is created
const guildInstances: Map<string, GuildLogs> = new Map(); const guildInstances: Map<string, GuildLogs> = new Map();

View file

@ -1,10 +1,10 @@
import moment from "moment-timezone"; import moment from "moment-timezone";
import { Repository } from "typeorm"; import { Repository } from "typeorm";
import { Blocker } from "../Blocker"; import { Blocker } from "../Blocker.js";
import { DBDateFormat, MINUTES } from "../utils"; import { DBDateFormat, MINUTES } from "../utils.js";
import { BaseGuildRepository } from "./BaseGuildRepository"; import { BaseGuildRepository } from "./BaseGuildRepository.js";
import { dataSource } from "./dataSource"; import { dataSource } from "./dataSource.js";
import { MemberCacheItem } from "./entities/MemberCacheItem"; import { MemberCacheItem } from "./entities/MemberCacheItem.js";
const SAVE_PENDING_BLOCKER_KEY = "save-pending" as const; const SAVE_PENDING_BLOCKER_KEY = "save-pending" as const;

View file

@ -1,7 +1,7 @@
import { Repository } from "typeorm/index"; import { Repository } from "typeorm";
import { BaseGuildRepository } from "./BaseGuildRepository"; import { BaseGuildRepository } from "./BaseGuildRepository.js";
import { dataSource } from "./dataSource"; import { dataSource } from "./dataSource.js";
import { MemberTimezone } from "./entities/MemberTimezone"; import { MemberTimezone } from "./entities/MemberTimezone.js";
export class GuildMemberTimezones extends BaseGuildRepository { export class GuildMemberTimezones extends BaseGuildRepository {
protected memberTimezones: Repository<MemberTimezone>; protected memberTimezones: Repository<MemberTimezone>;

View file

@ -1,10 +1,10 @@
import moment from "moment-timezone"; import moment from "moment-timezone";
import { Brackets, Repository } from "typeorm"; import { Brackets, Repository } from "typeorm";
import { DBDateFormat } from "../utils"; import { DBDateFormat } from "../utils.js";
import { BaseGuildRepository } from "./BaseGuildRepository"; import { BaseGuildRepository } from "./BaseGuildRepository.js";
import { MuteTypes } from "./MuteTypes"; import { MuteTypes } from "./MuteTypes.js";
import { dataSource } from "./dataSource"; import { dataSource } from "./dataSource.js";
import { Mute } from "./entities/Mute"; import { Mute } from "./entities/Mute.js";
export type AddMuteParams = { export type AddMuteParams = {
userId: Mute["user_id"]; userId: Mute["user_id"];

View file

@ -1,10 +1,10 @@
import { In, Repository } from "typeorm"; import { In, Repository } from "typeorm";
import { isAPI } from "../globals"; import { isAPI } from "../globals.js";
import { MINUTES, SECONDS } from "../utils"; import { MINUTES, SECONDS } from "../utils.js";
import { BaseGuildRepository } from "./BaseGuildRepository"; import { BaseGuildRepository } from "./BaseGuildRepository.js";
import { cleanupNicknames } from "./cleanup/nicknames"; import { cleanupNicknames } from "./cleanup/nicknames.js";
import { dataSource } from "./dataSource"; import { dataSource } from "./dataSource.js";
import { NicknameHistoryEntry } from "./entities/NicknameHistoryEntry"; import { NicknameHistoryEntry } from "./entities/NicknameHistoryEntry.js";
const CLEANUP_INTERVAL = 5 * MINUTES; const CLEANUP_INTERVAL = 5 * MINUTES;

View file

@ -1,7 +1,7 @@
import { Repository } from "typeorm"; import { Repository } from "typeorm";
import { BaseGuildRepository } from "./BaseGuildRepository"; import { BaseGuildRepository } from "./BaseGuildRepository.js";
import { dataSource } from "./dataSource"; import { dataSource } from "./dataSource.js";
import { PersistedData } from "./entities/PersistedData"; import { PersistedData } from "./entities/PersistedData.js";
export class GuildPersistedData extends BaseGuildRepository { export class GuildPersistedData extends BaseGuildRepository {
private persistedData: Repository<PersistedData>; private persistedData: Repository<PersistedData>;

View file

@ -1,7 +1,7 @@
import { Repository } from "typeorm"; import { Repository } from "typeorm";
import { BaseGuildRepository } from "./BaseGuildRepository"; import { BaseGuildRepository } from "./BaseGuildRepository.js";
import { dataSource } from "./dataSource"; import { dataSource } from "./dataSource.js";
import { PingableRole } from "./entities/PingableRole"; import { PingableRole } from "./entities/PingableRole.js";
export class GuildPingableRoles extends BaseGuildRepository { export class GuildPingableRoles extends BaseGuildRepository {
private pingableRoles: Repository<PingableRole>; private pingableRoles: Repository<PingableRole>;

View file

@ -1,7 +1,7 @@
import { Repository } from "typeorm"; import { Repository } from "typeorm";
import { BaseGuildRepository } from "./BaseGuildRepository"; import { BaseGuildRepository } from "./BaseGuildRepository.js";
import { dataSource } from "./dataSource"; import { dataSource } from "./dataSource.js";
import { ReactionRole } from "./entities/ReactionRole"; import { ReactionRole } from "./entities/ReactionRole.js";
export class GuildReactionRoles extends BaseGuildRepository { export class GuildReactionRoles extends BaseGuildRepository {
private reactionRoles: Repository<ReactionRole>; private reactionRoles: Repository<ReactionRole>;

View file

@ -1,7 +1,7 @@
import { Repository } from "typeorm"; import { Repository } from "typeorm";
import { BaseGuildRepository } from "./BaseGuildRepository"; import { BaseGuildRepository } from "./BaseGuildRepository.js";
import { dataSource } from "./dataSource"; import { dataSource } from "./dataSource.js";
import { Reminder } from "./entities/Reminder"; import { Reminder } from "./entities/Reminder.js";
export class GuildReminders extends BaseGuildRepository { export class GuildReminders extends BaseGuildRepository {
private reminders: Repository<Reminder>; private reminders: Repository<Reminder>;

View file

@ -1,7 +1,7 @@
import { Repository } from "typeorm"; import { Repository } from "typeorm";
import { BaseGuildRepository } from "./BaseGuildRepository"; import { BaseGuildRepository } from "./BaseGuildRepository.js";
import { dataSource } from "./dataSource"; import { dataSource } from "./dataSource.js";
import { RoleButtonsItem } from "./entities/RoleButtonsItem"; import { RoleButtonsItem } from "./entities/RoleButtonsItem.js";
export class GuildRoleButtons extends BaseGuildRepository { export class GuildRoleButtons extends BaseGuildRepository {
private roleButtons: Repository<RoleButtonsItem>; private roleButtons: Repository<RoleButtonsItem>;

View file

@ -1,7 +1,7 @@
import { Repository } from "typeorm"; import { Repository } from "typeorm";
import { BaseGuildRepository } from "./BaseGuildRepository"; import { BaseGuildRepository } from "./BaseGuildRepository.js";
import { dataSource } from "./dataSource"; import { dataSource } from "./dataSource.js";
import { RoleQueueItem } from "./entities/RoleQueueItem"; import { RoleQueueItem } from "./entities/RoleQueueItem.js";
export class GuildRoleQueue extends BaseGuildRepository { export class GuildRoleQueue extends BaseGuildRepository {
private roleQueue: Repository<RoleQueueItem>; private roleQueue: Repository<RoleQueueItem>;

View file

@ -1,14 +1,14 @@
import { GuildChannel, Message } from "discord.js"; import { GuildChannel, Message } from "discord.js";
import moment from "moment-timezone"; import moment from "moment-timezone";
import { Repository } from "typeorm"; import { Repository } from "typeorm";
import { QueuedEventEmitter } from "../QueuedEventEmitter"; import { QueuedEventEmitter } from "../QueuedEventEmitter.js";
import { noop } from "../utils"; import { noop } from "../utils.js";
import { asyncMap } from "../utils/async"; import { asyncMap } from "../utils/async.js";
import { decryptJson, encryptJson } from "../utils/cryptHelpers"; import { decryptJson, encryptJson } from "../utils/cryptHelpers.js";
import { BaseGuildRepository } from "./BaseGuildRepository"; import { BaseGuildRepository } from "./BaseGuildRepository.js";
import { buildEntity } from "./buildEntity"; import { buildEntity } from "./buildEntity.js";
import { dataSource } from "./dataSource"; import { dataSource } from "./dataSource.js";
import { ISavedMessageData, SavedMessage } from "./entities/SavedMessage"; import { ISavedMessageData, SavedMessage } from "./entities/SavedMessage.js";
export class GuildSavedMessages extends BaseGuildRepository<SavedMessage> { export class GuildSavedMessages extends BaseGuildRepository<SavedMessage> {
private messages: Repository<SavedMessage>; private messages: Repository<SavedMessage>;

View file

@ -1,7 +1,7 @@
import { Repository } from "typeorm"; import { Repository } from "typeorm";
import { BaseGuildRepository } from "./BaseGuildRepository"; import { BaseGuildRepository } from "./BaseGuildRepository.js";
import { dataSource } from "./dataSource"; import { dataSource } from "./dataSource.js";
import { ScheduledPost } from "./entities/ScheduledPost"; import { ScheduledPost } from "./entities/ScheduledPost.js";
export class GuildScheduledPosts extends BaseGuildRepository { export class GuildScheduledPosts extends BaseGuildRepository {
private scheduledPosts: Repository<ScheduledPost>; private scheduledPosts: Repository<ScheduledPost>;

View file

@ -1,9 +1,9 @@
import moment from "moment-timezone"; import moment from "moment-timezone";
import { Repository } from "typeorm"; import { Repository } from "typeorm";
import { BaseGuildRepository } from "./BaseGuildRepository"; import { BaseGuildRepository } from "./BaseGuildRepository.js";
import { dataSource } from "./dataSource"; import { dataSource } from "./dataSource.js";
import { SlowmodeChannel } from "./entities/SlowmodeChannel"; import { SlowmodeChannel } from "./entities/SlowmodeChannel.js";
import { SlowmodeUser } from "./entities/SlowmodeUser"; import { SlowmodeUser } from "./entities/SlowmodeUser.js";
export class GuildSlowmodes extends BaseGuildRepository { export class GuildSlowmodes extends BaseGuildRepository {
private slowmodeChannels: Repository<SlowmodeChannel>; private slowmodeChannels: Repository<SlowmodeChannel>;

View file

@ -1,7 +1,7 @@
import { Repository } from "typeorm"; import { Repository } from "typeorm";
import { BaseGuildRepository } from "./BaseGuildRepository"; import { BaseGuildRepository } from "./BaseGuildRepository.js";
import { dataSource } from "./dataSource"; import { dataSource } from "./dataSource.js";
import { StarboardMessage } from "./entities/StarboardMessage"; import { StarboardMessage } from "./entities/StarboardMessage.js";
export class GuildStarboardMessages extends BaseGuildRepository { export class GuildStarboardMessages extends BaseGuildRepository {
private allStarboardMessages: Repository<StarboardMessage>; private allStarboardMessages: Repository<StarboardMessage>;

View file

@ -1,7 +1,7 @@
import { Repository } from "typeorm"; import { Repository } from "typeorm";
import { BaseGuildRepository } from "./BaseGuildRepository"; import { BaseGuildRepository } from "./BaseGuildRepository.js";
import { dataSource } from "./dataSource"; import { dataSource } from "./dataSource.js";
import { StarboardReaction } from "./entities/StarboardReaction"; import { StarboardReaction } from "./entities/StarboardReaction.js";
export class GuildStarboardReactions extends BaseGuildRepository { export class GuildStarboardReactions extends BaseGuildRepository {
private allStarboardReactions: Repository<StarboardReaction>; private allStarboardReactions: Repository<StarboardReaction>;

View file

@ -1,7 +1,7 @@
import { Repository } from "typeorm"; import { Repository } from "typeorm";
import { BaseGuildRepository } from "./BaseGuildRepository"; import { BaseGuildRepository } from "./BaseGuildRepository.js";
import { dataSource } from "./dataSource"; import { dataSource } from "./dataSource.js";
import { StatValue } from "./entities/StatValue"; import { StatValue } from "./entities/StatValue.js";
export class GuildStats extends BaseGuildRepository { export class GuildStats extends BaseGuildRepository {
private stats: Repository<StatValue>; private stats: Repository<StatValue>;

View file

@ -1,8 +1,8 @@
import { Repository } from "typeorm"; import { Repository } from "typeorm";
import { BaseGuildRepository } from "./BaseGuildRepository"; import { BaseGuildRepository } from "./BaseGuildRepository.js";
import { dataSource } from "./dataSource"; import { dataSource } from "./dataSource.js";
import { Tag } from "./entities/Tag"; import { Tag } from "./entities/Tag.js";
import { TagResponse } from "./entities/TagResponse"; import { TagResponse } from "./entities/TagResponse.js";
export class GuildTags extends BaseGuildRepository { export class GuildTags extends BaseGuildRepository {
private tags: Repository<Tag>; private tags: Repository<Tag>;

View file

@ -1,8 +1,8 @@
import moment from "moment-timezone"; import moment from "moment-timezone";
import { Repository } from "typeorm"; import { Repository } from "typeorm";
import { BaseGuildRepository } from "./BaseGuildRepository"; import { BaseGuildRepository } from "./BaseGuildRepository.js";
import { dataSource } from "./dataSource"; import { dataSource } from "./dataSource.js";
import { Tempban } from "./entities/Tempban"; import { Tempban } from "./entities/Tempban.js";
export class GuildTempbans extends BaseGuildRepository { export class GuildTempbans extends BaseGuildRepository {
private tempbans: Repository<Tempban>; private tempbans: Repository<Tempban>;

View file

@ -1,7 +1,7 @@
import { Repository } from "typeorm"; import { Repository } from "typeorm";
import { BaseGuildRepository } from "./BaseGuildRepository"; import { BaseGuildRepository } from "./BaseGuildRepository.js";
import { dataSource } from "./dataSource"; import { dataSource } from "./dataSource.js";
import { VCAlert } from "./entities/VCAlert"; import { VCAlert } from "./entities/VCAlert.js";
export class GuildVCAlerts extends BaseGuildRepository { export class GuildVCAlerts extends BaseGuildRepository {
private allAlerts: Repository<VCAlert>; private allAlerts: Repository<VCAlert>;

View file

@ -1,9 +1,9 @@
import moment from "moment-timezone"; import moment from "moment-timezone";
import { Repository } from "typeorm"; import { Repository } from "typeorm";
import { DAYS } from "../utils"; import { DAYS } from "../utils.js";
import { BaseRepository } from "./BaseRepository"; import { BaseRepository } from "./BaseRepository.js";
import { dataSource } from "./dataSource"; import { dataSource } from "./dataSource.js";
import { MemberCacheItem } from "./entities/MemberCacheItem"; import { MemberCacheItem } from "./entities/MemberCacheItem.js";
const STALE_PERIOD = 90 * DAYS; const STALE_PERIOD = 90 * DAYS;

View file

@ -1,10 +1,10 @@
import moment from "moment-timezone"; import moment from "moment-timezone";
import { Repository } from "typeorm"; import { Repository } from "typeorm";
import { DAYS, DBDateFormat } from "../utils"; import { DAYS, DBDateFormat } from "../utils.js";
import { BaseRepository } from "./BaseRepository"; import { BaseRepository } from "./BaseRepository.js";
import { MuteTypes } from "./MuteTypes"; import { MuteTypes } from "./MuteTypes.js";
import { dataSource } from "./dataSource"; import { dataSource } from "./dataSource.js";
import { Mute } from "./entities/Mute"; import { Mute } from "./entities/Mute.js";
const OLD_EXPIRED_MUTE_THRESHOLD = 7 * DAYS; const OLD_EXPIRED_MUTE_THRESHOLD = 7 * DAYS;

View file

@ -1,12 +1,12 @@
import crypto from "crypto"; import crypto from "crypto";
import moment from "moment-timezone"; import moment from "moment-timezone";
import { Repository } from "typeorm"; import { Repository } from "typeorm";
import { env } from "../env"; import { env } from "../env.js";
import { DAYS, DBDateFormat, HOURS, MINUTES } from "../utils"; import { DAYS, DBDateFormat, HOURS, MINUTES } from "../utils.js";
import { dataSource } from "./dataSource"; import { dataSource } from "./dataSource.js";
import { PhishermanCacheEntry } from "./entities/PhishermanCacheEntry"; import { PhishermanCacheEntry } from "./entities/PhishermanCacheEntry.js";
import { PhishermanKeyCacheEntry } from "./entities/PhishermanKeyCacheEntry"; import { PhishermanKeyCacheEntry } from "./entities/PhishermanKeyCacheEntry.js";
import { PhishermanDomainInfo, PhishermanUnknownDomain } from "./types/phisherman"; import { PhishermanDomainInfo, PhishermanUnknownDomain } from "./types/phisherman.js";
const API_URL = "https://api.phisherman.gg"; const API_URL = "https://api.phisherman.gg";
const MASTER_API_KEY = env.PHISHERMAN_API_KEY; const MASTER_API_KEY = env.PHISHERMAN_API_KEY;

View file

@ -1,9 +1,9 @@
import moment from "moment-timezone"; import moment from "moment-timezone";
import { Repository } from "typeorm"; import { Repository } from "typeorm";
import { DBDateFormat } from "../utils"; import { DBDateFormat } from "../utils.js";
import { BaseRepository } from "./BaseRepository"; import { BaseRepository } from "./BaseRepository.js";
import { dataSource } from "./dataSource"; import { dataSource } from "./dataSource.js";
import { Reminder } from "./entities/Reminder"; import { Reminder } from "./entities/Reminder.js";
export class Reminders extends BaseRepository { export class Reminders extends BaseRepository {
private reminders: Repository<Reminder>; private reminders: Repository<Reminder>;

View file

@ -1,9 +1,9 @@
import moment from "moment-timezone"; import moment from "moment-timezone";
import { Repository } from "typeorm"; import { Repository } from "typeorm";
import { DBDateFormat } from "../utils"; import { DBDateFormat } from "../utils.js";
import { BaseRepository } from "./BaseRepository"; import { BaseRepository } from "./BaseRepository.js";
import { dataSource } from "./dataSource"; import { dataSource } from "./dataSource.js";
import { ScheduledPost } from "./entities/ScheduledPost"; import { ScheduledPost } from "./entities/ScheduledPost.js";
export class ScheduledPosts extends BaseRepository { export class ScheduledPosts extends BaseRepository {
private scheduledPosts: Repository<ScheduledPost>; private scheduledPosts: Repository<ScheduledPost>;

View file

@ -1,7 +1,7 @@
import { Repository } from "typeorm"; import { Repository } from "typeorm";
import { BaseRepository } from "./BaseRepository"; import { BaseRepository } from "./BaseRepository.js";
import { dataSource } from "./dataSource"; import { dataSource } from "./dataSource.js";
import { Supporter } from "./entities/Supporter"; import { Supporter } from "./entities/Supporter.js";
export class Supporters extends BaseRepository { export class Supporters extends BaseRepository {
private supporters: Repository<Supporter>; private supporters: Repository<Supporter>;

View file

@ -1,9 +1,9 @@
import moment from "moment-timezone"; import moment from "moment-timezone";
import { Repository } from "typeorm"; import { Repository } from "typeorm";
import { DBDateFormat } from "../utils"; import { DBDateFormat } from "../utils.js";
import { BaseRepository } from "./BaseRepository"; import { BaseRepository } from "./BaseRepository.js";
import { dataSource } from "./dataSource"; import { dataSource } from "./dataSource.js";
import { Tempban } from "./entities/Tempban"; import { Tempban } from "./entities/Tempban.js";
export class Tempbans extends BaseRepository { export class Tempbans extends BaseRepository {
private tempbans: Repository<Tempban>; private tempbans: Repository<Tempban>;

View file

@ -1,10 +1,10 @@
import { In, Repository } from "typeorm"; import { In, Repository } from "typeorm";
import { isAPI } from "../globals"; import { isAPI } from "../globals.js";
import { MINUTES, SECONDS } from "../utils"; import { MINUTES, SECONDS } from "../utils.js";
import { BaseRepository } from "./BaseRepository"; import { BaseRepository } from "./BaseRepository.js";
import { cleanupUsernames } from "./cleanup/usernames"; import { cleanupUsernames } from "./cleanup/usernames.js";
import { dataSource } from "./dataSource"; import { dataSource } from "./dataSource.js";
import { UsernameHistoryEntry } from "./entities/UsernameHistoryEntry"; import { UsernameHistoryEntry } from "./entities/UsernameHistoryEntry.js";
const CLEANUP_INTERVAL = 5 * MINUTES; const CLEANUP_INTERVAL = 5 * MINUTES;

View file

@ -1,9 +1,9 @@
import moment from "moment-timezone"; import moment from "moment-timezone";
import { Repository } from "typeorm"; import { Repository } from "typeorm";
import { DBDateFormat } from "../utils"; import { DBDateFormat } from "../utils.js";
import { BaseRepository } from "./BaseRepository"; import { BaseRepository } from "./BaseRepository.js";
import { dataSource } from "./dataSource"; import { dataSource } from "./dataSource.js";
import { VCAlert } from "./entities/VCAlert"; import { VCAlert } from "./entities/VCAlert.js";
export class VCAlerts extends BaseRepository { export class VCAlerts extends BaseRepository {
private allAlerts: Repository<VCAlert>; private allAlerts: Repository<VCAlert>;

View file

@ -1,8 +1,8 @@
import { Repository } from "typeorm"; import { Repository } from "typeorm";
import { decrypt, encrypt } from "../utils/crypt"; import { decrypt, encrypt } from "../utils/crypt.js";
import { BaseRepository } from "./BaseRepository"; import { BaseRepository } from "./BaseRepository.js";
import { dataSource } from "./dataSource"; import { dataSource } from "./dataSource.js";
import { Webhook } from "./entities/Webhook"; import { Webhook } from "./entities/Webhook.js";
export class Webhooks extends BaseRepository { export class Webhooks extends BaseRepository {
repository: Repository<Webhook> = dataSource.getRepository(Webhook); repository: Repository<Webhook> = dataSource.getRepository(Webhook);

View file

@ -1,4 +1,4 @@
import { ApiPermissionTypes } from "./ApiPermissionAssignments"; import { ApiPermissionTypes } from "./ApiPermissionAssignments.js";
export const AuditLogEventTypes = { export const AuditLogEventTypes = {
ADD_API_PERMISSION: "ADD_API_PERMISSION" as const, ADD_API_PERMISSION: "ADD_API_PERMISSION" as const,

View file

@ -1,8 +1,8 @@
import moment from "moment-timezone"; import moment from "moment-timezone";
import { In } from "typeorm"; import { In } from "typeorm";
import { DBDateFormat } from "../../utils"; import { DBDateFormat } from "../../utils.js";
import { dataSource } from "../dataSource"; import { dataSource } from "../dataSource.js";
import { Config } from "../entities/Config"; import { Config } from "../entities/Config.js";
const CLEAN_PER_LOOP = 50; const CLEAN_PER_LOOP = 50;

View file

@ -1,8 +1,8 @@
import moment from "moment-timezone"; import moment from "moment-timezone";
import { In } from "typeorm"; import { In } from "typeorm";
import { DAYS, DBDateFormat, MINUTES, SECONDS, sleep } from "../../utils"; import { DAYS, DBDateFormat, MINUTES, SECONDS, sleep } from "../../utils.js";
import { dataSource } from "../dataSource"; import { dataSource } from "../dataSource.js";
import { SavedMessage } from "../entities/SavedMessage"; import { SavedMessage } from "../entities/SavedMessage.js";
/** /**
* How long message edits, deletions, etc. will include the original message content. * How long message edits, deletions, etc. will include the original message content.

View file

@ -1,8 +1,8 @@
import moment from "moment-timezone"; import moment from "moment-timezone";
import { In } from "typeorm"; import { In } from "typeorm";
import { DAYS, DBDateFormat } from "../../utils"; import { DAYS, DBDateFormat } from "../../utils.js";
import { dataSource } from "../dataSource"; import { dataSource } from "../dataSource.js";
import { NicknameHistoryEntry } from "../entities/NicknameHistoryEntry"; import { NicknameHistoryEntry } from "../entities/NicknameHistoryEntry.js";
export const NICKNAME_RETENTION_PERIOD = 30 * DAYS; export const NICKNAME_RETENTION_PERIOD = 30 * DAYS;
const CLEAN_PER_LOOP = 500; const CLEAN_PER_LOOP = 500;

View file

@ -1,8 +1,8 @@
import moment from "moment-timezone"; import moment from "moment-timezone";
import { In } from "typeorm"; import { In } from "typeorm";
import { DAYS, DBDateFormat } from "../../utils"; import { DAYS, DBDateFormat } from "../../utils.js";
import { dataSource } from "../dataSource"; import { dataSource } from "../dataSource.js";
import { UsernameHistoryEntry } from "../entities/UsernameHistoryEntry"; import { UsernameHistoryEntry } from "../entities/UsernameHistoryEntry.js";
export const USERNAME_RETENTION_PERIOD = 30 * DAYS; export const USERNAME_RETENTION_PERIOD = 30 * DAYS;
const CLEAN_PER_LOOP = 500; const CLEAN_PER_LOOP = 500;

View file

@ -1,8 +1,8 @@
import moment from "moment-timezone"; import moment from "moment-timezone";
import path from "path"; import path from "path";
import { DataSource } from "typeorm"; import { DataSource } from "typeorm";
import { env } from "../env"; import { env } from "../env.js";
import { backendDir } from "../paths"; import { backendDir } from "../paths.js";
moment.tz.setDefault("UTC"); moment.tz.setDefault("UTC");

View file

@ -1,5 +1,5 @@
import { SimpleError } from "../SimpleError"; import { SimpleError } from "../SimpleError.js";
import { dataSource } from "./dataSource"; import { dataSource } from "./dataSource.js";
let connectionPromise: Promise<void>; let connectionPromise: Promise<void>;

View file

@ -1,5 +1,5 @@
import { Column, Entity, PrimaryColumn } from "typeorm"; import { Column, Entity, PrimaryColumn } from "typeorm";
import { AuditLogEventData, AuditLogEventType } from "../apiAuditLogTypes"; import { AuditLogEventData, AuditLogEventType } from "../apiAuditLogTypes.js";
@Entity("api_audit_log") @Entity("api_audit_log")
export class ApiAuditLogEntry<TEventType extends AuditLogEventType> { export class ApiAuditLogEntry<TEventType extends AuditLogEventType> {

View file

@ -1,5 +1,5 @@
import { Column, Entity, JoinColumn, ManyToOne, PrimaryColumn } from "typeorm"; import { Column, Entity, JoinColumn, ManyToOne, PrimaryColumn, Relation } from "typeorm";
import { ApiUserInfo } from "./ApiUserInfo"; import { ApiUserInfo } from "./ApiUserInfo.js";
@Entity("api_logins") @Entity("api_logins")
export class ApiLogin { export class ApiLogin {
@ -21,5 +21,5 @@ export class ApiLogin {
@ManyToOne(() => ApiUserInfo, (userInfo) => userInfo.logins) @ManyToOne(() => ApiUserInfo, (userInfo) => userInfo.logins)
@JoinColumn({ name: "user_id" }) @JoinColumn({ name: "user_id" })
userInfo: ApiUserInfo; userInfo: Relation<ApiUserInfo>;
} }

View file

@ -1,6 +1,6 @@
import { Column, Entity, JoinColumn, ManyToOne, PrimaryColumn } from "typeorm"; import { Column, Entity, JoinColumn, ManyToOne, PrimaryColumn } from "typeorm";
import { ApiPermissionTypes } from "../ApiPermissionAssignments"; import { ApiPermissionTypes } from "../ApiPermissionAssignments.js";
import { ApiUserInfo } from "./ApiUserInfo"; import { ApiUserInfo } from "./ApiUserInfo.js";
@Entity("api_permissions") @Entity("api_permissions")
export class ApiPermissionAssignment { export class ApiPermissionAssignment {

View file

@ -1,6 +1,6 @@
import { Column, Entity, OneToMany, PrimaryColumn } from "typeorm"; import { Column, Entity, OneToMany, PrimaryColumn, Relation } from "typeorm";
import { ApiLogin } from "./ApiLogin"; import { ApiLogin } from "./ApiLogin.js";
import { ApiPermissionAssignment } from "./ApiPermissionAssignment"; import { ApiPermissionAssignment } from "./ApiPermissionAssignment.js";
export interface ApiUserInfoData { export interface ApiUserInfoData {
username: string; username: string;
@ -21,8 +21,8 @@ export class ApiUserInfo {
updated_at: string; updated_at: string;
@OneToMany(() => ApiLogin, (login) => login.userInfo) @OneToMany(() => ApiLogin, (login) => login.userInfo)
logins: ApiLogin[]; logins: Relation<ApiLogin[]>;
@OneToMany(() => ApiPermissionAssignment, (p) => p.userInfo) @OneToMany(() => ApiPermissionAssignment, (p) => p.userInfo)
permissionAssignments: ApiPermissionAssignment[]; permissionAssignments: Relation<ApiPermissionAssignment[]>;
} }

View file

@ -1,5 +1,5 @@
import { Column, Entity, OneToMany, PrimaryGeneratedColumn } from "typeorm"; import { Column, Entity, OneToMany, PrimaryGeneratedColumn, Relation } from "typeorm";
import { CaseNote } from "./CaseNote"; import { CaseNote } from "./CaseNote.js";
@Entity("cases") @Entity("cases")
export class Case { export class Case {
@ -36,5 +36,5 @@ export class Case {
@Column({ type: String, nullable: true }) log_message_id: string | null; @Column({ type: String, nullable: true }) log_message_id: string | null;
@OneToMany(() => CaseNote, (note) => note.case) @OneToMany(() => CaseNote, (note) => note.case)
notes: CaseNote[]; notes: Relation<CaseNote[]>;
} }

View file

@ -1,5 +1,5 @@
import { Column, Entity, JoinColumn, ManyToOne, PrimaryGeneratedColumn } from "typeorm"; import { Column, Entity, JoinColumn, ManyToOne, PrimaryGeneratedColumn, Relation } from "typeorm";
import { Case } from "./Case"; import { Case } from "./Case.js";
@Entity("case_notes") @Entity("case_notes")
export class CaseNote { export class CaseNote {
@ -17,5 +17,5 @@ export class CaseNote {
@ManyToOne(() => Case, (theCase) => theCase.notes) @ManyToOne(() => Case, (theCase) => theCase.notes)
@JoinColumn({ name: "case_id" }) @JoinColumn({ name: "case_id" })
case: Case; case: Relation<Case>;
} }

View file

@ -1,5 +1,5 @@
import { Column, Entity, JoinColumn, ManyToOne, PrimaryColumn } from "typeorm"; import { Column, Entity, JoinColumn, ManyToOne, PrimaryColumn } from "typeorm";
import { ApiUserInfo } from "./ApiUserInfo"; import { ApiUserInfo } from "./ApiUserInfo.js";
@Entity("configs") @Entity("configs")
export class Config { export class Config {

View file

@ -1,5 +1,5 @@
import { Column, Entity, PrimaryColumn } from "typeorm"; import { Column, Entity, PrimaryColumn } from "typeorm";
import { PhishermanDomainInfo } from "../types/phisherman"; import { PhishermanDomainInfo } from "../types/phisherman.js";
@Entity("phisherman_cache") @Entity("phisherman_cache")
export class PhishermanCacheEntry { export class PhishermanCacheEntry {

View file

@ -1,4 +1,4 @@
import { Snowflake, StickerFormatType, StickerType } from "discord.js"; import { EmbedType, Snowflake, StickerFormatType, StickerType } from "discord.js";
import { Column, Entity, PrimaryColumn } from "typeorm"; import { Column, Entity, PrimaryColumn } from "typeorm";
export interface ISavedMessageAttachmentData { export interface ISavedMessageAttachmentData {
@ -14,6 +14,7 @@ export interface ISavedMessageAttachmentData {
export interface ISavedMessageEmbedData { export interface ISavedMessageEmbedData {
title: string | null; title: string | null;
type?: EmbedType;
description: string | null; description: string | null;
url: string | null; url: string | null;
timestamp: number | null; timestamp: number | null;

View file

@ -1,6 +1,6 @@
import { Attachment } from "discord.js"; import { Attachment } from "discord.js";
import { Column, Entity, PrimaryGeneratedColumn } from "typeorm"; import { Column, Entity, PrimaryGeneratedColumn } from "typeorm";
import { StrictMessageContent } from "../../utils"; import { StrictMessageContent } from "../../utils.js";
@Entity("scheduled_posts") @Entity("scheduled_posts")
export class ScheduledPost { export class ScheduledPost {

View file

@ -1,5 +1,5 @@
import { Column, Entity, JoinColumn, OneToOne, PrimaryColumn } from "typeorm"; import { Column, Entity, JoinColumn, OneToOne, PrimaryColumn } from "typeorm";
import { SavedMessage } from "./SavedMessage"; import { SavedMessage } from "./SavedMessage.js";
@Entity("starboard_messages") @Entity("starboard_messages")
export class StarboardMessage { export class StarboardMessage {

View file

@ -1,5 +1,5 @@
import { Column, Entity, JoinColumn, OneToOne, PrimaryColumn } from "typeorm"; import { Column, Entity, JoinColumn, OneToOne, PrimaryColumn } from "typeorm";
import { SavedMessage } from "./SavedMessage"; import { SavedMessage } from "./SavedMessage.js";
@Entity("starboard_reactions") @Entity("starboard_reactions")
export class StarboardReaction { export class StarboardReaction {

View file

@ -1,6 +1,6 @@
import { Repository } from "typeorm"; import { Repository } from "typeorm";
import { dataSource } from "./dataSource"; import { dataSource } from "./dataSource.js";
import { SavedMessage } from "./entities/SavedMessage"; import { SavedMessage } from "./entities/SavedMessage.js";
let repository: Repository<SavedMessage>; let repository: Repository<SavedMessage>;

View file

@ -1,7 +1,7 @@
// tslint:disable:no-console // tslint:disable:no-console
import { lazyMemoize, MINUTES } from "../../utils"; import { lazyMemoize, MINUTES } from "../../utils.js";
import { Archives } from "../Archives"; import { Archives } from "../Archives.js";
const LOOP_INTERVAL = 15 * MINUTES; const LOOP_INTERVAL = 15 * MINUTES;
const getArchivesRepository = lazyMemoize(() => new Archives()); const getArchivesRepository = lazyMemoize(() => new Archives());

View file

@ -1,7 +1,7 @@
// tslint:disable:no-console // tslint:disable:no-console
import { HOURS, lazyMemoize } from "../../utils"; import { HOURS, lazyMemoize } from "../../utils.js";
import { MemberCache } from "../MemberCache"; import { MemberCache } from "../MemberCache.js";
const LOOP_INTERVAL = 6 * HOURS; const LOOP_INTERVAL = 6 * HOURS;
const getMemberCacheRepository = lazyMemoize(() => new MemberCache()); const getMemberCacheRepository = lazyMemoize(() => new MemberCache());

View file

@ -1,10 +1,10 @@
// tslint:disable:no-console // tslint:disable:no-console
import moment from "moment-timezone"; import moment from "moment-timezone";
import { lazyMemoize, MINUTES, SECONDS } from "../../utils"; import { lazyMemoize, MINUTES, SECONDS } from "../../utils.js";
import { Mute } from "../entities/Mute"; import { Mute } from "../entities/Mute.js";
import { emitGuildEvent, hasGuildEventListener } from "../GuildEvents"; import { emitGuildEvent, hasGuildEventListener } from "../GuildEvents.js";
import { Mutes, TIMEOUT_RENEWAL_THRESHOLD } from "../Mutes"; import { Mutes, TIMEOUT_RENEWAL_THRESHOLD } from "../Mutes.js";
import Timeout = NodeJS.Timeout; import Timeout = NodeJS.Timeout;
const LOOP_INTERVAL = 15 * MINUTES; const LOOP_INTERVAL = 15 * MINUTES;

View file

@ -1,10 +1,10 @@
// tslint:disable:no-console // tslint:disable:no-console
import moment from "moment-timezone"; import moment from "moment-timezone";
import { lazyMemoize, MINUTES } from "../../utils"; import { lazyMemoize, MINUTES } from "../../utils.js";
import { Tempban } from "../entities/Tempban"; import { Tempban } from "../entities/Tempban.js";
import { emitGuildEvent, hasGuildEventListener } from "../GuildEvents"; import { emitGuildEvent, hasGuildEventListener } from "../GuildEvents.js";
import { Tempbans } from "../Tempbans"; import { Tempbans } from "../Tempbans.js";
import Timeout = NodeJS.Timeout; import Timeout = NodeJS.Timeout;
const LOOP_INTERVAL = 15 * MINUTES; const LOOP_INTERVAL = 15 * MINUTES;

View file

@ -1,10 +1,10 @@
// tslint:disable:no-console // tslint:disable:no-console
import moment from "moment-timezone"; import moment from "moment-timezone";
import { lazyMemoize, MINUTES } from "../../utils"; import { lazyMemoize, MINUTES } from "../../utils.js";
import { VCAlert } from "../entities/VCAlert"; import { VCAlert } from "../entities/VCAlert.js";
import { emitGuildEvent, hasGuildEventListener } from "../GuildEvents"; import { emitGuildEvent, hasGuildEventListener } from "../GuildEvents.js";
import { VCAlerts } from "../VCAlerts"; import { VCAlerts } from "../VCAlerts.js";
import Timeout = NodeJS.Timeout; import Timeout = NodeJS.Timeout;
const LOOP_INTERVAL = 15 * MINUTES; const LOOP_INTERVAL = 15 * MINUTES;

View file

@ -1,7 +1,7 @@
// tslint:disable:no-console // tslint:disable:no-console
import { lazyMemoize, MINUTES } from "../../utils"; import { lazyMemoize, MINUTES } from "../../utils.js";
import { MemberCache } from "../MemberCache"; import { MemberCache } from "../MemberCache.js";
const LOOP_INTERVAL = 5 * MINUTES; const LOOP_INTERVAL = 5 * MINUTES;
const getMemberCacheRepository = lazyMemoize(() => new MemberCache()); const getMemberCacheRepository = lazyMemoize(() => new MemberCache());

View file

@ -1,11 +1,11 @@
// tslint:disable:no-console // tslint:disable:no-console
import { MINUTES } from "../../utils"; import { MINUTES } from "../../utils.js";
import { import {
deleteStalePhishermanCacheEntries, deleteStalePhishermanCacheEntries,
deleteStalePhishermanKeyCacheEntries, deleteStalePhishermanKeyCacheEntries,
reportTrackedDomainsToPhisherman, reportTrackedDomainsToPhisherman,
} from "../Phisherman"; } from "../Phisherman.js";
const CACHE_CLEANUP_LOOP_INTERVAL = 15 * MINUTES; const CACHE_CLEANUP_LOOP_INTERVAL = 15 * MINUTES;
const REPORT_LOOP_INTERVAL = 15 * MINUTES; const REPORT_LOOP_INTERVAL = 15 * MINUTES;

View file

@ -1,7 +1,7 @@
// tslint:disable:no-console // tslint:disable:no-console
import { MINUTES } from "../../utils"; import { MINUTES } from "../../utils.js";
import { cleanupMessages } from "../cleanup/messages"; import { cleanupMessages } from "../cleanup/messages.js";
const LOOP_INTERVAL = 5 * MINUTES; const LOOP_INTERVAL = 5 * MINUTES;

View file

@ -1,10 +1,10 @@
// tslint:disable:no-console // tslint:disable:no-console
import moment from "moment-timezone"; import moment from "moment-timezone";
import { lazyMemoize, MINUTES } from "../../utils"; import { lazyMemoize, MINUTES } from "../../utils.js";
import { Reminder } from "../entities/Reminder"; import { Reminder } from "../entities/Reminder.js";
import { emitGuildEvent, hasGuildEventListener } from "../GuildEvents"; import { emitGuildEvent, hasGuildEventListener } from "../GuildEvents.js";
import { Reminders } from "../Reminders"; import { Reminders } from "../Reminders.js";
import Timeout = NodeJS.Timeout; import Timeout = NodeJS.Timeout;
const LOOP_INTERVAL = 15 * MINUTES; const LOOP_INTERVAL = 15 * MINUTES;

View file

@ -1,10 +1,10 @@
// tslint:disable:no-console // tslint:disable:no-console
import moment from "moment-timezone"; import moment from "moment-timezone";
import { lazyMemoize, MINUTES } from "../../utils"; import { lazyMemoize, MINUTES } from "../../utils.js";
import { ScheduledPost } from "../entities/ScheduledPost"; import { ScheduledPost } from "../entities/ScheduledPost.js";
import { emitGuildEvent, hasGuildEventListener } from "../GuildEvents"; import { emitGuildEvent, hasGuildEventListener } from "../GuildEvents.js";
import { ScheduledPosts } from "../ScheduledPosts"; import { ScheduledPosts } from "../ScheduledPosts.js";
import Timeout = NodeJS.Timeout; import Timeout = NodeJS.Timeout;
const LOOP_INTERVAL = 15 * MINUTES; const LOOP_INTERVAL = 15 * MINUTES;

View file

@ -1,4 +1,4 @@
import { AdvancedConsoleLogger } from "typeorm/logger/AdvancedConsoleLogger"; import { AdvancedConsoleLogger } from "typeorm";
let groupedQueryStats: Map<string, number> = new Map(); let groupedQueryStats: Map<string, number> = new Map();

View file

@ -2,7 +2,7 @@ import dotenv from "dotenv";
import fs from "fs"; import fs from "fs";
import path from "path"; import path from "path";
import { z } from "zod"; import { z } from "zod";
import { rootDir } from "./paths"; import { rootDir } from "./paths.js";
const envType = z.object({ const envType = z.object({
KEY: z.string().length(32), KEY: z.string().length(32),

View file

@ -1,7 +1,7 @@
import { z } from "zod"; import { z } from "zod";
import zodToJsonSchema from "zod-to-json-schema"; import { zodToJsonSchema } from "zod-to-json-schema";
import { guildPluginInfo } from "./plugins/pluginInfo"; import { guildPluginInfo } from "./plugins/pluginInfo.js";
import { zZeppelinGuildConfig } from "./types"; import { zZeppelinGuildConfig } from "./types.js";
const pluginSchemaMap = Object.entries(guildPluginInfo).reduce((map, [pluginName, pluginInfo]) => { const pluginSchemaMap = Object.entries(guildPluginInfo).reduce((map, [pluginName, pluginInfo]) => {
if (pluginInfo.configSchema) { if (pluginInfo.configSchema) {

View file

@ -1,6 +1,6 @@
// KEEP THIS AS FIRST IMPORT // KEEP THIS AS FIRST IMPORT
// See comment in module for details // See comment in module for details
import "./threadsSignalFix"; import "./threadsSignalFix.js";
import { import {
Client, Client,
@ -17,37 +17,37 @@ import { Knub, PluginError, PluginLoadError, PluginNotLoadedError } from "knub";
import moment from "moment-timezone"; import moment from "moment-timezone";
import { performance } from "perf_hooks"; import { performance } from "perf_hooks";
import process from "process"; import process from "process";
import { DiscordJSError } from "./DiscordJSError"; import { DiscordJSError } from "./DiscordJSError.js";
import { RecoverablePluginError } from "./RecoverablePluginError"; import { RecoverablePluginError } from "./RecoverablePluginError.js";
import { SimpleError } from "./SimpleError"; import { SimpleError } from "./SimpleError.js";
import { AllowedGuilds } from "./data/AllowedGuilds"; import { AllowedGuilds } from "./data/AllowedGuilds.js";
import { Configs } from "./data/Configs"; import { Configs } from "./data/Configs.js";
import { GuildLogs } from "./data/GuildLogs"; import { GuildLogs } from "./data/GuildLogs.js";
import { LogType } from "./data/LogType"; import { LogType } from "./data/LogType.js";
import { hasPhishermanMasterAPIKey } from "./data/Phisherman"; import { hasPhishermanMasterAPIKey } from "./data/Phisherman.js";
import { dataSource } from "./data/dataSource"; import { dataSource } from "./data/dataSource.js";
import { connect } from "./data/db"; import { connect } from "./data/db.js";
import { runExpiredArchiveDeletionLoop } from "./data/loops/expiredArchiveDeletionLoop"; import { runExpiredArchiveDeletionLoop } from "./data/loops/expiredArchiveDeletionLoop.js";
import { runExpiredMemberCacheDeletionLoop } from "./data/loops/expiredMemberCacheDeletionLoop"; import { runExpiredMemberCacheDeletionLoop } from "./data/loops/expiredMemberCacheDeletionLoop.js";
import { runExpiringMutesLoop } from "./data/loops/expiringMutesLoop"; import { runExpiringMutesLoop } from "./data/loops/expiringMutesLoop.js";
import { runExpiringTempbansLoop } from "./data/loops/expiringTempbansLoop"; import { runExpiringTempbansLoop } from "./data/loops/expiringTempbansLoop.js";
import { runExpiringVCAlertsLoop } from "./data/loops/expiringVCAlertsLoop"; import { runExpiringVCAlertsLoop } from "./data/loops/expiringVCAlertsLoop.js";
import { runMemberCacheDeletionLoop } from "./data/loops/memberCacheDeletionLoop"; import { runMemberCacheDeletionLoop } from "./data/loops/memberCacheDeletionLoop.js";
import { runPhishermanCacheCleanupLoop, runPhishermanReportingLoop } from "./data/loops/phishermanLoops"; import { runPhishermanCacheCleanupLoop, runPhishermanReportingLoop } from "./data/loops/phishermanLoops.js";
import { runSavedMessageCleanupLoop } from "./data/loops/savedMessageCleanupLoop"; import { runSavedMessageCleanupLoop } from "./data/loops/savedMessageCleanupLoop.js";
import { runUpcomingRemindersLoop } from "./data/loops/upcomingRemindersLoop"; import { runUpcomingRemindersLoop } from "./data/loops/upcomingRemindersLoop.js";
import { runUpcomingScheduledPostsLoop } from "./data/loops/upcomingScheduledPostsLoop"; import { runUpcomingScheduledPostsLoop } from "./data/loops/upcomingScheduledPostsLoop.js";
import { consumeQueryStats } from "./data/queryLogger"; import { consumeQueryStats } from "./data/queryLogger.js";
import { env } from "./env"; import { env } from "./env.js";
import { logger } from "./logger"; import { logger } from "./logger.js";
import { baseGuildPlugins, globalPlugins, guildPlugins } from "./plugins/availablePlugins"; import { baseGuildPlugins, globalPlugins, guildPlugins } from "./plugins/availablePlugins.js";
import { setProfiler } from "./profiler"; import { setProfiler } from "./profiler.js";
import { logRateLimit } from "./rateLimitStats"; import { logRateLimit } from "./rateLimitStats.js";
import { startUptimeCounter } from "./uptime"; import { startUptimeCounter } from "./uptime.js";
import { MINUTES, SECONDS, errorMessage, isDiscordAPIError, isDiscordHTTPError, sleep, successMessage } from "./utils"; import { MINUTES, SECONDS, errorMessage, isDiscordAPIError, isDiscordHTTPError, sleep, successMessage } from "./utils.js";
import { DecayingCounter } from "./utils/DecayingCounter"; import { DecayingCounter } from "./utils/DecayingCounter.js";
import { enableProfiling } from "./utils/easyProfiler"; import { enableProfiling } from "./utils/easyProfiler.js";
import { loadYamlSafely } from "./utils/loadYamlSafely"; import { loadYamlSafely } from "./utils/loadYamlSafely.js";
// Error handling // Error handling
let recentPluginErrors = 0; let recentPluginErrors = 0;

Some files were not shown because too many files have changed in this diff Show more