From 49f820ace7ac1b7aa8193e1e12c2e00d0a40807b Mon Sep 17 00:00:00 2001 From: RyanDagg Date: Wed, 5 Jul 2023 16:25:19 -0600 Subject: [PATCH] refactor: upgrade to oclif v2 (#98) * Refactor: upgrade to @oclif/core v2 and adapt to breaking changes to types. * fix: finish handling breaking import changes * chore: comment on footgun in tests. * chore: maintain same import syntax in deps.ts --- package.json | 2 +- src/completions.ts | 33 ++++----- src/deps.ts | 8 ++- src/login.ts | 4 +- test/api-client.test.ts | 9 ++- test/flags/org.test.ts | 10 ++- test/flags/team.test.ts | 14 ++-- yarn.lock | 148 ++++++++++++++++++++++++++++++++++++---- 8 files changed, 171 insertions(+), 57 deletions(-) diff --git a/package.json b/package.json index b06eb34..a61ec0b 100644 --- a/package.json +++ b/package.json @@ -6,7 +6,7 @@ "bugs": "https://github.com/heroku/heroku-cli-command/issues", "dependencies": { "@heroku-cli/color": "^1.1.14", - "@oclif/core": "^1.26.2", + "@oclif/core": "^2.8.11", "cli-ux": "^6.0.9", "debug": "^4.1.1", "fs-extra": "^7.0.1", diff --git a/src/completions.ts b/src/completions.ts index 80b0e03..aa2609a 100644 --- a/src/completions.ts +++ b/src/completions.ts @@ -1,5 +1,6 @@ import {Interfaces} from '@oclif/core' import {CLIError} from '@oclif/core/lib/errors' +import {Completion} from '@oclif/core/lib/interfaces/parser' import * as path from 'path' import deps from './deps' @@ -14,7 +15,7 @@ export const herokuGet = async (resource: string, ctx: {config: Interfaces.Confi return resources.map((a: any) => a.name).sort() } -export const AppCompletion: Interfaces.Completion = { +export const AppCompletion: Completion = { cacheDuration: oneDay, options: async ctx => { const apps = await herokuGet('apps', ctx) @@ -22,7 +23,7 @@ export const AppCompletion: Interfaces.Completion = { }, } -export const AppAddonCompletion: Interfaces.Completion = { +export const AppAddonCompletion: Completion = { cacheDuration: oneDay, cacheKey: async ctx => { return ctx.flags && ctx.flags.app ? `${ctx.flags.app}_addons` : '' @@ -33,7 +34,7 @@ export const AppAddonCompletion: Interfaces.Completion = { }, } -export const AppDynoCompletion: Interfaces.Completion = { +export const AppDynoCompletion: Completion = { cacheDuration: oneDay, cacheKey: async ctx => { return ctx.flags && ctx.flags.app ? `${ctx.flags.app}_dynos` : '' @@ -44,7 +45,7 @@ export const AppDynoCompletion: Interfaces.Completion = { }, } -export const BuildpackCompletion: Interfaces.Completion = { +export const BuildpackCompletion: Completion = { skipCache: true, options: async () => { @@ -62,7 +63,7 @@ export const BuildpackCompletion: Interfaces.Completion = { }, } -export const DynoSizeCompletion: Interfaces.Completion = { +export const DynoSizeCompletion: Completion = { cacheDuration: oneDay * 90, options: async ctx => { const sizes = await herokuGet('dyno-sizes', ctx) @@ -70,7 +71,7 @@ export const DynoSizeCompletion: Interfaces.Completion = { }, } -export const FileCompletion: Interfaces.Completion = { +export const FileCompletion: Completion = { skipCache: true, options: async () => { @@ -79,7 +80,7 @@ export const FileCompletion: Interfaces.Completion = { }, } -export const PipelineCompletion: Interfaces.Completion = { +export const PipelineCompletion: Completion = { cacheDuration: oneDay, options: async ctx => { const pipelines = await herokuGet('pipelines', ctx) @@ -87,7 +88,7 @@ export const PipelineCompletion: Interfaces.Completion = { }, } -export const ProcessTypeCompletion: Interfaces.Completion = { +export const ProcessTypeCompletion: Completion = { skipCache: true, options: async () => { @@ -112,7 +113,7 @@ export const ProcessTypeCompletion: Interfaces.Completion = { }, } -export const RegionCompletion: Interfaces.Completion = { +export const RegionCompletion: Completion = { cacheDuration: oneDay * 7, options: async ctx => { const regions = await herokuGet('regions', ctx) @@ -120,7 +121,7 @@ export const RegionCompletion: Interfaces.Completion = { }, } -export const RemoteCompletion: Interfaces.Completion = { +export const RemoteCompletion: Completion = { skipCache: true, options: async () => { @@ -129,7 +130,7 @@ export const RemoteCompletion: Interfaces.Completion = { }, } -export const RoleCompletion: Interfaces.Completion = { +export const RoleCompletion: Completion = { skipCache: true, options: async () => { @@ -137,7 +138,7 @@ export const RoleCompletion: Interfaces.Completion = { }, } -export const ScopeCompletion: Interfaces.Completion = { +export const ScopeCompletion: Completion = { skipCache: true, options: async () => { @@ -145,7 +146,7 @@ export const ScopeCompletion: Interfaces.Completion = { }, } -export const SpaceCompletion: Interfaces.Completion = { +export const SpaceCompletion: Completion = { cacheDuration: oneDay, options: async ctx => { const spaces = await herokuGet('spaces', ctx) @@ -153,7 +154,7 @@ export const SpaceCompletion: Interfaces.Completion = { }, } -export const StackCompletion: Interfaces.Completion = { +export const StackCompletion: Completion = { cacheDuration: oneDay, options: async ctx => { const stacks = await herokuGet('stacks', ctx) @@ -161,7 +162,7 @@ export const StackCompletion: Interfaces.Completion = { }, } -export const StageCompletion: Interfaces.Completion = { +export const StageCompletion: Completion = { skipCache: true, options: async () => { @@ -169,7 +170,7 @@ export const StageCompletion: Interfaces.Completion = { }, } -export const TeamCompletion: Interfaces.Completion = { +export const TeamCompletion: Completion = { cacheDuration: oneDay, options: async ctx => { const teams = await herokuGet('teams', ctx) diff --git a/src/deps.ts b/src/deps.ts index 2e077e1..ae29884 100644 --- a/src/deps.ts +++ b/src/deps.ts @@ -1,5 +1,5 @@ // remote -import core = require('@oclif/core') +import oclif = require('@oclif/core') import HTTP = require('http-call') import netrc = require('netrc-parser') @@ -10,10 +10,12 @@ import git = require('./git') import mutex = require('./mutex') import yubikey = require('./yubikey') +const {ux} = oclif + export const deps = { // remote - get cli(): typeof core.CliUx.ux { - return fetch('@oclif/core').CliUx.ux + get cli(): typeof ux { + return fetch('@oclif/core').ux }, get HTTP(): typeof HTTP { return fetch('http-call') diff --git a/src/login.ts b/src/login.ts index 40138e6..f425511 100644 --- a/src/login.ts +++ b/src/login.ts @@ -1,13 +1,11 @@ import color from '@heroku-cli/color' import * as Heroku from '@heroku-cli/schema' -import {CliUx, Interfaces} from '@oclif/core' +import {Interfaces, ux} from '@oclif/core' import HTTP from 'http-call' import Netrc from 'netrc-parser' import open = require('open') import * as os from 'os' -const {ux} = CliUx - import {APIClient, HerokuAPIError} from './api-client' import {vars} from './vars' diff --git a/test/api-client.test.ts b/test/api-client.test.ts index 8ea80df..e3111a5 100644 --- a/test/api-client.test.ts +++ b/test/api-client.test.ts @@ -1,4 +1,4 @@ -import {CliUx, Config} from '@oclif/core' +import {Config, ux} from '@oclif/core' import base, {expect} from 'fancy-test' import nock from 'nock' import {resolve} from 'path' @@ -7,8 +7,6 @@ import * as sinon from 'sinon' import {Command as CommandBase} from '../src/command' import {RequestId, requestIdHeader} from '../src/request-id' -const cli = CliUx.ux - class Command extends CommandBase { async run() {} } @@ -120,7 +118,8 @@ describe('api_client', () => { _api.get('/apps').matchHeader('heroku-two-factor-code', '123456').reply(200, [{name: 'myapp'}]) const cmd = new Command([], ctx.config) - Object.defineProperty(cli, 'prompt', { + // todo: this should be stubbed, but other tests rely on it and break if it is done correctly + Object.defineProperty(ux, 'prompt', { get: () => () => Promise.resolve('123456'), }) const {body} = await cmd.heroku.get('/apps') @@ -139,7 +138,7 @@ describe('api_client', () => { api.get('/apps/myapp/dynos').reply(200, {web: 1}) const cmd = new Command([], ctx.config) - Object.defineProperty(cli, 'prompt', { + Object.defineProperty(ux, 'prompt', { get: () => () => Promise.resolve('123456'), }) const info = cmd.heroku.get('/apps/myapp') diff --git a/test/flags/org.test.ts b/test/flags/org.test.ts index d6e87ba..9338ca6 100644 --- a/test/flags/org.test.ts +++ b/test/flags/org.test.ts @@ -1,16 +1,14 @@ -import {CliUx, Command} from '@oclif/core' +import {Command, ux} from '@oclif/core' import {expect, fancy} from 'fancy-test' import * as flags from '../../src/flags' -const cli = CliUx.ux - describe('required', () => { class OrgCommand extends Command { static flags = {org: flags.org({required: true})} async run() { const {flags} = await this.parse(this.constructor as any) - cli.log(flags.org) + ux.log(flags.org) } } @@ -42,7 +40,7 @@ describe('optional', () => { static flags = {org: flags.org()} async run() { const {flags} = await this.parse(this.constructor as any) - cli.log(flags.org) + ux.log(flags.org) } } @@ -68,7 +66,7 @@ describe('optional', () => { static flags = {org: flags.org()} async run() { const {flags} = await this.parse(this.constructor as any) - cli.log(flags.org) + ux.log(flags.org) } } diff --git a/test/flags/team.test.ts b/test/flags/team.test.ts index 07ea1dd..5c089c7 100644 --- a/test/flags/team.test.ts +++ b/test/flags/team.test.ts @@ -1,16 +1,14 @@ -import {CliUx, Command} from '@oclif/core' +import {Command, ux} from '@oclif/core' import {expect, fancy} from 'fancy-test' import * as flags from '../../src/flags' -const cli = CliUx.ux - describe('required', () => { class TeamCommand extends Command { static flags = {team: flags.team({required: true})} async run() { const {flags} = await this.parse(this.constructor as any) - cli.log(flags.team) + ux.log(flags.team) } } @@ -42,7 +40,7 @@ describe('optional', () => { static flags = {team: flags.team()} async run() { const {flags} = await this.parse(this.constructor as any) - cli.log(flags.team) + ux.log(flags.team) } } @@ -68,7 +66,7 @@ describe('optional', () => { static flags = {team: flags.team()} async run() { const {flags} = await this.parse(this.constructor as any) - cli.log(flags.team) + ux.log(flags.team) } } @@ -84,7 +82,7 @@ describe('optional', () => { static flags = {team: flags.team()} async run() { const {flags} = await this.parse(this.constructor as any) - cli.log(flags.team) + ux.log(flags.team) } } @@ -111,7 +109,7 @@ describe('with flag/env variable priorities', () => { async run() { const {flags} = await this.parse(this.constructor as any) - cli.log(flags.team) + ux.log(flags.team) } } diff --git a/yarn.lock b/yarn.lock index ae4eefc..5432ffc 100644 --- a/yarn.lock +++ b/yarn.lock @@ -23,6 +23,13 @@ chalk "^2.0.0" js-tokens "^4.0.0" +"@cspotcode/source-map-support@^0.8.0": + version "0.8.1" + resolved "https://registry.yarnpkg.com/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz#00629c35a688e05a88b1cda684fb9d5e73f000a1" + integrity sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw== + dependencies: + "@jridgewell/trace-mapping" "0.3.9" + "@fimbul/bifrost@^0.21.0": version "0.21.0" resolved "https://registry.yarnpkg.com/@fimbul/bifrost/-/bifrost-0.21.0.tgz#d0fafa25938fda475657a6a1e407a21bbe02c74e" @@ -66,6 +73,24 @@ tslint "^5.8.0" tslint-config-prettier "*" +"@jridgewell/resolve-uri@^3.0.3": + version "3.1.1" + resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz#c08679063f279615a3326583ba3a90d1d82cc721" + integrity sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA== + +"@jridgewell/sourcemap-codec@^1.4.10": + version "1.4.15" + resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32" + integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== + +"@jridgewell/trace-mapping@0.3.9": + version "0.3.9" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz#6534fd5933a53ba7cbf3a17615e273a0d1273ff9" + integrity sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ== + dependencies: + "@jridgewell/resolve-uri" "^3.0.3" + "@jridgewell/sourcemap-codec" "^1.4.10" + "@nodelib/fs.scandir@2.1.5": version "2.1.5" resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" @@ -121,21 +146,20 @@ widest-line "^3.1.0" wrap-ansi "^7.0.0" -"@oclif/core@^1.26.2": - version "1.26.2" - resolved "https://registry.yarnpkg.com/@oclif/core/-/core-1.26.2.tgz#763c68dc91388225acd6f0819c90f93e5d8cde41" - integrity sha512-6jYuZgXvHfOIc9GIaS4T3CIKGTjPmfAxuMcbCbMRKJJl4aq/4xeRlEz0E8/hz8HxvxZBGvN2GwAUHlrGWQVrVw== +"@oclif/core@^2.8.11": + version "2.8.11" + resolved "https://registry.yarnpkg.com/@oclif/core/-/core-2.8.11.tgz#fbdf8b5b74a8b2012f2fcd5a30a515d327b54482" + integrity sha512-9wYW6KRSWfB/D+tqeyl/jxmEz/xPXkFJGVWfKaptqHz6FPWNJREjAM945MuJL2Y8NRhMe+ScRlZ3WpdToX5aVQ== dependencies: - "@oclif/linewrap" "^1.0.0" - "@oclif/screen" "^3.0.4" + "@types/cli-progress" "^3.11.0" ansi-escapes "^4.3.2" ansi-styles "^4.3.0" cardinal "^2.1.1" chalk "^4.1.2" clean-stack "^3.0.1" - cli-progress "^3.10.0" + cli-progress "^3.12.0" debug "^4.3.4" - ejs "^3.1.6" + ejs "^3.1.8" fs-extra "^9.1.0" get-package-type "^0.1.0" globby "^11.1.0" @@ -146,13 +170,15 @@ natural-orderby "^2.0.3" object-treeify "^1.1.33" password-prompt "^1.1.2" - semver "^7.3.7" + semver "^7.5.3" string-width "^4.2.3" strip-ansi "^6.0.1" supports-color "^8.1.1" supports-hyperlinks "^2.2.0" - tslib "^2.4.1" + ts-node "^10.9.1" + tslib "^2.5.0" widest-line "^3.1.0" + wordwrap "^1.0.0" wrap-ansi "^7.0.0" "@oclif/linewrap@^1.0.0": @@ -170,11 +196,6 @@ resolved "https://registry.yarnpkg.com/@oclif/screen/-/screen-3.0.3.tgz#e679ad10535e31d333f809f7a71335cc9aef1e55" integrity sha512-KX8gMYA9ujBPOd1HFsV9e0iEx7Uoj8AG/3YsW4TtWQTg4lJvr82qNm7o/cFQfYRIt+jw7Ew/4oL4A22zOT+IRA== -"@oclif/screen@^3.0.4": - version "3.0.4" - resolved "https://registry.yarnpkg.com/@oclif/screen/-/screen-3.0.4.tgz#663db0ecaf23f3184e7f01886ed578060e4a7f1c" - integrity sha512-IMsTN1dXEXaOSre27j/ywGbBjrzx0FNd1XmuhCWCB9NTPrhWI1Ifbz+YLSEcstfQfocYsrbrIessxXb2oon4lA== - "@oclif/tslint@^3.1.1": version "3.1.1" resolved "https://registry.yarnpkg.com/@oclif/tslint/-/tslint-3.1.1.tgz#e055cdf158630862fd44546f6b8fb1266c9778e7" @@ -226,6 +247,26 @@ resolved "https://registry.yarnpkg.com/@sinonjs/text-encoding/-/text-encoding-0.7.1.tgz#8da5c6530915653f3a1f38fd5f101d8c3f8079c5" integrity sha512-+iTbntw2IZPb/anVDbypzfQa+ay64MW0Zo8aJ8gZPWMMK6/OubMVb6lUPMagqjOPnmtauXnFCACVl3O7ogjeqQ== +"@tsconfig/node10@^1.0.7": + version "1.0.9" + resolved "https://registry.yarnpkg.com/@tsconfig/node10/-/node10-1.0.9.tgz#df4907fc07a886922637b15e02d4cebc4c0021b2" + integrity sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA== + +"@tsconfig/node12@^1.0.7": + version "1.0.11" + resolved "https://registry.yarnpkg.com/@tsconfig/node12/-/node12-1.0.11.tgz#ee3def1f27d9ed66dac6e46a295cffb0152e058d" + integrity sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag== + +"@tsconfig/node14@^1.0.0": + version "1.0.3" + resolved "https://registry.yarnpkg.com/@tsconfig/node14/-/node14-1.0.3.tgz#e4386316284f00b98435bf40f72f75a09dabf6c1" + integrity sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow== + +"@tsconfig/node16@^1.0.2": + version "1.0.4" + resolved "https://registry.yarnpkg.com/@tsconfig/node16/-/node16-1.0.4.tgz#0b92dcc0cc1c81f6f306a381f28e31b1a56536e9" + integrity sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA== + "@types/ansi-styles@^3.2.1": version "3.2.1" resolved "https://registry.yarnpkg.com/@types/ansi-styles/-/ansi-styles-3.2.1.tgz#49e996bb6e0b7957ca831205df31eb9a0702492c" @@ -238,6 +279,13 @@ resolved "https://registry.yarnpkg.com/@types/chai/-/chai-4.2.7.tgz#1c8c25cbf6e59ffa7d6b9652c78e547d9a41692d" integrity sha512-luq8meHGYwvky0O7u0eQZdA7B4Wd9owUCqvbw2m3XCrCU8mplYOujMBbvyS547AxJkC+pGnd0Cm15eNxEUNU8g== +"@types/cli-progress@^3.11.0": + version "3.11.0" + resolved "https://registry.yarnpkg.com/@types/cli-progress/-/cli-progress-3.11.0.tgz#ec79df99b26757c3d1c7170af8422e0fc95eef7e" + integrity sha512-XhXhBv1R/q2ahF3BM7qT5HLzJNlIL0wbcGyZVjqOTqAybAnsLisd7gy1UCyIqpL+5Iv6XhlSyzjLCnI2sIdbCg== + dependencies: + "@types/node" "*" + "@types/color-name@*": version "1.1.1" resolved "https://registry.yarnpkg.com/@types/color-name/-/color-name-1.1.1.tgz#1c1261bbeaa10a8055bbc5d8ab84b7b2afc846a0" @@ -309,6 +357,16 @@ resolved "https://registry.yarnpkg.com/@types/uuid/-/uuid-8.3.0.tgz#215c231dff736d5ba92410e6d602050cce7e273f" integrity sha512-eQ9qFW/fhfGJF8WKHGEHZEyVWfZxrT+6CLIJGBcZPfxUh/+BnEj+UCGYMlr9qZuX/2AltsvwrGqp0LhEW8D0zQ== +acorn-walk@^8.1.1: + version "8.2.0" + resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.2.0.tgz#741210f2e2426454508853a2f44d0ab83b7f69c1" + integrity sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA== + +acorn@^8.4.1: + version "8.10.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.10.0.tgz#8be5b3907a67221a81ab23c7889c4c5526b62ec5" + integrity sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw== + ansi-colors@3.2.3: version "3.2.3" resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-3.2.3.tgz#57d35b8686e851e2cc04c403f1c00203976a1813" @@ -533,6 +591,13 @@ cli-progress@^3.10.0: dependencies: string-width "^4.2.3" +cli-progress@^3.12.0: + version "3.12.0" + resolved "https://registry.yarnpkg.com/cli-progress/-/cli-progress-3.12.0.tgz#807ee14b66bcc086258e444ad0f19e7d42577942" + integrity sha512-tRkV3HJ1ASwm19THiiLIXLO7Im7wlTuKnvkYaTkyoAPefqjNg7W7DHKUlGRxy9vxDvbyCYQkQozvptuMkGCg8A== + dependencies: + string-width "^4.2.3" + cli-ux@^6.0.9: version "6.0.9" resolved "https://registry.yarnpkg.com/cli-ux/-/cli-ux-6.0.9.tgz#b5ab690314348b45b2c7458dad7621ae1be7c61d" @@ -612,6 +677,11 @@ content-type@^1.0.4: resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== +create-require@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333" + integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ== + cross-spawn@^6.0.0, cross-spawn@^6.0.5: version "6.0.5" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" @@ -700,6 +770,13 @@ ejs@^3.1.6: dependencies: jake "^10.8.5" +ejs@^3.1.8: + version "3.1.9" + resolved "https://registry.yarnpkg.com/ejs/-/ejs-3.1.9.tgz#03c9e8777fe12686a9effcef22303ca3d8eeb361" + integrity sha512-rC+QVNMJWv+MtPgkt0y+0rVEIdbtxVADApW9JXrUVlzHetgcyczP/E7DJmWJ4fJCZF2cPcBk0laWO9ZHMG3DmQ== + dependencies: + jake "^10.8.5" + emoji-regex@^7.0.1: version "7.0.3" resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" @@ -1677,6 +1754,13 @@ semver@^7.3.2, semver@^7.3.7: dependencies: lru-cache "^6.0.0" +semver@^7.5.3: + version "7.5.3" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.3.tgz#161ce8c2c6b4b3bdca6caadc9fa3317a4c4fe88e" + integrity sha512-QBlUtyVk/5EeHbi7X0fw6liDZc7BBmEaSYn01fMU1OUYbf6GPsbTtd8WmnqbI20SeycoHSeiybkE/q1Q+qlThQ== + dependencies: + lru-cache "^6.0.0" + set-blocking@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" @@ -1880,6 +1964,25 @@ to-regex-range@^5.0.1: dependencies: is-number "^7.0.0" +ts-node@^10.9.1: + version "10.9.1" + resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-10.9.1.tgz#e73de9102958af9e1f0b168a6ff320e25adcff4b" + integrity sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw== + dependencies: + "@cspotcode/source-map-support" "^0.8.0" + "@tsconfig/node10" "^1.0.7" + "@tsconfig/node12" "^1.0.7" + "@tsconfig/node14" "^1.0.0" + "@tsconfig/node16" "^1.0.2" + acorn "^8.4.1" + acorn-walk "^8.1.1" + arg "^4.1.0" + create-require "^1.1.0" + diff "^4.0.1" + make-error "^1.1.1" + v8-compile-cache-lib "^3.0.1" + yn "3.1.1" + ts-node@^8.1.0: version "8.6.2" resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-8.6.2.tgz#7419a01391a818fbafa6f826a33c1a13e9464e35" @@ -1911,6 +2014,11 @@ tslib@^2.0.0, tslib@^2.4.1: resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.4.1.tgz#0d0bfbaac2880b91e22df0768e55be9753a5b17e" integrity sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA== +tslib@^2.5.0: + version "2.6.0" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.0.tgz#b295854684dbda164e181d259a22cd779dcd7bc3" + integrity sha512-7At1WUettjcSRHXCyYtTselblcHl9PJFFVKiCAy/bY97+BPZXSQ2wbq0P9s8tK2G7dFQfNnlJnPAiArVBVBsfA== + tslint-config-prettier@*: version "1.18.0" resolved "https://registry.yarnpkg.com/tslint-config-prettier/-/tslint-config-prettier-1.18.0.tgz#75f140bde947d35d8f0d238e0ebf809d64592c37" @@ -2046,6 +2154,11 @@ uuid@^8.3.0: resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.0.tgz#ab738085ca22dc9a8c92725e459b1d507df5d6ea" integrity sha512-fX6Z5o4m6XsXBdli9g7DtWgAx+osMsRRZFKma1mIUsLCz6vRvv+pz5VNbyu9UEDzpMWulZfvpgb/cmDXVulYFQ== +v8-compile-cache-lib@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz#6336e8d71965cb3d35a1bbb7868445a7c05264bf" + integrity sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg== + which-module@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" @@ -2072,6 +2185,11 @@ widest-line@^3.1.0: dependencies: string-width "^4.0.0" +wordwrap@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" + integrity sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q== + wrap-ansi@^5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-5.1.0.tgz#1fd1f67235d5b6d0fee781056001bfb694c03b09"