UNPKG

jaid-core

Version:

Combines jaid-logger, essential-config, got, koa and sequelize.

241 lines (240 loc) 7.02 kB
declare class JaidCorePlugin { } /** @module jaid-core */ declare module "jaid-core" { /** * @typedef {Object} Options * @prop {string} name * @prop {string|string[]} [folder] * @prop {string} version * @prop {import("essential-config").Options} configSetup * @prop {boolean|string} database * @prop {import("sequelize").Options} sequelizeOptions * @prop {number} insecurePort * @prop {number} securePort * @prop {boolean} [http2=false] * @prop {"error"|"warn"|"info"|"debug"|"silly"} [serverLogLevel="debug"] * @prop {"error"|"warn"|"info"|"debug"|"silly"} [databaseLogLevel="debug"] * @prop {"error"|"warn"|"info"|"debug"|"silly"} [gotLogLevel="debug"] * @prop {boolean} [useGot=true] * @prop {boolean} [sqlite=false] * @prop {string[]|string|false} [databaseExtensions=false] * @prop {boolean|Object} [koaSession] */ export type Options = { name: string; folder?: string | string[]; version: string; database: boolean | string; insecurePort: number; securePort: number; http2?: boolean; serverLogLevel?: "error" | "warn" | "info" | "debug" | "silly"; databaseLogLevel?: "error" | "warn" | "info" | "debug" | "silly"; gotLogLevel?: "error" | "warn" | "info" | "debug" | "silly"; useGot?: boolean; sqlite?: boolean; databaseExtensions?: string[] | string | false; koaSession?: boolean | any; }; /** * @typedef {Object} BaseConfig * @prop {string} databaseDialect * @prop {string} databaseName * @prop {string} databaseUser * @prop {string} databaseHost * @prop {number} databasePort * @prop {"alter"|"sync"|"force"|false} databaseSchemaSync * @prop {string} timezone * @prop {number} insecurePort * @prop {number} securePort * @prop {string} databasePath * @prop {string[]|string} koaKeys * @prop {string[]|string} disabledPlugins */ export type BaseConfig = { databaseDialect: string; databaseName: string; databaseUser: string; databaseHost: string; databasePort: number; databaseSchemaSync: "alter" | "sync" | "force" | false; timezone: string; insecurePort: number; securePort: number; databasePath: string; koaKeys: string[] | string; disabledPlugins: string[] | string; }; /** * @typedef {Object} SequelizeDefinition * @prop {import("sequelize").ModelAttributes} schema * @prop {import("sequelize").IndexesOptions[]} indexes * @prop {typeof import("sequelize").Model} default */ export type SequelizeDefinition = {}; /** * @constructor * @param {Options} options */ export class JaidCore { constructor(options: Options); /** * @type {Date} */ startTime: Date; /** * @type {Set} */ unusedPluginEvents: Set; /** * @type {string} */ defaultLogLevel: string; /** * @type {boolean} */ hasDatabase: boolean; /** * @type {boolean} */ hasInsecureServer: boolean; /** * @type {boolean} */ hasSecureServer: boolean; /** * @type {boolean} */ hasServer: boolean; /** * @type {string} */ camelName: string; /** * @type {string[]} */ appPath: string[]; /** * @type {import("jaid-logger").JaidLogger} */ logger: any; /** * @type {string} */ appFolder: string; /** * @type {string} */ logFolder: string; /** * @type {string[]} */ databaseExtensions: string[]; /** * @type {BaseConfig} */ config: BaseConfig; /** * @type {boolean} */ hasPlugins: boolean; /** * @type {Object} */ plugins: any; /** * @type {import("sequelize").Sequelize} */ database: any; /** * @type {import("koa")} */ koa: any; /** * @type {import("got").GotInstance} */ got: any; /** * @type {require("http2").Http2Server} */ insecureServer: require; /** * @type {require("http2").Http2SecureServer} */ secureServer: require; /** * @type {import("essential-config").Options} */ configSetup: any; /** * @param {string} modelName * @param {SequelizeDefinition} definition */ registerModel(modelName: string, definition: SequelizeDefinition): void; /** * @param {string} modelName * @param {(superClass, classGenerationContext) => SequelizeDefinition} generateDefinition * @param {Object} Sequelize * @param {Object} plugin */ registerModelDynamic(modelName: string, generateDefinition: any, Sequelize: any, plugin: any): void; /** * @returns {Promise<void>} */ close(): Promise<void>; /** * @param {string} memberName * @param {...*} args * @return {Promise<Object>} */ callPlugins(memberName: string, ...args: any[]): Promise<object>; /** * @param {string} memberName * @param {...*} args * @return {Promise<void>} */ callAndRemovePlugins(memberName: string, ...args: any[]): Promise<void>; /** * @param {Function} job */ doForManagedPluginsSync(job: (...params: any[]) => any): void; /** * @param {Function} job * @return {Promise<void>} */ doForManagedPlugins(job: (...params: any[]) => any): Promise<void>; /** * @param {string} pluginId * @return {string} */ formatPluginName(pluginId: string): string; /** * @param {string} pluginId * @param {Object} plugin * @return {string} */ formatPluginNameDetailed(pluginId: string, plugin: any): string; /** * @param {Object} [plugins={}] * @returns {Promise<void>} */ init(plugins?: any): Promise<void>; /** * @type {import("koa")} */ koa: any; } /** * @typedef {Object} ModelDefinitionContext * @prop {JaidCore} core * @prop {JaidCorePlugin} parentPlugin * @prop {import("sequelize").default} sequelize * @prop {Object<string, import("sequelize").Model)} models */ export type ModelDefinitionContext = { core: JaidCore; parentPlugin: JaidCorePlugin; }; }