Local changes

This commit is contained in:
Rory& 2025-10-16 18:41:52 +02:00
parent 5c798af16d
commit aff39e4b1b
8 changed files with 121 additions and 82 deletions

12
.idea/dataSources.xml generated Normal file
View File

@ -0,0 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="DataSourceManagerImpl" format="xml" multifile-model="true">
<data-source source="LOCAL" name="spacebar@localhost" uuid="61e66448-285a-4205-a1d7-c2704d5afb2c">
<driver-ref>postgresql</driver-ref>
<synchronize>true</synchronize>
<jdbc-driver>org.postgresql.Driver</jdbc-driver>
<jdbc-url>jdbc:postgresql://localhost:5432/spacebar</jdbc-url>
<working-dir>$ProjectFileDir$</working-dir>
</data-source>
</component>
</project>

6
.idea/data_source_mapping.xml generated Normal file
View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="DataSourcePerFileMappings">
<file url="file://$APPLICATION_CONFIG_DIR$/consoles/db/61e66448-285a-4205-a1d7-c2704d5afb2c/console.sql" value="61e66448-285a-4205-a1d7-c2704d5afb2c" />
</component>
</project>

6
.idea/sqldialects.xml generated Normal file
View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="SqlDialectMappings">
<file url="PROJECT" dialect="PostgreSQL" />
</component>
</project>

15
.idea/workspace.xml generated
View File

@ -73,6 +73,9 @@
"ts.external.directory.path": "/home/Rory/git/spacebar/server-master/node_modules/typescript/lib" "ts.external.directory.path": "/home/Rory/git/spacebar/server-master/node_modules/typescript/lib"
}, },
"keyToStringList": { "keyToStringList": {
"DatabaseDriversLRU": [
"postgresql"
],
"GitStage.ChangesTree.GroupingKeys": [ "GitStage.ChangesTree.GroupingKeys": [
"directory", "directory",
"module", "module",
@ -102,6 +105,18 @@
<option value="js.build_tools.npm" /> <option value="js.build_tools.npm" />
</set> </set>
</option> </option>
<option name="configurationStatuses">
<map>
<entry key="js.build_tools.npm">
<value>
<map>
<entry key="Start API" value="STOPPED" />
<entry key="build" value="STOPPED" />
</map>
</value>
</entry>
</map>
</option>
</component> </component>
<component name="RunManager" selected="npm.Start API"> <component name="RunManager" selected="npm.Start API">
<list> <list>

View File

@ -18,8 +18,13 @@
import { route } from "@spacebar/api"; import { route } from "@spacebar/api";
import { Request, Response, Router } from "express"; import { Request, Response, Router } from "express";
import { ApplicationDetectableResponse } from "@spacebar/schemas*";
const router: Router = Router({ mergeParams: true }); const router: Router = Router({ mergeParams: true });
const cache = {
data: {},
lastUpdated: 0
}
router.get( router.get(
"/", "/",
@ -31,8 +36,15 @@ router.get(
}, },
}), }),
async (req: Request, res: Response) => { async (req: Request, res: Response) => {
//TODO // cache for 6 hours
res.send([]).status(200); if (Date.now() - cache.lastUpdated > 6 * 60 * 60 * 1000) {
const response = await fetch("https://discord.com/api/v10/applications/detectable"); // because, well, it's unauthenticated anyways
const data = await response.json();
cache.data = data as ApplicationDetectableResponse;
cache.lastUpdated = Date.now();
}
res.status(200).json(cache.data);
}, },
); );

View File

@ -28,6 +28,7 @@ import { Message } from "./Message";
import { Deflate, Inflate } from "fast-zlib"; import { Deflate, Inflate } from "fast-zlib";
import { URL } from "url"; import { URL } from "url";
import { Config, ErlpackType } from "@spacebar/util"; import { Config, ErlpackType } from "@spacebar/util";
// import zlib from "node:zlib";
let erlpack: ErlpackType | null = null; let erlpack: ErlpackType | null = null;
try { try {
@ -116,10 +117,18 @@ export async function Connection(
// @ts-ignore // @ts-ignore
socket.compress = searchParams.get("compress") || ""; socket.compress = searchParams.get("compress") || "";
if (socket.compress) { if (socket.compress) {
if (socket.compress !== "zlib-stream") if (socket.compress === "zlib-stream") {
socket.deflate = new Deflate();
socket.inflate = new Inflate();
} else if (socket.compress === "zstd-stream") {
// TODO
return socket.close(
CLOSECODES.Decode_error
);
} else {
return socket.close(CLOSECODES.Decode_error); return socket.close(CLOSECODES.Decode_error);
socket.deflate = new Deflate(); }
socket.inflate = new Inflate();
} }
socket.events = {}; socket.events = {};

View File

@ -113,13 +113,13 @@ export class User extends BaseClass {
@Column({ nullable: true, select: false }) @Column({ nullable: true, select: false })
email?: string; // email of the user email?: string; // email of the user
@Column() @Column({ type: "bigint" })
flags: number = 0; // UserFlags // TODO: generate flags: number = 0; // UserFlags // TODO: generate
@Column() @Column({ type: "bigint" })
public_flags: number = 0; public_flags: number = 0;
@Column() @Column({ type: "bigint" })
purchased_flags: number = 0; purchased_flags: number = 0;
@Column() @Column()

View File

@ -1,74 +1,53 @@
// import { MigrationInterface, QueryRunner } from "typeorm"; import { MigrationInterface, QueryRunner } from "typeorm";
//
// export class ApplicationCommands1760622755598 implements MigrationInterface { export class ReconcileMigrationAttempts1760622755598 implements MigrationInterface {
// name = 'ApplicationCommands1760622755598' name = 'ReconcileMigrationAttempts1760622755598'
//
// public async up(queryRunner: QueryRunner): Promise<void> { public async up(queryRunner: QueryRunner): Promise<void> {
// await queryRunner.query(`ALTER TABLE "webhooks" DROP CONSTRAINT "fk_d64f38834fa676f6caa4786ddd6"`); await queryRunner.query(`ALTER TABLE "webhooks" DROP CONSTRAINT "fk_d64f38834fa676f6caa4786ddd6"`);
// await queryRunner.query(`ALTER TABLE "webhooks" DROP COLUMN "source_channel_id"`); await queryRunner.query(`ALTER TABLE "webhooks" ALTER COLUMN "source_channel_id" TYPE character varying`);
// await queryRunner.query(`ALTER TABLE "webhooks" ADD "source_channel_id" character varying`); await queryRunner.query(`ALTER TABLE "messages" ALTER COLUMN "username" TYPE character varying`);
// await queryRunner.query(`ALTER TABLE "messages" DROP COLUMN "username"`); await queryRunner.query(`ALTER TABLE "messages" ALTER COLUMN "avatar" TYPE character varying`);
// await queryRunner.query(`ALTER TABLE "messages" ADD "username" character varying`); await queryRunner.query(`ALTER TABLE "channels" ALTER COLUMN "default_thread_rate_limit_per_user" DROP NOT NULL`);
// await queryRunner.query(`ALTER TABLE "messages" DROP COLUMN "avatar"`); await queryRunner.query(`ALTER TABLE "sessions" ALTER COLUMN "client_status" SET NOT NULL`);
// await queryRunner.query(`ALTER TABLE "messages" ADD "avatar" character varying`); await queryRunner.query(`ALTER TABLE "user_settings" ALTER COLUMN "friend_discovery_flags" DROP DEFAULT`);
// await queryRunner.query(`ALTER TABLE "channels" ALTER COLUMN "default_thread_rate_limit_per_user" DROP NOT NULL`); await queryRunner.query(`ALTER TABLE "user_settings" ALTER COLUMN "view_nsfw_guilds" DROP DEFAULT`);
// await queryRunner.query(`ALTER TABLE "sessions" ALTER COLUMN "client_status" SET NOT NULL`); await queryRunner.query(`ALTER TABLE "users" ALTER COLUMN "flags" SET NOT NULL`);
// await queryRunner.query(`ALTER TABLE "user_settings" ALTER COLUMN "friend_discovery_flags" DROP DEFAULT`); await queryRunner.query(`ALTER TABLE "users" ALTER COLUMN "public_flags" SET NOT NULL`);
// await queryRunner.query(`ALTER TABLE "user_settings" ALTER COLUMN "view_nsfw_guilds" DROP DEFAULT`); await queryRunner.query(`ALTER TABLE "users" ALTER COLUMN "purchased_flags" SET NOT NULL`);
// await queryRunner.query(`ALTER TABLE "users" DROP COLUMN "flags"`); await queryRunner.query(`ALTER TABLE "team_members" ALTER COLUMN "role" TYPE character varying`);
// await queryRunner.query(`ALTER TABLE "users" ADD "flags" integer NOT NULL`); await queryRunner.query(`ALTER TABLE "team_members" ALTER COLUMN "role" SET NOT NULL`);
// await queryRunner.query(`ALTER TABLE "users" DROP COLUMN "public_flags"`); await queryRunner.query(`ALTER TABLE "applications" ALTER COLUMN "guild_id" TYPE character varying`);
// await queryRunner.query(`ALTER TABLE "users" ADD "public_flags" integer NOT NULL`); await queryRunner.query(`ALTER TABLE "applications" ALTER COLUMN "custom_install_url" TYPE character varying`);
// await queryRunner.query(`ALTER TABLE "users" DROP COLUMN "purchased_flags"`); await queryRunner.query(`ALTER TABLE "categories" ALTER COLUMN "icon" TYPE character varying`);
// await queryRunner.query(`ALTER TABLE "users" ADD "purchased_flags" integer NOT NULL`); await queryRunner.query(`ALTER TABLE "user_settings_protos" ALTER COLUMN "userSettings" TYPE character varying`);
// await queryRunner.query(`ALTER TABLE "team_members" DROP COLUMN "role"`); await queryRunner.query(`ALTER TABLE "user_settings_protos" ALTER COLUMN "frecencySettings" TYPE character varying`);
// await queryRunner.query(`ALTER TABLE "team_members" ADD "role" character varying NOT NULL`); await queryRunner.query(`ALTER TABLE "webhooks" ADD CONSTRAINT "FK_4495b7032a33c6b8b605d030398" FOREIGN KEY ("source_channel_id") REFERENCES "channels"("id") ON DELETE CASCADE ON UPDATE NO ACTION`);
// await queryRunner.query(`ALTER TABLE "applications" DROP COLUMN "guild_id"`); await queryRunner.query(`ALTER TABLE "applications" ADD CONSTRAINT "FK_e5bf78cdbbe9ba91062d74c5aba" FOREIGN KEY ("guild_id") REFERENCES "guilds"("id") ON DELETE NO ACTION ON UPDATE NO ACTION`);
// await queryRunner.query(`ALTER TABLE "applications" ADD "guild_id" character varying`); }
// await queryRunner.query(`ALTER TABLE "applications" DROP COLUMN "custom_install_url"`);
// await queryRunner.query(`ALTER TABLE "applications" ADD "custom_install_url" character varying`); public async down(queryRunner: QueryRunner): Promise<void> {
// await queryRunner.query(`ALTER TABLE "categories" DROP COLUMN "icon"`); await queryRunner.query(`ALTER TABLE "applications" DROP CONSTRAINT "FK_e5bf78cdbbe9ba91062d74c5aba"`);
// await queryRunner.query(`ALTER TABLE "categories" ADD "icon" character varying`); await queryRunner.query(`ALTER TABLE "webhooks" DROP CONSTRAINT "FK_4495b7032a33c6b8b605d030398"`);
// await queryRunner.query(`ALTER TABLE "user_settings_protos" DROP COLUMN "userSettings"`); await queryRunner.query(`ALTER TABLE "user_settings_protos" ALTER COLUMN "frecencySettings" TYPE text`);
// await queryRunner.query(`ALTER TABLE "user_settings_protos" ADD "userSettings" character varying`); await queryRunner.query(`ALTER TABLE "user_settings_protos" ALTER COLUMN "userSettings" TYPE text`);
// await queryRunner.query(`ALTER TABLE "user_settings_protos" DROP COLUMN "frecencySettings"`); await queryRunner.query(`ALTER TABLE "categories" ALTER COLUMN "icon" TYPE text`);
// await queryRunner.query(`ALTER TABLE "user_settings_protos" ADD "frecencySettings" character varying`); await queryRunner.query(`ALTER TABLE "applications" ALTER COLUMN "custom_install_url" TYPE text`);
// await queryRunner.query(`ALTER TABLE "webhooks" ADD CONSTRAINT "FK_4495b7032a33c6b8b605d030398" FOREIGN KEY ("source_channel_id") REFERENCES "channels"("id") ON DELETE CASCADE ON UPDATE NO ACTION`); await queryRunner.query(`ALTER TABLE "applications" ALTER COLUMN "guild_id" TYPE text`);
// await queryRunner.query(`ALTER TABLE "applications" ADD CONSTRAINT "FK_e5bf78cdbbe9ba91062d74c5aba" FOREIGN KEY ("guild_id") REFERENCES "guilds"("id") ON DELETE NO ACTION ON UPDATE NO ACTION`); await queryRunner.query(`ALTER TABLE "team_members" ALTER COLUMN "role" TYPE text`);
// } await queryRunner.query(`ALTER TABLE "team_members" ALTER COLUMN "role" SET NOT NULL`);
// await queryRunner.query(`ALTER TABLE "users" ALTER COLUMN "purchased_flags" SET NOT NULL`);
// public async down(queryRunner: QueryRunner): Promise<void> { await queryRunner.query(`ALTER TABLE "users" ALTER COLUMN "public_flags" SET NOT NULL`);
// await queryRunner.query(`ALTER TABLE "applications" DROP CONSTRAINT "FK_e5bf78cdbbe9ba91062d74c5aba"`); await queryRunner.query(`ALTER TABLE "users" ALTER COLUMN "flags" SET NOT NULL`);
// await queryRunner.query(`ALTER TABLE "webhooks" DROP CONSTRAINT "FK_4495b7032a33c6b8b605d030398"`); await queryRunner.query(`ALTER TABLE "user_settings" ALTER COLUMN "view_nsfw_guilds" SET DEFAULT true`);
// await queryRunner.query(`ALTER TABLE "user_settings_protos" DROP COLUMN "frecencySettings"`); await queryRunner.query(`ALTER TABLE "user_settings" ALTER COLUMN "friend_discovery_flags" SET DEFAULT '0'`);
// await queryRunner.query(`ALTER TABLE "user_settings_protos" ADD "frecencySettings" text`); await queryRunner.query(`ALTER TABLE "sessions" ALTER COLUMN "client_status" DROP NOT NULL`);
// await queryRunner.query(`ALTER TABLE "user_settings_protos" DROP COLUMN "userSettings"`); await queryRunner.query(`ALTER TABLE "channels" ALTER COLUMN "default_thread_rate_limit_per_user" SET NOT NULL`);
// await queryRunner.query(`ALTER TABLE "user_settings_protos" ADD "userSettings" text`); await queryRunner.query(`ALTER TABLE "messages" ALTER COLUMN "avatar" TYPE text`);
// await queryRunner.query(`ALTER TABLE "categories" DROP COLUMN "icon"`); await queryRunner.query(`ALTER TABLE "messages" ALTER COLUMN "username" TYPE text`);
// await queryRunner.query(`ALTER TABLE "categories" ADD "icon" text`); await queryRunner.query(`ALTER TABLE "webhooks" ALTER COLUMN "source_channel_id" TYPE character varying(255)`);
// await queryRunner.query(`ALTER TABLE "applications" DROP COLUMN "custom_install_url"`); await queryRunner.query(`ALTER TABLE "webhooks" ALTER COLUMN "source_channel_id" SET DEFAULT NULL`);
// await queryRunner.query(`ALTER TABLE "applications" ADD "custom_install_url" text`); await queryRunner.query(`ALTER TABLE "webhooks" ADD CONSTRAINT "fk_d64f38834fa676f6caa4786ddd6" FOREIGN KEY ("source_channel_id") REFERENCES "channels"("id") ON DELETE CASCADE ON UPDATE NO ACTION`);
// await queryRunner.query(`ALTER TABLE "applications" DROP COLUMN "guild_id"`); }
// await queryRunner.query(`ALTER TABLE "applications" ADD "guild_id" text`);
// await queryRunner.query(`ALTER TABLE "team_members" DROP COLUMN "role"`); }
// await queryRunner.query(`ALTER TABLE "team_members" ADD "role" text NOT NULL`);
// await queryRunner.query(`ALTER TABLE "users" DROP COLUMN "purchased_flags"`);
// await queryRunner.query(`ALTER TABLE "users" ADD "purchased_flags" bigint NOT NULL`);
// await queryRunner.query(`ALTER TABLE "users" DROP COLUMN "public_flags"`);
// await queryRunner.query(`ALTER TABLE "users" ADD "public_flags" bigint NOT NULL`);
// await queryRunner.query(`ALTER TABLE "users" DROP COLUMN "flags"`);
// await queryRunner.query(`ALTER TABLE "users" ADD "flags" bigint NOT NULL`);
// await queryRunner.query(`ALTER TABLE "user_settings" ALTER COLUMN "view_nsfw_guilds" SET DEFAULT true`);
// await queryRunner.query(`ALTER TABLE "user_settings" ALTER COLUMN "friend_discovery_flags" SET DEFAULT '0'`);
// await queryRunner.query(`ALTER TABLE "sessions" ALTER COLUMN "client_status" DROP NOT NULL`);
// await queryRunner.query(`ALTER TABLE "channels" ALTER COLUMN "default_thread_rate_limit_per_user" SET NOT NULL`);
// await queryRunner.query(`ALTER TABLE "messages" DROP COLUMN "avatar"`);
// await queryRunner.query(`ALTER TABLE "messages" ADD "avatar" text`);
// await queryRunner.query(`ALTER TABLE "messages" DROP COLUMN "username"`);
// await queryRunner.query(`ALTER TABLE "messages" ADD "username" text`);
// await queryRunner.query(`ALTER TABLE "webhooks" DROP COLUMN "source_channel_id"`);
// await queryRunner.query(`ALTER TABLE "webhooks" ADD "source_channel_id" character varying(255) DEFAULT NULL`);
// await queryRunner.query(`ALTER TABLE "webhooks" ADD CONSTRAINT "fk_d64f38834fa676f6caa4786ddd6" FOREIGN KEY ("source_channel_id") REFERENCES "channels"("id") ON DELETE CASCADE ON UPDATE NO ACTION`);
// }
//
// }