34 lines
967 B
TypeScript
34 lines
967 B
TypeScript
|
import Koa from 'koa';
|
||
|
import Database from '@nocobase/database';
|
||
|
import Resourcer, { Action, ParsedParams } from '@nocobase/resourcer';
|
||
|
|
||
|
export class Application extends Koa {
|
||
|
|
||
|
database: Database;
|
||
|
|
||
|
resourcer: Resourcer;
|
||
|
|
||
|
async plugins(plugins: any[]) {
|
||
|
for (const pluginOption of plugins) {
|
||
|
let plugin: Function;
|
||
|
let options = {};
|
||
|
if (Array.isArray(pluginOption)) {
|
||
|
plugin = pluginOption.shift();
|
||
|
options = pluginOption.shift()||{};
|
||
|
if (typeof plugin === 'function') {
|
||
|
plugin = plugin.bind(this);
|
||
|
} else if (typeof plugin === 'string') {
|
||
|
const libDir = __filename.endsWith('.ts') ? 'src' : 'lib';
|
||
|
plugin = require(`${plugin}/${libDir}/server`).default;
|
||
|
plugin = plugin.bind(this);
|
||
|
}
|
||
|
} else if (typeof pluginOption === 'function') {
|
||
|
plugin = pluginOption.bind(this);
|
||
|
}
|
||
|
await plugin(options);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
export default Application;
|