Merge branch 'master' into maddyrtc
This commit is contained in:
commit
ce9d7339d3
@ -2821,6 +2821,10 @@
|
|||||||
"type": "string",
|
"type": "string",
|
||||||
"format": "date-time"
|
"format": "date-time"
|
||||||
},
|
},
|
||||||
|
"premium_since": {
|
||||||
|
"type": "string",
|
||||||
|
"format": "date-time"
|
||||||
|
},
|
||||||
"verified": {
|
"verified": {
|
||||||
"type": "boolean"
|
"type": "boolean"
|
||||||
},
|
},
|
||||||
@ -3800,7 +3804,8 @@
|
|||||||
"format": "date-time"
|
"format": "date-time"
|
||||||
},
|
},
|
||||||
"premium_since": {
|
"premium_since": {
|
||||||
"type": "integer"
|
"type": "string",
|
||||||
|
"format": "date-time"
|
||||||
},
|
},
|
||||||
"deaf": {
|
"deaf": {
|
||||||
"type": "boolean"
|
"type": "boolean"
|
||||||
|
6391
api/package-lock.json
generated
6391
api/package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@ -49,7 +49,7 @@
|
|||||||
"@types/morgan": "^1.9.3",
|
"@types/morgan": "^1.9.3",
|
||||||
"@types/multer": "^1.4.5",
|
"@types/multer": "^1.4.5",
|
||||||
"@types/node": "^14.17.9",
|
"@types/node": "^14.17.9",
|
||||||
"@types/node-fetch": "^2.5.7",
|
"@types/node-fetch": "^2.5.5",
|
||||||
"@types/supertest": "^2.0.11",
|
"@types/supertest": "^2.0.11",
|
||||||
"@zerollup/ts-transform-paths": "^1.7.18",
|
"@zerollup/ts-transform-paths": "^1.7.18",
|
||||||
"jest": "^27.2.5",
|
"jest": "^27.2.5",
|
||||||
@ -86,7 +86,7 @@
|
|||||||
"missing-native-js-functions": "^1.2.18",
|
"missing-native-js-functions": "^1.2.18",
|
||||||
"morgan": "^1.10.0",
|
"morgan": "^1.10.0",
|
||||||
"multer": "^1.4.2",
|
"multer": "^1.4.2",
|
||||||
"node-fetch": "^3.1.1",
|
"node-fetch": "^2.6.2",
|
||||||
"patch-package": "^6.4.7",
|
"patch-package": "^6.4.7",
|
||||||
"picocolors": "^1.0.0",
|
"picocolors": "^1.0.0",
|
||||||
"proxy-agent": "^5.0.0",
|
"proxy-agent": "^5.0.0",
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
import { Request, Response, Router } from "express";
|
import { Request, Response, Router } from "express";
|
||||||
import { emitEvent, getPermission, GuildBanAddEvent, GuildBanRemoveEvent, Guild, Ban, User, Member } from "@fosscord/util";
|
import { DiscordApiErrors, emitEvent, getPermission, GuildBanAddEvent, GuildBanRemoveEvent, Guild, Ban, User, Member } from "@fosscord/util";
|
||||||
import { HTTPError } from "lambert-server";
|
import { HTTPError } from "lambert-server";
|
||||||
import { getIpAdress, route } from "@fosscord/api";
|
import { getIpAdress, route } from "@fosscord/api";
|
||||||
|
|
||||||
@ -17,6 +17,14 @@ export interface BanRegistrySchema {
|
|||||||
reason?: string | undefined;
|
reason?: string | undefined;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
export interface BanModeratorSchema {
|
||||||
|
id: string;
|
||||||
|
user_id: string;
|
||||||
|
guild_id: string;
|
||||||
|
executor_id: string;
|
||||||
|
reason?: string | undefined;
|
||||||
|
};
|
||||||
|
|
||||||
const router: Router = Router();
|
const router: Router = Router();
|
||||||
|
|
||||||
/* TODO: Deleting the secrets is just a temporary go-around. Views should be implemented for both safety and better handling. */
|
/* TODO: Deleting the secrets is just a temporary go-around. Views should be implemented for both safety and better handling. */
|
||||||
@ -27,11 +35,14 @@ router.get("/", route({ permission: "BAN_MEMBERS" }), async (req: Request, res:
|
|||||||
let bans = await Ban.find({ guild_id: guild_id });
|
let bans = await Ban.find({ guild_id: guild_id });
|
||||||
|
|
||||||
/* Filter secret from database registry.*/
|
/* Filter secret from database registry.*/
|
||||||
|
|
||||||
|
bans.filter(ban => ban.user_id !== ban.executor_id);
|
||||||
|
// pretend self-bans don't exist to prevent victim chasing
|
||||||
|
|
||||||
bans.forEach((registry: BanRegistrySchema) => {
|
bans.forEach((registry: BanRegistrySchema) => {
|
||||||
delete registry.ip;
|
delete registry.ip;
|
||||||
});
|
});
|
||||||
|
|
||||||
return res.json(bans);
|
return res.json(bans);
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -41,7 +52,12 @@ router.get("/:user", route({ permission: "BAN_MEMBERS" }), async (req: Request,
|
|||||||
|
|
||||||
let ban = await Ban.findOneOrFail({ guild_id: guild_id, user_id: user_id }) as BanRegistrySchema;
|
let ban = await Ban.findOneOrFail({ guild_id: guild_id, user_id: user_id }) as BanRegistrySchema;
|
||||||
|
|
||||||
|
if (ban.user_id === ban.executor_id) throw DiscordApiErrors.UNKNOWN_BAN;
|
||||||
|
// pretend self-bans don't exist to prevent victim chasing
|
||||||
|
|
||||||
/* Filter secret from registry. */
|
/* Filter secret from registry. */
|
||||||
|
|
||||||
|
ban = ban as BanModeratorSchema;
|
||||||
|
|
||||||
delete ban.ip
|
delete ban.ip
|
||||||
|
|
||||||
@ -52,10 +68,12 @@ router.put("/:user_id", route({ body: "BanCreateSchema", permission: "BAN_MEMBER
|
|||||||
const { guild_id } = req.params;
|
const { guild_id } = req.params;
|
||||||
const banned_user_id = req.params.user_id;
|
const banned_user_id = req.params.user_id;
|
||||||
|
|
||||||
const banned_user = await User.getPublicUser(banned_user_id);
|
if ( (req.user_id === banned_user_id) && (banned_user_id === req.permission!.cache.guild?.owner_id))
|
||||||
|
throw new HTTPError("You are the guild owner, hence can't ban yourself", 403);
|
||||||
if (req.user_id === banned_user_id) throw new HTTPError("You can't ban yourself", 400);
|
|
||||||
if (req.permission!.cache.guild?.owner_id === banned_user_id) throw new HTTPError("You can't ban the owner", 400);
|
if (req.permission!.cache.guild?.owner_id === banned_user_id) throw new HTTPError("You can't ban the owner", 400);
|
||||||
|
|
||||||
|
const banned_user = await User.getPublicUser(banned_user_id);
|
||||||
|
|
||||||
const ban = new Ban({
|
const ban = new Ban({
|
||||||
user_id: banned_user_id,
|
user_id: banned_user_id,
|
||||||
@ -81,11 +99,48 @@ router.put("/:user_id", route({ body: "BanCreateSchema", permission: "BAN_MEMBER
|
|||||||
return res.json(ban);
|
return res.json(ban);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
router.put("/@me", route({ body: "BanCreateSchema"}), async (req: Request, res: Response) => {
|
||||||
|
const { guild_id } = req.params;
|
||||||
|
|
||||||
|
const banned_user = await User.getPublicUser(req.params.user_id);
|
||||||
|
|
||||||
|
if (req.permission!.cache.guild?.owner_id === req.params.user_id)
|
||||||
|
throw new HTTPError("You are the guild owner, hence can't ban yourself", 403);
|
||||||
|
|
||||||
|
const ban = new Ban({
|
||||||
|
user_id: req.params.user_id,
|
||||||
|
guild_id: guild_id,
|
||||||
|
ip: getIpAdress(req),
|
||||||
|
executor_id: req.params.user_id,
|
||||||
|
reason: req.body.reason // || otherwise empty
|
||||||
|
});
|
||||||
|
|
||||||
|
await Promise.all([
|
||||||
|
Member.removeFromGuild(req.user_id, guild_id),
|
||||||
|
ban.save(),
|
||||||
|
emitEvent({
|
||||||
|
event: "GUILD_BAN_ADD",
|
||||||
|
data: {
|
||||||
|
guild_id: guild_id,
|
||||||
|
user: banned_user
|
||||||
|
},
|
||||||
|
guild_id: guild_id
|
||||||
|
} as GuildBanAddEvent)
|
||||||
|
]);
|
||||||
|
|
||||||
|
return res.json(ban);
|
||||||
|
});
|
||||||
|
|
||||||
router.delete("/:user_id", route({ permission: "BAN_MEMBERS" }), async (req: Request, res: Response) => {
|
router.delete("/:user_id", route({ permission: "BAN_MEMBERS" }), async (req: Request, res: Response) => {
|
||||||
const { guild_id, user_id } = req.params;
|
const { guild_id, user_id } = req.params;
|
||||||
|
|
||||||
|
let ban = await Ban.findOneOrFail({ guild_id: guild_id, user_id: user_id });
|
||||||
|
|
||||||
|
if (ban.user_id === ban.executor_id) throw DiscordApiErrors.UNKNOWN_BAN;
|
||||||
|
// make self-bans irreversible and hide them from view to avoid victim chasing
|
||||||
|
|
||||||
const banned_user = await User.getPublicUser(user_id);
|
const banned_user = await User.getPublicUser(user_id);
|
||||||
|
|
||||||
await Promise.all([
|
await Promise.all([
|
||||||
Ban.delete({
|
Ban.delete({
|
||||||
user_id: user_id,
|
user_id: user_id,
|
||||||
|
@ -16,22 +16,30 @@ router.get("/", route({ test: { response: { body: "UserProfileResponse" } } }),
|
|||||||
const user = await User.getPublicUser(req.params.id, { relations: ["connected_accounts"] });
|
const user = await User.getPublicUser(req.params.id, { relations: ["connected_accounts"] });
|
||||||
|
|
||||||
var mutual_guilds: object[] = [];
|
var mutual_guilds: object[] = [];
|
||||||
|
var premium_guild_since;
|
||||||
const requested_member = await Member.find( { id: req.params.id, })
|
const requested_member = await Member.find( { id: req.params.id, })
|
||||||
const self_member = await Member.find( { id: req.user_id, })
|
const self_member = await Member.find( { id: req.user_id, })
|
||||||
|
|
||||||
for(const rmem of requested_member) {
|
for(const rmem of requested_member) {
|
||||||
|
if(rmem.premium_since) {
|
||||||
|
if(premium_guild_since){
|
||||||
|
if(premium_guild_since > rmem.premium_since) {
|
||||||
|
premium_guild_since = rmem.premium_since;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
premium_guild_since = rmem.premium_since;
|
||||||
|
}
|
||||||
|
}
|
||||||
for(const smem of self_member) {
|
for(const smem of self_member) {
|
||||||
if (smem.guild_id === rmem.guild_id) {
|
if (smem.guild_id === rmem.guild_id) {
|
||||||
mutual_guilds.push({id: rmem.guild_id, nick: rmem.nick})
|
mutual_guilds.push({id: rmem.guild_id, nick: rmem.nick})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
res.json({
|
res.json({
|
||||||
connected_accounts: user.connected_accounts,
|
connected_accounts: user.connected_accounts,
|
||||||
premium_guild_since: null, // TODO
|
premium_guild_since: premium_guild_since, // TODO
|
||||||
premium_since: null, // TODO
|
premium_since: user.premium_since, // TODO
|
||||||
mutual_guilds: mutual_guilds, // TODO {id: "", nick: null} when ?with_mutual_guilds=true
|
mutual_guilds: mutual_guilds, // TODO {id: "", nick: null} when ?with_mutual_guilds=true
|
||||||
user: {
|
user: {
|
||||||
username: user.username,
|
username: user.username,
|
||||||
|
@ -58,7 +58,7 @@ router.patch("/", route({ body: "UserModifySchema" }), async (req: Request, res:
|
|||||||
}
|
}
|
||||||
|
|
||||||
var check_username = body?.username?.replace(/\s/g, '');
|
var check_username = body?.username?.replace(/\s/g, '');
|
||||||
if(!check_username) {
|
if(!check_username && !body?.avatar && !body?.banner) {
|
||||||
throw FieldErrors({
|
throw FieldErrors({
|
||||||
username: { code: "BASE_TYPE_REQUIRED", message: req.t("common:field.BASE_TYPE_REQUIRED") }
|
username: { code: "BASE_TYPE_REQUIRED", message: req.t("common:field.BASE_TYPE_REQUIRED") }
|
||||||
});
|
});
|
||||||
|
53
bundle/.vscode/launch.json
vendored
53
bundle/.vscode/launch.json
vendored
@ -1,18 +1,35 @@
|
|||||||
{
|
{
|
||||||
// Use IntelliSense to learn about possible attributes.
|
"version": "0.2.0",
|
||||||
// Hover to view descriptions of existing attributes.
|
"configurations": [
|
||||||
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
|
{
|
||||||
"version": "0.2.0",
|
"sourceMaps": true,
|
||||||
"configurations": [
|
"name": "ts-node",
|
||||||
{
|
"type": "node",
|
||||||
"sourceMaps": true,
|
"request": "launch",
|
||||||
"type": "node",
|
"args": [
|
||||||
"request": "launch",
|
"${workspaceFolder}/src/start.ts"
|
||||||
"name": "Launch Server",
|
],
|
||||||
"program": "${workspaceFolder}/dist/bundle/src/start.js",
|
"runtimeArgs": [
|
||||||
"preLaunchTask": "tsc: build - tsconfig.json",
|
"-r",
|
||||||
"outFiles": ["${workspaceFolder}/dist/**/*.js"],
|
"ts-node/register"
|
||||||
"envFile": "${workspaceFolder}/.env"
|
],
|
||||||
}
|
"protocol": "inspector",
|
||||||
]
|
"internalConsoleOptions": "openOnSessionStart",
|
||||||
}
|
"env": {
|
||||||
|
"TS_NODE_PROJECT": "${workspaceFolder}/tsnode.tsconfig.json",
|
||||||
|
"TS_NODE_COMPILER": "typescript-cached-transpile"
|
||||||
|
},
|
||||||
|
"resolveSourceMapLocations": null, /* allow breakpoints in modules other than bundle */
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"sourceMaps": true,
|
||||||
|
"type": "node",
|
||||||
|
"request": "launch",
|
||||||
|
"name": "Launch Server",
|
||||||
|
"program": "${workspaceFolder}/dist/bundle/src/start.js",
|
||||||
|
"preLaunchTask": "tsc: build - tsconfig.json",
|
||||||
|
"outFiles": ["${workspaceFolder}/dist/**/*.js"],
|
||||||
|
"envFile": "${workspaceFolder}/.env",
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
202
bundle/package-lock.json
generated
202
bundle/package-lock.json
generated
@ -46,6 +46,7 @@
|
|||||||
"missing-native-js-functions": "^1.2.18",
|
"missing-native-js-functions": "^1.2.18",
|
||||||
"morgan": "^1.10.0",
|
"morgan": "^1.10.0",
|
||||||
"multer": "^1.4.2",
|
"multer": "^1.4.2",
|
||||||
|
"nan": "^2.15.0",
|
||||||
"nanocolors": "^0.2.12",
|
"nanocolors": "^0.2.12",
|
||||||
"node-fetch": "^2.6.2",
|
"node-fetch": "^2.6.2",
|
||||||
"node-os-utils": "^1.3.5",
|
"node-os-utils": "^1.3.5",
|
||||||
@ -59,6 +60,7 @@
|
|||||||
"tslib": "^2.3.1",
|
"tslib": "^2.3.1",
|
||||||
"typeorm": "^0.2.37",
|
"typeorm": "^0.2.37",
|
||||||
"typescript": "^4.1.2",
|
"typescript": "^4.1.2",
|
||||||
|
"typescript-cached-transpile": "^0.0.6",
|
||||||
"typescript-json-schema": "^0.50.1",
|
"typescript-json-schema": "^0.50.1",
|
||||||
"ws": "^7.4.2"
|
"ws": "^7.4.2"
|
||||||
},
|
},
|
||||||
@ -91,6 +93,7 @@
|
|||||||
"ts-node": "^10.2.1",
|
"ts-node": "^10.2.1",
|
||||||
"ts-node-dev": "^1.1.6",
|
"ts-node-dev": "^1.1.6",
|
||||||
"ts-patch": "^1.4.4",
|
"ts-patch": "^1.4.4",
|
||||||
|
"tsconfig-paths": "^3.12.0",
|
||||||
"typescript": "^4.2.3",
|
"typescript": "^4.2.3",
|
||||||
"typescript-json-schema": "0.50.1"
|
"typescript-json-schema": "0.50.1"
|
||||||
}
|
}
|
||||||
@ -125,7 +128,7 @@
|
|||||||
"missing-native-js-functions": "^1.2.18",
|
"missing-native-js-functions": "^1.2.18",
|
||||||
"morgan": "^1.10.0",
|
"morgan": "^1.10.0",
|
||||||
"multer": "^1.4.2",
|
"multer": "^1.4.2",
|
||||||
"node-fetch": "^3.1.1",
|
"node-fetch": "^2.6.2",
|
||||||
"patch-package": "^6.4.7",
|
"patch-package": "^6.4.7",
|
||||||
"picocolors": "^1.0.0",
|
"picocolors": "^1.0.0",
|
||||||
"proxy-agent": "^5.0.0",
|
"proxy-agent": "^5.0.0",
|
||||||
@ -146,7 +149,7 @@
|
|||||||
"@types/morgan": "^1.9.3",
|
"@types/morgan": "^1.9.3",
|
||||||
"@types/multer": "^1.4.5",
|
"@types/multer": "^1.4.5",
|
||||||
"@types/node": "^14.17.9",
|
"@types/node": "^14.17.9",
|
||||||
"@types/node-fetch": "^2.5.7",
|
"@types/node-fetch": "^2.5.5",
|
||||||
"@types/supertest": "^2.0.11",
|
"@types/supertest": "^2.0.11",
|
||||||
"@zerollup/ts-transform-paths": "^1.7.18",
|
"@zerollup/ts-transform-paths": "^1.7.18",
|
||||||
"jest": "^27.2.5",
|
"jest": "^27.2.5",
|
||||||
@ -183,7 +186,7 @@
|
|||||||
"missing-native-js-functions": "^1.2.17",
|
"missing-native-js-functions": "^1.2.17",
|
||||||
"multer": "^1.4.2",
|
"multer": "^1.4.2",
|
||||||
"nanocolors": "^0.2.12",
|
"nanocolors": "^0.2.12",
|
||||||
"node-fetch": "^2.6.7",
|
"node-fetch": "^2.6.2",
|
||||||
"supertest": "^6.1.6",
|
"supertest": "^6.1.6",
|
||||||
"typescript": "^4.1.2"
|
"typescript": "^4.1.2"
|
||||||
},
|
},
|
||||||
@ -3602,6 +3605,12 @@
|
|||||||
"integrity": "sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==",
|
"integrity": "sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
|
"node_modules/@types/json5": {
|
||||||
|
"version": "0.0.29",
|
||||||
|
"resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz",
|
||||||
|
"integrity": "sha1-7ihweulOEdK4J7y+UnC86n8+ce4=",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
"node_modules/@types/jsonwebtoken": {
|
"node_modules/@types/jsonwebtoken": {
|
||||||
"version": "8.5.5",
|
"version": "8.5.5",
|
||||||
"integrity": "sha512-OGqtHQ7N5/Ap/TUwO6IgHDuLiAoTmHhGpNvgkCm/F4N6pKzx/RBSfr2OXZSwC6vkfnsEdb6+7DNZVtiXiwdwFw==",
|
"integrity": "sha512-OGqtHQ7N5/Ap/TUwO6IgHDuLiAoTmHhGpNvgkCm/F4N6pKzx/RBSfr2OXZSwC6vkfnsEdb6+7DNZVtiXiwdwFw==",
|
||||||
@ -9486,7 +9495,6 @@
|
|||||||
"integrity": "sha512-roEOz41hxui2Q7uYnWsjMOTry6TcNUNmp8audCx18gF10P2NknwdpF+E+HKvz/F2NvPKGGBF4NGc+ZPQ+AABwg==",
|
"integrity": "sha512-roEOz41hxui2Q7uYnWsjMOTry6TcNUNmp8audCx18gF10P2NknwdpF+E+HKvz/F2NvPKGGBF4NGc+ZPQ+AABwg==",
|
||||||
"hasInstallScript": true,
|
"hasInstallScript": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"nan": "^2.12.1",
|
|
||||||
"node-pre-gyp": "^0.11.0"
|
"node-pre-gyp": "^0.11.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@ -10179,6 +10187,39 @@
|
|||||||
"strip-json-comments": "^2.0.0"
|
"strip-json-comments": "^2.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/tsconfig-paths": {
|
||||||
|
"version": "3.12.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.12.0.tgz",
|
||||||
|
"integrity": "sha512-e5adrnOYT6zqVnWqZu7i/BQ3BnhzvGbjEjejFXO20lKIKpwTaupkCPgEfv4GZK1IBciJUEhYs3J3p75FdaTFVg==",
|
||||||
|
"dev": true,
|
||||||
|
"dependencies": {
|
||||||
|
"@types/json5": "^0.0.29",
|
||||||
|
"json5": "^1.0.1",
|
||||||
|
"minimist": "^1.2.0",
|
||||||
|
"strip-bom": "^3.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/tsconfig-paths/node_modules/json5": {
|
||||||
|
"version": "1.0.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz",
|
||||||
|
"integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==",
|
||||||
|
"dev": true,
|
||||||
|
"dependencies": {
|
||||||
|
"minimist": "^1.2.0"
|
||||||
|
},
|
||||||
|
"bin": {
|
||||||
|
"json5": "lib/cli.js"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/tsconfig-paths/node_modules/strip-bom": {
|
||||||
|
"version": "3.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
|
||||||
|
"integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=",
|
||||||
|
"dev": true,
|
||||||
|
"engines": {
|
||||||
|
"node": ">=4"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/tsconfig/node_modules/strip-bom": {
|
"node_modules/tsconfig/node_modules/strip-bom": {
|
||||||
"version": "3.0.0",
|
"version": "3.0.0",
|
||||||
"integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=",
|
"integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=",
|
||||||
@ -10440,7 +10481,6 @@
|
|||||||
"node_modules/typescript": {
|
"node_modules/typescript": {
|
||||||
"version": "4.4.3",
|
"version": "4.4.3",
|
||||||
"integrity": "sha512-4xfscpisVgqqDfPaJo5vkd+Qd/ItkoagnHpufr+i2QCHBsNYp+G7UAoyFl8aPtx879u38wPV65rZ8qbGZijalA==",
|
"integrity": "sha512-4xfscpisVgqqDfPaJo5vkd+Qd/ItkoagnHpufr+i2QCHBsNYp+G7UAoyFl8aPtx879u38wPV65rZ8qbGZijalA==",
|
||||||
"dev": true,
|
|
||||||
"bin": {
|
"bin": {
|
||||||
"tsc": "bin/tsc",
|
"tsc": "bin/tsc",
|
||||||
"tsserver": "bin/tsserver"
|
"tsserver": "bin/tsserver"
|
||||||
@ -10449,6 +10489,58 @@
|
|||||||
"node": ">=4.2.0"
|
"node": ">=4.2.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/typescript-cached-transpile": {
|
||||||
|
"version": "0.0.6",
|
||||||
|
"resolved": "https://registry.npmjs.org/typescript-cached-transpile/-/typescript-cached-transpile-0.0.6.tgz",
|
||||||
|
"integrity": "sha512-bfPc7YUW0PrVkQHU0xN0ANRuxdPgoYYXtZEW6PNkH5a97/AOM+kPPxSTMZbpWA3BG1do22JUkfC60KoCKJ9VZQ==",
|
||||||
|
"dependencies": {
|
||||||
|
"@types/node": "^12.12.7",
|
||||||
|
"fs-extra": "^8.1.0",
|
||||||
|
"tslib": "^1.10.0"
|
||||||
|
},
|
||||||
|
"peerDependencies": {
|
||||||
|
"typescript": "*"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/typescript-cached-transpile/node_modules/@types/node": {
|
||||||
|
"version": "12.20.41",
|
||||||
|
"resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.41.tgz",
|
||||||
|
"integrity": "sha512-f6xOqucbDirG7LOzedpvzjP3UTmHttRou3Mosx3vL9wr9AIQGhcPgVnqa8ihpZYnxyM1rxeNCvTyukPKZtq10Q=="
|
||||||
|
},
|
||||||
|
"node_modules/typescript-cached-transpile/node_modules/fs-extra": {
|
||||||
|
"version": "8.1.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz",
|
||||||
|
"integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==",
|
||||||
|
"dependencies": {
|
||||||
|
"graceful-fs": "^4.2.0",
|
||||||
|
"jsonfile": "^4.0.0",
|
||||||
|
"universalify": "^0.1.0"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=6 <7 || >=8"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/typescript-cached-transpile/node_modules/jsonfile": {
|
||||||
|
"version": "4.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz",
|
||||||
|
"integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=",
|
||||||
|
"optionalDependencies": {
|
||||||
|
"graceful-fs": "^4.1.6"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/typescript-cached-transpile/node_modules/tslib": {
|
||||||
|
"version": "1.14.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
|
||||||
|
"integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="
|
||||||
|
},
|
||||||
|
"node_modules/typescript-cached-transpile/node_modules/universalify": {
|
||||||
|
"version": "0.1.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz",
|
||||||
|
"integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==",
|
||||||
|
"engines": {
|
||||||
|
"node": ">= 4.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/typescript-json-schema": {
|
"node_modules/typescript-json-schema": {
|
||||||
"version": "0.50.1",
|
"version": "0.50.1",
|
||||||
"integrity": "sha512-GCof/SDoiTDl0qzPonNEV4CHyCsZEIIf+mZtlrjoD8vURCcEzEfa2deRuxYid8Znp/e27eDR7Cjg8jgGrimBCA==",
|
"integrity": "sha512-GCof/SDoiTDl0qzPonNEV4CHyCsZEIIf+mZtlrjoD8vURCcEzEfa2deRuxYid8Znp/e27eDR7Cjg8jgGrimBCA==",
|
||||||
@ -10544,8 +10636,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/url-parse": {
|
"node_modules/url-parse": {
|
||||||
"version": "1.5.3",
|
"version": "1.5.10",
|
||||||
"integrity": "sha512-IIORyIQD9rvj0A4CLWsHkBBJuNqWpFQe224b6j9t/ABmquIS0qDU2pY6kl6AuOrL5OkCXHMCFNe1jBcuAggjvQ==",
|
"resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz",
|
||||||
|
"integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"querystringify": "^2.1.1",
|
"querystringify": "^2.1.1",
|
||||||
"requires-port": "^1.0.0"
|
"requires-port": "^1.0.0"
|
||||||
@ -12906,7 +12999,7 @@
|
|||||||
"@types/morgan": "^1.9.3",
|
"@types/morgan": "^1.9.3",
|
||||||
"@types/multer": "^1.4.5",
|
"@types/multer": "^1.4.5",
|
||||||
"@types/node": "^14.17.9",
|
"@types/node": "^14.17.9",
|
||||||
"@types/node-fetch": "^2.5.7",
|
"@types/node-fetch": "^2.5.5",
|
||||||
"@types/supertest": "^2.0.11",
|
"@types/supertest": "^2.0.11",
|
||||||
"@zerollup/ts-transform-paths": "^1.7.18",
|
"@zerollup/ts-transform-paths": "^1.7.18",
|
||||||
"ajv": "8.6.2",
|
"ajv": "8.6.2",
|
||||||
@ -12931,7 +13024,7 @@
|
|||||||
"missing-native-js-functions": "^1.2.18",
|
"missing-native-js-functions": "^1.2.18",
|
||||||
"morgan": "^1.10.0",
|
"morgan": "^1.10.0",
|
||||||
"multer": "^1.4.2",
|
"multer": "^1.4.2",
|
||||||
"node-fetch": "^3.1.1",
|
"node-fetch": "^2.6.2",
|
||||||
"patch-package": "^6.4.7",
|
"patch-package": "^6.4.7",
|
||||||
"picocolors": "^1.0.0",
|
"picocolors": "^1.0.0",
|
||||||
"proxy-agent": "^5.0.0",
|
"proxy-agent": "^5.0.0",
|
||||||
@ -12977,7 +13070,7 @@
|
|||||||
"missing-native-js-functions": "^1.2.17",
|
"missing-native-js-functions": "^1.2.17",
|
||||||
"multer": "^1.4.2",
|
"multer": "^1.4.2",
|
||||||
"nanocolors": "^0.2.12",
|
"nanocolors": "^0.2.12",
|
||||||
"node-fetch": "^2.6.7",
|
"node-fetch": "^2.6.2",
|
||||||
"supertest": "^6.1.6",
|
"supertest": "^6.1.6",
|
||||||
"ts-patch": "^1.4.4",
|
"ts-patch": "^1.4.4",
|
||||||
"typescript": "^4.1.2"
|
"typescript": "^4.1.2"
|
||||||
@ -13654,6 +13747,12 @@
|
|||||||
"integrity": "sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==",
|
"integrity": "sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
|
"@types/json5": {
|
||||||
|
"version": "0.0.29",
|
||||||
|
"resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz",
|
||||||
|
"integrity": "sha1-7ihweulOEdK4J7y+UnC86n8+ce4=",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
"@types/jsonwebtoken": {
|
"@types/jsonwebtoken": {
|
||||||
"version": "8.5.5",
|
"version": "8.5.5",
|
||||||
"integrity": "sha512-OGqtHQ7N5/Ap/TUwO6IgHDuLiAoTmHhGpNvgkCm/F4N6pKzx/RBSfr2OXZSwC6vkfnsEdb6+7DNZVtiXiwdwFw==",
|
"integrity": "sha512-OGqtHQ7N5/Ap/TUwO6IgHDuLiAoTmHhGpNvgkCm/F4N6pKzx/RBSfr2OXZSwC6vkfnsEdb6+7DNZVtiXiwdwFw==",
|
||||||
@ -18072,7 +18171,6 @@
|
|||||||
"resolved": "https://registry.npmjs.org/sqlite3/-/sqlite3-4.2.0.tgz",
|
"resolved": "https://registry.npmjs.org/sqlite3/-/sqlite3-4.2.0.tgz",
|
||||||
"integrity": "sha512-roEOz41hxui2Q7uYnWsjMOTry6TcNUNmp8audCx18gF10P2NknwdpF+E+HKvz/F2NvPKGGBF4NGc+ZPQ+AABwg==",
|
"integrity": "sha512-roEOz41hxui2Q7uYnWsjMOTry6TcNUNmp8audCx18gF10P2NknwdpF+E+HKvz/F2NvPKGGBF4NGc+ZPQ+AABwg==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"nan": "^2.12.1",
|
|
||||||
"node-pre-gyp": "^0.11.0"
|
"node-pre-gyp": "^0.11.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@ -18560,6 +18658,35 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"tsconfig-paths": {
|
||||||
|
"version": "3.12.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.12.0.tgz",
|
||||||
|
"integrity": "sha512-e5adrnOYT6zqVnWqZu7i/BQ3BnhzvGbjEjejFXO20lKIKpwTaupkCPgEfv4GZK1IBciJUEhYs3J3p75FdaTFVg==",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"@types/json5": "^0.0.29",
|
||||||
|
"json5": "^1.0.1",
|
||||||
|
"minimist": "^1.2.0",
|
||||||
|
"strip-bom": "^3.0.0"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"json5": {
|
||||||
|
"version": "1.0.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz",
|
||||||
|
"integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"minimist": "^1.2.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"strip-bom": {
|
||||||
|
"version": "3.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
|
||||||
|
"integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=",
|
||||||
|
"dev": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"tslib": {
|
"tslib": {
|
||||||
"version": "2.3.1",
|
"version": "2.3.1",
|
||||||
"integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw=="
|
"integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw=="
|
||||||
@ -18692,8 +18819,52 @@
|
|||||||
},
|
},
|
||||||
"typescript": {
|
"typescript": {
|
||||||
"version": "4.4.3",
|
"version": "4.4.3",
|
||||||
"integrity": "sha512-4xfscpisVgqqDfPaJo5vkd+Qd/ItkoagnHpufr+i2QCHBsNYp+G7UAoyFl8aPtx879u38wPV65rZ8qbGZijalA==",
|
"integrity": "sha512-4xfscpisVgqqDfPaJo5vkd+Qd/ItkoagnHpufr+i2QCHBsNYp+G7UAoyFl8aPtx879u38wPV65rZ8qbGZijalA=="
|
||||||
"dev": true
|
},
|
||||||
|
"typescript-cached-transpile": {
|
||||||
|
"version": "0.0.6",
|
||||||
|
"resolved": "https://registry.npmjs.org/typescript-cached-transpile/-/typescript-cached-transpile-0.0.6.tgz",
|
||||||
|
"integrity": "sha512-bfPc7YUW0PrVkQHU0xN0ANRuxdPgoYYXtZEW6PNkH5a97/AOM+kPPxSTMZbpWA3BG1do22JUkfC60KoCKJ9VZQ==",
|
||||||
|
"requires": {
|
||||||
|
"@types/node": "^12.12.7",
|
||||||
|
"fs-extra": "^8.1.0",
|
||||||
|
"tslib": "^1.10.0"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"@types/node": {
|
||||||
|
"version": "12.20.41",
|
||||||
|
"resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.41.tgz",
|
||||||
|
"integrity": "sha512-f6xOqucbDirG7LOzedpvzjP3UTmHttRou3Mosx3vL9wr9AIQGhcPgVnqa8ihpZYnxyM1rxeNCvTyukPKZtq10Q=="
|
||||||
|
},
|
||||||
|
"fs-extra": {
|
||||||
|
"version": "8.1.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz",
|
||||||
|
"integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==",
|
||||||
|
"requires": {
|
||||||
|
"graceful-fs": "^4.2.0",
|
||||||
|
"jsonfile": "^4.0.0",
|
||||||
|
"universalify": "^0.1.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"jsonfile": {
|
||||||
|
"version": "4.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz",
|
||||||
|
"integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=",
|
||||||
|
"requires": {
|
||||||
|
"graceful-fs": "^4.1.6"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"tslib": {
|
||||||
|
"version": "1.14.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
|
||||||
|
"integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="
|
||||||
|
},
|
||||||
|
"universalify": {
|
||||||
|
"version": "0.1.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz",
|
||||||
|
"integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg=="
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
"typescript-json-schema": {
|
"typescript-json-schema": {
|
||||||
"version": "0.50.1",
|
"version": "0.50.1",
|
||||||
@ -18764,8 +18935,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"url-parse": {
|
"url-parse": {
|
||||||
"version": "1.5.3",
|
"version": "1.5.10",
|
||||||
"integrity": "sha512-IIORyIQD9rvj0A4CLWsHkBBJuNqWpFQe224b6j9t/ABmquIS0qDU2pY6kl6AuOrL5OkCXHMCFNe1jBcuAggjvQ==",
|
"resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz",
|
||||||
|
"integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"querystringify": "^2.1.1",
|
"querystringify": "^2.1.1",
|
||||||
"requires-port": "^1.0.0"
|
"requires-port": "^1.0.0"
|
||||||
|
@ -9,7 +9,8 @@
|
|||||||
"start": "node scripts/build.js && node dist/bundle/src/start.js",
|
"start": "node scripts/build.js && node dist/bundle/src/start.js",
|
||||||
"start:bundle": "node dist/bundle/src/start.js",
|
"start:bundle": "node dist/bundle/src/start.js",
|
||||||
"test": "echo \"Error: no test specified\" && exit 1",
|
"test": "echo \"Error: no test specified\" && exit 1",
|
||||||
"migrate": "cd ../util/ && npm i && node --require ts-node/register node_modules/typeorm/cli.js -f ../util/ormconfig.json migration:run"
|
"migrate": "cd ../util/ && npm i && node --require ts-node/register node_modules/typeorm/cli.js -f ../util/ormconfig.json migration:run",
|
||||||
|
"tsnode": "npx ts-node --transpile-only -P tsnode.tsconfig.json src/start.ts"
|
||||||
},
|
},
|
||||||
"repository": {
|
"repository": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
@ -51,6 +52,7 @@
|
|||||||
"ts-node": "^10.2.1",
|
"ts-node": "^10.2.1",
|
||||||
"ts-node-dev": "^1.1.6",
|
"ts-node-dev": "^1.1.6",
|
||||||
"ts-patch": "^1.4.4",
|
"ts-patch": "^1.4.4",
|
||||||
|
"tsconfig-paths": "^3.12.0",
|
||||||
"typescript": "^4.2.3",
|
"typescript": "^4.2.3",
|
||||||
"typescript-json-schema": "0.50.1"
|
"typescript-json-schema": "0.50.1"
|
||||||
},
|
},
|
||||||
@ -92,6 +94,7 @@
|
|||||||
"missing-native-js-functions": "^1.2.18",
|
"missing-native-js-functions": "^1.2.18",
|
||||||
"morgan": "^1.10.0",
|
"morgan": "^1.10.0",
|
||||||
"multer": "^1.4.2",
|
"multer": "^1.4.2",
|
||||||
|
"nan": "^2.15.0",
|
||||||
"nanocolors": "^0.2.12",
|
"nanocolors": "^0.2.12",
|
||||||
"node-fetch": "^2.6.2",
|
"node-fetch": "^2.6.2",
|
||||||
"node-os-utils": "^1.3.5",
|
"node-os-utils": "^1.3.5",
|
||||||
@ -105,6 +108,7 @@
|
|||||||
"tslib": "^2.3.1",
|
"tslib": "^2.3.1",
|
||||||
"typeorm": "^0.2.37",
|
"typeorm": "^0.2.37",
|
||||||
"typescript": "^4.1.2",
|
"typescript": "^4.1.2",
|
||||||
|
"typescript-cached-transpile": "^0.0.6",
|
||||||
"typescript-json-schema": "^0.50.1",
|
"typescript-json-schema": "^0.50.1",
|
||||||
"ws": "^7.4.2"
|
"ws": "^7.4.2"
|
||||||
}
|
}
|
||||||
|
@ -1,86 +1,85 @@
|
|||||||
{
|
{
|
||||||
"include": ["dist/**/*.ts"],
|
"include": ["dist/**/*.ts"],
|
||||||
"exclude": [],
|
"exclude": [],
|
||||||
"compilerOptions": {
|
"compilerOptions": {
|
||||||
/* Visit https://aka.ms/tsconfig.json to read more about this file */
|
|
||||||
|
/* Basic Options */
|
||||||
/* Basic Options */
|
"incremental": false /* Enable incremental compilation */,
|
||||||
"incremental": false /* Enable incremental compilation */,
|
"target": "ES6" /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', 'ES2018', 'ES2019', 'ES2020', or 'ESNEXT'. */,
|
||||||
"target": "ES6" /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', 'ES2018', 'ES2019', 'ES2020', or 'ESNEXT'. */,
|
"module": "commonjs" /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', 'es2020', or 'ESNext'. */,
|
||||||
"module": "commonjs" /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', 'es2020', or 'ESNext'. */,
|
"lib": [
|
||||||
"lib": [
|
"ES2021"
|
||||||
"ES2021"
|
] /* Specify library files to be included in the compilation. */,
|
||||||
] /* Specify library files to be included in the compilation. */,
|
"allowJs": true /* Allow javascript files to be compiled. */,
|
||||||
"allowJs": true /* Allow javascript files to be compiled. */,
|
"checkJs": true /* Report errors in .js files. */,
|
||||||
"checkJs": true /* Report errors in .js files. */,
|
// "jsx": "preserve", /* Specify JSX code generation: 'preserve', 'react-native', or 'react'. */
|
||||||
// "jsx": "preserve", /* Specify JSX code generation: 'preserve', 'react-native', or 'react'. */
|
"declaration": false /* Generates corresponding '.d.ts' file. */,
|
||||||
"declaration": false /* Generates corresponding '.d.ts' file. */,
|
"declarationMap": false /* Generates a sourcemap for each corresponding '.d.ts' file. */,
|
||||||
"declarationMap": false /* Generates a sourcemap for each corresponding '.d.ts' file. */,
|
"sourceMap": true /* Generates corresponding '.map' file. */,
|
||||||
"sourceMap": false /* Generates corresponding '.map' file. */,
|
// "outFile": "./", /* Concatenate and emit output to single file. */
|
||||||
// "outFile": "./", /* Concatenate and emit output to single file. */
|
"outDir": "./dist/" /* Redirect output structure to the directory. */,
|
||||||
"outDir": "./dist/" /* Redirect output structure to the directory. */,
|
"rootDir": "./dist/" /* Specify the root directory of input files. Use to control the output directory structure with --outDir. */,
|
||||||
"rootDir": "./dist/" /* Specify the root directory of input files. Use to control the output directory structure with --outDir. */,
|
// "composite": true, /* Enable project compilation */
|
||||||
// "composite": true, /* Enable project compilation */
|
// "tsBuildInfoFile": "./", /* Specify file to store incremental compilation information */
|
||||||
// "tsBuildInfoFile": "./", /* Specify file to store incremental compilation information */
|
// "removeComments": true, /* Do not emit comments to output. */
|
||||||
// "removeComments": true, /* Do not emit comments to output. */
|
// "noEmit": true, /* Do not emit outputs. */
|
||||||
// "noEmit": true, /* Do not emit outputs. */
|
// "importHelpers": true, /* Import emit helpers from 'tslib'. */
|
||||||
// "importHelpers": true, /* Import emit helpers from 'tslib'. */
|
// "downlevelIteration": true, /* Provide full support for iterables in 'for-of', spread, and destructuring when targeting 'ES5' or 'ES3'. */
|
||||||
// "downlevelIteration": true, /* Provide full support for iterables in 'for-of', spread, and destructuring when targeting 'ES5' or 'ES3'. */
|
// "isolatedModules": true, /* Transpile each file as a separate module (similar to 'ts.transpileModule'). */
|
||||||
// "isolatedModules": true, /* Transpile each file as a separate module (similar to 'ts.transpileModule'). */
|
|
||||||
|
/* Strict Type-Checking Options */
|
||||||
/* Strict Type-Checking Options */
|
"strict": true /* Enable all strict type-checking options. */,
|
||||||
"strict": true /* Enable all strict type-checking options. */,
|
"noImplicitAny": true /* Raise error on expressions and declarations with an implied 'any' type. */,
|
||||||
"noImplicitAny": true /* Raise error on expressions and declarations with an implied 'any' type. */,
|
"strictNullChecks": true /* Enable strict null checks. */,
|
||||||
"strictNullChecks": true /* Enable strict null checks. */,
|
// "strictFunctionTypes": true, /* Enable strict checking of function types. */
|
||||||
// "strictFunctionTypes": true, /* Enable strict checking of function types. */
|
// "strictBindCallApply": true, /* Enable strict 'bind', 'call', and 'apply' methods on functions. */
|
||||||
// "strictBindCallApply": true, /* Enable strict 'bind', 'call', and 'apply' methods on functions. */
|
"strictPropertyInitialization": false /* Enable strict checking of property initialization in classes. */,
|
||||||
"strictPropertyInitialization": false /* Enable strict checking of property initialization in classes. */,
|
// "noImplicitThis": true, /* Raise error on 'this' expressions with an implied 'any' type. */
|
||||||
// "noImplicitThis": true, /* Raise error on 'this' expressions with an implied 'any' type. */
|
"alwaysStrict": true /* Parse in strict mode and emit "use strict" for each source file. */,
|
||||||
"alwaysStrict": true /* Parse in strict mode and emit "use strict" for each source file. */,
|
|
||||||
|
/* Additional Checks */
|
||||||
/* Additional Checks */
|
// "noUnusedLocals": true, /* Report errors on unused locals. */
|
||||||
// "noUnusedLocals": true, /* Report errors on unused locals. */
|
// "noUnusedParameters": true, /* Report errors on unused parameters. */
|
||||||
// "noUnusedParameters": true, /* Report errors on unused parameters. */
|
// "noImplicitReturns": true, /* Report error when not all code paths in function return a value. */
|
||||||
// "noImplicitReturns": true, /* Report error when not all code paths in function return a value. */
|
// "noFallthroughCasesInSwitch": true, /* Report errors for fallthrough cases in switch statement. */
|
||||||
// "noFallthroughCasesInSwitch": true, /* Report errors for fallthrough cases in switch statement. */
|
|
||||||
|
/* Module Resolution Options */
|
||||||
/* Module Resolution Options */
|
"moduleResolution": "node", /* Specify module resolution strategy: 'node' (Node.js) or 'classic' (TypeScript pre-1.6). */
|
||||||
"moduleResolution": "node", /* Specify module resolution strategy: 'node' (Node.js) or 'classic' (TypeScript pre-1.6). */
|
// "rootDirs": [], /* List of root folders whose combined content represents the structure of the project at runtime. */
|
||||||
// "rootDirs": [], /* List of root folders whose combined content represents the structure of the project at runtime. */
|
// "typeRoots": [], /* List of folders to include type definitions from. */
|
||||||
// "typeRoots": [], /* List of folders to include type definitions from. */
|
"types": [
|
||||||
"types": [
|
"node"
|
||||||
"node"
|
] /* Type declaration files to be included in compilation. */,
|
||||||
] /* Type declaration files to be included in compilation. */,
|
// "allowSyntheticDefaultImports": true, /* Allow default imports from modules with no default export. This does not affect code emit, just typechecking. */
|
||||||
// "allowSyntheticDefaultImports": true, /* Allow default imports from modules with no default export. This does not affect code emit, just typechecking. */
|
"esModuleInterop": true /* Enables emit interoperability between CommonJS and ES Modules via creation of namespace objects for all imports. Implies 'allowSyntheticDefaultImports'. */,
|
||||||
"esModuleInterop": true /* Enables emit interoperability between CommonJS and ES Modules via creation of namespace objects for all imports. Implies 'allowSyntheticDefaultImports'. */,
|
// "preserveSymlinks": true, /* Do not resolve the real path of symlinks. */
|
||||||
// "preserveSymlinks": true, /* Do not resolve the real path of symlinks. */
|
// "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */
|
||||||
// "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */
|
|
||||||
|
/* Source Map Options */
|
||||||
/* Source Map Options */
|
// "sourceRoot": "", /* Specify the location where debugger should locate TypeScript files instead of source locations. */
|
||||||
// "sourceRoot": "", /* Specify the location where debugger should locate TypeScript files instead of source locations. */
|
// "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */
|
||||||
// "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */
|
// "inlineSourceMap": true, /* Emit a single file with source maps instead of having a separate file. */
|
||||||
// "inlineSourceMap": true, /* Emit a single file with source maps instead of having a separate file. */
|
// "inlineSources": true, /* Emit the source alongside the sourcemaps within a single file; requires '--inlineSourceMap' or '--sourceMap' to be set. */
|
||||||
// "inlineSources": true, /* Emit the source alongside the sourcemaps within a single file; requires '--inlineSourceMap' or '--sourceMap' to be set. */
|
|
||||||
|
/* Experimental Options */
|
||||||
/* Experimental Options */
|
// "experimentalDecorators": true, /* Enables experimental support for ES7 decorators. */
|
||||||
// "experimentalDecorators": true, /* Enables experimental support for ES7 decorators. */
|
// "emitDecoratorMetadata": true, /* Enables experimental support for emitting type metadata for decorators. */
|
||||||
// "emitDecoratorMetadata": true, /* Enables experimental support for emitting type metadata for decorators. */
|
|
||||||
|
/* Advanced Options */
|
||||||
/* Advanced Options */
|
"skipLibCheck": true /* Skip type checking of declaration files. */,
|
||||||
"skipLibCheck": true /* Skip type checking of declaration files. */,
|
"forceConsistentCasingInFileNames": true /* Disallow inconsistently-cased references to the same file. */,
|
||||||
"forceConsistentCasingInFileNames": true /* Disallow inconsistently-cased references to the same file. */,
|
"emitDecoratorMetadata": true,
|
||||||
"emitDecoratorMetadata": true,
|
"experimentalDecorators": true,
|
||||||
"experimentalDecorators": true,
|
"resolveJsonModule": true,
|
||||||
"resolveJsonModule": true,
|
"baseUrl": "./dist/",
|
||||||
"baseUrl": "./dist/",
|
"paths": {
|
||||||
"paths": {
|
"@fosscord/api": ["api/src/index"],
|
||||||
"@fosscord/api": ["api/src/index"],
|
"@fosscord/gateway": ["gateway/src/index"],
|
||||||
"@fosscord/gateway": ["gateway/src/index"],
|
"@fosscord/cdn": ["cdn/src/index"],
|
||||||
"@fosscord/cdn": ["cdn/src/index"],
|
"@fosscord/util": ["util/src/index"]
|
||||||
"@fosscord/util": ["util/src/index"]
|
},
|
||||||
},
|
"plugins": [{ "transform": "@zerollup/ts-transform-paths" }],
|
||||||
"plugins": [{ "transform": "@zerollup/ts-transform-paths" }],
|
"noEmitHelpers": true,
|
||||||
"noEmitHelpers": true,
|
"importHelpers": true
|
||||||
"importHelpers": true
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
15
bundle/tsnode.tsconfig.json
Normal file
15
bundle/tsnode.tsconfig.json
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
{
|
||||||
|
"extends": "./tsconfig.json",
|
||||||
|
"ts-node": {
|
||||||
|
"transpileOnly": true,
|
||||||
|
"preferTsExts": true,
|
||||||
|
"require": ["tsconfig-paths/register"],
|
||||||
|
"compiler": "typescript-cached-transpile",
|
||||||
|
},
|
||||||
|
"compilerOptions": {
|
||||||
|
"rootDir": "../",
|
||||||
|
"baseUrl": "../",
|
||||||
|
"sourceRoot": "../",
|
||||||
|
"sourceMap": true,
|
||||||
|
}
|
||||||
|
}
|
2
cdn/package-lock.json
generated
2
cdn/package-lock.json
generated
@ -28,7 +28,7 @@
|
|||||||
"missing-native-js-functions": "^1.2.17",
|
"missing-native-js-functions": "^1.2.17",
|
||||||
"multer": "^1.4.2",
|
"multer": "^1.4.2",
|
||||||
"nanocolors": "^0.2.12",
|
"nanocolors": "^0.2.12",
|
||||||
"node-fetch": "^2.6.7",
|
"node-fetch": "^2.6.2",
|
||||||
"supertest": "^6.1.6",
|
"supertest": "^6.1.6",
|
||||||
"typescript": "^4.1.2"
|
"typescript": "^4.1.2"
|
||||||
},
|
},
|
||||||
|
@ -54,7 +54,7 @@
|
|||||||
"missing-native-js-functions": "^1.2.17",
|
"missing-native-js-functions": "^1.2.17",
|
||||||
"multer": "^1.4.2",
|
"multer": "^1.4.2",
|
||||||
"nanocolors": "^0.2.12",
|
"nanocolors": "^0.2.12",
|
||||||
"node-fetch": "^2.6.7",
|
"node-fetch": "^2.6.2",
|
||||||
"supertest": "^6.1.6",
|
"supertest": "^6.1.6",
|
||||||
"typescript": "^4.1.2"
|
"typescript": "^4.1.2"
|
||||||
},
|
},
|
||||||
|
20
gateway/package-lock.json
generated
20
gateway/package-lock.json
generated
@ -6679,8 +6679,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"../util/node_modules/url-parse": {
|
"../util/node_modules/url-parse": {
|
||||||
"version": "1.5.3",
|
"version": "1.5.10",
|
||||||
"integrity": "sha512-IIORyIQD9rvj0A4CLWsHkBBJuNqWpFQe224b6j9t/ABmquIS0qDU2pY6kl6AuOrL5OkCXHMCFNe1jBcuAggjvQ==",
|
"resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz",
|
||||||
|
"integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"querystringify": "^2.1.1",
|
"querystringify": "^2.1.1",
|
||||||
"requires-port": "^1.0.0"
|
"requires-port": "^1.0.0"
|
||||||
@ -9896,8 +9897,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/url-parse": {
|
"node_modules/url-parse": {
|
||||||
"version": "1.5.3",
|
"version": "1.5.10",
|
||||||
"integrity": "sha512-IIORyIQD9rvj0A4CLWsHkBBJuNqWpFQe224b6j9t/ABmquIS0qDU2pY6kl6AuOrL5OkCXHMCFNe1jBcuAggjvQ==",
|
"resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz",
|
||||||
|
"integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"querystringify": "^2.1.1",
|
"querystringify": "^2.1.1",
|
||||||
"requires-port": "^1.0.0"
|
"requires-port": "^1.0.0"
|
||||||
@ -15260,8 +15262,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"url-parse": {
|
"url-parse": {
|
||||||
"version": "1.5.3",
|
"version": "1.5.10",
|
||||||
"integrity": "sha512-IIORyIQD9rvj0A4CLWsHkBBJuNqWpFQe224b6j9t/ABmquIS0qDU2pY6kl6AuOrL5OkCXHMCFNe1jBcuAggjvQ==",
|
"resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz",
|
||||||
|
"integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"querystringify": "^2.1.1",
|
"querystringify": "^2.1.1",
|
||||||
"requires-port": "^1.0.0"
|
"requires-port": "^1.0.0"
|
||||||
@ -17624,8 +17627,9 @@
|
|||||||
"integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw="
|
"integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw="
|
||||||
},
|
},
|
||||||
"url-parse": {
|
"url-parse": {
|
||||||
"version": "1.5.3",
|
"version": "1.5.10",
|
||||||
"integrity": "sha512-IIORyIQD9rvj0A4CLWsHkBBJuNqWpFQe224b6j9t/ABmquIS0qDU2pY6kl6AuOrL5OkCXHMCFNe1jBcuAggjvQ==",
|
"resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz",
|
||||||
|
"integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"querystringify": "^2.1.1",
|
"querystringify": "^2.1.1",
|
||||||
"requires-port": "^1.0.0"
|
"requires-port": "^1.0.0"
|
||||||
|
@ -173,6 +173,7 @@ export async function onIdentify(this: WebSocket, data: Payload) {
|
|||||||
avatar: related_user.avatar,
|
avatar: related_user.avatar,
|
||||||
bot: related_user.bot,
|
bot: related_user.bot,
|
||||||
bio: related_user.bio,
|
bio: related_user.bio,
|
||||||
|
premium_since: user.premium_since
|
||||||
};
|
};
|
||||||
users.push(public_related_user);
|
users.push(public_related_user);
|
||||||
}
|
}
|
||||||
@ -225,6 +226,7 @@ export async function onIdentify(this: WebSocket, data: Payload) {
|
|||||||
accent_color: user.accent_color || 0,
|
accent_color: user.accent_color || 0,
|
||||||
banner: user.banner,
|
banner: user.banner,
|
||||||
bio: user.bio,
|
bio: user.bio,
|
||||||
|
premium_since: user.premium_since
|
||||||
};
|
};
|
||||||
|
|
||||||
const d: ReadyEventData = {
|
const d: ReadyEventData = {
|
||||||
|
12
util/package-lock.json
generated
12
util/package-lock.json
generated
@ -7623,9 +7623,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/url-parse": {
|
"node_modules/url-parse": {
|
||||||
"version": "1.5.3",
|
"version": "1.5.10",
|
||||||
"resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.3.tgz",
|
"resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz",
|
||||||
"integrity": "sha512-IIORyIQD9rvj0A4CLWsHkBBJuNqWpFQe224b6j9t/ABmquIS0qDU2pY6kl6AuOrL5OkCXHMCFNe1jBcuAggjvQ==",
|
"integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"querystringify": "^2.1.1",
|
"querystringify": "^2.1.1",
|
||||||
"requires-port": "^1.0.0"
|
"requires-port": "^1.0.0"
|
||||||
@ -14029,9 +14029,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"url-parse": {
|
"url-parse": {
|
||||||
"version": "1.5.3",
|
"version": "1.5.10",
|
||||||
"resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.3.tgz",
|
"resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz",
|
||||||
"integrity": "sha512-IIORyIQD9rvj0A4CLWsHkBBJuNqWpFQe224b6j9t/ABmquIS0qDU2pY6kl6AuOrL5OkCXHMCFNe1jBcuAggjvQ==",
|
"integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"querystringify": "^2.1.1",
|
"querystringify": "^2.1.1",
|
||||||
"requires-port": "^1.0.0"
|
"requires-port": "^1.0.0"
|
||||||
|
@ -86,7 +86,7 @@ export class Member extends BaseClassWithoutId {
|
|||||||
joined_at: Date;
|
joined_at: Date;
|
||||||
|
|
||||||
@Column({ nullable: true })
|
@Column({ nullable: true })
|
||||||
premium_since?: number;
|
premium_since?: Date;
|
||||||
|
|
||||||
@Column()
|
@Column()
|
||||||
deaf: boolean;
|
deaf: boolean;
|
||||||
@ -245,7 +245,7 @@ export class Member extends BaseClassWithoutId {
|
|||||||
nick: undefined,
|
nick: undefined,
|
||||||
roles: [guild_id], // @everyone role
|
roles: [guild_id], // @everyone role
|
||||||
joined_at: new Date(),
|
joined_at: new Date(),
|
||||||
premium_since: undefined,
|
premium_since: new Date(),
|
||||||
deaf: false,
|
deaf: false,
|
||||||
mute: false,
|
mute: false,
|
||||||
pending: false,
|
pending: false,
|
||||||
|
@ -31,8 +31,17 @@ export class ReadState extends BaseClass {
|
|||||||
})
|
})
|
||||||
user: User;
|
user: User;
|
||||||
|
|
||||||
|
// fully read marker
|
||||||
@Column({ nullable: true })
|
@Column({ nullable: true })
|
||||||
last_message_id: string;
|
last_message_id: string;
|
||||||
|
|
||||||
|
// public read receipt
|
||||||
|
@Column({ nullable: true })
|
||||||
|
public_ack: string;
|
||||||
|
|
||||||
|
// notification cursor / private read receipt
|
||||||
|
@Column({ nullable: true })
|
||||||
|
notifications_cursor: string;
|
||||||
|
|
||||||
@Column({ nullable: true })
|
@Column({ nullable: true })
|
||||||
last_pin_timestamp?: Date;
|
last_pin_timestamp?: Date;
|
||||||
|
@ -16,6 +16,7 @@ export enum PublicUserEnum {
|
|||||||
banner,
|
banner,
|
||||||
bio,
|
bio,
|
||||||
bot,
|
bot,
|
||||||
|
premium_since,
|
||||||
}
|
}
|
||||||
export type PublicUserKeys = keyof typeof PublicUserEnum;
|
export type PublicUserKeys = keyof typeof PublicUserEnum;
|
||||||
|
|
||||||
@ -110,6 +111,9 @@ export class User extends BaseClass {
|
|||||||
@Column()
|
@Column()
|
||||||
created_at: Date; // registration date
|
created_at: Date; // registration date
|
||||||
|
|
||||||
|
@Column({ nullable: true })
|
||||||
|
premium_since: Date; // premium date
|
||||||
|
|
||||||
@Column({ select: false })
|
@Column({ select: false })
|
||||||
verified: boolean; // if the user is offically verified
|
verified: boolean; // if the user is offically verified
|
||||||
|
|
||||||
@ -246,6 +250,7 @@ export class User extends BaseClass {
|
|||||||
id: Snowflake.generate(),
|
id: Snowflake.generate(),
|
||||||
bot: false,
|
bot: false,
|
||||||
system: false,
|
system: false,
|
||||||
|
premium_since: new Date(),
|
||||||
desktop: false,
|
desktop: false,
|
||||||
mobile: false,
|
mobile: false,
|
||||||
premium: true,
|
premium: true,
|
||||||
|
@ -1,6 +1,9 @@
|
|||||||
import { Server, traverseDirectory } from "lambert-server";
|
import { Server, traverseDirectory } from "lambert-server";
|
||||||
|
|
||||||
const DEFAULT_FILTER = /^([^\.].*)(?<!\.d)\.(js)$/;
|
//if we're using ts-node, use ts files instead of js
|
||||||
|
const extension = Symbol.for("ts-node.register.instance") in process ? "ts" : "js"
|
||||||
|
|
||||||
|
const DEFAULT_FILTER = new RegExp("^([^\.].*)(?<!\.d)\.(" + extension + ")$");
|
||||||
|
|
||||||
export function registerRoutes(server: Server, root: string) {
|
export function registerRoutes(server: Server, root: string) {
|
||||||
return traverseDirectory(
|
return traverseDirectory(
|
||||||
|
Loading…
x
Reference in New Issue
Block a user