jaid-core
Version:
Simple, opinionated framework that combines koa, got, sequelize, essential-config and jaid-logger.
244 lines (243 loc) • 6.89 kB
TypeScript
declare class JaidCorePlugin {
/**
* @param {string} message
*/
log(message: string): void;
/**
* @param {string} message
*/
logWarning(message: string): void;
/**
* @param {string} message
*/
logError(message: string): void;
/**
* @param {string} message
*/
logDebug(message: string): void;
}
/** @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
*/
registerModelDynamic(modelName: string, generateDefinition: 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;
}
}