diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000000..04179d5018 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,3 @@ +* text=auto + +*.json text eol=lf diff --git a/__snapshots__/bump-spec.js b/__snapshots__/bump-spec.js index 6158c9de68..f004f1bfdd 100644 --- a/__snapshots__/bump-spec.js +++ b/__snapshots__/bump-spec.js @@ -1,12 +1,12 @@ exports['list of all projects'] = [ { "repo": "cypress-io/cypress-test-tiny", - "provider": "appVeyor", + "provider": "circle", "platform": "win32" }, { "repo": "cypress-io/cypress-test-example-repos", - "provider": "appVeyor", + "provider": "circle", "platform": "win32" }, { diff --git a/__snapshots__/packages-spec.js b/__snapshots__/packages-spec.js index 861c2e4248..bed43f383f 100644 --- a/__snapshots__/packages-spec.js +++ b/__snapshots__/packages-spec.js @@ -27,7 +27,6 @@ exports['packages can copy files from package.json 1'] = { } } - exports['transformRequires can find and replace symlink requires 1'] = { "[cwd]": { "build": { diff --git a/appveyor.yml b/appveyor.yml deleted file mode 100644 index 9317953db9..0000000000 --- a/appveyor.yml +++ /dev/null @@ -1,105 +0,0 @@ -branches: - only: - - master - - develop - - windows-code-signing - - 9.0-release - - /win*/ - -# https://www.appveyor.com/docs/lang/nodejs-iojs/ -environment: - # use matching version of Node.js - nodejs_version: "16.5.0" - # encode secure variables which will NOT be used - # in pull requests - # https://www.appveyor.com/docs/build-configuration/#secure-variables - # the variables can be encrypted at - # https://ci.appveyor.com/tools/encrypt - ci_json: - secure: uOM7Bj+6MfQA/wiUzA4MolZDlcdhIqrOWLN0LdR+Lg4olc1onF3IpWfRf+3B6Q5uT98OTnIU71OOqSRY7inGQg== - # for uploading built binary to S3 bucket - aws_credentials_json: - secure: ttGzd2/rW+i8H+pozcFxzZKU07B5INL8+LjD4vCOKes+tI6EaKhrLvAQ9xT7r+e1p8My8f4LrqvT+i37kbRCUPY4DHmUgagj3aj0OghsT0eX/Vr/6T4v1yndB7SX7FnG07eVcGb63r9f5kT7xu7ElJ9WXh1Ok5K69W0zDPsa1RGCCYqsTi4tH2h5EAZwjY1b - # CDN control - CF_TOKEN: - secure: nVGxcWxXGvrT621HmgMf9Mwm84dqo+cKHZj94OvyyWEGIZOJJkbWHsD/l2/r4a6Y - CF_ZONEID: - secure: SrZnd4BYW9PILEEi7y9VyXuC16C+qMEDT3QuV1PZZJa47TRkjcaYpAXhAHz0j0jT - # authenticate as Cypress bot when posting commit status checks - GH_APP_ID: - secure: oR0RVDbv6GKej4wwjkz7Zw== - GH_INSTALLATION_ID: - secure: tAoqu4zIgZUxOfW0u9YQgw== - GH_PRIVATE_KEY: - secure: msLmlIBnkNovqrqTeCqa7ZPjETyS8Xn4JLuiRMWYK7gZBTO66pNnFaoeqwPFwH+ooO0cDFhAOPTToLisgTLXCo4hnw38zuBuKq+ywCh5mtk5uZn4x4F8G2XyRLD/ViZm+VuD2yZzaTWF11upDqC4xbXDe32yD6OSLKhA5ms5F5ke83zEuWSLTqVVCIpVH12rVTJHl3QHaWPwZbBBE3SFN8D6uiclvI06y3pEg2bVShU8YqlwearYTRuErsYXNCUmT0SrDd2kHznlYf08edQDHpydnQvvTViZMgomvYp5wDCXFD+/FxtTMuTptJFpspirXL8w/xjYy1/JaTd/K01oUUD2Xwl/v0cS28OpdcraETyrQxQhEgTCXfg9ONbZ5mRvQlkaRROaTqDSGMmEPs4N91zarpA7RLxu7PPvxXQcbDW4GiJvH5BhVWu8lY/QBZsr8It1dhLYSzTPNIh9ey8xNaUbZ3oQhPBoreRi36B+FSPBsrZpB8Q8aa97gd+lCa8br2RfaEpzx8gA0pSK44odqcGuJe7T8MHOqYo0cUEUb2UypPPG7mWyjGip+x3Z9P/vSrZzDV+YFFvEzQAMoyRMp/456V+YL8iduryMRIadkJcB4ZVZz2hsxY5Gv6Eeh9NhwzyM64Rz5NP5fJ9Kw8E5Vm+ddEmft8Ec6dajcURoVN0i+s8t7h/e3Hzrr62UjWr0FpUx5fPBC/Tldn3+h4Rr9/HFI2RCZAI5wHOrx/aQ/HknA9UCEdqdod8ix5yAdSpTxp3aCGEoS97STXU43CjLEiQFyLaReoHOOwFp5EqaAiAqiORJaKuShWoir+OqSk7rucU7kFvIlU9GDfLuKUpxcQoDq/8fKT3lcG3Pr4MVV79BJ6EcjcsEf4ukQ3IfwMY+2RbwYWEowsQP18k4HztZpMEOuYPlSCiAPL7Cz4dcE5oybSURr9QQbSqVMoiCKZBn344KxpvH59KW90wt8CYyoeLSlPpM9s73g9My4fwbB3W9lcbw/AteRGer01VYEHY+1MyQwhqgHoXQ//op4gztFbpSLcli88v1IOopcr0Dw5NrylcjCTKuVWmQs0uIAfOr7zxqCZ8DCXG6spdipjF1jx+bxp318ZgH56pmmTOTMbj5Cmdpr3KlCFbYB4JI7lexnZmti1NcHtOglDSq+XT4092myAiarSzQLA6smB+gk68M50W492+QNuc+6LAOfev+Da4geLiErqMpuIqfA3jw4h5+9Ns6mf3JnOLZd1c/X/xvnV3JjBzSJ6f9xGMLBcMTQm/wVfkHM9tO1oZrHswDiBlE1AkQrj6kqT9Kznu/rbAUGRnWL65FoCwdMbYVEhQQvLbLvVCRGBJfB01oD2xs80jyZ2YYZFRZCl/d0lGrVVVZsq6XM7CsxR5WlpJy5JLxCQ4kliG8cjexh0GkVYJoRYneJifw8yThMlyAnMQ88iNS2p2MnYk0WZgTJOIHliIhPRFY4z6BtrxmL8SR1no1vhaQCdbE5RI/rYbk8NpOmQunkjcDwp7nTKn1d8bMTfKGUH+DzhvmqwxA5PW37P84FFSK+3ePY9+oKXcInkAaxiXUpzcZJ4KzUGEZaZCB6irU+sxs6QLDzsq05PprwVz2DGtEn1TcY8qQ6ezeMGxJMRgDvEGq2J0nEgOEZ98CJ7XiPJRlnvUjGUzBlcjnbfFH8zzl/0p189YtENhE6Fyr5bD9MAI6NpVHjLLlg3yjmQ6X95fUtiNCmSpCUveEqIQCRtHCY2E/RrulGqTWE+vCvbM6IJV3WnatPOtWZfXEntWHmS08j6aUkUDM9TodBuzG8TRhW2Kgv8b4pfoejuMa4WkvwRAUU7V+clTWG26dT9UHdk+QuOIQDUiCewWk3PmpIJI4WdcxpBWwDvIgojob7uaGzhkabFKi77RJRc5/Ulxm6yM2MX79jgJxrQprWxxkjlsQnJk186nQZQqpuwziH/ZxV82n1bmI9zCqMXgE1Yr86gvyZpk2UbWhlFdtXEPapge9Cfo/fWUBCIbVcd77Bk98E88Y5Y372YWW+D8oHZed8l+0tCeyZmoHQNCYykcf6w77C+8C+bVdJplPns96vyLgbWIr0cpqZBK4qmkAxHuKZoG0AKRw4U379lnXOsI+02TaTzGOMlFTg4ME5miCbxo/2pUnjrydyTE5evdImLzKAK50Fhy1XASaPxgLrkjhGZebwf1UD2kYg6A1NCHchQId25vSEwGRkMPWvY3a5KOmgsMmRoOUJ17uo/r57p7nLgZV9c1+YEdZxu+GmgwQDLNGpgW1cpEN6GSVpx8xhaGKeYSuqd4lh6H9U5/P8masNckrsz+EHv+w5plzx8nJ/Fx/H50OdOm1KUjo66m26aITX7EjJB/U1qtqNfiK6dt8EttJ5iRXlCbfOkj2biRYeKbXQ2Ezr+61/Mu/W/nhLqmLFDtM6K3xf2bSJnEXQFZOOXTRkKXnRDP7Y47ZgG3563fJQjSfoU4Hsw5xnegTOKlJsoEm95Rnq0esdMTA450Ki2wBOeIsOycljoApACBYLAlSe+ewxEaOjrLtnIR0LfzcKXlCRYbM31YWOCtMhMRehJbX9qWGNPTQHmjabYz7/IhLKtJuaMIpj3pfYgS/oQQ36g6ItCo7vLQAq+rgU99IUyQROOGXMUgK/8umL71oijA9dht0LmH9E7EGwih0WuLO2SndovTJODDfK9YrRTEocbo3B9S05O4fpGoQ32TK99mXjoQdlyxd/dn9Q9uDD27u/fGgUoYdt9VzAIigbRIQuRx430n33V0ZyXv90QuD4ESOLxVI1vnLj6JKAS4PGRz66rouYG6U+1syDWpf5Y6DzC/2KOfdLPwmuwjMQxuhf+6+tGeJbeotNX/eJF0LkRfyieRwEGKxIo0PaxdmVwsF7vKR6ZnOpr5BuLm/+44Rg3bQdJ4bcRW6i6dIhOyHWniLvsAPLu1NZDVN6jA13KTChhcrNnSGddjRFLekawl80E3KhG1p+KvItIZX3kzG4QjJ - CSC_KEY_PASSWORD: - secure: GiXelhGGKXKUNW6T7ptKUw== - CSC_LINK: - secure: 9uSZwUYwcdZejLTpGpySd6t9JSL1Hw3iTvb4T2HZrx6iKd5DSR7AN6A7lS5ThTZ6g1JNSypSHRwDeC1Z5xkP8QEIjDqKjyNrqC19gCiSMrpdjjIR8Y8upIISrDBWjOiI - -platform: - - x64 - -# https://www.appveyor.com/docs/build-cache/ -# hmm, seems there is NPM on windows problem -# with installing over cached folder -# https://github.com/npm/npm/issues/17747 -# cache: -# - node_modules -> yarn.lock -# - '%LOCALAPPDATA%/Yarn -> yarn.lock' -# # todo: cache node_modules in each package - -# Install scripts. (runs after repo cloning) -install: - # it is not a given that AppVeyor has the exact version of Node we need predownloaded - # see https://www.appveyor.com/docs/lang/nodejs-iojs/#installing-any-version-of-nodejs-or-iojs - - ps: Update-NodeJsInstallation $env:nodejs_version $env:platform - # - ps: Install-Product node $env:nodejs_version $env:platform - # upgrade npm - - yarn global add @bahmutov/print-env@1 - # Output useful info for debugging. - - node --version - - node --print process.arch - - yarn --version - # prints all public variables relevant to the build - - print-env Platform - - yarn check-node-version - - print-env APPVEYOR - # prints if we have sensitive variables that start with a prefix GH - # which are used to trigger other projects - # ignore errors - forked pull requests will NOT have these variables set - - has-env GH || true - # clean cache to prevent install permission issues - - yarn cache clean - - yarn --frozen-lockfile || yarn --frozen-lockfile || yarn --frozen-lockfile - - yarn build-prod - - .\node_modules\.bin\print-arch - -# Post-install test scripts. -test_script: - # Output useful info for debugging. - # beware of echo-ing environment variables that may have batch syntax (e.g. commit messages) - - node --version - - yarn --version - - 7z - - echo *** System info *** - - node cli/bin/cypress info --dev - - # make sure mocha runs - - yarn test-mocha - # make sure our snapshots are compared correctly - # - npm run test-mocha-snapshot - # the other larger tests - - echo *** Building Windows NPM package *** - - yarn get-next-version --npm - - cd cli - - yarn - - yarn build - - cd build - - yarn pack - - cd ../.. - - - node ./scripts/win-appveyor-build.js - -# Don't actually build. -build: off diff --git a/circle.yml b/circle.yml index b67ce9d7ed..401b11001f 100644 --- a/circle.yml +++ b/circle.yml @@ -1,15 +1,5 @@ version: 2.1 -# usually we don't build Mac app - it takes a long time -# but sometimes we want to really confirm we are doing the right thing -# so just add your branch to the list here to build and test on Mac -macBuildFilters: &macBuildFilters - filters: - branches: - only: - - develop - - renovate/cypress-request-2.x - defaults: &defaults parallelism: 1 working_directory: ~/cypress @@ -17,13 +7,9 @@ defaults: &defaults executor: type: executor default: cy-doc - is-mac: + only-cache-for-root-user: type: boolean default: false - arch: - type: enum - default: 'linux' - enum: ['linux', 'darwin'] executor: <> environment: ## set specific timezone @@ -37,13 +23,38 @@ defaults: &defaults LINES: 24 # filters and requires for testing binary with Firefox -onlyMainBranches: &onlyMainBranches +mainBuildFilters: &mainBuildFilters filters: branches: only: - develop - requires: - - create-build-artifacts + - 10.0-release + - rm-appveyor + +# usually we don't build Mac app - it takes a long time +# but sometimes we want to really confirm we are doing the right thing +# so just add your branch to the list here to build and test on Mac +macWorkflowFilters: &mac-workflow-filters + when: + or: + - equal: [ develop, << pipeline.git.branch >> ] + - equal: [ renovate/cypress-request-2.x, << pipeline.git.branch >> ] + - matches: + pattern: "-release$" + value: << pipeline.git.branch >> + +windowsWorkflowFilters: &windows-workflow-filters + when: + or: + - equal: [ master, << pipeline.git.branch >> ] + - equal: [ develop, << pipeline.git.branch >> ] + - equal: [ rm-appveyor, << pipeline.git.branch >> ] + - matches: + pattern: "-release$" + value: << pipeline.git.branch >> + - matches: + pattern: "win*" + value: << pipeline.git.branch >> executors: # the Docker image with Cypress dependencies and Chrome browser @@ -73,6 +84,18 @@ executors: environment: PLATFORM: mac + # executor to run on Windows - based off of the windows-orb default executor since it is + # not customizable enough to align with our existing setup. + # https://github.com/CircleCI-Public/windows-orb/blob/master/src/executors/default.yml + # https://circleci.com/docs/2.0/hello-world-windows/#software-pre-installed-in-the-windows-image + windows: &windows-executor + machine: + image: windows-server-2019-vs2019:stable + shell: bash.exe -eo pipefail + resource_class: windows.medium + environment: + PLATFORM: windows + commands: restore_workspace_binaries: steps: @@ -88,6 +111,7 @@ commands: steps: - attach_workspace: at: ~/ + - install-required-node - unpack-dependencies restore_cached_binary: @@ -127,14 +151,24 @@ commands: - cypress - .ssh - node_modules # contains the npm i -g modules + + install_cache_helpers_dependencies: + steps: + - run: + # Dependencies needed by circle-cache.js, before we "yarn" or unpack cached node_modules + name: Cache Helper Dependencies + working_directory: ~/ + command: npm i glob@7.1.6 fs-extra@10.0.0 minimist@1.2.5 fast-json-stable-stringify@2.1.0 unpack-dependencies: description: 'Unpacks dependencies associated with the current workflow' steps: + - install_cache_helpers_dependencies - run: name: Generate Circle Cache Key command: node scripts/circle-cache.js --action cacheKey > circle_cache_key - restore_cache: + name: Restore cache state, to check for known modules cache existence key: v{{ .Environment.CACHE_VERSION }}-{{ arch }}-test2-node-modules-cache-{{ checksum "circle_cache_key" }} - run: name: Move node_modules back from /tmp @@ -202,13 +236,11 @@ commands: caching-dependency-installer: description: 'Installs & caches the dependencies based on yarn lock & package json dependencies' parameters: - is-mac: + only-cache-for-root-user: type: boolean default: false - arch: - type: enum - enum: ['linux', 'darwin'] steps: + - install_cache_helpers_dependencies - run: name: Generate Circle Cache Key command: node scripts/circle-cache.js --action cacheKey > circle_cache_key @@ -230,13 +262,12 @@ commands: - run: name: Install Node Modules command: | - . ./scripts/load-nvm.sh - yarn --prefer-offline --frozen-lockfile --cache-folder ~/.yarn-<< parameters.arch >> + yarn --prefer-offline --frozen-lockfile --cache-folder ~/.yarn no_output_timeout: 20m - prepare-modules-cache: - dont-move: <> # we don't move, so we don't hit any issues unpacking symlinks + dont-move: <> # we don't move, so we don't hit any issues unpacking symlinks - when: - condition: <> # on mac, we don't move to /tmp since we don't need to worry about different users + condition: <> # we don't move to /tmp since we don't need to worry about different users steps: - save_cache: name: Saving node modules for root, cli, and all globbed workspace packages @@ -247,7 +278,7 @@ commands: - system-tests/node_modules - globbed_node_modules - unless: - condition: <> + condition: <> steps: - save_cache: name: Saving node modules for root, cli, and all globbed workspace packages @@ -264,80 +295,65 @@ commands: name: Save weekly yarn cache key: v{{ .Environment.CACHE_VERSION }}-{{ arch }}-test2-deps-root-weekly-{{ checksum "cache_date" }} paths: - - ~/.yarn-<< parameters.arch >> + - ~/.yarn - install-build-setup: + verify-build-setup: description: Common commands run when setting up for build or yarn install + parameters: + executor: + type: executor + default: cy-doc steps: - - run: - name: Print working folder - command: echo $PWD + - run: pwd - run: name: print global yarn cache path command: echo $(yarn global bin) - - run: - name: print Node version - command: | - . ./scripts/load-nvm.sh - echo "nvm use default" - nvm use default - node -v - run: name: print yarn version - command: yarn -v + command: yarn versions + - unless: + condition: + # stop-only does not correctly match on windows: https://github.com/bahmutov/stop-only/issues/78 + equal: [ *windows-executor, << parameters.executor >> ] + steps: + - run: + name: Stop .only + # this will catch ".only"s in js/coffee as well + command: yarn stop-only-all - run: - name: check Node version - command: | - . ./scripts/load-nvm.sh - yarn check-node-version - - ## make sure the TERM is set to 'xterm' in node (Linux only) - ## else colors (and tests) will fail - ## See the following information - ## * http://andykdocs.de/development/Docker/Fixing+the+Docker+TERM+variable+issue - ## * https://unix.stackexchange.com/questions/43945/whats-the-difference-between-various-term-variables - - run: - name: Check terminal - command: | - . ./scripts/load-nvm.sh - yarn check-terminal - - run: - name: Stop .only - command: | - . ./scripts/load-nvm.sh - yarn stop-only-all - - run: - # Deps needed by circle-cache.js, before we "yarn" or unpack cached node_modules - name: Cache Helper Deps - working_directory: ~/ - command: npm i globby@11.0.4 fs-extra@10.0.0 minimist@1.2.5 fast-json-stable-stringify@2.1.0 + name: Check terminal variables + ## make sure the TERM is set to 'xterm' in node (Linux only) + ## else colors (and tests) will fail + ## See the following information + ## * http://andykdocs.de/development/Docker/Fixing+the+Docker+TERM+variable+issue + ## * https://unix.stackexchange.com/questions/43945/whats-the-difference-between-various-term-variables + command: yarn check-terminal install-required-node: # https://discuss.circleci.com/t/switch-nodejs-version-on-machine-executor-solved/26675/2 - description: Install Node version - parameters: - version: - type: string - default: "" + description: Install Node version matching .node-version steps: - run: - name: Install NVM + Node - # TODO: determine why we get the missing .nvmrc file error + name: Install Node command: | - export NODE_VERSION=<> - export NODE_VERSION=${NODE_VERSION:-$(cat .node-version)} - echo "Installing Node $NODE_VERSION" - echo $NODE_VERSION > .node-version - cp .node-version .nvmrc - curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.35.3/install.sh | bash - . ./scripts/load-nvm.sh - echo "before nvm install" - nvm install $NODE_VERSION - echo "before nvm use" - nvm use $NODE_VERSION - echo "before nvm alias default" - nvm alias default $NODE_VERSION - node --version + node_version=$(cat .node-version) + [ -s "${HOME}/.nvm/nvm.sh" ] && \. "${HOME}/.nvm/nvm.sh" # This loads nvm + if ! type nvm > /dev/null; then + echo "Installing NVM" + curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.30.0/install.sh | bash + [ -s "${HOME}/.nvm/nvm.sh" ] && \. "${HOME}/.nvm/nvm.sh" # This loads nvm + fi + echo "Installing Node $node_version" + nvm install ${node_version} + echo "Using Node $node_version" + nvm use ${node_version} + [[ $PLATFORM != 'windows' ]] && nvm alias default ${node_version} || sleep 2s + echo "Installing Yarn" + npm install yarn -g # ensure yarn is installed with the correct node engine + yarn check-node-version + - run: + name: Check Node + command: yarn check-node-version install-chrome: description: Install Google Chrome @@ -421,7 +437,6 @@ commands: - run: command: | cmd=$([[ <> == 'true' ]] && echo 'yarn percy exec --parallel -- --') || true - CYPRESS_KONFIG_ENV=production \ CYPRESS_RECORD_KEY=$PACKAGES_RECORD_KEY \ PERCY_PARALLEL_NONCE=$CIRCLE_WORKFLOW_ID \ @@ -545,7 +560,7 @@ commands: name: "Cloning test project: <>" command: | git clone --depth 1 --no-single-branch https://github.com/cypress-io/<>.git /tmp/<> - cd /tmp/<> && (git checkout $(node ./scripts/get-next-version) || true) + cd /tmp/<> && (git checkout $(node ./scripts/get-next-version.js) || true) test-binary-against-rwa: description: | @@ -815,58 +830,48 @@ commands: path: /tmp/<>/cypress/videos - store-npm-logs - wait-on-circle-jobs: - description: Polls certain Circle CI jobs until they finish - parameters: - job-names: - description: comma separated list of circle ci job names to wait for - type: string - steps: - - run: - name: "Waiting on Circle CI jobs: <>" - command: node ./scripts/wait-on-circle-jobs.js --job-names="<>" build-binary: steps: - run: - name: Check environment variables before code sign (if on Mac) + name: Check environment variables before code sign (if on Mac/Windows) # NOTE - # our Mac code sign works via electron-builder + # our code sign works via electron-builder # by default, electron-builder will NOT sign app built in a pull request # even our internal one (!) # Usually this is not a problem, since we only build and test binary # built on "develop" and "master" branches - # but if you need to really build and sign a Mac binary in a PR + # but if you need to really build and sign a binary in a PR # set variable CSC_FOR_PULL_REQUEST=true command: | set -e - if [[ "$OSTYPE" == "darwin"* ]]; then + NEEDS_CODE_SIGNING=`node -p 'process.platform === "win32" || process.platform === "darwin"'` + if [[ "$NEEDS_CODE_SIGNING" == "true" ]]; then + echo "Checking for required environment variables..." if [ -z "$CSC_LINK" ]; then echo "Need to provide environment variable CSC_LINK" - echo "with base64 encoded certificate .p12 file" + echo "with base64 encoded certificate .p12 file" exit 1 fi if [ -z "$CSC_KEY_PASSWORD" ]; then echo "Need to provide environment variable CSC_KEY_PASSWORD" - echo "with password for unlocking certificate .p12 file" + echo "with password for unlocking certificate .p12 file" exit 1 fi + echo "Succeeded." else - echo "Not Mac platform, skipping code sign setup" + echo "Not code signing for this platform" fi - - install-required-node - run: environment: DEBUG: electron-builder,electron-osx-sign* # notarization on Mac can take a while no_output_timeout: "45m" command: | - . ./scripts/load-nvm.sh node --version yarn binary-build --platform $PLATFORM --version $(node ./scripts/get-next-version.js) - run: name: Zip the binary command: | - . ./scripts/load-nvm.sh yarn binary-zip --platform $PLATFORM - store-npm-logs - persist_to_workspace: @@ -890,6 +895,10 @@ commands: - cypress/binary-url.json build-cypress-npm-package: + parameters: + executor: + type: executor + default: cy-doc steps: - run: name: bump NPM version @@ -897,26 +906,26 @@ commands: - run: name: build NPM package command: | - . ./scripts/load-nvm.sh yarn build --scope cypress - run: command: ls -la types working_directory: cli/build - - run: - name: list NPM package contents - command: yarn workspace cypress size + - unless: + condition: + equal: [ *windows-executor, << parameters.executor >> ] + steps: + - run: + name: list NPM package contents + command: yarn workspace cypress size - run: name: pack NPM package working_directory: cli/build - command: yarn pack --filename cypress.tgz + command: yarn pack --filename ../../cypress.tgz - run: name: list created NPM package - working_directory: cli/build command: ls -l - - run: cp cli/build/cypress.tgz cypress.tgz - store-npm-logs - run: pwd - - run: ls -l - persist_to_workspace: root: ~/ paths: @@ -944,25 +953,38 @@ jobs: ## skips ahead to the build step, otherwise installs and caches the node_modules node_modules_install: <<: *defaults - resource_class: medium+ + parameters: + <<: *defaultsParameters + resource_class: + type: string + default: medium + resource_class: << parameters.resource_class >> steps: - checkout - install-required-node - - install-build-setup + - verify-build-setup: + executor: << parameters.executor >> + - persist_to_workspace: + root: ~/ + paths: + - cypress + - .nvm # mac / linux + - ProgramData/nvm # windows - caching-dependency-installer: - arch: << parameters.arch >> - is-mac: <> + only-cache-for-root-user: <> - store-npm-logs ## restores node_modules from previous step & builds if first step skipped build: <<: *defaults - resource_class: medium+ + parameters: + <<: *defaultsParameters + resource_class: + type: string + default: medium+ + resource_class: << parameters.resource_class >> steps: - - checkout - - install-required-node - - install-build-setup - - unpack-dependencies + - restore_cached_workspace - run: name: Top level packages command: yarn list --depth=0 || true @@ -973,12 +995,9 @@ jobs: <<: *defaults steps: - restore_cached_workspace - - install-required-node - ## this will catch ".only"s in js/coffee as well - run: name: Linting ๐Ÿงน command: | - . ./scripts/load-nvm.sh git clean -df yarn lint - run: @@ -1008,14 +1027,6 @@ jobs: echo "This is an external PR, cannot access other services" circleci-agent step halt fi - - wait-on-circle-jobs: - job-names: > - desktop-gui-integration-tests-7x, - desktop-gui-component-tests, - cli-visual-tests, - runner-integration-tests-chrome, - runner-ct-integration-tests-chrome, - reporter-integration-tests, - run: yarn percy build:finalize cli-visual-tests: @@ -1044,22 +1055,39 @@ jobs: unit-tests: <<: *defaults - resource_class: medium + parameters: + <<: *defaultsParameters + resource_class: + type: string + default: medium + resource_class: << parameters.resource_class >> parallelism: 1 steps: - restore_cached_workspace # make sure mocha runs - run: yarn test-mocha - # test binary build code - - run: yarn test-scripts - # make sure our snapshots are compared correctly - - run: yarn test-mocha-snapshot - # make sure packages with TypeScript can be transpiled to JS - - run: yarn lerna run build-prod --stream - # run unit tests from each individual package - - run: yarn test - - verify-mocha-results: - expectedResultCount: 9 + - when: + condition: + # several snapshots fails for windows due to paths. + # until these are fixed, run the tests that are working. + equal: [ *windows-executor, << parameters.executor >> ] + steps: + - run: yarn test-scripts scripts/**/*spec.js + # make sure our snapshots are compared correctly + - run: yarn test-mocha-snapshot + - unless: + condition: + equal: [ *windows-executor, << parameters.executor >> ] + steps: + - run: yarn test-scripts + # make sure our snapshots are compared correctly + - run: yarn test-mocha-snapshot + # make sure packages with TypeScript can be transpiled to JS + - run: yarn lerna run build-prod --stream + # run unit tests from each individual package + - run: yarn test + - verify-mocha-results: + expectedResultCount: 9 - store_test_results: path: /tmp/cypress # CLI tests generate HTML files with sample CLI command output @@ -1270,7 +1298,6 @@ jobs: path: /tmp/artifacts - store-npm-logs - desktop-gui-component-tests: <<: *defaults resource_class: medium @@ -1380,6 +1407,7 @@ jobs: - run: name: Run tests command: yarn workspace @cypress/webpack-dev-server test + npm-vite-dev-server: <<: *defaults steps: @@ -1456,9 +1484,6 @@ jobs: <<: *defaults steps: - restore_cached_workspace - - restore_cache: - name: Restore yarn cache - key: v{{ .Environment.CACHE_VERSION }}-{{ arch }}-npm-angular-babel-cache - run: name: Build command: yarn workspace @cypress/angular build @@ -1478,9 +1503,6 @@ jobs: resource_class: medium steps: - restore_cached_workspace - - restore_cache: - name: Restore yarn cache - key: v{{ .Environment.CACHE_VERSION }}-{{ arch }}-npm-react-babel-cache - run: name: Build command: yarn workspace @cypress/react build @@ -1524,26 +1546,19 @@ jobs: <<: *defaults steps: - restore_cached_workspace - - install-required-node: - version: "16.10" - run: name: Build + Install command: | - . ../../scripts/load-nvm.sh yarn workspace @cypress/schematic build:all - yarn policies set-version 1.19.0 - yarn add --dev @angular/cli working_directory: npm/cypress-schematic - run: name: Launch command: | - . ../../scripts/load-nvm.sh yarn launch:test working_directory: npm/cypress-schematic - run: name: Run unit tests command: | - . ../../scripts/load-nvm.sh yarn test working_directory: npm/cypress-schematic - store-npm-logs @@ -1559,16 +1574,21 @@ jobs: create-build-artifacts: <<: *defaults - resource_class: medium+ - shell: /bin/bash --login + parameters: + <<: *defaultsParameters + resource_class: + type: string + default: medium+ + resource_class: << parameters.resource_class >> steps: - restore_cached_workspace - build-binary - - build-cypress-npm-package + - build-cypress-npm-package: + executor: << parameters.executor >> - run: name: Check current branch to persist artifacts command: | - if [[ "$CIRCLE_BRANCH" != "develop" && "$CIRCLE_BRANCH" != "renovate/cypress-request-2.x" ]]; then + if [[ "$CIRCLE_BRANCH" != "develop" && "$CIRCLE_BRANCH" != "rm-appveyor" ]]; then echo "Not uploading artifacts or posting install comment for this branch." circleci-agent step halt fi @@ -1594,7 +1614,6 @@ jobs: - run: name: Run Kitchensink example project command: | - . ./scripts/load-nvm.sh yarn cypress:run --project /tmp/cypress-example-kitchensink - store_artifacts: path: /tmp/cypress-example-kitchensink/cypress/screenshots @@ -1602,12 +1621,13 @@ jobs: path: /tmp/cypress-example-kitchensink/cypress/videos - store-npm-logs - "test-kitchensink-against-staging": + test-kitchensink-against-staging: <<: *defaults resource_class: medium steps: - clone-repo-and-checkout-release-branch: repo: cypress-example-kitchensink + - install-required-node - run: name: Install prod dependencies command: yarn --production @@ -1627,7 +1647,7 @@ jobs: yarn cypress:run --project /tmp/cypress-example-kitchensink --record - store-npm-logs - "test-against-staging": + test-against-staging: <<: *defaults resource_class: medium steps: @@ -1642,7 +1662,7 @@ jobs: yarn cypress:run --project /tmp/cypress-test-tiny --record - store-npm-logs - "test-binary-and-npm-against-other-projects": + test-binary-and-npm-against-other-projects: <<: *defaults resource_class: medium steps: @@ -1679,7 +1699,7 @@ jobs: --provider circle - store-npm-logs - "test-npm-module-and-verify-binary": + test-npm-module-and-verify-binary: <<: *defaults steps: - restore_cached_workspace @@ -1853,7 +1873,7 @@ jobs: command: npx cypress run # install NPM + binary zip and run against staging API - "test-binary-against-staging": + test-binary-against-staging: <<: *defaults steps: - restore_workspace_binaries @@ -1874,7 +1894,7 @@ jobs: $(yarn bin)/cypress run --record - store-npm-logs - "test-binary-against-recipes-firefox": + test-binary-against-recipes-firefox: <<: *defaults steps: - test-binary-against-repo: @@ -1902,7 +1922,7 @@ jobs: # pull_request_id: 515 # folder: examples/fundamentals__typescript - "test-binary-against-kitchensink": + test-binary-against-kitchensink: <<: *defaults resource_class: medium steps: @@ -1917,7 +1937,7 @@ jobs: repo: cypress-test-awesome-typescript-loader browser: "electron" - "test-binary-against-kitchensink-firefox": + test-binary-against-kitchensink-firefox: <<: *defaults resource_class: medium steps: @@ -1925,7 +1945,7 @@ jobs: repo: cypress-example-kitchensink browser: firefox - "test-binary-against-kitchensink-chrome": + test-binary-against-kitchensink-chrome: <<: *defaults resource_class: medium steps: @@ -1933,7 +1953,7 @@ jobs: repo: cypress-example-kitchensink browser: chrome - "test-binary-against-todomvc-firefox": + test-binary-against-todomvc-firefox: <<: *defaults resource_class: medium steps: @@ -1941,7 +1961,7 @@ jobs: repo: cypress-example-todomvc browser: firefox - "test-binary-against-conduit-chrome": + test-binary-against-conduit-chrome: <<: *defaults resource_class: medium steps: @@ -1951,7 +1971,7 @@ jobs: command: "npm run cypress:run" wait-on: http://localhost:3000 - "test-binary-against-api-testing-firefox": + test-binary-against-api-testing-firefox: <<: *defaults steps: - test-binary-against-repo: @@ -1959,7 +1979,7 @@ jobs: browser: firefox command: "npm run cy:run" - "test-binary-against-piechopper-firefox": + test-binary-against-piechopper-firefox: <<: *defaults resource_class: medium steps: @@ -1968,7 +1988,7 @@ jobs: browser: firefox command: "npm run cypress:run" - "test-binary-against-cypress-realworld-app": + test-binary-against-cypress-realworld-app: <<: *defaults resource_class: medium+ steps: @@ -2027,20 +2047,24 @@ jobs: linux-workflow: &linux-workflow jobs: - - node_modules_install: - arch: 'linux' + - node_modules_install - build: requires: - node_modules_install - lint: - name: Linux lint + name: linux-lint requires: - build - percy-finalize: context: test-runner:poll-circle-workflow required_env_var: PERCY_TOKEN # skips job if not defined (external PR) requires: - - build + - desktop-gui-integration-tests-7x + - desktop-gui-component-tests + - cli-visual-tests + - runner-integration-tests-chrome + - runner-ct-integration-tests-chrome + - reporter-integration-tests - lint-types: requires: - build @@ -2160,6 +2184,7 @@ linux-workflow: &linux-workflow context: test-runner:npm-release requires: - build + - npm-angular - npm-eslint-plugin-dev - npm-create-cypress-tests - npm-react @@ -2168,20 +2193,17 @@ linux-workflow: &linux-workflow - npm-design-system - npm-webpack-batteries-included-preprocessor - npm-webpack-preprocessor - # - npm-vite-dev-server + - npm-vite-dev-server - npm-webpack-dev-server - npm-cypress-schematic - - ui-components-integration-tests - - reporter-integration-tests - - Linux lint - - desktop-gui-component-tests - - desktop-gui-integration-tests-7x - - runner-ct-integration-tests-chrome + - lint-types + - linux-lint + - percy-finalize - runner-integration-tests-firefox - - runner-integration-tests-chrome - runner-integration-tests-electron - driver-integration-tests-firefox - driver-integration-tests-chrome + - driver-integration-tests-chrome-beta - driver-integration-tests-electron - system-tests-non-root - system-tests-firefox @@ -2190,18 +2212,16 @@ linux-workflow: &linux-workflow - server-performance-tests - server-integration-tests - server-unit-tests + - test-kitchensink + - ui-components-integration-tests - unit-tests - unit-tests-release - - cli-visual-tests # various testing scenarios, like building full binary # and testing it on a real project - test-against-staging: context: test-runner:record-tests - filters: - branches: - only: - - develop + <<: *mainBuildFilters requires: - build - test-kitchensink: @@ -2209,10 +2229,7 @@ linux-workflow: &linux-workflow - build - test-kitchensink-against-staging: context: test-runner:record-tests - filters: - branches: - only: - - develop + <<: *mainBuildFilters requires: - build - create-build-artifacts: @@ -2258,49 +2275,51 @@ linux-workflow: &linux-workflow - create-build-artifacts - test-binary-and-npm-against-other-projects: context: test-runner:trigger-test-jobs - filters: - branches: - only: - - develop + <<: *mainBuildFilters requires: - create-build-artifacts - test-npm-module-and-verify-binary: - filters: - branches: - only: - - develop + <<: *mainBuildFilters requires: - create-build-artifacts - test-binary-against-staging: context: test-runner:record-tests - filters: - branches: - only: - - develop + <<: *mainBuildFilters requires: - create-build-artifacts - test-binary-against-kitchensink-chrome: - <<: *onlyMainBranches + <<: *mainBuildFilters + requires: + - create-build-artifacts # Re-enable when the cypress-example-conduit-app project is fixed. # https://github.com/cypress-io/cypress-example-conduit-app/issues/346 # - test-binary-against-conduit-chrome: - # <<: *onlyMainBranches + # <<: *mainBuildFilters + # requires: + # - create-build-artifacts - test-binary-against-recipes-firefox: - <<: *onlyMainBranches + <<: *mainBuildFilters + requires: + - create-build-artifacts - test-binary-against-kitchensink-firefox: - <<: *onlyMainBranches + <<: *mainBuildFilters + requires: + - create-build-artifacts - test-binary-against-todomvc-firefox: - <<: *onlyMainBranches + <<: *mainBuildFilters + requires: + - create-build-artifacts - test-binary-against-api-testing-firefox: - <<: *onlyMainBranches + <<: *mainBuildFilters + requires: + - create-build-artifacts - test-binary-against-piechopper-firefox: - <<: *onlyMainBranches + <<: *mainBuildFilters + requires: + - create-build-artifacts - test-binary-against-cypress-realworld-app: - filters: - branches: - only: - - develop + <<: *mainBuildFilters requires: - create-build-artifacts @@ -2309,6 +2328,7 @@ linux-workflow: &linux-workflow executor: non-root-docker-user requires: - create-build-artifacts + - test-binary-as-specific-user: name: "test binary as a root user" requires: @@ -2319,21 +2339,18 @@ mac-workflow: &mac-workflow - node_modules_install: name: darwin-node-modules-install executor: mac - arch: darwin - is-mac: true - <<: *macBuildFilters + only-cache-for-root-user: true - build: name: darwin-build executor: mac + resource_class: medium requires: - darwin-node-modules-install - <<: *macBuildFilters - lint: name: darwin-lint executor: mac - <<: *macBuildFilters requires: - darwin-build @@ -2346,21 +2363,19 @@ mac-workflow: &mac-workflow - test-runner:upload - test-runner:commit-status-checks executor: mac - <<: *macBuildFilters + resource_class: medium requires: - darwin-build - test-kitchensink: name: darwin-test-kitchensink executor: mac - <<: *macBuildFilters requires: - darwin-build - test-binary-against-kitchensink: name: darwin-test-binary-against-kitchensink executor: mac - <<: *macBuildFilters requires: - darwin-create-build-artifacts @@ -2368,10 +2383,6 @@ mac-workflow: &mac-workflow context: test-runner:record-tests name: darwin-test-binary-against-staging executor: mac - filters: - branches: - only: - - develop requires: - darwin-create-build-artifacts @@ -2379,15 +2390,54 @@ mac-workflow: &mac-workflow context: test-runner:trigger-test-jobs name: darwin-test-binary-and-npm-against-other-projects executor: mac - filters: - branches: - only: - - develop requires: - darwin-create-build-artifacts +windows-workflow: &windows-workflow + jobs: + - node_modules_install: + name: windows-node-modules-install + executor: windows + resource_class: windows.medium + only-cache-for-root-user: true + + - build: + name: windows-build + executor: windows + resource_class: windows.medium + requires: + - windows-node-modules-install + + - lint: + name: windows-lint + executor: windows + requires: + - windows-build + + - unit-tests: + name: windows-unit-tests + executor: windows + resource_class: windows.medium + requires: + - windows-build + + - create-build-artifacts: + name: windows-create-build-artifacts + executor: windows + resource_class: windows.medium + context: + - test-runner:sign-windows-binary + - test-runner:upload + - test-runner:commit-status-checks + requires: + - windows-build + workflows: linux: <<: *linux-workflow mac: <<: *mac-workflow + <<: *mac-workflow-filters + windows: + <<: *windows-workflow + <<: *windows-workflow-filters diff --git a/guides/release-process.md b/guides/release-process.md index 7ccba381f7..9b4342f8cf 100644 --- a/guides/release-process.md +++ b/guides/release-process.md @@ -20,10 +20,9 @@ The `@cypress/`-namespaced NPM packages that live inside the [`/npm`](../npm) di ```text aws_credentials_json={"bucket":"cdn.cypress.io","folder":"desktop","key":"...","secret":"..."} ``` - - A [GitHub token](https://github.com/settings/tokens), a [CircleCI token](https://circleci.com/account/api), - and a `cypress-io` account-specific [AppVeyor token](https://ci.appveyor.com/api-keys) in `ci_json`: + - A [GitHub token](https://github.com/settings/tokens) and a [CircleCI token](https://circleci.com/account/api) in `ci_json`: ```text - ci_json={"githubToken":"...","circleToken":"...","appVeyorToken":"..."} + ci_json={"githubToken":"...","circleToken":"..."} ``` - You'll also need to put the GitHub token under its own variable and get a [ZenHub API token](https://app.zenhub.com/dashboard/tokens) for the `release-automations` step. ```text @@ -48,7 +47,7 @@ The `@cypress/`-namespaced NPM packages that live inside the [`/npm`](../npm) di In order to publish a new version of the `cypress` package to the npm registry, CI must build and test it across multiple platforms and test projects. CI is set up to do the following on every commit to `develop`: 1. Build the npm package with the [next target version](./next-version.md) baked in. -2. Build the Linux/Mac binaries on CircleCI and build Windows on AppVeyor. +2. Build the Linux, Mac & Windows binaries on CircleCI. 3. Upload the binaries and the new npm package to the AWS S3 Bucket `cdn.cypress.io` under the "beta" folder. 4. [Launch test projects](./testing-other-projects.md) using the newly-uploaded package & binary instead of installing from the npm registry. diff --git a/npm/cypress-schematic/package.json b/npm/cypress-schematic/package.json index d5680ca1e9..75068019a7 100644 --- a/npm/cypress-schematic/package.json +++ b/npm/cypress-schematic/package.json @@ -27,6 +27,7 @@ }, "devDependencies": { "@angular-devkit/schematics-cli": "^12.2.10", + "@angular/cli": "^12", "@types/chai-enzyme": "0.6.7", "@types/mocha": "8.0.3", "@types/node": "^12.11.1", diff --git a/npm/react/cypress/component/basic/error-boundary-spec.js b/npm/react/cypress/component/basic/error-boundary-spec.js index b5a4cf0363..89eeab09e1 100644 --- a/npm/react/cypress/component/basic/error-boundary-spec.js +++ b/npm/react/cypress/component/basic/error-boundary-spec.js @@ -1,50 +1,50 @@ -/// -import { ErrorBoundary } from './error-boundary.jsx' -import React from 'react' -import { mount } from '@cypress/react' - -Cypress.on('uncaught:exception', (err, runnable) => { - return false -}) - -/* eslint-env mocha */ -describe('Error Boundary', () => { - const errorMessage = 'I crashed!' - const ChildWithoutError = () =>

Normal Child

- const ChildWithError = () => { - throw new Error(errorMessage) - } - - it('renders normal children', () => { - mount( - - - , - ) - - cy.get('h1').should('have.text', 'Normal Child') - cy.get(ErrorBoundary) - .its('state.error') - .should('not.exist') - }) - - it('on error, display fallback UI', () => { - // Error boundaries do not stop an uncaught error from propagating. - // Cypress will fail on uncaught exceptions by default, so we need to suppress that behavior. - cy.on('uncaught:exception', (err) => { - // Assert that we are only suppressing the default behavior for the error we expect. - expect(err.message.includes('I crashed!')).to.be.true - - return false - }) - - mount( - - - , - ) - - cy.get('header h1').should('contain', 'Something went wrong.') - cy.get('header h3').should('contain', 'ChildWithError failed to load') - }) -}) +/// +import { ErrorBoundary } from './error-boundary.jsx' +import React from 'react' +import { mount } from '@cypress/react' + +Cypress.on('uncaught:exception', (err, runnable) => { + return false +}) + +/* eslint-env mocha */ +describe('Error Boundary', () => { + const errorMessage = 'I crashed!' + const ChildWithoutError = () =>

Normal Child

+ const ChildWithError = () => { + throw new Error(errorMessage) + } + + it('renders normal children', () => { + mount( + + + , + ) + + cy.get('h1').should('have.text', 'Normal Child') + cy.get(ErrorBoundary) + .its('state.error') + .should('not.exist') + }) + + it('on error, display fallback UI', () => { + // Error boundaries do not stop an uncaught error from propagating. + // Cypress will fail on uncaught exceptions by default, so we need to suppress that behavior. + cy.on('uncaught:exception', (err) => { + // Assert that we are only suppressing the default behavior for the error we expect. + expect(err.message.includes('I crashed!')).to.be.true + + return false + }) + + mount( + + + , + ) + + cy.get('header h1').should('contain', 'Something went wrong.') + cy.get('header h3').should('contain', 'ChildWithError failed to load') + }) +}) diff --git a/npm/react/cypress/component/basic/error-boundary.jsx b/npm/react/cypress/component/basic/error-boundary.jsx index b7888e25e3..c844da83ab 100644 --- a/npm/react/cypress/component/basic/error-boundary.jsx +++ b/npm/react/cypress/component/basic/error-boundary.jsx @@ -1,46 +1,46 @@ -import React from 'react' - -export class ErrorBoundary extends React.Component { - constructor (props) { - super(props) - this.state = { error: null, info: '' } - } - - static getDerivedStateFromError (error) { +import React from 'react' + +export class ErrorBoundary extends React.Component { + constructor (props) { + super(props) + this.state = { error: null, info: '' } + } + + static getDerivedStateFromError (error) { console.error(error) - - return { error } - } - - componentDidCatch (error, errorInfo) { - // Catch errors in any components below and re-render with error message - this.setState({ - error, - info: errorInfo, - }) - // You can also log error messages to an error reporting service here - } - - render () { - const { name } = this.props + + return { error } + } + + componentDidCatch (error, errorInfo) { + // Catch errors in any components below and re-render with error message + this.setState({ + error, + info: errorInfo, + }) + // You can also log error messages to an error reporting service here + } + + render () { + const { name } = this.props const { error } = this.state - - if (error) { - return ( - -
-

Something went wrong.

-

{`${name} failed to load`}

-
-
-
-              {JSON.stringify(error)}
-            
-
-
- ) + + if (error) { + return ( + +
+

Something went wrong.

+

{`${name} failed to load`}

+
+
+
+              {JSON.stringify(error)}
+            
+
+
+ ) } - - return this.props.children - } -} + + return this.props.children + } +} diff --git a/npm/webpack-dev-server/README.md b/npm/webpack-dev-server/README.md index 0bfd63b912..cd81249a44 100644 --- a/npm/webpack-dev-server/README.md +++ b/npm/webpack-dev-server/README.md @@ -46,7 +46,7 @@ by calling an event `devServerEvents.emit('dev-server:compile:success')` ## Webpack -Webpack-dev-server fulfills his reponsibilities by +Webpack-dev-server fulfills his responsibilities by - Making a `webpack.config` from the users setup by changing the entrypoint to `browser.ts` - Launches the webpack dev server with `devServer.publicPath = "__cypress/src/"` and `devServer.hot = false` diff --git a/package.json b/package.json index cdca6a942e..e64dbdb154 100644 --- a/package.json +++ b/package.json @@ -133,8 +133,6 @@ "fs-extra": "8.1.0", "gift": "0.10.2", "glob": "7.1.6", - "globby": "10.0.1", - "got": "11.5.1", "gulp": "4.0.2", "gulp-awspublish": "4.0.0", "gulp-debug": "4.0.0", diff --git a/packages/electron/README.md b/packages/electron/README.md index 1de22a9547..5adcc688a6 100644 --- a/packages/electron/README.md +++ b/packages/electron/README.md @@ -40,7 +40,6 @@ Upgrading `electron` involves more than just bumping this package's `package.jso - See [`cypress-docker-images`](https://github.com/cypress-io/cypress-docker-images/). - [ ] **Ensure that a matching Node.js version is enforced in the monorepo for local development and CI.** When Electron is upgraded, oftentimes, the bundled Node.js version that comes with Electron is updated as well. Because all unit and integration tests run in normal Node.js (not Electron's Node.js), it's important for this Node.js version to be synced with the monorepo. There are a few places where this needs to be done: - [ ] [`/.node-version`](../../.node-version) - used by `nvm` and other Node version managers - - [ ] [`/appveyor.yml`](../../appveyor.yml) - update the `nodejs_version` - [ ] [`/package.json`](../../package.json) - update `engines` - [ ] [`/scripts/run-docker-local.sh`](../../scripts/run-docker-local.sh) - update Docker image to the new matching `browsers` image - [ ] [`/circle.yml`](../../circle.yml) diff --git a/packages/https-proxy/test/helpers/certs/ca/my-root-ca.crt.pem b/packages/https-proxy/test/helpers/certs/ca/my-root-ca.crt.pem index 234babb5af..607425b571 100644 --- a/packages/https-proxy/test/helpers/certs/ca/my-root-ca.crt.pem +++ b/packages/https-proxy/test/helpers/certs/ca/my-root-ca.crt.pem @@ -1,24 +1,24 @@ ------BEGIN CERTIFICATE----- -MIIEADCCAuigAwIBAgIQxHqMbWiiVO/Qhhr4qxKQJjANBgkqhkiG9w0BAQsFADB0 -MRcwFQYDVQQDEw5DeXByZXNzUHJveHlDQTERMA8GA1UEBhMISW50ZXJuZXQxETAP -BgNVBAgTCEludGVybmV0MREwDwYDVQQHEwhJbnRlcm5ldDETMBEGA1UEChMKQ3lw -cmVzcy5pbzELMAkGA1UECxMCQ0EwHhcNMjAwMjE5MTk1MzM1WhcNMzAwMjE5MTk1 -MzM1WjB0MRcwFQYDVQQDEw5DeXByZXNzUHJveHlDQTERMA8GA1UEBhMISW50ZXJu -ZXQxETAPBgNVBAgTCEludGVybmV0MREwDwYDVQQHEwhJbnRlcm5ldDETMBEGA1UE -ChMKQ3lwcmVzcy5pbzELMAkGA1UECxMCQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IB -DwAwggEKAoIBAQDI0XAGVItp0zBAbY1697fttxw9uMhaVAR7HCB7jEFaT0RKiYjQ -xWHf042yPv0MRyjbofzCdkKwmkbDrwOWE1FxPUKhUabsJnIiuY7wmVlXvuEwrola -HVYT5b3XkwaRbjD0f1obB2fas2qcCMXGZaeGZqxY67w/QhfoB0SWaE0UyKWkt1Ec -7YgIRn+d12FrL5lDHCUkjifPd53M8B9+d3usVzc0t4XodeerVPx9mW+B/ULQ1Hiw -QDzG7d6OpJrt3Wk7ibaJCBobhuDSMEXPPhxwDS+YEaH0D5Wh8pzmHpduMD1i3/jg -xq6Si8jchIPZRE0jBX0Fe+NCjXZswQV2GFdlAgMBAAGjgY0wgYowDAYDVR0TBAUw -AwEB/zALBgNVHQ8EBAMCAvQwOwYDVR0lBDQwMgYIKwYBBQUHAwEGCCsGAQUFBwMC -BggrBgEFBQcDAwYIKwYBBQUHAwQGCCsGAQUFBwMIMBEGCWCGSAGG+EIBAQQEAwIA -9zAdBgNVHQ4EFgQUiw3dB0uxjFLp7MqHN1IHF+MHt6kwDQYJKoZIhvcNAQELBQAD -ggEBAIRyfZZqjUTtUFKDgqD1MUn2UvsCAePFDw6aafkfo4Kk2V69XHPP3lxEhnpu -ff0COh5p3D9SHMfAWFmj4PH0+R4H+zIfyA0F1KzO6B+cn4JSaQtF0HrWDOtz4KH5 -CwddoBTt6LSawAb1eaxn3Rk19KD7dS/3tjY2sAHMSJgbnsbxVnQhMVTBBy3Llgd3 -I6vomUuXp8rHLVz8KgfSVzU/iPJhPkxxqDdKoBvL7k+2GUcSFBkltZXDXnSP/q3F -8N6NyRta0mg/xsi5lvx0s5XeCLQpxJAzijaqelGt7mYwctNaLyO1CCPr3j0fjG+y -FsmO0zl5SGzyLe044FmFjcqnaW4= ------END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIEADCCAuigAwIBAgIQxHqMbWiiVO/Qhhr4qxKQJjANBgkqhkiG9w0BAQsFADB0 +MRcwFQYDVQQDEw5DeXByZXNzUHJveHlDQTERMA8GA1UEBhMISW50ZXJuZXQxETAP +BgNVBAgTCEludGVybmV0MREwDwYDVQQHEwhJbnRlcm5ldDETMBEGA1UEChMKQ3lw +cmVzcy5pbzELMAkGA1UECxMCQ0EwHhcNMjAwMjE5MTk1MzM1WhcNMzAwMjE5MTk1 +MzM1WjB0MRcwFQYDVQQDEw5DeXByZXNzUHJveHlDQTERMA8GA1UEBhMISW50ZXJu +ZXQxETAPBgNVBAgTCEludGVybmV0MREwDwYDVQQHEwhJbnRlcm5ldDETMBEGA1UE +ChMKQ3lwcmVzcy5pbzELMAkGA1UECxMCQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IB +DwAwggEKAoIBAQDI0XAGVItp0zBAbY1697fttxw9uMhaVAR7HCB7jEFaT0RKiYjQ +xWHf042yPv0MRyjbofzCdkKwmkbDrwOWE1FxPUKhUabsJnIiuY7wmVlXvuEwrola +HVYT5b3XkwaRbjD0f1obB2fas2qcCMXGZaeGZqxY67w/QhfoB0SWaE0UyKWkt1Ec +7YgIRn+d12FrL5lDHCUkjifPd53M8B9+d3usVzc0t4XodeerVPx9mW+B/ULQ1Hiw +QDzG7d6OpJrt3Wk7ibaJCBobhuDSMEXPPhxwDS+YEaH0D5Wh8pzmHpduMD1i3/jg +xq6Si8jchIPZRE0jBX0Fe+NCjXZswQV2GFdlAgMBAAGjgY0wgYowDAYDVR0TBAUw +AwEB/zALBgNVHQ8EBAMCAvQwOwYDVR0lBDQwMgYIKwYBBQUHAwEGCCsGAQUFBwMC +BggrBgEFBQcDAwYIKwYBBQUHAwQGCCsGAQUFBwMIMBEGCWCGSAGG+EIBAQQEAwIA +9zAdBgNVHQ4EFgQUiw3dB0uxjFLp7MqHN1IHF+MHt6kwDQYJKoZIhvcNAQELBQAD +ggEBAIRyfZZqjUTtUFKDgqD1MUn2UvsCAePFDw6aafkfo4Kk2V69XHPP3lxEhnpu +ff0COh5p3D9SHMfAWFmj4PH0+R4H+zIfyA0F1KzO6B+cn4JSaQtF0HrWDOtz4KH5 +CwddoBTt6LSawAb1eaxn3Rk19KD7dS/3tjY2sAHMSJgbnsbxVnQhMVTBBy3Llgd3 +I6vomUuXp8rHLVz8KgfSVzU/iPJhPkxxqDdKoBvL7k+2GUcSFBkltZXDXnSP/q3F +8N6NyRta0mg/xsi5lvx0s5XeCLQpxJAzijaqelGt7mYwctNaLyO1CCPr3j0fjG+y +FsmO0zl5SGzyLe044FmFjcqnaW4= +-----END CERTIFICATE----- diff --git a/packages/https-proxy/test/helpers/certs/ca/my-root-ca.key.pem b/packages/https-proxy/test/helpers/certs/ca/my-root-ca.key.pem index f800dcaea3..8e1e262fe3 100644 --- a/packages/https-proxy/test/helpers/certs/ca/my-root-ca.key.pem +++ b/packages/https-proxy/test/helpers/certs/ca/my-root-ca.key.pem @@ -1,27 +1,27 @@ ------BEGIN RSA PRIVATE KEY----- -MIIEpAIBAAKCAQEAyNFwBlSLadMwQG2Neve37bccPbjIWlQEexwge4xBWk9ESomI -0MVh39ONsj79DEco26H8wnZCsJpGw68DlhNRcT1CoVGm7CZyIrmO8JlZV77hMK6J -Wh1WE+W915MGkW4w9H9aGwdn2rNqnAjFxmWnhmasWOu8P0IX6AdElmhNFMilpLdR -HO2ICEZ/nddhay+ZQxwlJI4nz3edzPAffnd7rFc3NLeF6HXnq1T8fZlvgf1C0NR4 -sEA8xu3ejqSa7d1pO4m2iQgaG4bg0jBFzz4ccA0vmBGh9A+VofKc5h6XbjA9Yt/4 -4MaukovI3ISD2URNIwV9BXvjQo12bMEFdhhXZQIDAQABAoIBAFFBnYiSMQ8S6xVG -vtag4YWIcB7xY/BYyq9dxC75o3/9Tu6yE/AVzfKZUV5sakvLh1bHhtTQsU9wPW30 -pQjWrD+bwBgyR86KB+jRGGt2QVZl4Ayost8Ju8i1T0mpLiEuaxSjazxAlN9DdcHJ -Mu2COHUDmn0odbVK8w1p03Dgpz/e8NnyG/D/LIGuxetEFQATXpB+YbpxTpZ1q1G2 -r3ep5pOdaO13FchoJ3c5XfJBgz9zxZ0z5Lp51/+oYWLTLT16MPSC2xvV5B9BiB+y -k81RSXd8A1z80mpEjklBG3dVCY71PXD83maVFpfjBPcwQGjrA1ntLSDQRbO9Tc2b -56OMVEECgYEA4u97pvH+kl5g7+m003EQvAuPN+7AXHQgubxGUsrIDJ2SuE3X8mI1 -/O4VV6sAyzwjSWrV7CgO2B0KMseTNtM2QY3GrU+gXdzuDXKldDeLvWv4dNdkSrp0 -i/VbzS8WyTxaOnw6nNu5k+tp1C3gsMWjCaiK5jB6zk8YbIa7cGYDRt0CgYEA4oml -fbEIle2YpL+kbzzdDrkdbD8ZpOXyTNqGTP9vbTpnKEeCCbsOgoq7Viq9qMMg/yl4 -OfMc9g4SscBX69ScPfP3XQgzH1btjbf72bjbVZsNbEvJcGk1eWjJWhG7oNJfDZhe -qSi3oxwfEhri2Tl6fcJWOQQtt1QBRkPDYjY3FikCgYEAgQfnx7mKpJCTD3ZTgXGl -MTZlXUkcCLVishix53szGbEybiacpU1gIwsACZPKZMQx0Bm1vovcPNbuKIc/Vgnr -rIQ/NeWzagsnM3A/UQAQLUjJwS2C8dZoU/fTFawziYIOT3i5Htzz/H3681COlBQb -qm8xYsan3MwuN+63fqYSMOUCgYEAz521JPe91aJ2de8JZcVTF25Cb/V4rC7uHM9d -rG2iEmonJrw6im58AtngjT0IqwWCVTgNbpbH4R3OtkeAjKtDMmhIOWQNblh9yJdo -4wZPRiqfZ7Qhfrt9fbKybrC309FZuhz+DGw7uOpJ847efpT2FRGpcgHJYC5GKL5r -77OeUtkCgYB54h1MUcDE+KErG+N0IMjvaSEeXuZiWHW03tVsKXzSvpTGZpeQFYbn -rVOukS8gvzamBvu+omtmjlfsgwN/lHEAoQVuZI69ow/67A2fiPuNuP1KWZW+UrSO -OvJ1VmJKuVHarOzuLqXKnm6vCVd2FHlyzuUKG8C4ad8fTIRJk8LRlw== ------END RSA PRIVATE KEY----- +-----BEGIN RSA PRIVATE KEY----- +MIIEpAIBAAKCAQEAyNFwBlSLadMwQG2Neve37bccPbjIWlQEexwge4xBWk9ESomI +0MVh39ONsj79DEco26H8wnZCsJpGw68DlhNRcT1CoVGm7CZyIrmO8JlZV77hMK6J +Wh1WE+W915MGkW4w9H9aGwdn2rNqnAjFxmWnhmasWOu8P0IX6AdElmhNFMilpLdR +HO2ICEZ/nddhay+ZQxwlJI4nz3edzPAffnd7rFc3NLeF6HXnq1T8fZlvgf1C0NR4 +sEA8xu3ejqSa7d1pO4m2iQgaG4bg0jBFzz4ccA0vmBGh9A+VofKc5h6XbjA9Yt/4 +4MaukovI3ISD2URNIwV9BXvjQo12bMEFdhhXZQIDAQABAoIBAFFBnYiSMQ8S6xVG +vtag4YWIcB7xY/BYyq9dxC75o3/9Tu6yE/AVzfKZUV5sakvLh1bHhtTQsU9wPW30 +pQjWrD+bwBgyR86KB+jRGGt2QVZl4Ayost8Ju8i1T0mpLiEuaxSjazxAlN9DdcHJ +Mu2COHUDmn0odbVK8w1p03Dgpz/e8NnyG/D/LIGuxetEFQATXpB+YbpxTpZ1q1G2 +r3ep5pOdaO13FchoJ3c5XfJBgz9zxZ0z5Lp51/+oYWLTLT16MPSC2xvV5B9BiB+y +k81RSXd8A1z80mpEjklBG3dVCY71PXD83maVFpfjBPcwQGjrA1ntLSDQRbO9Tc2b +56OMVEECgYEA4u97pvH+kl5g7+m003EQvAuPN+7AXHQgubxGUsrIDJ2SuE3X8mI1 +/O4VV6sAyzwjSWrV7CgO2B0KMseTNtM2QY3GrU+gXdzuDXKldDeLvWv4dNdkSrp0 +i/VbzS8WyTxaOnw6nNu5k+tp1C3gsMWjCaiK5jB6zk8YbIa7cGYDRt0CgYEA4oml +fbEIle2YpL+kbzzdDrkdbD8ZpOXyTNqGTP9vbTpnKEeCCbsOgoq7Viq9qMMg/yl4 +OfMc9g4SscBX69ScPfP3XQgzH1btjbf72bjbVZsNbEvJcGk1eWjJWhG7oNJfDZhe +qSi3oxwfEhri2Tl6fcJWOQQtt1QBRkPDYjY3FikCgYEAgQfnx7mKpJCTD3ZTgXGl +MTZlXUkcCLVishix53szGbEybiacpU1gIwsACZPKZMQx0Bm1vovcPNbuKIc/Vgnr +rIQ/NeWzagsnM3A/UQAQLUjJwS2C8dZoU/fTFawziYIOT3i5Htzz/H3681COlBQb +qm8xYsan3MwuN+63fqYSMOUCgYEAz521JPe91aJ2de8JZcVTF25Cb/V4rC7uHM9d +rG2iEmonJrw6im58AtngjT0IqwWCVTgNbpbH4R3OtkeAjKtDMmhIOWQNblh9yJdo +4wZPRiqfZ7Qhfrt9fbKybrC309FZuhz+DGw7uOpJ847efpT2FRGpcgHJYC5GKL5r +77OeUtkCgYB54h1MUcDE+KErG+N0IMjvaSEeXuZiWHW03tVsKXzSvpTGZpeQFYbn +rVOukS8gvzamBvu+omtmjlfsgwN/lHEAoQVuZI69ow/67A2fiPuNuP1KWZW+UrSO +OvJ1VmJKuVHarOzuLqXKnm6vCVd2FHlyzuUKG8C4ad8fTIRJk8LRlw== +-----END RSA PRIVATE KEY----- diff --git a/packages/https-proxy/test/helpers/certs/client/my-root-ca.crt.pem b/packages/https-proxy/test/helpers/certs/client/my-root-ca.crt.pem index 234babb5af..607425b571 100644 --- a/packages/https-proxy/test/helpers/certs/client/my-root-ca.crt.pem +++ b/packages/https-proxy/test/helpers/certs/client/my-root-ca.crt.pem @@ -1,24 +1,24 @@ ------BEGIN CERTIFICATE----- -MIIEADCCAuigAwIBAgIQxHqMbWiiVO/Qhhr4qxKQJjANBgkqhkiG9w0BAQsFADB0 -MRcwFQYDVQQDEw5DeXByZXNzUHJveHlDQTERMA8GA1UEBhMISW50ZXJuZXQxETAP -BgNVBAgTCEludGVybmV0MREwDwYDVQQHEwhJbnRlcm5ldDETMBEGA1UEChMKQ3lw -cmVzcy5pbzELMAkGA1UECxMCQ0EwHhcNMjAwMjE5MTk1MzM1WhcNMzAwMjE5MTk1 -MzM1WjB0MRcwFQYDVQQDEw5DeXByZXNzUHJveHlDQTERMA8GA1UEBhMISW50ZXJu -ZXQxETAPBgNVBAgTCEludGVybmV0MREwDwYDVQQHEwhJbnRlcm5ldDETMBEGA1UE -ChMKQ3lwcmVzcy5pbzELMAkGA1UECxMCQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IB -DwAwggEKAoIBAQDI0XAGVItp0zBAbY1697fttxw9uMhaVAR7HCB7jEFaT0RKiYjQ -xWHf042yPv0MRyjbofzCdkKwmkbDrwOWE1FxPUKhUabsJnIiuY7wmVlXvuEwrola -HVYT5b3XkwaRbjD0f1obB2fas2qcCMXGZaeGZqxY67w/QhfoB0SWaE0UyKWkt1Ec -7YgIRn+d12FrL5lDHCUkjifPd53M8B9+d3usVzc0t4XodeerVPx9mW+B/ULQ1Hiw -QDzG7d6OpJrt3Wk7ibaJCBobhuDSMEXPPhxwDS+YEaH0D5Wh8pzmHpduMD1i3/jg -xq6Si8jchIPZRE0jBX0Fe+NCjXZswQV2GFdlAgMBAAGjgY0wgYowDAYDVR0TBAUw -AwEB/zALBgNVHQ8EBAMCAvQwOwYDVR0lBDQwMgYIKwYBBQUHAwEGCCsGAQUFBwMC -BggrBgEFBQcDAwYIKwYBBQUHAwQGCCsGAQUFBwMIMBEGCWCGSAGG+EIBAQQEAwIA -9zAdBgNVHQ4EFgQUiw3dB0uxjFLp7MqHN1IHF+MHt6kwDQYJKoZIhvcNAQELBQAD -ggEBAIRyfZZqjUTtUFKDgqD1MUn2UvsCAePFDw6aafkfo4Kk2V69XHPP3lxEhnpu -ff0COh5p3D9SHMfAWFmj4PH0+R4H+zIfyA0F1KzO6B+cn4JSaQtF0HrWDOtz4KH5 -CwddoBTt6LSawAb1eaxn3Rk19KD7dS/3tjY2sAHMSJgbnsbxVnQhMVTBBy3Llgd3 -I6vomUuXp8rHLVz8KgfSVzU/iPJhPkxxqDdKoBvL7k+2GUcSFBkltZXDXnSP/q3F -8N6NyRta0mg/xsi5lvx0s5XeCLQpxJAzijaqelGt7mYwctNaLyO1CCPr3j0fjG+y -FsmO0zl5SGzyLe044FmFjcqnaW4= ------END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIEADCCAuigAwIBAgIQxHqMbWiiVO/Qhhr4qxKQJjANBgkqhkiG9w0BAQsFADB0 +MRcwFQYDVQQDEw5DeXByZXNzUHJveHlDQTERMA8GA1UEBhMISW50ZXJuZXQxETAP +BgNVBAgTCEludGVybmV0MREwDwYDVQQHEwhJbnRlcm5ldDETMBEGA1UEChMKQ3lw +cmVzcy5pbzELMAkGA1UECxMCQ0EwHhcNMjAwMjE5MTk1MzM1WhcNMzAwMjE5MTk1 +MzM1WjB0MRcwFQYDVQQDEw5DeXByZXNzUHJveHlDQTERMA8GA1UEBhMISW50ZXJu +ZXQxETAPBgNVBAgTCEludGVybmV0MREwDwYDVQQHEwhJbnRlcm5ldDETMBEGA1UE +ChMKQ3lwcmVzcy5pbzELMAkGA1UECxMCQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IB +DwAwggEKAoIBAQDI0XAGVItp0zBAbY1697fttxw9uMhaVAR7HCB7jEFaT0RKiYjQ +xWHf042yPv0MRyjbofzCdkKwmkbDrwOWE1FxPUKhUabsJnIiuY7wmVlXvuEwrola +HVYT5b3XkwaRbjD0f1obB2fas2qcCMXGZaeGZqxY67w/QhfoB0SWaE0UyKWkt1Ec +7YgIRn+d12FrL5lDHCUkjifPd53M8B9+d3usVzc0t4XodeerVPx9mW+B/ULQ1Hiw +QDzG7d6OpJrt3Wk7ibaJCBobhuDSMEXPPhxwDS+YEaH0D5Wh8pzmHpduMD1i3/jg +xq6Si8jchIPZRE0jBX0Fe+NCjXZswQV2GFdlAgMBAAGjgY0wgYowDAYDVR0TBAUw +AwEB/zALBgNVHQ8EBAMCAvQwOwYDVR0lBDQwMgYIKwYBBQUHAwEGCCsGAQUFBwMC +BggrBgEFBQcDAwYIKwYBBQUHAwQGCCsGAQUFBwMIMBEGCWCGSAGG+EIBAQQEAwIA +9zAdBgNVHQ4EFgQUiw3dB0uxjFLp7MqHN1IHF+MHt6kwDQYJKoZIhvcNAQELBQAD +ggEBAIRyfZZqjUTtUFKDgqD1MUn2UvsCAePFDw6aafkfo4Kk2V69XHPP3lxEhnpu +ff0COh5p3D9SHMfAWFmj4PH0+R4H+zIfyA0F1KzO6B+cn4JSaQtF0HrWDOtz4KH5 +CwddoBTt6LSawAb1eaxn3Rk19KD7dS/3tjY2sAHMSJgbnsbxVnQhMVTBBy3Llgd3 +I6vomUuXp8rHLVz8KgfSVzU/iPJhPkxxqDdKoBvL7k+2GUcSFBkltZXDXnSP/q3F +8N6NyRta0mg/xsi5lvx0s5XeCLQpxJAzijaqelGt7mYwctNaLyO1CCPr3j0fjG+y +FsmO0zl5SGzyLe044FmFjcqnaW4= +-----END CERTIFICATE----- diff --git a/packages/https-proxy/test/helpers/certs/server/my-root-ca.crt.pem b/packages/https-proxy/test/helpers/certs/server/my-root-ca.crt.pem index 234babb5af..607425b571 100644 --- a/packages/https-proxy/test/helpers/certs/server/my-root-ca.crt.pem +++ b/packages/https-proxy/test/helpers/certs/server/my-root-ca.crt.pem @@ -1,24 +1,24 @@ ------BEGIN CERTIFICATE----- -MIIEADCCAuigAwIBAgIQxHqMbWiiVO/Qhhr4qxKQJjANBgkqhkiG9w0BAQsFADB0 -MRcwFQYDVQQDEw5DeXByZXNzUHJveHlDQTERMA8GA1UEBhMISW50ZXJuZXQxETAP -BgNVBAgTCEludGVybmV0MREwDwYDVQQHEwhJbnRlcm5ldDETMBEGA1UEChMKQ3lw -cmVzcy5pbzELMAkGA1UECxMCQ0EwHhcNMjAwMjE5MTk1MzM1WhcNMzAwMjE5MTk1 -MzM1WjB0MRcwFQYDVQQDEw5DeXByZXNzUHJveHlDQTERMA8GA1UEBhMISW50ZXJu -ZXQxETAPBgNVBAgTCEludGVybmV0MREwDwYDVQQHEwhJbnRlcm5ldDETMBEGA1UE -ChMKQ3lwcmVzcy5pbzELMAkGA1UECxMCQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IB -DwAwggEKAoIBAQDI0XAGVItp0zBAbY1697fttxw9uMhaVAR7HCB7jEFaT0RKiYjQ -xWHf042yPv0MRyjbofzCdkKwmkbDrwOWE1FxPUKhUabsJnIiuY7wmVlXvuEwrola -HVYT5b3XkwaRbjD0f1obB2fas2qcCMXGZaeGZqxY67w/QhfoB0SWaE0UyKWkt1Ec -7YgIRn+d12FrL5lDHCUkjifPd53M8B9+d3usVzc0t4XodeerVPx9mW+B/ULQ1Hiw -QDzG7d6OpJrt3Wk7ibaJCBobhuDSMEXPPhxwDS+YEaH0D5Wh8pzmHpduMD1i3/jg -xq6Si8jchIPZRE0jBX0Fe+NCjXZswQV2GFdlAgMBAAGjgY0wgYowDAYDVR0TBAUw -AwEB/zALBgNVHQ8EBAMCAvQwOwYDVR0lBDQwMgYIKwYBBQUHAwEGCCsGAQUFBwMC -BggrBgEFBQcDAwYIKwYBBQUHAwQGCCsGAQUFBwMIMBEGCWCGSAGG+EIBAQQEAwIA -9zAdBgNVHQ4EFgQUiw3dB0uxjFLp7MqHN1IHF+MHt6kwDQYJKoZIhvcNAQELBQAD -ggEBAIRyfZZqjUTtUFKDgqD1MUn2UvsCAePFDw6aafkfo4Kk2V69XHPP3lxEhnpu -ff0COh5p3D9SHMfAWFmj4PH0+R4H+zIfyA0F1KzO6B+cn4JSaQtF0HrWDOtz4KH5 -CwddoBTt6LSawAb1eaxn3Rk19KD7dS/3tjY2sAHMSJgbnsbxVnQhMVTBBy3Llgd3 -I6vomUuXp8rHLVz8KgfSVzU/iPJhPkxxqDdKoBvL7k+2GUcSFBkltZXDXnSP/q3F -8N6NyRta0mg/xsi5lvx0s5XeCLQpxJAzijaqelGt7mYwctNaLyO1CCPr3j0fjG+y -FsmO0zl5SGzyLe044FmFjcqnaW4= ------END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIEADCCAuigAwIBAgIQxHqMbWiiVO/Qhhr4qxKQJjANBgkqhkiG9w0BAQsFADB0 +MRcwFQYDVQQDEw5DeXByZXNzUHJveHlDQTERMA8GA1UEBhMISW50ZXJuZXQxETAP +BgNVBAgTCEludGVybmV0MREwDwYDVQQHEwhJbnRlcm5ldDETMBEGA1UEChMKQ3lw +cmVzcy5pbzELMAkGA1UECxMCQ0EwHhcNMjAwMjE5MTk1MzM1WhcNMzAwMjE5MTk1 +MzM1WjB0MRcwFQYDVQQDEw5DeXByZXNzUHJveHlDQTERMA8GA1UEBhMISW50ZXJu +ZXQxETAPBgNVBAgTCEludGVybmV0MREwDwYDVQQHEwhJbnRlcm5ldDETMBEGA1UE +ChMKQ3lwcmVzcy5pbzELMAkGA1UECxMCQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IB +DwAwggEKAoIBAQDI0XAGVItp0zBAbY1697fttxw9uMhaVAR7HCB7jEFaT0RKiYjQ +xWHf042yPv0MRyjbofzCdkKwmkbDrwOWE1FxPUKhUabsJnIiuY7wmVlXvuEwrola +HVYT5b3XkwaRbjD0f1obB2fas2qcCMXGZaeGZqxY67w/QhfoB0SWaE0UyKWkt1Ec +7YgIRn+d12FrL5lDHCUkjifPd53M8B9+d3usVzc0t4XodeerVPx9mW+B/ULQ1Hiw +QDzG7d6OpJrt3Wk7ibaJCBobhuDSMEXPPhxwDS+YEaH0D5Wh8pzmHpduMD1i3/jg +xq6Si8jchIPZRE0jBX0Fe+NCjXZswQV2GFdlAgMBAAGjgY0wgYowDAYDVR0TBAUw +AwEB/zALBgNVHQ8EBAMCAvQwOwYDVR0lBDQwMgYIKwYBBQUHAwEGCCsGAQUFBwMC +BggrBgEFBQcDAwYIKwYBBQUHAwQGCCsGAQUFBwMIMBEGCWCGSAGG+EIBAQQEAwIA +9zAdBgNVHQ4EFgQUiw3dB0uxjFLp7MqHN1IHF+MHt6kwDQYJKoZIhvcNAQELBQAD +ggEBAIRyfZZqjUTtUFKDgqD1MUn2UvsCAePFDw6aafkfo4Kk2V69XHPP3lxEhnpu +ff0COh5p3D9SHMfAWFmj4PH0+R4H+zIfyA0F1KzO6B+cn4JSaQtF0HrWDOtz4KH5 +CwddoBTt6LSawAb1eaxn3Rk19KD7dS/3tjY2sAHMSJgbnsbxVnQhMVTBBy3Llgd3 +I6vomUuXp8rHLVz8KgfSVzU/iPJhPkxxqDdKoBvL7k+2GUcSFBkltZXDXnSP/q3F +8N6NyRta0mg/xsi5lvx0s5XeCLQpxJAzijaqelGt7mYwctNaLyO1CCPr3j0fjG+y +FsmO0zl5SGzyLe044FmFjcqnaW4= +-----END CERTIFICATE----- diff --git a/packages/runner-ct/package.json b/packages/runner-ct/package.json index 385fe38d90..02536f7c6f 100644 --- a/packages/runner-ct/package.json +++ b/packages/runner-ct/package.json @@ -40,7 +40,6 @@ "eslint-plugin-react-hooks": "^4.2.0", "express": "^4.17.1", "fuzzysort": "^1.1.4", - "globby": "^11.0.1", "hotkeys-js": "3.8.2", "html-webpack-plugin": "^4.5.0", "koa": "^2.13.0", diff --git a/patches/react-vtree+3.0.0-beta.1.patch b/patches/react-vtree+3.0.0-beta.1.patch index ca9f0df55b..616d4bbffc 100644 --- a/patches/react-vtree+3.0.0-beta.1.patch +++ b/patches/react-vtree+3.0.0-beta.1.patch @@ -3,127 +3,127 @@ index 5e7f57e..5e764e9 100644 --- a/node_modules/react-vtree/dist/es/Tree.d.ts +++ b/node_modules/react-vtree/dist/es/Tree.d.ts @@ -1,6 +1,9 @@ - import React, { Component, ComponentType, PropsWithChildren, PureComponent, ReactElement, ReactNode, Ref, RefCallback, RefObject } from 'react'; - import { Align, FixedSizeList, ListChildComponentProps, ListProps, VariableSizeList } from 'react-window'; --import { DefaultTreeProps, DefaultTreeState } from './utils'; -+// import { DefaultTreeProps, DefaultTreeState } from './utils'; -+interface DefaultTreeProps {} -+interface DefaultTreeState {} -+ - export declare type NodeData = Readonly<{ - /** - * Unique ID of the current node. + import React, { Component, ComponentType, PropsWithChildren, PureComponent, ReactElement, ReactNode, Ref, RefCallback, RefObject } from 'react'; + import { Align, FixedSizeList, ListChildComponentProps, ListProps, VariableSizeList } from 'react-window'; +-import { DefaultTreeProps, DefaultTreeState } from './utils'; ++// import { DefaultTreeProps, DefaultTreeState } from './utils'; ++interface DefaultTreeProps {} ++interface DefaultTreeState {} ++ + export declare type NodeData = Readonly<{ + /** + * Unique ID of the current node. diff --git a/node_modules/react-vtree/dist/es/utils.d.ts b/node_modules/react-vtree/dist/es/utils.d.ts index bb27d60..a4f244f 100644 --- a/node_modules/react-vtree/dist/es/utils.d.ts +++ b/node_modules/react-vtree/dist/es/utils.d.ts @@ -1,41 +1,41 @@ --/// --import { FixedSizeList } from 'react-window'; --import type { NodeData, NodePublicState, NodeRecord, TreeCreatorOptions, TreeProps, TreeState, TypedListChildComponentData } from './Tree'; --export declare type Mutable = { -- -readonly [P in keyof T]: T[P]; --}; --export declare type RequestIdleCallbackHandle = any; --export declare type RequestIdleCallbackOptions = Readonly<{ -- timeout: number; --}>; --export declare type RequestIdleCallbackDeadline = Readonly<{ -- didTimeout: boolean; -- timeRemaining: () => number; --}>; --declare global { -- const requestIdleCallback: (callback: (deadline: RequestIdleCallbackDeadline) => void, opts?: RequestIdleCallbackOptions) => RequestIdleCallbackHandle; -- const cancelIdleCallback: (handle: RequestIdleCallbackHandle) => void; -- interface Window { -- requestIdleCallback: typeof requestIdleCallback; -- cancelIdleCallback: typeof cancelIdleCallback; -- } --} --export declare type DefaultTreeProps = TreeProps, FixedSizeList>; --export declare type DefaultTreeState = TreeState, FixedSizeList>; --export declare type DefaultTreeCreatorOptions = TreeCreatorOptions, DefaultTreeState>; --export declare const noop: () => void; --export declare const identity: (value: T) => T; --export declare const createBasicRecord: , TNodePublicState extends NodePublicState>(pub: TNodePublicState, parent?: NodeRecord | null) => NodeRecord; --export declare const getIdByIndex: , TNodePublicState extends NodePublicState>(index: number, { getRecordData }: Readonly<{ -- component: import("react").ComponentType & TNodePublicState & { -- treeData?: any; -- }>>; -- getRecordData: (index: number) => TNodePublicState; -- treeData: any; --}>) => string; -+// /// -+// import { FixedSizeList } from 'react-window'; -+// import type { NodeData, NodePublicState, NodeRecord, TreeCreatorOptions, TreeProps, TreeState, TypedListChildComponentData } from './Tree'; -+// export declare type Mutable = { -+// -readonly [P in keyof T]: T[P]; -+// }; -+// export declare type RequestIdleCallbackHandle = any; -+// export declare type RequestIdleCallbackOptions = Readonly<{ -+// timeout: number; -+// }>; -+// export declare type RequestIdleCallbackDeadline = Readonly<{ -+// didTimeout: boolean; -+// timeRemaining: () => number; -+// }>; -+// declare global { -+// const requestIdleCallback: (callback: (deadline: RequestIdleCallbackDeadline) => void, opts?: RequestIdleCallbackOptions) => RequestIdleCallbackHandle; -+// const cancelIdleCallback: (handle: RequestIdleCallbackHandle) => void; -+// interface Window { -+// requestIdleCallback: typeof requestIdleCallback; -+// cancelIdleCallback: typeof cancelIdleCallback; -+// } -+// } -+// export declare type DefaultTreeProps = TreeProps, FixedSizeList>; -+// export declare type DefaultTreeState = TreeState, FixedSizeList>; -+// export declare type DefaultTreeCreatorOptions = TreeCreatorOptions, DefaultTreeState>; -+// export declare const noop: () => void; -+// export declare const identity: (value: T) => T; -+// export declare const createBasicRecord: , TNodePublicState extends NodePublicState>(pub: TNodePublicState, parent?: NodeRecord | null) => NodeRecord; -+// export declare const getIdByIndex: , TNodePublicState extends NodePublicState>(index: number, { getRecordData }: Readonly<{ -+// component: import("react").ComponentType & TNodePublicState & { -+// treeData?: any; -+// }>>; -+// getRecordData: (index: number) => TNodePublicState; -+// treeData: any; -+// }>) => string; +-/// +-import { FixedSizeList } from 'react-window'; +-import type { NodeData, NodePublicState, NodeRecord, TreeCreatorOptions, TreeProps, TreeState, TypedListChildComponentData } from './Tree'; +-export declare type Mutable = { +- -readonly [P in keyof T]: T[P]; +-}; +-export declare type RequestIdleCallbackHandle = any; +-export declare type RequestIdleCallbackOptions = Readonly<{ +- timeout: number; +-}>; +-export declare type RequestIdleCallbackDeadline = Readonly<{ +- didTimeout: boolean; +- timeRemaining: () => number; +-}>; +-declare global { +- const requestIdleCallback: (callback: (deadline: RequestIdleCallbackDeadline) => void, opts?: RequestIdleCallbackOptions) => RequestIdleCallbackHandle; +- const cancelIdleCallback: (handle: RequestIdleCallbackHandle) => void; +- interface Window { +- requestIdleCallback: typeof requestIdleCallback; +- cancelIdleCallback: typeof cancelIdleCallback; +- } +-} +-export declare type DefaultTreeProps = TreeProps, FixedSizeList>; +-export declare type DefaultTreeState = TreeState, FixedSizeList>; +-export declare type DefaultTreeCreatorOptions = TreeCreatorOptions, DefaultTreeState>; +-export declare const noop: () => void; +-export declare const identity: (value: T) => T; +-export declare const createBasicRecord: , TNodePublicState extends NodePublicState>(pub: TNodePublicState, parent?: NodeRecord | null) => NodeRecord; +-export declare const getIdByIndex: , TNodePublicState extends NodePublicState>(index: number, { getRecordData }: Readonly<{ +- component: import("react").ComponentType & TNodePublicState & { +- treeData?: any; +- }>>; +- getRecordData: (index: number) => TNodePublicState; +- treeData: any; +-}>) => string; ++// /// ++// import { FixedSizeList } from 'react-window'; ++// import type { NodeData, NodePublicState, NodeRecord, TreeCreatorOptions, TreeProps, TreeState, TypedListChildComponentData } from './Tree'; ++// export declare type Mutable = { ++// -readonly [P in keyof T]: T[P]; ++// }; ++// export declare type RequestIdleCallbackHandle = any; ++// export declare type RequestIdleCallbackOptions = Readonly<{ ++// timeout: number; ++// }>; ++// export declare type RequestIdleCallbackDeadline = Readonly<{ ++// didTimeout: boolean; ++// timeRemaining: () => number; ++// }>; ++// declare global { ++// const requestIdleCallback: (callback: (deadline: RequestIdleCallbackDeadline) => void, opts?: RequestIdleCallbackOptions) => RequestIdleCallbackHandle; ++// const cancelIdleCallback: (handle: RequestIdleCallbackHandle) => void; ++// interface Window { ++// requestIdleCallback: typeof requestIdleCallback; ++// cancelIdleCallback: typeof cancelIdleCallback; ++// } ++// } ++// export declare type DefaultTreeProps = TreeProps, FixedSizeList>; ++// export declare type DefaultTreeState = TreeState, FixedSizeList>; ++// export declare type DefaultTreeCreatorOptions = TreeCreatorOptions, DefaultTreeState>; ++// export declare const noop: () => void; ++// export declare const identity: (value: T) => T; ++// export declare const createBasicRecord: , TNodePublicState extends NodePublicState>(pub: TNodePublicState, parent?: NodeRecord | null) => NodeRecord; ++// export declare const getIdByIndex: , TNodePublicState extends NodePublicState>(index: number, { getRecordData }: Readonly<{ ++// component: import("react").ComponentType & TNodePublicState & { ++// treeData?: any; ++// }>>; ++// getRecordData: (index: number) => TNodePublicState; ++// treeData: any; ++// }>) => string; diff --git a/node_modules/react-vtree/dist/lib/utils.d.ts b/node_modules/react-vtree/dist/lib/utils.d.ts index bb27d60..d5ac63c 100644 --- a/node_modules/react-vtree/dist/lib/utils.d.ts +++ b/node_modules/react-vtree/dist/lib/utils.d.ts @@ -12,14 +12,14 @@ export declare type RequestIdleCallbackDeadline = Readonly<{ - didTimeout: boolean; - timeRemaining: () => number; - }>; --declare global { -- const requestIdleCallback: (callback: (deadline: RequestIdleCallbackDeadline) => void, opts?: RequestIdleCallbackOptions) => RequestIdleCallbackHandle; -- const cancelIdleCallback: (handle: RequestIdleCallbackHandle) => void; -- interface Window { -- requestIdleCallback: typeof requestIdleCallback; -- cancelIdleCallback: typeof cancelIdleCallback; -- } --} -+// declare global { -+// const requestIdleCallback: (callback: (deadline: RequestIdleCallbackDeadline) => void, opts?: RequestIdleCallbackOptions) => RequestIdleCallbackHandle; -+// const cancelIdleCallback: (handle: RequestIdleCallbackHandle) => void; -+// interface Window { -+// requestIdleCallback: typeof requestIdleCallback; -+// cancelIdleCallback: typeof cancelIdleCallback; -+// } -+// } - export declare type DefaultTreeProps = TreeProps, FixedSizeList>; - export declare type DefaultTreeState = TreeState, FixedSizeList>; - export declare type DefaultTreeCreatorOptions = TreeCreatorOptions, DefaultTreeState>; + didTimeout: boolean; + timeRemaining: () => number; + }>; +-declare global { +- const requestIdleCallback: (callback: (deadline: RequestIdleCallbackDeadline) => void, opts?: RequestIdleCallbackOptions) => RequestIdleCallbackHandle; +- const cancelIdleCallback: (handle: RequestIdleCallbackHandle) => void; +- interface Window { +- requestIdleCallback: typeof requestIdleCallback; +- cancelIdleCallback: typeof cancelIdleCallback; +- } +-} ++// declare global { ++// const requestIdleCallback: (callback: (deadline: RequestIdleCallbackDeadline) => void, opts?: RequestIdleCallbackOptions) => RequestIdleCallbackHandle; ++// const cancelIdleCallback: (handle: RequestIdleCallbackHandle) => void; ++// interface Window { ++// requestIdleCallback: typeof requestIdleCallback; ++// cancelIdleCallback: typeof cancelIdleCallback; ++// } ++// } + export declare type DefaultTreeProps = TreeProps, FixedSizeList>; + export declare type DefaultTreeState = TreeState, FixedSizeList>; + export declare type DefaultTreeCreatorOptions = TreeCreatorOptions, DefaultTreeState>; \ No newline at end of file diff --git a/scripts/after-pack-hook.js b/scripts/after-pack-hook.js index eb41260b14..28720c55e3 100644 --- a/scripts/after-pack-hook.js +++ b/scripts/after-pack-hook.js @@ -1,7 +1,7 @@ /* eslint-disable no-console */ const fs = require('fs-extra') const { join } = require('path') -const globby = require('globby') +const glob = require('glob') const os = require('os') const path = require('path') @@ -13,9 +13,8 @@ module.exports = async function (params) { console.log(params.electronPlatformName) console.log('****************************') - const packages = await globby('packages/*/node_modules', { + const packages = glob.sync('packages/*/node_modules', { cwd: params.packager.info._appDir, - onlyFiles: false, }) const buildSubfoldersPerPlatform = { diff --git a/scripts/binary/build.ts b/scripts/binary/build.ts index e3016d95f2..e2275b93cb 100644 --- a/scripts/binary/build.ts +++ b/scripts/binary/build.ts @@ -81,12 +81,13 @@ export async function buildCypressApp (options: BuildCypressAppOpts) { // 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 + log('#replace local npm versions') const dirsSeen = await packages.replaceLocalNpmVersions(DIST_DIR) - // remove local npm dirs that aren't needed + log('#remove local npm dirs that are not needed') await packages.removeLocalNpmDirs(DIST_DIR, dirsSeen) + log('#install production dependencies') execSync('yarn --production', { cwd: DIST_DIR, stdio: 'inherit', diff --git a/scripts/binary/bump.js b/scripts/binary/bump.js index 42976a8b06..d8a2886604 100644 --- a/scripts/binary/bump.js +++ b/scripts/binary/bump.js @@ -13,14 +13,6 @@ let car = null // all the projects to trigger / run / change environment variables for const _PROVIDERS = { - appVeyor: { - main: 'cypress-io/cypress', - win32: [ - 'cypress-io/cypress-test-tiny', - 'cypress-io/cypress-test-example-repos', - ], - }, - circle: { main: 'cypress-io/cypress', linux: [ @@ -35,6 +27,10 @@ const _PROVIDERS = { 'cypress-io/cypress-test-tiny', 'cypress-io/cypress-test-example-repos', ], + win32: [ + 'cypress-io/cypress-test-tiny', + 'cypress-io/cypress-test-example-repos', + ], }, } @@ -105,12 +101,6 @@ const awaitEachProjectAndProvider = function (projects, fn, filter = (val) => va } } - if (check.unemptyString(creds.appVeyorToken)) { - providers.appVeyor = { - appVeyorToken: creds.appVeyorToken, - } - } - const providerNames = Object.keys(providers) console.log('configured providers', providerNames) @@ -133,7 +123,6 @@ const awaitEachProjectAndProvider = function (projects, fn, filter = (val) => va } // do not trigger all projects if there is specific provider -// for example appVeyor should be used for Windows testing const getFilterByProvider = function (providerName, platformName) { return (val) => { if (providerName && val.provider !== providerName) { @@ -226,14 +215,6 @@ Testing new Cypress version ${version} message += '\n' message += `Circle CI build url ${process.env.CIRCLE_BUILD_URL}` } - - if (process.env.APPVEYOR) { - const slug = process.env.APPVEYOR_PROJECT_SLUG - const build = process.env.APPVEYOR_BUILD_ID - - message += '\n' - message += `AppVeyor CI ${slug} ${build}` - } } const defaultOptions = { diff --git a/scripts/binary/util/3rd-party.js b/scripts/binary/util/3rd-party.js deleted file mode 100644 index 4cb45b0f11..0000000000 --- a/scripts/binary/util/3rd-party.js +++ /dev/null @@ -1,6 +0,0 @@ -// but globby supports multiple wildcard search patterns ๐Ÿ‘ -const globby = require('globby') - -module.exports = { - globby, -} diff --git a/scripts/binary/util/packages.ts b/scripts/binary/util/packages.ts index 54c294422f..f0062ab52e 100644 --- a/scripts/binary/util/packages.ts +++ b/scripts/binary/util/packages.ts @@ -1,16 +1,17 @@ import _ from 'lodash' import fs from 'fs-extra' +import util from 'util' import path from 'path' -// we wrap glob to handle EMFILE error +import glob from 'glob' 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 globAsync = util.promisify(glob) + const pathToPackageJson = function (packageFolder) { la(check.unemptyString(packageFolder), 'expected package path', packageFolder) @@ -41,17 +42,13 @@ const createCLIExecutable = (command) => { 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, - }) + const globbed = await globAsync('./{packages,npm}/*') for (const pkg of globbed) { // copies the package to dist @@ -74,11 +71,17 @@ export async function copyAllToDist (distDir: string) { 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 - }) + let foundFileRelativeToPackageFolder = [] + + if (pkgFileMasks.length > 0) { + const pattern = pkgFileMasks.length > 1 ? `{${pkgFileMasks.join(',')}}` : pkgFileMasks[0] + + foundFileRelativeToPackageFolder = await globAsync(pattern, { + cwd: pkg, // search in the package folder + absolute: false, // and return relative file paths + follow: false, // do not follow symlinks + }) + } console.log(`Copying ${pkg} to ${path.join(distDir, pkg)}`) @@ -123,12 +126,13 @@ export async function copyAllToDist (distDir: string) { export const replaceLocalNpmVersions = async function (basePath: string) { const visited = new Set() - const pkgPaths = await globby('./packages/*/package.json', { cwd: basePath }) + const pkgPaths = await globAsync('./packages/*/', { cwd: basePath }) async function updatePackageJson (pkg: string) { - const pkgJsonPath = path.join(basePath, pkg) + const pkgPath = path.join(basePath, pkg) + const pkgJsonPath = path.join(basePath, pkg, 'package.json') - visited.add(pkgJsonPath) + visited.add(pkgPath) const json = await fs.readJson(pkgJsonPath) const { dependencies } = json @@ -143,15 +147,16 @@ export const replaceLocalNpmVersions = async function (basePath: string) { const [, localPkg] = depName.split('/') - const localPkgJsonPath = path.join(basePath, 'npm', localPkg) + const localPkgPath = path.join(basePath, 'npm', localPkg) - dependencies[`@cypress/${localPkg}`] = `file:${localPkgJsonPath}` - if (!visited.has(localPkgJsonPath)) { - await updatePackageJson(`./npm/${localPkg}/package.json`) + dependencies[`@cypress/${localPkg}`] = `file:${localPkgPath}` + if (!visited.has(localPkgPath)) { + await updatePackageJson(`./npm/${localPkg}`) } shouldWriteFile = true } + if (shouldWriteFile) { await fs.writeJson(pkgJsonPath, json, { spaces: 2 }) } @@ -164,9 +169,8 @@ export const replaceLocalNpmVersions = async function (basePath: string) { } export async function removeLocalNpmDirs (distPath: string, except: string[]) { - const toRemove = await globby(`${distPath}/npm/*`, { - ignore: except.map((e) => e.replace('/package.json', '')), - onlyDirectories: true, + const toRemove = await globAsync(`${distPath}/npm/*/`, { + ignore: except, }) for (const dir of toRemove) { diff --git a/scripts/binary/util/upload.js b/scripts/binary/util/upload.js index 2d974c9620..2d0d24d675 100644 --- a/scripts/binary/util/upload.js +++ b/scripts/binary/util/upload.js @@ -29,10 +29,6 @@ const formHashFromEnvironment = function () { return `circle-${env.CIRCLE_BRANCH}-${env.CIRCLE_SHA1}` } - if (env.APPVEYOR) { - return `appveyor-${env.APPVEYOR_REPO_BRANCH}-${env.APPVEYOR_REPO_COMMIT}` - } - throw new Error('Do not know how to form unique build hash on this CI') } diff --git a/scripts/check-node-version.js b/scripts/check-node-version.js index 73cbe89e85..e0ca324b7c 100644 --- a/scripts/check-node-version.js +++ b/scripts/check-node-version.js @@ -1,29 +1,3 @@ -const os = require('os') -const assert = require('assert') - -// TODO make this check a 3rd party little tool - -const isWindows = () => { - return os.platform() === 'win32' -} - -// if we're windows + in appveyor... -if (isWindows() && process.env.APPVEYOR) { - // check to ensure that the cpuArch + nodeArch are in sync - const cpuArch = process.env.Platform - const nodeArch = os.arch() - - const getErrMsg = (expectedArch) => { - return `Appveyor CPU arch is set to: '${cpuArch}' but the node version that is being used is running: '${nodeArch}'. Expected it to equal: '${expectedArch}'` - } - - assert.equal( - os.arch(), - 'x64', - getErrMsg('x64'), - ) -} - // we want to ensure we are building using the same major version // as the one specified in ../.node-version file const read = require('fs').readFileSync @@ -45,3 +19,6 @@ if (nodeVersionNeeded[0] !== nodeVersion[0]) { /* eslint-enable no-console */ process.exit(1) } + +// eslint-disable-next-line no-console +console.log('โœ… current Node version of %s matches the version specified in the .node-version file', process.versions.node) diff --git a/scripts/circle-cache.js b/scripts/circle-cache.js index ca0277fd24..71be0e42da 100644 --- a/scripts/circle-cache.js +++ b/scripts/circle-cache.js @@ -1,11 +1,12 @@ /* eslint-disable no-console */ -const globby = require('globby') +const glob = require('glob') const path = require('path') const fsExtra = require('fs-extra') const minimist = require('minimist') const crypto = require('crypto') const fs = require('fs') const stringify = require('fast-json-stable-stringify') + const rootPackageJson = require('../package.json') const opts = minimist(process.argv.slice(2)) @@ -21,9 +22,11 @@ async function circleCache () { } } -const BASE_DIR = path.join(__dirname, '..') -const CACHE_DIR = path.join(BASE_DIR, 'globbed_node_modules') -const p = (str) => path.join(BASE_DIR, str) +// On Windows, both the forward slash (/) and backward slash (\) are accepted as path segment separators +// using forward slashes to match the returned globbed file path separators +const BASE_DIR = path.join(__dirname, '..').replaceAll(/\\/g, '/') +const CACHE_DIR = `${BASE_DIR}/globbed_node_modules` +const p = (str) => `${BASE_DIR}/${str}` const workspacePaths = rootPackageJson.workspaces.packages const packageGlobs = workspacePaths.filter((s) => s.endsWith('/*')) @@ -32,17 +35,12 @@ const packageGlobs = workspacePaths.filter((s) => s.endsWith('/*')) // Otherwise, adding/editing a patch will not invalidate the CI cache we have for the yarn install async function cacheKey () { const yarnLocks = [p('yarn.lock')] - const patchFiles = await globby(p('**/*.patch'), { - ignore: ['**/node_modules/**', '**/*_node_modules/**'], - }) - // TODO: base on workspaces or lerna - const packageJsons = await globby([ - p('package.json'), - ...workspacePaths.map((dir) => p(`${dir}/package.json`)), - ], { + const patchFiles = glob.sync(p('**/*.patch'), { ignore: ['**/node_modules/**', '**/*_node_modules/**'], }) + const packageJsons = glob.sync(`${BASE_DIR}/{.,${workspacePaths.join(',')}}/package.json`) + // Concat the stable stringify of all of the package.json dependencies that make up const hashedPackageDeps = packageJsons.sort().map((abs) => require(abs)).map( ({ name, dependencies, devDependencies, peerDependencies }) => { @@ -64,10 +62,7 @@ async function cacheKey () { // Need to dynamically unpack and re-assemble all of the node_modules directories // https://discuss.circleci.com/t/dynamic-or-programmatic-caching-of-directories/1455 async function prepareCircleCache () { - const paths = await globby( - packageGlobs.map((dir) => p(`${dir}/node_modules`)), - { onlyDirectories: true }, - ) + const paths = glob.sync(p(`{${packageGlobs.join(',')}}/node_modules/`)) await Promise.all( paths.map(async (src) => { @@ -84,10 +79,11 @@ async function prepareCircleCache () { } async function unpackCircleCache () { - const paths = await globby( - p(`globbed_node_modules/*/*`), - { onlyDirectories: true }, - ) + const paths = glob.sync(p('globbed_node_modules/*/*/')) + + if (paths.length === 0) { + throw new Error('Should have found globbed node_modules to unpack') + } await Promise.all( paths.map(async (src) => { diff --git a/scripts/load-nvm.sh b/scripts/load-nvm.sh deleted file mode 100755 index d2259dfb81..0000000000 --- a/scripts/load-nvm.sh +++ /dev/null @@ -1,11 +0,0 @@ -# loads previously installed NVM -# USE: -# - run: -# name: check Node version -# command: | -# . ./scripts/load-nvm.sh -# yarn check-node-version - -export NVM_DIR="$HOME/.nvm" -[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" -export NODE_VERSION=$(cat .node-version) diff --git a/scripts/test-other-projects.js b/scripts/test-other-projects.js index 6a51c9a85f..c93a81cbdc 100644 --- a/scripts/test-other-projects.js +++ b/scripts/test-other-projects.js @@ -114,17 +114,6 @@ const getStatusAndMessage = (projectRepoName) => { ` } - if (process.env.APPVEYOR) { - const account = process.env.APPVEYOR_ACCOUNT_NAME - const slug = process.env.APPVEYOR_PROJECT_SLUG - const build = process.env.APPVEYOR_BUILD_NUMBER - - message += '\n' - message += stripIndent` - AppVeyor: ${account}/${slug} ${build} - ` - } - console.log('commit message:') console.log(message) diff --git a/scripts/unit/binary/util/packages-spec.js b/scripts/unit/binary/util/packages-spec.js index 3b3cbf7a06..6bb51f7ae8 100644 --- a/scripts/unit/binary/util/packages-spec.js +++ b/scripts/unit/binary/util/packages-spec.js @@ -15,7 +15,6 @@ const { expect } = chai const packages = require('../../../binary/util/packages') const { transformRequires, rewritePackageNames } = require('../../../binary/util/transform-requires') const { testPackageStaticAssets } = require('../../../binary/util/testStaticAssets') -const externalUtils = require('../../../binary/util/3rd-party') global.beforeEach(() => { mockfs.restore() @@ -41,19 +40,6 @@ describe('packages', () => { }, }) - const globbyStub = sinon.stub(externalUtils, 'globby') - - globbyStub - .withArgs(['./packages/*', './npm/*']) - .resolves(['./packages/coffee']) - - globbyStub - .withArgs(['lib', 'src/main.js']) - .resolves([ - 'lib/foo.js', - 'src/main.js', - ]) - const destinationFolder = os.tmpdir() debug('destination folder %s', destinationFolder) @@ -112,18 +98,6 @@ describe('transformRequires', () => { }, }) - sinon.stub(externalUtils, 'globby') - .withArgs([ - 'build/linux/Cypress/resources/app/packages/**/*.js', - 'build/linux/Cypress/resources/app/npm/**/*.js', - ]) - .resolves([ - 'build/linux/Cypress/resources/app/packages/foo/src/main.js', - 'build/linux/Cypress/resources/app/packages/foo/lib/foo.js', - 'build/linux/Cypress/resources/app/packages/bar/src/main.js', - 'build/linux/Cypress/resources/app/packages/bar/lib/foo.js', - ]) - // should return number of transformed requires await expect(transformRequires(buildRoot)).to.eventually.eq(2) @@ -161,18 +135,6 @@ describe('transformRequires', () => { }, }) - sinon.stub(externalUtils, 'globby') - .withArgs([ - 'build/linux/Cypress/resources/app/packages/**/*.js', - 'build/linux/Cypress/resources/app/npm/**/*.js', - ]) - .resolves([ - 'build/linux/Cypress/resources/app/packages/foo/src/main.js', - 'build/linux/Cypress/resources/app/packages/foo/lib/foo.js', - 'build/linux/Cypress/resources/app/packages/bar/src/main.js', - 'build/linux/Cypress/resources/app/packages/bar/lib/foo.js', - ]) - await transformRequires(buildRoot) snapshot(getFs()) @@ -323,7 +285,7 @@ const getFs = () => { let nextDepth = null if (d !== null) { - if (d === -1) { + if (d < 0) { nextDepth = d + 1 } else if (!(d > cwd.length) && key === cwd[d]) { key = 'foo' @@ -345,5 +307,8 @@ const getFs = () => { })) } - return recurse({ root: mockfs.getMockRoot() }, -1).root + // ignore C:// when on windows + const depth = process.env.PLATFORM === 'windows' ? -2 : -1 + + return recurse({ root: mockfs.getMockRoot() }, depth).root } diff --git a/scripts/utils.js b/scripts/utils.js index 4f4294eebf..655d38d9b6 100644 --- a/scripts/utils.js +++ b/scripts/utils.js @@ -68,9 +68,7 @@ const shorten = (s) => { * Grabs the full commit SHA and its short version from CI environment variables */ const getShortCommit = () => { - const sha = - process.env.APPVEYOR_REPO_COMMIT || - process.env.CIRCLE_SHA1 + const sha = process.env.CIRCLE_SHA1 if (sha) { return { @@ -87,10 +85,6 @@ const getCIName = () => { if (process.env.CIRCLECI) { return 'Circle' } - - if (process.env.APPVEYOR) { - return 'AppVeyor' - } } /** @@ -101,17 +95,6 @@ const getCIBuildUrl = () => { // https://circleci.com/docs/2.0/env-vars/#built-in-environment-variables return process.env.CIRCLE_BUILD_URL } - - if (process.env.APPVEYOR) { - // https://www.appveyor.com/docs/environment-variables/ - // there is no single url, but we can form one - // looks like this - // https://ci.appveyor.com/project/cypress-io/cypress/builds/25882716/job/7iv75s2vjt5w4usf - return `${process.env.APPVEYOR_URL}/project/${ - process.env.APPVEYOR_ACCOUNT_NAME}/${process.env.APPVEYOR_PROJECT_SLUG - }/builds/${process.env.APPVEYOR_BUILD_ID - }/job/${process.env.APPVEYOR_JOB_ID}` - } } const seconds = (s) => s * 1000 diff --git a/scripts/wait-on-circle-jobs.js b/scripts/wait-on-circle-jobs.js deleted file mode 100644 index 8669a026d6..0000000000 --- a/scripts/wait-on-circle-jobs.js +++ /dev/null @@ -1,215 +0,0 @@ -/* eslint-disable no-console */ - -const _ = require('lodash') -const minimist = require('minimist') -const Promise = require('bluebird') -const retry = require('bluebird-retry') -const got = require('got') -// always print the debug logs -const debug = require('debug')('*') - -const { seconds, minutes } = require('./utils') - -// we expect CircleCI to set the current polling job name -const jobName = process.env.CIRCLE_JOB || 'wait-on-circle-jobs' - -const workflowId = process.env.CIRCLE_WORKFLOW_ID - -const getAuth = () => `${process.env.CIRCLE_TOKEN}:` - -const verifyCI = () => { - if (!process.env.CIRCLE_TOKEN) { - console.error('Cannot find CIRCLE_TOKEN') - process.exit(1) - } - - if (!process.env.CIRCLE_WORKFLOW_ID) { - console.error('Cannot find CIRCLE_WORKFLOW_ID') - process.exit(1) - } -} - -/* eslint-disable-next-line no-unused-vars */ -const getWorkflow = async (workflowId) => { - const auth = getAuth() - const url = `https://${auth}@circleci.com/api/v2/workflow/${workflowId}` - const response = await got(url).json() - - // returns something like - // { - // pipeline_id: '5b937e8b-6138-41ad-b8d0-1c1969c4dad1', - // id: '566ffe9a-62d4-45cd-9a27-9882139e0121', - // name: 'linux', - // project_slug: 'gh/cypress-io/cypress', - // status: 'failed', - // started_by: '45ae8c6a-4686-4e71-a078-fb7a3b9d9e59', - // pipeline_number: 12461, - // created_at: '2020-07-20T19:45:41Z', - // stopped_at: '2020-07-20T20:06:54Z' - // } - - return response -} - -/** - * Job status - * - blocked (has not run yet) - * - running (currently running) - * - failed | success -*/ -const getJobStatus = async (workflowId) => { - const auth = getAuth() - // typo at https://circleci.com/docs/2.0/api-intro/ - // to retrieve all jobs, the url is "/workflow/:id/job" - const url = `https://${auth}@circleci.com/api/v2/workflow/${workflowId}/job` - const response = await got(url).json() - - // returns something like - // { - // next_page_token: null, - // items: [ - // { - // dependencies: [], - // job_number: 400959, - // id: '7021bcc7-90c1-47d9-bf99-c0372a4f8f49', - // started_at: '2020-07-20T19:45:46Z', - // name: 'build', - // project_slug: 'gh/cypress-io/cypress', - // status: 'success', - // type: 'build', - // stopped_at: '2020-07-20T19:50:07Z' - // } - // ] - // } - return response -} - -const waitForAllJobs = async (jobNames, workflowId) => { - let response - - try { - response = await getJobStatus(workflowId) - } catch (e) { - console.error(e) - process.exit(1) - } - - // if a job is pending, its status will be "blocked" - const blockedJobs = _.filter(response.items, { status: 'blocked' }) - const failedJobs = _.filter(response.items, { status: 'failed' }) - const runningJobs = _.filter(response.items, { status: 'running' }) - - const blockedJobNames = _.map(blockedJobs, 'name') - const runningJobNames = _.map(runningJobs, 'name') - - debug('failed jobs %o', _.map(failedJobs, 'name')) - debug('blocked jobs %o', blockedJobNames) - debug('running jobs %o', runningJobNames) - - if (!runningJobs.length || (runningJobs.length === 1 && runningJobs[0].name === jobName)) { - // there are no more jobs to run, or this is the last running job - console.log('all jobs are done, finishing this job') - - return Promise.resolve() - } - - const futureOrRunning = _.union(blockedJobs, runningJobNames) - const jobsToWaitFor = _.intersection(jobNames, futureOrRunning) - - debug('jobs to wait for %o', jobsToWaitFor) - - if (!jobsToWaitFor.length) { - console.log('No more jobs to wait for!') - - return Promise.resolve() - } - - return Promise.reject(new Error('Jobs have not finished')) -} - -const waitForJobToPass = Promise.method(async (jobName, workflow = workflowId) => { - verifyCI() - - let response - - try { - response = await getJobStatus(workflow) - } catch (e) { - console.error(e) - process.exit(1) - } - - const job = _.find(response.items, { name: jobName }) - - if (!job) { - return Promise.reject(new Error('Job not found')) - } - - const { status } = job - - if (status === 'success') { - return Promise.resolve() - } - - if (status === 'failed') { - return Promise.reject(new Error('Job failed')) - } - - await Promise.delay(seconds(30)) - - return waitForJobToPass(jobName, workflow) -}) - -const main = () => { - verifyCI() - - const args = minimist(process.argv.slice(2), { boolean: false }) - - const jobNames = _ - .chain(args['job-names']) - .split(',') - .without('true') - .map(_.trim) - .compact() - .value() - - if (!jobNames.length) { - console.error('Missing argument: --job-names') - console.error('You must pass a comma separated list of Circle CI job names to wait for.') - process.exit(1) - } - - debug('received circle jobs: %o', jobNames) - - // finished, has one failed job - // const workflowId = '566ffe9a-62d4-45cd-9a27-9882139e0121' - // pending workflow - // jobs that have not run have "status: 'blocked'" - - // getWorkflow(workflowId).then(console.log, console.error) - // getWorkflowJobs(workflowId).then(console.log, console.error) - - // https://github.com/demmer/bluebird-retry - retry(waitForAllJobs.bind(null, jobNames, workflowId), { - timeout: minutes(30), // max time for this job - interval: seconds(30), // poll intervals - max_interval: seconds(30), - }).then(() => { - console.log('all done') - }, (err) => { - console.error(err) - process.exit(1) - }) - - // getJobStatus(workflowId).then(console.log, console.error) -} - -// execute main function if called from command line -if (require.main === module) { - main() -} - -module.exports = { - minutes, - waitForJobToPass, -} diff --git a/scripts/win-appveyor-build.js b/scripts/win-appveyor-build.js deleted file mode 100755 index 9d2a6733d8..0000000000 --- a/scripts/win-appveyor-build.js +++ /dev/null @@ -1,117 +0,0 @@ -#!/usr/bin/env node - -/* eslint-disable no-console */ -// @ts-check - -// builds Windows binary on AppVeyor CI -// but only on the right branch - -const shell = require('shelljs') -const os = require('os') -const path = require('path') -const fs = require('fs') - -shell.set('-v') // verbose -shell.set('-e') // any error is fatal - -// see what variables AppVeyor provides -// https://www.appveyor.com/docs/environment-variables/ - -const isRightBranch = () => { - const branch = - process.env.APPVEYOR_PULL_REQUEST_HEAD_REPO_BRANCH || - process.env.APPVEYOR_REPO_BRANCH - const shouldForceBinaryBuild = ( - process.env.APPVEYOR_REPO_COMMIT_MESSAGE || '' - ).includes('[build binary]') - - const branchesToBuildBinary = ['develop', 'remove-win-32-support', 'tgriesser/build/root-yarn-install'] - - return branchesToBuildBinary.includes(branch) || shouldForceBinaryBuild -} - -const isForkedPullRequest = () => { - const repoName = process.env.APPVEYOR_PULL_REQUEST_HEAD_REPO_NAME - - return repoName && repoName !== 'cypress-io/cypress' -} - -const shouldBuildBinary = () => { - return isRightBranch() && !isForkedPullRequest() -} - -if (!shouldBuildBinary()) { - console.log('should not build binary') - process.exit(0) -} - -console.log('building Windows binary') -const pkgPath = path.join(__dirname, '../package.json') -const pkg = JSON.parse(fs.readFileSync(pkgPath).toString()) -const { version } = pkg -const filename = `cypress-v${version}.tgz` - -console.log('building version', version) - -shell.exec( - `node scripts/binary.js upload-npm-package --file cli/build/${filename} --version ${version}`, -) - -const arch = os.arch() - -shell.echo(`Building for win32 [${arch}]...`) - -shell.cat('npm-package-url.json') -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 = 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, -}) - -if (result.stdout.includes('nodemon')) { - console.error('Hmm, server package includes dev dependency "coveralls"') - console.error( - 'which means somehow we are including dev dependencies in the output bundle', - ) - - console.error('see https://github.com/cypress-io/cypress/issues/2896') - process.exit(1) -} - -/** - * Returns true if we are building a pull request - */ -const isPullRequest = () => { - return Boolean(process.env.APPVEYOR_PULL_REQUEST_NUMBER) -} - -if (isPullRequest()) { - console.log('This is a pull request, skipping uploading binary') -} else { - console.log('Zipping and upload binary') - - shell.exec('yarn binary-zip') - shell.ls('-l', '*.zip') - shell.exec( - `node scripts/binary.js upload-unique-binary --file cypress.zip --version ${version}`, - ) - - shell.cat('binary-url.json') - shell.exec( - 'node scripts/add-install-comment.js --npm npm-package-url.json --binary binary-url.json', - ) - - shell.exec( - 'node scripts/test-other-projects.js --npm npm-package-url.json --binary binary-url.json --provider appVeyor', - ) -} diff --git a/yarn.lock b/yarn.lock index ec0b8f83b2..9359e5994b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -15,12 +15,12 @@ "@angular-devkit/core" "11.2.12" rxjs "6.6.3" -"@angular-devkit/architect@^0.1202.10": - version "0.1202.10" - resolved "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1202.10.tgz#6aae8e97ea209949507443cd9c414be94d258813" - integrity sha512-/sLgtXaFsNouxub5M/bQ2sBkiMIlPubuz6QMh+pA2jia82vJ3hcRMt4AnJTXuXpVY+aew4FiG0i9nt/8HETQsw== +"@angular-devkit/architect@0.1202.13", "@angular-devkit/architect@^0.1202.10": + version "0.1202.13" + resolved "https://registry.yarnpkg.com/@angular-devkit/architect/-/architect-0.1202.13.tgz#b9b883d62f628a6b31ce071da91e268f61da00ef" + integrity sha512-LXgiidXwBgyWPqqWK4xR1/kCPQTMTzG5w+s7+LvENUZwbcdl6CKrOMjfgjo6WPr6yeq+WWQvPCD4pZ6nXRTm7A== dependencies: - "@angular-devkit/core" "12.2.10" + "@angular-devkit/core" "12.2.13" rxjs "6.6.7" "@angular-devkit/build-angular@0.1102.12": @@ -133,7 +133,7 @@ rxjs "6.6.3" source-map "0.7.3" -"@angular-devkit/core@12.2.10", "@angular-devkit/core@^12.2.10": +"@angular-devkit/core@12.2.10": version "12.2.10" resolved "https://registry.npmjs.org/@angular-devkit/core/-/core-12.2.10.tgz#3da62eceef3904f92cd3f860618b4ae513029ce2" integrity sha512-0qhmS7Qvl0hiRVTHxEC/ipFAfzYofPstw0ZITDpEMw+pgHlOZolOlnFrv8LyOXWNqlSIH5fS9D3WF7Hpm7ApYA== @@ -145,6 +145,18 @@ rxjs "6.6.7" source-map "0.7.3" +"@angular-devkit/core@12.2.13", "@angular-devkit/core@^12.2.10": + version "12.2.13" + resolved "https://registry.yarnpkg.com/@angular-devkit/core/-/core-12.2.13.tgz#db3929d1bfce71010b37fb7c4e6c33ef80a4f35f" + integrity sha512-9csMF0p+lTvlWnutxxTZ/+pDRMIbXk/TV4MGLbcqUPPfeG3dCRwErns73xLuMTwp9qO/KCLkFqNaM6cGOoqsDA== + dependencies: + ajv "8.6.2" + ajv-formats "2.1.0" + fast-json-stable-stringify "2.1.0" + magic-string "0.25.7" + rxjs "6.6.7" + source-map "0.7.3" + "@angular-devkit/core@8.0.0": version "8.0.0" resolved "https://registry.yarnpkg.com/@angular-devkit/core/-/core-8.0.0.tgz#a0ca65d8d0f928db9288316b1f3346d21f722213" @@ -177,7 +189,7 @@ ora "5.3.0" rxjs "6.6.3" -"@angular-devkit/schematics@12.2.10", "@angular-devkit/schematics@^12.2.10": +"@angular-devkit/schematics@12.2.10": version "12.2.10" resolved "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-12.2.10.tgz#b8d4031053fd76d93caa7f33aeeb67383e37f0ab" integrity sha512-oQ2EWdkEDE+eAttHeviXsvBi85PsntQT+IffjKUZdbQU+Leuk/pKUpTeea1YosU1p4Cz3PKYF+P/Nl5Jy3B7IQ== @@ -186,6 +198,15 @@ ora "5.4.1" rxjs "6.6.7" +"@angular-devkit/schematics@12.2.13", "@angular-devkit/schematics@^12.2.10": + version "12.2.13" + resolved "https://registry.yarnpkg.com/@angular-devkit/schematics/-/schematics-12.2.13.tgz#6464d86fa3ccd0efb5ead46c793cef9ec45c7758" + integrity sha512-LQTv72R5Ma1uowMEeii2wIoDWI4bYQyZvunqPy9jRveBTjli2yVwwcOziGCVyttwlYs46bSdxThgeEvVIako2w== + dependencies: + "@angular-devkit/core" "12.2.13" + ora "5.4.1" + rxjs "6.6.7" + "@angular-devkit/schematics@8.0.0": version "8.0.0" resolved "https://registry.yarnpkg.com/@angular-devkit/schematics/-/schematics-8.0.0.tgz#53d14646c6286b0397417990fc83e3e9a6ecf233" @@ -245,6 +266,31 @@ universal-analytics "0.4.23" uuid "8.3.2" +"@angular/cli@^12": + version "12.2.13" + resolved "https://registry.yarnpkg.com/@angular/cli/-/cli-12.2.13.tgz#ca586c14a6f83bb4390875be0a0fa709b9a2ae29" + integrity sha512-Yz6MuwdxxP6U2i8iRuCSNZeJxlLDPshT/joymCsFdjwSMGEH9Kk9DdvAfFYfzdHGdHbGrDdASJ4G+uALyNSLxw== + dependencies: + "@angular-devkit/architect" "0.1202.13" + "@angular-devkit/core" "12.2.13" + "@angular-devkit/schematics" "12.2.13" + "@schematics/angular" "12.2.13" + "@yarnpkg/lockfile" "1.1.0" + ansi-colors "4.1.1" + debug "4.3.2" + ini "2.0.0" + inquirer "8.1.2" + jsonc-parser "3.0.0" + npm-package-arg "8.1.5" + npm-pick-manifest "6.1.1" + open "8.2.1" + ora "5.4.1" + pacote "11.3.5" + resolve "1.20.0" + semver "7.3.5" + symbol-observable "4.0.0" + uuid "8.3.2" + "@angular/common@11.2.13": version "11.2.13" resolved "https://registry.yarnpkg.com/@angular/common/-/common-11.2.13.tgz#fedd5eda9c2c5340d8d7310bdbd4606636eb7a41" @@ -2419,7 +2465,7 @@ "@cypress/request@2.88.10", "@cypress/request@^2.88.10": version "2.88.10" - resolved "https://registry.npmjs.org/@cypress/request/-/request-2.88.10.tgz#b66d76b07f860d3a4b8d7a0604d020c662752cce" + resolved "https://registry.yarnpkg.com/@cypress/request/-/request-2.88.10.tgz#b66d76b07f860d3a4b8d7a0604d020c662752cce" integrity sha512-Zp7F+R93N0yZyG34GutyTNr+okam7s/Fzc1+i3kcqOP8vk6OuajuE9qZJ6Rs+10/1JFtXFYMdyarnU1rZuJesg== dependencies: aws-sign2 "~0.7.0" @@ -3052,6 +3098,11 @@ dependencies: prop-types "^15.7.2" +"@gar/promisify@^1.0.1": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@gar/promisify/-/promisify-1.1.2.tgz#30aa825f11d438671d585bd44e7fd564535fc210" + integrity sha512-82cpyJyKRoQoRi+14ibCeGPu0CwypgtBAdBhq1WfvagpCZNKqwXbKwXllYSMG91DhmG4jt9gN8eP6lGOtozuaw== + "@hapi/accept@5.0.1": version "5.0.1" resolved "https://registry.yarnpkg.com/@hapi/accept/-/accept-5.0.1.tgz#068553e867f0f63225a506ed74e899441af53e10" @@ -5051,10 +5102,18 @@ resolved "https://registry.yarnpkg.com/@npmcli/ci-detect/-/ci-detect-1.3.0.tgz#6c1d2c625fb6ef1b9dea85ad0a5afcbef85ef22a" integrity sha512-oN3y7FAROHhrAt7Rr7PnTSwrHrZVRTS2ZbyxeQwSSYD0ifwM3YNgQqbaRmjcWoPyq77MjchusjJDspbzMmip1Q== -"@npmcli/git@^2.0.1": - version "2.0.9" - resolved "https://registry.yarnpkg.com/@npmcli/git/-/git-2.0.9.tgz#915bbfe66300e67b4da5ef765a4475ffb2ca5b6b" - integrity sha512-hTMbMryvOqGLwnmMBKs5usbPsJtyEsMsgXwJbmNrsEuQQh1LAIMDU77IoOrwkCg+NgQWl+ySlarJASwM3SutCA== +"@npmcli/fs@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@npmcli/fs/-/fs-1.0.0.tgz#589612cfad3a6ea0feafcb901d29c63fd52db09f" + integrity sha512-8ltnOpRR/oJbOp8vaGUnipOi3bqkcW+sLHFlyXIr08OGHmVJLB1Hn7QtGXbYcpVtH1gAYZTlmDXtE4YV0+AMMQ== + dependencies: + "@gar/promisify" "^1.0.1" + semver "^7.3.5" + +"@npmcli/git@^2.0.1", "@npmcli/git@^2.1.0": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@npmcli/git/-/git-2.1.0.tgz#2fbd77e147530247d37f325930d457b3ebe894f6" + integrity sha512-/hBFX/QG1b+N7PZBFs0bi+evgRZcK9nWBxQKZkGoXUT5hJSwl5c4d7y8/hm+NQZRPhQ67RzFaj5UM9YeyKoryw== dependencies: "@npmcli/promise-spawn" "^1.3.2" lru-cache "^6.0.0" @@ -5065,7 +5124,7 @@ semver "^7.3.5" which "^2.0.2" -"@npmcli/installed-package-contents@^1.0.5": +"@npmcli/installed-package-contents@^1.0.5", "@npmcli/installed-package-contents@^1.0.6": version "1.0.7" resolved "https://registry.yarnpkg.com/@npmcli/installed-package-contents/-/installed-package-contents-1.0.7.tgz#ab7408c6147911b970a8abe261ce512232a3f4fa" integrity sha512-9rufe0wnJusCQoLpV9ZPKIVP55itrM5BxOXs10DmdbRfgWtHy1LDyskbwRnBghuB0PrF7pNPOqREVtpz4HqzKw== @@ -5093,14 +5152,13 @@ dependencies: infer-owner "^1.0.4" -"@npmcli/run-script@^1.3.0": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@npmcli/run-script/-/run-script-1.8.5.tgz#f250a0c5e1a08a792d775a315d0ff42fc3a51e1d" - integrity sha512-NQspusBCpTjNwNRFMtz2C5MxoxyzlbuJ4YEhxAKrIonTiirKDtatsZictx9RgamQIx6+QuHMNmPl0wQdoESs9A== +"@npmcli/run-script@^1.3.0", "@npmcli/run-script@^1.8.2": + version "1.8.6" + resolved "https://registry.yarnpkg.com/@npmcli/run-script/-/run-script-1.8.6.tgz#18314802a6660b0d4baa4c3afe7f1ad39d8c28b7" + integrity sha512-e42bVZnC6VluBZBAFEr3YrdqSspG3bgilyg4nSLBJ7TRGNCzxHa92XAHxQBLYg0BmgwO4b2mf3h/l5EkEWRn3g== dependencies: "@npmcli/node-gyp" "^1.0.2" "@npmcli/promise-spawn" "^1.3.2" - infer-owner "^1.0.4" node-gyp "^7.1.0" read-package-json-fast "^2.0.1" @@ -6302,6 +6360,15 @@ "@angular-devkit/schematics" "11.2.12" jsonc-parser "3.0.0" +"@schematics/angular@12.2.13", "@schematics/angular@^12.2.10": + version "12.2.13" + resolved "https://registry.yarnpkg.com/@schematics/angular/-/angular-12.2.13.tgz#5bf3e7b699a42d7fd7f7aa12bbe4534e671e7201" + integrity sha512-TrigQ9TCmAedf1J5PSSSfTC+sScYrITeAUN8a9rlkjZNvff8hHVyQaiZmhqL+egKQL828mhkqpnFUDd4QsPBIw== + dependencies: + "@angular-devkit/core" "12.2.13" + "@angular-devkit/schematics" "12.2.13" + jsonc-parser "3.0.0" + "@schematics/angular@8.0.0": version "8.0.0" resolved "https://registry.yarnpkg.com/@schematics/angular/-/angular-8.0.0.tgz#47954888fb8acbc3600235db7a46229c47fe5d9c" @@ -6310,15 +6377,6 @@ "@angular-devkit/core" "8.0.0" "@angular-devkit/schematics" "8.0.0" -"@schematics/angular@^12.2.10": - version "12.2.10" - resolved "https://registry.npmjs.org/@schematics/angular/-/angular-12.2.10.tgz#c640be969ea7588da14ee5c4d58a6a2ce63b97e6" - integrity sha512-hjOWrC/RlZ97oYWO92f5VRu6LDzPHnowDcyGDGvI9wCrfipL4Y7Is6LgFAiVZxCHdRz71MCnES1IXSj5w6UuBA== - dependencies: - "@angular-devkit/core" "12.2.10" - "@angular-devkit/schematics" "12.2.10" - jsonc-parser "3.0.0" - "@schematics/update@0.1102.12": version "0.1102.12" resolved "https://registry.yarnpkg.com/@schematics/update/-/update-0.1102.12.tgz#e9221c3bd8077baf2a4f688bdeca3ded329c356b" @@ -6459,11 +6517,6 @@ resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-2.1.1.tgz#ceff6a28a5b4867c2dd4a1ba513de278ccbe8bb1" integrity sha512-/aPsuoj/1Dw/kzhkgz+ES6TxG0zfTMGLwuK2ZG00k/iJzYHTLCE8mVU8EPqEOp/lmxPoq1C1C9RYToRKb2KEfg== -"@sindresorhus/is@^3.0.0": - version "3.1.2" - resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-3.1.2.tgz#548650de521b344e3781fbdb0ece4aa6f729afb8" - integrity sha512-JiX9vxoKMmu8Y3Zr2RVathBL1Cdu4Nt4MuNWemt1Nc06A0RAin9c5FArkhGsyMBWfCu4zj+9b+GxtjAnE4qqLQ== - "@sinonjs/commons@^1", "@sinonjs/commons@^1.2.0", "@sinonjs/commons@^1.3.0", "@sinonjs/commons@^1.4.0", "@sinonjs/commons@^1.6.0", "@sinonjs/commons@^1.7.0", "@sinonjs/commons@^1.7.2", "@sinonjs/commons@^1.8.1": version "1.8.2" resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-1.8.2.tgz#858f5c4b48d80778fde4b9d541f27edc0d56488b" @@ -7520,7 +7573,7 @@ dependencies: defer-to-connect "^1.0.1" -"@szmarczak/http-timer@^4.0.0", "@szmarczak/http-timer@^4.0.5": +"@szmarczak/http-timer@^4.0.0": version "4.0.5" resolved "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-4.0.5.tgz#bfbd50211e9dfa51ba07da58a14cdfd333205152" integrity sha512-PyRA9sm1Yayuj5OIoJ1hGt2YISX45w9WcFbh6ddT0Z/0yaFxOtGLInr4jUfU1EAFVs0Yfyfev4RNwBlUaHdlDQ== @@ -9925,7 +9978,7 @@ agent-base@4, agent-base@^4.3.0: dependencies: es6-promisify "^5.0.0" -agent-base@6: +agent-base@6, agent-base@^6.0.2: version "6.0.2" resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== @@ -13143,11 +13196,12 @@ cacache@^13.0.1: ssri "^7.0.0" unique-filename "^1.1.1" -cacache@^15.0.5: - version "15.0.6" - resolved "https://registry.yarnpkg.com/cacache/-/cacache-15.0.6.tgz#65a8c580fda15b59150fb76bf3f3a8e45d583099" - integrity sha512-g1WYDMct/jzW+JdWEyjaX2zoBkZ6ZT9VpOyp2I/VMtDsNLffNat3kqPFfi1eDRSK9/SuKGyORDHcQMcPF8sQ/w== +cacache@^15.0.5, cacache@^15.2.0: + version "15.3.0" + resolved "https://registry.yarnpkg.com/cacache/-/cacache-15.3.0.tgz#dc85380fb2f556fe3dda4c719bfa0ec875a7f1eb" + integrity sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ== dependencies: + "@npmcli/fs" "^1.0.0" "@npmcli/move-file" "^1.0.1" chownr "^2.0.0" fs-minipass "^2.0.0" @@ -13206,11 +13260,6 @@ cacheable-lookup@^4.1.1: resolved "https://registry.yarnpkg.com/cacheable-lookup/-/cacheable-lookup-4.3.0.tgz#86ff1cb38f648cc6aba28feffe008f808b403550" integrity sha512-PTUoCeIjj2awloqyVRUL33SjquU1Qv5xuDalYY8WAzd9NnUMUivZnGsOzVsMfg2YuMsWXaXkd/hjnsVoWc/3YA== -cacheable-lookup@^5.0.3: - version "5.0.4" - resolved "https://registry.yarnpkg.com/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz#5a6b865b2c44357be3d5ebc2a467b032719a7005" - integrity sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA== - cacheable-request@^2.1.1: version "2.1.4" resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-2.1.4.tgz#0d808801b6342ad33c91df9d0b44dc09b91e5c3d" @@ -16255,13 +16304,6 @@ decompress-response@^5.0.0: dependencies: mimic-response "^2.0.0" -decompress-response@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-6.0.0.tgz#ca387612ddb7e104bd16d85aab00d5ecf09c66fc" - integrity sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ== - dependencies: - mimic-response "^3.1.0" - dedent@^0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/dedent/-/dedent-0.7.0.tgz#2495ddbaf6eb874abb0e1be9df22d2e5a544326c" @@ -20983,23 +21025,6 @@ got@11.1.0: p-cancelable "^2.0.0" responselike "^2.0.0" -got@11.5.1: - version "11.5.1" - resolved "https://registry.yarnpkg.com/got/-/got-11.5.1.tgz#bf098a270fe80b3fb88ffd5a043a59ebb0a391db" - integrity sha512-reQEZcEBMTGnujmQ+Wm97mJs/OK6INtO6HmLI+xt3+9CvnRwWjXutUvb2mqr+Ao4Lu05Rx6+udx9sOQAmExMxA== - dependencies: - "@sindresorhus/is" "^3.0.0" - "@szmarczak/http-timer" "^4.0.5" - "@types/cacheable-request" "^6.0.1" - "@types/responselike" "^1.0.0" - cacheable-lookup "^5.0.3" - cacheable-request "^7.0.1" - decompress-response "^6.0.0" - http2-wrapper "^1.0.0-beta.5.0" - lowercase-keys "^2.0.0" - p-cancelable "^2.0.0" - responselike "^2.0.0" - got@^6.7.1: version "6.7.1" resolved "https://registry.yarnpkg.com/got/-/got-6.7.1.tgz#240cd05785a9a18e561dc1b44b41c763ef1e8db0" @@ -22037,7 +22062,7 @@ http-signature@~1.3.6: jsprim "^2.0.2" sshpk "^1.14.1" -http2-wrapper@^1.0.0-beta.4.4, http2-wrapper@^1.0.0-beta.5.0: +http2-wrapper@^1.0.0-beta.4.4: version "1.0.3" resolved "https://registry.yarnpkg.com/http2-wrapper/-/http2-wrapper-1.0.3.tgz#b8f55e0c1f25d4ebd08b3b0c2c079f9590800b3d" integrity sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg== @@ -26456,6 +26481,28 @@ make-fetch-happen@^8.0.9: socks-proxy-agent "^5.0.0" ssri "^8.0.0" +make-fetch-happen@^9.0.1: + version "9.1.0" + resolved "https://registry.yarnpkg.com/make-fetch-happen/-/make-fetch-happen-9.1.0.tgz#53085a09e7971433e6765f7971bf63f4e05cb968" + integrity sha512-+zopwDy7DNknmwPQplem5lAZX/eCOzSvSNNcSKm5eVwTkOBzoktEfXsa9L23J/GIRhxRsaxzkPEhrJEpE2F4Gg== + dependencies: + agentkeepalive "^4.1.3" + cacache "^15.2.0" + http-cache-semantics "^4.1.0" + http-proxy-agent "^4.0.1" + https-proxy-agent "^5.0.0" + is-lambda "^1.0.1" + lru-cache "^6.0.0" + minipass "^3.1.3" + minipass-collect "^1.0.2" + minipass-fetch "^1.3.2" + minipass-flush "^1.0.5" + minipass-pipeline "^1.2.4" + negotiator "^0.6.2" + promise-retry "^2.0.1" + socks-proxy-agent "^6.0.0" + ssri "^8.0.0" + make-iterator@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/make-iterator/-/make-iterator-1.0.1.tgz#29b33f312aa8f547c4a5e490f56afcec99133ad6" @@ -27011,11 +27058,6 @@ mimic-response@^2.0.0: resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-2.1.0.tgz#d13763d35f613d09ec37ebb30bac0469c0ee8f43" integrity sha512-wXqjST+SLt7R009ySCglWBCFpjUygmCIfD790/kVbiGmUgfYGuB14PiTd5DwVxSV4NcYHjzMkoj5LjQZwTQLEA== -mimic-response@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-3.1.0.tgz#2d1d59af9c1b129815accc2c46a022a5ce1fa3c9" - integrity sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ== - min-document@^2.19.0: version "2.19.0" resolved "https://registry.yarnpkg.com/min-document/-/min-document-2.19.0.tgz#7bd282e3f5842ed295bb748cdd9f1ffa2c824685" @@ -27993,7 +28035,7 @@ needle@^2.5.2: iconv-lite "^0.4.4" sax "^1.2.4" -negotiator@0.6.2: +negotiator@0.6.2, negotiator@^0.6.2: version "0.6.2" resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb" integrity sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw== @@ -28606,6 +28648,15 @@ npm-package-arg@8.1.0: semver "^7.0.0" validate-npm-package-name "^3.0.0" +npm-package-arg@8.1.5, npm-package-arg@^8.0.0, npm-package-arg@^8.0.1, npm-package-arg@^8.1.2: + version "8.1.5" + resolved "https://registry.yarnpkg.com/npm-package-arg/-/npm-package-arg-8.1.5.tgz#3369b2d5fe8fdc674baa7f1786514ddc15466e44" + integrity sha512-LhgZrg0n0VgvzVdSm1oiZworPbTxYHUJCgtsJW8mGvlDpxTM1vSJc3m5QZeUkhAHIzbz3VCHd/R4osi1L1Tg/Q== + dependencies: + hosted-git-info "^4.0.1" + semver "^7.3.4" + validate-npm-package-name "^3.0.0" + "npm-package-arg@^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0", "npm-package-arg@^4.0.0 || ^5.0.0 || ^6.0.0", npm-package-arg@^6.0.0, npm-package-arg@^6.1.0, npm-package-arg@^6.1.1: version "6.1.1" resolved "https://registry.yarnpkg.com/npm-package-arg/-/npm-package-arg-6.1.1.tgz#02168cb0a49a2b75bf988a28698de7b529df5cb7" @@ -28616,15 +28667,6 @@ npm-package-arg@8.1.0: semver "^5.6.0" validate-npm-package-name "^3.0.0" -npm-package-arg@^8.0.0, npm-package-arg@^8.0.1, npm-package-arg@^8.1.2: - version "8.1.2" - resolved "https://registry.yarnpkg.com/npm-package-arg/-/npm-package-arg-8.1.2.tgz#b868016ae7de5619e729993fbd8d11dc3c52ab62" - integrity sha512-6Eem455JsSMJY6Kpd3EyWE+n5hC+g9bSyHr9K9U2zqZb7+02+hObQ2c0+8iDk/mNF+8r1MhY44WypKJAkySIYA== - dependencies: - hosted-git-info "^4.0.1" - semver "^7.3.4" - validate-npm-package-name "^3.0.0" - npm-packlist@^1.1.12, npm-packlist@^1.4.4, npm-packlist@^1.4.8: version "1.4.8" resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.4.8.tgz#56ee6cc135b9f98ad3d51c1c95da22bbb9b2ef3e" @@ -28653,16 +28695,7 @@ npm-pick-manifest@6.1.0: npm-package-arg "^8.0.0" semver "^7.0.0" -npm-pick-manifest@^3.0.0, npm-pick-manifest@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/npm-pick-manifest/-/npm-pick-manifest-3.0.2.tgz#f4d9e5fd4be2153e5f4e5f9b7be8dc419a99abb7" - integrity sha512-wNprTNg+X5nf+tDi+hbjdHhM4bX+mKqv6XmPh7B5eG+QY9VARfQPfCEH013H5GqfNj6ee8Ij2fg8yk0mzps1Vw== - dependencies: - figgy-pudding "^3.5.1" - npm-package-arg "^6.0.0" - semver "^5.4.1" - -npm-pick-manifest@^6.0.0, npm-pick-manifest@^6.1.1: +npm-pick-manifest@6.1.1, npm-pick-manifest@^6.0.0, npm-pick-manifest@^6.1.1: version "6.1.1" resolved "https://registry.yarnpkg.com/npm-pick-manifest/-/npm-pick-manifest-6.1.1.tgz#7b5484ca2c908565f43b7f27644f36bb816f5148" integrity sha512-dBsdBtORT84S8V8UTad1WlUyKIY9iMsAmqxHbLdeEeBNMLQDlDWWra3wYUx9EBEIiG/YwAy0XyNHDd2goAsfuA== @@ -28672,6 +28705,15 @@ npm-pick-manifest@^6.0.0, npm-pick-manifest@^6.1.1: npm-package-arg "^8.1.2" semver "^7.3.4" +npm-pick-manifest@^3.0.0, npm-pick-manifest@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/npm-pick-manifest/-/npm-pick-manifest-3.0.2.tgz#f4d9e5fd4be2153e5f4e5f9b7be8dc419a99abb7" + integrity sha512-wNprTNg+X5nf+tDi+hbjdHhM4bX+mKqv6XmPh7B5eG+QY9VARfQPfCEH013H5GqfNj6ee8Ij2fg8yk0mzps1Vw== + dependencies: + figgy-pudding "^3.5.1" + npm-package-arg "^6.0.0" + semver "^5.4.1" + npm-profile@^4.0.2, npm-profile@^4.0.4: version "4.0.4" resolved "https://registry.yarnpkg.com/npm-profile/-/npm-profile-4.0.4.tgz#28ee94390e936df6d084263ee2061336a6a1581b" @@ -28700,6 +28742,18 @@ npm-registry-client@^8.6.0: optionalDependencies: npmlog "2 || ^3.1.0 || ^4.0.0" +npm-registry-fetch@^11.0.0: + version "11.0.0" + resolved "https://registry.yarnpkg.com/npm-registry-fetch/-/npm-registry-fetch-11.0.0.tgz#68c1bb810c46542760d62a6a965f85a702d43a76" + integrity sha512-jmlgSxoDNuhAtxUIG6pVwwtz840i994dL14FoNVZisrmZW5kWd63IUTNv1m/hyRSGSqWjCUp/YZlS1BJyNp9XA== + dependencies: + make-fetch-happen "^9.0.1" + minipass "^3.1.3" + minipass-fetch "^1.3.0" + minipass-json-stream "^1.0.1" + minizlib "^2.0.0" + npm-package-arg "^8.0.0" + npm-registry-fetch@^4.0.0, npm-registry-fetch@^4.0.7: version "4.0.7" resolved "https://registry.yarnpkg.com/npm-registry-fetch/-/npm-registry-fetch-4.0.7.tgz#57951bf6541e0246b34c9f9a38ab73607c9449d7" @@ -29214,6 +29268,15 @@ open@7.4.0: is-docker "^2.0.0" is-wsl "^2.1.1" +open@8.2.1, open@^8.0.9: + version "8.2.1" + resolved "https://registry.yarnpkg.com/open/-/open-8.2.1.tgz#82de42da0ccbf429bc12d099dad2e0975e14e8af" + integrity sha512-rXILpcQlkF/QuFez2BJDf3GsqpjGKbkUUToAIGo9A0Q6ZkoSGogZJulrUdwRkrAsoQvoZsrjCYt8+zblOk7JQQ== + dependencies: + define-lazy-prop "^2.0.0" + is-docker "^2.1.1" + is-wsl "^2.2.0" + open@^6.3.0: version "6.4.0" resolved "https://registry.yarnpkg.com/open/-/open-6.4.0.tgz#5c13e96d0dc894686164f18965ecfe889ecfc8a9" @@ -29229,15 +29292,6 @@ open@^7.0.2, open@^7.0.3, open@^7.4.2: is-docker "^2.0.0" is-wsl "^2.1.1" -open@^8.0.9: - version "8.2.1" - resolved "https://registry.yarnpkg.com/open/-/open-8.2.1.tgz#82de42da0ccbf429bc12d099dad2e0975e14e8af" - integrity sha512-rXILpcQlkF/QuFez2BJDf3GsqpjGKbkUUToAIGo9A0Q6ZkoSGogZJulrUdwRkrAsoQvoZsrjCYt8+zblOk7JQQ== - dependencies: - define-lazy-prop "^2.0.0" - is-docker "^2.1.1" - is-wsl "^2.2.0" - opener@^1.4.1, opener@^1.4.2, opener@^1.5.1, opener@^1.5.2: version "1.5.2" resolved "https://registry.yarnpkg.com/opener/-/opener-1.5.2.tgz#5d37e1f35077b9dcac4301372271afdeb2a13598" @@ -29736,6 +29790,31 @@ pacote@11.2.4: ssri "^8.0.0" tar "^6.1.0" +pacote@11.3.5: + version "11.3.5" + resolved "https://registry.yarnpkg.com/pacote/-/pacote-11.3.5.tgz#73cf1fc3772b533f575e39efa96c50be8c3dc9d2" + integrity sha512-fT375Yczn4zi+6Hkk2TBe1x1sP8FgFsEIZ2/iWaXY2r/NkhDJfxbcn5paz1+RTFCyNf+dPnaoBDJoAxXSU8Bkg== + dependencies: + "@npmcli/git" "^2.1.0" + "@npmcli/installed-package-contents" "^1.0.6" + "@npmcli/promise-spawn" "^1.2.0" + "@npmcli/run-script" "^1.8.2" + cacache "^15.0.5" + chownr "^2.0.0" + fs-minipass "^2.1.0" + infer-owner "^1.0.4" + minipass "^3.1.3" + mkdirp "^1.0.3" + npm-package-arg "^8.0.1" + npm-packlist "^2.1.4" + npm-pick-manifest "^6.0.0" + npm-registry-fetch "^11.0.0" + promise-retry "^2.0.1" + read-package-json-fast "^2.0.1" + rimraf "^3.0.2" + ssri "^8.0.1" + tar "^6.1.0" + pacote@^9.1.0, pacote@^9.5.12, pacote@^9.5.3: version "9.5.12" resolved "https://registry.yarnpkg.com/pacote/-/pacote-9.5.12.tgz#1e11dd7a8d736bcc36b375a9804d41bb0377bf66" @@ -34303,12 +34382,7 @@ resolve@1.19.0: is-core-module "^2.1.0" path-parse "^1.0.6" -resolve@^0.6.3: - version "0.6.3" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-0.6.3.tgz#dd957982e7e736debdf53b58a4dd91754575dd46" - integrity sha1-3ZV5gufnNt699TtYpN2RdUV13UY= - -resolve@^1.1.4, resolve@^1.1.6, resolve@^1.1.7, resolve@^1.10.0, resolve@^1.10.1, resolve@^1.11.0, resolve@^1.11.1, resolve@^1.12.0, resolve@^1.13.1, resolve@^1.14.2, resolve@^1.15.1, resolve@^1.17.0, resolve@^1.18.1, resolve@^1.19.0, resolve@^1.20.0, resolve@^1.3.2, resolve@^1.4.0, resolve@^1.8.1: +resolve@1.20.0, resolve@^1.1.4, resolve@^1.1.6, resolve@^1.1.7, resolve@^1.10.0, resolve@^1.10.1, resolve@^1.11.0, resolve@^1.11.1, resolve@^1.12.0, resolve@^1.13.1, resolve@^1.14.2, resolve@^1.15.1, resolve@^1.17.0, resolve@^1.18.1, resolve@^1.19.0, resolve@^1.20.0, resolve@^1.3.2, resolve@^1.4.0, resolve@^1.8.1: version "1.20.0" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.20.0.tgz#629a013fb3f70755d6f0b7935cc1c2c5378b1975" integrity sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A== @@ -34316,6 +34390,11 @@ resolve@^1.1.4, resolve@^1.1.6, resolve@^1.1.7, resolve@^1.10.0, resolve@^1.10.1 is-core-module "^2.2.0" path-parse "^1.0.6" +resolve@^0.6.3: + version "0.6.3" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-0.6.3.tgz#dd957982e7e736debdf53b58a4dd91754575dd46" + integrity sha1-3ZV5gufnNt699TtYpN2RdUV13UY= + responselike@1.0.2, responselike@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/responselike/-/responselike-1.0.2.tgz#918720ef3b631c5642be068f15ade5a46f4ba1e7" @@ -35963,7 +36042,16 @@ socks-proxy-agent@^5.0.0: debug "4" socks "^2.3.3" -socks@^2.3.3: +socks-proxy-agent@^6.0.0: + version "6.1.1" + resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-6.1.1.tgz#e664e8f1aaf4e1fb3df945f09e3d94f911137f87" + integrity sha512-t8J0kG3csjA4g6FTbsMOWws+7R7vuRC8aQ/wy3/1OWmsgwA68zs/+cExQ0koSitUDXqhufF/YJr9wtNMZHw5Ew== + dependencies: + agent-base "^6.0.2" + debug "^4.3.1" + socks "^2.6.1" + +socks@^2.3.3, socks@^2.6.1: version "2.6.1" resolved "https://registry.yarnpkg.com/socks/-/socks-2.6.1.tgz#989e6534a07cf337deb1b1c94aaa44296520d30e" integrity sha512-kLQ9N5ucj8uIcxrDwjm0Jsqk06xdpBjGNQtpXy4Q8/QY2k+fY7nZH8CARy+hkbG+SGAovmzzuauCpBlb8FrnBA==