diff --git a/package-lock.json b/package-lock.json index 8006ba8..303f217 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2130,6 +2130,9 @@ "@rondo.dev/common": { "version": "file:packages/common" }, + "@rondo.dev/config": { + "version": "file:packages/config" + }, "@rondo.dev/image-upload": { "version": "file:packages/image-upload" }, diff --git a/package.json b/package.json index 20d8735..f4a8edd 100644 --- a/package.json +++ b/package.json @@ -11,7 +11,8 @@ "@rondo.dev/jsonrpc": "file:packages/jsonrpc", "@rondo.dev/scripts": "file:packages/scripts", "@rondo.dev/argparse": "file:packages/argparse", - "@rondo.dev/logger": "file:packages/logger" + "@rondo.dev/logger": "file:packages/logger", + "@rondo.dev/config": "file:packages/config" }, "devDependencies": { "@types/bcrypt": "^3.0.0", diff --git a/packages/config/config/default.yml b/packages/config/config/default.yml new file mode 100644 index 0000000..f68d030 --- /dev/null +++ b/packages/config/config/default.yml @@ -0,0 +1,2 @@ +app: + name: 'config-test' diff --git a/packages/config/jest.config.js b/packages/config/jest.config.js new file mode 100644 index 0000000..737dab0 --- /dev/null +++ b/packages/config/jest.config.js @@ -0,0 +1,16 @@ +module.exports = { + roots: [ + '/src' + ], + transform: { + '^.+\\.tsx?$': 'ts-jest' + }, + testRegex: '(/__tests__/.*|\\.(test|spec))\\.tsx?$', + moduleFileExtensions: [ + 'ts', + 'tsx', + 'js', + 'jsx' + ], + setupFiles: ['/jest.setup.js'] +} diff --git a/packages/config/jest.setup.js b/packages/config/jest.setup.js new file mode 100644 index 0000000..a952c9b --- /dev/null +++ b/packages/config/jest.setup.js @@ -0,0 +1,4 @@ +if (!process.env.LOG) { + process.env.LOG = 'sql:warn' +} +process.chdir(__dirname) diff --git a/packages/config/package-lock.json b/packages/config/package-lock.json new file mode 100644 index 0000000..66d3822 --- /dev/null +++ b/packages/config/package-lock.json @@ -0,0 +1,4 @@ +{ + "name": "@rondo.dev/config", + "lockfileVersion": 1 +} diff --git a/packages/config/package.json b/packages/config/package.json new file mode 100644 index 0000000..4bf7df5 --- /dev/null +++ b/packages/config/package.json @@ -0,0 +1,13 @@ +{ + "name": "@rondo.dev/config", + "private": true, + "scripts": { + "test": "jest", + "lint": "tslint --project .", + "compile": "tsc", + "clean": "rm -rf lib/" + }, + "dependencies": {}, + "main": "lib/index.js", + "types": "lib/index.d.ts" +} diff --git a/packages/server/src/config/Config.ts b/packages/config/src/Config.ts similarity index 100% rename from packages/server/src/config/Config.ts rename to packages/config/src/Config.ts diff --git a/packages/server/src/config/ConfigReader.test.ts b/packages/config/src/ConfigReader.test.ts similarity index 100% rename from packages/server/src/config/ConfigReader.test.ts rename to packages/config/src/ConfigReader.test.ts diff --git a/packages/server/src/config/ConfigReader.ts b/packages/config/src/ConfigReader.ts similarity index 81% rename from packages/server/src/config/ConfigReader.ts rename to packages/config/src/ConfigReader.ts index bb39594..61f5cfc 100644 --- a/packages/server/src/config/ConfigReader.ts +++ b/packages/config/src/ConfigReader.ts @@ -1,9 +1,9 @@ +import { readFileSync } from 'fs' import YAML from 'js-yaml' -import {Config} from './Config' -import {findPackageRoot} from '../files/Find' -import {join} from 'path' -import {readFileSync} from 'fs' -import {apiLogger} from '../logger' +import { join } from 'path' +import { Config } from './Config' +import { findPackageRoot } from './findPackageRoot' +import loggerFactory, {ILogger} from '@rondo.dev/logger' const isObject = (value: any) => value !== null && typeof value === 'object' @@ -14,8 +14,9 @@ export class ConfigReader { constructor( readonly path: string, - readonly cwd: string|undefined = process.cwd(), + readonly cwd: string | undefined = process.cwd(), readonly environment = 'CONFIG', + readonly logger: ILogger = loggerFactory.getLogger('config'), ) { const packageRoot = path && findPackageRoot(path) this.locations = packageRoot ? [packageRoot] : [] @@ -41,7 +42,7 @@ export class ConfigReader { } continue } - apiLogger.info('config: Found config file: %s', configFilename) + this.logger.info('config: Found config file: %s', configFilename) success += 1 } } @@ -52,12 +53,12 @@ export class ConfigReader { } if (filename) { - apiLogger.info('config: Reading extra config file: %s', filename) + this.logger.info('config: Reading extra config file: %s', filename) this.readFile(filename) } if (env) { - apiLogger.info('config: Parsing env variable: %s', this.environment) + this.logger.info('config: Parsing env variable: %s', this.environment) this.parse(env) } diff --git a/packages/server/src/files/Find.ts b/packages/config/src/findPackageRoot.ts similarity index 94% rename from packages/server/src/files/Find.ts rename to packages/config/src/findPackageRoot.ts index 6e04576..58dda20 100644 --- a/packages/server/src/files/Find.ts +++ b/packages/config/src/findPackageRoot.ts @@ -1,7 +1,7 @@ import {resolve, join} from 'path' import {statSync, Stats} from 'fs' -export function findNearestDirectory( +function findNearestDirectory( dir: string, filename: string, ) { let currentDir = dir diff --git a/packages/config/src/index.ts b/packages/config/src/index.ts new file mode 100644 index 0000000..e762812 --- /dev/null +++ b/packages/config/src/index.ts @@ -0,0 +1,4 @@ +export * from './Config' + +import {ConfigReader} from './ConfigReader' +export default ConfigReader diff --git a/packages/server/src/config/test-files/.gitignore b/packages/config/src/test-files/.gitignore similarity index 100% rename from packages/server/src/config/test-files/.gitignore rename to packages/config/src/test-files/.gitignore diff --git a/packages/server/src/config/test-files/config/default.yml b/packages/config/src/test-files/config/default.yml similarity index 100% rename from packages/server/src/config/test-files/config/default.yml rename to packages/config/src/test-files/config/default.yml diff --git a/packages/server/src/config/test-files/config/test.yml b/packages/config/src/test-files/config/test.yml similarity index 100% rename from packages/server/src/config/test-files/config/test.yml rename to packages/config/src/test-files/config/test.yml diff --git a/packages/config/tsconfig.json b/packages/config/tsconfig.json new file mode 100644 index 0000000..6f79b96 --- /dev/null +++ b/packages/config/tsconfig.json @@ -0,0 +1,10 @@ +{ + "extends": "../tsconfig.common.json", + "compilerOptions": { + "outDir": "lib", + "rootDir": "src" + }, + "references": [ + {"path": "../logger"} + ] +} diff --git a/packages/config/tslint.json b/packages/config/tslint.json new file mode 100644 index 0000000..1a7ba23 --- /dev/null +++ b/packages/config/tslint.json @@ -0,0 +1,10 @@ +{ + "extends": [ + "../tslint.json" + ], + "linterOptions": { + "exclude": [ + "src/migrations/*.ts" + ] + } +} diff --git a/packages/server/src/config.ts b/packages/server/src/config.ts index 7daaee4..88e9a94 100644 --- a/packages/server/src/config.ts +++ b/packages/server/src/config.ts @@ -1,4 +1,4 @@ -import {ConfigReader} from './config/index' +import ConfigReader from '@rondo.dev/config' import {IConfig} from './application' import URL from 'url' diff --git a/packages/server/src/config/index.ts b/packages/server/src/config/index.ts deleted file mode 100644 index 54e1315..0000000 --- a/packages/server/src/config/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -export * from './Config' -export * from './ConfigReader' diff --git a/packages/server/src/index.ts b/packages/server/src/index.ts index 05bdf28..c539ef1 100644 --- a/packages/server/src/index.ts +++ b/packages/server/src/index.ts @@ -1,5 +1,4 @@ export * from './application' -export * from './config/index' export * from './database' export * from './entities' export * from './error' diff --git a/packages/server/tsconfig.json b/packages/server/tsconfig.json index 900a17f..682d90f 100644 --- a/packages/server/tsconfig.json +++ b/packages/server/tsconfig.json @@ -7,6 +7,7 @@ "references": [ {"path": "../common"}, {"path": "../jsonrpc"}, - {"path": "../logger"} + {"path": "../logger"}, + {"path": "../config"} ] }