1
0
mirror of https://github.com/spacebarchat/server.git synced 2024-11-22 02:12:40 +01:00

Merge branch 'master' into fix/user-profile-colors

This commit is contained in:
Cyber 2024-11-14 07:58:16 +01:00 committed by GitHub
commit 9384138dd4
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
16 changed files with 23 additions and 36 deletions

View File

@ -1,7 +0,0 @@
node_modules
dist
README.md
COPYING
src/webrtc
scripts/
assets

View File

@ -39,7 +39,9 @@ export default [{
rules: { rules: {
"no-mixed-spaces-and-tabs": "off", "no-mixed-spaces-and-tabs": "off",
"@typescript-eslint/no-inferrable-types": "off", "@typescript-eslint/no-inferrable-types": "off", // Required by typeorm
"@typescript-eslint/no-var-requires": "off", "@typescript-eslint/no-var-requires": "off", // Sometimes requred by typeorm to resolve circular deps
"@typescript-eslint/no-require-imports": "off",
"@typescript-eslint/no-unused-vars": "off",
}, },
}]; }];

7
package-lock.json generated
View File

@ -1205,7 +1205,6 @@
"resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.1.0.tgz", "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.1.0.tgz",
"integrity": "sha512-4Bfj15dVJdoy3RfZmmo86RK1Fwzn6SstsvK9JS+BaVKqC6QQQQyXekNaC+g+LKNgkQ+2VhGAzm6hO40AhMR3zQ==", "integrity": "sha512-4Bfj15dVJdoy3RfZmmo86RK1Fwzn6SstsvK9JS+BaVKqC6QQQQyXekNaC+g+LKNgkQ+2VhGAzm6hO40AhMR3zQ==",
"dev": true, "dev": true,
"license": "MIT",
"dependencies": { "dependencies": {
"ajv": "^6.12.4", "ajv": "^6.12.4",
"debug": "^4.3.2", "debug": "^4.3.2",
@ -1257,7 +1256,6 @@
"resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz",
"integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==",
"dev": true, "dev": true,
"license": "MIT",
"engines": { "engines": {
"node": ">=18" "node": ">=18"
}, },
@ -1290,7 +1288,6 @@
"resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.14.0.tgz", "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.14.0.tgz",
"integrity": "sha512-pFoEtFWCPyDOl+C6Ift+wC7Ro89otjigCf5vcuWqWgqNSQbRrpjSvdeE6ofLz4dHmyxD5f7gIdGT4+p36L6Twg==", "integrity": "sha512-pFoEtFWCPyDOl+C6Ift+wC7Ro89otjigCf5vcuWqWgqNSQbRrpjSvdeE6ofLz4dHmyxD5f7gIdGT4+p36L6Twg==",
"dev": true, "dev": true,
"license": "MIT",
"engines": { "engines": {
"node": "^18.18.0 || ^20.9.0 || >=21.1.0" "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
} }
@ -5899,7 +5896,6 @@
"resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.13.0.tgz", "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.13.0.tgz",
"integrity": "sha512-IFLyoY4d72Z5y/6o/BazFBezupzI/taV8sGumxTAVw3lXG9A6md1Dc34T9s1FoD/an9pJH8RHbAxsaEbBed9lA==", "integrity": "sha512-IFLyoY4d72Z5y/6o/BazFBezupzI/taV8sGumxTAVw3lXG9A6md1Dc34T9s1FoD/an9pJH8RHbAxsaEbBed9lA==",
"dev": true, "dev": true,
"license": "MIT",
"engines": { "engines": {
"node": "^18.18.0 || ^20.9.0 || >=21.1.0" "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
} }
@ -6765,7 +6761,6 @@
"resolved": "https://registry.npmjs.org/globals/-/globals-15.12.0.tgz", "resolved": "https://registry.npmjs.org/globals/-/globals-15.12.0.tgz",
"integrity": "sha512-1+gLErljJFhbOVyaetcwJiJ4+eLe45S2E7P5UiZ9xGfeq3ATQf5DOv9G7MH3gGbKQLkzmNh2DxfZwLdw+j6oTQ==", "integrity": "sha512-1+gLErljJFhbOVyaetcwJiJ4+eLe45S2E7P5UiZ9xGfeq3ATQf5DOv9G7MH3gGbKQLkzmNh2DxfZwLdw+j6oTQ==",
"dev": true, "dev": true,
"license": "MIT",
"engines": { "engines": {
"node": ">=18" "node": ">=18"
}, },
@ -11791,4 +11786,4 @@
} }
} }
} }
} }

View File

@ -108,7 +108,6 @@ export async function Authentication(
req.rights = new Rights(Number(user.rights)); req.rights = new Rights(Number(user.rights));
return next(); return next();
} catch (error) { } catch (error) {
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
return next(new HTTPError(error!.toString(), 400)); return next(new HTTPError(error!.toString(), 400));
} }
} }

View File

@ -72,7 +72,6 @@ router.post(
await User.update({ id: user.id }, data); await User.update({ id: user.id }, data);
// come on, the user has to have an email to reset their password in the first place // come on, the user has to have an email to reset their password in the first place
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
await Email.sendPasswordChanged(user, user.email!); await Email.sendPasswordChanged(user, user.email!);
res.json({ token: await generateToken(user.id) }); res.json({ token: await generateToken(user.id) });

View File

@ -171,7 +171,6 @@ export async function onIdentify(this: WebSocket, data: Payload) {
// but we do want almost everything from guild. // but we do want almost everything from guild.
// How do you do that without just enumerating the guild props? // How do you do that without just enumerating the guild props?
guild: Object.fromEntries( guild: Object.fromEntries(
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
getDatabase()! getDatabase()!
.getMetadata(Guild) .getMetadata(Guild)
.columns.map((x) => [x.propertyName, true]), .columns.map((x) => [x.propertyName, true]),

View File

@ -214,7 +214,6 @@ async function subscribeToMemberEvents(this: WebSocket, user_id: string) {
export async function onLazyRequest(this: WebSocket, { d }: Payload) { export async function onLazyRequest(this: WebSocket, { d }: Payload) {
// TODO: check data // TODO: check data
check.call(this, LazyRequestSchema, d); check.call(this, LazyRequestSchema, d);
// eslint-disable-next-line @typescript-eslint/no-unused-vars
const { guild_id, typing, channels, activities, members } = const { guild_id, typing, channels, activities, members } =
d as LazyRequestSchema; d as LazyRequestSchema;

View File

@ -27,7 +27,7 @@ import {
} from "@spacebar/util"; } from "@spacebar/util";
import { WebSocket, Payload, OPCODES, Send } from "@spacebar/gateway"; import { WebSocket, Payload, OPCODES, Send } from "@spacebar/gateway";
import { check } from "./instanceOf"; import { check } from "./instanceOf";
import { FindManyOptions, In, Like } from "typeorm"; import { FindManyOptions, ILike, In } from "typeorm";
export async function onRequestGuildMembers(this: WebSocket, { d }: Payload) { export async function onRequestGuildMembers(this: WebSocket, { d }: Payload) {
// Schema validation can only accept either string or array, so transforming it here to support both // Schema validation can only accept either string or array, so transforming it here to support both
@ -114,7 +114,7 @@ export async function onRequestGuildMembers(this: WebSocket, { d }: Payload) {
if (query) { if (query) {
// @ts-expect-error memberFind.where is very much defined // @ts-expect-error memberFind.where is very much defined
memberFind.where.user = { memberFind.where.user = {
username: Like(query + "%"), username: ILike(query + "%"),
}; };
} else if (user_ids && user_ids.length > 0) { } else if (user_ids && user_ids.length > 0) {
// @ts-expect-error memberFind.where is still very much defined // @ts-expect-error memberFind.where is still very much defined
@ -166,15 +166,17 @@ export async function onRequestGuildMembers(this: WebSocket, { d }: Payload) {
}); });
} }
if (chunks.length == 0) {
chunks.push({
...baseData,
members: [],
presences: presences ? [] : undefined,
chunk_index: 0,
chunk_count: 1,
});
}
if (notFound.length > 0) { if (notFound.length > 0) {
if (chunks.length == 0)
chunks.push({
...baseData,
members: [],
presences: presences ? [] : undefined,
chunk_index: 0,
chunk_count: 1,
});
chunks[0].not_found = notFound; chunks[0].not_found = notFound;
} }

View File

@ -99,7 +99,6 @@ export async function onVoiceStateUpdate(this: WebSocket, data: Payload) {
voiceState.token = genVoiceToken(); voiceState.token = genVoiceToken();
voiceState.session_id = this.session_id; voiceState.session_id = this.session_id;
// eslint-disable-next-line @typescript-eslint/no-unused-vars
const { id, ...newObj } = voiceState; const { id, ...newObj } = voiceState;
await Promise.all([ await Promise.all([

View File

@ -46,7 +46,7 @@ export class BaseClassWithoutId extends BaseEntity {
// eslint-disable-next-line @typescript-eslint/no-explicit-any // eslint-disable-next-line @typescript-eslint/no-explicit-any
toJSON(): any { toJSON(): any {
return Object.fromEntries( return Object.fromEntries(
// eslint-disable-next-line @typescript-eslint/ban-ts-comment, @typescript-eslint/no-non-null-assertion // eslint-disable-next-line @typescript-eslint/ban-ts-comment
this.metadata!.columns // @ts-ignore this.metadata!.columns // @ts-ignore
.map((x) => [x.propertyName, this[x.propertyName]]) .map((x) => [x.propertyName, this[x.propertyName]])
.concat( .concat(

View File

@ -466,8 +466,8 @@ export class Member extends BaseClassWithoutId {
member[x] = this[x]; member[x] = this[x];
}); });
if (member.roles) member.roles = member.roles.map((x: Role) => x.id); if (this.roles) member.roles = this.roles.map((x: Role) => x.id);
if (member.user) member.user = member.user.toPublicUser(); if (this.user) member.user = this.user.toPublicUser();
return member as PublicMember; return member as PublicMember;
} }

View File

@ -69,7 +69,6 @@ export interface MessageCreateSchema {
} }
// TypeScript complains once this is used above // TypeScript complains once this is used above
// eslint-disable-next-line @typescript-eslint/no-unused-vars
interface PollCreationSchema { interface PollCreationSchema {
question: PollMedia; question: PollMedia;
answers: PollAnswer[]; answers: PollAnswer[];

View File

@ -18,4 +18,5 @@
import { Team } from "@spacebar/util"; import { Team } from "@spacebar/util";
// eslint-disable-next-line @typescript-eslint/no-empty-object-type
export interface TeamListResponse extends Array<Team> {} export interface TeamListResponse extends Array<Team> {}

View File

@ -70,7 +70,6 @@ export function enableAutoUpdate(opts: {
}); });
} }
// eslint-disable-next-line @typescript-eslint/no-unused-vars
async function download(url: string, dir: string) { async function download(url: string, dir: string) {
try { try {
// TODO: use file stream instead of buffer (to prevent crash because of high memory usage for big files) // TODO: use file stream instead of buffer (to prevent crash because of high memory usage for big files)

View File

@ -100,6 +100,7 @@ export async function listenEvent(
}; };
const listener = (msg: ProcessEvent) => { const listener = (msg: ProcessEvent) => {
// eslint-disable-next-line @typescript-eslint/no-unused-expressions
msg.type === "event" && msg.type === "event" &&
msg.id === event && msg.id === event &&
callback({ ...msg.event, cancel }); callback({ ...msg.event, cancel });

View File

@ -117,7 +117,7 @@ export const Sentry = {
Integrations.setupExpressErrorHandler(app); Integrations.setupExpressErrorHandler(app);
// The typings for this are broken? // The typings for this are broken?
// eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unused-vars // eslint-disable-next-line @typescript-eslint/no-explicit-any
app.use(function onError(err: any, req: any, res: any, next: any) { app.use(function onError(err: any, req: any, res: any, next: any) {
res.statusCode = 500; res.statusCode = 500;
res.end(res.sentry + "\n"); res.end(res.sentry + "\n");