From 643b5e71a24d245e508865efe956c87f26ffca4a Mon Sep 17 00:00:00 2001 From: gxkl Date: Thu, 18 Apr 2024 14:18:57 +0800 Subject: [PATCH] fix: revert api to loadModuleConfig --- core/common-util/src/ModuleConfig.ts | 93 +++++----------------- core/common-util/test/ModuleConfig.test.ts | 46 +++++------ plugin/config/app.ts | 2 +- standalone/standalone/src/Runner.ts | 2 +- 4 files changed, 42 insertions(+), 101 deletions(-) diff --git a/core/common-util/src/ModuleConfig.ts b/core/common-util/src/ModuleConfig.ts index da728a0e..ca5d845d 100644 --- a/core/common-util/src/ModuleConfig.ts +++ b/core/common-util/src/ModuleConfig.ts @@ -35,20 +35,6 @@ export class ModuleConfigUtil { ModuleConfigUtil.configNames = configNames; } - public static moduleYamlPath(modulePath: string, env?: string): string { - if (env) { - return path.join(modulePath, `module.${env}.yml`); - } - return path.join(modulePath, 'module.yml'); - } - - public static moduleJsonPath(modulePath: string, env?: string): string { - if (env) { - return path.join(modulePath, `module.${env}.json`); - } - return path.join(modulePath, 'module.json'); - } - public static readModuleReference(baseDir: string, options?: ReadModuleReferenceOptions): readonly ModuleReference[] { // 1. module.json exits use module.json as module reference // 1. module.json not exits scan baseDir get package.json to find modules @@ -211,12 +197,18 @@ export class ModuleConfigUtil { return ModuleConfigUtil.getModuleName(pkg); } - public static async load(moduleDir: string, baseDir?: string): Promise { + public static async loadModuleConfig(moduleDir: string, baseDir?: string, env?: string): Promise { const modulePath = ModuleConfigUtil.resolveModuleDir(moduleDir, baseDir); - assert(ModuleConfigUtil.configNames, 'should setConfigNames before load module config'); + let configNames: string[]; + if (env) { + configNames = [ 'module', `module.${env}` ]; + } else { + // assert(ModuleConfigUtil.configNames, 'should setConfigNames before load module config'); + configNames = ModuleConfigUtil.configNames || [ 'module' ]; + } const target: ModuleConfig = {}; - for (const configName of ModuleConfigUtil.configNames) { + for (const configName of configNames) { let config = await ModuleConfigUtil.#loadOne(modulePath, configName); // both module.yml and module.default.yml are ok for default config if (configName === 'module.default' && !config) { @@ -230,24 +222,6 @@ export class ModuleConfigUtil { return target; } - // @deprecated use load instead - public static async loadModuleConfig(moduleDir: string, baseDir?: string, env?: string): Promise { - moduleDir = ModuleConfigUtil.resolveModuleDir(moduleDir, baseDir); - let defaultConfig = await ModuleConfigUtil.loadModuleYaml(moduleDir); - if (!defaultConfig) { - defaultConfig = await ModuleConfigUtil.loadModuleJson(moduleDir); - } - let envConfig: ModuleConfig | undefined; - if (env) { - envConfig = await ModuleConfigUtil.loadModuleYaml(moduleDir, env); - if (!envConfig) { - envConfig = await ModuleConfigUtil.loadModuleJson(moduleDir, env); - } - } - extend(true, defaultConfig, envConfig); - return defaultConfig; - } - static async #loadOne(moduleDir: string, configName: string): Promise { const yamlConfigPath = path.join(moduleDir, `${configName}.yml`); let config = await ModuleConfigUtil.#loadYaml(yamlConfigPath); @@ -258,11 +232,6 @@ export class ModuleConfigUtil { return config; } - private static async loadModuleJson(moduleDir: string, env?: string): Promise { - const moduleJsonPath = ModuleConfigUtil.moduleJsonPath(moduleDir, env); - return await ModuleConfigUtil.#loadJson(moduleJsonPath); - } - static async #loadJson(moduleJsonPath: string): Promise { const moduleJsonPathExists = await FSUtil.fileExists(moduleJsonPath); if (!moduleJsonPathExists) { @@ -273,11 +242,6 @@ export class ModuleConfigUtil { return moduleJson.config; } - private static async loadModuleYaml(moduleDir: string, env?: string): Promise { - const moduleYamlPath = ModuleConfigUtil.moduleYamlPath(moduleDir, env); - return await ModuleConfigUtil.#loadYaml(moduleYamlPath); - } - static async #loadYaml(moduleYamlPath: string): Promise { const moduleYamlPathExists = await FSUtil.fileExists(moduleYamlPath); if (!moduleYamlPathExists) { @@ -287,12 +251,18 @@ export class ModuleConfigUtil { return yaml.safeLoad(moduleYamlContent) as ModuleConfigUtil; } - public static loadSync(moduleDir: string, baseDir?: string): ModuleConfig { + public static loadModuleConfigSync(moduleDir: string, baseDir?: string, env?: string): ModuleConfig { const modulePath = ModuleConfigUtil.resolveModuleDir(moduleDir, baseDir); - assert(ModuleConfigUtil.configNames, 'should setConfigNames before load module config'); + let configNames: string[]; + if (env) { + configNames = [ 'module', `module.${env}` ]; + } else { + // assert(ModuleConfigUtil.configNames, 'should setConfigNames before load module config'); + configNames = ModuleConfigUtil.configNames || [ 'module' ]; + } const target: ModuleConfig = {}; - for (const configName of ModuleConfigUtil.configNames) { + for (const configName of configNames) { let config = ModuleConfigUtil.#loadOneSync(modulePath, configName); // both module.yml and module.default.yml are ok for default config if (configName === 'module.default' && !config) { @@ -306,23 +276,6 @@ export class ModuleConfigUtil { return target; } - // @deprecated use loadSync instead - public static loadModuleConfigSync(moduleDir: string, baseDir?: string, env?: string): ModuleConfig | undefined { - moduleDir = ModuleConfigUtil.resolveModuleDir(moduleDir, baseDir); - let defaultConfig = ModuleConfigUtil.loadModuleYamlSync(moduleDir); - if (!defaultConfig) { - defaultConfig = ModuleConfigUtil.loadModuleJsonSync(moduleDir); - } - let envConfig: ModuleConfig | undefined; - if (env) { - envConfig = ModuleConfigUtil.loadModuleYamlSync(moduleDir, env); - if (!envConfig) { - envConfig = ModuleConfigUtil.loadModuleJsonSync(moduleDir, env); - } - } - return extend(true, defaultConfig, envConfig); - } - static #loadOneSync(moduleDir: string, configName: string): ModuleConfig | undefined { const yamlConfigPath = path.join(moduleDir, `${configName}.yml`); let config = ModuleConfigUtil.#loadYamlSync(yamlConfigPath); @@ -333,11 +286,6 @@ export class ModuleConfigUtil { return config; } - private static loadModuleJsonSync(moduleDir: string, env?: string): ModuleConfig | undefined { - const moduleJsonPath = ModuleConfigUtil.moduleJsonPath(moduleDir, env); - return ModuleConfigUtil.#loadJsonSync(moduleJsonPath); - } - static #loadJsonSync(moduleJsonPath: string): ModuleConfig | undefined { const moduleJsonPathExists = fs.existsSync(moduleJsonPath); if (!moduleJsonPathExists) { @@ -348,11 +296,6 @@ export class ModuleConfigUtil { return moduleJson.config; } - private static loadModuleYamlSync(moduleDir: string, env?: string): ModuleConfig | undefined { - const moduleYamlPath = ModuleConfigUtil.moduleYamlPath(moduleDir, env); - return ModuleConfigUtil.#loadYamlSync(moduleYamlPath); - } - static #loadYamlSync(moduleYamlPath: string): ModuleConfig | undefined { const moduleYamlPathExists = fs.existsSync(moduleYamlPath); if (!moduleYamlPathExists) { diff --git a/core/common-util/test/ModuleConfig.test.ts b/core/common-util/test/ModuleConfig.test.ts index 8019cfd2..e1ebb747 100644 --- a/core/common-util/test/ModuleConfig.test.ts +++ b/core/common-util/test/ModuleConfig.test.ts @@ -4,6 +4,10 @@ import { ModuleConfigUtil } from '../src/ModuleConfig'; describe('test/ModuleConfig.test.ts', () => { describe('load yaml config', () => { + afterEach(() => { + ModuleConfigUtil.setConfigNames(undefined); + }); + it('should work', () => { const config = ModuleConfigUtil.loadModuleConfigSync(path.join(__dirname, './fixtures/modules/foo-yaml')); assert.deepStrictEqual(config, { mysql: { host: '127.0.0.1' } }); @@ -13,6 +17,24 @@ describe('test/ModuleConfig.test.ts', () => { const config = ModuleConfigUtil.loadModuleConfigSync(path.join(__dirname, './fixtures/modules/dev-module-config'), undefined, 'dev'); assert.deepStrictEqual(config, { mysql: { host: '127.0.0.1', port: 11306 } }); }); + + it('should load with configNames', async () => { + ModuleConfigUtil.setConfigNames([ 'module.default', 'module.dev' ]); + const config = await ModuleConfigUtil.loadModuleConfig(path.join(__dirname, './fixtures/modules/dev-module-config')); + const configSync = ModuleConfigUtil.loadModuleConfigSync(path.join(__dirname, './fixtures/modules/dev-module-config')); + assert.deepStrictEqual(config, { mysql: { host: '127.0.0.1', port: 11306 } }); + assert.deepStrictEqual(configSync, { mysql: { host: '127.0.0.1', port: 11306 } }); + }); + + // it('should throw error without initialization', async () => { + // await assert.rejects(async () => { + // await ModuleConfigUtil.loadModuleConfig(path.join(__dirname, './fixtures/modules/dev-module-config')); + // }, /should setConfigNames before load module config/); + // + // assert.throws(() => { + // ModuleConfigUtil.loadModuleConfigSync(path.join(__dirname, './fixtures/modules/dev-module-config')); + // }, /should setConfigNames before load module config/); + // }); }); describe('load module reference', () => { @@ -117,28 +139,4 @@ describe('test/ModuleConfig.test.ts', () => { }]); }); }); - - describe('load/loadSync', () => { - beforeEach(() => { - ModuleConfigUtil.setConfigNames(undefined); - }); - - it('should work', async () => { - ModuleConfigUtil.setConfigNames([ 'module.default', 'module.dev' ]); - const config = await ModuleConfigUtil.load(path.join(__dirname, './fixtures/modules/dev-module-config')); - const configSync = ModuleConfigUtil.loadSync(path.join(__dirname, './fixtures/modules/dev-module-config')); - assert.deepStrictEqual(config, { mysql: { host: '127.0.0.1', port: 11306 } }); - assert.deepStrictEqual(configSync, { mysql: { host: '127.0.0.1', port: 11306 } }); - }); - - it('should throw error without initialization', async () => { - await assert.rejects(async () => { - await ModuleConfigUtil.load(path.join(__dirname, './fixtures/modules/dev-module-config')); - }, /should setConfigNames before load module config/); - - assert.throws(() => { - ModuleConfigUtil.loadSync(path.join(__dirname, './fixtures/modules/dev-module-config')); - }, /should setConfigNames before load module config/); - }); - }); }); diff --git a/plugin/config/app.ts b/plugin/config/app.ts index d9e4dc26..e7520507 100644 --- a/plugin/config/app.ts +++ b/plugin/config/app.ts @@ -30,7 +30,7 @@ export default class App implements IBoot { this.app.moduleConfigs[moduleName] = { name: moduleName, reference: absoluteRef, - config: ModuleConfigUtil.loadSync(absoluteRef.path), + config: ModuleConfigUtil.loadModuleConfigSync(absoluteRef.path), }; } } diff --git a/standalone/standalone/src/Runner.ts b/standalone/standalone/src/Runner.ts index ac824909..aa5081a2 100644 --- a/standalone/standalone/src/Runner.ts +++ b/standalone/standalone/src/Runner.ts @@ -120,7 +120,7 @@ export class Runner { this.moduleConfigs[moduleName] = { name: moduleName, reference: absoluteRef, - config: ModuleConfigUtil.loadSync(absoluteRef.path), + config: ModuleConfigUtil.loadModuleConfigSync(absoluteRef.path), }; } for (const moduleConfig of Object.values(this.moduleConfigs)) {