diff --git a/.eslintrc.json b/.eslintrc.json index 03363336aa..820673eaa8 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -13,7 +13,7 @@ "node": true }, "extends": [ - "airbnb" + "airbnb-base" ], "rules": { "class-methods-use-this": "off", diff --git a/package.json b/package.json index da27e06c8f..2ae6ef42a4 100644 --- a/package.json +++ b/package.json @@ -120,8 +120,8 @@ "@types/webpack-dev-middleware": "^2.0.3", "@types/webpack-hot-middleware": "^2.16.3", "@types/webpack-merge": "^4.1.5", - "@typescript-eslint/eslint-plugin": "^1.9.0", - "@typescript-eslint/parser": "^1.9.0", + "@typescript-eslint/eslint-plugin": "^2.0.0", + "@typescript-eslint/parser": "^2.0.0", "asar": "^2.0.1", "babel-plugin-source-map-support": "^2.1.1", "chai": "4.2.0", @@ -130,12 +130,10 @@ "coveralls": "^3.0.4", "cross-env": "^5.0.0", "cz-customizable": "^6.2.0", - "eslint": "^5.16.0", - "eslint-config-airbnb": "^17.1.1", + "eslint": "^6.1.0", + "eslint-config-airbnb-base": "^14.0.0", "eslint-plugin-import": "^2.18.2", - "eslint-plugin-jsx-a11y": "^6.2.3", "eslint-plugin-mocha": "^6.1.0", - "eslint-plugin-react": "^7.14.2", "fetch-mock": "^7.3.9", "generate-changelog": "^1.8.0", "listr": "^0.14.1", diff --git a/packages/api/cli/src/electron-forge-install.ts b/packages/api/cli/src/electron-forge-install.ts index 433bb0ce7a..288be6db27 100644 --- a/packages/api/cli/src/electron-forge-install.ts +++ b/packages/api/cli/src/electron-forge-install.ts @@ -29,7 +29,7 @@ import './util/terminate'; message: 'Multiple potential assets found, please choose one from the list below:'.cyan, }); - return assets.find(asset => asset.id === assetID)!; + return assets.find((asset) => asset.id === assetID)!; }; await api.install({ diff --git a/packages/api/cli/src/electron-forge-start.ts b/packages/api/cli/src/electron-forge-start.ts index d09c8947ce..fc192dc0ab 100644 --- a/packages/api/cli/src/electron-forge-start.ts +++ b/packages/api/cli/src/electron-forge-start.ts @@ -49,8 +49,8 @@ import workingDir from './util/working-dir'; if (program.vscode && appArgs) { // Args are in the format ~arg~ so we need to strip the "~" appArgs = appArgs - .map(arg => arg.substr(1, arg.length - 2)) - .filter(arg => arg.length > 0); + .map((arg) => arg.substr(1, arg.length - 2)) + .filter((arg) => arg.length > 0); } if (program.appPath) opts.appPath = program.appPath; @@ -81,6 +81,6 @@ import workingDir from './util/working-dir'; child.on('exit', onExit); child.on('restarted', onRestart); }; - listenForExit(spawned); + listenForExit(spawned as ChildProcess); }); })(); diff --git a/packages/api/cli/src/electron-forge.ts b/packages/api/cli/src/electron-forge.ts index aa31e40dd7..efb804114a 100755 --- a/packages/api/cli/src/electron-forge.ts +++ b/packages/api/cli/src/electron-forge.ts @@ -12,8 +12,8 @@ program.executeSubCommand = (argv: string[], args: string[], unknown: string[]) let indexOfDoubleDash = process.argv.indexOf('--'); indexOfDoubleDash = indexOfDoubleDash < 0 ? process.argv.length + 1 : indexOfDoubleDash; - const passThroughArgs = args.filter(arg => process.argv.indexOf(arg) > indexOfDoubleDash); - const normalArgs = args.filter(arg => process.argv.indexOf(arg) <= indexOfDoubleDash); + const passThroughArgs = args.filter((arg) => process.argv.indexOf(arg) > indexOfDoubleDash); + const normalArgs = args.filter((arg) => process.argv.indexOf(arg) <= indexOfDoubleDash); let newArgs = args; let newUnknown = unknown; diff --git a/packages/api/cli/src/util/check-system.ts b/packages/api/cli/src/util/check-system.ts index 3735f3f1aa..dfa1da64b8 100644 --- a/packages/api/cli/src/util/check-system.ts +++ b/packages/api/cli/src/util/check-system.ts @@ -12,7 +12,7 @@ const d = debug('electron-forge:check-system'); async function checkGitExists() { return new Promise((resolve) => { - exec('git --version', err => resolve(!err)); + exec('git --version', (err) => resolve(!err)); }); } @@ -93,7 +93,7 @@ export default async function (ora: OraImpl): Promise { checkGitExists(), checkNodeVersion(), checkPackageManagerVersion(ora), - ])).every(check => check); + ])).every((check) => check); } d('skipping system check'); return true; diff --git a/packages/api/core/src/api/index.ts b/packages/api/core/src/api/index.ts index b3bd51c3cc..b471aef6ab 100644 --- a/packages/api/core/src/api/index.ts +++ b/packages/api/core/src/api/index.ts @@ -10,8 +10,7 @@ import _package, { PackageOptions } from './package'; import publish, { PublishOptions } from './publish'; import start, { StartOptions } from './start'; -import { fromBuildIdentifier } from '../util/forge-config'; -import { hasYarn, yarnOrNpmSpawn } from '../util/yarn-or-npm'; +import ForgeUtils from '../util'; export class ForgeAPI { /** @@ -81,22 +80,6 @@ export class ForgeAPI { } } -export class ForgeUtils { - /** - * Helper for creating a dynamic config value that will get it's real value - * based on the "buildIdentifier" in your forge config. - * - * Usage: - * `fromBuildIdentifier({ stable: 'App', beta: 'App Beta' })` - */ - fromBuildIdentifier(map: { [key: string]: T | undefined }) { - return fromBuildIdentifier(map); - } - - hasYarn = hasYarn; - - yarnOrNpmSpawn = yarnOrNpmSpawn; -} const api = new ForgeAPI(); const utils = new ForgeUtils(); diff --git a/packages/api/core/src/api/init-scripts/init-custom.ts b/packages/api/core/src/api/init-scripts/init-custom.ts index ab808f0d1f..2c5a75a7c2 100644 --- a/packages/api/core/src/api/init-scripts/init-custom.ts +++ b/packages/api/core/src/api/init-scripts/init-custom.ts @@ -4,8 +4,6 @@ import resolvePackage from 'resolve-package'; import { ForgeTemplate } from '@electron-forge/shared-types'; import installDepList, { DepType } from '../../util/install-dependencies'; -// https://github.com/benmosher/eslint-plugin-import/issues/1120 -// eslint-disable-next-line import/named import { PossibleModule } from '../../util/require-search'; const d = debug('electron-forge:init:custom'); diff --git a/packages/api/core/src/api/init-scripts/init-git.ts b/packages/api/core/src/api/init-scripts/init-git.ts index 54ce0ca062..64f26f3468 100644 --- a/packages/api/core/src/api/init-scripts/init-git.ts +++ b/packages/api/core/src/api/init-scripts/init-git.ts @@ -13,7 +13,7 @@ export default async (dir: string) => { if (err) { // not run within a Git repository d('executing "git init" in directory:', dir); - exec('git init', { cwd: dir }, initErr => (initErr ? reject(initErr) : resolve())); + exec('git init', { cwd: dir }, (initErr) => (initErr ? reject(initErr) : resolve())); } else { d('.git directory already exists, skipping git initialization'); resolve(); diff --git a/packages/api/core/src/api/install.ts b/packages/api/core/src/api/install.ts index ff752c58b4..47e2ac2ede 100644 --- a/packages/api/core/src/api/install.ts +++ b/packages/api/core/src/api/install.ts @@ -96,7 +96,7 @@ export default async ({ throw new Error(`Repository "${repo}" has no releases`); } - releases = releases.filter(release => !release.prerelease || prerelease); + releases = releases.filter((release) => !release.prerelease || prerelease); const sortedReleases = releases.sort((releaseA, releaseB) => { let tagA = releaseA.tag_name; @@ -181,7 +181,7 @@ export default async ({ }; const suffixFnIdent = Object.keys(installActions[process.platform]) - .find(suffix => targetAsset.name.endsWith(suffix)); + .find((suffix) => targetAsset.name.endsWith(suffix)); if (!suffixFnIdent) { throw new Error(`No installer to handle "${targetAsset.name}"`); } diff --git a/packages/api/core/src/api/package.ts b/packages/api/core/src/api/package.ts index 6cb153c5ca..0924af4351 100644 --- a/packages/api/core/src/api/package.ts +++ b/packages/api/core/src/api/package.ts @@ -34,7 +34,7 @@ type ElectronPackagerAfterCopyHook = ( */ function resolveHooks(hooks: (string | ElectronPackagerAfterCopyHook)[] | undefined, dir: string) { if (hooks) { - return hooks.map(hook => ( + return hooks.map((hook) => ( typeof hook === 'string' ? requireSearch(dir, [hook]) as ElectronPackagerAfterCopyHook : hook @@ -170,19 +170,21 @@ export default async ({ }) as ElectronPackagerAfterCopyHook]; afterExtractHooks.push(...resolveHooks(forgeConfig.packagerConfig.afterExtract, dir)); - const packageOpts: packager.Options = Object.assign({ + type PackagerArch = Exclude; + + const packageOpts: packager.Options = { asar: false, overwrite: true, - }, forgeConfig.packagerConfig, { + ...forgeConfig.packagerConfig, dir, - arch, + arch: arch as PackagerArch, platform, afterCopy: sequentialHooks(afterCopyHooks), afterExtract: sequentialHooks(afterExtractHooks), afterPrune: sequentialHooks(afterPruneHooks), out: calculatedOutDir, electronVersion: await getElectronVersion(dir, packageJSON), - }); + }; packageOpts.quiet = true; if (packageOpts.all) { diff --git a/packages/api/core/src/api/publish.ts b/packages/api/core/src/api/publish.ts index fc278be1ec..8bc4a0ee69 100644 --- a/packages/api/core/src/api/publish.ts +++ b/packages/api/core/src/api/publish.ts @@ -3,6 +3,7 @@ import { asyncOra } from '@electron-forge/async-ora'; import { IForgeResolvablePublisher, IForgePublisher, + ForgeConfigPublisher, ForgeMakeResult, // ForgePlatform, } from '@electron-forge/shared-types'; @@ -34,7 +35,7 @@ export interface PublishOptions { * The publish targets, by default pulled from forge config, set this prop to * override that list */ - publishTargets?: (IForgeResolvablePublisher | IForgePublisher | string)[]; + publishTargets?: ForgeConfigPublisher[]; /** * Options object to passed through to make() */ @@ -103,10 +104,11 @@ const publish = async ({ if (!makeResults) { d('triggering make'); - makeResults = await make(Object.assign({ + makeResults = await make({ dir, interactive, - }, makeOptions)); + ...makeOptions, + }); } else { // Restore values from dry run d('restoring publish settings from dry run'); @@ -142,9 +144,9 @@ const publish = async ({ // .filter(publisher => (typeof publisher !== 'string' && publisher.platforms) // ? publisher.platforms.indexOf(testPlatform) !== -1 : true); } - publishTargets = publishTargets.map((target) => { + publishTargets = (publishTargets as ForgeConfigPublisher[]).map((target) => { if (typeof target === 'string') { - return (forgeConfig.publishers || []).find((p) => { + return (forgeConfig.publishers || []).find((p: ForgeConfigPublisher) => { if (typeof p === 'string') return false; // eslint-disable-next-line no-underscore-dangle if ((p as IForgePublisher).__isElectronForgePublisher) return false; @@ -152,7 +154,7 @@ const publish = async ({ }) || { name: target }; } return target; - }) as (IForgeResolvablePublisher | IForgePublisher)[]; + }); for (const publishTarget of publishTargets) { let publisher: PublisherBase; diff --git a/packages/api/core/src/api/start.ts b/packages/api/core/src/api/start.ts index 742d006dc0..69266ff435 100644 --- a/packages/api/core/src/api/start.ts +++ b/packages/api/core/src/api/start.ts @@ -82,10 +82,13 @@ export default async ({ const spawnOpts = { cwd: dir, stdio: 'inherit', - env: Object.assign({}, process.env, enableLogging ? { - ELECTRON_ENABLE_LOGGING: 'true', - ELECTRON_ENABLE_STACK_DUMPING: 'true', - } : {}) as NodeJS.ProcessEnv, + env: ({ + ...process.env, + ...(enableLogging ? { + ELECTRON_ENABLE_LOGGING: 'true', + ELECTRON_ENABLE_STACK_DUMPING: 'true', + } : {}), + }) as NodeJS.ProcessEnv, }; if (runAsNode) { diff --git a/packages/api/core/src/util/electron-version.ts b/packages/api/core/src/util/electron-version.ts index 181c4b3610..d933e88091 100644 --- a/packages/api/core/src/util/electron-version.ts +++ b/packages/api/core/src/util/electron-version.ts @@ -50,7 +50,7 @@ export async function getElectronVersion(dir: string, packageJSON: any): Promise if (!packageJSON.devDependencies) { throw new Error('package.json for app does not have any devDependencies'.red); } - const packageName = electronPackageNames.find(pkg => packageJSON.devDependencies[pkg]); + const packageName = electronPackageNames.find((pkg) => packageJSON.devDependencies[pkg]); if (packageName === undefined) { throw new Error('Could not find any Electron packages in devDependencies'); } @@ -82,11 +82,11 @@ export function updateElectronDependency( const alteredDev = ([] as string[]).concat(dev); let alteredExact = ([] as string[]).concat(exact); if (Object.keys(packageJSON.devDependencies).find(findElectronDep)) { - alteredExact = alteredExact.filter(dep => dep !== 'electron'); + alteredExact = alteredExact.filter((dep) => dep !== 'electron'); } else { const electronKey = Object.keys(packageJSON.dependencies).find(findElectronDep); if (electronKey) { - alteredExact = alteredExact.filter(dep => dep !== 'electron'); + alteredExact = alteredExact.filter((dep) => dep !== 'electron'); d(`Moving ${electronKey} from dependencies to devDependencies`); alteredDev.push(`${electronKey}@${packageJSON.dependencies[electronKey]}`); delete packageJSON.dependencies[electronKey]; diff --git a/packages/api/core/src/util/forge-config.ts b/packages/api/core/src/util/forge-config.ts index 668938e386..b54e59bb76 100644 --- a/packages/api/core/src/util/forge-config.ts +++ b/packages/api/core/src/util/forge-config.ts @@ -116,15 +116,16 @@ export default async (dir: string) => { } else if (typeof forgeConfig !== 'object') { throw new Error('Expected packageJSON.config.forge to be an object or point to a requirable JS file'); } - forgeConfig = Object.assign({ + forgeConfig = { + electronRebuildConfig: {}, packagerConfig: {}, - rebuildConfig: {}, makers: [], publishers: [], plugins: [], - }, forgeConfig); + ...forgeConfig, + }; - const templateObj = Object.assign({}, packageJSON, { year: (new Date()).getFullYear() }); + const templateObj = { ...packageJSON, year: (new Date()).getFullYear() }; const template = (obj: any) => { Object.keys(obj).forEach((objKey) => { if (typeof obj[objKey] === 'object' && obj !== null) { diff --git a/packages/api/core/src/util/index.ts b/packages/api/core/src/util/index.ts new file mode 100644 index 0000000000..c366897692 --- /dev/null +++ b/packages/api/core/src/util/index.ts @@ -0,0 +1,19 @@ +import { fromBuildIdentifier } from './forge-config'; +import { hasYarn, yarnOrNpmSpawn } from './yarn-or-npm'; + +export default class ForgeUtils { + /** + * Helper for creating a dynamic config value that will get it's real value + * based on the "buildIdentifier" in your forge config. + * + * Usage: + * `fromBuildIdentifier({ stable: 'App', beta: 'App Beta' })` + */ + fromBuildIdentifier(map: { [key: string]: T | undefined }) { + return fromBuildIdentifier(map); + } + + hasYarn = hasYarn; + + yarnOrNpmSpawn = yarnOrNpmSpawn; +} diff --git a/packages/api/core/src/util/publish-state.ts b/packages/api/core/src/util/publish-state.ts index c582bf7b61..3946c4419b 100644 --- a/packages/api/core/src/util/publish-state.ts +++ b/packages/api/core/src/util/publish-state.ts @@ -18,14 +18,14 @@ export default class PublishState { if ((await fs.stat(subDir)).isDirectory()) { const filePaths = (await fs.readdir(subDir)) - .filter(fileName => fileName.endsWith(EXTENSION)) - .map(fileName => path.resolve(subDir, fileName)); + .filter((fileName) => fileName.endsWith(EXTENSION)) + .map((fileName) => path.resolve(subDir, fileName)); for (const filePath of filePaths) { const state = new PublishState(filePath); await state.load(); // eslint-disable-next-line max-len - state.state.artifacts = state.state.artifacts.map(artifactPath => path.resolve(rootDir, artifactPath)); + state.state.artifacts = state.state.artifacts.map((artifactPath) => path.resolve(rootDir, artifactPath)); states.push(state); } } @@ -38,7 +38,7 @@ export default class PublishState { const id = crypto.createHash('SHA256').update(JSON.stringify(artifacts)).digest('hex'); for (const artifact of artifacts) { // eslint-disable-next-line max-len - artifact.artifacts = artifact.artifacts.map(artifactPath => path.relative(rootDir, artifactPath)); + artifact.artifacts = artifact.artifacts.map((artifactPath) => path.relative(rootDir, artifactPath)); const publishState = new PublishState(path.resolve(directory, id, 'null'), false); publishState.state = artifact; await publishState.saveToDisk(); diff --git a/packages/api/core/src/util/rebuild.ts b/packages/api/core/src/util/rebuild.ts index 96c43124f5..7874e2adf2 100644 --- a/packages/api/core/src/util/rebuild.ts +++ b/packages/api/core/src/util/rebuild.ts @@ -12,11 +12,12 @@ export default async ( config: Partial = {}, ) => { await asyncOra('Preparing native dependencies', async (rebuildSpinner) => { - const rebuilder = rebuild(Object.assign({}, config, { + const rebuilder = rebuild({ + ...config, buildPath, electronVersion, arch, - })); + }); const { lifecycle } = rebuilder; let found = 0; diff --git a/packages/api/core/src/util/require-search.ts b/packages/api/core/src/util/require-search.ts index 8e3a99d35e..af7e17399e 100644 --- a/packages/api/core/src/util/require-search.ts +++ b/packages/api/core/src/util/require-search.ts @@ -5,8 +5,8 @@ const d = debug('electron-forge:require-search'); export function requireSearchRaw(relativeTo: string, paths: string[]): T | null { const testPaths = paths - .concat(paths.map(mapPath => path.resolve(relativeTo, mapPath))) - .concat(paths.map(mapPath => path.resolve(relativeTo, 'node_modules', mapPath))); + .concat(paths.map((mapPath) => path.resolve(relativeTo, mapPath))) + .concat(paths.map((mapPath) => path.resolve(relativeTo, 'node_modules', mapPath))); d('searching', testPaths, 'relative to', relativeTo); for (const testPath of testPaths) { try { diff --git a/packages/api/core/src/util/upgrade-forge-config.ts b/packages/api/core/src/util/upgrade-forge-config.ts index 79129d8b79..703452f25d 100644 --- a/packages/api/core/src/util/upgrade-forge-config.ts +++ b/packages/api/core/src/util/upgrade-forge-config.ts @@ -133,7 +133,7 @@ export default function upgradeForgeConfig(forge5Config: any): ForgeConfig { export function updateUpgradedForgeDevDeps(packageJSON: any, devDeps: string[]): string[] { const forgeConfig = packageJSON.config.forge; - devDeps = devDeps.filter(dep => !dep.startsWith('@electron-forge/maker-')); + devDeps = devDeps.filter((dep) => !dep.startsWith('@electron-forge/maker-')); // eslint-disable-next-line max-len devDeps = devDeps.concat(forgeConfig.makers.map((maker: IForgeResolvableMaker) => siblingDep(path.basename(maker.name)))); // eslint-disable-next-line max-len diff --git a/packages/api/core/test/fast/forge-config_spec.ts b/packages/api/core/test/fast/forge-config_spec.ts index 3e8da3d656..0b2d9f5675 100644 --- a/packages/api/core/test/fast/forge-config_spec.ts +++ b/packages/api/core/test/fast/forge-config_spec.ts @@ -5,7 +5,7 @@ import findConfig from '../../src/util/forge-config'; const defaults = { packagerConfig: {}, - rebuildConfig: {}, + electronRebuildConfig: {}, makers: [], publishers: [], plugins: [], @@ -15,12 +15,13 @@ describe('forge-config', () => { it('should resolve the object in package.json with defaults if one exists', async () => { const config = await findConfig(path.resolve(__dirname, '../fixture/dummy_app')); delete config.pluginInterface; - expect(config).to.be.deep.equal(Object.assign({}, defaults, { + expect(config).to.be.deep.equal({ + ...defaults, packagerConfig: { baz: {}, }, s3: {}, - })); + }); }); it('should set a pluginInterface', async () => { @@ -59,12 +60,13 @@ describe('forge-config', () => { delete config.topLevelProp; delete config.topLevelUndef; delete config.regexp; - expect(config).to.be.deep.equal(Object.assign({}, defaults, { + expect(config).to.be.deep.equal({ + ...defaults, buildIdentifier: 'beta', packagerConfig: { foo: 'bar', baz: {} }, s3: {}, electronReleaseServer: {}, - })); + }); }); it('should resolve the JS file exports in config.forge points to a JS file and maintain functions', async () => { diff --git a/packages/api/core/test/fast/hook_spec.ts b/packages/api/core/test/fast/hook_spec.ts index 83f30b15a8..e7e3a4af70 100644 --- a/packages/api/core/test/fast/hook_spec.ts +++ b/packages/api/core/test/fast/hook_spec.ts @@ -1,4 +1,4 @@ -import { ForgeConfig } from '@electron-forge/shared-types'; +import { ForgeConfig, ForgeHookFn } from '@electron-forge/shared-types'; import { expect } from 'chai'; import { stub, SinonStub } from 'sinon'; @@ -14,31 +14,31 @@ const fakeConfig = { describe('hooks', () => { describe('runHook', () => { it('should not error when running non existent hooks', async () => { - await runHook(Object.assign({}, fakeConfig), 'magic'); + await runHook({ ...fakeConfig }, 'magic'); }); it('should not error when running a hook that is not a function', async () => { - await runHook(Object.assign({ hooks: { myHook: 'abc' } }, fakeConfig), 'abc'); + await runHook({ hooks: { myHook: ('abc' as unknown) as ForgeHookFn }, ...fakeConfig }, 'abc'); }); it('should run the hook if it is provided as a function', async () => { const myStub = stub(); myStub.returns(Promise.resolve()); - await runHook(Object.assign({ hooks: { myHook: myStub } }, fakeConfig), 'myHook'); + await runHook({ hooks: { myHook: myStub }, ...fakeConfig }, 'myHook'); expect(myStub.callCount).to.equal(1); }); }); describe('runMutatingHook', () => { it('should return the input when running non existent hooks', async () => { - expect(await runMutatingHook(Object.assign({}, fakeConfig), 'magic', 'input')).to.equal('input'); + expect(await runMutatingHook({ ...fakeConfig }, 'magic', 'input')).to.equal('input'); }); it('should return the mutated input when returned from a hook', async () => { fakeConfig.pluginInterface.triggerMutatingHook = stub().returnsArg(1); const myStub = stub(); myStub.returns(Promise.resolve('magneto')); - const output = await runMutatingHook(Object.assign({ hooks: { myHook: myStub } }, fakeConfig), 'myHook', 'input'); + const output = await runMutatingHook({ hooks: { myHook: myStub }, ...fakeConfig }, 'myHook', 'input'); expect(output).to.equal('magneto'); expect((fakeConfig.pluginInterface.triggerMutatingHook as SinonStub).firstCall.args[1]).to.equal('magneto'); }); diff --git a/packages/api/core/test/fast/start_spec.ts b/packages/api/core/test/fast/start_spec.ts index 89f6a83676..577bea7898 100644 --- a/packages/api/core/test/fast/start_spec.ts +++ b/packages/api/core/test/fast/start_spec.ts @@ -131,7 +131,7 @@ describe('start', () => { it('should throw if no version is in package.json', async () => { resolveStub.returnsArg(0); - packageJSON = Object.assign({}, packageJSON); + packageJSON = { ...packageJSON }; delete packageJSON.version; await expect(start({ dir: __dirname, diff --git a/packages/api/core/test/fast/upgrade-forge-config_spec.ts b/packages/api/core/test/fast/upgrade-forge-config_spec.ts index 2fc5ed840f..4c1f455b51 100644 --- a/packages/api/core/test/fast/upgrade-forge-config_spec.ts +++ b/packages/api/core/test/fast/upgrade-forge-config_spec.ts @@ -96,10 +96,11 @@ describe('upgradeForgeConfig', () => { owner: 'user', }; const oldConfig = { - github_repository: Object.assign({ + github_repository: { options: octokitOptions, draft: true, - }, repo), + ...repo, + }, }; const newConfig = upgradeForgeConfig(oldConfig); expect(newConfig.publishers).to.have.lengthOf(1); @@ -143,8 +144,8 @@ describe('updateUpgradedForgeDevDeps', () => { const actual = updateUpgradedForgeDevDeps(packageJSON, []); expect(actual).to.have.lengthOf(2); - expect(actual.find(dep => dep.startsWith('@electron-forge/maker-zip'))).to.not.equal(undefined); - expect(actual.find(dep => dep.startsWith('@electron-forge/maker-squirrel'))).to.not.equal(undefined); + expect(actual.find((dep) => dep.startsWith('@electron-forge/maker-zip'))).to.not.equal(undefined); + expect(actual.find((dep) => dep.startsWith('@electron-forge/maker-squirrel'))).to.not.equal(undefined); }); it('adds publishers to devDependencies', () => { @@ -156,8 +157,8 @@ describe('updateUpgradedForgeDevDeps', () => { const actual = updateUpgradedForgeDevDeps(packageJSON, []); expect(actual).to.have.lengthOf(2); - expect(actual.find(dep => dep.startsWith('@electron-forge/publisher-github'))).to.not.equal(undefined); - expect(actual.find(dep => dep.startsWith('@electron-forge/publisher-snapcraft'))).to.not.equal(undefined); + expect(actual.find((dep) => dep.startsWith('@electron-forge/publisher-github'))).to.not.equal(undefined); + expect(actual.find((dep) => dep.startsWith('@electron-forge/publisher-snapcraft'))).to.not.equal(undefined); }); it('adds electron-compile plugin to devDependencies when electron-prebuilt-compile is in devDependencies', () => { diff --git a/packages/api/core/test/slow/api_spec_slow.ts b/packages/api/core/test/slow/api_spec_slow.ts index 32fcbf12d9..a27573cdf8 100644 --- a/packages/api/core/test/slow/api_spec_slow.ts +++ b/packages/api/core/test/slow/api_spec_slow.ts @@ -14,7 +14,7 @@ import { InitOptions } from '../../src/api'; const asar = require('asar'); -const nodeInstallerArg = process.argv.find(arg => arg.startsWith('--installer=')) || `--installer=${yarnOrNpm()}`; +const nodeInstallerArg = process.argv.find((arg) => arg.startsWith('--installer=')) || `--installer=${yarnOrNpm()}`; const nodeInstaller = nodeInstallerArg.substr(12); const forge = proxyquire.noCallThru().load('../../src/api', { './install': async () => {}, @@ -36,7 +36,7 @@ describe(`electron-forge API (with installer=${nodeInstaller})`, () => { if (beforeInit) { beforeInit(); } - await forge.init(Object.assign({}, params, { dir })); + await forge.init({ ...params, dir }); }); }; @@ -332,13 +332,13 @@ describe(`electron-forge API (with installer=${nodeInstaller})`, () => { '@electron-forge/maker-wix', '@electron-forge/maker-zip', ]; - return allMakers.map(maker => require.resolve(maker)) + return allMakers.map((maker) => require.resolve(maker)) .filter((makerPath) => { const MakerClass = require(makerPath).default; const maker = new MakerClass(); return maker.isSupportedOnCurrentPlatform() === good; }) - .map(makerPath => () => ({ + .map((makerPath) => () => ({ name: makerPath, platforms: [process.platform], config: { diff --git a/packages/installer/dmg/src/InstallerDMG.ts b/packages/installer/dmg/src/InstallerDMG.ts index 28451ae0c1..e3696b6255 100644 --- a/packages/installer/dmg/src/InstallerDMG.ts +++ b/packages/installer/dmg/src/InstallerDMG.ts @@ -14,7 +14,7 @@ export default class InstallerDMG extends InstallerDarwin { installSpinner, }: InstallerOptions) { const mounts = await getMountedImages(); - let targetMount = mounts.find(mount => mount.imagePath === filePath); + let targetMount = mounts.find((mount) => mount.imagePath === filePath); if (!targetMount) { targetMount = await mountImage(filePath); @@ -22,7 +22,7 @@ export default class InstallerDMG extends InstallerDarwin { try { const volumePath = path.resolve('/Volumes', targetMount.mountPath); - const appName = (await fs.readdir(volumePath)).find(file => file.endsWith('.app')); + const appName = (await fs.readdir(volumePath)).find((file) => file.endsWith('.app')); if (!appName) { throw new Error('Failed to find .app file in DMG'); } diff --git a/packages/installer/zip/src/InstallerZip.ts b/packages/installer/zip/src/InstallerZip.ts index 5847fa88f6..dd9cb858d0 100644 --- a/packages/installer/zip/src/InstallerZip.ts +++ b/packages/installer/zip/src/InstallerZip.ts @@ -15,8 +15,8 @@ export default class InstallerZip extends InstallerDarwin { cwd: path.dirname(filePath), } as any); - const appPath = (await fs.readdir(path.dirname(filePath))).filter(file => file.endsWith('.app')) - .map(file => path.resolve(path.dirname(filePath), file)) + const appPath = (await fs.readdir(path.dirname(filePath))).filter((file) => file.endsWith('.app')) + .map((file) => path.resolve(path.dirname(filePath), file)) .sort((fA, fB) => fs.statSync(fA).ctime.getTime() - fs.statSync(fB).ctime.getTime())[0]; const targetApplicationPath = `/Applications/${path.basename(appPath)}`; diff --git a/packages/maker/appx/src/MakerAppX.ts b/packages/maker/appx/src/MakerAppX.ts index dfd32c03db..67d02bebc1 100644 --- a/packages/maker/appx/src/MakerAppX.ts +++ b/packages/maker/appx/src/MakerAppX.ts @@ -95,7 +95,7 @@ export default class MakerAppX extends MakerBase { const outPath = path.resolve(makeDir, `appx/${targetArch}`); await this.ensureDirectory(outPath); - const opts = Object.assign({ + const opts = { publisher: `CN=${getNameFromAuthor(packageJSON.author)}`, flatten: false, deploy: false, @@ -105,10 +105,10 @@ export default class MakerAppX extends MakerBase { packageDescription: packageJSON.description || appName, packageExecutable: `app\\${appName}.exe`, windowsKit: this.config.windowsKit || path.dirname(await findSdkTool('makeappx.exe')), - }, this.config, { + ...this.config, inputDirectory: dir, outputDirectory: outPath, - }); + }; if (!opts.publisher) { throw new Error( diff --git a/packages/maker/base/src/Maker.ts b/packages/maker/base/src/Maker.ts index ee84a20a33..55e959bc05 100644 --- a/packages/maker/base/src/Maker.ts +++ b/packages/maker/base/src/Maker.ts @@ -132,7 +132,7 @@ export default abstract class Maker implements IForgeMaker { * Checks if the specified binaries exist, which are required for the maker to be used. */ externalBinariesExist(binaries: string[]): boolean { - return binaries.every(binary => which.sync(binary, { nothrow: true }) !== null); + return binaries.every((binary) => which.sync(binary, { nothrow: true }) !== null); } /** diff --git a/packages/maker/dmg/src/MakerDMG.ts b/packages/maker/dmg/src/MakerDMG.ts index 900a5174cd..0bb8a8d861 100644 --- a/packages/maker/dmg/src/MakerDMG.ts +++ b/packages/maker/dmg/src/MakerDMG.ts @@ -28,13 +28,13 @@ export default class MakerDMG extends MakerBase { const forgeDefaultOutPath = path.resolve(makeDir, `${appName}-${packageJSON.version}.dmg`); await this.ensureFile(outPath); - const dmgConfig = Object.assign({ + const dmgConfig = { overwrite: true, name: appName, - }, this.config, { + ...this.config, appPath: path.resolve(dir, `${appName}.app`), out: path.dirname(outPath), - }); + }; const opts = await electronDMG(dmgConfig); if (!this.config.name) { await this.ensureFile(forgeDefaultOutPath); diff --git a/packages/maker/flatpak/src/MakerFlatpak.ts b/packages/maker/flatpak/src/MakerFlatpak.ts index bd5071d732..58e0fbf4ba 100644 --- a/packages/maker/flatpak/src/MakerFlatpak.ts +++ b/packages/maker/flatpak/src/MakerFlatpak.ts @@ -37,16 +37,17 @@ export default class MakerFlatpak extends MakerBase { const outDir = path.resolve(makeDir, 'flatpak', arch); await this.ensureDirectory(outDir); - const flatpakConfig = Object.assign({}, this.config, { + const flatpakConfig = { + ...this.config, arch, src: dir, dest: outDir, - }); + }; await installer(flatpakConfig); return (await fs.readdir(outDir)) - .filter(basename => basename.endsWith('.flatpak')) - .map(basename => path.join(outDir, basename)); + .filter((basename) => basename.endsWith('.flatpak')) + .map((basename) => path.join(outDir, basename)); } } diff --git a/packages/maker/pkg/src/MakerPKG.ts b/packages/maker/pkg/src/MakerPKG.ts index bee7e33a28..77ad908e77 100644 --- a/packages/maker/pkg/src/MakerPKG.ts +++ b/packages/maker/pkg/src/MakerPKG.ts @@ -30,11 +30,12 @@ export default class MakerDMG extends MakerBase { await this.ensureFile(outPath); - const pkgConfig = Object.assign({}, this.config, { + const pkgConfig = { + ...this.config, app: path.resolve(dir, `${appName}.app`), pkg: outPath, platform: targetPlatform, - }); + }; await flatAsync(pkgConfig); return [outPath]; diff --git a/packages/maker/snap/src/MakerSnap.ts b/packages/maker/snap/src/MakerSnap.ts index d0315d54b2..19c7913424 100644 --- a/packages/maker/snap/src/MakerSnap.ts +++ b/packages/maker/snap/src/MakerSnap.ts @@ -31,7 +31,7 @@ export default class MakerSnap extends MakerBase { dest: outPath, src: dir, }; - const snapConfig = Object.assign({}, this.config, snapDefaults); + const snapConfig = { ...this.config, ...snapDefaults }; return [await installer(snapConfig)]; } diff --git a/packages/maker/squirrel/src/MakerSquirrel.ts b/packages/maker/squirrel/src/MakerSquirrel.ts index f9a6e52d41..91b1e0d049 100644 --- a/packages/maker/squirrel/src/MakerSquirrel.ts +++ b/packages/maker/squirrel/src/MakerSquirrel.ts @@ -26,16 +26,16 @@ export default class MakerSquirrel extends MakerBase { const outPath = path.resolve(makeDir, `squirrel.windows/${targetArch}`); await this.ensureDirectory(outPath); - const winstallerConfig: ElectronWinstallerOptions = Object.assign({ + const winstallerConfig: ElectronWinstallerOptions = { name: packageJSON.name, title: appName, noMsi: true, exe: `${appName}.exe`, setupExe: `${appName}-${packageJSON.version} Setup.exe`, - }, this.config, { + ...this.config, appDirectory: dir, outputDirectory: outPath, - }); + }; await createWindowsInstaller(winstallerConfig); diff --git a/packages/maker/wix/src/MakerWix.ts b/packages/maker/wix/src/MakerWix.ts index 5634695ca1..8850513337 100644 --- a/packages/maker/wix/src/MakerWix.ts +++ b/packages/maker/wix/src/MakerWix.ts @@ -28,13 +28,13 @@ export default class MakerWix extends MakerBase { const outPath = path.resolve(makeDir, `wix/${targetArch}`); await this.ensureDirectory(outPath); - const creator = new MSICreator(Object.assign({ + const creator = new MSICreator(({ description: packageJSON.description, name: appName, version: packageJSON.version, manufacturer: getNameFromAuthor(packageJSON.author), exe: `${appName}.exe`, - }, this.config, { + ...this.config, appDirectory: dir, outputDirectory: outPath, }) as MSICreatorOptions); diff --git a/packages/plugin/webpack/src/WebpackPlugin.ts b/packages/plugin/webpack/src/WebpackPlugin.ts index c4ae14baf3..5a2273707d 100644 --- a/packages/plugin/webpack/src/WebpackPlugin.ts +++ b/packages/plugin/webpack/src/WebpackPlugin.ts @@ -101,13 +101,24 @@ export default class WebpackPlugin extends PluginBase { if (options.exit) process.exit(); } + // eslint-disable-next-line max-len + private runWebpack = async (options: webpack.Configuration): Promise => new Promise((resolve, reject) => { + webpack(options) + .run((err, stats) => { + if (err) { + return reject(err); + } + return resolve(stats); + }); + }); + init = (dir: string) => { this.projectDir = dir; this.baseDir = path.resolve(dir, '.webpack'); d('hooking process events'); - process.on('exit', _code => this.exitHandler({ cleanup: true })); - process.on('SIGINT' as NodeJS.Signals, _signal => this.exitHandler({ exit: true })); + process.on('exit', (_code) => this.exitHandler({ cleanup: true })); + process.on('SIGINT' as NodeJS.Signals, (_signal) => this.exitHandler({ exit: true })); } private loggedOutputUrl = false; @@ -339,8 +350,8 @@ Your packaged app may be larger than expected if you dont ignore everything othe __dirname: false, __filename: false, }, - plugins: entryPoints.filter(entryPoint => Boolean(entryPoint.html)) - .map(entryPoint => new HtmlWebpackPlugin({ + plugins: entryPoints.filter((entryPoint) => Boolean(entryPoint.html)) + .map((entryPoint) => new HtmlWebpackPlugin({ title: entryPoint.name, template: entryPoint.html, filename: `${entryPoint.name}/index.html`, @@ -356,8 +367,9 @@ Your packaged app may be larger than expected if you dont ignore everything othe tab = logger.createTab('Main Process'); } await asyncOra('Compiling Main Process Code', async () => { - await new Promise(async (resolve, reject) => { - const compiler = webpack(await this.getMainConfig()); + const config = await this.getMainConfig(); + await new Promise((resolve, reject) => { + const compiler = webpack(config); const [onceResolve, onceReject] = once(resolve, reject); const cb: webpack.ICompiler.Handler = (err, stats) => { if (tab && stats) { @@ -384,29 +396,20 @@ Your packaged app may be larger than expected if you dont ignore everything othe compileRenderers = async (watch = false) => { // eslint-disable-line @typescript-eslint/no-unused-vars, max-len await asyncOra('Compiling Renderer Template', async () => { - await new Promise(async (resolve, reject) => { - webpack(await this.getRendererConfig(this.config.renderer.entryPoints)) - .run((err, stats) => { - if (err) return reject(err); - if (!watch && stats.hasErrors()) { - return reject(new Error(`Compilation errors in the renderer: ${stats.toString()}`)); - } - - return resolve(); - }); - }); + const stats = await this.runWebpack( + await this.getRendererConfig(this.config.renderer.entryPoints), + ); + if (!watch && stats.hasErrors()) { + throw new Error(`Compilation errors in the renderer: ${stats.toString()}`); + } }); for (const entryPoint of this.config.renderer.entryPoints) { if (entryPoint.preload) { await asyncOra(`Compiling Renderer Preload: ${entryPoint.name}`, async () => { - await new Promise(async (resolve, reject) => { - webpack(await this.getPreloadRendererConfig(entryPoint, entryPoint.preload!)) - .run((err) => { - if (err) return reject(err); - return resolve(); - }); - }); + await this.runWebpack( + await this.getPreloadRendererConfig(entryPoint, entryPoint.preload!), + ); }); } } @@ -439,10 +442,15 @@ Your packaged app may be larger than expected if you dont ignore everything othe await asyncOra('Compiling Preload Scripts', async () => { for (const entryPoint of this.config.renderer.entryPoints) { if (entryPoint.preload) { - await new Promise(async (resolve, reject) => { + const config = await this.getPreloadRendererConfig( + entryPoint, + entryPoint.preload!, + ); + await new Promise((resolve, reject) => { const tab = logger.createTab(`${entryPoint.name} - Preload`); const [onceResolve, onceReject] = once(resolve, reject); - const cb: webpack.ICompiler.Handler = (err, stats) => { + + this.watchers.push(webpack(config).watch({}, (err, stats) => { if (stats) { tab.log(stats.toString({ colors: true, @@ -451,11 +459,7 @@ Your packaged app may be larger than expected if you dont ignore everything othe if (err) return onceReject(err); return onceResolve(); - }; - this.watchers.push(webpack(await this.getPreloadRendererConfig( - entryPoint, - entryPoint.preload!, - )).watch({}, cb)); + })); }); } } diff --git a/packages/publisher/bitbucket/src/PublisherBitbucket.ts b/packages/publisher/bitbucket/src/PublisherBitbucket.ts index 415f4ebfef..e79d1bfdf2 100644 --- a/packages/publisher/bitbucket/src/PublisherBitbucket.ts +++ b/packages/publisher/bitbucket/src/PublisherBitbucket.ts @@ -17,7 +17,7 @@ export default class PublisherBitbucket extends PublisherBase { })).json(); // eslint-disable-next-line max-len - const authFetch = (apiPath: string, options?: any) => fetch(api(apiPath), Object.assign({}, options || {}, { - headers: Object.assign({}, (options || {}).headers, { Authorization: `Bearer ${token}` }), - })); + const authFetch = (apiPath: string, options?: any) => fetch(api(apiPath), { ...options || {}, headers: { ...(options || {}).headers, Authorization: `Bearer ${token}` } }); const versions: ERSVersion[] = await (await authFetch('api/version')).json(); for (const makeResult of makeResults) { const { artifacts, packageJSON } = makeResult; - const existingVersion = versions.find(version => version.name === packageJSON.version); + const existingVersion = versions.find((version) => version.name === packageJSON.version); let channel = 'stable'; if (config.channel) { @@ -101,10 +99,10 @@ export default class PublisherERS extends PublisherBase { uploadSpinner.text = getText(); }; - await Promise.all(artifacts.map(artifactPath => new Promise(async (resolve, reject) => { + await Promise.all(artifacts.map(async (artifactPath) => { if (existingVersion) { const existingAsset = existingVersion.assets.find( - asset => asset.name === path.basename(artifactPath), + (asset) => asset.name === path.basename(artifactPath), ); if (existingAsset) { @@ -114,26 +112,21 @@ export default class PublisherERS extends PublisherBase { return; } } - try { - d('attempting to upload asset:', artifactPath); - const artifactForm = new FormData(); - artifactForm.append('token', token); - artifactForm.append('version', packageJSON.version); - artifactForm.append('platform', ersPlatform(makeResult.platform, makeResult.arch)); - artifactForm.append('file', fs.createReadStream(artifactPath)); - await authFetch('api/asset', { - method: 'POST', - body: artifactForm, - headers: artifactForm.getHeaders(), - }); - d('upload successful for asset:', artifactPath); - uploaded += 1; - updateSpinner(); - resolve(); - } catch (err) { - reject(err); - } - }))); + d('attempting to upload asset:', artifactPath); + const artifactForm = new FormData(); + artifactForm.append('token', token); + artifactForm.append('version', packageJSON.version); + artifactForm.append('platform', ersPlatform(makeResult.platform, makeResult.arch)); + artifactForm.append('file', fs.createReadStream(artifactPath)); + await authFetch('api/asset', { + method: 'POST', + body: artifactForm, + headers: artifactForm.getHeaders(), + }); + d('upload successful for asset:', artifactPath); + uploaded += 1; + updateSpinner(); + })); }); } } diff --git a/packages/publisher/github/src/PublisherGithub.ts b/packages/publisher/github/src/PublisherGithub.ts index b4632d4164..4f60f3130b 100644 --- a/packages/publisher/github/src/PublisherGithub.ts +++ b/packages/publisher/github/src/PublisherGithub.ts @@ -89,13 +89,12 @@ export default class PublisherGithub extends PublisherBase new Promise(async (resolve) => { + await Promise.all(flatArtifacts.map(async (artifactPath) => { const done = () => { uploaded += 1; updateSpinner(); - resolve(); }; - if (release!.assets.find(asset => asset.name === path.basename(artifactPath))) { + if (release!.assets.find((asset) => asset.name === path.basename(artifactPath))) { return done(); } await github.getGitHub().repos.uploadReleaseAsset({ @@ -108,7 +107,7 @@ export default class PublisherGithub extends PublisherBase { const newMakeResults: typeof makeResults = []; for (const result of makeResults) { - const existingResult = newMakeResults.find(nResult => nResult.arch === result.arch + const existingResult = newMakeResults.find((nResult) => nResult.arch === result.arch && nResult.platform === result.platform && nResult.packageJSON.version === result.packageJSON.version); if (existingResult) { diff --git a/packages/publisher/s3/src/PublisherS3.ts b/packages/publisher/s3/src/PublisherS3.ts index 36e4511253..12ed3ca4d9 100644 --- a/packages/publisher/s3/src/PublisherS3.ts +++ b/packages/publisher/s3/src/PublisherS3.ts @@ -33,7 +33,7 @@ export default class PublisherS3 extends PublisherBase { }[] = []; for (const makeResult of makeResults) { - artifacts.push(...makeResult.artifacts.map(artifact => ({ + artifacts.push(...makeResult.artifacts.map((artifact) => ({ path: artifact, keyPrefix: config.folder || makeResult.packageJSON.version, platform: makeResult.platform, @@ -63,7 +63,7 @@ export default class PublisherS3 extends PublisherBase { uploadSpinner.text = `Uploading Artifacts ${uploaded}/${artifacts.length}`; }; - await Promise.all(artifacts.map(artifact => new Promise(async (resolve, reject) => { + await Promise.all(artifacts.map((artifact) => new Promise((resolve, reject) => { const done = (err?: Error) => { if (err) return reject(err); uploaded += 1; diff --git a/packages/publisher/snapcraft/src/PublisherSnapcraft.ts b/packages/publisher/snapcraft/src/PublisherSnapcraft.ts index 06127f8a96..4cacc3ea04 100644 --- a/packages/publisher/snapcraft/src/PublisherSnapcraft.ts +++ b/packages/publisher/snapcraft/src/PublisherSnapcraft.ts @@ -17,7 +17,7 @@ export default class PublisherSnapcraft extends PublisherBase artifact.endsWith('.snap')); + const snapArtifacts = artifacts.filter((artifact) => artifact.endsWith('.snap')); if (snapArtifacts.length === 0) { throw new Error('No snap files to upload. Please ensure that "snap" is listed in the "make_targets" in Forge config.'); diff --git a/packages/utils/types/src/index.ts b/packages/utils/types/src/index.ts index 75cfed6074..8a48548e0e 100644 --- a/packages/utils/types/src/index.ts +++ b/packages/utils/types/src/index.ts @@ -4,8 +4,9 @@ import { Options } from 'electron-packager'; import { RebuildOptions } from 'electron-rebuild/lib/src/rebuild'; export type ForgePlatform = 'darwin' | 'mas' | 'win32' | 'linux'; -export type ForgeArch = 'ia32' | 'x64' | 'armv7l' | 'arm' | 'all'; +export type ForgeArch = 'ia32' | 'x64' | 'armv7l' | 'arm64' | 'arm' | 'all'; export type ForgeHookFn = (forgeConfig: ForgeConfig, ...args: any[]) => Promise; +export type ForgeConfigPublisher = IForgeResolvablePublisher | IForgePublisher | string; export interface IForgePluginInterface { triggerHook(hookName: string, hookArgs: any[]): Promise; triggerMutatingHook(hookName: string, item: T): Promise; @@ -27,13 +28,13 @@ export interface ForgeConfig { */ pluginInterface: IForgePluginInterface; /** - * An array of forge plugins or a tuple consisting of [pluginName, pluginOptions] + * An array of Forge plugins or a tuple consisting of [pluginName, pluginOptions] */ plugins: (IForgePlugin | [string, any])[]; electronRebuildConfig: Partial; packagerConfig: Partial; makers: (IForgeResolvableMaker | IForgeMaker)[]; - publishers: (IForgeResolvablePublisher | IForgePublisher | string)[]; + publishers: ForgeConfigPublisher[]; } export interface ForgeMakeResult { /** diff --git a/tools/position-docs.ts b/tools/position-docs.ts index 0f4ab5469d..a6caa76805 100644 --- a/tools/position-docs.ts +++ b/tools/position-docs.ts @@ -35,7 +35,7 @@ async function normalizeLinks(htmlFile: string, subPath: string): Promise(resolve => Glob(path.resolve(docPath, '**', '*.html'), (e, l) => resolve(l))); + const htmlFiles = await new Promise((resolve) => Glob(path.resolve(docPath, '**', '*.html'), (e, l) => resolve(l))); for (const htmlFile of htmlFiles) { await fs.writeFile(htmlFile, await normalizeLinks(htmlFile, subPath)); } diff --git a/tools/test-globber.ts b/tools/test-globber.ts index b99b97a7c5..9270f950be 100644 --- a/tools/test-globber.ts +++ b/tools/test-globber.ts @@ -7,7 +7,7 @@ import { getPackageInfoSync } from './utils'; const argv = minimist( process.argv.slice( - process.argv.findIndex(arg => arg === 'mocha.opts'), + process.argv.findIndex((arg) => arg === 'mocha.opts'), ), ); diff --git a/yarn.lock b/yarn.lock index dc795cd3cd..75d459740f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -678,13 +678,6 @@ pirates "^4.0.0" source-map-support "^0.5.9" -"@babel/runtime@^7.4.5": - version "7.4.5" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.4.5.tgz#582bb531f5f9dc67d2fcb682979894f75e253f12" - integrity sha512-TuI4qpWZP6lGOGIuGWtp9sPluqYICmbk8T/1vpSysqJxRPkudh/ofFWyqdcMsDf2s7KvDL4/YHgKyvcS3g9CJQ== - dependencies: - regenerator-runtime "^0.13.2" - "@babel/template@^7.1.0", "@babel/template@^7.4.0", "@babel/template@^7.4.4": version "7.4.4" resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.4.4.tgz#f4b88d1225689a08f5bc3a17483545be9e4ed237" @@ -1191,43 +1184,43 @@ "@types/events" "*" "@types/node" "*" -"@typescript-eslint/eslint-plugin@^1.9.0": - version "1.13.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-1.13.0.tgz#22fed9b16ddfeb402fd7bcde56307820f6ebc49f" - integrity sha512-WQHCozMnuNADiqMtsNzp96FNox5sOVpU8Xt4meaT4em8lOG1SrOv92/mUbEHQVh90sldKSfcOc/I0FOb/14G1g== +"@typescript-eslint/eslint-plugin@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-2.0.0.tgz#609a5d7b00ce21a6f94d7ef282eba9da57ca1e42" + integrity sha512-Mo45nxTTELODdl7CgpZKJISvLb+Fu64OOO2ZFc2x8sYSnUpFrBUW3H+H/ZGYmEkfnL6VkdtOSxgdt+Av79j0sA== dependencies: - "@typescript-eslint/experimental-utils" "1.13.0" - eslint-utils "^1.3.1" + "@typescript-eslint/experimental-utils" "2.0.0" + eslint-utils "^1.4.0" functional-red-black-tree "^1.0.1" regexpp "^2.0.1" - tsutils "^3.7.0" + tsutils "^3.14.0" -"@typescript-eslint/experimental-utils@1.13.0": - version "1.13.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-1.13.0.tgz#b08c60d780c0067de2fb44b04b432f540138301e" - integrity sha512-zmpS6SyqG4ZF64ffaJ6uah6tWWWgZ8m+c54XXgwFtUv0jNz8aJAVx8chMCvnk7yl6xwn8d+d96+tWp7fXzTuDg== +"@typescript-eslint/experimental-utils@2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-2.0.0.tgz#f3d298bb411357f35c4184e24280b256b6321949" + integrity sha512-XGJG6GNBXIEx/mN4eTRypN/EUmsd0VhVGQ1AG+WTgdvjHl0G8vHhVBHrd/5oI6RRYBRnedNymSYWW1HAdivtmg== dependencies: "@types/json-schema" "^7.0.3" - "@typescript-eslint/typescript-estree" "1.13.0" + "@typescript-eslint/typescript-estree" "2.0.0" eslint-scope "^4.0.0" -"@typescript-eslint/parser@^1.9.0": - version "1.13.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-1.13.0.tgz#61ac7811ea52791c47dc9fd4dd4a184fae9ac355" - integrity sha512-ITMBs52PCPgLb2nGPoeT4iU3HdQZHcPaZVw+7CsFagRJHUhyeTgorEwHXhFf3e7Evzi8oujKNpHc8TONth8AdQ== +"@typescript-eslint/parser@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-2.0.0.tgz#4273bb19d03489daf8372cdaccbc8042e098178f" + integrity sha512-ibyMBMr0383ZKserIsp67+WnNVoM402HKkxqXGlxEZsXtnGGurbnY90pBO3e0nBUM7chEEOcxUhgw9aPq7fEBA== dependencies: "@types/eslint-visitor-keys" "^1.0.0" - "@typescript-eslint/experimental-utils" "1.13.0" - "@typescript-eslint/typescript-estree" "1.13.0" + "@typescript-eslint/experimental-utils" "2.0.0" + "@typescript-eslint/typescript-estree" "2.0.0" eslint-visitor-keys "^1.0.0" -"@typescript-eslint/typescript-estree@1.13.0": - version "1.13.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-1.13.0.tgz#8140f17d0f60c03619798f1d628b8434913dc32e" - integrity sha512-b5rCmd2e6DCC6tCTN9GSUAuxdYwCM/k/2wdjHGrIRGPSJotWMCe/dGpi66u42bhuh8q3QBzqM4TMA1GUUCJvdw== +"@typescript-eslint/typescript-estree@2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-2.0.0.tgz#c9f6c0efd1b11475540d6a55dc973cc5b9a67e77" + integrity sha512-NXbmzA3vWrSgavymlzMWNecgNOuiMMp62MO3kI7awZRLRcsA1QrYWo6q08m++uuAGVbXH/prZi2y1AWuhSu63w== dependencies: lodash.unescape "4.0.1" - semver "5.5.0" + semver "^6.2.0" "@webassemblyjs/ast@1.8.5": version "1.8.5" @@ -1399,20 +1392,20 @@ accepts@~1.3.7: negotiator "0.6.2" acorn-jsx@^5.0.0: - version "5.0.1" - resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.0.1.tgz#32a064fd925429216a09b141102bfdd185fae40e" - integrity sha512-HJ7CfNHrfJLlNTzIEUTj43LNWGkqpRLxm3YjAlcD0ACydk9XynzYsCBHxut+iqt+1aBXkx9UP/w/ZqMr13XIzg== - -acorn@^6.0.7: - version "6.2.1" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.2.1.tgz#3ed8422d6dec09e6121cc7a843ca86a330a86b51" - integrity sha512-JD0xT5FCRDNyjDda3Lrg/IxFscp9q4tiYtxE1/nOzlKCk7hIRuYjhq1kCNkbPjMRMZuFq20HNQn1I9k8Oj0E+Q== + version "5.0.2" + resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.0.2.tgz#84b68ea44b373c4f8686023a551f61a21b7c4a4f" + integrity sha512-tiNTrP1MP0QrChmD2DdupCr6HWSFeKVw5d/dHTu4Y7rkAkRhU/Dt7dphAfIUyxtHpl/eBVip5uTNSpQJHylpAw== acorn@^6.2.1: version "6.3.0" resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.3.0.tgz#0087509119ffa4fc0a0041d1e93a417e68cb856e" integrity sha512-/czfa8BwS88b9gWQVhc8eknunSA2DoJpJyTQkhheIf5E48u1N0R4q/YxxsAeqRrmK9TQ/uYfgLDfZo91UlANIA== +acorn@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.0.0.tgz#26b8d1cd9a9b700350b71c0905546f64d1284e7a" + integrity sha512-PaF/MduxijYYt7unVGRuds1vBC9bFxbNf+VWqhOClfdgy7RlVkQqt610ig1/yxTgsDIfW1cWDel5EBbOy3jdtQ== + ajv-errors@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/ajv-errors/-/ajv-errors-1.0.1.tgz#f35986aceb91afadec4102fbd85014950cefa64d" @@ -1423,7 +1416,7 @@ ajv-keywords@^3.1.0, ajv-keywords@^3.4.1: resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.4.1.tgz#ef916e271c64ac12171fd8384eaae6b2345854da" integrity sha512-RO1ibKvd27e6FEShVFfPALuHI3WjSVNeK5FIsmme/LYRNxjKuNj+Dt7bucLa6NdSv3JcVTyMlm9kGR84z1XpaQ== -ajv@^6.1.0, ajv@^6.10.2, ajv@^6.5.5, ajv@^6.9.1: +ajv@^6.1.0, ajv@^6.10.0, ajv@^6.10.2, ajv@^6.5.5: version "6.10.2" resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.10.2.tgz#d3cea04d6b017b2894ad69040fec8b623eb4bd52" integrity sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw== @@ -1561,14 +1554,6 @@ argparse@^1.0.7: dependencies: sprintf-js "~1.0.2" -aria-query@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-3.0.0.tgz#65b3fcc1ca1155a8c9ae64d6eee297f15d5133cc" - integrity sha1-ZbP8wcoRVajJrmTW7uKX8V1RM8w= - dependencies: - ast-types-flow "0.0.7" - commander "^2.11.0" - arr-diff@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" @@ -1669,11 +1654,6 @@ assign-symbols@^1.0.0: resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c= -ast-types-flow@0.0.7, ast-types-flow@^0.0.7: - version "0.0.7" - resolved "https://registry.yarnpkg.com/ast-types-flow/-/ast-types-flow-0.0.7.tgz#f70b735c6bca1a5c9c22d982c3e39e7feba3bdad" - integrity sha1-9wtzXGvKGlycItmCw+Oef+ujva0= - astral-regex@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9" @@ -1747,13 +1727,6 @@ aws4@^1.8.0: resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.8.0.tgz#f0e003d9ca9e7f59c7a508945d7b2ef9a04a542f" integrity sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ== -axobject-query@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-2.0.2.tgz#ea187abe5b9002b377f925d8bf7d1c561adf38f9" - integrity sha512-MCeek8ZH7hKyO1rWUbKNQBbl4l2eY0ntk7OGi+q0RlafrCnfPxC06WZA+uebCfmYp4mNU9jRBP1AhGyf8+W3ww== - dependencies: - ast-types-flow "0.0.7" - babel-plugin-dynamic-import-node@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.0.tgz#f00f507bdaa3c3e3ff6e7e5e98d90a7acab96f7f" @@ -2396,7 +2369,7 @@ commander@2.17.x: resolved "https://registry.yarnpkg.com/commander/-/commander-2.17.1.tgz#bd77ab7de6de94205ceacc72f1716d29f20a77bf" integrity sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg== -commander@^2.11.0, commander@^2.19.0, commander@^2.20.0, commander@^2.8.1, commander@^2.9.0, commander@~2.20.0: +commander@^2.19.0, commander@^2.20.0, commander@^2.8.1, commander@^2.9.0, commander@~2.20.0: version "2.20.0" resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.0.tgz#d58bb2b5c1ee8f87b0d340027e9e94e222c5a422" integrity sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ== @@ -2474,10 +2447,10 @@ configstore@^3.0.0: write-file-atomic "^2.0.0" xdg-basedir "^3.0.0" -confusing-browser-globals@^1.0.5: - version "1.0.7" - resolved "https://registry.yarnpkg.com/confusing-browser-globals/-/confusing-browser-globals-1.0.7.tgz#5ae852bd541a910e7ffb2dbb864a2d21a36ad29b" - integrity sha512-cgHI1azax5ATrZ8rJ+ODDML9Fvu67PimB6aNxBrc/QwSaDaM9eTfIEUHx3bBLJJ82ioSb+/5zfsMCCEJax3ByQ== +confusing-browser-globals@^1.0.7: + version "1.0.8" + resolved "https://registry.yarnpkg.com/confusing-browser-globals/-/confusing-browser-globals-1.0.8.tgz#93ffec1f82a6e2bf2bc36769cc3a92fa20e502f3" + integrity sha512-lI7asCibVJ6Qd3FGU7mu4sfG4try4LX3+GVS+Gv8UlrEf2AeW57piecapnog2UHZSbcX/P/1UDWVaTsblowlZg== console-browserify@^1.1.0: version "1.1.0" @@ -2769,11 +2742,6 @@ cz-customizable@^6.2.0: temp "^0.9.0" word-wrap "^1.2.3" -damerau-levenshtein@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/damerau-levenshtein/-/damerau-levenshtein-1.0.4.tgz#03191c432cb6eea168bb77f3a55ffdccb8978514" - integrity sha1-AxkcQyy27qFou3fzpV/9zLiXhRQ= - dashdash@^1.12.0: version "1.14.1" resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" @@ -2979,13 +2947,6 @@ doctrine@1.5.0: esutils "^2.0.2" isarray "^1.0.0" -doctrine@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d" - integrity sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw== - dependencies: - esutils "^2.0.2" - doctrine@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" @@ -3282,7 +3243,7 @@ elliptic@^6.0.0: minimalistic-assert "^1.0.0" minimalistic-crypto-utils "^1.0.0" -emoji-regex@^7.0.1, emoji-regex@^7.0.2: +emoji-regex@^7.0.1: version "7.0.3" resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== @@ -3347,7 +3308,7 @@ error-ex@^1.2.0, error-ex@^1.3.1: dependencies: is-arrayish "^0.2.1" -es-abstract@^1.11.0, es-abstract@^1.12.0, es-abstract@^1.5.1, es-abstract@^1.7.0: +es-abstract@^1.12.0, es-abstract@^1.5.1, es-abstract@^1.7.0: version "1.13.0" resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.13.0.tgz#ac86145fdd5099d8dd49558ccba2eaf9b88e24e9" integrity sha512-vDZfg/ykNxQVwup/8E1BZhVzFfBxs9NqMzGcvIJrqg5k2/5Za2bWo40dK2J1pgLngZ7c+Shh8lwYtLGyrwPutg== @@ -3383,21 +3344,12 @@ escape-string-regexp@1.0.5, escape-string-regexp@^1.0.2, escape-string-regexp@^1 resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= -eslint-config-airbnb-base@^13.2.0: - version "13.2.0" - resolved "https://registry.yarnpkg.com/eslint-config-airbnb-base/-/eslint-config-airbnb-base-13.2.0.tgz#f6ea81459ff4dec2dda200c35f1d8f7419d57943" - integrity sha512-1mg/7eoB4AUeB0X1c/ho4vb2gYkNH8Trr/EgCT/aGmKhhG+F6vF5s8+iRBlWAzFIAphxIdp3YfEKgEl0f9Xg+w== - dependencies: - confusing-browser-globals "^1.0.5" - object.assign "^4.1.0" - object.entries "^1.1.0" - -eslint-config-airbnb@^17.1.1: - version "17.1.1" - resolved "https://registry.yarnpkg.com/eslint-config-airbnb/-/eslint-config-airbnb-17.1.1.tgz#2272e0b86bb1e2b138cdf88d07a3b6f4cda3d626" - integrity sha512-xCu//8a/aWqagKljt+1/qAM62BYZeNq04HmdevG5yUGWpja0I/xhqd6GdLRch5oetEGFiJAnvtGuTEAese53Qg== +eslint-config-airbnb-base@^14.0.0: + version "14.0.0" + resolved "https://registry.yarnpkg.com/eslint-config-airbnb-base/-/eslint-config-airbnb-base-14.0.0.tgz#8a7bcb9643d13c55df4dd7444f138bf4efa61e17" + integrity sha512-2IDHobw97upExLmsebhtfoD3NAKhV4H0CJWP3Uprd/uk+cHuWYOczPVxQ8PxLFUAw7o3Th1RAU8u1DoUpr+cMA== dependencies: - eslint-config-airbnb-base "^13.2.0" + confusing-browser-globals "^1.0.7" object.assign "^4.1.0" object.entries "^1.1.0" @@ -3434,21 +3386,6 @@ eslint-plugin-import@^2.18.2: read-pkg-up "^2.0.0" resolve "^1.11.0" -eslint-plugin-jsx-a11y@^6.2.3: - version "6.2.3" - resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.2.3.tgz#b872a09d5de51af70a97db1eea7dc933043708aa" - integrity sha512-CawzfGt9w83tyuVekn0GDPU9ytYtxyxyFZ3aSWROmnRRFQFT2BiPJd7jvRdzNDi6oLWaS2asMeYSNMjWTV4eNg== - dependencies: - "@babel/runtime" "^7.4.5" - aria-query "^3.0.0" - array-includes "^3.0.3" - ast-types-flow "^0.0.7" - axobject-query "^2.0.2" - damerau-levenshtein "^1.0.4" - emoji-regex "^7.0.2" - has "^1.0.3" - jsx-ast-utils "^2.2.1" - eslint-plugin-mocha@^6.1.0: version "6.1.0" resolved "https://registry.yarnpkg.com/eslint-plugin-mocha/-/eslint-plugin-mocha-6.1.0.tgz#4950ceea8e51b1f4265116c0d03d0cbae86d0a6f" @@ -3456,21 +3393,6 @@ eslint-plugin-mocha@^6.1.0: dependencies: ramda "^0.26.1" -eslint-plugin-react@^7.14.2: - version "7.14.3" - resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.14.3.tgz#911030dd7e98ba49e1b2208599571846a66bdf13" - integrity sha512-EzdyyBWC4Uz2hPYBiEJrKCUi2Fn+BJ9B/pJQcjw5X+x/H2Nm59S4MJIvL4O5NEE0+WbnQwEBxWY03oUk+Bc3FA== - dependencies: - array-includes "^3.0.3" - doctrine "^2.1.0" - has "^1.0.3" - jsx-ast-utils "^2.1.0" - object.entries "^1.1.0" - object.fromentries "^2.0.0" - object.values "^1.1.0" - prop-types "^15.7.2" - resolve "^1.10.1" - eslint-scope@^4.0.0, eslint-scope@^4.0.3: version "4.0.3" resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-4.0.3.tgz#ca03833310f6889a3264781aa82e63eb9cfe7848" @@ -3479,68 +3401,84 @@ eslint-scope@^4.0.0, eslint-scope@^4.0.3: esrecurse "^4.1.0" estraverse "^4.1.1" -eslint-utils@^1.3.1: +eslint-scope@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.0.0.tgz#e87c8887c73e8d1ec84f1ca591645c358bfc8fb9" + integrity sha512-oYrhJW7S0bxAFDvWqzvMPRm6pcgcnWc4QnofCAqRTRfQC0JcwenzGglTtsLyIuuWFfkqDG9vz67cnttSd53djw== + dependencies: + esrecurse "^4.1.0" + estraverse "^4.1.1" + +eslint-utils@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-1.4.0.tgz#e2c3c8dba768425f897cf0f9e51fe2e241485d4c" integrity sha512-7ehnzPaP5IIEh1r1tkjuIrxqhNkzUJa9z3R92tLJdZIVdWaczEhr3EbhGtsMrVxi1KeR8qA7Off6SWc5WNQqyQ== dependencies: eslint-visitor-keys "^1.0.0" -eslint-visitor-keys@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz#3f3180fb2e291017716acb4c9d6d5b5c34a6a81d" - integrity sha512-qzm/XxIbxm/FHyH341ZrbnMUpe+5Bocte9xkmFMzPMjRaZMcXww+MpBptFvtU+79L362nqiLhekCxCxDPaUMBQ== +eslint-utils@^1.4.2: + version "1.4.2" + resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-1.4.2.tgz#166a5180ef6ab7eb462f162fd0e6f2463d7309ab" + integrity sha512-eAZS2sEUMlIeCjBeubdj45dmBHQwPHWyBcT1VSYB7o9x9WRRqKxyUoiXlRjyAwzN7YEzHJlYg0NmzDRWx6GP4Q== + dependencies: + eslint-visitor-keys "^1.0.0" -eslint@^5.16.0: - version "5.16.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-5.16.0.tgz#a1e3ac1aae4a3fbd8296fcf8f7ab7314cbb6abea" - integrity sha512-S3Rz11i7c8AA5JPv7xAH+dOyq/Cu/VXHiHXBPOU1k/JAM5dXqQPt3qcrhpHSorXmrpu2g0gkIBVXAqCpzfoZIg== +eslint-visitor-keys@^1.0.0, eslint-visitor-keys@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.1.0.tgz#e2a82cea84ff246ad6fb57f9bde5b46621459ec2" + integrity sha512-8y9YjtM1JBJU/A9Kc+SbaOV4y29sSWckBwMHa+FGtVj5gN/sbnKDf6xJUl+8g7FAij9LVaP8C24DUiH/f/2Z9A== + +eslint@^6.1.0: + version "6.2.1" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-6.2.1.tgz#66c2e4fe8b6356b9f01e828adc3ad04030122df1" + integrity sha512-ES7BzEzr0Q6m5TK9i+/iTpKjclXitOdDK4vT07OqbkBT2/VcN/gO9EL1C4HlK3TAOXYv2ItcmbVR9jO1MR0fJg== dependencies: "@babel/code-frame" "^7.0.0" - ajv "^6.9.1" + ajv "^6.10.0" chalk "^2.1.0" cross-spawn "^6.0.5" debug "^4.0.1" doctrine "^3.0.0" - eslint-scope "^4.0.3" - eslint-utils "^1.3.1" - eslint-visitor-keys "^1.0.0" - espree "^5.0.1" + eslint-scope "^5.0.0" + eslint-utils "^1.4.2" + eslint-visitor-keys "^1.1.0" + espree "^6.1.0" esquery "^1.0.1" esutils "^2.0.2" file-entry-cache "^5.0.1" functional-red-black-tree "^1.0.1" - glob "^7.1.2" + glob-parent "^5.0.0" globals "^11.7.0" ignore "^4.0.6" import-fresh "^3.0.0" imurmurhash "^0.1.4" - inquirer "^6.2.2" - js-yaml "^3.13.0" + inquirer "^6.4.1" + is-glob "^4.0.0" + js-yaml "^3.13.1" json-stable-stringify-without-jsonify "^1.0.1" levn "^0.3.0" - lodash "^4.17.11" + lodash "^4.17.14" minimatch "^3.0.4" mkdirp "^0.5.1" natural-compare "^1.4.0" optionator "^0.8.2" - path-is-inside "^1.0.2" progress "^2.0.0" regexpp "^2.0.1" - semver "^5.5.1" - strip-ansi "^4.0.0" - strip-json-comments "^2.0.1" + semver "^6.1.2" + strip-ansi "^5.2.0" + strip-json-comments "^3.0.1" table "^5.2.3" text-table "^0.2.0" + v8-compile-cache "^2.0.3" -espree@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/espree/-/espree-5.0.1.tgz#5d6526fa4fc7f0788a5cf75b15f30323e2f81f7a" - integrity sha512-qWAZcWh4XE/RwzLJejfcofscgMc9CamR6Tn1+XRXNzrvUSSbiAjGOI/fggztjIi7y9VLPqnICMIPiGyr8JaZ0A== +espree@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/espree/-/espree-6.1.0.tgz#a1e8aa65bf29a331d70351ed814a80e7534e0884" + integrity sha512-boA7CHRLlVWUSg3iL5Kmlt/xT3Q+sXnKoRYYzj1YeM10A76TEJBbotV5pKbnK42hEUIr121zTv+QLRM5LsCPXQ== dependencies: - acorn "^6.0.7" + acorn "^7.0.0" acorn-jsx "^5.0.0" - eslint-visitor-keys "^1.0.0" + eslint-visitor-keys "^1.1.0" esprima@^4.0.0: version "4.0.1" @@ -3561,20 +3499,15 @@ esrecurse@^4.1.0: dependencies: estraverse "^4.1.0" -estraverse@^4.0.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.2.0.tgz#0dee3fed31fcd469618ce7342099fc1afa0bdb13" - integrity sha1-De4/7TH81GlhjOc0IJn8GvoL2xM= - -estraverse@^4.1.0, estraverse@^4.1.1: +estraverse@^4.0.0, estraverse@^4.1.0, estraverse@^4.1.1: version "4.3.0" resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== esutils@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b" - integrity sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs= + version "2.0.3" + resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" + integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== etag@~1.8.1: version "1.8.1" @@ -3930,9 +3863,9 @@ flat@^4.1.0: is-buffer "~2.0.3" flatted@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/flatted/-/flatted-2.0.0.tgz#55122b6536ea496b4b44893ee2608141d10d9916" - integrity sha512-R+H8IZclI8AAkSBRQJLVOsxwAoHd6WC40b4QTNWIjzAa6BXOBfQcM587MXDTVPeYaopFNWHUFLx7eNmHDSxMWg== + version "2.0.1" + resolved "https://registry.yarnpkg.com/flatted/-/flatted-2.0.1.tgz#69e57caa8f0eacbc281d2e2cb458d46fdb449e08" + integrity sha512-a1hQMktqW9Nmqr5aktAux3JMNqaucxGcjtjWnZLHX7yyPCmlSV3M54nGYbqT8K+0GhF3NBgmJCc3ma+WOgX8Jg== flora-colossus@^1.0.0: version "1.0.1" @@ -4242,6 +4175,13 @@ glob-parent@^3.1.0: is-glob "^3.1.0" path-dirname "^1.0.0" +glob-parent@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.0.0.tgz#1dc99f0f39b006d3e92c2c284068382f0c20e954" + integrity sha512-Z2RwiujPRGluePM6j699ktJYxmPpJKCfpGA13jz2hmFZC7gKetzrWvg5KN3+OsIFmydGyZ1AVwERCq1w/ZZwRg== + dependencies: + is-glob "^4.0.1" + glob-to-regexp@^0.4.0: version "0.4.1" resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz#c75297087c851b9a578bd217dd59a92f59fe546e" @@ -4259,7 +4199,7 @@ glob@7.1.3: once "^1.3.0" path-is-absolute "^1.0.0" -glob@^7.0.0, glob@^7.0.3, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4: +glob@^7.0.0, glob@^7.0.3, glob@^7.1.3, glob@^7.1.4: version "7.1.4" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.4.tgz#aa608a2f6c577ad357e1ae5a5c26d9a8d1969255" integrity sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A== @@ -4641,9 +4581,9 @@ image-size@^0.7.4: integrity sha512-GqPgxs+VkOr12aWwjSkyRzf5atzObWpFtiRuDgxCl2I/SDpZOKZFRD3iIAeAN6/usmn8SeLWRt7a8JRYK0Whbw== import-fresh@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.0.0.tgz#a3d897f420cab0e671236897f75bc14b4885c390" - integrity sha512-pOnA9tfM3Uwics+SaBLCNyZZZbK+4PTu0OPZtLlMIrv17EdBoC15S9Kn8ckJ9TZTyKb3ywNE5y1yeDxxGA7nTQ== + version "3.1.0" + resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.1.0.tgz#6d33fa1dcef6df930fae003446f33415af905118" + integrity sha512-PpuksHKGt8rXfWEr9m9EHIpgyyaltBy8+eF6GJM0QCAxMgxCfucMF3mjecK2QsJr0amJW7gTqh5/wht0z2UhEQ== dependencies: parent-module "^1.0.0" resolve-from "^4.0.0" @@ -4727,7 +4667,7 @@ inquirer@6.2.0: strip-ansi "^4.0.0" through "^2.3.6" -inquirer@^6.2.0, inquirer@^6.2.2, inquirer@^6.3.1: +inquirer@^6.2.0, inquirer@^6.3.1, inquirer@^6.4.1: version "6.5.1" resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-6.5.1.tgz#8bfb7a5ac02dac6ff641ac4c5ff17da112fcdb42" integrity sha512-uxNHBeQhRXIoHWTSNYUFhQVrHYFThIt6IVo2fFmSe8aBwdR3/w6b58hJpiL/fMukFkvGzjg+hSxFtwvVmKZmXw== @@ -4920,7 +4860,7 @@ is-glob@^3.1.0: dependencies: is-extglob "^2.1.0" -is-glob@^4.0.0: +is-glob@^4.0.0, is-glob@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg== @@ -5181,7 +5121,7 @@ js-levenshtein@^1.1.3: resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== -js-yaml@3.13.1, js-yaml@^3.10.0, js-yaml@^3.13.0, js-yaml@^3.13.1: +js-yaml@3.13.1, js-yaml@^3.10.0, js-yaml@^3.13.1: version "3.13.1" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.13.1.tgz#aff151b30bfdfa8e49e05da22e7415e9dfa37847" integrity sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw== @@ -5275,14 +5215,6 @@ jsprim@^1.2.2: json-schema "0.2.3" verror "1.10.0" -jsx-ast-utils@^2.1.0, jsx-ast-utils@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-2.2.1.tgz#4d4973ebf8b9d2837ee91a8208cc66f3a2776cfb" - integrity sha512-v3FxCcAf20DayI+uxnCuw795+oOIkVu6EnJ1+kSzhqqTZHNkTZ7B66ZgLp4oLJ/gbA64cI0B7WRoHZMSRdyVRQ== - dependencies: - array-includes "^3.0.3" - object.assign "^4.1.0" - junk@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/junk/-/junk-3.1.0.tgz#31499098d902b7e98c5d9b9c80f43457a88abfa1" @@ -5565,7 +5497,7 @@ lodash@4.17.14: resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.14.tgz#9ce487ae66c96254fe20b599f21b6816028078ba" integrity sha512-mmKYbW3GLuJeX+iGP+Y7Gp1AiGHGbXHCOh/jZmrawMmsE7MS4znI3RL2FsjbqOyMayHInjOeykW7PEajUk1/xw== -lodash@^4.13.0, lodash@^4.16.2, lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.13, lodash@^4.17.15, lodash@^4.17.3, lodash@^4.17.4, lodash@^4.17.5: +lodash@^4.13.0, lodash@^4.16.2, lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.3, lodash@^4.17.4, lodash@^4.17.5: version "4.17.15" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548" integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A== @@ -5620,7 +5552,7 @@ longest@^1.0.1: resolved "https://registry.yarnpkg.com/longest/-/longest-1.0.1.tgz#30a0b2da38f73770e8294a0d22e6625ed77d0097" integrity sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc= -loose-envify@^1.0.0, loose-envify@^1.4.0: +loose-envify@^1.0.0: version "1.4.0" resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== @@ -6426,16 +6358,6 @@ object.entries@^1.1.0: function-bind "^1.1.1" has "^1.0.3" -object.fromentries@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.0.tgz#49a543d92151f8277b3ac9600f1e930b189d30ab" - integrity sha512-9iLiI6H083uiqUuvzyY6qrlmc/Gz8hLQFOcb/Ri/0xXFkSNS3ctV+CbE6yM2+AnkYfOB3dGjdzC0wrMLIhQICA== - dependencies: - define-properties "^1.1.2" - es-abstract "^1.11.0" - function-bind "^1.1.1" - has "^1.0.1" - object.getownpropertydescriptors@^2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz#8758c846f5b407adab0f236e0986f14b051caa16" @@ -6800,7 +6722,7 @@ path-is-absolute@^1.0.0: resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= -path-is-inside@^1.0.1, path-is-inside@^1.0.2: +path-is-inside@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" integrity sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM= @@ -7021,15 +6943,6 @@ promise-inflight@^1.0.1: resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" integrity sha1-mEcocL8igTL8vdhoEputEsPAKeM= -prop-types@^15.7.2: - version "15.7.2" - resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.7.2.tgz#52c41e75b8c87e72b9d9360e0206b99dcbffa6c5" - integrity sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ== - dependencies: - loose-envify "^1.4.0" - object-assign "^4.1.1" - react-is "^16.8.1" - proxy-addr@~2.0.5: version "2.0.5" resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.5.tgz#34cbd64a2d81f4b1fd21e76f9f06c8a45299ee34" @@ -7197,11 +7110,6 @@ rcedit@^2.0.0: resolved "https://registry.yarnpkg.com/rcedit/-/rcedit-2.0.0.tgz#dcc85d93aa91a41c1ebc5c6aa1dfc43ea28b7dad" integrity sha512-XcFGyEBjhWSsud+R8elwQtGBbVkCf7tAiad+nXo5jc6l2rMf46NfGNwjnmBNneBIZDfq+Npf8lwP371JTONfrw== -react-is@^16.8.1: - version "16.8.6" - resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.8.6.tgz#5bbc1e2d29141c9fbdfed456343fe2bc430a6a16" - integrity sha512-aUk3bHfZ2bRSVFFbbeVS4i+lNPZr3/WM5jT2J5omUVV1zzcs1nAaf3l51ctA5FFvCRbhrH0bdAsRRQddFJZPtA== - read-pkg-up@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02" @@ -7331,11 +7239,6 @@ regenerator-runtime@^0.11.0: resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9" integrity sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg== -regenerator-runtime@^0.13.2: - version "0.13.2" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.2.tgz#32e59c9a6fb9b1a4aff09b4930ca2d4477343447" - integrity sha512-S/TQAZJO+D3m9xeN1WTI8dLKBBiRgXBlTJvbWjCThHWZj9EvHK70Ff50/tYj2J/fvBY6JtFVwRuazHN2E7M9BA== - regenerator-transform@^0.14.0: version "0.14.0" resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.14.0.tgz#2ca9aaf7a2c239dd32e4761218425b8c7a86ecaf" @@ -7511,7 +7414,7 @@ resolve-url@^0.2.1: resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= -resolve@^1.1.6, resolve@^1.10.0, resolve@^1.10.1, resolve@^1.11.0, resolve@^1.11.1, resolve@^1.3.2, resolve@^1.5.0: +resolve@^1.1.6, resolve@^1.10.0, resolve@^1.11.0, resolve@^1.11.1, resolve@^1.3.2, resolve@^1.5.0: version "1.12.0" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.12.0.tgz#3fc644a35c84a48554609ff26ec52b66fa577df6" integrity sha512-B/dOmuoAik5bKcD6s6nXDCjzUKnaDvdkRyAk6rsmsKLipWj4797iothd7jmmUhWTfinVMU+wc56rYKsit2Qy4w== @@ -7688,22 +7591,17 @@ semver-diff@^2.0.0: dependencies: semver "^5.0.3" -"semver@2 || 3 || 4 || 5", semver@^5.0.3, semver@^5.1.0, semver@^5.5.0, semver@^5.5.1, semver@^5.7.0: +"semver@2 || 3 || 4 || 5", semver@^5.0.3, semver@^5.1.0, semver@^5.4.1, semver@^5.7.0: version "5.7.0" resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.0.tgz#790a7cf6fea5459bac96110b29b60412dc8ff96b" integrity sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA== -semver@5.5.0: - version "5.5.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.5.0.tgz#dc4bbc7a6ca9d916dee5d43516f0092b58f7b8ab" - integrity sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA== - -semver@^5.3.0, semver@^5.4.1, semver@^5.6.0: +semver@^5.3.0, semver@^5.5.0, semver@^5.6.0: version "5.7.1" resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== -semver@^6.0.0, semver@^6.1.0, semver@^6.1.1, semver@^6.3.0: +semver@^6.0.0, semver@^6.1.0, semver@^6.1.1, semver@^6.1.2, semver@^6.2.0, semver@^6.3.0: version "6.3.0" resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== @@ -8175,11 +8073,16 @@ strip-indent@^2.0.0: resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-2.0.0.tgz#5ef8db295d01e6ed6cbf7aab96998d7822527b68" integrity sha1-XvjbKV0B5u1sv3qrlpmNeCJSe2g= -strip-json-comments@2.0.1, strip-json-comments@^2.0.1, strip-json-comments@~2.0.1: +strip-json-comments@2.0.1, strip-json-comments@~2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= +strip-json-comments@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.0.1.tgz#85713975a91fb87bf1b305cca77395e40d2a64a7" + integrity sha512-VTyMAUfdm047mwKl+u79WIdrZxtFtn+nBxHeb844XBQ9uMNTuTHdx2hc5RiAJYqwTj3wc/xe5HLSdJSkJ+WfZw== + sudo-prompt@^9.0.0: version "9.0.0" resolved "https://registry.yarnpkg.com/sudo-prompt/-/sudo-prompt-9.0.0.tgz#eebedeee9fcd6f661324e6bb46335e3288e8dc8a" @@ -8224,12 +8127,12 @@ symbol-observable@^1.1.0: integrity sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ== table@^5.2.3: - version "5.4.0" - resolved "https://registry.yarnpkg.com/table/-/table-5.4.0.tgz#d772a3216e68829920a41a32c18eda286c95d780" - integrity sha512-nHFDrxmbrkU7JAFKqKbDJXfzrX2UBsWmrieXFTGxiI5e4ncg3VqsZeI4EzNmX0ncp4XNGVeoxIWJXfCIXwrsvw== + version "5.4.6" + resolved "https://registry.yarnpkg.com/table/-/table-5.4.6.tgz#1292d19500ce3f86053b05f0e8e7e4a3bb21079e" + integrity sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug== dependencies: - ajv "^6.9.1" - lodash "^4.17.11" + ajv "^6.10.2" + lodash "^4.17.14" slice-ansi "^2.1.0" string-width "^3.0.0" @@ -8488,10 +8391,10 @@ tslib@^1.8.1, tslib@^1.9.0: resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.10.0.tgz#c3c19f95973fb0a62973fb09d90d961ee43e5c8a" integrity sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ== -tsutils@^3.7.0: - version "3.14.0" - resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.14.0.tgz#bf8d5a7bae5369331fa0f2b0a5a10bd7f7396c77" - integrity sha512-SmzGbB0l+8I0QwsPgjooFRaRvHLBLNYM8SeQ0k6rtNDru5sCGeLJcZdwilNndN+GysuFjF5EIYgN8GfFG6UeUw== +tsutils@^3.14.0: + version "3.17.1" + resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.17.1.tgz#ed719917f11ca0dee586272b2ac49e015a2dd759" + integrity sha512-kzeQ5B8H3w60nFY2g8cJIuH7JDpsALXySGtwGJ0p2LSjLgay3NdIpqq5SoOBe46bKDW2iq25irHCr8wjomUS2g== dependencies: tslib "^1.8.1" @@ -8836,6 +8739,11 @@ uuid@^3.3.2: resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.3.tgz#4568f0216e78760ee1dbf3a4d2cf53e224112866" integrity sha512-pW0No1RGHgzlpHJO1nsVrHKpOEIxkGg1xB+v0ZmdNH5OAeAwzAVrCnI2/6Mtx+Uys6iaylxa+D3g4j63IKKjSQ== +v8-compile-cache@^2.0.3: + version "2.1.0" + resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.1.0.tgz#e14de37b31a6d194f5690d67efc4e7f6fc6ab30e" + integrity sha512-usZBT3PW+LOjM25wbqIlZwPeJV+3OSz3M1k1Ws8snlW39dZyYL9lOGC5FgPVHfk0jKmjiDV8Z0mIbVQPiwFs7g== + validate-npm-package-license@^3.0.1: version "3.0.4" resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a"