Skip to content

Commit 5772e27

Browse files
committed
refactor: convert /backend to ESM
1 parent 31d74c0 commit 5772e27

File tree

766 files changed

+3473
-3500
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

766 files changed

+3473
-3500
lines changed

backend/package.json

+2-7
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
"version": "0.0.1",
44
"description": "",
55
"private": true,
6+
"type": "module",
67
"scripts": {
78
"watch": "tsc-watch --build --onSuccess \"node start-dev.js\"",
89
"watch-yaml-parse-test": "tsc-watch --build --onSuccess \"node dist/yamlParseTest.js\"",
@@ -48,12 +49,7 @@
4849
"knub": "^32.0.0-next.21",
4950
"knub-command-manager": "^9.1.0",
5051
"last-commit-log": "^2.1.0",
51-
"lodash.chunk": "^4.2.0",
52-
"lodash.clonedeep": "^4.5.0",
53-
"lodash.difference": "^4.5.0",
54-
"lodash.intersection": "^4.4.0",
55-
"lodash.isequal": "^4.5.0",
56-
"lodash.pick": "^4.4.0",
52+
"lodash": "^4.17.21",
5753
"moment-timezone": "^0.5.21",
5854
"multer": "^1.4.5-lts.1",
5955
"mysql2": "^3.9.3",
@@ -87,7 +83,6 @@
8783
"@types/lodash.at": "^4.6.3",
8884
"@types/moment-timezone": "^0.5.6",
8985
"@types/multer": "^1.4.7",
90-
"@types/node": "^18.16.3",
9186
"@types/passport": "^1.0.0",
9287
"@types/passport-oauth2": "^1.4.8",
9388
"@types/passport-strategy": "^0.2.35",

backend/src/Queue.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { SECONDS } from "./utils";
1+
import { SECONDS } from "./utils.js";
22

33
type InternalQueueFn = () => Promise<void>;
44
type AnyFn = (...args: any[]) => any;

backend/src/QueuedEventEmitter.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { Queue } from "./Queue";
1+
import { Queue } from "./Queue.js";
22

33
type Listener = (...args: any[]) => void;
44

backend/src/RegExpRunner.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { EventEmitter } from "events";
22
import { CooldownManager } from "knub";
33
import { RegExpWorker, TimeoutError } from "regexp-worker";
4-
import { MINUTES, SECONDS } from "./utils";
4+
import { MINUTES, SECONDS } from "./utils.js";
55
import Timeout = NodeJS.Timeout;
66

77
const isTimeoutError = (a): a is TimeoutError => {

backend/src/api/archives.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import express, { Request, Response } from "express";
22
import moment from "moment-timezone";
3-
import { GuildArchives } from "../data/GuildArchives";
4-
import { notFound } from "./responses";
3+
import { GuildArchives } from "../data/GuildArchives.js";
4+
import { notFound } from "./responses.js";
55

66
export function initArchives(router: express.Router) {
77
const archives = new GuildArchives(null);

backend/src/api/auth.ts

+7-7
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,15 @@
11
import express, { Request, Response } from "express";
22
import https from "https";
3-
import pick from "lodash.pick";
3+
import pick from "lodash/pick.js";
44
import passport from "passport";
55
import { Strategy as CustomStrategy } from "passport-custom";
66
import OAuth2Strategy from "passport-oauth2";
7-
import { ApiLogins } from "../data/ApiLogins";
8-
import { ApiPermissionAssignments } from "../data/ApiPermissionAssignments";
9-
import { ApiUserInfo } from "../data/ApiUserInfo";
10-
import { ApiUserInfoData } from "../data/entities/ApiUserInfo";
11-
import { env } from "../env";
12-
import { ok } from "./responses";
7+
import { ApiLogins } from "../data/ApiLogins.js";
8+
import { ApiPermissionAssignments } from "../data/ApiPermissionAssignments.js";
9+
import { ApiUserInfo } from "../data/ApiUserInfo.js";
10+
import { ApiUserInfoData } from "../data/entities/ApiUserInfo.js";
11+
import { env } from "../env.js";
12+
import { ok } from "./responses.js";
1313

1414
interface IPassportApiUser {
1515
apiKey: string;

backend/src/api/docs.ts

+4-4
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
import express from "express";
22
import z from "zod";
3-
import { guildPlugins } from "../plugins/availablePlugins";
4-
import { guildPluginInfo } from "../plugins/pluginInfo";
5-
import { indentLines } from "../utils";
6-
import { notFound } from "./responses";
3+
import { guildPlugins } from "../plugins/availablePlugins.js";
4+
import { guildPluginInfo } from "../plugins/pluginInfo.js";
5+
import { indentLines } from "../utils.js";
6+
import { notFound } from "./responses.js";
77

88
function isZodObject(schema: z.ZodTypeAny): schema is z.ZodObject<any> {
99
return schema._def.typeName === "ZodObject";

backend/src/api/guilds.ts

+16-14
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,22 @@
11
import { ApiPermissions } from "@zeppelinbot/shared";
22
import express, { Request, Response } from "express";
3-
import { YAMLException } from "js-yaml";
3+
import jsYaml from "js-yaml";
44
import moment from "moment-timezone";
5-
import { Queue } from "../Queue";
6-
import { validateGuildConfig } from "../configValidator";
7-
import { AllowedGuilds } from "../data/AllowedGuilds";
8-
import { ApiAuditLog } from "../data/ApiAuditLog";
9-
import { ApiPermissionAssignments, ApiPermissionTypes } from "../data/ApiPermissionAssignments";
10-
import { Configs } from "../data/Configs";
11-
import { AuditLogEventTypes } from "../data/apiAuditLogTypes";
12-
import { isSnowflake } from "../utils";
13-
import { loadYamlSafely } from "../utils/loadYamlSafely";
14-
import { ObjectAliasError } from "../utils/validateNoObjectAliases";
15-
import { apiTokenAuthHandlers } from "./auth";
16-
import { hasGuildPermission, requireGuildPermission } from "./permissions";
17-
import { clientError, ok, serverError, unauthorized } from "./responses";
5+
import { Queue } from "../Queue.js";
6+
import { validateGuildConfig } from "../configValidator.js";
7+
import { AllowedGuilds } from "../data/AllowedGuilds.js";
8+
import { ApiAuditLog } from "../data/ApiAuditLog.js";
9+
import { ApiPermissionAssignments, ApiPermissionTypes } from "../data/ApiPermissionAssignments.js";
10+
import { Configs } from "../data/Configs.js";
11+
import { AuditLogEventTypes } from "../data/apiAuditLogTypes.js";
12+
import { isSnowflake } from "../utils.js";
13+
import { loadYamlSafely } from "../utils/loadYamlSafely.js";
14+
import { ObjectAliasError } from "../utils/validateNoObjectAliases.js";
15+
import { apiTokenAuthHandlers } from "./auth.js";
16+
import { hasGuildPermission, requireGuildPermission } from "./permissions.js";
17+
import { clientError, ok, serverError, unauthorized } from "./responses.js";
18+
19+
const YAMLException = jsYaml.YAMLException;
1820

1921
const apiPermissionAssignments = new ApiPermissionAssignments();
2022
const auditLog = new ApiAuditLog();

backend/src/api/guilds/importExport.ts

+6-6
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,12 @@ import { ApiPermissions } from "@zeppelinbot/shared";
22
import express, { Request, Response } from "express";
33
import moment from "moment-timezone";
44
import { z } from "zod";
5-
import { GuildCases } from "../../data/GuildCases";
6-
import { Case } from "../../data/entities/Case";
7-
import { MINUTES } from "../../utils";
8-
import { requireGuildPermission } from "../permissions";
9-
import { rateLimit } from "../rateLimits";
10-
import { clientError, ok } from "../responses";
5+
import { GuildCases } from "../../data/GuildCases.js";
6+
import { Case } from "../../data/entities/Case.js";
7+
import { MINUTES } from "../../utils.js";
8+
import { requireGuildPermission } from "../permissions.js";
9+
import { rateLimit } from "../rateLimits.js";
10+
import { clientError, ok } from "../responses.js";
1111

1212
const caseHandlingModeSchema = z.union([
1313
z.literal("replace"),

backend/src/api/guilds/index.ts

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import express from "express";
2-
import { apiTokenAuthHandlers } from "../auth";
3-
import { initGuildsImportExportAPI } from "./importExport";
4-
import { initGuildsMiscAPI } from "./misc";
2+
import { apiTokenAuthHandlers } from "../auth.js";
3+
import { initGuildsImportExportAPI } from "./importExport.js";
4+
import { initGuildsMiscAPI } from "./misc.js";
55

66
export function initGuildsAPI(router: express.Router) {
77
const guildRouter = express.Router();

backend/src/api/guilds/misc.ts

+15-13
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,21 @@
11
import { ApiPermissions } from "@zeppelinbot/shared";
22
import express, { Request, Response } from "express";
3-
import { YAMLException } from "js-yaml";
3+
import jsYaml from "js-yaml";
44
import moment from "moment-timezone";
5-
import { Queue } from "../../Queue";
6-
import { validateGuildConfig } from "../../configValidator";
7-
import { AllowedGuilds } from "../../data/AllowedGuilds";
8-
import { ApiAuditLog } from "../../data/ApiAuditLog";
9-
import { ApiPermissionAssignments, ApiPermissionTypes } from "../../data/ApiPermissionAssignments";
10-
import { Configs } from "../../data/Configs";
11-
import { AuditLogEventTypes } from "../../data/apiAuditLogTypes";
12-
import { isSnowflake } from "../../utils";
13-
import { loadYamlSafely } from "../../utils/loadYamlSafely";
14-
import { ObjectAliasError } from "../../utils/validateNoObjectAliases";
15-
import { hasGuildPermission, requireGuildPermission } from "../permissions";
16-
import { clientError, ok, serverError, unauthorized } from "../responses";
5+
import { Queue } from "../../Queue.js";
6+
import { validateGuildConfig } from "../../configValidator.js";
7+
import { AllowedGuilds } from "../../data/AllowedGuilds.js";
8+
import { ApiAuditLog } from "../../data/ApiAuditLog.js";
9+
import { ApiPermissionAssignments, ApiPermissionTypes } from "../../data/ApiPermissionAssignments.js";
10+
import { Configs } from "../../data/Configs.js";
11+
import { AuditLogEventTypes } from "../../data/apiAuditLogTypes.js";
12+
import { isSnowflake } from "../../utils.js";
13+
import { loadYamlSafely } from "../../utils/loadYamlSafely.js";
14+
import { ObjectAliasError } from "../../utils/validateNoObjectAliases.js";
15+
import { hasGuildPermission, requireGuildPermission } from "../permissions.js";
16+
import { clientError, ok, serverError, unauthorized } from "../responses.js";
17+
18+
const YAMLException = jsYaml.YAMLException;
1719

1820
const apiPermissionAssignments = new ApiPermissionAssignments();
1921
const auditLog = new ApiAuditLog();

backend/src/api/index.ts

+4-4
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
// KEEP THIS AS FIRST IMPORT
22
// See comment in module for details
3-
import "../threadsSignalFix";
3+
import "../threadsSignalFix.js";
44

5-
import { connect } from "../data/db";
6-
import { env } from "../env";
7-
import { setIsAPI } from "../globals";
5+
import { connect } from "../data/db.js";
6+
import { env } from "../env.js";
7+
import { setIsAPI } from "../globals.js";
88

99
if (!env.KEY) {
1010
// tslint:disable-next-line:no-console

backend/src/api/permissions.ts

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
import { ApiPermissions, hasPermission, permissionArrToSet } from "@zeppelinbot/shared";
22
import { Request, Response } from "express";
3-
import { ApiPermissionAssignments } from "../data/ApiPermissionAssignments";
4-
import { isStaff } from "../staff";
5-
import { unauthorized } from "./responses";
3+
import { ApiPermissionAssignments } from "../data/ApiPermissionAssignments.js";
4+
import { isStaff } from "../staff.js";
5+
import { unauthorized } from "./responses.js";
66

77
const apiPermissionAssignments = new ApiPermissionAssignments();
88

backend/src/api/rateLimits.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { Request, Response } from "express";
2-
import { error } from "./responses";
2+
import { error } from "./responses.js";
33

44
const lastRequestsByKey: Map<string, number> = new Map();
55

backend/src/api/staff.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import express, { Request, Response } from "express";
2-
import { isStaff } from "../staff";
3-
import { apiTokenAuthHandlers } from "./auth";
2+
import { isStaff } from "../staff.js";
3+
import { apiTokenAuthHandlers } from "./auth.js";
44

55
export function initStaff(app: express.Express) {
66
const staffRouter = express.Router();

backend/src/api/start.ts

+7-7
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,13 @@ import cors from "cors";
22
import express from "express";
33
import multer from "multer";
44
import { TokenError } from "passport-oauth2";
5-
import { env } from "../env";
6-
import { initArchives } from "./archives";
7-
import { initAuth } from "./auth";
8-
import { initDocs } from "./docs";
9-
import { initGuildsAPI } from "./guilds/index";
10-
import { clientError, error, notFound } from "./responses";
11-
import { startBackgroundTasks } from "./tasks";
5+
import { env } from "../env.js";
6+
import { initArchives } from "./archives.js";
7+
import { initAuth } from "./auth.js";
8+
import { initDocs } from "./docs.js";
9+
import { initGuildsAPI } from "./guilds/index.js";
10+
import { clientError, error, notFound } from "./responses.js";
11+
import { startBackgroundTasks } from "./tasks.js";
1212

1313
const apiPathPrefix = env.API_PATH_PREFIX || (env.NODE_ENV === "development" ? "/api" : "");
1414

backend/src/api/tasks.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
import { ApiPermissionAssignments } from "../data/ApiPermissionAssignments";
2-
import { MINUTES } from "../utils";
1+
import { ApiPermissionAssignments } from "../data/ApiPermissionAssignments.js";
2+
import { MINUTES } from "../utils.js";
33

44
export function startBackgroundTasks() {
55
// Clear expired API permissions every minute

backend/src/commandTypes.ts

+3-3
Original file line numberDiff line numberDiff line change
@@ -24,9 +24,9 @@ import {
2424
resolveUserId,
2525
roleMentionRegex,
2626
UnknownUser,
27-
} from "./utils";
28-
import { isValidTimezone } from "./utils/isValidTimezone";
29-
import { MessageTarget, resolveMessageTarget } from "./utils/resolveMessageTarget";
27+
} from "./utils.js";
28+
import { isValidTimezone } from "./utils/isValidTimezone.js";
29+
import { MessageTarget, resolveMessageTarget } from "./utils/resolveMessageTarget.js";
3030

3131
export const commandTypes = {
3232
...messageCommandBaseTypeConverters,

backend/src/configValidator.ts

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
import { ConfigValidationError, GuildPluginBlueprint, PluginConfigManager } from "knub";
22
import moment from "moment-timezone";
33
import { ZodError } from "zod";
4-
import { guildPlugins } from "./plugins/availablePlugins";
5-
import { ZeppelinGuildConfig, zZeppelinGuildConfig } from "./types";
6-
import { formatZodIssue } from "./utils/formatZodIssue";
4+
import { guildPlugins } from "./plugins/availablePlugins.js";
5+
import { ZeppelinGuildConfig, zZeppelinGuildConfig } from "./types.js";
6+
import { formatZodIssue } from "./utils/formatZodIssue.js";
77

88
const pluginNameToPlugin = new Map<string, GuildPluginBlueprint<any, any>>();
99
for (const plugin of guildPlugins) {

backend/src/data/AllowedGuilds.ts

+5-5
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
import moment from "moment-timezone";
22
import { Repository } from "typeorm";
3-
import { DBDateFormat } from "../utils";
4-
import { ApiPermissionTypes } from "./ApiPermissionAssignments";
5-
import { BaseRepository } from "./BaseRepository";
6-
import { dataSource } from "./dataSource";
7-
import { AllowedGuild } from "./entities/AllowedGuild";
3+
import { DBDateFormat } from "../utils.js";
4+
import { ApiPermissionTypes } from "./ApiPermissionAssignments.js";
5+
import { BaseRepository } from "./BaseRepository.js";
6+
import { dataSource } from "./dataSource.js";
7+
import { AllowedGuild } from "./entities/AllowedGuild.js";
88

99
export class AllowedGuilds extends BaseRepository {
1010
private allowedGuilds: Repository<AllowedGuild>;

backend/src/data/ApiAuditLog.ts

+5-5
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
import { Repository } from "typeorm/index";
2-
import { BaseRepository } from "./BaseRepository";
3-
import { AuditLogEventData, AuditLogEventType } from "./apiAuditLogTypes";
4-
import { dataSource } from "./dataSource";
5-
import { ApiAuditLogEntry } from "./entities/ApiAuditLogEntry";
1+
import { Repository } from "typeorm";
2+
import { BaseRepository } from "./BaseRepository.js";
3+
import { AuditLogEventData, AuditLogEventType } from "./apiAuditLogTypes.js";
4+
import { dataSource } from "./dataSource.js";
5+
import { ApiAuditLogEntry } from "./entities/ApiAuditLogEntry.js";
66

77
export class ApiAuditLog extends BaseRepository {
88
private auditLog: Repository<ApiAuditLogEntry<any>>;

backend/src/data/ApiLogins.ts

+4-4
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,10 @@ import moment from "moment-timezone";
33
import { Repository } from "typeorm";
44
// tslint:disable-next-line:no-submodule-imports
55
import { v4 as uuidv4 } from "uuid";
6-
import { DAYS, DBDateFormat } from "../utils";
7-
import { BaseRepository } from "./BaseRepository";
8-
import { dataSource } from "./dataSource";
9-
import { ApiLogin } from "./entities/ApiLogin";
6+
import { DAYS, DBDateFormat } from "../utils.js";
7+
import { BaseRepository } from "./BaseRepository.js";
8+
import { dataSource } from "./dataSource.js";
9+
import { ApiLogin } from "./entities/ApiLogin.js";
1010

1111
const LOGIN_EXPIRY_TIME = 1 * DAYS;
1212

backend/src/data/ApiPermissionAssignments.ts

+5-5
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
import { ApiPermissions } from "@zeppelinbot/shared";
22
import { Repository } from "typeorm";
3-
import { ApiAuditLog } from "./ApiAuditLog";
4-
import { BaseRepository } from "./BaseRepository";
5-
import { AuditLogEventTypes } from "./apiAuditLogTypes";
6-
import { dataSource } from "./dataSource";
7-
import { ApiPermissionAssignment } from "./entities/ApiPermissionAssignment";
3+
import { ApiAuditLog } from "./ApiAuditLog.js";
4+
import { BaseRepository } from "./BaseRepository.js";
5+
import { AuditLogEventTypes } from "./apiAuditLogTypes.js";
6+
import { dataSource } from "./dataSource.js";
7+
import { ApiPermissionAssignment } from "./entities/ApiPermissionAssignment.js";
88

99
export enum ApiPermissionTypes {
1010
User = "USER",

backend/src/data/ApiUserInfo.ts

+4-4
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
import moment from "moment-timezone";
22
import { Repository } from "typeorm";
3-
import { DBDateFormat } from "../utils";
4-
import { BaseRepository } from "./BaseRepository";
5-
import { dataSource } from "./dataSource";
6-
import { ApiUserInfoData, ApiUserInfo as ApiUserInfoEntity } from "./entities/ApiUserInfo";
3+
import { DBDateFormat } from "../utils.js";
4+
import { BaseRepository } from "./BaseRepository.js";
5+
import { dataSource } from "./dataSource.js";
6+
import { ApiUserInfoData, ApiUserInfo as ApiUserInfoEntity } from "./entities/ApiUserInfo.js";
77

88
export class ApiUserInfo extends BaseRepository {
99
private apiUserInfo: Repository<ApiUserInfoEntity>;

backend/src/data/Archives.ts

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { Repository } from "typeorm";
2-
import { BaseRepository } from "./BaseRepository";
3-
import { dataSource } from "./dataSource";
4-
import { ArchiveEntry } from "./entities/ArchiveEntry";
2+
import { BaseRepository } from "./BaseRepository.js";
3+
import { dataSource } from "./dataSource.js";
4+
import { ArchiveEntry } from "./entities/ArchiveEntry.js";
55

66
export class Archives extends BaseRepository {
77
protected archives: Repository<ArchiveEntry>;

backend/src/data/BaseGuildRepository.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { BaseRepository } from "./BaseRepository";
1+
import { BaseRepository } from "./BaseRepository.js";
22

33
export class BaseGuildRepository<TEntity = unknown> extends BaseRepository<TEntity> {
44
private static guildInstances: Map<string, any>;

backend/src/data/BaseRepository.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { asyncMap } from "../utils/async";
1+
import { asyncMap } from "../utils/async.js";
22

33
export class BaseRepository<TEntity = unknown> {
44
private nextRelations: string[];

0 commit comments

Comments
 (0)