From 2f09a725bb7ff7ef8b4f4d6d6f67d0d83a1ed1f8 Mon Sep 17 00:00:00 2001 From: Mike Donnalley Date: Fri, 23 Sep 2022 11:53:23 -0600 Subject: [PATCH] fix: work with 4.8.3 (#493) * fix: work with 4.8.3 * test: fix test compilation * chore: refine solution --- package.json | 6 +- src/command.ts | 4 +- src/interfaces/parser.ts | 3 +- src/parser/index.ts | 4 +- src/parser/util.ts | 2 +- test/help/format-command-with-options.test.ts | 44 +------- test/help/format-command.test.ts | 25 +---- test/help/format-commands.test.ts | 14 +-- test/help/format-root.test.ts | 10 +- test/help/format-topic.test.ts | 24 +--- test/help/format-topics.test.ts | 24 +--- test/help/help-test-utils.ts | 82 ++++++++++++++ yarn.lock | 105 +++++++++++++----- 13 files changed, 190 insertions(+), 157 deletions(-) create mode 100644 test/help/help-test-utils.ts diff --git a/package.json b/package.json index 7aa73443..8862845a 100644 --- a/package.json +++ b/package.json @@ -73,9 +73,9 @@ "shelljs": "^0.8.5", "shx": "^0.3.4", "sinon": "^11.1.2", - "ts-node": "^9.1.1", + "ts-node": "^10.9.1", "tsd": "^0.22.0", - "typescript": "4.5.5" + "typescript": "^4.8.3" }, "engines": { "node": ">=14.0.0" @@ -111,7 +111,7 @@ "prepack": "yarn run build", "test": "mocha --forbid-only \"test/**/*.test.ts\"", "test:e2e": "mocha \"test/**/*.e2e.ts\" --timeout 600000", - "pretest": "yarn build --noEmit && tsc -p test --noEmit" + "pretest": "yarn build --noEmit && tsc -p test --noEmit --skipLibCheck" }, "types": "lib/index.d.ts" } diff --git a/src/command.ts b/src/command.ts index d053cebc..229171dd 100644 --- a/src/command.ts +++ b/src/command.ts @@ -107,10 +107,8 @@ export default abstract class Command { if (value === true) { this.globalFlags = jsonFlag } else { - // @ts-expect-error because this.globalFlags is typed as a plain object delete this.globalFlags?.json this.flags = {} // force the flags setter to run - // @ts-expect-error because this.flags is typed as a plain object delete this.flags?.json } } @@ -250,7 +248,7 @@ export default abstract class Command { g['http-call']!.userAgent = this.config.userAgent } - protected async parse(options?: Interfaces.Input, argv = this.argv): Promise> { + protected async parse(options?: Interfaces.Input, argv = this.argv): Promise> { if (!options) options = this.constructor as any const opts = {context: this, ...options} // the spread operator doesn't work with getters so we have to manually add it here diff --git a/src/interfaces/parser.ts b/src/interfaces/parser.ts index ea111027..92b2b5f3 100644 --- a/src/interfaces/parser.ts +++ b/src/interfaces/parser.ts @@ -246,5 +246,4 @@ export type CompletableOptionFlag = OptionFlag & { export type CompletableFlag = BooleanFlag | CompletableOptionFlag -// eslint-disable-next-line @typescript-eslint/ban-types -export type FlagInput = { [P in keyof T]: CompletableFlag } +export type FlagInput = { [P in keyof T]: CompletableFlag } diff --git a/src/parser/index.ts b/src/parser/index.ts index aab21c72..ec4c95ce 100644 --- a/src/parser/index.ts +++ b/src/parser/index.ts @@ -2,7 +2,7 @@ import * as args from './args' import Deps from './deps' import * as flags from './flags' import {Parser} from './parse' -import {FlagInput, Input, ParserOutput} from '../interfaces' +import {FlagInput, Input, ParserOutput, OutputFlags, FlagOutput} from '../interfaces' import * as Validate from './validate' export {args} export {flags} @@ -13,7 +13,7 @@ const m = Deps() // eslint-disable-next-line node/no-missing-require .add('validate', () => require('./validate').validate as typeof Validate.validate) -export async function parse(argv: string[], options: Input): Promise> { +export async function parse, GFlags extends FlagOutput, TArgs extends { [name: string]: string }>(argv: string[], options: Input): Promise> { const input = { argv, context: options.context, diff --git a/src/parser/util.ts b/src/parser/util.ts index 623d8da1..712b9504 100644 --- a/src/parser/util.ts +++ b/src/parser/util.ts @@ -1,4 +1,4 @@ -export function pickBy(obj: T, fn: (i: T[keyof T]) => boolean): Partial { +export function pickBy>(obj: T, fn: (i: T[keyof T]) => boolean): Partial { return Object.entries(obj) .reduce((o, [k, v]) => { if (fn(v)) o[k] = v diff --git a/test/help/format-command-with-options.test.ts b/test/help/format-command-with-options.test.ts index 461fee28..bcd942d1 100644 --- a/test/help/format-command-with-options.test.ts +++ b/test/help/format-command-with-options.test.ts @@ -1,8 +1,7 @@ import {expect, test as base} from '@oclif/test' -import stripAnsi = require('strip-ansi') -import {Command as Base, Flags as flags, Interfaces, toCached} from '../../src' -import {Help, CommandHelp} from '../../src/help' +import {Command as Base, Flags as flags} from '../../src' +import {commandHelp, TestHelpWithOptions as TestHelp} from './help-test-utils' const g: any = global g.oclif.columns = 80 @@ -15,47 +14,10 @@ class Command extends Base { } } -// Allow overriding section headers -class TestCommandHelp extends CommandHelp { - protected sections() { - const sections = super.sections() - const flagSection = sections.find(section => section.header === 'FLAGS') - if (flagSection) flagSection.header = 'OPTIONS' - return sections - } -} - -// extensions to expose method as public for testing -class TestHelp extends Help { - CommandHelpClass = TestCommandHelp - - constructor(config: Interfaces.Config, opts: Partial = {}) { - super(config, opts) - this.opts.showFlagNameInTitle = true - this.opts.showFlagOptionsInTitle = true - this.opts.hideCommandSummaryInDescription = true - } - - public formatCommand(command: Interfaces.Command) { - return super.formatCommand(command) - } -} - const test = base .loadConfig() .add('help', ctx => new TestHelp(ctx.config as any)) -.register('commandHelp', (command?: any) => ({ - async run(ctx: {help: TestHelp; commandHelp: string; expectation: string}) { - const cached = await toCached(command!, {} as any) - const help = ctx.help.formatCommand(cached) - if (process.env.TEST_OUTPUT === '1') { - console.log(help) - } - - ctx.commandHelp = stripAnsi(help).split('\n').map(s => s.trimEnd()).join('\n') - ctx.expectation = 'has commandHelp' - }, -})) +.register('commandHelp', commandHelp) describe('formatCommand', () => { test diff --git a/test/help/format-command.test.ts b/test/help/format-command.test.ts index a84216bf..d208d87a 100644 --- a/test/help/format-command.test.ts +++ b/test/help/format-command.test.ts @@ -1,8 +1,7 @@ import {expect, test as base} from '@oclif/test' -import stripAnsi = require('strip-ansi') -import {Command as Base, Flags as flags, Interfaces, toCached} from '../../src' -import {Help} from '../../src/help' +import {Command as Base, Flags as flags} from '../../src' +import {commandHelp, TestHelp} from './help-test-utils' const g: any = global g.oclif.columns = 80 @@ -13,28 +12,10 @@ class Command extends Base { } } -// extensions to expose method as public for testing -class TestHelp extends Help { - public formatCommand(command: Interfaces.Command) { - return super.formatCommand(command) - } -} - const test = base .loadConfig() .add('help', ctx => new TestHelp(ctx.config as any)) -.register('commandHelp', (command?: any) => ({ - async run(ctx: {help: TestHelp; commandHelp: string; expectation: string}) { - const cached = await toCached(command!, {} as any) - const help = ctx.help.formatCommand(cached) - if (process.env.TEST_OUTPUT === '1') { - console.log(help) - } - - ctx.commandHelp = stripAnsi(help).split('\n').map(s => s.trimEnd()).join('\n') - ctx.expectation = 'has commandHelp' - }, -})) +.register('commandHelp', commandHelp) describe('formatCommand', () => { test diff --git a/test/help/format-commands.test.ts b/test/help/format-commands.test.ts index 38a24292..1ba0c21f 100644 --- a/test/help/format-commands.test.ts +++ b/test/help/format-commands.test.ts @@ -14,10 +14,7 @@ class TestHelp extends Help { } } -const test = base -.loadConfig() -.add('help', ctx => new TestHelp(ctx.config as any)) -.register('formatCommands', (commands: Interfaces.Command[] = []) => ({ +const formatCommands = (commands: Interfaces.Command[]) => ({ run(ctx: {help: TestHelp; output: string}) { const help = ctx.help.formatCommands(commands) if (process.env.TEST_OUTPUT === '1') { @@ -26,7 +23,12 @@ const test = base ctx.output = stripAnsi(help).split('\n').map(s => s.trimEnd()).join('\n') }, -})) +}) + +const test = base +.loadConfig() +.add('help', ctx => new TestHelp(ctx.config as any)) +.register('formatCommands', formatCommands) describe('formatCommand', () => { test @@ -47,8 +49,6 @@ describe('formatCommand', () => { static description = 'This is a very long command description that should wrap after too many characters have been entered' - static flags = {} - static args = [] async run() { diff --git a/test/help/format-root.test.ts b/test/help/format-root.test.ts index 7ec98fe2..017039a9 100644 --- a/test/help/format-root.test.ts +++ b/test/help/format-root.test.ts @@ -17,9 +17,7 @@ class TestHelp extends Help { } } -const test = base -.loadConfig() -.register('rootHelp', (ctxOverride?: (config: Interfaces.Config) => Interfaces.Config) => ({ +const rootHelp = (ctxOverride?: (config: Interfaces.Config) => Interfaces.Config) => ({ run(ctx: { config: Interfaces.Config; help: Help; commandHelp: string; expectation: string}) { const config = ctxOverride ? ctxOverride(ctx.config) : ctx.config @@ -31,7 +29,11 @@ const test = base ctx.commandHelp = stripAnsi(root).split('\n').map(s => s.trimEnd()).join('\n') }, -})) +}) + +const test = base +.loadConfig() +.register('rootHelp', rootHelp) describe('formatRoot', () => { test diff --git a/test/help/format-topic.test.ts b/test/help/format-topic.test.ts index ad4a2678..73a33116 100644 --- a/test/help/format-topic.test.ts +++ b/test/help/format-topic.test.ts @@ -1,35 +1,15 @@ import {expect, test as base} from '@oclif/test' -import stripAnsi = require('strip-ansi') - -import {Help} from '../../src/help' -import {Interfaces} from '../../src' +import {TestHelp, topicHelp} from './help-test-utils' const g: any = global g.oclif.columns = 80 -// extensions to expose method as public for testing -class TestHelp extends Help { - public formatTopic(topic: Interfaces.Topic) { - return super.formatTopic(topic) - } -} - const test = base .loadConfig() .add('help', ctx => { return new TestHelp(ctx.config as any) }) -.register('topicHelp', (topic: Interfaces.Topic) => ({ - run(ctx: {help: TestHelp; commandHelp: string; expectation: string}) { - const topicHelpOutput = ctx.help.formatTopic(topic) - if (process.env.TEST_OUTPUT === '1') { - console.log(topicHelpOutput) - } - - ctx.commandHelp = stripAnsi(topicHelpOutput).split('\n').map(s => s.trimEnd()).join('\n') - ctx.expectation = 'has topicHelp' - }, -})) +.register('topicHelp', topicHelp) describe('formatHelp', () => { test diff --git a/test/help/format-topics.test.ts b/test/help/format-topics.test.ts index 28d767bb..22f064f6 100644 --- a/test/help/format-topics.test.ts +++ b/test/help/format-topics.test.ts @@ -1,34 +1,14 @@ import {expect, test as base} from '@oclif/test' -import stripAnsi = require('strip-ansi') -import {Help} from '../../src/help' -import {Interfaces} from '../../src' +import {TestHelp, topicsHelp} from './help-test-utils' const g: any = global g.oclif.columns = 80 -// extensions to expose method as public for testing -class TestHelp extends Help { - public formatTopics(topics: Interfaces.Topic[]) { - return super.formatTopics(topics) - } -} - const test = base .loadConfig() .add('help', ctx => new TestHelp(ctx.config as any)) -.register('topicsHelp', (topics: Interfaces.Topic[]) => ({ - run(ctx: {help: TestHelp; commandHelp: string; expectation: string}) { - const topicsHelpOutput = ctx.help.formatTopics(topics) || '' - - if (process.env.TEST_OUTPUT === '1') { - console.log(topicsHelpOutput) - } - - ctx.commandHelp = stripAnsi(topicsHelpOutput).split('\n').map(s => s.trimEnd()).join('\n') - ctx.expectation = 'has topicsHelp' - }, -})) +.register('topicsHelp', topicsHelp) describe('formatTopics', () => { test diff --git a/test/help/help-test-utils.ts b/test/help/help-test-utils.ts new file mode 100644 index 00000000..d324f57d --- /dev/null +++ b/test/help/help-test-utils.ts @@ -0,0 +1,82 @@ +import stripAnsi = require('strip-ansi') + +import {Interfaces, toCached} from '../../src' +import {Help, CommandHelp} from '../../src/help' + +export class TestCommandHelp extends CommandHelp { + protected sections() { + const sections = super.sections() + const flagSection = sections.find(section => section.header === 'FLAGS') + if (flagSection) flagSection.header = 'OPTIONS' + return sections + } +} + +// extensions to expose method as public for testing +export class TestHelpWithOptions extends Help { + CommandHelpClass = TestCommandHelp + + constructor(config: Interfaces.Config, opts: Partial = {}) { + super(config, opts) + this.opts.showFlagNameInTitle = true + this.opts.showFlagOptionsInTitle = true + this.opts.hideCommandSummaryInDescription = true + } + + public formatCommand(command: Interfaces.Command) { + return super.formatCommand(command) + } +} + +// extensions to expose method as public for testing +export class TestHelp extends Help { + public formatCommand(command: Interfaces.Command) { + return super.formatCommand(command) + } + + public formatTopics(topics: Interfaces.Topic[]) { + return super.formatTopics(topics) + } + + public formatTopic(topic: Interfaces.Topic) { + return super.formatTopic(topic) + } +} + +export const commandHelp = (command?: any) => ({ + async run(ctx: {help: TestHelp; commandHelp: string; expectation: string}) { + const cached = await toCached(command!, {} as any) + const help = ctx.help.formatCommand(cached) + if (process.env.TEST_OUTPUT === '1') { + console.log(help) + } + + ctx.commandHelp = stripAnsi(help).split('\n').map(s => s.trimEnd()).join('\n') + ctx.expectation = 'has commandHelp' + }, +}) + +export const topicsHelp = (topics: Interfaces.Topic[]) => ({ + run(ctx: {help: TestHelp; commandHelp: string; expectation: string}) { + const topicsHelpOutput = ctx.help.formatTopics(topics) || '' + + if (process.env.TEST_OUTPUT === '1') { + console.log(topicsHelpOutput) + } + + ctx.commandHelp = stripAnsi(topicsHelpOutput).split('\n').map(s => s.trimEnd()).join('\n') + ctx.expectation = 'has topicsHelp' + }, +}) + +export const topicHelp = (topic: Interfaces.Topic) => ({ + run(ctx: {help: TestHelp; commandHelp: string; expectation: string}) { + const topicHelpOutput = ctx.help.formatTopic(topic) + if (process.env.TEST_OUTPUT === '1') { + console.log(topicHelpOutput) + } + + ctx.commandHelp = stripAnsi(topicHelpOutput).split('\n').map(s => s.trimEnd()).join('\n') + ctx.expectation = 'has topicHelp' + }, +}) diff --git a/yarn.lock b/yarn.lock index 09e6ab1e..43a20535 100644 --- a/yarn.lock +++ b/yarn.lock @@ -354,6 +354,13 @@ dependencies: chalk "^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" + "@eslint/eslintrc@^0.4.3": version "0.4.3" resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-0.4.3.tgz#9e42981ef035beb3dd49add17acb96e8ff6f394c" @@ -383,6 +390,24 @@ resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.0.tgz#87de7af9c231826fdd68ac7258f77c429e0e5fcf" integrity sha512-wdppn25U8z/2yiaT6YGquE6X8sSv7hNMWSXYSSU1jGv/yd6XqjXgTDJ8KP4NgjTXfJ3GbRjeeb8RTV7a/VpM+w== +"@jridgewell/resolve-uri@^3.0.3": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz#2203b118c157721addfe69d47b70465463066d78" + integrity sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w== + +"@jridgewell/sourcemap-codec@^1.4.10": + version "1.4.14" + resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz#add4c98d341472a289190b424efbdb096991bb24" + integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw== + +"@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" @@ -520,6 +545,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.3" + resolved "https://registry.yarnpkg.com/@tsconfig/node16/-/node16-1.0.3.tgz#472eaab5f15c1ffdd7f8628bd4c4f753995ec79e" + integrity sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ== + "@tsd/typescript@~4.7.4": version "4.7.4" resolved "https://registry.yarnpkg.com/@tsd/typescript/-/typescript-4.7.4.tgz#f1e4e6c3099a174a0cb7aa51cf53f34f6494e528" @@ -801,11 +846,21 @@ acorn-jsx@^5.3.1: resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== +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@^7.4.0: version "7.4.1" resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== +acorn@^8.4.1: + version "8.8.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.8.0.tgz#88c0187620435c7f6015803f5539dae05a9dbea8" + integrity sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w== + ajv@^6.10.0, ajv@^6.12.4: version "6.12.6" resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" @@ -978,11 +1033,6 @@ browserslist@^4.16.6: nanocolors "^0.1.5" node-releases "^1.1.76" -buffer-from@^1.0.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" - integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== - builtin-modules@^3.0.0: version "3.2.0" resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-3.2.0.tgz#45d5db99e7ee5e6bc4f362e008bf917ab5049887" @@ -2999,24 +3049,11 @@ slice-ansi@^4.0.0: astral-regex "^2.0.0" is-fullwidth-code-point "^3.0.0" -source-map-support@^0.5.17: - 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== - dependencies: - buffer-from "^1.0.0" - source-map "^0.6.0" - source-map@^0.5.0: version "0.5.7" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= -source-map@^0.6.0: - version "0.6.1" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" - integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== - spdx-correct@^3.0.0: version "3.1.1" resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.1.tgz#dece81ac9c1e6713e5f7d1b6f17d468fa53d89a9" @@ -3210,16 +3247,23 @@ trim-off-newlines@^1.0.0: resolved "https://registry.yarnpkg.com/trim-off-newlines/-/trim-off-newlines-1.0.1.tgz#9f9ba9d9efa8764c387698bcbfeb2c848f11adb3" integrity sha1-n5up2e+odkw4dpi8v+sshI8RrbM= -ts-node@^9.1.1: - version "9.1.1" - resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-9.1.1.tgz#51a9a450a3e959401bda5f004a72d54b936d376d" - integrity sha512-hPlt7ZACERQGf03M253ytLY3dHbGNGrAq9qIHWUY9XHYl1z7wYngSr3OQ5xmui8o2AaxsONxIzjafLUiWBo1Fg== - dependencies: +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" - source-map-support "^0.5.17" + v8-compile-cache-lib "^3.0.1" yn "3.1.1" tsd@^0.22.0: @@ -3300,10 +3344,10 @@ type-fest@^0.8.1: resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== -typescript@4.5.5: - version "4.5.5" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.5.5.tgz#d8c953832d28924a9e3d37c73d729c846c5896f3" - integrity sha512-TCTIul70LyWe6IJWT8QSYeA54WQe8EjQFU4wY52Fasj5UKx88LNYKCgBEHcOMOrFF1rKGbD8v/xcNWVUq9SymA== +typescript@^4.8.3: + version "4.8.3" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.8.3.tgz#d59344522c4bc464a65a730ac695007fdb66dd88" + integrity sha512-goMHfm00nWPa8UvR/CPSvykqf6dVV8x/dp0c5mFTMTIu0u0FlGWRioyy7Nn0PGAdHxpJZnuO/ut+PpQ8UiHAig== universalify@^2.0.0: version "2.0.0" @@ -3322,6 +3366,11 @@ util-deprecate@^1.0.1: resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= +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== + v8-compile-cache@^2.0.3: version "2.3.0" resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz#2de19618c66dc247dcfb6f99338035d8245a2cee"