diff --git a/package-lock.json b/package-lock.json index 377c816..9783247 100644 --- a/package-lock.json +++ b/package-lock.json @@ -34,6 +34,7 @@ "devDependencies": { "@types/express": "^4.17.17", "@types/fs-extra": "^11.0.1", + "@types/memoizee": "^0.4.8", "@types/morgan": "^1.9.4", "@types/multer": "^1.4.7", "@types/node-rsa": "^1.1.1", @@ -1515,6 +1516,12 @@ "resolved": "https://registry.npmjs.org/@types/long/-/long-4.0.2.tgz", "integrity": "sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA==" }, + "node_modules/@types/memoizee": { + "version": "0.4.8", + "resolved": "https://registry.npmjs.org/@types/memoizee/-/memoizee-0.4.8.tgz", + "integrity": "sha512-qDpXKGgwKywnQt/64fH1O0LiPA++QGIYeykEUiZ51HymKVRLnUSGcRuF60IfpPeeXiuRwiR/W4y7S5VzbrgLCA==", + "dev": true + }, "node_modules/@types/mime": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/@types/mime/-/mime-3.0.1.tgz", diff --git a/package.json b/package.json index fdac6b0..59d9dad 100644 --- a/package.json +++ b/package.json @@ -39,6 +39,7 @@ "devDependencies": { "@types/express": "^4.17.17", "@types/fs-extra": "^11.0.1", + "@types/memoizee": "^0.4.8", "@types/morgan": "^1.9.4", "@types/multer": "^1.4.7", "@types/node-rsa": "^1.1.1", diff --git a/src/types/express-subdomain.d.ts b/src/types/express-subdomain.d.ts index cb1cbdc..933d1f0 100644 --- a/src/types/express-subdomain.d.ts +++ b/src/types/express-subdomain.d.ts @@ -1,3 +1,16 @@ -declare module 'express-subdomain'; +// * Credit to https://github.com/bmullan91/express-subdomain/pull/61 for the types! -// TODO - Add proper types \ No newline at end of file +declare module 'express-subdomain'{ + import type { Request, Response, Router } from 'express'; + + /** + * @description The subdomain function. + * @param subdomain The subdomain to listen on. + * @param fn The listener function, takes a response and request. + * @returns A function call to the value passed as FN, or void (the next function). + */ + export default function subdomain( + subdomain: string, + fn: Router | ((req: Request, res: Response) => void | any) + ): (req: Request, res: Response, next: () => void) => void | typeof fn; +} \ No newline at end of file diff --git a/src/types/memoizee.d.ts b/src/types/memoizee.d.ts index bd926c1..ad4f77b 100644 --- a/src/types/memoizee.d.ts +++ b/src/types/memoizee.d.ts @@ -1,3 +1,34 @@ -declare module 'memoizee'; +// * Taken from https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/types/memoizee/index.d.ts +// * Installing from @types/memoizee did not work, types werent being seen -// TODO - Add proper types \ No newline at end of file +// Type definitions for memoizee 0.4 +// Project: https://github.com/medikoo/memoizee +// Definitions by: Juan Picado +// Patrick Muff +// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped +// Minimum TypeScript Version: 3.1 + +declare namespace memoizee { + interface Options any> { + length?: number | false | undefined; + maxAge?: number | undefined; + max?: number | undefined; + preFetch?: number | true | undefined; + promise?: boolean | 'then' | 'done' | 'done:finally' | undefined; + dispose?(value: any): void; + async?: boolean | undefined; + primitive?: boolean | undefined; + normalizer?(args: Parameters): string; + resolvers?: Array<(arg: any) => any> | undefined; + profileName?: string; + } + + interface Memoized { + delete: F; + clear: F & (() => void); + } +} + +declare function memoizee any>(f: F, options?: memoizee.Options): F & memoizee.Memoized; + +export = memoizee; \ No newline at end of file diff --git a/src/types/node-snowflake.d.ts b/src/types/node-snowflake.d.ts index f571a04..6404ab0 100644 --- a/src/types/node-snowflake.d.ts +++ b/src/types/node-snowflake.d.ts @@ -1,3 +1,14 @@ -declare module 'node-snowflake'; +declare module 'node-snowflake' { + export interface SnowflakeInitConfig { + worker_id: number; + data_center_id: number; + sequence: number; + } -// TODO - Add proper types \ No newline at end of file + export function Server(port: number): void; + + export const Snowflake: { + init: (config: SnowflakeInitConfig) => void; + nextId: (workerId?: number, dataCenterId?: number, sequence?: number) => string; + }; +} \ No newline at end of file diff --git a/src/types/tga.d.ts b/src/types/tga.d.ts index e1c6188..16eb4a2 100644 --- a/src/types/tga.d.ts +++ b/src/types/tga.d.ts @@ -1,3 +1,58 @@ -declare module 'tga'; +declare module 'tga' { + export interface TGAHeader { + idLength: number; + colorMapType: number; + dataType: number; + colorMapOrigin: number; + colorMapLength: number; + colorMapDepth: number; + xOrigin: number; + yOrigin: number; + width: number; + height: number; + bitsPerPixel: number; + flags: number; + id: string; + } -// TODO - Add proper types \ No newline at end of file + export default class TGA { + constructor(buf: Buffer, opt?: { dontFixAlpha: boolean }); + + static createTgaBuffer(width: number, height: number, pixels: Uint8Array, dontFlipY: boolean): Buffer; + + parseHeader(): void; + parseFooter(): void; + parseExtension(extensionAreaOffset: number): void; + readColor(offset: number, bytesPerPixel: number): Uint8Array; + readColorWithColorMap(offset: number): Uint8Array; + readColorAuto(offset: number, bytesPerPixel: number, isUsingColorMap: boolean): Uint8Array; + parseColorMap(): void; + setPixel(pixels: Uint8Array, idx: number, color: Uint8Array): void; + parsePixels(): void; + parse(): void; + fixForAlpha(): void; + + public dontFixAlpha: boolean; + public _buff: Buffer; + public data: Uint8Array; + public currentOffset: number; + + public header: TGAHeader; + + public width: number; + public height: number; + + public isUsingColorMap: boolean; + public isUsingRLE: boolean; + public isGray: boolean; + + public hasAlpha: boolean; + + public isFlipX: boolean; + public isFlipY: boolean; + + public colorMap: Uint8Array; + + public pixels: Uint8Array; + } +} \ No newline at end of file diff --git a/src/util.ts b/src/util.ts index 699c89e..84e74bf 100644 --- a/src/util.ts +++ b/src/util.ts @@ -140,13 +140,13 @@ export function processPainting(painting: string): Buffer | null { return null; } - const tga = new TGA(Buffer.from(output)); + const tga: TGA = new TGA(Buffer.from(output)); const png: PNG = new PNG({ width: tga.width, height: tga.height }); - png.data = tga.pixels; + png.data = Buffer.from(tga.pixels); return PNG.sync.write(png); }