From 321809716f16cce8245ff70c3611b8e859ca6b7e Mon Sep 17 00:00:00 2001 From: kamiazya Date: Wed, 25 Aug 2021 00:50:59 +0900 Subject: [PATCH] refactor: add core module clode #133 close #108 close #98 close #61 --- package.json | 2 +- packages/cli/rollup.config.js | 2 +- packages/cli/src/rediagramc.ts | 14 +--- packages/common/package.json | 10 ++- packages/common/rollup.config.js | 2 +- packages/common/src/config/beta1.ts | 38 +++++++++ packages/common/src/config/default.ts | 17 ++++ packages/common/src/config/index.ts | 103 +------------------------ packages/common/src/config/types.ts | 16 ++++ packages/common/src/config/utils.ts | 17 ++++ packages/common/src/index.ts | 1 + packages/common/src/rediagram/core.ts | 75 ++++++++++++++++++ packages/common/src/rediagram/index.ts | 2 + packages/common/src/rediagram/types.ts | 16 ++++ packages/rediagram/src/core.ts | 3 + packages/rediagram/src/formats.ts | 86 ++++++++------------- packages/rediagram/src/index.ts | 1 + yarn.lock | 68 +++++++++++++++- 18 files changed, 301 insertions(+), 172 deletions(-) create mode 100644 packages/common/src/config/beta1.ts create mode 100644 packages/common/src/config/default.ts create mode 100644 packages/common/src/config/types.ts create mode 100644 packages/common/src/config/utils.ts create mode 100644 packages/common/src/rediagram/core.ts create mode 100644 packages/common/src/rediagram/index.ts create mode 100644 packages/common/src/rediagram/types.ts create mode 100644 packages/rediagram/src/core.ts diff --git a/package.json b/package.json index ae5e8723..b65066ba 100644 --- a/package.json +++ b/package.json @@ -14,7 +14,7 @@ "lerna": "lerna", "test": "jest", "prebuild": "lerna run --parallel clean", - "build": "yarn workspace @rediagram/common build && yarn workspace create-rediagram-project build && yarn workspace @rediagram/cdk build && yarn workspace @rediagram/cli build && yarn workspace rediagram build && yarn workspace @rediagram/aws build && yarn workspace @rediagram/gcp build && yarn workspace @rediagram/firebase build", + "build": "yarn workspace @rediagram/common build && yarn workspace create-rediagram-project build && yarn workspace @rediagram/cdk build && yarn workspace rediagram build && yarn workspace @rediagram/cli build && yarn workspace @rediagram/aws build && yarn workspace @rediagram/gcp build && yarn workspace @rediagram/firebase build", "prewatch": "yarn build", "watch": "lerna run --parallel watch", "rediagram": "yarn workspace @rediagram/cli start", diff --git a/packages/cli/rollup.config.js b/packages/cli/rollup.config.js index a2fc29d8..8654aaf9 100644 --- a/packages/cli/rollup.config.js +++ b/packages/cli/rollup.config.js @@ -8,6 +8,6 @@ export default { file: './lib/rediagramc.js', }, ], - external: ['commander', 'fast-glob', 'path', 'fs', 'sucrase/dist/register', '@rediagram/common', 'chokidar'], + external: ['commander', 'fast-glob', 'path', 'fs', 'sucrase/dist/register', 'rediagram', 'chokidar'], plugins: [typescript()], }; diff --git a/packages/cli/src/rediagramc.ts b/packages/cli/src/rediagramc.ts index 52d8c628..58d9025f 100644 --- a/packages/cli/src/rediagramc.ts +++ b/packages/cli/src/rediagramc.ts @@ -1,23 +1,15 @@ import cmd from 'commander'; import glob from 'fast-glob'; import chokidar from 'chokidar'; -import { CONFIG } from '@rediagram/common'; +import { Rediagram } from 'rediagram'; import { registerAll } from 'sucrase/dist/register'; -import path from 'path'; import pkg from './pkg'; type Options = { watch: boolean; }; -function runRediagram(src: string) { - // eslint-disable-next-line no-console - console.log(src); - const resolved = path.resolve(src); - // eslint-disable-next-line global-require, import/no-dynamic-require - require(resolved); - delete require.cache[resolved]; -} +const runRediagram = Rediagram.run.bind(Rediagram); cmd .name('rediagramc') @@ -29,7 +21,7 @@ cmd const paths = pattarns.length >= 1 ? pattarns - : [...CONFIG.scope.getIncludesPattarns(), ...CONFIG.scope.getExcludesPattarns().map((p) => `!${p}`)]; + : [...Rediagram.config.scope.includes, ...Rediagram.config.scope.excludes.map((p) => `!${p}`)]; if (this.watch) { chokidar.watch(paths).on('add', runRediagram).on('change', runRediagram); } else { diff --git a/packages/common/package.json b/packages/common/package.json index ae25ffd7..6c462a48 100644 --- a/packages/common/package.json +++ b/packages/common/package.json @@ -27,14 +27,18 @@ "build": "rollup -c && prettier --write './lib/*'", "watch": "tsc --watch" }, + "dependencies": { + "@ts-graphviz/node": "^0.4.0", + "@ts-graphviz/react": "^0.9.0", + "cosmiconfig": "^7.0.1", + "fs-extra": "^10.0.0", + "tslog": "^3.2.1" + }, "devDependencies": { "rollup": "^2.55.0", "rollup-plugin-delete": "^2.0.0", "rollup-plugin-dts": "^3.0.2", "rollup-plugin-typescript2": "^0.30.0", "typescript": "^4.0.2" - }, - "dependencies": { - "cosmiconfig": "^7.0.0" } } diff --git a/packages/common/rollup.config.js b/packages/common/rollup.config.js index 096b0384..8c5e8c99 100644 --- a/packages/common/rollup.config.js +++ b/packages/common/rollup.config.js @@ -12,7 +12,7 @@ const options = [ file: './lib/index.js', }, ], - external: ['path', 'cosmiconfig'], + external: ['path', 'cosmiconfig', 'fs-extra', 'tslog', '@ts-graphviz/react', '@ts-graphviz/node'], plugins: [typescript()], }, { diff --git a/packages/common/src/config/beta1.ts b/packages/common/src/config/beta1.ts new file mode 100644 index 00000000..361f2f86 --- /dev/null +++ b/packages/common/src/config/beta1.ts @@ -0,0 +1,38 @@ +/* eslint-disable @typescript-eslint/no-namespace */ +import path from 'path'; +import { Format } from '@ts-graphviz/node'; +import { RediagramGlobalConfig } from './types'; + +export namespace beta1 { + export const version = 'beta1'; + + interface Config { + version: typeof version; + includes?: string[]; + excludes?: string[]; + output?: { + dir?: string; + type?: Format; + }; + dot?: { + timeout?: number; + }; + } + + export function load(filepath: string, data: Config): RediagramGlobalConfig { + return { + filepath, + output: { + dir: path.resolve(path.dirname(filepath), data.output?.dir ?? '.'), + format: data.output?.type ?? 'png', + }, + scope: { + includes: data.includes ?? ['**/*.rediagram.{jsx,tsx}'], + excludes: data.excludes ?? ['**/node_modules/**/*'], + }, + dot: { + timeout: data.dot?.timeout ?? 10_000, + }, + }; + } +} diff --git a/packages/common/src/config/default.ts b/packages/common/src/config/default.ts new file mode 100644 index 00000000..0af1b108 --- /dev/null +++ b/packages/common/src/config/default.ts @@ -0,0 +1,17 @@ +import { RediagramGlobalConfig } from './types'; + +export function createDefaultConfig(): RediagramGlobalConfig { + return { + filepath: null, + scope: { + includes: ['**/*.rediagram.{jsx,tsx}'], + excludes: ['**/node_modules/**/*'], + }, + output: { + format: 'png', + }, + dot: { + timeout: 10_000, + }, + }; +} diff --git a/packages/common/src/config/index.ts b/packages/common/src/config/index.ts index 385c52cd..0851813d 100644 --- a/packages/common/src/config/index.ts +++ b/packages/common/src/config/index.ts @@ -1,99 +1,4 @@ -/* eslint-disable @typescript-eslint/no-var-requires */ -/* eslint-disable import/no-dynamic-require */ -/* eslint-disable global-require */ -/* eslint-disable @typescript-eslint/ban-types */ -/* eslint-disable @typescript-eslint/no-namespace */ -/* eslint-disable no-useless-constructor */ -/* eslint-disable max-classes-per-file */ -import path from 'path'; -import { cosmiconfigSync } from 'cosmiconfig'; -import { Beta1 } from './version'; - -export class OutputConfig { - constructor(private readonly data?: { dir?: string }) {} - - public getDir(): string { - return this.data?.dir ?? process.cwd(); - } -} - -export class ScopeConfig { - constructor(private readonly data?: { includes?: string[]; excludes?: string[] }) {} - - public getIncludesPattarns(): string[] { - return this.data?.includes ?? ['**/*.rediagram.{jsx,tsx}']; - } - - public getExcludesPattarns(): string[] { - return this.data?.excludes ?? ['**/node_modules/**/*']; - } -} - -export class DotConfig { - constructor(private readonly data?: { timeout?: number }) {} - - public getTimeout(): number { - return this.data?.timeout ?? 10_000; - } -} - -export type RediagramGlobalConfig = { - readonly filepath: string | null; - readonly output: OutputConfig; - readonly scope: ScopeConfig; - readonly dot: DotConfig; -}; - -const MODULE_NAME = 'rediagram'; - -function createDefaultConfig(): RediagramGlobalConfig { - return { - filepath: null, - scope: new ScopeConfig(), - output: new OutputConfig(), - dot: new DotConfig(), - }; -} - -namespace beta1 { - type Config = { - version: Beta1; - includes?: string[]; - excludes?: string[]; - output?: { - dir?: string; - }; - dot?: { - timeout?: number; - }; - }; - - export function load(filepath: string, data: Config): RediagramGlobalConfig { - return { - filepath, - output: new OutputConfig({ - dir: path.resolve(path.dirname(filepath), data.output?.dir ?? '.'), - }), - scope: new ScopeConfig({ - includes: data.includes, - excludes: data.excludes, - }), - dot: new DotConfig({ - timeout: data.dot?.timeout, - }), - }; - } -} - -function loadConfig(): RediagramGlobalConfig { - const { search } = cosmiconfigSync(MODULE_NAME); - const result = search(); - if (result !== null) { - if (result.config.version === 'beta1') { - return beta1.load(result.filepath, result.config); - } - } - return createDefaultConfig(); -} - -export const CONFIG = loadConfig(); +export * from './beta1'; +export * from './default'; +export * from './types'; +export * from './utils'; diff --git a/packages/common/src/config/types.ts b/packages/common/src/config/types.ts new file mode 100644 index 00000000..5ff7fd16 --- /dev/null +++ b/packages/common/src/config/types.ts @@ -0,0 +1,16 @@ +import { Format } from '@ts-graphviz/node'; + +export type RediagramGlobalConfig = { + filepath: string | null; + scope: Readonly<{ + includes: ReadonlyArray; + excludes: ReadonlyArray; + }>; + output: Readonly<{ + dir?: string; + format: Format; + }>; + dot: Readonly<{ + timeout: number; + }>; +}; diff --git a/packages/common/src/config/utils.ts b/packages/common/src/config/utils.ts new file mode 100644 index 00000000..5d8cba9e --- /dev/null +++ b/packages/common/src/config/utils.ts @@ -0,0 +1,17 @@ +import { cosmiconfigSync } from 'cosmiconfig'; +import { RediagramGlobalConfig } from './types'; +import { beta1 } from './beta1'; +import { createDefaultConfig } from './default'; + +const MODULE_NAME = 'rediagram'; + +export function loadConfigfile(): RediagramGlobalConfig { + const { search } = cosmiconfigSync(MODULE_NAME); + const result = search(); + switch (result?.config.version) { + case beta1.version: + return beta1.load(result.filepath, result.config); + default: + return createDefaultConfig(); + } +} diff --git a/packages/common/src/index.ts b/packages/common/src/index.ts index f03c2281..92638618 100644 --- a/packages/common/src/index.ts +++ b/packages/common/src/index.ts @@ -1 +1,2 @@ export * from './config'; +export * from './rediagram'; diff --git a/packages/common/src/rediagram/core.ts b/packages/common/src/rediagram/core.ts new file mode 100644 index 00000000..c0e3e357 --- /dev/null +++ b/packages/common/src/rediagram/core.ts @@ -0,0 +1,75 @@ +import path from 'path'; +import { ensureDir } from 'fs-extra'; +import { Logger } from 'tslog'; +import { ReactElement } from 'react'; +import { renderToDot } from '@ts-graphviz/react'; +import { exportToFile } from '@ts-graphviz/node'; +import { RediagramGlobalConfig, loadConfigfile } from '../config'; +import { RenderOption } from './types'; + +export class RediagramCore { + public static readonly MODULE_NAME = 'rediagram'; + + private static instance?: RediagramCore; + + public logger = new Logger({ + type: 'pretty', + name: 'rediagram', + displayDateTime: false, + displayFilePath: 'hidden', + displayFunctionName: false, + }); + + public static create(): RediagramCore { + if (!this.instance) { + const config = loadConfigfile(); + this.instance = new RediagramCore(config); + } + return this.instance; + } + + public readonly config: Readonly; + + constructor({ ...config }: RediagramGlobalConfig) { + this.config = Object.freeze(config); + + this.logger.info( + 'Config file is', + config.filepath ? `"./${path.relative(process.cwd(), config.filepath)}".` : 'not exist.', + ); + } + + public async render(element: ReactElement, options: RenderOption): Promise { + const dot = renderToDot(element); + const dir = options.dir ?? this.config.output.dir; + const format = options.format ?? this.config.output.format; + const output = path.format({ + dir, + name: options.name, + ext: `.${format}`, + }); + if (dir !== undefined) { + await ensureDir(dir); + } + this.logger.info('Output', path.relative(process.cwd(), output)); + await exportToFile(dot, { + format, + output, + childProcessOptions: { + timeout: this.config.dot.timeout, + }, + }); + } + + public async run(src: string): Promise { + try { + this.logger.info('Runing', src); + const resolved = path.resolve(src); + // eslint-disable-next-line global-require, import/no-dynamic-require + require(resolved); + delete require.cache[resolved]; + } catch (err) { + this.logger.error(err); + } + } +} diff --git a/packages/common/src/rediagram/index.ts b/packages/common/src/rediagram/index.ts new file mode 100644 index 00000000..7627d800 --- /dev/null +++ b/packages/common/src/rediagram/index.ts @@ -0,0 +1,2 @@ +export * from './types'; +export * from './core'; diff --git a/packages/common/src/rediagram/types.ts b/packages/common/src/rediagram/types.ts new file mode 100644 index 00000000..4fc90002 --- /dev/null +++ b/packages/common/src/rediagram/types.ts @@ -0,0 +1,16 @@ +import { Format } from '@ts-graphviz/node'; + +export type RenderOption = { + /** + * Output destination directory. + */ + dir?: string; + /** + * Output file name. + */ + name: string; + /** + * Output file format. + */ + format?: Format; +}; diff --git a/packages/rediagram/src/core.ts b/packages/rediagram/src/core.ts new file mode 100644 index 00000000..424e80d4 --- /dev/null +++ b/packages/rediagram/src/core.ts @@ -0,0 +1,3 @@ +import { RediagramCore } from '@rediagram/common'; + +export const Rediagram = RediagramCore.create(); diff --git a/packages/rediagram/src/formats.ts b/packages/rediagram/src/formats.ts index 5d5eab1e..06734d98 100644 --- a/packages/rediagram/src/formats.ts +++ b/packages/rediagram/src/formats.ts @@ -1,10 +1,7 @@ import { ReactElement } from 'react'; -import { renderToDot } from '@ts-graphviz/react'; -import { ChildProcessOptions, exportToFile, Format } from '@ts-graphviz/node'; -import { CONFIG } from '@rediagram/common'; -import { ensureDir } from 'fs-extra'; import path from 'path'; import caller from 'caller'; +import { Rediagram } from './core'; export type RenderOption = { /** @@ -26,30 +23,6 @@ type InternalRenderOption = RenderOption & { _caller?: string; }; -async function render( - element: ReactElement, - { - name, - dir, - format, - dotOptions, - }: Required & { - format: Format; - dotOptions: ChildProcessOptions; - }, -): Promise { - const dot = renderToDot(element); - const output = path.format({ dir, name, ext: `.${format}` }); - if (dir !== undefined) { - await ensureDir(dir); - } - await exportToFile(dot, { - format, - output, - childProcessOptions: dotOptions, - }); -} - /** * Output PNG image. */ @@ -58,15 +31,16 @@ export async function PNG( element: ReactElement, { name, dir, _caller = caller() }: InternalRenderOption = {}, ): Promise { - const p = path.parse(_caller); - await render(element, { - format: 'png', - name: name ?? p.name, - dir: dir ?? CONFIG.output.getDir() ?? p.dir, - dotOptions: { - timeout: CONFIG.dot?.getTimeout(), - }, - }); + try { + const p = path.parse(_caller); + await Rediagram.render(element, { + format: 'png', + name: name ?? p.name, + dir: dir ?? Rediagram.config.output.dir ?? p.dir, + }); + } catch (err) { + Rediagram.logger.error(err); + } } /** @@ -77,15 +51,16 @@ export async function SVG( element: ReactElement, { name, dir, _caller = caller() }: InternalRenderOption = {}, ): Promise { - const p = path.parse(_caller); - await render(element, { - format: 'svg', - name: name ?? p.name, - dir: dir ?? CONFIG.output.getDir() ?? p.dir, - dotOptions: { - timeout: CONFIG.dot?.getTimeout(), - }, - }); + try { + const p = path.parse(_caller); + await Rediagram.render(element, { + format: 'svg', + name: name ?? p.name, + dir: dir ?? Rediagram.config.output.dir ?? p.dir, + }); + } catch (err) { + Rediagram.logger.error(err); + } } /** @@ -96,13 +71,14 @@ export async function PDF( element: ReactElement, { name, dir, _caller = caller() }: InternalRenderOption = {}, ): Promise { - const p = path.parse(_caller); - await render(element, { - format: 'pdf', - name: name ?? p.name, - dir: dir ?? CONFIG.output.getDir() ?? p.dir, - dotOptions: { - timeout: CONFIG.dot?.getTimeout(), - }, - }); + try { + const p = path.parse(_caller); + await Rediagram.render(element, { + format: 'pdf', + name: name ?? p.name, + dir: dir ?? Rediagram.config.output.dir ?? p.dir, + }); + } catch (err) { + Rediagram.logger.error(err); + } } diff --git a/packages/rediagram/src/index.ts b/packages/rediagram/src/index.ts index a5e03481..fb42ec40 100644 --- a/packages/rediagram/src/index.ts +++ b/packages/rediagram/src/index.ts @@ -2,3 +2,4 @@ export * from './components/Diagram'; export * from './components/TextBox'; export * from './components/GeneralIcon'; export * from './formats'; +export * from './core'; diff --git a/yarn.lock b/yarn.lock index 36a2f370..fa7cee53 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2894,6 +2894,13 @@ dependencies: tmp-promise "^3.0.2" +"@ts-graphviz/node@^0.4.0": + version "0.4.0" + resolved "https://registry.yarnpkg.com/@ts-graphviz/node/-/node-0.4.0.tgz#08597d80b4834bc7ba25c8e2eb5bc2f165a1b719" + integrity sha512-4lrijHvVTuCIF5g42/jqN4w5BgrDdE1ZR4zUHFU6c9E83EJF5Wv9+YPzjuHHi+jNEmrrdeNR/ZV/CLjIh8Y2pw== + dependencies: + tmp-promise "^3.0.2" + "@ts-graphviz/react@^0.7.0": version "0.7.0" resolved "https://registry.yarnpkg.com/@ts-graphviz/react/-/react-0.7.0.tgz#0064750078dc0f4c1cf2531525a74a588d01f9ac" @@ -2902,6 +2909,16 @@ prop-types "^15.7.2" react-reconciler "^0.25.1" +"@ts-graphviz/react@^0.9.0": + version "0.9.0" + resolved "https://registry.yarnpkg.com/@ts-graphviz/react/-/react-0.9.0.tgz#d95e6c3ad0f133fe5dbf46b45b0b1543ab4c079f" + integrity sha512-+5TQyy1BpStu9jDc3Wf5rN6m8lyTtou0SbRAUv/epWrzpFpGgm5CtYk5LlawvH5l5lOuptTM9kmVHQb9I3qIOA== + dependencies: + prop-types "^15.7.2" + react-dom "^17.0.2" + react-reconciler "^0.26.2" + ts-graphviz "^0.16.0" + "@tsconfig/docusaurus@^1.0.2": version "1.0.2" resolved "https://registry.yarnpkg.com/@tsconfig/docusaurus/-/docusaurus-1.0.2.tgz#400ef146d3e7da2f78bf9749c943d123dce5fd97" @@ -5034,6 +5051,17 @@ cosmiconfig@^7.0.0: path-type "^4.0.0" yaml "^1.10.0" +cosmiconfig@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-7.0.1.tgz#714d756522cace867867ccb4474c5d01bbae5d6d" + integrity sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ== + dependencies: + "@types/parse-json" "^4.0.0" + import-fresh "^3.2.1" + parse-json "^5.0.0" + path-type "^4.0.0" + yaml "^1.10.0" + create-require@^1.1.0: version "1.1.1" resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333" @@ -11283,6 +11311,15 @@ react-dom@^16.13.1, react-dom@^16.8.4: prop-types "^15.6.2" scheduler "^0.19.1" +react-dom@^17.0.2: + version "17.0.2" + resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-17.0.2.tgz#ecffb6845e3ad8dbfcdc498f0d0a939736502c23" + integrity sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA== + dependencies: + loose-envify "^1.1.0" + object-assign "^4.1.1" + scheduler "^0.20.2" + react-error-boundary@^3.1.0: version "3.1.3" resolved "https://registry.yarnpkg.com/react-error-boundary/-/react-error-boundary-3.1.3.tgz#276bfa05de8ac17b863587c9e0647522c25e2a0b" @@ -11359,6 +11396,15 @@ react-reconciler@^0.25.1: prop-types "^15.6.2" scheduler "^0.19.1" +react-reconciler@^0.26.2: + version "0.26.2" + resolved "https://registry.yarnpkg.com/react-reconciler/-/react-reconciler-0.26.2.tgz#bbad0e2d1309423f76cf3c3309ac6c96e05e9d91" + integrity sha512-nK6kgY28HwrMNwDnMui3dvm3rCFjZrcGiuwLc5COUipBK5hWHLOxMJhSnSomirqWwjPBJKV1QcbkI0VJr7Gl1Q== + dependencies: + loose-envify "^1.1.0" + object-assign "^4.1.1" + scheduler "^0.20.2" + react-router-config@^5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/react-router-config/-/react-router-config-5.1.1.tgz#0f4263d1a80c6b2dc7b9c1902c9526478194a988" @@ -12057,6 +12103,14 @@ scheduler@^0.19.1: loose-envify "^1.1.0" object-assign "^4.1.1" +scheduler@^0.20.2: + version "0.20.2" + resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.20.2.tgz#4baee39436e34aa93b4874bddcbf0fe8b8b50e91" + integrity sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ== + dependencies: + loose-envify "^1.1.0" + object-assign "^4.1.1" + schema-utils@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-1.0.0.tgz#0b79a93204d7b600d4b2850d1f66c2a34951c770" @@ -12441,7 +12495,7 @@ source-map-resolve@^0.5.0: source-map-url "^0.4.0" urix "^0.1.0" -source-map-support@^0.5.17, source-map-support@^0.5.6, source-map-support@~0.5.12, source-map-support@~0.5.19: +source-map-support@^0.5.17, source-map-support@^0.5.19, source-map-support@^0.5.6, source-map-support@~0.5.12, source-map-support@~0.5.19: version "0.5.19" resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.19.tgz#a98b62f86dcaf4f67399648c085291ab9e8fed61" integrity sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw== @@ -13221,6 +13275,11 @@ ts-graphviz@^0.13.1: dependencies: tslib "^2.0.0" +ts-graphviz@^0.16.0: + version "0.16.0" + resolved "https://registry.yarnpkg.com/ts-graphviz/-/ts-graphviz-0.16.0.tgz#7a6e6b5434854bc90ab861e70d5af0d6d20729a7" + integrity sha512-3fTPO+G6bSQNvMh/XQQzyiahVLMMj9kqYO99ivUraNJ3Wp05HZOOVtRhi6w9hq7+laP1MKHjLBtGWqTeb1fcpg== + ts-interface-checker@^0.1.9: version "0.1.13" resolved "https://registry.yarnpkg.com/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz#784fd3d679722bc103b1b4b8030bcddb5db2a699" @@ -13278,6 +13337,13 @@ tslib@^2.0.0, tslib@^2.0.3, tslib@^2.1.0, tslib@^2.2.0: resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.3.0.tgz#803b8cdab3e12ba581a4ca41c8839bbb0dacb09e" integrity sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg== +tslog@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/tslog/-/tslog-3.2.1.tgz#37df1301211901eb65fd61b9ad7c8554264a7699" + integrity sha512-m8wAtox9wt+h6UDcN1WAQnYwRDOGhMIOp+GAuuufo8T8qKuu726i2W3r47BrA69goVOwgUkp5YwDTvAxTktvPg== + dependencies: + source-map-support "^0.5.19" + tsutils@^3.21.0: version "3.21.0" resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623"