diff --git a/util/.vscode/launch.json b/util/.vscode/launch.json index 07fd32ac..0de6e587 100644 --- a/util/.vscode/launch.json +++ b/util/.vscode/launch.json @@ -8,10 +8,19 @@ "sourceMaps": true, "type": "node", "request": "launch", - "name": "Launch Server", + "name": "Launch Util", "program": "${workspaceFolder}/dist/index.js", "preLaunchTask": "tsc: build - tsconfig.json", "outFiles": ["${workspaceFolder}/dist/**/*.js"] + }, + { + "name": "Debug Jest Tests", + "type": "node", + "request": "launch", + "runtimeArgs": ["--inspect-brk", "${workspaceRoot}/node_modules/jest/bin/jest.js", "--runInBand"], + "console": "integratedTerminal", + "internalConsoleOptions": "neverOpen", + "port": 9229 } ] } diff --git a/util/package-lock.json b/util/package-lock.json index f80854ea..c7510fa8 100644 Binary files a/util/package-lock.json and b/util/package-lock.json differ diff --git a/util/package.json b/util/package.json index 397eb47f..ac204937 100644 --- a/util/package.json +++ b/util/package.json @@ -6,8 +6,9 @@ "types": "dist/index.d.ts", "scripts": { "start": "npm run build && node dist/", + "patch": "patch-package", "test": "npm run build && jest", - "postinstall": "npm run build", + "postinstall": "npm run patch && npm run build", "build": "npx tsc -b .", "generate:schema": "npx typescript-json-schema tsconfig.json '*' -o src/entities/schema.json" }, @@ -46,12 +47,12 @@ "jsonwebtoken": "^8.5.1", "missing-native-js-functions": "^1.2.10", "node-fetch": "^2.6.1", + "patch-package": "^6.4.7", "reflect-metadata": "^0.1.13", "sqlite3": "^5.0.2", - "ts-transform-json-schema": "^2.0.3", "typeorm": "^0.2.37", "typescript": "^4.3.5", - "typescript-json-schema": "github:fosscord/typescript-json-schema" + "typescript-json-schema": "^0.50.1" }, "jest": { "setupFilesAfterEnv": [ diff --git a/util/src/entities/BaseClass.ts b/util/src/entities/BaseClass.ts index 38f6a71b..22d9f6d6 100644 --- a/util/src/entities/BaseClass.ts +++ b/util/src/entities/BaseClass.ts @@ -8,6 +8,7 @@ const ajv = new Ajv({ removeAdditional: "all", useDefaults: true, coerceTypes: true, + // @ts-ignore validateFormats: false, allowUnionTypes: true, }); @@ -23,12 +24,18 @@ export class BaseClass extends BaseEntity { this.assign(props); if (!this.construct.schema) this.construct.schema = { ...schema, $ref: `#/definitions/${this.construct.name}` }; + + this.id = this.opts.id || Snowflake.generate(); } get construct(): any { return this.constructor; } + get metadata() { + return this.construct.getRepository().metadata; + } + assign(props: any) { if (!props || typeof props !== "object") return; @@ -39,8 +46,6 @@ export class BaseClass extends BaseEntity { Object.defineProperty(this, key, { value: props[key] }); } - - this.id = this.opts.id || Snowflake.generate(); } @BeforeUpdate() @@ -48,10 +53,7 @@ export class BaseClass extends BaseEntity { validate() { const valid = ajv.validate(this.construct.schema, this.toJSON()); if (!valid) throw ajv.errors; - } - - get metadata() { - return this.construct.getRepository().metadata; + return this; } toJSON(): any { diff --git a/util/src/entities/User.ts b/util/src/entities/User.ts index 073f6217..39e59da4 100644 --- a/util/src/entities/User.ts +++ b/util/src/entities/User.ts @@ -1,4 +1,4 @@ -import { Column, Entity, JoinColumn, OneToMany, OneToOne } from "typeorm"; +import { Column, Entity, JoinColumn, OneToMany } from "typeorm"; import { BaseClass } from "./BaseClass"; import { BitField } from "../util/BitField"; import { Relationship } from "./Relationship"; diff --git a/util/src/index.ts b/util/src/index.ts index d66af15b..f3bd9e9b 100644 --- a/util/src/index.ts +++ b/util/src/index.ts @@ -1,10 +1,9 @@ import "reflect-metadata"; // export * as Constants from "../util/Constants"; +export * from "./util/index"; export * from "./interfaces/index"; export * from "./entities/index"; -export * from "./util/index"; -import "./test"; // import Config from "../util/Config"; // import db, { MongooseCache, toObject } from "./util/Database"; diff --git a/util/src/util/Database.ts b/util/src/util/Database.ts index 248e0dcf..90ba9079 100644 --- a/util/src/util/Database.ts +++ b/util/src/util/Database.ts @@ -10,6 +10,7 @@ var promise: Promise; export function initDatabase() { if (promise) return promise; // prevent initalizing multiple times + console.log("[Database] connecting ..."); // @ts-ignore promise = createConnection({ type: "sqlite", @@ -19,7 +20,7 @@ export function initDatabase() { logging: false, }); + promise.then(() => console.log("[Database] connected")); + return promise; } - -initDatabase(); diff --git a/util/src/util/checkToken.ts b/util/src/util/checkToken.ts index 825ee00c..58e537ea 100644 --- a/util/src/util/checkToken.ts +++ b/util/src/util/checkToken.ts @@ -9,7 +9,7 @@ export function checkToken(token: string, jwtSecret: string): Promise { jwt.verify(token, jwtSecret, JWTOptions, async (err, decoded: any) => { if (err || !decoded) return rej("Invalid Token"); - const user = await User.findOneOrFail( + const user = await User.findOne( { id: decoded.id }, { select: ["user_data", "bot", "disabled", "deleted"] } ); diff --git a/util/src/util/index.ts b/util/src/util/index.ts index 886a2390..700ecfa5 100644 --- a/util/src/util/index.ts +++ b/util/src/util/index.ts @@ -1,7 +1,8 @@ +export * from "./Database"; + export * from "./Regex"; export * from "./String"; export * from "./BitField"; -export * from "./Database"; export * from "./Intents"; export * from "./MessageFlags"; export * from "./Permissions"; diff --git a/util/tests/validate.test.js b/util/tests/validate.test.js index 629c864f..d36da1ed 100644 --- a/util/tests/validate.test.js +++ b/util/tests/validate.test.js @@ -3,8 +3,7 @@ const { User } = require("../dist/entities/User"); beforeAll(async () => { await initDatabase(); - - new User().validate(); // initalize schema validator + new User().validate(); }); describe("Validate model class properties", () => { @@ -24,4 +23,8 @@ describe("Validate model class properties", () => { const user = new User({ opts: { id: 0 } }); expect(user.opts.id).not.toBe(0); }); + + test("test", () => { + expect(1).toBe(1); + }); });