egg
Version:
A web application framework for Node.js
59 lines (58 loc) • 1.29 kB
JavaScript
import assert from "node:assert/strict";
//#region src/lib/define.ts
/**
* Define configuration with type safety
* @example
* ```ts
* import { defineConfig } from 'egg';
*
* export default defineConfig({
* keys: 'my-keys',
* middleware: []
* });
* ```
*/
function defineConfig(config) {
return config;
}
/**
* Define configuration factory function with type safety
* @example
* ```ts
* export default defineConfigFactory((appInfo): PartialEggConfig => ({
* keys: appInfo.name + '_keys',
* middleware: []
* }));
* ```
*/
function defineConfigFactory(configFactory) {
return configFactory;
}
/**
* Define plugin factory with type safety
* @example
* ```ts
* import { definePluginFactory } from 'egg';
*
* export default definePluginFactory({
* name: 'my-plugin',
* enable: true,
* path: 'path/to/my-plugin',
* dependencies: ['watcher'],
* optionalDependencies: ['view'],
* env: ['local', 'unittest'],
* });
* ```
*/
function definePluginFactory(pluginMeta) {
assert(pluginMeta.name, "plugin name is required");
assert(pluginMeta.path, "plugin path is required");
return (options) => ({ [pluginMeta.name]: {
...pluginMeta,
...options,
name: pluginMeta.name,
skipMerge: true
} });
}
//#endregion
export { defineConfig, defineConfigFactory, definePluginFactory };