diff --git a/__snapshots__/packages-spec.js b/__snapshots__/packages-spec.js index 4c8e163f5795..861c2e4248cc 100644 --- a/__snapshots__/packages-spec.js +++ b/__snapshots__/packages-spec.js @@ -15,18 +15,19 @@ exports['packages can copy files from package.json 1'] = { "tmp": { "packages": { "coffee": { - "package.json": "{\"main\":\"src/main.js\", \"name\": \"foo\", \"files\": [\"lib\"]}", + "lib": { + "foo.js": "{}" + }, "src": { "main.js": "console.log()" }, - "lib": { - "foo.js": "{}" - } + "package.json": "{\n \"main\": \"src/main.js\",\n \"name\": \"foo\",\n \"files\": [\n \"lib\"\n ]\n}\n" } } } } + exports['transformRequires can find and replace symlink requires 1'] = { "[cwd]": { "build": { diff --git a/appveyor.yml b/appveyor.yml index 31764edda1c4..9317953db9d6 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -2,6 +2,7 @@ branches: only: - master - develop + - windows-code-signing - 9.0-release - /win*/ diff --git a/circle.yml b/circle.yml index 6363f0e94842..c5f2f12a4ba1 100644 --- a/circle.yml +++ b/circle.yml @@ -8,7 +8,6 @@ macBuildFilters: &macBuildFilters branches: only: - develop - - 9.0-release defaults: &defaults parallelism: 1 @@ -42,7 +41,6 @@ onlyMainBranches: &onlyMainBranches branches: only: - develop - - 9.0-release requires: - create-build-artifacts @@ -1513,7 +1511,7 @@ jobs: - run: name: Check current branch to persist artifacts command: | - if [[ "$CIRCLE_BRANCH" != "develop" && "$CIRCLE_BRANCH" != "9.0-release" ]]; then + if [[ "$CIRCLE_BRANCH" != "develop" && "$CIRCLE_BRANCH" != "tgriesser/build/root-yarn-install" ]]; then echo "Not uploading artifacts or posting install comment for this branch." circleci-agent step halt fi @@ -2155,7 +2153,6 @@ linux-workflow: &linux-workflow branches: only: - develop - - 9.0-release requires: - build - test-kitchensink: @@ -2167,7 +2164,6 @@ linux-workflow: &linux-workflow branches: only: - develop - - 9.0-release requires: - build - create-build-artifacts: @@ -2217,7 +2213,6 @@ linux-workflow: &linux-workflow branches: only: - develop - - 9.0-release requires: - create-build-artifacts - test-npm-module-and-verify-binary: @@ -2225,7 +2220,6 @@ linux-workflow: &linux-workflow branches: only: - develop - - 9.0-release requires: - create-build-artifacts - test-binary-against-staging: @@ -2234,7 +2228,6 @@ linux-workflow: &linux-workflow branches: only: - develop - - 9.0-release requires: - create-build-artifacts @@ -2259,7 +2252,6 @@ linux-workflow: &linux-workflow branches: only: - develop - - 9.0-release requires: - create-build-artifacts @@ -2331,7 +2323,6 @@ mac-workflow: &mac-workflow branches: only: - develop - - 9.0-release requires: - darwin-create-build-artifacts @@ -2343,7 +2334,6 @@ mac-workflow: &mac-workflow branches: only: - develop - - 9.0-release requires: - darwin-create-build-artifacts diff --git a/cli/lib/tasks/install.js b/cli/lib/tasks/install.js index ab56fb936b0a..0318619c92b7 100644 --- a/cli/lib/tasks/install.js +++ b/cli/lib/tasks/install.js @@ -38,6 +38,10 @@ const getNpmArgv = () => { const getVersionSpecifier = (startDir = path.resolve(__dirname, '../..')) => { const argv = getNpmArgv() + if ((process.env.npm_package_resolved || '').endsWith('cypress.tgz')) { + return process.env.npm_package_resolved + } + if (argv) { const tgz = _.find(argv, (t) => t.endsWith('cypress.tgz')) @@ -81,7 +85,7 @@ const getVersionSpecifier = (startDir = path.resolve(__dirname, '../..')) => { }) } -const betaNpmUrlRe = /^\/beta\/npm\/(?[0-9.]+)\/(?[^/]+)\/cypress\.tgz$/ +const betaNpmUrlRe = /^\/beta\/npm\/(?[0-9.]+)\/(?.+?)\/cypress\.tgz$/ // convert a prerelease NPM package .tgz URL to the corresponding binary .zip URL const getBinaryUrlFromPrereleaseNpmUrl = (npmUrl) => { diff --git a/cli/package.json b/cli/package.json index 82ee4946dfd3..9f4dc31acce4 100644 --- a/cli/package.json +++ b/cli/package.json @@ -4,6 +4,7 @@ "private": true, "main": "index.js", "scripts": { + "clean": "node ./scripts/clean.js", "prebuild": "yarn postinstall && node ./scripts/start-build.js", "build": "node ./scripts/build.js", "dtslint": "dtslint types", @@ -27,7 +28,7 @@ "@types/sizzle": "^2.3.2", "arch": "^2.2.0", "blob-util": "^2.0.2", - "bluebird": "^3.7.2", + "bluebird": "3.7.2", "cachedir": "^2.3.0", "chalk": "^4.1.0", "check-more-types": "^2.24.0", diff --git a/cli/scripts/clean.js b/cli/scripts/clean.js new file mode 100644 index 000000000000..34eac3ffd710 --- /dev/null +++ b/cli/scripts/clean.js @@ -0,0 +1,8 @@ +const shelljs = require('shelljs') +const { includeTypes } = require('./utils') + +shelljs.rm('-rf', 'build') + +includeTypes.map((m) => { + shelljs.rm('-rf', `types/${m}`) +}) diff --git a/cli/scripts/post-install.js b/cli/scripts/post-install.js index 8439892c633c..1cf84c349552 100644 --- a/cli/scripts/post-install.js +++ b/cli/scripts/post-install.js @@ -89,7 +89,9 @@ filesToUncomment.forEach((file) => { const filePath = join(__dirname, '../types', file) const str = fs.readFileSync(filePath).toString() - const result = str.split('\n').map((line) => line.substring(3)).join('\n') + const result = str.split('\n').map((line) => { + return line.startsWith('// ') ? line.substring(3) : line + }).join('\n') fs.writeFileSync(filePath, result) }) diff --git a/cli/test/lib/tasks/install_spec.js b/cli/test/lib/tasks/install_spec.js index ab8f7e579dbb..f8a7d9f66e4f 100644 --- a/cli/test/lib/tasks/install_spec.js +++ b/cli/test/lib/tasks/install_spec.js @@ -472,6 +472,9 @@ describe('/lib/tasks/install', function () { expect(install._getBinaryUrlFromPrereleaseNpmUrl('https://cdn.cypress.io/beta/npm/5.1.1/circle-develop-3fdfc3b453eb38ad3c0b079531e4dde6668e3dd0-436710/cypress.tgz')) .to.eq('https://cdn.cypress.io/beta/binary/5.1.1/linux-x64/circle-develop-3fdfc3b453eb38ad3c0b079531e4dde6668e3dd0-436710/cypress.zip') + + expect(install._getBinaryUrlFromPrereleaseNpmUrl('https://cdn.cypress.io/beta/npm/5.1.1/circle-develop/some/branch-3fdfc3b453eb38ad3c0b079531e4dde6668e3dd0-436710/cypress.tgz')) + .to.eq('https://cdn.cypress.io/beta/binary/5.1.1/linux-x64/circle-develop/some/branch-3fdfc3b453eb38ad3c0b079531e4dde6668e3dd0-436710/cypress.zip') }) it('returns nothing for an invalid url', function () { @@ -502,6 +505,14 @@ describe('/lib/tasks/install', function () { expect(await install._getVersionSpecifier('/foo/bar/baz')).to.eq('https://foo.com/cypress.tgz') }) + it('resolves with cypress.tgz URL if specified in npm env npm_package_resolved', async function () { + restoreEnv = mockedEnv({ + npm_package_resolved: 'https://foo.com/cypress.tgz', + }) + + expect(await install._getVersionSpecifier('/foo/bar/baz')).to.eq('https://foo.com/cypress.tgz') + }) + it('resolves with versionSpecifier from parent pkg.json', async function () { fs.readJSON.withArgs('/foo/bar/baz/package.json').resolves({ dependencies: { diff --git a/electron-builder.json b/electron-builder.json index c27885731b26..bfe10a1acac0 100644 --- a/electron-builder.json +++ b/electron-builder.json @@ -9,19 +9,7 @@ "hardenedRuntime": true, "entitlements": "./scripts/entitlements.mac.inherit.plist", "entitlementsInherit": "./scripts/entitlements.mac.inherit.plist", - "type": "distribution", - "binaries": [ - "./build/mac/Cypress.app/Contents/Resources/app/packages/server/node_modules/babel-plugin-add-module-exports/node_modules/fsevents/build/Release/.node", - "./build/mac/Cypress.app/Contents/Resources/app/packages/server/node_modules/babel-plugin-add-module-exports/node_modules/fsevents/build/Release/fse.node", - "./build/mac/Cypress.app/Contents/Resources/app/packages/server/node_modules/@ffmpeg-installer/darwin-x64/ffmpeg", - "./build/mac/Cypress.app/Contents/Resources/app/packages/server/node_modules/watchpack-chokidar2/node_modules/fsevents/build/Release/.node", - "./build/mac/Cypress.app/Contents/Resources/app/packages/server/node_modules/watchpack-chokidar2/node_modules/fsevents/build/Release/fse.node", - "./build/mac/Cypress.app/Contents/Resources/app/packages/server/node_modules/registry-js/build/Release/registry.node", - "./build/mac/Cypress.app/Contents/Resources/app/packages/server/node_modules/term-size/vendor/macos/term-size", - "./build/mac/Cypress.app/Contents/Resources/app/packages/server/node_modules/trash/lib/macos-trash", - "./build/mac/Cypress.app/Contents/Resources/app/packages/server/node_modules/fsevents/fsevents.node", - "./build/mac/Cypress.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Helpers/chrome_crashpad_handler" - ] + "type": "distribution" }, "linux": { "target": "dir", diff --git a/npm/angular/package.json b/npm/angular/package.json index d7868fcad166..ac8e63ff17e8 100644 --- a/npm/angular/package.json +++ b/npm/angular/package.json @@ -17,7 +17,7 @@ }, "dependencies": { "@cypress/mount-utils": "0.0.0-development", - "debug": "4.3.2" + "debug": "^4.3.2" }, "devDependencies": { "@angular-devkit/build-angular": "0.1102.12", diff --git a/npm/create-cypress-tests/package.json b/npm/create-cypress-tests/package.json index 554782079ea1..09f48045c209 100644 --- a/npm/create-cypress-tests/package.json +++ b/npm/create-cypress-tests/package.json @@ -17,7 +17,7 @@ "@babel/plugin-transform-typescript": "^7.2.0", "@babel/template": "^7.5.4", "@babel/types": "^7.5.0", - "bluebird": "^3.7.2", + "bluebird": "3.7.2", "chalk": "4.1.0", "cli-highlight": "2.1.10", "commander": "6.1.0", diff --git a/npm/eslint-plugin-dev/package.json b/npm/eslint-plugin-dev/package.json index 1d24393947df..2062cad77754 100644 --- a/npm/eslint-plugin-dev/package.json +++ b/npm/eslint-plugin-dev/package.json @@ -10,7 +10,7 @@ "test": "jest" }, "dependencies": { - "bluebird": "^3.5.5", + "bluebird": "3.5.5", "chalk": "^2.4.2", "eslint-rule-composer": "^0.3.0", "lodash": "^4.17.15", diff --git a/npm/react/package.json b/npm/react/package.json index 9722d7eb23ad..8d4b4bc1f1bd 100644 --- a/npm/react/package.json +++ b/npm/react/package.json @@ -21,7 +21,7 @@ }, "dependencies": { "@cypress/mount-utils": "0.0.0-development", - "debug": "4.3.2", + "debug": "^4.3.2", "find-webpack": "2.2.1", "find-yarn-workspace-root": "2.0.0" }, @@ -66,7 +66,7 @@ "date-fns": "2.13.0", "framer-motion": "2.6.13", "i18next": "19.7.0", - "lodash": "4.17.15", + "lodash": "^4.17.15", "mobx": "6.0.0", "mobx-react-lite": "3.0.0", "mocha-junit-reporter": "^2.0.0", diff --git a/npm/vue/package.json b/npm/vue/package.json index b3b62e8443f3..b78d214ed937 100644 --- a/npm/vue/package.json +++ b/npm/vue/package.json @@ -37,7 +37,7 @@ "babel-preset-typescript-vue3": "^2.0.14", "css-loader": "3.4.2", "cypress": "0.0.0-development", - "debug": "4.3.2", + "debug": "^4.3.2", "eslint-plugin-vue": "^6.2.2", "find-webpack": "2.1.0", "mocha": "7.1.1", diff --git a/npm/webpack-dev-server/package.json b/npm/webpack-dev-server/package.json index 6f8643edce90..be0f4b96f969 100644 --- a/npm/webpack-dev-server/package.json +++ b/npm/webpack-dev-server/package.json @@ -11,7 +11,7 @@ "watch": "tsc -w" }, "dependencies": { - "debug": "4.3.2", + "debug": "^4.3.2", "semver": "^7.3.4", "webpack-merge": "^5.4.0" }, diff --git a/npm/webpack-preprocessor/package.json b/npm/webpack-preprocessor/package.json index bef3d7e86bb9..6e09b9579d9e 100644 --- a/npm/webpack-preprocessor/package.json +++ b/npm/webpack-preprocessor/package.json @@ -20,8 +20,8 @@ "watch": "yarn build --watch" }, "dependencies": { - "bluebird": "^3.7.1", - "debug": "4.3.2", + "bluebird": "3.7.1", + "debug": "^4.3.2", "lodash": "^4.17.20" }, "devDependencies": { diff --git a/package.json b/package.json index 372a9dd05dec..1a19300d350b 100644 --- a/package.json +++ b/package.json @@ -35,7 +35,7 @@ "effective:circle:config": "circleci config process circle.yml | sed /^#/d", "ensure-deps": "./scripts/ensure-dependencies.sh", "get-next-version": "node scripts/get-next-version.js", - "postinstall": "yarn-deduplicate --strategy=highest && patch-package && ./scripts/run-if-not-ci.sh yarn build", + "postinstall": "patch-package && ./scripts/run-if-not-ci.sh yarn-deduplicate --strategy=highest && ./scripts/run-if-not-ci.sh yarn build", "jscodeshift": "jscodeshift -t ./node_modules/js-codemod/transforms/arrow-function-arguments.js", "lint": "eslint --ext .js,.jsx,.ts,.tsx,.json .", "lint-changed": "lint-changed", @@ -88,7 +88,7 @@ "@types/execa": "0.9.0", "@types/fs-extra": "^8.0.1", "@types/glob": "7.1.1", - "@types/lodash": "4.14.168", + "@types/lodash": "^4.14.168", "@types/markdown-it": "0.0.9", "@types/mini-css-extract-plugin": "1.2.3", "@types/mocha": "8.0.3", @@ -115,10 +115,10 @@ "commander": "6.2.1", "common-tags": "1.8.0", "conventional-recommended-bump": "6.1.0", - "debug": "4.3.2", + "debug": "^4.3.2", "del": "3.0.0", - "electron-builder": "22.9.1", - "electron-notarize": "1.0.0", + "electron-builder": "^22.13.1", + "electron-notarize": "^1.1.1", "enzyme-adapter-react-16": "1.12.1", "eslint": "7.22.0", "eslint-plugin-cypress": "2.11.2", @@ -154,7 +154,7 @@ "lerna": "3.20.2", "lint-staged": "11.1.2", "listr2": "3.8.3", - "lodash": "4.17.21", + "lodash": "^4.17.21", "make-empty-github-commit": "cypress-io/make-empty-github-commit#4a592aedb776ba2f4cc88979055315a53eec42ee", "minimist": "1.2.5", "mocha": "3.5.3", @@ -162,7 +162,6 @@ "mocha-junit-reporter": "2.0.0", "mocha-multi-reporters": "1.1.7", "mock-fs": "5.1.1", - "odiff-bin": "2.1.0", "parse-github-repo-url": "1.4.1", "patch-package": "6.4.7", "plist": "3.0.1", @@ -226,8 +225,6 @@ "system-tests" ], "nohoist": [ - "**/@ffmpeg-installer", - "**/@ffmpeg-installer/**", "**/webpack-preprocessor/babel-loader", "**/webpack-batteries-included-preprocessor/ts-loader", "**/@vue/runtime-dom", diff --git a/packages/config/package.json b/packages/config/package.json index c267170cc047..a40c6be80efc 100644 --- a/packages/config/package.json +++ b/packages/config/package.json @@ -14,8 +14,8 @@ "dependencies": { "check-more-types": "2.24.0", "common-tags": "1.8.0", - "debug": "4.3.2", - "lodash": "4.17.21" + "debug": "^4.3.2", + "lodash": "^4.17.21" }, "devDependencies": { "@packages/ts": "0.0.0-development", diff --git a/packages/desktop-gui/package.json b/packages/desktop-gui/package.json index 83a27dd462ef..ac94f2457e43 100644 --- a/packages/desktop-gui/package.json +++ b/packages/desktop-gui/package.json @@ -37,7 +37,7 @@ "dayjs": "^1.9.3", "gravatar": "1.8.0", "human-interval": "1.0.0", - "lodash": "4.17.21", + "lodash": "^4.17.21", "markdown-it": "11.0.0", "mobx": "5.15.4", "mobx-react": "6.1.8", diff --git a/packages/driver/package.json b/packages/driver/package.json index 7a0cacd0adeb..99c9099e5153 100644 --- a/packages/driver/package.json +++ b/packages/driver/package.json @@ -28,7 +28,6 @@ "@types/chalk": "^2.2.0", "@types/common-tags": "^1.8.0", "@types/jquery.scrollto": "1.4.29", - "@types/lodash": "^4.14.168", "@types/mocha": "^8.0.3", "@types/underscore.string": "0.0.38", "angular": "1.8.0", @@ -47,7 +46,7 @@ "cors": "2.8.5", "cypress-multi-reporters": "1.4.0", "dayjs": "^1.10.3", - "debug": "4.3.2", + "debug": "^4.3.2", "error-stack-parser": "2.0.6", "errorhandler": "1.5.1", "eventemitter2": "6.4.2", @@ -58,7 +57,7 @@ "js-cookie": "2.2.1", "jsdom": "14.1.0", "json-stable-stringify": "1.0.1", - "lodash": "4.17.21", + "lodash": "^4.17.21", "md5": "2.3.0", "method-override": "3.0.0", "methods": "1.1.2", diff --git a/packages/electron/app/app.js b/packages/electron/app/app.js new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/packages/electron/package.json b/packages/electron/package.json index 923ff4bdfda6..26a1836aaada 100644 --- a/packages/electron/package.json +++ b/packages/electron/package.json @@ -17,14 +17,14 @@ "dependencies": { "@cypress/icons": "0.7.0", "bluebird": "3.5.3", - "debug": "4.3.2", - "electron-packager": "14.1.1", + "debug": "^4.3.2", "fs-extra": "8.1.0", - "lodash": "4.17.21", + "lodash": "^4.17.21", "minimist": "1.2.5" }, "devDependencies": { "electron": "15.2.0", + "electron-packager": "14.1.1", "execa": "4.1.0", "mocha": "3.5.3" }, diff --git a/packages/extension/package.json b/packages/extension/package.json index 41b50e8fb6ef..61038a021614 100644 --- a/packages/extension/package.json +++ b/packages/extension/package.json @@ -17,7 +17,7 @@ }, "dependencies": { "bluebird": "3.5.3", - "lodash": "4.17.21" + "lodash": "^4.17.21" }, "devDependencies": { "@cypress/icons": "0.7.0", diff --git a/packages/https-proxy/package.json b/packages/https-proxy/package.json index 7eb5da3a47e3..054570659b3a 100644 --- a/packages/https-proxy/package.json +++ b/packages/https-proxy/package.json @@ -15,9 +15,9 @@ }, "dependencies": { "bluebird": "3.5.3", - "debug": "4.3.2", + "debug": "^4.3.2", "fs-extra": "8.1.0", - "lodash": "4.17.21", + "lodash": "^4.17.21", "node-forge": "0.10.0", "semaphore": "1.1.0" }, diff --git a/packages/launcher/lib/darwin/detection-workaround.js b/packages/launcher/lib/darwin/detection-workaround.ts similarity index 77% rename from packages/launcher/lib/darwin/detection-workaround.js rename to packages/launcher/lib/darwin/detection-workaround.ts index 89f78738eb63..a0d2e6808307 100644 --- a/packages/launcher/lib/darwin/detection-workaround.js +++ b/packages/launcher/lib/darwin/detection-workaround.ts @@ -1,4 +1,4 @@ -const { detect } = require('../detect') +import { detect } from '../detect' detect(undefined, false).then((browsers) => { // eslint-disable-next-line no-console diff --git a/packages/launcher/lib/darwin/util.ts b/packages/launcher/lib/darwin/util.ts index 95dbeb2a90ad..9447bcf7bf27 100644 --- a/packages/launcher/lib/darwin/util.ts +++ b/packages/launcher/lib/darwin/util.ts @@ -115,7 +115,7 @@ export async function darwinDetectionWorkaround (): Promise { let args = ['./detection-workaround.js'] if (process.env.CYPRESS_INTERNAL_ENV === 'development') { - args = ['-r', '@packages/ts/register.js'].concat(args) + args = ['-r', '@packages/ts/register.js', './detection-workaround.ts'] } const { stdout } = await utils.execa(nodePath, args, { cwd: __dirname }) diff --git a/packages/launcher/package.json b/packages/launcher/package.json index 7bd879902a03..ee1c36e45fdd 100644 --- a/packages/launcher/package.json +++ b/packages/launcher/package.json @@ -13,10 +13,10 @@ }, "dependencies": { "bluebird": "3.5.3", - "debug": "4.3.2", + "debug": "^4.3.2", "execa": "4.0.0", "fs-extra": "8.1.0", - "lodash": "4.17.21", + "lodash": "^4.17.21", "plist": "3.0.1", "semver": "7.3.5" }, diff --git a/packages/net-stubbing/package.json b/packages/net-stubbing/package.json index ce048b9c3ba9..e5e44eaf5a15 100644 --- a/packages/net-stubbing/package.json +++ b/packages/net-stubbing/package.json @@ -12,7 +12,7 @@ "@types/mime-types": "2.1.0", "is-html": "^2.0.0", "istextorbinary": "6.0.0", - "lodash": "4.17.15", + "lodash": "^4.17.15", "mime-types": "2.1.27", "minimatch": "^3.0.4", "throttle": "^1.0.3" diff --git a/packages/network/package.json b/packages/network/package.json index 1ae9a6b2e836..944bc3551d1d 100644 --- a/packages/network/package.json +++ b/packages/network/package.json @@ -16,9 +16,9 @@ "@cypress/parse-domain": "2.4.0", "bluebird": "3.5.3", "concat-stream": "1.6.2", - "debug": "4.3.2", + "debug": "^4.3.2", "fs-extra": "8.1.0", - "lodash": "4.17.21", + "lodash": "^4.17.21", "node-forge": "0.10.0", "proxy-from-env": "1.0.0" }, diff --git a/packages/proxy/package.json b/packages/proxy/package.json index 87f0a806c3cc..940fe57a65c1 100644 --- a/packages/proxy/package.json +++ b/packages/proxy/package.json @@ -15,10 +15,10 @@ "bluebird": "3.5.3", "charset": "1.0.1", "common-tags": "1.8.0", - "debug": "4.3.2", + "debug": "^4.3.2", "grapheme-splitter": "1.0.4", "iconv-lite": "0.6.2", - "lodash": "4.17.19", + "lodash": "^4.17.19", "pumpify": "1.5.1", "through": "2.3.8", "utf8-stream": "0.0.0" diff --git a/packages/reporter/package.json b/packages/reporter/package.json index 12d51141bfb1..fa38d2a24ae1 100644 --- a/packages/reporter/package.json +++ b/packages/reporter/package.json @@ -25,7 +25,7 @@ "css-element-queries": "1.2.3", "cypress-multi-reporters": "1.4.0", "cypress-real-events": "1.4.0", - "lodash": "4.17.21", + "lodash": "^4.17.21", "markdown-it": "11.0.0", "mobx": "5.15.4", "mobx-react": "6.1.8", diff --git a/packages/rewriter/package.json b/packages/rewriter/package.json index 1016985fe8cb..b130d523e49c 100644 --- a/packages/rewriter/package.json +++ b/packages/rewriter/package.json @@ -14,8 +14,8 @@ "bluebird": "3.7.2", "chai": "4.2.0", "chai-as-promised": "7.1.1", - "debug": "4.3.2", - "lodash": "4.17.19", + "debug": "^4.3.2", + "lodash": "^4.17.19", "parse5-html-rewriting-stream": "5.1.1", "recast": "0.20.4" }, diff --git a/packages/runner-shared/package.json b/packages/runner-shared/package.json index 28656034380d..f7d21035d09c 100644 --- a/packages/runner-shared/package.json +++ b/packages/runner-shared/package.json @@ -21,7 +21,7 @@ "classnames": "2.3.1", "enzyme": "3.11.0", "enzyme-adapter-react-16": "1.15.2", - "lodash": "4.17.21", + "lodash": "^4.17.21", "mobx": "5.15.4", "mobx-react": "6.1.8", "mocha": "7.0.1", diff --git a/packages/runner/package.json b/packages/runner/package.json index 1f6d0be0c332..cb33caafbb50 100644 --- a/packages/runner/package.json +++ b/packages/runner/package.json @@ -42,12 +42,12 @@ "classnames": "2.3.1", "common-tags": "1.8.0", "cross-env": "6.0.3", - "debug": "4.3.2", + "debug": "^4.3.2", "enzyme": "3.11.0", "enzyme-adapter-react-16": "1.15.2", "jquery": "3.1.1", "jsdom": "14.1.0", - "lodash": "4.17.21", + "lodash": "^4.17.21", "mobx": "5.15.4", "mobx-react": "6.1.8", "mocha": "7.0.1", diff --git a/packages/server/package.json b/packages/server/package.json index b55367313a35..f43a4047584c 100644 --- a/packages/server/package.json +++ b/packages/server/package.json @@ -49,7 +49,7 @@ "cookie-parser": "1.4.5", "data-uri-to-buffer": "2.0.1", "dayjs": "^1.9.3", - "debug": "4.3.2", + "debug": "^4.3.2", "dependency-tree": "8.1.0", "duplexify": "4.1.1", "electron-context-menu": "3.1.1", @@ -77,7 +77,7 @@ "launch-editor": "2.2.1", "lazy-ass": "1.6.0", "lockfile": "1.0.4", - "lodash": "4.17.21", + "lodash": "^4.17.21", "log-symbols": "2.2.0", "marionette-client": "cypress-io/marionette-client#2cddf7d791cca7be5191d7fe103d58be7283957d", "md5": "2.3.0", diff --git a/packages/ts/package.json b/packages/ts/package.json index 3c44cf9cf15f..e7599d5924e2 100644 --- a/packages/ts/package.json +++ b/packages/ts/package.json @@ -11,7 +11,7 @@ "test-watch": "echo 'no watching of tests'" }, "dependencies": { - "debug": "4.3.2" + "debug": "^4.3.2" }, "devDependencies": { "ts-node": "5.0.1" diff --git a/packages/ui-components/package.json b/packages/ui-components/package.json index 56bb5a0f9149..e11203e70575 100644 --- a/packages/ui-components/package.json +++ b/packages/ui-components/package.json @@ -30,7 +30,7 @@ "classnames": "2.3.1", "cypress-multi-reporters": "1.4.0", "file-loader": "4.3.0", - "lodash": "4.17.19", + "lodash": "^4.17.19", "mobx": "5.15.4", "mobx-react": "6.1.7", "prop-types": "15.7.2", diff --git a/scripts/after-pack-hook.js b/scripts/after-pack-hook.js index 04f9ac78dfe0..eb41260b1471 100644 --- a/scripts/after-pack-hook.js +++ b/scripts/after-pack-hook.js @@ -3,6 +3,7 @@ const fs = require('fs-extra') const { join } = require('path') const globby = require('globby') const os = require('os') +const path = require('path') module.exports = async function (params) { console.log('****************************') @@ -36,5 +37,12 @@ module.exports = async function (params) { await fs.copy(sourceFolder, destinationFolder) } + const distNodeModules = path.join(params.packager.info._appDir, 'node_modules') + const appNodeModules = path.join(outputFolder, 'node_modules') + + console.log('copying ', distNodeModules, ' to', appNodeModules) + + await fs.copy(distNodeModules, appNodeModules) + console.log('all node_modules subfolders copied to', outputFolder) } diff --git a/scripts/binary/build.js b/scripts/binary/build.js deleted file mode 100644 index 113a36e6cddd..000000000000 --- a/scripts/binary/build.js +++ /dev/null @@ -1,479 +0,0 @@ -const _ = require('lodash') -const fse = require('fs-extra') -const os = require('os') -const del = require('del') -const path = require('path') -const cp = require('child_process') -const chalk = require('chalk') -const Promise = require('bluebird') -const pluralize = require('pluralize') -const execa = require('execa') -const electron = require('@packages/electron') -const debug = require('debug')('cypress:binary') -const la = require('lazy-ass') -const check = require('check-more-types') - -const meta = require('./meta') -const smoke = require('./smoke') -const packages = require('./util/packages') -const xvfb = require('../../cli/lib/exec/xvfb') -const { transformRequires } = require('./util/transform-requires') -const { testStaticAssets } = require('./util/testStaticAssets') -const performanceTracking = require('@tooling/system-tests/lib/performance') - -const rootPackage = require('@packages/root') - -const fs = Promise.promisifyAll(fse) - -const logger = function (msg, platform) { - const time = new Date() - const timeStamp = time.toLocaleTimeString() - - return console.log(timeStamp, chalk.yellow(msg), chalk.blue(platform)) -} - -const logBuiltAllPackages = () => { - return console.log('built all packages') -} - -// can pass options to better control the build -// for example -// skipClean - do not delete "dist" folder before build -const buildCypressApp = function (platform, version, options = {}) { - la(check.unemptyString(version), 'missing version to build', version) - - const distDir = _.partial(meta.distDir, platform) - const buildDir = _.partial(meta.buildDir, platform) - const buildAppDir = _.partial(meta.buildAppDir, platform) - - const log = _.partialRight(logger, platform) - - const testVersion = (folderNameFn) => { - return (function () { - log('#testVersion') - const dir = folderNameFn() - - la(check.unemptyString(dir), 'missing folder for platform', platform) - console.log('testing dist package version') - console.log('by calling: node index.js --version') - console.log('in the folder %s', dir) - - return execa('node', ['index.js', '--version'], { - cwd: dir, - }).then((result) => { - la(check.unemptyString(result.stdout), - 'missing output when getting built version', result) - - console.log('app in %s', dir) - console.log('built app version', result.stdout) - la(result.stdout === version, 'different version reported', - result.stdout, 'from input version to build', version) - - return console.log('✅ using node --version works') - }) - }) - } - - const testBuiltStaticAssets = function () { - log('#testBuiltStaticAssets') - - return testStaticAssets(distDir()) - } - - const checkPlatform = function () { - log('#checkPlatform') - if (platform === os.platform()) { - return - } - - return Promise.reject(new Error('Build platform mismatch')) - } - - const cleanupPlatform = function () { - log('#cleanupPlatform') - - if (options.skipClean) { - log('skipClean') - - return - } - - const cleanup = function () { - const dir = distDir() - - la(check.unemptyString(dir), 'empty dist dir', dir, 'for platform', platform) - - return fs.removeAsync(distDir()) - } - - return cleanup() - .catch(cleanup) - } - - const buildPackages = function () { - log('#buildPackages') - - return packages.runAllBuild() - // Promise.resolve() - .then((val) => { - logBuiltAllPackages(val) - - return val - }) - } - - const copyPackages = function () { - log('#copyPackages') - - return packages.copyAllToDist(distDir()) - } - - const replaceLocalNpmVersions = function () { - log('#replaceLocalNpmVersions') - - return packages.replaceLocalNpmVersions(distDir()) - } - - const npmInstallPackages = function () { - log('#npmInstallPackages') - - const pathToPackages = distDir('packages', '*') - - return packages.npmInstallAll(pathToPackages) - } - - const cleanLocalNpmPackages = function () { - log('#cleanLocalNpmPackages') - - return fs.removeAsync(distDir('npm')) - } - - /** - * Creates the package.json file that sits in the root of the output app - */ - const createRootPackage = function () { - log(`#createRootPackage ${platform} ${version}`) - - const electronVersion = electron.getElectronVersion() - - la(electronVersion, 'missing Electron version', electronVersion) - - return electron.getElectronNodeVersion() - .then((electronNodeVersion) => { - la(electronNodeVersion, 'missing Electron Node version', electronNodeVersion) - - const json = { - name: 'cypress', - productName: 'Cypress', - description: rootPackage.description, - version, // Cypress version - electronVersion, - electronNodeVersion, - main: 'index.js', - scripts: {}, - env: 'production', - } - - const outputFilename = distDir('package.json') - - debug('writing to %s json %o', outputFilename, json) - - return fs.outputJsonAsync(outputFilename, json) - .then(() => { - const str = `\ -process.env.CYPRESS_INTERNAL_ENV = process.env.CYPRESS_INTERNAL_ENV || 'production' -require('./packages/server')\ -` - - return fs.outputFileAsync(distDir('index.js'), str) - }) - }) - } - - const removeTypeScript = function () { - // remove the .ts files in our packages - log('#removeTypeScript') - - return del([ - // include ts files of packages - distDir('**', '*.ts'), - - // except those in node_modules - `!${distDir('**', 'node_modules', '**', '*.ts')}`, - ]) - .then((paths) => { - console.log( - 'deleted %d TS %s', - paths.length, - pluralize('file', paths.length), - ) - - return console.log(paths) - }) - } - - const cleanJs = function () { - log('#cleanJs') - - return packages.runAllCleanJs() - } - - const transformSymlinkRequires = function () { - log('#transformSymlinkRequires') - - return transformRequires(distDir()) - .then((replaceCount) => { - return la(replaceCount > 5, 'expected to replace more than 5 symlink requires, but only replaced', replaceCount) - }) - } - - // we also don't need ".bin" links inside Electron application - // thus we can go through dist/packages/*/node_modules and remove all ".bin" folders - const removeBinFolders = function () { - log('#removeBinFolders') - - const searchMask = distDir('packages', '*', 'node_modules', '.bin') - - console.log('searching for', searchMask) - - return del([searchMask]) - .then((paths) => { - console.log( - 'deleted %d .bin %s', - paths.length, - pluralize('folder', paths.length), - ) - - return console.log(paths) - }) - } - - const removeCyFolders = function () { - log('#removeCyFolders') - - const searchMask = distDir('packages', 'server', '.cy') - - console.log('searching', searchMask) - - return del([searchMask]) - .then((paths) => { - console.log( - 'deleted %d .cy %s', - paths.length, - pluralize('file', paths.length), - ) - - return console.log(paths) - }) - } - - const getIconFilename = function (platform) { - const filenames = { - darwin: 'cypress.icns', - win32: 'cypress.ico', - linux: 'icon_512x512.png', - } - const iconFilename = electron.icons().getPathToIcon(filenames[platform]) - - console.log(`For platform ${platform} using icon ${iconFilename}`) - - return iconFilename - } - - const removeDevElectronApp = function () { - log('#removeDevElectronApp') - // when we copy packages/electron, we get the "dist" folder with - // empty Electron app, symlinked to our server folder - // in production build, we do not need this link, and it - // would not work anyway with code signing - - // hint: you can see all symlinks in the build folder - // using "find build/darwin/Cypress.app/ -type l -ls" - console.log('platform', platform) - const electronDistFolder = distDir('packages', 'electron', 'dist') - - la(check.unemptyString(electronDistFolder), - 'empty electron dist folder for platform', platform) - - console.log(`Removing unnecessary folder '${electronDistFolder}'`) - - return fs.removeAsync(electronDistFolder) // .catch(_.noop) why are we ignoring an error here?! - } - - const electronPackAndSign = function () { - log('#electronPackAndSign') - - // See the internal wiki document "Signing Test Runner on MacOS" - // to learn how to get the right Mac certificate for signing and notarizing - // the built Test Runner application - - const appFolder = distDir() - const outputFolder = meta.buildRootDir(platform) - const electronVersion = electron.getElectronVersion() - - la(check.unemptyString(electronVersion), 'missing Electron version to pack', electronVersion) - const iconFilename = getIconFilename(platform) - - console.log(`output folder: ${outputFolder}`) - - const args = [ - '--publish=never', - `--c.electronVersion=${electronVersion}`, - `--c.directories.app=${appFolder}`, - `--c.directories.output=${outputFolder}`, - `--c.icon=${iconFilename}`, - // for now we cannot pack source files in asar file - // because electron-builder does not copy nested folders - // from packages/*/node_modules - // see https://github.com/electron-userland/electron-builder/issues/3185 - // so we will copy those folders later ourselves - '--c.asar=false', - ] - const opts = { - stdio: 'inherit', - } - - console.log('electron-builder arguments:') - console.log(args.join(' ')) - - return execa('electron-builder', args, opts) - } - - const lsDistFolder = function () { - log('#lsDistFolder') - const buildFolder = buildDir() - - console.log('in build folder %s', buildFolder) - - return execa('ls', ['-la', buildFolder]) - .then((val) => val.stdout) - .then(console.log) - } - - const runSmokeTests = function () { - log('#runSmokeTests') - - const run = function () { - // make sure to use a longer timeout - on Mac the first - // launch of a built application invokes gatekeeper check - // which takes a couple of seconds - const executablePath = meta.buildAppExecutable(platform) - - return smoke.test(executablePath) - } - - if (xvfb.isNeeded()) { - return xvfb.start() - .then(run) - .finally(xvfb.stop) - } - - return run() - } - - const verifyAppCanOpen = function () { - if (platform !== 'darwin') { - return Promise.resolve() - } - - const appFolder = meta.zipDir(platform) - - log(`#verifyAppCanOpen ${appFolder}`) - - return new Promise((resolve, reject) => { - const args = ['-a', '-vvvv', appFolder] - - debug(`cmd: spctl ${args.join(' ')}`) - const sp = cp.spawn('spctl', args, { stdio: 'inherit' }) - - return sp.on('exit', (code) => { - if (code === 0) { - return resolve() - } - - return reject(new Error('Verifying App via GateKeeper failed')) - }) - }) - } - - const printPackageSizes = function () { - const appFolder = meta.buildAppDir(platform, 'packages') - - log(`#printPackageSizes ${appFolder}`) - - if (platform === 'win32') { - return Promise.resolve() - } - - // "du" - disk usage utility - // -d -1 depth of 1 - // -h human readable sizes (K and M) - const args = ['-d', '1', appFolder] - - const parseDiskUsage = function (result) { - const lines = result.stdout.split(os.EOL) - // will store {package name: package size} - const data = {} - - lines.forEach((line) => { - const parts = line.split('\t') - const packageSize = parseFloat(parts[0]) - const folder = parts[1] - - const packageName = path.basename(folder) - - if (packageName === 'packages') { - return // root "packages" information - } - - data[packageName] = packageSize - }) - - return data - } - - const printDiskUsage = function (sizes) { - return console.log(_.sortBy(_.toPairs(sizes), 1)) - } - - return execa('du', args) - .then(parseDiskUsage) - .then((val) => { - printDiskUsage(val) - - return val - }) - .then((sizes) => { - return performanceTracking.track('test runner size', sizes) - }) - } - - return Promise.resolve() - .then(checkPlatform) - .then(cleanupPlatform) - .then(buildPackages) - .then(copyPackages) - .then(replaceLocalNpmVersions) - .then(npmInstallPackages) - .then(cleanLocalNpmPackages) - .then(createRootPackage) - .then(removeTypeScript) - .then(cleanJs) - .then(transformSymlinkRequires) - .then(testVersion(distDir)) - .then(testBuiltStaticAssets) - .then(removeBinFolders) - .then(removeCyFolders) - .then(removeDevElectronApp) - .then(electronPackAndSign) - .then(lsDistFolder) - .then(testVersion(buildAppDir)) - .then(runSmokeTests) - .then(verifyAppCanOpen) - .then(printPackageSizes) - .return({ - buildDir: buildDir(), - }) -} - -module.exports = buildCypressApp diff --git a/scripts/binary/build.ts b/scripts/binary/build.ts new file mode 100644 index 000000000000..e3016d95f27c --- /dev/null +++ b/scripts/binary/build.ts @@ -0,0 +1,331 @@ +import os from 'os' +import fs from 'fs-extra' +import path from 'path' +import _ from 'lodash' +import del from 'del' +import chalk from 'chalk' +import electron from '@packages/electron' +import la from 'lazy-ass' + +import * as packages from './util/packages' +import * as meta from './meta' +import xvfb from '../../cli/lib/exec/xvfb' +import smoke from './smoke' +import { spawn, execSync } from 'child_process' +import { transformRequires } from './util/transform-requires' +import execa from 'execa' +import { testStaticAssets } from './util/testStaticAssets' +import performanceTracking from '../../system-tests/lib/performance' + +const CY_ROOT_DIR = path.join(__dirname, '..', '..') + +const log = function (msg) { + const time = new Date() + const timeStamp = time.toLocaleTimeString() + + console.log(timeStamp, chalk.yellow(msg), chalk.blue(meta.PLATFORM)) +} + +interface BuildCypressAppOpts { + platform: meta.PlatformName + version: string + skipSigning?: boolean + keepBuild?: boolean +} + +// For debugging the flow without rebuilding each time + +export async function buildCypressApp (options: BuildCypressAppOpts) { + const { platform, version, skipSigning = false, keepBuild = false } = options + + log('#checkPlatform') + if (platform !== os.platform()) { + throw new Error('Platform mismatch') + } + + const DIST_DIR = meta.distDir() + + log('#cleanupPlatform') + fs.rmSync(meta.TMP_BUILD_DIR, { force: true, recursive: true }) + fs.rmSync(path.resolve('build'), { force: true, recursive: true }) + fs.rmSync(path.resolve('packages', 'electron', 'dist'), { force: true, recursive: true }) + + log(`symlinking ${meta.TMP_BUILD_DIR} -> ${path.resolve('build')}`) + fs.symlinkSync( + meta.TMP_BUILD_DIR, + path.resolve('build'), + 'dir', + ) + + if (!keepBuild) { + log('#buildPackages') + await execa('yarn', ['lerna', 'run', 'build-prod', '--stream', '--ignore', 'cli'], { + stdio: 'inherit', + cwd: CY_ROOT_DIR, + }) + } + + // Copy Packages: We want to copy the package.json, files, and output + log('#copyAllToDist') + await packages.copyAllToDist(DIST_DIR) + + const jsonRoot = fs.readJSONSync(path.join(CY_ROOT_DIR, 'package.json')) + + fs.writeJsonSync(meta.distDir('package.json'), _.omit(jsonRoot, [ + 'scripts', + 'devDependencies', + 'lint-staged', + 'engines', + ]), { spaces: 2 }) + + // Copy the yarn.lock file so we have a consistent install + fs.copySync(path.join(CY_ROOT_DIR, 'yarn.lock'), meta.distDir('yarn.lock')) + + // replaceLocalNpmVersions + const dirsSeen = await packages.replaceLocalNpmVersions(DIST_DIR) + + // remove local npm dirs that aren't needed + await packages.removeLocalNpmDirs(DIST_DIR, dirsSeen) + + execSync('yarn --production', { + cwd: DIST_DIR, + stdio: 'inherit', + }) + + // TODO: Validate no-hoists / single copies of libs + + // Remove extra directories that are large/unneeded + log('#remove extra dirs') + await del([ + meta.distDir('**', 'image-q', 'demo'), + meta.distDir('**', 'gifwrap', 'test'), + meta.distDir('**', 'pixelmatch', 'test'), + meta.distDir('**', '@jimp', 'tiff', 'test'), + meta.distDir('**', '@cypress', 'icons', '**/*.{ai,eps}'), + meta.distDir('**', 'esprima', 'test'), + meta.distDir('**', 'bmp-js', 'test'), + meta.distDir('**', 'exif-parser', 'test'), + ], { force: true }) + + console.log('Deleted excess directories') + + log('#createRootPackage') + const electronVersion = electron.getElectronVersion() + const electronNodeVersion = await electron.getElectronNodeVersion() + + fs.writeJSONSync(meta.distDir('package.json'), { + name: 'cypress', + productName: 'Cypress', + description: jsonRoot.description, + version, // Cypress version + electronVersion, + electronNodeVersion, + main: 'index.js', + scripts: {}, + env: 'production', + }, { spaces: 2 }) + + fs.writeFileSync(meta.distDir('index.js'), `\ +process.env.CYPRESS_INTERNAL_ENV = process.env.CYPRESS_INTERNAL_ENV || 'production' +require('./packages/server')\ +`) + + // removeTypeScript + await del([ + // include ts files of packages + meta.distDir('**', '*.ts'), + + // except those in node_modules + `!${meta.distDir('**', 'node_modules', '**', '*.ts')}`, + ], { force: true }) + + // cleanJs + if (!keepBuild) { + await packages.runAllCleanJs() + } + + // transformSymlinkRequires + log('#transformSymlinkRequires') + + await transformRequires(meta.distDir()) + + log(`#testVersion ${meta.distDir()}`) + await testVersion(meta.distDir(), version) + + // testBuiltStaticAssets + await testStaticAssets(meta.distDir()) + + log('#removeCyAndBinFolders') + await del([ + meta.distDir('node_modules', '.bin'), + meta.distDir('packages', '*', 'node_modules', '.bin'), + meta.distDir('packages', 'server', '.cy'), + ], { force: true }) + + // when we copy packages/electron, we get the "dist" folder with + // empty Electron app, symlinked to our server folder + // in production build, we do not need this link, and it + // would not work anyway with code signing + + // hint: you can see all symlinks in the build folder + // using "find build/darwin/Cypress.app/ -type l -ls" + log('#removeDevElectronApp') + fs.removeSync(meta.distDir('packages', 'electron', 'dist')) + + // electronPackAndSign + log('#electronPackAndSign') + // See the internal wiki document "Signing Test Runner on MacOS" + // to learn how to get the right Mac certificate for signing and notarizing + // the built Test Runner application + + const appFolder = meta.distDir() + const outputFolder = meta.buildRootDir() + + const iconFilename = getIconFilename() + + console.log(`output folder: ${outputFolder}`) + + const args = [ + '--publish=never', + `--c.electronVersion=${electronVersion}`, + `--c.directories.app=${appFolder}`, + `--c.directories.output=${outputFolder}`, + `--c.icon=${iconFilename}`, + // for now we cannot pack source files in asar file + // because electron-builder does not copy nested folders + // from packages/*/node_modules + // see https://github.com/electron-userland/electron-builder/issues/3185 + // so we will copy those folders later ourselves + '--c.asar=false', + ] + + console.log('electron-builder arguments:') + console.log(args.join(' ')) + + try { + await execa('electron-builder', args, { + stdio: 'inherit', + }) + } catch (e) { + if (!skipSigning) { + throw e + } + } + + // lsDistFolder + console.log('in build folder %s', meta.buildDir()) + + const { stdout } = await execa('ls', ['-la', meta.buildDir()]) + + console.log(stdout) + + // testVersion(buildAppDir) + await testVersion(meta.buildAppDir(), version) + + // runSmokeTests + let usingXvfb = xvfb.isNeeded() + + try { + if (usingXvfb) { + await xvfb.start() + } + + const executablePath = meta.buildAppExecutable() + + await smoke.test(executablePath) + } finally { + if (usingXvfb) { + await xvfb.stop() + } + } + + // verifyAppCanOpen + if (platform === 'darwin' && !skipSigning) { + const appFolder = meta.zipDir() + + await new Promise((resolve, reject) => { + const args = ['-a', '-vvvv', appFolder] + + console.log(`cmd: spctl ${args.join(' ')}`) + const sp = spawn('spctl', args, { stdio: 'inherit' }) + + return sp.on('exit', (code) => { + if (code === 0) { + return resolve() + } + + return reject(new Error('Verifying App via GateKeeper failed')) + }) + }) + } + + if (platform === 'win32') { + return + } + + log(`#printPackageSizes ${appFolder}`) + + // "du" - disk usage utility + // -d -1 depth of 1 + // -h human readable sizes (K and M) + const diskUsageResult = await execa('du', ['-d', '1', appFolder]) + + const lines = diskUsageResult.stdout.split(os.EOL) + + // will store {package name: package size} + const data = {} + + lines.forEach((line) => { + const parts = line.split('\t') + const packageSize = parseFloat(parts[0]) + const folder = parts[1] + + const packageName = path.basename(folder) + + if (packageName === 'packages') { + return // root "packages" information + } + + data[packageName] = packageSize + }) + + const sizes = _.fromPairs(_.sortBy(_.toPairs(data), 1)) + + console.log(sizes) + + performanceTracking.track('test runner size', sizes) +} + +function getIconFilename () { + const filenames = { + darwin: 'cypress.icns', + win32: 'cypress.ico', + linux: 'icon_512x512.png', + } + const iconFilename = electron.icons().getPathToIcon(filenames[meta.PLATFORM]) + + console.log(`For platform ${meta.PLATFORM} using icon ${iconFilename}`) + + return iconFilename +} + +async function testVersion (dir: string, version: string) { + log('#testVersion') + + console.log('testing dist package version') + console.log('by calling: node index.js --version') + console.log('in the folder %s', dir) + + const result = await execa('node', ['index.js', '--version'], { + cwd: dir, + }) + + la(result.stdout, 'missing output when getting built version', result) + + console.log('app in %s', dir) + console.log('built app version', result.stdout) + la(result.stdout === version, 'different version reported', + result.stdout, 'from input version to build', version) + + console.log('✅ using node --version works') +} diff --git a/scripts/binary/index.js b/scripts/binary/index.js index ef326c86d372..30efde126023 100644 --- a/scripts/binary/index.js +++ b/scripts/binary/index.js @@ -70,12 +70,7 @@ const deploy = { parseOptions (argv) { const opts = minimist(argv, { - boolean: ['skip-clean'], - default: { - 'skip-clean': false, - }, alias: { - skipClean: 'skip-clean', zip: ['zipFile', 'zip-file', 'filename'], }, }) @@ -236,7 +231,7 @@ const deploy = { .then(() => { debug('building binary: platform %s version %s', options.platform, options.version) - return build(options.platform, options.version, options) + return build.buildCypressApp(options) }) }, diff --git a/scripts/binary/meta.js b/scripts/binary/meta.js deleted file mode 100644 index dd22c8fc5cdc..000000000000 --- a/scripts/binary/meta.js +++ /dev/null @@ -1,115 +0,0 @@ -const path = require('path') -const la = require('lazy-ass') -const check = require('check-more-types') -const os = require('os') -const _ = require('lodash') - -// canonical platform names -const platforms = { - darwin: 'darwin', - linux: 'linux', - windows: 'win32', -} - -const isValidPlatform = check.oneOf(_.values(platforms)) - -const checkPlatform = (platform) => { - return la(isValidPlatform(platform), - 'invalid build platform', platform, 'valid choices', _.values(platforms)) -} - -const buildRootDir = () => { - return path.resolve('build') -} - -// returns a path into the /build directory -// the output folder should look something like this -// build/ -// / = linux or darwin -// ... platform-specific files -const buildDir = function (platform, ...args) { - checkPlatform(platform) - const root = buildRootDir() - - switch (platform) { - case 'darwin': - // the new electron-builder for some reason adds its own platform - // subfolder and it is NOT "darwin" but "mac" - return path.resolve(root, 'mac', ...args) - case 'linux': - return path.resolve(root, 'linux-unpacked', ...args) - case 'win32': - if (os.arch() === 'x64') { - return path.resolve(root, 'win-unpacked', ...args) - } - - // x86 32bit architecture - throw new Error('Windows 32-bit is not supported.') - default: - throw new Error('unexpected platform') - } -} - -// returns a path into the /dist directory -const distDir = function (platform, ...args) { - checkPlatform(platform) - - return path.resolve('dist', platform, ...args) -} - -// returns folder to zip before uploading -const zipDir = function (platform) { - checkPlatform(platform) - switch (platform) { - case 'darwin': - return buildDir(platform, 'Cypress.app') - case 'linux': - return buildDir(platform) - case 'win32': - return buildDir(platform) - default: - throw new Error('unexpected platform') - } -} - -// returns a path into the /build/*/app directory -// specific to each platform -const buildAppDir = function (platform, ...args) { - checkPlatform(platform) - switch (platform) { - case 'darwin': - return buildDir(platform, 'Cypress.app', 'Contents', 'resources', 'app', ...args) - case 'linux': - return buildDir(platform, 'resources', 'app', ...args) - case 'win32': - return buildDir(platform, 'resources', 'app', ...args) - default: - throw new Error('unexpected platform') - } -} - -const buildAppExecutable = function (platform) { - checkPlatform(platform) - switch (platform) { - case 'darwin': - return buildDir(platform, 'Cypress.app', 'Contents', 'MacOS', 'Cypress') - case 'linux': - return buildDir(platform, 'Cypress') - case 'win32': - return buildDir(platform, 'Cypress') - default: - throw new Error('unexpected platform') - } -} - -module.exports = { - isValidPlatform, - buildRootDir, - buildDir, - distDir, - zipDir, - buildAppDir, - buildAppExecutable, - cacheDir: path.join(process.cwd(), 'cache'), - platforms, -} diff --git a/scripts/binary/meta.ts b/scripts/binary/meta.ts new file mode 100644 index 000000000000..575c9ba437c7 --- /dev/null +++ b/scripts/binary/meta.ts @@ -0,0 +1,95 @@ +import path from 'path' +import os from 'os' + +// canonical platform names +export const platforms = { + darwin: 'darwin', + linux: 'linux', + windows: 'win32', +} as const + +export const PLATFORM = os.platform() as any + +if (!Object.values(platforms).includes(PLATFORM)) { + throw new Error(`Invalid build platform ${PLATFORM}`) +} + +export type PlatformName = {[K in keyof typeof platforms]: typeof platforms[K]}[keyof typeof platforms] + +export const buildRootDir = () => { + return path.join(TMP_BUILD_DIR, 'build') +} + +export const buildLinkDir = () => { + return path.resolve('build') +} + +// returns a path into the /build directory +// the output folder should look something like this +// build/ +// / = linux or darwin +// ... platform-specific files +export const buildDir = function (...args: string[]) { + const root = buildRootDir() + + switch (PLATFORM) { + case 'darwin': + // the new electron-builder for some reason adds its own platform + // subfolder and it is NOT "darwin" but "mac" + return path.resolve(root, 'mac', ...args) + case 'linux': + return path.resolve(root, 'linux-unpacked', ...args) + case 'win32': + return path.resolve(root, 'win-unpacked', ...args) + default: + throw new Error('unexpected platform') + } +} + +export const TMP_BUILD_DIR = path.join(os.tmpdir(), 'cypress-build', PLATFORM) + +// returns a path into the /dist directory +export const distDir = function (...args: string[]) { + return path.resolve(TMP_BUILD_DIR, 'dist', ...args) +} + +// returns folder to zip before uploading +export const zipDir = function () { + switch (PLATFORM) { + case 'darwin': + return buildDir('Cypress.app') + case 'linux': + case 'win32': + return buildDir() + default: + throw new Error('unexpected platform') + } +} + +// returns a path into the /build/*/app directory +// specific to each platform +export const buildAppDir = function (...args: string[]) { + switch (PLATFORM) { + case 'darwin': + return buildDir('Cypress.app', 'Contents', 'resources', 'app', ...args) + case 'linux': + case 'win32': + return buildDir('resources', 'app', ...args) + default: + throw new Error('unexpected platform') + } +} + +export const buildAppExecutable = function () { + switch (PLATFORM) { + case 'darwin': + return buildDir('Cypress.app', 'Contents', 'MacOS', 'Cypress') + case 'linux': + case 'win32': + return buildDir('Cypress') + default: + throw new Error('unexpected platform') + } +} + +export const cacheDir = path.join(process.cwd(), 'cache') diff --git a/scripts/binary/util/packages.js b/scripts/binary/util/packages.js deleted file mode 100644 index 5270db008a50..000000000000 --- a/scripts/binary/util/packages.js +++ /dev/null @@ -1,283 +0,0 @@ -const _ = require('lodash') -let fs = require('fs-extra') -const path = require('path') -// we wrap glob to handle EMFILE error -let glob = require('glob') -const Promise = require('bluebird') -const retry = require('bluebird-retry') -const la = require('lazy-ass') -const check = require('check-more-types') -const execa = require('execa') -const prettyMs = require('pretty-ms') -const pluralize = require('pluralize') -const debug = require('debug')('cypress:binary') -const externalUtils = require('./3rd-party') - -fs = Promise.promisifyAll(fs) -glob = Promise.promisify(glob) - -const DEFAULT_PATHS = 'package.json'.split(' ') -const rootYarnLock = fs.readFileSync(path.join(__dirname, '../../../yarn.lock'), 'utf8') - -const pathToPackageJson = function (packageFolder) { - la(check.unemptyString(packageFolder), 'expected package path', packageFolder) - - return path.join(packageFolder, 'package.json') -} - -const createCLIExecutable = (command) => { - return (function (args, cwd, env = {}) { - const commandToExecute = `${command} ${args.join(' ')}` - - console.log(commandToExecute) - if (cwd) { - console.log('in folder:', cwd) - } - - la(check.maybe.string(cwd), 'invalid CWD string', cwd) - - return execa(command, args, { stdio: 'inherit', cwd, env }) - // if everything is ok, resolve with nothing - .then(() => undefined) - .catch((result) => { - const msg = `${commandToExecute} failed with exit code: ${result.code}` - - throw new Error(msg) - }) - }) -} - -const yarn = createCLIExecutable('yarn') -const npx = createCLIExecutable('npx') - -const runAllBuild = _.partial(npx, ['lerna', 'run', 'build-prod', '--ignore', 'cli']) - -// removes transpiled JS files in the original package folders -const runAllCleanJs = _.partial(npx, ['lerna', 'run', 'clean-js', '--ignore', 'cli']) - -const copyAllToDist = function (distDir) { - const copyRelativePathToDist = function (relative) { - const dest = path.join(distDir, relative) - - return retry(() => { - console.log(relative, '->', dest) - - return fs.copyAsync(relative, dest) - }) - } - - // these packages are bundled into others, don't need any of their - // source files in the binary, and don't have dist files - const skipPackages = [ - './packages/driver', - './packages/reporter', - './packages/ui-components', - ] - - const notSkipped = (pkg) => !skipPackages.includes(pkg) - - const copyPackage = function (pkg) { - console.log('** copy package: %s **', pkg) - - // copies the package to dist - // including the default paths - // and any specified in package.json files - return Promise.resolve(fs.readJsonAsync(pathToPackageJson(pkg))) - .then((json) => { - // grab all the files that match "files" wildcards - // but without all negated files ("!src/**/*.spec.js" for example) - // and default included paths - // and convert to relative paths - return DEFAULT_PATHS - .concat(json.files || []) - .concat(json.main || []) - }).then((pkgFileMasks) => { - debug('for pkg %s have the following file masks %o', pkg, pkgFileMasks) - const globOptions = { - cwd: pkg, // search in the package folder - absolute: false, // and return relative file paths - followSymbolicLinks: false, // do not follow symlinks - } - - return externalUtils.globby(pkgFileMasks, globOptions) - }).map((foundFileRelativeToPackageFolder) => { - return path.join(pkg, foundFileRelativeToPackageFolder) - }) - .tap(debug) - .map(copyRelativePathToDist, { concurrency: 1 }) - } - - // fs-extra concurrency tests (copyPackage / copyRelativePathToDist) - // 1/1 41688 - // 1/5 42218 - // 1/10 42566 - // 2/1 45041 - // 2/2 43589 - // 3/3 51399 - - // cp -R concurrency tests - // 1/1 65811 - - const started = new Date() - - return fs.ensureDirAsync(distDir) - .then(() => { - const globs = ['./packages/*', './npm/*'] - const globOptions = { - onlyFiles: false, - } - - return Promise.resolve(externalUtils.globby(globs, globOptions)) - }) - .filter(notSkipped) - .map(copyPackage, { concurrency: 1 }) - .then(() => { - console.log('Finished Copying %dms', new Date() - started) - - return console.log('') - }) -} - -// replaces local npm version 0.0.0-development -// with the path to the package -// we need to do this instead of just changing the symlink (like we do for require('@packages/...')) -// so the packages actually get installed to node_modules and work with peer dependencies -const replaceLocalNpmVersions = function (basePath) { - const visited = [] - - const updateNpmPackage = function (pkg) { - if (!visited.includes(pkg)) { - visited.push(pkg) - - return updatePackageJson(`./npm/${pkg}/package.json`) - } - - return Promise.resolve() - } - - const updatePackageJson = function (pattern) { - return Promise.resolve(glob(pattern, { cwd: basePath })) - .map((pkgPath) => { - const pkgJsonPath = path.join(basePath, pkgPath) - - return fs.readJsonAsync(pkgJsonPath) - .then((json) => { - const { dependencies } = json - let shouldWriteFile = false - - if (dependencies) { - return Promise.all(_.map(dependencies, (version, pkg) => { - const parsedPkg = /(@cypress\/)(.*)/g.exec(pkg) - - if (parsedPkg && parsedPkg.length === 3 && version === '0.0.0-development') { - const pkgName = parsedPkg[2] - - json.dependencies[`@cypress/${pkgName}`] = `file:${path.join(basePath, 'npm', pkgName)}` - shouldWriteFile = true - - return updateNpmPackage(pkgName) - } - })) - .then(() => { - if (shouldWriteFile) { - return fs.writeJsonAsync(pkgJsonPath, json, { spaces: 2 }) - } - }) - } - - return Promise.resolve() - }) - }) - } - - return updatePackageJson('./packages/*/package.json') -} - -const removeDevDependencies = function (packageFolder) { - const packagePath = pathToPackageJson(packageFolder) - - console.log('removing devDependencies from %s', packagePath) - - return fs.readJsonAsync(packagePath) - .then((json) => { - delete json.devDependencies - - return fs.writeJsonAsync(packagePath, json, { spaces: 2 }) - }) -} - -const retryGlobbing = function (pathToPackages, delay = 1000) { - const retryGlob = () => { - return glob(pathToPackages) - .catch({ code: 'EMFILE' }, () => { - // wait, then retry - return Promise - .delay(delay) - .then(retryGlob) - }) - } - - return retryGlob() -} - -// installs all packages given a wildcard -// pathToPackages would be something like "C:\projects\cypress\dist\win32\packages\*" -const npmInstallAll = function (pathToPackages) { - console.log(`npmInstallAll packages in ${pathToPackages}`) - - const started = new Date() - - const retryNpmInstall = function (pkg) { - console.log('installing %s', pkg) - console.log('NODE_ENV is %s', process.env.NODE_ENV) - - // force installing only PRODUCTION dependencies - // https://docs.npmjs.com/cli/install - const npmInstall = _.partial(yarn, ['install', '--production']) - - return npmInstall(pkg, { NODE_ENV: 'production' }) - .catch({ code: 'EMFILE' }, () => { - return Promise - .delay(1000) - .then(() => { - return retryNpmInstall(pkg) - }) - }).catch((err) => { - console.log(err, err.code) - throw err - }) - } - - const printFolders = (folders) => { - return console.log('found %s', pluralize('folder', folders.length, true)) - } - - // only installs production dependencies - return retryGlobbing(pathToPackages) - .tap(printFolders) - .mapSeries((packageFolder) => { - // Copying the yarn.lock from the root for deterministic builds - fs.writeFileSync(path.join(packageFolder, 'yarn.lock'), rootYarnLock) - - return removeDevDependencies(packageFolder) - .then(() => { - return retryNpmInstall(packageFolder) - }) - }).then(() => { - const end = new Date() - - return console.log('Finished NPM Installing', prettyMs(end - started)) - }) -} - -module.exports = { - runAllBuild, - - copyAllToDist, - - npmInstallAll, - - runAllCleanJs, - - replaceLocalNpmVersions, -} diff --git a/scripts/binary/util/packages.ts b/scripts/binary/util/packages.ts new file mode 100644 index 000000000000..54c294422f03 --- /dev/null +++ b/scripts/binary/util/packages.ts @@ -0,0 +1,175 @@ +import _ from 'lodash' +import fs from 'fs-extra' +import path from 'path' +// we wrap glob to handle EMFILE error +import la from 'lazy-ass' +import check from 'check-more-types' +import execa from 'execa' +import debugLib from 'debug' + +import externalUtils, { globby } from './3rd-party' + +const debug = debugLib('cypress:binary') + +const pathToPackageJson = function (packageFolder) { + la(check.unemptyString(packageFolder), 'expected package path', packageFolder) + + return path.join(packageFolder, 'package.json') +} + +const createCLIExecutable = (command) => { + return function (args, cwd = undefined, env = {}) { + const commandToExecute = `${command} ${args.join(' ')}` + + console.log(commandToExecute) + if (cwd) { + console.log('in folder:', cwd) + } + + // la(check.maybe.string(cwd), 'invalid CWD string', cwd) + + return execa(command, args, { stdio: 'inherit', cwd }) + // if everything is ok, resolve with nothing + .then(() => undefined) + .catch((result) => { + const msg = `${commandToExecute} failed with exit code: ${result.code}` + + throw new Error(msg) + }) + } +} + +const yarn = createCLIExecutable('yarn') + +export const runAllBuild = _.partial(yarn, ['lerna', 'run', 'build-prod', '--ignore', 'cli']) + +export const runAllCleanJs = _.partial(yarn, ['lerna', 'run', 'clean-js', '--ignore', 'cli']) + +export async function copyAllToDist (distDir: string) { + await fs.ensureDir(distDir) + + const started = new Date().valueOf() + const globbed = await externalUtils.globby(['./packages/*', './npm/*'], { + onlyFiles: false, + }) + + for (const pkg of globbed) { + // copies the package to dist + // including the default paths + // and any specified in package.json files + let json + + try { + json = await fs.readJSON(pathToPackageJson(pkg)) + } catch (e) { + if (e.code === 'ENOENT') { + continue + } + } + + // grab all the files that match "files" wildcards + // but without all negated files ("!src/**/*.spec.js" for example) + // and default included paths + // and convert to relative paths + const pkgFileMasks = [].concat(json.files || []).concat(json.main || []) + + debug('for pkg %s have the following file masks %o', pkg, pkgFileMasks) + const foundFileRelativeToPackageFolder = await externalUtils.globby(pkgFileMasks, { + cwd: pkg, // search in the package folder + absolute: false, // and return relative file paths + followSymbolicLinks: false, // do not follow symlinks + }) + + console.log(`Copying ${pkg} to ${path.join(distDir, pkg)}`) + + // fs-extra concurrency tests (copyPackage / copyRelativePathToDist) + // 1/1 41688 + // 1/5 42218 + // 1/10 42566 + // 2/1 45041 + // 2/2 43589 + // 3/3 51399 + + // cp -R concurrency tests + // 1/1 65811 + for (const relativeFile of foundFileRelativeToPackageFolder) { + const dest = path.join(distDir, pkg, relativeFile) + + await fs.copy(path.join(pkg, relativeFile), dest, { recursive: true }) + } + + try { + // Strip out dev-dependencies & scripts for everything in /packages so we can yarn install in there + await fs.writeJson(path.join(distDir, pkg, 'package.json'), _.omit(json, [ + 'scripts', + 'devDependencies', + 'lint-staged', + 'engines', + ]), { spaces: 2 }) + } catch (e) { + if (!e.message.includes('ENOENT')) { + throw e + } + } + } + + console.log('Finished Copying %dms', new Date().valueOf() - started) +} + +// replaces local npm version 0.0.0-development +// with the path to the package +// we need to do this instead of just changing the symlink (like we do for require('@packages/...')) +// so the packages actually get installed to node_modules and work with peer dependencies +export const replaceLocalNpmVersions = async function (basePath: string) { + const visited = new Set() + + const pkgPaths = await globby('./packages/*/package.json', { cwd: basePath }) + + async function updatePackageJson (pkg: string) { + const pkgJsonPath = path.join(basePath, pkg) + + visited.add(pkgJsonPath) + const json = await fs.readJson(pkgJsonPath) + + const { dependencies } = json + + if (dependencies) { + let shouldWriteFile = false + + for (const [depName, version] of Object.entries(dependencies)) { + if (!depName.startsWith('@cypress/') || version !== '0.0.0-development') { + continue + } + + const [, localPkg] = depName.split('/') + + const localPkgJsonPath = path.join(basePath, 'npm', localPkg) + + dependencies[`@cypress/${localPkg}`] = `file:${localPkgJsonPath}` + if (!visited.has(localPkgJsonPath)) { + await updatePackageJson(`./npm/${localPkg}/package.json`) + } + + shouldWriteFile = true + } + if (shouldWriteFile) { + await fs.writeJson(pkgJsonPath, json, { spaces: 2 }) + } + } + } + + await Promise.all(pkgPaths.map(updatePackageJson)) + + return Array.from(visited) +} + +export async function removeLocalNpmDirs (distPath: string, except: string[]) { + const toRemove = await globby(`${distPath}/npm/*`, { + ignore: except.map((e) => e.replace('/package.json', '')), + onlyDirectories: true, + }) + + for (const dir of toRemove) { + await fs.remove(dir) + } +} diff --git a/scripts/unit/binary/util/packages-spec.js b/scripts/unit/binary/util/packages-spec.js index 7f660ec792ea..3b3cbf7a062d 100644 --- a/scripts/unit/binary/util/packages-spec.js +++ b/scripts/unit/binary/util/packages-spec.js @@ -48,9 +48,8 @@ describe('packages', () => { .resolves(['./packages/coffee']) globbyStub - .withArgs(['package.json', 'lib', 'src/main.js']) + .withArgs(['lib', 'src/main.js']) .resolves([ - 'package.json', 'lib/foo.js', 'src/main.js', ]) diff --git a/scripts/win-appveyor-build.js b/scripts/win-appveyor-build.js index d604bf66d579..9d2a6733d8b1 100755 --- a/scripts/win-appveyor-build.js +++ b/scripts/win-appveyor-build.js @@ -25,7 +25,7 @@ const isRightBranch = () => { process.env.APPVEYOR_REPO_COMMIT_MESSAGE || '' ).includes('[build binary]') - const branchesToBuildBinary = ['develop', 'remove-win-32-support'] + const branchesToBuildBinary = ['develop', 'remove-win-32-support', 'tgriesser/build/root-yarn-install'] return branchesToBuildBinary.includes(branch) || shouldForceBinaryBuild } @@ -66,10 +66,14 @@ shell.exec(`yarn binary-build --platform windows --version ${version}`) // make sure we are not including dev dependencies accidentally // TODO how to get the server package folder? -const serverPackageFolder = 'C:/projects/cypress/dist/win32/packages/server' +const serverPackageFolder = path.join(os.tmpdir(), 'cypress-build', os.platform(), 'dist') shell.echo(`Checking prod and dev dependencies in ${serverPackageFolder}`) shell.exec('yarn list --prod --depth 0 || true') +shell.exec('yarn list --prod --depth 0 || true', { + cwd: serverPackageFolder, +}) + const result = shell.exec('yarn list --dev --depth 0 || true', { cwd: serverPackageFolder, }) diff --git a/system-tests/package.json b/system-tests/package.json index 2ce3dc905a61..fc73b4364925 100644 --- a/system-tests/package.json +++ b/system-tests/package.json @@ -40,7 +40,7 @@ "cookie-parser": "1.4.5", "cors": "2.8.5", "dayjs": "^1.9.3", - "debug": "4.3.2", + "debug": "^4.3.2", "execa": "1.0.0", "express": "4.17.1", "express-session": "1.16.1", @@ -52,7 +52,7 @@ "human-interval": "1.0.0", "image-size": "0.8.3", "lazy-ass": "1.6.0", - "lodash": "4.17.21", + "lodash": "^4.17.21", "mocha": "7.1.0", "mocha-banner": "1.1.2", "mochawesome-1.5.2": "npm:mochawesome@1.5.2", diff --git a/yarn.lock b/yarn.lock index 3eafb6c9c6d5..ae4eac888e16 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,10 +2,10 @@ # yarn lockfile v1 -"7zip-bin@~5.0.3": - version "5.0.3" - resolved "https://registry.yarnpkg.com/7zip-bin/-/7zip-bin-5.0.3.tgz#bc5b5532ecafd923a61f2fb097e3b108c0106a3f" - integrity sha512-GLyWIFBbGvpKPGo55JyRZAo4lVbnBiD52cKlw/0Vt+wnmKvWJkpZvsjVoaIolyBXDeAQKSicRtqFNPem9w0WYA== +"7zip-bin@~5.1.1": + version "5.1.1" + resolved "https://registry.yarnpkg.com/7zip-bin/-/7zip-bin-5.1.1.tgz#9274ec7460652f9c632c59addf24efb1684ef876" + integrity sha512-sAP4LldeWNz0lNzmTird3uWfFDWWTeg6V/MsmyyLR9X1idwKBWIgt/ZvinqQldJm3LecKEs1emkbquO6PCiLVQ== "@angular-devkit/architect@0.1102.12": version "0.1102.12" @@ -2596,6 +2596,17 @@ global-agent "^2.0.2" global-tunnel-ng "^2.7.1" +"@electron/universal@1.0.5": + version "1.0.5" + resolved "https://registry.yarnpkg.com/@electron/universal/-/universal-1.0.5.tgz#b812340e4ef21da2b3ee77b2b4d35c9b86defe37" + integrity sha512-zX9O6+jr2NMyAdSkwEUlyltiI4/EBLu2Ls/VD3pUQdi3cAYeYfdQnT2AJJ38HE4QxLccbU13LSpccw1IWlkyag== + dependencies: + "@malept/cross-spawn-promise" "^1.1.0" + asar "^3.0.3" + debug "^4.3.1" + dir-compare "^2.4.0" + fs-extra "^9.0.1" + "@emmetio/abbreviation@^2.2.2": version "2.2.2" resolved "https://registry.yarnpkg.com/@emmetio/abbreviation/-/abbreviation-2.2.2.tgz#746762fd9e7a8c2ea604f580c62e3cfe250e6989" @@ -4789,6 +4800,23 @@ npmlog "^4.1.2" write-file-atomic "^2.3.0" +"@malept/cross-spawn-promise@^1.1.0": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@malept/cross-spawn-promise/-/cross-spawn-promise-1.1.1.tgz#504af200af6b98e198bce768bc1730c6936ae01d" + integrity sha512-RTBGWL5FWQcg9orDOCcp4LvItNzUPcyEU9bwaeJX0rJ1IQxzucC48Y0/sQLp/g6t99IQgAlGIaesJS+gTn7tVQ== + dependencies: + cross-spawn "^7.0.1" + +"@malept/flatpak-bundler@^0.4.0": + version "0.4.0" + resolved "https://registry.yarnpkg.com/@malept/flatpak-bundler/-/flatpak-bundler-0.4.0.tgz#e8a32c30a95d20c2b1bb635cc580981a06389858" + integrity sha512-9QOtNffcOF/c1seMCDnjckb3R9WHcG34tky+FHpNKKCW0wc/scYLwMtO+ptyGUfMW0/b/n4qRiALlaFHc9Oj7Q== + dependencies: + debug "^4.1.1" + fs-extra "^9.0.0" + lodash "^4.17.15" + tmp-promise "^3.0.2" + "@material-ui/core@4.9.5": version "4.9.5" resolved "https://registry.yarnpkg.com/@material-ui/core/-/core-4.9.5.tgz#384869f2840b243241f7881a902f5ffc48360830" @@ -7740,11 +7768,18 @@ resolved "https://registry.yarnpkg.com/@types/cypress-image-snapshot/-/cypress-image-snapshot-3.1.5.tgz#03d5b8e089e96a493da31bdb9aef16f34c0000c1" integrity sha512-PoYmfojdRxrAi5kXi60NKSw3f9tmP7wGtyoRpMMcV4rlEOUzpyO6zmE9G0Z42u7i9erlyrwLVqFpbsN+uLq1Kg== -"@types/debug@4.1.5", "@types/debug@^4.1.5": +"@types/debug@4.1.5": version "4.1.5" resolved "https://registry.yarnpkg.com/@types/debug/-/debug-4.1.5.tgz#b14efa8852b7768d898906613c23f688713e02cd" integrity sha512-Q1y515GcOdTHgagaVFhHnIFQ38ygs/kmxdNpvpou+raI9UO3YZcHDngBSYKQklcKlvA7iuQlmIKbzvmxcOE9CQ== +"@types/debug@^4.1.6": + version "4.1.7" + resolved "https://registry.yarnpkg.com/@types/debug/-/debug-4.1.7.tgz#7cc0ea761509124709b8b2d1090d8f6c17aadb82" + integrity sha512-9AonUzyTjXXhEOa0DnqpzZi6VHlqKMswga9EXjpXnnqxwLtdvPPtlO8evrI5D9S6asFRCQ6v+wpiUKbw+vKqyg== + dependencies: + "@types/ms" "*" + "@types/enzyme-adapter-react-16@1.0.5": version "1.0.5" resolved "https://registry.yarnpkg.com/@types/enzyme-adapter-react-16/-/enzyme-adapter-react-16-1.0.5.tgz#1bf30a166f49be69eeda4b81e3f24113c8b4e9d5" @@ -7845,10 +7880,10 @@ dependencies: "@types/node" "*" -"@types/fs-extra@^9.0.1": - version "9.0.8" - resolved "https://registry.yarnpkg.com/@types/fs-extra/-/fs-extra-9.0.8.tgz#32c3c07ddf8caa5020f84b5f65a48470519f78ba" - integrity sha512-bnlTVTwq03Na7DpWxFJ1dvnORob+Otb8xHyUqUWhqvz/Ksg8+JXPlR52oeMSZ37YEOa5PyccbgUNutiQdi13TA== +"@types/fs-extra@^9.0.11": + version "9.0.13" + resolved "https://registry.yarnpkg.com/@types/fs-extra/-/fs-extra-9.0.13.tgz#7594fbae04fe7f1918ce8b3d213f74ff44ac1f45" + integrity sha512-nEnwB++1u5lVDM2UI4c1+5R+FYaKfaAzS4OococimjVm3nQw3TuzH5UNsocrcTBbhnerblyHj4A49qXbIiZdpA== dependencies: "@types/node" "*" @@ -8078,6 +8113,11 @@ dependencies: "@types/node" "*" +"@types/ms@*": + version "0.7.31" + resolved "https://registry.yarnpkg.com/@types/ms/-/ms-0.7.31.tgz#31b7ca6407128a3d2bbc27fe2d21b345397f6197" + integrity sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA== + "@types/node-fetch@^2.5.7": version "2.5.10" resolved "https://registry.yarnpkg.com/@types/node-fetch/-/node-fetch-2.5.10.tgz#9b4d4a0425562f9fcea70b12cb3fcdd946ca8132" @@ -8158,6 +8198,14 @@ resolved "https://registry.yarnpkg.com/@types/parsimmon/-/parsimmon-1.10.6.tgz#8fcf95990514d2a7624aa5f630c13bf2427f9cdd" integrity sha512-FwAQwMRbkhx0J6YELkwIpciVzCcgEqXEbIrIn3a2P5d3kGEHQ3wVhlN3YdVepYP+bZzCYO6OjmD4o9TGOZ40rA== +"@types/plist@^3.0.1": + version "3.0.2" + resolved "https://registry.yarnpkg.com/@types/plist/-/plist-3.0.2.tgz#61b3727bba0f5c462fe333542534a0c3e19ccb01" + integrity sha512-ULqvZNGMv0zRFvqn8/4LSPtnmN4MfhlPNtJCTpKuIIxGVGZ2rYWzFXrvEBoh9CVyqSE7D6YFRJ1hydLHI6kbWw== + dependencies: + "@types/node" "*" + xmlbuilder ">=11.0.1" + "@types/pretty-hrtime@^1.0.0": version "1.0.0" resolved "https://registry.yarnpkg.com/@types/pretty-hrtime/-/pretty-hrtime-1.0.0.tgz#c5a2d644a135e988b2932f99737e67b3c62528d0" @@ -8419,6 +8467,11 @@ resolved "https://registry.yarnpkg.com/@types/unist/-/unist-2.0.3.tgz#9c088679876f374eb5983f150d4787aa6fb32d7e" integrity sha512-FvUupuM3rlRsRtCN+fDudtmytGO6iHJuuRKS1Ss0pG5z8oX0diNEw94UEL7hgDbpN94rgaK5R7sWm6RrSkZuAQ== +"@types/verror@^1.10.3": + version "1.10.5" + resolved "https://registry.yarnpkg.com/@types/verror/-/verror-1.10.5.tgz#2a1413aded46e67a1fe2386800e291123ed75eb1" + integrity sha512-9UjMCHK5GPgQRoNbqdLIAvAy0EInuiqbW0PBMtVP6B5B2HQJlvoJHM+KodPZMEjOa5VkSc+5LH7xy+cUzQdmHw== + "@types/warning@^3.0.0": version "3.0.0" resolved "https://registry.yarnpkg.com/@types/warning/-/warning-3.0.0.tgz#0d2501268ad8f9962b740d387c4654f5f8e23e52" @@ -8516,10 +8569,17 @@ dependencies: "@types/yargs-parser" "*" -"@types/yargs@^15.0.0", "@types/yargs@^15.0.5": - version "15.0.13" - resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-15.0.13.tgz#34f7fec8b389d7f3c1fd08026a5763e072d3c6dc" - integrity sha512-kQ5JNTrbDv3Rp5X2n/iUu37IJBDU2gsZ5R/g1/KHOOEc5IKfUFjXT6DENPGduh08I/pamwtEq4oul7gUqKTQDQ== +"@types/yargs@^15.0.0": + version "15.0.14" + resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-15.0.14.tgz#26d821ddb89e70492160b66d10a0eb6df8f6fb06" + integrity sha512-yEJzHoxf6SyQGhBhIYGXQDSCkJjB6HohDShto7m8vaKg9Yp0Yn8+71J9eakh2bnPg6BfsH9PRMhiRTZnd4eXGQ== + dependencies: + "@types/yargs-parser" "*" + +"@types/yargs@^17.0.1": + version "17.0.7" + resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-17.0.7.tgz#44a484c634761da4391477515a98772b82b5060f" + integrity sha512-OvLKmpKdea1aWtqHv9bxVVcMoT6syAeK+198dfETIFkAevYRGwqh4H+KFxfjUETZuUuE5sQCAFwdOdoHUdo8eg== dependencies: "@types/yargs-parser" "*" @@ -10167,10 +10227,10 @@ ansi-regex@^4.1.0: resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg== -ansi-regex@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75" - integrity sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg== +ansi-regex@^5.0.0, ansi-regex@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" + integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== ansi-regex@^6.0.0: version "6.0.0" @@ -10254,38 +10314,40 @@ anymatch@^3.0.0, anymatch@^3.0.3, anymatch@^3.1.1, anymatch@~3.1.1, anymatch@~3. normalize-path "^3.0.0" picomatch "^2.0.4" -app-builder-bin@3.5.10: - version "3.5.10" - resolved "https://registry.yarnpkg.com/app-builder-bin/-/app-builder-bin-3.5.10.tgz#4a7f9999fccc0c435b6284ae1366bc76a17c4a7d" - integrity sha512-Jd+GW68lR0NeetgZDo47PdWBEPdnD+p0jEa7XaxjRC8u6Oo/wgJsfKUkORRgr2NpkD19IFKN50P6JYy04XHFLQ== +app-builder-bin@3.7.1: + version "3.7.1" + resolved "https://registry.yarnpkg.com/app-builder-bin/-/app-builder-bin-3.7.1.tgz#cb0825c5e12efc85b196ac3ed9c89f076c61040e" + integrity sha512-ql93vEUq6WsstGXD+SBLSIQw6SNnhbDEM0swzgugytMxLp3rT24Ag/jcC80ZHxiPRTdew1niuR7P3/FCrDqIjw== -app-builder-lib@22.9.1: - version "22.9.1" - resolved "https://registry.yarnpkg.com/app-builder-lib/-/app-builder-lib-22.9.1.tgz#ccb8f1a02b628514a5dfab9401fa2a976689415c" - integrity sha512-KfXim/fiNwFW2SKffsjEMdAU7RbbEXn62x5YyXle1b4j9X/wEHW9iwox8De6y0hJdR+/kCC/49lI+VgNwLhV7A== +app-builder-lib@22.13.1: + version "22.13.1" + resolved "https://registry.yarnpkg.com/app-builder-lib/-/app-builder-lib-22.13.1.tgz#9beee0dd3df32fcce303b933d187bf986efe3381" + integrity sha512-TsUe7gCdH1cnSknUcqwVRAAxsFxsxcU/BJvnKR8ASzjaZtePW7MU+AEaDVDUURycgYxQ9XeymGjmuQGS32jcbw== dependencies: - "7zip-bin" "~5.0.3" + "7zip-bin" "~5.1.1" "@develar/schema-utils" "~2.6.5" + "@electron/universal" "1.0.5" + "@malept/flatpak-bundler" "^0.4.0" async-exit-hook "^2.0.1" bluebird-lst "^1.0.9" - builder-util "22.9.1" - builder-util-runtime "8.7.2" + builder-util "22.13.1" + builder-util-runtime "8.8.1" chromium-pickle-js "^0.2.0" - debug "^4.3.0" - ejs "^3.1.5" - electron-publish "22.9.1" - fs-extra "^9.0.1" - hosted-git-info "^3.0.5" - is-ci "^2.0.0" - isbinaryfile "^4.0.6" - js-yaml "^3.14.0" - lazy-val "^1.0.4" + debug "^4.3.2" + ejs "^3.1.6" + electron-osx-sign "^0.5.0" + electron-publish "22.13.1" + fs-extra "^10.0.0" + hosted-git-info "^4.0.2" + is-ci "^3.0.0" + isbinaryfile "^4.0.8" + js-yaml "^4.1.0" + lazy-val "^1.0.5" minimatch "^3.0.4" - normalize-package-data "^2.5.0" - read-config-file "6.0.0" + read-config-file "6.2.0" sanitize-filename "^1.6.3" - semver "^7.3.2" - temp-file "^3.3.7" + semver "^7.3.5" + temp-file "^3.4.0" app-module-path@^2.2.0: version "2.2.0" @@ -10694,6 +10756,18 @@ asar@^2.0.1: optionalDependencies: "@types/glob" "^7.1.1" +asar@^3.0.3: + version "3.1.0" + resolved "https://registry.yarnpkg.com/asar/-/asar-3.1.0.tgz#70b0509449fe3daccc63beb4d3c7d2e24d3c6473" + integrity sha512-vyxPxP5arcAqN4F/ebHd/HhwnAiZtwhglvdmc7BR2f0ywbVNTOpSeyhLDbGXtE/y58hv1oC75TaNIXutnsOZsQ== + dependencies: + chromium-pickle-js "^0.2.0" + commander "^5.0.0" + glob "^7.1.6" + minimatch "^3.0.4" + optionalDependencies: + "@types/glob" "^7.1.1" + ascii-table@0.0.9: version "0.0.9" resolved "https://registry.yarnpkg.com/ascii-table/-/ascii-table-0.0.9.tgz#06a6604d6a55d4bf41a9a47d9872d7a78da31e73" @@ -12204,7 +12278,7 @@ base64-arraybuffer@0.1.4: resolved "https://registry.yarnpkg.com/base64-arraybuffer/-/base64-arraybuffer-0.1.4.tgz#9818c79e059b1355f97e0428a017c838e90ba812" integrity sha1-mBjHngWbE1X5fgQooBfIOOkLqBI= -base64-js@^1.0.2, base64-js@^1.2.3: +base64-js@^1.0.2, base64-js@^1.2.3, base64-js@^1.3.1: version "1.5.1" resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== @@ -12536,6 +12610,20 @@ boxen@^4.2.0: type-fest "^0.8.1" widest-line "^3.1.0" +boxen@^5.0.0: + version "5.1.2" + resolved "https://registry.yarnpkg.com/boxen/-/boxen-5.1.2.tgz#788cb686fc83c1f486dfa8a40c68fc2b831d2b50" + integrity sha512-9gYgQKXx+1nP8mP7CzFyaUARhg7D3n1dF/FnErWmu9l6JvGpNUN278h0aSb+QjoiKSWG+iZ3uHrcqk0qrY9RQQ== + dependencies: + ansi-align "^3.0.0" + camelcase "^6.2.0" + chalk "^4.1.0" + cli-boxes "^2.2.1" + string-width "^4.2.2" + type-fest "^0.20.2" + widest-line "^3.1.0" + wrap-ansi "^7.0.0" + brace-expansion@^1.0.0, brace-expansion@^1.1.7: version "1.1.11" resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" @@ -12846,7 +12934,7 @@ buffer-equal@0.0.1: resolved "https://registry.yarnpkg.com/buffer-equal/-/buffer-equal-0.0.1.tgz#91bc74b11ea405bc916bc6aa908faafa5b4aac4b" integrity sha1-kbx0sR6kBbyRa8aqkI+q+ltKrEs= -buffer-equal@^1.0.0: +buffer-equal@1.0.0, buffer-equal@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/buffer-equal/-/buffer-equal-1.0.0.tgz#59616b498304d556abd466966b22eeda3eca5fbe" integrity sha1-WWFrSYME1Var1GaWayLu2j7KX74= @@ -12890,7 +12978,7 @@ buffer@4.9.1: ieee754 "^1.1.4" isarray "^1.0.0" -buffer@5.6.0, buffer@^5.0.2, buffer@^5.2.0, buffer@^5.5.0: +buffer@5.6.0: version "5.6.0" resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.6.0.tgz#a31749dc7d81d84db08abf937b6b8c4033f62786" integrity sha512-/gDYp/UtU0eA1ys8bOs9J6a+E/KWIY+DZ+Q2WESNUA0jFRsJOc0SNUO6xJ5SGA1xueg3NL65W6s+NY5l9cunuw== @@ -12907,33 +12995,42 @@ buffer@^4.3.0: ieee754 "^1.1.4" isarray "^1.0.0" -builder-util-runtime@8.7.2: - version "8.7.2" - resolved "https://registry.yarnpkg.com/builder-util-runtime/-/builder-util-runtime-8.7.2.tgz#d93afc71428a12789b437e13850e1fa7da956d72" - integrity sha512-xBqv+8bg6cfnzAQK1k3OGpfaHg+QkPgIgpEkXNhouZ0WiUkyZCftuRc2LYzQrLucFywpa14Xbc6+hTbpq83yRA== +buffer@^5.0.2, buffer@^5.1.0, buffer@^5.2.0, buffer@^5.5.0: + version "5.7.1" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" + integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== dependencies: - debug "^4.1.1" + base64-js "^1.3.1" + ieee754 "^1.1.13" + +builder-util-runtime@8.8.1: + version "8.8.1" + resolved "https://registry.yarnpkg.com/builder-util-runtime/-/builder-util-runtime-8.8.1.tgz#d6e2b5f27723a7606f381e52a3000dadb1d6e4a9" + integrity sha512-xHxAzdsJmMV8m/N+INzYUKfyJASeKyKHnA1uGkY8Y8JKLI/c4BG+If+L0If2YETv96CiRASkvd02tIt2pvrchQ== + dependencies: + debug "^4.3.2" sax "^1.2.4" -builder-util@22.9.1: - version "22.9.1" - resolved "https://registry.yarnpkg.com/builder-util/-/builder-util-22.9.1.tgz#b7087a5cde477f90d718ca5d7fafb6ae261b16af" - integrity sha512-5hN/XOaYu4ZQUS6F+5CXE6jTo+NAnVqAxDuKGSaHWb9bejfv/rluChTLoY3/nJh7RFjkoyVjvFJv7zQDB1QmHw== +builder-util@22.13.1: + version "22.13.1" + resolved "https://registry.yarnpkg.com/builder-util/-/builder-util-22.13.1.tgz#fb2165c725b9405f0605a765cf91ec1870995ada" + integrity sha512-gMdoW9aQbWYxuQ4k4jT4An1BTo/hWzvsdv3pwNz18iNYnqn9j+xMllQOg9CHgfQYKSUd8VuMsZnbCvLO4NltYw== dependencies: - "7zip-bin" "~5.0.3" - "@types/debug" "^4.1.5" - "@types/fs-extra" "^9.0.1" - app-builder-bin "3.5.10" + "7zip-bin" "~5.1.1" + "@types/debug" "^4.1.6" + "@types/fs-extra" "^9.0.11" + app-builder-bin "3.7.1" bluebird-lst "^1.0.9" - builder-util-runtime "8.7.2" - chalk "^4.1.0" - debug "^4.3.0" - fs-extra "^9.0.1" - is-ci "^2.0.0" - js-yaml "^3.14.0" + builder-util-runtime "8.8.1" + chalk "^4.1.1" + cross-spawn "^7.0.3" + debug "^4.3.2" + fs-extra "^10.0.0" + is-ci "^3.0.0" + js-yaml "^4.1.0" source-map-support "^0.5.19" stat-mode "^1.0.0" - temp-file "^3.3.7" + temp-file "^3.4.0" builtin-modules@^1.1.1: version "1.1.1" @@ -13894,7 +13991,7 @@ cli-boxes@^1.0.0: resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-1.0.0.tgz#4fa917c3e59c94a004cd61f8ee509da651687143" integrity sha1-T6kXw+WclKAEzWH47lCdplFocUM= -cli-boxes@^2.2.0: +cli-boxes@^2.2.0, cli-boxes@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-2.2.1.tgz#ddd5035d25094fce220e9cab40a45840a440318f" integrity sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw== @@ -13965,6 +14062,14 @@ cli-table@^0.3.1: dependencies: colors "1.0.3" +cli-truncate@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/cli-truncate/-/cli-truncate-1.1.0.tgz#2b2dfd83c53cfd3572b87fc4d430a808afb04086" + integrity sha512-bAtZo0u82gCfaAGfSNxUdTI9mNyza7D8w4CVCcaOsy7sgwDzvx6ekr6cuWJqY3UGzgnQ1+4wgENup5eIhgxEYA== + dependencies: + slice-ansi "^1.0.0" + string-width "^2.0.0" + cli-truncate@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/cli-truncate/-/cli-truncate-2.1.0.tgz#c39e28bf05edcde5be3b98992a22deed5a2b93c7" @@ -14380,7 +14485,7 @@ commander@^4.0.1, commander@^4.1.1: resolved "https://registry.yarnpkg.com/commander/-/commander-4.1.1.tgz#9fd602bd936294e9e9ef46a3f4d6964044b18068" integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA== -commander@^5.1.0: +commander@^5.0.0, commander@^5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/commander/-/commander-5.1.0.tgz#46abbd1652f8e059bddaef99bbdcb2ad9cf179ae" integrity sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg== @@ -15067,6 +15172,13 @@ crc32-stream@^4.0.1: crc-32 "^1.2.0" readable-stream "^3.4.0" +crc@^3.8.0: + version "3.8.0" + resolved "https://registry.yarnpkg.com/crc/-/crc-3.8.0.tgz#ad60269c2c856f8c299e2c4cc0de4556914056c6" + integrity sha512-iX3mfgcTMIq3ZKLIsVFAbv7+Mc10kxabAGQb8HvjA1o3T1PIYprbakQ65d3I+2HGHt6nSKkM9PYjgoJO2KcFBQ== + dependencies: + buffer "^5.1.0" + create-ecdh@^4.0.0: version "4.0.4" resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.4.tgz#d6e7f4bffa66736085a0762fd3a632684dabcc4e" @@ -16027,7 +16139,7 @@ de-indent@^1.0.2: resolved "https://registry.yarnpkg.com/de-indent/-/de-indent-1.0.2.tgz#b2038e846dc33baa5796128d0804b455b8c1e21d" integrity sha1-sgOOhG3DO6pXlhKNCAS0VbjB4h0= -debug@*, debug@4, debug@4.3.2, debug@^4.0.0, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.3.0, debug@^4.3.1, debug@^4.3.2, debug@~4.3.1: +debug@*, debug@4, debug@4.3.2, debug@^4.0.0, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@~4.3.1: version "4.3.2" resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.2.tgz#f0a49c18ac8779e31d4a0c6029dfb76873c7428b" integrity sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw== @@ -16758,6 +16870,16 @@ diffie-hellman@^5.0.0: miller-rabin "^4.0.0" randombytes "^2.0.0" +dir-compare@^2.4.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/dir-compare/-/dir-compare-2.4.0.tgz#785c41dc5f645b34343a4eafc50b79bac7f11631" + integrity sha512-l9hmu8x/rjVC9Z2zmGzkhOEowZvW7pmYws5CWHutg8u1JgvsKWMx7Q/UODeu4djLZ4FgW5besw5yvMQnBHzuCA== + dependencies: + buffer-equal "1.0.0" + colors "1.0.3" + commander "2.9.0" + minimatch "3.0.4" + dir-glob@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-2.0.0.tgz#0b205d2b6aef98238ca286598a8204d29d0a0034" @@ -16793,17 +16915,34 @@ disparity@3.0.0: ansi-styles "^4.1.0" diff "^4.0.1" -dmg-builder@22.9.1: - version "22.9.1" - resolved "https://registry.yarnpkg.com/dmg-builder/-/dmg-builder-22.9.1.tgz#64647224f37ee47fc9bd01947c21cc010a30511f" - integrity sha512-jc+DAirqmQrNT6KbDHdfEp8D1kD0DBTnsLhwUR3MX+hMBun5bT134LQzpdK0GKvd22GqF8L1Cz/NOgaVjscAXQ== +dmg-builder@22.13.1: + version "22.13.1" + resolved "https://registry.yarnpkg.com/dmg-builder/-/dmg-builder-22.13.1.tgz#5a77655e691ad7e5d28fbf008c68e819e0e2bd69" + integrity sha512-qgfLN2fo4q2wIWNvbcKlZ71DLRDLvWIElOB7oxlSxUrMi6xhI+9v1Mh7E0FJ+r5UXhQzaQXaGuyMsQRbGgrSwg== dependencies: - app-builder-lib "22.9.1" - builder-util "22.9.1" - fs-extra "^9.0.1" + app-builder-lib "22.13.1" + builder-util "22.13.1" + builder-util-runtime "8.8.1" + fs-extra "^10.0.0" iconv-lite "^0.6.2" - js-yaml "^3.14.0" - sanitize-filename "^1.6.3" + js-yaml "^4.1.0" + optionalDependencies: + dmg-license "^1.0.9" + +dmg-license@^1.0.9: + version "1.0.9" + resolved "https://registry.yarnpkg.com/dmg-license/-/dmg-license-1.0.9.tgz#a2fb8d692af0e30b0730b5afc91ed9edc2d9cb4f" + integrity sha512-Rq6qMDaDou2+aPN2SYy0x7LDznoJ/XaG6oDcH5wXUp+WRWQMUYE6eM+F+nex+/LSXOp1uw4HLFoed0YbfU8R/Q== + dependencies: + "@types/plist" "^3.0.1" + "@types/verror" "^1.10.3" + ajv "^6.10.0" + cli-truncate "^1.1.0" + crc "^3.8.0" + iconv-corefoundation "^1.1.6" + plist "^3.0.1" + smart-buffer "^4.0.2" + verror "^1.10.0" dns-equal@^1.0.0: version "1.0.0" @@ -17022,6 +17161,11 @@ dotenv@^5.0.1: resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-5.0.1.tgz#a5317459bd3d79ab88cff6e44057a6a3fbb1fcef" integrity sha512-4As8uPrjfwb7VXC+WnLCbXK7y+Ueb2B3zgNCePYfhxS1PYeaO1YTeplffTEcbfLhvFNGLAz90VvJs9yomG7bow== +dotenv@^9.0.2: + version "9.0.2" + resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-9.0.2.tgz#dacc20160935a37dea6364aa1bef819fb9b6ab05" + integrity sha512-I9OvvrHp4pIARv4+x9iuewrWycX6CcZtoAu1XrzPxc5UygMJXJZYmBsynku8IkrJwgypE5DGNjDPmPRhDCptUg== + downshift@^6.0.15: version "6.1.2" resolved "https://registry.yarnpkg.com/downshift/-/downshift-6.1.2.tgz#99d9a03d4da4bf369df766effc3b70f7e789950e" @@ -17160,32 +17304,30 @@ ejs@^2.6.1: resolved "https://registry.yarnpkg.com/ejs/-/ejs-2.7.4.tgz#48661287573dcc53e366c7a1ae52c3a120eec9ba" integrity sha512-7vmuyh5+kuUyJKePhQfRQBhXV5Ce+RnaeeQArKu1EAMpL3WbgMt5WG6uQZpEVvYSSsxMXRKOewtDk9RaTKXRlA== -ejs@^3.1.5: +ejs@^3.1.6: version "3.1.6" resolved "https://registry.yarnpkg.com/ejs/-/ejs-3.1.6.tgz#5bfd0a0689743bb5268b3550cceeebbc1702822a" integrity sha512-9lt9Zse4hPucPkoP7FHDF0LQAlGyF9JVpnClFLFH3aSSbxmyoqINRpp/9wePWJTUl4KOQwRL72Iw3InHPDkoGw== dependencies: jake "^10.6.1" -electron-builder@22.9.1: - version "22.9.1" - resolved "https://registry.yarnpkg.com/electron-builder/-/electron-builder-22.9.1.tgz#a2962db6f2757bc01d02489f38fafe0809f68f60" - integrity sha512-GXPt8l5Mxwm1QKYopUM6/Tdh9W3695G6Ax+IFyj5pQ51G4SD5L1uq4/RkPSsOgs3rP7jNSV6g6OfDzdtVufPdA== +electron-builder@^22.13.1: + version "22.13.1" + resolved "https://registry.yarnpkg.com/electron-builder/-/electron-builder-22.13.1.tgz#419b2736c0b08f54cb024bc02cfae6b878b34fc3" + integrity sha512-ajlI40L60qKBBxvpf770kcjxHAccMpEWpwsHAppytl3WmWgJfMut4Wz9VUFqyNtX/9a624QTatk6TqoxqewRug== dependencies: - "@types/yargs" "^15.0.5" - app-builder-lib "22.9.1" - bluebird-lst "^1.0.9" - builder-util "22.9.1" - builder-util-runtime "8.7.2" - chalk "^4.1.0" - dmg-builder "22.9.1" - fs-extra "^9.0.1" - is-ci "^2.0.0" - lazy-val "^1.0.4" - read-config-file "6.0.0" - sanitize-filename "^1.6.3" - update-notifier "^4.1.1" - yargs "^16.0.3" + "@types/yargs" "^17.0.1" + app-builder-lib "22.13.1" + builder-util "22.13.1" + builder-util-runtime "8.8.1" + chalk "^4.1.1" + dmg-builder "22.13.1" + fs-extra "^10.0.0" + is-ci "^3.0.0" + lazy-val "^1.0.5" + read-config-file "6.2.0" + update-notifier "^5.1.0" + yargs "^17.0.1" electron-context-menu@3.1.1: version "3.1.1" @@ -17210,14 +17352,6 @@ electron-is-dev@^2.0.0: resolved "https://registry.npmjs.org/electron-is-dev/-/electron-is-dev-2.0.0.tgz#833487a069b8dad21425c67a19847d9064ab19bd" integrity sha512-3X99K852Yoqu9AcW50qz3ibYBWY79/pBhlMCab8ToEWS48R0T9tyxRiQhwylE7zQdXrMnx2JKqUJyMPmt5FBqA== -electron-notarize@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/electron-notarize/-/electron-notarize-1.0.0.tgz#bc925b1ccc3f79e58e029e8c4706572b01a9fd8f" - integrity sha512-dsib1IAquMn0onCrNMJ6gtEIZn/azG8hZMCYOuZIMVMUeRMgBYHK1s5TK9P8xAcrAjh/2aN5WYHzgVSWX314og== - dependencies: - debug "^4.1.1" - fs-extra "^9.0.1" - electron-notarize@^0.2.0: version "0.2.1" resolved "https://registry.yarnpkg.com/electron-notarize/-/electron-notarize-0.2.1.tgz#759e8006decae19134f82996ed910db26d9192cc" @@ -17226,6 +17360,14 @@ electron-notarize@^0.2.0: debug "^4.1.1" fs-extra "^8.1.0" +electron-notarize@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/electron-notarize/-/electron-notarize-1.1.1.tgz#3ed274b36158c1beb1dbef14e7faf5927e028629" + integrity sha512-kufsnqh86CTX89AYNG3NCPoboqnku/+32RxeJ2+7A4Rbm4bbOx0Nc7XTy3/gAlBfpj9xPAxHfhZLOHgfi6cJVw== + dependencies: + debug "^4.1.1" + fs-extra "^9.0.1" + electron-osx-sign@^0.4.11: version "0.4.17" resolved "https://registry.yarnpkg.com/electron-osx-sign/-/electron-osx-sign-0.4.17.tgz#2727ca0c79e1e4e5ccd3861fb3da9c3c913b006c" @@ -17238,6 +17380,18 @@ electron-osx-sign@^0.4.11: minimist "^1.2.0" plist "^3.0.1" +electron-osx-sign@^0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/electron-osx-sign/-/electron-osx-sign-0.5.0.tgz#fc258c5e896859904bbe3d01da06902c04b51c3a" + integrity sha512-icoRLHzFz/qxzDh/N4Pi2z4yVHurlsCAYQvsCSG7fCedJ4UJXBS6PoQyGH71IfcqKupcKeK7HX/NkyfG+v6vlQ== + dependencies: + bluebird "^3.5.0" + compare-version "^0.1.2" + debug "^2.6.8" + isbinaryfile "^3.0.2" + minimist "^1.2.0" + plist "^3.0.1" + electron-packager@14.1.1: version "14.1.1" resolved "https://registry.yarnpkg.com/electron-packager/-/electron-packager-14.1.1.tgz#260affa0287070e1cf25e5fed074564b8c5494ed" @@ -17261,19 +17415,18 @@ electron-packager@14.1.1: semver "^6.0.0" yargs-parser "^16.0.0" -electron-publish@22.9.1: - version "22.9.1" - resolved "https://registry.yarnpkg.com/electron-publish/-/electron-publish-22.9.1.tgz#7cc76ac4cc53efd29ee31c1e5facb9724329068e" - integrity sha512-ducLjRJLEeU87FaTCWaUyDjCoLXHkawkltP2zqS/n2PyGke54ZIql0tBuUheht4EpR8AhFbVJ11spSn1gy8r6w== +electron-publish@22.13.1: + version "22.13.1" + resolved "https://registry.yarnpkg.com/electron-publish/-/electron-publish-22.13.1.tgz#7d3aedf988f995c149cc620aef0772559342ea03" + integrity sha512-5nCXhnsqrRxP5NsZxUKjiMkcFmQglXp7i/YY4rp3h1s1psg3utOIkM29Z93YTSXicZJU1J+8811eo5HX1vpoKg== dependencies: - "@types/fs-extra" "^9.0.1" - bluebird-lst "^1.0.9" - builder-util "22.9.1" - builder-util-runtime "8.7.2" - chalk "^4.1.0" - fs-extra "^9.0.1" - lazy-val "^1.0.4" - mime "^2.4.6" + "@types/fs-extra" "^9.0.11" + builder-util "22.13.1" + builder-util-runtime "8.8.1" + chalk "^4.1.1" + fs-extra "^10.0.0" + lazy-val "^1.0.5" + mime "^2.5.2" electron-to-chromium@^1.3.247, electron-to-chromium@^1.3.378, electron-to-chromium@^1.3.564, electron-to-chromium@^1.3.634, electron-to-chromium@^1.3.723: version "1.3.727" @@ -19860,6 +20013,15 @@ fs-extra@^0.30.0: path-is-absolute "^1.0.0" rimraf "^2.2.8" +fs-extra@^10.0.0: + version "10.0.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-10.0.0.tgz#9ff61b655dde53fb34a82df84bb214ce802e17c1" + integrity sha512-C5owb14u9eJwizKGdchcDUQeFtlSHHthBk8pbX9Vc1PFZrLombudjDnNns88aYslCyF6IY5SUw3Roz6xShcEIQ== + dependencies: + graceful-fs "^4.2.0" + jsonfile "^6.0.1" + universalify "^2.0.0" + fs-extra@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-3.0.1.tgz#3794f378c58b342ea7dbbb23095109c4b3b62291" @@ -20541,13 +20703,6 @@ global-dirs@^0.1.0: dependencies: ini "^1.3.4" -global-dirs@^2.0.1: - version "2.1.0" - resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-2.1.0.tgz#e9046a49c806ff04d6c1825e196c8f0091e8df4d" - integrity sha512-MG6kdOUh/xBnyo9cJFeIKkLEc1AyFq42QTU4XiX51i2NEdxLxLWXIjEjmqKeSuKR7pAZjTqUVoT2b2huxVLgYQ== - dependencies: - ini "1.3.7" - global-dirs@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-3.0.0.tgz#70a76fe84ea315ab37b1f5576cbde7d48ef72686" @@ -21485,14 +21640,14 @@ hosted-git-info@^2.1.4, hosted-git-info@^2.7.1, hosted-git-info@^2.8.8: resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.8.tgz#7539bd4bc1e0e0a895815a2e0262420b12858488" integrity sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg== -hosted-git-info@^3.0.0, hosted-git-info@^3.0.5, hosted-git-info@^3.0.6: +hosted-git-info@^3.0.0, hosted-git-info@^3.0.6: version "3.0.8" resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-3.0.8.tgz#6e35d4cc87af2c5f816e4cb9ce350ba87a3f370d" integrity sha512-aXpmwoOhRBrw6X3j0h5RloK4x1OzsxMPyxqIHyNfSe2pypkVTZFpEiRoSipPEPlMrh0HW/XsjkJ5WgnCirpNUw== dependencies: lru-cache "^6.0.0" -hosted-git-info@^4.0.0, hosted-git-info@^4.0.1: +hosted-git-info@^4.0.0, hosted-git-info@^4.0.1, hosted-git-info@^4.0.2: version "4.0.2" resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-4.0.2.tgz#5e425507eede4fea846b7262f0838456c4209961" integrity sha512-c9OGXbZ3guC/xOlCg1Ci/VgWlwsqDv1yMQL1CWqXDL0hDjXuNcq0zuR4xqPSuasI3kqFDhqSyTjREz5gzq0fXg== @@ -21947,6 +22102,14 @@ i18next@19.7.0: dependencies: "@babel/runtime" "^7.10.1" +iconv-corefoundation@^1.1.6: + version "1.1.6" + resolved "https://registry.yarnpkg.com/iconv-corefoundation/-/iconv-corefoundation-1.1.6.tgz#27c135470237f6f8d13462fa1f5eaf250523c29a" + integrity sha512-1NBe55C75bKGZaY9UHxvXG3G0gEp0ziht7quhuFrW3SPgZDw9HI6qvYXRSV5M/Eupyu8ljuJ6Cba+ec15PZ4Xw== + dependencies: + cli-truncate "^1.1.0" + node-addon-api "^1.6.3" + iconv-lite@0.4.24, iconv-lite@^0.4.17, iconv-lite@^0.4.24, iconv-lite@^0.4.4, iconv-lite@^0.4.5: version "0.4.24" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" @@ -21995,10 +22158,10 @@ ieee754@1.1.8: resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.8.tgz#be33d40ac10ef1926701f6f08a2d86fbfd1ad3e4" integrity sha1-vjPUCsEO8ZJnAfbwii2G+/0a0+Q= -ieee754@^1.1.4: - version "1.1.13" - resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.13.tgz#ec168558e95aa181fd87d37f55c32bbcb6708b84" - integrity sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg== +ieee754@^1.1.13, ieee754@^1.1.4: + version "1.2.1" + resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" + integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== iferr@^0.1.5: version "0.1.5" @@ -22205,11 +22368,6 @@ inherits@2.0.3: resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= -ini@1.3.7: - version "1.3.7" - resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.7.tgz#a09363e1911972ea16d7a8851005d84cf09a9a84" - integrity sha512-iKpRpXP+CrP2jyrxvg1kMUpXDyRUFDWurxbnVT1vQPx+Wz9uCYsMIqYuSBLV+PAaZG/d7kRLKRFc9oDMsH+mFQ== - ini@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ini/-/ini-2.0.0.tgz#e5fd556ecdd5726be978fa1001862eacb0a94bc5" @@ -22862,15 +23020,7 @@ is-installed-globally@^0.1.0: global-dirs "^0.1.0" is-path-inside "^1.0.0" -is-installed-globally@^0.3.1: - version "0.3.2" - resolved "https://registry.yarnpkg.com/is-installed-globally/-/is-installed-globally-0.3.2.tgz#fd3efa79ee670d1187233182d5b0a1dd00313141" - integrity sha512-wZ8x1js7Ia0kecP/CHM/3ABkAmujX7WPvQk6uu3Fly/Mk44pySulQpnHG46OMjHGXApINnV4QhY3SWnECO2z5g== - dependencies: - global-dirs "^2.0.1" - is-path-inside "^3.0.1" - -is-installed-globally@~0.4.0: +is-installed-globally@^0.4.0, is-installed-globally@~0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/is-installed-globally/-/is-installed-globally-0.4.0.tgz#9a0fd407949c30f86eb6959ef1b7994ed0b7b520" integrity sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ== @@ -22947,10 +23097,10 @@ is-npm@^1.0.0: resolved "https://registry.yarnpkg.com/is-npm/-/is-npm-1.0.0.tgz#f2fb63a65e4905b406c86072765a1a4dc793b9f4" integrity sha1-8vtjpl5JBbQGyGBydloaTceTufQ= -is-npm@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/is-npm/-/is-npm-4.0.0.tgz#c90dd8380696df87a7a6d823c20d0b12bbe3c84d" - integrity sha512-96ECIfh9xtDDlPylNPXhzjsykHsMJZ18ASpaWzQyBr4YRTcVjUvzaHayDAES2oU/3KpljhHUjtSRNiDwi0F0ig== +is-npm@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/is-npm/-/is-npm-5.0.0.tgz#43e8d65cc56e1b67f8d47262cf667099193f45a8" + integrity sha512-WW/rQLOazUq+ST/bCAVBp/2oMERWLsR7OrKyt052dNDk4DHcDE0/7QSXITlmi+VBcV13DfIbysG3tZJm5RfdBA== is-number-object@^1.0.4: version "1.0.4" @@ -23039,10 +23189,10 @@ is-path-inside@^2.0.0, is-path-inside@^2.1.0: dependencies: path-is-inside "^1.0.2" -is-path-inside@^3.0.1, is-path-inside@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.2.tgz#f5220fc82a3e233757291dddc9c5877f2a1f3017" - integrity sha512-/2UGPSgmtqwo1ktx8NDHjuPwZWmHhO+gj0f93EkhLB5RgW9RZevWYYlIkS6zePc6U2WpOdQYIwHe9YC4DWEBVg== +is-path-inside@^3.0.2: + version "3.0.3" + resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" + integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== is-plain-obj@2.1.0, is-plain-obj@^2.0.0, is-plain-obj@^2.1.0: version "2.1.0" @@ -23368,10 +23518,10 @@ isbinaryfile@^3.0.2: dependencies: buffer-alloc "^1.2.0" -isbinaryfile@^4.0.0, isbinaryfile@^4.0.6: - version "4.0.6" - resolved "https://registry.yarnpkg.com/isbinaryfile/-/isbinaryfile-4.0.6.tgz#edcb62b224e2b4710830b67498c8e4e5a4d2610b" - integrity sha512-ORrEy+SNVqUhrCaal4hA4fBzhggQQ+BaLntyPOdoEiwlKZW9BZiJXjg3RMiruE4tPEI3pyVPpySHQF/dKWperg== +isbinaryfile@^4.0.0, isbinaryfile@^4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/isbinaryfile/-/isbinaryfile-4.0.8.tgz#5d34b94865bd4946633ecc78a026fc76c5b11fcf" + integrity sha512-53h6XFniq77YdW+spoRrebh0mnmTxRPTlcuIArO57lmMdq4uBKFKaeTjnb92oYWrSn/LVL+LT+Hap2tFQj8V+w== isbuffer@~0.0.0: version "0.0.0" @@ -24296,7 +24446,7 @@ js-yaml@3.14.0: argparse "^1.0.7" esprima "^4.0.0" -js-yaml@3.14.1, js-yaml@3.x, js-yaml@^3.13.1, js-yaml@^3.14.0, js-yaml@^3.7.0: +js-yaml@3.14.1, js-yaml@3.x, js-yaml@^3.13.1, js-yaml@^3.7.0: version "3.14.1" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== @@ -24311,6 +24461,13 @@ js-yaml@4.0.0: dependencies: argparse "^2.0.1" +js-yaml@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" + integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== + dependencies: + argparse "^2.0.1" + js-yaml@~3.2.7: version "3.2.7" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.2.7.tgz#102790f265d986fe95a4d0f2a792e7a7bd886eec" @@ -25019,7 +25176,7 @@ latest-version@^3.0.0: dependencies: package-json "^4.0.0" -latest-version@^5.0.0: +latest-version@^5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/latest-version/-/latest-version-5.1.0.tgz#119dfe908fe38d15dfa43ecd13fa12ec8832face" integrity sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA== @@ -25079,10 +25236,10 @@ lazy-universal-dotenv@^3.0.1: dotenv "^8.0.0" dotenv-expand "^5.1.0" -lazy-val@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/lazy-val/-/lazy-val-1.0.4.tgz#882636a7245c2cfe6e0a4e3ba6c5d68a137e5c65" - integrity sha512-u93kb2fPbIrfzBuLjZE+w+fJbUUMhNDXxNmMfaqNgpfQf1CO5ZSe2LfsnBqVAk7i/2NF48OSoRj+Xe2VT+lE8Q== +lazy-val@^1.0.4, lazy-val@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/lazy-val/-/lazy-val-1.0.5.tgz#6cf3b9f5bc31cee7ee3e369c0832b7583dcd923d" + integrity sha512-0/BnGCCfyUMkBpeDgWihanIAF9JmZhHBgUhEqzvf+adhNGLoP6TaiI5oF8oyb3I45P+PcnrqihSf01M0l0G5+Q== lazy.js@~0.4.0: version "0.4.3" @@ -25979,21 +26136,16 @@ lodash@4.17.15: resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548" integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A== -lodash@4.17.19: - version "4.17.19" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.19.tgz#e48ddedbe30b3321783c5b4301fbd353bc1e4a4b" - integrity sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ== - -lodash@4.17.21, "lodash@>=3.5 <5", lodash@^4.13.1, lodash@^4.14.0, lodash@^4.16.2, lodash@^4.16.4, lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.12, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.17.3, lodash@^4.17.4, lodash@^4.17.5, lodash@^4.2.1, lodash@^4.3.0, lodash@~4.17.2: - version "4.17.21" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" - integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== - lodash@4.17.4: version "4.17.4" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae" integrity sha1-eCA6TRwyiuHYbcpkYONptX9AVa4= +"lodash@>=3.5 <5", lodash@^4.13.1, lodash@^4.14.0, lodash@^4.16.2, lodash@^4.16.4, lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.12, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.17.3, lodash@^4.17.4, lodash@^4.17.5, lodash@^4.2.1, lodash@^4.3.0, lodash@~4.17.2: + version "4.17.21" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" + integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== + lodash@^3.1.0, lodash@^3.10.0, lodash@^3.5.0, lodash@^3.9.3: version "3.10.1" resolved "https://registry.yarnpkg.com/lodash/-/lodash-3.10.1.tgz#5bf45e8e49ba4189e17d482789dfd15bd140b7b6" @@ -26808,10 +26960,10 @@ mime@2.4.4: resolved "https://registry.yarnpkg.com/mime/-/mime-2.4.4.tgz#bd7b91135fc6b01cde3e9bae33d659b63d8857e5" integrity sha512-LRxmNwziLPT828z+4YkNzloCFC2YM4wrB99k+AV5ZbEyfGNWfG8SO1FUXLmLDBSo89NrJZ4DIWeLjy1CHGhMGA== -mime@^2.4.3, mime@^2.4.4, mime@^2.4.6: - version "2.5.2" - resolved "https://registry.yarnpkg.com/mime/-/mime-2.5.2.tgz#6e3dc6cc2b9510643830e5f19d5cb753da5eeabe" - integrity sha512-tqkh47FzKeCPD2PUiPB6pkbMzsCasjxAfC62/Wap5qrUWcb+sFasXUC5I3gYM5iBM8v/Qpn4UK0x+j0iHyFPDg== +mime@^2.4.3, mime@^2.4.4, mime@^2.4.6, mime@^2.5.2: + version "2.6.0" + resolved "https://registry.yarnpkg.com/mime/-/mime-2.6.0.tgz#a2a682a95cd4d0cb1d6257e28f83da7e35800367" + integrity sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg== mimic-fn@^1.0.0: version "1.2.0" @@ -28008,6 +28160,11 @@ node-abi@^2.7.0: dependencies: semver "^5.4.1" +node-addon-api@^1.6.3: + version "1.7.2" + resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-1.7.2.tgz#3df30b95720b53c24e59948b49532b662444f54d" + integrity sha512-ibPK3iA+vaY1eEjESkQkM0BbCqFOaZMiXRTtdB0u7b4djtY6JnsjvPdUHVMg6xQt3B8fpTTWHI9A+ADjM9frzg== + node-addon-api@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-3.1.0.tgz#98b21931557466c6729e51cb77cd39c965f42239" @@ -28985,11 +29142,6 @@ octokit-pagination-methods@^1.1.0: resolved "https://registry.yarnpkg.com/octokit-pagination-methods/-/octokit-pagination-methods-1.1.0.tgz#cf472edc9d551055f9ef73f6e42b4dbb4c80bea4" integrity sha512-fZ4qZdQ2nxJvtcasX7Ghl+WlWS/d9IgnBIwFZXVNNZUmzpno91SX5bc5vuxiuKoCtK78XxGGNuSCrDC7xYB3OQ== -odiff-bin@2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/odiff-bin/-/odiff-bin-2.1.0.tgz#6ef727b44a1843d9215408b99774c05567176776" - integrity sha512-jN74kFP216ltssc72ig/48NtFO81AOvO5pJevDykVCA4hmyhzf5M/wyNFt0RxJZT8MWi2g/I4svp6VDjFhtuCQ== - omggif@^1.0.10, omggif@^1.0.9: version "1.0.10" resolved "https://registry.yarnpkg.com/omggif/-/omggif-1.0.10.tgz#ddaaf90d4a42f532e9e7cb3a95ecdd47f17c7b19" @@ -31980,7 +32132,7 @@ punycode@^2.1.0, punycode@^2.1.1: resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== -pupa@^2.0.1: +pupa@^2.0.1, pupa@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/pupa/-/pupa-2.1.1.tgz#f5e8fd4afc2c5d97828faa523549ed8744a20d62" integrity sha512-l1jNAspIBSFqbT+y+5FosojNpVpF94nlI+wDUpqP9enwOTfHx9f0gh5nB96vl+6yTpsJsypeNrwfzPrKuHB41A== @@ -33121,15 +33273,15 @@ read-cmd-shim@^1.0.1, read-cmd-shim@^1.0.5: dependencies: graceful-fs "^4.1.2" -read-config-file@6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/read-config-file/-/read-config-file-6.0.0.tgz#224b5dca6a5bdc1fb19e63f89f342680efdb9299" - integrity sha512-PHjROSdpceKUmqS06wqwP92VrM46PZSTubmNIMJ5DrMwg1OgenSTSEHIkCa6TiOJ+y/J0xnG1fFwG3M+Oi1aNA== +read-config-file@6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/read-config-file/-/read-config-file-6.2.0.tgz#71536072330bcd62ba814f91458b12add9fc7ade" + integrity sha512-gx7Pgr5I56JtYz+WuqEbQHj/xWo+5Vwua2jhb1VwM4Wid5PqYmZ4i00ZB0YEGIfkVBsCv9UrjgyqCiQfS/Oosg== dependencies: - dotenv "^8.2.0" + dotenv "^9.0.2" dotenv-expand "^5.1.0" - js-yaml "^3.13.1" - json5 "^2.1.2" + js-yaml "^4.1.0" + json5 "^2.2.0" lazy-val "^1.0.4" read-installed@~4.0.3: @@ -35469,6 +35621,13 @@ slash@^3.0.0: resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== +slice-ansi@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-1.0.0.tgz#044f1a49d8842ff307aad6b505ed178bd950134d" + integrity sha512-POqxBK6Lb3q6s047D/XsDVNPnF9Dl8JSaqe9h9lURl0OdNqy/ujDrOiIHtsqXMGbWWTIomRzAMaTyawAU//Reg== + dependencies: + is-fullwidth-code-point "^2.0.0" + slice-ansi@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-2.1.0.tgz#cacd7693461a637a5788d92a7dd4fba068e81636" @@ -35501,10 +35660,10 @@ slide@^1.1.3, slide@^1.1.5, slide@^1.1.6, slide@~1.1.3, slide@~1.1.6: resolved "https://registry.yarnpkg.com/slide/-/slide-1.1.6.tgz#56eb027d65b4d2dce6cb2e2d32c4d4afc9e1d707" integrity sha1-VusCfWW00tzmyy4tMsTUr8nh1wc= -smart-buffer@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/smart-buffer/-/smart-buffer-4.1.0.tgz#91605c25d91652f4661ea69ccf45f1b331ca21ba" - integrity sha512-iVICrxOzCynf/SNaBQCw34eM9jROU/s5rzIhpOvzhzuYHfJR/DhZfDkXiZSgKXfgv26HT3Yni3AV/DGw0cGnnw== +smart-buffer@^4.0.2, smart-buffer@^4.1.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/smart-buffer/-/smart-buffer-4.2.0.tgz#6e1d71fa4f18c05f7d0ff216dd16a481d0e8d9ae" + integrity sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg== snake-case@^2.1.0: version "2.1.0" @@ -36478,14 +36637,14 @@ string-width@^3.0.0, string-width@^3.1.0: is-fullwidth-code-point "^2.0.0" strip-ansi "^5.1.0" -string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0: - version "4.2.2" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.2.tgz#dafd4f9559a7585cfba529c6a0a4f73488ebd4c5" - integrity sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA== +string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.2: + version "4.2.3" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== dependencies: emoji-regex "^8.0.0" is-fullwidth-code-point "^3.0.0" - strip-ansi "^6.0.0" + strip-ansi "^6.0.1" "string.prototype.matchall@^4.0.0 || ^3.0.1", string.prototype.matchall@^4.0.2: version "4.0.4" @@ -36600,7 +36759,7 @@ strip-ansi@5.2.0, strip-ansi@^5, strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ans dependencies: ansi-regex "^4.1.0" -strip-ansi@6.0.0, strip-ansi@^6.0.0: +strip-ansi@6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532" integrity sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w== @@ -36614,6 +36773,13 @@ strip-ansi@^3.0.0, strip-ansi@^3.0.1: dependencies: ansi-regex "^2.0.0" +strip-ansi@^6.0.0, strip-ansi@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + strip-ansi@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.0.0.tgz#1dc49b980c3a4100366617adac59327eefdefcb0" @@ -37258,13 +37424,13 @@ temp-dir@^2.0.0: resolved "https://registry.yarnpkg.com/temp-dir/-/temp-dir-2.0.0.tgz#bde92b05bdfeb1516e804c9c00ad45177f31321e" integrity sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg== -temp-file@^3.3.7: - version "3.3.7" - resolved "https://registry.yarnpkg.com/temp-file/-/temp-file-3.3.7.tgz#686885d635f872748e384e871855958470aeb18a" - integrity sha512-9tBJKt7GZAQt/Rg0QzVWA8Am8c1EFl+CAv04/aBVqlx5oyfQ508sFIABshQ0xbZu6mBrFLWIUXO/bbLYghW70g== +temp-file@^3.4.0: + version "3.4.0" + resolved "https://registry.yarnpkg.com/temp-file/-/temp-file-3.4.0.tgz#766ea28911c683996c248ef1a20eea04d51652c7" + integrity sha512-C5tjlC/HCtVUOi3KWVokd4vHVViOmGjtLwIh4MuzPo/nMYTV/p1urt3RnMz2IWXDdKEGJH3k5+KPxtqRsUYGtg== dependencies: async-exit-hook "^2.0.1" - fs-extra "^8.1.0" + fs-extra "^10.0.0" temp-write@^3.4.0: version "3.4.0" @@ -37682,6 +37848,13 @@ tmp-promise@^1.0.5: bluebird "^3.5.0" tmp "0.1.0" +tmp-promise@^3.0.2: + version "3.0.3" + resolved "https://registry.yarnpkg.com/tmp-promise/-/tmp-promise-3.0.3.tgz#60a1a1cc98c988674fcbfd23b6e3367bdeac4ce7" + integrity sha512-RwM7MoPojPxsOBYnyd2hy0bxtIlVrihNs9pj5SUvY8Zz1sQcQG2tG1hSr8PDxfgEB8RNKDhqbIlroIarSNDNsQ== + dependencies: + tmp "^0.2.0" + tmp@0.0.33, tmp@^0.0.33: version "0.0.33" resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" @@ -37696,7 +37869,7 @@ tmp@0.1.0: dependencies: rimraf "^2.6.3" -tmp@^0.2.1, tmp@~0.2.1: +tmp@^0.2.0, tmp@^0.2.1, tmp@~0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.2.1.tgz#8457fc3037dcf4719c251367a1af6500ee1ccf14" integrity sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ== @@ -38786,22 +38959,23 @@ update-notifier@^2.2.0, update-notifier@^2.3.0, update-notifier@^2.5.0: semver-diff "^2.0.0" xdg-basedir "^3.0.0" -update-notifier@^4.1.1: - version "4.1.3" - resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-4.1.3.tgz#be86ee13e8ce48fb50043ff72057b5bd598e1ea3" - integrity sha512-Yld6Z0RyCYGB6ckIjffGOSOmHXj1gMeE7aROz4MG+XMkmixBX4jUngrGXNYz7wPKBmtoD4MnBa2Anu7RSKht/A== +update-notifier@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-5.1.0.tgz#4ab0d7c7f36a231dd7316cf7729313f0214d9ad9" + integrity sha512-ItnICHbeMh9GqUy31hFPrD1kcuZ3rpxDZbf4KUDavXwS0bW5m7SLbDQpGX3UYr072cbrF5hFUs3r5tUsPwjfHw== dependencies: - boxen "^4.2.0" - chalk "^3.0.0" + boxen "^5.0.0" + chalk "^4.1.0" configstore "^5.0.1" has-yarn "^2.1.0" import-lazy "^2.1.0" is-ci "^2.0.0" - is-installed-globally "^0.3.1" - is-npm "^4.0.0" + is-installed-globally "^0.4.0" + is-npm "^5.0.0" is-yarn-global "^0.3.0" - latest-version "^5.0.0" - pupa "^2.0.1" + latest-version "^5.1.0" + pupa "^2.1.1" + semver "^7.3.4" semver-diff "^3.1.1" xdg-basedir "^4.0.0" @@ -39149,6 +39323,15 @@ verror@1.10.0: core-util-is "1.0.2" extsprintf "^1.2.0" +verror@^1.10.0: + version "1.10.1" + resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.1.tgz#4bf09eeccf4563b109ed4b3d458380c972b0cdeb" + integrity sha512-veufcmxri4e3XSrT0xwfUR7kguIkaxBeosDg00yDWhk49wdwkSUrvvsm7nc75e1PUyvIeZj6nS8VQRYz2/S4Xg== + dependencies: + assert-plus "^1.0.0" + core-util-is "1.0.2" + extsprintf "^1.2.0" + vfile-location@^3.0.0, vfile-location@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/vfile-location/-/vfile-location-3.2.0.tgz#d8e41fbcbd406063669ebf6c33d56ae8721d0f3c" @@ -41197,6 +41380,11 @@ xml@^1.0.0: resolved "https://registry.yarnpkg.com/xml/-/xml-1.0.1.tgz#78ba72020029c5bc87b8a81a3cfcd74b4a2fc1e5" integrity sha1-eLpyAgApxbyHuKgaPPzXS0ovweU= +xmlbuilder@>=11.0.1: + version "15.1.1" + resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-15.1.1.tgz#9dcdce49eea66d8d10b42cae94a79c3c8d0c2ec5" + integrity sha512-yMqGBqtXyeN1e3TGYvgNgDVZ3j84W4cwkOXQswghol6APgZWaff9lnbvN7MHYJOiXsvGPXtjTYJEiC9J2wv9Eg== + xmlbuilder@^9.0.7, xmlbuilder@~9.0.1: version "9.0.7" resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-9.0.7.tgz#132ee63d2ec5565c557e20f4c22df9aca686b10d" @@ -41340,7 +41528,7 @@ yargs-parser@13.1.2, yargs-parser@^13.1.0, yargs-parser@^13.1.1, yargs-parser@^1 camelcase "^5.0.0" decamelize "^1.2.0" -yargs-parser@20.2.4, yargs-parser@^20.2.2, yargs-parser@^20.2.3: +yargs-parser@20.2.4: version "20.2.4" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.4.tgz#b42890f14566796f85ae8e3a25290d205f154a54" integrity sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA== @@ -41392,6 +41580,11 @@ yargs-parser@^18.1.2: camelcase "^5.0.0" decamelize "^1.2.0" +yargs-parser@^20.2.2, yargs-parser@^20.2.3: + version "20.2.9" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" + integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== + yargs-parser@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-7.0.0.tgz#8d0ac42f16ea55debd332caf4c4038b3e3f5dfd9" @@ -41517,7 +41710,7 @@ yargs@13.3.2, yargs@^13.3.0, yargs@^13.3.2: y18n "^4.0.0" yargs-parser "^13.1.2" -yargs@16.2.0, yargs@^16.0.0, yargs@^16.0.3, yargs@^16.2.0: +yargs@16.2.0, yargs@^16.0.0, yargs@^16.2.0: version "16.2.0" resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== @@ -41600,6 +41793,19 @@ yargs@^15.0.1, yargs@^15.0.2, yargs@^15.1.0, yargs@^15.3.1: y18n "^4.0.0" yargs-parser "^18.1.2" +yargs@^17.0.1: + version "17.2.1" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.2.1.tgz#e2c95b9796a0e1f7f3bf4427863b42e0418191ea" + integrity sha512-XfR8du6ua4K6uLGm5S6fA+FIJom/MdJcFNVY8geLlp2v8GYbOXD4EB1tPNZsRn4vBzKGMgb5DRZMeWuFc2GO8Q== + dependencies: + cliui "^7.0.2" + escalade "^3.1.1" + get-caller-file "^2.0.5" + require-directory "^2.1.1" + string-width "^4.2.0" + y18n "^5.0.5" + yargs-parser "^20.2.2" + yargs@^7.0.2, yargs@^7.1.0: version "7.1.1" resolved "https://registry.yarnpkg.com/yargs/-/yargs-7.1.1.tgz#67f0ef52e228d4ee0d6311acede8850f53464df6"