diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 484dce4e..ffd57e6a 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -36,6 +36,6 @@ jobs: - name: Install Dependencies run: yarn install --frozen-lockfile --ignore-engines - name: Run tests - run: yarn test + run: yarn run test:full env: CI: true diff --git a/package.json b/package.json index 51476843..26ae3f96 100644 --- a/package.json +++ b/package.json @@ -19,7 +19,7 @@ "cli-ux": "^5.4.1", "execa": "^3.4.0", "fast-glob": "^3.1.1", - "handlebars": "^4.5.3", + "handlebars": "^4.6.0", "js-yaml": "^3.13.1", "listr": "^0.14.3", "rimraf": "^3.0.0", @@ -33,7 +33,7 @@ "@types/jest": "^24.0.25", "@types/js-yaml": "^3.12.1", "@types/listr": "^0.14.2", - "@types/node": "^12.12.24", + "@types/node": ">=10.0.0", "@types/rimraf": "^2.0.3", "fs-extra": "^8.1.0", "globby": "^10.0.2", @@ -41,8 +41,8 @@ "jest-extended": "^0.11.2", "np": "^5.2.1", "prettier": "^1.19.1", - "ts-jest": "^24.2.0", - "ts-node": "^8.5.4", + "ts-jest": "^24.3.0", + "ts-node": "^8.6.0", "tslint": "^5.20.1", "tslint-config-prettier": "^1.18.0", "typescript": "^3.7.4" @@ -90,7 +90,8 @@ "prepack": "rm -rf lib && tsc -b && cp -R src/templates lib/ && oclif-dev manifest && oclif-dev readme", "postpack": "rm -f oclif.manifest.json", "pretest": "rm -rf test/test-output/*-spec/ && npm run lint && tsc -b", - "test": "jest", + "test": "jest --testNamePattern=\"^((?!\\[E2E\\]).)*$\"", + "test:full": "jest", "test:debug": "node --inspect-brk node_modules/.bin/jest --runInBand", "test:watch-debug": "node --inspect-brk node_modules/.bin/jest --watch --runInBand", "version": "oclif-dev readme && git add README.md" diff --git a/src/commands/add-cds.ts b/src/commands/add-cds.ts index b5c3d4e5..296353a2 100644 --- a/src/commands/add-cds.ts +++ b/src/commands/add-cds.ts @@ -54,18 +54,20 @@ export default class AddCds extends Command { title: 'Creating files', task: async () => { const copyDescriptors = getCopyDescriptors(projectDir, getTemplatePaths(['add-cds'])); - await findConflicts(copyDescriptors, flags.force).catch(e => this.error(e, { exit: 11 })); + await findConflicts(copyDescriptors, flags.force).catch(e => this.error(flags.verbose ? e.stack : e.message, { exit: 11 })); await copyFiles(copyDescriptors, options); } }, { title: 'Adding dependencies to package.json', - task: async () => modifyPackageJson({ projectDir, force: flags.force, addCds: true }).catch(e => this.error(e, { exit: 12 })) + task: async () => + modifyPackageJson({ projectDir, force: flags.force, addCds: true }).catch(e => + this.error(flags.verbose ? e.stack : e.message, { exit: 12 }) + ) }, { title: 'Installing dependencies', - task: async () => - installDependencies(projectDir, flags.verbose).catch(e => this.error(`Error during npm install: ${e.message}`, { exit: 13 })), + task: async () => installDependencies(projectDir, flags.verbose).catch(e => this.error(flags.verbose ? e.stack : e.message, { exit: 13 })), enabled: () => !flags.skipInstall }, { @@ -77,8 +79,8 @@ export default class AddCds extends Command { await tasks.run(); this.printSuccessMessage(); - } catch (error) { - this.error(error, { exit: 1 }); + } catch (e) { + this.error(flags.verbose ? e.stack : e.message, { exit: 1 }); } } diff --git a/src/commands/init.ts b/src/commands/init.ts index 846823f5..ecffd9a0 100644 --- a/src/commands/init.ts +++ b/src/commands/init.ts @@ -96,7 +96,9 @@ export default class Init extends Command { if (isScaffold) { await buildScaffold(projectDir, flags.verbose, flags.addCds); } - const options = await this.getOptions(projectDir, isScaffold ? 'npm run start:prod' : flags.startCommand, flags.projectName); + const options = await this.getOptions(projectDir, isScaffold ? 'npm run start:prod' : flags.startCommand, flags.projectName).catch(e => + this.error(flags.verbose ? e.stack : e.message, { exit: 10 }) + ); await usageAnalytics(projectDir, flags.analytics, flags.analyticsSalt); @@ -105,7 +107,7 @@ export default class Init extends Command { title: 'Creating files', task: async () => { const copyDescriptors = getCopyDescriptors(projectDir, getTemplatePaths(this.getTemplateNames(isScaffold, flags.addCds))); - await findConflicts(copyDescriptors, flags.force).catch(e => this.error(e, { exit: 11 })); + await findConflicts(copyDescriptors, flags.force).catch(e => this.error(flags.verbose ? e.stack : e.message, { exit: 11 })); await copyFiles(copyDescriptors, options); } }, @@ -118,13 +120,12 @@ export default class Init extends Command { title: 'Adding dependencies to package.json', task: async () => modifyPackageJson({ projectDir, isScaffold, frontendScripts: flags.frontendScripts, force: flags.force, addCds: flags.addCds }).catch(e => - this.error(e, { exit: 12 }) + this.error(flags.verbose ? e.stack : e.message, { exit: 12 }) ) }, { title: 'Installing dependencies', - task: async () => - installDependencies(projectDir, flags.verbose).catch(e => this.error(`Error during npm install: ${e.message}`, { exit: 13 })), + task: async () => installDependencies(projectDir, flags.verbose).catch(e => this.error(flags.verbose ? e.stack : e.message, { exit: 13 })), enabled: () => !flags.skipInstall }, { @@ -137,7 +138,7 @@ export default class Init extends Command { this.printSuccessMessage(isScaffold, flags.addCds); } catch (error) { - this.error(error, { exit: 1 }); + this.error(flags.verbose ? error.stack : error.message, { exit: 1 }); } } @@ -158,7 +159,7 @@ export default class Init extends Command { } private async getOptions(projectDir: string, startCommand?: string, projectName?: string) { - const { name, scripts } = await parsePackageJson(projectDir).catch(err => this.error(err, { exit: 10 })); + const { name, scripts } = await parsePackageJson(projectDir); const options: { [key: string]: string } = { projectName: diff --git a/test/add-approuter.spec.ts b/test/add-approuter.spec.ts index 9d32bf6f..8cadc5de 100644 --- a/test/add-approuter.spec.ts +++ b/test/add-approuter.spec.ts @@ -34,11 +34,7 @@ describe('Add Approuter', () => { expect(files).toContain('approuter'); const approuterFiles = fs.readdirSync(path.resolve(projectDir, 'approuter')); - expect(approuterFiles).toContain('.npmrc'); - expect(approuterFiles).toContain('manifest.yml'); - expect(approuterFiles).toContain('package.json'); - expect(approuterFiles).toContain('xs-app.json'); - expect(approuterFiles).toContain('xs-security.json'); + expect(approuterFiles).toIncludeAllMembers(['.npmrc', 'manifest.yml', 'package.json', 'xs-app.json', 'xs-security.json']); }); it('should add necessary files to an existing project', async () => { @@ -52,11 +48,7 @@ describe('Add Approuter', () => { expect(files).toContain('approuter'); const approuterFiles = fs.readdirSync(path.resolve(projectDir, 'approuter')); - expect(approuterFiles).toContain('.npmrc'); - expect(approuterFiles).toContain('manifest.yml'); - expect(approuterFiles).toContain('package.json'); - expect(approuterFiles).toContain('xs-app.json'); - expect(approuterFiles).toContain('xs-security.json'); + expect(approuterFiles).toIncludeAllMembers(['.npmrc', 'manifest.yml', 'package.json', 'xs-app.json', 'xs-security.json']); }); it('should detect and fail if there are conflicts', async () => { diff --git a/test/add-cds.spec.ts b/test/add-cds.spec.ts index 37533b5b..ae4b044e 100644 --- a/test/add-cds.spec.ts +++ b/test/add-cds.spec.ts @@ -42,7 +42,7 @@ describe('Add CDS', () => { expect(dbFiles).toContain('data-model.cds'); const srvFiles = fs.readdirSync(path.resolve(projectDir, 'srv')); expect(srvFiles).toContain('cat-service.cds'); - }, 15000); + }); it('should detect and fail if there are conflicts', async () => { const projectDir = getCleanProjectDir(testOutputDir, 'add-cds-conflicts'); @@ -53,5 +53,5 @@ describe('Add CDS', () => { fs.writeFileSync(path.resolve(projectDir, 'db', 'data-model.cds'), 'some text', 'utf8'); await expect(AddCds.run([projectDir, '--skipInstall'])).rejects.toMatchSnapshot(); - }, 10000); + }); }); diff --git a/test/add-cx-server.spec.ts b/test/add-cx-server.spec.ts index 58cbcb11..c34a485b 100644 --- a/test/add-cx-server.spec.ts +++ b/test/add-cx-server.spec.ts @@ -23,9 +23,8 @@ describe('Add CX Server', () => { expect(files).toContain('cx-server'); const approuterFiles = fs.readdirSync(path.resolve(projectDir, 'cx-server')); - expect(approuterFiles).toContain('cx-server'); - expect(approuterFiles).toContain('server.cfg'); - }, 30000); + expect(approuterFiles).toIncludeAllMembers(['cx-server', 'server.cfg']); + }); it('should add the necessary files on windows', async () => { const projectDir = getCleanProjectDir(testOutputDir, 'add-cx-server'); @@ -36,10 +35,8 @@ describe('Add CX Server', () => { expect(files).toContain('cx-server'); const approuterFiles = fs.readdirSync(path.resolve(projectDir, 'cx-server')); - expect(approuterFiles).toContain('cx-server'); - expect(approuterFiles).toContain('cx-server.bat'); - expect(approuterFiles).toContain('server.cfg'); - }, 30000); + expect(approuterFiles).toIncludeAllMembers(['cx-server', 'cx-server.bat', 'server.cfg']); + }); it('should add necessary files to an existing project', async () => { const projectDir = getCleanProjectDir(testOutputDir, 'add-cx-server-to-existing-project'); @@ -52,9 +49,8 @@ describe('Add CX Server', () => { expect(files).toContain('cx-server'); const approuterFiles = fs.readdirSync(path.resolve(projectDir, 'cx-server')); - expect(approuterFiles).toContain('cx-server'); - expect(approuterFiles).toContain('server.cfg'); - }, 30000); + expect(approuterFiles).toIncludeAllMembers(['cx-server', 'server.cfg']); + }); it('should detect and fail if there are conflicts', async () => { const projectDir = getCleanProjectDir(testOutputDir, 'add-cx-server-conflicts'); @@ -63,5 +59,5 @@ describe('Add CX Server', () => { fs.createFileSync(path.resolve(projectDir, 'cx-server', 'cx-server')); await expect(AddCxServer.run([projectDir])).rejects.toMatchSnapshot(); - }, 30000); + }); }); diff --git a/test/init.spec.ts b/test/init.spec.ts index b8d796bd..ededcf89 100644 --- a/test/init.spec.ts +++ b/test/init.spec.ts @@ -20,7 +20,7 @@ describe('Init', () => { fs.removeSync(testOutputDir); }); - it('should create a new project with the necessary files', async () => { + it('[E2E] should create a new project with the necessary files', async () => { const projectDir = getCleanProjectDir(testOutputDir, 'full-init'); await Init.run([projectDir, '--projectName=testingApp', '--buildScaffold', '--no-analytics']); @@ -43,7 +43,7 @@ describe('Init', () => { expect(fs.readdirSync(path.resolve(reportsPath, 'coverage-reports', 'backend-integration')).length).toBeGreaterThan(1); }, 240000); - it('should create a new project with the necessary files when adding cds', async () => { + it('[E2E] should create a new project with the necessary files when adding cds', async () => { const projectDir = getCleanProjectDir(testOutputDir, 'full-init-cds'); await Init.run([projectDir, '--projectName=testingApp', '--buildScaffold', '--no-analytics', '--addCds']); @@ -69,7 +69,7 @@ describe('Init', () => { expect(fs.existsSync(path)).toBe(true); }); expect(fs.existsSync(path.resolve(projectDir, 'test'))).toBe(false); - }, 10000); + }); it('should add necessary files to an existing project when adding cds', async () => { const projectDir = getCleanProjectDir(testOutputDir, 'add-to-existing'); @@ -82,7 +82,7 @@ describe('Init', () => { .forEach(path => { expect(fs.existsSync(path)).toBe(true); }); - }, 10000); + }); it('init should detect and fail if there are conflicts', async () => { const projectDir = getCleanProjectDir(testOutputDir, 'detect-conflicts'); @@ -92,7 +92,7 @@ describe('Init', () => { await expect( Init.run([projectDir, '--projectName=testingApp', '--startCommand="npm start"', '--skipInstall', '--no-analytics']) ).rejects.toMatchSnapshot(); - }, 10000); + }); it('should add to .gitignore if there is one', async () => { const projectDir = getCleanProjectDir(testOutputDir, 'add-to-gitignore'); @@ -105,11 +105,9 @@ describe('Init', () => { .split('\n') .filter(entry => entry !== ''); - expect(gitignoreEntries).toContain('credentials.json'); - expect(gitignoreEntries).toContain('/s4hana_pipeline'); - expect(gitignoreEntries).toContain('/deployment'); + expect(gitignoreEntries).toIncludeAllMembers(['credentials.json', '/s4hana_pipeline', '/deployment']); expect(gitignoreEntries.length).toBeGreaterThan(29); - }, 10000); + }); it('should show a warning if the project is not using git', async () => { const projectDir = getCleanProjectDir(testOutputDir, 'warn-on-no-git'); @@ -128,7 +126,7 @@ describe('Init', () => { ' /deployment' ); expect(getWarnings).toHaveBeenCalled(); - }, 10000); + }); it('should add our scripts and dependencies to the package.json', async () => { const projectDir = getCleanProjectDir(testOutputDir, 'add-scripts-and-dependencies'); @@ -145,10 +143,8 @@ describe('Init', () => { expect(dependencies).toContain('@sap/cloud-sdk-core'); expect(devDependencies).toContain('@sap/cloud-sdk-test-util'); - ['ci-build', 'ci-package', 'ci-backend-unit-test', 'ci-frontend-unit-test', 'ci-integration-test', 'ci-e2e'].forEach(script => - expect(scripts).toContain(script) - ); - }, 10000); + expect(scripts).toIncludeAllMembers(['ci-build', 'ci-package', 'ci-backend-unit-test', 'ci-frontend-unit-test', 'ci-integration-test', 'ci-e2e']); + }); it('should add the analytics file', async () => { const projectDir = getCleanProjectDir(testOutputDir, 'add-to-gitignore'); @@ -173,5 +169,5 @@ describe('Init', () => { await Init.run([projectDir, '--projectName=testingApp', '--startCommand="npm start"', '--skipInstall', '--no-analytics']); expect(JSON.parse(fs.readFileSync(`${projectDir}/sap-cloud-sdk-analytics.json`, 'utf8'))).toEqual({ enabled: false }); - }, 10000); + }); }); diff --git a/test/package.spec.ts b/test/package.spec.ts index e3f9ab85..4fad9d88 100644 --- a/test/package.spec.ts +++ b/test/package.spec.ts @@ -43,7 +43,7 @@ describe('Package', () => { expect(fs.readdirSync(path.resolve(projectDir, 'deployment'))).toEqual(['README.md']); }); - it('should install productive dependencies only', async () => { + it('[E2E] should install productive dependencies only', async () => { const projectDir = getCleanProjectDir(testOutputDir, 'productive-dependencies'); fs.copySync(nestAppDir, projectDir, { recursive: true }); await Package.run([projectDir]); diff --git a/test/utils/__snapshots__/scaffold.spec.ts.snap b/test/utils/__snapshots__/scaffold.spec.ts.snap index 0bf16a30..47608fdd 100644 --- a/test/utils/__snapshots__/scaffold.spec.ts.snap +++ b/test/utils/__snapshots__/scaffold.spec.ts.snap @@ -1,6 +1,6 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`Scaffold Utils should build the scaffold 1`] = ` +exports[`Scaffold Utils [E2E] should build the scaffold 1`] = ` Array [ ".git", ".gitignore", diff --git a/test/utils/git-ignore.spec.ts b/test/utils/git-ignore.spec.ts index e5386d8d..144fd79a 100644 --- a/test/utils/git-ignore.spec.ts +++ b/test/utils/git-ignore.spec.ts @@ -21,8 +21,7 @@ describe('Git Ignore Utils', () => { modifyGitIgnore(projectDir, false); const gitIgnoreContent = fs.readFileSync(`${projectDir}/.gitignore`, { encoding: 'utf8' }).split('\n'); - expect(gitIgnoreContent).toContain('/s4hana_pipeline'); - expect(gitIgnoreContent).toContain('credentials.json'); + expect(gitIgnoreContent).toIncludeAllMembers(['/s4hana_pipeline', 'credentials.json']); }); it('should add cds paths to empty git ignore', () => { @@ -32,8 +31,7 @@ describe('Git Ignore Utils', () => { modifyGitIgnore(projectDir, true); const gitIgnoreContent = fs.readFileSync(`${projectDir}/.gitignore`, { encoding: 'utf8' }).split('\n'); - expect(gitIgnoreContent).toContain('gen/'); - expect(gitIgnoreContent).toContain('*.db'); + expect(gitIgnoreContent).toIncludeAllMembers(['gen/', '*.db']); }); it('should add paths to existing git ignore', () => { @@ -49,9 +47,7 @@ describe('Git Ignore Utils', () => { modifyGitIgnore(projectDir, false); const gitIgnoreContent = fs.readFileSync(`${projectDir}/.gitignore`, { encoding: 'utf8' }).split('\n'); - expect(gitIgnoreContent).toContain('/s4hana_pipeline'); - expect(gitIgnoreContent).toContain('myPath'); - expect(gitIgnoreContent).toContain('credentials.json'); + expect(gitIgnoreContent).toIncludeAllMembers(['/s4hana_pipeline', 'myPath', 'credentials.json']); }); it('warn if there is no git ignore', () => { diff --git a/test/utils/scaffold.spec.ts b/test/utils/scaffold.spec.ts index 29f88c78..b4955ac4 100644 --- a/test/utils/scaffold.spec.ts +++ b/test/utils/scaffold.spec.ts @@ -38,7 +38,7 @@ describe('Scaffold Utils', () => { expect(await shouldBuildScaffold(projectDir, false)).toBe(false); }); - it('should build the scaffold', async () => { + it('[E2E] should build the scaffold', async () => { const projectDir = getCleanProjectDir(testOutputDir, 'build-scaffold'); await buildScaffold(projectDir, false, false); diff --git a/yarn.lock b/yarn.lock index d99c1fbd..8e9791fd 100644 --- a/yarn.lock +++ b/yarn.lock @@ -672,15 +672,10 @@ resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.3.tgz#3dca0e3f33b200fc7d1139c0cd96c1268cadfd9d" integrity sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA== -"@types/node@*": - version "13.1.4" - resolved "https://registry.yarnpkg.com/@types/node/-/node-13.1.4.tgz#4cfd90175a200ee9b02bd6b1cd19bc349741607e" - integrity sha512-Lue/mlp2egZJoHXZr4LndxDAd7i/7SQYhV0EjWfb/a4/OZ6tuVwMCVPiwkU5nsEipxEf7hmkSU7Em5VQ8P5NGA== - -"@types/node@^12.12.24": - version "12.12.24" - resolved "https://registry.yarnpkg.com/@types/node/-/node-12.12.24.tgz#d4606afd8cf6c609036b854360367d1b2c78931f" - integrity sha512-1Ciqv9pqwVtW6FsIUKSZNB82E5Cu1I2bBTj1xuIHXLe/1zYLl3956Nbhg2MzSYHVfl9/rmanjbQIb7LibfCnug== +"@types/node@*", "@types/node@>=10.0.0": + version "13.1.6" + resolved "https://registry.yarnpkg.com/@types/node/-/node-13.1.6.tgz#076028d0b0400be8105b89a0a55550c86684ffec" + integrity sha512-Jg1F+bmxcpENHP23sVKkNuU3uaxPnsBMW0cLjleiikFKomJQbsn0Cqk2yDvQArqzZN6ABfBkZ0To7pQ8sLdWDg== "@types/normalize-package-data@^2.4.0": version "2.4.0" @@ -706,9 +701,9 @@ integrity sha512-gCubfBUZ6KxzoibJ+SCUc/57Ms1jz5NjHe4+dI2krNmU5zCPAphyLJYyTOg06ueIyfj+SaCUqmzun7ImlxDcKg== "@types/yargs@^13.0.0": - version "13.0.4" - resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-13.0.4.tgz#53d231cebe1a540e7e13727fc1f0d13ad4a9ba3b" - integrity sha512-Ke1WmBbIkVM8bpvsNEcGgQM70XcEh/nbpxQhW7FhrsbCsXSY9BmLB1+LHtD7r9zrsOcFlLiF+a/UeJsdfw3C5A== + version "13.0.5" + resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-13.0.5.tgz#18121bfd39dc12f280cee58f92c5b21d32041908" + integrity sha512-CF/+sxTO7FOwbIRL4wMv0ZYLCRfMid2HQpzDRyViH7kSpfoAFiMdGqKIxb1PxWfjtQXQhnQuD33lvRHNwr809Q== dependencies: "@types/yargs-parser" "*" @@ -1327,9 +1322,9 @@ cli-cursor@^3.1.0: restore-cursor "^3.1.0" cli-progress@^3.4.0: - version "3.4.0" - resolved "https://registry.yarnpkg.com/cli-progress/-/cli-progress-3.4.0.tgz#5f7459dad0258376e25149893427ba7f3a5160b4" - integrity sha512-35zcc1FsbPfN2dVonxUQwEnqMnI5kDFx2G4qGFGWgIDYqZ6+3t4/GjX/Vk0tq6bNgI9dEFcWLJ6AaLN17NLBDA== + version "3.5.0" + resolved "https://registry.yarnpkg.com/cli-progress/-/cli-progress-3.5.0.tgz#972517f3b71bb6d0ec74ceaeb392005376e9ca54" + integrity sha512-S1wR4xfcfLWbVBH6RwYat1nMCm2UsuygxNoiRYVAXQsuWKjCRgWRZVohXLmsWfiuAK0FFf7t9OyZ2JBmDWaQGA== dependencies: colors "^1.1.2" string-width "^2.1.1" @@ -2464,10 +2459,10 @@ growly@^1.3.0: resolved "https://registry.yarnpkg.com/growly/-/growly-1.3.0.tgz#f10748cbe76af964b7c96c93c6bcc28af120c081" integrity sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE= -handlebars@^4.1.2, handlebars@^4.5.3: - version "4.5.3" - resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.5.3.tgz#5cf75bd8714f7605713511a56be7c349becb0482" - integrity sha512-3yPecJoJHK/4c6aZhSvxOyG4vJKDshV36VHp0iVCDVh7o9w2vwi3NSnL2MMPj3YdduqaBcu7cGbggJQM0br9xA== +handlebars@^4.1.2, handlebars@^4.6.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.6.0.tgz#33af6c3eda930d7a924f5d8f1c6d8edc3180512e" + integrity sha512-i1ZUP7Qp2JdkMaFon2a+b0m5geE8Z4ZTLaGkgrObkEd+OkUKyRbRWw4KxuFCoHfdETSY1yf9/574eVoNSiK7pw== dependencies: neo-async "^2.6.0" optimist "^0.6.1" @@ -2716,9 +2711,9 @@ inquirer@^6.2.1: through "^2.3.6" inquirer@^7.0.0: - version "7.0.2" - resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-7.0.2.tgz#b39b205b95c9424839a1fd991d60426cf9bbc0e9" - integrity sha512-cZGvHaHwcR9E3xK9EGO5pHKELU+yaeJO7l2qGKIbqk4bCuDuAn15LCoUTS2nSkfv9JybFlnAGrOcVpCDZZOLhw== + version "7.0.3" + resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-7.0.3.tgz#f9b4cd2dff58b9f73e8d43759436ace15bed4567" + integrity sha512-+OiOVeVydu4hnCGLCSX+wedovR/Yzskv9BFqUNNKq9uU2qg7LCcCo3R86S2E7WLo0y/x2pnEZfZe1CoYnORUAw== dependencies: ansi-escapes "^4.2.1" chalk "^2.4.2" @@ -5127,9 +5122,9 @@ resolve@1.1.7: integrity sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs= resolve@1.x, resolve@^1.10.0, resolve@^1.3.2: - version "1.14.1" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.14.1.tgz#9e018c540fcf0c427d678b9931cbf45e984bcaff" - integrity sha512-fn5Wobh4cxbLzuHaE+nphztHy43/b++4M6SsGFC2gB8uYwf0C8LcarfCz1un7UTW8OFQg9iNjZ4xpcFVGebDPg== + version "1.14.2" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.14.2.tgz#dbf31d0fa98b1f29aa5169783b9c290cb865fea2" + integrity sha512-EjlOBLBO1kxsUxsKjLt7TAECyKW6fOh1VRkykQkKGzcBbjjPIxBqGh0jf7GJ3k/f5mxMqW3htMD3WdTUVtW8HQ== dependencies: path-parse "^1.0.6" @@ -5846,10 +5841,10 @@ triple-beam@^1.2.0, triple-beam@^1.3.0: resolved "https://registry.yarnpkg.com/triple-beam/-/triple-beam-1.3.0.tgz#a595214c7298db8339eeeee083e4d10bd8cb8dd9" integrity sha512-XrHUvV5HpdLmIj4uVMxHggLbFSZYIn7HEWsqePZcI50pco+MPqJ50wMGY794X7AOOhxOBAjbkqfAbEe/QMp2Lw== -ts-jest@^24.2.0: - version "24.2.0" - resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-24.2.0.tgz#7abca28c2b4b0a1fdd715cd667d65d047ea4e768" - integrity sha512-Yc+HLyldlIC9iIK8xEN7tV960Or56N49MDP7hubCZUeI7EbIOTsas6rXCMB4kQjLACJ7eDOF4xWEO5qumpKsag== +ts-jest@^24.3.0: + version "24.3.0" + resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-24.3.0.tgz#b97814e3eab359ea840a1ac112deae68aa440869" + integrity sha512-Hb94C/+QRIgjVZlJyiWwouYUF+siNJHJHknyspaOcZ+OQAIdFG/UrdQVXw/0B8Z3No34xkUXZJpOTy9alOWdVQ== dependencies: bs-logger "0.x" buffer-from "1.x" @@ -5876,16 +5871,16 @@ ts-morph@4.0.1: multimatch "^4.0.0" typescript "^3.0.1" -ts-node@^8.5.4: - version "8.5.4" - resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-8.5.4.tgz#a152add11fa19c221d0b48962c210cf467262ab2" - integrity sha512-izbVCRV68EasEPQ8MSIGBNK9dc/4sYJJKYA+IarMQct1RtEot6Xp0bXuClsbUSnKpg50ho+aOAx8en5c+y4OFw== +ts-node@^8.6.0: + version "8.6.0" + resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-8.6.0.tgz#347a5d2225b7bc2f617d40853e38f6507c39ce0a" + integrity sha512-NVJ/5ZjrxCS445zMIxGWiieTZoWcHbqtVKa+1V7opSmOFCYi7fvkugEXZBC9IvUnEzNewZWy8dw0u6iSTridpA== dependencies: arg "^4.1.0" diff "^4.0.1" make-error "^1.1.1" source-map-support "^0.5.6" - yn "^3.0.0" + yn "^4.0.0" tslib@1.9.0: version "1.9.0" @@ -6028,9 +6023,9 @@ typescript@^3.0.1, typescript@^3.7.4: integrity sha512-A25xv5XCtarLwXpcDNZzCGvW2D1S3/bACratYBx2sax8PefsFhlYmkQicKHvpYflFS8if4zne5zT5kpJ7pzuvw== uglify-js@^3.1.4: - version "3.7.3" - resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.7.3.tgz#f918fce9182f466d5140f24bb0ff35c2d32dcc6a" - integrity sha512-7tINm46/3puUA4hCkKYo4Xdts+JDaVC9ZPRcG8Xw9R4nhO/gZgUM3TENq8IF4Vatk8qCig4MzP/c8G4u2BkVQg== + version "3.7.4" + resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.7.4.tgz#e6d83a1aa32ff448bd1679359ab13d8db0fe0743" + integrity sha512-tinYWE8X1QfCHxS1lBS8yiDekyhSXOO6R66yNOCdUJeojxxw+PX2BHAz/BWyW7PQ7pkiWVxJfIEbiDxyLWvUGg== dependencies: commander "~2.20.3" source-map "~0.6.1" @@ -6438,7 +6433,7 @@ yargs@^13.3.0: y18n "^4.0.0" yargs-parser "^13.1.1" -yn@^3.0.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50" - integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q== +yn@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/yn/-/yn-4.0.0.tgz#611480051ea43b510da1dfdbe177ed159f00a979" + integrity sha512-huWiiCS4TxKc4SfgmTwW1K7JmXPPAmuXWYy4j9qjQo4+27Kni8mGhAAi1cloRWmBe2EqcLgt3IGqQoRL/MtPgg==