diff --git a/.github/workflows/audit_and_lint.yml b/.github/workflows/audit_and_lint.yml index 2d63cd601..e350f04f0 100644 --- a/.github/workflows/audit_and_lint.yml +++ b/.github/workflows/audit_and_lint.yml @@ -88,6 +88,10 @@ jobs: github.ref == 'refs/heads/master' || github.ref == 'refs/heads/dev' || github.event_name == 'pull_request' runs-on: ubuntu-latest + # todo: to enable matrix strategy we need to have different wallets on each resolution because of transactions + # strategy: + # matrix: + # resolution: ['low', 'medium', 'high'] steps: - name: Chown workspace @@ -110,8 +114,9 @@ jobs: restore-keys: | ${{ runner.os }}-buildx- - - name: Run e2e tests - run: ./start-tests.sh + - name: Run e2e tests (low res) + run: | + docker-compose -f docker-compose.ci.yml --env-file low-res.env up --build --exit-code-from synpress env: COMPOSE_DOCKER_CLI_BUILD: 1 DOCKER_BUILDKIT: 1 @@ -122,12 +127,39 @@ jobs: CYPRESS_PROJECT_ID: ${{ secrets.CYPRESS_PROJECT_ID }} CYPRESS_RECORD_KEY: ${{ secrets.CYPRESS_RECORD_KEY }} GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + continue-on-error: true + + - name: Archive e2e artifacts (low res) + uses: actions/upload-artifact@3cea5372237819ed00197afe530f5a7ea3e805c8 # pin@v2 + if: always() + with: + name: e2e-artifacts-low-res + path: | + docker/videos + docker/videos-ci + docker/screenshots + continue-on-error: true + + - name: Run e2e tests (high res) + run: | + docker-compose -f docker-compose.ci.yml --env-file high-res.env up --build --exit-code-from synpress + env: + COMPOSE_DOCKER_CLI_BUILD: 1 + DOCKER_BUILDKIT: 1 + DOCKER_DEFAULT_PLATFORM: linux/amd64 + NGROK_AUTH: ${{ secrets.NGROK_AUTH }} + CYPRESS_PRIVATE_KEY_WITH_FUNDS: + ${{ secrets.CYPRESS_PRIVATE_KEY_WITH_FUNDS }} + CYPRESS_PROJECT_ID: ${{ secrets.CYPRESS_PROJECT_ID }} + CYPRESS_RECORD_KEY: ${{ secrets.CYPRESS_RECORD_KEY }} + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + continue-on-error: true - - name: Archive e2e artifacts + - name: Archive e2e artifacts (high res) uses: actions/upload-artifact@3cea5372237819ed00197afe530f5a7ea3e805c8 # pin@v2 if: always() with: - name: e2e-artifacts + name: e2e-artifacts-high-res path: | docker/videos docker/videos-ci diff --git a/.trunk/.gitignore b/.trunk/.gitignore index b38b75f95..cf2f25470 100644 --- a/.trunk/.gitignore +++ b/.trunk/.gitignore @@ -1,7 +1,7 @@ *out *logs -actions -notifications +*actions +*notifications plugins user_trunk.yaml user.yaml diff --git a/.trunk/config/.hadolint.yaml b/.trunk/config/.hadolint.yaml new file mode 100644 index 000000000..98bf0cd2e --- /dev/null +++ b/.trunk/config/.hadolint.yaml @@ -0,0 +1,4 @@ +# Following source doesn't work in most setups +ignored: + - SC1090 + - SC1091 diff --git a/.trunk/config/.shellcheckrc b/.trunk/config/.shellcheckrc new file mode 100644 index 000000000..8c7b1ada8 --- /dev/null +++ b/.trunk/config/.shellcheckrc @@ -0,0 +1,7 @@ +enable=all +source-path=SCRIPTDIR +disable=SC2154 + +# If you're having issues with shellcheck following source, disable the errors via: +# disable=SC1090 +# disable=SC1091 diff --git a/.trunk/trunk.yaml b/.trunk/trunk.yaml index f576e71bf..a98a1bbb2 100644 --- a/.trunk/trunk.yaml +++ b/.trunk/trunk.yaml @@ -1,21 +1,33 @@ version: 0.1 +runtimes: + enabled: + - go@1.18.3 + - node@16.14.2 +actions: + enabled: + - trunk-cache-prune + - trunk-upgrade-available plugins: sources: - id: trunk - ref: v0.0.3 + ref: v0.0.5 uri: https://github.com/trunk-io/plugins cli: - version: 0.17.0-beta + version: 0.18.1-beta sha256: - darwin_arm64: d0f10cede5ce6f2e9cf93c13b7422a87994c57912c2f1ec3b2b6273d965d3726 - darwin_x86_64: de8cc96736b5888925523631926c1f5a0735bb086569ccdc3e2b62c2de2f4867 - linux_x86_64: ddba5eb37e6885210b43f2466f8240fbeae5327506876705ef3935627d771d70 + darwin_arm64: c25df7ef6d68a2bd8648d93830659d1675043db03d9f49182534f28e417dfda6 + darwin_x86_64: 6a7a4f9c5d0ad7d3d5ea45e6a1cf11a668ea68c36f01ebe31ef95f99560a6824 + linux_x86_64: d875fe70c221d6449a9cd09598ab278133c5513f52dbf6af0fca3161d7a39d46 lint: enabled: - - actionlint@1.6.17 - - eslint@8.23.0 + - dotenv-linter@3.2.0 + - hadolint@2.10.0 + - shellcheck@0.8.0 + - shfmt@3.5.0 + - actionlint@1.6.20 + - eslint@8.24.0 - git-diff-check@SYSTEM - - gitleaks@8.11.2 + - gitleaks@8.13.0 - markdownlint@0.32.2 - prettier@2.7.1 ignore: diff --git a/commands/metamask.js b/commands/metamask.js index cfbf01abf..f96db7dd4 100644 --- a/commands/metamask.js +++ b/commands/metamask.js @@ -32,13 +32,85 @@ const { } = require('../pages/metamask/confirmation-page'); const { setNetwork, getNetwork } = require('../helpers'); +let extensionInitialUrl; +let extensionId; +let extensionHomeUrl; +let extensionSettingsUrl; +let extensionAdvancedSettingsUrl; +let extensionAddNetworkUrl; +let extensionNewAccountUrl; +let extensionImportAccountUrl; let walletAddress; let switchBackToCypressWindow; module.exports = { + extensionId: () => { + return extensionId; + }, + extensionUrls: () => { + return { + extensionInitialUrl, + extensionHomeUrl, + extensionSettingsUrl, + extensionAdvancedSettingsUrl, + extensionAddNetworkUrl, + extensionNewAccountUrl, + extensionImportAccountUrl, + }; + }, walletAddress: () => { return walletAddress; }, + goToSettings: async () => { + await Promise.all([ + playwright.metamaskWindow().waitForNavigation(), + playwright.metamaskWindow().goto(extensionSettingsUrl), + ]); + }, + goToAdvancedSettings: async () => { + await Promise.all([ + playwright.metamaskWindow().waitForNavigation(), + playwright.metamaskWindow().goto(extensionAdvancedSettingsUrl), + ]); + }, + goToAddNetwork: async () => { + await Promise.all([ + playwright.metamaskWindow().waitForNavigation(), + playwright.metamaskWindow().goto(extensionAddNetworkUrl), + ]); + }, + goToNewAccount: async () => { + await Promise.all([ + playwright.metamaskWindow().waitForNavigation(), + playwright.metamaskWindow().goto(extensionNewAccountUrl), + ]); + }, + goToImportAccount: async () => { + await Promise.all([ + playwright.metamaskWindow().waitForNavigation(), + playwright.metamaskWindow().goto(extensionImportAccountUrl), + ]); + }, + getExtensionDetails: async () => { + extensionInitialUrl = await playwright.metamaskWindow().url(); + extensionId = extensionInitialUrl.match('//(.*?)/')[1]; + extensionHomeUrl = `chrome-extension://${extensionId}/home.html`; + extensionSettingsUrl = `${extensionHomeUrl}#settings`; + extensionAdvancedSettingsUrl = `${extensionSettingsUrl}/advanced`; + extensionAddNetworkUrl = `${extensionSettingsUrl}/networks/add-network`; + extensionNewAccountUrl = `${extensionHomeUrl}#new-account`; + extensionImportAccountUrl = `${extensionNewAccountUrl}/import`; + + return { + extensionInitialUrl, + extensionId, + extensionSettingsUrl, + extensionAdvancedSettingsUrl, + extensionAddNetworkUrl, + extensionNewAccountUrl, + extensionImportAccountUrl, + }; + }, // workaround for metamask random blank page on first run fixBlankPage: async () => { await playwright.metamaskWindow().waitForTimeout(1000); @@ -65,12 +137,21 @@ module.exports = { return true; }, closePopup: async () => { + // note: this is required for fast execution of e2e tests to avoid flakiness + // otherwise popup may not be detected properly and not closed + await playwright.metamaskWindow().waitForTimeout(1000); if ( (await playwright .metamaskWindow() .$(mainPageElements.popup.container)) !== null ) { - await playwright.waitAndClick(mainPageElements.popup.closeButton); + const popupBackground = playwright + .metamaskWindow() + .locator(mainPageElements.popup.background); + const popupBackgroundBox = await popupBackground.boundingBox(); + await playwright + .metamaskWindow() + .mouse.click(popupBackgroundBox.x + 1, popupBackgroundBox.y + 1); } return true; }, @@ -84,7 +165,6 @@ module.exports = { waitForEvent: 'navi', }, ); - // await playwright.waitFor(mainPageElements.walletOverview); await module.exports.closePopup(); return true; }, @@ -130,7 +210,6 @@ module.exports = { waitForEvent: 'navi', }, ); - // await playwright.waitFor(mainPageElements.walletOverview); await module.exports.closePopup(); return true; }, @@ -181,28 +260,17 @@ module.exports = { waitForEvent: 'navi', }, ); - // await playwright.waitFor(mainPageElements.walletOverview); await module.exports.closePopup(); return true; }, importAccount: async privateKey => { await switchToMetamaskIfNotActive(); - - await playwright.waitAndClick(mainPageElements.accountMenu.button); - await playwright.waitAndClick( - mainPageElements.accountMenu.importAccountButton, - await playwright.metamaskWindow(), - { - waitForEvent: 'navi', - }, - ); - + await module.exports.goToImportAccount(); await playwright.waitAndType( mainPageElements.importAccount.input, privateKey, ); await playwright.waitAndClick(mainPageElements.importAccount.importButton); - await switchToCypressIfNotActive(); return true; }, @@ -212,16 +280,7 @@ module.exports = { } await switchToMetamaskIfNotActive(); - - await playwright.waitAndClick(mainPageElements.accountMenu.button); - await playwright.waitAndClick( - mainPageElements.accountMenu.createAccountButton, - await playwright.metamaskWindow(), - { - waitForEvent: 'navi', - }, - ); - + await module.exports.goToNewAccount(); if (accountName) { await playwright.waitAndType( mainPageElements.createAccount.input, @@ -229,7 +288,6 @@ module.exports = { ); } await playwright.waitAndClick(mainPageElements.createAccount.createButton); - await switchToCypressIfNotActive(); return true; }, @@ -239,7 +297,9 @@ module.exports = { } await switchToMetamaskIfNotActive(); - + // note: closePopup() is required after changing createAccount() to use direct urls (popup started appearing) + // ^ this change also introduced 500ms delay for closePopup() function + await module.exports.closePopup(); await playwright.waitAndClick(mainPageElements.accountMenu.button); if (typeof accountNameOrAccountNumber === 'number') { @@ -344,21 +404,7 @@ module.exports = { network.networkName = network.networkName.toLowerCase(); } - await playwright.waitAndClick(mainPageElements.accountMenu.button); - await playwright.waitAndClick( - mainPageElements.accountMenu.settingsButton, - await playwright.metamaskWindow(), - { - waitForEvent: 'navi', - }, - ); - await playwright.waitAndClick( - settingsPageElements.networksButton, - await playwright.metamaskWindow(), - { - waitForEvent: 'navi', - }, - ); + await module.exports.goToAddNetwork(); await playwright.waitAndClick(networksPageElements.addNetworkButton); await playwright.waitAndType( addNetworkPageElements.networkNameInput, @@ -468,22 +514,7 @@ module.exports = { }, activateCustomNonce: async () => { await switchToMetamaskIfNotActive(); - - await playwright.waitAndClick(mainPageElements.accountMenu.button); - await playwright.waitAndClick( - mainPageElements.accountMenu.settingsButton, - await playwright.metamaskWindow(), - { - waitForEvent: 'navi', - }, - ); - await playwright.waitAndClick( - settingsPageElements.advancedButton, - await playwright.metamaskWindow(), - { - waitForEvent: 'navi', - }, - ); + await module.exports.goToAdvancedSettings(); if ( (await playwright .metamaskWindow() @@ -498,29 +529,12 @@ module.exports = { waitForEvent: 'navi', }, ); - // await playwright.waitFor(mainPageElements.walletOverview); - await switchToCypressIfNotActive(); return true; }, resetAccount: async () => { await switchToMetamaskIfNotActive(); - - await playwright.waitAndClick(mainPageElements.accountMenu.button); - await playwright.waitAndClick( - mainPageElements.accountMenu.settingsButton, - await playwright.metamaskWindow(), - { - waitForEvent: 'navi', - }, - ); - await playwright.waitAndClick( - settingsPageElements.advancedButton, - await playwright.metamaskWindow(), - { - waitForEvent: 'navi', - }, - ); + await module.exports.goToAdvancedSettings(); await playwright.waitAndClick(advancedPageElements.resetAccountButton); await playwright.waitAndClick(resetAccountModalElements.resetButton); await playwright.waitAndClick( @@ -530,8 +544,6 @@ module.exports = { waitForEvent: 'navi', }, ); - // await playwright.waitFor(mainPageElements.walletOverview); - await switchToCypressIfNotActive(); return true; }, @@ -774,6 +786,7 @@ module.exports = { await playwright.init(); await playwright.assignWindows(); await playwright.assignActiveTabName('metamask'); + await module.exports.getExtensionDetails(); await module.exports.fixBlankPage(); if ( (await playwright diff --git a/docker-compose.ci.yml b/docker-compose.ci.yml index ccfd966d9..9b867d9a8 100644 --- a/docker-compose.ci.yml +++ b/docker-compose.ci.yml @@ -7,9 +7,10 @@ services: environment: - DISPLAY=display:0.0 - CYPRESS_PRIVATE_KEY_WITH_FUNDS=${CYPRESS_PRIVATE_KEY_WITH_FUNDS} - - CYPRESS_PROJECT_ID=${CYPRESS_PROJECT_ID} - - CYPRESS_RECORD_KEY=${CYPRESS_RECORD_KEY} + # - CYPRESS_PROJECT_ID=${CYPRESS_PROJECT_ID} + # - CYPRESS_RECORD_KEY=${CYPRESS_RECORD_KEY} - GITHUB_TOKEN=${GITHUB_TOKEN} + - SYNDEBUG=${SYNDEBUG} depends_on: - display - video @@ -31,6 +32,8 @@ services: image: synthetixio/display:b2643097e891906524e52e7ee956260b20fa01fb-base environment: - RUN_XTERM=no + - DISPLAY_WIDTH=${DISPLAY_WIDTH} + - DISPLAY_HEIGHT=${DISPLAY_HEIGHT} ports: - '8080:8080' networks: @@ -56,6 +59,8 @@ services: - ./docker/videos-ci:/videos environment: - FILE_NAME=CI-full-video.mp4 + - SE_SCREEN_WIDTH=${SE_SCREEN_WIDTH} + - SE_SCREEN_HEIGHT=${SE_SCREEN_HEIGHT} depends_on: - display networks: diff --git a/docker-compose.yml b/docker-compose.yml index c26325913..55ef2d6dc 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -8,6 +8,7 @@ services: - DISPLAY=display:0.0 - CYPRESS_PRIVATE_KEY_WITH_FUNDS=${CYPRESS_PRIVATE_KEY_WITH_FUNDS} - GITHUB_TOKEN=${GITHUB_TOKEN} + - SYNDEBUG=${SYNDEBUG} depends_on: - display - video diff --git a/high-res.env b/high-res.env new file mode 100644 index 000000000..02e0d313d --- /dev/null +++ b/high-res.env @@ -0,0 +1,4 @@ +DISPLAY_HEIGHT=1080 +DISPLAY_WIDTH=1920 +SE_SCREEN_HEIGHT=1080 +SE_SCREEN_WIDTH=1920 diff --git a/low-res.env b/low-res.env new file mode 100644 index 000000000..58f5d6af3 --- /dev/null +++ b/low-res.env @@ -0,0 +1,4 @@ +DISPLAY_HEIGHT=600 +DISPLAY_WIDTH=800 +SE_SCREEN_HEIGHT=600 +SE_SCREEN_WIDTH=800 diff --git a/medium-res.env b/medium-res.env new file mode 100644 index 000000000..c4e7f74e2 --- /dev/null +++ b/medium-res.env @@ -0,0 +1,4 @@ +DISPLAY_HEIGHT=768 +DISPLAY_WIDTH=1366 +SE_SCREEN_HEIGHT=768 +SE_SCREEN_WIDTH=1366 diff --git a/package.json b/package.json index 5159f9937..2bb031e11 100644 --- a/package.json +++ b/package.json @@ -48,22 +48,22 @@ "@cypress/react": "^6.2.0", "@cypress/webpack-dev-server": "^2.3.0", "@drptbl/gremlins.js": "^2.2.1", - "@playwright/test": "^1.25.2", + "@playwright/test": "^1.26.1", "@synthetixio/js": "^2.41.0", "@testing-library/cypress": "^8.0.3", "@testing-library/react": "^13.4.0", "@types/testing-library__cypress": "^5.0.9", - "axios": "^0.27.2", + "axios": "^1.0.0", "babel-plugin-istanbul": "^6.1.1", "babel-plugin-react-generate-property": "^1.1.2", "babel-plugin-react-remove-properties": "^0.3.0", "babel-plugin-transform-react-qa-classes": "^1.6.0", "babel-plugin-transform-react-styled-components-qa": "^2.1.0", "bytes32": "^0.0.3", - "commander": "^9.4.0", - "cypress": "^10.8.0", + "commander": "^9.4.1", + "cypress": "^10.9.0", "cypress-wait-until": "^1.7.2", - "dotenv": "^16.0.2", + "dotenv": "^16.0.3", "dotenv-parse-variables": "^2.0.0", "download": "^8.0.0", "eslint": "^7.32.0", @@ -76,9 +76,9 @@ "eslint-plugin-prettier": "^4.2.1", "eslint-plugin-promise": "^6.0.1", "eslint-plugin-standard": "^4.1.0", - "eslint-plugin-testing-library": "^5.6.4", + "eslint-plugin-testing-library": "^5.7.2", "eslint-plugin-ui-testing": "^2.0.1", - "eslint-plugin-unicorn": "^43.0.2", + "eslint-plugin-unicorn": "^44.0.1", "etherscan-api": "^10.2.0", "find-config": "^1.0.0", "node-fetch": "^2.6.1", @@ -89,8 +89,11 @@ }, "devDependencies": { "@microsoft/eslint-formatter-sarif": "^3.0.0", - "npm-check-updates": "^16.1.2", - "release-it": "^15.4.1" + "npm-check-updates": "^16.3.8", + "release-it": "^15.5.0" + }, + "resolutions": { + "@synthetixio/js/**/underscore": "^1.13.6" }, "engines": { "node": ">=10" diff --git a/pages/metamask/main-page.js b/pages/metamask/main-page.js index bfe3de491..ea27646fa 100644 --- a/pages/metamask/main-page.js +++ b/pages/metamask/main-page.js @@ -9,6 +9,7 @@ const walletOverview = '.wallet-overview'; const popup = { container: '.popover-container', closeButton: '.popover-header__button', + background: '.popover-bg', }; const accountMenu = { diff --git a/start-tests-ci.sh b/start-tests-ci.sh index ce013541b..bdac713be 100755 --- a/start-tests-ci.sh +++ b/start-tests-ci.sh @@ -1,4 +1,5 @@ #!/bin/bash docker-compose -f docker-compose.ci.yml --build --exit-code-from synpress -# todo: is it safe? +# warning: it's not safe to use ngrok if you have secrets set as environmental variables +# (someone could connect to your CI and steal your vars) # docker-compose -f docker-compose.ci.yml --profile ngrok up --build --exit-code-from synpress diff --git a/synpress.config.js b/synpress.config.js index 88f55408c..ffd585084 100644 --- a/synpress.config.js +++ b/synpress.config.js @@ -21,8 +21,8 @@ module.exports = defineConfig({ coverage: false, }, defaultCommandTimeout: process.env.SYNDEBUG ? 9999999 : 30000, - pageLoadTimeout: process.env.SYNDEBUG ? 0 : 9999999, - requestTimeout: process.env.SYNDEBUG ? 0 : 9999999, + pageLoadTimeout: process.env.SYNDEBUG ? 9999999 : 30000, + requestTimeout: process.env.SYNDEBUG ? 9999999 : 30000, e2e: { setupNodeEvents, baseUrl: 'http://localhost:3000', diff --git a/yarn.lock b/yarn.lock index 7a7f59623..18b63d1eb 100644 --- a/yarn.lock +++ b/yarn.lock @@ -151,6 +151,11 @@ resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.18.6.tgz#9c97e30d31b2b8c72a1d08984f2ca9b574d7a076" integrity sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g== +"@babel/helper-validator-identifier@^7.19.1": + version "7.19.1" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz#7eea834cf32901ffdc1a7ee555e2f9c27e249ca2" + integrity sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w== + "@babel/helper-validator-option@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz#bf0d2b5a509b1f336099e4ff36e1a63aa5db4db8" @@ -1171,13 +1176,13 @@ dependencies: "@octokit/openapi-types" "^13.9.0" -"@playwright/test@^1.25.2": - version "1.25.2" - resolved "https://registry.yarnpkg.com/@playwright/test/-/test-1.25.2.tgz#e726cf4844f096315c3954fdb3abf295cede43ba" - integrity sha512-6qPznIR4Fw02OMbqXUPMG6bFFg1hDVNEdihKy0t9K0dmRbus1DyP5Q5XFQhGwEHQkLG5hrSfBuu9CW/foqhQHQ== +"@playwright/test@^1.26.1": + version "1.26.1" + resolved "https://registry.yarnpkg.com/@playwright/test/-/test-1.26.1.tgz#73ada4e70f618bca69ba7509c4ba65b5a41c4b10" + integrity sha512-bNxyZASVt2adSZ9gbD7NCydzcb5JaI0OR9hc7s+nmPeH604gwp0zp17NNpwXY4c8nvuBGQQ9oGDx72LE+cUWvw== dependencies: "@types/node" "*" - playwright-core "1.25.2" + playwright-core "1.26.1" "@pnpm/network.ca-file@^1.0.1": version "1.0.1" @@ -1538,7 +1543,7 @@ resolved "https://registry.yarnpkg.com/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz#4fc33a00c1d0c16987b1a20cf92d20614c55ac35" integrity sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg== -"@types/http-cache-semantics@*": +"@types/http-cache-semantics@*", "@types/http-cache-semantics@^4.0.1": version "4.0.1" resolved "https://registry.yarnpkg.com/@types/http-cache-semantics/-/http-cache-semantics-4.0.1.tgz#0ea7b61496902b95890dc4c3a116b60cb8dae812" integrity sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ== @@ -1661,13 +1666,6 @@ dependencies: responselike "*" -"@types/responselike@^1.0.0": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@types/responselike/-/responselike-1.0.0.tgz#251f4fe7d154d2bad125abe1b429b23afd262e29" - integrity sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA== - dependencies: - "@types/node" "*" - "@types/retry@0.12.0": version "0.12.0" resolved "https://registry.yarnpkg.com/@types/retry/-/retry-0.12.0.tgz#2b35eccfcee7d38cd72ad99232fbd58bffb3c84d" @@ -2485,7 +2483,7 @@ aws4@^1.8.0: resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.11.0.tgz#d61f46d83b2519250e2784daf5b09479a8b41c59" integrity sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA== -axios@0.27.2, axios@^0.27.2: +axios@0.27.2: version "0.27.2" resolved "https://registry.yarnpkg.com/axios/-/axios-0.27.2.tgz#207658cc8621606e586c85db4b41a750e756d972" integrity sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ== @@ -2508,6 +2506,15 @@ axios@^0.21.1: dependencies: follow-redirects "^1.14.0" +axios@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/axios/-/axios-1.0.0.tgz#16ded6096c1d37650db9f6a8d48a2f7c1bb58622" + integrity sha512-SsHsGFN1qNPFT5QhSoSD37SHDfGyLSW5AESmyLk2JeCMHv5g0I9g0Hz/zQHx2KNe0jGXh2q2hAm7OdkXm360CA== + dependencies: + follow-redirects "^1.15.0" + form-data "^4.0.0" + proxy-from-env "^1.1.0" + babel-code-frame@^6.26.0: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b" @@ -3536,6 +3543,24 @@ cacheable-lookup@^6.0.4: resolved "https://registry.yarnpkg.com/cacheable-lookup/-/cacheable-lookup-6.1.0.tgz#0330a543471c61faa4e9035db583aad753b36385" integrity sha512-KJ/Dmo1lDDhmW2XDPMo+9oiy/CeqosPguPCrgcVzKyZrL6pM1gU2GmPY/xo6OQPTUaA/c0kwHuywB4E6nmT9ww== +cacheable-lookup@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/cacheable-lookup/-/cacheable-lookup-7.0.0.tgz#3476a8215d046e5a3202a9209dd13fec1f933a27" + integrity sha512-+qJyx4xiKra8mZrcwhjMRMUhD5NR1R8esPkzIYxX96JiecFoxAXFuz/GpR3+ev4PE1WamHip78wV0vcmPQtp8w== + +cacheable-request@^10.2.1: + version "10.2.1" + resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-10.2.1.tgz#cbc7480bf057fb7bd5bc7520f7e5a43d9c865626" + integrity sha512-3tLJyBjGuXw1s5gpKFSG3iS4kaKT4id04dZi98wzHQp/8cqZNweBnrF9J+rrlvrf4M53OdtDGNctNHFias8BEA== + dependencies: + "@types/http-cache-semantics" "^4.0.1" + get-stream "^6.0.1" + http-cache-semantics "^4.1.0" + keyv "^4.5.0" + mimic-response "^4.0.0" + normalize-url "^7.1.0" + responselike "^3.0.0" + cacheable-request@^2.1.1: version "2.1.4" resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-2.1.4.tgz#0d808801b6342ad33c91df9d0b44dc09b91e5c3d" @@ -3793,11 +3818,16 @@ chownr@^2.0.0: resolved "https://registry.yarnpkg.com/chownr/-/chownr-2.0.0.tgz#15bfbe53d2eab4cf70f18a8cd68ebe5b3cb1dece" integrity sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ== -ci-info@^3.2.0, ci-info@^3.3.2: +ci-info@^3.2.0: version "3.3.2" resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.3.2.tgz#6d2967ffa407466481c6c90b6e16b3098f080128" integrity sha512-xmDt/QIAdeZ9+nfdPsaBCpMvHNLFiLdjj59qjqn+6iPe6YmHGQ35sBnQ8uslRBXFmXkiZQOJRjvQeoGppoTjjg== +ci-info@^3.4.0: + version "3.4.0" + resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.4.0.tgz#b28484fd436cbc267900364f096c9dc185efb251" + integrity sha512-t5QdPT5jq3o262DOQ8zA6E1tlH2upmUc4Hlvrbx1pGYJuiiHl7O7rvVNI+l8HTVhd/q3Qc9vqimkNk5yiXsAug== + cids@^0.7.1: version "0.7.5" resolved "https://registry.yarnpkg.com/cids/-/cids-0.7.5.tgz#60a08138a99bfb69b6be4ceb63bfef7a396b28b2" @@ -4071,10 +4101,10 @@ commander@^8.1.0, commander@^8.3.0: resolved "https://registry.yarnpkg.com/commander/-/commander-8.3.0.tgz#4837ea1b2da67b9c616a67afbb0fafee567bca66" integrity sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww== -commander@^9.4.0: - version "9.4.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-9.4.0.tgz#bc4a40918fefe52e22450c111ecd6b7acce6f11c" - integrity sha512-sRPT+umqkz90UA8M1yqYfnHlZA7fF6nSphDtxeywPZ49ysjxDQybzk13CL+mXekDRG92skbcqCLVovuCusNmFw== +commander@^9.4.1: + version "9.4.1" + resolved "https://registry.yarnpkg.com/commander/-/commander-9.4.1.tgz#d1dd8f2ce6faf93147295c0df13c7c21141cfbdd" + integrity sha512-5EEkTNyHNGFPD2H+c/dXXfQZYa/scCKasxWcXJaWnNJ99pnQN9Vnmqow+p+PlFPE63Q6mThaZws1T+HxfpgtPw== common-tags@^1.8.0: version "1.8.2" @@ -4440,10 +4470,10 @@ cypress@*: untildify "^4.0.0" yauzl "^2.10.0" -cypress@^10.8.0: - version "10.8.0" - resolved "https://registry.yarnpkg.com/cypress/-/cypress-10.8.0.tgz#12a681f2642b6f13d636bab65d5b71abdb1497a5" - integrity sha512-QVse0dnLm018hgti2enKMVZR9qbIO488YGX06nH5j3Dg1isL38DwrBtyrax02CANU6y8F4EJUuyW6HJKw1jsFA== +cypress@^10.9.0: + version "10.9.0" + resolved "https://registry.yarnpkg.com/cypress/-/cypress-10.9.0.tgz#273a61a6304766f9d6423e5ac8d4a9a11ed8b485" + integrity sha512-MjIWrRpc+bQM9U4kSSdATZWZ2hUqHGFEQTF7dfeZRa4MnalMtc88FIE49USWP2ZVtfy5WPBcgfBX+YorFqGElA== dependencies: "@cypress/request" "^2.88.10" "@cypress/xvfb" "^1.2.4" @@ -4932,10 +4962,10 @@ dotenv-parse-variables@^2.0.0: debug "^4.3.1" is-string-and-not-blank "^0.0.2" -dotenv@^16.0.2: - version "16.0.2" - resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.0.2.tgz#0b0f8652c016a3858ef795024508cddc4bffc5bf" - integrity sha512-JvpYKUmzQhYoIFgK2MOnF3bciIZoItIIoryihy0rIA+H4Jy0FmgyKYAHCTN98P5ybGSJcIFbh6QKeJdtZd1qhA== +dotenv@^16.0.3: + version "16.0.3" + resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.0.3.tgz#115aec42bac5053db3c456db30cc243a5a836a07" + integrity sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ== dotignore@~0.1.2: version "0.1.2" @@ -5344,10 +5374,10 @@ eslint-plugin-standard@^4.1.0: resolved "https://registry.yarnpkg.com/eslint-plugin-standard/-/eslint-plugin-standard-4.1.0.tgz#0c3bf3a67e853f8bbbc580fb4945fbf16f41b7c5" integrity sha512-ZL7+QRixjTR6/528YNGyDotyffm5OQst/sGxKDwGb9Uqs4In5Egi4+jbobhqJoyoCM6/7v/1A5fhQ7ScMtDjaQ== -eslint-plugin-testing-library@^5.6.4: - version "5.6.4" - resolved "https://registry.yarnpkg.com/eslint-plugin-testing-library/-/eslint-plugin-testing-library-5.6.4.tgz#9dffd9feafbb08a36240f88156357685b56f0b8a" - integrity sha512-0oW3tC5NNT2WexmJ3848a/utawOymw4ibl3/NkwywndVAz2hT9+ab70imA7ccg3RaScQgMvJT60OL00hpmJvrg== +eslint-plugin-testing-library@^5.7.2: + version "5.7.2" + resolved "https://registry.yarnpkg.com/eslint-plugin-testing-library/-/eslint-plugin-testing-library-5.7.2.tgz#c1b2112a40aab61f93e10859e8b2d81e54f0ce84" + integrity sha512-0ZmHeR/DUUgEzW8rwUBRWxuqntipDtpvxK0hymdHnLlABryJkzd+CAHr+XnISaVsTisZ5MLHp6nQF+8COHLLTA== dependencies: "@typescript-eslint/utils" "^5.13.0" @@ -5358,18 +5388,18 @@ eslint-plugin-ui-testing@^2.0.1: dependencies: "@typescript-eslint/experimental-utils" "^5.3.0" -eslint-plugin-unicorn@^43.0.2: - version "43.0.2" - resolved "https://registry.yarnpkg.com/eslint-plugin-unicorn/-/eslint-plugin-unicorn-43.0.2.tgz#b189d58494c8a0985a4b89dba5dbfde3ad7575a5" - integrity sha512-DtqZ5mf/GMlfWoz1abIjq5jZfaFuHzGBZYIeuJfEoKKGWRHr2JiJR+ea+BF7Wx2N1PPRoT/2fwgiK1NnmNE3Hg== +eslint-plugin-unicorn@^44.0.1: + version "44.0.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-unicorn/-/eslint-plugin-unicorn-44.0.1.tgz#e5171368ffadd9f5d5434342edd1fd39aad817d3" + integrity sha512-ly6Ye9OfgYBCw/FfsdycCzAztcRd+pOA0F6xZwtUsUkgOBjtNR0684xC7u+0RmE3SKr3y7z8MaIWunw36tbZdg== dependencies: - "@babel/helper-validator-identifier" "^7.18.6" - ci-info "^3.3.2" + "@babel/helper-validator-identifier" "^7.19.1" + ci-info "^3.4.0" clean-regexp "^1.0.0" eslint-utils "^3.0.0" esquery "^1.4.0" indent-string "^4.0.0" - is-builtin-module "^3.1.0" + is-builtin-module "^3.2.0" lodash "^4.17.21" pluralize "^8.0.0" read-pkg-up "^7.0.1" @@ -6420,10 +6450,10 @@ figures@^3.2.0: dependencies: escape-string-regexp "^1.0.5" -figures@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/figures/-/figures-4.0.1.tgz#27b26609907bc888b3e3b0ef5403643f80aa2518" - integrity sha512-rElJwkA/xS04Vfg+CaZodpso7VqBknOYbzi6I76hI4X80RUjkSxO2oAyPmGbuXUppywjqndOrQDl817hDnI++w== +figures@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/figures/-/figures-5.0.0.tgz#126cd055052dea699f8a54e8c9450e6ecfc44d5f" + integrity sha512-ej8ksPF4x6e5wvK9yevct0UCXh8TTFlWGVLlgjZuoBH1HwjIfKE/IdL5mq89sFA7zELi1VhKpmtDnrs7zWyeyg== dependencies: escape-string-regexp "^5.0.0" is-unicode-supported "^1.2.0" @@ -6593,6 +6623,11 @@ follow-redirects@^1.0.0, follow-redirects@^1.14.0, follow-redirects@^1.14.9: resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.1.tgz#0ca6a452306c9b276e4d3127483e29575e207ad5" integrity sha512-yLAMQs+k0b2m7cVxpS1VKJVvoz7SS9Td1zss3XRwXj+ZDH00RJgnuLx7E44wx02kQLrdM3aOOy+FpzS7+8OizA== +follow-redirects@^1.15.0: + version "1.15.2" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.2.tgz#b460864144ba63f2681096f274c4e57026da2c13" + integrity sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA== + for-each@^0.3.3, for-each@~0.3.3: version "0.3.3" resolved "https://registry.yarnpkg.com/for-each/-/for-each-0.3.3.tgz#69b447e88a0a5d32c3e7084f3f1710034b21376e" @@ -6613,11 +6648,16 @@ forever-agent@~0.6.1: resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" integrity sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw== -form-data-encoder@^2.0.1, form-data-encoder@^2.1.0: +form-data-encoder@^2.1.0: version "2.1.2" resolved "https://registry.yarnpkg.com/form-data-encoder/-/form-data-encoder-2.1.2.tgz#5996b7c236e8c418d08316055a2235226c5e4061" integrity sha512-FCaIOVTRA9E0siY6FeXid7D5yrCqpsErplUkE2a1BEiKj1BE9z6FbKB4ntDTwC4NVLie9p+4E9nX4mWwEOT05A== +form-data-encoder@^2.1.2: + version "2.1.3" + resolved "https://registry.yarnpkg.com/form-data-encoder/-/form-data-encoder-2.1.3.tgz#682cd821a8423605093992ff895e6b2ed5a9d429" + integrity sha512-KqU0nnPMgIJcCOFTNJFEA8epcseEaoox4XZffTgy8jlI6pL/5EFyR54NRG7CnCJN0biY7q52DO3MH6/sJ/TKlQ== + form-data@4.0.0, form-data@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452" @@ -6917,10 +6957,10 @@ git-up@^7.0.0: is-ssh "^1.4.0" parse-url "^8.1.0" -git-url-parse@13.0.0: - version "13.0.0" - resolved "https://registry.yarnpkg.com/git-url-parse/-/git-url-parse-13.0.0.tgz#9a18d0eaec579fb6379c368aecb09f00b544669c" - integrity sha512-X1kozCqKL82dMrCLi4vie9SHDC+QugKskAMs4VUbIkhURKg5yDwxDmf6Ixg73J+/xVgK5TXKhzn8a94nHJHpnA== +git-url-parse@13.1.0: + version "13.1.0" + resolved "https://registry.yarnpkg.com/git-url-parse/-/git-url-parse-13.1.0.tgz#07e136b5baa08d59fabdf0e33170de425adf07b4" + integrity sha512-5FvPJP/70WkIprlUZ33bm4UAaFdjcLkJLpWft1BeZKqwR0uhhNGoKwlUaPtVb4LxCSQ++erHapRak9kWGj+FCA== dependencies: git-up "^7.0.0" @@ -7039,24 +7079,22 @@ globby@^6.1.0: pify "^2.0.0" pinkie-promise "^2.0.0" -got@12.3.1: - version "12.3.1" - resolved "https://registry.yarnpkg.com/got/-/got-12.3.1.tgz#79d6ebc0cb8358c424165698ddb828be56e74684" - integrity sha512-tS6+JMhBh4iXMSXF6KkIsRxmloPln31QHDlcb6Ec3bzxjjFJFr/8aXdpyuLmVc9I4i2HyBHYw1QU5K1ruUdpkw== +got@12.5.1: + version "12.5.1" + resolved "https://registry.yarnpkg.com/got/-/got-12.5.1.tgz#0796191c61478273f4cdbeb19d358a75a54a008d" + integrity sha512-sD16AK8cCyUoPtKr/NMvLTFFa+T3i3S+zoiuvhq0HP2YiqBZA9AtlBjAdsQBsLBK7slPuvmfE0OxhGi7N5dD4w== dependencies: "@sindresorhus/is" "^5.2.0" "@szmarczak/http-timer" "^5.0.1" - "@types/cacheable-request" "^6.0.2" - "@types/responselike" "^1.0.0" - cacheable-lookup "^6.0.4" - cacheable-request "^7.0.2" + cacheable-lookup "^7.0.0" + cacheable-request "^10.2.1" decompress-response "^6.0.0" - form-data-encoder "^2.0.1" + form-data-encoder "^2.1.2" get-stream "^6.0.1" http2-wrapper "^2.1.10" lowercase-keys "^3.0.0" p-cancelable "^3.0.0" - responselike "^2.0.0" + responselike "^3.0.0" got@9.6.0: version "9.6.0" @@ -7674,17 +7712,17 @@ inquirer-list-search-prompt@^1.0.2: figures "^2.0.0" run-async "^2.3.0" -inquirer@9.1.0: - version "9.1.0" - resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-9.1.0.tgz#446a09abe2e5a18973322bee89b42a6c304f2cd3" - integrity sha512-eukdjrBljg9t55ZnvJjvGi1OyYEzVBFsO/8o5d2MV3mc28u3x4X2kS4eJ/+9U10KiREfPkEBSeCrU/S2G/uRtw== +inquirer@9.1.2: + version "9.1.2" + resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-9.1.2.tgz#37f5486f3de0e38820aad83a1f75c52c747e2f9a" + integrity sha512-Hj2Ml1WpxKJU2npP2Rj0OURGkHV+GtNW2CwFdHDiXlqUBAUrWTcZHxCkFywX/XHzOS7wrG/kExgJFbUkVgyHzg== dependencies: ansi-escapes "^5.0.0" chalk "^5.0.1" cli-cursor "^4.0.0" cli-width "^4.0.0" external-editor "^3.0.3" - figures "^4.0.1" + figures "^5.0.0" lodash "^4.17.21" mute-stream "0.0.8" ora "^6.1.2" @@ -7808,7 +7846,7 @@ is-buffer@^2.0.2: resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.5.tgz#ebc252e400d22ff8d77fa09888821a24a658c191" integrity sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ== -is-builtin-module@^3.1.0: +is-builtin-module@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-3.2.0.tgz#bb0310dfe881f144ca83f30100ceb10cf58835e0" integrity sha512-phDA4oSGt7vl1n5tJvTWooWWAsXLY+2xCnxNqvKhGEzujg+A43wPlPOyDg3C8XQHN+6k/JTQWJ/j0dQh/qr+Hw== @@ -8546,7 +8584,7 @@ keyv@^3.0.0: dependencies: json-buffer "3.0.0" -keyv@^4.0.0: +keyv@^4.0.0, keyv@^4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.0.tgz#dbce9ade79610b6e641a9a65f2f6499ba06b9bc6" integrity sha512-2YvuMsA+jnFGtBareKqgANOEKe1mk3HKiXu2fRmAfyxG0MJAywNhi5ttWA3PMjl4NmpyjZNbFifR2vNjW1znfA== @@ -9100,6 +9138,11 @@ mimic-response@^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== +mimic-response@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-4.0.0.tgz#35468b19e7c75d10f5165ea25e75a5ceea7cf70f" + integrity sha512-e5ISH9xMYU0DzrT+jl8q2ze9D6eWBto+I8CNpe+VI+K2J/F/k3PdkdTdz4wvGVH4NTpo+NRYTVIuMQEMMcsLqg== + min-document@^2.19.0: version "2.19.0" resolved "https://registry.yarnpkg.com/min-document/-/min-document-2.19.0.tgz#7bd282e3f5842ed295bb748cdd9f1ffa2c824685" @@ -9507,6 +9550,11 @@ normalize-url@^6.0.1: resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-6.1.0.tgz#40d0885b535deffe3f3147bec877d05fe4c5668a" integrity sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A== +normalize-url@^7.1.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-7.2.0.tgz#5317f78cff95f5fa1e76cc0b5e33245c43781e11" + integrity sha512-uhXOdZry0L6M2UIo9BTt7FdpBDiAGN/7oItedQwPKh8jh31ZlvC8U9Xl/EJ3aijDHaywXTW3QbZ6LuCocur1YA== + npm-bundled@^1.1.1: version "1.1.2" resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.1.2.tgz#944c78789bd739035b70baa2ca5cc32b8d860bc1" @@ -9521,14 +9569,14 @@ npm-bundled@^2.0.0: dependencies: npm-normalize-package-bin "^2.0.0" -npm-check-updates@^16.1.2: - version "16.1.2" - resolved "https://registry.yarnpkg.com/npm-check-updates/-/npm-check-updates-16.1.2.tgz#855d2ce682ef8148240a01daff6592c095cbab47" - integrity sha512-6ZnDkrGkQQ+tnCeMXIO7sxdTWwXiodzO02sOtyZzj9HbJqAf4qY0wdmTEkG7wBNggwlIksVxgyjCzSejMdv6qg== +npm-check-updates@^16.3.8: + version "16.3.8" + resolved "https://registry.yarnpkg.com/npm-check-updates/-/npm-check-updates-16.3.8.tgz#3f128ce8ca658f6af8f1ebfc8c905168a7996dfe" + integrity sha512-2CUeCWEs+arWQUJH2IEkiZU/Ak2fLBqGkMyM5JDkfnGhz1VHNe3yyGiXD+0JeVmjbXTEpgZ0t6C9VK52atGuAw== dependencies: chalk "^5.0.1" cli-table "^0.3.11" - commander "^9.4.0" + commander "^9.4.1" fast-memoize "^2.5.2" find-up "5.0.0" fp-and-or "^0.1.3" @@ -9551,6 +9599,7 @@ npm-check-updates@^16.1.2: semver-utils "^1.1.4" source-map-support "^0.5.21" spawn-please "^1.0.0" + untildify "^4.0.0" update-notifier "^6.0.2" yaml "^2.1.1" @@ -10361,10 +10410,10 @@ pkg-dir@^4.1.0: dependencies: find-up "^4.0.0" -playwright-core@1.25.2: - version "1.25.2" - resolved "https://registry.yarnpkg.com/playwright-core/-/playwright-core-1.25.2.tgz#ea4baa398a4d45fcdfe48799482b599e3d0f033f" - integrity sha512-0yTbUE9lIddkEpLHL3u8PoCL+pWiZtj5A/j3U7YoNjcmKKDGBnCrgHJMzwd2J5vy6l28q4ki3JIuz7McLHhl1A== +playwright-core@1.26.1: + version "1.26.1" + resolved "https://registry.yarnpkg.com/playwright-core/-/playwright-core-1.26.1.tgz#a162f476488312dcf12638d97685144de6ada512" + integrity sha512-hzFchhhxnEiPc4qVPs9q2ZR+5eKNifY2hQDHtg1HnTTUuphYCBP8ZRb2si+B1TR7BHirgXaPi48LIye5SgrLAA== pluralize@^8.0.0: version "8.0.0" @@ -10580,7 +10629,7 @@ proxy-from-env@1.0.0: resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.0.0.tgz#33c50398f70ea7eb96d21f7b817630a55791c7ee" integrity sha512-F2JHgJQ1iqwnHDcQjVBsq3n/uoaFL+iPW/eAeL7kVxy/2RrWaN4WroKjjvbsoRtv0ftelNyC01bjRhn/bhcf4A== -proxy-from-env@^1.0.0: +proxy-from-env@^1.0.0, proxy-from-env@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2" integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg== @@ -10975,10 +11024,10 @@ relateurl@^0.2.7: resolved "https://registry.yarnpkg.com/relateurl/-/relateurl-0.2.7.tgz#54dbf377e51440aca90a4cd274600d3ff2d888a9" integrity sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog== -release-it@^15.4.1: - version "15.4.1" - resolved "https://registry.yarnpkg.com/release-it/-/release-it-15.4.1.tgz#bf9302124405e57401bd10bd635d9458b30faf15" - integrity sha512-w6adXfE+bN/fdcG1KehgS7gYcTfZLYIPml4jPOUEtYQ6NJyaiCtCF/ks032w1jf6EUgvGgWruRP+2TyyyDDBgA== +release-it@^15.5.0: + version "15.5.0" + resolved "https://registry.yarnpkg.com/release-it/-/release-it-15.5.0.tgz#773c247d4fd5a5e5c8801b02bf1e7e9e536bee27" + integrity sha512-/pQo/PwEXAWRBgVGLE+3IQ3hUoeiDZMGAo/Egin1envCyLyjzrU7+0P2w4iZ1Xv5OxhC2AcaPaN5eY1ql47cBA== dependencies: "@iarna/toml" "2.2.5" "@octokit/rest" "19.0.4" @@ -10987,10 +11036,10 @@ release-it@^15.4.1: cosmiconfig "7.0.1" execa "6.1.0" form-data "4.0.0" - git-url-parse "13.0.0" + git-url-parse "13.1.0" globby "13.1.2" - got "12.3.1" - inquirer "9.1.0" + got "12.5.1" + inquirer "9.1.2" is-ci "3.0.1" lodash "4.17.21" mime-types "2.1.35" @@ -12594,10 +12643,10 @@ unbzip2-stream@^1.0.9: buffer "^5.2.1" through "^2.3.8" -underscore@1.9.1: - version "1.9.1" - resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.9.1.tgz#06dce34a0e68a7babc29b365b8e74b8925203961" - integrity sha512-5/4etnCkd9c8gwgowi5/om/mYO5ajCaOgdzj/oW+0eQV9WxKBDZw5+ycmKmeaTXjInS/W0BzpGLo2xR2aBwZdg== +underscore@1.9.1, underscore@^1.13.6: + version "1.13.6" + resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.13.6.tgz#04786a1f589dc6c09f761fc5f45b89e935136441" + integrity sha512-+A5Sja4HP1M08MaXya7p5LvjuM7K6q/2EaC0+iovj/wOcMsTzMvDFbasi/oSapiwOlt252IqsKqPjCl7huKS0A== unique-filename@^2.0.0: version "2.0.1"