From e3f6e58149bb00c69fd962b195964bb05f93c149 Mon Sep 17 00:00:00 2001 From: gaoziheng Date: Wed, 19 Oct 2022 23:08:46 +0800 Subject: [PATCH] feat: add first version for generate command --- .eslintrc | 5 +- README.md | 243 +-------------------- example/config/framework.ts | 5 + example/config/plugin.default.ts | 8 + example/exception.json | 6 + example/exception/app.ts | 10 + example/exception/framework.ts | 10 + example/exception/pluginA.ts | 10 + example/exception/pluginB.ts | 10 + example/framework/config/plugin.default.ts | 8 + example/framework/exception.json | 6 + example/framework/meta.json | 3 + example/manifest.json | 60 +++++ example/plugin/a/exception.json | 6 + example/plugin/a/meta.json | 3 + example/plugin/b/exception.json | 6 + example/plugin/b/meta.json | 3 + package.json | 12 +- src/commands/generate.ts | 117 ++++++++++ src/utils/index.ts | 16 ++ test/commands/generate.test.ts | 17 ++ tsconfig.json | 3 +- yarn.lock | 34 ++- 23 files changed, 353 insertions(+), 248 deletions(-) create mode 100644 example/config/framework.ts create mode 100644 example/config/plugin.default.ts create mode 100644 example/exception.json create mode 100644 example/exception/app.ts create mode 100644 example/exception/framework.ts create mode 100644 example/exception/pluginA.ts create mode 100644 example/exception/pluginB.ts create mode 100644 example/framework/config/plugin.default.ts create mode 100644 example/framework/exception.json create mode 100644 example/framework/meta.json create mode 100644 example/manifest.json create mode 100644 example/plugin/a/exception.json create mode 100644 example/plugin/a/meta.json create mode 100644 example/plugin/b/exception.json create mode 100644 example/plugin/b/meta.json create mode 100644 src/commands/generate.ts create mode 100644 src/utils/index.ts create mode 100644 test/commands/generate.test.ts diff --git a/.eslintrc b/.eslintrc index 7b84619..af22201 100644 --- a/.eslintrc +++ b/.eslintrc @@ -2,5 +2,8 @@ "extends": [ "oclif", "oclif-typescript" - ] + ], + "rules": { + "unicorn/prefer-module": 0 + } } diff --git a/README.md b/README.md index 0163cac..f672a6e 100644 --- a/README.md +++ b/README.md @@ -22,7 +22,7 @@ $ npm install -g exception-generator $ artus-exception-generator COMMAND running command... $ artus-exception-generator (--version) -exception-generator/0.0.0 darwin-x64 node-v16.17.1 +exception-generator/0.0.1 darwin-x64 node-v16.17.1 $ artus-exception-generator --help [COMMAND] USAGE $ artus-exception-generator COMMAND @@ -34,15 +34,6 @@ USAGE * [`artus-exception-generator hello PERSON`](#artus-exception-generator-hello-person) * [`artus-exception-generator hello world`](#artus-exception-generator-hello-world) * [`artus-exception-generator help [COMMAND]`](#artus-exception-generator-help-command) -* [`artus-exception-generator plugins`](#artus-exception-generator-plugins) -* [`artus-exception-generator plugins:install PLUGIN...`](#artus-exception-generator-pluginsinstall-plugin) -* [`artus-exception-generator plugins:inspect PLUGIN...`](#artus-exception-generator-pluginsinspect-plugin) -* [`artus-exception-generator plugins:install PLUGIN...`](#artus-exception-generator-pluginsinstall-plugin-1) -* [`artus-exception-generator plugins:link PLUGIN`](#artus-exception-generator-pluginslink-plugin) -* [`artus-exception-generator plugins:uninstall PLUGIN...`](#artus-exception-generator-pluginsuninstall-plugin) -* [`artus-exception-generator plugins:uninstall PLUGIN...`](#artus-exception-generator-pluginsuninstall-plugin-1) -* [`artus-exception-generator plugins:uninstall PLUGIN...`](#artus-exception-generator-pluginsuninstall-plugin-2) -* [`artus-exception-generator plugins update`](#artus-exception-generator-plugins-update) ## `artus-exception-generator hello PERSON` @@ -66,7 +57,7 @@ EXAMPLES hello friend from oclif! (./src/commands/hello/index.ts) ``` -_See code: [dist/commands/hello/index.ts](https://github.com/artusjs/exception-generator/blob/v0.0.0/dist/commands/hello/index.ts)_ +_See code: [dist/commands/hello/index.ts](https://github.com/artusjs/exception-generator/blob/v0.0.1/dist/commands/hello/index.ts)_ ## `artus-exception-generator hello world` @@ -103,234 +94,4 @@ DESCRIPTION ``` _See code: [@oclif/plugin-help](https://github.com/oclif/plugin-help/blob/v5.1.15/src/commands/help.ts)_ - -## `artus-exception-generator plugins` - -List installed plugins. - -``` -USAGE - $ artus-exception-generator plugins [--core] - -FLAGS - --core Show core plugins. - -DESCRIPTION - List installed plugins. - -EXAMPLES - $ artus-exception-generator plugins -``` - -_See code: [@oclif/plugin-plugins](https://github.com/oclif/plugin-plugins/blob/v2.1.2/src/commands/plugins/index.ts)_ - -## `artus-exception-generator plugins:install PLUGIN...` - -Installs a plugin into the CLI. - -``` -USAGE - $ artus-exception-generator plugins:install PLUGIN... - -ARGUMENTS - PLUGIN Plugin to install. - -FLAGS - -f, --force Run yarn install with force flag. - -h, --help Show CLI help. - -v, --verbose - -DESCRIPTION - Installs a plugin into the CLI. - Can be installed from npm or a git url. - - Installation of a user-installed plugin will override a core plugin. - - e.g. If you have a core plugin that has a 'hello' command, installing a user-installed plugin with a 'hello' command - will override the core plugin implementation. This is useful if a user needs to update core plugin functionality in - the CLI without the need to patch and update the whole CLI. - - -ALIASES - $ artus-exception-generator plugins add - -EXAMPLES - $ artus-exception-generator plugins:install myplugin - - $ artus-exception-generator plugins:install https://github.com/someuser/someplugin - - $ artus-exception-generator plugins:install someuser/someplugin -``` - -## `artus-exception-generator plugins:inspect PLUGIN...` - -Displays installation properties of a plugin. - -``` -USAGE - $ artus-exception-generator plugins:inspect PLUGIN... - -ARGUMENTS - PLUGIN [default: .] Plugin to inspect. - -FLAGS - -h, --help Show CLI help. - -v, --verbose - -DESCRIPTION - Displays installation properties of a plugin. - -EXAMPLES - $ artus-exception-generator plugins:inspect myplugin -``` - -## `artus-exception-generator plugins:install PLUGIN...` - -Installs a plugin into the CLI. - -``` -USAGE - $ artus-exception-generator plugins:install PLUGIN... - -ARGUMENTS - PLUGIN Plugin to install. - -FLAGS - -f, --force Run yarn install with force flag. - -h, --help Show CLI help. - -v, --verbose - -DESCRIPTION - Installs a plugin into the CLI. - Can be installed from npm or a git url. - - Installation of a user-installed plugin will override a core plugin. - - e.g. If you have a core plugin that has a 'hello' command, installing a user-installed plugin with a 'hello' command - will override the core plugin implementation. This is useful if a user needs to update core plugin functionality in - the CLI without the need to patch and update the whole CLI. - - -ALIASES - $ artus-exception-generator plugins add - -EXAMPLES - $ artus-exception-generator plugins:install myplugin - - $ artus-exception-generator plugins:install https://github.com/someuser/someplugin - - $ artus-exception-generator plugins:install someuser/someplugin -``` - -## `artus-exception-generator plugins:link PLUGIN` - -Links a plugin into the CLI for development. - -``` -USAGE - $ artus-exception-generator plugins:link PLUGIN - -ARGUMENTS - PATH [default: .] path to plugin - -FLAGS - -h, --help Show CLI help. - -v, --verbose - -DESCRIPTION - Links a plugin into the CLI for development. - Installation of a linked plugin will override a user-installed or core plugin. - - e.g. If you have a user-installed or core plugin that has a 'hello' command, installing a linked plugin with a 'hello' - command will override the user-installed or core plugin implementation. This is useful for development work. - - -EXAMPLES - $ artus-exception-generator plugins:link myplugin -``` - -## `artus-exception-generator plugins:uninstall PLUGIN...` - -Removes a plugin from the CLI. - -``` -USAGE - $ artus-exception-generator plugins:uninstall PLUGIN... - -ARGUMENTS - PLUGIN plugin to uninstall - -FLAGS - -h, --help Show CLI help. - -v, --verbose - -DESCRIPTION - Removes a plugin from the CLI. - -ALIASES - $ artus-exception-generator plugins unlink - $ artus-exception-generator plugins remove -``` - -## `artus-exception-generator plugins:uninstall PLUGIN...` - -Removes a plugin from the CLI. - -``` -USAGE - $ artus-exception-generator plugins:uninstall PLUGIN... - -ARGUMENTS - PLUGIN plugin to uninstall - -FLAGS - -h, --help Show CLI help. - -v, --verbose - -DESCRIPTION - Removes a plugin from the CLI. - -ALIASES - $ artus-exception-generator plugins unlink - $ artus-exception-generator plugins remove -``` - -## `artus-exception-generator plugins:uninstall PLUGIN...` - -Removes a plugin from the CLI. - -``` -USAGE - $ artus-exception-generator plugins:uninstall PLUGIN... - -ARGUMENTS - PLUGIN plugin to uninstall - -FLAGS - -h, --help Show CLI help. - -v, --verbose - -DESCRIPTION - Removes a plugin from the CLI. - -ALIASES - $ artus-exception-generator plugins unlink - $ artus-exception-generator plugins remove -``` - -## `artus-exception-generator plugins update` - -Update installed plugins. - -``` -USAGE - $ artus-exception-generator plugins update [-h] [-v] - -FLAGS - -h, --help Show CLI help. - -v, --verbose - -DESCRIPTION - Update installed plugins. -``` diff --git a/example/config/framework.ts b/example/config/framework.ts new file mode 100644 index 0000000..b1e7cec --- /dev/null +++ b/example/config/framework.ts @@ -0,0 +1,5 @@ +import path from 'node:path' + +export default { + path: path.resolve(__dirname, '../framework'), +} diff --git a/example/config/plugin.default.ts b/example/config/plugin.default.ts new file mode 100644 index 0000000..62b3b5f --- /dev/null +++ b/example/config/plugin.default.ts @@ -0,0 +1,8 @@ +import path from 'node:path' + +export default { + a: { + enable: true, + path: path.resolve(__dirname, '../plugin/a'), + }, +} diff --git a/example/exception.json b/example/exception.json new file mode 100644 index 0000000..4614a97 --- /dev/null +++ b/example/exception.json @@ -0,0 +1,6 @@ +{ + "APP:TEST": { + "desc": "This is a test error", + "detailUrl": "https://github.com/artusjs" + } +} diff --git a/example/exception/app.ts b/example/exception/app.ts new file mode 100644 index 0000000..ed12750 --- /dev/null +++ b/example/exception/app.ts @@ -0,0 +1,10 @@ +// THIS FILE IS AUTO-GENERATED BY ARTUS EXCEPTION GENERATOR +import { ArtusStdError } from '@artus/core'; + +export class TestError extends ArtusStdError { + static code = 'APP:TEST'; + name = 'TestError'; + constructor() { + super(TestError.code); + } +} diff --git a/example/exception/framework.ts b/example/exception/framework.ts new file mode 100644 index 0000000..01d51ae --- /dev/null +++ b/example/exception/framework.ts @@ -0,0 +1,10 @@ +// THIS FILE IS AUTO-GENERATED BY ARTUS EXCEPTION GENERATOR +import { ArtusStdError } from '@artus/core'; + +export class TestError extends ArtusStdError { + static code = 'FRAMEWORK:TEST'; + name = 'TestError'; + constructor() { + super(TestError.code); + } +} diff --git a/example/exception/pluginA.ts b/example/exception/pluginA.ts new file mode 100644 index 0000000..5008540 --- /dev/null +++ b/example/exception/pluginA.ts @@ -0,0 +1,10 @@ +// THIS FILE IS AUTO-GENERATED BY ARTUS EXCEPTION GENERATOR +import { ArtusStdError } from '@artus/core'; + +export class TestError extends ArtusStdError { + static code = 'PLUGIN_A:TEST'; + name = 'TestError'; + constructor() { + super(TestError.code); + } +} diff --git a/example/exception/pluginB.ts b/example/exception/pluginB.ts new file mode 100644 index 0000000..0abdc95 --- /dev/null +++ b/example/exception/pluginB.ts @@ -0,0 +1,10 @@ +// THIS FILE IS AUTO-GENERATED BY ARTUS EXCEPTION GENERATOR +import { ArtusStdError } from '@artus/core'; + +export class TestError extends ArtusStdError { + static code = 'PLUGIN_B:TEST'; + name = 'TestError'; + constructor() { + super(TestError.code); + } +} diff --git a/example/framework/config/plugin.default.ts b/example/framework/config/plugin.default.ts new file mode 100644 index 0000000..46e33bc --- /dev/null +++ b/example/framework/config/plugin.default.ts @@ -0,0 +1,8 @@ +import path from 'node:path' + +export default { + b: { + enable: true, + path: path.resolve(__dirname, '../../plugin/b'), + }, +} diff --git a/example/framework/exception.json b/example/framework/exception.json new file mode 100644 index 0000000..63df419 --- /dev/null +++ b/example/framework/exception.json @@ -0,0 +1,6 @@ +{ + "FRAMEWORK:TEST": { + "desc": "This is a test error", + "detailUrl": "https://github.com/artusjs" + } +} diff --git a/example/framework/meta.json b/example/framework/meta.json new file mode 100644 index 0000000..b5d2dde --- /dev/null +++ b/example/framework/meta.json @@ -0,0 +1,3 @@ +{ + "name": "framework" +} diff --git a/example/manifest.json b/example/manifest.json new file mode 100644 index 0000000..e53397a --- /dev/null +++ b/example/manifest.json @@ -0,0 +1,60 @@ +{ + "default": { + "pluginConfig": { + "b": { + "enable": true, + "path": "plugin/b" + }, + "a": { + "enable": true, + "path": "plugin/a" + } + }, + "items": [ + { + "path": "framework/exception", + "extname": ".json", + "filename": "exception.json", + "loader": "exception", + "source": "framework", + "loaderState": { + "exportNames": [] + }, + "unitName": "/Users/bytedance/Code/github.com/artusjs/exception-generator/example/framework" + }, + { + "path": "plugin/b/exception", + "extname": ".json", + "filename": "exception.json", + "loader": "exception", + "source": "plugin", + "loaderState": { + "exportNames": [] + }, + "unitName": "b" + }, + { + "path": "plugin/a/exception", + "extname": ".json", + "filename": "exception.json", + "loader": "exception", + "source": "plugin", + "loaderState": { + "exportNames": [] + }, + "unitName": "a" + }, + { + "path": "exception", + "extname": ".json", + "filename": "exception.json", + "loader": "exception", + "source": "app", + "loaderState": { + "exportNames": [] + } + } + ], + "relative": true + } +} \ No newline at end of file diff --git a/example/plugin/a/exception.json b/example/plugin/a/exception.json new file mode 100644 index 0000000..baa14b2 --- /dev/null +++ b/example/plugin/a/exception.json @@ -0,0 +1,6 @@ +{ + "PLUGIN_A:TEST": { + "desc": "This is a test error", + "detailUrl": "https://github.com/artusjs" + } +} diff --git a/example/plugin/a/meta.json b/example/plugin/a/meta.json new file mode 100644 index 0000000..44d21f1 --- /dev/null +++ b/example/plugin/a/meta.json @@ -0,0 +1,3 @@ +{ + "name": "a" +} diff --git a/example/plugin/b/exception.json b/example/plugin/b/exception.json new file mode 100644 index 0000000..0816170 --- /dev/null +++ b/example/plugin/b/exception.json @@ -0,0 +1,6 @@ +{ + "PLUGIN_B:TEST": { + "desc": "This is a test error", + "detailUrl": "https://github.com/artusjs" + } +} diff --git a/example/plugin/b/meta.json b/example/plugin/b/meta.json new file mode 100644 index 0000000..bbe7ab8 --- /dev/null +++ b/example/plugin/b/meta.json @@ -0,0 +1,3 @@ +{ + "name": "b" +} diff --git a/package.json b/package.json index 5e7bd6b..07a81a6 100644 --- a/package.json +++ b/package.json @@ -17,9 +17,12 @@ "/oclif.manifest.json" ], "dependencies": { + "@artus/core": "^1.0.0-beta.31", "@oclif/core": "^1.18.0", "@oclif/plugin-help": "^5", - "@oclif/plugin-plugins": "^2.1.2" + "@oclif/plugin-plugins": "^2.1.2", + "ts-node": "^10.9.1", + "reflect-metadata": "^0.1.13" }, "devDependencies": { "@oclif/test": "^2.2.3", @@ -33,7 +36,6 @@ "mocha": "^9", "oclif": "^3", "shx": "^0.3.3", - "ts-node": "^10.9.1", "tslib": "^2.3.1", "typescript": "^4.8.4" }, @@ -42,13 +44,15 @@ "dirname": "artus-exception-generator", "commands": "./dist/commands", "plugins": [ - "@oclif/plugin-help", - "@oclif/plugin-plugins" + "@oclif/plugin-help" ], "topicSeparator": " ", "topics": { "hello": { "description": "Say hello to the world and others" + }, + "generate": { + "description": "Generate exception class from your project" } } }, diff --git a/src/commands/generate.ts b/src/commands/generate.ts new file mode 100644 index 0000000..653e5ba --- /dev/null +++ b/src/commands/generate.ts @@ -0,0 +1,117 @@ +import 'reflect-metadata' +import {ExceptionItem, Scanner} from '@artus/core' +import {Command, Flags} from '@oclif/core' +import path from 'node:path' +import 'ts-node/register' +import {mkdir, unlink, writeFile} from 'node:fs/promises' +import {toLowerCamelCase, toUpperCamelCase} from '../utils' + +export interface ErrorCodeItem { + code: string; + className: string; +} + +const errorClassTemplate = (codeItem: ErrorCodeItem) => + `export class ${codeItem.className} extends ArtusStdError { + static code = '${codeItem.code}'; + name = '${codeItem.className}'; + constructor() { + super(${codeItem.className}.code); + } +} +` + +export default class Generate extends Command { + static description = 'describe the command here' + + static examples = [ + '<%= config.bin %> <%= command.id %>', + ] + + static flags = { + outputDir: Flags.string({ + char: 'o', + description: 'directory to output', + default: './exception', + }), + configDir: Flags.string({ + char: 'c', + description: 'directory to store config', + default: 'config', + }), + postfix: Flags.string({ + description: 'add to the end of all class name', + default: 'Error', + }), + force: Flags.boolean({ + char: 'f', + description: 'will remove output dir before generate', + default: false, + }), + } + + static args = [{ + name: 'projectDir', + default: '.', + }] + + private resolvePath(val: string): string { + return path.resolve(process.cwd(), val) + } + + public async run(): Promise { + const {args, flags} = await this.parse(Generate) + + const projectDir = this.resolvePath(args.projectDir) + const configDir = flags.configDir + const outputDir = this.resolvePath(flags.outputDir) + const postfix = flags.postfix + const force = flags.force + + if (force) { + await unlink(outputDir) + } + + await mkdir(outputDir, { + recursive: true, + }) + + const scanner = new Scanner({ + configDir, + loaderListGenerator: () => ['exception'], + extensions: ['.ts', '.js', '.json'], + }) + const codeMap: Record = {} + try { + const manifestMap = await scanner.scan(projectDir) + for (const manifest of Object.values(manifestMap)) { + for (const manifestItem of manifest.items) { + const exceptionMap: Record = require(path.resolve(projectDir, manifestItem.path + '.json')) + const codeList = Object.keys(exceptionMap) + for (const code of codeList) { + const [originalNamespace, originalCode] = code.split(':') + const className = toUpperCamelCase(originalCode) + postfix + const namespace = toLowerCamelCase(originalNamespace) + codeMap[namespace] = codeMap[namespace] ?? [] + codeMap[namespace].push({ + code, + className, + }) + } + } + } + + const result: Promise[] = [] + for (const [namespace, codeItemList] of Object.entries(codeMap)) { + let content = '// THIS FILE IS AUTO-GENERATED BY ARTUS EXCEPTION GENERATOR\n' + content += 'import { ArtusStdError } from \'@artus/core\';\n\n' + content += codeItemList.map(item => errorClassTemplate(item)).join('\n') + result.push(writeFile(path.resolve(outputDir, `${namespace}.ts`), content)) + } + + await Promise.all(result) + } catch (error) { + console.error(error) + } + } +} diff --git a/src/utils/index.ts b/src/utils/index.ts new file mode 100644 index 0000000..4f3e22f --- /dev/null +++ b/src/utils/index.ts @@ -0,0 +1,16 @@ +const upperFirstCase = (val: string) => { + return val[0].toUpperCase() + val.slice(1).toLowerCase() +} + +const splitCodeString = (val: string): string[] => { + return val.split(/[._-]/g) +} + +export const toLowerCamelCase = (val: string): string => { + const codeStringArr = splitCodeString(val) + return codeStringArr[0].toLowerCase() + codeStringArr.slice(1).map(v => upperFirstCase(v)).join('') +} + +export const toUpperCamelCase = (val: string): string => { + return splitCodeString(val).map(v => upperFirstCase(v)).join('') +} diff --git a/test/commands/generate.test.ts b/test/commands/generate.test.ts new file mode 100644 index 0000000..6d99c36 --- /dev/null +++ b/test/commands/generate.test.ts @@ -0,0 +1,17 @@ +import {expect, test} from '@oclif/test' + +describe('generate', () => { + test + .stdout() + .command(['generate']) + .it('runs hello', ctx => { + expect(ctx.stdout).to.contain('hello world') + }) + + test + .stdout() + .command(['generate', '--name', 'jeff']) + .it('runs hello --name jeff', ctx => { + expect(ctx.stdout).to.contain('hello jeff') + }) +}) diff --git a/tsconfig.json b/tsconfig.json index 34727db..b26128f 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -6,7 +6,8 @@ "outDir": "dist", "rootDir": "src", "strict": true, - "target": "es2019" + "target": "es2019", + "esModuleInterop": true }, "include": [ "src/**/*" diff --git a/yarn.lock b/yarn.lock index 0c154ad..857e534 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,6 +2,28 @@ # yarn lockfile v1 +"@artus/core@^1.0.0-beta.31": + version "1.0.0-beta.31" + resolved "http://bnpm.byted.org/@artus/core/-/core-1.0.0-beta.31.tgz#c334b8c8ecc0351b3a97fde46ebb9261f8f003f5" + integrity sha512-e5TJmdEGkNZzLYVsDSH/lO95UGBQUtP/7TZfrg1hxnZpR8zy83p0k9R55qTVtFyXBMKvFJ1Nmb5eyxXV1Tiv1Q== + dependencies: + "@artus/injection" "^0.5.1" + "@artus/pipeline" "^0.2.2" + deepmerge "^4.2.2" + minimatch "^5.0.1" + +"@artus/injection@^0.5.1": + version "0.5.1" + resolved "http://bnpm.byted.org/@artus/injection/-/injection-0.5.1.tgz#3949fda057cd9399dd013410404d619fab7bd455" + integrity sha512-JFPBUTi3JhIkEx3xn6Wl+WZrpIs8OZr3o39qfJ0r8ocqTzwmCKabnXqMsY16bMxfStDpL6HKgdoitU7yNsE0EA== + +"@artus/pipeline@^0.2.2": + version "0.2.2" + resolved "http://bnpm.byted.org/@artus/pipeline/-/pipeline-0.2.2.tgz#d054ba0635dff6f8252b3c43f52d6e5c999702bd" + integrity sha512-TGiBBEnwfh4vdVoRxgcrAbEeppSxzX6l4UxEpIIUsr2eMYIJisAwRlx9F3gEtX706O9oJAbpv4eQUNkHQSnMyQ== + dependencies: + tslib "^2.3.1" + "@babel/code-frame@7.12.11": version "7.12.11" resolved "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz" @@ -1630,6 +1652,11 @@ deep-is@^0.1.3: resolved "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz" integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== +deepmerge@^4.2.2: + version "4.2.2" + resolved "http://bnpm.byted.org/deepmerge/-/deepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955" + integrity sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg== + defaults@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/defaults/-/defaults-1.0.3.tgz#c656051e9817d9ff08ed881477f3fe4019f3ef7d" @@ -4242,6 +4269,11 @@ redeyed@~2.1.0: dependencies: esprima "~4.0.0" +reflect-metadata@^0.1.13: + version "0.1.13" + resolved "http://bnpm.byted.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz#67ae3ca57c972a2aa1642b10fe363fe32d49dc08" + integrity sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg== + regexp-tree@^0.1.23, regexp-tree@~0.1.1: version "0.1.24" resolved "https://registry.npmjs.org/regexp-tree/-/regexp-tree-0.1.24.tgz" @@ -4870,7 +4902,7 @@ treeverse@^1.0.4: ts-node@^10.9.1: version "10.9.1" - resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-10.9.1.tgz#e73de9102958af9e1f0b168a6ff320e25adcff4b" + resolved "http://bnpm.byted.org/ts-node/-/ts-node-10.9.1.tgz#e73de9102958af9e1f0b168a6ff320e25adcff4b" integrity sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw== dependencies: "@cspotcode/source-map-support" "^0.8.0"