diff --git a/.github/README.md b/.github/README.md index c01c122..455fa25 100644 --- a/.github/README.md +++ b/.github/README.md @@ -19,7 +19,7 @@ Integrate Cypress with alternative cloud services like Currents or Sorry Cypress ## Requirements - Cypress version 10+ -- NodeJS 14.7.0+ +- NodeJS 16+ ## Setup diff --git a/.github/_workflows/e2e-cypress-12-ccy-1.10.yml b/.github/_workflows/e2e-cypress-12-ccy-1.10.yml new file mode 100644 index 0000000..c7abfc0 --- /dev/null +++ b/.github/_workflows/e2e-cypress-12-ccy-1.10.yml @@ -0,0 +1,41 @@ +name: e2e-cypress-12-ccy-1_10 + +on: + push: + +jobs: + e2e-cypress-12-ccy-1_10: + if: "!contains(toJSON(github.event.commits.*.message), '[skip ci]')" + runs-on: ubuntu-latest + env: + DEBUG: currents:* + + strategy: + matrix: + node-version: ["18"] + + steps: + - uses: actions/checkout@v3 + - uses: actions/setup-node@v3 + with: + node-version: ${{ matrix.node-version }} + + - name: Install dependencies + run: npm ci + + - name: Install Cypress 12.17.4 + run: npm install cypress@12.17.4 + + - name: Build + run: npm run build + + - name: Run compatibility tests + working-directory: ./e2e/cypress-12-demo + env: + CURRENTS_API_KEY: ${{ secrets.CURRENTS_API_KEY }} + CURRENTS_RUN_BASE_URL: ${{ secrets.CURRENTS_RUN_BASE_URL }} + CURRENTS_PROJECT_ID: ${{ secrets.CURRENTS_PROJECT_ID }} + CURRENTS_RECORD_KEY: ${{ secrets.CURRENTS_RECORD_KEY }} + + run: > + npm run runtest diff --git a/.github/workflows/e2e-smoke-windows.yaml b/.github/_workflows/e2e-smoke-windows.yaml similarity index 100% rename from .github/workflows/e2e-smoke-windows.yaml rename to .github/_workflows/e2e-smoke-windows.yaml diff --git a/.github/workflows/e2e-cypress-13-ccy-1.10.yml b/.github/workflows/e2e-cypress-13-ccy-1.10.yml new file mode 100644 index 0000000..9b3e3c5 --- /dev/null +++ b/.github/workflows/e2e-cypress-13-ccy-1.10.yml @@ -0,0 +1,41 @@ +name: e2e-cypress-13-ccy-1_10 + +on: + push: + +jobs: + e2e-cypress-13-ccy-1_10: + if: "!contains(toJSON(github.event.commits.*.message), '[skip ci]')" + runs-on: ubuntu-latest + env: + DEBUG: currents:* + + strategy: + matrix: + node-version: ["18"] + + steps: + - uses: actions/checkout@v3 + - uses: actions/setup-node@v3 + with: + node-version: ${{ matrix.node-version }} + + - name: Install dependencies + run: npm ci + + - name: Install Cypress 13 + run: npm install cypress@13 + + - name: Build + run: npm run build + + - name: Run compatibility tests + working-directory: ./e2e/cypress-13-demo + env: + CURRENTS_API_KEY: ${{ secrets.CURRENTS_API_KEY }} + CURRENTS_RUN_BASE_URL: ${{ secrets.CURRENTS_RUN_BASE_URL }} + CURRENTS_PROJECT_ID: ${{ secrets.CURRENTS_PROJECT_ID }} + CURRENTS_RECORD_KEY: ${{ secrets.CURRENTS_RECORD_KEY }} + + run: > + npx jest diff --git a/.github/workflows/e2e-exports.yml b/.github/workflows/e2e-exports.yml index 4ea488a..e5bc1f5 100644 --- a/.github/workflows/e2e-exports.yml +++ b/.github/workflows/e2e-exports.yml @@ -12,7 +12,7 @@ jobs: strategy: matrix: - node-version: ["18", "16", "14"] + node-version: ["20", "18", "16"] steps: - uses: actions/checkout@v3 @@ -21,7 +21,7 @@ jobs: node-version: ${{ matrix.node-version }} - name: Install npm (node14) - run: npm install -g npm@latest + run: npm install -g npm@8.19.4 - name: Install dependencies run: npm ci diff --git a/.husky/pre-commit b/.husky/pre-commit new file mode 100755 index 0000000..1bda9c1 --- /dev/null +++ b/.husky/pre-commit @@ -0,0 +1,4 @@ +#!/usr/bin/env sh +. "$(dirname -- "$0")/_/husky.sh" + +npm run format diff --git a/.vscode/launch.json b/.vscode/launch.json index 7152717..f5875df 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -4,6 +4,22 @@ // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 "version": "0.2.0", "configurations": [ + { + "name": "Launch ", + + "program": "${workspaceFolder}/packages/cypress-cloud/dist/bin/cli.js", + "args": ["--parallel", "--record", "--ci-build-id", "${input:ciBuildId}"], + "request": "launch", + "skipFiles": ["/**"], + "cwd": "${workspaceFolder}/examples/webapp", + "env": { + "NODE_OPTIONS": "--inspect=9229", + "CURRENTS_PROJECT_ID": "mMsaes", + "CURRENTS_RECORD_KEY": "Fgt2j7QCjNedC2zG", + "CURRENTS_API_URL": "http://localhost:1234/" + }, + "type": "node" + }, { "name": "Attach", "port": 9229, @@ -11,5 +27,16 @@ "skipFiles": ["/**"], "type": "node" } + ], + "inputs": [ + { + "id": "ciBuildId", + "type": "command", + "command": "shellCommand.execute", + "args": { + "command": "date +%s", + "cwd": "${workspaceFolder}" + } + } ] } diff --git a/CHANGELOG.md b/CHANGELOG.md index 3c04092..efc5391 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,39 +1,72 @@ +# [1.10.0-beta.5](https://github.com/currents-dev/cypress-cloud/compare/v1.10.0-beta.4...v1.10.0-beta.5) (2023-09-14) +### Bug Fixes -# [1.10.0-beta.0](https://github.com/currents-dev/cypress-cloud/compare/v1.9.3...v1.10.0-beta.0) (2023-08-25) +- pick test:after results explicitly ([67e6a0d](https://github.com/currents-dev/cypress-cloud/commit/67e6a0df78d3cff32d101d1bbe3f119c0766a9af)) + +# [1.10.0-beta.4](https://github.com/currents-dev/cypress-cloud/compare/v1.10.0-beta.3...v1.10.0-beta.4) (2023-09-11) + +### Bug Fixes + +- backfill config ([ed8a777](https://github.com/currents-dev/cypress-cloud/commit/ed8a777f6299f0778eeabe96534b52bcd3472d0f)) +- coverage uploads ([6a26e40](https://github.com/currents-dev/cypress-cloud/commit/6a26e4077cab73f75c64235472e8695ebcf14087)) +# [1.10.0-beta.3](https://github.com/currents-dev/cypress-cloud/compare/v1.10.0-beta.2...v1.10.0-beta.3) (2023-09-08) + +### Bug Fixes + +- issue 179 fixes ([cf8ca5d](https://github.com/currents-dev/cypress-cloud/commit/cf8ca5d5f71b69a6fc7d1098b1bb0b42d27427d2)) + +# [1.10.0-beta.2](https://github.com/currents-dev/cypress-cloud/compare/v1.10.0-beta.1...v1.10.0-beta.2) (2023-09-06) + +### Bug Fixes + +- combine standalone with spec:after results ([0d7b2eb](https://github.com/currents-dev/cypress-cloud/commit/0d7b2eb02ee8aeb0e6ff0627f3afbf0d641bd581)) +- set test id for pending tests ([f37312e](https://github.com/currents-dev/cypress-cloud/commit/f37312e0651954481b1e3fb89552606bea3dde38)) ### Features -* [CSR-213] Support Code Coverage ([#174](https://github.com/currents-dev/cypress-cloud/issues/174)) ([b29d738](https://github.com/currents-dev/cypress-cloud/commit/b29d738f9a5d54e3214dfd05b66fc053aa3194a8)) +- support cypres@13+ ([45fd903](https://github.com/currents-dev/cypress-cloud/commit/45fd9036ad686f7edfcb7859db64ce79692dd429)) -## [1.9.3](https://github.com/currents-dev/cypress-cloud/compare/v1.9.2...v1.9.3) (2023-07-27) +# [1.10.0-beta.1](https://github.com/currents-dev/cypress-cloud/compare/v1.10.0-beta.0...v1.10.0-beta.1) (2023-09-06) +### Bug Fixes + +- combine standalone with spec:after results ([0d7b2eb](https://github.com/currents-dev/cypress-cloud/commit/0d7b2eb02ee8aeb0e6ff0627f3afbf0d641bd581)) + +### Features + +- support cypres@13+ ([45fd903](https://github.com/currents-dev/cypress-cloud/commit/45fd9036ad686f7edfcb7859db64ce79692dd429)) + +# [1.10.0-beta.0](https://github.com/currents-dev/cypress-cloud/compare/v1.9.3...v1.10.0-beta.0) (2023-08-25) + +### Features + +- [CSR-213] Support Code Coverage ([#174](https://github.com/currents-dev/cypress-cloud/issues/174)) ([b29d738](https://github.com/currents-dev/cypress-cloud/commit/b29d738f9a5d54e3214dfd05b66fc053aa3194a8)) + +## [1.9.3](https://github.com/currents-dev/cypress-cloud/compare/v1.9.2...v1.9.3) (2023-07-27) ### Bug Fixes -* retry on ETIMEDOUT, add network req timeout ([#172](https://github.com/currents-dev/cypress-cloud/issues/172)) ([030ae70](https://github.com/currents-dev/cypress-cloud/commit/030ae7086eeb75397c729a79c8eefb9aa2e61d7a)) +- retry on ETIMEDOUT, add network req timeout ([#172](https://github.com/currents-dev/cypress-cloud/issues/172)) ([030ae70](https://github.com/currents-dev/cypress-cloud/commit/030ae7086eeb75397c729a79c8eefb9aa2e61d7a)) ## [1.9.2](https://github.com/currents-dev/cypress-cloud/compare/v1.9.1...v1.9.2) (2023-07-21) - ### Bug Fixes -* exit with status 1 when no spec files found ([#169](https://github.com/currents-dev/cypress-cloud/issues/169)) ([9c7bfd2](https://github.com/currents-dev/cypress-cloud/commit/9c7bfd2a9bc7201af5ee9178c5b7c92cf224955e)), closes [#165](https://github.com/currents-dev/cypress-cloud/issues/165) +- exit with status 1 when no spec files found ([#169](https://github.com/currents-dev/cypress-cloud/issues/169)) ([9c7bfd2](https://github.com/currents-dev/cypress-cloud/commit/9c7bfd2a9bc7201af5ee9178c5b7c92cf224955e)), closes [#165](https://github.com/currents-dev/cypress-cloud/issues/165) ## [1.9.1](https://github.com/currents-dev/cypress-cloud/compare/v1.9.0...v1.9.1) (2023-07-06) - ### Bug Fixes -* prevent shared execution state ([#157](https://github.com/currents-dev/cypress-cloud/issues/157)) ([48cf247](https://github.com/currents-dev/cypress-cloud/commit/48cf24712a5362f5557d3a689e891d25e1491638)) +- prevent shared execution state ([#157](https://github.com/currents-dev/cypress-cloud/issues/157)) ([48cf247](https://github.com/currents-dev/cypress-cloud/commit/48cf24712a5362f5557d3a689e891d25e1491638)) ## [1.9.1-beta.0](https://github.com/currents-dev/cypress-cloud/compare/v1.9.0...v1.9.1-beta.0) (2023-07-06) - ### Bug Fixes -* prevent shared execution state ([f71ad89](https://github.com/currents-dev/cypress-cloud/commit/f71ad89b02df80d9bf5e9c0da7e4a2c0ad8212dc)) +- prevent shared execution state ([f71ad89](https://github.com/currents-dev/cypress-cloud/commit/f71ad89b02df80d9bf5e9c0da7e4a2c0ad8212dc)) # [1.9.0](https://github.com/currents-dev/cypress-cloud/compare/v1.9.0-beta.0...v1.9.0) (2023-07-04) @@ -330,4 +363,4 @@ - implement generic http client with retries ([a9711bd](https://github.com/currents-dev/cypress-cloud/commit/a9711bde1fbb2cd37dbc8979593159d183bfa866)) - improve setup steps ([9bf16fe](https://github.com/currents-dev/cypress-cloud/commit/9bf16fe5f3773db4aa2f169515303ea6d0973da6)) - separate stdout per spec file ([a9d01c3](https://github.com/currents-dev/cypress-cloud/commit/a9d01c349cbfe140a568a452b0e7163e6d27f2db)) -- setup github actions ([d439f56](https://github.com/currents-dev/cypress-cloud/commit/d439f5660698177087fcc2e7a61c64ea263816f6)) \ No newline at end of file +- setup github actions ([d439f56](https://github.com/currents-dev/cypress-cloud/commit/d439f5660698177087fcc2e7a61c64ea263816f6)) diff --git a/e2e/cypress-12-demo/currents.config.js b/e2e/cypress-12-demo/currents.config.js new file mode 100644 index 0000000..e56c5f5 --- /dev/null +++ b/e2e/cypress-12-demo/currents.config.js @@ -0,0 +1,13 @@ +module.exports = { + e2e: { + batchSize: 4, // how many specs to send in one batch + }, + component: { + batchSize: 5, // how many specs to send in one batch + }, + // eslint-disable-next-line turbo/no-undeclared-env-vars + projectId: !!(process.env.GITHUB_ACTION || process.env.CIRCLE_BRANCH) + ? "Ij0RfK" + : "l4zuz8", + // cloudServiceUrl: "http://localhost:1234", +}; diff --git a/e2e/cypress-12-demo/cypress.config.ts b/e2e/cypress-12-demo/cypress.config.ts new file mode 100644 index 0000000..3aa2391 --- /dev/null +++ b/e2e/cypress-12-demo/cypress.config.ts @@ -0,0 +1,26 @@ +import { defineConfig } from "cypress"; +import currents from "cypress-cloud/plugin"; + +module.exports = defineConfig({ + e2e: { + baseUrl: "https://todomvc.com/examples/vanillajs", + supportFile: "cypress/support/e2e.ts", + specPattern: "cypress/*/**/*.spec.js", + setupNodeEvents(on, config) { + require("@cypress/grep/src/plugin")(config); + // require("cypress-terminal-report/src/installLogsPrinter")(on); + return currents(on, config); + }, + }, + + component: { + specPattern: ["pages/__tests__/*.spec.tsx"], + setupNodeEvents(on, config) { + return currents(on, config); + }, + devServer: { + framework: "next", + bundler: "webpack", + }, + }, +}); diff --git a/e2e/cypress-12-demo/cypress/e2e/a.spec.js b/e2e/cypress-12-demo/cypress/e2e/a.spec.js new file mode 100644 index 0000000..0ba5b60 --- /dev/null +++ b/e2e/cypress-12-demo/cypress/e2e/a.spec.js @@ -0,0 +1,7 @@ +describe('Failing test with 2 attempts', () => { + it('should try 2 times', { + retries: 2, + }, () => { + cy.wrap(false).should('be.true'); + }); +}); diff --git a/e2e/cypress-12-demo/cypress/e2e/b.spec.js b/e2e/cypress-12-demo/cypress/e2e/b.spec.js new file mode 100644 index 0000000..87843a6 --- /dev/null +++ b/e2e/cypress-12-demo/cypress/e2e/b.spec.js @@ -0,0 +1,21 @@ +let attempt = 0; +describe('Failing test with 2 attempts, passed test and flaky test with 2 attempts', () => { + it('should try 2 times', { + retries: 2, + }, () => { + cy.wrap(false).should('be.true'); + }); + + it('should assert that true is true', () => { + cy.wrap(true).should('be.true'); + }); + + it('should fail on the first attempt and pass on the second', { retries: 2 }, () => { + if (attempt === 0) { + attempt++; + cy.wrap(false).should('be.true'); // This will fail on the first attempt + } else { + cy.wrap(true).should('be.true'); // This will pass on the second attempt + } + }); +}); diff --git a/e2e/cypress-12-demo/cypress/e2e/c.spec.js b/e2e/cypress-12-demo/cypress/e2e/c.spec.js new file mode 100644 index 0000000..47486ad --- /dev/null +++ b/e2e/cypress-12-demo/cypress/e2e/c.spec.js @@ -0,0 +1,5 @@ +describe('Ignored test', () => { + it.skip('should be a skipped test', () => { + cy.wrap(false).should('be.true'); + }); +}); diff --git a/e2e/cypress-12-demo/cypress/e2e/d.spec.js b/e2e/cypress-12-demo/cypress/e2e/d.spec.js new file mode 100644 index 0000000..405f45f --- /dev/null +++ b/e2e/cypress-12-demo/cypress/e2e/d.spec.js @@ -0,0 +1,13 @@ +describe('Passed test with screenshot, passed test with no screenshots', () => { + it('should assert and take a screenshot', () => { + // Assert that true is true + cy.wrap(true).should('be.true'); + + // Take a screenshot + cy.screenshot('internal-assert-screenshot'); + }); + + it('should assert that true is true', () => { + cy.wrap(true).should('be.true'); + }); +}); diff --git a/e2e/cypress-12-demo/cypress/e2e/e.spec.js b/e2e/cypress-12-demo/cypress/e2e/e.spec.js new file mode 100644 index 0000000..584060e --- /dev/null +++ b/e2e/cypress-12-demo/cypress/e2e/e.spec.js @@ -0,0 +1,5 @@ +describe('Should throw an error', () => { + it('Should throw an error', () => { + throw new Error("test error") + }); +}); diff --git a/e2e/cypress-12-demo/cypress/support/commands.ts b/e2e/cypress-12-demo/cypress/support/commands.ts new file mode 100644 index 0000000..a8278b3 --- /dev/null +++ b/e2e/cypress-12-demo/cypress/support/commands.ts @@ -0,0 +1,119 @@ +/// +// *********************************************** +// This example commands.ts shows you how to +// create various custom commands and overwrite +// existing commands. +// +// For more comprehensive examples of custom +// commands please read more here: +// https://on.cypress.io/custom-commands +// *********************************************** +// +// +// -- This is a parent command -- +// Cypress.Commands.add('login', (email, password) => { ... }) +// +// +// -- This is a child command -- +// Cypress.Commands.add('drag', { prevSubject: 'element'}, (subject, options) => { ... }) +// +// +// -- This is a dual command -- +// Cypress.Commands.add('dismiss', { prevSubject: 'optional'}, (subject, options) => { ... }) +// +// +// -- This will overwrite an existing command -- +// Cypress.Commands.overwrite('visit', (originalFn, url, options) => { ... }) +// +// declare global { +// namespace Cypress { +// interface Chainable { +// login(email: string, password: string): Chainable +// drag(subject: string, options?: Partial): Chainable +// dismiss(subject: string, options?: Partial): Chainable +// visit(originalFn: CommandOriginalFn, url: string, options: Partial): Chainable +// } +// } +// } + +// *********************************************** +// This example commands.js shows you how to +// create the custom commands: 'createDefaultTodos' +// and 'createTodo'. +// +// The commands.js file is a great place to +// modify existing commands and create custom +// commands for use throughout your tests. +// +// You can read more about custom commands here: +// https://on.cypress.io/commands +// *********************************************** + +Cypress.Commands.add("createDefaultTodos", function () { + let TODO_ITEM_ONE = "buy some cheese"; + let TODO_ITEM_TWO = "feed the cat"; + let TODO_ITEM_THREE = "book a doctors appointment"; + + // begin the command here, which by will display + // as a 'spinning blue state' in the UI to indicate + // the command is running + let cmd = Cypress.log({ + name: "create default todos", + message: [], + consoleProps() { + // we're creating our own custom message here + // which will print out to our browsers console + // whenever we click on this command + return { + "Inserted Todos": [TODO_ITEM_ONE, TODO_ITEM_TWO, TODO_ITEM_THREE], + }; + }, + }); + + // additionally we pass {log: false} to all of our + // sub-commands so none of them will output to + // our command log + + cy.get(".new-todo", { log: false }) + .type(`${TODO_ITEM_ONE}{enter}`, { log: false }) + .type(`${TODO_ITEM_TWO}{enter}`, { log: false }) + .type(`${TODO_ITEM_THREE}{enter}`, { log: false }); + + cy.get(".todo-list li", { log: false }).then(function ($listItems) { + // once we're done inserting each of the todos + // above we want to return the .todo-list li's + // to allow for further chaining and then + // we want to snapshot the state of the DOM + // and end the command so it goes from that + // 'spinning blue state' to the 'finished state' + cmd.set({ $el: $listItems }).snapshot().end(); + }); +}); + +Cypress.Commands.add("createTodo", function (todo) { + let cmd = Cypress.log({ + name: "create todo", + message: todo, + consoleProps() { + return { + "Inserted Todo": todo, + }; + }, + }); + + // create the todo + cy.get(".new-todo", { log: false }).type(`${todo}{enter}`, { log: false }); + + // now go find the actual todo + // in the todo list so we can + // easily alias this in our tests + // and set the $el so its highlighted + cy.get(".todo-list", { log: false }) + .contains("li", todo.trim(), { log: false }) + .then(function ($li) { + // set the $el for the command so + // it highlights when we hover over + // our command + cmd.set({ $el: $li }).snapshot().end(); + }); +}); diff --git a/e2e/cypress-12-demo/cypress/support/component-index.html b/e2e/cypress-12-demo/cypress/support/component-index.html new file mode 100644 index 0000000..3e16e9b --- /dev/null +++ b/e2e/cypress-12-demo/cypress/support/component-index.html @@ -0,0 +1,14 @@ + + + + + + + Components App + +
+ + +
+ + \ No newline at end of file diff --git a/e2e/cypress-12-demo/cypress/support/component.ts b/e2e/cypress-12-demo/cypress/support/component.ts new file mode 100644 index 0000000..e11a5fe --- /dev/null +++ b/e2e/cypress-12-demo/cypress/support/component.ts @@ -0,0 +1,39 @@ +// *********************************************************** +// This example support/component.ts is processed and +// loaded automatically before your test files. +// +// This is a great place to put global configuration and +// behavior that modifies Cypress. +// +// You can change the location of this file or turn off +// automatically serving support files with the +// 'supportFile' configuration option. +// +// You can read more here: +// https://on.cypress.io/configuration +// *********************************************************** + +// Import commands.js using ES2015 syntax: +import "./commands"; + +// Alternatively you can use CommonJS syntax: +// require('./commands') + +import { mount } from "cypress/react18"; + +// Augment the Cypress namespace to include type definitions for +// your custom command. +// Alternatively, can be defined in cypress/support/component.d.ts +// with a at the top of your spec. +declare global { + namespace Cypress { + interface Chainable { + mount: typeof mount; + } + } +} + +Cypress.Commands.add("mount", mount); + +// Example use: +// cy.mount() diff --git a/e2e/cypress-12-demo/cypress/support/e2e.ts b/e2e/cypress-12-demo/cypress/support/e2e.ts new file mode 100644 index 0000000..32bd259 --- /dev/null +++ b/e2e/cypress-12-demo/cypress/support/e2e.ts @@ -0,0 +1,9 @@ +import registerCypressGrep from "@cypress/grep/src/support"; +require("cypress-terminal-report/src/installLogsCollector")(); +require("cypress-cloud/support"); +require("./commands"); + +registerCypressGrep(); +beforeEach(() => { + cy.visit("/"); +}); diff --git a/e2e/cypress-12-demo/data-references/ccy-1.10-cy-12-crapi.json b/e2e/cypress-12-demo/data-references/ccy-1.10-cy-12-crapi.json new file mode 100644 index 0000000..d962d45 --- /dev/null +++ b/e2e/cypress-12-demo/data-references/ccy-1.10-cy-12-crapi.json @@ -0,0 +1 @@ +{"status":"OK","data":{"runId":"c7068a4d0aa7e75a","projectId":"2cI1I5","createdAt":"2023-09-15T04:42:58.900Z","tags":[],"cypressVersion":"13.2.0","cancellation":null,"timeout":{"isTimeout":false},"groups":[{"groupId":"run-compat-test-2023-09-15T04:42:56.383Z","platform":{"osName":"darwin","osVersion":"22.5.0","browserName":"Electron","browserVersion":"114.0.5735.289"},"createdAt":"2023-09-15T04:42:58.900Z","instances":{"overall":5,"claimed":5,"complete":5,"passes":2,"failures":3},"tests":{"overall":8,"passes":4,"failures":3,"pending":1,"skipped":0,"retries":1,"flaky":1}}],"meta":{"ciBuildId":"run-compat-test-2023-09-15T04:42:56.383Z","commit":{"branch":"fix/cypress-13-validation","remoteOrigin":null,"authorEmail":"miguelangarano@gmail.com","authorName":"Miguel Langarano","message":"fix ts errors and added api test property avoided\n","sha":"69128959c66c58eaf08c2eba97aba512665e4064"},"platform":{"osName":"darwin","osVersion":"22.5.0","browserName":"Electron","browserVersion":"114.0.5735.289"}},"specs":[{"groupId":"run-compat-test-2023-09-15T04:42:56.383Z","spec":"cypress/e2e/a.spec.js","instanceId":"GDEKME1tH9E3","claimedAt":"2023-09-15T04:42:59.417Z","completedAt":"2023-09-15T04:43:18.016Z","machineId":"rAA1SgkfccF9","worker":null,"results":{"stats":{"duration":13647,"endedAt":"2023-09-15T04:43:17.333Z","startedAt":"2023-09-15T04:43:03.686Z","failures":1,"passes":0,"pending":0,"skipped":0,"suites":1,"tests":1,"wallClockDuration":13647,"wallClockStartedAt":"2023-09-15T04:43:03.686Z","wallClockEndedAt":"2023-09-15T04:43:17.333Z"},"screenshots":[{"testAttemptIndex":0,"size":350986,"takenAt":"2023-09-15T04:43:08.170Z","dimensions":{"width":2560,"height":1440},"multipart":false,"specName":"a.spec.js","testFailure":true,"scaled":true,"blackout":[],"duration":237,"testId":"r0","screenshotId":"vnGS2oMjM8MyxiCTAgKY_","name":"screenshot","screenshotURL":"https://fs.currents.dev/64af8eee5411be7416b22d5f/UzwapCP45wyg.png?Expires=1695012212&Key-Pair-Id=K1ZNDCCIZ3P4FU&Signature=XHJ425kC7KJGGBrf1oPeuwbaN67ZRRlbkX7F5A4dHBb7EUPD3H9c0aD61dcihxrDEXHB0zcvHahk4Gx2OjspXtcLhqz20hPdFUkmNo2nFBeGL6LZf4zP20qYOcLS4O~27TZoqf1duTg45A-9uIUoivAKL0K0B9zTpC2G9YwXkQOgnM-YLVnijdGVBvSMyNpditJFXV4~T1bnUYpkTWCQ0CkcPwoaM8AuPnEHagUaH~jiW3l91x2zP2hc8xhprsGUGFJvVlOF0uZWJPDd5KCGtEeNs2TIKUONBVRlAZ8qeIQPngZrWqKjjAoRQx8QA-QEh14ohvYDgo0JOOjIKGfxvg__","height":0,"width":0},{"testAttemptIndex":1,"size":360126,"takenAt":"2023-09-15T04:43:12.594Z","dimensions":{"width":2560,"height":1440},"multipart":false,"specName":"a.spec.js","testFailure":true,"scaled":true,"blackout":[],"duration":225,"testId":"r0","screenshotId":"dXYBdNISQiHjGZqZWVaxk","name":"screenshot","screenshotURL":"https://fs.currents.dev/64af8eee5411be7416b22d5f/13pHQ3gvn8VA.png?Expires=1695012212&Key-Pair-Id=K1ZNDCCIZ3P4FU&Signature=eT0htOfMOiyEpQpLMOwH5TEwlELJx6NvIoB4eTza9Vx0DHnTbASA4Zso1abvauTxGJ9lgrapnwAAEVnMUGFDCMbqiY3dIQq9Rcowi8c2BAxioc0gTJ~WH90bxDMmJ18SgHHPB-X1CXzvBHj-s~DjYWxgBRl-BVZ5YjP6JYk6J3qUn62MDsZMD1Fz0nrj4dAUO9IY37tYR3b2JwsKA6P2f90WhpqA-9wqrZw9mIpchSaw1-11OizQfSJqyF85uGdCG4dqKRATcATAJTBIhabkp8zTNo~vWxXZzlPPmuImu4Fy0Vrx1HoGpxS9j6RUaSP5tBx3WmOA8Ss9NUXAEozopA__","height":0,"width":0},{"testAttemptIndex":2,"size":365326,"takenAt":"2023-09-15T04:43:17.068Z","dimensions":{"width":2560,"height":1440},"multipart":false,"specName":"a.spec.js","testFailure":true,"scaled":true,"blackout":[],"duration":202,"testId":"r0","screenshotId":"s0es9NaVjdFd2m-qUbiRw","name":"screenshot","screenshotURL":"https://fs.currents.dev/64af8eee5411be7416b22d5f/ZmJz3VSoqlBH.png?Expires=1695012212&Key-Pair-Id=K1ZNDCCIZ3P4FU&Signature=vJpFgnheJdXc5C8geJyTyQTatvi4V8J6PAeAJqxMepwnkExIdr7eg94-LeD9ZtebdLPFFXQwQo0nOGltWIGHfMMvPm87I7VWXYOMRL6YHstzncITqYD9A2liDqTL42XBnl6fORVMvz8evUjKZBzCgY-6IStWMFxfxUQx4TspuHP14FUuDqp9b~eqMgfiapBw4tx6akwid2fEfhH0nw1KmRUeem96o5DBzfXG5CaUItkbzBfIiXuvLE65B3p-qb5Ev-WHuk8US5nVegjrlmRWLu7VwYA64zB7xnBcF3T2wILIAUzx~p8N84J-lv18IruGe93Hp7lVDVmhqNeLFw55Uw__","height":0,"width":0}],"exception":null,"flaky":0,"videoUrl":null}},{"groupId":"run-compat-test-2023-09-15T04:42:56.383Z","spec":"cypress/e2e/b.spec.js","instanceId":"dZ4sdqqLEFP6","claimedAt":"2023-09-15T04:42:59.617Z","completedAt":"2023-09-15T04:43:41.503Z","machineId":"rAA1SgkfccF9","worker":null,"results":{"stats":{"duration":17835,"endedAt":"2023-09-15T04:43:40.907Z","startedAt":"2023-09-15T04:43:23.072Z","failures":1,"passes":2,"pending":0,"skipped":0,"suites":1,"tests":3,"wallClockDuration":17835,"wallClockStartedAt":"2023-09-15T04:43:23.072Z","wallClockEndedAt":"2023-09-15T04:43:40.907Z"},"screenshots":[{"testAttemptIndex":0,"size":375352,"takenAt":"2023-09-15T04:43:27.360Z","dimensions":{"width":2560,"height":1440},"multipart":false,"specName":"b.spec.js","testFailure":true,"scaled":true,"blackout":[],"duration":198,"testId":"r0","screenshotId":"BCOx8SuU8mWHEsviyOWek","name":"screenshot","screenshotURL":"https://fs.currents.dev/64af8eee5411be7416b22d5f/QIZSLHSauBDB.png?Expires=1695012213&Key-Pair-Id=K1ZNDCCIZ3P4FU&Signature=qoxZPS4DOFXlFHEJKbeALxo47lviebR19nmWOsZqNGltmkPmf2i4w6V0EdUJYmU6d7tpcBc1ZcIzWfgpW4d1ojrrqvGNwHUY2IT4nWBwRjGY5gUwIFtCCNnKZRvNRmLLxG7I8UkGbmn7v1VeOQEYM73wQ7wZXkA2W55E1hZG-aX-fDwt~Tv-5Miv9znLaq3MRVyK08-n1tWUB~RrK-9Of53D4IEykxolKsB~IPn3gTWYeca3CtgfUXvKv3LIwva2pXvu0d~dZPGAAecUhEZ1hsVbX9ToA9BSfHja~1rf1uOy5~okw1f80UKt-3ribDCkXBRW47fb2s6HtkB9iLXwJQ__","height":0,"width":0},{"testAttemptIndex":1,"size":379091,"takenAt":"2023-09-15T04:43:31.689Z","dimensions":{"width":2560,"height":1440},"multipart":false,"specName":"b.spec.js","testFailure":true,"scaled":true,"blackout":[],"duration":188,"testId":"r0","screenshotId":"NJri2iK8OswiMc7p7fTOV","name":"screenshot","screenshotURL":"https://fs.currents.dev/64af8eee5411be7416b22d5f/50gsrtFccmVy.png?Expires=1695012213&Key-Pair-Id=K1ZNDCCIZ3P4FU&Signature=lwURuuK1zJJNAfLWI7u1UAkuVorK-47ktEuh17z7KVz~YYV3ZP-7YTa8FnEYYkZgnWYMxjB0W5vgaNnlBahqTHDkCA6K4f8dUlbHRXSDFUOK1eho76UB-BGwvylRMEyEFNASOR6JXS~vgYjBiee65j3lJQVQC3vvUGEUzSUQQoeX24mTl7NSlw0DCgW87DtrWwXOz9YE1norzoBK8LDuY~AzODqkLC7B20SN8B~x2~N9XmdQw7I~7DWURf0h0G7NLOKo4fSIpHXGutOoTkBkwkhXOz5T~U5uWrHuvhSCpMjDZHAa~oTFM~arkJ524hrbSd6KoezneOvSpQ~8IakXVg__","height":0,"width":0},{"testAttemptIndex":2,"size":379021,"takenAt":"2023-09-15T04:43:36.016Z","dimensions":{"width":2560,"height":1440},"multipart":false,"specName":"b.spec.js","testFailure":true,"scaled":true,"blackout":[],"duration":208,"testId":"r0","screenshotId":"vcDQROd4QCXewBloHZmf8","name":"screenshot","screenshotURL":"https://fs.currents.dev/64af8eee5411be7416b22d5f/LoKkRAUsJCda.png?Expires=1695012213&Key-Pair-Id=K1ZNDCCIZ3P4FU&Signature=UFfFYEigvF63EJvKMU-IngmBqaKJrodBB5AGtTyxtq2flcagl21EUT1H0OP6onY57c93S17WrwvjpV9a-5MuVuXEBeGYh4oC7l930CckUCjPd6oLWN0uCmoDXH6K3S-sQV52WaM7FedrAGKmVtgOrvJAvdb7d1fxNzEAkpNhaedXUhmIemwvGfF~vU6CABXl39~mTVWUuFliIQuRm98ND8koISX1isZYNjCJCXQb0VjO1TM8--ZQ8s1b7CniKrSN1YtFu1QB4jAWm1SaEQc-UVQNZrOl9scwLLpqIkyp~VvNv4Pkjb3CY9nYlxeh-400su4qNiFuVtvjFSasbc8T7w__","height":0,"width":0},{"testAttemptIndex":0,"size":379089,"takenAt":"2023-09-15T04:43:40.495Z","dimensions":{"width":2560,"height":1440},"multipart":false,"specName":"b.spec.js","testFailure":true,"scaled":true,"blackout":[],"duration":197,"testId":"r2","screenshotId":"FHNXQrfGxuZmiygUMdMQZ","name":"screenshot","screenshotURL":"https://fs.currents.dev/64af8eee5411be7416b22d5f/8TUY9mAhsLmc.png?Expires=1695012213&Key-Pair-Id=K1ZNDCCIZ3P4FU&Signature=kBq7aw8~IF8H55Ipp3nUpRpZSVkf~YyWh7SYMD4n~RoXB8P~vGGnb3KPJQITshXFYtaSm5KCnM2f7B3WQfHWN9ha-bEp2MqHE-yMfmc4Y6QzoxSxCd0zHWyLSiqHXTBZWzgpoyh46pPvTqqH6IIbenV-Dd55XPtdmLQY1HBgGTMc3lAI2gL4JlL3w06955t9PH4NWA4oBQx-TDgRNTOkMeixJGYYEgP2h6J8QtrD8Tgw8sPX91A5i2kcETRPSwmu~oBHhm5IhDaoKd8NsJYmebF2Q3WgmCz2mdxEyd~VTRQy5PqgcVUgeRi1S0enyWqZM85X8DE5RVrs0AALIMtJRQ__","height":0,"width":0}],"exception":null,"flaky":1,"videoUrl":null}},{"groupId":"run-compat-test-2023-09-15T04:42:56.383Z","spec":"cypress/e2e/c.spec.js","instanceId":"VT96MmNcsuPy","claimedAt":"2023-09-15T04:42:59.612Z","completedAt":"2023-09-15T04:43:22.263Z","machineId":"rAA1SgkfccF9","worker":null,"results":{"stats":{"duration":47,"endedAt":"2023-09-15T04:43:21.831Z","startedAt":"2023-09-15T04:43:21.784Z","failures":0,"passes":0,"pending":1,"skipped":0,"suites":1,"tests":1,"wallClockDuration":47,"wallClockStartedAt":"2023-09-15T04:43:21.784Z","wallClockEndedAt":"2023-09-15T04:43:21.831Z"},"screenshots":[],"exception":null,"flaky":0,"videoUrl":null}},{"groupId":"run-compat-test-2023-09-15T04:42:56.383Z","spec":"cypress/e2e/d.spec.js","instanceId":"qYf9vWUqdmin","claimedAt":"2023-09-15T04:42:59.516Z","completedAt":"2023-09-15T04:43:21.209Z","machineId":"rAA1SgkfccF9","worker":null,"results":{"stats":{"duration":977,"endedAt":"2023-09-15T04:43:20.767Z","startedAt":"2023-09-15T04:43:19.790Z","failures":0,"passes":2,"pending":0,"skipped":0,"suites":1,"tests":2,"wallClockDuration":977,"wallClockStartedAt":"2023-09-15T04:43:19.790Z","wallClockEndedAt":"2023-09-15T04:43:20.767Z"},"screenshots":[{"testAttemptIndex":0,"size":234575,"takenAt":"2023-09-15T04:43:20.008Z","dimensions":{"width":2000,"height":1320},"multipart":true,"pixelRatio":2,"name":"internal-assert-screenshot","specName":"d.spec.js","scaled":false,"blackout":[],"duration":619,"testId":"r0","screenshotId":"_ylXpqLg2SCzrSWLr-QYn","screenshotURL":"https://fs.currents.dev/64af8eee5411be7416b22d5f/p4rm5jkIxAdz.png?Expires=1695012213&Key-Pair-Id=K1ZNDCCIZ3P4FU&Signature=p-wSFamkGk4TxEAtMtHJvPLT1nF4tpOD8v5AwEYzWSrIwnMVP9NGExzD4Rn5BV51QUTU-bEW1kkd1RMpYTJ69776SvdpUMoMq7ZQl3nX~W7ZRyvCgTwD--c6oBWkvl5O2Im3m6LsfJjYci68y2hSNzBC4InBxqad~hOTJ~rUsf~g4ekV-uZWvWpRNtJYobIEAeLezyTeEZlp-vTnngLC7zoW0XFscOm1H9ge058quwf-QP-johY8k28AWb5DfNoNhxdscMuEGUutnI~Q305l~URcndYdzfXURmWaTyDoiV-88BtITqCfnjuWLw7xfrY~txWumPgWAGnQj~C7HSDY0A__","height":0,"width":0}],"exception":null,"flaky":0,"videoUrl":null}},{"groupId":"run-compat-test-2023-09-15T04:42:56.383Z","spec":"cypress/e2e/e.spec.js","instanceId":"l3ebuCsqoBcS","claimedAt":"2023-09-15T04:42:59.474Z","completedAt":"2023-09-15T04:43:19.196Z","machineId":"rAA1SgkfccF9","worker":null,"results":{"stats":{"duration":472,"endedAt":"2023-09-15T04:43:18.746Z","startedAt":"2023-09-15T04:43:18.274Z","failures":1,"passes":0,"pending":0,"skipped":0,"suites":1,"tests":1,"wallClockDuration":472,"wallClockStartedAt":"2023-09-15T04:43:18.274Z","wallClockEndedAt":"2023-09-15T04:43:18.746Z"},"screenshots":[{"testAttemptIndex":0,"size":334685,"takenAt":"2023-09-15T04:43:18.468Z","dimensions":{"width":2560,"height":1440},"multipart":false,"specName":"e.spec.js","testFailure":true,"scaled":true,"blackout":[],"duration":217,"testId":"r0","screenshotId":"YQhwotG1lRQB9xZigtQEi","name":"screenshot","screenshotURL":"https://fs.currents.dev/64af8eee5411be7416b22d5f/69rug4bWWUTW.png?Expires=1695012213&Key-Pair-Id=K1ZNDCCIZ3P4FU&Signature=ViphqdJdVNHSubmdWTM3dUdZYWpBtNdekyS~XT32au2KX68~1ZuU6GFm6D4~TMJ1aHTMNT4N65n~L1A8uCNkp1iJ46zd67F5m002I~xCOQrU~kpcI54-DwWQ9TD2Ga6DxN3OGliGEmp2vOKwn6S73TLF2qJ~-VuODx9nD4gKc2uLI9OyN~1NGkP2fZ4RNOe4UFcT-a4P7pu2WKKM1bpfdMpMmEpTDl7FWgc99jOz5QutOsgC2mKZ~ZyXBtHMXpMZJGZbaxEuD56~HiTKQvGuMJrOvYj-XB14umbx4Uvt2E0onZQKbQr3p5fzPksATstKktO9RbtH8naijwe84IWtxQ__","height":0,"width":0}],"exception":null,"flaky":0,"videoUrl":null}}],"completionState":"COMPLETE","status":"FAILED"}} \ No newline at end of file diff --git a/e2e/cypress-12-demo/data-references/ccy-1.10-cy-12-cycl.json b/e2e/cypress-12-demo/data-references/ccy-1.10-cy-12-cycl.json new file mode 100644 index 0000000..985d5db --- /dev/null +++ b/e2e/cypress-12-demo/data-references/ccy-1.10-cy-12-cycl.json @@ -0,0 +1 @@ +{"totalDuration":32978,"totalSuites":5,"totalPending":1,"totalFailed":3,"totalSkipped":0,"totalPassed":4,"totalTests":8,"runs":[{"stats":{"duration":13647,"endedAt":"2023-09-15T04:43:17.333Z","startedAt":"2023-09-15T04:43:03.686Z","failures":1,"passes":0,"pending":0,"skipped":0,"suites":1,"tests":1},"reporter":"spec","reporterStats":{"suites":1,"tests":1,"passes":0,"pending":0,"failures":1,"start":"2023-09-15T04:43:03.690Z","end":"2023-09-15T04:43:17.336Z","duration":13646},"spec":{"absolute":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/e2e/a.spec.js","fileExtension":".js","fileName":"a","name":"cypress/e2e/a.spec.js","relative":"cypress/e2e/a.spec.js","baseName":"a.spec.js","specFileExtension":".spec.js","relativeToCommonRoot":"a.spec.js","specType":"integration"},"error":null,"video":null,"shouldUploadVideo":true,"hooks":[],"tests":[{"attempts":[{"state":"failed","error":{"name":"AssertionError","message":"Timed out retrying after 4000ms: expected false to be true","stack":" at Context.eval (webpack://cypress-12-demo/./cypress/e2e/a.spec.js:5:19)","codeFrame":{"line":5,"column":20,"originalFile":"cypress/e2e/a.spec.js","relativeFile":"e2e/cypress-12-demo/cypress/e2e/a.spec.js","absoluteFile":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/e2e/a.spec.js","frame":" 3 | retries: 2,\n 4 | }, () => {\n> 5 | cy.wrap(false).should('be.true');\n | ^\n 6 | });\n 7 | });\n 8 | ","language":"js"}},"timings":{"lifecycle":28,"before each":[{"hookId":"h1","fnDuration":19,"afterFnDuration":1},{"hookId":"h2","fnDuration":416,"afterFnDuration":0}],"test":{"fnDuration":4006,"afterFnDuration":240},"after each":[{"hookId":"h4","fnDuration":19,"afterFnDuration":0}]},"body":"() => {\n cy.wrap(false).should('be.true');\n }","wallClockStartedAt":"2023-09-15T04:43:03.696Z","wallClockDuration":4711,"videoTimestamp":10,"startedAt":"2023-09-15T04:43:03.696Z","duration":4711,"screenshots":[{"testAttemptIndex":0,"size":350986,"takenAt":"2023-09-15T04:43:08.170Z","dimensions":{"width":2560,"height":1440},"multipart":false,"specName":"a.spec.js","testFailure":true,"path":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/screenshots/a.spec.js/Failing test with 2 attempts -- should try 2 times (failed).png","scaled":true,"blackout":[],"duration":237,"testId":"r3","height":1440,"width":2560,"screenshotId":"9zgRMs","name":"screenshot"}]},{"state":"failed","error":{"name":"AssertionError","message":"Timed out retrying after 4000ms: expected false to be true","stack":" at Context.eval (webpack://cypress-12-demo/./cypress/e2e/a.spec.js:5:19)","codeFrame":{"line":5,"column":20,"originalFile":"cypress/e2e/a.spec.js","relativeFile":"e2e/cypress-12-demo/cypress/e2e/a.spec.js","absoluteFile":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/e2e/a.spec.js","frame":" 3 | retries: 2,\n 4 | }, () => {\n> 5 | cy.wrap(false).should('be.true');\n | ^\n 6 | });\n 7 | });\n 8 | ","language":"js"}},"timings":{"lifecycle":37,"before each":[{"hookId":"h1","fnDuration":12,"afterFnDuration":0},{"hookId":"h2","fnDuration":63,"afterFnDuration":0}],"test":{"fnDuration":4004,"afterFnDuration":228},"after each":[{"hookId":"h4","fnDuration":13,"afterFnDuration":0}]},"body":"() => {\n cy.wrap(false).should('be.true');\n }","wallClockStartedAt":"2023-09-15T04:43:08.474Z","wallClockDuration":4347,"videoTimestamp":4788,"startedAt":"2023-09-15T04:43:08.474Z","duration":4347,"screenshots":[{"testAttemptIndex":1,"size":360126,"takenAt":"2023-09-15T04:43:12.594Z","dimensions":{"width":2560,"height":1440},"multipart":false,"specName":"a.spec.js","testFailure":true,"path":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/screenshots/a.spec.js/Failing test with 2 attempts -- should try 2 times (failed) (attempt 2).png","scaled":true,"blackout":[],"duration":225,"testId":"r3","height":1440,"width":2560,"screenshotId":"BTotxf","name":"screenshot"}]},{"state":"failed","error":{"name":"AssertionError","message":"Timed out retrying after 4000ms: expected false to be true","stack":" at Context.eval (webpack://cypress-12-demo/./cypress/e2e/a.spec.js:5:19)","codeFrame":{"line":5,"column":20,"originalFile":"cypress/e2e/a.spec.js","relativeFile":"e2e/cypress-12-demo/cypress/e2e/a.spec.js","absoluteFile":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/e2e/a.spec.js","frame":" 3 | retries: 2,\n 4 | }, () => {\n> 5 | cy.wrap(false).should('be.true');\n | ^\n 6 | });\n 7 | });\n 8 | ","language":"js"}},"timings":{"lifecycle":67,"before each":[{"hookId":"h1","fnDuration":19,"afterFnDuration":0},{"hookId":"h2","fnDuration":100,"afterFnDuration":0}],"test":{"fnDuration":3996,"afterFnDuration":204},"after each":[{"hookId":"h4","fnDuration":13,"afterFnDuration":0}]},"body":"() => {\n cy.wrap(false).should('be.true');\n }","wallClockStartedAt":"2023-09-15T04:43:12.882Z","wallClockDuration":4389,"videoTimestamp":9196,"startedAt":"2023-09-15T04:43:12.882Z","duration":4389,"screenshots":[{"testAttemptIndex":2,"size":365326,"takenAt":"2023-09-15T04:43:17.068Z","dimensions":{"width":2560,"height":1440},"multipart":false,"specName":"a.spec.js","testFailure":true,"path":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/screenshots/a.spec.js/Failing test with 2 attempts -- should try 2 times (failed) (attempt 3).png","scaled":true,"blackout":[],"duration":202,"testId":"r3","height":1440,"width":2560,"screenshotId":"TzFKEy","name":"screenshot"}]}],"displayError":"AssertionError: Timed out retrying after 4000ms: expected false to be true\n at Context.eval (webpack://cypress-12-demo/./cypress/e2e/a.spec.js:5:19)","duration":13587,"state":"failed","title":["Failing test with 2 attempts","should try 2 times"],"testId":"r3","body":"() => {\n cy.wrap(false).should('be.true');\n }"}]},{"stats":{"duration":472,"endedAt":"2023-09-15T04:43:18.746Z","startedAt":"2023-09-15T04:43:18.274Z","failures":1,"passes":0,"pending":0,"skipped":0,"suites":1,"tests":1},"reporter":"spec","reporterStats":{"suites":1,"tests":1,"passes":0,"pending":0,"failures":1,"start":"2023-09-15T04:43:18.277Z","end":"2023-09-15T04:43:18.748Z","duration":471},"spec":{"absolute":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/e2e/e.spec.js","fileExtension":".js","fileName":"e","name":"cypress/e2e/e.spec.js","relative":"cypress/e2e/e.spec.js","baseName":"e.spec.js","specFileExtension":".spec.js","relativeToCommonRoot":"e.spec.js","specType":"integration"},"error":null,"video":null,"shouldUploadVideo":true,"hooks":[],"tests":[{"attempts":[{"state":"failed","error":{"name":"Error","message":"test error","stack":" at Context.eval (webpack://cypress-12-demo/./cypress/e2e/e.spec.js:3:10)","codeFrame":{"line":3,"column":11,"originalFile":"cypress/e2e/e.spec.js","relativeFile":"e2e/cypress-12-demo/cypress/e2e/e.spec.js","absoluteFile":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/e2e/e.spec.js","frame":" 1 | describe('Should throw an error', () => {\n 2 | it('Should throw an error', () => {\n> 3 | throw new Error(\"test error\")\n | ^\n 4 | });\n 5 | });\n 6 | ","language":"js"}},"timings":{"lifecycle":29,"before each":[{"hookId":"h1","fnDuration":10,"afterFnDuration":1},{"hookId":"h2","fnDuration":146,"afterFnDuration":0}],"test":{"fnDuration":1,"afterFnDuration":219},"after each":[{"hookId":"h4","fnDuration":14,"afterFnDuration":0}]},"body":"() => {\n throw new Error(\"test error\");\n }","wallClockStartedAt":"2023-09-15T04:43:18.277Z","wallClockDuration":408,"videoTimestamp":3,"startedAt":"2023-09-15T04:43:18.277Z","duration":408,"screenshots":[{"testAttemptIndex":0,"size":334685,"takenAt":"2023-09-15T04:43:18.468Z","dimensions":{"width":2560,"height":1440},"multipart":false,"specName":"e.spec.js","testFailure":true,"path":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/screenshots/e.spec.js/Should throw an error -- Should throw an error (failed).png","scaled":true,"blackout":[],"duration":217,"testId":"r3","height":1440,"width":2560,"screenshotId":"k4ANEo","name":"screenshot"}]}],"displayError":"Error: test error\n at Context.eval (webpack://cypress-12-demo/./cypress/e2e/e.spec.js:3:10)","duration":456,"state":"failed","title":["Should throw an error","Should throw an error"],"testId":"r3","body":"() => {\n throw new Error(\"test error\");\n }"}]},{"stats":{"duration":977,"endedAt":"2023-09-15T04:43:20.767Z","startedAt":"2023-09-15T04:43:19.790Z","failures":0,"passes":2,"pending":0,"skipped":0,"suites":1,"tests":2},"reporter":"spec","reporterStats":{"suites":1,"tests":2,"passes":2,"pending":0,"failures":0,"start":"2023-09-15T04:43:19.794Z","end":"2023-09-15T04:43:20.769Z","duration":975},"spec":{"absolute":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/e2e/d.spec.js","fileExtension":".js","fileName":"d","name":"cypress/e2e/d.spec.js","relative":"cypress/e2e/d.spec.js","baseName":"d.spec.js","specFileExtension":".spec.js","relativeToCommonRoot":"d.spec.js","specType":"integration"},"error":null,"video":null,"shouldUploadVideo":true,"hooks":[],"tests":[{"attempts":[{"state":"passed","error":null,"timings":{"lifecycle":30,"before each":[{"hookId":"h1","fnDuration":11,"afterFnDuration":1},{"hookId":"h2","fnDuration":152,"afterFnDuration":0}],"test":{"fnDuration":626,"afterFnDuration":0},"after each":[{"hookId":"h4","fnDuration":14,"afterFnDuration":0}]},"body":"() => {\n // Assert that true is true\n cy.wrap(true).should('be.true');\n\n // Take a screenshot\n cy.screenshot('internal-assert-screenshot');\n }","wallClockStartedAt":"2023-09-15T04:43:19.799Z","wallClockDuration":821,"videoTimestamp":9,"startedAt":"2023-09-15T04:43:19.799Z","duration":821,"screenshots":[{"testAttemptIndex":0,"size":234575,"takenAt":"2023-09-15T04:43:20.008Z","dimensions":{"width":2000,"height":1320},"multipart":true,"pixelRatio":2,"name":"internal-assert-screenshot","specName":"d.spec.js","path":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/screenshots/d.spec.js/internal-assert-screenshot.png","scaled":false,"blackout":[],"duration":619,"testId":"r3","height":1320,"width":2000,"screenshotId":"SzuczJ"}]}],"displayError":null,"duration":851,"state":"passed","title":["Passed test with screenshot, passed test with no screenshots","should assert and take a screenshot"],"testId":"r3","body":"() => {\n // Assert that true is true\n cy.wrap(true).should('be.true');\n\n // Take a screenshot\n cy.screenshot('internal-assert-screenshot');\n }"},{"attempts":[{"state":"passed","error":null,"timings":{"lifecycle":15,"before each":[{"hookId":"h1","fnDuration":7,"afterFnDuration":0},{"hookId":"h2","fnDuration":47,"afterFnDuration":0}],"test":{"fnDuration":2,"afterFnDuration":0},"after each":[{"hookId":"h4","fnDuration":12,"afterFnDuration":0}]},"body":"() => {\n cy.wrap(true).should('be.true');\n }","wallClockStartedAt":"2023-09-15T04:43:20.658Z","wallClockDuration":74,"videoTimestamp":868,"startedAt":"2023-09-15T04:43:20.658Z","duration":74,"screenshots":[]}],"displayError":null,"duration":108,"state":"passed","title":["Passed test with screenshot, passed test with no screenshots","should assert that true is true"],"testId":"r4","body":"() => {\n cy.wrap(true).should('be.true');\n }"}]},{"stats":{"duration":47,"endedAt":"2023-09-15T04:43:21.831Z","startedAt":"2023-09-15T04:43:21.784Z","failures":0,"passes":0,"pending":1,"skipped":0,"suites":1,"tests":1},"reporter":"spec","reporterStats":{"suites":1,"tests":1,"passes":0,"pending":1,"failures":0,"start":"2023-09-15T04:43:21.787Z","end":"2023-09-15T04:43:21.833Z","duration":46},"spec":{"absolute":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/e2e/c.spec.js","fileExtension":".js","fileName":"c","name":"cypress/e2e/c.spec.js","relative":"cypress/e2e/c.spec.js","baseName":"c.spec.js","specFileExtension":".spec.js","relativeToCommonRoot":"c.spec.js","specType":"integration"},"error":null,"video":null,"shouldUploadVideo":true,"hooks":[],"tests":[{"attempts":[],"displayError":null,"duration":26,"state":"pending","title":["Ignored test","should be a skipped test"],"testId":"r0"}]},{"stats":{"duration":17835,"endedAt":"2023-09-15T04:43:40.907Z","startedAt":"2023-09-15T04:43:23.072Z","failures":1,"passes":2,"pending":0,"skipped":0,"suites":1,"tests":3},"reporter":"spec","reporterStats":{"suites":1,"tests":3,"passes":2,"pending":0,"failures":1,"start":"2023-09-15T04:43:23.076Z","end":"2023-09-15T04:43:40.909Z","duration":17833},"spec":{"absolute":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/e2e/b.spec.js","fileExtension":".js","fileName":"b","name":"cypress/e2e/b.spec.js","relative":"cypress/e2e/b.spec.js","baseName":"b.spec.js","specFileExtension":".spec.js","relativeToCommonRoot":"b.spec.js","specType":"integration"},"error":null,"video":null,"shouldUploadVideo":true,"hooks":[],"tests":[{"attempts":[{"state":"failed","error":{"name":"AssertionError","message":"Timed out retrying after 4000ms: expected false to be true","stack":" at Context.eval (webpack://cypress-12-demo/./cypress/e2e/b.spec.js:6:19)","codeFrame":{"line":6,"column":20,"originalFile":"cypress/e2e/b.spec.js","relativeFile":"e2e/cypress-12-demo/cypress/e2e/b.spec.js","absoluteFile":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/e2e/b.spec.js","frame":" 4 | retries: 2,\n 5 | }, () => {\n> 6 | cy.wrap(false).should('be.true');\n | ^\n 7 | });\n 8 | \n 9 | it('should assert that true is true', () => {","language":"js"}},"timings":{"lifecycle":11,"before each":[{"hookId":"h1","fnDuration":12,"afterFnDuration":1},{"hookId":"h2","fnDuration":256,"afterFnDuration":0}],"test":{"fnDuration":3995,"afterFnDuration":200},"after each":[{"hookId":"h4","fnDuration":12,"afterFnDuration":0}]},"body":"() => {\n cy.wrap(false).should('be.true');\n }","wallClockStartedAt":"2023-09-15T04:43:23.081Z","wallClockDuration":4477,"videoTimestamp":9,"startedAt":"2023-09-15T04:43:23.081Z","duration":4477,"screenshots":[{"testAttemptIndex":0,"size":375352,"takenAt":"2023-09-15T04:43:27.360Z","dimensions":{"width":2560,"height":1440},"multipart":false,"specName":"b.spec.js","testFailure":true,"path":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/screenshots/b.spec.js/Failing test with 2 attempts, passed test and flaky test with 2 attempts -- should try 2 times (failed).png","scaled":true,"blackout":[],"duration":198,"testId":"r3","height":1440,"width":2560,"screenshotId":"0BmA9u","name":"screenshot"}]},{"state":"failed","error":{"name":"AssertionError","message":"Timed out retrying after 4000ms: expected false to be true","stack":" at Context.eval (webpack://cypress-12-demo/./cypress/e2e/b.spec.js:6:19)","codeFrame":{"line":6,"column":20,"originalFile":"cypress/e2e/b.spec.js","relativeFile":"e2e/cypress-12-demo/cypress/e2e/b.spec.js","absoluteFile":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/e2e/b.spec.js","frame":" 4 | retries: 2,\n 5 | }, () => {\n> 6 | cy.wrap(false).should('be.true');\n | ^\n 7 | });\n 8 | \n 9 | it('should assert that true is true', () => {","language":"js"}},"timings":{"lifecycle":17,"before each":[{"hookId":"h1","fnDuration":9,"afterFnDuration":0},{"hookId":"h2","fnDuration":49,"afterFnDuration":0}],"test":{"fnDuration":3995,"afterFnDuration":197},"after each":[{"hookId":"h4","fnDuration":14,"afterFnDuration":0}]},"body":"() => {\n cy.wrap(false).should('be.true');\n }","wallClockStartedAt":"2023-09-15T04:43:27.613Z","wallClockDuration":4271,"videoTimestamp":4541,"startedAt":"2023-09-15T04:43:27.613Z","duration":4271,"screenshots":[{"testAttemptIndex":1,"size":379091,"takenAt":"2023-09-15T04:43:31.689Z","dimensions":{"width":2560,"height":1440},"multipart":false,"specName":"b.spec.js","testFailure":true,"path":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/screenshots/b.spec.js/Failing test with 2 attempts, passed test and flaky test with 2 attempts -- should try 2 times (failed) (attempt 2).png","scaled":true,"blackout":[],"duration":188,"testId":"r3","height":1440,"width":2560,"screenshotId":"zS7oOE","name":"screenshot"}]},{"state":"failed","error":{"name":"AssertionError","message":"Timed out retrying after 4000ms: expected false to be true","stack":" at Context.eval (webpack://cypress-12-demo/./cypress/e2e/b.spec.js:6:19)","codeFrame":{"line":6,"column":20,"originalFile":"cypress/e2e/b.spec.js","relativeFile":"e2e/cypress-12-demo/cypress/e2e/b.spec.js","absoluteFile":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/e2e/b.spec.js","frame":" 4 | retries: 2,\n 5 | }, () => {\n> 6 | cy.wrap(false).should('be.true');\n | ^\n 7 | });\n 8 | \n 9 | it('should assert that true is true', () => {","language":"js"}},"timings":{"lifecycle":24,"before each":[{"hookId":"h1","fnDuration":9,"afterFnDuration":0},{"hookId":"h2","fnDuration":53,"afterFnDuration":0}],"test":{"fnDuration":3989,"afterFnDuration":210},"after each":[{"hookId":"h4","fnDuration":12,"afterFnDuration":0}]},"body":"() => {\n cy.wrap(false).should('be.true');\n }","wallClockStartedAt":"2023-09-15T04:43:31.935Z","wallClockDuration":4288,"videoTimestamp":8863,"startedAt":"2023-09-15T04:43:31.935Z","duration":4288,"screenshots":[{"testAttemptIndex":2,"size":379021,"takenAt":"2023-09-15T04:43:36.016Z","dimensions":{"width":2560,"height":1440},"multipart":false,"specName":"b.spec.js","testFailure":true,"path":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/screenshots/b.spec.js/Failing test with 2 attempts, passed test and flaky test with 2 attempts -- should try 2 times (failed) (attempt 3).png","scaled":true,"blackout":[],"duration":208,"testId":"r3","height":1440,"width":2560,"screenshotId":"TyUnDT","name":"screenshot"}]}],"displayError":"AssertionError: Timed out retrying after 4000ms: expected false to be true\n at Context.eval (webpack://cypress-12-demo/./cypress/e2e/b.spec.js:6:19)","duration":13149,"state":"failed","title":["Failing test with 2 attempts, passed test and flaky test with 2 attempts","should try 2 times"],"testId":"r3","body":"() => {\n cy.wrap(false).should('be.true');\n }"},{"attempts":[{"state":"passed","error":null,"timings":{"lifecycle":13,"before each":[{"hookId":"h1","fnDuration":11,"afterFnDuration":0},{"hookId":"h2","fnDuration":81,"afterFnDuration":0}],"test":{"fnDuration":1,"afterFnDuration":0},"after each":[{"hookId":"h4","fnDuration":12,"afterFnDuration":0}]},"body":"() => {\n cy.wrap(true).should('be.true');\n }","wallClockStartedAt":"2023-09-15T04:43:36.276Z","wallClockDuration":109,"videoTimestamp":13204,"startedAt":"2023-09-15T04:43:36.276Z","duration":109,"screenshots":[]}],"displayError":null,"duration":139,"state":"passed","title":["Failing test with 2 attempts, passed test and flaky test with 2 attempts","should assert that true is true"],"testId":"r4","body":"() => {\n cy.wrap(true).should('be.true');\n }"},{"attempts":[{"state":"failed","error":{"name":"AssertionError","message":"Timed out retrying after 4000ms: expected false to be true","stack":" at Context.eval (webpack://cypress-12-demo/./cypress/e2e/b.spec.js:16:21)","codeFrame":{"line":16,"column":22,"originalFile":"cypress/e2e/b.spec.js","relativeFile":"e2e/cypress-12-demo/cypress/e2e/b.spec.js","absoluteFile":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/e2e/b.spec.js","frame":" 14 | if (attempt === 0) {\n 15 | attempt++;\n> 16 | cy.wrap(false).should('be.true'); // This will fail on the first attempt\n | ^\n 17 | } else {\n 18 | cy.wrap(true).should('be.true'); // This will pass on the second attempt\n 19 | }","language":"js"}},"timings":{"lifecycle":11,"before each":[{"hookId":"h1","fnDuration":8,"afterFnDuration":0},{"hookId":"h2","fnDuration":52,"afterFnDuration":0}],"test":{"fnDuration":4003,"afterFnDuration":200},"after each":[{"hookId":"h4","fnDuration":12,"afterFnDuration":0}]},"body":"() => {\n if (attempt === 0) {\n attempt++;\n cy.wrap(false).should('be.true'); // This will fail on the first attempt\n } else {\n cy.wrap(true).should('be.true'); // This will pass on the second attempt\n }\n }","wallClockStartedAt":"2023-09-15T04:43:36.417Z","wallClockDuration":4276,"videoTimestamp":13345,"startedAt":"2023-09-15T04:43:36.417Z","duration":4276,"screenshots":[{"testAttemptIndex":0,"size":379089,"takenAt":"2023-09-15T04:43:40.495Z","dimensions":{"width":2560,"height":1440},"multipart":false,"specName":"b.spec.js","testFailure":true,"path":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/screenshots/b.spec.js/Failing test with 2 attempts, passed test and flaky test with 2 attempts -- should fail on the first attempt and pass on the second (failed).png","scaled":true,"blackout":[],"duration":197,"testId":"r5","height":1440,"width":2560,"screenshotId":"MGLGct","name":"screenshot"}]},{"state":"passed","error":null,"timings":{"lifecycle":17,"before each":[{"hookId":"h1","fnDuration":8,"afterFnDuration":0},{"hookId":"h2","fnDuration":98,"afterFnDuration":0}],"test":{"fnDuration":2,"afterFnDuration":0},"after each":[{"hookId":"h4","fnDuration":12,"afterFnDuration":0}]},"body":"() => {\n if (attempt === 0) {\n attempt++;\n cy.wrap(false).should('be.true'); // This will fail on the first attempt\n } else {\n cy.wrap(true).should('be.true'); // This will pass on the second attempt\n }\n }","wallClockStartedAt":"2023-09-15T04:43:40.738Z","wallClockDuration":127,"videoTimestamp":17666,"startedAt":"2023-09-15T04:43:40.738Z","duration":127,"screenshots":[]}],"displayError":null,"duration":4482,"state":"passed","title":["Failing test with 2 attempts, passed test and flaky test with 2 attempts","should fail on the first attempt and pass on the second"],"testId":"r5","body":"() => {\n if (attempt === 0) {\n attempt++;\n cy.wrap(false).should('be.true'); // This will fail on the first attempt\n } else {\n cy.wrap(true).should('be.true'); // This will pass on the second attempt\n }\n }"}]}],"startedTestsAt":"2023-09-15T04:43:03.686Z","endedTestsAt":"2023-09-15T04:43:40.907Z","config":{"additionalIgnorePattern":[],"animationDistanceThreshold":5,"arch":"arm64","autoOpen":false,"baseUrl":"https://todomvc.com/examples/vanillajs","blockHosts":null,"browsers":[{"name":"chrome","family":"chromium","channel":"stable","displayName":"Chrome","version":"116.0.5845.187","path":"/Applications/Google Chrome.app/Contents/MacOS/Google Chrome","minSupportedVersion":64,"majorVersion":"116"},{"name":"edge","family":"chromium","channel":"stable","displayName":"Edge","version":"116.0.1938.81","path":"/Applications/Microsoft Edge.app/Contents/MacOS/Microsoft Edge","minSupportedVersion":79,"majorVersion":"116"},{"name":"electron","channel":"stable","family":"chromium","displayName":"Electron","version":"114.0.5735.289","path":"","majorVersion":114}],"chromeWebSecurity":true,"clientCertificates":[],"clientRoute":"/__/","configFile":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress.config.ts","cypressBinaryRoot":"/Users/miguelangarano/Library/Caches/Cypress/13.2.0/Cypress.app/Contents/Resources/app","cypressEnv":"production","defaultCommandTimeout":4000,"devServerPublicPathRoute":"/__cypress/src","downloadsFolder":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/downloads","env":{"currents_temp_file":"/var/folders/1l/tzj2dqys6js7w35f8rx2jsq00000gn/T/tmp-20392-GB80vUg8AHgL","currents_debug_enabled":false},"excludeSpecPattern":"*.hot-update.js","execTimeout":60000,"experimentalCspAllowList":false,"experimentalFetchPolyfill":false,"experimentalInteractiveRunEvents":false,"experimentalMemoryManagement":false,"experimentalModifyObstructiveThirdPartyCode":false,"experimentalOriginDependencies":false,"experimentalRunAllSpecs":false,"experimentalSingleTabRunMode":false,"experimentalSkipDomainInjection":null,"experimentalSourceRewriting":false,"experimentalStudio":false,"experimentalWebKitSupport":false,"fileServerFolder":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo","fixturesFolder":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/fixtures","hideCommandLog":false,"hideRunnerUi":false,"hosts":null,"includeShadowDom":false,"isInteractive":true,"isTextTerminal":true,"keystrokeDelay":0,"modifyObstructiveCode":true,"morgan":false,"namespace":"__cypress","numTestsKeptInMemory":0,"pageLoadTimeout":60000,"platform":"darwin","port":null,"projectId":null,"projectName":"cypress-12-demo","projectRoot":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo","protocolEnabled":false,"rawJson":{"e2e":{"baseUrl":"https://todomvc.com/examples/vanillajs","supportFile":"cypress/support/e2e.ts","specPattern":"cypress/*/**/*.spec.js","setupNodeEvents":"[Function setupNodeEvents]"},"component":{"specPattern":["pages/__tests__/*.spec.tsx"],"setupNodeEvents":"[Function setupNodeEvents]","devServer":{"framework":"next","bundler":"webpack"}},"baseUrl":"https://todomvc.com/examples/vanillajs","supportFile":"cypress/support/e2e.ts","specPattern":"cypress/*/**/*.spec.js","setupNodeEvents":"[Function setupNodeEvents]","envFile":{},"projectRoot":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo","projectName":"cypress-12-demo","repoRoot":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13"},"redirectionLimit":20,"repoRoot":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13","report":true,"reporter":"spec","reporterOptions":null,"reporterRoute":"/__cypress/reporter","requestTimeout":5000,"resolved":{"animationDistanceThreshold":{"value":5,"from":"default"},"arch":{"value":"arm64","from":"default"},"baseUrl":{"value":"https://todomvc.com/examples/vanillajs","from":"config"},"blockHosts":{"value":null,"from":"default"},"chromeWebSecurity":{"value":true,"from":"default"},"clientCertificates":{"value":[],"from":"default"},"defaultCommandTimeout":{"value":4000,"from":"default"},"downloadsFolder":{"value":"cypress/downloads","from":"default"},"env":{"currents_temp_file":{"value":"/var/folders/1l/tzj2dqys6js7w35f8rx2jsq00000gn/T/tmp-20392-GB80vUg8AHgL","from":"cli"},"currents_debug_enabled":{"value":false,"from":"cli"}},"execTimeout":{"value":60000,"from":"default"},"experimentalCspAllowList":{"value":false,"from":"default"},"experimentalFetchPolyfill":{"value":false,"from":"default"},"experimentalInteractiveRunEvents":{"value":false,"from":"default"},"experimentalRunAllSpecs":{"value":false,"from":"default"},"experimentalMemoryManagement":{"value":false,"from":"default"},"experimentalModifyObstructiveThirdPartyCode":{"value":false,"from":"default"},"experimentalSkipDomainInjection":{"value":null,"from":"default"},"experimentalOriginDependencies":{"value":false,"from":"default"},"experimentalSourceRewriting":{"value":false,"from":"default"},"experimentalSingleTabRunMode":{"value":false,"from":"default"},"experimentalStudio":{"value":false,"from":"default"},"experimentalWebKitSupport":{"value":false,"from":"default"},"fileServerFolder":{"value":"","from":"default"},"fixturesFolder":{"value":"cypress/fixtures","from":"default"},"excludeSpecPattern":{"value":"*.hot-update.js","from":"default"},"includeShadowDom":{"value":false,"from":"default"},"keystrokeDelay":{"value":0,"from":"default"},"modifyObstructiveCode":{"value":true,"from":"default"},"numTestsKeptInMemory":{"value":0,"from":"config"},"platform":{"value":"darwin","from":"default"},"pageLoadTimeout":{"value":60000,"from":"default"},"port":{"value":null,"from":"default"},"projectId":{"value":null,"from":"default"},"redirectionLimit":{"value":20,"from":"default"},"reporter":{"value":"spec","from":"default"},"reporterOptions":{"value":null,"from":"default"},"requestTimeout":{"value":5000,"from":"default"},"resolvedNodePath":{"value":null,"from":"default"},"resolvedNodeVersion":{"value":null,"from":"default"},"responseTimeout":{"value":30000,"from":"default"},"retries":{"value":{"runMode":0,"openMode":0},"from":"default"},"screenshotOnRunFailure":{"value":true,"from":"default"},"screenshotsFolder":{"value":"cypress/screenshots","from":"default"},"slowTestThreshold":{"value":10000,"from":"default"},"scrollBehavior":{"value":"top","from":"default"},"supportFile":{"value":"cypress/support/e2e.ts","from":"config"},"supportFolder":{"value":false,"from":"default"},"taskTimeout":{"value":60000,"from":"default"},"testIsolation":{"value":true,"from":"default"},"trashAssetsBeforeRuns":{"value":true,"from":"default"},"userAgent":{"value":null,"from":"default"},"video":{"value":false,"from":"default"},"videoCompression":{"value":false,"from":"default"},"videosFolder":{"value":"cypress/videos","from":"default"},"viewportHeight":{"value":660,"from":"default"},"viewportWidth":{"value":1000,"from":"default"},"waitForAnimations":{"value":true,"from":"default"},"watchForFileChanges":{"value":false,"from":"config"},"specPattern":{"value":"cypress/*/**/*.spec.js","from":"config"},"browsers":{"value":[{"name":"chrome","family":"chromium","channel":"stable","displayName":"Chrome","version":"116.0.5845.187","path":"/Applications/Google Chrome.app/Contents/MacOS/Google Chrome","minSupportedVersion":64,"majorVersion":"116"},{"name":"edge","family":"chromium","channel":"stable","displayName":"Edge","version":"116.0.1938.81","path":"/Applications/Microsoft Edge.app/Contents/MacOS/Microsoft Edge","minSupportedVersion":79,"majorVersion":"116"},{"name":"electron","channel":"stable","family":"chromium","displayName":"Electron","version":"114.0.5735.289","path":"","majorVersion":114}],"from":"runtime"},"hosts":{"value":null,"from":"default"},"isInteractive":{"value":true,"from":"default"}},"resolvedNodePath":"/Users/miguelangarano/.nvm/versions/node/v18.14.2/bin/node","resolvedNodeVersion":"18.14.2","responseTimeout":30000,"retries":{"runMode":0,"openMode":0},"screenshotOnRunFailure":true,"screenshotsFolder":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/screenshots","scrollBehavior":"top","setupNodeEvents":"[Function setupNodeEvents]","slowTestThreshold":10000,"socketId":"jynawlw4yn","socketIoCookie":"__socket","socketIoRoute":"/__socket","specPattern":"cypress/*/**/*.spec.js","supportFile":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/support/e2e.ts","supportFolder":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/support","taskTimeout":60000,"testIsolation":true,"trashAssetsBeforeRuns":true,"userAgent":null,"version":"13.2.0","video":false,"videoCompression":false,"videosFolder":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/videos","viewportHeight":660,"viewportWidth":1000,"waitForAnimations":true,"watchForFileChanges":false,"testingType":"e2e","videoUploadOnPasses":false},"status":"finished","runUrl":"https://app.currents.dev/run/c7068a4d0aa7e75a"} \ No newline at end of file diff --git a/e2e/cypress-12-demo/data-references/ccy-1.9.4-cy-12-crapi.json b/e2e/cypress-12-demo/data-references/ccy-1.9.4-cy-12-crapi.json new file mode 100644 index 0000000..f683955 --- /dev/null +++ b/e2e/cypress-12-demo/data-references/ccy-1.9.4-cy-12-crapi.json @@ -0,0 +1 @@ +{"status":"OK","data":{"runId":"20f0e4c7c5f476f1","projectId":"2cI1I5","createdAt":"2023-09-14T20:43:15.258Z","tags":[],"cypressVersion":"12.17.4","cancellation":null,"timeout":{"isTimeout":false},"groups":[{"groupId":"run-compat-test-2023-09-14T20:43:11.518Z","platform":{"osName":"darwin","osVersion":"22.5.0","browserName":"Electron","browserVersion":"106.0.5249.51"},"createdAt":"2023-09-14T20:43:15.258Z","instances":{"overall":5,"claimed":5,"complete":5,"passes":2,"failures":3},"tests":{"overall":8,"passes":4,"failures":3,"pending":1,"skipped":0,"retries":1,"flaky":1}}],"meta":{"ciBuildId":"run-compat-test-2023-09-14T20:43:11.518Z","commit":{"branch":"fix/cypress-13-validation","remoteOrigin":null,"authorEmail":"miguelangarano@gmail.com","authorName":"Miguel Langarano","message":"removed avoidable properties\n","sha":"8025626af881a1e0dad4f05b756da27a85971ee8"},"platform":{"osName":"darwin","osVersion":"22.5.0","browserName":"Electron","browserVersion":"106.0.5249.51"}},"specs":[{"groupId":"run-compat-test-2023-09-14T20:43:11.518Z","spec":"cypress/e2e/a.spec.js","instanceId":"3iKvFYPxto1k","claimedAt":"2023-09-14T20:43:15.677Z","completedAt":"2023-09-14T20:43:35.088Z","machineId":"BP6PPzRBiUb7","worker":null,"results":{"videoUrl":"https://fs.currents.dev/64af8eee5411be7416b22d5f/3iKvFYPxto1k_DvfgkjNRzr2X.mp4?Expires=1694983444&Key-Pair-Id=K1ZNDCCIZ3P4FU&Signature=AKLjpVVSG5Q4DS91JVNogQ59-VjV-p6KtJ-xEfmZgcdTl~pc9DpAK8~JWx~fxYZ3MrbLcXlvdRbaUELfd8CAmfz9Vcgg5SfikapvSwm1y~AKRTLX1SfMaRMtOLdyyKYO4no8Zm1e0PU5WNMAXwYWGze89SqBXgudBG3Fxef7xKRbXtO-5y1vDmHVlU0bitWGGnF-Ht2tUCsT7AJzuB4NQmteUZ~g7xyj5lllilduebHSPJ~gfWmQIyiqDYhC8kNQ0RwR2MM7artBiIbZYWcJAYH~~hCu2nh9mSMNjehget6bq3VxCMPYzLHhVxE268PqZaLwQv8ScL0SWgYWdsVgRQ__","stats":{"duration":13594,"endedAt":"2023-09-14T20:43:33.432Z","startedAt":"2023-09-14T20:43:19.838Z","failures":1,"passes":0,"pending":0,"skipped":0,"suites":1,"tests":1,"wallClockDuration":13594,"wallClockStartedAt":"2023-09-14T20:43:19.838Z","wallClockEndedAt":"2023-09-14T20:43:33.432Z"},"screenshots":[{"screenshotId":"6B9XbAeStMlI1MhXPGbyd","name":"screenshot","testId":"r0","testAttemptIndex":0,"takenAt":"2023-09-14T20:43:24.542Z","screenshotURL":"https://fs.currents.dev/64af8eee5411be7416b22d5f/0diwTa1YrjgD.png?Expires=1694983444&Key-Pair-Id=K1ZNDCCIZ3P4FU&Signature=rTgPO1oXejJJNzG9Fb76dt9hcUah4OZE3WELSRUQN8ZtuCfDgnKO1hQnACjDU6I1gvkeSMCEQgSgnP2dagYjS-Kzj8b~yYvZWJNAdLitCErTEunmnspNybTATsACUHZmratMHlrt5O8tmkTbbsn6Vd-2bkpbbNvcPbW-MLGK1RoEEaERAJDkbRy8j9wj19r-cM-DpOxo4oRMLOJvFBLYcj78Lmi-kiZGmHKw6SIh0qJTZqWIfLNCf2HYyp3TzEYfYgKjRc4wpbCEK2JjAc9a-PCoEdL1Zkwc8b4YIN4cg0V147yRT6uq0JxPXYY3kT12H-qowGoVpWUxzmoJOqnSTw__","height":0,"width":0},{"screenshotId":"x5OhYcWdqGHtemqNFYKQj","name":"screenshot","testId":"r0","testAttemptIndex":1,"takenAt":"2023-09-14T20:43:28.910Z","screenshotURL":"https://fs.currents.dev/64af8eee5411be7416b22d5f/M0K9q1lejcVw.png?Expires=1694983444&Key-Pair-Id=K1ZNDCCIZ3P4FU&Signature=D58cICbgpAKEe06HgfhfCggSQlZJw~9BfDgMtIQW1-Kt-MFCgMWdlPF-lRVrmfVaFgjoDnFMQJpTTPz1SmoyGvh000JZ0IZpjHwH6zv0MAYVK3xiwwbJHGdaa27ec42nJd64DUK9ATOFzrvxzMESxfk4ZUAOOsDv4U9s8lTedKbWfONYc6by6FdeXZYaBCnmSrAkWIyU62N0V-Pywq1qg0SAe5WNmuyU4Fh1UGBrqmeYzNzW6sLXDat-GMf7LgpYqQUah2UFOeibKO5z0f305SIrTLuRkM9NdREf5u-T4ZkmtbnE-Qm8x-gkJ1FESDzUDRTVXnHDuPqhfC5mdF4MJQ__","height":0,"width":0},{"screenshotId":"OyjahMcGhLmNvuQzBRQLf","name":"screenshot","testId":"r0","testAttemptIndex":2,"takenAt":"2023-09-14T20:43:33.216Z","screenshotURL":"https://fs.currents.dev/64af8eee5411be7416b22d5f/eUO7Brgs5hEZ.png?Expires=1694983444&Key-Pair-Id=K1ZNDCCIZ3P4FU&Signature=vCbapGXqZcIQX3yYWWVPr7ZoBgRmqgZnWpy~x3OpTHGD-YPP6g-G6nScdKS~ibmVMHEQrxG~b5pIoRj9iDr4XMsN7ZaUhVh6rPr~L7QGq5rNcjDmDCFujt~JOhi9qoVqMlqJP8gmqQTdhH8yGbKNeK0dLjKIj7GW0CyJbI9srytzTkJWA8izVwwdH8aApsyJkqCOw0tH6k7a2G1Z18RLmpQLZfsEEipkiQcohlJL-AUVIXZWp-DtQHqrBxf5s4gb98Nq4KbkWdEqztqCUxoaCOo7o0rErj2qj2VinVjex7gKtZ42o4tM8iFmQ4ZCKActhx5XouRnrq9UWLgTYuxfmA__","height":0,"width":0}],"exception":null,"flaky":0}},{"groupId":"run-compat-test-2023-09-14T20:43:11.518Z","spec":"cypress/e2e/b.spec.js","instanceId":"xomB3YGJGuR6","claimedAt":"2023-09-14T20:43:15.708Z","completedAt":"2023-09-14T20:44:08.521Z","machineId":"BP6PPzRBiUb7","worker":null,"results":{"videoUrl":"https://fs.currents.dev/64af8eee5411be7416b22d5f/xomB3YGJGuR6_llnpsdbZz7bT.mp4?Expires=1694983444&Key-Pair-Id=K1ZNDCCIZ3P4FU&Signature=QryVZwsL371zMNSy72647oBx76ug2wTbniiIVdj~zKX2roamyL7VOGdlpqWz~-74kjCdsZ7q26AGffl2dXGWdruA27SSSSyER41y-RMXxY7N0ZUn52PvbevpFU3Gna7hxCFtqLH8840L16PFtYlhLDpu5aCdk3a5y-NdG36kvLo5PbAvTNJEyaB5g91MX851Sq~dzA6OOSB-RCmX0~a3Yn7RH5c138V~XKrEl4vCxw7ubjBpZCZbMz9g1GDu~EzMXgKHWbA84KNuY7QMe9CgVcgK~AHNNr5tIeMK3VKFC~EVDdWHMqoOzgDKpiWVelusAXavlJT~B39MwJGWeBI6YA__","stats":{"duration":17937,"endedAt":"2023-09-14T20:44:06.926Z","startedAt":"2023-09-14T20:43:48.989Z","failures":1,"passes":2,"pending":0,"skipped":0,"suites":1,"tests":3,"wallClockDuration":17937,"wallClockStartedAt":"2023-09-14T20:43:48.989Z","wallClockEndedAt":"2023-09-14T20:44:06.926Z"},"screenshots":[{"screenshotId":"57h2WEN48EvSAIIlfTT4E","name":"screenshot","testId":"r0","testAttemptIndex":0,"takenAt":"2023-09-14T20:43:53.234Z","screenshotURL":"https://fs.currents.dev/64af8eee5411be7416b22d5f/gDVpbvKNPM94.png?Expires=1694983444&Key-Pair-Id=K1ZNDCCIZ3P4FU&Signature=DedWmjKu84UyRJSgYO8ylE9U4vjxI-MSRHGcR1sCi2FYB705KWAYMWCtOvS6v0YNzsriKlmnCJHUySPNpGtKAASz3UGPRUM~45acPgea3fU~aeGG6KgnLX6LJFL4wNrShhApxLnt6mCmMPFYLJyvq~qfmqBTsSQ3RKZEEN4aQY8CbbQQObSRpgRtHCWy8RSiPU9YPcs-Ie~AeWronMs93bAi-6JocASTDT0jUkgADeNR8kIH4RU-Y78a8qR8s9cigOhFN26Ni2mbb-ibmPe0SNcKu~1sHfye~ZsuV2VPzmE24Y9zmovqj7Ifuf3QhofzqU2TiHQAcFIz5RAMl9~bSg__","height":0,"width":0},{"screenshotId":"H5FPts6mzITTWnOhhQUdy","name":"screenshot","testId":"r0","testAttemptIndex":1,"takenAt":"2023-09-14T20:43:57.582Z","screenshotURL":"https://fs.currents.dev/64af8eee5411be7416b22d5f/h1mE1S27FJEO.png?Expires=1694983444&Key-Pair-Id=K1ZNDCCIZ3P4FU&Signature=C3j0lSCQW~7ZEbQ0ALcBeQa5Rt0DXqkxTahbYVV0D8rh9ghnJGL1i8p70xPphmaPwEydeUw7-ly2biT~8NMyLoyBfYhCuuxHirrJ~jCvcFw4KUl4ODLfOKX70TLA6ut7aJWfWlK17JtjvL2hWZlgrRn-xS1N0JNBoucsyDEO7Qa9wEB4h7qmg2aHU31ZswvvqD8QHzI4Qt-o9e7rQrom3hvXNBcI21Tq2Gg9jlYiDw62ZogCX24uIYFg68fRBmnF6sTA4pSoVGMfMPhfjhXFEiLZ5J5J1xq0pUlVVppukQL2R8hy8z2RbJSattq9AeWaFEpcwmJKHDffWfvjThPTng__","height":0,"width":0},{"screenshotId":"u5UeY6qNjnicXcEeuDWhw","name":"screenshot","testId":"r0","testAttemptIndex":2,"takenAt":"2023-09-14T20:44:01.919Z","screenshotURL":"https://fs.currents.dev/64af8eee5411be7416b22d5f/WTY8uVckQ4s8.png?Expires=1694983444&Key-Pair-Id=K1ZNDCCIZ3P4FU&Signature=AF6l9fKMurQYWo2OWL5~PL-SmcLEZIAVoY9MaI9dgXhuX-DF-0VNi5zpzdck6cnutGQyoz~ombSoORAjigPDOA0bertnGs~zFRAOxAGZoF2-R30eCN0zfRk5i5bmRALUSnR92CcVhkTXgjZ7ijCIX-lHCDIrKTrDpLsAV3HPbNv3cxhkH8N4Su3zNmIDpfVePrTvkpFj23cmQuJoFg6i6Fpo1ig2CL3LDbyc35wDOqnPO2r8qRPjKRYFEsO7Jh5BFo7rNN1bQZVsW2XeYdQ9JX-JlXZWyb3~yo6Hhjy9rhGgeCtaXAxnyH1G-nC0tXS7TrMTg1uwlY74jLPf1KZ0pw__","height":0,"width":0},{"screenshotId":"fhQVjWRkyv1T36tJvQJtB","name":"screenshot","testId":"r2","testAttemptIndex":0,"takenAt":"2023-09-14T20:44:06.568Z","screenshotURL":"https://fs.currents.dev/64af8eee5411be7416b22d5f/CUKgrCHMfGne.png?Expires=1694983444&Key-Pair-Id=K1ZNDCCIZ3P4FU&Signature=YyLSGmPONcjOzPZZ6rUMSctIgUieHxQYbsFUzR12O647yd02GwXI~62-j90QOoJ85Qd4aHqEpc6nR-ceJ-ft5SRuFDF6J68v1kZ~3OjMdOoZF-YB0gilvUHyXTHQYfsgRmkrRHZU-HwKXnroCBAKmHiifO~xqRC7DrctEuvuPOgrN0Gh6f-NSwwn6jnoDXNxx1AVQBtJB~N1p0WTyURB-fkvRCKSBIkSu2P19YqF3URkWFNyKnwqhqzGuhjQejytUIPmL24NOFFyfJ-rOJ5XskefmaHP1hZ5IBeGHOK0fNt5un5EhhO04K4hQ8llQ7SNbpgQAEi90Xsh~RfXur4EEg__","height":0,"width":0}],"exception":null,"flaky":1}},{"groupId":"run-compat-test-2023-09-14T20:43:11.518Z","spec":"cypress/e2e/c.spec.js","instanceId":"l5QtnbPmSUXI","claimedAt":"2023-09-14T20:43:15.702Z","completedAt":"2023-09-14T20:43:48.386Z","machineId":"BP6PPzRBiUb7","worker":null,"results":{"videoUrl":"https://fs.currents.dev/64af8eee5411be7416b22d5f/l5QtnbPmSUXI_LwiMr6Ob2pM3.mp4?Expires=1694983444&Key-Pair-Id=K1ZNDCCIZ3P4FU&Signature=yi58Q1XzRTq8CAP41bv7Ey46DBgRuYFPAxC4pSuriSDd2v3nLoEUcVtwk7bg3DV1Nb9EHNDMsLbxrNVqUywEi-XyIHunvKtzZA1a96btbX58GyorII3tq3dUYt88k~NamXp34zgTkw7oNHwbRSpZo-EVfXrXNHKjX-VEPvMHMCbHMB8qZ4EwQzzjFyLFnbU7OhZFPdv-8cQP7EWy1zd2lMDsjuDfFHrJu0NulD3eM-KqWxN7EIA3HhDhvjZ56tnQvKgTlbAJRbwS9NBiDuCy8Xz~DQLULwsYBG1cK9gFHGBMDzDJBvvb4jpS77asruGBkBVPSjtI~roMQot9IpzF8A__","stats":{"duration":51,"endedAt":"2023-09-14T20:43:43.988Z","startedAt":"2023-09-14T20:43:43.937Z","failures":0,"passes":0,"pending":1,"skipped":0,"suites":1,"tests":1,"wallClockDuration":51,"wallClockStartedAt":"2023-09-14T20:43:43.937Z","wallClockEndedAt":"2023-09-14T20:43:43.988Z"},"screenshots":[],"exception":null,"flaky":0}},{"groupId":"run-compat-test-2023-09-14T20:43:11.518Z","spec":"cypress/e2e/d.spec.js","instanceId":"fRnjbuOpqpHA","claimedAt":"2023-09-14T20:43:15.696Z","completedAt":"2023-09-14T20:43:43.179Z","machineId":"BP6PPzRBiUb7","worker":null,"results":{"videoUrl":"https://fs.currents.dev/64af8eee5411be7416b22d5f/fRnjbuOpqpHA_C7EkAIj86t0g.mp4?Expires=1694983444&Key-Pair-Id=K1ZNDCCIZ3P4FU&Signature=tIHxALkA97hXn16mzB2o8JW~iQ-HD5hst2Hk2ExHlYa42W7nqX947wF7Rhog84rdqIQZ2paEaJeeyVNNIp6yDhxZ9PjGoIo59~wa-VAg8aPHzAbTlPtI8rH5n5-DqCoOvQ4dSID5yo1-toehcF-fyVpoSB5LZQtj0wt0JXa2FcfZv5zbvJr8PpCn-GPEdtmaKv8WBSV-LwgR4Wp4xlkWYinpS7zlWpY4MgIbYOwu1-N6ApWoZO9xqQK59oDPmUcQq3MOuI4gnMD6eZ6JhBlGG49jrh55qnY41uLaYixkjjz79606omCGCqF5bndIw61kBvcj7UUwOatKq57oAR9-ig__","stats":{"duration":888,"endedAt":"2023-09-14T20:43:41.590Z","startedAt":"2023-09-14T20:43:40.702Z","failures":0,"passes":2,"pending":0,"skipped":0,"suites":1,"tests":2,"wallClockDuration":888,"wallClockStartedAt":"2023-09-14T20:43:40.702Z","wallClockEndedAt":"2023-09-14T20:43:41.590Z"},"screenshots":[{"screenshotId":"ZnujCZSGRIziSR9JyyG5M","name":"internal-assert-screenshot","testId":"r0","testAttemptIndex":0,"takenAt":"2023-09-14T20:43:40.894Z","screenshotURL":"https://fs.currents.dev/64af8eee5411be7416b22d5f/E5colOvcrMZB.png?Expires=1694983444&Key-Pair-Id=K1ZNDCCIZ3P4FU&Signature=UcHTQbfOBNZDzcDh-wfy8CMbHxAI2Trhy0DClcYp3s-zzWGBLJjXng6nr1MPfwhfOjjDRewgw0tLGGkXe91W8cqqICGOsyf0AGyDIRh~Jz2AydVRkAZgr~e4X7~89attkKMuOFiWgUgjQfv8HLcpEOyN2jPD0oG1VhiRV8l1C62qy-1nhGEjRVWeJ8wzXl-XkDtex7-HecJFei8H7RguQ2KG5fedRxxGrEYkYy~d7G4LsRx3dVP9Ym-Xgq~JrOdJZXPZILlw7Y5Suxl42d534K7jKMp45yIbO1ILDLhTSc5Q1b0IdSYtb2Zxvt-RAo13TX1Cmav57lYap3PzrFMLqw__","height":0,"width":0}],"exception":null,"flaky":0}},{"groupId":"run-compat-test-2023-09-14T20:43:11.518Z","spec":"cypress/e2e/e.spec.js","instanceId":"Lrhp5PLz5Zh3","claimedAt":"2023-09-14T20:43:15.689Z","completedAt":"2023-09-14T20:43:39.771Z","machineId":"BP6PPzRBiUb7","worker":null,"results":{"videoUrl":"https://fs.currents.dev/64af8eee5411be7416b22d5f/Lrhp5PLz5Zh3_nSAHETvjMtQi.mp4?Expires=1694983444&Key-Pair-Id=K1ZNDCCIZ3P4FU&Signature=iRNbrzsGCH5qVlE2VmxHXhOdI3naRxsiuc5-WLUQXZqkK6tSfEXb2kH1lrC-XiVJCx8vovtMcujC1PAPjzIuyPdAWPLwG225gqjw2P9pjPM5a9wRvALJET5PNQ9iZaXS1Q5HPGspohJbYatVIDRkZXZecCNoGjx2RO~q3kWYKDJBExmaMQNgxqdOiZOoEhJLAbEbsZz2adZ0GSAmwqSQvoF0VRhTyKQIMaRYAYbhkyJrhzlonVGRx7z2mVnTbcrOK2ItRaa8YPE9TUaF1i57wDeB5uc8xxJRMvMFbFviKCYk~o5Kfu2XsY8TxvGVYI-e~oTScSCrQmIsPup5apacIA__","stats":{"duration":461,"endedAt":"2023-09-14T20:43:38.197Z","startedAt":"2023-09-14T20:43:37.736Z","failures":1,"passes":0,"pending":0,"skipped":0,"suites":1,"tests":1,"wallClockDuration":461,"wallClockStartedAt":"2023-09-14T20:43:37.736Z","wallClockEndedAt":"2023-09-14T20:43:38.197Z"},"screenshots":[{"screenshotId":"-hyobMsIQuVaYL7BmfYKS","name":"screenshot","testId":"r0","testAttemptIndex":0,"takenAt":"2023-09-14T20:43:37.940Z","screenshotURL":"https://fs.currents.dev/64af8eee5411be7416b22d5f/rURm2Cf4i5t0.png?Expires=1694983444&Key-Pair-Id=K1ZNDCCIZ3P4FU&Signature=woM3XbSmNuOcjfcgq~iRJ20EFMuwqoTjqWulf4pnudhW3dWStrZ0MbSFGDfXUcEY7QLPyzJHI84mK2DBB26B7qE3PV7c4li6kuGrJnZK0Y2EffSh78fmF-aVr2M~eGWikEYWOUtBxgLoACsrhj6xDxYayKqqVyEtLWHCjKGxJlkIMcr3FzH3cIQAM1YKfidmcv6gyO-1uL2BY7Um9tzR-0OnOek72XxTEGNvUqjxHMFMo2jJtrri8exAaURVVDx7F4Uwr4fkn1P-gqMHv7r7tdv8sA~2aYaJMDv1C1K-xz7CVh3N~4Gvd-mGcF0M8ZG4uXnRzz3HwFxIVRUaMtJ6~Q__","height":0,"width":0}],"exception":null,"flaky":0}}],"completionState":"COMPLETE","status":"FAILED"}} \ No newline at end of file diff --git a/e2e/cypress-12-demo/data-references/ccy-1.9.4-cy-12-cycl.json b/e2e/cypress-12-demo/data-references/ccy-1.9.4-cy-12-cycl.json new file mode 100644 index 0000000..6be64e4 --- /dev/null +++ b/e2e/cypress-12-demo/data-references/ccy-1.9.4-cy-12-cycl.json @@ -0,0 +1 @@ +{"totalDuration":32931,"totalSuites":5,"totalPending":1,"totalFailed":3,"totalSkipped":0,"totalPassed":4,"totalTests":8,"runs":[{"stats":{"duration":13594,"endedAt":"2023-09-14T20:43:33.432Z","startedAt":"2023-09-14T20:43:19.838Z","failures":1,"passes":0,"pending":0,"skipped":0,"suites":1,"tests":1},"reporter":"spec","reporterStats":{"suites":1,"tests":1,"passes":0,"pending":0,"failures":1,"start":"2023-09-14T20:43:19.839Z","end":"2023-09-14T20:43:33.443Z","duration":13604},"spec":{"fileExtension":".js","baseName":"a.spec.js","fileName":"a","specFileExtension":".spec.js","relativeToCommonRoot":"a.spec.js","specType":"integration","name":"cypress/e2e/a.spec.js","relative":"cypress/e2e/a.spec.js","absolute":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/e2e/a.spec.js"},"error":null,"video":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/videos/a.spec.js.mp4","shouldUploadVideo":true,"hooks":[{"hookId":"h1","hookName":"before each","title":["\"before each\" hook"],"body":"() => {\n const currentTest = cy.state(\"ctx\").currentTest;\n if (currentTest) {\n handleBefore(currentTest);\n }\n}"},{"hookId":"h2","hookName":"before each","title":["\"before each\" hook"],"body":"function () {\n cy.visit(\"/\");\n}"},{"hookId":"h4","hookName":"after each","title":["\"after each\" hook"],"body":"function () {\n self.sendLogsToPrinter(self.collectorState.getCurrentLogStackIndex(), self.collectorState.getCurrentTest());\n }"},{"hookId":"h5","hookName":"after each","title":["\"after each\" hook"],"body":"() => {\n const currentTest = cy.state(\"ctx\").currentTest;\n if (currentTest) {\n handleAfter(currentTest);\n }\n}"},{"hookId":"h3","hookName":"after all","title":["\"after all\" hook"],"body":"function () {\n // Need to wait otherwise some last commands get omitted from logs.\n cy.task(CONSTANTS.TASK_NAME_OUTPUT, null, {log: false});\n }"}],"tests":[{"testId":"r3","title":["Failing test with 2 attempts","should try 2 times"],"state":"failed","body":"() => {\n cy.wrap(false).should('be.true');\n }","displayError":"AssertionError: Timed out retrying after 4000ms: expected false to be true\n at Context.eval (webpack://cypress-12-demo/./cypress/e2e/a.spec.js:5:19)","attempts":[{"state":"failed","error":{"name":"AssertionError","message":"Timed out retrying after 4000ms: expected false to be true","stack":" at Context.eval (webpack://cypress-12-demo/./cypress/e2e/a.spec.js:5:19)","codeFrame":{"line":5,"column":20,"originalFile":"cypress/e2e/a.spec.js","relativeFile":"e2e/cypress-12-demo/cypress/e2e/a.spec.js","absoluteFile":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/e2e/a.spec.js","frame":" 3 | retries: 2,\n 4 | }, () => {\n> 5 | cy.wrap(false).should('be.true');\n | ^\n 6 | });\n 7 | });\n 8 | ","language":"js"}},"timings":{"lifecycle":38,"before each":[{"hookId":"h1","fnDuration":16,"afterFnDuration":0},{"hookId":"h2","fnDuration":626,"afterFnDuration":0}],"test":{"fnDuration":4016,"afterFnDuration":240},"after each":[{"hookId":"h4","fnDuration":17,"afterFnDuration":0},{"hookId":"h5","fnDuration":12,"afterFnDuration":0}]},"failedFromHookId":null,"wallClockStartedAt":"2023-09-14T20:43:19.842Z","wallClockDuration":4967,"videoTimestamp":2208,"startedAt":"2023-09-14T20:43:19.842Z","duration":4967,"screenshots":[{"screenshotId":"1oc0t","name":"screenshot","testId":"r3","testAttemptIndex":0,"takenAt":"2023-09-14T20:43:24.542Z","path":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/screenshots/a.spec.js/Failing test with 2 attempts -- should try 2 times (failed).png","height":1440,"width":2560}]},{"state":"failed","error":{"name":"AssertionError","message":"Timed out retrying after 4000ms: expected false to be true","stack":" at Context.eval (webpack://cypress-12-demo/./cypress/e2e/a.spec.js:5:19)","codeFrame":{"line":5,"column":20,"originalFile":"cypress/e2e/a.spec.js","relativeFile":"e2e/cypress-12-demo/cypress/e2e/a.spec.js","absoluteFile":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/e2e/a.spec.js","frame":" 3 | retries: 2,\n 4 | }, () => {\n> 5 | cy.wrap(false).should('be.true');\n | ^\n 6 | });\n 7 | });\n 8 | ","language":"js"}},"timings":{"lifecycle":23,"before each":[{"hookId":"h1","fnDuration":6,"afterFnDuration":1},{"hookId":"h2","fnDuration":57,"afterFnDuration":0}],"test":{"fnDuration":3994,"afterFnDuration":170},"after each":[{"hookId":"h4","fnDuration":13,"afterFnDuration":0},{"hookId":"h5","fnDuration":13,"afterFnDuration":0}]},"failedFromHookId":null,"wallClockStartedAt":"2023-09-14T20:43:24.827Z","wallClockDuration":4278,"videoTimestamp":7193,"startedAt":"2023-09-14T20:43:24.827Z","duration":4278,"screenshots":[{"screenshotId":"kz6qn","name":"screenshot","testId":"r3","testAttemptIndex":1,"takenAt":"2023-09-14T20:43:28.910Z","path":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/screenshots/a.spec.js/Failing test with 2 attempts -- should try 2 times (failed) (attempt 2).png","height":1440,"width":2560}]},{"state":"failed","error":{"name":"AssertionError","message":"Timed out retrying after 4000ms: expected false to be true","stack":" at Context.eval (webpack://cypress-12-demo/./cypress/e2e/a.spec.js:5:19)","codeFrame":{"line":5,"column":20,"originalFile":"cypress/e2e/a.spec.js","relativeFile":"e2e/cypress-12-demo/cypress/e2e/a.spec.js","absoluteFile":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/e2e/a.spec.js","frame":" 3 | retries: 2,\n 4 | }, () => {\n> 5 | cy.wrap(false).should('be.true');\n | ^\n 6 | });\n 7 | });\n 8 | ","language":"js"}},"timings":{"lifecycle":39,"before each":[{"hookId":"h1","fnDuration":7,"afterFnDuration":0},{"hookId":"h2","fnDuration":47,"afterFnDuration":1}],"test":{"fnDuration":4003,"afterFnDuration":174},"after each":[{"hookId":"h4","fnDuration":13,"afterFnDuration":0},{"hookId":"h5","fnDuration":13,"afterFnDuration":0}],"after all":[{"hookId":"h3","fnDuration":4,"afterFnDuration":0}]},"failedFromHookId":null,"wallClockStartedAt":"2023-09-14T20:43:29.116Z","wallClockDuration":4305,"videoTimestamp":11482,"startedAt":"2023-09-14T20:43:29.116Z","duration":4305,"screenshots":[{"screenshotId":"853th","name":"screenshot","testId":"r3","testAttemptIndex":2,"takenAt":"2023-09-14T20:43:33.216Z","path":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/screenshots/a.spec.js/Failing test with 2 attempts -- should try 2 times (failed) (attempt 3).png","height":1440,"width":2560}]}]}]},{"stats":{"duration":461,"endedAt":"2023-09-14T20:43:38.197Z","startedAt":"2023-09-14T20:43:37.736Z","failures":1,"passes":0,"pending":0,"skipped":0,"suites":1,"tests":1},"reporter":"spec","reporterStats":{"suites":1,"tests":1,"passes":0,"pending":0,"failures":1,"start":"2023-09-14T20:43:37.738Z","end":"2023-09-14T20:43:38.199Z","duration":461},"spec":{"fileExtension":".js","baseName":"e.spec.js","fileName":"e","specFileExtension":".spec.js","relativeToCommonRoot":"e.spec.js","specType":"integration","name":"cypress/e2e/e.spec.js","relative":"cypress/e2e/e.spec.js","absolute":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/e2e/e.spec.js"},"error":null,"video":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/videos/e.spec.js.mp4","shouldUploadVideo":true,"hooks":[{"hookId":"h1","hookName":"before each","title":["\"before each\" hook"],"body":"() => {\n const currentTest = cy.state(\"ctx\").currentTest;\n if (currentTest) {\n handleBefore(currentTest);\n }\n}"},{"hookId":"h2","hookName":"before each","title":["\"before each\" hook"],"body":"function () {\n cy.visit(\"/\");\n}"},{"hookId":"h4","hookName":"after each","title":["\"after each\" hook"],"body":"function () {\n self.sendLogsToPrinter(self.collectorState.getCurrentLogStackIndex(), self.collectorState.getCurrentTest());\n }"},{"hookId":"h5","hookName":"after each","title":["\"after each\" hook"],"body":"() => {\n const currentTest = cy.state(\"ctx\").currentTest;\n if (currentTest) {\n handleAfter(currentTest);\n }\n}"},{"hookId":"h3","hookName":"after all","title":["\"after all\" hook"],"body":"function () {\n // Need to wait otherwise some last commands get omitted from logs.\n cy.task(CONSTANTS.TASK_NAME_OUTPUT, null, {log: false});\n }"}],"tests":[{"testId":"r3","title":["Should throw an error","Should throw an error"],"state":"failed","body":"() => {\n throw new Error(\"test error\");\n }","displayError":"Error: test error\n at Context.eval (webpack://cypress-12-demo/./cypress/e2e/e.spec.js:3:10)","attempts":[{"state":"failed","error":{"name":"Error","message":"test error","stack":" at Context.eval (webpack://cypress-12-demo/./cypress/e2e/e.spec.js:3:10)","codeFrame":{"line":3,"column":11,"originalFile":"cypress/e2e/e.spec.js","relativeFile":"e2e/cypress-12-demo/cypress/e2e/e.spec.js","absoluteFile":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/e2e/e.spec.js","frame":" 1 | describe('Should throw an error', () => {\n 2 | it('Should throw an error', () => {\n> 3 | throw new Error(\"test error\")\n | ^\n 4 | });\n 5 | });\n 6 | ","language":"js"}},"timings":{"lifecycle":41,"before each":[{"hookId":"h1","fnDuration":8,"afterFnDuration":0},{"hookId":"h2","fnDuration":146,"afterFnDuration":0}],"test":{"fnDuration":1,"afterFnDuration":183},"after each":[{"hookId":"h4","fnDuration":12,"afterFnDuration":0},{"hookId":"h5","fnDuration":29,"afterFnDuration":0}],"after all":[{"hookId":"h3","fnDuration":16,"afterFnDuration":0}]},"failedFromHookId":null,"wallClockStartedAt":"2023-09-14T20:43:37.740Z","wallClockDuration":442,"videoTimestamp":880,"startedAt":"2023-09-14T20:43:37.740Z","duration":442,"screenshots":[{"screenshotId":"m0tz7","name":"screenshot","testId":"r3","testAttemptIndex":0,"takenAt":"2023-09-14T20:43:37.940Z","path":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/screenshots/e.spec.js/Should throw an error -- Should throw an error (failed).png","height":1440,"width":2560}]}]}]},{"stats":{"duration":888,"endedAt":"2023-09-14T20:43:41.590Z","startedAt":"2023-09-14T20:43:40.702Z","failures":0,"passes":2,"pending":0,"skipped":0,"suites":1,"tests":2},"reporter":"spec","reporterStats":{"suites":1,"tests":2,"passes":2,"pending":0,"failures":0,"start":"2023-09-14T20:43:40.704Z","end":"2023-09-14T20:43:41.594Z","duration":890},"spec":{"fileExtension":".js","baseName":"d.spec.js","fileName":"d","specFileExtension":".spec.js","relativeToCommonRoot":"d.spec.js","specType":"integration","name":"cypress/e2e/d.spec.js","relative":"cypress/e2e/d.spec.js","absolute":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/e2e/d.spec.js"},"error":null,"video":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/videos/d.spec.js.mp4","shouldUploadVideo":true,"hooks":[{"hookId":"h1","hookName":"before each","title":["\"before each\" hook"],"body":"() => {\n const currentTest = cy.state(\"ctx\").currentTest;\n if (currentTest) {\n handleBefore(currentTest);\n }\n}"},{"hookId":"h2","hookName":"before each","title":["\"before each\" hook"],"body":"function () {\n cy.visit(\"/\");\n}"},{"hookId":"h4","hookName":"after each","title":["\"after each\" hook"],"body":"function () {\n self.sendLogsToPrinter(self.collectorState.getCurrentLogStackIndex(), self.collectorState.getCurrentTest());\n }"},{"hookId":"h5","hookName":"after each","title":["\"after each\" hook"],"body":"() => {\n const currentTest = cy.state(\"ctx\").currentTest;\n if (currentTest) {\n handleAfter(currentTest);\n }\n}"},{"hookId":"h3","hookName":"after all","title":["\"after all\" hook"],"body":"function () {\n // Need to wait otherwise some last commands get omitted from logs.\n cy.task(CONSTANTS.TASK_NAME_OUTPUT, null, {log: false});\n }"}],"tests":[{"testId":"r3","title":["Passed test with screenshot, passed test with no screenshots","should assert and take a screenshot"],"state":"passed","body":"() => {\n // Assert that true is true\n cy.wrap(true).should('be.true');\n\n // Take a screenshot\n cy.screenshot('internal-assert-screenshot');\n }","displayError":null,"attempts":[{"state":"passed","error":null,"timings":{"lifecycle":35,"before each":[{"hookId":"h1","fnDuration":9,"afterFnDuration":0},{"hookId":"h2","fnDuration":127,"afterFnDuration":0}],"test":{"fnDuration":577,"afterFnDuration":0},"after each":[{"hookId":"h4","fnDuration":12,"afterFnDuration":0},{"hookId":"h5","fnDuration":7,"afterFnDuration":0}]},"failedFromHookId":null,"wallClockStartedAt":"2023-09-14T20:43:40.706Z","wallClockDuration":782,"videoTimestamp":904,"startedAt":"2023-09-14T20:43:40.706Z","duration":782,"screenshots":[{"screenshotId":"v1mng","name":"internal-assert-screenshot","testId":"r3","testAttemptIndex":0,"takenAt":"2023-09-14T20:43:40.894Z","path":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/screenshots/d.spec.js/internal-assert-screenshot.png","height":1320,"width":2000}]}]},{"testId":"r4","title":["Passed test with screenshot, passed test with no screenshots","should assert that true is true"],"state":"passed","body":"() => {\n cy.wrap(true).should('be.true');\n }","displayError":null,"attempts":[{"state":"passed","error":null,"timings":{"lifecycle":15,"before each":[{"hookId":"h1","fnDuration":5,"afterFnDuration":0},{"hookId":"h2","fnDuration":52,"afterFnDuration":0}],"test":{"fnDuration":1,"afterFnDuration":0},"after each":[{"hookId":"h4","fnDuration":10,"afterFnDuration":0},{"hookId":"h5","fnDuration":6,"afterFnDuration":0}],"after all":[{"hookId":"h3","fnDuration":4,"afterFnDuration":0}]},"failedFromHookId":null,"wallClockStartedAt":"2023-09-14T20:43:41.490Z","wallClockDuration":100,"videoTimestamp":1688,"startedAt":"2023-09-14T20:43:41.490Z","duration":100,"screenshots":[]}]}]},{"stats":{"duration":51,"endedAt":"2023-09-14T20:43:43.988Z","startedAt":"2023-09-14T20:43:43.937Z","failures":0,"passes":0,"pending":1,"skipped":0,"suites":1,"tests":1},"reporter":"spec","reporterStats":{"suites":1,"tests":1,"passes":0,"pending":1,"failures":0,"start":"2023-09-14T20:43:43.938Z","end":"2023-09-14T20:43:43.991Z","duration":53},"spec":{"fileExtension":".js","baseName":"c.spec.js","fileName":"c","specFileExtension":".spec.js","relativeToCommonRoot":"c.spec.js","specType":"integration","name":"cypress/e2e/c.spec.js","relative":"cypress/e2e/c.spec.js","absolute":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/e2e/c.spec.js"},"error":null,"video":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/videos/c.spec.js.mp4","shouldUploadVideo":true,"hooks":[{"hookId":"h3","hookName":"after all","title":["\"after all\" hook"],"body":"function () {\n // Need to wait otherwise some last commands get omitted from logs.\n cy.task(CONSTANTS.TASK_NAME_OUTPUT, null, {log: false});\n }"}],"tests":[{"testId":"r3","title":["Ignored test","should be a skipped test"],"state":"pending","body":"() => {\n cy.wrap(false).should('be.true');\n }","displayError":null,"attempts":[{"state":"pending","error":null,"timings":{"lifecycle":40,"after all":[{"hookId":"h3","fnDuration":4,"afterFnDuration":0}]},"failedFromHookId":null,"wallClockStartedAt":"2023-09-14T20:43:43.942Z","wallClockDuration":45,"videoTimestamp":872,"startedAt":"2023-09-14T20:43:43.942Z","duration":45,"screenshots":[]}]}]},{"stats":{"duration":17937,"endedAt":"2023-09-14T20:44:06.926Z","startedAt":"2023-09-14T20:43:48.989Z","failures":1,"passes":2,"pending":0,"skipped":0,"suites":1,"tests":3},"reporter":"spec","reporterStats":{"suites":1,"tests":3,"passes":2,"pending":0,"failures":1,"start":"2023-09-14T20:43:48.991Z","end":"2023-09-14T20:44:06.935Z","duration":17944},"spec":{"fileExtension":".js","baseName":"b.spec.js","fileName":"b","specFileExtension":".spec.js","relativeToCommonRoot":"b.spec.js","specType":"integration","name":"cypress/e2e/b.spec.js","relative":"cypress/e2e/b.spec.js","absolute":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/e2e/b.spec.js"},"error":null,"video":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/videos/b.spec.js.mp4","shouldUploadVideo":true,"hooks":[{"hookId":"h1","hookName":"before each","title":["\"before each\" hook"],"body":"() => {\n const currentTest = cy.state(\"ctx\").currentTest;\n if (currentTest) {\n handleBefore(currentTest);\n }\n}"},{"hookId":"h2","hookName":"before each","title":["\"before each\" hook"],"body":"function () {\n cy.visit(\"/\");\n}"},{"hookId":"h4","hookName":"after each","title":["\"after each\" hook"],"body":"function () {\n self.sendLogsToPrinter(self.collectorState.getCurrentLogStackIndex(), self.collectorState.getCurrentTest());\n }"},{"hookId":"h5","hookName":"after each","title":["\"after each\" hook"],"body":"() => {\n const currentTest = cy.state(\"ctx\").currentTest;\n if (currentTest) {\n handleAfter(currentTest);\n }\n}"},{"hookId":"h3","hookName":"after all","title":["\"after all\" hook"],"body":"function () {\n // Need to wait otherwise some last commands get omitted from logs.\n cy.task(CONSTANTS.TASK_NAME_OUTPUT, null, {log: false});\n }"}],"tests":[{"testId":"r3","title":["Failing test with 2 attempts, passed test and flaky test with 2 attempts","should try 2 times"],"state":"failed","body":"() => {\n cy.wrap(false).should('be.true');\n }","displayError":"AssertionError: Timed out retrying after 4000ms: expected false to be true\n at Context.eval (webpack://cypress-12-demo/./cypress/e2e/b.spec.js:6:19)","attempts":[{"state":"failed","error":{"name":"AssertionError","message":"Timed out retrying after 4000ms: expected false to be true","stack":" at Context.eval (webpack://cypress-12-demo/./cypress/e2e/b.spec.js:6:19)","codeFrame":{"line":6,"column":20,"originalFile":"cypress/e2e/b.spec.js","relativeFile":"e2e/cypress-12-demo/cypress/e2e/b.spec.js","absoluteFile":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/e2e/b.spec.js","frame":" 4 | retries: 2,\n 5 | }, () => {\n> 6 | cy.wrap(false).should('be.true');\n | ^\n 7 | });\n 8 | \n 9 | it('should assert that true is true', () => {","language":"js"}},"timings":{"lifecycle":28,"before each":[{"hookId":"h1","fnDuration":10,"afterFnDuration":0},{"hookId":"h2","fnDuration":184,"afterFnDuration":0}],"test":{"fnDuration":4013,"afterFnDuration":191},"after each":[{"hookId":"h4","fnDuration":12,"afterFnDuration":0},{"hookId":"h5","fnDuration":13,"afterFnDuration":0}]},"failedFromHookId":null,"wallClockStartedAt":"2023-09-14T20:43:48.994Z","wallClockDuration":4456,"videoTimestamp":907,"startedAt":"2023-09-14T20:43:48.994Z","duration":4456,"screenshots":[{"screenshotId":"esiau","name":"screenshot","testId":"r3","testAttemptIndex":0,"takenAt":"2023-09-14T20:43:53.234Z","path":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/screenshots/b.spec.js/Failing test with 2 attempts, passed test and flaky test with 2 attempts -- should try 2 times (failed).png","height":1440,"width":2560}]},{"state":"failed","error":{"name":"AssertionError","message":"Timed out retrying after 4000ms: expected false to be true","stack":" at Context.eval (webpack://cypress-12-demo/./cypress/e2e/b.spec.js:6:19)","codeFrame":{"line":6,"column":20,"originalFile":"cypress/e2e/b.spec.js","relativeFile":"e2e/cypress-12-demo/cypress/e2e/b.spec.js","absoluteFile":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/e2e/b.spec.js","frame":" 4 | retries: 2,\n 5 | }, () => {\n> 6 | cy.wrap(false).should('be.true');\n | ^\n 7 | });\n 8 | \n 9 | it('should assert that true is true', () => {","language":"js"}},"timings":{"lifecycle":67,"before each":[{"hookId":"h1","fnDuration":7,"afterFnDuration":0},{"hookId":"h2","fnDuration":46,"afterFnDuration":0}],"test":{"fnDuration":3991,"afterFnDuration":197},"after each":[{"hookId":"h4","fnDuration":12,"afterFnDuration":0},{"hookId":"h5","fnDuration":14,"afterFnDuration":0}]},"failedFromHookId":null,"wallClockStartedAt":"2023-09-14T20:43:53.468Z","wallClockDuration":4336,"videoTimestamp":5381,"startedAt":"2023-09-14T20:43:53.468Z","duration":4336,"screenshots":[{"screenshotId":"fab4s","name":"screenshot","testId":"r3","testAttemptIndex":1,"takenAt":"2023-09-14T20:43:57.582Z","path":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/screenshots/b.spec.js/Failing test with 2 attempts, passed test and flaky test with 2 attempts -- should try 2 times (failed) (attempt 2).png","height":1440,"width":2560}]},{"state":"failed","error":{"name":"AssertionError","message":"Timed out retrying after 4000ms: expected false to be true","stack":" at Context.eval (webpack://cypress-12-demo/./cypress/e2e/b.spec.js:6:19)","codeFrame":{"line":6,"column":20,"originalFile":"cypress/e2e/b.spec.js","relativeFile":"e2e/cypress-12-demo/cypress/e2e/b.spec.js","absoluteFile":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/e2e/b.spec.js","frame":" 4 | retries: 2,\n 5 | }, () => {\n> 6 | cy.wrap(false).should('be.true');\n | ^\n 7 | });\n 8 | \n 9 | it('should assert that true is true', () => {","language":"js"}},"timings":{"lifecycle":45,"before each":[{"hookId":"h1","fnDuration":7,"afterFnDuration":0},{"hookId":"h2","fnDuration":46,"afterFnDuration":0}],"test":{"fnDuration":4003,"afterFnDuration":170},"after each":[{"hookId":"h4","fnDuration":13,"afterFnDuration":0},{"hookId":"h5","fnDuration":14,"afterFnDuration":0}]},"failedFromHookId":null,"wallClockStartedAt":"2023-09-14T20:43:57.815Z","wallClockDuration":4303,"videoTimestamp":9728,"startedAt":"2023-09-14T20:43:57.815Z","duration":4303,"screenshots":[{"screenshotId":"7q2tg","name":"screenshot","testId":"r3","testAttemptIndex":2,"takenAt":"2023-09-14T20:44:01.919Z","path":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/screenshots/b.spec.js/Failing test with 2 attempts, passed test and flaky test with 2 attempts -- should try 2 times (failed) (attempt 3).png","height":1440,"width":2560}]}]},{"testId":"r4","title":["Failing test with 2 attempts, passed test and flaky test with 2 attempts","should assert that true is true"],"state":"passed","body":"() => {\n cy.wrap(true).should('be.true');\n }","displayError":null,"attempts":[{"state":"passed","error":null,"timings":{"lifecycle":27,"before each":[{"hookId":"h1","fnDuration":8,"afterFnDuration":0},{"hookId":"h2","fnDuration":90,"afterFnDuration":0}],"test":{"fnDuration":2,"afterFnDuration":0},"after each":[{"hookId":"h4","fnDuration":10,"afterFnDuration":0},{"hookId":"h5","fnDuration":6,"afterFnDuration":0}]},"failedFromHookId":null,"wallClockStartedAt":"2023-09-14T20:44:02.133Z","wallClockDuration":145,"videoTimestamp":14046,"startedAt":"2023-09-14T20:44:02.133Z","duration":145,"screenshots":[]}]},{"testId":"r5","title":["Failing test with 2 attempts, passed test and flaky test with 2 attempts","should fail on the first attempt and pass on the second"],"state":"passed","body":"() => {\n if (attempt === 0) {\n attempt++;\n cy.wrap(false).should('be.true'); // This will fail on the first attempt\n } else {\n cy.wrap(true).should('be.true'); // This will pass on the second attempt\n }\n }","displayError":null,"attempts":[{"state":"failed","error":{"name":"AssertionError","message":"Timed out retrying after 4000ms: expected false to be true","stack":" at Context.eval (webpack://cypress-12-demo/./cypress/e2e/b.spec.js:16:21)","codeFrame":{"line":16,"column":22,"originalFile":"cypress/e2e/b.spec.js","relativeFile":"e2e/cypress-12-demo/cypress/e2e/b.spec.js","absoluteFile":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/e2e/b.spec.js","frame":" 14 | if (attempt === 0) {\n 15 | attempt++;\n> 16 | cy.wrap(false).should('be.true'); // This will fail on the first attempt\n | ^\n 17 | } else {\n 18 | cy.wrap(true).should('be.true'); // This will pass on the second attempt\n 19 | }","language":"js"}},"timings":{"lifecycle":26,"before each":[{"hookId":"h1","fnDuration":7,"afterFnDuration":0},{"hookId":"h2","fnDuration":257,"afterFnDuration":0}],"test":{"fnDuration":3997,"afterFnDuration":175},"after each":[{"hookId":"h4","fnDuration":13,"afterFnDuration":0},{"hookId":"h5","fnDuration":11,"afterFnDuration":0}]},"failedFromHookId":null,"wallClockStartedAt":"2023-09-14T20:44:02.279Z","wallClockDuration":4488,"videoTimestamp":14192,"startedAt":"2023-09-14T20:44:02.279Z","duration":4488,"screenshots":[{"screenshotId":"m4os6","name":"screenshot","testId":"r5","testAttemptIndex":0,"takenAt":"2023-09-14T20:44:06.568Z","path":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/screenshots/b.spec.js/Failing test with 2 attempts, passed test and flaky test with 2 attempts -- should fail on the first attempt and pass on the second (failed).png","height":1440,"width":2560}]},{"state":"passed","error":null,"timings":{"lifecycle":31,"before each":[{"hookId":"h1","fnDuration":7,"afterFnDuration":0},{"hookId":"h2","fnDuration":80,"afterFnDuration":0}],"test":{"fnDuration":3,"afterFnDuration":0},"after each":[{"hookId":"h4","fnDuration":11,"afterFnDuration":1},{"hookId":"h5","fnDuration":10,"afterFnDuration":0}],"after all":[{"hookId":"h3","fnDuration":3,"afterFnDuration":0}]},"failedFromHookId":null,"wallClockStartedAt":"2023-09-14T20:44:06.773Z","wallClockDuration":151,"videoTimestamp":18686,"startedAt":"2023-09-14T20:44:06.773Z","duration":151,"screenshots":[]}]}]}],"startedTestsAt":"2023-09-14T20:43:19.838Z","endedTestsAt":"2023-09-14T20:44:06.926Z","config":{"additionalIgnorePattern":[],"animationDistanceThreshold":5,"arch":"arm64","autoOpen":false,"baseUrl":"https://todomvc.com/examples/vanillajs","blockHosts":null,"browsers":[{"name":"chrome","family":"chromium","channel":"stable","displayName":"Chrome","version":"116.0.5845.187","path":"/Applications/Google Chrome.app/Contents/MacOS/Google Chrome","minSupportedVersion":64,"majorVersion":"116"},{"name":"edge","family":"chromium","channel":"stable","displayName":"Edge","version":"116.0.1938.81","path":"/Applications/Microsoft Edge.app/Contents/MacOS/Microsoft Edge","minSupportedVersion":79,"majorVersion":"116"},{"name":"electron","channel":"stable","family":"chromium","displayName":"Electron","version":"106.0.5249.51","path":"","majorVersion":106}],"chromeWebSecurity":true,"clientCertificates":[],"clientRoute":"/__/","configFile":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress.config.ts","cypressBinaryRoot":"/Users/miguelangarano/Library/Caches/Cypress/12.17.4/Cypress.app/Contents/Resources/app","cypressEnv":"production","defaultCommandTimeout":4000,"devServerPublicPathRoute":"/__cypress/src","downloadsFolder":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/downloads","env":{"currents_temp_file":"/var/folders/1l/tzj2dqys6js7w35f8rx2jsq00000gn/T/tmp-26703-SD6hQYIazflS","currents_debug_enabled":false},"excludeSpecPattern":"*.hot-update.js","execTimeout":60000,"experimentalCspAllowList":false,"experimentalFetchPolyfill":false,"experimentalInteractiveRunEvents":false,"experimentalMemoryManagement":false,"experimentalModifyObstructiveThirdPartyCode":false,"experimentalOriginDependencies":false,"experimentalRunAllSpecs":false,"experimentalSingleTabRunMode":false,"experimentalSkipDomainInjection":null,"experimentalSourceRewriting":false,"experimentalStudio":false,"experimentalWebKitSupport":false,"fileServerFolder":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo","fixturesFolder":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/fixtures","hosts":null,"includeShadowDom":false,"isInteractive":true,"isTextTerminal":true,"keystrokeDelay":0,"modifyObstructiveCode":true,"morgan":false,"namespace":"__cypress","numTestsKeptInMemory":0,"pageLoadTimeout":60000,"platform":"darwin","port":null,"projectId":null,"projectName":"cypress-12-demo","projectRoot":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo","rawJson":{"e2e":{"baseUrl":"https://todomvc.com/examples/vanillajs","supportFile":"cypress/support/e2e.ts","specPattern":"cypress/*/**/*.spec.js","setupNodeEvents":"[Function setupNodeEvents]"},"component":{"specPattern":["pages/__tests__/*.spec.tsx"],"setupNodeEvents":"[Function setupNodeEvents]","devServer":{"framework":"next","bundler":"webpack"}},"baseUrl":"https://todomvc.com/examples/vanillajs","supportFile":"cypress/support/e2e.ts","specPattern":"cypress/*/**/*.spec.js","setupNodeEvents":"[Function setupNodeEvents]","envFile":{},"projectRoot":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo","projectName":"cypress-12-demo","repoRoot":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13"},"redirectionLimit":20,"repoRoot":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13","report":true,"reporter":"spec","reporterOptions":null,"reporterRoute":"/__cypress/reporter","requestTimeout":5000,"resolved":{"animationDistanceThreshold":{"value":5,"from":"default"},"arch":{"value":"arm64","from":"default"},"baseUrl":{"value":"https://todomvc.com/examples/vanillajs","from":"config"},"blockHosts":{"value":null,"from":"default"},"chromeWebSecurity":{"value":true,"from":"default"},"clientCertificates":{"value":[],"from":"default"},"defaultCommandTimeout":{"value":4000,"from":"default"},"downloadsFolder":{"value":"cypress/downloads","from":"default"},"env":{"currents_temp_file":{"value":"/var/folders/1l/tzj2dqys6js7w35f8rx2jsq00000gn/T/tmp-26703-SD6hQYIazflS","from":"cli"},"currents_debug_enabled":{"value":false,"from":"cli"}},"execTimeout":{"value":60000,"from":"default"},"experimentalCspAllowList":{"value":false,"from":"default"},"experimentalFetchPolyfill":{"value":false,"from":"default"},"experimentalInteractiveRunEvents":{"value":false,"from":"default"},"experimentalRunAllSpecs":{"value":false,"from":"default"},"experimentalMemoryManagement":{"value":false,"from":"default"},"experimentalModifyObstructiveThirdPartyCode":{"value":false,"from":"default"},"experimentalSkipDomainInjection":{"value":null,"from":"default"},"experimentalOriginDependencies":{"value":false,"from":"default"},"experimentalSourceRewriting":{"value":false,"from":"default"},"experimentalSingleTabRunMode":{"value":false,"from":"default"},"experimentalStudio":{"value":false,"from":"default"},"experimentalWebKitSupport":{"value":false,"from":"default"},"fileServerFolder":{"value":"","from":"default"},"fixturesFolder":{"value":"cypress/fixtures","from":"default"},"excludeSpecPattern":{"value":"*.hot-update.js","from":"default"},"includeShadowDom":{"value":false,"from":"default"},"keystrokeDelay":{"value":0,"from":"default"},"modifyObstructiveCode":{"value":true,"from":"default"},"nodeVersion":{"from":"default"},"numTestsKeptInMemory":{"value":0,"from":"config"},"platform":{"value":"darwin","from":"default"},"pageLoadTimeout":{"value":60000,"from":"default"},"port":{"value":null,"from":"default"},"projectId":{"value":null,"from":"default"},"redirectionLimit":{"value":20,"from":"default"},"reporter":{"value":"spec","from":"default"},"reporterOptions":{"value":null,"from":"default"},"requestTimeout":{"value":5000,"from":"default"},"resolvedNodePath":{"value":null,"from":"default"},"resolvedNodeVersion":{"value":null,"from":"default"},"responseTimeout":{"value":30000,"from":"default"},"retries":{"value":{"runMode":0,"openMode":0},"from":"default"},"screenshotOnRunFailure":{"value":true,"from":"default"},"screenshotsFolder":{"value":"cypress/screenshots","from":"default"},"slowTestThreshold":{"value":10000,"from":"default"},"scrollBehavior":{"value":"top","from":"default"},"supportFile":{"value":"cypress/support/e2e.ts","from":"config"},"supportFolder":{"value":false,"from":"default"},"taskTimeout":{"value":60000,"from":"default"},"testIsolation":{"value":true,"from":"default"},"trashAssetsBeforeRuns":{"value":true,"from":"default"},"userAgent":{"value":null,"from":"default"},"video":{"value":true,"from":"default"},"videoCompression":{"value":32,"from":"default"},"videosFolder":{"value":"cypress/videos","from":"default"},"videoUploadOnPasses":{"value":true,"from":"default"},"viewportHeight":{"value":660,"from":"default"},"viewportWidth":{"value":1000,"from":"default"},"waitForAnimations":{"value":true,"from":"default"},"watchForFileChanges":{"value":false,"from":"config"},"specPattern":{"value":"cypress/*/**/*.spec.js","from":"config"},"browsers":{"value":[{"name":"chrome","family":"chromium","channel":"stable","displayName":"Chrome","version":"116.0.5845.187","path":"/Applications/Google Chrome.app/Contents/MacOS/Google Chrome","minSupportedVersion":64,"majorVersion":"116"},{"name":"edge","family":"chromium","channel":"stable","displayName":"Edge","version":"116.0.1938.81","path":"/Applications/Microsoft Edge.app/Contents/MacOS/Microsoft Edge","minSupportedVersion":79,"majorVersion":"116"},{"name":"electron","channel":"stable","family":"chromium","displayName":"Electron","version":"106.0.5249.51","path":"","majorVersion":106}],"from":"runtime"},"hosts":{"value":null,"from":"default"},"isInteractive":{"value":true,"from":"default"}},"resolvedNodePath":"/Users/miguelangarano/.nvm/versions/node/v18.14.2/bin/node","resolvedNodeVersion":"18.14.2","responseTimeout":30000,"retries":{"runMode":0,"openMode":0},"screenshotOnRunFailure":true,"screenshotsFolder":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/screenshots","scrollBehavior":"top","setupNodeEvents":"[Function setupNodeEvents]","slowTestThreshold":10000,"socketId":"2legxbwfbi","socketIoCookie":"__socket","socketIoRoute":"/__socket","specPattern":"cypress/*/**/*.spec.js","supportFile":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/support/e2e.ts","supportFolder":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/support","taskTimeout":60000,"testIsolation":true,"trashAssetsBeforeRuns":true,"userAgent":null,"version":"12.17.4","video":true,"videoCompression":32,"videoUploadOnPasses":true,"videosFolder":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/videos","viewportHeight":660,"viewportWidth":1000,"waitForAnimations":true,"watchForFileChanges":false,"testingType":"e2e"},"status":"finished","runUrl":"https://app.currents.dev/run/20f0e4c7c5f476f1"} \ No newline at end of file diff --git a/e2e/cypress-12-demo/package.json b/e2e/cypress-12-demo/package.json new file mode 100644 index 0000000..16274a7 --- /dev/null +++ b/e2e/cypress-12-demo/package.json @@ -0,0 +1,22 @@ +{ + "name": "cypress-12-demo", + "version": "0.0.0", + "private": true, + "scripts": { + "files": "ts-node scripts/files.ts", + "validate": "ts-node scripts/validate.ts", + "runtest": "ts-node scripts/test.ts" + }, + "dependencies": { + "colors": "^1.4.0", + "cypress-cloud": "*" + }, + "devDependencies": { + "@types/chai": "^4.3.6", + "@types/node": "^17.0.12", + "chai": "^4.3.8", + "cypress": "^12.17.4", + "tsconfig": "*", + "typescript": "^5.2.2" + } +} \ No newline at end of file diff --git a/e2e/cypress-12-demo/scripts/files.ts b/e2e/cypress-12-demo/scripts/files.ts new file mode 100644 index 0000000..0af39dd --- /dev/null +++ b/e2e/cypress-12-demo/scripts/files.ts @@ -0,0 +1,12 @@ +import { getApiData, runTests } from "../../utils/utils"; + +(async function runFiles() { + const cypressCloudData = await runTests( + "data-references/ccy-1.9.4-cy-12-cycl.json" + ); + + await getApiData( + cypressCloudData.runUrl, + "data-references/ccy-1.9.4-cy-12-crapi.json" + ); +})(); diff --git a/e2e/cypress-12-demo/scripts/test.ts b/e2e/cypress-12-demo/scripts/test.ts new file mode 100644 index 0000000..8703633 --- /dev/null +++ b/e2e/cypress-12-demo/scripts/test.ts @@ -0,0 +1,67 @@ +import colors from "colors"; + +import fs from "fs"; +import { + avoidableApiPropertiesCy13, + avoidablePropertiesCy13, + avoidedButNeedePropertiesCy13, + getApiData, + runTests, + runTestsValidation, +} from "../../utils/utils"; + +colors.enable(); + +(async function runTest() { + try { + const originalCurrentsApiFile = fs.readFileSync( + "data-references/ccy-1.9.4-cy-12-crapi.json", + "utf8" + ); + const originalCypressCloudFile = fs.readFileSync( + "data-references/ccy-1.9.4-cy-12-cycl.json", + "utf8" + ); + + const originalCurrentsApi = JSON.parse(originalCurrentsApiFile); + const originalCypressCloud = JSON.parse(originalCypressCloudFile); + + const cypressCloudData = await runTests( + "data-references/ccy-1.10-cy-12-cycl.json" + ); + const currentsApiData = await getApiData( + cypressCloudData.runUrl, + "data-references/ccy-1.10-cy-12-crapi.json" + ); + + const modifiedCurrentsApi = currentsApiData; + const modifiedCypressCloud = cypressCloudData; + + const currentsApiErrors = runTestsValidation( + originalCurrentsApi, + modifiedCurrentsApi, + avoidableApiPropertiesCy13, + "validation-results/currents-api-validation.json", + "Starting test: Currents API output", + "Test Passed: Currents API output is the same in ccy 1.9 cypress 12 without change and ccy 1.10 cypress 12 with changes" + ); + + const cypressCloudErrors = runTestsValidation( + originalCypressCloud, + modifiedCypressCloud, + [...avoidablePropertiesCy13, ...avoidedButNeedePropertiesCy13], + "validation-results/cypress-cloud-validation.json", + "Starting test: Cypress Cloud output", + "Test Passed: Cypress Cloud output is the same in ccy 1.9 cypress 12 without change and ccy 1.10 cypress 12 with changes" + ); + + if (currentsApiErrors.length > 0 || cypressCloudErrors.length > 0) { + process.exit(1); + } else { + process.exit(0); + } + } catch (err: any) { + console.error("Process error:", err); + process.exit(1); + } +})(); diff --git a/e2e/cypress-12-demo/scripts/validate.ts b/e2e/cypress-12-demo/scripts/validate.ts new file mode 100644 index 0000000..6c4d764 --- /dev/null +++ b/e2e/cypress-12-demo/scripts/validate.ts @@ -0,0 +1,125 @@ +import fs from "fs"; + +type ComparisonResult = { + path: string; + valueA: any; + valueB: any; + isEqual: boolean; + note?: string; +}; + +function compareObjectsRecursively( + objA: any, + objB: any, + path: string = "" +): ComparisonResult[] { + let results: ComparisonResult[] = []; + + // Si ambos son objetos pero no arrays ni strings + if ( + typeof objA === "object" && + objA !== null && + !(objA instanceof Array) && + typeof objA !== "string" && + typeof objB === "object" && + objB !== null && + !(objB instanceof Array) && + typeof objB !== "string" + ) { + const keys = new Set([...Object.keys(objA), ...Object.keys(objB)]); + + keys.forEach((key) => { + const newPath = path ? `${path}.${key}` : key; + results = results.concat( + compareObjectsRecursively(objA[key], objB[key], newPath) + ); + }); + } + // Si ambos son arrays + else if (Array.isArray(objA) && Array.isArray(objB)) { + const maxLength = Math.max(objA.length, objB.length); + for (let i = 0; i < maxLength; i++) { + const newPath = `${path}[${i}]`; + results = results.concat( + compareObjectsRecursively(objA[i], objB[i], newPath) + ); + } + } else { + const isEqual = objA === objB; + const note = + objA === undefined + ? "Does not exist in A" + : objB === undefined + ? "Does not exist in B" + : undefined; + + results.push({ + path: path || "root", + valueA: objA, + valueB: objB, + isEqual: isEqual, + note: note, + }); + } + + return results; +} + +(async function runValidation() { + try { + const originalCurrentApiFile = fs.readFileSync( + "data-references/ccy-1.9.4-cypress-12/currents-api-output-reference.json", + "utf8" + ); + const originalCypressCloudFile = fs.readFileSync( + "data-references/ccy-1.9.4-cypress-12/cypress-cloud-output-reference.json", + "utf8" + ); + + const originalCurrentApi = JSON.parse(originalCurrentApiFile); + const originalCypressCloud = JSON.parse(originalCypressCloudFile); + + const modifiedCurrentApiFile = fs.readFileSync( + "data-references/ccy-1.10-cypress-12/currents-api-output-reference.json", + "utf8" + ); + const modifiedCypressCloudFile = fs.readFileSync( + "data-references/ccy-1.10-cypress-12/cypress-cloud-output-reference.json", + "utf8" + ); + + const modifiedCurrentApi = JSON.parse(modifiedCurrentApiFile); + const modifiedCypressCloud = JSON.parse(modifiedCypressCloudFile); + + const apiComparisonResult = compareObjectsRecursively( + originalCurrentApi, + modifiedCurrentApi + ); + fs.writeFile( + "validation-results/currents-api-validation.json", + JSON.stringify(apiComparisonResult), + (err) => { + if (err) { + console.log("FILE ERROR::", err); + throw err; + } + console.log("file saved"); + } + ); + + const packageComparisonResult = compareObjectsRecursively( + originalCypressCloud, + modifiedCypressCloud + ); + fs.writeFile( + "validation-results/cypress-cloud-validation.json", + JSON.stringify(packageComparisonResult), + (err) => { + if (err) throw err; + console.log("file saved"); + } + ); + } catch (err) { + console.error("Process error:", err); + } +})(); diff --git a/e2e/cypress-12-demo/tsconfig.json b/e2e/cypress-12-demo/tsconfig.json new file mode 100644 index 0000000..83d1ff0 --- /dev/null +++ b/e2e/cypress-12-demo/tsconfig.json @@ -0,0 +1,35 @@ +{ + "$schema": "https://json.schemastore.org/tsconfig", + "display": "Next.js", + "compilerOptions": { + "baseUrl": ".", + "composite": false, + "declaration": true, + "declarationMap": true, + "inlineSources": false, + "moduleResolution": "node", + "noUnusedLocals": false, + "noUnusedParameters": false, + "preserveWatchOutput": true, + "target": "es5", + "lib": ["dom", "dom.iterable", "esnext"], + "allowJs": true, + "skipLibCheck": true, + "strict": true, + "forceConsistentCasingInFileNames": true, + "noEmit": true, + "incremental": true, + "esModuleInterop": true, + "module": "esnext", + "resolveJsonModule": true, + "isolatedModules": true, + "jsx": "preserve" + }, + "ts-node": { + "compilerOptions": { + "module": "CommonJS" + } + }, + + "exclude": ["node_modules"] +} diff --git a/e2e/cypress-12-demo/validation-results/currents-api-validation.json b/e2e/cypress-12-demo/validation-results/currents-api-validation.json new file mode 100644 index 0000000..8ada3b2 --- /dev/null +++ b/e2e/cypress-12-demo/validation-results/currents-api-validation.json @@ -0,0 +1 @@ +[{"path":"status","valueA":"OK","valueB":"OK","isEqual":true},{"path":"data.runId","valueA":"20f0e4c7c5f476f1","valueB":"c7068a4d0aa7e75a","isEqual":false},{"path":"data.projectId","valueA":"2cI1I5","valueB":"2cI1I5","isEqual":true},{"path":"data.createdAt","valueA":"2023-09-14T20:43:15.258Z","valueB":"2023-09-15T04:42:58.900Z","isEqual":false},{"path":"data.cypressVersion","valueA":"12.17.4","valueB":"13.2.0","isEqual":false},{"path":"data.cancellation","valueA":null,"valueB":null,"isEqual":true},{"path":"data.timeout.isTimeout","valueA":false,"valueB":false,"isEqual":true},{"path":"data.groups[0].groupId","valueA":"run-compat-test-2023-09-14T20:43:11.518Z","valueB":"run-compat-test-2023-09-15T04:42:56.383Z","isEqual":false},{"path":"data.groups[0].platform.osName","valueA":"darwin","valueB":"darwin","isEqual":true},{"path":"data.groups[0].platform.osVersion","valueA":"22.5.0","valueB":"22.5.0","isEqual":true},{"path":"data.groups[0].platform.browserName","valueA":"Electron","valueB":"Electron","isEqual":true},{"path":"data.groups[0].platform.browserVersion","valueA":"106.0.5249.51","valueB":"114.0.5735.289","isEqual":false},{"path":"data.groups[0].createdAt","valueA":"2023-09-14T20:43:15.258Z","valueB":"2023-09-15T04:42:58.900Z","isEqual":false},{"path":"data.groups[0].instances.overall","valueA":5,"valueB":5,"isEqual":true},{"path":"data.groups[0].instances.claimed","valueA":5,"valueB":5,"isEqual":true},{"path":"data.groups[0].instances.complete","valueA":5,"valueB":5,"isEqual":true},{"path":"data.groups[0].instances.passes","valueA":2,"valueB":2,"isEqual":true},{"path":"data.groups[0].instances.failures","valueA":3,"valueB":3,"isEqual":true},{"path":"data.groups[0].tests.overall","valueA":8,"valueB":8,"isEqual":true},{"path":"data.groups[0].tests.passes","valueA":4,"valueB":4,"isEqual":true},{"path":"data.groups[0].tests.failures","valueA":3,"valueB":3,"isEqual":true},{"path":"data.groups[0].tests.pending","valueA":1,"valueB":1,"isEqual":true},{"path":"data.groups[0].tests.skipped","valueA":0,"valueB":0,"isEqual":true},{"path":"data.groups[0].tests.retries","valueA":1,"valueB":1,"isEqual":true},{"path":"data.groups[0].tests.flaky","valueA":1,"valueB":1,"isEqual":true},{"path":"data.meta.ciBuildId","valueA":"run-compat-test-2023-09-14T20:43:11.518Z","valueB":"run-compat-test-2023-09-15T04:42:56.383Z","isEqual":false},{"path":"data.meta.commit.branch","valueA":"fix/cypress-13-validation","valueB":"fix/cypress-13-validation","isEqual":true},{"path":"data.meta.commit.remoteOrigin","valueA":null,"valueB":null,"isEqual":true},{"path":"data.meta.commit.authorEmail","valueA":"miguelangarano@gmail.com","valueB":"miguelangarano@gmail.com","isEqual":true},{"path":"data.meta.commit.authorName","valueA":"Miguel Langarano","valueB":"Miguel Langarano","isEqual":true},{"path":"data.meta.commit.message","valueA":"removed avoidable properties\n","valueB":"fix ts errors and added api test property avoided\n","isEqual":false},{"path":"data.meta.commit.sha","valueA":"8025626af881a1e0dad4f05b756da27a85971ee8","valueB":"69128959c66c58eaf08c2eba97aba512665e4064","isEqual":false},{"path":"data.meta.platform.osName","valueA":"darwin","valueB":"darwin","isEqual":true},{"path":"data.meta.platform.osVersion","valueA":"22.5.0","valueB":"22.5.0","isEqual":true},{"path":"data.meta.platform.browserName","valueA":"Electron","valueB":"Electron","isEqual":true},{"path":"data.meta.platform.browserVersion","valueA":"106.0.5249.51","valueB":"114.0.5735.289","isEqual":false},{"path":"data.specs[0].groupId","valueA":"run-compat-test-2023-09-14T20:43:11.518Z","valueB":"run-compat-test-2023-09-15T04:42:56.383Z","isEqual":false},{"path":"data.specs[0].spec","valueA":"cypress/e2e/a.spec.js","valueB":"cypress/e2e/a.spec.js","isEqual":true},{"path":"data.specs[0].instanceId","valueA":"3iKvFYPxto1k","valueB":"GDEKME1tH9E3","isEqual":false},{"path":"data.specs[0].claimedAt","valueA":"2023-09-14T20:43:15.677Z","valueB":"2023-09-15T04:42:59.417Z","isEqual":false},{"path":"data.specs[0].completedAt","valueA":"2023-09-14T20:43:35.088Z","valueB":"2023-09-15T04:43:18.016Z","isEqual":false},{"path":"data.specs[0].machineId","valueA":"BP6PPzRBiUb7","valueB":"rAA1SgkfccF9","isEqual":false},{"path":"data.specs[0].worker","valueA":null,"valueB":null,"isEqual":true},{"path":"data.specs[0].results.videoUrl","valueA":"https://fs.currents.dev/64af8eee5411be7416b22d5f/3iKvFYPxto1k_DvfgkjNRzr2X.mp4?Expires=1694983444&Key-Pair-Id=K1ZNDCCIZ3P4FU&Signature=AKLjpVVSG5Q4DS91JVNogQ59-VjV-p6KtJ-xEfmZgcdTl~pc9DpAK8~JWx~fxYZ3MrbLcXlvdRbaUELfd8CAmfz9Vcgg5SfikapvSwm1y~AKRTLX1SfMaRMtOLdyyKYO4no8Zm1e0PU5WNMAXwYWGze89SqBXgudBG3Fxef7xKRbXtO-5y1vDmHVlU0bitWGGnF-Ht2tUCsT7AJzuB4NQmteUZ~g7xyj5lllilduebHSPJ~gfWmQIyiqDYhC8kNQ0RwR2MM7artBiIbZYWcJAYH~~hCu2nh9mSMNjehget6bq3VxCMPYzLHhVxE268PqZaLwQv8ScL0SWgYWdsVgRQ__","valueB":null,"isEqual":false},{"path":"data.specs[0].results.stats.duration","valueA":13594,"valueB":13647,"isEqual":false},{"path":"data.specs[0].results.stats.endedAt","valueA":"2023-09-14T20:43:33.432Z","valueB":"2023-09-15T04:43:17.333Z","isEqual":false},{"path":"data.specs[0].results.stats.startedAt","valueA":"2023-09-14T20:43:19.838Z","valueB":"2023-09-15T04:43:03.686Z","isEqual":false},{"path":"data.specs[0].results.stats.failures","valueA":1,"valueB":1,"isEqual":true},{"path":"data.specs[0].results.stats.passes","valueA":0,"valueB":0,"isEqual":true},{"path":"data.specs[0].results.stats.pending","valueA":0,"valueB":0,"isEqual":true},{"path":"data.specs[0].results.stats.skipped","valueA":0,"valueB":0,"isEqual":true},{"path":"data.specs[0].results.stats.suites","valueA":1,"valueB":1,"isEqual":true},{"path":"data.specs[0].results.stats.tests","valueA":1,"valueB":1,"isEqual":true},{"path":"data.specs[0].results.stats.wallClockDuration","valueA":13594,"valueB":13647,"isEqual":false},{"path":"data.specs[0].results.stats.wallClockStartedAt","valueA":"2023-09-14T20:43:19.838Z","valueB":"2023-09-15T04:43:03.686Z","isEqual":false},{"path":"data.specs[0].results.stats.wallClockEndedAt","valueA":"2023-09-14T20:43:33.432Z","valueB":"2023-09-15T04:43:17.333Z","isEqual":false},{"path":"data.specs[0].results.screenshots[0].screenshotId","valueA":"6B9XbAeStMlI1MhXPGbyd","valueB":"vnGS2oMjM8MyxiCTAgKY_","isEqual":false},{"path":"data.specs[0].results.screenshots[0].name","valueA":"screenshot","valueB":"screenshot","isEqual":true},{"path":"data.specs[0].results.screenshots[0].testId","valueA":"r0","valueB":"r0","isEqual":true},{"path":"data.specs[0].results.screenshots[0].testAttemptIndex","valueA":0,"valueB":0,"isEqual":true},{"path":"data.specs[0].results.screenshots[0].takenAt","valueA":"2023-09-14T20:43:24.542Z","valueB":"2023-09-15T04:43:08.170Z","isEqual":false},{"path":"data.specs[0].results.screenshots[0].screenshotURL","valueA":"https://fs.currents.dev/64af8eee5411be7416b22d5f/0diwTa1YrjgD.png?Expires=1694983444&Key-Pair-Id=K1ZNDCCIZ3P4FU&Signature=rTgPO1oXejJJNzG9Fb76dt9hcUah4OZE3WELSRUQN8ZtuCfDgnKO1hQnACjDU6I1gvkeSMCEQgSgnP2dagYjS-Kzj8b~yYvZWJNAdLitCErTEunmnspNybTATsACUHZmratMHlrt5O8tmkTbbsn6Vd-2bkpbbNvcPbW-MLGK1RoEEaERAJDkbRy8j9wj19r-cM-DpOxo4oRMLOJvFBLYcj78Lmi-kiZGmHKw6SIh0qJTZqWIfLNCf2HYyp3TzEYfYgKjRc4wpbCEK2JjAc9a-PCoEdL1Zkwc8b4YIN4cg0V147yRT6uq0JxPXYY3kT12H-qowGoVpWUxzmoJOqnSTw__","valueB":"https://fs.currents.dev/64af8eee5411be7416b22d5f/UzwapCP45wyg.png?Expires=1695012212&Key-Pair-Id=K1ZNDCCIZ3P4FU&Signature=XHJ425kC7KJGGBrf1oPeuwbaN67ZRRlbkX7F5A4dHBb7EUPD3H9c0aD61dcihxrDEXHB0zcvHahk4Gx2OjspXtcLhqz20hPdFUkmNo2nFBeGL6LZf4zP20qYOcLS4O~27TZoqf1duTg45A-9uIUoivAKL0K0B9zTpC2G9YwXkQOgnM-YLVnijdGVBvSMyNpditJFXV4~T1bnUYpkTWCQ0CkcPwoaM8AuPnEHagUaH~jiW3l91x2zP2hc8xhprsGUGFJvVlOF0uZWJPDd5KCGtEeNs2TIKUONBVRlAZ8qeIQPngZrWqKjjAoRQx8QA-QEh14ohvYDgo0JOOjIKGfxvg__","isEqual":false},{"path":"data.specs[0].results.screenshots[0].height","valueA":0,"valueB":0,"isEqual":true},{"path":"data.specs[0].results.screenshots[0].width","valueA":0,"valueB":0,"isEqual":true},{"path":"data.specs[0].results.screenshots[0].size","valueB":350986,"isEqual":false,"note":"Does not exist"},{"path":"data.specs[0].results.screenshots[0].dimensions","valueB":{"width":2560,"height":1440},"isEqual":false,"note":"Does not exist"},{"path":"data.specs[0].results.screenshots[0].multipart","valueB":false,"isEqual":false,"note":"Does not exist"},{"path":"data.specs[0].results.screenshots[0].specName","valueB":"a.spec.js","isEqual":false,"note":"Does not exist"},{"path":"data.specs[0].results.screenshots[0].testFailure","valueB":true,"isEqual":false,"note":"Does not exist"},{"path":"data.specs[0].results.screenshots[0].scaled","valueB":true,"isEqual":false,"note":"Does not exist"},{"path":"data.specs[0].results.screenshots[0].blackout","valueB":[],"isEqual":false,"note":"Does not exist"},{"path":"data.specs[0].results.screenshots[0].duration","valueB":237,"isEqual":false,"note":"Does not exist"},{"path":"data.specs[0].results.screenshots[1].screenshotId","valueA":"x5OhYcWdqGHtemqNFYKQj","valueB":"dXYBdNISQiHjGZqZWVaxk","isEqual":false},{"path":"data.specs[0].results.screenshots[1].name","valueA":"screenshot","valueB":"screenshot","isEqual":true},{"path":"data.specs[0].results.screenshots[1].testId","valueA":"r0","valueB":"r0","isEqual":true},{"path":"data.specs[0].results.screenshots[1].testAttemptIndex","valueA":1,"valueB":1,"isEqual":true},{"path":"data.specs[0].results.screenshots[1].takenAt","valueA":"2023-09-14T20:43:28.910Z","valueB":"2023-09-15T04:43:12.594Z","isEqual":false},{"path":"data.specs[0].results.screenshots[1].screenshotURL","valueA":"https://fs.currents.dev/64af8eee5411be7416b22d5f/M0K9q1lejcVw.png?Expires=1694983444&Key-Pair-Id=K1ZNDCCIZ3P4FU&Signature=D58cICbgpAKEe06HgfhfCggSQlZJw~9BfDgMtIQW1-Kt-MFCgMWdlPF-lRVrmfVaFgjoDnFMQJpTTPz1SmoyGvh000JZ0IZpjHwH6zv0MAYVK3xiwwbJHGdaa27ec42nJd64DUK9ATOFzrvxzMESxfk4ZUAOOsDv4U9s8lTedKbWfONYc6by6FdeXZYaBCnmSrAkWIyU62N0V-Pywq1qg0SAe5WNmuyU4Fh1UGBrqmeYzNzW6sLXDat-GMf7LgpYqQUah2UFOeibKO5z0f305SIrTLuRkM9NdREf5u-T4ZkmtbnE-Qm8x-gkJ1FESDzUDRTVXnHDuPqhfC5mdF4MJQ__","valueB":"https://fs.currents.dev/64af8eee5411be7416b22d5f/13pHQ3gvn8VA.png?Expires=1695012212&Key-Pair-Id=K1ZNDCCIZ3P4FU&Signature=eT0htOfMOiyEpQpLMOwH5TEwlELJx6NvIoB4eTza9Vx0DHnTbASA4Zso1abvauTxGJ9lgrapnwAAEVnMUGFDCMbqiY3dIQq9Rcowi8c2BAxioc0gTJ~WH90bxDMmJ18SgHHPB-X1CXzvBHj-s~DjYWxgBRl-BVZ5YjP6JYk6J3qUn62MDsZMD1Fz0nrj4dAUO9IY37tYR3b2JwsKA6P2f90WhpqA-9wqrZw9mIpchSaw1-11OizQfSJqyF85uGdCG4dqKRATcATAJTBIhabkp8zTNo~vWxXZzlPPmuImu4Fy0Vrx1HoGpxS9j6RUaSP5tBx3WmOA8Ss9NUXAEozopA__","isEqual":false},{"path":"data.specs[0].results.screenshots[1].height","valueA":0,"valueB":0,"isEqual":true},{"path":"data.specs[0].results.screenshots[1].width","valueA":0,"valueB":0,"isEqual":true},{"path":"data.specs[0].results.screenshots[1].size","valueB":360126,"isEqual":false,"note":"Does not exist"},{"path":"data.specs[0].results.screenshots[1].dimensions","valueB":{"width":2560,"height":1440},"isEqual":false,"note":"Does not exist"},{"path":"data.specs[0].results.screenshots[1].multipart","valueB":false,"isEqual":false,"note":"Does not exist"},{"path":"data.specs[0].results.screenshots[1].specName","valueB":"a.spec.js","isEqual":false,"note":"Does not exist"},{"path":"data.specs[0].results.screenshots[1].testFailure","valueB":true,"isEqual":false,"note":"Does not exist"},{"path":"data.specs[0].results.screenshots[1].scaled","valueB":true,"isEqual":false,"note":"Does not exist"},{"path":"data.specs[0].results.screenshots[1].blackout","valueB":[],"isEqual":false,"note":"Does not exist"},{"path":"data.specs[0].results.screenshots[1].duration","valueB":225,"isEqual":false,"note":"Does not exist"},{"path":"data.specs[0].results.screenshots[2].screenshotId","valueA":"OyjahMcGhLmNvuQzBRQLf","valueB":"s0es9NaVjdFd2m-qUbiRw","isEqual":false},{"path":"data.specs[0].results.screenshots[2].name","valueA":"screenshot","valueB":"screenshot","isEqual":true},{"path":"data.specs[0].results.screenshots[2].testId","valueA":"r0","valueB":"r0","isEqual":true},{"path":"data.specs[0].results.screenshots[2].testAttemptIndex","valueA":2,"valueB":2,"isEqual":true},{"path":"data.specs[0].results.screenshots[2].takenAt","valueA":"2023-09-14T20:43:33.216Z","valueB":"2023-09-15T04:43:17.068Z","isEqual":false},{"path":"data.specs[0].results.screenshots[2].screenshotURL","valueA":"https://fs.currents.dev/64af8eee5411be7416b22d5f/eUO7Brgs5hEZ.png?Expires=1694983444&Key-Pair-Id=K1ZNDCCIZ3P4FU&Signature=vCbapGXqZcIQX3yYWWVPr7ZoBgRmqgZnWpy~x3OpTHGD-YPP6g-G6nScdKS~ibmVMHEQrxG~b5pIoRj9iDr4XMsN7ZaUhVh6rPr~L7QGq5rNcjDmDCFujt~JOhi9qoVqMlqJP8gmqQTdhH8yGbKNeK0dLjKIj7GW0CyJbI9srytzTkJWA8izVwwdH8aApsyJkqCOw0tH6k7a2G1Z18RLmpQLZfsEEipkiQcohlJL-AUVIXZWp-DtQHqrBxf5s4gb98Nq4KbkWdEqztqCUxoaCOo7o0rErj2qj2VinVjex7gKtZ42o4tM8iFmQ4ZCKActhx5XouRnrq9UWLgTYuxfmA__","valueB":"https://fs.currents.dev/64af8eee5411be7416b22d5f/ZmJz3VSoqlBH.png?Expires=1695012212&Key-Pair-Id=K1ZNDCCIZ3P4FU&Signature=vJpFgnheJdXc5C8geJyTyQTatvi4V8J6PAeAJqxMepwnkExIdr7eg94-LeD9ZtebdLPFFXQwQo0nOGltWIGHfMMvPm87I7VWXYOMRL6YHstzncITqYD9A2liDqTL42XBnl6fORVMvz8evUjKZBzCgY-6IStWMFxfxUQx4TspuHP14FUuDqp9b~eqMgfiapBw4tx6akwid2fEfhH0nw1KmRUeem96o5DBzfXG5CaUItkbzBfIiXuvLE65B3p-qb5Ev-WHuk8US5nVegjrlmRWLu7VwYA64zB7xnBcF3T2wILIAUzx~p8N84J-lv18IruGe93Hp7lVDVmhqNeLFw55Uw__","isEqual":false},{"path":"data.specs[0].results.screenshots[2].height","valueA":0,"valueB":0,"isEqual":true},{"path":"data.specs[0].results.screenshots[2].width","valueA":0,"valueB":0,"isEqual":true},{"path":"data.specs[0].results.screenshots[2].size","valueB":365326,"isEqual":false,"note":"Does not exist"},{"path":"data.specs[0].results.screenshots[2].dimensions","valueB":{"width":2560,"height":1440},"isEqual":false,"note":"Does not exist"},{"path":"data.specs[0].results.screenshots[2].multipart","valueB":false,"isEqual":false,"note":"Does not exist"},{"path":"data.specs[0].results.screenshots[2].specName","valueB":"a.spec.js","isEqual":false,"note":"Does not exist"},{"path":"data.specs[0].results.screenshots[2].testFailure","valueB":true,"isEqual":false,"note":"Does not exist"},{"path":"data.specs[0].results.screenshots[2].scaled","valueB":true,"isEqual":false,"note":"Does not exist"},{"path":"data.specs[0].results.screenshots[2].blackout","valueB":[],"isEqual":false,"note":"Does not exist"},{"path":"data.specs[0].results.screenshots[2].duration","valueB":202,"isEqual":false,"note":"Does not exist"},{"path":"data.specs[0].results.exception","valueA":null,"valueB":null,"isEqual":true},{"path":"data.specs[0].results.flaky","valueA":0,"valueB":0,"isEqual":true},{"path":"data.specs[1].groupId","valueA":"run-compat-test-2023-09-14T20:43:11.518Z","valueB":"run-compat-test-2023-09-15T04:42:56.383Z","isEqual":false},{"path":"data.specs[1].spec","valueA":"cypress/e2e/b.spec.js","valueB":"cypress/e2e/b.spec.js","isEqual":true},{"path":"data.specs[1].instanceId","valueA":"xomB3YGJGuR6","valueB":"dZ4sdqqLEFP6","isEqual":false},{"path":"data.specs[1].claimedAt","valueA":"2023-09-14T20:43:15.708Z","valueB":"2023-09-15T04:42:59.617Z","isEqual":false},{"path":"data.specs[1].completedAt","valueA":"2023-09-14T20:44:08.521Z","valueB":"2023-09-15T04:43:41.503Z","isEqual":false},{"path":"data.specs[1].machineId","valueA":"BP6PPzRBiUb7","valueB":"rAA1SgkfccF9","isEqual":false},{"path":"data.specs[1].worker","valueA":null,"valueB":null,"isEqual":true},{"path":"data.specs[1].results.videoUrl","valueA":"https://fs.currents.dev/64af8eee5411be7416b22d5f/xomB3YGJGuR6_llnpsdbZz7bT.mp4?Expires=1694983444&Key-Pair-Id=K1ZNDCCIZ3P4FU&Signature=QryVZwsL371zMNSy72647oBx76ug2wTbniiIVdj~zKX2roamyL7VOGdlpqWz~-74kjCdsZ7q26AGffl2dXGWdruA27SSSSyER41y-RMXxY7N0ZUn52PvbevpFU3Gna7hxCFtqLH8840L16PFtYlhLDpu5aCdk3a5y-NdG36kvLo5PbAvTNJEyaB5g91MX851Sq~dzA6OOSB-RCmX0~a3Yn7RH5c138V~XKrEl4vCxw7ubjBpZCZbMz9g1GDu~EzMXgKHWbA84KNuY7QMe9CgVcgK~AHNNr5tIeMK3VKFC~EVDdWHMqoOzgDKpiWVelusAXavlJT~B39MwJGWeBI6YA__","valueB":null,"isEqual":false},{"path":"data.specs[1].results.stats.duration","valueA":17937,"valueB":17835,"isEqual":false},{"path":"data.specs[1].results.stats.endedAt","valueA":"2023-09-14T20:44:06.926Z","valueB":"2023-09-15T04:43:40.907Z","isEqual":false},{"path":"data.specs[1].results.stats.startedAt","valueA":"2023-09-14T20:43:48.989Z","valueB":"2023-09-15T04:43:23.072Z","isEqual":false},{"path":"data.specs[1].results.stats.failures","valueA":1,"valueB":1,"isEqual":true},{"path":"data.specs[1].results.stats.passes","valueA":2,"valueB":2,"isEqual":true},{"path":"data.specs[1].results.stats.pending","valueA":0,"valueB":0,"isEqual":true},{"path":"data.specs[1].results.stats.skipped","valueA":0,"valueB":0,"isEqual":true},{"path":"data.specs[1].results.stats.suites","valueA":1,"valueB":1,"isEqual":true},{"path":"data.specs[1].results.stats.tests","valueA":3,"valueB":3,"isEqual":true},{"path":"data.specs[1].results.stats.wallClockDuration","valueA":17937,"valueB":17835,"isEqual":false},{"path":"data.specs[1].results.stats.wallClockStartedAt","valueA":"2023-09-14T20:43:48.989Z","valueB":"2023-09-15T04:43:23.072Z","isEqual":false},{"path":"data.specs[1].results.stats.wallClockEndedAt","valueA":"2023-09-14T20:44:06.926Z","valueB":"2023-09-15T04:43:40.907Z","isEqual":false},{"path":"data.specs[1].results.screenshots[0].screenshotId","valueA":"57h2WEN48EvSAIIlfTT4E","valueB":"BCOx8SuU8mWHEsviyOWek","isEqual":false},{"path":"data.specs[1].results.screenshots[0].name","valueA":"screenshot","valueB":"screenshot","isEqual":true},{"path":"data.specs[1].results.screenshots[0].testId","valueA":"r0","valueB":"r0","isEqual":true},{"path":"data.specs[1].results.screenshots[0].testAttemptIndex","valueA":0,"valueB":0,"isEqual":true},{"path":"data.specs[1].results.screenshots[0].takenAt","valueA":"2023-09-14T20:43:53.234Z","valueB":"2023-09-15T04:43:27.360Z","isEqual":false},{"path":"data.specs[1].results.screenshots[0].screenshotURL","valueA":"https://fs.currents.dev/64af8eee5411be7416b22d5f/gDVpbvKNPM94.png?Expires=1694983444&Key-Pair-Id=K1ZNDCCIZ3P4FU&Signature=DedWmjKu84UyRJSgYO8ylE9U4vjxI-MSRHGcR1sCi2FYB705KWAYMWCtOvS6v0YNzsriKlmnCJHUySPNpGtKAASz3UGPRUM~45acPgea3fU~aeGG6KgnLX6LJFL4wNrShhApxLnt6mCmMPFYLJyvq~qfmqBTsSQ3RKZEEN4aQY8CbbQQObSRpgRtHCWy8RSiPU9YPcs-Ie~AeWronMs93bAi-6JocASTDT0jUkgADeNR8kIH4RU-Y78a8qR8s9cigOhFN26Ni2mbb-ibmPe0SNcKu~1sHfye~ZsuV2VPzmE24Y9zmovqj7Ifuf3QhofzqU2TiHQAcFIz5RAMl9~bSg__","valueB":"https://fs.currents.dev/64af8eee5411be7416b22d5f/QIZSLHSauBDB.png?Expires=1695012213&Key-Pair-Id=K1ZNDCCIZ3P4FU&Signature=qoxZPS4DOFXlFHEJKbeALxo47lviebR19nmWOsZqNGltmkPmf2i4w6V0EdUJYmU6d7tpcBc1ZcIzWfgpW4d1ojrrqvGNwHUY2IT4nWBwRjGY5gUwIFtCCNnKZRvNRmLLxG7I8UkGbmn7v1VeOQEYM73wQ7wZXkA2W55E1hZG-aX-fDwt~Tv-5Miv9znLaq3MRVyK08-n1tWUB~RrK-9Of53D4IEykxolKsB~IPn3gTWYeca3CtgfUXvKv3LIwva2pXvu0d~dZPGAAecUhEZ1hsVbX9ToA9BSfHja~1rf1uOy5~okw1f80UKt-3ribDCkXBRW47fb2s6HtkB9iLXwJQ__","isEqual":false},{"path":"data.specs[1].results.screenshots[0].height","valueA":0,"valueB":0,"isEqual":true},{"path":"data.specs[1].results.screenshots[0].width","valueA":0,"valueB":0,"isEqual":true},{"path":"data.specs[1].results.screenshots[0].size","valueB":375352,"isEqual":false,"note":"Does not exist"},{"path":"data.specs[1].results.screenshots[0].dimensions","valueB":{"width":2560,"height":1440},"isEqual":false,"note":"Does not exist"},{"path":"data.specs[1].results.screenshots[0].multipart","valueB":false,"isEqual":false,"note":"Does not exist"},{"path":"data.specs[1].results.screenshots[0].specName","valueB":"b.spec.js","isEqual":false,"note":"Does not exist"},{"path":"data.specs[1].results.screenshots[0].testFailure","valueB":true,"isEqual":false,"note":"Does not exist"},{"path":"data.specs[1].results.screenshots[0].scaled","valueB":true,"isEqual":false,"note":"Does not exist"},{"path":"data.specs[1].results.screenshots[0].blackout","valueB":[],"isEqual":false,"note":"Does not exist"},{"path":"data.specs[1].results.screenshots[0].duration","valueB":198,"isEqual":false,"note":"Does not exist"},{"path":"data.specs[1].results.screenshots[1].screenshotId","valueA":"H5FPts6mzITTWnOhhQUdy","valueB":"NJri2iK8OswiMc7p7fTOV","isEqual":false},{"path":"data.specs[1].results.screenshots[1].name","valueA":"screenshot","valueB":"screenshot","isEqual":true},{"path":"data.specs[1].results.screenshots[1].testId","valueA":"r0","valueB":"r0","isEqual":true},{"path":"data.specs[1].results.screenshots[1].testAttemptIndex","valueA":1,"valueB":1,"isEqual":true},{"path":"data.specs[1].results.screenshots[1].takenAt","valueA":"2023-09-14T20:43:57.582Z","valueB":"2023-09-15T04:43:31.689Z","isEqual":false},{"path":"data.specs[1].results.screenshots[1].screenshotURL","valueA":"https://fs.currents.dev/64af8eee5411be7416b22d5f/h1mE1S27FJEO.png?Expires=1694983444&Key-Pair-Id=K1ZNDCCIZ3P4FU&Signature=C3j0lSCQW~7ZEbQ0ALcBeQa5Rt0DXqkxTahbYVV0D8rh9ghnJGL1i8p70xPphmaPwEydeUw7-ly2biT~8NMyLoyBfYhCuuxHirrJ~jCvcFw4KUl4ODLfOKX70TLA6ut7aJWfWlK17JtjvL2hWZlgrRn-xS1N0JNBoucsyDEO7Qa9wEB4h7qmg2aHU31ZswvvqD8QHzI4Qt-o9e7rQrom3hvXNBcI21Tq2Gg9jlYiDw62ZogCX24uIYFg68fRBmnF6sTA4pSoVGMfMPhfjhXFEiLZ5J5J1xq0pUlVVppukQL2R8hy8z2RbJSattq9AeWaFEpcwmJKHDffWfvjThPTng__","valueB":"https://fs.currents.dev/64af8eee5411be7416b22d5f/50gsrtFccmVy.png?Expires=1695012213&Key-Pair-Id=K1ZNDCCIZ3P4FU&Signature=lwURuuK1zJJNAfLWI7u1UAkuVorK-47ktEuh17z7KVz~YYV3ZP-7YTa8FnEYYkZgnWYMxjB0W5vgaNnlBahqTHDkCA6K4f8dUlbHRXSDFUOK1eho76UB-BGwvylRMEyEFNASOR6JXS~vgYjBiee65j3lJQVQC3vvUGEUzSUQQoeX24mTl7NSlw0DCgW87DtrWwXOz9YE1norzoBK8LDuY~AzODqkLC7B20SN8B~x2~N9XmdQw7I~7DWURf0h0G7NLOKo4fSIpHXGutOoTkBkwkhXOz5T~U5uWrHuvhSCpMjDZHAa~oTFM~arkJ524hrbSd6KoezneOvSpQ~8IakXVg__","isEqual":false},{"path":"data.specs[1].results.screenshots[1].height","valueA":0,"valueB":0,"isEqual":true},{"path":"data.specs[1].results.screenshots[1].width","valueA":0,"valueB":0,"isEqual":true},{"path":"data.specs[1].results.screenshots[1].size","valueB":379091,"isEqual":false,"note":"Does not exist"},{"path":"data.specs[1].results.screenshots[1].dimensions","valueB":{"width":2560,"height":1440},"isEqual":false,"note":"Does not exist"},{"path":"data.specs[1].results.screenshots[1].multipart","valueB":false,"isEqual":false,"note":"Does not exist"},{"path":"data.specs[1].results.screenshots[1].specName","valueB":"b.spec.js","isEqual":false,"note":"Does not exist"},{"path":"data.specs[1].results.screenshots[1].testFailure","valueB":true,"isEqual":false,"note":"Does not exist"},{"path":"data.specs[1].results.screenshots[1].scaled","valueB":true,"isEqual":false,"note":"Does not exist"},{"path":"data.specs[1].results.screenshots[1].blackout","valueB":[],"isEqual":false,"note":"Does not exist"},{"path":"data.specs[1].results.screenshots[1].duration","valueB":188,"isEqual":false,"note":"Does not exist"},{"path":"data.specs[1].results.screenshots[2].screenshotId","valueA":"u5UeY6qNjnicXcEeuDWhw","valueB":"vcDQROd4QCXewBloHZmf8","isEqual":false},{"path":"data.specs[1].results.screenshots[2].name","valueA":"screenshot","valueB":"screenshot","isEqual":true},{"path":"data.specs[1].results.screenshots[2].testId","valueA":"r0","valueB":"r0","isEqual":true},{"path":"data.specs[1].results.screenshots[2].testAttemptIndex","valueA":2,"valueB":2,"isEqual":true},{"path":"data.specs[1].results.screenshots[2].takenAt","valueA":"2023-09-14T20:44:01.919Z","valueB":"2023-09-15T04:43:36.016Z","isEqual":false},{"path":"data.specs[1].results.screenshots[2].screenshotURL","valueA":"https://fs.currents.dev/64af8eee5411be7416b22d5f/WTY8uVckQ4s8.png?Expires=1694983444&Key-Pair-Id=K1ZNDCCIZ3P4FU&Signature=AF6l9fKMurQYWo2OWL5~PL-SmcLEZIAVoY9MaI9dgXhuX-DF-0VNi5zpzdck6cnutGQyoz~ombSoORAjigPDOA0bertnGs~zFRAOxAGZoF2-R30eCN0zfRk5i5bmRALUSnR92CcVhkTXgjZ7ijCIX-lHCDIrKTrDpLsAV3HPbNv3cxhkH8N4Su3zNmIDpfVePrTvkpFj23cmQuJoFg6i6Fpo1ig2CL3LDbyc35wDOqnPO2r8qRPjKRYFEsO7Jh5BFo7rNN1bQZVsW2XeYdQ9JX-JlXZWyb3~yo6Hhjy9rhGgeCtaXAxnyH1G-nC0tXS7TrMTg1uwlY74jLPf1KZ0pw__","valueB":"https://fs.currents.dev/64af8eee5411be7416b22d5f/LoKkRAUsJCda.png?Expires=1695012213&Key-Pair-Id=K1ZNDCCIZ3P4FU&Signature=UFfFYEigvF63EJvKMU-IngmBqaKJrodBB5AGtTyxtq2flcagl21EUT1H0OP6onY57c93S17WrwvjpV9a-5MuVuXEBeGYh4oC7l930CckUCjPd6oLWN0uCmoDXH6K3S-sQV52WaM7FedrAGKmVtgOrvJAvdb7d1fxNzEAkpNhaedXUhmIemwvGfF~vU6CABXl39~mTVWUuFliIQuRm98ND8koISX1isZYNjCJCXQb0VjO1TM8--ZQ8s1b7CniKrSN1YtFu1QB4jAWm1SaEQc-UVQNZrOl9scwLLpqIkyp~VvNv4Pkjb3CY9nYlxeh-400su4qNiFuVtvjFSasbc8T7w__","isEqual":false},{"path":"data.specs[1].results.screenshots[2].height","valueA":0,"valueB":0,"isEqual":true},{"path":"data.specs[1].results.screenshots[2].width","valueA":0,"valueB":0,"isEqual":true},{"path":"data.specs[1].results.screenshots[2].size","valueB":379021,"isEqual":false,"note":"Does not exist"},{"path":"data.specs[1].results.screenshots[2].dimensions","valueB":{"width":2560,"height":1440},"isEqual":false,"note":"Does not exist"},{"path":"data.specs[1].results.screenshots[2].multipart","valueB":false,"isEqual":false,"note":"Does not exist"},{"path":"data.specs[1].results.screenshots[2].specName","valueB":"b.spec.js","isEqual":false,"note":"Does not exist"},{"path":"data.specs[1].results.screenshots[2].testFailure","valueB":true,"isEqual":false,"note":"Does not exist"},{"path":"data.specs[1].results.screenshots[2].scaled","valueB":true,"isEqual":false,"note":"Does not exist"},{"path":"data.specs[1].results.screenshots[2].blackout","valueB":[],"isEqual":false,"note":"Does not exist"},{"path":"data.specs[1].results.screenshots[2].duration","valueB":208,"isEqual":false,"note":"Does not exist"},{"path":"data.specs[1].results.screenshots[3].screenshotId","valueA":"fhQVjWRkyv1T36tJvQJtB","valueB":"FHNXQrfGxuZmiygUMdMQZ","isEqual":false},{"path":"data.specs[1].results.screenshots[3].name","valueA":"screenshot","valueB":"screenshot","isEqual":true},{"path":"data.specs[1].results.screenshots[3].testId","valueA":"r2","valueB":"r2","isEqual":true},{"path":"data.specs[1].results.screenshots[3].testAttemptIndex","valueA":0,"valueB":0,"isEqual":true},{"path":"data.specs[1].results.screenshots[3].takenAt","valueA":"2023-09-14T20:44:06.568Z","valueB":"2023-09-15T04:43:40.495Z","isEqual":false},{"path":"data.specs[1].results.screenshots[3].screenshotURL","valueA":"https://fs.currents.dev/64af8eee5411be7416b22d5f/CUKgrCHMfGne.png?Expires=1694983444&Key-Pair-Id=K1ZNDCCIZ3P4FU&Signature=YyLSGmPONcjOzPZZ6rUMSctIgUieHxQYbsFUzR12O647yd02GwXI~62-j90QOoJ85Qd4aHqEpc6nR-ceJ-ft5SRuFDF6J68v1kZ~3OjMdOoZF-YB0gilvUHyXTHQYfsgRmkrRHZU-HwKXnroCBAKmHiifO~xqRC7DrctEuvuPOgrN0Gh6f-NSwwn6jnoDXNxx1AVQBtJB~N1p0WTyURB-fkvRCKSBIkSu2P19YqF3URkWFNyKnwqhqzGuhjQejytUIPmL24NOFFyfJ-rOJ5XskefmaHP1hZ5IBeGHOK0fNt5un5EhhO04K4hQ8llQ7SNbpgQAEi90Xsh~RfXur4EEg__","valueB":"https://fs.currents.dev/64af8eee5411be7416b22d5f/8TUY9mAhsLmc.png?Expires=1695012213&Key-Pair-Id=K1ZNDCCIZ3P4FU&Signature=kBq7aw8~IF8H55Ipp3nUpRpZSVkf~YyWh7SYMD4n~RoXB8P~vGGnb3KPJQITshXFYtaSm5KCnM2f7B3WQfHWN9ha-bEp2MqHE-yMfmc4Y6QzoxSxCd0zHWyLSiqHXTBZWzgpoyh46pPvTqqH6IIbenV-Dd55XPtdmLQY1HBgGTMc3lAI2gL4JlL3w06955t9PH4NWA4oBQx-TDgRNTOkMeixJGYYEgP2h6J8QtrD8Tgw8sPX91A5i2kcETRPSwmu~oBHhm5IhDaoKd8NsJYmebF2Q3WgmCz2mdxEyd~VTRQy5PqgcVUgeRi1S0enyWqZM85X8DE5RVrs0AALIMtJRQ__","isEqual":false},{"path":"data.specs[1].results.screenshots[3].height","valueA":0,"valueB":0,"isEqual":true},{"path":"data.specs[1].results.screenshots[3].width","valueA":0,"valueB":0,"isEqual":true},{"path":"data.specs[1].results.screenshots[3].size","valueB":379089,"isEqual":false,"note":"Does not exist"},{"path":"data.specs[1].results.screenshots[3].dimensions","valueB":{"width":2560,"height":1440},"isEqual":false,"note":"Does not exist"},{"path":"data.specs[1].results.screenshots[3].multipart","valueB":false,"isEqual":false,"note":"Does not exist"},{"path":"data.specs[1].results.screenshots[3].specName","valueB":"b.spec.js","isEqual":false,"note":"Does not exist"},{"path":"data.specs[1].results.screenshots[3].testFailure","valueB":true,"isEqual":false,"note":"Does not exist"},{"path":"data.specs[1].results.screenshots[3].scaled","valueB":true,"isEqual":false,"note":"Does not exist"},{"path":"data.specs[1].results.screenshots[3].blackout","valueB":[],"isEqual":false,"note":"Does not exist"},{"path":"data.specs[1].results.screenshots[3].duration","valueB":197,"isEqual":false,"note":"Does not exist"},{"path":"data.specs[1].results.exception","valueA":null,"valueB":null,"isEqual":true},{"path":"data.specs[1].results.flaky","valueA":1,"valueB":1,"isEqual":true},{"path":"data.specs[2].groupId","valueA":"run-compat-test-2023-09-14T20:43:11.518Z","valueB":"run-compat-test-2023-09-15T04:42:56.383Z","isEqual":false},{"path":"data.specs[2].spec","valueA":"cypress/e2e/c.spec.js","valueB":"cypress/e2e/c.spec.js","isEqual":true},{"path":"data.specs[2].instanceId","valueA":"l5QtnbPmSUXI","valueB":"VT96MmNcsuPy","isEqual":false},{"path":"data.specs[2].claimedAt","valueA":"2023-09-14T20:43:15.702Z","valueB":"2023-09-15T04:42:59.612Z","isEqual":false},{"path":"data.specs[2].completedAt","valueA":"2023-09-14T20:43:48.386Z","valueB":"2023-09-15T04:43:22.263Z","isEqual":false},{"path":"data.specs[2].machineId","valueA":"BP6PPzRBiUb7","valueB":"rAA1SgkfccF9","isEqual":false},{"path":"data.specs[2].worker","valueA":null,"valueB":null,"isEqual":true},{"path":"data.specs[2].results.videoUrl","valueA":"https://fs.currents.dev/64af8eee5411be7416b22d5f/l5QtnbPmSUXI_LwiMr6Ob2pM3.mp4?Expires=1694983444&Key-Pair-Id=K1ZNDCCIZ3P4FU&Signature=yi58Q1XzRTq8CAP41bv7Ey46DBgRuYFPAxC4pSuriSDd2v3nLoEUcVtwk7bg3DV1Nb9EHNDMsLbxrNVqUywEi-XyIHunvKtzZA1a96btbX58GyorII3tq3dUYt88k~NamXp34zgTkw7oNHwbRSpZo-EVfXrXNHKjX-VEPvMHMCbHMB8qZ4EwQzzjFyLFnbU7OhZFPdv-8cQP7EWy1zd2lMDsjuDfFHrJu0NulD3eM-KqWxN7EIA3HhDhvjZ56tnQvKgTlbAJRbwS9NBiDuCy8Xz~DQLULwsYBG1cK9gFHGBMDzDJBvvb4jpS77asruGBkBVPSjtI~roMQot9IpzF8A__","valueB":null,"isEqual":false},{"path":"data.specs[2].results.stats.duration","valueA":51,"valueB":47,"isEqual":false},{"path":"data.specs[2].results.stats.endedAt","valueA":"2023-09-14T20:43:43.988Z","valueB":"2023-09-15T04:43:21.831Z","isEqual":false},{"path":"data.specs[2].results.stats.startedAt","valueA":"2023-09-14T20:43:43.937Z","valueB":"2023-09-15T04:43:21.784Z","isEqual":false},{"path":"data.specs[2].results.stats.failures","valueA":0,"valueB":0,"isEqual":true},{"path":"data.specs[2].results.stats.passes","valueA":0,"valueB":0,"isEqual":true},{"path":"data.specs[2].results.stats.pending","valueA":1,"valueB":1,"isEqual":true},{"path":"data.specs[2].results.stats.skipped","valueA":0,"valueB":0,"isEqual":true},{"path":"data.specs[2].results.stats.suites","valueA":1,"valueB":1,"isEqual":true},{"path":"data.specs[2].results.stats.tests","valueA":1,"valueB":1,"isEqual":true},{"path":"data.specs[2].results.stats.wallClockDuration","valueA":51,"valueB":47,"isEqual":false},{"path":"data.specs[2].results.stats.wallClockStartedAt","valueA":"2023-09-14T20:43:43.937Z","valueB":"2023-09-15T04:43:21.784Z","isEqual":false},{"path":"data.specs[2].results.stats.wallClockEndedAt","valueA":"2023-09-14T20:43:43.988Z","valueB":"2023-09-15T04:43:21.831Z","isEqual":false},{"path":"data.specs[2].results.exception","valueA":null,"valueB":null,"isEqual":true},{"path":"data.specs[2].results.flaky","valueA":0,"valueB":0,"isEqual":true},{"path":"data.specs[3].groupId","valueA":"run-compat-test-2023-09-14T20:43:11.518Z","valueB":"run-compat-test-2023-09-15T04:42:56.383Z","isEqual":false},{"path":"data.specs[3].spec","valueA":"cypress/e2e/d.spec.js","valueB":"cypress/e2e/d.spec.js","isEqual":true},{"path":"data.specs[3].instanceId","valueA":"fRnjbuOpqpHA","valueB":"qYf9vWUqdmin","isEqual":false},{"path":"data.specs[3].claimedAt","valueA":"2023-09-14T20:43:15.696Z","valueB":"2023-09-15T04:42:59.516Z","isEqual":false},{"path":"data.specs[3].completedAt","valueA":"2023-09-14T20:43:43.179Z","valueB":"2023-09-15T04:43:21.209Z","isEqual":false},{"path":"data.specs[3].machineId","valueA":"BP6PPzRBiUb7","valueB":"rAA1SgkfccF9","isEqual":false},{"path":"data.specs[3].worker","valueA":null,"valueB":null,"isEqual":true},{"path":"data.specs[3].results.videoUrl","valueA":"https://fs.currents.dev/64af8eee5411be7416b22d5f/fRnjbuOpqpHA_C7EkAIj86t0g.mp4?Expires=1694983444&Key-Pair-Id=K1ZNDCCIZ3P4FU&Signature=tIHxALkA97hXn16mzB2o8JW~iQ-HD5hst2Hk2ExHlYa42W7nqX947wF7Rhog84rdqIQZ2paEaJeeyVNNIp6yDhxZ9PjGoIo59~wa-VAg8aPHzAbTlPtI8rH5n5-DqCoOvQ4dSID5yo1-toehcF-fyVpoSB5LZQtj0wt0JXa2FcfZv5zbvJr8PpCn-GPEdtmaKv8WBSV-LwgR4Wp4xlkWYinpS7zlWpY4MgIbYOwu1-N6ApWoZO9xqQK59oDPmUcQq3MOuI4gnMD6eZ6JhBlGG49jrh55qnY41uLaYixkjjz79606omCGCqF5bndIw61kBvcj7UUwOatKq57oAR9-ig__","valueB":null,"isEqual":false},{"path":"data.specs[3].results.stats.duration","valueA":888,"valueB":977,"isEqual":false},{"path":"data.specs[3].results.stats.endedAt","valueA":"2023-09-14T20:43:41.590Z","valueB":"2023-09-15T04:43:20.767Z","isEqual":false},{"path":"data.specs[3].results.stats.startedAt","valueA":"2023-09-14T20:43:40.702Z","valueB":"2023-09-15T04:43:19.790Z","isEqual":false},{"path":"data.specs[3].results.stats.failures","valueA":0,"valueB":0,"isEqual":true},{"path":"data.specs[3].results.stats.passes","valueA":2,"valueB":2,"isEqual":true},{"path":"data.specs[3].results.stats.pending","valueA":0,"valueB":0,"isEqual":true},{"path":"data.specs[3].results.stats.skipped","valueA":0,"valueB":0,"isEqual":true},{"path":"data.specs[3].results.stats.suites","valueA":1,"valueB":1,"isEqual":true},{"path":"data.specs[3].results.stats.tests","valueA":2,"valueB":2,"isEqual":true},{"path":"data.specs[3].results.stats.wallClockDuration","valueA":888,"valueB":977,"isEqual":false},{"path":"data.specs[3].results.stats.wallClockStartedAt","valueA":"2023-09-14T20:43:40.702Z","valueB":"2023-09-15T04:43:19.790Z","isEqual":false},{"path":"data.specs[3].results.stats.wallClockEndedAt","valueA":"2023-09-14T20:43:41.590Z","valueB":"2023-09-15T04:43:20.767Z","isEqual":false},{"path":"data.specs[3].results.screenshots[0].screenshotId","valueA":"ZnujCZSGRIziSR9JyyG5M","valueB":"_ylXpqLg2SCzrSWLr-QYn","isEqual":false},{"path":"data.specs[3].results.screenshots[0].name","valueA":"internal-assert-screenshot","valueB":"internal-assert-screenshot","isEqual":true},{"path":"data.specs[3].results.screenshots[0].testId","valueA":"r0","valueB":"r0","isEqual":true},{"path":"data.specs[3].results.screenshots[0].testAttemptIndex","valueA":0,"valueB":0,"isEqual":true},{"path":"data.specs[3].results.screenshots[0].takenAt","valueA":"2023-09-14T20:43:40.894Z","valueB":"2023-09-15T04:43:20.008Z","isEqual":false},{"path":"data.specs[3].results.screenshots[0].screenshotURL","valueA":"https://fs.currents.dev/64af8eee5411be7416b22d5f/E5colOvcrMZB.png?Expires=1694983444&Key-Pair-Id=K1ZNDCCIZ3P4FU&Signature=UcHTQbfOBNZDzcDh-wfy8CMbHxAI2Trhy0DClcYp3s-zzWGBLJjXng6nr1MPfwhfOjjDRewgw0tLGGkXe91W8cqqICGOsyf0AGyDIRh~Jz2AydVRkAZgr~e4X7~89attkKMuOFiWgUgjQfv8HLcpEOyN2jPD0oG1VhiRV8l1C62qy-1nhGEjRVWeJ8wzXl-XkDtex7-HecJFei8H7RguQ2KG5fedRxxGrEYkYy~d7G4LsRx3dVP9Ym-Xgq~JrOdJZXPZILlw7Y5Suxl42d534K7jKMp45yIbO1ILDLhTSc5Q1b0IdSYtb2Zxvt-RAo13TX1Cmav57lYap3PzrFMLqw__","valueB":"https://fs.currents.dev/64af8eee5411be7416b22d5f/p4rm5jkIxAdz.png?Expires=1695012213&Key-Pair-Id=K1ZNDCCIZ3P4FU&Signature=p-wSFamkGk4TxEAtMtHJvPLT1nF4tpOD8v5AwEYzWSrIwnMVP9NGExzD4Rn5BV51QUTU-bEW1kkd1RMpYTJ69776SvdpUMoMq7ZQl3nX~W7ZRyvCgTwD--c6oBWkvl5O2Im3m6LsfJjYci68y2hSNzBC4InBxqad~hOTJ~rUsf~g4ekV-uZWvWpRNtJYobIEAeLezyTeEZlp-vTnngLC7zoW0XFscOm1H9ge058quwf-QP-johY8k28AWb5DfNoNhxdscMuEGUutnI~Q305l~URcndYdzfXURmWaTyDoiV-88BtITqCfnjuWLw7xfrY~txWumPgWAGnQj~C7HSDY0A__","isEqual":false},{"path":"data.specs[3].results.screenshots[0].height","valueA":0,"valueB":0,"isEqual":true},{"path":"data.specs[3].results.screenshots[0].width","valueA":0,"valueB":0,"isEqual":true},{"path":"data.specs[3].results.screenshots[0].size","valueB":234575,"isEqual":false,"note":"Does not exist"},{"path":"data.specs[3].results.screenshots[0].dimensions","valueB":{"width":2000,"height":1320},"isEqual":false,"note":"Does not exist"},{"path":"data.specs[3].results.screenshots[0].multipart","valueB":true,"isEqual":false,"note":"Does not exist"},{"path":"data.specs[3].results.screenshots[0].pixelRatio","valueB":2,"isEqual":false,"note":"Does not exist"},{"path":"data.specs[3].results.screenshots[0].specName","valueB":"d.spec.js","isEqual":false,"note":"Does not exist"},{"path":"data.specs[3].results.screenshots[0].scaled","valueB":false,"isEqual":false,"note":"Does not exist"},{"path":"data.specs[3].results.screenshots[0].blackout","valueB":[],"isEqual":false,"note":"Does not exist"},{"path":"data.specs[3].results.screenshots[0].duration","valueB":619,"isEqual":false,"note":"Does not exist"},{"path":"data.specs[3].results.exception","valueA":null,"valueB":null,"isEqual":true},{"path":"data.specs[3].results.flaky","valueA":0,"valueB":0,"isEqual":true},{"path":"data.specs[4].groupId","valueA":"run-compat-test-2023-09-14T20:43:11.518Z","valueB":"run-compat-test-2023-09-15T04:42:56.383Z","isEqual":false},{"path":"data.specs[4].spec","valueA":"cypress/e2e/e.spec.js","valueB":"cypress/e2e/e.spec.js","isEqual":true},{"path":"data.specs[4].instanceId","valueA":"Lrhp5PLz5Zh3","valueB":"l3ebuCsqoBcS","isEqual":false},{"path":"data.specs[4].claimedAt","valueA":"2023-09-14T20:43:15.689Z","valueB":"2023-09-15T04:42:59.474Z","isEqual":false},{"path":"data.specs[4].completedAt","valueA":"2023-09-14T20:43:39.771Z","valueB":"2023-09-15T04:43:19.196Z","isEqual":false},{"path":"data.specs[4].machineId","valueA":"BP6PPzRBiUb7","valueB":"rAA1SgkfccF9","isEqual":false},{"path":"data.specs[4].worker","valueA":null,"valueB":null,"isEqual":true},{"path":"data.specs[4].results.videoUrl","valueA":"https://fs.currents.dev/64af8eee5411be7416b22d5f/Lrhp5PLz5Zh3_nSAHETvjMtQi.mp4?Expires=1694983444&Key-Pair-Id=K1ZNDCCIZ3P4FU&Signature=iRNbrzsGCH5qVlE2VmxHXhOdI3naRxsiuc5-WLUQXZqkK6tSfEXb2kH1lrC-XiVJCx8vovtMcujC1PAPjzIuyPdAWPLwG225gqjw2P9pjPM5a9wRvALJET5PNQ9iZaXS1Q5HPGspohJbYatVIDRkZXZecCNoGjx2RO~q3kWYKDJBExmaMQNgxqdOiZOoEhJLAbEbsZz2adZ0GSAmwqSQvoF0VRhTyKQIMaRYAYbhkyJrhzlonVGRx7z2mVnTbcrOK2ItRaa8YPE9TUaF1i57wDeB5uc8xxJRMvMFbFviKCYk~o5Kfu2XsY8TxvGVYI-e~oTScSCrQmIsPup5apacIA__","valueB":null,"isEqual":false},{"path":"data.specs[4].results.stats.duration","valueA":461,"valueB":472,"isEqual":false},{"path":"data.specs[4].results.stats.endedAt","valueA":"2023-09-14T20:43:38.197Z","valueB":"2023-09-15T04:43:18.746Z","isEqual":false},{"path":"data.specs[4].results.stats.startedAt","valueA":"2023-09-14T20:43:37.736Z","valueB":"2023-09-15T04:43:18.274Z","isEqual":false},{"path":"data.specs[4].results.stats.failures","valueA":1,"valueB":1,"isEqual":true},{"path":"data.specs[4].results.stats.passes","valueA":0,"valueB":0,"isEqual":true},{"path":"data.specs[4].results.stats.pending","valueA":0,"valueB":0,"isEqual":true},{"path":"data.specs[4].results.stats.skipped","valueA":0,"valueB":0,"isEqual":true},{"path":"data.specs[4].results.stats.suites","valueA":1,"valueB":1,"isEqual":true},{"path":"data.specs[4].results.stats.tests","valueA":1,"valueB":1,"isEqual":true},{"path":"data.specs[4].results.stats.wallClockDuration","valueA":461,"valueB":472,"isEqual":false},{"path":"data.specs[4].results.stats.wallClockStartedAt","valueA":"2023-09-14T20:43:37.736Z","valueB":"2023-09-15T04:43:18.274Z","isEqual":false},{"path":"data.specs[4].results.stats.wallClockEndedAt","valueA":"2023-09-14T20:43:38.197Z","valueB":"2023-09-15T04:43:18.746Z","isEqual":false},{"path":"data.specs[4].results.screenshots[0].screenshotId","valueA":"-hyobMsIQuVaYL7BmfYKS","valueB":"YQhwotG1lRQB9xZigtQEi","isEqual":false},{"path":"data.specs[4].results.screenshots[0].name","valueA":"screenshot","valueB":"screenshot","isEqual":true},{"path":"data.specs[4].results.screenshots[0].testId","valueA":"r0","valueB":"r0","isEqual":true},{"path":"data.specs[4].results.screenshots[0].testAttemptIndex","valueA":0,"valueB":0,"isEqual":true},{"path":"data.specs[4].results.screenshots[0].takenAt","valueA":"2023-09-14T20:43:37.940Z","valueB":"2023-09-15T04:43:18.468Z","isEqual":false},{"path":"data.specs[4].results.screenshots[0].screenshotURL","valueA":"https://fs.currents.dev/64af8eee5411be7416b22d5f/rURm2Cf4i5t0.png?Expires=1694983444&Key-Pair-Id=K1ZNDCCIZ3P4FU&Signature=woM3XbSmNuOcjfcgq~iRJ20EFMuwqoTjqWulf4pnudhW3dWStrZ0MbSFGDfXUcEY7QLPyzJHI84mK2DBB26B7qE3PV7c4li6kuGrJnZK0Y2EffSh78fmF-aVr2M~eGWikEYWOUtBxgLoACsrhj6xDxYayKqqVyEtLWHCjKGxJlkIMcr3FzH3cIQAM1YKfidmcv6gyO-1uL2BY7Um9tzR-0OnOek72XxTEGNvUqjxHMFMo2jJtrri8exAaURVVDx7F4Uwr4fkn1P-gqMHv7r7tdv8sA~2aYaJMDv1C1K-xz7CVh3N~4Gvd-mGcF0M8ZG4uXnRzz3HwFxIVRUaMtJ6~Q__","valueB":"https://fs.currents.dev/64af8eee5411be7416b22d5f/69rug4bWWUTW.png?Expires=1695012213&Key-Pair-Id=K1ZNDCCIZ3P4FU&Signature=ViphqdJdVNHSubmdWTM3dUdZYWpBtNdekyS~XT32au2KX68~1ZuU6GFm6D4~TMJ1aHTMNT4N65n~L1A8uCNkp1iJ46zd67F5m002I~xCOQrU~kpcI54-DwWQ9TD2Ga6DxN3OGliGEmp2vOKwn6S73TLF2qJ~-VuODx9nD4gKc2uLI9OyN~1NGkP2fZ4RNOe4UFcT-a4P7pu2WKKM1bpfdMpMmEpTDl7FWgc99jOz5QutOsgC2mKZ~ZyXBtHMXpMZJGZbaxEuD56~HiTKQvGuMJrOvYj-XB14umbx4Uvt2E0onZQKbQr3p5fzPksATstKktO9RbtH8naijwe84IWtxQ__","isEqual":false},{"path":"data.specs[4].results.screenshots[0].height","valueA":0,"valueB":0,"isEqual":true},{"path":"data.specs[4].results.screenshots[0].width","valueA":0,"valueB":0,"isEqual":true},{"path":"data.specs[4].results.screenshots[0].size","valueB":334685,"isEqual":false,"note":"Does not exist"},{"path":"data.specs[4].results.screenshots[0].dimensions","valueB":{"width":2560,"height":1440},"isEqual":false,"note":"Does not exist"},{"path":"data.specs[4].results.screenshots[0].multipart","valueB":false,"isEqual":false,"note":"Does not exist"},{"path":"data.specs[4].results.screenshots[0].specName","valueB":"e.spec.js","isEqual":false,"note":"Does not exist"},{"path":"data.specs[4].results.screenshots[0].testFailure","valueB":true,"isEqual":false,"note":"Does not exist"},{"path":"data.specs[4].results.screenshots[0].scaled","valueB":true,"isEqual":false,"note":"Does not exist"},{"path":"data.specs[4].results.screenshots[0].blackout","valueB":[],"isEqual":false,"note":"Does not exist"},{"path":"data.specs[4].results.screenshots[0].duration","valueB":217,"isEqual":false,"note":"Does not exist"},{"path":"data.specs[4].results.exception","valueA":null,"valueB":null,"isEqual":true},{"path":"data.specs[4].results.flaky","valueA":0,"valueB":0,"isEqual":true},{"path":"data.completionState","valueA":"COMPLETE","valueB":"COMPLETE","isEqual":true},{"path":"data.status","valueA":"FAILED","valueB":"FAILED","isEqual":true}] \ No newline at end of file diff --git a/e2e/cypress-12-demo/validation-results/cypress-cloud-validation.json b/e2e/cypress-12-demo/validation-results/cypress-cloud-validation.json new file mode 100644 index 0000000..6b546ad --- /dev/null +++ b/e2e/cypress-12-demo/validation-results/cypress-cloud-validation.json @@ -0,0 +1 @@ +[{"path":"totalDuration","valueA":32931,"valueB":32978,"isEqual":false},{"path":"totalSuites","valueA":5,"valueB":5,"isEqual":true},{"path":"totalPending","valueA":1,"valueB":1,"isEqual":true},{"path":"totalFailed","valueA":3,"valueB":3,"isEqual":true},{"path":"totalSkipped","valueA":0,"valueB":0,"isEqual":true},{"path":"totalPassed","valueA":4,"valueB":4,"isEqual":true},{"path":"totalTests","valueA":8,"valueB":8,"isEqual":true},{"path":"runs[0].stats.duration","valueA":13594,"valueB":13647,"isEqual":false},{"path":"runs[0].stats.endedAt","valueA":"2023-09-14T20:43:33.432Z","valueB":"2023-09-15T04:43:17.333Z","isEqual":false},{"path":"runs[0].stats.startedAt","valueA":"2023-09-14T20:43:19.838Z","valueB":"2023-09-15T04:43:03.686Z","isEqual":false},{"path":"runs[0].stats.failures","valueA":1,"valueB":1,"isEqual":true},{"path":"runs[0].stats.passes","valueA":0,"valueB":0,"isEqual":true},{"path":"runs[0].stats.pending","valueA":0,"valueB":0,"isEqual":true},{"path":"runs[0].stats.skipped","valueA":0,"valueB":0,"isEqual":true},{"path":"runs[0].stats.suites","valueA":1,"valueB":1,"isEqual":true},{"path":"runs[0].stats.tests","valueA":1,"valueB":1,"isEqual":true},{"path":"runs[0].reporter","valueA":"spec","valueB":"spec","isEqual":true},{"path":"runs[0].reporterStats.suites","valueA":1,"valueB":1,"isEqual":true},{"path":"runs[0].reporterStats.tests","valueA":1,"valueB":1,"isEqual":true},{"path":"runs[0].reporterStats.passes","valueA":0,"valueB":0,"isEqual":true},{"path":"runs[0].reporterStats.pending","valueA":0,"valueB":0,"isEqual":true},{"path":"runs[0].reporterStats.failures","valueA":1,"valueB":1,"isEqual":true},{"path":"runs[0].reporterStats.start","valueA":"2023-09-14T20:43:19.839Z","valueB":"2023-09-15T04:43:03.690Z","isEqual":false},{"path":"runs[0].reporterStats.end","valueA":"2023-09-14T20:43:33.443Z","valueB":"2023-09-15T04:43:17.336Z","isEqual":false},{"path":"runs[0].reporterStats.duration","valueA":13604,"valueB":13646,"isEqual":false},{"path":"runs[0].spec.fileExtension","valueA":".js","valueB":".js","isEqual":true},{"path":"runs[0].spec.baseName","valueA":"a.spec.js","valueB":"a.spec.js","isEqual":true},{"path":"runs[0].spec.fileName","valueA":"a","valueB":"a","isEqual":true},{"path":"runs[0].spec.specFileExtension","valueA":".spec.js","valueB":".spec.js","isEqual":true},{"path":"runs[0].spec.relativeToCommonRoot","valueA":"a.spec.js","valueB":"a.spec.js","isEqual":true},{"path":"runs[0].spec.specType","valueA":"integration","valueB":"integration","isEqual":true},{"path":"runs[0].spec.name","valueA":"cypress/e2e/a.spec.js","valueB":"cypress/e2e/a.spec.js","isEqual":true},{"path":"runs[0].spec.relative","valueA":"cypress/e2e/a.spec.js","valueB":"cypress/e2e/a.spec.js","isEqual":true},{"path":"runs[0].spec.absolute","valueA":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/e2e/a.spec.js","valueB":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/e2e/a.spec.js","isEqual":true},{"path":"runs[0].error","valueA":null,"valueB":null,"isEqual":true},{"path":"runs[0].video","valueA":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/videos/a.spec.js.mp4","valueB":null,"isEqual":false},{"path":"runs[0].shouldUploadVideo","valueA":true,"valueB":true,"isEqual":true},{"path":"runs[0].hooks[0]","valueA":{"hookId":"h1","hookName":"before each","title":["\"before each\" hook"],"body":"() => {\n const currentTest = cy.state(\"ctx\").currentTest;\n if (currentTest) {\n handleBefore(currentTest);\n }\n}"},"isEqual":false,"note":"Does not exist"},{"path":"runs[0].hooks[1]","valueA":{"hookId":"h2","hookName":"before each","title":["\"before each\" hook"],"body":"function () {\n cy.visit(\"/\");\n}"},"isEqual":false,"note":"Does not exist"},{"path":"runs[0].hooks[2]","valueA":{"hookId":"h4","hookName":"after each","title":["\"after each\" hook"],"body":"function () {\n self.sendLogsToPrinter(self.collectorState.getCurrentLogStackIndex(), self.collectorState.getCurrentTest());\n }"},"isEqual":false,"note":"Does not exist"},{"path":"runs[0].hooks[3]","valueA":{"hookId":"h5","hookName":"after each","title":["\"after each\" hook"],"body":"() => {\n const currentTest = cy.state(\"ctx\").currentTest;\n if (currentTest) {\n handleAfter(currentTest);\n }\n}"},"isEqual":false,"note":"Does not exist"},{"path":"runs[0].hooks[4]","valueA":{"hookId":"h3","hookName":"after all","title":["\"after all\" hook"],"body":"function () {\n // Need to wait otherwise some last commands get omitted from logs.\n cy.task(CONSTANTS.TASK_NAME_OUTPUT, null, {log: false});\n }"},"isEqual":false,"note":"Does not exist"},{"path":"runs[0].tests[0].testId","valueA":"r3","valueB":"r3","isEqual":true},{"path":"runs[0].tests[0].title[0]","valueA":"Failing test with 2 attempts","valueB":"Failing test with 2 attempts","isEqual":true},{"path":"runs[0].tests[0].title[1]","valueA":"should try 2 times","valueB":"should try 2 times","isEqual":true},{"path":"runs[0].tests[0].state","valueA":"failed","valueB":"failed","isEqual":true},{"path":"runs[0].tests[0].body","valueA":"() => {\n cy.wrap(false).should('be.true');\n }","valueB":"() => {\n cy.wrap(false).should('be.true');\n }","isEqual":true},{"path":"runs[0].tests[0].displayError","valueA":"AssertionError: Timed out retrying after 4000ms: expected false to be true\n at Context.eval (webpack://cypress-12-demo/./cypress/e2e/a.spec.js:5:19)","valueB":"AssertionError: Timed out retrying after 4000ms: expected false to be true\n at Context.eval (webpack://cypress-12-demo/./cypress/e2e/a.spec.js:5:19)","isEqual":true},{"path":"runs[0].tests[0].attempts[0].state","valueA":"failed","valueB":"failed","isEqual":true},{"path":"runs[0].tests[0].attempts[0].error.name","valueA":"AssertionError","valueB":"AssertionError","isEqual":true},{"path":"runs[0].tests[0].attempts[0].error.message","valueA":"Timed out retrying after 4000ms: expected false to be true","valueB":"Timed out retrying after 4000ms: expected false to be true","isEqual":true},{"path":"runs[0].tests[0].attempts[0].error.stack","valueA":" at Context.eval (webpack://cypress-12-demo/./cypress/e2e/a.spec.js:5:19)","valueB":" at Context.eval (webpack://cypress-12-demo/./cypress/e2e/a.spec.js:5:19)","isEqual":true},{"path":"runs[0].tests[0].attempts[0].error.codeFrame.line","valueA":5,"valueB":5,"isEqual":true},{"path":"runs[0].tests[0].attempts[0].error.codeFrame.column","valueA":20,"valueB":20,"isEqual":true},{"path":"runs[0].tests[0].attempts[0].error.codeFrame.originalFile","valueA":"cypress/e2e/a.spec.js","valueB":"cypress/e2e/a.spec.js","isEqual":true},{"path":"runs[0].tests[0].attempts[0].error.codeFrame.relativeFile","valueA":"e2e/cypress-12-demo/cypress/e2e/a.spec.js","valueB":"e2e/cypress-12-demo/cypress/e2e/a.spec.js","isEqual":true},{"path":"runs[0].tests[0].attempts[0].error.codeFrame.absoluteFile","valueA":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/e2e/a.spec.js","valueB":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/e2e/a.spec.js","isEqual":true},{"path":"runs[0].tests[0].attempts[0].error.codeFrame.frame","valueA":" 3 | retries: 2,\n 4 | }, () => {\n> 5 | cy.wrap(false).should('be.true');\n | ^\n 6 | });\n 7 | });\n 8 | ","valueB":" 3 | retries: 2,\n 4 | }, () => {\n> 5 | cy.wrap(false).should('be.true');\n | ^\n 6 | });\n 7 | });\n 8 | ","isEqual":true},{"path":"runs[0].tests[0].attempts[0].error.codeFrame.language","valueA":"js","valueB":"js","isEqual":true},{"path":"runs[0].tests[0].attempts[0].timings.lifecycle","valueA":38,"valueB":28,"isEqual":false},{"path":"runs[0].tests[0].attempts[0].timings.before each[0].hookId","valueA":"h1","valueB":"h1","isEqual":true},{"path":"runs[0].tests[0].attempts[0].timings.before each[0].fnDuration","valueA":16,"valueB":19,"isEqual":false},{"path":"runs[0].tests[0].attempts[0].timings.before each[0].afterFnDuration","valueA":0,"valueB":1,"isEqual":false},{"path":"runs[0].tests[0].attempts[0].timings.before each[1].hookId","valueA":"h2","valueB":"h2","isEqual":true},{"path":"runs[0].tests[0].attempts[0].timings.before each[1].fnDuration","valueA":626,"valueB":416,"isEqual":false},{"path":"runs[0].tests[0].attempts[0].timings.before each[1].afterFnDuration","valueA":0,"valueB":0,"isEqual":true},{"path":"runs[0].tests[0].attempts[0].timings.test.fnDuration","valueA":4016,"valueB":4006,"isEqual":false},{"path":"runs[0].tests[0].attempts[0].timings.test.afterFnDuration","valueA":240,"valueB":240,"isEqual":true},{"path":"runs[0].tests[0].attempts[0].timings.after each[0].hookId","valueA":"h4","valueB":"h4","isEqual":true},{"path":"runs[0].tests[0].attempts[0].timings.after each[0].fnDuration","valueA":17,"valueB":19,"isEqual":false},{"path":"runs[0].tests[0].attempts[0].timings.after each[0].afterFnDuration","valueA":0,"valueB":0,"isEqual":true},{"path":"runs[0].tests[0].attempts[0].timings.after each[1]","valueA":{"hookId":"h5","fnDuration":12,"afterFnDuration":0},"isEqual":false,"note":"Does not exist"},{"path":"runs[0].tests[0].attempts[0].failedFromHookId","valueA":null,"isEqual":false,"note":"Does not exist"},{"path":"runs[0].tests[0].attempts[0].wallClockStartedAt","valueA":"2023-09-14T20:43:19.842Z","valueB":"2023-09-15T04:43:03.696Z","isEqual":false},{"path":"runs[0].tests[0].attempts[0].wallClockDuration","valueA":4967,"valueB":4711,"isEqual":false},{"path":"runs[0].tests[0].attempts[0].videoTimestamp","valueA":2208,"valueB":10,"isEqual":false},{"path":"runs[0].tests[0].attempts[0].startedAt","valueA":"2023-09-14T20:43:19.842Z","valueB":"2023-09-15T04:43:03.696Z","isEqual":false},{"path":"runs[0].tests[0].attempts[0].duration","valueA":4967,"valueB":4711,"isEqual":false},{"path":"runs[0].tests[0].attempts[0].screenshots[0].screenshotId","valueA":"1oc0t","valueB":"9zgRMs","isEqual":false},{"path":"runs[0].tests[0].attempts[0].screenshots[0].name","valueA":"screenshot","valueB":"screenshot","isEqual":true},{"path":"runs[0].tests[0].attempts[0].screenshots[0].testId","valueA":"r3","valueB":"r3","isEqual":true},{"path":"runs[0].tests[0].attempts[0].screenshots[0].testAttemptIndex","valueA":0,"valueB":0,"isEqual":true},{"path":"runs[0].tests[0].attempts[0].screenshots[0].takenAt","valueA":"2023-09-14T20:43:24.542Z","valueB":"2023-09-15T04:43:08.170Z","isEqual":false},{"path":"runs[0].tests[0].attempts[0].screenshots[0].path","valueA":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/screenshots/a.spec.js/Failing test with 2 attempts -- should try 2 times (failed).png","valueB":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/screenshots/a.spec.js/Failing test with 2 attempts -- should try 2 times (failed).png","isEqual":true},{"path":"runs[0].tests[0].attempts[0].screenshots[0].height","valueA":1440,"valueB":1440,"isEqual":true},{"path":"runs[0].tests[0].attempts[0].screenshots[0].width","valueA":2560,"valueB":2560,"isEqual":true},{"path":"runs[0].tests[0].attempts[0].screenshots[0].size","valueB":350986,"isEqual":false,"note":"Does not exist"},{"path":"runs[0].tests[0].attempts[0].screenshots[0].dimensions","valueB":{"width":2560,"height":1440},"isEqual":false,"note":"Does not exist"},{"path":"runs[0].tests[0].attempts[0].screenshots[0].multipart","valueB":false,"isEqual":false,"note":"Does not exist"},{"path":"runs[0].tests[0].attempts[0].screenshots[0].specName","valueB":"a.spec.js","isEqual":false,"note":"Does not exist"},{"path":"runs[0].tests[0].attempts[0].screenshots[0].testFailure","valueB":true,"isEqual":false,"note":"Does not exist"},{"path":"runs[0].tests[0].attempts[0].screenshots[0].scaled","valueB":true,"isEqual":false,"note":"Does not exist"},{"path":"runs[0].tests[0].attempts[0].screenshots[0].blackout","valueB":[],"isEqual":false,"note":"Does not exist"},{"path":"runs[0].tests[0].attempts[0].screenshots[0].duration","valueB":237,"isEqual":false,"note":"Does not exist"},{"path":"runs[0].tests[0].attempts[0].body","valueB":"() => {\n cy.wrap(false).should('be.true');\n }","isEqual":false,"note":"Does not exist"},{"path":"runs[0].tests[0].attempts[1].state","valueA":"failed","valueB":"failed","isEqual":true},{"path":"runs[0].tests[0].attempts[1].error.name","valueA":"AssertionError","valueB":"AssertionError","isEqual":true},{"path":"runs[0].tests[0].attempts[1].error.message","valueA":"Timed out retrying after 4000ms: expected false to be true","valueB":"Timed out retrying after 4000ms: expected false to be true","isEqual":true},{"path":"runs[0].tests[0].attempts[1].error.stack","valueA":" at Context.eval (webpack://cypress-12-demo/./cypress/e2e/a.spec.js:5:19)","valueB":" at Context.eval (webpack://cypress-12-demo/./cypress/e2e/a.spec.js:5:19)","isEqual":true},{"path":"runs[0].tests[0].attempts[1].error.codeFrame.line","valueA":5,"valueB":5,"isEqual":true},{"path":"runs[0].tests[0].attempts[1].error.codeFrame.column","valueA":20,"valueB":20,"isEqual":true},{"path":"runs[0].tests[0].attempts[1].error.codeFrame.originalFile","valueA":"cypress/e2e/a.spec.js","valueB":"cypress/e2e/a.spec.js","isEqual":true},{"path":"runs[0].tests[0].attempts[1].error.codeFrame.relativeFile","valueA":"e2e/cypress-12-demo/cypress/e2e/a.spec.js","valueB":"e2e/cypress-12-demo/cypress/e2e/a.spec.js","isEqual":true},{"path":"runs[0].tests[0].attempts[1].error.codeFrame.absoluteFile","valueA":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/e2e/a.spec.js","valueB":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/e2e/a.spec.js","isEqual":true},{"path":"runs[0].tests[0].attempts[1].error.codeFrame.frame","valueA":" 3 | retries: 2,\n 4 | }, () => {\n> 5 | cy.wrap(false).should('be.true');\n | ^\n 6 | });\n 7 | });\n 8 | ","valueB":" 3 | retries: 2,\n 4 | }, () => {\n> 5 | cy.wrap(false).should('be.true');\n | ^\n 6 | });\n 7 | });\n 8 | ","isEqual":true},{"path":"runs[0].tests[0].attempts[1].error.codeFrame.language","valueA":"js","valueB":"js","isEqual":true},{"path":"runs[0].tests[0].attempts[1].timings.lifecycle","valueA":23,"valueB":37,"isEqual":false},{"path":"runs[0].tests[0].attempts[1].timings.before each[0].hookId","valueA":"h1","valueB":"h1","isEqual":true},{"path":"runs[0].tests[0].attempts[1].timings.before each[0].fnDuration","valueA":6,"valueB":12,"isEqual":false},{"path":"runs[0].tests[0].attempts[1].timings.before each[0].afterFnDuration","valueA":1,"valueB":0,"isEqual":false},{"path":"runs[0].tests[0].attempts[1].timings.before each[1].hookId","valueA":"h2","valueB":"h2","isEqual":true},{"path":"runs[0].tests[0].attempts[1].timings.before each[1].fnDuration","valueA":57,"valueB":63,"isEqual":false},{"path":"runs[0].tests[0].attempts[1].timings.before each[1].afterFnDuration","valueA":0,"valueB":0,"isEqual":true},{"path":"runs[0].tests[0].attempts[1].timings.test.fnDuration","valueA":3994,"valueB":4004,"isEqual":false},{"path":"runs[0].tests[0].attempts[1].timings.test.afterFnDuration","valueA":170,"valueB":228,"isEqual":false},{"path":"runs[0].tests[0].attempts[1].timings.after each[0].hookId","valueA":"h4","valueB":"h4","isEqual":true},{"path":"runs[0].tests[0].attempts[1].timings.after each[0].fnDuration","valueA":13,"valueB":13,"isEqual":true},{"path":"runs[0].tests[0].attempts[1].timings.after each[0].afterFnDuration","valueA":0,"valueB":0,"isEqual":true},{"path":"runs[0].tests[0].attempts[1].timings.after each[1]","valueA":{"hookId":"h5","fnDuration":13,"afterFnDuration":0},"isEqual":false,"note":"Does not exist"},{"path":"runs[0].tests[0].attempts[1].failedFromHookId","valueA":null,"isEqual":false,"note":"Does not exist"},{"path":"runs[0].tests[0].attempts[1].wallClockStartedAt","valueA":"2023-09-14T20:43:24.827Z","valueB":"2023-09-15T04:43:08.474Z","isEqual":false},{"path":"runs[0].tests[0].attempts[1].wallClockDuration","valueA":4278,"valueB":4347,"isEqual":false},{"path":"runs[0].tests[0].attempts[1].videoTimestamp","valueA":7193,"valueB":4788,"isEqual":false},{"path":"runs[0].tests[0].attempts[1].startedAt","valueA":"2023-09-14T20:43:24.827Z","valueB":"2023-09-15T04:43:08.474Z","isEqual":false},{"path":"runs[0].tests[0].attempts[1].duration","valueA":4278,"valueB":4347,"isEqual":false},{"path":"runs[0].tests[0].attempts[1].screenshots[0].screenshotId","valueA":"kz6qn","valueB":"BTotxf","isEqual":false},{"path":"runs[0].tests[0].attempts[1].screenshots[0].name","valueA":"screenshot","valueB":"screenshot","isEqual":true},{"path":"runs[0].tests[0].attempts[1].screenshots[0].testId","valueA":"r3","valueB":"r3","isEqual":true},{"path":"runs[0].tests[0].attempts[1].screenshots[0].testAttemptIndex","valueA":1,"valueB":1,"isEqual":true},{"path":"runs[0].tests[0].attempts[1].screenshots[0].takenAt","valueA":"2023-09-14T20:43:28.910Z","valueB":"2023-09-15T04:43:12.594Z","isEqual":false},{"path":"runs[0].tests[0].attempts[1].screenshots[0].path","valueA":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/screenshots/a.spec.js/Failing test with 2 attempts -- should try 2 times (failed) (attempt 2).png","valueB":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/screenshots/a.spec.js/Failing test with 2 attempts -- should try 2 times (failed) (attempt 2).png","isEqual":true},{"path":"runs[0].tests[0].attempts[1].screenshots[0].height","valueA":1440,"valueB":1440,"isEqual":true},{"path":"runs[0].tests[0].attempts[1].screenshots[0].width","valueA":2560,"valueB":2560,"isEqual":true},{"path":"runs[0].tests[0].attempts[1].screenshots[0].size","valueB":360126,"isEqual":false,"note":"Does not exist"},{"path":"runs[0].tests[0].attempts[1].screenshots[0].dimensions","valueB":{"width":2560,"height":1440},"isEqual":false,"note":"Does not exist"},{"path":"runs[0].tests[0].attempts[1].screenshots[0].multipart","valueB":false,"isEqual":false,"note":"Does not exist"},{"path":"runs[0].tests[0].attempts[1].screenshots[0].specName","valueB":"a.spec.js","isEqual":false,"note":"Does not exist"},{"path":"runs[0].tests[0].attempts[1].screenshots[0].testFailure","valueB":true,"isEqual":false,"note":"Does not exist"},{"path":"runs[0].tests[0].attempts[1].screenshots[0].scaled","valueB":true,"isEqual":false,"note":"Does not exist"},{"path":"runs[0].tests[0].attempts[1].screenshots[0].blackout","valueB":[],"isEqual":false,"note":"Does not exist"},{"path":"runs[0].tests[0].attempts[1].screenshots[0].duration","valueB":225,"isEqual":false,"note":"Does not exist"},{"path":"runs[0].tests[0].attempts[1].body","valueB":"() => {\n cy.wrap(false).should('be.true');\n }","isEqual":false,"note":"Does not exist"},{"path":"runs[0].tests[0].attempts[2].state","valueA":"failed","valueB":"failed","isEqual":true},{"path":"runs[0].tests[0].attempts[2].error.name","valueA":"AssertionError","valueB":"AssertionError","isEqual":true},{"path":"runs[0].tests[0].attempts[2].error.message","valueA":"Timed out retrying after 4000ms: expected false to be true","valueB":"Timed out retrying after 4000ms: expected false to be true","isEqual":true},{"path":"runs[0].tests[0].attempts[2].error.stack","valueA":" at Context.eval (webpack://cypress-12-demo/./cypress/e2e/a.spec.js:5:19)","valueB":" at Context.eval (webpack://cypress-12-demo/./cypress/e2e/a.spec.js:5:19)","isEqual":true},{"path":"runs[0].tests[0].attempts[2].error.codeFrame.line","valueA":5,"valueB":5,"isEqual":true},{"path":"runs[0].tests[0].attempts[2].error.codeFrame.column","valueA":20,"valueB":20,"isEqual":true},{"path":"runs[0].tests[0].attempts[2].error.codeFrame.originalFile","valueA":"cypress/e2e/a.spec.js","valueB":"cypress/e2e/a.spec.js","isEqual":true},{"path":"runs[0].tests[0].attempts[2].error.codeFrame.relativeFile","valueA":"e2e/cypress-12-demo/cypress/e2e/a.spec.js","valueB":"e2e/cypress-12-demo/cypress/e2e/a.spec.js","isEqual":true},{"path":"runs[0].tests[0].attempts[2].error.codeFrame.absoluteFile","valueA":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/e2e/a.spec.js","valueB":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/e2e/a.spec.js","isEqual":true},{"path":"runs[0].tests[0].attempts[2].error.codeFrame.frame","valueA":" 3 | retries: 2,\n 4 | }, () => {\n> 5 | cy.wrap(false).should('be.true');\n | ^\n 6 | });\n 7 | });\n 8 | ","valueB":" 3 | retries: 2,\n 4 | }, () => {\n> 5 | cy.wrap(false).should('be.true');\n | ^\n 6 | });\n 7 | });\n 8 | ","isEqual":true},{"path":"runs[0].tests[0].attempts[2].error.codeFrame.language","valueA":"js","valueB":"js","isEqual":true},{"path":"runs[0].tests[0].attempts[2].timings.lifecycle","valueA":39,"valueB":67,"isEqual":false},{"path":"runs[0].tests[0].attempts[2].timings.before each[0].hookId","valueA":"h1","valueB":"h1","isEqual":true},{"path":"runs[0].tests[0].attempts[2].timings.before each[0].fnDuration","valueA":7,"valueB":19,"isEqual":false},{"path":"runs[0].tests[0].attempts[2].timings.before each[0].afterFnDuration","valueA":0,"valueB":0,"isEqual":true},{"path":"runs[0].tests[0].attempts[2].timings.before each[1].hookId","valueA":"h2","valueB":"h2","isEqual":true},{"path":"runs[0].tests[0].attempts[2].timings.before each[1].fnDuration","valueA":47,"valueB":100,"isEqual":false},{"path":"runs[0].tests[0].attempts[2].timings.before each[1].afterFnDuration","valueA":1,"valueB":0,"isEqual":false},{"path":"runs[0].tests[0].attempts[2].timings.test.fnDuration","valueA":4003,"valueB":3996,"isEqual":false},{"path":"runs[0].tests[0].attempts[2].timings.test.afterFnDuration","valueA":174,"valueB":204,"isEqual":false},{"path":"runs[0].tests[0].attempts[2].timings.after each[0].hookId","valueA":"h4","valueB":"h4","isEqual":true},{"path":"runs[0].tests[0].attempts[2].timings.after each[0].fnDuration","valueA":13,"valueB":13,"isEqual":true},{"path":"runs[0].tests[0].attempts[2].timings.after each[0].afterFnDuration","valueA":0,"valueB":0,"isEqual":true},{"path":"runs[0].tests[0].attempts[2].timings.after each[1]","valueA":{"hookId":"h5","fnDuration":13,"afterFnDuration":0},"isEqual":false,"note":"Does not exist"},{"path":"runs[0].tests[0].attempts[2].timings.after all","valueA":[{"hookId":"h3","fnDuration":4,"afterFnDuration":0}],"isEqual":false,"note":"Does not exist"},{"path":"runs[0].tests[0].attempts[2].failedFromHookId","valueA":null,"isEqual":false,"note":"Does not exist"},{"path":"runs[0].tests[0].attempts[2].wallClockStartedAt","valueA":"2023-09-14T20:43:29.116Z","valueB":"2023-09-15T04:43:12.882Z","isEqual":false},{"path":"runs[0].tests[0].attempts[2].wallClockDuration","valueA":4305,"valueB":4389,"isEqual":false},{"path":"runs[0].tests[0].attempts[2].videoTimestamp","valueA":11482,"valueB":9196,"isEqual":false},{"path":"runs[0].tests[0].attempts[2].startedAt","valueA":"2023-09-14T20:43:29.116Z","valueB":"2023-09-15T04:43:12.882Z","isEqual":false},{"path":"runs[0].tests[0].attempts[2].duration","valueA":4305,"valueB":4389,"isEqual":false},{"path":"runs[0].tests[0].attempts[2].screenshots[0].screenshotId","valueA":"853th","valueB":"TzFKEy","isEqual":false},{"path":"runs[0].tests[0].attempts[2].screenshots[0].name","valueA":"screenshot","valueB":"screenshot","isEqual":true},{"path":"runs[0].tests[0].attempts[2].screenshots[0].testId","valueA":"r3","valueB":"r3","isEqual":true},{"path":"runs[0].tests[0].attempts[2].screenshots[0].testAttemptIndex","valueA":2,"valueB":2,"isEqual":true},{"path":"runs[0].tests[0].attempts[2].screenshots[0].takenAt","valueA":"2023-09-14T20:43:33.216Z","valueB":"2023-09-15T04:43:17.068Z","isEqual":false},{"path":"runs[0].tests[0].attempts[2].screenshots[0].path","valueA":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/screenshots/a.spec.js/Failing test with 2 attempts -- should try 2 times (failed) (attempt 3).png","valueB":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/screenshots/a.spec.js/Failing test with 2 attempts -- should try 2 times (failed) (attempt 3).png","isEqual":true},{"path":"runs[0].tests[0].attempts[2].screenshots[0].height","valueA":1440,"valueB":1440,"isEqual":true},{"path":"runs[0].tests[0].attempts[2].screenshots[0].width","valueA":2560,"valueB":2560,"isEqual":true},{"path":"runs[0].tests[0].attempts[2].screenshots[0].size","valueB":365326,"isEqual":false,"note":"Does not exist"},{"path":"runs[0].tests[0].attempts[2].screenshots[0].dimensions","valueB":{"width":2560,"height":1440},"isEqual":false,"note":"Does not exist"},{"path":"runs[0].tests[0].attempts[2].screenshots[0].multipart","valueB":false,"isEqual":false,"note":"Does not exist"},{"path":"runs[0].tests[0].attempts[2].screenshots[0].specName","valueB":"a.spec.js","isEqual":false,"note":"Does not exist"},{"path":"runs[0].tests[0].attempts[2].screenshots[0].testFailure","valueB":true,"isEqual":false,"note":"Does not exist"},{"path":"runs[0].tests[0].attempts[2].screenshots[0].scaled","valueB":true,"isEqual":false,"note":"Does not exist"},{"path":"runs[0].tests[0].attempts[2].screenshots[0].blackout","valueB":[],"isEqual":false,"note":"Does not exist"},{"path":"runs[0].tests[0].attempts[2].screenshots[0].duration","valueB":202,"isEqual":false,"note":"Does not exist"},{"path":"runs[0].tests[0].attempts[2].body","valueB":"() => {\n cy.wrap(false).should('be.true');\n }","isEqual":false,"note":"Does not exist"},{"path":"runs[0].tests[0].duration","valueB":13587,"isEqual":false,"note":"Does not exist"},{"path":"runs[1].stats.duration","valueA":461,"valueB":472,"isEqual":false},{"path":"runs[1].stats.endedAt","valueA":"2023-09-14T20:43:38.197Z","valueB":"2023-09-15T04:43:18.746Z","isEqual":false},{"path":"runs[1].stats.startedAt","valueA":"2023-09-14T20:43:37.736Z","valueB":"2023-09-15T04:43:18.274Z","isEqual":false},{"path":"runs[1].stats.failures","valueA":1,"valueB":1,"isEqual":true},{"path":"runs[1].stats.passes","valueA":0,"valueB":0,"isEqual":true},{"path":"runs[1].stats.pending","valueA":0,"valueB":0,"isEqual":true},{"path":"runs[1].stats.skipped","valueA":0,"valueB":0,"isEqual":true},{"path":"runs[1].stats.suites","valueA":1,"valueB":1,"isEqual":true},{"path":"runs[1].stats.tests","valueA":1,"valueB":1,"isEqual":true},{"path":"runs[1].reporter","valueA":"spec","valueB":"spec","isEqual":true},{"path":"runs[1].reporterStats.suites","valueA":1,"valueB":1,"isEqual":true},{"path":"runs[1].reporterStats.tests","valueA":1,"valueB":1,"isEqual":true},{"path":"runs[1].reporterStats.passes","valueA":0,"valueB":0,"isEqual":true},{"path":"runs[1].reporterStats.pending","valueA":0,"valueB":0,"isEqual":true},{"path":"runs[1].reporterStats.failures","valueA":1,"valueB":1,"isEqual":true},{"path":"runs[1].reporterStats.start","valueA":"2023-09-14T20:43:37.738Z","valueB":"2023-09-15T04:43:18.277Z","isEqual":false},{"path":"runs[1].reporterStats.end","valueA":"2023-09-14T20:43:38.199Z","valueB":"2023-09-15T04:43:18.748Z","isEqual":false},{"path":"runs[1].reporterStats.duration","valueA":461,"valueB":471,"isEqual":false},{"path":"runs[1].spec.fileExtension","valueA":".js","valueB":".js","isEqual":true},{"path":"runs[1].spec.baseName","valueA":"e.spec.js","valueB":"e.spec.js","isEqual":true},{"path":"runs[1].spec.fileName","valueA":"e","valueB":"e","isEqual":true},{"path":"runs[1].spec.specFileExtension","valueA":".spec.js","valueB":".spec.js","isEqual":true},{"path":"runs[1].spec.relativeToCommonRoot","valueA":"e.spec.js","valueB":"e.spec.js","isEqual":true},{"path":"runs[1].spec.specType","valueA":"integration","valueB":"integration","isEqual":true},{"path":"runs[1].spec.name","valueA":"cypress/e2e/e.spec.js","valueB":"cypress/e2e/e.spec.js","isEqual":true},{"path":"runs[1].spec.relative","valueA":"cypress/e2e/e.spec.js","valueB":"cypress/e2e/e.spec.js","isEqual":true},{"path":"runs[1].spec.absolute","valueA":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/e2e/e.spec.js","valueB":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/e2e/e.spec.js","isEqual":true},{"path":"runs[1].error","valueA":null,"valueB":null,"isEqual":true},{"path":"runs[1].video","valueA":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/videos/e.spec.js.mp4","valueB":null,"isEqual":false},{"path":"runs[1].shouldUploadVideo","valueA":true,"valueB":true,"isEqual":true},{"path":"runs[1].hooks[0]","valueA":{"hookId":"h1","hookName":"before each","title":["\"before each\" hook"],"body":"() => {\n const currentTest = cy.state(\"ctx\").currentTest;\n if (currentTest) {\n handleBefore(currentTest);\n }\n}"},"isEqual":false,"note":"Does not exist"},{"path":"runs[1].hooks[1]","valueA":{"hookId":"h2","hookName":"before each","title":["\"before each\" hook"],"body":"function () {\n cy.visit(\"/\");\n}"},"isEqual":false,"note":"Does not exist"},{"path":"runs[1].hooks[2]","valueA":{"hookId":"h4","hookName":"after each","title":["\"after each\" hook"],"body":"function () {\n self.sendLogsToPrinter(self.collectorState.getCurrentLogStackIndex(), self.collectorState.getCurrentTest());\n }"},"isEqual":false,"note":"Does not exist"},{"path":"runs[1].hooks[3]","valueA":{"hookId":"h5","hookName":"after each","title":["\"after each\" hook"],"body":"() => {\n const currentTest = cy.state(\"ctx\").currentTest;\n if (currentTest) {\n handleAfter(currentTest);\n }\n}"},"isEqual":false,"note":"Does not exist"},{"path":"runs[1].hooks[4]","valueA":{"hookId":"h3","hookName":"after all","title":["\"after all\" hook"],"body":"function () {\n // Need to wait otherwise some last commands get omitted from logs.\n cy.task(CONSTANTS.TASK_NAME_OUTPUT, null, {log: false});\n }"},"isEqual":false,"note":"Does not exist"},{"path":"runs[1].tests[0].testId","valueA":"r3","valueB":"r3","isEqual":true},{"path":"runs[1].tests[0].title[0]","valueA":"Should throw an error","valueB":"Should throw an error","isEqual":true},{"path":"runs[1].tests[0].title[1]","valueA":"Should throw an error","valueB":"Should throw an error","isEqual":true},{"path":"runs[1].tests[0].state","valueA":"failed","valueB":"failed","isEqual":true},{"path":"runs[1].tests[0].body","valueA":"() => {\n throw new Error(\"test error\");\n }","valueB":"() => {\n throw new Error(\"test error\");\n }","isEqual":true},{"path":"runs[1].tests[0].displayError","valueA":"Error: test error\n at Context.eval (webpack://cypress-12-demo/./cypress/e2e/e.spec.js:3:10)","valueB":"Error: test error\n at Context.eval (webpack://cypress-12-demo/./cypress/e2e/e.spec.js:3:10)","isEqual":true},{"path":"runs[1].tests[0].attempts[0].state","valueA":"failed","valueB":"failed","isEqual":true},{"path":"runs[1].tests[0].attempts[0].error.name","valueA":"Error","valueB":"Error","isEqual":true},{"path":"runs[1].tests[0].attempts[0].error.message","valueA":"test error","valueB":"test error","isEqual":true},{"path":"runs[1].tests[0].attempts[0].error.stack","valueA":" at Context.eval (webpack://cypress-12-demo/./cypress/e2e/e.spec.js:3:10)","valueB":" at Context.eval (webpack://cypress-12-demo/./cypress/e2e/e.spec.js:3:10)","isEqual":true},{"path":"runs[1].tests[0].attempts[0].error.codeFrame.line","valueA":3,"valueB":3,"isEqual":true},{"path":"runs[1].tests[0].attempts[0].error.codeFrame.column","valueA":11,"valueB":11,"isEqual":true},{"path":"runs[1].tests[0].attempts[0].error.codeFrame.originalFile","valueA":"cypress/e2e/e.spec.js","valueB":"cypress/e2e/e.spec.js","isEqual":true},{"path":"runs[1].tests[0].attempts[0].error.codeFrame.relativeFile","valueA":"e2e/cypress-12-demo/cypress/e2e/e.spec.js","valueB":"e2e/cypress-12-demo/cypress/e2e/e.spec.js","isEqual":true},{"path":"runs[1].tests[0].attempts[0].error.codeFrame.absoluteFile","valueA":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/e2e/e.spec.js","valueB":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/e2e/e.spec.js","isEqual":true},{"path":"runs[1].tests[0].attempts[0].error.codeFrame.frame","valueA":" 1 | describe('Should throw an error', () => {\n 2 | it('Should throw an error', () => {\n> 3 | throw new Error(\"test error\")\n | ^\n 4 | });\n 5 | });\n 6 | ","valueB":" 1 | describe('Should throw an error', () => {\n 2 | it('Should throw an error', () => {\n> 3 | throw new Error(\"test error\")\n | ^\n 4 | });\n 5 | });\n 6 | ","isEqual":true},{"path":"runs[1].tests[0].attempts[0].error.codeFrame.language","valueA":"js","valueB":"js","isEqual":true},{"path":"runs[1].tests[0].attempts[0].timings.lifecycle","valueA":41,"valueB":29,"isEqual":false},{"path":"runs[1].tests[0].attempts[0].timings.before each[0].hookId","valueA":"h1","valueB":"h1","isEqual":true},{"path":"runs[1].tests[0].attempts[0].timings.before each[0].fnDuration","valueA":8,"valueB":10,"isEqual":false},{"path":"runs[1].tests[0].attempts[0].timings.before each[0].afterFnDuration","valueA":0,"valueB":1,"isEqual":false},{"path":"runs[1].tests[0].attempts[0].timings.before each[1].hookId","valueA":"h2","valueB":"h2","isEqual":true},{"path":"runs[1].tests[0].attempts[0].timings.before each[1].fnDuration","valueA":146,"valueB":146,"isEqual":true},{"path":"runs[1].tests[0].attempts[0].timings.before each[1].afterFnDuration","valueA":0,"valueB":0,"isEqual":true},{"path":"runs[1].tests[0].attempts[0].timings.test.fnDuration","valueA":1,"valueB":1,"isEqual":true},{"path":"runs[1].tests[0].attempts[0].timings.test.afterFnDuration","valueA":183,"valueB":219,"isEqual":false},{"path":"runs[1].tests[0].attempts[0].timings.after each[0].hookId","valueA":"h4","valueB":"h4","isEqual":true},{"path":"runs[1].tests[0].attempts[0].timings.after each[0].fnDuration","valueA":12,"valueB":14,"isEqual":false},{"path":"runs[1].tests[0].attempts[0].timings.after each[0].afterFnDuration","valueA":0,"valueB":0,"isEqual":true},{"path":"runs[1].tests[0].attempts[0].timings.after each[1]","valueA":{"hookId":"h5","fnDuration":29,"afterFnDuration":0},"isEqual":false,"note":"Does not exist"},{"path":"runs[1].tests[0].attempts[0].timings.after all","valueA":[{"hookId":"h3","fnDuration":16,"afterFnDuration":0}],"isEqual":false,"note":"Does not exist"},{"path":"runs[1].tests[0].attempts[0].failedFromHookId","valueA":null,"isEqual":false,"note":"Does not exist"},{"path":"runs[1].tests[0].attempts[0].wallClockStartedAt","valueA":"2023-09-14T20:43:37.740Z","valueB":"2023-09-15T04:43:18.277Z","isEqual":false},{"path":"runs[1].tests[0].attempts[0].wallClockDuration","valueA":442,"valueB":408,"isEqual":false},{"path":"runs[1].tests[0].attempts[0].videoTimestamp","valueA":880,"valueB":3,"isEqual":false},{"path":"runs[1].tests[0].attempts[0].startedAt","valueA":"2023-09-14T20:43:37.740Z","valueB":"2023-09-15T04:43:18.277Z","isEqual":false},{"path":"runs[1].tests[0].attempts[0].duration","valueA":442,"valueB":408,"isEqual":false},{"path":"runs[1].tests[0].attempts[0].screenshots[0].screenshotId","valueA":"m0tz7","valueB":"k4ANEo","isEqual":false},{"path":"runs[1].tests[0].attempts[0].screenshots[0].name","valueA":"screenshot","valueB":"screenshot","isEqual":true},{"path":"runs[1].tests[0].attempts[0].screenshots[0].testId","valueA":"r3","valueB":"r3","isEqual":true},{"path":"runs[1].tests[0].attempts[0].screenshots[0].testAttemptIndex","valueA":0,"valueB":0,"isEqual":true},{"path":"runs[1].tests[0].attempts[0].screenshots[0].takenAt","valueA":"2023-09-14T20:43:37.940Z","valueB":"2023-09-15T04:43:18.468Z","isEqual":false},{"path":"runs[1].tests[0].attempts[0].screenshots[0].path","valueA":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/screenshots/e.spec.js/Should throw an error -- Should throw an error (failed).png","valueB":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/screenshots/e.spec.js/Should throw an error -- Should throw an error (failed).png","isEqual":true},{"path":"runs[1].tests[0].attempts[0].screenshots[0].height","valueA":1440,"valueB":1440,"isEqual":true},{"path":"runs[1].tests[0].attempts[0].screenshots[0].width","valueA":2560,"valueB":2560,"isEqual":true},{"path":"runs[1].tests[0].attempts[0].screenshots[0].size","valueB":334685,"isEqual":false,"note":"Does not exist"},{"path":"runs[1].tests[0].attempts[0].screenshots[0].dimensions","valueB":{"width":2560,"height":1440},"isEqual":false,"note":"Does not exist"},{"path":"runs[1].tests[0].attempts[0].screenshots[0].multipart","valueB":false,"isEqual":false,"note":"Does not exist"},{"path":"runs[1].tests[0].attempts[0].screenshots[0].specName","valueB":"e.spec.js","isEqual":false,"note":"Does not exist"},{"path":"runs[1].tests[0].attempts[0].screenshots[0].testFailure","valueB":true,"isEqual":false,"note":"Does not exist"},{"path":"runs[1].tests[0].attempts[0].screenshots[0].scaled","valueB":true,"isEqual":false,"note":"Does not exist"},{"path":"runs[1].tests[0].attempts[0].screenshots[0].blackout","valueB":[],"isEqual":false,"note":"Does not exist"},{"path":"runs[1].tests[0].attempts[0].screenshots[0].duration","valueB":217,"isEqual":false,"note":"Does not exist"},{"path":"runs[1].tests[0].attempts[0].body","valueB":"() => {\n throw new Error(\"test error\");\n }","isEqual":false,"note":"Does not exist"},{"path":"runs[1].tests[0].duration","valueB":456,"isEqual":false,"note":"Does not exist"},{"path":"runs[2].stats.duration","valueA":888,"valueB":977,"isEqual":false},{"path":"runs[2].stats.endedAt","valueA":"2023-09-14T20:43:41.590Z","valueB":"2023-09-15T04:43:20.767Z","isEqual":false},{"path":"runs[2].stats.startedAt","valueA":"2023-09-14T20:43:40.702Z","valueB":"2023-09-15T04:43:19.790Z","isEqual":false},{"path":"runs[2].stats.failures","valueA":0,"valueB":0,"isEqual":true},{"path":"runs[2].stats.passes","valueA":2,"valueB":2,"isEqual":true},{"path":"runs[2].stats.pending","valueA":0,"valueB":0,"isEqual":true},{"path":"runs[2].stats.skipped","valueA":0,"valueB":0,"isEqual":true},{"path":"runs[2].stats.suites","valueA":1,"valueB":1,"isEqual":true},{"path":"runs[2].stats.tests","valueA":2,"valueB":2,"isEqual":true},{"path":"runs[2].reporter","valueA":"spec","valueB":"spec","isEqual":true},{"path":"runs[2].reporterStats.suites","valueA":1,"valueB":1,"isEqual":true},{"path":"runs[2].reporterStats.tests","valueA":2,"valueB":2,"isEqual":true},{"path":"runs[2].reporterStats.passes","valueA":2,"valueB":2,"isEqual":true},{"path":"runs[2].reporterStats.pending","valueA":0,"valueB":0,"isEqual":true},{"path":"runs[2].reporterStats.failures","valueA":0,"valueB":0,"isEqual":true},{"path":"runs[2].reporterStats.start","valueA":"2023-09-14T20:43:40.704Z","valueB":"2023-09-15T04:43:19.794Z","isEqual":false},{"path":"runs[2].reporterStats.end","valueA":"2023-09-14T20:43:41.594Z","valueB":"2023-09-15T04:43:20.769Z","isEqual":false},{"path":"runs[2].reporterStats.duration","valueA":890,"valueB":975,"isEqual":false},{"path":"runs[2].spec.fileExtension","valueA":".js","valueB":".js","isEqual":true},{"path":"runs[2].spec.baseName","valueA":"d.spec.js","valueB":"d.spec.js","isEqual":true},{"path":"runs[2].spec.fileName","valueA":"d","valueB":"d","isEqual":true},{"path":"runs[2].spec.specFileExtension","valueA":".spec.js","valueB":".spec.js","isEqual":true},{"path":"runs[2].spec.relativeToCommonRoot","valueA":"d.spec.js","valueB":"d.spec.js","isEqual":true},{"path":"runs[2].spec.specType","valueA":"integration","valueB":"integration","isEqual":true},{"path":"runs[2].spec.name","valueA":"cypress/e2e/d.spec.js","valueB":"cypress/e2e/d.spec.js","isEqual":true},{"path":"runs[2].spec.relative","valueA":"cypress/e2e/d.spec.js","valueB":"cypress/e2e/d.spec.js","isEqual":true},{"path":"runs[2].spec.absolute","valueA":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/e2e/d.spec.js","valueB":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/e2e/d.spec.js","isEqual":true},{"path":"runs[2].error","valueA":null,"valueB":null,"isEqual":true},{"path":"runs[2].video","valueA":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/videos/d.spec.js.mp4","valueB":null,"isEqual":false},{"path":"runs[2].shouldUploadVideo","valueA":true,"valueB":true,"isEqual":true},{"path":"runs[2].hooks[0]","valueA":{"hookId":"h1","hookName":"before each","title":["\"before each\" hook"],"body":"() => {\n const currentTest = cy.state(\"ctx\").currentTest;\n if (currentTest) {\n handleBefore(currentTest);\n }\n}"},"isEqual":false,"note":"Does not exist"},{"path":"runs[2].hooks[1]","valueA":{"hookId":"h2","hookName":"before each","title":["\"before each\" hook"],"body":"function () {\n cy.visit(\"/\");\n}"},"isEqual":false,"note":"Does not exist"},{"path":"runs[2].hooks[2]","valueA":{"hookId":"h4","hookName":"after each","title":["\"after each\" hook"],"body":"function () {\n self.sendLogsToPrinter(self.collectorState.getCurrentLogStackIndex(), self.collectorState.getCurrentTest());\n }"},"isEqual":false,"note":"Does not exist"},{"path":"runs[2].hooks[3]","valueA":{"hookId":"h5","hookName":"after each","title":["\"after each\" hook"],"body":"() => {\n const currentTest = cy.state(\"ctx\").currentTest;\n if (currentTest) {\n handleAfter(currentTest);\n }\n}"},"isEqual":false,"note":"Does not exist"},{"path":"runs[2].hooks[4]","valueA":{"hookId":"h3","hookName":"after all","title":["\"after all\" hook"],"body":"function () {\n // Need to wait otherwise some last commands get omitted from logs.\n cy.task(CONSTANTS.TASK_NAME_OUTPUT, null, {log: false});\n }"},"isEqual":false,"note":"Does not exist"},{"path":"runs[2].tests[0].testId","valueA":"r3","valueB":"r3","isEqual":true},{"path":"runs[2].tests[0].title[0]","valueA":"Passed test with screenshot, passed test with no screenshots","valueB":"Passed test with screenshot, passed test with no screenshots","isEqual":true},{"path":"runs[2].tests[0].title[1]","valueA":"should assert and take a screenshot","valueB":"should assert and take a screenshot","isEqual":true},{"path":"runs[2].tests[0].state","valueA":"passed","valueB":"passed","isEqual":true},{"path":"runs[2].tests[0].body","valueA":"() => {\n // Assert that true is true\n cy.wrap(true).should('be.true');\n\n // Take a screenshot\n cy.screenshot('internal-assert-screenshot');\n }","valueB":"() => {\n // Assert that true is true\n cy.wrap(true).should('be.true');\n\n // Take a screenshot\n cy.screenshot('internal-assert-screenshot');\n }","isEqual":true},{"path":"runs[2].tests[0].displayError","valueA":null,"valueB":null,"isEqual":true},{"path":"runs[2].tests[0].attempts[0].state","valueA":"passed","valueB":"passed","isEqual":true},{"path":"runs[2].tests[0].attempts[0].error","valueA":null,"valueB":null,"isEqual":true},{"path":"runs[2].tests[0].attempts[0].timings.lifecycle","valueA":35,"valueB":30,"isEqual":false},{"path":"runs[2].tests[0].attempts[0].timings.before each[0].hookId","valueA":"h1","valueB":"h1","isEqual":true},{"path":"runs[2].tests[0].attempts[0].timings.before each[0].fnDuration","valueA":9,"valueB":11,"isEqual":false},{"path":"runs[2].tests[0].attempts[0].timings.before each[0].afterFnDuration","valueA":0,"valueB":1,"isEqual":false},{"path":"runs[2].tests[0].attempts[0].timings.before each[1].hookId","valueA":"h2","valueB":"h2","isEqual":true},{"path":"runs[2].tests[0].attempts[0].timings.before each[1].fnDuration","valueA":127,"valueB":152,"isEqual":false},{"path":"runs[2].tests[0].attempts[0].timings.before each[1].afterFnDuration","valueA":0,"valueB":0,"isEqual":true},{"path":"runs[2].tests[0].attempts[0].timings.test.fnDuration","valueA":577,"valueB":626,"isEqual":false},{"path":"runs[2].tests[0].attempts[0].timings.test.afterFnDuration","valueA":0,"valueB":0,"isEqual":true},{"path":"runs[2].tests[0].attempts[0].timings.after each[0].hookId","valueA":"h4","valueB":"h4","isEqual":true},{"path":"runs[2].tests[0].attempts[0].timings.after each[0].fnDuration","valueA":12,"valueB":14,"isEqual":false},{"path":"runs[2].tests[0].attempts[0].timings.after each[0].afterFnDuration","valueA":0,"valueB":0,"isEqual":true},{"path":"runs[2].tests[0].attempts[0].timings.after each[1]","valueA":{"hookId":"h5","fnDuration":7,"afterFnDuration":0},"isEqual":false,"note":"Does not exist"},{"path":"runs[2].tests[0].attempts[0].failedFromHookId","valueA":null,"isEqual":false,"note":"Does not exist"},{"path":"runs[2].tests[0].attempts[0].wallClockStartedAt","valueA":"2023-09-14T20:43:40.706Z","valueB":"2023-09-15T04:43:19.799Z","isEqual":false},{"path":"runs[2].tests[0].attempts[0].wallClockDuration","valueA":782,"valueB":821,"isEqual":false},{"path":"runs[2].tests[0].attempts[0].videoTimestamp","valueA":904,"valueB":9,"isEqual":false},{"path":"runs[2].tests[0].attempts[0].startedAt","valueA":"2023-09-14T20:43:40.706Z","valueB":"2023-09-15T04:43:19.799Z","isEqual":false},{"path":"runs[2].tests[0].attempts[0].duration","valueA":782,"valueB":821,"isEqual":false},{"path":"runs[2].tests[0].attempts[0].screenshots[0].screenshotId","valueA":"v1mng","valueB":"SzuczJ","isEqual":false},{"path":"runs[2].tests[0].attempts[0].screenshots[0].name","valueA":"internal-assert-screenshot","valueB":"internal-assert-screenshot","isEqual":true},{"path":"runs[2].tests[0].attempts[0].screenshots[0].testId","valueA":"r3","valueB":"r3","isEqual":true},{"path":"runs[2].tests[0].attempts[0].screenshots[0].testAttemptIndex","valueA":0,"valueB":0,"isEqual":true},{"path":"runs[2].tests[0].attempts[0].screenshots[0].takenAt","valueA":"2023-09-14T20:43:40.894Z","valueB":"2023-09-15T04:43:20.008Z","isEqual":false},{"path":"runs[2].tests[0].attempts[0].screenshots[0].path","valueA":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/screenshots/d.spec.js/internal-assert-screenshot.png","valueB":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/screenshots/d.spec.js/internal-assert-screenshot.png","isEqual":true},{"path":"runs[2].tests[0].attempts[0].screenshots[0].height","valueA":1320,"valueB":1320,"isEqual":true},{"path":"runs[2].tests[0].attempts[0].screenshots[0].width","valueA":2000,"valueB":2000,"isEqual":true},{"path":"runs[2].tests[0].attempts[0].screenshots[0].size","valueB":234575,"isEqual":false,"note":"Does not exist"},{"path":"runs[2].tests[0].attempts[0].screenshots[0].dimensions","valueB":{"width":2000,"height":1320},"isEqual":false,"note":"Does not exist"},{"path":"runs[2].tests[0].attempts[0].screenshots[0].multipart","valueB":true,"isEqual":false,"note":"Does not exist"},{"path":"runs[2].tests[0].attempts[0].screenshots[0].pixelRatio","valueB":2,"isEqual":false,"note":"Does not exist"},{"path":"runs[2].tests[0].attempts[0].screenshots[0].specName","valueB":"d.spec.js","isEqual":false,"note":"Does not exist"},{"path":"runs[2].tests[0].attempts[0].screenshots[0].scaled","valueB":false,"isEqual":false,"note":"Does not exist"},{"path":"runs[2].tests[0].attempts[0].screenshots[0].blackout","valueB":[],"isEqual":false,"note":"Does not exist"},{"path":"runs[2].tests[0].attempts[0].screenshots[0].duration","valueB":619,"isEqual":false,"note":"Does not exist"},{"path":"runs[2].tests[0].attempts[0].body","valueB":"() => {\n // Assert that true is true\n cy.wrap(true).should('be.true');\n\n // Take a screenshot\n cy.screenshot('internal-assert-screenshot');\n }","isEqual":false,"note":"Does not exist"},{"path":"runs[2].tests[0].duration","valueB":851,"isEqual":false,"note":"Does not exist"},{"path":"runs[2].tests[1].testId","valueA":"r4","valueB":"r4","isEqual":true},{"path":"runs[2].tests[1].title[0]","valueA":"Passed test with screenshot, passed test with no screenshots","valueB":"Passed test with screenshot, passed test with no screenshots","isEqual":true},{"path":"runs[2].tests[1].title[1]","valueA":"should assert that true is true","valueB":"should assert that true is true","isEqual":true},{"path":"runs[2].tests[1].state","valueA":"passed","valueB":"passed","isEqual":true},{"path":"runs[2].tests[1].body","valueA":"() => {\n cy.wrap(true).should('be.true');\n }","valueB":"() => {\n cy.wrap(true).should('be.true');\n }","isEqual":true},{"path":"runs[2].tests[1].displayError","valueA":null,"valueB":null,"isEqual":true},{"path":"runs[2].tests[1].attempts[0].state","valueA":"passed","valueB":"passed","isEqual":true},{"path":"runs[2].tests[1].attempts[0].error","valueA":null,"valueB":null,"isEqual":true},{"path":"runs[2].tests[1].attempts[0].timings.lifecycle","valueA":15,"valueB":15,"isEqual":true},{"path":"runs[2].tests[1].attempts[0].timings.before each[0].hookId","valueA":"h1","valueB":"h1","isEqual":true},{"path":"runs[2].tests[1].attempts[0].timings.before each[0].fnDuration","valueA":5,"valueB":7,"isEqual":false},{"path":"runs[2].tests[1].attempts[0].timings.before each[0].afterFnDuration","valueA":0,"valueB":0,"isEqual":true},{"path":"runs[2].tests[1].attempts[0].timings.before each[1].hookId","valueA":"h2","valueB":"h2","isEqual":true},{"path":"runs[2].tests[1].attempts[0].timings.before each[1].fnDuration","valueA":52,"valueB":47,"isEqual":false},{"path":"runs[2].tests[1].attempts[0].timings.before each[1].afterFnDuration","valueA":0,"valueB":0,"isEqual":true},{"path":"runs[2].tests[1].attempts[0].timings.test.fnDuration","valueA":1,"valueB":2,"isEqual":false},{"path":"runs[2].tests[1].attempts[0].timings.test.afterFnDuration","valueA":0,"valueB":0,"isEqual":true},{"path":"runs[2].tests[1].attempts[0].timings.after each[0].hookId","valueA":"h4","valueB":"h4","isEqual":true},{"path":"runs[2].tests[1].attempts[0].timings.after each[0].fnDuration","valueA":10,"valueB":12,"isEqual":false},{"path":"runs[2].tests[1].attempts[0].timings.after each[0].afterFnDuration","valueA":0,"valueB":0,"isEqual":true},{"path":"runs[2].tests[1].attempts[0].timings.after each[1]","valueA":{"hookId":"h5","fnDuration":6,"afterFnDuration":0},"isEqual":false,"note":"Does not exist"},{"path":"runs[2].tests[1].attempts[0].timings.after all","valueA":[{"hookId":"h3","fnDuration":4,"afterFnDuration":0}],"isEqual":false,"note":"Does not exist"},{"path":"runs[2].tests[1].attempts[0].failedFromHookId","valueA":null,"isEqual":false,"note":"Does not exist"},{"path":"runs[2].tests[1].attempts[0].wallClockStartedAt","valueA":"2023-09-14T20:43:41.490Z","valueB":"2023-09-15T04:43:20.658Z","isEqual":false},{"path":"runs[2].tests[1].attempts[0].wallClockDuration","valueA":100,"valueB":74,"isEqual":false},{"path":"runs[2].tests[1].attempts[0].videoTimestamp","valueA":1688,"valueB":868,"isEqual":false},{"path":"runs[2].tests[1].attempts[0].startedAt","valueA":"2023-09-14T20:43:41.490Z","valueB":"2023-09-15T04:43:20.658Z","isEqual":false},{"path":"runs[2].tests[1].attempts[0].duration","valueA":100,"valueB":74,"isEqual":false},{"path":"runs[2].tests[1].attempts[0].body","valueB":"() => {\n cy.wrap(true).should('be.true');\n }","isEqual":false,"note":"Does not exist"},{"path":"runs[2].tests[1].duration","valueB":108,"isEqual":false,"note":"Does not exist"},{"path":"runs[3].stats.duration","valueA":51,"valueB":47,"isEqual":false},{"path":"runs[3].stats.endedAt","valueA":"2023-09-14T20:43:43.988Z","valueB":"2023-09-15T04:43:21.831Z","isEqual":false},{"path":"runs[3].stats.startedAt","valueA":"2023-09-14T20:43:43.937Z","valueB":"2023-09-15T04:43:21.784Z","isEqual":false},{"path":"runs[3].stats.failures","valueA":0,"valueB":0,"isEqual":true},{"path":"runs[3].stats.passes","valueA":0,"valueB":0,"isEqual":true},{"path":"runs[3].stats.pending","valueA":1,"valueB":1,"isEqual":true},{"path":"runs[3].stats.skipped","valueA":0,"valueB":0,"isEqual":true},{"path":"runs[3].stats.suites","valueA":1,"valueB":1,"isEqual":true},{"path":"runs[3].stats.tests","valueA":1,"valueB":1,"isEqual":true},{"path":"runs[3].reporter","valueA":"spec","valueB":"spec","isEqual":true},{"path":"runs[3].reporterStats.suites","valueA":1,"valueB":1,"isEqual":true},{"path":"runs[3].reporterStats.tests","valueA":1,"valueB":1,"isEqual":true},{"path":"runs[3].reporterStats.passes","valueA":0,"valueB":0,"isEqual":true},{"path":"runs[3].reporterStats.pending","valueA":1,"valueB":1,"isEqual":true},{"path":"runs[3].reporterStats.failures","valueA":0,"valueB":0,"isEqual":true},{"path":"runs[3].reporterStats.start","valueA":"2023-09-14T20:43:43.938Z","valueB":"2023-09-15T04:43:21.787Z","isEqual":false},{"path":"runs[3].reporterStats.end","valueA":"2023-09-14T20:43:43.991Z","valueB":"2023-09-15T04:43:21.833Z","isEqual":false},{"path":"runs[3].reporterStats.duration","valueA":53,"valueB":46,"isEqual":false},{"path":"runs[3].spec.fileExtension","valueA":".js","valueB":".js","isEqual":true},{"path":"runs[3].spec.baseName","valueA":"c.spec.js","valueB":"c.spec.js","isEqual":true},{"path":"runs[3].spec.fileName","valueA":"c","valueB":"c","isEqual":true},{"path":"runs[3].spec.specFileExtension","valueA":".spec.js","valueB":".spec.js","isEqual":true},{"path":"runs[3].spec.relativeToCommonRoot","valueA":"c.spec.js","valueB":"c.spec.js","isEqual":true},{"path":"runs[3].spec.specType","valueA":"integration","valueB":"integration","isEqual":true},{"path":"runs[3].spec.name","valueA":"cypress/e2e/c.spec.js","valueB":"cypress/e2e/c.spec.js","isEqual":true},{"path":"runs[3].spec.relative","valueA":"cypress/e2e/c.spec.js","valueB":"cypress/e2e/c.spec.js","isEqual":true},{"path":"runs[3].spec.absolute","valueA":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/e2e/c.spec.js","valueB":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/e2e/c.spec.js","isEqual":true},{"path":"runs[3].error","valueA":null,"valueB":null,"isEqual":true},{"path":"runs[3].video","valueA":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/videos/c.spec.js.mp4","valueB":null,"isEqual":false},{"path":"runs[3].shouldUploadVideo","valueA":true,"valueB":true,"isEqual":true},{"path":"runs[3].hooks[0]","valueA":{"hookId":"h3","hookName":"after all","title":["\"after all\" hook"],"body":"function () {\n // Need to wait otherwise some last commands get omitted from logs.\n cy.task(CONSTANTS.TASK_NAME_OUTPUT, null, {log: false});\n }"},"isEqual":false,"note":"Does not exist"},{"path":"runs[3].tests[0].testId","valueA":"r3","valueB":"r0","isEqual":false},{"path":"runs[3].tests[0].title[0]","valueA":"Ignored test","valueB":"Ignored test","isEqual":true},{"path":"runs[3].tests[0].title[1]","valueA":"should be a skipped test","valueB":"should be a skipped test","isEqual":true},{"path":"runs[3].tests[0].state","valueA":"pending","valueB":"pending","isEqual":true},{"path":"runs[3].tests[0].body","valueA":"() => {\n cy.wrap(false).should('be.true');\n }","isEqual":false,"note":"Does not exist"},{"path":"runs[3].tests[0].displayError","valueA":null,"valueB":null,"isEqual":true},{"path":"runs[3].tests[0].attempts[0]","valueA":{"state":"pending","error":null,"timings":{"lifecycle":40,"after all":[{"hookId":"h3","fnDuration":4,"afterFnDuration":0}]},"failedFromHookId":null,"wallClockStartedAt":"2023-09-14T20:43:43.942Z","wallClockDuration":45,"videoTimestamp":872,"startedAt":"2023-09-14T20:43:43.942Z","duration":45,"screenshots":[]},"isEqual":false,"note":"Does not exist"},{"path":"runs[3].tests[0].duration","valueB":26,"isEqual":false,"note":"Does not exist"},{"path":"runs[4].stats.duration","valueA":17937,"valueB":17835,"isEqual":false},{"path":"runs[4].stats.endedAt","valueA":"2023-09-14T20:44:06.926Z","valueB":"2023-09-15T04:43:40.907Z","isEqual":false},{"path":"runs[4].stats.startedAt","valueA":"2023-09-14T20:43:48.989Z","valueB":"2023-09-15T04:43:23.072Z","isEqual":false},{"path":"runs[4].stats.failures","valueA":1,"valueB":1,"isEqual":true},{"path":"runs[4].stats.passes","valueA":2,"valueB":2,"isEqual":true},{"path":"runs[4].stats.pending","valueA":0,"valueB":0,"isEqual":true},{"path":"runs[4].stats.skipped","valueA":0,"valueB":0,"isEqual":true},{"path":"runs[4].stats.suites","valueA":1,"valueB":1,"isEqual":true},{"path":"runs[4].stats.tests","valueA":3,"valueB":3,"isEqual":true},{"path":"runs[4].reporter","valueA":"spec","valueB":"spec","isEqual":true},{"path":"runs[4].reporterStats.suites","valueA":1,"valueB":1,"isEqual":true},{"path":"runs[4].reporterStats.tests","valueA":3,"valueB":3,"isEqual":true},{"path":"runs[4].reporterStats.passes","valueA":2,"valueB":2,"isEqual":true},{"path":"runs[4].reporterStats.pending","valueA":0,"valueB":0,"isEqual":true},{"path":"runs[4].reporterStats.failures","valueA":1,"valueB":1,"isEqual":true},{"path":"runs[4].reporterStats.start","valueA":"2023-09-14T20:43:48.991Z","valueB":"2023-09-15T04:43:23.076Z","isEqual":false},{"path":"runs[4].reporterStats.end","valueA":"2023-09-14T20:44:06.935Z","valueB":"2023-09-15T04:43:40.909Z","isEqual":false},{"path":"runs[4].reporterStats.duration","valueA":17944,"valueB":17833,"isEqual":false},{"path":"runs[4].spec.fileExtension","valueA":".js","valueB":".js","isEqual":true},{"path":"runs[4].spec.baseName","valueA":"b.spec.js","valueB":"b.spec.js","isEqual":true},{"path":"runs[4].spec.fileName","valueA":"b","valueB":"b","isEqual":true},{"path":"runs[4].spec.specFileExtension","valueA":".spec.js","valueB":".spec.js","isEqual":true},{"path":"runs[4].spec.relativeToCommonRoot","valueA":"b.spec.js","valueB":"b.spec.js","isEqual":true},{"path":"runs[4].spec.specType","valueA":"integration","valueB":"integration","isEqual":true},{"path":"runs[4].spec.name","valueA":"cypress/e2e/b.spec.js","valueB":"cypress/e2e/b.spec.js","isEqual":true},{"path":"runs[4].spec.relative","valueA":"cypress/e2e/b.spec.js","valueB":"cypress/e2e/b.spec.js","isEqual":true},{"path":"runs[4].spec.absolute","valueA":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/e2e/b.spec.js","valueB":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/e2e/b.spec.js","isEqual":true},{"path":"runs[4].error","valueA":null,"valueB":null,"isEqual":true},{"path":"runs[4].video","valueA":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/videos/b.spec.js.mp4","valueB":null,"isEqual":false},{"path":"runs[4].shouldUploadVideo","valueA":true,"valueB":true,"isEqual":true},{"path":"runs[4].hooks[0]","valueA":{"hookId":"h1","hookName":"before each","title":["\"before each\" hook"],"body":"() => {\n const currentTest = cy.state(\"ctx\").currentTest;\n if (currentTest) {\n handleBefore(currentTest);\n }\n}"},"isEqual":false,"note":"Does not exist"},{"path":"runs[4].hooks[1]","valueA":{"hookId":"h2","hookName":"before each","title":["\"before each\" hook"],"body":"function () {\n cy.visit(\"/\");\n}"},"isEqual":false,"note":"Does not exist"},{"path":"runs[4].hooks[2]","valueA":{"hookId":"h4","hookName":"after each","title":["\"after each\" hook"],"body":"function () {\n self.sendLogsToPrinter(self.collectorState.getCurrentLogStackIndex(), self.collectorState.getCurrentTest());\n }"},"isEqual":false,"note":"Does not exist"},{"path":"runs[4].hooks[3]","valueA":{"hookId":"h5","hookName":"after each","title":["\"after each\" hook"],"body":"() => {\n const currentTest = cy.state(\"ctx\").currentTest;\n if (currentTest) {\n handleAfter(currentTest);\n }\n}"},"isEqual":false,"note":"Does not exist"},{"path":"runs[4].hooks[4]","valueA":{"hookId":"h3","hookName":"after all","title":["\"after all\" hook"],"body":"function () {\n // Need to wait otherwise some last commands get omitted from logs.\n cy.task(CONSTANTS.TASK_NAME_OUTPUT, null, {log: false});\n }"},"isEqual":false,"note":"Does not exist"},{"path":"runs[4].tests[0].testId","valueA":"r3","valueB":"r3","isEqual":true},{"path":"runs[4].tests[0].title[0]","valueA":"Failing test with 2 attempts, passed test and flaky test with 2 attempts","valueB":"Failing test with 2 attempts, passed test and flaky test with 2 attempts","isEqual":true},{"path":"runs[4].tests[0].title[1]","valueA":"should try 2 times","valueB":"should try 2 times","isEqual":true},{"path":"runs[4].tests[0].state","valueA":"failed","valueB":"failed","isEqual":true},{"path":"runs[4].tests[0].body","valueA":"() => {\n cy.wrap(false).should('be.true');\n }","valueB":"() => {\n cy.wrap(false).should('be.true');\n }","isEqual":true},{"path":"runs[4].tests[0].displayError","valueA":"AssertionError: Timed out retrying after 4000ms: expected false to be true\n at Context.eval (webpack://cypress-12-demo/./cypress/e2e/b.spec.js:6:19)","valueB":"AssertionError: Timed out retrying after 4000ms: expected false to be true\n at Context.eval (webpack://cypress-12-demo/./cypress/e2e/b.spec.js:6:19)","isEqual":true},{"path":"runs[4].tests[0].attempts[0].state","valueA":"failed","valueB":"failed","isEqual":true},{"path":"runs[4].tests[0].attempts[0].error.name","valueA":"AssertionError","valueB":"AssertionError","isEqual":true},{"path":"runs[4].tests[0].attempts[0].error.message","valueA":"Timed out retrying after 4000ms: expected false to be true","valueB":"Timed out retrying after 4000ms: expected false to be true","isEqual":true},{"path":"runs[4].tests[0].attempts[0].error.stack","valueA":" at Context.eval (webpack://cypress-12-demo/./cypress/e2e/b.spec.js:6:19)","valueB":" at Context.eval (webpack://cypress-12-demo/./cypress/e2e/b.spec.js:6:19)","isEqual":true},{"path":"runs[4].tests[0].attempts[0].error.codeFrame.line","valueA":6,"valueB":6,"isEqual":true},{"path":"runs[4].tests[0].attempts[0].error.codeFrame.column","valueA":20,"valueB":20,"isEqual":true},{"path":"runs[4].tests[0].attempts[0].error.codeFrame.originalFile","valueA":"cypress/e2e/b.spec.js","valueB":"cypress/e2e/b.spec.js","isEqual":true},{"path":"runs[4].tests[0].attempts[0].error.codeFrame.relativeFile","valueA":"e2e/cypress-12-demo/cypress/e2e/b.spec.js","valueB":"e2e/cypress-12-demo/cypress/e2e/b.spec.js","isEqual":true},{"path":"runs[4].tests[0].attempts[0].error.codeFrame.absoluteFile","valueA":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/e2e/b.spec.js","valueB":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/e2e/b.spec.js","isEqual":true},{"path":"runs[4].tests[0].attempts[0].error.codeFrame.frame","valueA":" 4 | retries: 2,\n 5 | }, () => {\n> 6 | cy.wrap(false).should('be.true');\n | ^\n 7 | });\n 8 | \n 9 | it('should assert that true is true', () => {","valueB":" 4 | retries: 2,\n 5 | }, () => {\n> 6 | cy.wrap(false).should('be.true');\n | ^\n 7 | });\n 8 | \n 9 | it('should assert that true is true', () => {","isEqual":true},{"path":"runs[4].tests[0].attempts[0].error.codeFrame.language","valueA":"js","valueB":"js","isEqual":true},{"path":"runs[4].tests[0].attempts[0].timings.lifecycle","valueA":28,"valueB":11,"isEqual":false},{"path":"runs[4].tests[0].attempts[0].timings.before each[0].hookId","valueA":"h1","valueB":"h1","isEqual":true},{"path":"runs[4].tests[0].attempts[0].timings.before each[0].fnDuration","valueA":10,"valueB":12,"isEqual":false},{"path":"runs[4].tests[0].attempts[0].timings.before each[0].afterFnDuration","valueA":0,"valueB":1,"isEqual":false},{"path":"runs[4].tests[0].attempts[0].timings.before each[1].hookId","valueA":"h2","valueB":"h2","isEqual":true},{"path":"runs[4].tests[0].attempts[0].timings.before each[1].fnDuration","valueA":184,"valueB":256,"isEqual":false},{"path":"runs[4].tests[0].attempts[0].timings.before each[1].afterFnDuration","valueA":0,"valueB":0,"isEqual":true},{"path":"runs[4].tests[0].attempts[0].timings.test.fnDuration","valueA":4013,"valueB":3995,"isEqual":false},{"path":"runs[4].tests[0].attempts[0].timings.test.afterFnDuration","valueA":191,"valueB":200,"isEqual":false},{"path":"runs[4].tests[0].attempts[0].timings.after each[0].hookId","valueA":"h4","valueB":"h4","isEqual":true},{"path":"runs[4].tests[0].attempts[0].timings.after each[0].fnDuration","valueA":12,"valueB":12,"isEqual":true},{"path":"runs[4].tests[0].attempts[0].timings.after each[0].afterFnDuration","valueA":0,"valueB":0,"isEqual":true},{"path":"runs[4].tests[0].attempts[0].timings.after each[1]","valueA":{"hookId":"h5","fnDuration":13,"afterFnDuration":0},"isEqual":false,"note":"Does not exist"},{"path":"runs[4].tests[0].attempts[0].failedFromHookId","valueA":null,"isEqual":false,"note":"Does not exist"},{"path":"runs[4].tests[0].attempts[0].wallClockStartedAt","valueA":"2023-09-14T20:43:48.994Z","valueB":"2023-09-15T04:43:23.081Z","isEqual":false},{"path":"runs[4].tests[0].attempts[0].wallClockDuration","valueA":4456,"valueB":4477,"isEqual":false},{"path":"runs[4].tests[0].attempts[0].videoTimestamp","valueA":907,"valueB":9,"isEqual":false},{"path":"runs[4].tests[0].attempts[0].startedAt","valueA":"2023-09-14T20:43:48.994Z","valueB":"2023-09-15T04:43:23.081Z","isEqual":false},{"path":"runs[4].tests[0].attempts[0].duration","valueA":4456,"valueB":4477,"isEqual":false},{"path":"runs[4].tests[0].attempts[0].screenshots[0].screenshotId","valueA":"esiau","valueB":"0BmA9u","isEqual":false},{"path":"runs[4].tests[0].attempts[0].screenshots[0].name","valueA":"screenshot","valueB":"screenshot","isEqual":true},{"path":"runs[4].tests[0].attempts[0].screenshots[0].testId","valueA":"r3","valueB":"r3","isEqual":true},{"path":"runs[4].tests[0].attempts[0].screenshots[0].testAttemptIndex","valueA":0,"valueB":0,"isEqual":true},{"path":"runs[4].tests[0].attempts[0].screenshots[0].takenAt","valueA":"2023-09-14T20:43:53.234Z","valueB":"2023-09-15T04:43:27.360Z","isEqual":false},{"path":"runs[4].tests[0].attempts[0].screenshots[0].path","valueA":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/screenshots/b.spec.js/Failing test with 2 attempts, passed test and flaky test with 2 attempts -- should try 2 times (failed).png","valueB":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/screenshots/b.spec.js/Failing test with 2 attempts, passed test and flaky test with 2 attempts -- should try 2 times (failed).png","isEqual":true},{"path":"runs[4].tests[0].attempts[0].screenshots[0].height","valueA":1440,"valueB":1440,"isEqual":true},{"path":"runs[4].tests[0].attempts[0].screenshots[0].width","valueA":2560,"valueB":2560,"isEqual":true},{"path":"runs[4].tests[0].attempts[0].screenshots[0].size","valueB":375352,"isEqual":false,"note":"Does not exist"},{"path":"runs[4].tests[0].attempts[0].screenshots[0].dimensions","valueB":{"width":2560,"height":1440},"isEqual":false,"note":"Does not exist"},{"path":"runs[4].tests[0].attempts[0].screenshots[0].multipart","valueB":false,"isEqual":false,"note":"Does not exist"},{"path":"runs[4].tests[0].attempts[0].screenshots[0].specName","valueB":"b.spec.js","isEqual":false,"note":"Does not exist"},{"path":"runs[4].tests[0].attempts[0].screenshots[0].testFailure","valueB":true,"isEqual":false,"note":"Does not exist"},{"path":"runs[4].tests[0].attempts[0].screenshots[0].scaled","valueB":true,"isEqual":false,"note":"Does not exist"},{"path":"runs[4].tests[0].attempts[0].screenshots[0].blackout","valueB":[],"isEqual":false,"note":"Does not exist"},{"path":"runs[4].tests[0].attempts[0].screenshots[0].duration","valueB":198,"isEqual":false,"note":"Does not exist"},{"path":"runs[4].tests[0].attempts[0].body","valueB":"() => {\n cy.wrap(false).should('be.true');\n }","isEqual":false,"note":"Does not exist"},{"path":"runs[4].tests[0].attempts[1].state","valueA":"failed","valueB":"failed","isEqual":true},{"path":"runs[4].tests[0].attempts[1].error.name","valueA":"AssertionError","valueB":"AssertionError","isEqual":true},{"path":"runs[4].tests[0].attempts[1].error.message","valueA":"Timed out retrying after 4000ms: expected false to be true","valueB":"Timed out retrying after 4000ms: expected false to be true","isEqual":true},{"path":"runs[4].tests[0].attempts[1].error.stack","valueA":" at Context.eval (webpack://cypress-12-demo/./cypress/e2e/b.spec.js:6:19)","valueB":" at Context.eval (webpack://cypress-12-demo/./cypress/e2e/b.spec.js:6:19)","isEqual":true},{"path":"runs[4].tests[0].attempts[1].error.codeFrame.line","valueA":6,"valueB":6,"isEqual":true},{"path":"runs[4].tests[0].attempts[1].error.codeFrame.column","valueA":20,"valueB":20,"isEqual":true},{"path":"runs[4].tests[0].attempts[1].error.codeFrame.originalFile","valueA":"cypress/e2e/b.spec.js","valueB":"cypress/e2e/b.spec.js","isEqual":true},{"path":"runs[4].tests[0].attempts[1].error.codeFrame.relativeFile","valueA":"e2e/cypress-12-demo/cypress/e2e/b.spec.js","valueB":"e2e/cypress-12-demo/cypress/e2e/b.spec.js","isEqual":true},{"path":"runs[4].tests[0].attempts[1].error.codeFrame.absoluteFile","valueA":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/e2e/b.spec.js","valueB":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/e2e/b.spec.js","isEqual":true},{"path":"runs[4].tests[0].attempts[1].error.codeFrame.frame","valueA":" 4 | retries: 2,\n 5 | }, () => {\n> 6 | cy.wrap(false).should('be.true');\n | ^\n 7 | });\n 8 | \n 9 | it('should assert that true is true', () => {","valueB":" 4 | retries: 2,\n 5 | }, () => {\n> 6 | cy.wrap(false).should('be.true');\n | ^\n 7 | });\n 8 | \n 9 | it('should assert that true is true', () => {","isEqual":true},{"path":"runs[4].tests[0].attempts[1].error.codeFrame.language","valueA":"js","valueB":"js","isEqual":true},{"path":"runs[4].tests[0].attempts[1].timings.lifecycle","valueA":67,"valueB":17,"isEqual":false},{"path":"runs[4].tests[0].attempts[1].timings.before each[0].hookId","valueA":"h1","valueB":"h1","isEqual":true},{"path":"runs[4].tests[0].attempts[1].timings.before each[0].fnDuration","valueA":7,"valueB":9,"isEqual":false},{"path":"runs[4].tests[0].attempts[1].timings.before each[0].afterFnDuration","valueA":0,"valueB":0,"isEqual":true},{"path":"runs[4].tests[0].attempts[1].timings.before each[1].hookId","valueA":"h2","valueB":"h2","isEqual":true},{"path":"runs[4].tests[0].attempts[1].timings.before each[1].fnDuration","valueA":46,"valueB":49,"isEqual":false},{"path":"runs[4].tests[0].attempts[1].timings.before each[1].afterFnDuration","valueA":0,"valueB":0,"isEqual":true},{"path":"runs[4].tests[0].attempts[1].timings.test.fnDuration","valueA":3991,"valueB":3995,"isEqual":false},{"path":"runs[4].tests[0].attempts[1].timings.test.afterFnDuration","valueA":197,"valueB":197,"isEqual":true},{"path":"runs[4].tests[0].attempts[1].timings.after each[0].hookId","valueA":"h4","valueB":"h4","isEqual":true},{"path":"runs[4].tests[0].attempts[1].timings.after each[0].fnDuration","valueA":12,"valueB":14,"isEqual":false},{"path":"runs[4].tests[0].attempts[1].timings.after each[0].afterFnDuration","valueA":0,"valueB":0,"isEqual":true},{"path":"runs[4].tests[0].attempts[1].timings.after each[1]","valueA":{"hookId":"h5","fnDuration":14,"afterFnDuration":0},"isEqual":false,"note":"Does not exist"},{"path":"runs[4].tests[0].attempts[1].failedFromHookId","valueA":null,"isEqual":false,"note":"Does not exist"},{"path":"runs[4].tests[0].attempts[1].wallClockStartedAt","valueA":"2023-09-14T20:43:53.468Z","valueB":"2023-09-15T04:43:27.613Z","isEqual":false},{"path":"runs[4].tests[0].attempts[1].wallClockDuration","valueA":4336,"valueB":4271,"isEqual":false},{"path":"runs[4].tests[0].attempts[1].videoTimestamp","valueA":5381,"valueB":4541,"isEqual":false},{"path":"runs[4].tests[0].attempts[1].startedAt","valueA":"2023-09-14T20:43:53.468Z","valueB":"2023-09-15T04:43:27.613Z","isEqual":false},{"path":"runs[4].tests[0].attempts[1].duration","valueA":4336,"valueB":4271,"isEqual":false},{"path":"runs[4].tests[0].attempts[1].screenshots[0].screenshotId","valueA":"fab4s","valueB":"zS7oOE","isEqual":false},{"path":"runs[4].tests[0].attempts[1].screenshots[0].name","valueA":"screenshot","valueB":"screenshot","isEqual":true},{"path":"runs[4].tests[0].attempts[1].screenshots[0].testId","valueA":"r3","valueB":"r3","isEqual":true},{"path":"runs[4].tests[0].attempts[1].screenshots[0].testAttemptIndex","valueA":1,"valueB":1,"isEqual":true},{"path":"runs[4].tests[0].attempts[1].screenshots[0].takenAt","valueA":"2023-09-14T20:43:57.582Z","valueB":"2023-09-15T04:43:31.689Z","isEqual":false},{"path":"runs[4].tests[0].attempts[1].screenshots[0].path","valueA":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/screenshots/b.spec.js/Failing test with 2 attempts, passed test and flaky test with 2 attempts -- should try 2 times (failed) (attempt 2).png","valueB":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/screenshots/b.spec.js/Failing test with 2 attempts, passed test and flaky test with 2 attempts -- should try 2 times (failed) (attempt 2).png","isEqual":true},{"path":"runs[4].tests[0].attempts[1].screenshots[0].height","valueA":1440,"valueB":1440,"isEqual":true},{"path":"runs[4].tests[0].attempts[1].screenshots[0].width","valueA":2560,"valueB":2560,"isEqual":true},{"path":"runs[4].tests[0].attempts[1].screenshots[0].size","valueB":379091,"isEqual":false,"note":"Does not exist"},{"path":"runs[4].tests[0].attempts[1].screenshots[0].dimensions","valueB":{"width":2560,"height":1440},"isEqual":false,"note":"Does not exist"},{"path":"runs[4].tests[0].attempts[1].screenshots[0].multipart","valueB":false,"isEqual":false,"note":"Does not exist"},{"path":"runs[4].tests[0].attempts[1].screenshots[0].specName","valueB":"b.spec.js","isEqual":false,"note":"Does not exist"},{"path":"runs[4].tests[0].attempts[1].screenshots[0].testFailure","valueB":true,"isEqual":false,"note":"Does not exist"},{"path":"runs[4].tests[0].attempts[1].screenshots[0].scaled","valueB":true,"isEqual":false,"note":"Does not exist"},{"path":"runs[4].tests[0].attempts[1].screenshots[0].blackout","valueB":[],"isEqual":false,"note":"Does not exist"},{"path":"runs[4].tests[0].attempts[1].screenshots[0].duration","valueB":188,"isEqual":false,"note":"Does not exist"},{"path":"runs[4].tests[0].attempts[1].body","valueB":"() => {\n cy.wrap(false).should('be.true');\n }","isEqual":false,"note":"Does not exist"},{"path":"runs[4].tests[0].attempts[2].state","valueA":"failed","valueB":"failed","isEqual":true},{"path":"runs[4].tests[0].attempts[2].error.name","valueA":"AssertionError","valueB":"AssertionError","isEqual":true},{"path":"runs[4].tests[0].attempts[2].error.message","valueA":"Timed out retrying after 4000ms: expected false to be true","valueB":"Timed out retrying after 4000ms: expected false to be true","isEqual":true},{"path":"runs[4].tests[0].attempts[2].error.stack","valueA":" at Context.eval (webpack://cypress-12-demo/./cypress/e2e/b.spec.js:6:19)","valueB":" at Context.eval (webpack://cypress-12-demo/./cypress/e2e/b.spec.js:6:19)","isEqual":true},{"path":"runs[4].tests[0].attempts[2].error.codeFrame.line","valueA":6,"valueB":6,"isEqual":true},{"path":"runs[4].tests[0].attempts[2].error.codeFrame.column","valueA":20,"valueB":20,"isEqual":true},{"path":"runs[4].tests[0].attempts[2].error.codeFrame.originalFile","valueA":"cypress/e2e/b.spec.js","valueB":"cypress/e2e/b.spec.js","isEqual":true},{"path":"runs[4].tests[0].attempts[2].error.codeFrame.relativeFile","valueA":"e2e/cypress-12-demo/cypress/e2e/b.spec.js","valueB":"e2e/cypress-12-demo/cypress/e2e/b.spec.js","isEqual":true},{"path":"runs[4].tests[0].attempts[2].error.codeFrame.absoluteFile","valueA":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/e2e/b.spec.js","valueB":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/e2e/b.spec.js","isEqual":true},{"path":"runs[4].tests[0].attempts[2].error.codeFrame.frame","valueA":" 4 | retries: 2,\n 5 | }, () => {\n> 6 | cy.wrap(false).should('be.true');\n | ^\n 7 | });\n 8 | \n 9 | it('should assert that true is true', () => {","valueB":" 4 | retries: 2,\n 5 | }, () => {\n> 6 | cy.wrap(false).should('be.true');\n | ^\n 7 | });\n 8 | \n 9 | it('should assert that true is true', () => {","isEqual":true},{"path":"runs[4].tests[0].attempts[2].error.codeFrame.language","valueA":"js","valueB":"js","isEqual":true},{"path":"runs[4].tests[0].attempts[2].timings.lifecycle","valueA":45,"valueB":24,"isEqual":false},{"path":"runs[4].tests[0].attempts[2].timings.before each[0].hookId","valueA":"h1","valueB":"h1","isEqual":true},{"path":"runs[4].tests[0].attempts[2].timings.before each[0].fnDuration","valueA":7,"valueB":9,"isEqual":false},{"path":"runs[4].tests[0].attempts[2].timings.before each[0].afterFnDuration","valueA":0,"valueB":0,"isEqual":true},{"path":"runs[4].tests[0].attempts[2].timings.before each[1].hookId","valueA":"h2","valueB":"h2","isEqual":true},{"path":"runs[4].tests[0].attempts[2].timings.before each[1].fnDuration","valueA":46,"valueB":53,"isEqual":false},{"path":"runs[4].tests[0].attempts[2].timings.before each[1].afterFnDuration","valueA":0,"valueB":0,"isEqual":true},{"path":"runs[4].tests[0].attempts[2].timings.test.fnDuration","valueA":4003,"valueB":3989,"isEqual":false},{"path":"runs[4].tests[0].attempts[2].timings.test.afterFnDuration","valueA":170,"valueB":210,"isEqual":false},{"path":"runs[4].tests[0].attempts[2].timings.after each[0].hookId","valueA":"h4","valueB":"h4","isEqual":true},{"path":"runs[4].tests[0].attempts[2].timings.after each[0].fnDuration","valueA":13,"valueB":12,"isEqual":false},{"path":"runs[4].tests[0].attempts[2].timings.after each[0].afterFnDuration","valueA":0,"valueB":0,"isEqual":true},{"path":"runs[4].tests[0].attempts[2].timings.after each[1]","valueA":{"hookId":"h5","fnDuration":14,"afterFnDuration":0},"isEqual":false,"note":"Does not exist"},{"path":"runs[4].tests[0].attempts[2].failedFromHookId","valueA":null,"isEqual":false,"note":"Does not exist"},{"path":"runs[4].tests[0].attempts[2].wallClockStartedAt","valueA":"2023-09-14T20:43:57.815Z","valueB":"2023-09-15T04:43:31.935Z","isEqual":false},{"path":"runs[4].tests[0].attempts[2].wallClockDuration","valueA":4303,"valueB":4288,"isEqual":false},{"path":"runs[4].tests[0].attempts[2].videoTimestamp","valueA":9728,"valueB":8863,"isEqual":false},{"path":"runs[4].tests[0].attempts[2].startedAt","valueA":"2023-09-14T20:43:57.815Z","valueB":"2023-09-15T04:43:31.935Z","isEqual":false},{"path":"runs[4].tests[0].attempts[2].duration","valueA":4303,"valueB":4288,"isEqual":false},{"path":"runs[4].tests[0].attempts[2].screenshots[0].screenshotId","valueA":"7q2tg","valueB":"TyUnDT","isEqual":false},{"path":"runs[4].tests[0].attempts[2].screenshots[0].name","valueA":"screenshot","valueB":"screenshot","isEqual":true},{"path":"runs[4].tests[0].attempts[2].screenshots[0].testId","valueA":"r3","valueB":"r3","isEqual":true},{"path":"runs[4].tests[0].attempts[2].screenshots[0].testAttemptIndex","valueA":2,"valueB":2,"isEqual":true},{"path":"runs[4].tests[0].attempts[2].screenshots[0].takenAt","valueA":"2023-09-14T20:44:01.919Z","valueB":"2023-09-15T04:43:36.016Z","isEqual":false},{"path":"runs[4].tests[0].attempts[2].screenshots[0].path","valueA":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/screenshots/b.spec.js/Failing test with 2 attempts, passed test and flaky test with 2 attempts -- should try 2 times (failed) (attempt 3).png","valueB":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/screenshots/b.spec.js/Failing test with 2 attempts, passed test and flaky test with 2 attempts -- should try 2 times (failed) (attempt 3).png","isEqual":true},{"path":"runs[4].tests[0].attempts[2].screenshots[0].height","valueA":1440,"valueB":1440,"isEqual":true},{"path":"runs[4].tests[0].attempts[2].screenshots[0].width","valueA":2560,"valueB":2560,"isEqual":true},{"path":"runs[4].tests[0].attempts[2].screenshots[0].size","valueB":379021,"isEqual":false,"note":"Does not exist"},{"path":"runs[4].tests[0].attempts[2].screenshots[0].dimensions","valueB":{"width":2560,"height":1440},"isEqual":false,"note":"Does not exist"},{"path":"runs[4].tests[0].attempts[2].screenshots[0].multipart","valueB":false,"isEqual":false,"note":"Does not exist"},{"path":"runs[4].tests[0].attempts[2].screenshots[0].specName","valueB":"b.spec.js","isEqual":false,"note":"Does not exist"},{"path":"runs[4].tests[0].attempts[2].screenshots[0].testFailure","valueB":true,"isEqual":false,"note":"Does not exist"},{"path":"runs[4].tests[0].attempts[2].screenshots[0].scaled","valueB":true,"isEqual":false,"note":"Does not exist"},{"path":"runs[4].tests[0].attempts[2].screenshots[0].blackout","valueB":[],"isEqual":false,"note":"Does not exist"},{"path":"runs[4].tests[0].attempts[2].screenshots[0].duration","valueB":208,"isEqual":false,"note":"Does not exist"},{"path":"runs[4].tests[0].attempts[2].body","valueB":"() => {\n cy.wrap(false).should('be.true');\n }","isEqual":false,"note":"Does not exist"},{"path":"runs[4].tests[0].duration","valueB":13149,"isEqual":false,"note":"Does not exist"},{"path":"runs[4].tests[1].testId","valueA":"r4","valueB":"r4","isEqual":true},{"path":"runs[4].tests[1].title[0]","valueA":"Failing test with 2 attempts, passed test and flaky test with 2 attempts","valueB":"Failing test with 2 attempts, passed test and flaky test with 2 attempts","isEqual":true},{"path":"runs[4].tests[1].title[1]","valueA":"should assert that true is true","valueB":"should assert that true is true","isEqual":true},{"path":"runs[4].tests[1].state","valueA":"passed","valueB":"passed","isEqual":true},{"path":"runs[4].tests[1].body","valueA":"() => {\n cy.wrap(true).should('be.true');\n }","valueB":"() => {\n cy.wrap(true).should('be.true');\n }","isEqual":true},{"path":"runs[4].tests[1].displayError","valueA":null,"valueB":null,"isEqual":true},{"path":"runs[4].tests[1].attempts[0].state","valueA":"passed","valueB":"passed","isEqual":true},{"path":"runs[4].tests[1].attempts[0].error","valueA":null,"valueB":null,"isEqual":true},{"path":"runs[4].tests[1].attempts[0].timings.lifecycle","valueA":27,"valueB":13,"isEqual":false},{"path":"runs[4].tests[1].attempts[0].timings.before each[0].hookId","valueA":"h1","valueB":"h1","isEqual":true},{"path":"runs[4].tests[1].attempts[0].timings.before each[0].fnDuration","valueA":8,"valueB":11,"isEqual":false},{"path":"runs[4].tests[1].attempts[0].timings.before each[0].afterFnDuration","valueA":0,"valueB":0,"isEqual":true},{"path":"runs[4].tests[1].attempts[0].timings.before each[1].hookId","valueA":"h2","valueB":"h2","isEqual":true},{"path":"runs[4].tests[1].attempts[0].timings.before each[1].fnDuration","valueA":90,"valueB":81,"isEqual":false},{"path":"runs[4].tests[1].attempts[0].timings.before each[1].afterFnDuration","valueA":0,"valueB":0,"isEqual":true},{"path":"runs[4].tests[1].attempts[0].timings.test.fnDuration","valueA":2,"valueB":1,"isEqual":false},{"path":"runs[4].tests[1].attempts[0].timings.test.afterFnDuration","valueA":0,"valueB":0,"isEqual":true},{"path":"runs[4].tests[1].attempts[0].timings.after each[0].hookId","valueA":"h4","valueB":"h4","isEqual":true},{"path":"runs[4].tests[1].attempts[0].timings.after each[0].fnDuration","valueA":10,"valueB":12,"isEqual":false},{"path":"runs[4].tests[1].attempts[0].timings.after each[0].afterFnDuration","valueA":0,"valueB":0,"isEqual":true},{"path":"runs[4].tests[1].attempts[0].timings.after each[1]","valueA":{"hookId":"h5","fnDuration":6,"afterFnDuration":0},"isEqual":false,"note":"Does not exist"},{"path":"runs[4].tests[1].attempts[0].failedFromHookId","valueA":null,"isEqual":false,"note":"Does not exist"},{"path":"runs[4].tests[1].attempts[0].wallClockStartedAt","valueA":"2023-09-14T20:44:02.133Z","valueB":"2023-09-15T04:43:36.276Z","isEqual":false},{"path":"runs[4].tests[1].attempts[0].wallClockDuration","valueA":145,"valueB":109,"isEqual":false},{"path":"runs[4].tests[1].attempts[0].videoTimestamp","valueA":14046,"valueB":13204,"isEqual":false},{"path":"runs[4].tests[1].attempts[0].startedAt","valueA":"2023-09-14T20:44:02.133Z","valueB":"2023-09-15T04:43:36.276Z","isEqual":false},{"path":"runs[4].tests[1].attempts[0].duration","valueA":145,"valueB":109,"isEqual":false},{"path":"runs[4].tests[1].attempts[0].body","valueB":"() => {\n cy.wrap(true).should('be.true');\n }","isEqual":false,"note":"Does not exist"},{"path":"runs[4].tests[1].duration","valueB":139,"isEqual":false,"note":"Does not exist"},{"path":"runs[4].tests[2].testId","valueA":"r5","valueB":"r5","isEqual":true},{"path":"runs[4].tests[2].title[0]","valueA":"Failing test with 2 attempts, passed test and flaky test with 2 attempts","valueB":"Failing test with 2 attempts, passed test and flaky test with 2 attempts","isEqual":true},{"path":"runs[4].tests[2].title[1]","valueA":"should fail on the first attempt and pass on the second","valueB":"should fail on the first attempt and pass on the second","isEqual":true},{"path":"runs[4].tests[2].state","valueA":"passed","valueB":"passed","isEqual":true},{"path":"runs[4].tests[2].body","valueA":"() => {\n if (attempt === 0) {\n attempt++;\n cy.wrap(false).should('be.true'); // This will fail on the first attempt\n } else {\n cy.wrap(true).should('be.true'); // This will pass on the second attempt\n }\n }","valueB":"() => {\n if (attempt === 0) {\n attempt++;\n cy.wrap(false).should('be.true'); // This will fail on the first attempt\n } else {\n cy.wrap(true).should('be.true'); // This will pass on the second attempt\n }\n }","isEqual":true},{"path":"runs[4].tests[2].displayError","valueA":null,"valueB":null,"isEqual":true},{"path":"runs[4].tests[2].attempts[0].state","valueA":"failed","valueB":"failed","isEqual":true},{"path":"runs[4].tests[2].attempts[0].error.name","valueA":"AssertionError","valueB":"AssertionError","isEqual":true},{"path":"runs[4].tests[2].attempts[0].error.message","valueA":"Timed out retrying after 4000ms: expected false to be true","valueB":"Timed out retrying after 4000ms: expected false to be true","isEqual":true},{"path":"runs[4].tests[2].attempts[0].error.stack","valueA":" at Context.eval (webpack://cypress-12-demo/./cypress/e2e/b.spec.js:16:21)","valueB":" at Context.eval (webpack://cypress-12-demo/./cypress/e2e/b.spec.js:16:21)","isEqual":true},{"path":"runs[4].tests[2].attempts[0].error.codeFrame.line","valueA":16,"valueB":16,"isEqual":true},{"path":"runs[4].tests[2].attempts[0].error.codeFrame.column","valueA":22,"valueB":22,"isEqual":true},{"path":"runs[4].tests[2].attempts[0].error.codeFrame.originalFile","valueA":"cypress/e2e/b.spec.js","valueB":"cypress/e2e/b.spec.js","isEqual":true},{"path":"runs[4].tests[2].attempts[0].error.codeFrame.relativeFile","valueA":"e2e/cypress-12-demo/cypress/e2e/b.spec.js","valueB":"e2e/cypress-12-demo/cypress/e2e/b.spec.js","isEqual":true},{"path":"runs[4].tests[2].attempts[0].error.codeFrame.absoluteFile","valueA":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/e2e/b.spec.js","valueB":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/e2e/b.spec.js","isEqual":true},{"path":"runs[4].tests[2].attempts[0].error.codeFrame.frame","valueA":" 14 | if (attempt === 0) {\n 15 | attempt++;\n> 16 | cy.wrap(false).should('be.true'); // This will fail on the first attempt\n | ^\n 17 | } else {\n 18 | cy.wrap(true).should('be.true'); // This will pass on the second attempt\n 19 | }","valueB":" 14 | if (attempt === 0) {\n 15 | attempt++;\n> 16 | cy.wrap(false).should('be.true'); // This will fail on the first attempt\n | ^\n 17 | } else {\n 18 | cy.wrap(true).should('be.true'); // This will pass on the second attempt\n 19 | }","isEqual":true},{"path":"runs[4].tests[2].attempts[0].error.codeFrame.language","valueA":"js","valueB":"js","isEqual":true},{"path":"runs[4].tests[2].attempts[0].timings.lifecycle","valueA":26,"valueB":11,"isEqual":false},{"path":"runs[4].tests[2].attempts[0].timings.before each[0].hookId","valueA":"h1","valueB":"h1","isEqual":true},{"path":"runs[4].tests[2].attempts[0].timings.before each[0].fnDuration","valueA":7,"valueB":8,"isEqual":false},{"path":"runs[4].tests[2].attempts[0].timings.before each[0].afterFnDuration","valueA":0,"valueB":0,"isEqual":true},{"path":"runs[4].tests[2].attempts[0].timings.before each[1].hookId","valueA":"h2","valueB":"h2","isEqual":true},{"path":"runs[4].tests[2].attempts[0].timings.before each[1].fnDuration","valueA":257,"valueB":52,"isEqual":false},{"path":"runs[4].tests[2].attempts[0].timings.before each[1].afterFnDuration","valueA":0,"valueB":0,"isEqual":true},{"path":"runs[4].tests[2].attempts[0].timings.test.fnDuration","valueA":3997,"valueB":4003,"isEqual":false},{"path":"runs[4].tests[2].attempts[0].timings.test.afterFnDuration","valueA":175,"valueB":200,"isEqual":false},{"path":"runs[4].tests[2].attempts[0].timings.after each[0].hookId","valueA":"h4","valueB":"h4","isEqual":true},{"path":"runs[4].tests[2].attempts[0].timings.after each[0].fnDuration","valueA":13,"valueB":12,"isEqual":false},{"path":"runs[4].tests[2].attempts[0].timings.after each[0].afterFnDuration","valueA":0,"valueB":0,"isEqual":true},{"path":"runs[4].tests[2].attempts[0].timings.after each[1]","valueA":{"hookId":"h5","fnDuration":11,"afterFnDuration":0},"isEqual":false,"note":"Does not exist"},{"path":"runs[4].tests[2].attempts[0].failedFromHookId","valueA":null,"isEqual":false,"note":"Does not exist"},{"path":"runs[4].tests[2].attempts[0].wallClockStartedAt","valueA":"2023-09-14T20:44:02.279Z","valueB":"2023-09-15T04:43:36.417Z","isEqual":false},{"path":"runs[4].tests[2].attempts[0].wallClockDuration","valueA":4488,"valueB":4276,"isEqual":false},{"path":"runs[4].tests[2].attempts[0].videoTimestamp","valueA":14192,"valueB":13345,"isEqual":false},{"path":"runs[4].tests[2].attempts[0].startedAt","valueA":"2023-09-14T20:44:02.279Z","valueB":"2023-09-15T04:43:36.417Z","isEqual":false},{"path":"runs[4].tests[2].attempts[0].duration","valueA":4488,"valueB":4276,"isEqual":false},{"path":"runs[4].tests[2].attempts[0].screenshots[0].screenshotId","valueA":"m4os6","valueB":"MGLGct","isEqual":false},{"path":"runs[4].tests[2].attempts[0].screenshots[0].name","valueA":"screenshot","valueB":"screenshot","isEqual":true},{"path":"runs[4].tests[2].attempts[0].screenshots[0].testId","valueA":"r5","valueB":"r5","isEqual":true},{"path":"runs[4].tests[2].attempts[0].screenshots[0].testAttemptIndex","valueA":0,"valueB":0,"isEqual":true},{"path":"runs[4].tests[2].attempts[0].screenshots[0].takenAt","valueA":"2023-09-14T20:44:06.568Z","valueB":"2023-09-15T04:43:40.495Z","isEqual":false},{"path":"runs[4].tests[2].attempts[0].screenshots[0].path","valueA":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/screenshots/b.spec.js/Failing test with 2 attempts, passed test and flaky test with 2 attempts -- should fail on the first attempt and pass on the second (failed).png","valueB":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/screenshots/b.spec.js/Failing test with 2 attempts, passed test and flaky test with 2 attempts -- should fail on the first attempt and pass on the second (failed).png","isEqual":true},{"path":"runs[4].tests[2].attempts[0].screenshots[0].height","valueA":1440,"valueB":1440,"isEqual":true},{"path":"runs[4].tests[2].attempts[0].screenshots[0].width","valueA":2560,"valueB":2560,"isEqual":true},{"path":"runs[4].tests[2].attempts[0].screenshots[0].size","valueB":379089,"isEqual":false,"note":"Does not exist"},{"path":"runs[4].tests[2].attempts[0].screenshots[0].dimensions","valueB":{"width":2560,"height":1440},"isEqual":false,"note":"Does not exist"},{"path":"runs[4].tests[2].attempts[0].screenshots[0].multipart","valueB":false,"isEqual":false,"note":"Does not exist"},{"path":"runs[4].tests[2].attempts[0].screenshots[0].specName","valueB":"b.spec.js","isEqual":false,"note":"Does not exist"},{"path":"runs[4].tests[2].attempts[0].screenshots[0].testFailure","valueB":true,"isEqual":false,"note":"Does not exist"},{"path":"runs[4].tests[2].attempts[0].screenshots[0].scaled","valueB":true,"isEqual":false,"note":"Does not exist"},{"path":"runs[4].tests[2].attempts[0].screenshots[0].blackout","valueB":[],"isEqual":false,"note":"Does not exist"},{"path":"runs[4].tests[2].attempts[0].screenshots[0].duration","valueB":197,"isEqual":false,"note":"Does not exist"},{"path":"runs[4].tests[2].attempts[0].body","valueB":"() => {\n if (attempt === 0) {\n attempt++;\n cy.wrap(false).should('be.true'); // This will fail on the first attempt\n } else {\n cy.wrap(true).should('be.true'); // This will pass on the second attempt\n }\n }","isEqual":false,"note":"Does not exist"},{"path":"runs[4].tests[2].attempts[1].state","valueA":"passed","valueB":"passed","isEqual":true},{"path":"runs[4].tests[2].attempts[1].error","valueA":null,"valueB":null,"isEqual":true},{"path":"runs[4].tests[2].attempts[1].timings.lifecycle","valueA":31,"valueB":17,"isEqual":false},{"path":"runs[4].tests[2].attempts[1].timings.before each[0].hookId","valueA":"h1","valueB":"h1","isEqual":true},{"path":"runs[4].tests[2].attempts[1].timings.before each[0].fnDuration","valueA":7,"valueB":8,"isEqual":false},{"path":"runs[4].tests[2].attempts[1].timings.before each[0].afterFnDuration","valueA":0,"valueB":0,"isEqual":true},{"path":"runs[4].tests[2].attempts[1].timings.before each[1].hookId","valueA":"h2","valueB":"h2","isEqual":true},{"path":"runs[4].tests[2].attempts[1].timings.before each[1].fnDuration","valueA":80,"valueB":98,"isEqual":false},{"path":"runs[4].tests[2].attempts[1].timings.before each[1].afterFnDuration","valueA":0,"valueB":0,"isEqual":true},{"path":"runs[4].tests[2].attempts[1].timings.test.fnDuration","valueA":3,"valueB":2,"isEqual":false},{"path":"runs[4].tests[2].attempts[1].timings.test.afterFnDuration","valueA":0,"valueB":0,"isEqual":true},{"path":"runs[4].tests[2].attempts[1].timings.after each[0].hookId","valueA":"h4","valueB":"h4","isEqual":true},{"path":"runs[4].tests[2].attempts[1].timings.after each[0].fnDuration","valueA":11,"valueB":12,"isEqual":false},{"path":"runs[4].tests[2].attempts[1].timings.after each[0].afterFnDuration","valueA":1,"valueB":0,"isEqual":false},{"path":"runs[4].tests[2].attempts[1].timings.after each[1]","valueA":{"hookId":"h5","fnDuration":10,"afterFnDuration":0},"isEqual":false,"note":"Does not exist"},{"path":"runs[4].tests[2].attempts[1].timings.after all","valueA":[{"hookId":"h3","fnDuration":3,"afterFnDuration":0}],"isEqual":false,"note":"Does not exist"},{"path":"runs[4].tests[2].attempts[1].failedFromHookId","valueA":null,"isEqual":false,"note":"Does not exist"},{"path":"runs[4].tests[2].attempts[1].wallClockStartedAt","valueA":"2023-09-14T20:44:06.773Z","valueB":"2023-09-15T04:43:40.738Z","isEqual":false},{"path":"runs[4].tests[2].attempts[1].wallClockDuration","valueA":151,"valueB":127,"isEqual":false},{"path":"runs[4].tests[2].attempts[1].videoTimestamp","valueA":18686,"valueB":17666,"isEqual":false},{"path":"runs[4].tests[2].attempts[1].startedAt","valueA":"2023-09-14T20:44:06.773Z","valueB":"2023-09-15T04:43:40.738Z","isEqual":false},{"path":"runs[4].tests[2].attempts[1].duration","valueA":151,"valueB":127,"isEqual":false},{"path":"runs[4].tests[2].attempts[1].body","valueB":"() => {\n if (attempt === 0) {\n attempt++;\n cy.wrap(false).should('be.true'); // This will fail on the first attempt\n } else {\n cy.wrap(true).should('be.true'); // This will pass on the second attempt\n }\n }","isEqual":false,"note":"Does not exist"},{"path":"runs[4].tests[2].duration","valueB":4482,"isEqual":false,"note":"Does not exist"},{"path":"startedTestsAt","valueA":"2023-09-14T20:43:19.838Z","valueB":"2023-09-15T04:43:03.686Z","isEqual":false},{"path":"endedTestsAt","valueA":"2023-09-14T20:44:06.926Z","valueB":"2023-09-15T04:43:40.907Z","isEqual":false},{"path":"config.animationDistanceThreshold","valueA":5,"valueB":5,"isEqual":true},{"path":"config.arch","valueA":"arm64","valueB":"arm64","isEqual":true},{"path":"config.autoOpen","valueA":false,"valueB":false,"isEqual":true},{"path":"config.baseUrl","valueA":"https://todomvc.com/examples/vanillajs","valueB":"https://todomvc.com/examples/vanillajs","isEqual":true},{"path":"config.blockHosts","valueA":null,"valueB":null,"isEqual":true},{"path":"config.browsers[0].name","valueA":"chrome","valueB":"chrome","isEqual":true},{"path":"config.browsers[0].family","valueA":"chromium","valueB":"chromium","isEqual":true},{"path":"config.browsers[0].channel","valueA":"stable","valueB":"stable","isEqual":true},{"path":"config.browsers[0].displayName","valueA":"Chrome","valueB":"Chrome","isEqual":true},{"path":"config.browsers[0].version","valueA":"116.0.5845.187","valueB":"116.0.5845.187","isEqual":true},{"path":"config.browsers[0].path","valueA":"/Applications/Google Chrome.app/Contents/MacOS/Google Chrome","valueB":"/Applications/Google Chrome.app/Contents/MacOS/Google Chrome","isEqual":true},{"path":"config.browsers[0].minSupportedVersion","valueA":64,"valueB":64,"isEqual":true},{"path":"config.browsers[0].majorVersion","valueA":"116","valueB":"116","isEqual":true},{"path":"config.browsers[1].name","valueA":"edge","valueB":"edge","isEqual":true},{"path":"config.browsers[1].family","valueA":"chromium","valueB":"chromium","isEqual":true},{"path":"config.browsers[1].channel","valueA":"stable","valueB":"stable","isEqual":true},{"path":"config.browsers[1].displayName","valueA":"Edge","valueB":"Edge","isEqual":true},{"path":"config.browsers[1].version","valueA":"116.0.1938.81","valueB":"116.0.1938.81","isEqual":true},{"path":"config.browsers[1].path","valueA":"/Applications/Microsoft Edge.app/Contents/MacOS/Microsoft Edge","valueB":"/Applications/Microsoft Edge.app/Contents/MacOS/Microsoft Edge","isEqual":true},{"path":"config.browsers[1].minSupportedVersion","valueA":79,"valueB":79,"isEqual":true},{"path":"config.browsers[1].majorVersion","valueA":"116","valueB":"116","isEqual":true},{"path":"config.browsers[2].name","valueA":"electron","valueB":"electron","isEqual":true},{"path":"config.browsers[2].channel","valueA":"stable","valueB":"stable","isEqual":true},{"path":"config.browsers[2].family","valueA":"chromium","valueB":"chromium","isEqual":true},{"path":"config.browsers[2].displayName","valueA":"Electron","valueB":"Electron","isEqual":true},{"path":"config.browsers[2].version","valueA":"106.0.5249.51","valueB":"114.0.5735.289","isEqual":false},{"path":"config.browsers[2].path","valueA":"","valueB":"","isEqual":true},{"path":"config.browsers[2].majorVersion","valueA":106,"valueB":114,"isEqual":false},{"path":"config.chromeWebSecurity","valueA":true,"valueB":true,"isEqual":true},{"path":"config.clientRoute","valueA":"/__/","valueB":"/__/","isEqual":true},{"path":"config.configFile","valueA":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress.config.ts","valueB":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress.config.ts","isEqual":true},{"path":"config.cypressBinaryRoot","valueA":"/Users/miguelangarano/Library/Caches/Cypress/12.17.4/Cypress.app/Contents/Resources/app","valueB":"/Users/miguelangarano/Library/Caches/Cypress/13.2.0/Cypress.app/Contents/Resources/app","isEqual":false},{"path":"config.cypressEnv","valueA":"production","valueB":"production","isEqual":true},{"path":"config.defaultCommandTimeout","valueA":4000,"valueB":4000,"isEqual":true},{"path":"config.devServerPublicPathRoute","valueA":"/__cypress/src","valueB":"/__cypress/src","isEqual":true},{"path":"config.downloadsFolder","valueA":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/downloads","valueB":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/downloads","isEqual":true},{"path":"config.env.currents_temp_file","valueA":"/var/folders/1l/tzj2dqys6js7w35f8rx2jsq00000gn/T/tmp-26703-SD6hQYIazflS","valueB":"/var/folders/1l/tzj2dqys6js7w35f8rx2jsq00000gn/T/tmp-20392-GB80vUg8AHgL","isEqual":false},{"path":"config.env.currents_debug_enabled","valueA":false,"valueB":false,"isEqual":true},{"path":"config.excludeSpecPattern","valueA":"*.hot-update.js","valueB":"*.hot-update.js","isEqual":true},{"path":"config.execTimeout","valueA":60000,"valueB":60000,"isEqual":true},{"path":"config.experimentalCspAllowList","valueA":false,"valueB":false,"isEqual":true},{"path":"config.experimentalFetchPolyfill","valueA":false,"valueB":false,"isEqual":true},{"path":"config.experimentalInteractiveRunEvents","valueA":false,"valueB":false,"isEqual":true},{"path":"config.experimentalMemoryManagement","valueA":false,"valueB":false,"isEqual":true},{"path":"config.experimentalModifyObstructiveThirdPartyCode","valueA":false,"valueB":false,"isEqual":true},{"path":"config.experimentalOriginDependencies","valueA":false,"valueB":false,"isEqual":true},{"path":"config.experimentalRunAllSpecs","valueA":false,"valueB":false,"isEqual":true},{"path":"config.experimentalSingleTabRunMode","valueA":false,"valueB":false,"isEqual":true},{"path":"config.experimentalSkipDomainInjection","valueA":null,"valueB":null,"isEqual":true},{"path":"config.experimentalSourceRewriting","valueA":false,"valueB":false,"isEqual":true},{"path":"config.experimentalStudio","valueA":false,"valueB":false,"isEqual":true},{"path":"config.experimentalWebKitSupport","valueA":false,"valueB":false,"isEqual":true},{"path":"config.fileServerFolder","valueA":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo","valueB":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo","isEqual":true},{"path":"config.fixturesFolder","valueA":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/fixtures","valueB":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/fixtures","isEqual":true},{"path":"config.hosts","valueA":null,"valueB":null,"isEqual":true},{"path":"config.includeShadowDom","valueA":false,"valueB":false,"isEqual":true},{"path":"config.isInteractive","valueA":true,"valueB":true,"isEqual":true},{"path":"config.isTextTerminal","valueA":true,"valueB":true,"isEqual":true},{"path":"config.keystrokeDelay","valueA":0,"valueB":0,"isEqual":true},{"path":"config.modifyObstructiveCode","valueA":true,"valueB":true,"isEqual":true},{"path":"config.morgan","valueA":false,"valueB":false,"isEqual":true},{"path":"config.namespace","valueA":"__cypress","valueB":"__cypress","isEqual":true},{"path":"config.numTestsKeptInMemory","valueA":0,"valueB":0,"isEqual":true},{"path":"config.pageLoadTimeout","valueA":60000,"valueB":60000,"isEqual":true},{"path":"config.platform","valueA":"darwin","valueB":"darwin","isEqual":true},{"path":"config.port","valueA":null,"valueB":null,"isEqual":true},{"path":"config.projectId","valueA":null,"valueB":null,"isEqual":true},{"path":"config.projectName","valueA":"cypress-12-demo","valueB":"cypress-12-demo","isEqual":true},{"path":"config.projectRoot","valueA":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo","valueB":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo","isEqual":true},{"path":"config.rawJson.e2e.baseUrl","valueA":"https://todomvc.com/examples/vanillajs","valueB":"https://todomvc.com/examples/vanillajs","isEqual":true},{"path":"config.rawJson.e2e.supportFile","valueA":"cypress/support/e2e.ts","valueB":"cypress/support/e2e.ts","isEqual":true},{"path":"config.rawJson.e2e.specPattern","valueA":"cypress/*/**/*.spec.js","valueB":"cypress/*/**/*.spec.js","isEqual":true},{"path":"config.rawJson.e2e.setupNodeEvents","valueA":"[Function setupNodeEvents]","valueB":"[Function setupNodeEvents]","isEqual":true},{"path":"config.rawJson.component.specPattern[0]","valueA":"pages/__tests__/*.spec.tsx","valueB":"pages/__tests__/*.spec.tsx","isEqual":true},{"path":"config.rawJson.component.setupNodeEvents","valueA":"[Function setupNodeEvents]","valueB":"[Function setupNodeEvents]","isEqual":true},{"path":"config.rawJson.component.devServer.framework","valueA":"next","valueB":"next","isEqual":true},{"path":"config.rawJson.component.devServer.bundler","valueA":"webpack","valueB":"webpack","isEqual":true},{"path":"config.rawJson.baseUrl","valueA":"https://todomvc.com/examples/vanillajs","valueB":"https://todomvc.com/examples/vanillajs","isEqual":true},{"path":"config.rawJson.supportFile","valueA":"cypress/support/e2e.ts","valueB":"cypress/support/e2e.ts","isEqual":true},{"path":"config.rawJson.specPattern","valueA":"cypress/*/**/*.spec.js","valueB":"cypress/*/**/*.spec.js","isEqual":true},{"path":"config.rawJson.setupNodeEvents","valueA":"[Function setupNodeEvents]","valueB":"[Function setupNodeEvents]","isEqual":true},{"path":"config.rawJson.projectRoot","valueA":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo","valueB":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo","isEqual":true},{"path":"config.rawJson.projectName","valueA":"cypress-12-demo","valueB":"cypress-12-demo","isEqual":true},{"path":"config.rawJson.repoRoot","valueA":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13","valueB":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13","isEqual":true},{"path":"config.redirectionLimit","valueA":20,"valueB":20,"isEqual":true},{"path":"config.repoRoot","valueA":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13","valueB":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13","isEqual":true},{"path":"config.report","valueA":true,"valueB":true,"isEqual":true},{"path":"config.reporter","valueA":"spec","valueB":"spec","isEqual":true},{"path":"config.reporterOptions","valueA":null,"valueB":null,"isEqual":true},{"path":"config.reporterRoute","valueA":"/__cypress/reporter","valueB":"/__cypress/reporter","isEqual":true},{"path":"config.requestTimeout","valueA":5000,"valueB":5000,"isEqual":true},{"path":"config.resolved.animationDistanceThreshold.value","valueA":5,"valueB":5,"isEqual":true},{"path":"config.resolved.animationDistanceThreshold.from","valueA":"default","valueB":"default","isEqual":true},{"path":"config.resolved.arch.value","valueA":"arm64","valueB":"arm64","isEqual":true},{"path":"config.resolved.arch.from","valueA":"default","valueB":"default","isEqual":true},{"path":"config.resolved.baseUrl.value","valueA":"https://todomvc.com/examples/vanillajs","valueB":"https://todomvc.com/examples/vanillajs","isEqual":true},{"path":"config.resolved.baseUrl.from","valueA":"config","valueB":"config","isEqual":true},{"path":"config.resolved.blockHosts.value","valueA":null,"valueB":null,"isEqual":true},{"path":"config.resolved.blockHosts.from","valueA":"default","valueB":"default","isEqual":true},{"path":"config.resolved.chromeWebSecurity.value","valueA":true,"valueB":true,"isEqual":true},{"path":"config.resolved.chromeWebSecurity.from","valueA":"default","valueB":"default","isEqual":true},{"path":"config.resolved.clientCertificates.from","valueA":"default","valueB":"default","isEqual":true},{"path":"config.resolved.defaultCommandTimeout.value","valueA":4000,"valueB":4000,"isEqual":true},{"path":"config.resolved.defaultCommandTimeout.from","valueA":"default","valueB":"default","isEqual":true},{"path":"config.resolved.downloadsFolder.value","valueA":"cypress/downloads","valueB":"cypress/downloads","isEqual":true},{"path":"config.resolved.downloadsFolder.from","valueA":"default","valueB":"default","isEqual":true},{"path":"config.resolved.env.currents_temp_file.value","valueA":"/var/folders/1l/tzj2dqys6js7w35f8rx2jsq00000gn/T/tmp-26703-SD6hQYIazflS","valueB":"/var/folders/1l/tzj2dqys6js7w35f8rx2jsq00000gn/T/tmp-20392-GB80vUg8AHgL","isEqual":false},{"path":"config.resolved.env.currents_temp_file.from","valueA":"cli","valueB":"cli","isEqual":true},{"path":"config.resolved.env.currents_debug_enabled.value","valueA":false,"valueB":false,"isEqual":true},{"path":"config.resolved.env.currents_debug_enabled.from","valueA":"cli","valueB":"cli","isEqual":true},{"path":"config.resolved.execTimeout.value","valueA":60000,"valueB":60000,"isEqual":true},{"path":"config.resolved.execTimeout.from","valueA":"default","valueB":"default","isEqual":true},{"path":"config.resolved.experimentalCspAllowList.value","valueA":false,"valueB":false,"isEqual":true},{"path":"config.resolved.experimentalCspAllowList.from","valueA":"default","valueB":"default","isEqual":true},{"path":"config.resolved.experimentalFetchPolyfill.value","valueA":false,"valueB":false,"isEqual":true},{"path":"config.resolved.experimentalFetchPolyfill.from","valueA":"default","valueB":"default","isEqual":true},{"path":"config.resolved.experimentalInteractiveRunEvents.value","valueA":false,"valueB":false,"isEqual":true},{"path":"config.resolved.experimentalInteractiveRunEvents.from","valueA":"default","valueB":"default","isEqual":true},{"path":"config.resolved.experimentalRunAllSpecs.value","valueA":false,"valueB":false,"isEqual":true},{"path":"config.resolved.experimentalRunAllSpecs.from","valueA":"default","valueB":"default","isEqual":true},{"path":"config.resolved.experimentalMemoryManagement.value","valueA":false,"valueB":false,"isEqual":true},{"path":"config.resolved.experimentalMemoryManagement.from","valueA":"default","valueB":"default","isEqual":true},{"path":"config.resolved.experimentalModifyObstructiveThirdPartyCode.value","valueA":false,"valueB":false,"isEqual":true},{"path":"config.resolved.experimentalModifyObstructiveThirdPartyCode.from","valueA":"default","valueB":"default","isEqual":true},{"path":"config.resolved.experimentalSkipDomainInjection.value","valueA":null,"valueB":null,"isEqual":true},{"path":"config.resolved.experimentalSkipDomainInjection.from","valueA":"default","valueB":"default","isEqual":true},{"path":"config.resolved.experimentalOriginDependencies.value","valueA":false,"valueB":false,"isEqual":true},{"path":"config.resolved.experimentalOriginDependencies.from","valueA":"default","valueB":"default","isEqual":true},{"path":"config.resolved.experimentalSourceRewriting.value","valueA":false,"valueB":false,"isEqual":true},{"path":"config.resolved.experimentalSourceRewriting.from","valueA":"default","valueB":"default","isEqual":true},{"path":"config.resolved.experimentalSingleTabRunMode.value","valueA":false,"valueB":false,"isEqual":true},{"path":"config.resolved.experimentalSingleTabRunMode.from","valueA":"default","valueB":"default","isEqual":true},{"path":"config.resolved.experimentalStudio.value","valueA":false,"valueB":false,"isEqual":true},{"path":"config.resolved.experimentalStudio.from","valueA":"default","valueB":"default","isEqual":true},{"path":"config.resolved.experimentalWebKitSupport.value","valueA":false,"valueB":false,"isEqual":true},{"path":"config.resolved.experimentalWebKitSupport.from","valueA":"default","valueB":"default","isEqual":true},{"path":"config.resolved.fileServerFolder.value","valueA":"","valueB":"","isEqual":true},{"path":"config.resolved.fileServerFolder.from","valueA":"default","valueB":"default","isEqual":true},{"path":"config.resolved.fixturesFolder.value","valueA":"cypress/fixtures","valueB":"cypress/fixtures","isEqual":true},{"path":"config.resolved.fixturesFolder.from","valueA":"default","valueB":"default","isEqual":true},{"path":"config.resolved.excludeSpecPattern.value","valueA":"*.hot-update.js","valueB":"*.hot-update.js","isEqual":true},{"path":"config.resolved.excludeSpecPattern.from","valueA":"default","valueB":"default","isEqual":true},{"path":"config.resolved.includeShadowDom.value","valueA":false,"valueB":false,"isEqual":true},{"path":"config.resolved.includeShadowDom.from","valueA":"default","valueB":"default","isEqual":true},{"path":"config.resolved.keystrokeDelay.value","valueA":0,"valueB":0,"isEqual":true},{"path":"config.resolved.keystrokeDelay.from","valueA":"default","valueB":"default","isEqual":true},{"path":"config.resolved.modifyObstructiveCode.value","valueA":true,"valueB":true,"isEqual":true},{"path":"config.resolved.modifyObstructiveCode.from","valueA":"default","valueB":"default","isEqual":true},{"path":"config.resolved.nodeVersion","valueA":{"from":"default"},"isEqual":false,"note":"Does not exist"},{"path":"config.resolved.numTestsKeptInMemory.value","valueA":0,"valueB":0,"isEqual":true},{"path":"config.resolved.numTestsKeptInMemory.from","valueA":"config","valueB":"config","isEqual":true},{"path":"config.resolved.platform.value","valueA":"darwin","valueB":"darwin","isEqual":true},{"path":"config.resolved.platform.from","valueA":"default","valueB":"default","isEqual":true},{"path":"config.resolved.pageLoadTimeout.value","valueA":60000,"valueB":60000,"isEqual":true},{"path":"config.resolved.pageLoadTimeout.from","valueA":"default","valueB":"default","isEqual":true},{"path":"config.resolved.port.value","valueA":null,"valueB":null,"isEqual":true},{"path":"config.resolved.port.from","valueA":"default","valueB":"default","isEqual":true},{"path":"config.resolved.projectId.value","valueA":null,"valueB":null,"isEqual":true},{"path":"config.resolved.projectId.from","valueA":"default","valueB":"default","isEqual":true},{"path":"config.resolved.redirectionLimit.value","valueA":20,"valueB":20,"isEqual":true},{"path":"config.resolved.redirectionLimit.from","valueA":"default","valueB":"default","isEqual":true},{"path":"config.resolved.reporter.value","valueA":"spec","valueB":"spec","isEqual":true},{"path":"config.resolved.reporter.from","valueA":"default","valueB":"default","isEqual":true},{"path":"config.resolved.reporterOptions.value","valueA":null,"valueB":null,"isEqual":true},{"path":"config.resolved.reporterOptions.from","valueA":"default","valueB":"default","isEqual":true},{"path":"config.resolved.requestTimeout.value","valueA":5000,"valueB":5000,"isEqual":true},{"path":"config.resolved.requestTimeout.from","valueA":"default","valueB":"default","isEqual":true},{"path":"config.resolved.resolvedNodePath.value","valueA":null,"valueB":null,"isEqual":true},{"path":"config.resolved.resolvedNodePath.from","valueA":"default","valueB":"default","isEqual":true},{"path":"config.resolved.resolvedNodeVersion.value","valueA":null,"valueB":null,"isEqual":true},{"path":"config.resolved.resolvedNodeVersion.from","valueA":"default","valueB":"default","isEqual":true},{"path":"config.resolved.responseTimeout.value","valueA":30000,"valueB":30000,"isEqual":true},{"path":"config.resolved.responseTimeout.from","valueA":"default","valueB":"default","isEqual":true},{"path":"config.resolved.retries.value.runMode","valueA":0,"valueB":0,"isEqual":true},{"path":"config.resolved.retries.value.openMode","valueA":0,"valueB":0,"isEqual":true},{"path":"config.resolved.retries.from","valueA":"default","valueB":"default","isEqual":true},{"path":"config.resolved.screenshotOnRunFailure.value","valueA":true,"valueB":true,"isEqual":true},{"path":"config.resolved.screenshotOnRunFailure.from","valueA":"default","valueB":"default","isEqual":true},{"path":"config.resolved.screenshotsFolder.value","valueA":"cypress/screenshots","valueB":"cypress/screenshots","isEqual":true},{"path":"config.resolved.screenshotsFolder.from","valueA":"default","valueB":"default","isEqual":true},{"path":"config.resolved.slowTestThreshold.value","valueA":10000,"valueB":10000,"isEqual":true},{"path":"config.resolved.slowTestThreshold.from","valueA":"default","valueB":"default","isEqual":true},{"path":"config.resolved.scrollBehavior.value","valueA":"top","valueB":"top","isEqual":true},{"path":"config.resolved.scrollBehavior.from","valueA":"default","valueB":"default","isEqual":true},{"path":"config.resolved.supportFile.value","valueA":"cypress/support/e2e.ts","valueB":"cypress/support/e2e.ts","isEqual":true},{"path":"config.resolved.supportFile.from","valueA":"config","valueB":"config","isEqual":true},{"path":"config.resolved.supportFolder.value","valueA":false,"valueB":false,"isEqual":true},{"path":"config.resolved.supportFolder.from","valueA":"default","valueB":"default","isEqual":true},{"path":"config.resolved.taskTimeout.value","valueA":60000,"valueB":60000,"isEqual":true},{"path":"config.resolved.taskTimeout.from","valueA":"default","valueB":"default","isEqual":true},{"path":"config.resolved.testIsolation.value","valueA":true,"valueB":true,"isEqual":true},{"path":"config.resolved.testIsolation.from","valueA":"default","valueB":"default","isEqual":true},{"path":"config.resolved.trashAssetsBeforeRuns.value","valueA":true,"valueB":true,"isEqual":true},{"path":"config.resolved.trashAssetsBeforeRuns.from","valueA":"default","valueB":"default","isEqual":true},{"path":"config.resolved.userAgent.value","valueA":null,"valueB":null,"isEqual":true},{"path":"config.resolved.userAgent.from","valueA":"default","valueB":"default","isEqual":true},{"path":"config.resolved.video.value","valueA":true,"valueB":false,"isEqual":false},{"path":"config.resolved.video.from","valueA":"default","valueB":"default","isEqual":true},{"path":"config.resolved.videoCompression.value","valueA":32,"valueB":false,"isEqual":false},{"path":"config.resolved.videoCompression.from","valueA":"default","valueB":"default","isEqual":true},{"path":"config.resolved.videosFolder.value","valueA":"cypress/videos","valueB":"cypress/videos","isEqual":true},{"path":"config.resolved.videosFolder.from","valueA":"default","valueB":"default","isEqual":true},{"path":"config.resolved.videoUploadOnPasses","valueA":{"value":true,"from":"default"},"isEqual":false,"note":"Does not exist"},{"path":"config.resolved.viewportHeight.value","valueA":660,"valueB":660,"isEqual":true},{"path":"config.resolved.viewportHeight.from","valueA":"default","valueB":"default","isEqual":true},{"path":"config.resolved.viewportWidth.value","valueA":1000,"valueB":1000,"isEqual":true},{"path":"config.resolved.viewportWidth.from","valueA":"default","valueB":"default","isEqual":true},{"path":"config.resolved.waitForAnimations.value","valueA":true,"valueB":true,"isEqual":true},{"path":"config.resolved.waitForAnimations.from","valueA":"default","valueB":"default","isEqual":true},{"path":"config.resolved.watchForFileChanges.value","valueA":false,"valueB":false,"isEqual":true},{"path":"config.resolved.watchForFileChanges.from","valueA":"config","valueB":"config","isEqual":true},{"path":"config.resolved.specPattern.value","valueA":"cypress/*/**/*.spec.js","valueB":"cypress/*/**/*.spec.js","isEqual":true},{"path":"config.resolved.specPattern.from","valueA":"config","valueB":"config","isEqual":true},{"path":"config.resolved.browsers.value[0].name","valueA":"chrome","valueB":"chrome","isEqual":true},{"path":"config.resolved.browsers.value[0].family","valueA":"chromium","valueB":"chromium","isEqual":true},{"path":"config.resolved.browsers.value[0].channel","valueA":"stable","valueB":"stable","isEqual":true},{"path":"config.resolved.browsers.value[0].displayName","valueA":"Chrome","valueB":"Chrome","isEqual":true},{"path":"config.resolved.browsers.value[0].version","valueA":"116.0.5845.187","valueB":"116.0.5845.187","isEqual":true},{"path":"config.resolved.browsers.value[0].path","valueA":"/Applications/Google Chrome.app/Contents/MacOS/Google Chrome","valueB":"/Applications/Google Chrome.app/Contents/MacOS/Google Chrome","isEqual":true},{"path":"config.resolved.browsers.value[0].minSupportedVersion","valueA":64,"valueB":64,"isEqual":true},{"path":"config.resolved.browsers.value[0].majorVersion","valueA":"116","valueB":"116","isEqual":true},{"path":"config.resolved.browsers.value[1].name","valueA":"edge","valueB":"edge","isEqual":true},{"path":"config.resolved.browsers.value[1].family","valueA":"chromium","valueB":"chromium","isEqual":true},{"path":"config.resolved.browsers.value[1].channel","valueA":"stable","valueB":"stable","isEqual":true},{"path":"config.resolved.browsers.value[1].displayName","valueA":"Edge","valueB":"Edge","isEqual":true},{"path":"config.resolved.browsers.value[1].version","valueA":"116.0.1938.81","valueB":"116.0.1938.81","isEqual":true},{"path":"config.resolved.browsers.value[1].path","valueA":"/Applications/Microsoft Edge.app/Contents/MacOS/Microsoft Edge","valueB":"/Applications/Microsoft Edge.app/Contents/MacOS/Microsoft Edge","isEqual":true},{"path":"config.resolved.browsers.value[1].minSupportedVersion","valueA":79,"valueB":79,"isEqual":true},{"path":"config.resolved.browsers.value[1].majorVersion","valueA":"116","valueB":"116","isEqual":true},{"path":"config.resolved.browsers.value[2].name","valueA":"electron","valueB":"electron","isEqual":true},{"path":"config.resolved.browsers.value[2].channel","valueA":"stable","valueB":"stable","isEqual":true},{"path":"config.resolved.browsers.value[2].family","valueA":"chromium","valueB":"chromium","isEqual":true},{"path":"config.resolved.browsers.value[2].displayName","valueA":"Electron","valueB":"Electron","isEqual":true},{"path":"config.resolved.browsers.value[2].version","valueA":"106.0.5249.51","valueB":"114.0.5735.289","isEqual":false},{"path":"config.resolved.browsers.value[2].path","valueA":"","valueB":"","isEqual":true},{"path":"config.resolved.browsers.value[2].majorVersion","valueA":106,"valueB":114,"isEqual":false},{"path":"config.resolved.browsers.from","valueA":"runtime","valueB":"runtime","isEqual":true},{"path":"config.resolved.hosts.value","valueA":null,"valueB":null,"isEqual":true},{"path":"config.resolved.hosts.from","valueA":"default","valueB":"default","isEqual":true},{"path":"config.resolved.isInteractive.value","valueA":true,"valueB":true,"isEqual":true},{"path":"config.resolved.isInteractive.from","valueA":"default","valueB":"default","isEqual":true},{"path":"config.resolvedNodePath","valueA":"/Users/miguelangarano/.nvm/versions/node/v18.14.2/bin/node","valueB":"/Users/miguelangarano/.nvm/versions/node/v18.14.2/bin/node","isEqual":true},{"path":"config.resolvedNodeVersion","valueA":"18.14.2","valueB":"18.14.2","isEqual":true},{"path":"config.responseTimeout","valueA":30000,"valueB":30000,"isEqual":true},{"path":"config.retries.runMode","valueA":0,"valueB":0,"isEqual":true},{"path":"config.retries.openMode","valueA":0,"valueB":0,"isEqual":true},{"path":"config.screenshotOnRunFailure","valueA":true,"valueB":true,"isEqual":true},{"path":"config.screenshotsFolder","valueA":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/screenshots","valueB":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/screenshots","isEqual":true},{"path":"config.scrollBehavior","valueA":"top","valueB":"top","isEqual":true},{"path":"config.setupNodeEvents","valueA":"[Function setupNodeEvents]","valueB":"[Function setupNodeEvents]","isEqual":true},{"path":"config.slowTestThreshold","valueA":10000,"valueB":10000,"isEqual":true},{"path":"config.socketId","valueA":"2legxbwfbi","valueB":"jynawlw4yn","isEqual":false},{"path":"config.socketIoCookie","valueA":"__socket","valueB":"__socket","isEqual":true},{"path":"config.socketIoRoute","valueA":"/__socket","valueB":"/__socket","isEqual":true},{"path":"config.specPattern","valueA":"cypress/*/**/*.spec.js","valueB":"cypress/*/**/*.spec.js","isEqual":true},{"path":"config.supportFile","valueA":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/support/e2e.ts","valueB":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/support/e2e.ts","isEqual":true},{"path":"config.supportFolder","valueA":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/support","valueB":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/support","isEqual":true},{"path":"config.taskTimeout","valueA":60000,"valueB":60000,"isEqual":true},{"path":"config.testIsolation","valueA":true,"valueB":true,"isEqual":true},{"path":"config.trashAssetsBeforeRuns","valueA":true,"valueB":true,"isEqual":true},{"path":"config.userAgent","valueA":null,"valueB":null,"isEqual":true},{"path":"config.version","valueA":"12.17.4","valueB":"13.2.0","isEqual":false},{"path":"config.video","valueA":true,"valueB":false,"isEqual":false},{"path":"config.videoCompression","valueA":32,"valueB":false,"isEqual":false},{"path":"config.videoUploadOnPasses","valueA":true,"valueB":false,"isEqual":false},{"path":"config.videosFolder","valueA":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/videos","valueB":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/videos","isEqual":true},{"path":"config.viewportHeight","valueA":660,"valueB":660,"isEqual":true},{"path":"config.viewportWidth","valueA":1000,"valueB":1000,"isEqual":true},{"path":"config.waitForAnimations","valueA":true,"valueB":true,"isEqual":true},{"path":"config.watchForFileChanges","valueA":false,"valueB":false,"isEqual":true},{"path":"config.testingType","valueA":"e2e","valueB":"e2e","isEqual":true},{"path":"config.hideCommandLog","valueB":false,"isEqual":false,"note":"Does not exist"},{"path":"config.hideRunnerUi","valueB":false,"isEqual":false,"note":"Does not exist"},{"path":"config.protocolEnabled","valueB":false,"isEqual":false,"note":"Does not exist"},{"path":"status","valueA":"finished","valueB":"finished","isEqual":true},{"path":"runUrl","valueA":"https://app.currents.dev/run/20f0e4c7c5f476f1","valueB":"https://app.currents.dev/run/c7068a4d0aa7e75a","isEqual":false}] \ No newline at end of file diff --git a/e2e/cypress-13-demo/README.md b/e2e/cypress-13-demo/README.md new file mode 100644 index 0000000..726c419 --- /dev/null +++ b/e2e/cypress-13-demo/README.md @@ -0,0 +1,9 @@ +# E2E Compatibility Tests + +```sh +CURRENTS_API_BASE_URL=https://api.currents.dev/v1 \ +CURRENTS_API_KEY= \ +CURRENTS_RECORD_KEY= \ +CURRENTS_PROJECT_ID= \ +npx jest --watch +``` diff --git a/e2e/cypress-13-demo/__tests__/run.test.ts b/e2e/cypress-13-demo/__tests__/run.test.ts new file mode 100644 index 0000000..e56c015 --- /dev/null +++ b/e2e/cypress-13-demo/__tests__/run.test.ts @@ -0,0 +1,72 @@ +import { expect, jest } from "@jest/globals"; +import { fetchRun, runCypressCloud } from "../../utils/utils"; + +import { data } from "../data-references/ccy-1.9.4-cy-12-crapi"; +import { all, config, specs } from "../data-references/ccy-1.9.4-cy-12-cycl"; +const testSpecs = [ + "a.spec.js", + "b.spec.js", + "c.spec.js", + "d.spec.js", + "e.spec.js", +]; +let result: any = null; + +describe("Cypress 13 compatible output", () => { + jest.setTimeout(60 * 1000 * 5); + + beforeAll(async () => { + // import cached from "../data-references/ccy-1.10-cy-13-cycl.json"; + // save the result to a file and read from json for faster development + // result = cached; + result = await runCypressCloud(); + }); + + describe("Run Results", () => { + it("should have compatible summary", async () => { + expect(result).toMatchObject({ + ...all, + runs: expect.any(Array), + config: expect.any(Object), + }); + }); + + it("should have compatible config", async () => { + expect(result.config).toMatchObject({ + video: config.video, + version: expect.stringContaining("13."), + }); + }); + + testSpecs.map((spec) => { + it(`${spec}: should be compatible`, async () => { + // @ts-ignore + if (!result?.status === "finished") { + throw new Error("Test did not finish"); + } + + // @ts-ignore + const actual = result.runs.find( + // @ts-ignore + (run) => run.spec.name === spec + ); + + // @ts-ignore + expect(actual).toMatchObject(specs[spec]); + }); + }); + }); + + describe("API results", () => { + let apiRun: any = null; + beforeAll(async () => { + const runId = result.runUrl.split("/").pop(); + apiRun = await fetchRun(runId); + }); + + it(`should have compatible API results`, async () => { + expect(apiRun.status).toBe("OK"); + expect(apiRun.data).toMatchObject(data); + }); + }); +}); diff --git a/e2e/cypress-13-demo/currents.config.js b/e2e/cypress-13-demo/currents.config.js new file mode 100644 index 0000000..e10b7cf --- /dev/null +++ b/e2e/cypress-13-demo/currents.config.js @@ -0,0 +1,12 @@ +module.exports = { + e2e: { + batchSize: 3, // how many specs to send in one batch + }, + component: { + batchSize: 5, // how many specs to send in one batch + }, + // eslint-disable-next-line turbo/no-undeclared-env-vars + projectId: !!(process.env.GITHUB_ACTION || process.env.CIRCLE_BRANCH) + ? "Ij0RfK" + : "l4zuz8", +}; diff --git a/e2e/cypress-13-demo/cypress.config.ts b/e2e/cypress-13-demo/cypress.config.ts new file mode 100644 index 0000000..0333ddf --- /dev/null +++ b/e2e/cypress-13-demo/cypress.config.ts @@ -0,0 +1,25 @@ +import { defineConfig } from "cypress"; +import currents from "cypress-cloud/plugin"; + +module.exports = defineConfig({ + video: true, + e2e: { + baseUrl: "https://todomvc.com/examples/vanillajs", + supportFile: "cypress/support/e2e.ts", + specPattern: "cypress/*/**/*.spec.js", + setupNodeEvents(on, config) { + return currents(on, config); + }, + }, + + component: { + specPattern: ["pages/__tests__/*.spec.tsx"], + setupNodeEvents(on, config) { + return currents(on, config); + }, + devServer: { + framework: "next", + bundler: "webpack", + }, + }, +}); diff --git a/e2e/cypress-13-demo/cypress/e2e/a.spec.js b/e2e/cypress-13-demo/cypress/e2e/a.spec.js new file mode 100644 index 0000000..0ba5b60 --- /dev/null +++ b/e2e/cypress-13-demo/cypress/e2e/a.spec.js @@ -0,0 +1,7 @@ +describe('Failing test with 2 attempts', () => { + it('should try 2 times', { + retries: 2, + }, () => { + cy.wrap(false).should('be.true'); + }); +}); diff --git a/e2e/cypress-13-demo/cypress/e2e/b.spec.js b/e2e/cypress-13-demo/cypress/e2e/b.spec.js new file mode 100644 index 0000000..87843a6 --- /dev/null +++ b/e2e/cypress-13-demo/cypress/e2e/b.spec.js @@ -0,0 +1,21 @@ +let attempt = 0; +describe('Failing test with 2 attempts, passed test and flaky test with 2 attempts', () => { + it('should try 2 times', { + retries: 2, + }, () => { + cy.wrap(false).should('be.true'); + }); + + it('should assert that true is true', () => { + cy.wrap(true).should('be.true'); + }); + + it('should fail on the first attempt and pass on the second', { retries: 2 }, () => { + if (attempt === 0) { + attempt++; + cy.wrap(false).should('be.true'); // This will fail on the first attempt + } else { + cy.wrap(true).should('be.true'); // This will pass on the second attempt + } + }); +}); diff --git a/e2e/cypress-13-demo/cypress/e2e/c.spec.js b/e2e/cypress-13-demo/cypress/e2e/c.spec.js new file mode 100644 index 0000000..47486ad --- /dev/null +++ b/e2e/cypress-13-demo/cypress/e2e/c.spec.js @@ -0,0 +1,5 @@ +describe('Ignored test', () => { + it.skip('should be a skipped test', () => { + cy.wrap(false).should('be.true'); + }); +}); diff --git a/e2e/cypress-13-demo/cypress/e2e/d.spec.js b/e2e/cypress-13-demo/cypress/e2e/d.spec.js new file mode 100644 index 0000000..405f45f --- /dev/null +++ b/e2e/cypress-13-demo/cypress/e2e/d.spec.js @@ -0,0 +1,13 @@ +describe('Passed test with screenshot, passed test with no screenshots', () => { + it('should assert and take a screenshot', () => { + // Assert that true is true + cy.wrap(true).should('be.true'); + + // Take a screenshot + cy.screenshot('internal-assert-screenshot'); + }); + + it('should assert that true is true', () => { + cy.wrap(true).should('be.true'); + }); +}); diff --git a/e2e/cypress-13-demo/cypress/e2e/e.spec.js b/e2e/cypress-13-demo/cypress/e2e/e.spec.js new file mode 100644 index 0000000..584060e --- /dev/null +++ b/e2e/cypress-13-demo/cypress/e2e/e.spec.js @@ -0,0 +1,5 @@ +describe('Should throw an error', () => { + it('Should throw an error', () => { + throw new Error("test error") + }); +}); diff --git a/e2e/cypress-13-demo/cypress/support/commands.ts b/e2e/cypress-13-demo/cypress/support/commands.ts new file mode 100644 index 0000000..a8278b3 --- /dev/null +++ b/e2e/cypress-13-demo/cypress/support/commands.ts @@ -0,0 +1,119 @@ +/// +// *********************************************** +// This example commands.ts shows you how to +// create various custom commands and overwrite +// existing commands. +// +// For more comprehensive examples of custom +// commands please read more here: +// https://on.cypress.io/custom-commands +// *********************************************** +// +// +// -- This is a parent command -- +// Cypress.Commands.add('login', (email, password) => { ... }) +// +// +// -- This is a child command -- +// Cypress.Commands.add('drag', { prevSubject: 'element'}, (subject, options) => { ... }) +// +// +// -- This is a dual command -- +// Cypress.Commands.add('dismiss', { prevSubject: 'optional'}, (subject, options) => { ... }) +// +// +// -- This will overwrite an existing command -- +// Cypress.Commands.overwrite('visit', (originalFn, url, options) => { ... }) +// +// declare global { +// namespace Cypress { +// interface Chainable { +// login(email: string, password: string): Chainable +// drag(subject: string, options?: Partial): Chainable +// dismiss(subject: string, options?: Partial): Chainable +// visit(originalFn: CommandOriginalFn, url: string, options: Partial): Chainable +// } +// } +// } + +// *********************************************** +// This example commands.js shows you how to +// create the custom commands: 'createDefaultTodos' +// and 'createTodo'. +// +// The commands.js file is a great place to +// modify existing commands and create custom +// commands for use throughout your tests. +// +// You can read more about custom commands here: +// https://on.cypress.io/commands +// *********************************************** + +Cypress.Commands.add("createDefaultTodos", function () { + let TODO_ITEM_ONE = "buy some cheese"; + let TODO_ITEM_TWO = "feed the cat"; + let TODO_ITEM_THREE = "book a doctors appointment"; + + // begin the command here, which by will display + // as a 'spinning blue state' in the UI to indicate + // the command is running + let cmd = Cypress.log({ + name: "create default todos", + message: [], + consoleProps() { + // we're creating our own custom message here + // which will print out to our browsers console + // whenever we click on this command + return { + "Inserted Todos": [TODO_ITEM_ONE, TODO_ITEM_TWO, TODO_ITEM_THREE], + }; + }, + }); + + // additionally we pass {log: false} to all of our + // sub-commands so none of them will output to + // our command log + + cy.get(".new-todo", { log: false }) + .type(`${TODO_ITEM_ONE}{enter}`, { log: false }) + .type(`${TODO_ITEM_TWO}{enter}`, { log: false }) + .type(`${TODO_ITEM_THREE}{enter}`, { log: false }); + + cy.get(".todo-list li", { log: false }).then(function ($listItems) { + // once we're done inserting each of the todos + // above we want to return the .todo-list li's + // to allow for further chaining and then + // we want to snapshot the state of the DOM + // and end the command so it goes from that + // 'spinning blue state' to the 'finished state' + cmd.set({ $el: $listItems }).snapshot().end(); + }); +}); + +Cypress.Commands.add("createTodo", function (todo) { + let cmd = Cypress.log({ + name: "create todo", + message: todo, + consoleProps() { + return { + "Inserted Todo": todo, + }; + }, + }); + + // create the todo + cy.get(".new-todo", { log: false }).type(`${todo}{enter}`, { log: false }); + + // now go find the actual todo + // in the todo list so we can + // easily alias this in our tests + // and set the $el so its highlighted + cy.get(".todo-list", { log: false }) + .contains("li", todo.trim(), { log: false }) + .then(function ($li) { + // set the $el for the command so + // it highlights when we hover over + // our command + cmd.set({ $el: $li }).snapshot().end(); + }); +}); diff --git a/e2e/cypress-13-demo/cypress/support/component-index.html b/e2e/cypress-13-demo/cypress/support/component-index.html new file mode 100644 index 0000000..3e16e9b --- /dev/null +++ b/e2e/cypress-13-demo/cypress/support/component-index.html @@ -0,0 +1,14 @@ + + + + + + + Components App + +
+ + +
+ + \ No newline at end of file diff --git a/e2e/cypress-13-demo/cypress/support/component.ts b/e2e/cypress-13-demo/cypress/support/component.ts new file mode 100644 index 0000000..e11a5fe --- /dev/null +++ b/e2e/cypress-13-demo/cypress/support/component.ts @@ -0,0 +1,39 @@ +// *********************************************************** +// This example support/component.ts is processed and +// loaded automatically before your test files. +// +// This is a great place to put global configuration and +// behavior that modifies Cypress. +// +// You can change the location of this file or turn off +// automatically serving support files with the +// 'supportFile' configuration option. +// +// You can read more here: +// https://on.cypress.io/configuration +// *********************************************************** + +// Import commands.js using ES2015 syntax: +import "./commands"; + +// Alternatively you can use CommonJS syntax: +// require('./commands') + +import { mount } from "cypress/react18"; + +// Augment the Cypress namespace to include type definitions for +// your custom command. +// Alternatively, can be defined in cypress/support/component.d.ts +// with a at the top of your spec. +declare global { + namespace Cypress { + interface Chainable { + mount: typeof mount; + } + } +} + +Cypress.Commands.add("mount", mount); + +// Example use: +// cy.mount() diff --git a/e2e/cypress-13-demo/cypress/support/e2e.ts b/e2e/cypress-13-demo/cypress/support/e2e.ts new file mode 100644 index 0000000..7932b70 --- /dev/null +++ b/e2e/cypress-13-demo/cypress/support/e2e.ts @@ -0,0 +1,6 @@ +require("cypress-cloud/support"); +require("./commands"); + +beforeEach(() => { + cy.visit("/"); +}); diff --git a/e2e/cypress-13-demo/data-references/ccy-1.10-cy-13-cycl.json b/e2e/cypress-13-demo/data-references/ccy-1.10-cy-13-cycl.json new file mode 100644 index 0000000..6ccae76 --- /dev/null +++ b/e2e/cypress-13-demo/data-references/ccy-1.10-cy-13-cycl.json @@ -0,0 +1,1008 @@ +{ + "totalDuration": 32737, + "totalSuites": 5, + "totalPending": 1, + "totalFailed": 3, + "totalSkipped": 0, + "totalPassed": 4, + "totalTests": 8, + "runs": [ + { + "stats": { + "duration": 13487, + "endedAt": "2023-09-19T07:24:40.659Z", + "startedAt": "2023-09-19T07:24:27.172Z", + "failures": 1, + "passes": 0, + "pending": 0, + "skipped": 0, + "suites": 1, + "tests": 1 + }, + "reporter": "spec", + "reporterStats": { + "suites": 1, + "tests": 1, + "passes": 0, + "pending": 0, + "failures": 1, + "start": "2023-09-19T07:24:27.176Z", + "end": "2023-09-19T07:24:40.665Z", + "duration": 13489 + }, + "spec": { + "name": "a.spec.js", + "relative": "cypress/e2e/a.spec.js", + "absolute": "/Users/agoldis/cypress-cloud/e2e/cypress-13-demo/cypress/e2e/a.spec.js", + "fileExtension": ".js", + "baseName": "", + "fileName": "a", + "relativeToCommonRoot": "", + "specFileExtension": "", + "specType": "" + }, + "error": null, + "video": "/Users/agoldis/cypress-cloud/e2e/cypress-13-demo/cypress/videos/a.spec.js.mp4", + "shouldUploadVideo": true, + "hooks": null, + "tests": [ + { + "body": "() => {\n cy.wrap(false).should('be.true');\n }", + "testId": "r3", + "title": ["Failing test with 2 attempts", "should try 2 times"], + "displayError": "AssertionError: Timed out retrying after 4000ms: expected false to be true\n at Context.eval (webpack://cypress-13-demo/./cypress/e2e/a.spec.js:5:19)", + "state": "failed", + "attempts": [ + { + "state": "failed", + "error": { + "name": "AssertionError", + "message": "Timed out retrying after 4000ms: expected false to be true", + "stack": "AssertionError: Timed out retrying after 4000ms: expected false to be true\n at Context.eval (webpack://cypress-13-demo/./cypress/e2e/a.spec.js:5:19)", + "codeFrame": { + "line": 5, + "column": 20, + "originalFile": "cypress/e2e/a.spec.js", + "relativeFile": "e2e/cypress-13-demo/cypress/e2e/a.spec.js", + "absoluteFile": "/Users/agoldis/cypress-cloud/e2e/cypress-13-demo/cypress/e2e/a.spec.js", + "frame": " 3 | retries: 2,\n 4 | }, () => {\n> 5 | cy.wrap(false).should('be.true');\n | ^\n 6 | });\n 7 | });\n 8 | ", + "language": "js" + } + }, + "timings": { + "lifecycle": 15, + "before each": [ + { "hookId": "h1", "fnDuration": 10, "afterFnDuration": 0 }, + { "hookId": "h2", "fnDuration": 526, "afterFnDuration": 0 } + ], + "test": { "fnDuration": 3994, "afterFnDuration": 233 } + }, + "wallClockStartedAt": "2023-09-19T07:24:27.176Z", + "wallClockDuration": 4779, + "failedFromHookId": null, + "videoTimestamp": 4, + "duration": 4779, + "startedAt": "2023-09-19T07:24:27.176Z", + "screenshots": [ + { + "height": 1440, + "width": 2560, + "name": null, + "path": "/Users/agoldis/cypress-cloud/e2e/cypress-13-demo/cypress/screenshots/a.spec.js/Failing test with 2 attempts -- should try 2 times (failed).png", + "takenAt": "2023-09-19T07:24:31.724Z", + "testAttemptIndex": 0, + "testId": "r3", + "screenshotId": "vruhkqnlka" + } + ] + }, + { + "state": "failed", + "error": { + "name": "AssertionError", + "message": "Timed out retrying after 4000ms: expected false to be true", + "stack": "AssertionError: Timed out retrying after 4000ms: expected false to be true\n at Context.eval (webpack://cypress-13-demo/./cypress/e2e/a.spec.js:5:19)", + "codeFrame": { + "line": 5, + "column": 20, + "originalFile": "cypress/e2e/a.spec.js", + "relativeFile": "e2e/cypress-13-demo/cypress/e2e/a.spec.js", + "absoluteFile": "/Users/agoldis/cypress-cloud/e2e/cypress-13-demo/cypress/e2e/a.spec.js", + "frame": " 3 | retries: 2,\n 4 | }, () => {\n> 5 | cy.wrap(false).should('be.true');\n | ^\n 6 | });\n 7 | });\n 8 | ", + "language": "js" + } + }, + "timings": { + "lifecycle": 21, + "before each": [ + { "hookId": "h1", "fnDuration": 13, "afterFnDuration": 0 }, + { "hookId": "h2", "fnDuration": 61, "afterFnDuration": 0 } + ], + "test": { "fnDuration": 3993, "afterFnDuration": 191 } + }, + "wallClockStartedAt": "2023-09-19T07:24:31.995Z", + "wallClockDuration": 4280, + "failedFromHookId": null, + "videoTimestamp": 4823, + "duration": 4280, + "startedAt": "2023-09-19T07:24:31.995Z", + "screenshots": [ + { + "height": 1440, + "width": 2560, + "name": null, + "path": "/Users/agoldis/cypress-cloud/e2e/cypress-13-demo/cypress/screenshots/a.spec.js/Failing test with 2 attempts -- should try 2 times (failed) (attempt 2).png", + "takenAt": "2023-09-19T07:24:36.086Z", + "testAttemptIndex": 1, + "testId": "r3", + "screenshotId": "yoexfvpump" + } + ] + }, + { + "state": "failed", + "error": { + "name": "AssertionError", + "message": "Timed out retrying after 4000ms: expected false to be true", + "stack": "AssertionError: Timed out retrying after 4000ms: expected false to be true\n at Context.eval (webpack://cypress-13-demo/./cypress/e2e/a.spec.js:5:19)", + "codeFrame": { + "line": 5, + "column": 20, + "originalFile": "cypress/e2e/a.spec.js", + "relativeFile": "e2e/cypress-13-demo/cypress/e2e/a.spec.js", + "absoluteFile": "/Users/agoldis/cypress-cloud/e2e/cypress-13-demo/cypress/e2e/a.spec.js", + "frame": " 3 | retries: 2,\n 4 | }, () => {\n> 5 | cy.wrap(false).should('be.true');\n | ^\n 6 | });\n 7 | });\n 8 | ", + "language": "js" + } + }, + "timings": { + "lifecycle": 22, + "before each": [ + { "hookId": "h1", "fnDuration": 5, "afterFnDuration": 0 }, + { "hookId": "h2", "fnDuration": 71, "afterFnDuration": 0 } + ], + "test": { "fnDuration": 3997, "afterFnDuration": 205 } + }, + "wallClockStartedAt": "2023-09-19T07:24:36.303Z", + "wallClockDuration": 4300, + "failedFromHookId": null, + "videoTimestamp": 9131, + "duration": 4300, + "startedAt": "2023-09-19T07:24:36.303Z", + "screenshots": [ + { + "height": 1440, + "width": 2560, + "name": null, + "path": "/Users/agoldis/cypress-cloud/e2e/cypress-13-demo/cypress/screenshots/a.spec.js/Failing test with 2 attempts -- should try 2 times (failed) (attempt 3).png", + "takenAt": "2023-09-19T07:24:40.400Z", + "testAttemptIndex": 2, + "testId": "r3", + "screenshotId": "pgiqyzacoa" + } + ] + } + ] + } + ] + }, + { + "stats": { + "duration": 398, + "endedAt": "2023-09-19T07:24:42.954Z", + "startedAt": "2023-09-19T07:24:42.556Z", + "failures": 1, + "passes": 0, + "pending": 0, + "skipped": 0, + "suites": 1, + "tests": 1 + }, + "reporter": "spec", + "reporterStats": { + "suites": 1, + "tests": 1, + "passes": 0, + "pending": 0, + "failures": 1, + "start": "2023-09-19T07:24:42.559Z", + "end": "2023-09-19T07:24:42.956Z", + "duration": 397 + }, + "spec": { + "name": "e.spec.js", + "relative": "cypress/e2e/e.spec.js", + "absolute": "/Users/agoldis/cypress-cloud/e2e/cypress-13-demo/cypress/e2e/e.spec.js", + "fileExtension": ".js", + "baseName": "", + "fileName": "e", + "relativeToCommonRoot": "", + "specFileExtension": "", + "specType": "" + }, + "error": null, + "video": "/Users/agoldis/cypress-cloud/e2e/cypress-13-demo/cypress/videos/e.spec.js.mp4", + "shouldUploadVideo": true, + "hooks": null, + "tests": [ + { + "body": "() => {\n throw new Error(\"test error\");\n }", + "testId": "r3", + "title": ["Should throw an error", "Should throw an error"], + "displayError": "Error: test error\n at Context.eval (webpack://cypress-13-demo/./cypress/e2e/e.spec.js:3:10)", + "state": "failed", + "attempts": [ + { + "state": "failed", + "error": { + "name": "Error", + "message": "test error", + "stack": "Error: test error\n at Context.eval (webpack://cypress-13-demo/./cypress/e2e/e.spec.js:3:10)", + "codeFrame": { + "line": 3, + "column": 11, + "originalFile": "cypress/e2e/e.spec.js", + "relativeFile": "e2e/cypress-13-demo/cypress/e2e/e.spec.js", + "absoluteFile": "/Users/agoldis/cypress-cloud/e2e/cypress-13-demo/cypress/e2e/e.spec.js", + "frame": " 1 | describe('Should throw an error', () => {\n 2 | it('Should throw an error', () => {\n> 3 | throw new Error(\"test error\")\n | ^\n 4 | });\n 5 | });\n 6 | ", + "language": "js" + } + }, + "timings": { + "lifecycle": 22, + "before each": [ + { "hookId": "h1", "fnDuration": 5, "afterFnDuration": 0 }, + { "hookId": "h2", "fnDuration": 138, "afterFnDuration": 0 } + ], + "test": { "fnDuration": 1, "afterFnDuration": 195 } + }, + "wallClockStartedAt": "2023-09-19T07:24:42.559Z", + "wallClockDuration": 367, + "failedFromHookId": null, + "videoTimestamp": 3, + "duration": 367, + "startedAt": "2023-09-19T07:24:42.559Z", + "screenshots": [ + { + "height": 1440, + "width": 2560, + "name": null, + "path": "/Users/agoldis/cypress-cloud/e2e/cypress-13-demo/cypress/screenshots/e.spec.js/Should throw an error -- Should throw an error (failed).png", + "takenAt": "2023-09-19T07:24:42.733Z", + "testAttemptIndex": 0, + "testId": "r3", + "screenshotId": "orawslwmsy" + } + ] + } + ] + } + ] + }, + { + "stats": { + "duration": 921, + "endedAt": "2023-09-19T07:24:45.949Z", + "startedAt": "2023-09-19T07:24:45.028Z", + "failures": 0, + "passes": 2, + "pending": 0, + "skipped": 0, + "suites": 1, + "tests": 2 + }, + "reporter": "spec", + "reporterStats": { + "suites": 1, + "tests": 2, + "passes": 2, + "pending": 0, + "failures": 0, + "start": "2023-09-19T07:24:45.031Z", + "end": "2023-09-19T07:24:45.951Z", + "duration": 920 + }, + "spec": { + "name": "d.spec.js", + "relative": "cypress/e2e/d.spec.js", + "absolute": "/Users/agoldis/cypress-cloud/e2e/cypress-13-demo/cypress/e2e/d.spec.js", + "fileExtension": ".js", + "baseName": "", + "fileName": "d", + "relativeToCommonRoot": "", + "specFileExtension": "", + "specType": "" + }, + "error": null, + "video": "/Users/agoldis/cypress-cloud/e2e/cypress-13-demo/cypress/videos/d.spec.js.mp4", + "shouldUploadVideo": true, + "hooks": null, + "tests": [ + { + "body": "() => {\n // Assert that true is true\n cy.wrap(true).should('be.true');\n\n // Take a screenshot\n cy.screenshot('internal-assert-screenshot');\n }", + "testId": "r3", + "title": [ + "Passed test with screenshot, passed test with no screenshots", + "should assert and take a screenshot" + ], + "displayError": null, + "state": "passed", + "attempts": [ + { + "state": "passed", + "error": null, + "timings": { + "lifecycle": 16, + "before each": [ + { "hookId": "h1", "fnDuration": 5, "afterFnDuration": 0 }, + { "hookId": "h2", "fnDuration": 131, "afterFnDuration": 0 } + ], + "test": { "fnDuration": 649, "afterFnDuration": 0 } + }, + "wallClockStartedAt": "2023-09-19T07:24:45.038Z", + "wallClockDuration": 805, + "failedFromHookId": null, + "videoTimestamp": 10, + "duration": 805, + "startedAt": "2023-09-19T07:24:45.038Z", + "screenshots": [ + { + "height": 1320, + "width": 2000, + "name": "internal-assert-screenshot", + "path": "/Users/agoldis/cypress-cloud/e2e/cypress-13-demo/cypress/screenshots/d.spec.js/internal-assert-screenshot.png", + "takenAt": "2023-09-19T07:24:45.207Z", + "testAttemptIndex": 0, + "testId": "r3", + "screenshotId": "qgnjtnrezy" + } + ] + } + ] + }, + { + "body": "() => {\n cy.wrap(true).should('be.true');\n }", + "testId": "r4", + "title": [ + "Passed test with screenshot, passed test with no screenshots", + "should assert that true is true" + ], + "displayError": null, + "state": "passed", + "attempts": [ + { + "state": "passed", + "error": null, + "timings": { + "lifecycle": 12, + "before each": [ + { "hookId": "h1", "fnDuration": 5, "afterFnDuration": 0 }, + { "hookId": "h2", "fnDuration": 51, "afterFnDuration": 0 } + ], + "test": { "fnDuration": 2, "afterFnDuration": 0 } + }, + "wallClockStartedAt": "2023-09-19T07:24:45.863Z", + "wallClockDuration": 73, + "failedFromHookId": null, + "videoTimestamp": 835, + "duration": 73, + "startedAt": "2023-09-19T07:24:45.863Z", + "screenshots": [] + } + ] + } + ] + }, + { + "stats": { + "duration": 14, + "endedAt": "2023-09-19T07:24:47.917Z", + "startedAt": "2023-09-19T07:24:47.903Z", + "failures": 0, + "passes": 0, + "pending": 1, + "skipped": 0, + "suites": 1, + "tests": 1 + }, + "reporter": "spec", + "reporterStats": { + "suites": 1, + "tests": 1, + "passes": 0, + "pending": 1, + "failures": 0, + "start": "2023-09-19T07:24:47.906Z", + "end": "2023-09-19T07:24:47.919Z", + "duration": 13 + }, + "spec": { + "name": "c.spec.js", + "relative": "cypress/e2e/c.spec.js", + "absolute": "/Users/agoldis/cypress-cloud/e2e/cypress-13-demo/cypress/e2e/c.spec.js", + "fileExtension": ".js", + "baseName": "", + "fileName": "c", + "relativeToCommonRoot": "", + "specFileExtension": "", + "specType": "" + }, + "error": null, + "video": "/Users/agoldis/cypress-cloud/e2e/cypress-13-demo/cypress/videos/c.spec.js.mp4", + "shouldUploadVideo": true, + "hooks": null, + "tests": [ + { + "body": "", + "testId": "r0", + "title": ["Ignored test", "should be a skipped test"], + "displayError": null, + "state": "pending", + "attempts": [ + { + "state": "pending", + "error": null, + "timings": null, + "wallClockStartedAt": "2023-09-19T07:24:51.932Z", + "wallClockDuration": 0, + "failedFromHookId": null, + "videoTimestamp": 0, + "duration": 0, + "startedAt": "2023-09-19T07:24:51.932Z", + "screenshots": [] + } + ] + } + ] + }, + { + "stats": { + "duration": 17917, + "endedAt": "2023-09-19T07:25:10.762Z", + "startedAt": "2023-09-19T07:24:52.845Z", + "failures": 1, + "passes": 2, + "pending": 0, + "skipped": 0, + "suites": 1, + "tests": 3 + }, + "reporter": "spec", + "reporterStats": { + "suites": 1, + "tests": 3, + "passes": 2, + "pending": 0, + "failures": 1, + "start": "2023-09-19T07:24:52.849Z", + "end": "2023-09-19T07:25:10.766Z", + "duration": 17917 + }, + "spec": { + "name": "b.spec.js", + "relative": "cypress/e2e/b.spec.js", + "absolute": "/Users/agoldis/cypress-cloud/e2e/cypress-13-demo/cypress/e2e/b.spec.js", + "fileExtension": ".js", + "baseName": "", + "fileName": "b", + "relativeToCommonRoot": "", + "specFileExtension": "", + "specType": "" + }, + "error": null, + "video": "/Users/agoldis/cypress-cloud/e2e/cypress-13-demo/cypress/videos/b.spec.js.mp4", + "shouldUploadVideo": true, + "hooks": null, + "tests": [ + { + "body": "() => {\n cy.wrap(false).should('be.true');\n }", + "testId": "r3", + "title": [ + "Failing test with 2 attempts, passed test and flaky test with 2 attempts", + "should try 2 times" + ], + "displayError": "AssertionError: Timed out retrying after 4000ms: expected false to be true\n at Context.eval (webpack://cypress-13-demo/./cypress/e2e/b.spec.js:6:19)", + "state": "failed", + "attempts": [ + { + "state": "failed", + "error": { + "name": "AssertionError", + "message": "Timed out retrying after 4000ms: expected false to be true", + "stack": "AssertionError: Timed out retrying after 4000ms: expected false to be true\n at Context.eval (webpack://cypress-13-demo/./cypress/e2e/b.spec.js:6:19)", + "codeFrame": { + "line": 6, + "column": 20, + "originalFile": "cypress/e2e/b.spec.js", + "relativeFile": "e2e/cypress-13-demo/cypress/e2e/b.spec.js", + "absoluteFile": "/Users/agoldis/cypress-cloud/e2e/cypress-13-demo/cypress/e2e/b.spec.js", + "frame": " 4 | retries: 2,\n 5 | }, () => {\n> 6 | cy.wrap(false).should('be.true');\n | ^\n 7 | });\n 8 | \n 9 | it('should assert that true is true', () => {", + "language": "js" + } + }, + "timings": { + "lifecycle": 20, + "before each": [ + { "hookId": "h1", "fnDuration": 8, "afterFnDuration": 1 }, + { "hookId": "h2", "fnDuration": 137, "afterFnDuration": 0 } + ], + "test": { "fnDuration": 4003, "afterFnDuration": 208 } + }, + "wallClockStartedAt": "2023-09-19T07:24:52.857Z", + "wallClockDuration": 4381, + "failedFromHookId": null, + "videoTimestamp": 12, + "duration": 4381, + "startedAt": "2023-09-19T07:24:52.857Z", + "screenshots": [ + { + "height": 1440, + "width": 2560, + "name": null, + "path": "/Users/agoldis/cypress-cloud/e2e/cypress-13-demo/cypress/screenshots/b.spec.js/Failing test with 2 attempts, passed test and flaky test with 2 attempts -- should try 2 times (failed).png", + "takenAt": "2023-09-19T07:24:57.034Z", + "testAttemptIndex": 0, + "testId": "r3", + "screenshotId": "vuoyuivqnq" + } + ] + }, + { + "state": "failed", + "error": { + "name": "AssertionError", + "message": "Timed out retrying after 4000ms: expected false to be true", + "stack": "AssertionError: Timed out retrying after 4000ms: expected false to be true\n at Context.eval (webpack://cypress-13-demo/./cypress/e2e/b.spec.js:6:19)", + "codeFrame": { + "line": 6, + "column": 20, + "originalFile": "cypress/e2e/b.spec.js", + "relativeFile": "e2e/cypress-13-demo/cypress/e2e/b.spec.js", + "absoluteFile": "/Users/agoldis/cypress-cloud/e2e/cypress-13-demo/cypress/e2e/b.spec.js", + "frame": " 4 | retries: 2,\n 5 | }, () => {\n> 6 | cy.wrap(false).should('be.true');\n | ^\n 7 | });\n 8 | \n 9 | it('should assert that true is true', () => {", + "language": "js" + } + }, + "timings": { + "lifecycle": 23, + "before each": [ + { "hookId": "h1", "fnDuration": 7, "afterFnDuration": 0 }, + { "hookId": "h2", "fnDuration": 68, "afterFnDuration": 0 } + ], + "test": { "fnDuration": 4002, "afterFnDuration": 212 } + }, + "wallClockStartedAt": "2023-09-19T07:24:57.304Z", + "wallClockDuration": 4324, + "failedFromHookId": null, + "videoTimestamp": 4459, + "duration": 4324, + "startedAt": "2023-09-19T07:24:57.304Z", + "screenshots": [ + { + "height": 1440, + "width": 2560, + "name": null, + "path": "/Users/agoldis/cypress-cloud/e2e/cypress-13-demo/cypress/screenshots/b.spec.js/Failing test with 2 attempts, passed test and flaky test with 2 attempts -- should try 2 times (failed) (attempt 2).png", + "takenAt": "2023-09-19T07:25:01.419Z", + "testAttemptIndex": 1, + "testId": "r3", + "screenshotId": "yoloffvwpv" + } + ] + }, + { + "state": "failed", + "error": { + "name": "AssertionError", + "message": "Timed out retrying after 4000ms: expected false to be true", + "stack": "AssertionError: Timed out retrying after 4000ms: expected false to be true\n at Context.eval (webpack://cypress-13-demo/./cypress/e2e/b.spec.js:6:19)", + "codeFrame": { + "line": 6, + "column": 20, + "originalFile": "cypress/e2e/b.spec.js", + "relativeFile": "e2e/cypress-13-demo/cypress/e2e/b.spec.js", + "absoluteFile": "/Users/agoldis/cypress-cloud/e2e/cypress-13-demo/cypress/e2e/b.spec.js", + "frame": " 4 | retries: 2,\n 5 | }, () => {\n> 6 | cy.wrap(false).should('be.true');\n | ^\n 7 | });\n 8 | \n 9 | it('should assert that true is true', () => {", + "language": "js" + } + }, + "timings": { + "lifecycle": 58, + "before each": [ + { "hookId": "h1", "fnDuration": 8, "afterFnDuration": 0 }, + { "hookId": "h2", "fnDuration": 64, "afterFnDuration": 1 } + ], + "test": { "fnDuration": 4005, "afterFnDuration": 192 } + }, + "wallClockStartedAt": "2023-09-19T07:25:01.697Z", + "wallClockDuration": 4333, + "failedFromHookId": null, + "videoTimestamp": 8852, + "duration": 4333, + "startedAt": "2023-09-19T07:25:01.697Z", + "screenshots": [ + { + "height": 1440, + "width": 2560, + "name": null, + "path": "/Users/agoldis/cypress-cloud/e2e/cypress-13-demo/cypress/screenshots/b.spec.js/Failing test with 2 attempts, passed test and flaky test with 2 attempts -- should try 2 times (failed) (attempt 3).png", + "takenAt": "2023-09-19T07:25:05.841Z", + "testAttemptIndex": 2, + "testId": "r3", + "screenshotId": "knlehrttfc" + } + ] + } + ] + }, + { + "body": "() => {\n cy.wrap(true).should('be.true');\n }", + "testId": "r4", + "title": [ + "Failing test with 2 attempts, passed test and flaky test with 2 attempts", + "should assert that true is true" + ], + "displayError": null, + "state": "passed", + "attempts": [ + { + "state": "passed", + "error": null, + "timings": { + "lifecycle": 16, + "before each": [ + { "hookId": "h1", "fnDuration": 6, "afterFnDuration": 0 }, + { "hookId": "h2", "fnDuration": 76, "afterFnDuration": 0 } + ], + "test": { "fnDuration": 3, "afterFnDuration": 1 } + }, + "wallClockStartedAt": "2023-09-19T07:25:06.089Z", + "wallClockDuration": 105, + "failedFromHookId": null, + "videoTimestamp": 13244, + "duration": 105, + "startedAt": "2023-09-19T07:25:06.089Z", + "screenshots": [] + } + ] + }, + { + "body": "() => {\n if (attempt === 0) {\n attempt++;\n cy.wrap(false).should('be.true'); // This will fail on the first attempt\n } else {\n cy.wrap(true).should('be.true'); // This will pass on the second attempt\n }\n }", + "testId": "r5", + "title": [ + "Failing test with 2 attempts, passed test and flaky test with 2 attempts", + "should fail on the first attempt and pass on the second" + ], + "displayError": null, + "state": "passed", + "attempts": [ + { + "state": "failed", + "error": { + "name": "AssertionError", + "message": "Timed out retrying after 4000ms: expected false to be true", + "stack": "AssertionError: Timed out retrying after 4000ms: expected false to be true\n at Context.eval (webpack://cypress-13-demo/./cypress/e2e/b.spec.js:16:21)", + "codeFrame": { + "line": 16, + "column": 22, + "originalFile": "cypress/e2e/b.spec.js", + "relativeFile": "e2e/cypress-13-demo/cypress/e2e/b.spec.js", + "absoluteFile": "/Users/agoldis/cypress-cloud/e2e/cypress-13-demo/cypress/e2e/b.spec.js", + "frame": " 14 | if (attempt === 0) {\n 15 | attempt++;\n> 16 | cy.wrap(false).should('be.true'); // This will fail on the first attempt\n | ^\n 17 | } else {\n 18 | cy.wrap(true).should('be.true'); // This will pass on the second attempt\n 19 | }", + "language": "js" + } + }, + "timings": { + "lifecycle": 25, + "before each": [ + { "hookId": "h1", "fnDuration": 5, "afterFnDuration": 0 }, + { "hookId": "h2", "fnDuration": 58, "afterFnDuration": 1 } + ], + "test": { "fnDuration": 3994, "afterFnDuration": 243 } + }, + "wallClockStartedAt": "2023-09-19T07:25:06.228Z", + "wallClockDuration": 4331, + "failedFromHookId": null, + "videoTimestamp": 13383, + "duration": 4331, + "startedAt": "2023-09-19T07:25:06.228Z", + "screenshots": [ + { + "height": 1440, + "width": 2560, + "name": null, + "path": "/Users/agoldis/cypress-cloud/e2e/cypress-13-demo/cypress/screenshots/b.spec.js/Failing test with 2 attempts, passed test and flaky test with 2 attempts -- should fail on the first attempt and pass on the second (failed).png", + "takenAt": "2023-09-19T07:25:10.326Z", + "testAttemptIndex": 0, + "testId": "r5", + "screenshotId": "yahosnemvm" + } + ] + }, + { + "state": "passed", + "error": null, + "timings": { + "lifecycle": 18, + "before each": [ + { "hookId": "h1", "fnDuration": 5, "afterFnDuration": 1 }, + { "hookId": "h2", "fnDuration": 90, "afterFnDuration": 1 } + ], + "test": { "fnDuration": 5, "afterFnDuration": 1 } + }, + "wallClockStartedAt": "2023-09-19T07:25:10.595Z", + "wallClockDuration": 127, + "failedFromHookId": null, + "videoTimestamp": 17750, + "duration": 127, + "startedAt": "2023-09-19T07:25:10.595Z", + "screenshots": [] + } + ] + } + ] + } + ], + "startedTestsAt": "2023-09-19T07:24:27.172Z", + "endedTestsAt": "2023-09-19T07:25:10.762Z", + "config": { + "additionalIgnorePattern": [], + "animationDistanceThreshold": 5, + "arch": "arm64", + "autoOpen": false, + "baseUrl": "https://todomvc.com/examples/vanillajs", + "blockHosts": null, + "browsers": [ + { + "name": "chrome", + "family": "chromium", + "channel": "stable", + "displayName": "Chrome", + "version": "117.0.5938.88", + "path": "/Applications/Google Chrome.app/Contents/MacOS/Google Chrome", + "minSupportedVersion": 64, + "majorVersion": "117" + }, + { + "name": "firefox", + "family": "firefox", + "channel": "stable", + "displayName": "Firefox", + "version": "108.0", + "path": "/Applications/Firefox.app/Contents/MacOS/firefox", + "minSupportedVersion": 86, + "majorVersion": "108" + }, + { + "name": "electron", + "channel": "stable", + "family": "chromium", + "displayName": "Electron", + "version": "114.0.5735.289", + "path": "", + "majorVersion": 114 + } + ], + "chromeWebSecurity": true, + "clientCertificates": [], + "clientRoute": "/__/", + "configFile": "/Users/agoldis/cypress-cloud/e2e/cypress-13-demo/cypress.config.ts", + "cypressBinaryRoot": "/Users/agoldis/Library/Caches/Cypress/13.2.0/Cypress.app/Contents/Resources/app", + "cypressEnv": "production", + "defaultCommandTimeout": 4000, + "devServerPublicPathRoute": "/__cypress/src", + "downloadsFolder": "/Users/agoldis/cypress-cloud/e2e/cypress-13-demo/cypress/downloads", + "env": { + "currents_temp_file": "/var/folders/x1/tpchd48d78x5bzxvz5ws5st00000gn/T/tmp-53823-X9P5Z3dZuI35", + "currents_debug_enabled": false + }, + "excludeSpecPattern": "*.hot-update.js", + "execTimeout": 60000, + "experimentalCspAllowList": false, + "experimentalFetchPolyfill": false, + "experimentalInteractiveRunEvents": false, + "experimentalMemoryManagement": false, + "experimentalModifyObstructiveThirdPartyCode": false, + "experimentalOriginDependencies": false, + "experimentalRunAllSpecs": false, + "experimentalSingleTabRunMode": false, + "experimentalSkipDomainInjection": null, + "experimentalSourceRewriting": false, + "experimentalStudio": false, + "experimentalWebKitSupport": false, + "fileServerFolder": "/Users/agoldis/cypress-cloud/e2e/cypress-13-demo", + "fixturesFolder": "/Users/agoldis/cypress-cloud/e2e/cypress-13-demo/cypress/fixtures", + "hideCommandLog": false, + "hideRunnerUi": false, + "hosts": null, + "includeShadowDom": false, + "isInteractive": true, + "isTextTerminal": true, + "keystrokeDelay": 0, + "modifyObstructiveCode": true, + "morgan": false, + "namespace": "__cypress", + "numTestsKeptInMemory": 0, + "pageLoadTimeout": 60000, + "platform": "darwin", + "port": null, + "projectId": null, + "projectName": "cypress-13-demo", + "projectRoot": "/Users/agoldis/cypress-cloud/e2e/cypress-13-demo", + "protocolEnabled": false, + "rawJson": { + "video": true, + "e2e": { + "baseUrl": "https://todomvc.com/examples/vanillajs", + "supportFile": "cypress/support/e2e.ts", + "specPattern": "cypress/*/**/*.spec.js", + "setupNodeEvents": "[Function setupNodeEvents]" + }, + "component": { + "specPattern": ["pages/__tests__/*.spec.tsx"], + "setupNodeEvents": "[Function setupNodeEvents]", + "devServer": { "framework": "next", "bundler": "webpack" } + }, + "baseUrl": "https://todomvc.com/examples/vanillajs", + "supportFile": "cypress/support/e2e.ts", + "specPattern": "cypress/*/**/*.spec.js", + "setupNodeEvents": "[Function setupNodeEvents]", + "envFile": {}, + "projectRoot": "/Users/agoldis/cypress-cloud/e2e/cypress-13-demo", + "projectName": "cypress-13-demo", + "repoRoot": "/Users/agoldis/cypress-cloud" + }, + "redirectionLimit": 20, + "repoRoot": "/Users/agoldis/cypress-cloud", + "report": true, + "reporter": "spec", + "reporterOptions": null, + "reporterRoute": "/__cypress/reporter", + "requestTimeout": 5000, + "resolved": { + "animationDistanceThreshold": { "value": 5, "from": "default" }, + "arch": { "value": "arm64", "from": "default" }, + "baseUrl": { + "value": "https://todomvc.com/examples/vanillajs", + "from": "config" + }, + "blockHosts": { "value": null, "from": "default" }, + "chromeWebSecurity": { "value": true, "from": "default" }, + "clientCertificates": { "value": [], "from": "default" }, + "defaultCommandTimeout": { "value": 4000, "from": "default" }, + "downloadsFolder": { "value": "cypress/downloads", "from": "default" }, + "env": { + "currents_temp_file": { + "value": "/var/folders/x1/tpchd48d78x5bzxvz5ws5st00000gn/T/tmp-53823-X9P5Z3dZuI35", + "from": "cli" + }, + "currents_debug_enabled": { "value": false, "from": "cli" } + }, + "execTimeout": { "value": 60000, "from": "default" }, + "experimentalCspAllowList": { "value": false, "from": "default" }, + "experimentalFetchPolyfill": { "value": false, "from": "default" }, + "experimentalInteractiveRunEvents": { "value": false, "from": "default" }, + "experimentalRunAllSpecs": { "value": false, "from": "default" }, + "experimentalMemoryManagement": { "value": false, "from": "default" }, + "experimentalModifyObstructiveThirdPartyCode": { + "value": false, + "from": "default" + }, + "experimentalSkipDomainInjection": { "value": null, "from": "default" }, + "experimentalOriginDependencies": { "value": false, "from": "default" }, + "experimentalSourceRewriting": { "value": false, "from": "default" }, + "experimentalSingleTabRunMode": { "value": false, "from": "default" }, + "experimentalStudio": { "value": false, "from": "default" }, + "experimentalWebKitSupport": { "value": false, "from": "default" }, + "fileServerFolder": { "value": "", "from": "default" }, + "fixturesFolder": { "value": "cypress/fixtures", "from": "default" }, + "excludeSpecPattern": { "value": "*.hot-update.js", "from": "default" }, + "includeShadowDom": { "value": false, "from": "default" }, + "keystrokeDelay": { "value": 0, "from": "default" }, + "modifyObstructiveCode": { "value": true, "from": "default" }, + "numTestsKeptInMemory": { "value": 0, "from": "config" }, + "platform": { "value": "darwin", "from": "default" }, + "pageLoadTimeout": { "value": 60000, "from": "default" }, + "port": { "value": null, "from": "default" }, + "projectId": { "value": null, "from": "default" }, + "redirectionLimit": { "value": 20, "from": "default" }, + "reporter": { "value": "spec", "from": "default" }, + "reporterOptions": { "value": null, "from": "default" }, + "requestTimeout": { "value": 5000, "from": "default" }, + "resolvedNodePath": { "value": null, "from": "default" }, + "resolvedNodeVersion": { "value": null, "from": "default" }, + "responseTimeout": { "value": 30000, "from": "default" }, + "retries": { + "value": { "runMode": 0, "openMode": 0 }, + "from": "default" + }, + "screenshotOnRunFailure": { "value": true, "from": "default" }, + "screenshotsFolder": { + "value": "cypress/screenshots", + "from": "default" + }, + "slowTestThreshold": { "value": 10000, "from": "default" }, + "scrollBehavior": { "value": "top", "from": "default" }, + "supportFile": { "value": "cypress/support/e2e.ts", "from": "config" }, + "supportFolder": { "value": false, "from": "default" }, + "taskTimeout": { "value": 60000, "from": "default" }, + "testIsolation": { "value": true, "from": "default" }, + "trashAssetsBeforeRuns": { "value": true, "from": "default" }, + "userAgent": { "value": null, "from": "default" }, + "video": { "value": true, "from": "config" }, + "videoCompression": { "value": false, "from": "default" }, + "videosFolder": { "value": "cypress/videos", "from": "default" }, + "viewportHeight": { "value": 660, "from": "default" }, + "viewportWidth": { "value": 1000, "from": "default" }, + "waitForAnimations": { "value": true, "from": "default" }, + "watchForFileChanges": { "value": false, "from": "config" }, + "specPattern": { "value": "cypress/*/**/*.spec.js", "from": "config" }, + "browsers": { + "value": [ + { + "name": "chrome", + "family": "chromium", + "channel": "stable", + "displayName": "Chrome", + "version": "117.0.5938.88", + "path": "/Applications/Google Chrome.app/Contents/MacOS/Google Chrome", + "minSupportedVersion": 64, + "majorVersion": "117" + }, + { + "name": "firefox", + "family": "firefox", + "channel": "stable", + "displayName": "Firefox", + "version": "108.0", + "path": "/Applications/Firefox.app/Contents/MacOS/firefox", + "minSupportedVersion": 86, + "majorVersion": "108" + }, + { + "name": "electron", + "channel": "stable", + "family": "chromium", + "displayName": "Electron", + "version": "114.0.5735.289", + "path": "", + "majorVersion": 114 + } + ], + "from": "runtime" + }, + "hosts": { "value": null, "from": "default" }, + "isInteractive": { "value": true, "from": "default" } + }, + "resolvedNodePath": "/Users/agoldis/.nvm/versions/node/v18.16.1/bin/node", + "resolvedNodeVersion": "18.16.1", + "responseTimeout": 30000, + "retries": { "runMode": 0, "openMode": 0 }, + "screenshotOnRunFailure": true, + "screenshotsFolder": "/Users/agoldis/cypress-cloud/e2e/cypress-13-demo/cypress/screenshots", + "scrollBehavior": "top", + "setupNodeEvents": "[Function setupNodeEvents]", + "slowTestThreshold": 10000, + "socketId": "kckk73d8pk", + "socketIoCookie": "__socket", + "socketIoRoute": "/__socket", + "specPattern": "cypress/*/**/*.spec.js", + "supportFile": "/Users/agoldis/cypress-cloud/e2e/cypress-13-demo/cypress/support/e2e.ts", + "supportFolder": "/Users/agoldis/cypress-cloud/e2e/cypress-13-demo/cypress/support", + "taskTimeout": 60000, + "testIsolation": true, + "trashAssetsBeforeRuns": true, + "userAgent": null, + "version": "13.2.0", + "video": true, + "videoCompression": false, + "videosFolder": "/Users/agoldis/cypress-cloud/e2e/cypress-13-demo/cypress/videos", + "viewportHeight": 660, + "viewportWidth": 1000, + "waitForAnimations": true, + "watchForFileChanges": false, + "testingType": "e2e" + }, + "status": "finished", + "runUrl": "https://app.currents.dev/run/ba82347246afa4bb" +} diff --git a/e2e/cypress-13-demo/data-references/ccy-1.9.4-cy-12-crapi.ts b/e2e/cypress-13-demo/data-references/ccy-1.9.4-cy-12-crapi.ts new file mode 100644 index 0000000..67e7ada --- /dev/null +++ b/e2e/cypress-13-demo/data-references/ccy-1.9.4-cy-12-crapi.ts @@ -0,0 +1,301 @@ +import { expect } from "@jest/globals"; + +export const status = "OK"; + +export const data = { + runId: expect.any(String), + projectId: expect.any(String), + createdAt: expect.any(String), + tags: [], + cypressVersion: expect.any(String), + cancellation: null, + timeout: { isTimeout: false }, + groups: [ + { + groupId: expect.any(String), + platform: { + osName: expect.any(String), + osVersion: expect.any(String), + browserName: expect.any(String), + browserVersion: expect.any(String), + }, + createdAt: expect.any(String), + instances: { + overall: 5, + claimed: 5, + complete: 5, + passes: 2, + failures: 3, + }, + tests: { + overall: 8, + passes: 4, + failures: 3, + pending: 1, + skipped: 0, + retries: 1, + flaky: 1, + }, + }, + ], + meta: { + ciBuildId: expect.any(String), + commit: { + branch: expect.any(String), + remoteOrigin: expect.any(String), + authorEmail: expect.any(String), + authorName: expect.any(String), + message: expect.any(String), + sha: expect.any(String), + }, + platform: { + osName: expect.any(String), + osVersion: expect.any(String), + browserName: expect.any(String), + browserVersion: expect.any(String), + }, + }, + specs: [ + { + groupId: expect.any(String), + spec: "cypress/e2e/a.spec.js", + instanceId: expect.any(String), + claimedAt: expect.any(String), + completedAt: expect.any(String), + machineId: expect.any(String), + worker: null, + results: { + videoUrl: expect.any(String), + stats: { + duration: expect.any(Number), + endedAt: expect.any(String), + startedAt: expect.any(String), + failures: 1, + passes: 0, + pending: 0, + skipped: 0, + suites: 1, + tests: 1, + wallClockDuration: expect.any(Number), + wallClockStartedAt: expect.any(String), + wallClockEndedAt: expect.any(String), + }, + screenshots: [ + { + screenshotId: expect.any(String), + name: null, + testId: "r0", + testAttemptIndex: 0, + takenAt: expect.any(String), + screenshotURL: expect.any(String), + height: 0, + width: 0, + }, + { + screenshotId: expect.any(String), + name: null, + testId: "r0", + testAttemptIndex: 1, + takenAt: expect.any(String), + screenshotURL: expect.any(String), + height: 0, + width: 0, + }, + { + screenshotId: expect.any(String), + name: null, + testId: "r0", + testAttemptIndex: 2, + takenAt: expect.any(String), + screenshotURL: expect.any(String), + height: 0, + width: 0, + }, + ], + exception: null, + flaky: 0, + }, + }, + { + groupId: expect.any(String), + spec: "cypress/e2e/b.spec.js", + instanceId: expect.any(String), + claimedAt: expect.any(String), + completedAt: expect.any(String), + machineId: expect.any(String), + worker: null, + results: { + videoUrl: expect.any(String), + stats: { + duration: expect.any(Number), + endedAt: expect.any(String), + startedAt: expect.any(String), + failures: 1, + passes: 2, + pending: 0, + skipped: 0, + suites: 1, + tests: 3, + wallClockDuration: expect.any(Number), + wallClockStartedAt: expect.any(String), + wallClockEndedAt: expect.any(String), + }, + screenshots: [ + { + screenshotId: expect.any(String), + name: null, + testId: "r0", + testAttemptIndex: 0, + takenAt: expect.any(String), + screenshotURL: expect.any(String), + height: 0, + width: 0, + }, + { + screenshotId: expect.any(String), + name: null, + testId: "r0", + testAttemptIndex: 1, + takenAt: expect.any(String), + screenshotURL: expect.any(String), + height: 0, + width: 0, + }, + { + screenshotId: expect.any(String), + name: null, + testId: "r0", + testAttemptIndex: 2, + takenAt: expect.any(String), + screenshotURL: expect.any(String), + height: 0, + width: 0, + }, + { + screenshotId: expect.any(String), + name: null, + testId: "r2", + testAttemptIndex: 0, + takenAt: expect.any(String), + screenshotURL: expect.any(String), + height: 0, + width: 0, + }, + ], + exception: null, + flaky: 1, + }, + }, + { + groupId: expect.any(String), + spec: "cypress/e2e/c.spec.js", + instanceId: expect.any(String), + claimedAt: expect.any(String), + completedAt: expect.any(String), + machineId: expect.any(String), + worker: null, + results: { + videoUrl: null, + stats: { + duration: expect.any(Number), + endedAt: expect.any(String), + startedAt: expect.any(String), + failures: 0, + passes: 0, + pending: 1, + skipped: 0, + suites: 1, + tests: 1, + wallClockDuration: expect.any(Number), + wallClockStartedAt: expect.any(String), + wallClockEndedAt: expect.any(String), + }, + screenshots: [], + exception: null, + flaky: 0, + }, + }, + { + groupId: expect.any(String), + spec: "cypress/e2e/d.spec.js", + instanceId: expect.any(String), + claimedAt: expect.any(String), + completedAt: expect.any(String), + machineId: expect.any(String), + worker: null, + results: { + videoUrl: null, + stats: { + duration: expect.any(Number), + endedAt: expect.any(String), + startedAt: expect.any(String), + failures: 0, + passes: 2, + pending: 0, + skipped: 0, + suites: 1, + tests: 2, + wallClockDuration: expect.any(Number), + wallClockStartedAt: expect.any(String), + wallClockEndedAt: expect.any(String), + }, + screenshots: [ + { + screenshotId: expect.any(String), + name: "internal-assert-screenshot", + testId: "r0", + testAttemptIndex: 0, + takenAt: expect.any(String), + screenshotURL: expect.any(String), + height: 0, + width: 0, + }, + ], + exception: null, + flaky: 0, + }, + }, + { + groupId: expect.any(String), + spec: "cypress/e2e/e.spec.js", + instanceId: expect.any(String), + claimedAt: expect.any(String), + completedAt: expect.any(String), + machineId: expect.any(String), + worker: null, + results: { + videoUrl: expect.any(String), + stats: { + duration: expect.any(Number), + endedAt: expect.any(String), + startedAt: expect.any(String), + failures: 1, + passes: 0, + pending: 0, + skipped: 0, + suites: 1, + tests: 1, + wallClockDuration: expect.any(Number), + wallClockStartedAt: expect.any(String), + wallClockEndedAt: expect.any(String), + }, + screenshots: [ + { + screenshotId: expect.any(String), + name: null, + testId: "r0", + testAttemptIndex: 0, + takenAt: expect.any(String), + screenshotURL: expect.any(String), + height: 0, + width: 0, + }, + ], + exception: null, + flaky: 0, + }, + }, + ], + completionState: "COMPLETE", + status: "FAILED", +}; diff --git a/e2e/cypress-13-demo/data-references/ccy-1.9.4-cy-12-cycl.ts b/e2e/cypress-13-demo/data-references/ccy-1.9.4-cy-12-cycl.ts new file mode 100644 index 0000000..bb421a8 --- /dev/null +++ b/e2e/cypress-13-demo/data-references/ccy-1.9.4-cy-12-cycl.ts @@ -0,0 +1,970 @@ +import { expect } from "@jest/globals"; + +const getScreenshot = ({ + name, + testId, + testAttemptIndex, +}: { + name: string | null; + testId: string; + testAttemptIndex: number; +}) => ({ + screenshotId: expect.any(String), + name, + testId: testId, + testAttemptIndex, + takenAt: expect.any(String), + path: expect.any(String), + height: expect.any(Number), + width: expect.any(Number), +}); + +export const specA = { + stats: { + duration: expect.any(Number), + endedAt: expect.any(String), + startedAt: expect.any(String), + failures: 1, + passes: 0, + pending: 0, + skipped: 0, + suites: 1, + tests: 1, + }, + reporter: "spec", + reporterStats: { + suites: 1, + tests: 1, + passes: 0, + pending: 0, + failures: 1, + start: expect.any(String), + end: expect.any(String), + duration: expect.any(Number), + }, + spec: { + // baseName: "a.spec.js", + // specFileExtension: ".spec.js", + // relativeToCommonRoot: "a.spec.js", + // specType: "integration", + fileExtension: ".js", + fileName: "a", + name: "a.spec.js", + relative: "cypress/e2e/a.spec.js", + absolute: expect.stringMatching("a.spec.js"), + }, + error: null, + video: expect.any(String), + shouldUploadVideo: true, + hooks: null, + tests: [ + { + testId: "r3", + title: ["Failing test with 2 attempts", "should try 2 times"], + state: "failed", + body: "() => {\n cy.wrap(false).should('be.true');\n }", + displayError: + "AssertionError: Timed out retrying after 4000ms: expected false to be true\n at Context.eval (webpack://cypress-13-demo/./cypress/e2e/a.spec.js:5:19)", + attempts: [ + { + state: "failed", + error: { + name: "AssertionError", + message: + "Timed out retrying after 4000ms: expected false to be true", + stack: expect.any(String), + codeFrame: { + line: 5, + column: 20, + originalFile: "cypress/e2e/a.spec.js", + relativeFile: "e2e/cypress-13-demo/cypress/e2e/a.spec.js", + absoluteFile: expect.stringContaining("a.spec.js"), + frame: + " 3 | retries: 2,\n 4 | }, () => {\n> 5 | cy.wrap(false).should('be.true');\n | ^\n 6 | });\n 7 | });\n 8 | ", + language: "js", + }, + }, + timings: expect.any(Object), + failedFromHookId: null, + wallClockStartedAt: expect.any(String), + wallClockDuration: expect.any(Number), + videoTimestamp: expect.any(Number), + startedAt: expect.any(String), + duration: expect.any(Number), + screenshots: [ + { + screenshotId: expect.any(String), + name: null, + testId: "r3", + testAttemptIndex: 0, + takenAt: expect.any(String), + path: expect.any(String), + height: expect.any(Number), + width: expect.any(Number), + }, + ], + }, + { + state: "failed", + error: { + name: "AssertionError", + message: + "Timed out retrying after 4000ms: expected false to be true", + stack: expect.any(String), + codeFrame: { + line: 5, + column: 20, + originalFile: "cypress/e2e/a.spec.js", + relativeFile: "e2e/cypress-13-demo/cypress/e2e/a.spec.js", + absoluteFile: expect.stringContaining("a.spec.js"), + frame: + " 3 | retries: 2,\n 4 | }, () => {\n> 5 | cy.wrap(false).should('be.true');\n | ^\n 6 | });\n 7 | });\n 8 | ", + language: "js", + }, + }, + timings: expect.anything(), + failedFromHookId: null, + wallClockStartedAt: expect.any(String), + wallClockDuration: expect.any(Number), + videoTimestamp: expect.any(Number), + startedAt: expect.any(String), + duration: expect.any(Number), + screenshots: [ + { + screenshotId: expect.any(String), + name: null, + testId: "r3", + testAttemptIndex: 1, + takenAt: expect.any(String), + path: expect.any(String), + height: expect.any(Number), + width: expect.any(Number), + }, + ], + }, + { + state: "failed", + error: { + name: "AssertionError", + message: + "Timed out retrying after 4000ms: expected false to be true", + stack: expect.any(String), + codeFrame: { + line: 5, + column: 20, + originalFile: "cypress/e2e/a.spec.js", + relativeFile: "e2e/cypress-13-demo/cypress/e2e/a.spec.js", + absoluteFile: expect.stringContaining("a.spec.js"), + frame: + " 3 | retries: 2,\n 4 | }, () => {\n> 5 | cy.wrap(false).should('be.true');\n | ^\n 6 | });\n 7 | });\n 8 | ", + language: "js", + }, + }, + timings: expect.anything(), + failedFromHookId: null, + wallClockStartedAt: expect.any(String), + wallClockDuration: expect.any(Number), + videoTimestamp: expect.any(Number), + startedAt: expect.any(String), + duration: expect.any(Number), + screenshots: [ + { + screenshotId: expect.any(String), + name: null, + testId: "r3", + testAttemptIndex: 2, + takenAt: expect.any(String), + path: expect.any(String), + height: expect.any(Number), + width: expect.any(Number), + }, + ], + }, + ], + }, + ], +}; +export const specE = { + stats: { + duration: expect.any(Number), + endedAt: expect.any(String), + startedAt: expect.any(String), + failures: 1, + passes: 0, + pending: 0, + skipped: 0, + suites: 1, + tests: 1, + }, + reporter: "spec", + reporterStats: { + suites: 1, + tests: 1, + passes: 0, + pending: 0, + failures: 1, + start: expect.any(String), + end: expect.any(String), + duration: expect.any(Number), + }, + spec: { + // baseName: "e.spec.js", + // specFileExtension: ".spec.js", + // relativeToCommonRoot: "e.spec.js", + // specType: "integration", + fileExtension: ".js", + fileName: "e", + name: "e.spec.js", + relative: "cypress/e2e/e.spec.js", + absolute: expect.stringMatching("e.spec.js"), + }, + error: null, + video: expect.any(String), + shouldUploadVideo: true, + hooks: null, + tests: [ + { + testId: "r3", + title: ["Should throw an error", "Should throw an error"], + state: "failed", + body: '() => {\n throw new Error("test error");\n }', + displayError: + "Error: test error\n at Context.eval (webpack://cypress-13-demo/./cypress/e2e/e.spec.js:3:10)", + attempts: [ + { + state: "failed", + error: { + name: "Error", + message: "test error", + stack: expect.any(String), + codeFrame: { + line: 3, + column: 11, + originalFile: "cypress/e2e/e.spec.js", + relativeFile: "e2e/cypress-13-demo/cypress/e2e/e.spec.js", + absoluteFile: expect.stringContaining("e.spec.js"), + frame: + " 1 | describe('Should throw an error', () => {\n 2 | it('Should throw an error', () => {\n> 3 | throw new Error(\"test error\")\n | ^\n 4 | });\n 5 | });\n 6 | ", + language: "js", + }, + }, + timings: expect.any(Object), + failedFromHookId: null, + wallClockStartedAt: expect.any(String), + wallClockDuration: expect.any(Number), + videoTimestamp: expect.any(Number), + startedAt: expect.any(String), + duration: expect.any(Number), + screenshots: [ + { + screenshotId: expect.any(String), + name: null, + testId: "r3", + testAttemptIndex: 0, + takenAt: expect.any(String), + path: expect.any(String), + height: expect.any(Number), + width: expect.any(Number), + }, + ], + }, + ], + }, + ], +}; +export const specD = { + stats: { + duration: expect.any(Number), + endedAt: expect.any(String), + startedAt: expect.any(String), + failures: 0, + passes: 2, + pending: 0, + skipped: 0, + suites: 1, + tests: 2, + }, + reporter: "spec", + reporterStats: { + suites: 1, + tests: 2, + passes: 2, + pending: 0, + failures: 0, + start: expect.any(String), + end: expect.any(String), + duration: expect.any(Number), + }, + spec: { + // baseName: "d.spec.js", + // specFileExtension: ".spec.js", + // relativeToCommonRoot: "d.spec.js", + // specType: "integration", + fileExtension: ".js", + fileName: "d", + name: "d.spec.js", + relative: "cypress/e2e/d.spec.js", + absolute: expect.stringMatching("d.spec.js"), + }, + error: null, + video: expect.any(String), + shouldUploadVideo: true, + hooks: null, + tests: [ + { + testId: "r3", + title: [ + "Passed test with screenshot, passed test with no screenshots", + "should assert and take a screenshot", + ], + state: "passed", + body: "() => {\n // Assert that true is true\n cy.wrap(true).should('be.true');\n\n // Take a screenshot\n cy.screenshot('internal-assert-screenshot');\n }", + displayError: null, + attempts: [ + { + state: "passed", + error: null, + timings: expect.any(Object), + failedFromHookId: null, + wallClockStartedAt: expect.any(String), + wallClockDuration: expect.any(Number), + videoTimestamp: expect.any(Number), + startedAt: expect.any(String), + duration: expect.any(Number), + screenshots: [ + { + screenshotId: expect.any(String), + name: "internal-assert-screenshot", + testId: "r3", + testAttemptIndex: 0, + takenAt: expect.any(String), + path: expect.any(String), + height: expect.any(Number), + width: expect.any(Number), + }, + ], + }, + ], + }, + { + testId: "r4", + title: [ + "Passed test with screenshot, passed test with no screenshots", + "should assert that true is true", + ], + state: "passed", + body: "() => {\n cy.wrap(true).should('be.true');\n }", + displayError: null, + attempts: [ + { + state: "passed", + error: null, + timings: expect.any(Object), + failedFromHookId: null, + wallClockStartedAt: expect.any(String), + wallClockDuration: expect.any(Number), + videoTimestamp: expect.any(Number), + startedAt: expect.any(String), + duration: expect.any(Number), + screenshots: [], + }, + ], + }, + ], +}; +export const specC = { + stats: { + duration: expect.any(Number), + endedAt: expect.any(String), + startedAt: expect.any(String), + failures: 0, + passes: 0, + pending: 1, + skipped: 0, + suites: 1, + tests: 1, + }, + reporter: "spec", + reporterStats: { + suites: 1, + tests: 1, + passes: 0, + pending: 1, + failures: 0, + start: expect.any(String), + end: expect.any(String), + duration: expect.any(Number), + }, + spec: { + // baseName: "c.spec.js", + // specFileExtension: ".spec.js", + // relativeToCommonRoot: "c.spec.js", + // specType: "integration", + fileExtension: ".js", + fileName: "c", + name: "c.spec.js", + relative: "cypress/e2e/c.spec.js", + absolute: expect.stringMatching("c.spec.js"), + }, + error: null, + video: expect.any(String), + shouldUploadVideo: true, + hooks: null, + tests: [ + { + // pending test do not emit "beforeEach" so we can't get the details for cy13 + testId: expect.stringMatching(/r\d{1,2}/), + title: ["Ignored test", "should be a skipped test"], + state: "pending", + // pending test do not emit "beforeEach" so we can't get the details for cy13 + body: expect.any(String), + displayError: null, + attempts: [ + { + state: "pending", + error: null, + timings: expect.any(Object), + failedFromHookId: null, + wallClockStartedAt: expect.any(String), + wallClockDuration: expect.any(Number), + videoTimestamp: expect.any(Number), + startedAt: expect.any(String), + duration: expect.any(Number), + screenshots: [], + }, + ], + }, + ], +}; +export const specB = { + stats: { + duration: expect.any(Number), + endedAt: expect.any(String), + startedAt: expect.any(String), + failures: 1, + passes: 2, + pending: 0, + skipped: 0, + suites: 1, + tests: 3, + }, + reporter: "spec", + reporterStats: { + suites: 1, + tests: 3, + passes: 2, + pending: 0, + failures: 1, + start: expect.any(String), + end: expect.any(String), + duration: expect.any(Number), + }, + spec: { + // baseName: "b.spec.js", + // specFileExtension: ".spec.js", + // relativeToCommonRoot: "b.spec.js", + // specType: "integration", + fileExtension: ".js", + fileName: "b", + name: "b.spec.js", + relative: "cypress/e2e/b.spec.js", + absolute: expect.stringMatching("b.spec.js"), + }, + error: null, + video: expect.any(String), + shouldUploadVideo: true, + hooks: null, + tests: [ + { + testId: "r3", + title: [ + "Failing test with 2 attempts, passed test and flaky test with 2 attempts", + "should try 2 times", + ], + state: "failed", + body: "() => {\n cy.wrap(false).should('be.true');\n }", + displayError: + "AssertionError: Timed out retrying after 4000ms: expected false to be true\n at Context.eval (webpack://cypress-13-demo/./cypress/e2e/b.spec.js:6:19)", + attempts: [ + { + state: "failed", + error: { + name: "AssertionError", + message: + "Timed out retrying after 4000ms: expected false to be true", + stack: expect.any(String), + codeFrame: { + line: 6, + column: 20, + originalFile: "cypress/e2e/b.spec.js", + relativeFile: "e2e/cypress-13-demo/cypress/e2e/b.spec.js", + absoluteFile: expect.stringContaining("b.spec.js"), + frame: + " 4 | retries: 2,\n 5 | }, () => {\n> 6 | cy.wrap(false).should('be.true');\n | ^\n 7 | });\n 8 | \n 9 | it('should assert that true is true', () => {", + language: "js", + }, + }, + timings: expect.any(Object), + failedFromHookId: null, + wallClockStartedAt: expect.any(String), + wallClockDuration: expect.any(Number), + videoTimestamp: expect.any(Number), + startedAt: expect.any(String), + duration: expect.any(Number), + screenshots: [ + getScreenshot({ + name: null, + testId: "r3", + testAttemptIndex: 0, + }), + ], + }, + { + state: "failed", + error: { + name: "AssertionError", + message: + "Timed out retrying after 4000ms: expected false to be true", + stack: expect.any(String), + codeFrame: { + line: 6, + column: 20, + originalFile: "cypress/e2e/b.spec.js", + relativeFile: "e2e/cypress-13-demo/cypress/e2e/b.spec.js", + absoluteFile: expect.stringContaining("b.spec.js"), + frame: + " 4 | retries: 2,\n 5 | }, () => {\n> 6 | cy.wrap(false).should('be.true');\n | ^\n 7 | });\n 8 | \n 9 | it('should assert that true is true', () => {", + language: "js", + }, + }, + timings: expect.any(Object), + failedFromHookId: null, + wallClockStartedAt: expect.any(String), + wallClockDuration: expect.any(Number), + videoTimestamp: expect.any(Number), + startedAt: expect.any(String), + duration: expect.any(Number), + screenshots: [ + getScreenshot({ + name: null, + testId: "r3", + testAttemptIndex: 1, + }), + ], + }, + { + state: "failed", + error: { + name: "AssertionError", + message: + "Timed out retrying after 4000ms: expected false to be true", + stack: expect.any(String), + codeFrame: { + line: 6, + column: 20, + originalFile: "cypress/e2e/b.spec.js", + relativeFile: "e2e/cypress-13-demo/cypress/e2e/b.spec.js", + absoluteFile: expect.stringContaining("b.spec.js"), + frame: + " 4 | retries: 2,\n 5 | }, () => {\n> 6 | cy.wrap(false).should('be.true');\n | ^\n 7 | });\n 8 | \n 9 | it('should assert that true is true', () => {", + language: "js", + }, + }, + timings: expect.any(Object), + failedFromHookId: null, + wallClockStartedAt: expect.any(String), + wallClockDuration: expect.any(Number), + videoTimestamp: expect.any(Number), + startedAt: expect.any(String), + duration: expect.any(Number), + screenshots: [ + getScreenshot({ + name: null, + testId: "r3", + testAttemptIndex: 2, + }), + ], + }, + ], + }, + { + testId: "r4", + title: [ + "Failing test with 2 attempts, passed test and flaky test with 2 attempts", + "should assert that true is true", + ], + state: "passed", + body: "() => {\n cy.wrap(true).should('be.true');\n }", + displayError: null, + attempts: [ + { + state: "passed", + error: null, + timings: expect.any(Object), + failedFromHookId: null, + wallClockStartedAt: expect.any(String), + wallClockDuration: expect.any(Number), + videoTimestamp: expect.any(Number), + startedAt: expect.any(String), + duration: expect.any(Number), + screenshots: [], + }, + ], + }, + { + testId: "r5", + title: [ + "Failing test with 2 attempts, passed test and flaky test with 2 attempts", + "should fail on the first attempt and pass on the second", + ], + state: "passed", + body: "() => {\n if (attempt === 0) {\n attempt++;\n cy.wrap(false).should('be.true'); // This will fail on the first attempt\n } else {\n cy.wrap(true).should('be.true'); // This will pass on the second attempt\n }\n }", + displayError: null, + attempts: [ + { + state: "failed", + error: { + name: "AssertionError", + message: + "Timed out retrying after 4000ms: expected false to be true", + stack: expect.any(String), + codeFrame: { + line: 16, + column: 22, + originalFile: "cypress/e2e/b.spec.js", + relativeFile: "e2e/cypress-13-demo/cypress/e2e/b.spec.js", + absoluteFile: expect.stringContaining("b.spec.js"), + frame: + " 14 | if (attempt === 0) {\n 15 | attempt++;\n> 16 | cy.wrap(false).should('be.true'); // This will fail on the first attempt\n | ^\n 17 | } else {\n 18 | cy.wrap(true).should('be.true'); // This will pass on the second attempt\n 19 | }", + language: "js", + }, + }, + timings: expect.any(Object), + failedFromHookId: null, + wallClockStartedAt: expect.any(String), + wallClockDuration: expect.any(Number), + videoTimestamp: expect.any(Number), + startedAt: expect.any(String), + duration: expect.any(Number), + screenshots: [ + getScreenshot({ + name: null, + testId: "r5", + testAttemptIndex: 0, + }), + ], + }, + { + state: "passed", + error: null, + timings: expect.any(Object), + failedFromHookId: null, + wallClockStartedAt: expect.any(String), + wallClockDuration: expect.any(Number), + videoTimestamp: expect.any(Number), + startedAt: expect.any(String), + duration: expect.any(Number), + screenshots: [], + }, + ], + }, + ], +}; +export const config = { + additionalIgnorePattern: [], + animationDistanceThreshold: 5, + arch: "arm64", + autoOpen: false, + baseUrl: "https://todomvc.com/examples/vanillajs", + blockHosts: null, + browsers: [ + { + name: "chrome", + family: "chromium", + channel: "stable", + displayName: "Chrome", + version: "116.0.5845.187", + path: "/Applications/Google Chrome.app/Contents/MacOS/Google Chrome", + minSupportedVersion: 64, + majorVersion: "116", + }, + { + name: "edge", + family: "chromium", + channel: "stable", + displayName: "Edge", + version: "116.0.1938.81", + path: "/Applications/Microsoft Edge.app/Contents/MacOS/Microsoft Edge", + minSupportedVersion: 79, + majorVersion: "116", + }, + { + name: "electron", + channel: "stable", + family: "chromium", + displayName: "Electron", + version: "106.0.5249.51", + path: "", + majorVersion: 106, + }, + ], + chromeWebSecurity: true, + clientCertificates: [], + clientRoute: "/__/", + configFile: + "/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-13-demo/cypress.config.ts", + cypressBinaryRoot: + "/Users/miguelangarano/Library/Caches/Cypress/12.17.4/Cypress.app/Contents/Resources/app", + cypressEnv: "production", + defaultCommandTimeout: 4000, + devServerPublicPathRoute: "/__cypress/src", + downloadsFolder: + "/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-13-demo/cypress/downloads", + env: { + currents_temp_file: + "/var/folders/1l/tzj2dqys6js7w35f8rx2jsq00000gn/T/tmp-45859-JGguqnT5L2dB", + currents_debug_enabled: false, + }, + excludeSpecPattern: "*.hot-update.js", + execTimeout: 60000, + experimentalCspAllowList: false, + experimentalFetchPolyfill: false, + experimentalInteractiveRunEvents: false, + experimentalMemoryManagement: false, + experimentalModifyObstructiveThirdPartyCode: false, + experimentalOriginDependencies: false, + experimentalRunAllSpecs: false, + experimentalSingleTabRunMode: false, + experimentalSkipDomainInjection: null, + experimentalSourceRewriting: false, + experimentalStudio: false, + experimentalWebKitSupport: false, + fileServerFolder: + "/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-13-demo", + fixturesFolder: + "/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-13-demo/cypress/fixtures", + hosts: null, + includeShadowDom: false, + isInteractive: true, + isTextTerminal: true, + keystrokeDelay: 0, + modifyObstructiveCode: true, + morgan: false, + namespace: "__cypress", + numTestsKeptInMemory: 0, + pageLoadTimeout: 60000, + platform: "darwin", + port: null, + projectId: null, + projectName: "cypress-13-demo", + projectRoot: + "/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-13-demo", + rawJson: { + video: true, + e2e: { + baseUrl: "https://todomvc.com/examples/vanillajs", + supportFile: "cypress/support/e2e.ts", + specPattern: "cypress/*/**/*.spec.js", + setupNodeEvents: "[Function setupNodeEvents]", + }, + component: { + specPattern: ["pages/__tests__/*.spec.tsx"], + setupNodeEvents: "[Function setupNodeEvents]", + devServer: { framework: "next", bundler: "webpack" }, + }, + baseUrl: "https://todomvc.com/examples/vanillajs", + supportFile: "cypress/support/e2e.ts", + specPattern: "cypress/*/**/*.spec.js", + setupNodeEvents: "[Function setupNodeEvents]", + envFile: {}, + projectRoot: + "/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-13-demo", + projectName: "cypress-13-demo", + repoRoot: + "/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13", + }, + redirectionLimit: 20, + repoRoot: + "/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13", + report: true, + reporter: "spec", + reporterOptions: null, + reporterRoute: "/__cypress/reporter", + requestTimeout: 5000, + resolved: { + animationDistanceThreshold: { value: 5, from: "default" }, + arch: { value: "arm64", from: "default" }, + baseUrl: { + value: "https://todomvc.com/examples/vanillajs", + from: "config", + }, + blockHosts: { value: null, from: "default" }, + chromeWebSecurity: { value: true, from: "default" }, + clientCertificates: { value: [], from: "default" }, + defaultCommandTimeout: { value: 4000, from: "default" }, + downloadsFolder: { value: "cypress/downloads", from: "default" }, + env: { + currents_temp_file: { + value: + "/var/folders/1l/tzj2dqys6js7w35f8rx2jsq00000gn/T/tmp-45859-JGguqnT5L2dB", + from: "cli", + }, + currents_debug_enabled: { value: false, from: "cli" }, + }, + execTimeout: { value: 60000, from: "default" }, + experimentalCspAllowList: { value: false, from: "default" }, + experimentalFetchPolyfill: { value: false, from: "default" }, + experimentalInteractiveRunEvents: { value: false, from: "default" }, + experimentalRunAllSpecs: { value: false, from: "default" }, + experimentalMemoryManagement: { value: false, from: "default" }, + experimentalModifyObstructiveThirdPartyCode: { + value: false, + from: "default", + }, + experimentalSkipDomainInjection: { value: null, from: "default" }, + experimentalOriginDependencies: { value: false, from: "default" }, + experimentalSourceRewriting: { value: false, from: "default" }, + experimentalSingleTabRunMode: { value: false, from: "default" }, + experimentalStudio: { value: false, from: "default" }, + experimentalWebKitSupport: { value: false, from: "default" }, + fileServerFolder: { value: "", from: "default" }, + fixturesFolder: { value: "cypress/fixtures", from: "default" }, + excludeSpecPattern: { value: "*.hot-update.js", from: "default" }, + includeShadowDom: { value: false, from: "default" }, + keystrokeDelay: { value: 0, from: "default" }, + modifyObstructiveCode: { value: true, from: "default" }, + nodeVersion: { from: "default" }, + numTestsKeptInMemory: { value: 0, from: "config" }, + platform: { value: "darwin", from: "default" }, + pageLoadTimeout: { value: 60000, from: "default" }, + port: { value: null, from: "default" }, + projectId: { value: null, from: "default" }, + redirectionLimit: { value: 20, from: "default" }, + reporter: { value: "spec", from: "default" }, + reporterOptions: { value: null, from: "default" }, + requestTimeout: { value: 5000, from: "default" }, + resolvedNodePath: { value: null, from: "default" }, + resolvedNodeVersion: { value: null, from: "default" }, + responseTimeout: { value: 30000, from: "default" }, + retries: { + value: { runMode: 0, openMode: 0 }, + from: "default", + }, + screenshotOnRunFailure: { value: true, from: "default" }, + screenshotsFolder: { + value: "cypress/screenshots", + from: "default", + }, + slowTestThreshold: { value: 10000, from: "default" }, + scrollBehavior: { value: "top", from: "default" }, + supportFile: { value: "cypress/support/e2e.ts", from: "config" }, + supportFolder: { value: false, from: "default" }, + taskTimeout: { value: 60000, from: "default" }, + testIsolation: { value: true, from: "default" }, + trashAssetsBeforeRuns: { value: true, from: "default" }, + userAgent: { value: null, from: "default" }, + video: { value: true, from: "default" }, + videoCompression: { value: 32, from: "default" }, + videosFolder: { value: "cypress/videos", from: "default" }, + videoUploadOnPasses: { value: true, from: "default" }, + viewportHeight: { value: 660, from: "default" }, + viewportWidth: { value: 1000, from: "default" }, + waitForAnimations: { value: true, from: "default" }, + watchForFileChanges: { value: false, from: "config" }, + specPattern: { value: "cypress/*/**/*.spec.js", from: "config" }, + browsers: { + value: [ + { + name: "chrome", + family: "chromium", + channel: "stable", + displayName: "Chrome", + version: "116.0.5845.187", + path: "/Applications/Google Chrome.app/Contents/MacOS/Google Chrome", + minSupportedVersion: 64, + majorVersion: "116", + }, + { + name: "edge", + family: "chromium", + channel: "stable", + displayName: "Edge", + version: "116.0.1938.81", + path: "/Applications/Microsoft Edge.app/Contents/MacOS/Microsoft Edge", + minSupportedVersion: 79, + majorVersion: "116", + }, + { + name: "electron", + channel: "stable", + family: "chromium", + displayName: "Electron", + version: "106.0.5249.51", + path: "", + majorVersion: 106, + }, + ], + from: "runtime", + }, + hosts: { value: null, from: "default" }, + isInteractive: { value: true, from: "default" }, + }, + resolvedNodePath: + "/Users/miguelangarano/.nvm/versions/node/v18.14.2/bin/node", + resolvedNodeVersion: "18.14.2", + responseTimeout: 30000, + retries: { runMode: 0, openMode: 0 }, + screenshotOnRunFailure: true, + screenshotsFolder: + "/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-13-demo/cypress/screenshots", + scrollBehavior: "top", + setupNodeEvents: "[Function setupNodeEvents]", + slowTestThreshold: 10000, + socketId: "ijm5bzfgh0", + socketIoCookie: "__socket", + socketIoRoute: "/__socket", + specPattern: "cypress/*/**/*.spec.js", + supportFile: + "/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-13-demo/cypress/support/e2e.ts", + supportFolder: + "/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-13-demo/cypress/support", + taskTimeout: 60000, + testIsolation: true, + trashAssetsBeforeRuns: true, + userAgent: null, + version: "12.17.4", + video: true, + videoCompression: 32, + videoUploadOnPasses: true, + videosFolder: + "/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-13-demo/cypress/videos", + viewportHeight: 660, + viewportWidth: 1000, + waitForAnimations: true, + watchForFileChanges: false, + testingType: "e2e", +}; + +export const all = { + totalDuration: expect.any(Number), + totalSuites: 5, + totalPending: 1, + totalFailed: 3, + totalSkipped: 0, + totalPassed: 4, + totalTests: 8, + runs: [specA, specE, specD, specC, specB], + startedTestsAt: expect.any(String), + endedTestsAt: expect.any(String), + config, + status: "finished", + runUrl: expect.any(String), +}; + +export const specs = { + "a.spec.js": specA, + "b.spec.js": specB, + "c.spec.js": specC, + "d.spec.js": specD, + "e.spec.js": specE, +}; diff --git a/e2e/cypress-13-demo/jest.config.js b/e2e/cypress-13-demo/jest.config.js new file mode 100644 index 0000000..8b9ab91 --- /dev/null +++ b/e2e/cypress-13-demo/jest.config.js @@ -0,0 +1,14 @@ +module.exports = { + verbose: true, + clearMocks: true, + testEnvironment: "node", + testMatch: ["/**/__tests__/**/?(*.)(spec|test).ts"], + transform: { + "^.+\\.tsx?$": "@swc/jest", + }, + // moduleNameMapper: { + // "^cypress-cloud/(.*)$": "/../../../cypress-cloud/$1", + // }, + transformIgnorePatterns: ["node_modules"], + moduleFileExtensions: ["ts", "js", "d.ts"], +}; diff --git a/e2e/cypress-13-demo/package.json b/e2e/cypress-13-demo/package.json new file mode 100644 index 0000000..1ae1a43 --- /dev/null +++ b/e2e/cypress-13-demo/package.json @@ -0,0 +1,21 @@ +{ + "name": "cypress-13-demo", + "version": "0.0.0", + "private": true, + "scripts": { + "files": "ts-node scripts/files.ts", + "validate": "ts-node scripts/validate.ts", + "runtest": "ts-node scripts/test.ts" + }, + "dependencies": { + "cypress-cloud": "*" + }, + "devDependencies": { + "@swc/jest": "^0.2.29", + "@types/node": "^17.0.12", + "cypress": "^13.1.0", + "jest": "^29.7.0", + "tsconfig": "*", + "typescript": "^4.7.4" + } +} diff --git a/e2e/cypress-13-demo/tsconfig.json b/e2e/cypress-13-demo/tsconfig.json new file mode 100644 index 0000000..83d1ff0 --- /dev/null +++ b/e2e/cypress-13-demo/tsconfig.json @@ -0,0 +1,35 @@ +{ + "$schema": "https://json.schemastore.org/tsconfig", + "display": "Next.js", + "compilerOptions": { + "baseUrl": ".", + "composite": false, + "declaration": true, + "declarationMap": true, + "inlineSources": false, + "moduleResolution": "node", + "noUnusedLocals": false, + "noUnusedParameters": false, + "preserveWatchOutput": true, + "target": "es5", + "lib": ["dom", "dom.iterable", "esnext"], + "allowJs": true, + "skipLibCheck": true, + "strict": true, + "forceConsistentCasingInFileNames": true, + "noEmit": true, + "incremental": true, + "esModuleInterop": true, + "module": "esnext", + "resolveJsonModule": true, + "isolatedModules": true, + "jsx": "preserve" + }, + "ts-node": { + "compilerOptions": { + "module": "CommonJS" + } + }, + + "exclude": ["node_modules"] +} diff --git a/e2e/results/results-comparison-viewer.html b/e2e/results/results-comparison-viewer.html new file mode 100644 index 0000000..c74be04 --- /dev/null +++ b/e2e/results/results-comparison-viewer.html @@ -0,0 +1,65 @@ + + + + + + + See JSON results comparison + + + + + +

Select here your JSON results file

+ + + + + + + + + + + + +
PathValue OriginalValue Modified
+ + + + + \ No newline at end of file diff --git a/e2e/utils/utils.ts b/e2e/utils/utils.ts new file mode 100644 index 0000000..49fc291 --- /dev/null +++ b/e2e/utils/utils.ts @@ -0,0 +1,41 @@ +import { run } from "cypress-cloud"; + +export function getCurrentsTestsVariables() { + const projectId = process.env.CURRENTS_PROJECT_ID; + const recordKey = process.env.CURRENTS_RECORD_KEY; + const ciBuildId = `run-compat-test-${new Date().toISOString()}`; + const apiKey = + // eslint-disable-next-line + process.env.CURRENTS_API_KEY; + const apiBaseUrl = + // eslint-disable-next-line + process.env.CURRENTS_API_BASE_URL || "https://api.currents.dev/v1"; + return { + projectId, + recordKey, + ciBuildId, + apiKey, + apiBaseUrl, + }; +} + +export async function fetchRun(runId: string) { + const { apiKey, apiBaseUrl } = getCurrentsTestsVariables(); + const headers = new Headers({ + Authorization: `Bearer ${apiKey}`, + }); + + const response = await fetch(`${apiBaseUrl}/runs/${runId}`, { + method: "GET", + headers, + }); + return response.json(); +} + +export async function runCypressCloud() { + const { ciBuildId } = getCurrentsTestsVariables(); + return await run({ + ciBuildId, + batchSize: 5, + }); +} diff --git a/examples/coverage/cypress.config.ts b/examples/coverage/cypress.config.ts index d947e8f..d16525d 100644 --- a/examples/coverage/cypress.config.ts +++ b/examples/coverage/cypress.config.ts @@ -14,7 +14,7 @@ export default defineConfig({ return await cloudPlugin(on, tempConfig); }, baseUrl: "http://localhost:8888", - videoUploadOnPasses: false, + // videoUploadOnPasses: false, supportFile: "cypress/support/e2e.js", specPattern: "cypress/*/**/*.cy.js", env: { @@ -23,7 +23,7 @@ export default defineConfig({ exclude: ["cypress/**/*.*"], }, // set custom coverage file for cypress-cloud - coverageFile: "./.nyc_output/out.json", + coverageFile: "./.nyc_output/outXX.json", }, }, }); diff --git a/examples/webapp/cypress.config.ts b/examples/webapp/cypress.config.ts index ac9cd25..75d2fb5 100644 --- a/examples/webapp/cypress.config.ts +++ b/examples/webapp/cypress.config.ts @@ -9,10 +9,9 @@ module.exports = defineConfig({ : "l4zuz8", baseUrl: "https://todomvc.com/examples/vanillajs", supportFile: "cypress/support/e2e.ts", - specPattern: "cypress/e2e/*.js", + specPattern: ["cypress/e2e/*.js", "cypress/e2e_smoke/*.js"], setupNodeEvents(on, config) { require("@cypress/grep/src/plugin")(config); - require("cypress-terminal-report/src/installLogsPrinter")(on); return currents(on, config); }, }, diff --git a/examples/webapp/cypress/ddd/completed.spec.js b/examples/webapp/cypress/e2e/completed.spec.js similarity index 100% rename from examples/webapp/cypress/ddd/completed.spec.js rename to examples/webapp/cypress/e2e/completed.spec.js diff --git a/examples/webapp/cypress/ddd/counter.spec.js b/examples/webapp/cypress/e2e/counter.spec.js similarity index 100% rename from examples/webapp/cypress/ddd/counter.spec.js rename to examples/webapp/cypress/e2e/counter.spec.js diff --git a/examples/webapp/cypress/ddd/edit.spec.js b/examples/webapp/cypress/e2e/edit.spec.js similarity index 100% rename from examples/webapp/cypress/ddd/edit.spec.js rename to examples/webapp/cypress/e2e/edit.spec.js diff --git a/examples/webapp/cypress/ddd/item.spec.js b/examples/webapp/cypress/e2e/item.spec.js similarity index 100% rename from examples/webapp/cypress/ddd/item.spec.js rename to examples/webapp/cypress/e2e/item.spec.js diff --git a/examples/webapp/cypress/ddd/labels.spec.js b/examples/webapp/cypress/e2e/labels.spec.js similarity index 100% rename from examples/webapp/cypress/ddd/labels.spec.js rename to examples/webapp/cypress/e2e/labels.spec.js diff --git a/examples/webapp/cypress/ddd/new.spec.js b/examples/webapp/cypress/e2e/new.spec.js similarity index 100% rename from examples/webapp/cypress/ddd/new.spec.js rename to examples/webapp/cypress/e2e/new.spec.js diff --git a/examples/webapp/cypress/ddd/persistance.spec.js b/examples/webapp/cypress/e2e/persistance.spec.js similarity index 100% rename from examples/webapp/cypress/ddd/persistance.spec.js rename to examples/webapp/cypress/e2e/persistance.spec.js diff --git a/examples/webapp/cypress/ddd/routing.spec.js b/examples/webapp/cypress/e2e/routing.spec.js similarity index 100% rename from examples/webapp/cypress/ddd/routing.spec.js rename to examples/webapp/cypress/e2e/routing.spec.js diff --git a/examples/webapp/cypress/ddd/smoke.spec.js b/examples/webapp/cypress/e2e/smoke.spec.js similarity index 100% rename from examples/webapp/cypress/ddd/smoke.spec.js rename to examples/webapp/cypress/e2e/smoke.spec.js diff --git a/examples/webapp/cypress/ddd/todo.no-items.spec.js b/examples/webapp/cypress/e2e/todo.no-items.spec.js similarity index 100% rename from examples/webapp/cypress/ddd/todo.no-items.spec.js rename to examples/webapp/cypress/e2e/todo.no-items.spec.js diff --git a/examples/webapp/cypress/e2e/xxx.js b/examples/webapp/cypress/e2e/xxx.js deleted file mode 100644 index d54f091..0000000 --- a/examples/webapp/cypress/e2e/xxx.js +++ /dev/null @@ -1,43 +0,0 @@ -let TODO_ITEM_ONE = "item A"; -let TODO_ITEM_TWO = "item B"; -let TODO_ITEM_THREE = "item C"; - -context("Clear completed button", function () { - beforeEach(function () { - cy.createDefaultTodos().as("todos"); - }); - - it( - "should display the correct text", - { - tags: ["@tagA"], - }, - function () { - cy.get("@todos").eq(0).find(".toggle").check(); - cy.get(".clear-completed").contains("Clear completed X"); - } - ); - - it( - "should remove completed items when clicked", - { - tags: ["@tagB"], - }, - function () { - cy.get("@todos").eq(1).find(".toggle").check(); - - cy.get(".clear-completed").click(); - cy.get("@todos").should("have.length", 2); - cy.get(".todo-list li").eq(0).should("contain", TODO_ITEM_ONE); - cy.get(".todo-list li").eq(1).should("contain", "XXXX"); - } - ); - - it("should be hidden when there are no items that are completed", function () { - cy.get("@todos").eq(1).find(".toggle").check(); - - cy.get(".clear-completed").should("be.visible").click(); - - cy.get(".clear-completed").should("not.be.visible"); - }); -}); diff --git a/examples/webapp/cypress/e2e_01/clear.spec.js b/examples/webapp/cypress/e2e_01/clear.spec.js deleted file mode 100644 index 95c5e51..0000000 --- a/examples/webapp/cypress/e2e_01/clear.spec.js +++ /dev/null @@ -1,33 +0,0 @@ -let TODO_ITEM_ONE = "buy some cheese"; -let TODO_ITEM_TWO = "feed the cat"; -let TODO_ITEM_THREE = "book a doctors appointment"; - -context("Clear completed button", function () { - beforeEach(function () { - cy.createDefaultTodos().as("todos"); - }); - - it("should display the correct text", function () { - cy.get("@todos").eq(0).find(".toggle").check(); - - cy.get(".clear-completed").contains("Clear completed"); - }); - - it("should remove completed items when clicked", function () { - cy.get("@todos").eq(1).find(".toggle").check(); - - cy.get(".clear-completed").click(); - cy.get("@todos").should("have.length", 2); - cy.get("@todos").eq(0).should("contain", TODO_ITEM_ONE); - - cy.get("@todos").eq(1).should("contain", TODO_ITEM_THREE); - }); - - it("should be hidden when there are no items that are completed", function () { - cy.get("@todos").eq(1).find(".toggle").check(); - - cy.get(".clear-completed").should("be.visible").click(); - - cy.get(".clear-completed").should("not.be.visible"); - }); -}); diff --git a/examples/webapp/cypress/e2e_01/completed.spec.js b/examples/webapp/cypress/e2e_01/completed.spec.js deleted file mode 100644 index 93330f7..0000000 --- a/examples/webapp/cypress/e2e_01/completed.spec.js +++ /dev/null @@ -1,62 +0,0 @@ -context("Mark all as completed", function () { - // New commands used here: - // - cy.check https://on.cypress.io/api/check - // - cy.uncheck https://on.cypress.io/api/uncheck - - beforeEach(function () { - // This is an example of aliasing - // within a hook (beforeEach). - // Aliases will automatically persist - // between hooks and are available - // in your tests below - cy.createDefaultTodos().as("todos"); - }); - - it("should allow me to mark all items as completed", function () { - // complete all todos - // we use 'check' instead of 'click' - // because that indicates our intention much clearer - cy.get(".toggle-all").check(); - - // get each todo li and ensure its class is 'completed' - cy.get("@todos").eq(0).should("have.class", "completed"); - - cy.get("@todos").eq(1).should("have.class", "completed"); - - cy.get("@todos").eq(2).should("have.class", "completed"); - }); - - it("should allow me to clear the complete state of all items", function () { - // check and then immediately uncheck - cy.get(".toggle-all").check().uncheck(); - - cy.get("@todos").eq(0).should("not.have.class", "completed"); - - cy.get("@todos").eq(1).should("not.have.class", "completed"); - - cy.get("@todos").eq(2).should("not.have.class", "completed"); - }); - - it("complete all checkbox should update state when items are completed / cleared", function () { - // alias the .toggle-all for reuse later - cy.get(".toggle-all") - .as("toggleAll") - .check() - // this assertion is silly here IMO but - // it is what TodoMVC does - .should("be.checked"); - - // alias the first todo and then click it - cy.get(".todo-list li").eq(0).as("firstTodo").find(".toggle").uncheck(); - - // reference the .toggle-all element again - // and make sure its not checked - cy.get("@toggleAll").should("not.be.checked"); - - // reference the first todo again and now toggle it - cy.get("@firstTodo").find(".toggle").check(); - - // assert the toggle all is checked again - cy.get("@toggleAll").should("be.checked"); - }); -}); diff --git a/examples/webapp/cypress/e2e_01/counter.spec.js b/examples/webapp/cypress/e2e_01/counter.spec.js deleted file mode 100644 index e1384e5..0000000 --- a/examples/webapp/cypress/e2e_01/counter.spec.js +++ /dev/null @@ -1,12 +0,0 @@ -let TODO_ITEM_ONE = "buy some cheese"; -let TODO_ITEM_TWO = "feed the cat"; -let TODO_ITEM_THREE = "book a doctors appointment"; - -context("Counter", function () { - it("should display the current number of todo items", function () { - cy.createTodo(TODO_ITEM_ONE); - cy.get(".todo-count").contains("1 item left"); - cy.createTodo(TODO_ITEM_TWO); - cy.get(".todo-count").contains("2 items left"); - }); -}); diff --git a/examples/webapp/cypress/e2e_01/edit.spec.js b/examples/webapp/cypress/e2e_01/edit.spec.js deleted file mode 100644 index 8b89162..0000000 --- a/examples/webapp/cypress/e2e_01/edit.spec.js +++ /dev/null @@ -1,74 +0,0 @@ -let TODO_ITEM_ONE = "buy some cheese"; -let TODO_ITEM_TWO = "feed the cat"; -let TODO_ITEM_THREE = "book a doctors appointment"; - -context("Editing", function () { - // New commands used here: - // - cy.blur https://on.cypress.io/api/blur - - beforeEach(function () { - cy.createDefaultTodos().as("todos"); - }); - - it("should hide other controls when editing", function () { - cy.get("@todos").eq(1).as("secondTodo").find("label").dblclick(); - - cy.get("@secondTodo").find(".toggle").should("not.be.visible"); - - cy.get("@secondTodo").find("label").should("not.be.visible"); - }); - - it("should save edits on blur", function () { - cy.get("@todos").eq(1).as("secondTodo").find("label").dblclick(); - - cy.get("@secondTodo") - .find(".edit") - .clear() - .type("buy some sausages") - // we can just send the blur event directly - // to the input instead of having to click - // on another button on the page. though you - // could do that its just more mental work - .blur(); - - cy.get("@todos").eq(0).should("contain", TODO_ITEM_ONE); - - cy.get("@secondTodo").should("contain", "buy some sausages"); - cy.get("@todos").eq(2).should("contain", TODO_ITEM_THREE); - }); - - it("should trim entered text", function () { - cy.get("@todos").eq(1).as("secondTodo").find("label").dblclick(); - - cy.get("@secondTodo") - .find(".edit") - .clear() - .type(" buy some sausages ") - .type("{enter}"); - - cy.get("@todos").eq(0).should("contain", TODO_ITEM_ONE); - - cy.get("@secondTodo").should("contain", "buy some sausages"); - cy.get("@todos").eq(2).should("contain", TODO_ITEM_THREE); - }); - - it("should remove the item if an empty text string was entered", function () { - cy.get("@todos").eq(1).as("secondTodo").find("label").dblclick(); - - cy.get("@secondTodo").find(".edit").clear().type("{enter}"); - - cy.get("@todos").should("have.length", 2); - }); - - it("should cancel edits on escape", function () { - cy.get("@todos").eq(1).as("secondTodo").find("label").dblclick(); - - cy.get("@secondTodo").find(".edit").clear().type("foo{esc}"); - - cy.get("@todos").eq(0).should("contain", TODO_ITEM_ONE); - - cy.get("@todos").eq(1).should("contain", TODO_ITEM_TWO); - - cy.get("@todos").eq(2).should("contain", TODO_ITEM_THREE); - }); -}); diff --git a/examples/webapp/cypress/e2e_01/item.spec.js b/examples/webapp/cypress/e2e_01/item.spec.js deleted file mode 100644 index 560c500..0000000 --- a/examples/webapp/cypress/e2e_01/item.spec.js +++ /dev/null @@ -1,68 +0,0 @@ -let TODO_ITEM_ONE = "buy some cheese"; -let TODO_ITEM_TWO = "feed the cat"; -let TODO_ITEM_THREE = "book a doctors appointment"; - -context("Item", function () { - // New commands used here: - // - cy.clear https://on.cypress.io/api/clear - - it("should allow me to mark items as complete", function () { - // we are aliasing the return value of - // our custom command 'createTodo' - // - // the return value is the
  • in the - cy.createTodo(TODO_ITEM_ONE).as("firstTodo"); - cy.createTodo(TODO_ITEM_TWO).as("secondTodo"); - - cy.get("@firstTodo").find(".toggle").check(); - - cy.get("@firstTodo").should("have.class", "completed"); - - cy.get("@secondTodo").should("not.have.class", "completed"); - cy.get("@secondTodo").find(".toggle").check(); - - cy.get("@firstTodo").should("have.class", "completed"); - cy.get("@secondTodo").should("have.class", "completed"); - }); - - it("should allow me to un-mark items as complete", function () { - cy.createTodo(TODO_ITEM_ONE).as("firstTodo"); - cy.createTodo(TODO_ITEM_TWO).as("secondTodo"); - - cy.get("@firstTodo").find(".toggle").check(); - - cy.get("@firstTodo").should("have.class", "completed"); - cy.get("@secondTodo").should("not.have.class", "completed"); - - cy.get("@firstTodo").find(".toggle").uncheck(); - - cy.get("@firstTodo").should("not.have.class", "completed"); - cy.get("@secondTodo").should("not.have.class", "completed"); - }); - - it("should allow me to edit an item", function () { - cy.createDefaultTodos().as("todos"); - - cy.get("@todos") - .eq(1) - .as("secondTodo") - // TODO: fix this, dblclick should - // have been issued to label - .find("label") - .dblclick(); - - // clear out the inputs current value - // and type a new value - cy.get("@secondTodo") - .find(".edit") - .clear() - .type("buy some sausages") - .type("{enter}"); - - // explicitly assert about the text value - cy.get("@todos").eq(0).should("contain", TODO_ITEM_ONE); - - cy.get("@secondTodo").should("contain", "buy some sausages"); - cy.get("@todos").eq(2).should("contain", TODO_ITEM_THREE); - }); -}); diff --git a/examples/webapp/cypress/e2e_01/new.spec.js b/examples/webapp/cypress/e2e_01/new.spec.js deleted file mode 100644 index 78dc23f..0000000 --- a/examples/webapp/cypress/e2e_01/new.spec.js +++ /dev/null @@ -1,73 +0,0 @@ -let TODO_ITEM_ONE = "buy some cheese"; -let TODO_ITEM_TWO = "feed the cat"; -let TODO_ITEM_THREE = "book a doctors appointment"; - -context("New Todo", function () { - // New commands used here: - // https://on.cypress.io/type - // https://on.cypress.io/eq - // https://on.cypress.io/find - // https://on.cypress.io/contains - // https://on.cypress.io/should - // https://on.cypress.io/as - - it("should allow me to add todo items", function () { - // create 1st todo - cy.get(".new-todo").type(TODO_ITEM_ONE).type("{enter}"); - - // make sure the 1st label contains the 1st todo text - cy.get(".todo-list li") - .eq(0) - .find("label") - .should("contain", TODO_ITEM_ONE); - - // create 2nd todo - cy.get(".new-todo").type(TODO_ITEM_TWO).type("{enter}"); - - // make sure the 2nd label contains the 2nd todo text - cy.get(".todo-list li") - .eq(1) - .find("label") - .should("contain", TODO_ITEM_TWO); - }); - - it("adds items", function () { - // create several todos then check the number of items in the list - cy.get(".new-todo") - .type("todo A{enter}") - .type("todo B{enter}") // we can continue working with same element - .type("todo C{enter}") // and keep adding new items - .type("todo D{enter}"); - - cy.get(".todo-list li").should("have.length", 4); - }); - - it("should clear text input field when an item is added", function () { - cy.get(".new-todo").type(TODO_ITEM_ONE).type("{enter}"); - - cy.get(".new-todo").should("have.text", ""); - }); - - it("should append new items to the bottom of the list", function () { - // this is an example of a custom command - // defined in cypress/support/commands.js - cy.createDefaultTodos().as("todos"); - - // even though the text content is split across - // multiple and elements - // `cy.contains` can verify this correctly - cy.get(".todo-count").contains("3 items left"); - - cy.get("@todos").eq(0).find("label").should("contain", TODO_ITEM_ONE); - - cy.get("@todos").eq(1).find("label").should("contain", TODO_ITEM_TWO); - - cy.get("@todos").eq(2).find("label").should("contain", TODO_ITEM_THREE); - }); - - it("should show #main and #footer when items added", function () { - cy.createTodo(TODO_ITEM_ONE); - cy.get(".main").should("be.visible"); - cy.get(".footer").should("be.visible"); - }); -}); diff --git a/examples/webapp/cypress/e2e_01/persistance.spec.js b/examples/webapp/cypress/e2e_01/persistance.spec.js deleted file mode 100644 index 6313a52..0000000 --- a/examples/webapp/cypress/e2e_01/persistance.spec.js +++ /dev/null @@ -1,29 +0,0 @@ -let TODO_ITEM_ONE = "buy some cheese"; -let TODO_ITEM_TWO = "feed the cat"; -let TODO_ITEM_THREE = "book a doctors appointment"; - -context("Persistence", function () { - it("should persist its data", function () { - // mimicking TodoMVC tests - // by writing out this function - function testState() { - cy.get("@firstTodo") - .should("contain", TODO_ITEM_ONE) - .and("have.class", "completed"); - - cy.get("@secondTodo") - .should("contain", TODO_ITEM_TWO) - .and("not.have.class", "completed"); - } - - cy.createTodo(TODO_ITEM_ONE).as("firstTodo"); - cy.createTodo(TODO_ITEM_TWO).as("secondTodo"); - cy.get("@firstTodo") - .find(".toggle") - .check() - .then(testState) - - .reload() - .then(testState); - }); -}); diff --git a/examples/webapp/cypress/e2e_01/routing.spec.js b/examples/webapp/cypress/e2e_01/routing.spec.js deleted file mode 100644 index 9938908..0000000 --- a/examples/webapp/cypress/e2e_01/routing.spec.js +++ /dev/null @@ -1,69 +0,0 @@ -let TODO_ITEM_ONE = "buy some cheese"; -let TODO_ITEM_TWO = "feed the cat"; -let TODO_ITEM_THREE = "book a doctors appointment"; -context("Routing", function () { - // New commands used here: - // https://on.cypress.io/window - // https://on.cypress.io/its - // https://on.cypress.io/invoke - // https://on.cypress.io/within - - beforeEach(function () { - cy.createDefaultTodos().as("todos"); - }); - - it("should allow me to display active items", function () { - cy.get("@todos").eq(1).find(".toggle").check(); - - cy.get(".filters").contains("Active").click(); - - cy.get("@todos").eq(0).should("contain", TODO_ITEM_ONE); - - cy.get("@todos").eq(1).should("contain", TODO_ITEM_THREE); - }); - - it("should respect the back button", function () { - cy.get("@todos").eq(1).find(".toggle").check(); - - cy.get(".filters").contains("Active").click(); - - cy.get(".filters").contains("Completed").click(); - - cy.get("@todos").should("have.length", 1); - cy.go("back"); - cy.get("@todos").should("have.length", 2); - cy.go("back"); - cy.get("@todos").should("have.length", 3); - }); - - it("should allow me to display completed items", function () { - cy.get("@todos").eq(1).find(".toggle").check(); - - cy.get(".filters").contains("Completed").click(); - - cy.get("@todos").should("have.length", 1); - }); - - it("should allow me to display all items", function () { - cy.get("@todos").eq(1).find(".toggle").check(); - - cy.get(".filters").contains("Active").click(); - - cy.get(".filters").contains("Completed").click(); - - cy.get(".filters").contains("All").click(); - - cy.get("@todos").should("have.length", 3); - }); - - it("should highlight the currently applied filter", function () { - // using a within here which will automatically scope - // nested 'cy' queries to our parent element - cy.get(".filters").within(function () { - cy.contains("All").should("have.class", "selected"); - cy.contains("Active").click().should("have.class", "selected"); - - cy.contains("Completed").click().should("have.class", "selected"); - }); - }); -}); diff --git a/examples/webapp/cypress/e2e_01/smoke.spec.js b/examples/webapp/cypress/e2e_01/smoke.spec.js deleted file mode 100644 index aceafe1..0000000 --- a/examples/webapp/cypress/e2e_01/smoke.spec.js +++ /dev/null @@ -1,11 +0,0 @@ -// type definitions for Cypress object "cy" -/// - -describe("TodoMVC", function () { - // a very simple example helpful during presentations - it("adds 2 todos", function () { - cy.get(".new-todo").type("learn testing{enter}").type("be cool{enter}"); - - cy.get(".todo-list li").should("have.length", 2); - }); -}); diff --git a/examples/webapp/cypress/e2e_01/todo.no-items.spec.js b/examples/webapp/cypress/e2e_01/todo.no-items.spec.js deleted file mode 100644 index f7044a0..0000000 --- a/examples/webapp/cypress/e2e_01/todo.no-items.spec.js +++ /dev/null @@ -1,13 +0,0 @@ -context("No Todos", function () { - it("should hide #main and #footer", function () { - // Unlike the TodoMVC tests, we don't need to create - // a gazillion helper functions which are difficult to - // parse through. Instead we'll opt to use real selectors - // so as to make our testing intentions as clear as possible. - // - // http://on.cypress.io/get - cy.get(".todo-list li").should("not.exist"); - cy.get('[data-layer="Content"]').should("not.exist"); - cy.get(".footer").should("not.be.visible"); - }); -}); diff --git a/examples/webapp/cypress/e2e_02/clear.spec.js b/examples/webapp/cypress/e2e_02/clear.spec.js deleted file mode 100644 index 95c5e51..0000000 --- a/examples/webapp/cypress/e2e_02/clear.spec.js +++ /dev/null @@ -1,33 +0,0 @@ -let TODO_ITEM_ONE = "buy some cheese"; -let TODO_ITEM_TWO = "feed the cat"; -let TODO_ITEM_THREE = "book a doctors appointment"; - -context("Clear completed button", function () { - beforeEach(function () { - cy.createDefaultTodos().as("todos"); - }); - - it("should display the correct text", function () { - cy.get("@todos").eq(0).find(".toggle").check(); - - cy.get(".clear-completed").contains("Clear completed"); - }); - - it("should remove completed items when clicked", function () { - cy.get("@todos").eq(1).find(".toggle").check(); - - cy.get(".clear-completed").click(); - cy.get("@todos").should("have.length", 2); - cy.get("@todos").eq(0).should("contain", TODO_ITEM_ONE); - - cy.get("@todos").eq(1).should("contain", TODO_ITEM_THREE); - }); - - it("should be hidden when there are no items that are completed", function () { - cy.get("@todos").eq(1).find(".toggle").check(); - - cy.get(".clear-completed").should("be.visible").click(); - - cy.get(".clear-completed").should("not.be.visible"); - }); -}); diff --git a/examples/webapp/cypress/e2e_02/completed.spec.js b/examples/webapp/cypress/e2e_02/completed.spec.js deleted file mode 100644 index 93330f7..0000000 --- a/examples/webapp/cypress/e2e_02/completed.spec.js +++ /dev/null @@ -1,62 +0,0 @@ -context("Mark all as completed", function () { - // New commands used here: - // - cy.check https://on.cypress.io/api/check - // - cy.uncheck https://on.cypress.io/api/uncheck - - beforeEach(function () { - // This is an example of aliasing - // within a hook (beforeEach). - // Aliases will automatically persist - // between hooks and are available - // in your tests below - cy.createDefaultTodos().as("todos"); - }); - - it("should allow me to mark all items as completed", function () { - // complete all todos - // we use 'check' instead of 'click' - // because that indicates our intention much clearer - cy.get(".toggle-all").check(); - - // get each todo li and ensure its class is 'completed' - cy.get("@todos").eq(0).should("have.class", "completed"); - - cy.get("@todos").eq(1).should("have.class", "completed"); - - cy.get("@todos").eq(2).should("have.class", "completed"); - }); - - it("should allow me to clear the complete state of all items", function () { - // check and then immediately uncheck - cy.get(".toggle-all").check().uncheck(); - - cy.get("@todos").eq(0).should("not.have.class", "completed"); - - cy.get("@todos").eq(1).should("not.have.class", "completed"); - - cy.get("@todos").eq(2).should("not.have.class", "completed"); - }); - - it("complete all checkbox should update state when items are completed / cleared", function () { - // alias the .toggle-all for reuse later - cy.get(".toggle-all") - .as("toggleAll") - .check() - // this assertion is silly here IMO but - // it is what TodoMVC does - .should("be.checked"); - - // alias the first todo and then click it - cy.get(".todo-list li").eq(0).as("firstTodo").find(".toggle").uncheck(); - - // reference the .toggle-all element again - // and make sure its not checked - cy.get("@toggleAll").should("not.be.checked"); - - // reference the first todo again and now toggle it - cy.get("@firstTodo").find(".toggle").check(); - - // assert the toggle all is checked again - cy.get("@toggleAll").should("be.checked"); - }); -}); diff --git a/examples/webapp/cypress/e2e_02/counter.spec.js b/examples/webapp/cypress/e2e_02/counter.spec.js deleted file mode 100644 index e1384e5..0000000 --- a/examples/webapp/cypress/e2e_02/counter.spec.js +++ /dev/null @@ -1,12 +0,0 @@ -let TODO_ITEM_ONE = "buy some cheese"; -let TODO_ITEM_TWO = "feed the cat"; -let TODO_ITEM_THREE = "book a doctors appointment"; - -context("Counter", function () { - it("should display the current number of todo items", function () { - cy.createTodo(TODO_ITEM_ONE); - cy.get(".todo-count").contains("1 item left"); - cy.createTodo(TODO_ITEM_TWO); - cy.get(".todo-count").contains("2 items left"); - }); -}); diff --git a/examples/webapp/cypress/e2e_02/edit.spec.js b/examples/webapp/cypress/e2e_02/edit.spec.js deleted file mode 100644 index 8b89162..0000000 --- a/examples/webapp/cypress/e2e_02/edit.spec.js +++ /dev/null @@ -1,74 +0,0 @@ -let TODO_ITEM_ONE = "buy some cheese"; -let TODO_ITEM_TWO = "feed the cat"; -let TODO_ITEM_THREE = "book a doctors appointment"; - -context("Editing", function () { - // New commands used here: - // - cy.blur https://on.cypress.io/api/blur - - beforeEach(function () { - cy.createDefaultTodos().as("todos"); - }); - - it("should hide other controls when editing", function () { - cy.get("@todos").eq(1).as("secondTodo").find("label").dblclick(); - - cy.get("@secondTodo").find(".toggle").should("not.be.visible"); - - cy.get("@secondTodo").find("label").should("not.be.visible"); - }); - - it("should save edits on blur", function () { - cy.get("@todos").eq(1).as("secondTodo").find("label").dblclick(); - - cy.get("@secondTodo") - .find(".edit") - .clear() - .type("buy some sausages") - // we can just send the blur event directly - // to the input instead of having to click - // on another button on the page. though you - // could do that its just more mental work - .blur(); - - cy.get("@todos").eq(0).should("contain", TODO_ITEM_ONE); - - cy.get("@secondTodo").should("contain", "buy some sausages"); - cy.get("@todos").eq(2).should("contain", TODO_ITEM_THREE); - }); - - it("should trim entered text", function () { - cy.get("@todos").eq(1).as("secondTodo").find("label").dblclick(); - - cy.get("@secondTodo") - .find(".edit") - .clear() - .type(" buy some sausages ") - .type("{enter}"); - - cy.get("@todos").eq(0).should("contain", TODO_ITEM_ONE); - - cy.get("@secondTodo").should("contain", "buy some sausages"); - cy.get("@todos").eq(2).should("contain", TODO_ITEM_THREE); - }); - - it("should remove the item if an empty text string was entered", function () { - cy.get("@todos").eq(1).as("secondTodo").find("label").dblclick(); - - cy.get("@secondTodo").find(".edit").clear().type("{enter}"); - - cy.get("@todos").should("have.length", 2); - }); - - it("should cancel edits on escape", function () { - cy.get("@todos").eq(1).as("secondTodo").find("label").dblclick(); - - cy.get("@secondTodo").find(".edit").clear().type("foo{esc}"); - - cy.get("@todos").eq(0).should("contain", TODO_ITEM_ONE); - - cy.get("@todos").eq(1).should("contain", TODO_ITEM_TWO); - - cy.get("@todos").eq(2).should("contain", TODO_ITEM_THREE); - }); -}); diff --git a/examples/webapp/cypress/e2e_02/item.spec.js b/examples/webapp/cypress/e2e_02/item.spec.js deleted file mode 100644 index 560c500..0000000 --- a/examples/webapp/cypress/e2e_02/item.spec.js +++ /dev/null @@ -1,68 +0,0 @@ -let TODO_ITEM_ONE = "buy some cheese"; -let TODO_ITEM_TWO = "feed the cat"; -let TODO_ITEM_THREE = "book a doctors appointment"; - -context("Item", function () { - // New commands used here: - // - cy.clear https://on.cypress.io/api/clear - - it("should allow me to mark items as complete", function () { - // we are aliasing the return value of - // our custom command 'createTodo' - // - // the return value is the
  • in the - cy.createTodo(TODO_ITEM_ONE).as("firstTodo"); - cy.createTodo(TODO_ITEM_TWO).as("secondTodo"); - - cy.get("@firstTodo").find(".toggle").check(); - - cy.get("@firstTodo").should("have.class", "completed"); - - cy.get("@secondTodo").should("not.have.class", "completed"); - cy.get("@secondTodo").find(".toggle").check(); - - cy.get("@firstTodo").should("have.class", "completed"); - cy.get("@secondTodo").should("have.class", "completed"); - }); - - it("should allow me to un-mark items as complete", function () { - cy.createTodo(TODO_ITEM_ONE).as("firstTodo"); - cy.createTodo(TODO_ITEM_TWO).as("secondTodo"); - - cy.get("@firstTodo").find(".toggle").check(); - - cy.get("@firstTodo").should("have.class", "completed"); - cy.get("@secondTodo").should("not.have.class", "completed"); - - cy.get("@firstTodo").find(".toggle").uncheck(); - - cy.get("@firstTodo").should("not.have.class", "completed"); - cy.get("@secondTodo").should("not.have.class", "completed"); - }); - - it("should allow me to edit an item", function () { - cy.createDefaultTodos().as("todos"); - - cy.get("@todos") - .eq(1) - .as("secondTodo") - // TODO: fix this, dblclick should - // have been issued to label - .find("label") - .dblclick(); - - // clear out the inputs current value - // and type a new value - cy.get("@secondTodo") - .find(".edit") - .clear() - .type("buy some sausages") - .type("{enter}"); - - // explicitly assert about the text value - cy.get("@todos").eq(0).should("contain", TODO_ITEM_ONE); - - cy.get("@secondTodo").should("contain", "buy some sausages"); - cy.get("@todos").eq(2).should("contain", TODO_ITEM_THREE); - }); -}); diff --git a/examples/webapp/cypress/e2e_02/new.spec.js b/examples/webapp/cypress/e2e_02/new.spec.js deleted file mode 100644 index 78dc23f..0000000 --- a/examples/webapp/cypress/e2e_02/new.spec.js +++ /dev/null @@ -1,73 +0,0 @@ -let TODO_ITEM_ONE = "buy some cheese"; -let TODO_ITEM_TWO = "feed the cat"; -let TODO_ITEM_THREE = "book a doctors appointment"; - -context("New Todo", function () { - // New commands used here: - // https://on.cypress.io/type - // https://on.cypress.io/eq - // https://on.cypress.io/find - // https://on.cypress.io/contains - // https://on.cypress.io/should - // https://on.cypress.io/as - - it("should allow me to add todo items", function () { - // create 1st todo - cy.get(".new-todo").type(TODO_ITEM_ONE).type("{enter}"); - - // make sure the 1st label contains the 1st todo text - cy.get(".todo-list li") - .eq(0) - .find("label") - .should("contain", TODO_ITEM_ONE); - - // create 2nd todo - cy.get(".new-todo").type(TODO_ITEM_TWO).type("{enter}"); - - // make sure the 2nd label contains the 2nd todo text - cy.get(".todo-list li") - .eq(1) - .find("label") - .should("contain", TODO_ITEM_TWO); - }); - - it("adds items", function () { - // create several todos then check the number of items in the list - cy.get(".new-todo") - .type("todo A{enter}") - .type("todo B{enter}") // we can continue working with same element - .type("todo C{enter}") // and keep adding new items - .type("todo D{enter}"); - - cy.get(".todo-list li").should("have.length", 4); - }); - - it("should clear text input field when an item is added", function () { - cy.get(".new-todo").type(TODO_ITEM_ONE).type("{enter}"); - - cy.get(".new-todo").should("have.text", ""); - }); - - it("should append new items to the bottom of the list", function () { - // this is an example of a custom command - // defined in cypress/support/commands.js - cy.createDefaultTodos().as("todos"); - - // even though the text content is split across - // multiple and elements - // `cy.contains` can verify this correctly - cy.get(".todo-count").contains("3 items left"); - - cy.get("@todos").eq(0).find("label").should("contain", TODO_ITEM_ONE); - - cy.get("@todos").eq(1).find("label").should("contain", TODO_ITEM_TWO); - - cy.get("@todos").eq(2).find("label").should("contain", TODO_ITEM_THREE); - }); - - it("should show #main and #footer when items added", function () { - cy.createTodo(TODO_ITEM_ONE); - cy.get(".main").should("be.visible"); - cy.get(".footer").should("be.visible"); - }); -}); diff --git a/examples/webapp/cypress/e2e_02/persistance.spec.js b/examples/webapp/cypress/e2e_02/persistance.spec.js deleted file mode 100644 index 6313a52..0000000 --- a/examples/webapp/cypress/e2e_02/persistance.spec.js +++ /dev/null @@ -1,29 +0,0 @@ -let TODO_ITEM_ONE = "buy some cheese"; -let TODO_ITEM_TWO = "feed the cat"; -let TODO_ITEM_THREE = "book a doctors appointment"; - -context("Persistence", function () { - it("should persist its data", function () { - // mimicking TodoMVC tests - // by writing out this function - function testState() { - cy.get("@firstTodo") - .should("contain", TODO_ITEM_ONE) - .and("have.class", "completed"); - - cy.get("@secondTodo") - .should("contain", TODO_ITEM_TWO) - .and("not.have.class", "completed"); - } - - cy.createTodo(TODO_ITEM_ONE).as("firstTodo"); - cy.createTodo(TODO_ITEM_TWO).as("secondTodo"); - cy.get("@firstTodo") - .find(".toggle") - .check() - .then(testState) - - .reload() - .then(testState); - }); -}); diff --git a/examples/webapp/cypress/e2e_02/routing.spec.js b/examples/webapp/cypress/e2e_02/routing.spec.js deleted file mode 100644 index 9938908..0000000 --- a/examples/webapp/cypress/e2e_02/routing.spec.js +++ /dev/null @@ -1,69 +0,0 @@ -let TODO_ITEM_ONE = "buy some cheese"; -let TODO_ITEM_TWO = "feed the cat"; -let TODO_ITEM_THREE = "book a doctors appointment"; -context("Routing", function () { - // New commands used here: - // https://on.cypress.io/window - // https://on.cypress.io/its - // https://on.cypress.io/invoke - // https://on.cypress.io/within - - beforeEach(function () { - cy.createDefaultTodos().as("todos"); - }); - - it("should allow me to display active items", function () { - cy.get("@todos").eq(1).find(".toggle").check(); - - cy.get(".filters").contains("Active").click(); - - cy.get("@todos").eq(0).should("contain", TODO_ITEM_ONE); - - cy.get("@todos").eq(1).should("contain", TODO_ITEM_THREE); - }); - - it("should respect the back button", function () { - cy.get("@todos").eq(1).find(".toggle").check(); - - cy.get(".filters").contains("Active").click(); - - cy.get(".filters").contains("Completed").click(); - - cy.get("@todos").should("have.length", 1); - cy.go("back"); - cy.get("@todos").should("have.length", 2); - cy.go("back"); - cy.get("@todos").should("have.length", 3); - }); - - it("should allow me to display completed items", function () { - cy.get("@todos").eq(1).find(".toggle").check(); - - cy.get(".filters").contains("Completed").click(); - - cy.get("@todos").should("have.length", 1); - }); - - it("should allow me to display all items", function () { - cy.get("@todos").eq(1).find(".toggle").check(); - - cy.get(".filters").contains("Active").click(); - - cy.get(".filters").contains("Completed").click(); - - cy.get(".filters").contains("All").click(); - - cy.get("@todos").should("have.length", 3); - }); - - it("should highlight the currently applied filter", function () { - // using a within here which will automatically scope - // nested 'cy' queries to our parent element - cy.get(".filters").within(function () { - cy.contains("All").should("have.class", "selected"); - cy.contains("Active").click().should("have.class", "selected"); - - cy.contains("Completed").click().should("have.class", "selected"); - }); - }); -}); diff --git a/examples/webapp/cypress/e2e_02/smoke.spec.js b/examples/webapp/cypress/e2e_02/smoke.spec.js deleted file mode 100644 index aceafe1..0000000 --- a/examples/webapp/cypress/e2e_02/smoke.spec.js +++ /dev/null @@ -1,11 +0,0 @@ -// type definitions for Cypress object "cy" -/// - -describe("TodoMVC", function () { - // a very simple example helpful during presentations - it("adds 2 todos", function () { - cy.get(".new-todo").type("learn testing{enter}").type("be cool{enter}"); - - cy.get(".todo-list li").should("have.length", 2); - }); -}); diff --git a/examples/webapp/cypress/e2e_02/todo.no-items.spec.js b/examples/webapp/cypress/e2e_02/todo.no-items.spec.js deleted file mode 100644 index f7044a0..0000000 --- a/examples/webapp/cypress/e2e_02/todo.no-items.spec.js +++ /dev/null @@ -1,13 +0,0 @@ -context("No Todos", function () { - it("should hide #main and #footer", function () { - // Unlike the TodoMVC tests, we don't need to create - // a gazillion helper functions which are difficult to - // parse through. Instead we'll opt to use real selectors - // so as to make our testing intentions as clear as possible. - // - // http://on.cypress.io/get - cy.get(".todo-list li").should("not.exist"); - cy.get('[data-layer="Content"]').should("not.exist"); - cy.get(".footer").should("not.be.visible"); - }); -}); diff --git a/examples/webapp/cypress/e2e_03/clear.spec.js b/examples/webapp/cypress/e2e_03/clear.spec.js deleted file mode 100644 index 95c5e51..0000000 --- a/examples/webapp/cypress/e2e_03/clear.spec.js +++ /dev/null @@ -1,33 +0,0 @@ -let TODO_ITEM_ONE = "buy some cheese"; -let TODO_ITEM_TWO = "feed the cat"; -let TODO_ITEM_THREE = "book a doctors appointment"; - -context("Clear completed button", function () { - beforeEach(function () { - cy.createDefaultTodos().as("todos"); - }); - - it("should display the correct text", function () { - cy.get("@todos").eq(0).find(".toggle").check(); - - cy.get(".clear-completed").contains("Clear completed"); - }); - - it("should remove completed items when clicked", function () { - cy.get("@todos").eq(1).find(".toggle").check(); - - cy.get(".clear-completed").click(); - cy.get("@todos").should("have.length", 2); - cy.get("@todos").eq(0).should("contain", TODO_ITEM_ONE); - - cy.get("@todos").eq(1).should("contain", TODO_ITEM_THREE); - }); - - it("should be hidden when there are no items that are completed", function () { - cy.get("@todos").eq(1).find(".toggle").check(); - - cy.get(".clear-completed").should("be.visible").click(); - - cy.get(".clear-completed").should("not.be.visible"); - }); -}); diff --git a/examples/webapp/cypress/e2e_03/completed.spec.js b/examples/webapp/cypress/e2e_03/completed.spec.js deleted file mode 100644 index 93330f7..0000000 --- a/examples/webapp/cypress/e2e_03/completed.spec.js +++ /dev/null @@ -1,62 +0,0 @@ -context("Mark all as completed", function () { - // New commands used here: - // - cy.check https://on.cypress.io/api/check - // - cy.uncheck https://on.cypress.io/api/uncheck - - beforeEach(function () { - // This is an example of aliasing - // within a hook (beforeEach). - // Aliases will automatically persist - // between hooks and are available - // in your tests below - cy.createDefaultTodos().as("todos"); - }); - - it("should allow me to mark all items as completed", function () { - // complete all todos - // we use 'check' instead of 'click' - // because that indicates our intention much clearer - cy.get(".toggle-all").check(); - - // get each todo li and ensure its class is 'completed' - cy.get("@todos").eq(0).should("have.class", "completed"); - - cy.get("@todos").eq(1).should("have.class", "completed"); - - cy.get("@todos").eq(2).should("have.class", "completed"); - }); - - it("should allow me to clear the complete state of all items", function () { - // check and then immediately uncheck - cy.get(".toggle-all").check().uncheck(); - - cy.get("@todos").eq(0).should("not.have.class", "completed"); - - cy.get("@todos").eq(1).should("not.have.class", "completed"); - - cy.get("@todos").eq(2).should("not.have.class", "completed"); - }); - - it("complete all checkbox should update state when items are completed / cleared", function () { - // alias the .toggle-all for reuse later - cy.get(".toggle-all") - .as("toggleAll") - .check() - // this assertion is silly here IMO but - // it is what TodoMVC does - .should("be.checked"); - - // alias the first todo and then click it - cy.get(".todo-list li").eq(0).as("firstTodo").find(".toggle").uncheck(); - - // reference the .toggle-all element again - // and make sure its not checked - cy.get("@toggleAll").should("not.be.checked"); - - // reference the first todo again and now toggle it - cy.get("@firstTodo").find(".toggle").check(); - - // assert the toggle all is checked again - cy.get("@toggleAll").should("be.checked"); - }); -}); diff --git a/examples/webapp/cypress/e2e_03/counter.spec.js b/examples/webapp/cypress/e2e_03/counter.spec.js deleted file mode 100644 index e1384e5..0000000 --- a/examples/webapp/cypress/e2e_03/counter.spec.js +++ /dev/null @@ -1,12 +0,0 @@ -let TODO_ITEM_ONE = "buy some cheese"; -let TODO_ITEM_TWO = "feed the cat"; -let TODO_ITEM_THREE = "book a doctors appointment"; - -context("Counter", function () { - it("should display the current number of todo items", function () { - cy.createTodo(TODO_ITEM_ONE); - cy.get(".todo-count").contains("1 item left"); - cy.createTodo(TODO_ITEM_TWO); - cy.get(".todo-count").contains("2 items left"); - }); -}); diff --git a/examples/webapp/cypress/e2e_03/edit.spec.js b/examples/webapp/cypress/e2e_03/edit.spec.js deleted file mode 100644 index 8b89162..0000000 --- a/examples/webapp/cypress/e2e_03/edit.spec.js +++ /dev/null @@ -1,74 +0,0 @@ -let TODO_ITEM_ONE = "buy some cheese"; -let TODO_ITEM_TWO = "feed the cat"; -let TODO_ITEM_THREE = "book a doctors appointment"; - -context("Editing", function () { - // New commands used here: - // - cy.blur https://on.cypress.io/api/blur - - beforeEach(function () { - cy.createDefaultTodos().as("todos"); - }); - - it("should hide other controls when editing", function () { - cy.get("@todos").eq(1).as("secondTodo").find("label").dblclick(); - - cy.get("@secondTodo").find(".toggle").should("not.be.visible"); - - cy.get("@secondTodo").find("label").should("not.be.visible"); - }); - - it("should save edits on blur", function () { - cy.get("@todos").eq(1).as("secondTodo").find("label").dblclick(); - - cy.get("@secondTodo") - .find(".edit") - .clear() - .type("buy some sausages") - // we can just send the blur event directly - // to the input instead of having to click - // on another button on the page. though you - // could do that its just more mental work - .blur(); - - cy.get("@todos").eq(0).should("contain", TODO_ITEM_ONE); - - cy.get("@secondTodo").should("contain", "buy some sausages"); - cy.get("@todos").eq(2).should("contain", TODO_ITEM_THREE); - }); - - it("should trim entered text", function () { - cy.get("@todos").eq(1).as("secondTodo").find("label").dblclick(); - - cy.get("@secondTodo") - .find(".edit") - .clear() - .type(" buy some sausages ") - .type("{enter}"); - - cy.get("@todos").eq(0).should("contain", TODO_ITEM_ONE); - - cy.get("@secondTodo").should("contain", "buy some sausages"); - cy.get("@todos").eq(2).should("contain", TODO_ITEM_THREE); - }); - - it("should remove the item if an empty text string was entered", function () { - cy.get("@todos").eq(1).as("secondTodo").find("label").dblclick(); - - cy.get("@secondTodo").find(".edit").clear().type("{enter}"); - - cy.get("@todos").should("have.length", 2); - }); - - it("should cancel edits on escape", function () { - cy.get("@todos").eq(1).as("secondTodo").find("label").dblclick(); - - cy.get("@secondTodo").find(".edit").clear().type("foo{esc}"); - - cy.get("@todos").eq(0).should("contain", TODO_ITEM_ONE); - - cy.get("@todos").eq(1).should("contain", TODO_ITEM_TWO); - - cy.get("@todos").eq(2).should("contain", TODO_ITEM_THREE); - }); -}); diff --git a/examples/webapp/cypress/e2e_03/item.spec.js b/examples/webapp/cypress/e2e_03/item.spec.js deleted file mode 100644 index 560c500..0000000 --- a/examples/webapp/cypress/e2e_03/item.spec.js +++ /dev/null @@ -1,68 +0,0 @@ -let TODO_ITEM_ONE = "buy some cheese"; -let TODO_ITEM_TWO = "feed the cat"; -let TODO_ITEM_THREE = "book a doctors appointment"; - -context("Item", function () { - // New commands used here: - // - cy.clear https://on.cypress.io/api/clear - - it("should allow me to mark items as complete", function () { - // we are aliasing the return value of - // our custom command 'createTodo' - // - // the return value is the
  • in the - cy.createTodo(TODO_ITEM_ONE).as("firstTodo"); - cy.createTodo(TODO_ITEM_TWO).as("secondTodo"); - - cy.get("@firstTodo").find(".toggle").check(); - - cy.get("@firstTodo").should("have.class", "completed"); - - cy.get("@secondTodo").should("not.have.class", "completed"); - cy.get("@secondTodo").find(".toggle").check(); - - cy.get("@firstTodo").should("have.class", "completed"); - cy.get("@secondTodo").should("have.class", "completed"); - }); - - it("should allow me to un-mark items as complete", function () { - cy.createTodo(TODO_ITEM_ONE).as("firstTodo"); - cy.createTodo(TODO_ITEM_TWO).as("secondTodo"); - - cy.get("@firstTodo").find(".toggle").check(); - - cy.get("@firstTodo").should("have.class", "completed"); - cy.get("@secondTodo").should("not.have.class", "completed"); - - cy.get("@firstTodo").find(".toggle").uncheck(); - - cy.get("@firstTodo").should("not.have.class", "completed"); - cy.get("@secondTodo").should("not.have.class", "completed"); - }); - - it("should allow me to edit an item", function () { - cy.createDefaultTodos().as("todos"); - - cy.get("@todos") - .eq(1) - .as("secondTodo") - // TODO: fix this, dblclick should - // have been issued to label - .find("label") - .dblclick(); - - // clear out the inputs current value - // and type a new value - cy.get("@secondTodo") - .find(".edit") - .clear() - .type("buy some sausages") - .type("{enter}"); - - // explicitly assert about the text value - cy.get("@todos").eq(0).should("contain", TODO_ITEM_ONE); - - cy.get("@secondTodo").should("contain", "buy some sausages"); - cy.get("@todos").eq(2).should("contain", TODO_ITEM_THREE); - }); -}); diff --git a/examples/webapp/cypress/e2e_03/new.spec.js b/examples/webapp/cypress/e2e_03/new.spec.js deleted file mode 100644 index 78dc23f..0000000 --- a/examples/webapp/cypress/e2e_03/new.spec.js +++ /dev/null @@ -1,73 +0,0 @@ -let TODO_ITEM_ONE = "buy some cheese"; -let TODO_ITEM_TWO = "feed the cat"; -let TODO_ITEM_THREE = "book a doctors appointment"; - -context("New Todo", function () { - // New commands used here: - // https://on.cypress.io/type - // https://on.cypress.io/eq - // https://on.cypress.io/find - // https://on.cypress.io/contains - // https://on.cypress.io/should - // https://on.cypress.io/as - - it("should allow me to add todo items", function () { - // create 1st todo - cy.get(".new-todo").type(TODO_ITEM_ONE).type("{enter}"); - - // make sure the 1st label contains the 1st todo text - cy.get(".todo-list li") - .eq(0) - .find("label") - .should("contain", TODO_ITEM_ONE); - - // create 2nd todo - cy.get(".new-todo").type(TODO_ITEM_TWO).type("{enter}"); - - // make sure the 2nd label contains the 2nd todo text - cy.get(".todo-list li") - .eq(1) - .find("label") - .should("contain", TODO_ITEM_TWO); - }); - - it("adds items", function () { - // create several todos then check the number of items in the list - cy.get(".new-todo") - .type("todo A{enter}") - .type("todo B{enter}") // we can continue working with same element - .type("todo C{enter}") // and keep adding new items - .type("todo D{enter}"); - - cy.get(".todo-list li").should("have.length", 4); - }); - - it("should clear text input field when an item is added", function () { - cy.get(".new-todo").type(TODO_ITEM_ONE).type("{enter}"); - - cy.get(".new-todo").should("have.text", ""); - }); - - it("should append new items to the bottom of the list", function () { - // this is an example of a custom command - // defined in cypress/support/commands.js - cy.createDefaultTodos().as("todos"); - - // even though the text content is split across - // multiple and elements - // `cy.contains` can verify this correctly - cy.get(".todo-count").contains("3 items left"); - - cy.get("@todos").eq(0).find("label").should("contain", TODO_ITEM_ONE); - - cy.get("@todos").eq(1).find("label").should("contain", TODO_ITEM_TWO); - - cy.get("@todos").eq(2).find("label").should("contain", TODO_ITEM_THREE); - }); - - it("should show #main and #footer when items added", function () { - cy.createTodo(TODO_ITEM_ONE); - cy.get(".main").should("be.visible"); - cy.get(".footer").should("be.visible"); - }); -}); diff --git a/examples/webapp/cypress/e2e_03/persistance.spec.js b/examples/webapp/cypress/e2e_03/persistance.spec.js deleted file mode 100644 index 6313a52..0000000 --- a/examples/webapp/cypress/e2e_03/persistance.spec.js +++ /dev/null @@ -1,29 +0,0 @@ -let TODO_ITEM_ONE = "buy some cheese"; -let TODO_ITEM_TWO = "feed the cat"; -let TODO_ITEM_THREE = "book a doctors appointment"; - -context("Persistence", function () { - it("should persist its data", function () { - // mimicking TodoMVC tests - // by writing out this function - function testState() { - cy.get("@firstTodo") - .should("contain", TODO_ITEM_ONE) - .and("have.class", "completed"); - - cy.get("@secondTodo") - .should("contain", TODO_ITEM_TWO) - .and("not.have.class", "completed"); - } - - cy.createTodo(TODO_ITEM_ONE).as("firstTodo"); - cy.createTodo(TODO_ITEM_TWO).as("secondTodo"); - cy.get("@firstTodo") - .find(".toggle") - .check() - .then(testState) - - .reload() - .then(testState); - }); -}); diff --git a/examples/webapp/cypress/e2e_03/routing.spec.js b/examples/webapp/cypress/e2e_03/routing.spec.js deleted file mode 100644 index 9938908..0000000 --- a/examples/webapp/cypress/e2e_03/routing.spec.js +++ /dev/null @@ -1,69 +0,0 @@ -let TODO_ITEM_ONE = "buy some cheese"; -let TODO_ITEM_TWO = "feed the cat"; -let TODO_ITEM_THREE = "book a doctors appointment"; -context("Routing", function () { - // New commands used here: - // https://on.cypress.io/window - // https://on.cypress.io/its - // https://on.cypress.io/invoke - // https://on.cypress.io/within - - beforeEach(function () { - cy.createDefaultTodos().as("todos"); - }); - - it("should allow me to display active items", function () { - cy.get("@todos").eq(1).find(".toggle").check(); - - cy.get(".filters").contains("Active").click(); - - cy.get("@todos").eq(0).should("contain", TODO_ITEM_ONE); - - cy.get("@todos").eq(1).should("contain", TODO_ITEM_THREE); - }); - - it("should respect the back button", function () { - cy.get("@todos").eq(1).find(".toggle").check(); - - cy.get(".filters").contains("Active").click(); - - cy.get(".filters").contains("Completed").click(); - - cy.get("@todos").should("have.length", 1); - cy.go("back"); - cy.get("@todos").should("have.length", 2); - cy.go("back"); - cy.get("@todos").should("have.length", 3); - }); - - it("should allow me to display completed items", function () { - cy.get("@todos").eq(1).find(".toggle").check(); - - cy.get(".filters").contains("Completed").click(); - - cy.get("@todos").should("have.length", 1); - }); - - it("should allow me to display all items", function () { - cy.get("@todos").eq(1).find(".toggle").check(); - - cy.get(".filters").contains("Active").click(); - - cy.get(".filters").contains("Completed").click(); - - cy.get(".filters").contains("All").click(); - - cy.get("@todos").should("have.length", 3); - }); - - it("should highlight the currently applied filter", function () { - // using a within here which will automatically scope - // nested 'cy' queries to our parent element - cy.get(".filters").within(function () { - cy.contains("All").should("have.class", "selected"); - cy.contains("Active").click().should("have.class", "selected"); - - cy.contains("Completed").click().should("have.class", "selected"); - }); - }); -}); diff --git a/examples/webapp/cypress/e2e_03/smoke.spec.js b/examples/webapp/cypress/e2e_03/smoke.spec.js deleted file mode 100644 index aceafe1..0000000 --- a/examples/webapp/cypress/e2e_03/smoke.spec.js +++ /dev/null @@ -1,11 +0,0 @@ -// type definitions for Cypress object "cy" -/// - -describe("TodoMVC", function () { - // a very simple example helpful during presentations - it("adds 2 todos", function () { - cy.get(".new-todo").type("learn testing{enter}").type("be cool{enter}"); - - cy.get(".todo-list li").should("have.length", 2); - }); -}); diff --git a/examples/webapp/cypress/e2e_03/todo.no-items.spec.js b/examples/webapp/cypress/e2e_03/todo.no-items.spec.js deleted file mode 100644 index f7044a0..0000000 --- a/examples/webapp/cypress/e2e_03/todo.no-items.spec.js +++ /dev/null @@ -1,13 +0,0 @@ -context("No Todos", function () { - it("should hide #main and #footer", function () { - // Unlike the TodoMVC tests, we don't need to create - // a gazillion helper functions which are difficult to - // parse through. Instead we'll opt to use real selectors - // so as to make our testing intentions as clear as possible. - // - // http://on.cypress.io/get - cy.get(".todo-list li").should("not.exist"); - cy.get('[data-layer="Content"]').should("not.exist"); - cy.get(".footer").should("not.be.visible"); - }); -}); diff --git a/examples/webapp/cypress/e2e_04/clear.spec.js b/examples/webapp/cypress/e2e_04/clear.spec.js deleted file mode 100644 index 95c5e51..0000000 --- a/examples/webapp/cypress/e2e_04/clear.spec.js +++ /dev/null @@ -1,33 +0,0 @@ -let TODO_ITEM_ONE = "buy some cheese"; -let TODO_ITEM_TWO = "feed the cat"; -let TODO_ITEM_THREE = "book a doctors appointment"; - -context("Clear completed button", function () { - beforeEach(function () { - cy.createDefaultTodos().as("todos"); - }); - - it("should display the correct text", function () { - cy.get("@todos").eq(0).find(".toggle").check(); - - cy.get(".clear-completed").contains("Clear completed"); - }); - - it("should remove completed items when clicked", function () { - cy.get("@todos").eq(1).find(".toggle").check(); - - cy.get(".clear-completed").click(); - cy.get("@todos").should("have.length", 2); - cy.get("@todos").eq(0).should("contain", TODO_ITEM_ONE); - - cy.get("@todos").eq(1).should("contain", TODO_ITEM_THREE); - }); - - it("should be hidden when there are no items that are completed", function () { - cy.get("@todos").eq(1).find(".toggle").check(); - - cy.get(".clear-completed").should("be.visible").click(); - - cy.get(".clear-completed").should("not.be.visible"); - }); -}); diff --git a/examples/webapp/cypress/e2e_04/completed.spec.js b/examples/webapp/cypress/e2e_04/completed.spec.js deleted file mode 100644 index 93330f7..0000000 --- a/examples/webapp/cypress/e2e_04/completed.spec.js +++ /dev/null @@ -1,62 +0,0 @@ -context("Mark all as completed", function () { - // New commands used here: - // - cy.check https://on.cypress.io/api/check - // - cy.uncheck https://on.cypress.io/api/uncheck - - beforeEach(function () { - // This is an example of aliasing - // within a hook (beforeEach). - // Aliases will automatically persist - // between hooks and are available - // in your tests below - cy.createDefaultTodos().as("todos"); - }); - - it("should allow me to mark all items as completed", function () { - // complete all todos - // we use 'check' instead of 'click' - // because that indicates our intention much clearer - cy.get(".toggle-all").check(); - - // get each todo li and ensure its class is 'completed' - cy.get("@todos").eq(0).should("have.class", "completed"); - - cy.get("@todos").eq(1).should("have.class", "completed"); - - cy.get("@todos").eq(2).should("have.class", "completed"); - }); - - it("should allow me to clear the complete state of all items", function () { - // check and then immediately uncheck - cy.get(".toggle-all").check().uncheck(); - - cy.get("@todos").eq(0).should("not.have.class", "completed"); - - cy.get("@todos").eq(1).should("not.have.class", "completed"); - - cy.get("@todos").eq(2).should("not.have.class", "completed"); - }); - - it("complete all checkbox should update state when items are completed / cleared", function () { - // alias the .toggle-all for reuse later - cy.get(".toggle-all") - .as("toggleAll") - .check() - // this assertion is silly here IMO but - // it is what TodoMVC does - .should("be.checked"); - - // alias the first todo and then click it - cy.get(".todo-list li").eq(0).as("firstTodo").find(".toggle").uncheck(); - - // reference the .toggle-all element again - // and make sure its not checked - cy.get("@toggleAll").should("not.be.checked"); - - // reference the first todo again and now toggle it - cy.get("@firstTodo").find(".toggle").check(); - - // assert the toggle all is checked again - cy.get("@toggleAll").should("be.checked"); - }); -}); diff --git a/examples/webapp/cypress/e2e_04/counter.spec.js b/examples/webapp/cypress/e2e_04/counter.spec.js deleted file mode 100644 index e1384e5..0000000 --- a/examples/webapp/cypress/e2e_04/counter.spec.js +++ /dev/null @@ -1,12 +0,0 @@ -let TODO_ITEM_ONE = "buy some cheese"; -let TODO_ITEM_TWO = "feed the cat"; -let TODO_ITEM_THREE = "book a doctors appointment"; - -context("Counter", function () { - it("should display the current number of todo items", function () { - cy.createTodo(TODO_ITEM_ONE); - cy.get(".todo-count").contains("1 item left"); - cy.createTodo(TODO_ITEM_TWO); - cy.get(".todo-count").contains("2 items left"); - }); -}); diff --git a/examples/webapp/cypress/e2e_04/edit.spec.js b/examples/webapp/cypress/e2e_04/edit.spec.js deleted file mode 100644 index 8b89162..0000000 --- a/examples/webapp/cypress/e2e_04/edit.spec.js +++ /dev/null @@ -1,74 +0,0 @@ -let TODO_ITEM_ONE = "buy some cheese"; -let TODO_ITEM_TWO = "feed the cat"; -let TODO_ITEM_THREE = "book a doctors appointment"; - -context("Editing", function () { - // New commands used here: - // - cy.blur https://on.cypress.io/api/blur - - beforeEach(function () { - cy.createDefaultTodos().as("todos"); - }); - - it("should hide other controls when editing", function () { - cy.get("@todos").eq(1).as("secondTodo").find("label").dblclick(); - - cy.get("@secondTodo").find(".toggle").should("not.be.visible"); - - cy.get("@secondTodo").find("label").should("not.be.visible"); - }); - - it("should save edits on blur", function () { - cy.get("@todos").eq(1).as("secondTodo").find("label").dblclick(); - - cy.get("@secondTodo") - .find(".edit") - .clear() - .type("buy some sausages") - // we can just send the blur event directly - // to the input instead of having to click - // on another button on the page. though you - // could do that its just more mental work - .blur(); - - cy.get("@todos").eq(0).should("contain", TODO_ITEM_ONE); - - cy.get("@secondTodo").should("contain", "buy some sausages"); - cy.get("@todos").eq(2).should("contain", TODO_ITEM_THREE); - }); - - it("should trim entered text", function () { - cy.get("@todos").eq(1).as("secondTodo").find("label").dblclick(); - - cy.get("@secondTodo") - .find(".edit") - .clear() - .type(" buy some sausages ") - .type("{enter}"); - - cy.get("@todos").eq(0).should("contain", TODO_ITEM_ONE); - - cy.get("@secondTodo").should("contain", "buy some sausages"); - cy.get("@todos").eq(2).should("contain", TODO_ITEM_THREE); - }); - - it("should remove the item if an empty text string was entered", function () { - cy.get("@todos").eq(1).as("secondTodo").find("label").dblclick(); - - cy.get("@secondTodo").find(".edit").clear().type("{enter}"); - - cy.get("@todos").should("have.length", 2); - }); - - it("should cancel edits on escape", function () { - cy.get("@todos").eq(1).as("secondTodo").find("label").dblclick(); - - cy.get("@secondTodo").find(".edit").clear().type("foo{esc}"); - - cy.get("@todos").eq(0).should("contain", TODO_ITEM_ONE); - - cy.get("@todos").eq(1).should("contain", TODO_ITEM_TWO); - - cy.get("@todos").eq(2).should("contain", TODO_ITEM_THREE); - }); -}); diff --git a/examples/webapp/cypress/e2e_04/item.spec.js b/examples/webapp/cypress/e2e_04/item.spec.js deleted file mode 100644 index 560c500..0000000 --- a/examples/webapp/cypress/e2e_04/item.spec.js +++ /dev/null @@ -1,68 +0,0 @@ -let TODO_ITEM_ONE = "buy some cheese"; -let TODO_ITEM_TWO = "feed the cat"; -let TODO_ITEM_THREE = "book a doctors appointment"; - -context("Item", function () { - // New commands used here: - // - cy.clear https://on.cypress.io/api/clear - - it("should allow me to mark items as complete", function () { - // we are aliasing the return value of - // our custom command 'createTodo' - // - // the return value is the
  • in the - cy.createTodo(TODO_ITEM_ONE).as("firstTodo"); - cy.createTodo(TODO_ITEM_TWO).as("secondTodo"); - - cy.get("@firstTodo").find(".toggle").check(); - - cy.get("@firstTodo").should("have.class", "completed"); - - cy.get("@secondTodo").should("not.have.class", "completed"); - cy.get("@secondTodo").find(".toggle").check(); - - cy.get("@firstTodo").should("have.class", "completed"); - cy.get("@secondTodo").should("have.class", "completed"); - }); - - it("should allow me to un-mark items as complete", function () { - cy.createTodo(TODO_ITEM_ONE).as("firstTodo"); - cy.createTodo(TODO_ITEM_TWO).as("secondTodo"); - - cy.get("@firstTodo").find(".toggle").check(); - - cy.get("@firstTodo").should("have.class", "completed"); - cy.get("@secondTodo").should("not.have.class", "completed"); - - cy.get("@firstTodo").find(".toggle").uncheck(); - - cy.get("@firstTodo").should("not.have.class", "completed"); - cy.get("@secondTodo").should("not.have.class", "completed"); - }); - - it("should allow me to edit an item", function () { - cy.createDefaultTodos().as("todos"); - - cy.get("@todos") - .eq(1) - .as("secondTodo") - // TODO: fix this, dblclick should - // have been issued to label - .find("label") - .dblclick(); - - // clear out the inputs current value - // and type a new value - cy.get("@secondTodo") - .find(".edit") - .clear() - .type("buy some sausages") - .type("{enter}"); - - // explicitly assert about the text value - cy.get("@todos").eq(0).should("contain", TODO_ITEM_ONE); - - cy.get("@secondTodo").should("contain", "buy some sausages"); - cy.get("@todos").eq(2).should("contain", TODO_ITEM_THREE); - }); -}); diff --git a/examples/webapp/cypress/e2e_04/new.spec.js b/examples/webapp/cypress/e2e_04/new.spec.js deleted file mode 100644 index 78dc23f..0000000 --- a/examples/webapp/cypress/e2e_04/new.spec.js +++ /dev/null @@ -1,73 +0,0 @@ -let TODO_ITEM_ONE = "buy some cheese"; -let TODO_ITEM_TWO = "feed the cat"; -let TODO_ITEM_THREE = "book a doctors appointment"; - -context("New Todo", function () { - // New commands used here: - // https://on.cypress.io/type - // https://on.cypress.io/eq - // https://on.cypress.io/find - // https://on.cypress.io/contains - // https://on.cypress.io/should - // https://on.cypress.io/as - - it("should allow me to add todo items", function () { - // create 1st todo - cy.get(".new-todo").type(TODO_ITEM_ONE).type("{enter}"); - - // make sure the 1st label contains the 1st todo text - cy.get(".todo-list li") - .eq(0) - .find("label") - .should("contain", TODO_ITEM_ONE); - - // create 2nd todo - cy.get(".new-todo").type(TODO_ITEM_TWO).type("{enter}"); - - // make sure the 2nd label contains the 2nd todo text - cy.get(".todo-list li") - .eq(1) - .find("label") - .should("contain", TODO_ITEM_TWO); - }); - - it("adds items", function () { - // create several todos then check the number of items in the list - cy.get(".new-todo") - .type("todo A{enter}") - .type("todo B{enter}") // we can continue working with same element - .type("todo C{enter}") // and keep adding new items - .type("todo D{enter}"); - - cy.get(".todo-list li").should("have.length", 4); - }); - - it("should clear text input field when an item is added", function () { - cy.get(".new-todo").type(TODO_ITEM_ONE).type("{enter}"); - - cy.get(".new-todo").should("have.text", ""); - }); - - it("should append new items to the bottom of the list", function () { - // this is an example of a custom command - // defined in cypress/support/commands.js - cy.createDefaultTodos().as("todos"); - - // even though the text content is split across - // multiple and elements - // `cy.contains` can verify this correctly - cy.get(".todo-count").contains("3 items left"); - - cy.get("@todos").eq(0).find("label").should("contain", TODO_ITEM_ONE); - - cy.get("@todos").eq(1).find("label").should("contain", TODO_ITEM_TWO); - - cy.get("@todos").eq(2).find("label").should("contain", TODO_ITEM_THREE); - }); - - it("should show #main and #footer when items added", function () { - cy.createTodo(TODO_ITEM_ONE); - cy.get(".main").should("be.visible"); - cy.get(".footer").should("be.visible"); - }); -}); diff --git a/examples/webapp/cypress/e2e_04/persistance.spec.js b/examples/webapp/cypress/e2e_04/persistance.spec.js deleted file mode 100644 index 6313a52..0000000 --- a/examples/webapp/cypress/e2e_04/persistance.spec.js +++ /dev/null @@ -1,29 +0,0 @@ -let TODO_ITEM_ONE = "buy some cheese"; -let TODO_ITEM_TWO = "feed the cat"; -let TODO_ITEM_THREE = "book a doctors appointment"; - -context("Persistence", function () { - it("should persist its data", function () { - // mimicking TodoMVC tests - // by writing out this function - function testState() { - cy.get("@firstTodo") - .should("contain", TODO_ITEM_ONE) - .and("have.class", "completed"); - - cy.get("@secondTodo") - .should("contain", TODO_ITEM_TWO) - .and("not.have.class", "completed"); - } - - cy.createTodo(TODO_ITEM_ONE).as("firstTodo"); - cy.createTodo(TODO_ITEM_TWO).as("secondTodo"); - cy.get("@firstTodo") - .find(".toggle") - .check() - .then(testState) - - .reload() - .then(testState); - }); -}); diff --git a/examples/webapp/cypress/e2e_04/routing.spec.js b/examples/webapp/cypress/e2e_04/routing.spec.js deleted file mode 100644 index 9938908..0000000 --- a/examples/webapp/cypress/e2e_04/routing.spec.js +++ /dev/null @@ -1,69 +0,0 @@ -let TODO_ITEM_ONE = "buy some cheese"; -let TODO_ITEM_TWO = "feed the cat"; -let TODO_ITEM_THREE = "book a doctors appointment"; -context("Routing", function () { - // New commands used here: - // https://on.cypress.io/window - // https://on.cypress.io/its - // https://on.cypress.io/invoke - // https://on.cypress.io/within - - beforeEach(function () { - cy.createDefaultTodos().as("todos"); - }); - - it("should allow me to display active items", function () { - cy.get("@todos").eq(1).find(".toggle").check(); - - cy.get(".filters").contains("Active").click(); - - cy.get("@todos").eq(0).should("contain", TODO_ITEM_ONE); - - cy.get("@todos").eq(1).should("contain", TODO_ITEM_THREE); - }); - - it("should respect the back button", function () { - cy.get("@todos").eq(1).find(".toggle").check(); - - cy.get(".filters").contains("Active").click(); - - cy.get(".filters").contains("Completed").click(); - - cy.get("@todos").should("have.length", 1); - cy.go("back"); - cy.get("@todos").should("have.length", 2); - cy.go("back"); - cy.get("@todos").should("have.length", 3); - }); - - it("should allow me to display completed items", function () { - cy.get("@todos").eq(1).find(".toggle").check(); - - cy.get(".filters").contains("Completed").click(); - - cy.get("@todos").should("have.length", 1); - }); - - it("should allow me to display all items", function () { - cy.get("@todos").eq(1).find(".toggle").check(); - - cy.get(".filters").contains("Active").click(); - - cy.get(".filters").contains("Completed").click(); - - cy.get(".filters").contains("All").click(); - - cy.get("@todos").should("have.length", 3); - }); - - it("should highlight the currently applied filter", function () { - // using a within here which will automatically scope - // nested 'cy' queries to our parent element - cy.get(".filters").within(function () { - cy.contains("All").should("have.class", "selected"); - cy.contains("Active").click().should("have.class", "selected"); - - cy.contains("Completed").click().should("have.class", "selected"); - }); - }); -}); diff --git a/examples/webapp/cypress/e2e_04/smoke.spec.js b/examples/webapp/cypress/e2e_04/smoke.spec.js deleted file mode 100644 index aceafe1..0000000 --- a/examples/webapp/cypress/e2e_04/smoke.spec.js +++ /dev/null @@ -1,11 +0,0 @@ -// type definitions for Cypress object "cy" -/// - -describe("TodoMVC", function () { - // a very simple example helpful during presentations - it("adds 2 todos", function () { - cy.get(".new-todo").type("learn testing{enter}").type("be cool{enter}"); - - cy.get(".todo-list li").should("have.length", 2); - }); -}); diff --git a/examples/webapp/cypress/e2e_04/todo.no-items.spec.js b/examples/webapp/cypress/e2e_04/todo.no-items.spec.js deleted file mode 100644 index f7044a0..0000000 --- a/examples/webapp/cypress/e2e_04/todo.no-items.spec.js +++ /dev/null @@ -1,13 +0,0 @@ -context("No Todos", function () { - it("should hide #main and #footer", function () { - // Unlike the TodoMVC tests, we don't need to create - // a gazillion helper functions which are difficult to - // parse through. Instead we'll opt to use real selectors - // so as to make our testing intentions as clear as possible. - // - // http://on.cypress.io/get - cy.get(".todo-list li").should("not.exist"); - cy.get('[data-layer="Content"]').should("not.exist"); - cy.get(".footer").should("not.be.visible"); - }); -}); diff --git a/examples/webapp/cypress/e2e_05/clear.spec.js b/examples/webapp/cypress/e2e_05/clear.spec.js deleted file mode 100644 index 95c5e51..0000000 --- a/examples/webapp/cypress/e2e_05/clear.spec.js +++ /dev/null @@ -1,33 +0,0 @@ -let TODO_ITEM_ONE = "buy some cheese"; -let TODO_ITEM_TWO = "feed the cat"; -let TODO_ITEM_THREE = "book a doctors appointment"; - -context("Clear completed button", function () { - beforeEach(function () { - cy.createDefaultTodos().as("todos"); - }); - - it("should display the correct text", function () { - cy.get("@todos").eq(0).find(".toggle").check(); - - cy.get(".clear-completed").contains("Clear completed"); - }); - - it("should remove completed items when clicked", function () { - cy.get("@todos").eq(1).find(".toggle").check(); - - cy.get(".clear-completed").click(); - cy.get("@todos").should("have.length", 2); - cy.get("@todos").eq(0).should("contain", TODO_ITEM_ONE); - - cy.get("@todos").eq(1).should("contain", TODO_ITEM_THREE); - }); - - it("should be hidden when there are no items that are completed", function () { - cy.get("@todos").eq(1).find(".toggle").check(); - - cy.get(".clear-completed").should("be.visible").click(); - - cy.get(".clear-completed").should("not.be.visible"); - }); -}); diff --git a/examples/webapp/cypress/e2e_05/completed.spec.js b/examples/webapp/cypress/e2e_05/completed.spec.js deleted file mode 100644 index 93330f7..0000000 --- a/examples/webapp/cypress/e2e_05/completed.spec.js +++ /dev/null @@ -1,62 +0,0 @@ -context("Mark all as completed", function () { - // New commands used here: - // - cy.check https://on.cypress.io/api/check - // - cy.uncheck https://on.cypress.io/api/uncheck - - beforeEach(function () { - // This is an example of aliasing - // within a hook (beforeEach). - // Aliases will automatically persist - // between hooks and are available - // in your tests below - cy.createDefaultTodos().as("todos"); - }); - - it("should allow me to mark all items as completed", function () { - // complete all todos - // we use 'check' instead of 'click' - // because that indicates our intention much clearer - cy.get(".toggle-all").check(); - - // get each todo li and ensure its class is 'completed' - cy.get("@todos").eq(0).should("have.class", "completed"); - - cy.get("@todos").eq(1).should("have.class", "completed"); - - cy.get("@todos").eq(2).should("have.class", "completed"); - }); - - it("should allow me to clear the complete state of all items", function () { - // check and then immediately uncheck - cy.get(".toggle-all").check().uncheck(); - - cy.get("@todos").eq(0).should("not.have.class", "completed"); - - cy.get("@todos").eq(1).should("not.have.class", "completed"); - - cy.get("@todos").eq(2).should("not.have.class", "completed"); - }); - - it("complete all checkbox should update state when items are completed / cleared", function () { - // alias the .toggle-all for reuse later - cy.get(".toggle-all") - .as("toggleAll") - .check() - // this assertion is silly here IMO but - // it is what TodoMVC does - .should("be.checked"); - - // alias the first todo and then click it - cy.get(".todo-list li").eq(0).as("firstTodo").find(".toggle").uncheck(); - - // reference the .toggle-all element again - // and make sure its not checked - cy.get("@toggleAll").should("not.be.checked"); - - // reference the first todo again and now toggle it - cy.get("@firstTodo").find(".toggle").check(); - - // assert the toggle all is checked again - cy.get("@toggleAll").should("be.checked"); - }); -}); diff --git a/examples/webapp/cypress/e2e_05/counter.spec.js b/examples/webapp/cypress/e2e_05/counter.spec.js deleted file mode 100644 index e1384e5..0000000 --- a/examples/webapp/cypress/e2e_05/counter.spec.js +++ /dev/null @@ -1,12 +0,0 @@ -let TODO_ITEM_ONE = "buy some cheese"; -let TODO_ITEM_TWO = "feed the cat"; -let TODO_ITEM_THREE = "book a doctors appointment"; - -context("Counter", function () { - it("should display the current number of todo items", function () { - cy.createTodo(TODO_ITEM_ONE); - cy.get(".todo-count").contains("1 item left"); - cy.createTodo(TODO_ITEM_TWO); - cy.get(".todo-count").contains("2 items left"); - }); -}); diff --git a/examples/webapp/cypress/e2e_05/edit.spec.js b/examples/webapp/cypress/e2e_05/edit.spec.js deleted file mode 100644 index 8b89162..0000000 --- a/examples/webapp/cypress/e2e_05/edit.spec.js +++ /dev/null @@ -1,74 +0,0 @@ -let TODO_ITEM_ONE = "buy some cheese"; -let TODO_ITEM_TWO = "feed the cat"; -let TODO_ITEM_THREE = "book a doctors appointment"; - -context("Editing", function () { - // New commands used here: - // - cy.blur https://on.cypress.io/api/blur - - beforeEach(function () { - cy.createDefaultTodos().as("todos"); - }); - - it("should hide other controls when editing", function () { - cy.get("@todos").eq(1).as("secondTodo").find("label").dblclick(); - - cy.get("@secondTodo").find(".toggle").should("not.be.visible"); - - cy.get("@secondTodo").find("label").should("not.be.visible"); - }); - - it("should save edits on blur", function () { - cy.get("@todos").eq(1).as("secondTodo").find("label").dblclick(); - - cy.get("@secondTodo") - .find(".edit") - .clear() - .type("buy some sausages") - // we can just send the blur event directly - // to the input instead of having to click - // on another button on the page. though you - // could do that its just more mental work - .blur(); - - cy.get("@todos").eq(0).should("contain", TODO_ITEM_ONE); - - cy.get("@secondTodo").should("contain", "buy some sausages"); - cy.get("@todos").eq(2).should("contain", TODO_ITEM_THREE); - }); - - it("should trim entered text", function () { - cy.get("@todos").eq(1).as("secondTodo").find("label").dblclick(); - - cy.get("@secondTodo") - .find(".edit") - .clear() - .type(" buy some sausages ") - .type("{enter}"); - - cy.get("@todos").eq(0).should("contain", TODO_ITEM_ONE); - - cy.get("@secondTodo").should("contain", "buy some sausages"); - cy.get("@todos").eq(2).should("contain", TODO_ITEM_THREE); - }); - - it("should remove the item if an empty text string was entered", function () { - cy.get("@todos").eq(1).as("secondTodo").find("label").dblclick(); - - cy.get("@secondTodo").find(".edit").clear().type("{enter}"); - - cy.get("@todos").should("have.length", 2); - }); - - it("should cancel edits on escape", function () { - cy.get("@todos").eq(1).as("secondTodo").find("label").dblclick(); - - cy.get("@secondTodo").find(".edit").clear().type("foo{esc}"); - - cy.get("@todos").eq(0).should("contain", TODO_ITEM_ONE); - - cy.get("@todos").eq(1).should("contain", TODO_ITEM_TWO); - - cy.get("@todos").eq(2).should("contain", TODO_ITEM_THREE); - }); -}); diff --git a/examples/webapp/cypress/e2e_05/item.spec.js b/examples/webapp/cypress/e2e_05/item.spec.js deleted file mode 100644 index 560c500..0000000 --- a/examples/webapp/cypress/e2e_05/item.spec.js +++ /dev/null @@ -1,68 +0,0 @@ -let TODO_ITEM_ONE = "buy some cheese"; -let TODO_ITEM_TWO = "feed the cat"; -let TODO_ITEM_THREE = "book a doctors appointment"; - -context("Item", function () { - // New commands used here: - // - cy.clear https://on.cypress.io/api/clear - - it("should allow me to mark items as complete", function () { - // we are aliasing the return value of - // our custom command 'createTodo' - // - // the return value is the
  • in the - cy.createTodo(TODO_ITEM_ONE).as("firstTodo"); - cy.createTodo(TODO_ITEM_TWO).as("secondTodo"); - - cy.get("@firstTodo").find(".toggle").check(); - - cy.get("@firstTodo").should("have.class", "completed"); - - cy.get("@secondTodo").should("not.have.class", "completed"); - cy.get("@secondTodo").find(".toggle").check(); - - cy.get("@firstTodo").should("have.class", "completed"); - cy.get("@secondTodo").should("have.class", "completed"); - }); - - it("should allow me to un-mark items as complete", function () { - cy.createTodo(TODO_ITEM_ONE).as("firstTodo"); - cy.createTodo(TODO_ITEM_TWO).as("secondTodo"); - - cy.get("@firstTodo").find(".toggle").check(); - - cy.get("@firstTodo").should("have.class", "completed"); - cy.get("@secondTodo").should("not.have.class", "completed"); - - cy.get("@firstTodo").find(".toggle").uncheck(); - - cy.get("@firstTodo").should("not.have.class", "completed"); - cy.get("@secondTodo").should("not.have.class", "completed"); - }); - - it("should allow me to edit an item", function () { - cy.createDefaultTodos().as("todos"); - - cy.get("@todos") - .eq(1) - .as("secondTodo") - // TODO: fix this, dblclick should - // have been issued to label - .find("label") - .dblclick(); - - // clear out the inputs current value - // and type a new value - cy.get("@secondTodo") - .find(".edit") - .clear() - .type("buy some sausages") - .type("{enter}"); - - // explicitly assert about the text value - cy.get("@todos").eq(0).should("contain", TODO_ITEM_ONE); - - cy.get("@secondTodo").should("contain", "buy some sausages"); - cy.get("@todos").eq(2).should("contain", TODO_ITEM_THREE); - }); -}); diff --git a/examples/webapp/cypress/e2e_05/new.spec.js b/examples/webapp/cypress/e2e_05/new.spec.js deleted file mode 100644 index 78dc23f..0000000 --- a/examples/webapp/cypress/e2e_05/new.spec.js +++ /dev/null @@ -1,73 +0,0 @@ -let TODO_ITEM_ONE = "buy some cheese"; -let TODO_ITEM_TWO = "feed the cat"; -let TODO_ITEM_THREE = "book a doctors appointment"; - -context("New Todo", function () { - // New commands used here: - // https://on.cypress.io/type - // https://on.cypress.io/eq - // https://on.cypress.io/find - // https://on.cypress.io/contains - // https://on.cypress.io/should - // https://on.cypress.io/as - - it("should allow me to add todo items", function () { - // create 1st todo - cy.get(".new-todo").type(TODO_ITEM_ONE).type("{enter}"); - - // make sure the 1st label contains the 1st todo text - cy.get(".todo-list li") - .eq(0) - .find("label") - .should("contain", TODO_ITEM_ONE); - - // create 2nd todo - cy.get(".new-todo").type(TODO_ITEM_TWO).type("{enter}"); - - // make sure the 2nd label contains the 2nd todo text - cy.get(".todo-list li") - .eq(1) - .find("label") - .should("contain", TODO_ITEM_TWO); - }); - - it("adds items", function () { - // create several todos then check the number of items in the list - cy.get(".new-todo") - .type("todo A{enter}") - .type("todo B{enter}") // we can continue working with same element - .type("todo C{enter}") // and keep adding new items - .type("todo D{enter}"); - - cy.get(".todo-list li").should("have.length", 4); - }); - - it("should clear text input field when an item is added", function () { - cy.get(".new-todo").type(TODO_ITEM_ONE).type("{enter}"); - - cy.get(".new-todo").should("have.text", ""); - }); - - it("should append new items to the bottom of the list", function () { - // this is an example of a custom command - // defined in cypress/support/commands.js - cy.createDefaultTodos().as("todos"); - - // even though the text content is split across - // multiple and elements - // `cy.contains` can verify this correctly - cy.get(".todo-count").contains("3 items left"); - - cy.get("@todos").eq(0).find("label").should("contain", TODO_ITEM_ONE); - - cy.get("@todos").eq(1).find("label").should("contain", TODO_ITEM_TWO); - - cy.get("@todos").eq(2).find("label").should("contain", TODO_ITEM_THREE); - }); - - it("should show #main and #footer when items added", function () { - cy.createTodo(TODO_ITEM_ONE); - cy.get(".main").should("be.visible"); - cy.get(".footer").should("be.visible"); - }); -}); diff --git a/examples/webapp/cypress/e2e_05/persistance.spec.js b/examples/webapp/cypress/e2e_05/persistance.spec.js deleted file mode 100644 index 6313a52..0000000 --- a/examples/webapp/cypress/e2e_05/persistance.spec.js +++ /dev/null @@ -1,29 +0,0 @@ -let TODO_ITEM_ONE = "buy some cheese"; -let TODO_ITEM_TWO = "feed the cat"; -let TODO_ITEM_THREE = "book a doctors appointment"; - -context("Persistence", function () { - it("should persist its data", function () { - // mimicking TodoMVC tests - // by writing out this function - function testState() { - cy.get("@firstTodo") - .should("contain", TODO_ITEM_ONE) - .and("have.class", "completed"); - - cy.get("@secondTodo") - .should("contain", TODO_ITEM_TWO) - .and("not.have.class", "completed"); - } - - cy.createTodo(TODO_ITEM_ONE).as("firstTodo"); - cy.createTodo(TODO_ITEM_TWO).as("secondTodo"); - cy.get("@firstTodo") - .find(".toggle") - .check() - .then(testState) - - .reload() - .then(testState); - }); -}); diff --git a/examples/webapp/cypress/e2e_05/routing.spec.js b/examples/webapp/cypress/e2e_05/routing.spec.js deleted file mode 100644 index 9938908..0000000 --- a/examples/webapp/cypress/e2e_05/routing.spec.js +++ /dev/null @@ -1,69 +0,0 @@ -let TODO_ITEM_ONE = "buy some cheese"; -let TODO_ITEM_TWO = "feed the cat"; -let TODO_ITEM_THREE = "book a doctors appointment"; -context("Routing", function () { - // New commands used here: - // https://on.cypress.io/window - // https://on.cypress.io/its - // https://on.cypress.io/invoke - // https://on.cypress.io/within - - beforeEach(function () { - cy.createDefaultTodos().as("todos"); - }); - - it("should allow me to display active items", function () { - cy.get("@todos").eq(1).find(".toggle").check(); - - cy.get(".filters").contains("Active").click(); - - cy.get("@todos").eq(0).should("contain", TODO_ITEM_ONE); - - cy.get("@todos").eq(1).should("contain", TODO_ITEM_THREE); - }); - - it("should respect the back button", function () { - cy.get("@todos").eq(1).find(".toggle").check(); - - cy.get(".filters").contains("Active").click(); - - cy.get(".filters").contains("Completed").click(); - - cy.get("@todos").should("have.length", 1); - cy.go("back"); - cy.get("@todos").should("have.length", 2); - cy.go("back"); - cy.get("@todos").should("have.length", 3); - }); - - it("should allow me to display completed items", function () { - cy.get("@todos").eq(1).find(".toggle").check(); - - cy.get(".filters").contains("Completed").click(); - - cy.get("@todos").should("have.length", 1); - }); - - it("should allow me to display all items", function () { - cy.get("@todos").eq(1).find(".toggle").check(); - - cy.get(".filters").contains("Active").click(); - - cy.get(".filters").contains("Completed").click(); - - cy.get(".filters").contains("All").click(); - - cy.get("@todos").should("have.length", 3); - }); - - it("should highlight the currently applied filter", function () { - // using a within here which will automatically scope - // nested 'cy' queries to our parent element - cy.get(".filters").within(function () { - cy.contains("All").should("have.class", "selected"); - cy.contains("Active").click().should("have.class", "selected"); - - cy.contains("Completed").click().should("have.class", "selected"); - }); - }); -}); diff --git a/examples/webapp/cypress/e2e_05/smoke.spec.js b/examples/webapp/cypress/e2e_05/smoke.spec.js deleted file mode 100644 index aceafe1..0000000 --- a/examples/webapp/cypress/e2e_05/smoke.spec.js +++ /dev/null @@ -1,11 +0,0 @@ -// type definitions for Cypress object "cy" -/// - -describe("TodoMVC", function () { - // a very simple example helpful during presentations - it("adds 2 todos", function () { - cy.get(".new-todo").type("learn testing{enter}").type("be cool{enter}"); - - cy.get(".todo-list li").should("have.length", 2); - }); -}); diff --git a/examples/webapp/cypress/e2e_05/todo.no-items.spec.js b/examples/webapp/cypress/e2e_05/todo.no-items.spec.js deleted file mode 100644 index f7044a0..0000000 --- a/examples/webapp/cypress/e2e_05/todo.no-items.spec.js +++ /dev/null @@ -1,13 +0,0 @@ -context("No Todos", function () { - it("should hide #main and #footer", function () { - // Unlike the TodoMVC tests, we don't need to create - // a gazillion helper functions which are difficult to - // parse through. Instead we'll opt to use real selectors - // so as to make our testing intentions as clear as possible. - // - // http://on.cypress.io/get - cy.get(".todo-list li").should("not.exist"); - cy.get('[data-layer="Content"]').should("not.exist"); - cy.get(".footer").should("not.be.visible"); - }); -}); diff --git a/examples/webapp/cypress/e2e_06/clear.spec.js b/examples/webapp/cypress/e2e_06/clear.spec.js deleted file mode 100644 index 95c5e51..0000000 --- a/examples/webapp/cypress/e2e_06/clear.spec.js +++ /dev/null @@ -1,33 +0,0 @@ -let TODO_ITEM_ONE = "buy some cheese"; -let TODO_ITEM_TWO = "feed the cat"; -let TODO_ITEM_THREE = "book a doctors appointment"; - -context("Clear completed button", function () { - beforeEach(function () { - cy.createDefaultTodos().as("todos"); - }); - - it("should display the correct text", function () { - cy.get("@todos").eq(0).find(".toggle").check(); - - cy.get(".clear-completed").contains("Clear completed"); - }); - - it("should remove completed items when clicked", function () { - cy.get("@todos").eq(1).find(".toggle").check(); - - cy.get(".clear-completed").click(); - cy.get("@todos").should("have.length", 2); - cy.get("@todos").eq(0).should("contain", TODO_ITEM_ONE); - - cy.get("@todos").eq(1).should("contain", TODO_ITEM_THREE); - }); - - it("should be hidden when there are no items that are completed", function () { - cy.get("@todos").eq(1).find(".toggle").check(); - - cy.get(".clear-completed").should("be.visible").click(); - - cy.get(".clear-completed").should("not.be.visible"); - }); -}); diff --git a/examples/webapp/cypress/e2e_06/completed.spec.js b/examples/webapp/cypress/e2e_06/completed.spec.js deleted file mode 100644 index 93330f7..0000000 --- a/examples/webapp/cypress/e2e_06/completed.spec.js +++ /dev/null @@ -1,62 +0,0 @@ -context("Mark all as completed", function () { - // New commands used here: - // - cy.check https://on.cypress.io/api/check - // - cy.uncheck https://on.cypress.io/api/uncheck - - beforeEach(function () { - // This is an example of aliasing - // within a hook (beforeEach). - // Aliases will automatically persist - // between hooks and are available - // in your tests below - cy.createDefaultTodos().as("todos"); - }); - - it("should allow me to mark all items as completed", function () { - // complete all todos - // we use 'check' instead of 'click' - // because that indicates our intention much clearer - cy.get(".toggle-all").check(); - - // get each todo li and ensure its class is 'completed' - cy.get("@todos").eq(0).should("have.class", "completed"); - - cy.get("@todos").eq(1).should("have.class", "completed"); - - cy.get("@todos").eq(2).should("have.class", "completed"); - }); - - it("should allow me to clear the complete state of all items", function () { - // check and then immediately uncheck - cy.get(".toggle-all").check().uncheck(); - - cy.get("@todos").eq(0).should("not.have.class", "completed"); - - cy.get("@todos").eq(1).should("not.have.class", "completed"); - - cy.get("@todos").eq(2).should("not.have.class", "completed"); - }); - - it("complete all checkbox should update state when items are completed / cleared", function () { - // alias the .toggle-all for reuse later - cy.get(".toggle-all") - .as("toggleAll") - .check() - // this assertion is silly here IMO but - // it is what TodoMVC does - .should("be.checked"); - - // alias the first todo and then click it - cy.get(".todo-list li").eq(0).as("firstTodo").find(".toggle").uncheck(); - - // reference the .toggle-all element again - // and make sure its not checked - cy.get("@toggleAll").should("not.be.checked"); - - // reference the first todo again and now toggle it - cy.get("@firstTodo").find(".toggle").check(); - - // assert the toggle all is checked again - cy.get("@toggleAll").should("be.checked"); - }); -}); diff --git a/examples/webapp/cypress/e2e_06/counter.spec.js b/examples/webapp/cypress/e2e_06/counter.spec.js deleted file mode 100644 index e1384e5..0000000 --- a/examples/webapp/cypress/e2e_06/counter.spec.js +++ /dev/null @@ -1,12 +0,0 @@ -let TODO_ITEM_ONE = "buy some cheese"; -let TODO_ITEM_TWO = "feed the cat"; -let TODO_ITEM_THREE = "book a doctors appointment"; - -context("Counter", function () { - it("should display the current number of todo items", function () { - cy.createTodo(TODO_ITEM_ONE); - cy.get(".todo-count").contains("1 item left"); - cy.createTodo(TODO_ITEM_TWO); - cy.get(".todo-count").contains("2 items left"); - }); -}); diff --git a/examples/webapp/cypress/e2e_06/edit.spec.js b/examples/webapp/cypress/e2e_06/edit.spec.js deleted file mode 100644 index 8b89162..0000000 --- a/examples/webapp/cypress/e2e_06/edit.spec.js +++ /dev/null @@ -1,74 +0,0 @@ -let TODO_ITEM_ONE = "buy some cheese"; -let TODO_ITEM_TWO = "feed the cat"; -let TODO_ITEM_THREE = "book a doctors appointment"; - -context("Editing", function () { - // New commands used here: - // - cy.blur https://on.cypress.io/api/blur - - beforeEach(function () { - cy.createDefaultTodos().as("todos"); - }); - - it("should hide other controls when editing", function () { - cy.get("@todos").eq(1).as("secondTodo").find("label").dblclick(); - - cy.get("@secondTodo").find(".toggle").should("not.be.visible"); - - cy.get("@secondTodo").find("label").should("not.be.visible"); - }); - - it("should save edits on blur", function () { - cy.get("@todos").eq(1).as("secondTodo").find("label").dblclick(); - - cy.get("@secondTodo") - .find(".edit") - .clear() - .type("buy some sausages") - // we can just send the blur event directly - // to the input instead of having to click - // on another button on the page. though you - // could do that its just more mental work - .blur(); - - cy.get("@todos").eq(0).should("contain", TODO_ITEM_ONE); - - cy.get("@secondTodo").should("contain", "buy some sausages"); - cy.get("@todos").eq(2).should("contain", TODO_ITEM_THREE); - }); - - it("should trim entered text", function () { - cy.get("@todos").eq(1).as("secondTodo").find("label").dblclick(); - - cy.get("@secondTodo") - .find(".edit") - .clear() - .type(" buy some sausages ") - .type("{enter}"); - - cy.get("@todos").eq(0).should("contain", TODO_ITEM_ONE); - - cy.get("@secondTodo").should("contain", "buy some sausages"); - cy.get("@todos").eq(2).should("contain", TODO_ITEM_THREE); - }); - - it("should remove the item if an empty text string was entered", function () { - cy.get("@todos").eq(1).as("secondTodo").find("label").dblclick(); - - cy.get("@secondTodo").find(".edit").clear().type("{enter}"); - - cy.get("@todos").should("have.length", 2); - }); - - it("should cancel edits on escape", function () { - cy.get("@todos").eq(1).as("secondTodo").find("label").dblclick(); - - cy.get("@secondTodo").find(".edit").clear().type("foo{esc}"); - - cy.get("@todos").eq(0).should("contain", TODO_ITEM_ONE); - - cy.get("@todos").eq(1).should("contain", TODO_ITEM_TWO); - - cy.get("@todos").eq(2).should("contain", TODO_ITEM_THREE); - }); -}); diff --git a/examples/webapp/cypress/e2e_06/item.spec.js b/examples/webapp/cypress/e2e_06/item.spec.js deleted file mode 100644 index 560c500..0000000 --- a/examples/webapp/cypress/e2e_06/item.spec.js +++ /dev/null @@ -1,68 +0,0 @@ -let TODO_ITEM_ONE = "buy some cheese"; -let TODO_ITEM_TWO = "feed the cat"; -let TODO_ITEM_THREE = "book a doctors appointment"; - -context("Item", function () { - // New commands used here: - // - cy.clear https://on.cypress.io/api/clear - - it("should allow me to mark items as complete", function () { - // we are aliasing the return value of - // our custom command 'createTodo' - // - // the return value is the
  • in the - cy.createTodo(TODO_ITEM_ONE).as("firstTodo"); - cy.createTodo(TODO_ITEM_TWO).as("secondTodo"); - - cy.get("@firstTodo").find(".toggle").check(); - - cy.get("@firstTodo").should("have.class", "completed"); - - cy.get("@secondTodo").should("not.have.class", "completed"); - cy.get("@secondTodo").find(".toggle").check(); - - cy.get("@firstTodo").should("have.class", "completed"); - cy.get("@secondTodo").should("have.class", "completed"); - }); - - it("should allow me to un-mark items as complete", function () { - cy.createTodo(TODO_ITEM_ONE).as("firstTodo"); - cy.createTodo(TODO_ITEM_TWO).as("secondTodo"); - - cy.get("@firstTodo").find(".toggle").check(); - - cy.get("@firstTodo").should("have.class", "completed"); - cy.get("@secondTodo").should("not.have.class", "completed"); - - cy.get("@firstTodo").find(".toggle").uncheck(); - - cy.get("@firstTodo").should("not.have.class", "completed"); - cy.get("@secondTodo").should("not.have.class", "completed"); - }); - - it("should allow me to edit an item", function () { - cy.createDefaultTodos().as("todos"); - - cy.get("@todos") - .eq(1) - .as("secondTodo") - // TODO: fix this, dblclick should - // have been issued to label - .find("label") - .dblclick(); - - // clear out the inputs current value - // and type a new value - cy.get("@secondTodo") - .find(".edit") - .clear() - .type("buy some sausages") - .type("{enter}"); - - // explicitly assert about the text value - cy.get("@todos").eq(0).should("contain", TODO_ITEM_ONE); - - cy.get("@secondTodo").should("contain", "buy some sausages"); - cy.get("@todos").eq(2).should("contain", TODO_ITEM_THREE); - }); -}); diff --git a/examples/webapp/cypress/e2e_06/new.spec.js b/examples/webapp/cypress/e2e_06/new.spec.js deleted file mode 100644 index 78dc23f..0000000 --- a/examples/webapp/cypress/e2e_06/new.spec.js +++ /dev/null @@ -1,73 +0,0 @@ -let TODO_ITEM_ONE = "buy some cheese"; -let TODO_ITEM_TWO = "feed the cat"; -let TODO_ITEM_THREE = "book a doctors appointment"; - -context("New Todo", function () { - // New commands used here: - // https://on.cypress.io/type - // https://on.cypress.io/eq - // https://on.cypress.io/find - // https://on.cypress.io/contains - // https://on.cypress.io/should - // https://on.cypress.io/as - - it("should allow me to add todo items", function () { - // create 1st todo - cy.get(".new-todo").type(TODO_ITEM_ONE).type("{enter}"); - - // make sure the 1st label contains the 1st todo text - cy.get(".todo-list li") - .eq(0) - .find("label") - .should("contain", TODO_ITEM_ONE); - - // create 2nd todo - cy.get(".new-todo").type(TODO_ITEM_TWO).type("{enter}"); - - // make sure the 2nd label contains the 2nd todo text - cy.get(".todo-list li") - .eq(1) - .find("label") - .should("contain", TODO_ITEM_TWO); - }); - - it("adds items", function () { - // create several todos then check the number of items in the list - cy.get(".new-todo") - .type("todo A{enter}") - .type("todo B{enter}") // we can continue working with same element - .type("todo C{enter}") // and keep adding new items - .type("todo D{enter}"); - - cy.get(".todo-list li").should("have.length", 4); - }); - - it("should clear text input field when an item is added", function () { - cy.get(".new-todo").type(TODO_ITEM_ONE).type("{enter}"); - - cy.get(".new-todo").should("have.text", ""); - }); - - it("should append new items to the bottom of the list", function () { - // this is an example of a custom command - // defined in cypress/support/commands.js - cy.createDefaultTodos().as("todos"); - - // even though the text content is split across - // multiple and elements - // `cy.contains` can verify this correctly - cy.get(".todo-count").contains("3 items left"); - - cy.get("@todos").eq(0).find("label").should("contain", TODO_ITEM_ONE); - - cy.get("@todos").eq(1).find("label").should("contain", TODO_ITEM_TWO); - - cy.get("@todos").eq(2).find("label").should("contain", TODO_ITEM_THREE); - }); - - it("should show #main and #footer when items added", function () { - cy.createTodo(TODO_ITEM_ONE); - cy.get(".main").should("be.visible"); - cy.get(".footer").should("be.visible"); - }); -}); diff --git a/examples/webapp/cypress/e2e_06/persistance.spec.js b/examples/webapp/cypress/e2e_06/persistance.spec.js deleted file mode 100644 index 6313a52..0000000 --- a/examples/webapp/cypress/e2e_06/persistance.spec.js +++ /dev/null @@ -1,29 +0,0 @@ -let TODO_ITEM_ONE = "buy some cheese"; -let TODO_ITEM_TWO = "feed the cat"; -let TODO_ITEM_THREE = "book a doctors appointment"; - -context("Persistence", function () { - it("should persist its data", function () { - // mimicking TodoMVC tests - // by writing out this function - function testState() { - cy.get("@firstTodo") - .should("contain", TODO_ITEM_ONE) - .and("have.class", "completed"); - - cy.get("@secondTodo") - .should("contain", TODO_ITEM_TWO) - .and("not.have.class", "completed"); - } - - cy.createTodo(TODO_ITEM_ONE).as("firstTodo"); - cy.createTodo(TODO_ITEM_TWO).as("secondTodo"); - cy.get("@firstTodo") - .find(".toggle") - .check() - .then(testState) - - .reload() - .then(testState); - }); -}); diff --git a/examples/webapp/cypress/e2e_06/routing.spec.js b/examples/webapp/cypress/e2e_06/routing.spec.js deleted file mode 100644 index 9938908..0000000 --- a/examples/webapp/cypress/e2e_06/routing.spec.js +++ /dev/null @@ -1,69 +0,0 @@ -let TODO_ITEM_ONE = "buy some cheese"; -let TODO_ITEM_TWO = "feed the cat"; -let TODO_ITEM_THREE = "book a doctors appointment"; -context("Routing", function () { - // New commands used here: - // https://on.cypress.io/window - // https://on.cypress.io/its - // https://on.cypress.io/invoke - // https://on.cypress.io/within - - beforeEach(function () { - cy.createDefaultTodos().as("todos"); - }); - - it("should allow me to display active items", function () { - cy.get("@todos").eq(1).find(".toggle").check(); - - cy.get(".filters").contains("Active").click(); - - cy.get("@todos").eq(0).should("contain", TODO_ITEM_ONE); - - cy.get("@todos").eq(1).should("contain", TODO_ITEM_THREE); - }); - - it("should respect the back button", function () { - cy.get("@todos").eq(1).find(".toggle").check(); - - cy.get(".filters").contains("Active").click(); - - cy.get(".filters").contains("Completed").click(); - - cy.get("@todos").should("have.length", 1); - cy.go("back"); - cy.get("@todos").should("have.length", 2); - cy.go("back"); - cy.get("@todos").should("have.length", 3); - }); - - it("should allow me to display completed items", function () { - cy.get("@todos").eq(1).find(".toggle").check(); - - cy.get(".filters").contains("Completed").click(); - - cy.get("@todos").should("have.length", 1); - }); - - it("should allow me to display all items", function () { - cy.get("@todos").eq(1).find(".toggle").check(); - - cy.get(".filters").contains("Active").click(); - - cy.get(".filters").contains("Completed").click(); - - cy.get(".filters").contains("All").click(); - - cy.get("@todos").should("have.length", 3); - }); - - it("should highlight the currently applied filter", function () { - // using a within here which will automatically scope - // nested 'cy' queries to our parent element - cy.get(".filters").within(function () { - cy.contains("All").should("have.class", "selected"); - cy.contains("Active").click().should("have.class", "selected"); - - cy.contains("Completed").click().should("have.class", "selected"); - }); - }); -}); diff --git a/examples/webapp/cypress/e2e_06/smoke.spec.js b/examples/webapp/cypress/e2e_06/smoke.spec.js deleted file mode 100644 index aceafe1..0000000 --- a/examples/webapp/cypress/e2e_06/smoke.spec.js +++ /dev/null @@ -1,11 +0,0 @@ -// type definitions for Cypress object "cy" -/// - -describe("TodoMVC", function () { - // a very simple example helpful during presentations - it("adds 2 todos", function () { - cy.get(".new-todo").type("learn testing{enter}").type("be cool{enter}"); - - cy.get(".todo-list li").should("have.length", 2); - }); -}); diff --git a/examples/webapp/cypress/e2e_06/todo.no-items.spec.js b/examples/webapp/cypress/e2e_06/todo.no-items.spec.js deleted file mode 100644 index f7044a0..0000000 --- a/examples/webapp/cypress/e2e_06/todo.no-items.spec.js +++ /dev/null @@ -1,13 +0,0 @@ -context("No Todos", function () { - it("should hide #main and #footer", function () { - // Unlike the TodoMVC tests, we don't need to create - // a gazillion helper functions which are difficult to - // parse through. Instead we'll opt to use real selectors - // so as to make our testing intentions as clear as possible. - // - // http://on.cypress.io/get - cy.get(".todo-list li").should("not.exist"); - cy.get('[data-layer="Content"]').should("not.exist"); - cy.get(".footer").should("not.be.visible"); - }); -}); diff --git a/examples/webapp/cypress/e2e_reference/crash.spec.js b/examples/webapp/cypress/e2e_reference/crash.spec.js new file mode 100644 index 0000000..930918f --- /dev/null +++ b/examples/webapp/cypress/e2e_reference/crash.spec.js @@ -0,0 +1,8 @@ +import fs from "fff"; + +describe("Crashing test", function () { + it("should crash", () => { + fs.writeFileSync("test.txt", "Hello World!"); + expect(true).to.be.true; + }); +}); diff --git a/examples/webapp/cypress/e2e_reference/failed.spec.js b/examples/webapp/cypress/e2e_reference/failed.spec.js new file mode 100644 index 0000000..9e3a096 --- /dev/null +++ b/examples/webapp/cypress/e2e_reference/failed.spec.js @@ -0,0 +1,5 @@ +describe("Failed", function () { + it("should fail", function () { + expect(fail).to.be.true; + }); +}); diff --git a/examples/webapp/cypress/e2e_reference/passed.spec.js b/examples/webapp/cypress/e2e_reference/passed.spec.js new file mode 100644 index 0000000..e167ff2 --- /dev/null +++ b/examples/webapp/cypress/e2e_reference/passed.spec.js @@ -0,0 +1,7 @@ +describe("Passed", function () { + it("should pass", function () { + cy.visit("/"); + cy.screenshot("custom-screenshot"); + expect(true).to.be.true; + }); +}); diff --git a/examples/webapp/cypress/e2e_reference/pending.spec.js b/examples/webapp/cypress/e2e_reference/pending.spec.js new file mode 100644 index 0000000..52935a8 --- /dev/null +++ b/examples/webapp/cypress/e2e_reference/pending.spec.js @@ -0,0 +1,5 @@ +describe("Pending", function () { + it.skip("Pending test", () => { + expect(true).to.be.true; + }); +}); diff --git a/examples/webapp/cypress/e2e/retries.js b/examples/webapp/cypress/e2e_reference/retries.spec.js similarity index 57% rename from examples/webapp/cypress/e2e/retries.js rename to examples/webapp/cypress/e2e_reference/retries.spec.js index 2f43e44..b71ea4e 100644 --- a/examples/webapp/cypress/e2e/retries.js +++ b/examples/webapp/cypress/e2e_reference/retries.spec.js @@ -6,11 +6,11 @@ describe("Retries", function () { retries: 3, }, function () { - throw new Error("x".repeat(1024)); - // if (i > 1) { - // i--; - // } - // return; + if (i > 1) { + i--; + throw new Error("oh no!"); + } + return; } ); }); diff --git a/examples/webapp/cypress/e2e_reference/skipped.spec.js b/examples/webapp/cypress/e2e_reference/skipped.spec.js new file mode 100644 index 0000000..c51d9c1 --- /dev/null +++ b/examples/webapp/cypress/e2e_reference/skipped.spec.js @@ -0,0 +1,11 @@ +describe("Skipped", function () { + beforeEach(function () { + throw new Error("before each exception"); + }); + it("should not be skipped", function () { + expect(true).to.be.true; + }); + it("should be skipped", function () { + expect(true).to.be.true; + }); +}); diff --git a/examples/webapp/cypress/support/e2e.ts b/examples/webapp/cypress/support/e2e.ts index 32bd259..36c4990 100644 --- a/examples/webapp/cypress/support/e2e.ts +++ b/examples/webapp/cypress/support/e2e.ts @@ -1,5 +1,4 @@ import registerCypressGrep from "@cypress/grep/src/support"; -require("cypress-terminal-report/src/installLogsCollector")(); require("cypress-cloud/support"); require("./commands"); diff --git a/examples/webapp/scripts/currents-script.ts b/examples/webapp/scripts/currents-script.ts index bb5ea04..8363ed4 100644 --- a/examples/webapp/scripts/currents-script.ts +++ b/examples/webapp/scripts/currents-script.ts @@ -1,6 +1,5 @@ import assert from "assert"; import { run } from "cypress-cloud"; - (async function runTests() { const projectId = process.env.CURRENTS_PROJECT_ID || "projectId"; const recordKey = process.env.CURRENTS_RECORD_KEY || "someKey"; diff --git a/package-lock.json b/package-lock.json index 27f35f8..5fc70c0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -15,7 +15,9 @@ ], "devDependencies": { "eslint-config-custom": "latest", + "husky": "^8.0.3", "prettier": "latest", + "pretty-quick": "^3.1.3", "turbo": "^1.10.13" }, "engines": { @@ -54,6 +56,167 @@ }, "devDependencies": {} }, + "e2e/cypress-12-demo": { + "version": "0.0.0", + "dependencies": { + "colors": "^1.4.0", + "cypress-cloud": "*" + }, + "devDependencies": { + "@types/chai": "^4.3.6", + "@types/node": "^17.0.12", + "chai": "^4.3.8", + "cypress": "^12.17.4", + "tsconfig": "*", + "typescript": "^5.2.2" + } + }, + "e2e/cypress-12-demo/node_modules/@cypress/request": { + "version": "2.88.12", + "resolved": "https://registry.npmjs.org/@cypress/request/-/request-2.88.12.tgz", + "integrity": "sha512-tOn+0mDZxASFM+cuAP9szGUGPI1HwWVSvdzm7V4cCsPdFTx6qMj29CwaQmRAMIEhORIUBFBsYROYJcveK4uOjA==", + "dev": true, + "dependencies": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "http-signature": "~1.3.6", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "performance-now": "^2.1.0", + "qs": "~6.10.3", + "safe-buffer": "^5.1.2", + "tough-cookie": "^4.1.3", + "tunnel-agent": "^0.6.0", + "uuid": "^8.3.2" + }, + "engines": { + "node": ">= 6" + } + }, + "e2e/cypress-12-demo/node_modules/@types/node": { + "version": "17.0.45", + "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.45.tgz", + "integrity": "sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==", + "dev": true + }, + "e2e/cypress-12-demo/node_modules/cypress": { + "version": "12.17.4", + "resolved": "https://registry.npmjs.org/cypress/-/cypress-12.17.4.tgz", + "integrity": "sha512-gAN8Pmns9MA5eCDFSDJXWKUpaL3IDd89N9TtIupjYnzLSmlpVr+ZR+vb4U/qaMp+lB6tBvAmt7504c3Z4RU5KQ==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "@cypress/request": "2.88.12", + "@cypress/xvfb": "^1.2.4", + "@types/node": "^16.18.39", + "@types/sinonjs__fake-timers": "8.1.1", + "@types/sizzle": "^2.3.2", + "arch": "^2.2.0", + "blob-util": "^2.0.2", + "bluebird": "^3.7.2", + "buffer": "^5.6.0", + "cachedir": "^2.3.0", + "chalk": "^4.1.0", + "check-more-types": "^2.24.0", + "cli-cursor": "^3.1.0", + "cli-table3": "~0.6.1", + "commander": "^6.2.1", + "common-tags": "^1.8.0", + "dayjs": "^1.10.4", + "debug": "^4.3.4", + "enquirer": "^2.3.6", + "eventemitter2": "6.4.7", + "execa": "4.1.0", + "executable": "^4.1.1", + "extract-zip": "2.0.1", + "figures": "^3.2.0", + "fs-extra": "^9.1.0", + "getos": "^3.2.1", + "is-ci": "^3.0.0", + "is-installed-globally": "~0.4.0", + "lazy-ass": "^1.6.0", + "listr2": "^3.8.3", + "lodash": "^4.17.21", + "log-symbols": "^4.0.0", + "minimist": "^1.2.8", + "ospath": "^1.2.2", + "pretty-bytes": "^5.6.0", + "process": "^0.11.10", + "proxy-from-env": "1.0.0", + "request-progress": "^3.0.0", + "semver": "^7.5.3", + "supports-color": "^8.1.1", + "tmp": "~0.2.1", + "untildify": "^4.0.0", + "yauzl": "^2.10.0" + }, + "bin": { + "cypress": "bin/cypress" + }, + "engines": { + "node": "^14.0.0 || ^16.0.0 || >=18.0.0" + } + }, + "e2e/cypress-12-demo/node_modules/cypress/node_modules/@types/node": { + "version": "16.18.50", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.50.tgz", + "integrity": "sha512-OiDU5xRgYTJ203v4cprTs0RwOCd5c5Zjv+K5P8KSqfiCsB1W3LcamTUMcnQarpq5kOYbhHfSOgIEJvdPyb5xyw==", + "dev": true + }, + "e2e/cypress-12-demo/node_modules/form-data": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "dev": true, + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 0.12" + } + }, + "e2e/cypress-12-demo/node_modules/typescript": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz", + "integrity": "sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "e2e/cypress-13-demo": { + "version": "0.0.0", + "dependencies": { + "cypress-cloud": "*" + }, + "devDependencies": { + "@swc/jest": "^0.2.29", + "@types/node": "^17.0.12", + "cypress": "^13.1.0", + "jest": "^29.7.0", + "tsconfig": "*", + "typescript": "^4.7.4" + } + }, + "e2e/cypress-13-demo/node_modules/@types/node": { + "version": "17.0.45", + "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.45.tgz", + "integrity": "sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==", + "dev": true + }, "e2e/exports": { "name": "test-exports", "version": "0.0.0", @@ -71,6 +234,8 @@ }, "e2e/exports/node_modules/@next/eslint-plugin-next": { "version": "12.3.4", + "resolved": "https://registry.npmjs.org/@next/eslint-plugin-next/-/eslint-plugin-next-12.3.4.tgz", + "integrity": "sha512-BFwj8ykJY+zc1/jWANsDprDIu2MgwPOIKxNVnrKvPs+f5TPegrVnem8uScND+1veT4B7F6VeqgaNLFW1Hzl9Og==", "dev": true, "license": "MIT", "dependencies": { @@ -79,6 +244,8 @@ }, "e2e/exports/node_modules/@types/node": { "version": "17.0.45", + "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.45.tgz", + "integrity": "sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==", "dev": true, "license": "MIT" }, @@ -95,6 +262,8 @@ }, "e2e/exports/node_modules/eslint-config-custom/node_modules/eslint-config-next": { "version": "12.3.4", + "resolved": "https://registry.npmjs.org/eslint-config-next/-/eslint-config-next-12.3.4.tgz", + "integrity": "sha512-WuT3gvgi7Bwz00AOmKGhOeqnyA5P29Cdyr0iVjLyfDbk+FANQKcOjFUTZIdyYfe5Tq1x4TGcmoe4CwctGvFjHQ==", "dev": true, "license": "MIT", "dependencies": { @@ -148,6 +317,8 @@ }, "e2e/exports/node_modules/eslint-config-custom/node_modules/eslint-plugin-react": { "version": "7.28.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.28.0.tgz", + "integrity": "sha512-IOlFIRHzWfEQQKcAD4iyYDndHwTQiCMcJVJjxempf203jnNLUnW34AXLrV33+nEXoifJE2ZEGmcjKPL8957eSw==", "dev": true, "license": "MIT", "dependencies": { @@ -175,6 +346,8 @@ }, "e2e/exports/node_modules/glob": { "version": "7.1.7", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", + "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", "dev": true, "license": "ISC", "dependencies": { @@ -194,6 +367,8 @@ }, "e2e/exports/node_modules/resolve": { "version": "2.0.0-next.4", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.4.tgz", + "integrity": "sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ==", "dev": true, "license": "MIT", "dependencies": { @@ -230,6 +405,8 @@ }, "e2e/monorepo/node_modules/@types/node": { "version": "17.0.45", + "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.45.tgz", + "integrity": "sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==", "dev": true, "license": "MIT" }, @@ -302,6 +479,8 @@ }, "examples/webapp/node_modules/@next/eslint-plugin-next": { "version": "12.3.4", + "resolved": "https://registry.npmjs.org/@next/eslint-plugin-next/-/eslint-plugin-next-12.3.4.tgz", + "integrity": "sha512-BFwj8ykJY+zc1/jWANsDprDIu2MgwPOIKxNVnrKvPs+f5TPegrVnem8uScND+1veT4B7F6VeqgaNLFW1Hzl9Og==", "dev": true, "license": "MIT", "dependencies": { @@ -310,6 +489,8 @@ }, "examples/webapp/node_modules/@types/node": { "version": "17.0.45", + "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.45.tgz", + "integrity": "sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==", "dev": true, "license": "MIT" }, @@ -371,9 +552,9 @@ } }, "examples/webapp/node_modules/cypress/node_modules/@types/node": { - "version": "16.18.46", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.46.tgz", - "integrity": "sha512-Mnq3O9Xz52exs3mlxMcQuA7/9VFe/dXcrgAyfjLkABIqxXKOgBRjyazTxUbjsxDa4BP7hhPliyjVTP9RDP14xg==" + "version": "16.18.52", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.52.tgz", + "integrity": "sha512-sm2aph6cRSsTMFYFgI+RpPLunXO9ClJkpizUVdT7KmGeyfQ14xnjTMT/f3MHcfKqevXqGT6BgVFzW8wcEoDUtA==" }, "examples/webapp/node_modules/cypress/node_modules/semver": { "version": "7.5.4", @@ -402,6 +583,8 @@ }, "examples/webapp/node_modules/eslint-config-custom/node_modules/eslint-config-next": { "version": "12.3.4", + "resolved": "https://registry.npmjs.org/eslint-config-next/-/eslint-config-next-12.3.4.tgz", + "integrity": "sha512-WuT3gvgi7Bwz00AOmKGhOeqnyA5P29Cdyr0iVjLyfDbk+FANQKcOjFUTZIdyYfe5Tq1x4TGcmoe4CwctGvFjHQ==", "dev": true, "license": "MIT", "dependencies": { @@ -455,6 +638,8 @@ }, "examples/webapp/node_modules/eslint-config-custom/node_modules/eslint-plugin-react": { "version": "7.28.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.28.0.tgz", + "integrity": "sha512-IOlFIRHzWfEQQKcAD4iyYDndHwTQiCMcJVJjxempf203jnNLUnW34AXLrV33+nEXoifJE2ZEGmcjKPL8957eSw==", "dev": true, "license": "MIT", "dependencies": { @@ -495,6 +680,8 @@ }, "examples/webapp/node_modules/glob": { "version": "7.1.7", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", + "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", "dev": true, "license": "ISC", "dependencies": { @@ -514,6 +701,8 @@ }, "examples/webapp/node_modules/resolve": { "version": "2.0.0-next.4", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.4.tgz", + "integrity": "sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ==", "dev": true, "license": "MIT", "dependencies": { @@ -561,6 +750,8 @@ }, "node_modules/@babel/compat-data": { "version": "7.22.9", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.22.9.tgz", + "integrity": "sha512-5UamI7xkUcJ3i9qVDS+KFDEK8/7oJ55/sJMB1Ge7IEapr7KfdfV/HErR+koZwOfd+SgtFKOKRhRakdg++DcJpQ==", "dev": true, "license": "MIT", "engines": { @@ -598,6 +789,8 @@ }, "node_modules/@babel/core/node_modules/semver": { "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, "license": "ISC", "bin": { @@ -675,6 +868,8 @@ }, "node_modules/@babel/helper-compilation-targets/node_modules/lru-cache": { "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", "dev": true, "license": "ISC", "dependencies": { @@ -683,6 +878,8 @@ }, "node_modules/@babel/helper-compilation-targets/node_modules/semver": { "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, "license": "ISC", "bin": { @@ -691,6 +888,8 @@ }, "node_modules/@babel/helper-compilation-targets/node_modules/yallist": { "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", "dev": true, "license": "ISC" }, @@ -719,6 +918,8 @@ }, "node_modules/@babel/helper-create-class-features-plugin/node_modules/semver": { "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, "license": "ISC", "peer": true, @@ -745,6 +946,8 @@ }, "node_modules/@babel/helper-create-regexp-features-plugin/node_modules/semver": { "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, "license": "ISC", "peer": true, @@ -770,6 +973,8 @@ }, "node_modules/@babel/helper-environment-visitor": { "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.5.tgz", + "integrity": "sha512-XGmhECfVA/5sAt+H+xpSg0mfrHq6FzNr9Oxh7PSEBBRUb/mL7Kz3NICXb194rCqAEdxkhPT1a88teizAFyvk8Q==", "dev": true, "license": "MIT", "engines": { @@ -778,6 +983,8 @@ }, "node_modules/@babel/helper-function-name": { "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.22.5.tgz", + "integrity": "sha512-wtHSq6jMRE3uF2otvfuD3DIvVhOsSNshQl0Qrd7qC9oQJzHvOL4qQXlQn2916+CXGywIjpGuIkoyZRRxHPiNQQ==", "dev": true, "license": "MIT", "dependencies": { @@ -790,6 +997,8 @@ }, "node_modules/@babel/helper-hoist-variables": { "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", + "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", "dev": true, "license": "MIT", "dependencies": { @@ -813,6 +1022,8 @@ }, "node_modules/@babel/helper-module-imports": { "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.5.tgz", + "integrity": "sha512-8Dl6+HD/cKifutF5qGd/8ZJi84QeAKh+CEe1sBzz8UayBBGg1dAIJrdHOcOM5b2MpzWL2yuotJTtGjETq0qjXg==", "dev": true, "license": "MIT", "dependencies": { @@ -824,6 +1035,8 @@ }, "node_modules/@babel/helper-module-transforms": { "version": "7.22.9", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.22.9.tgz", + "integrity": "sha512-t+WA2Xn5K+rTeGtC8jCsdAH52bjggG5TKRuRrAGNM/mjIbO4GxvlLMFOEz9wXY5I2XQ60PMFsAG2WIcG82dQMQ==", "dev": true, "license": "MIT", "dependencies": { @@ -854,6 +1067,8 @@ }, "node_modules/@babel/helper-plugin-utils": { "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz", + "integrity": "sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==", "dev": true, "license": "MIT", "engines": { @@ -896,6 +1111,8 @@ }, "node_modules/@babel/helper-simple-access": { "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz", + "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==", "dev": true, "license": "MIT", "dependencies": { @@ -919,6 +1136,8 @@ }, "node_modules/@babel/helper-split-export-declaration": { "version": "7.22.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", + "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", "dev": true, "license": "MIT", "dependencies": { @@ -930,6 +1149,8 @@ }, "node_modules/@babel/helper-string-parser": { "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz", + "integrity": "sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==", "dev": true, "license": "MIT", "engines": { @@ -938,6 +1159,8 @@ }, "node_modules/@babel/helper-validator-identifier": { "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.5.tgz", + "integrity": "sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ==", "license": "MIT", "engines": { "node": ">=6.9.0" @@ -945,6 +1168,8 @@ }, "node_modules/@babel/helper-validator-option": { "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.22.5.tgz", + "integrity": "sha512-R3oB6xlIVKUnxNUxbmgq7pKjxpru24zlimpE8WK47fACIlM0II/Hm1RS8IaOI7NgCr6LNS+jl5l75m20npAziw==", "dev": true, "license": "MIT", "engines": { @@ -992,6 +1217,8 @@ }, "node_modules/@babel/highlight/node_modules/ansi-styles": { "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "license": "MIT", "dependencies": { "color-convert": "^1.9.0" @@ -1014,6 +1241,8 @@ }, "node_modules/@babel/highlight/node_modules/color-convert": { "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", "license": "MIT", "dependencies": { "color-name": "1.1.3" @@ -1021,10 +1250,14 @@ }, "node_modules/@babel/highlight/node_modules/color-name": { "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", "license": "MIT" }, "node_modules/@babel/highlight/node_modules/has-flag": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", "license": "MIT", "engines": { "node": ">=4" @@ -1032,6 +1265,8 @@ }, "node_modules/@babel/highlight/node_modules/supports-color": { "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "license": "MIT", "dependencies": { "has-flag": "^3.0.0" @@ -1113,6 +1348,8 @@ }, "node_modules/@babel/plugin-syntax-async-generators": { "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", "dev": true, "license": "MIT", "dependencies": { @@ -1124,8 +1361,9 @@ }, "node_modules/@babel/plugin-syntax-bigint": { "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", + "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -1135,6 +1373,8 @@ }, "node_modules/@babel/plugin-syntax-class-properties": { "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", "dev": true, "license": "MIT", "dependencies": { @@ -1215,6 +1455,8 @@ }, "node_modules/@babel/plugin-syntax-import-meta": { "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", + "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", "dev": true, "license": "MIT", "dependencies": { @@ -1226,6 +1468,8 @@ }, "node_modules/@babel/plugin-syntax-json-strings": { "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", "dev": true, "license": "MIT", "dependencies": { @@ -1251,6 +1495,8 @@ }, "node_modules/@babel/plugin-syntax-logical-assignment-operators": { "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", "dev": true, "license": "MIT", "dependencies": { @@ -1262,6 +1508,8 @@ }, "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", "dev": true, "license": "MIT", "dependencies": { @@ -1273,6 +1521,8 @@ }, "node_modules/@babel/plugin-syntax-numeric-separator": { "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", "dev": true, "license": "MIT", "dependencies": { @@ -1284,6 +1534,8 @@ }, "node_modules/@babel/plugin-syntax-object-rest-spread": { "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", "dev": true, "license": "MIT", "dependencies": { @@ -1295,6 +1547,8 @@ }, "node_modules/@babel/plugin-syntax-optional-catch-binding": { "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", "dev": true, "license": "MIT", "dependencies": { @@ -1306,6 +1560,8 @@ }, "node_modules/@babel/plugin-syntax-optional-chaining": { "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", "dev": true, "license": "MIT", "dependencies": { @@ -1332,6 +1588,8 @@ }, "node_modules/@babel/plugin-syntax-top-level-await": { "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", "dev": true, "license": "MIT", "dependencies": { @@ -1345,11 +1603,12 @@ } }, "node_modules/@babel/plugin-syntax-typescript": { - "version": "7.20.0", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.22.5.tgz", + "integrity": "sha512-1mS2o03i7t1c6VzH6fdQ3OA8tcEIxwG18zIPRp+UY1Ihv6W+XZzBCVxExF9upussPXJ0xE9XRHwMoNs1ep/nRQ==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.19.0" + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -1512,6 +1771,8 @@ }, "node_modules/@babel/plugin-transform-classes/node_modules/globals": { "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", "dev": true, "license": "MIT", "peer": true, @@ -2251,6 +2512,8 @@ }, "node_modules/@babel/preset-env/node_modules/semver": { "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, "license": "ISC", "peer": true, @@ -2281,10 +2544,11 @@ "peer": true }, "node_modules/@babel/runtime": { - "version": "7.20.6", - "license": "MIT", + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.22.15.tgz", + "integrity": "sha512-T0O+aa+4w0u06iNmapipJXMV4HoUir03hpx3/YqXXhu9xim3w+dVphjFWl1OH8NbZHw5Lbm9k45drDkgq2VNNA==", "dependencies": { - "regenerator-runtime": "^0.13.11" + "regenerator-runtime": "^0.14.0" }, "engines": { "node": ">=6.9.0" @@ -2301,8 +2565,15 @@ "node": ">=6.9.0" } }, + "node_modules/@babel/runtime/node_modules/regenerator-runtime": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz", + "integrity": "sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==" + }, "node_modules/@babel/template": { "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.5.tgz", + "integrity": "sha512-X7yV7eiwAxdj9k94NEylvbVHLiVG1nvzCV2EAowhxLTwODV1jl9UzZ48leOC0sH7OnuHrIkllaBgneUykIcZaw==", "dev": true, "license": "MIT", "dependencies": { @@ -2336,6 +2607,8 @@ }, "node_modules/@babel/traverse/node_modules/globals": { "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", "dev": true, "license": "MIT", "engines": { @@ -2357,11 +2630,14 @@ }, "node_modules/@bcoe/v8-coverage": { "version": "0.2.3", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", + "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", + "dev": true }, "node_modules/@colors/colors": { "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", + "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", "license": "MIT", "optional": true, "engines": { @@ -2370,6 +2646,8 @@ }, "node_modules/@cspotcode/source-map-support": { "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", + "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", "license": "MIT", "dependencies": { "@jridgewell/trace-mapping": "0.3.9" @@ -2380,6 +2658,8 @@ }, "node_modules/@cspotcode/source-map-support/node_modules/@jridgewell/trace-mapping": { "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", + "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", "license": "MIT", "dependencies": { "@jridgewell/resolve-uri": "^3.0.3", @@ -2407,6 +2687,8 @@ }, "node_modules/@cypress/code-coverage/node_modules/argparse": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", "dev": true, "license": "Python-2.0" }, @@ -2458,6 +2740,8 @@ }, "node_modules/@cypress/commit-info": { "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@cypress/commit-info/-/commit-info-2.2.0.tgz", + "integrity": "sha512-A7CYS0Iqp/u52JTnSWlDFjWMKx7rIfd+mk0Fdksrcs4Wdf5HXPsoZO475VJ+xL7LPhJrjKhgyl/TPKO3worZyQ==", "license": "MIT", "dependencies": { "bluebird": "3.5.5", @@ -2473,10 +2757,14 @@ }, "node_modules/@cypress/commit-info/node_modules/bluebird": { "version": "3.5.5", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.5.tgz", + "integrity": "sha512-5am6HnnfN+urzt4yfg7IgTbotDjIT/u8AJpEt0sIU9FtXfVeezXAPKswrG+xKUCOYAINpSdgZVDU6QFh+cuH3w==", "license": "MIT" }, "node_modules/@cypress/commit-info/node_modules/cross-spawn": { "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", "license": "MIT", "dependencies": { "nice-try": "^1.0.4", @@ -2491,6 +2779,8 @@ }, "node_modules/@cypress/commit-info/node_modules/execa": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", "license": "MIT", "dependencies": { "cross-spawn": "^6.0.0", @@ -2507,6 +2797,8 @@ }, "node_modules/@cypress/commit-info/node_modules/get-stream": { "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", "license": "MIT", "dependencies": { "pump": "^3.0.0" @@ -2517,6 +2809,8 @@ }, "node_modules/@cypress/commit-info/node_modules/is-stream": { "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==", "license": "MIT", "engines": { "node": ">=0.10.0" @@ -2524,6 +2818,8 @@ }, "node_modules/@cypress/commit-info/node_modules/npm-run-path": { "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==", "license": "MIT", "dependencies": { "path-key": "^2.0.0" @@ -2541,6 +2837,8 @@ }, "node_modules/@cypress/commit-info/node_modules/shebang-command": { "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", "license": "MIT", "dependencies": { "shebang-regex": "^1.0.0" @@ -2551,6 +2849,8 @@ }, "node_modules/@cypress/commit-info/node_modules/shebang-regex": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", "license": "MIT", "engines": { "node": ">=0.10.0" @@ -2558,6 +2858,8 @@ }, "node_modules/@cypress/grep": { "version": "3.1.5", + "resolved": "https://registry.npmjs.org/@cypress/grep/-/grep-3.1.5.tgz", + "integrity": "sha512-dbLKP9wGLId+TwTRFDcWVcr9AvJ06W3K7dVeJzLONiPbI5/XJh2mDZvnoyJlAz+VZxdwe0+nejk/CPmuphuzkQ==", "dev": true, "license": "MIT", "dependencies": { @@ -2570,9 +2872,9 @@ } }, "node_modules/@cypress/request": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@cypress/request/-/request-3.0.0.tgz", - "integrity": "sha512-GKFCqwZwMYmL3IBoNeR2MM1SnxRIGERsQOTWeQKoYBt2JLqcqiy7JXqO894FLrpjZYqGxW92MNwRH2BN56obdQ==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@cypress/request/-/request-3.0.1.tgz", + "integrity": "sha512-TWivJlJi8ZDx2wGOw1dbLuHJKUYX7bWySw377nlnGOW3hP9/MUKIsEdXT/YngWxVdgNCHRBmFlBipE+5/2ZZlQ==", "dependencies": { "aws-sign2": "~0.7.0", "aws4": "^1.8.0", @@ -2587,7 +2889,7 @@ "json-stringify-safe": "~5.0.1", "mime-types": "~2.1.19", "performance-now": "^2.1.0", - "qs": "~6.10.3", + "qs": "6.10.4", "safe-buffer": "^5.1.2", "tough-cookie": "^4.1.3", "tunnel-agent": "^0.6.0", @@ -2633,14 +2935,26 @@ }, "node_modules/@cypress/xvfb": { "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@cypress/xvfb/-/xvfb-1.2.4.tgz", + "integrity": "sha512-skbBzPggOVYCbnGgV+0dmBdW/s77ZkAOXIC1knS8NagwDjBrNC1LuXtQJeiN6l+m7lzmHtaoUw/ctJKdqkG57Q==", "license": "MIT", "dependencies": { "debug": "^3.1.0", "lodash.once": "^4.1.1" } }, + "node_modules/@cypress/xvfb/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dependencies": { + "ms": "^2.1.1" + } + }, "node_modules/@esbuild/darwin-arm64": { "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.16.17.tgz", + "integrity": "sha512-/2agbUEfmxWHi9ARTX6OQ/KgXnOWfsNlTeLcoV7HSuSTv63E4DqtAc+2XqGw1KHxKMHGZgbVCZge7HXWX9Vn+w==", "cpu": [ "arm64" ], @@ -2656,6 +2970,8 @@ }, "node_modules/@esbuild/darwin-x64": { "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.16.17.tgz", + "integrity": "sha512-2By45OBHulkd9Svy5IOCZt376Aa2oOkiE9QWUK9fe6Tb+WDr8hXL3dpqi+DeLiMed8tVXspzsTAvd0jUl96wmg==", "cpu": [ "x64" ], @@ -2671,6 +2987,8 @@ }, "node_modules/@eslint/eslintrc": { "version": "0.4.3", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.3.tgz", + "integrity": "sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==", "license": "MIT", "dependencies": { "ajv": "^6.12.4", @@ -2702,6 +3020,8 @@ }, "node_modules/@humanwhocodes/config-array": { "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.5.0.tgz", + "integrity": "sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==", "license": "Apache-2.0", "dependencies": { "@humanwhocodes/object-schema": "^1.2.0", @@ -2714,10 +3034,14 @@ }, "node_modules/@humanwhocodes/object-schema": { "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", + "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", "license": "BSD-3-Clause" }, "node_modules/@hutson/parse-repository-url": { "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@hutson/parse-repository-url/-/parse-repository-url-3.0.2.tgz", + "integrity": "sha512-H9XAx3hc0BQHY6l+IFSWHDySypcXsvsuLhgYLUGywmJ5pswRVQJUHpOsobnLYp2ZUaUlKiKDrgWWhosOwAEM8Q==", "dev": true, "license": "Apache-2.0", "engines": { @@ -2726,11 +3050,15 @@ }, "node_modules/@iarna/toml": { "version": "2.2.5", + "resolved": "https://registry.npmjs.org/@iarna/toml/-/toml-2.2.5.tgz", + "integrity": "sha512-trnsAYxU3xnS1gPHPyU961coFyLkh4gAD/0zQ5mymY4yOZ+CYvsPqUbOFSw0aDM4y0tV7tiFxL/1XfXPNC6IPg==", "dev": true, "license": "ISC" }, "node_modules/@istanbuljs/load-nyc-config": { "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", + "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", "dev": true, "license": "ISC", "dependencies": { @@ -2746,6 +3074,8 @@ }, "node_modules/@istanbuljs/schema": { "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", + "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", "dev": true, "license": "MIT", "engines": { @@ -2753,15 +3083,16 @@ } }, "node_modules/@jest/console": { - "version": "29.3.1", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.7.0.tgz", + "integrity": "sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==", "dev": true, - "license": "MIT", "dependencies": { - "@jest/types": "^29.3.1", + "@jest/types": "^29.6.3", "@types/node": "*", "chalk": "^4.0.0", - "jest-message-util": "^29.3.1", - "jest-util": "^29.3.1", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0", "slash": "^3.0.0" }, "engines": { @@ -2769,36 +3100,37 @@ } }, "node_modules/@jest/core": { - "version": "29.3.1", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.7.0.tgz", + "integrity": "sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==", "dev": true, - "license": "MIT", "dependencies": { - "@jest/console": "^29.3.1", - "@jest/reporters": "^29.3.1", - "@jest/test-result": "^29.3.1", - "@jest/transform": "^29.3.1", - "@jest/types": "^29.3.1", + "@jest/console": "^29.7.0", + "@jest/reporters": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", "@types/node": "*", "ansi-escapes": "^4.2.1", "chalk": "^4.0.0", "ci-info": "^3.2.0", "exit": "^0.1.2", "graceful-fs": "^4.2.9", - "jest-changed-files": "^29.2.0", - "jest-config": "^29.3.1", - "jest-haste-map": "^29.3.1", - "jest-message-util": "^29.3.1", - "jest-regex-util": "^29.2.0", - "jest-resolve": "^29.3.1", - "jest-resolve-dependencies": "^29.3.1", - "jest-runner": "^29.3.1", - "jest-runtime": "^29.3.1", - "jest-snapshot": "^29.3.1", - "jest-util": "^29.3.1", - "jest-validate": "^29.3.1", - "jest-watcher": "^29.3.1", + "jest-changed-files": "^29.7.0", + "jest-config": "^29.7.0", + "jest-haste-map": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-regex-util": "^29.6.3", + "jest-resolve": "^29.7.0", + "jest-resolve-dependencies": "^29.7.0", + "jest-runner": "^29.7.0", + "jest-runtime": "^29.7.0", + "jest-snapshot": "^29.7.0", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "jest-watcher": "^29.7.0", "micromatch": "^4.0.4", - "pretty-format": "^29.3.1", + "pretty-format": "^29.7.0", "slash": "^3.0.0", "strip-ansi": "^6.0.0" }, @@ -2816,6 +3148,8 @@ }, "node_modules/@jest/create-cache-key-function": { "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/create-cache-key-function/-/create-cache-key-function-27.5.1.tgz", + "integrity": "sha512-dmH1yW+makpTSURTy8VzdUwFnfQh1G8R+DxO2Ho2FFmBbKFEVm+3jWdvFhE2VqB/LATCTokkP0dotjyQyw5/AQ==", "dev": true, "license": "MIT", "dependencies": { @@ -2827,6 +3161,8 @@ }, "node_modules/@jest/create-cache-key-function/node_modules/@jest/types": { "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", "dev": true, "license": "MIT", "dependencies": { @@ -2849,83 +3185,89 @@ } }, "node_modules/@jest/environment": { - "version": "29.3.1", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.7.0.tgz", + "integrity": "sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==", "dev": true, - "license": "MIT", "dependencies": { - "@jest/fake-timers": "^29.3.1", - "@jest/types": "^29.3.1", + "@jest/fake-timers": "^29.7.0", + "@jest/types": "^29.6.3", "@types/node": "*", - "jest-mock": "^29.3.1" + "jest-mock": "^29.7.0" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/@jest/expect": { - "version": "29.3.1", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.7.0.tgz", + "integrity": "sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==", "dev": true, - "license": "MIT", "dependencies": { - "expect": "^29.3.1", - "jest-snapshot": "^29.3.1" + "expect": "^29.7.0", + "jest-snapshot": "^29.7.0" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/@jest/expect-utils": { - "version": "29.3.1", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.7.0.tgz", + "integrity": "sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==", "dev": true, - "license": "MIT", "dependencies": { - "jest-get-type": "^29.2.0" + "jest-get-type": "^29.6.3" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/@jest/fake-timers": { - "version": "29.3.1", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.7.0.tgz", + "integrity": "sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==", "dev": true, - "license": "MIT", "dependencies": { - "@jest/types": "^29.3.1", - "@sinonjs/fake-timers": "^9.1.2", + "@jest/types": "^29.6.3", + "@sinonjs/fake-timers": "^10.0.2", "@types/node": "*", - "jest-message-util": "^29.3.1", - "jest-mock": "^29.3.1", - "jest-util": "^29.3.1" + "jest-message-util": "^29.7.0", + "jest-mock": "^29.7.0", + "jest-util": "^29.7.0" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/@jest/globals": { - "version": "29.3.1", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.7.0.tgz", + "integrity": "sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==", "dev": true, - "license": "MIT", "dependencies": { - "@jest/environment": "^29.3.1", - "@jest/expect": "^29.3.1", - "@jest/types": "^29.3.1", - "jest-mock": "^29.3.1" + "@jest/environment": "^29.7.0", + "@jest/expect": "^29.7.0", + "@jest/types": "^29.6.3", + "jest-mock": "^29.7.0" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/@jest/reporters": { - "version": "29.3.1", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.7.0.tgz", + "integrity": "sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==", "dev": true, - "license": "MIT", "dependencies": { "@bcoe/v8-coverage": "^0.2.3", - "@jest/console": "^29.3.1", - "@jest/test-result": "^29.3.1", - "@jest/transform": "^29.3.1", - "@jest/types": "^29.3.1", - "@jridgewell/trace-mapping": "^0.3.15", + "@jest/console": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@jridgewell/trace-mapping": "^0.3.18", "@types/node": "*", "chalk": "^4.0.0", "collect-v8-coverage": "^1.0.0", @@ -2933,13 +3275,13 @@ "glob": "^7.1.3", "graceful-fs": "^4.2.9", "istanbul-lib-coverage": "^3.0.0", - "istanbul-lib-instrument": "^5.1.0", + "istanbul-lib-instrument": "^6.0.0", "istanbul-lib-report": "^3.0.0", "istanbul-lib-source-maps": "^4.0.0", "istanbul-reports": "^3.1.3", - "jest-message-util": "^29.3.1", - "jest-util": "^29.3.1", - "jest-worker": "^29.3.1", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0", + "jest-worker": "^29.7.0", "slash": "^3.0.0", "string-length": "^4.0.1", "strip-ansi": "^6.0.0", @@ -2957,23 +3299,41 @@ } } }, + "node_modules/@jest/reporters/node_modules/istanbul-lib-instrument": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.0.tgz", + "integrity": "sha512-x58orMzEVfzPUKqlbLd1hXCnySCxKdDKa6Rjg97CwuLLRI4g3FHTdnExu1OqffVFay6zeMW+T6/DowFLndWnIw==", + "dev": true, + "dependencies": { + "@babel/core": "^7.12.3", + "@babel/parser": "^7.14.7", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^7.5.4" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/@jest/schemas": { - "version": "29.0.0", + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", + "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", "dev": true, - "license": "MIT", "dependencies": { - "@sinclair/typebox": "^0.24.1" + "@sinclair/typebox": "^0.27.8" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/@jest/source-map": { - "version": "29.2.0", + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-29.6.3.tgz", + "integrity": "sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==", "dev": true, - "license": "MIT", "dependencies": { - "@jridgewell/trace-mapping": "^0.3.15", + "@jridgewell/trace-mapping": "^0.3.18", "callsites": "^3.0.0", "graceful-fs": "^4.2.9" }, @@ -2982,12 +3342,13 @@ } }, "node_modules/@jest/test-result": { - "version": "29.3.1", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.7.0.tgz", + "integrity": "sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==", "dev": true, - "license": "MIT", "dependencies": { - "@jest/console": "^29.3.1", - "@jest/types": "^29.3.1", + "@jest/console": "^29.7.0", + "@jest/types": "^29.6.3", "@types/istanbul-lib-coverage": "^2.0.0", "collect-v8-coverage": "^1.0.0" }, @@ -2996,13 +3357,14 @@ } }, "node_modules/@jest/test-sequencer": { - "version": "29.3.1", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.7.0.tgz", + "integrity": "sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==", "dev": true, - "license": "MIT", "dependencies": { - "@jest/test-result": "^29.3.1", + "@jest/test-result": "^29.7.0", "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.3.1", + "jest-haste-map": "^29.7.0", "slash": "^3.0.0" }, "engines": { @@ -3010,25 +3372,26 @@ } }, "node_modules/@jest/transform": { - "version": "29.3.1", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.7.0.tgz", + "integrity": "sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==", "dev": true, - "license": "MIT", "dependencies": { "@babel/core": "^7.11.6", - "@jest/types": "^29.3.1", - "@jridgewell/trace-mapping": "^0.3.15", + "@jest/types": "^29.6.3", + "@jridgewell/trace-mapping": "^0.3.18", "babel-plugin-istanbul": "^6.1.1", "chalk": "^4.0.0", "convert-source-map": "^2.0.0", "fast-json-stable-stringify": "^2.1.0", "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.3.1", - "jest-regex-util": "^29.2.0", - "jest-util": "^29.3.1", + "jest-haste-map": "^29.7.0", + "jest-regex-util": "^29.6.3", + "jest-util": "^29.7.0", "micromatch": "^4.0.4", "pirates": "^4.0.4", "slash": "^3.0.0", - "write-file-atomic": "^4.0.1" + "write-file-atomic": "^4.0.2" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -3036,13 +3399,15 @@ }, "node_modules/@jest/transform/node_modules/convert-source-map": { "version": "2.0.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true }, "node_modules/@jest/transform/node_modules/write-file-atomic": { "version": "4.0.2", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", + "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", "dev": true, - "license": "ISC", "dependencies": { "imurmurhash": "^0.1.4", "signal-exit": "^3.0.7" @@ -3052,11 +3417,12 @@ } }, "node_modules/@jest/types": { - "version": "29.3.1", + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", + "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", "dev": true, - "license": "MIT", "dependencies": { - "@jest/schemas": "^29.0.0", + "@jest/schemas": "^29.6.3", "@types/istanbul-lib-coverage": "^2.0.0", "@types/istanbul-reports": "^3.0.0", "@types/node": "*", @@ -3088,6 +3454,8 @@ }, "node_modules/@jridgewell/set-array": { "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", + "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", "dev": true, "license": "MIT", "engines": { @@ -3106,6 +3474,8 @@ }, "node_modules/@jridgewell/source-map/node_modules/@jridgewell/gen-mapping": { "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", + "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", "dev": true, "license": "MIT", "peer": true, @@ -3123,12 +3493,13 @@ "license": "MIT" }, "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.17", + "version": "0.3.19", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.19.tgz", + "integrity": "sha512-kf37QtfW+Hwx/buWGMPcR60iF9ziHa6r/CZJIHbmcm4+0qrXiVdxegAH0F6yddEVQ7zdkjcGCgCzUu+BcbhQxw==", "dev": true, - "license": "MIT", "dependencies": { - "@jridgewell/resolve-uri": "3.1.0", - "@jridgewell/sourcemap-codec": "1.4.14" + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" } }, "node_modules/@lezer/common": { @@ -3203,6 +3574,8 @@ }, "node_modules/@next/eslint-plugin-next/node_modules/glob": { "version": "7.1.7", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", + "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", "license": "ISC", "dependencies": { "fs.realpath": "^1.0.0", @@ -3249,6 +3622,8 @@ }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", "license": "MIT", "dependencies": { "@nodelib/fs.stat": "2.0.5", @@ -3260,6 +3635,8 @@ }, "node_modules/@nodelib/fs.stat": { "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", "license": "MIT", "engines": { "node": ">= 8" @@ -3267,6 +3644,8 @@ }, "node_modules/@nodelib/fs.walk": { "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", "license": "MIT", "dependencies": { "@nodelib/fs.scandir": "2.1.5", @@ -3353,6 +3732,8 @@ }, "node_modules/@octokit/plugin-request-log": { "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@octokit/plugin-request-log/-/plugin-request-log-1.0.4.tgz", + "integrity": "sha512-mLUsMkgP7K/cnFEw07kWqXGF5LKrOkD+lhCrKvPHXWDywAwuDUeDwWBpc69XK3pNX0uKiVt8g5z96PJ6z9xCFA==", "dev": true, "license": "MIT", "peerDependencies": { @@ -4040,62 +4421,206 @@ "node": ">=10" } }, - "node_modules/@parcel/optimizer-swc/node_modules/@swc/helpers": { - "version": "0.5.1", + "node_modules/@parcel/optimizer-swc/node_modules/@swc/core-darwin-x64": { + "version": "1.3.71", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.3.71.tgz", + "integrity": "sha512-9sbDXBWgM22w/3Ll5kPhXMPkOiHRoqwMOyxLJBfGtIMnFlh5O+NRN3umRerK3pe4Q6/7hj2M5V+crEHYrXmuxg==", + "cpu": [ + "x64" + ], "dev": true, - "license": "Apache-2.0", "optional": true, - "peer": true, - "dependencies": { - "tslib": "^2.4.0" + "os": [ + "darwin" + ], + "engines": { + "node": ">=10" } }, - "node_modules/@parcel/package-manager": { - "version": "2.9.3", + "node_modules/@parcel/optimizer-swc/node_modules/@swc/core-linux-arm-gnueabihf": { + "version": "1.3.71", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.3.71.tgz", + "integrity": "sha512-boKdMZsfKvhBs0FDeqH7KQj0lfYe0wCtrL1lv50oYMEeLajY9o4U5xSmc61Sg4HRXjlbR6dlM2cFfL84t7NpAA==", + "cpu": [ + "arm" + ], "dev": true, - "license": "MIT", - "dependencies": { - "@parcel/diagnostic": "2.9.3", - "@parcel/fs": "2.9.3", - "@parcel/logger": "2.9.3", - "@parcel/node-resolver-core": "3.0.3", - "@parcel/types": "2.9.3", - "@parcel/utils": "2.9.3", - "@parcel/workers": "2.9.3", - "semver": "^7.5.2" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - }, - "peerDependencies": { - "@parcel/core": "^2.9.3" + "node": ">=10" } }, - "node_modules/@parcel/packager-css": { - "version": "2.9.3", + "node_modules/@parcel/optimizer-swc/node_modules/@swc/core-linux-arm64-gnu": { + "version": "1.3.71", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.3.71.tgz", + "integrity": "sha512-yDatyHYMiOVwhyIA/LBwknPs2CUtLYWEMzPZjgLc+56PbgPs3oiEbNWeVUND5onPrfDQgK7NK1y8JeiXZqTgGQ==", + "cpu": [ + "arm64" + ], "dev": true, - "license": "MIT", - "dependencies": { - "@parcel/diagnostic": "2.9.3", - "@parcel/plugin": "2.9.3", - "@parcel/source-map": "^2.1.1", - "@parcel/utils": "2.9.3", - "nullthrows": "^1.1.1" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">= 12.0.0", - "parcel": "^2.9.3" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" + "node": ">=10" } }, - "node_modules/@parcel/packager-html": { + "node_modules/@parcel/optimizer-swc/node_modules/@swc/core-linux-arm64-musl": { + "version": "1.3.71", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.3.71.tgz", + "integrity": "sha512-xAdCA0L/hoa0ULL5SR4sMZCxkWk7C90DOU7wJalNVG9qNWYICfq3G7AR0E9Ohphzqyahfb5QJED/nA7N0+XwbQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@parcel/optimizer-swc/node_modules/@swc/core-linux-x64-gnu": { + "version": "1.3.71", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.3.71.tgz", + "integrity": "sha512-j94qLXP/yqhu2afnABAq/xrJIU8TEqcNkp1TlsAeO3R2nVLYL1w4XX8GW71SPnXmd2bwF102c3Cfv/2ilf2y2A==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@parcel/optimizer-swc/node_modules/@swc/core-linux-x64-musl": { + "version": "1.3.71", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.3.71.tgz", + "integrity": "sha512-YiyU848ql6dLlmt0BHccGAaZ36Cf61VzCAMDKID/gd72snvzWcMCHrwSRW0gEFNXHsjBJrmNl+SLYZHfqoGwUA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@parcel/optimizer-swc/node_modules/@swc/core-win32-arm64-msvc": { + "version": "1.3.71", + "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.3.71.tgz", + "integrity": "sha512-1UsJ+6hnIRe/PVdgDPexvgGaN4KpBncT/bAOqlWc9XC7KeBXAWcGA08LrPUz2Ei00DJXzR622IGZVEYOHNkUOw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@parcel/optimizer-swc/node_modules/@swc/core-win32-ia32-msvc": { + "version": "1.3.71", + "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.3.71.tgz", + "integrity": "sha512-KnuI89+zojR9lDFELdQYZpxzPZ6pBfLwJfWTSGatnpL1ZHhIsV3tK1jwqIdJK1zkRxpBwc6p6FzSZdZwCSpnJw==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@parcel/optimizer-swc/node_modules/@swc/core-win32-x64-msvc": { + "version": "1.3.71", + "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.3.71.tgz", + "integrity": "sha512-Pcw7fFirpaBOZsU8fhO48ZCb7NxIjuLnLRPrHqWQ4Mapx1+w9ZNdGya2DKP9n8EAiUrJO20WDsrBNMT2MQSWkA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@parcel/optimizer-swc/node_modules/@swc/helpers": { + "version": "0.5.1", + "dev": true, + "license": "Apache-2.0", + "optional": true, + "peer": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@parcel/package-manager": { + "version": "2.9.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@parcel/diagnostic": "2.9.3", + "@parcel/fs": "2.9.3", + "@parcel/logger": "2.9.3", + "@parcel/node-resolver-core": "3.0.3", + "@parcel/types": "2.9.3", + "@parcel/utils": "2.9.3", + "@parcel/workers": "2.9.3", + "semver": "^7.5.2" + }, + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "peerDependencies": { + "@parcel/core": "^2.9.3" + } + }, + "node_modules/@parcel/packager-css": { + "version": "2.9.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@parcel/diagnostic": "2.9.3", + "@parcel/plugin": "2.9.3", + "@parcel/source-map": "^2.1.1", + "@parcel/utils": "2.9.3", + "nullthrows": "^1.1.1" + }, + "engines": { + "node": ">= 12.0.0", + "parcel": "^2.9.3" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/packager-html": { "version": "2.9.3", "dev": true, "license": "MIT", @@ -4721,6 +5246,8 @@ }, "node_modules/@pnpm/network.ca-file": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@pnpm/network.ca-file/-/network.ca-file-1.0.2.tgz", + "integrity": "sha512-YcPQ8a0jwYU9bTdJDpXjMi7Brhkr1mXsXrUJvjqM2mQDgkRiz8jFaQGOdaLxgjtUfQgZhKy/O3cG/YwmgKaxLA==", "dev": true, "license": "MIT", "dependencies": { @@ -4765,9 +5292,10 @@ "license": "BSD-3-Clause" }, "node_modules/@sinclair/typebox": { - "version": "0.24.51", - "dev": true, - "license": "MIT" + "version": "0.27.8", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", + "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==", + "dev": true }, "node_modules/@sindresorhus/is": { "version": "5.3.0", @@ -4781,19 +5309,21 @@ } }, "node_modules/@sinonjs/commons": { - "version": "1.8.6", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.0.tgz", + "integrity": "sha512-jXBtWAF4vmdNmZgD5FoKsVLv3rPgDnLgPbU84LIJ3otV44vJlDRokVng5v8NFJdCf/da9legHcKaRuZs4L7faA==", "dev": true, - "license": "BSD-3-Clause", "dependencies": { "type-detect": "4.0.8" } }, "node_modules/@sinonjs/fake-timers": { - "version": "9.1.2", + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz", + "integrity": "sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==", "dev": true, - "license": "BSD-3-Clause", "dependencies": { - "@sinonjs/commons": "^1.7.0" + "@sinonjs/commons": "^3.0.0" } }, "node_modules/@swc/core": { @@ -4801,6 +5331,7 @@ "devOptional": true, "hasInstallScript": true, "license": "Apache-2.0", + "peer": true, "bin": { "swcx": "run_swcx.js" }, @@ -4834,6 +5365,295 @@ "os": [ "darwin" ], + "peer": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-darwin-x64": { + "version": "1.3.86", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.3.86.tgz", + "integrity": "sha512-Jro6HVH4uSOBM7tTDaQNKLNc8BJV7n+SO+Ft2HAZINyeKJS/8MfEYneG7Vmqg18gv00c6dz9AOCcyz+BR7BFkQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-arm-gnueabihf": { + "version": "1.3.86", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.3.86.tgz", + "integrity": "sha512-wYB9m0pzXJVSzedXSl4JwS3gKtvcPinpe9MbkddezpqL7OjyDP6pHHW9qIucsfgCrtMtbPC2nqulXLPtAAyIjw==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-arm64-gnu": { + "version": "1.3.86", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.3.86.tgz", + "integrity": "sha512-fR44IyK5cdCaO8cC++IEH0Jn03tWnunJnjzA99LxlE5TRInSIOvFm+g5OSUQZDAvEXmQ38sd31LO2HOoDS1Edw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-arm64-musl": { + "version": "1.3.86", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.3.86.tgz", + "integrity": "sha512-EUPfdbK4dUk/nkX3Vmv/47XH+DqHOa9JI0CTthvJ8/ZXei1MKDUsUc+tI1zMQX2uCuSkSWsEIEpCmA0tMwFhtw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-x64-gnu": { + "version": "1.3.86", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.3.86.tgz", + "integrity": "sha512-snVZZWv8XgNVaKrTxtO3rUN+BbbB6I8Fqwe8zM/DWGJ096J13r89doQ48x5ZyO+bW4D48eZIWP5pdfSW7oBE3w==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-x64-musl": { + "version": "1.3.86", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.3.86.tgz", + "integrity": "sha512-PnnksUJymEJkdnbV2orOSOSB441UqsxYbJge9zbr5UTRXUfWO3eFRV0iTBegjTlOQGbW6yN+YRSDkenTbmCI6g==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-win32-arm64-msvc": { + "version": "1.3.86", + "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.3.86.tgz", + "integrity": "sha512-XlGEGyHwLndm08VvgeAPGj40L+Hx575MQC+2fsyB1uSNUN+uf7fvke+wc7k50a92CaQe/8foLyIR5faayozEJA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-win32-ia32-msvc": { + "version": "1.3.86", + "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.3.86.tgz", + "integrity": "sha512-U1BhZa1x9yn+wZGTQmt1cYR79a0FzW/wL6Jas1Pn0bykKLxdRU4mCeZt2P+T3buLm8jr8LpPWiCrbvr658PzwA==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-win32-x64-msvc": { + "version": "1.3.86", + "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.3.86.tgz", + "integrity": "sha512-wRoQUajqpE3wITHhZVj/6BPu/QwHriFHLHuJA+9y6PeGtUtTmntL42aBKXIFhfL767dYFtohyNg1uZ9eqbGyGQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core/node_modules/@swc/core-darwin-x64": { + "version": "1.3.23", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.3.23.tgz", + "integrity": "sha512-eQSN+JJqx/5Dk2C5uet2l7HifGsDBorQHD3PAVnge5jxl+rXU/zbzX9Un56+uuUB0QYeS4Dyr8cN7NHuIKGxBA==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "darwin" + ], + "peer": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core/node_modules/@swc/core-linux-arm-gnueabihf": { + "version": "1.3.23", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.3.23.tgz", + "integrity": "sha512-zxYvggbw6R/sTNey0qgsigFMY59DYepm1+JNojxOKjbnvxmgyeIa5sPdu/5gLj0TtJOiWvSGrpMPNUIVreUSGA==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core/node_modules/@swc/core-linux-arm64-gnu": { + "version": "1.3.23", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.3.23.tgz", + "integrity": "sha512-l8UWhcNvZ6RzNZBBToMYuKYijF0h7mbw2RuFV5rpCYF/k/Wh85PaDHPQIQ6qjMHJsIBHYXUt0HLAP+fiAfBiDw==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core/node_modules/@swc/core-linux-arm64-musl": { + "version": "1.3.23", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.3.23.tgz", + "integrity": "sha512-TZDPp1wUE1ynVyY0vwIToyOULKEQ91H49R+p6Iu/2YY+UQQwUamhX0Gp8O85RT+j72/iHyhbQkz7yRg6v+GB5A==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core/node_modules/@swc/core-linux-x64-gnu": { + "version": "1.3.23", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.3.23.tgz", + "integrity": "sha512-rKqWnOmUyQfoKZuuXs/S0RNobN+kcUyMtwoCdRdCNqOlk1XZRCMpjGc9Aqn73K3xlZ6JXX6oLrXKn375b2dydw==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core/node_modules/@swc/core-linux-x64-musl": { + "version": "1.3.23", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.3.23.tgz", + "integrity": "sha512-1MK9eocIhuIr/+yUKnTNHpYovMQvfKTJQbU4UMfQLg2qyCGKAvO+jOy5JIGR9x04MWqz9U3EHHS/7Id35ekhFQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core/node_modules/@swc/core-win32-arm64-msvc": { + "version": "1.3.23", + "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.3.23.tgz", + "integrity": "sha512-3nmdugj0SJIGWeCJBhvPWIfnE2Ax8H2KZsJfcaWmWg0SDh19aAt48Ncyd8WHHBandJmVm2fSjaANSjp+cS2S9A==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "win32" + ], + "peer": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core/node_modules/@swc/core-win32-ia32-msvc": { + "version": "1.3.23", + "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.3.23.tgz", + "integrity": "sha512-2AlGRhys1BsfLjXyWOd+5J/Ko2kkVQVuy3ZR8OBGy7XI54p0PpepabloYI9irr+4bi9vtyxoc5rS21PmJxB83Q==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "win32" + ], + "peer": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core/node_modules/@swc/core-win32-x64-msvc": { + "version": "1.3.23", + "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.3.23.tgz", + "integrity": "sha512-qYKP8sIM7VVLuDb5BkRBoHy28OHZWrUhPTO7WgpErhVVM9wnzmMi/Jgg8SyfMy6oheBjO0QiwWbXONxBwByjnQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "win32" + ], + "peer": true, "engines": { "node": ">=10" } @@ -4846,12 +5666,10 @@ } }, "node_modules/@swc/jest": { - "version": "0.2.24", + "version": "0.2.29", + "resolved": "https://registry.npmjs.org/@swc/jest/-/jest-0.2.29.tgz", + "integrity": "sha512-8reh5RvHBsSikDC3WGCd5ZTd2BXKkyOdK7QwynrCH58jk2cQFhhHhFBg/jvnWZehUQe/EoOImLENc9/DwbBFow==", "dev": true, - "license": "MIT", - "workspaces": [ - "examples/react" - ], "dependencies": { "@jest/create-cache-key-function": "^27.4.2", "jsonc-parser": "^3.2.0" @@ -4863,8 +5681,16 @@ "@swc/core": "*" } }, + "node_modules/@swc/types": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/@swc/types/-/types-0.1.5.tgz", + "integrity": "sha512-myfUej5naTBWnqOCc/MdVOLVjXUXtIA+NpDrDBKJtLLg2shUjBu3cZmB/85RyitKc55+lUUyl7oRfLOvkr2hsw==", + "dev": true + }, "node_modules/@szmarczak/http-timer": { "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-5.0.1.tgz", + "integrity": "sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw==", "dev": true, "license": "MIT", "dependencies": { @@ -4890,14 +5716,20 @@ }, "node_modules/@tsconfig/node10": { "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz", + "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==", "license": "MIT" }, "node_modules/@tsconfig/node12": { "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", + "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", "license": "MIT" }, "node_modules/@tsconfig/node14": { "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", + "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", "license": "MIT" }, "node_modules/@tsconfig/node16": { @@ -4905,44 +5737,50 @@ "license": "MIT" }, "node_modules/@types/babel__core": { - "version": "7.1.20", + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.2.tgz", + "integrity": "sha512-pNpr1T1xLUc2l3xJKuPtsEky3ybxN3m4fJkknfIpTCTfIZCDW57oAg+EfCgIIp2rvCe0Wn++/FfodDS4YXxBwA==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/parser": "^7.1.0", - "@babel/types": "^7.0.0", + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", "@types/babel__generator": "*", "@types/babel__template": "*", "@types/babel__traverse": "*" } }, "node_modules/@types/babel__generator": { - "version": "7.6.4", + "version": "7.6.5", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.5.tgz", + "integrity": "sha512-h9yIuWbJKdOPLJTbmSpPzkF67e659PbQDba7ifWm5BJ8xTv+sDmS7rFmywkWOvXedGTivCdeGSIIX8WLcRTz8w==", "dev": true, - "license": "MIT", "dependencies": { "@babel/types": "^7.0.0" } }, "node_modules/@types/babel__template": { - "version": "7.4.1", + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.2.tgz", + "integrity": "sha512-/AVzPICMhMOMYoSx9MoKpGDKdBRsIXMNByh1PXSZoa+v6ZoLa8xxtsT/uLQ/NJm0XVAWl/BvId4MlDeXJaeIZQ==", "dev": true, - "license": "MIT", "dependencies": { "@babel/parser": "^7.1.0", "@babel/types": "^7.0.0" } }, "node_modules/@types/babel__traverse": { - "version": "7.18.3", + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.2.tgz", + "integrity": "sha512-ojlGK1Hsfce93J0+kn3H5R73elidKUaZonirN33GSmgTUMpzI/MIFfSpF3haANe3G1bEBS9/9/QEqwTzwqFsKw==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/types": "^7.3.0" + "@babel/types": "^7.20.7" } }, "node_modules/@types/bluebird": { "version": "3.5.38", + "resolved": "https://registry.npmjs.org/@types/bluebird/-/bluebird-3.5.38.tgz", + "integrity": "sha512-yR/Kxc0dd4FfwtEoLZMoqJbM/VE/W7hXn/MIjb+axcwag0iFmSPK7OBUZq1YWLynJUoWQkfUrI7T0HDqGApNSg==", "dev": true, "license": "MIT" }, @@ -4957,6 +5795,12 @@ "@types/responselike": "^1.0.0" } }, + "node_modules/@types/chai": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.6.tgz", + "integrity": "sha512-VOVRLM1mBxIRxydiViqPcKn6MIxZytrbMpd6RJLIWKxUNr3zux8no0Oc7kJx0WAPIitgZ0gkrDS+btlqQpubpw==", + "dev": true + }, "node_modules/@types/debug": { "version": "4.1.7", "dev": true, @@ -4993,24 +5837,31 @@ }, "node_modules/@types/getos": { "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/getos/-/getos-3.0.1.tgz", + "integrity": "sha512-igBIU7ZwzRrVGYf0nQyISMJZjuDF+5T2v8gnqXGpIbMN7j/pk6s4uSHXfolXPMUZET6aCfG9xoPDT47oM9RN6A==", "dev": true, "license": "MIT" }, "node_modules/@types/graceful-fs": { - "version": "4.1.5", + "version": "4.1.6", + "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.6.tgz", + "integrity": "sha512-Sig0SNORX9fdW+bQuTEovKj3uHcUL6LQKbCrrqb1X7J6/ReAbhCXRAhc+SMejhLELFj2QcyuxmUooZ4bt5ReSw==", "dev": true, - "license": "MIT", "dependencies": { "@types/node": "*" } }, "node_modules/@types/http-cache-semantics": { "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.1.tgz", + "integrity": "sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ==", "dev": true, "license": "MIT" }, "node_modules/@types/is-ci": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/is-ci/-/is-ci-3.0.0.tgz", + "integrity": "sha512-Q0Op0hdWbYd1iahB+IFNQcWXFq4O0Q5MwQP7uN0souuQ4rPg1vEYcnIOfr1gY+M+6rc8FGoRaBO1mOOvL29sEQ==", "dev": true, "license": "MIT", "dependencies": { @@ -5019,11 +5870,15 @@ }, "node_modules/@types/istanbul-lib-coverage": { "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", + "integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==", "dev": true, "license": "MIT" }, "node_modules/@types/istanbul-lib-report": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==", "dev": true, "license": "MIT", "dependencies": { @@ -5032,6 +5887,8 @@ }, "node_modules/@types/istanbul-reports": { "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", + "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", "dev": true, "license": "MIT", "dependencies": { @@ -5039,9 +5896,10 @@ } }, "node_modules/@types/jest": { - "version": "29.2.4", + "version": "29.5.4", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.4.tgz", + "integrity": "sha512-PhglGmhWeD46FYOVLt3X7TiWjzwuVGW9wG/4qocPevXMjCmrIc5b6db9WjeGE4QYVpUAWMDv3v0IiBwObY289A==", "dev": true, - "license": "MIT", "dependencies": { "expect": "^29.0.0", "pretty-format": "^29.0.0" @@ -5055,6 +5913,8 @@ }, "node_modules/@types/json5": { "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", "license": "MIT" }, "node_modules/@types/keyv": { @@ -5070,32 +5930,42 @@ "dev": true, "license": "MIT" }, + "node_modules/@types/minimatch": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz", + "integrity": "sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==", + "dev": true + }, "node_modules/@types/minimist": { "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.2.tgz", + "integrity": "sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==", "dev": true, "license": "MIT" }, "node_modules/@types/ms": { "version": "0.7.31", + "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.31.tgz", + "integrity": "sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==", "dev": true, "license": "MIT" }, "node_modules/@types/node": { - "version": "18.11.17", - "license": "MIT" + "version": "18.17.15", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.17.15.tgz", + "integrity": "sha512-2yrWpBk32tvV/JAd3HNHWuZn/VDN1P+72hWirHnvsvTGSqbANi+kSeuQR9yAHnbvaBvHDsoTdXV0Fe+iRtHLKA==" }, "node_modules/@types/normalize-package-data": { "version": "2.4.1", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/prettier": { - "version": "2.7.2", + "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz", + "integrity": "sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==", "dev": true, "license": "MIT" }, "node_modules/@types/prop-types": { "version": "15.7.5", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz", + "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==", "dev": true, "license": "MIT" }, @@ -5132,24 +6002,34 @@ }, "node_modules/@types/sinonjs__fake-timers": { "version": "8.1.1", + "resolved": "https://registry.npmjs.org/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-8.1.1.tgz", + "integrity": "sha512-0kSuKjAS0TrGLJ0M/+8MaFkGsQhZpB6pxOmvS3K8FYI72K//YmdfoW9X2qPsAKh1mkwxGD5zib9s1FIFed6E8g==", "license": "MIT" }, "node_modules/@types/sizzle": { "version": "2.3.3", + "resolved": "https://registry.npmjs.org/@types/sizzle/-/sizzle-2.3.3.tgz", + "integrity": "sha512-JYM8x9EGF163bEyhdJBpR2QX1R5naCJHC8ucJylJ3w9/CVBaskdQ8WqBf8MmQrd1kRvp/a4TS8HJ+bxzR7ZJYQ==", "license": "MIT" }, "node_modules/@types/stack-utils": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz", + "integrity": "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==", "dev": true, "license": "MIT" }, "node_modules/@types/strip-bom": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-xevGOReSYGM7g/kUBZzPqCrR/KYAo+F0yiPc85WFTJa0MSLtyFTVTU6cJu/aV4mid7IffDIWqo69THF2o4JiEQ==", "dev": true, "license": "MIT" }, "node_modules/@types/strip-json-comments": { "version": "0.0.30", + "resolved": "https://registry.npmjs.org/@types/strip-json-comments/-/strip-json-comments-0.0.30.tgz", + "integrity": "sha512-7NQmHra/JILCd1QqpSzl8+mJRc8ZHz3uDm8YV1Ks9IhK0epEiTw8aIErbvH9PI+6XbqhyIQy3462nEsn7UVzjQ==", "dev": true, "license": "MIT" }, @@ -5171,11 +6051,15 @@ }, "node_modules/@types/yargs-parser": { "version": "21.0.0", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.0.tgz", + "integrity": "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==", "dev": true, "license": "MIT" }, "node_modules/@types/yauzl": { "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha512-Cn6WYCm0tXv8p6k+A8PvbDG763EDpBoTzHdA+Q/MF6H3sapGjCm9NzoaJncJS9tUKSuCoDs9XHxYYsQDgxR6kw==", "license": "MIT", "optional": true, "dependencies": { @@ -5464,6 +6348,8 @@ }, "node_modules/acorn-walk": { "version": "8.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", + "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", "license": "MIT", "engines": { "node": ">=0.4.0" @@ -5471,11 +6357,15 @@ }, "node_modules/add-stream": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/add-stream/-/add-stream-1.0.0.tgz", + "integrity": "sha512-qQLMr+8o0WC4FZGQTcJiKBVC59JylcPSrTtk6usvmIDFUOCKegapy1VHQwRbFMOFyb/inzUVqHs+eMYKDM1YeQ==", "dev": true, "license": "MIT" }, "node_modules/aggregate-error": { "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", "license": "MIT", "dependencies": { "clean-stack": "^2.0.0", @@ -5487,6 +6377,8 @@ }, "node_modules/ajv": { "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.1", @@ -5534,6 +6426,8 @@ }, "node_modules/ajv-formats/node_modules/json-schema-traverse": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", "dev": true, "license": "MIT", "peer": true @@ -5549,6 +6443,8 @@ }, "node_modules/ansi-align": { "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz", + "integrity": "sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==", "dev": true, "license": "ISC", "dependencies": { @@ -5557,6 +6453,8 @@ }, "node_modules/ansi-colors": { "version": "4.1.3", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", + "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", "license": "MIT", "engines": { "node": ">=6" @@ -5564,6 +6462,8 @@ }, "node_modules/ansi-escapes": { "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", "license": "MIT", "dependencies": { "type-fest": "^0.21.3" @@ -5577,6 +6477,8 @@ }, "node_modules/ansi-escapes/node_modules/type-fest": { "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=10" @@ -5587,6 +6489,8 @@ }, "node_modules/ansi-regex": { "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "license": "MIT", "engines": { "node": ">=8" @@ -5594,6 +6498,8 @@ }, "node_modules/ansi-styles": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -5607,11 +6513,15 @@ }, "node_modules/any-promise": { "version": "1.3.0", + "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", + "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==", "dev": true, "license": "MIT" }, "node_modules/anymatch": { "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", "dev": true, "license": "ISC", "dependencies": { @@ -5635,6 +6545,8 @@ }, "node_modules/arch": { "version": "2.2.0", + "resolved": "https://registry.npmjs.org/arch/-/arch-2.2.0.tgz", + "integrity": "sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==", "funding": [ { "type": "github", @@ -5658,10 +6570,14 @@ }, "node_modules/arg": { "version": "4.1.3", + "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", + "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", "license": "MIT" }, "node_modules/argparse": { "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", "license": "MIT", "dependencies": { "sprintf-js": "~1.0.2" @@ -5678,8 +6594,19 @@ "node": ">=6.0" } }, + "node_modules/array-differ": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-3.0.0.tgz", + "integrity": "sha512-THtfYS6KtME/yIAhKjZ2ul7XI96lQGHRputJQHO80LAWQnuGP4iCIN8vdMRboGbIEYBwU33q8Tch1os2+X0kMg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/array-ify": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-ify/-/array-ify-1.0.0.tgz", + "integrity": "sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng==", "dev": true, "license": "MIT" }, @@ -5702,6 +6629,8 @@ }, "node_modules/array-union": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", "license": "MIT", "engines": { "node": ">=8" @@ -5725,6 +6654,8 @@ }, "node_modules/array.prototype.flatmap": { "version": "1.3.1", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.1.tgz", + "integrity": "sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ==", "license": "MIT", "dependencies": { "call-bind": "^1.0.2", @@ -5741,6 +6672,8 @@ }, "node_modules/array.prototype.map": { "version": "1.0.5", + "resolved": "https://registry.npmjs.org/array.prototype.map/-/array.prototype.map-1.0.5.tgz", + "integrity": "sha512-gfaKntvwqYIuC7mLLyv2wzZIJqrRhn5PZ9EfFejSx6a78sV7iDsGpG9P+3oUPtm1Rerqm6nrKS4FYuTIvWfo3g==", "dev": true, "license": "MIT", "dependencies": { @@ -5759,6 +6692,8 @@ }, "node_modules/array.prototype.tosorted": { "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.1.tgz", + "integrity": "sha512-pZYPXPRl2PqWcsUs6LOMn+1f1532nEoPTYowBtqLwAW+W8vSVhkIGnmOX1t/UQjD6YGI0vcD2B1U7ZFGQH9jnQ==", "license": "MIT", "dependencies": { "call-bind": "^1.0.2", @@ -5770,6 +6705,8 @@ }, "node_modules/arrify": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==", "dev": true, "license": "MIT", "engines": { @@ -5792,8 +6729,19 @@ "node": ">=0.8" } }, + "node_modules/assertion-error": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", + "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", + "dev": true, + "engines": { + "node": "*" + } + }, "node_modules/ast-types": { "version": "0.13.4", + "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.13.4.tgz", + "integrity": "sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w==", "dev": true, "license": "MIT", "dependencies": { @@ -5805,10 +6753,14 @@ }, "node_modules/ast-types-flow": { "version": "0.0.7", + "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.7.tgz", + "integrity": "sha512-eBvWn1lvIApYMhzQMsu9ciLfkBY499mFZlNqG+/9WR7PVlroQw0vG30cOQQbaKz3sCEc44TAOu2ykzqXSNnwag==", "license": "ISC" }, "node_modules/astral-regex": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", "license": "MIT", "engines": { "node": ">=8" @@ -5816,10 +6768,14 @@ }, "node_modules/async": { "version": "3.2.4", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", + "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==", "license": "MIT" }, "node_modules/async-retry": { "version": "1.3.3", + "resolved": "https://registry.npmjs.org/async-retry/-/async-retry-1.3.3.tgz", + "integrity": "sha512-wfr/jstw9xNi/0teMHrRW7dsz3Lt5ARhYNZ2ewpadnhaIp5mbALhOAP+EAdsC7t4Z6wqsDVv9+W6gm1Dk9mEyw==", "dev": true, "license": "MIT", "dependencies": { @@ -5828,10 +6784,14 @@ }, "node_modules/asynckit": { "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", "license": "MIT" }, "node_modules/at-least-node": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", + "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", "license": "ISC", "engines": { "node": ">= 4.0.0" @@ -5876,6 +6836,8 @@ }, "node_modules/axios/node_modules/proxy-from-env": { "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", "license": "MIT" }, "node_modules/axobject-query": { @@ -5883,14 +6845,15 @@ "license": "Apache-2.0" }, "node_modules/babel-jest": { - "version": "29.3.1", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.7.0.tgz", + "integrity": "sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==", "dev": true, - "license": "MIT", "dependencies": { - "@jest/transform": "^29.3.1", + "@jest/transform": "^29.7.0", "@types/babel__core": "^7.1.14", "babel-plugin-istanbul": "^6.1.1", - "babel-preset-jest": "^29.2.0", + "babel-preset-jest": "^29.6.3", "chalk": "^4.0.0", "graceful-fs": "^4.2.9", "slash": "^3.0.0" @@ -5921,6 +6884,8 @@ }, "node_modules/babel-plugin-istanbul": { "version": "6.1.1", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", + "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", "dev": true, "license": "BSD-3-Clause", "dependencies": { @@ -5935,9 +6900,10 @@ } }, "node_modules/babel-plugin-jest-hoist": { - "version": "29.2.0", + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.6.3.tgz", + "integrity": "sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==", "dev": true, - "license": "MIT", "dependencies": { "@babel/template": "^7.3.3", "@babel/types": "^7.3.3", @@ -5964,6 +6930,8 @@ }, "node_modules/babel-plugin-polyfill-corejs2/node_modules/semver": { "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, "license": "ISC", "peer": true, @@ -5998,8 +6966,9 @@ }, "node_modules/babel-preset-current-node-syntax": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz", + "integrity": "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==", "dev": true, - "license": "MIT", "dependencies": { "@babel/plugin-syntax-async-generators": "^7.8.4", "@babel/plugin-syntax-bigint": "^7.8.3", @@ -6019,11 +6988,12 @@ } }, "node_modules/babel-preset-jest": { - "version": "29.2.0", + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.6.3.tgz", + "integrity": "sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==", "dev": true, - "license": "MIT", "dependencies": { - "babel-plugin-jest-hoist": "^29.2.0", + "babel-plugin-jest-hoist": "^29.6.3", "babel-preset-current-node-syntax": "^1.0.0" }, "engines": { @@ -6035,6 +7005,8 @@ }, "node_modules/balanced-match": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", "license": "MIT" }, "node_modules/base-x": { @@ -6047,6 +7019,8 @@ }, "node_modules/base64-js": { "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", "funding": [ { "type": "github", @@ -6082,6 +7056,8 @@ }, "node_modules/before-after-hook": { "version": "2.2.3", + "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.2.3.tgz", + "integrity": "sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ==", "dev": true, "license": "Apache-2.0" }, @@ -6096,6 +7072,8 @@ }, "node_modules/binary-extensions": { "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", "dev": true, "license": "MIT", "engines": { @@ -6104,6 +7082,8 @@ }, "node_modules/bl": { "version": "5.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-5.1.0.tgz", + "integrity": "sha512-tv1ZJHLfTDnXE6tMHv73YgSJaWR2AFuPwMntBe7XL/GBFHnT0CLnsHMogfk5+GzCDC5ZWarSCYaIGATZt9dNsQ==", "dev": true, "license": "MIT", "dependencies": { @@ -6114,6 +7094,8 @@ }, "node_modules/bl/node_modules/buffer": { "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", "dev": true, "funding": [ { @@ -6137,10 +7119,14 @@ }, "node_modules/blob-util": { "version": "2.0.2", + "resolved": "https://registry.npmjs.org/blob-util/-/blob-util-2.0.2.tgz", + "integrity": "sha512-T7JQa+zsXXEa6/8ZhHcQEW1UFfVM49Ts65uBkFL6fz2QmrElqmbajIDJvuA0tEhRe5eIjpV9ZF+0RfZR9voJFQ==", "license": "Apache-2.0" }, "node_modules/bluebird": { "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", "license": "MIT" }, "node_modules/boolbase": { @@ -6171,6 +7157,8 @@ }, "node_modules/boxen/node_modules/ansi-regex": { "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", "dev": true, "license": "MIT", "engines": { @@ -6182,6 +7170,8 @@ }, "node_modules/boxen/node_modules/ansi-styles": { "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", "dev": true, "license": "MIT", "engines": { @@ -6215,6 +7205,8 @@ }, "node_modules/boxen/node_modules/string-width": { "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", "dev": true, "license": "MIT", "dependencies": { @@ -6273,6 +7265,8 @@ }, "node_modules/brace-expansion": { "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", @@ -6281,6 +7275,8 @@ }, "node_modules/braces": { "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", "license": "MIT", "dependencies": { "fill-range": "^7.0.1" @@ -6322,14 +7318,17 @@ }, "node_modules/bser": { "version": "2.1.1", + "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", + "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", "dev": true, - "license": "Apache-2.0", "dependencies": { "node-int64": "^0.4.0" } }, "node_modules/buffer": { "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", "funding": [ { "type": "github", @@ -6352,6 +7351,8 @@ }, "node_modules/buffer-crc32": { "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", "license": "MIT", "engines": { "node": "*" @@ -6359,6 +7360,8 @@ }, "node_modules/buffer-from": { "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", "license": "MIT" }, "node_modules/bundle-name": { @@ -6378,6 +7381,8 @@ }, "node_modules/cac": { "version": "6.7.14", + "resolved": "https://registry.npmjs.org/cac/-/cac-6.7.14.tgz", + "integrity": "sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==", "dev": true, "license": "MIT", "engines": { @@ -6386,6 +7391,8 @@ }, "node_modules/cacheable-lookup": { "version": "7.0.0", + "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-7.0.0.tgz", + "integrity": "sha512-+qJyx4xiKra8mZrcwhjMRMUhD5NR1R8esPkzIYxX96JiecFoxAXFuz/GpR3+ev4PE1WamHip78wV0vcmPQtp8w==", "dev": true, "license": "MIT", "engines": { @@ -6412,6 +7419,8 @@ }, "node_modules/cacheable-request/node_modules/mimic-response": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-4.0.0.tgz", + "integrity": "sha512-e5ISH9xMYU0DzrT+jl8q2ze9D6eWBto+I8CNpe+VI+K2J/F/k3PdkdTdz4wvGVH4NTpo+NRYTVIuMQEMMcsLqg==", "dev": true, "license": "MIT", "engines": { @@ -6444,6 +7453,8 @@ }, "node_modules/call-bind": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", "license": "MIT", "dependencies": { "function-bind": "^1.1.1", @@ -6455,6 +7466,8 @@ }, "node_modules/callsites": { "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", "license": "MIT", "engines": { "node": ">=6" @@ -6462,6 +7475,8 @@ }, "node_modules/camelcase": { "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", "dev": true, "license": "MIT", "engines": { @@ -6470,6 +7485,8 @@ }, "node_modules/camelcase-keys": { "version": "6.2.2", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-6.2.2.tgz", + "integrity": "sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==", "dev": true, "license": "MIT", "dependencies": { @@ -6486,6 +7503,8 @@ }, "node_modules/camelcase-keys/node_modules/map-obj": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.3.0.tgz", + "integrity": "sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==", "dev": true, "license": "MIT", "engines": { @@ -6497,6 +7516,8 @@ }, "node_modules/camelcase-keys/node_modules/quick-lru": { "version": "4.0.1", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz", + "integrity": "sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==", "dev": true, "license": "MIT", "engines": { @@ -6526,9 +7547,28 @@ "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==" }, + "node_modules/chai": { + "version": "4.3.8", + "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.8.tgz", + "integrity": "sha512-vX4YvVVtxlfSZ2VecZgFUTU5qPCYsobVI2O9FmwEXBhDigYGQA6jRXCycIs1yJnnWbZ6/+a2zNIF5DfVCcJBFQ==", + "dev": true, + "dependencies": { + "assertion-error": "^1.1.0", + "check-error": "^1.0.2", + "deep-eql": "^4.1.2", + "get-func-name": "^2.0.0", + "loupe": "^2.3.1", + "pathval": "^1.1.1", + "type-detect": "^4.0.5" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/chalk": { "version": "4.1.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -6542,6 +7582,8 @@ }, "node_modules/chalk/node_modules/supports-color": { "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -6552,14 +7594,17 @@ }, "node_modules/char-regex": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", + "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", "dev": true, - "license": "MIT", "engines": { "node": ">=10" } }, "node_modules/chardet": { "version": "0.7.0", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", "dev": true, "license": "MIT" }, @@ -6630,6 +7675,8 @@ }, "node_modules/check-code-coverage/node_modules/get-stream": { "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", "dev": true, "license": "MIT", "dependencies": { @@ -6716,8 +7763,19 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/check-error": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", + "integrity": "sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA==", + "dev": true, + "engines": { + "node": "*" + } + }, "node_modules/check-more-types": { "version": "2.24.0", + "resolved": "https://registry.npmjs.org/check-more-types/-/check-more-types-2.24.0.tgz", + "integrity": "sha512-Pj779qHxV2tuapviy1bSZNEL1maXr13bPYpsvSDB68HlYcYuhlDrmGd63i0JHMCLKzc7rUSNIrpdJlhVlNwrxA==", "license": "MIT", "engines": { "node": ">= 0.8.0" @@ -6725,6 +7783,8 @@ }, "node_modules/chokidar": { "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", "dev": true, "funding": [ { @@ -6765,12 +7825,15 @@ } }, "node_modules/cjs-module-lexer": { - "version": "1.2.2", - "dev": true, - "license": "MIT" + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.3.tgz", + "integrity": "sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ==", + "dev": true }, "node_modules/clean-stack": { "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", "license": "MIT", "engines": { "node": ">=6" @@ -6778,6 +7841,8 @@ }, "node_modules/cli-boxes": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-3.0.0.tgz", + "integrity": "sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==", "dev": true, "license": "MIT", "engines": { @@ -6789,6 +7854,8 @@ }, "node_modules/cli-cursor": { "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", "license": "MIT", "dependencies": { "restore-cursor": "^3.1.0" @@ -6811,6 +7878,8 @@ }, "node_modules/cli-table3": { "version": "0.6.3", + "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.3.tgz", + "integrity": "sha512-w5Jac5SykAeZJKntOxJCrm63Eg5/4dhMWIcuTbo9rpE+brgaSZo0RuNJZeOyMgsUdhDeojvgyQLmjI+K50ZGyg==", "license": "MIT", "dependencies": { "string-width": "^4.2.0" @@ -6824,6 +7893,8 @@ }, "node_modules/cli-truncate": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-2.1.0.tgz", + "integrity": "sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==", "license": "MIT", "dependencies": { "slice-ansi": "^3.0.0", @@ -6838,6 +7909,8 @@ }, "node_modules/cli-truncate/node_modules/slice-ansi": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-3.0.0.tgz", + "integrity": "sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==", "license": "MIT", "dependencies": { "ansi-styles": "^4.0.0", @@ -6859,10 +7932,14 @@ }, "node_modules/client-only": { "version": "0.0.1", + "resolved": "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz", + "integrity": "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==", "license": "MIT" }, "node_modules/cliui": { "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", "dev": true, "license": "ISC", "dependencies": { @@ -6876,6 +7953,8 @@ }, "node_modules/clone": { "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", "dev": true, "license": "MIT", "engines": { @@ -6903,20 +7982,24 @@ }, "node_modules/co": { "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", "dev": true, - "license": "MIT", "engines": { "iojs": ">= 1.0.0", "node": ">= 0.12.0" } }, "node_modules/collect-v8-coverage": { - "version": "1.0.1", - "dev": true, - "license": "MIT" + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz", + "integrity": "sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==", + "dev": true }, "node_modules/color-convert": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -6927,14 +8010,26 @@ }, "node_modules/color-name": { "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "license": "MIT" }, "node_modules/colorette": { "version": "2.0.19", "license": "MIT" }, + "node_modules/colors": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", + "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", + "engines": { + "node": ">=0.1.90" + } + }, "node_modules/combined-stream": { "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", "license": "MIT", "dependencies": { "delayed-stream": "~1.0.0" @@ -6953,10 +8048,13 @@ }, "node_modules/common-path-prefix": { "version": "3.0.0", - "license": "ISC" + "resolved": "https://registry.npmjs.org/common-path-prefix/-/common-path-prefix-3.0.0.tgz", + "integrity": "sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==" }, "node_modules/common-tags": { "version": "1.8.2", + "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.8.2.tgz", + "integrity": "sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==", "license": "MIT", "engines": { "node": ">=4.0.0" @@ -6969,6 +8067,8 @@ }, "node_modules/compare-func": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/compare-func/-/compare-func-2.0.0.tgz", + "integrity": "sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==", "dev": true, "license": "MIT", "dependencies": { @@ -6978,6 +8078,8 @@ }, "node_modules/compare-func/node_modules/dot-prop": { "version": "5.3.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", + "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", "dev": true, "license": "MIT", "dependencies": { @@ -6989,10 +8091,14 @@ }, "node_modules/concat-map": { "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", "license": "MIT" }, "node_modules/concat-stream": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-2.0.0.tgz", + "integrity": "sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==", "dev": true, "engines": [ "node >= 6.0" @@ -7007,6 +8113,8 @@ }, "node_modules/concurrently": { "version": "7.6.0", + "resolved": "https://registry.npmjs.org/concurrently/-/concurrently-7.6.0.tgz", + "integrity": "sha512-BKtRgvcJGeZ4XttiDiNcFiRlxoAeZOseqUvyYRUp/Vtd+9p1ULmeoSqGsDA+2ivdeDFpqrJvGvmI+StKfKl5hw==", "dev": true, "license": "MIT", "dependencies": { @@ -7033,6 +8141,8 @@ }, "node_modules/config-chain": { "version": "1.1.13", + "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.13.tgz", + "integrity": "sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==", "dev": true, "license": "MIT", "dependencies": { @@ -7042,6 +8152,8 @@ }, "node_modules/configstore": { "version": "6.0.0", + "resolved": "https://registry.npmjs.org/configstore/-/configstore-6.0.0.tgz", + "integrity": "sha512-cD31W1v3GqUlQvbBCGcXmd2Nj9SvLDOP1oQ0YFuLETufzSPaKp11rYBsSOm7rCsW3OnIRAFM3OxRhceaXNYHkA==", "dev": true, "license": "BSD-2-Clause", "dependencies": { @@ -7060,6 +8172,8 @@ }, "node_modules/convert-source-map": { "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", "dev": true, "license": "MIT" }, @@ -7106,11 +8220,15 @@ }, "node_modules/cosmiconfig/node_modules/argparse": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", "dev": true, "license": "Python-2.0" }, "node_modules/cosmiconfig/node_modules/js-yaml": { "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "dev": true, "license": "MIT", "dependencies": { @@ -7120,12 +8238,37 @@ "js-yaml": "bin/js-yaml.js" } }, + "node_modules/create-jest": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/create-jest/-/create-jest-29.7.0.tgz", + "integrity": "sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==", + "dev": true, + "dependencies": { + "@jest/types": "^29.6.3", + "chalk": "^4.0.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "jest-config": "^29.7.0", + "jest-util": "^29.7.0", + "prompts": "^2.0.1" + }, + "bin": { + "create-jest": "bin/create-jest.js" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, "node_modules/create-require": { "version": "1.1.1", + "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", + "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", "license": "MIT" }, "node_modules/cross-spawn": { "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", "license": "MIT", "dependencies": { "path-key": "^3.1.0", @@ -7138,6 +8281,8 @@ }, "node_modules/cross-spawn/node_modules/path-key": { "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", "license": "MIT", "engines": { "node": ">=8" @@ -7145,6 +8290,8 @@ }, "node_modules/cross-spawn/node_modules/which": { "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", "license": "ISC", "dependencies": { "isexe": "^2.0.0" @@ -7158,6 +8305,8 @@ }, "node_modules/crypto-random-string": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-4.0.0.tgz", + "integrity": "sha512-x8dy3RnvYdlUcPOjkEHqozhiwzKNSq7GcPuXFbnyMOCHxX8V3OgIg/pYuabl2sbUPfIJaeAQB7PMOK8DFIdoRA==", "dev": true, "license": "MIT", "dependencies": { @@ -7172,6 +8321,8 @@ }, "node_modules/crypto-random-string/node_modules/type-fest": { "version": "1.4.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz", + "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==", "dev": true, "license": "(MIT OR CC0-1.0)", "engines": { @@ -7325,6 +8476,8 @@ }, "node_modules/cy2": { "version": "3.4.3", + "resolved": "https://registry.npmjs.org/cy2/-/cy2-3.4.3.tgz", + "integrity": "sha512-I1yfJWJTRy2ROti1TlLM5Qk86WSeKMrtZbY/G6VD2tjm3VKTu6pDkpcV56C2HhN+txK5p6MMsmzKXJM2W9JlxA==", "license": "MIT", "dependencies": { "acorn": "^8.8.0", @@ -7344,10 +8497,14 @@ }, "node_modules/cy2/node_modules/argparse": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", "license": "Python-2.0" }, "node_modules/cy2/node_modules/js-yaml": { "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "license": "MIT", "dependencies": { "argparse": "^2.0.1" @@ -7357,14 +8514,14 @@ } }, "node_modules/cypress": { - "version": "13.0.0", - "resolved": "https://registry.npmjs.org/cypress/-/cypress-13.0.0.tgz", - "integrity": "sha512-nWHU5dUxP2Wm/zrMd8SWTTl706aJex/l+H4vi/tbu2SWUr17BUcd/sIYeqyxeoSPW1JFV2pT1pf4JEImH/POMg==", + "version": "13.2.0", + "resolved": "https://registry.npmjs.org/cypress/-/cypress-13.2.0.tgz", + "integrity": "sha512-AvDQxBydE771GTq0TR4ZUBvv9m9ffXuB/ueEtpDF/6gOcvFR96amgwSJP16Yhqw6VhmwqspT5nAGzoxxB+D89g==", "hasInstallScript": true, "dependencies": { "@cypress/request": "^3.0.0", "@cypress/xvfb": "^1.2.4", - "@types/node": "^16.18.39", + "@types/node": "^18.17.5", "@types/sinonjs__fake-timers": "8.1.1", "@types/sizzle": "^2.3.2", "arch": "^2.2.0", @@ -7413,6 +8570,14 @@ "node": "^16.0.0 || ^18.0.0 || >=20.0.0" } }, + "node_modules/cypress-12-demo": { + "resolved": "e2e/cypress-12-demo", + "link": true + }, + "node_modules/cypress-13-demo": { + "resolved": "e2e/cypress-13-demo", + "link": true + }, "node_modules/cypress-cloud": { "resolved": "packages/cypress-cloud", "link": true @@ -7435,6 +8600,8 @@ }, "node_modules/cypress-terminal-report/node_modules/fs-extra": { "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", "license": "MIT", "dependencies": { "graceful-fs": "^4.2.0", @@ -7445,17 +8612,16 @@ "node": ">=12" } }, - "node_modules/cypress/node_modules/@types/node": { - "version": "16.18.46", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.46.tgz", - "integrity": "sha512-Mnq3O9Xz52exs3mlxMcQuA7/9VFe/dXcrgAyfjLkABIqxXKOgBRjyazTxUbjsxDa4BP7hhPliyjVTP9RDP14xg==" - }, "node_modules/damerau-levenshtein": { "version": "1.0.8", + "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz", + "integrity": "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==", "license": "BSD-2-Clause" }, "node_modules/dargs": { "version": "7.0.0", + "resolved": "https://registry.npmjs.org/dargs/-/dargs-7.0.0.tgz", + "integrity": "sha512-2iy1EkLdlBzQGvbweYRFxmFath8+K7+AKB0TlhHWkNuH+TmovaMH/Wp7V7R4u7f4SnX3OgLsU9t1NI9ioDnUpg==", "dev": true, "license": "MIT", "engines": { @@ -7482,9 +8648,12 @@ } }, "node_modules/date-fns": { - "version": "2.29.3", - "dev": true, - "license": "MIT", + "version": "2.30.0", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.30.0.tgz", + "integrity": "sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==", + "dependencies": { + "@babel/runtime": "^7.21.0" + }, "engines": { "node": ">=0.11" }, @@ -7495,6 +8664,8 @@ }, "node_modules/dateformat": { "version": "3.0.3", + "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-3.0.3.tgz", + "integrity": "sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==", "dev": true, "license": "MIT", "engines": { @@ -7503,10 +8674,14 @@ }, "node_modules/dayjs": { "version": "1.11.9", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.9.tgz", + "integrity": "sha512-QvzAURSbQ0pKdIye2txOzNaHmxtUBXerpY0FJsFXUMKbIZeFm5ht1LS/jFsrncjnmtv8HsG0W2g6c0zUjZWmpA==", "license": "MIT" }, "node_modules/debug": { "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "license": "MIT", "dependencies": { "ms": "2.1.2" @@ -7522,6 +8697,8 @@ }, "node_modules/decamelize": { "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", "dev": true, "license": "MIT", "engines": { @@ -7530,6 +8707,8 @@ }, "node_modules/decamelize-keys": { "version": "1.1.1", + "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.1.tgz", + "integrity": "sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==", "dev": true, "license": "MIT", "dependencies": { @@ -7545,6 +8724,8 @@ }, "node_modules/decompress-response": { "version": "6.0.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", + "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", "dev": true, "license": "MIT", "dependencies": { @@ -7558,12 +8739,35 @@ } }, "node_modules/dedent": { - "version": "0.7.0", + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.5.1.tgz", + "integrity": "sha512-+LxW+KLWxu3HW3M2w2ympwtqPrqYRzU8fqi6Fhd18fBALe15blJPI/I4+UHveMVG6lJqB4JNd4UG0S5cnVHwIg==", "dev": true, - "license": "MIT" + "peerDependencies": { + "babel-plugin-macros": "^3.1.0" + }, + "peerDependenciesMeta": { + "babel-plugin-macros": { + "optional": true + } + } + }, + "node_modules/deep-eql": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.3.tgz", + "integrity": "sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==", + "dev": true, + "dependencies": { + "type-detect": "^4.0.0" + }, + "engines": { + "node": ">=6" + } }, "node_modules/deep-extend": { "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", "dev": true, "license": "MIT", "engines": { @@ -7572,12 +8776,15 @@ }, "node_modules/deep-is": { "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", "license": "MIT" }, "node_modules/deepmerge": { - "version": "4.2.2", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -7742,6 +8949,8 @@ }, "node_modules/default-require-extensions/node_modules/strip-bom": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", + "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", "dev": true, "license": "MIT", "engines": { @@ -7750,6 +8959,8 @@ }, "node_modules/defaults": { "version": "1.0.4", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", + "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", "dev": true, "license": "MIT", "dependencies": { @@ -7761,6 +8972,8 @@ }, "node_modules/defer-to-connect": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz", + "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==", "dev": true, "license": "MIT", "engines": { @@ -7783,6 +8996,8 @@ }, "node_modules/delayed-stream": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", "license": "MIT", "engines": { "node": ">=0.4.0" @@ -7790,6 +9005,8 @@ }, "node_modules/deprecation": { "version": "2.3.1", + "resolved": "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz", + "integrity": "sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==", "dev": true, "license": "ISC" }, @@ -7806,29 +9023,35 @@ }, "node_modules/detect-newline": { "version": "3.1.0", + "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", + "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/diff": { "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", "license": "BSD-3-Clause", "engines": { "node": ">=0.3.1" } }, "node_modules/diff-sequences": { - "version": "29.3.1", + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", + "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", "dev": true, - "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/dir-glob": { "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", "license": "MIT", "dependencies": { "path-type": "^4.0.0" @@ -7839,6 +9062,8 @@ }, "node_modules/doctrine": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", "license": "Apache-2.0", "dependencies": { "esutils": "^2.0.2" @@ -7908,6 +9133,8 @@ }, "node_modules/dot-prop": { "version": "6.0.1", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-6.0.1.tgz", + "integrity": "sha512-tE7ztYzXHIeyvc7N+hR3oi7FIbf/NIjVP9hmAt3yMXzrQ072/fpjGLx2GxNxGxUl5V73MEqYzioOMoVhGMJ5cA==", "dev": true, "license": "MIT", "dependencies": { @@ -7940,6 +9167,8 @@ }, "node_modules/eastasianwidth": { "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", "dev": true, "license": "MIT" }, @@ -7959,8 +9188,9 @@ }, "node_modules/emittery": { "version": "0.13.1", + "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz", + "integrity": "sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=12" }, @@ -7970,10 +9200,14 @@ }, "node_modules/emoji-regex": { "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", "license": "MIT" }, "node_modules/end-of-stream": { "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", "license": "MIT", "dependencies": { "once": "^1.4.0" @@ -8015,6 +9249,8 @@ }, "node_modules/error-ex": { "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", "dev": true, "license": "MIT", "dependencies": { @@ -8060,6 +9296,8 @@ }, "node_modules/es-array-method-boxes-properly": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz", + "integrity": "sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==", "dev": true, "license": "MIT" }, @@ -8089,6 +9327,8 @@ }, "node_modules/es-shim-unscopables": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz", + "integrity": "sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==", "license": "MIT", "dependencies": { "has": "^1.0.3" @@ -8096,6 +9336,8 @@ }, "node_modules/es-to-primitive": { "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", "license": "MIT", "dependencies": { "is-callable": "^1.1.4", @@ -8116,6 +9358,8 @@ }, "node_modules/esbuild": { "version": "0.16.17", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.16.17.tgz", + "integrity": "sha512-G8LEkV0XzDMNwXKgM0Jwu3nY3lSTwSGY6XbxM9cr9+s0T/qSV1q1JVPBGzm3dcjhCic9+emZDmMffkwgPeOeLg==", "dev": true, "hasInstallScript": true, "license": "MIT", @@ -8152,6 +9396,8 @@ }, "node_modules/escalade": { "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", "dev": true, "license": "MIT", "engines": { @@ -8160,6 +9406,8 @@ }, "node_modules/escape-goat": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-goat/-/escape-goat-4.0.0.tgz", + "integrity": "sha512-2Sd4ShcWxbx6OY1IHyla/CVNwvg7XwZVoXZHcSu9w9SReNP1EzzD5T8NWKIR38fIqEns9kDWKUQTXXAmlDrdPg==", "dev": true, "license": "MIT", "engines": { @@ -8171,6 +9419,8 @@ }, "node_modules/escape-string-regexp": { "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", "license": "MIT", "engines": { "node": ">=0.8.0" @@ -8198,6 +9448,8 @@ }, "node_modules/eslint": { "version": "7.32.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.32.0.tgz", + "integrity": "sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==", "license": "MIT", "dependencies": { "@babel/code-frame": "7.12.11", @@ -8308,6 +9560,8 @@ }, "node_modules/eslint-config-next/node_modules/resolve": { "version": "2.0.0-next.4", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.4.tgz", + "integrity": "sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ==", "license": "MIT", "dependencies": { "is-core-module": "^2.9.0", @@ -8359,6 +9613,8 @@ }, "node_modules/eslint-import-resolver-typescript": { "version": "2.7.1", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-2.7.1.tgz", + "integrity": "sha512-00UbgGwV8bSgUv34igBDbTOtKhqoRMy9bFjNehT40bXg6585PNIct8HhXZ0SybqB9rWtXj9crcku8ndDn/gIqQ==", "license": "ISC", "dependencies": { "debug": "^4.3.4", @@ -8483,6 +9739,8 @@ }, "node_modules/eslint-plugin-react-hooks": { "version": "4.6.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz", + "integrity": "sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==", "license": "MIT", "engines": { "node": ">=10" @@ -8493,6 +9751,8 @@ }, "node_modules/eslint-plugin-react/node_modules/resolve": { "version": "2.0.0-next.4", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.4.tgz", + "integrity": "sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ==", "license": "MIT", "dependencies": { "is-core-module": "^2.9.0", @@ -8534,6 +9794,8 @@ }, "node_modules/eslint-scope": { "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", "license": "BSD-2-Clause", "dependencies": { "esrecurse": "^4.3.0", @@ -8545,6 +9807,8 @@ }, "node_modules/eslint-scope/node_modules/estraverse": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", "license": "BSD-2-Clause", "engines": { "node": ">=4.0" @@ -8552,6 +9816,8 @@ }, "node_modules/eslint-utils": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", + "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", "license": "MIT", "dependencies": { "eslint-visitor-keys": "^1.1.0" @@ -8565,6 +9831,8 @@ }, "node_modules/eslint-visitor-keys": { "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", "license": "Apache-2.0", "engines": { "node": ">=4" @@ -8572,6 +9840,8 @@ }, "node_modules/eslint/node_modules/@babel/code-frame": { "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", + "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", "license": "MIT", "dependencies": { "@babel/highlight": "^7.10.4" @@ -8579,6 +9849,8 @@ }, "node_modules/eslint/node_modules/doctrine": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", "license": "Apache-2.0", "dependencies": { "esutils": "^2.0.2" @@ -8589,6 +9861,8 @@ }, "node_modules/eslint/node_modules/escape-string-regexp": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", "license": "MIT", "engines": { "node": ">=10" @@ -8599,6 +9873,8 @@ }, "node_modules/eslint/node_modules/eslint-visitor-keys": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", "license": "Apache-2.0", "engines": { "node": ">=10" @@ -8621,6 +9897,8 @@ }, "node_modules/eslint/node_modules/prelude-ls": { "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", "license": "MIT", "engines": { "node": ">= 0.8.0" @@ -8628,6 +9906,8 @@ }, "node_modules/eslint/node_modules/type-check": { "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", "license": "MIT", "dependencies": { "prelude-ls": "^1.2.1" @@ -8638,6 +9918,8 @@ }, "node_modules/espree": { "version": "7.3.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", + "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==", "license": "BSD-2-Clause", "dependencies": { "acorn": "^7.4.0", @@ -8650,6 +9932,8 @@ }, "node_modules/espree/node_modules/acorn": { "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", "license": "MIT", "bin": { "acorn": "bin/acorn" @@ -8660,6 +9944,8 @@ }, "node_modules/espree/node_modules/acorn-jsx": { "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", "license": "MIT", "peerDependencies": { "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" @@ -8667,6 +9953,8 @@ }, "node_modules/esprima": { "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", "license": "BSD-2-Clause", "bin": { "esparse": "bin/esparse.js", @@ -8688,6 +9976,8 @@ }, "node_modules/esrecurse": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", "license": "BSD-2-Clause", "dependencies": { "estraverse": "^5.2.0" @@ -8698,6 +9988,8 @@ }, "node_modules/estraverse": { "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "license": "BSD-2-Clause", "engines": { "node": ">=4.0" @@ -8705,6 +9997,8 @@ }, "node_modules/esutils": { "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", "license": "BSD-2-Clause", "engines": { "node": ">=0.10.0" @@ -8726,6 +10020,8 @@ }, "node_modules/eventemitter2": { "version": "6.4.7", + "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-6.4.7.tgz", + "integrity": "sha512-tYUSVOGeQPKt/eC1ABfhHy5Xd96N3oIijJvN3O9+TsC28T5V9yX9oEfEK5faP0EFSNVOG97qtAS68GBrQB2hDg==", "license": "MIT" }, "node_modules/events": { @@ -8743,6 +10039,8 @@ }, "node_modules/execa": { "version": "4.1.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz", + "integrity": "sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==", "license": "MIT", "dependencies": { "cross-spawn": "^7.0.0", @@ -8764,6 +10062,8 @@ }, "node_modules/execa/node_modules/get-stream": { "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", "license": "MIT", "dependencies": { "pump": "^3.0.0" @@ -8777,6 +10077,8 @@ }, "node_modules/executable": { "version": "4.1.1", + "resolved": "https://registry.npmjs.org/executable/-/executable-4.1.1.tgz", + "integrity": "sha512-8iA79xD3uAch729dUG8xaaBBFGaEa0wdD2VkYLFHwlqosEj/jT66AzcreRDSgV7ehnNLBW2WR5jIXwGKjVdTLg==", "license": "MIT", "dependencies": { "pify": "^2.2.0" @@ -8787,21 +10089,24 @@ }, "node_modules/exit": { "version": "0.1.2", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", "dev": true, "engines": { "node": ">= 0.8.0" } }, "node_modules/expect": { - "version": "29.3.1", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/expect/-/expect-29.7.0.tgz", + "integrity": "sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==", "dev": true, - "license": "MIT", "dependencies": { - "@jest/expect-utils": "^29.3.1", - "jest-get-type": "^29.2.0", - "jest-matcher-utils": "^29.3.1", - "jest-message-util": "^29.3.1", - "jest-util": "^29.3.1" + "@jest/expect-utils": "^29.7.0", + "jest-get-type": "^29.6.3", + "jest-matcher-utils": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -8814,6 +10119,8 @@ }, "node_modules/external-editor": { "version": "3.1.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", + "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", "dev": true, "license": "MIT", "dependencies": { @@ -8827,6 +10134,8 @@ }, "node_modules/external-editor/node_modules/tmp": { "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", "dev": true, "license": "MIT", "dependencies": { @@ -8838,6 +10147,8 @@ }, "node_modules/extract-zip": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", + "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", "license": "BSD-2-Clause", "dependencies": { "debug": "^4.1.1", @@ -8856,6 +10167,8 @@ }, "node_modules/extract-zip/node_modules/get-stream": { "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", "license": "MIT", "dependencies": { "pump": "^3.0.0" @@ -8877,6 +10190,8 @@ }, "node_modules/fast-deep-equal": { "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", "license": "MIT" }, "node_modules/fast-glob": { @@ -8896,10 +10211,14 @@ }, "node_modules/fast-json-stable-stringify": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", "license": "MIT" }, "node_modules/fast-levenshtein": { "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", "license": "MIT" }, "node_modules/fast-safe-stringify": { @@ -8916,14 +10235,17 @@ }, "node_modules/fb-watchman": { "version": "2.0.2", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", + "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", "dev": true, - "license": "Apache-2.0", "dependencies": { "bser": "2.1.1" } }, "node_modules/fd-slicer": { "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", + "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", "license": "MIT", "dependencies": { "pend": "~1.2.0" @@ -8931,6 +10253,8 @@ }, "node_modules/fetch-blob": { "version": "3.2.0", + "resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.2.0.tgz", + "integrity": "sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==", "dev": true, "funding": [ { @@ -8953,6 +10277,8 @@ }, "node_modules/figures": { "version": "3.2.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", + "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", "license": "MIT", "dependencies": { "escape-string-regexp": "^1.0.5" @@ -8966,6 +10292,8 @@ }, "node_modules/file-entry-cache": { "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", "license": "MIT", "dependencies": { "flat-cache": "^3.0.4" @@ -8976,6 +10304,8 @@ }, "node_modules/fill-range": { "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", "license": "MIT", "dependencies": { "to-regex-range": "^5.0.1" @@ -9117,6 +10447,8 @@ }, "node_modules/find-up": { "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "dev": true, "license": "MIT", "dependencies": { @@ -9144,6 +10476,8 @@ }, "node_modules/follow-redirects": { "version": "1.15.2", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", + "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", "funding": [ { "type": "individual", @@ -9182,6 +10516,8 @@ }, "node_modules/form-data": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", "license": "MIT", "dependencies": { "asynckit": "^0.4.0", @@ -9194,6 +10530,8 @@ }, "node_modules/form-data-encoder": { "version": "2.1.4", + "resolved": "https://registry.npmjs.org/form-data-encoder/-/form-data-encoder-2.1.4.tgz", + "integrity": "sha512-yDYSgNMraqvnxiEXO4hi88+YZxaHC6QKzb5N84iRCTDeRO7ZALpir/lVmf/uXUhnwUr2O4HU8s/n6x+yNjQkHw==", "dev": true, "license": "MIT", "engines": { @@ -9202,6 +10540,8 @@ }, "node_modules/formdata-polyfill": { "version": "4.0.10", + "resolved": "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz", + "integrity": "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==", "dev": true, "license": "MIT", "dependencies": { @@ -9237,6 +10577,8 @@ }, "node_modules/fs-extra": { "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", "license": "MIT", "dependencies": { "at-least-node": "^1.0.0", @@ -9250,6 +10592,8 @@ }, "node_modules/fs.realpath": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", "license": "ISC" }, "node_modules/fsevents": { @@ -9266,6 +10610,8 @@ }, "node_modules/function-bind": { "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", "license": "MIT" }, "node_modules/function.prototype.name": { @@ -9286,6 +10632,8 @@ }, "node_modules/functional-red-black-tree": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==", "license": "MIT" }, "node_modules/functions-have-names": { @@ -9297,6 +10645,8 @@ }, "node_modules/gensync": { "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", "dev": true, "license": "MIT", "engines": { @@ -9305,12 +10655,23 @@ }, "node_modules/get-caller-file": { "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", "dev": true, "license": "ISC", "engines": { "node": "6.* || 8.* || >= 10.*" } }, + "node_modules/get-func-name": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", + "integrity": "sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig==", + "dev": true, + "engines": { + "node": "*" + } + }, "node_modules/get-intrinsic": { "version": "1.1.3", "license": "MIT", @@ -9325,6 +10686,8 @@ }, "node_modules/get-package-type": { "version": "0.1.0", + "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", + "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", "dev": true, "license": "MIT", "engines": { @@ -9333,6 +10696,8 @@ }, "node_modules/get-pkg-repo": { "version": "4.2.1", + "resolved": "https://registry.npmjs.org/get-pkg-repo/-/get-pkg-repo-4.2.1.tgz", + "integrity": "sha512-2+QbHjFRfGB74v/pYWjd5OhU3TDIC2Gv/YKUTk/tCvAz0pkn/Mz6P3uByuBimLOcPvN2jYdScl3xGFSrx0jEcA==", "dev": true, "license": "MIT", "dependencies": { @@ -9350,6 +10715,8 @@ }, "node_modules/get-pkg-repo/node_modules/cliui": { "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", "dev": true, "license": "ISC", "dependencies": { @@ -9360,11 +10727,15 @@ }, "node_modules/get-pkg-repo/node_modules/core-util-is": { "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", "dev": true, "license": "MIT" }, "node_modules/get-pkg-repo/node_modules/isarray": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", "dev": true, "license": "MIT" }, @@ -9384,11 +10755,15 @@ }, "node_modules/get-pkg-repo/node_modules/safe-buffer": { "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", "dev": true, "license": "MIT" }, "node_modules/get-pkg-repo/node_modules/string_decoder": { "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dev": true, "license": "MIT", "dependencies": { @@ -9397,6 +10772,8 @@ }, "node_modules/get-pkg-repo/node_modules/through2": { "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", "dev": true, "license": "MIT", "dependencies": { @@ -9406,6 +10783,8 @@ }, "node_modules/get-pkg-repo/node_modules/yargs": { "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", "dev": true, "license": "MIT", "dependencies": { @@ -9431,6 +10810,8 @@ }, "node_modules/get-stream": { "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", "license": "MIT", "engines": { "node": ">=10" @@ -9441,6 +10822,8 @@ }, "node_modules/get-symbol-description": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", + "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", "license": "MIT", "dependencies": { "call-bind": "^1.0.2", @@ -9455,6 +10838,8 @@ }, "node_modules/getos": { "version": "3.2.1", + "resolved": "https://registry.npmjs.org/getos/-/getos-3.2.1.tgz", + "integrity": "sha512-U56CfOK17OKgTVqozZjUKNdkfEv6jk5WISBJ8SHoagjE6L69zOwl3Z+O8myjY9MEW3i2HPWQBt/LTbCgcC973Q==", "license": "MIT", "dependencies": { "async": "^3.2.0" @@ -9470,6 +10855,8 @@ }, "node_modules/git-remote-origin-url": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/git-remote-origin-url/-/git-remote-origin-url-2.0.0.tgz", + "integrity": "sha512-eU+GGrZgccNJcsDH5LkXR3PB9M958hxc7sbA8DFJjrv9j4L2P/eZfKhM+QD6wyzpiv+b1BpK0XrYCxkovtjSLw==", "dev": true, "license": "MIT", "dependencies": { @@ -9482,6 +10869,8 @@ }, "node_modules/git-up": { "version": "7.0.0", + "resolved": "https://registry.npmjs.org/git-up/-/git-up-7.0.0.tgz", + "integrity": "sha512-ONdIrbBCFusq1Oy0sC71F5azx8bVkvtZtMJAsv+a6lz5YAmbNnLD6HAB4gptHZVLPR8S2/kVN6Gab7lryq5+lQ==", "dev": true, "license": "MIT", "dependencies": { @@ -9491,6 +10880,8 @@ }, "node_modules/git-url-parse": { "version": "13.1.0", + "resolved": "https://registry.npmjs.org/git-url-parse/-/git-url-parse-13.1.0.tgz", + "integrity": "sha512-5FvPJP/70WkIprlUZ33bm4UAaFdjcLkJLpWft1BeZKqwR0uhhNGoKwlUaPtVb4LxCSQ++erHapRak9kWGj+FCA==", "dev": true, "license": "MIT", "dependencies": { @@ -9499,6 +10890,8 @@ }, "node_modules/gitconfiglocal": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/gitconfiglocal/-/gitconfiglocal-1.0.0.tgz", + "integrity": "sha512-spLUXeTAVHxDtKsJc8FkFVgFtMdEN9qPGpL23VfSHx4fP4+Ds097IXLvymbnDH8FnmxX5Nr9bPw3A+AQ6mWEaQ==", "dev": true, "license": "BSD", "dependencies": { @@ -9507,6 +10900,8 @@ }, "node_modules/glob": { "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", "license": "ISC", "dependencies": { "fs.realpath": "^1.0.0", @@ -9525,6 +10920,8 @@ }, "node_modules/glob-parent": { "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "license": "ISC", "dependencies": { "is-glob": "^4.0.1" @@ -9535,12 +10932,16 @@ }, "node_modules/glob-to-regexp": { "version": "0.4.1", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", "dev": true, "license": "BSD-2-Clause", "peer": true }, "node_modules/global-dirs": { "version": "3.0.1", + "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.1.tgz", + "integrity": "sha512-NBcGGFbBA9s1VzD41QXDG+3++t9Mn5t1FpLdhESY6oKY4gYTFpX4wO3sqGUa0Srjtbfj3szX0RnemmrVRUdULA==", "license": "MIT", "dependencies": { "ini": "2.0.0" @@ -9554,6 +10955,8 @@ }, "node_modules/global-dirs/node_modules/ini": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz", + "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==", "license": "ISC", "engines": { "node": ">=10" @@ -9574,6 +10977,8 @@ }, "node_modules/globals/node_modules/type-fest": { "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=10" @@ -9584,6 +10989,8 @@ }, "node_modules/globby": { "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", "license": "MIT", "dependencies": { "array-union": "^2.1.0", @@ -9602,6 +11009,8 @@ }, "node_modules/globby/node_modules/ignore": { "version": "5.2.4", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", + "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", "license": "MIT", "engines": { "node": ">= 4" @@ -9609,6 +11018,8 @@ }, "node_modules/gopd": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", "license": "MIT", "dependencies": { "get-intrinsic": "^1.1.3" @@ -9643,6 +11054,8 @@ }, "node_modules/graceful-fs": { "version": "4.2.10", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", "license": "ISC" }, "node_modules/handlebars": { @@ -9667,6 +11080,8 @@ }, "node_modules/hard-rejection": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz", + "integrity": "sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==", "dev": true, "license": "MIT", "engines": { @@ -9675,6 +11090,8 @@ }, "node_modules/has": { "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", "license": "MIT", "dependencies": { "function-bind": "^1.1.1" @@ -9685,6 +11102,8 @@ }, "node_modules/has-bigints": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" @@ -9692,6 +11111,8 @@ }, "node_modules/has-flag": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "license": "MIT", "engines": { "node": ">=8" @@ -9699,6 +11120,8 @@ }, "node_modules/has-property-descriptors": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", + "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", "license": "MIT", "dependencies": { "get-intrinsic": "^1.1.1" @@ -9709,6 +11132,8 @@ }, "node_modules/has-symbols": { "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", "license": "MIT", "engines": { "node": ">= 0.4" @@ -9719,6 +11144,8 @@ }, "node_modules/has-tostringtag": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", "license": "MIT", "dependencies": { "has-symbols": "^1.0.2" @@ -9732,6 +11159,8 @@ }, "node_modules/has-yarn": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-yarn/-/has-yarn-3.0.0.tgz", + "integrity": "sha512-IrsVwUHhEULx3R8f/aA8AHuEzAorplsab/v8HBzEiIukwq5i/EC+xmOW+HfP1OaDP+2JkgT1yILHN2O3UFIbcA==", "dev": true, "license": "MIT", "engines": { @@ -9766,6 +11195,8 @@ }, "node_modules/hosted-git-info": { "version": "4.1.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", + "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", "dev": true, "license": "ISC", "dependencies": { @@ -9777,6 +11208,8 @@ }, "node_modules/html-escaper": { "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", "dev": true, "license": "MIT" }, @@ -9846,6 +11279,8 @@ }, "node_modules/http-cache-semantics": { "version": "4.1.1", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", + "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==", "dev": true, "license": "BSD-2-Clause" }, @@ -9864,6 +11299,8 @@ }, "node_modules/http2-wrapper": { "version": "2.2.0", + "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-2.2.0.tgz", + "integrity": "sha512-kZB0wxMo0sh1PehyjJUWRFEd99KC5TLjZ2cULC4f9iqJBAmKQQXEICjxl5iPJRwP40dpeHFqqhm7tYCvODpqpQ==", "dev": true, "license": "MIT", "dependencies": { @@ -9876,13 +11313,32 @@ }, "node_modules/human-signals": { "version": "1.1.1", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz", + "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==", "license": "Apache-2.0", "engines": { "node": ">=8.12.0" } }, + "node_modules/husky": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/husky/-/husky-8.0.3.tgz", + "integrity": "sha512-+dQSyqPh4x1hlO1swXBiNb2HzTDN1I2IGLQx1GrBuiqFJfoMrnZWwVmatvSiO+Iz8fBUnf+lekwNo4c2LlXItg==", + "dev": true, + "bin": { + "husky": "lib/bin.js" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/typicode" + } + }, "node_modules/iconv-lite": { "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", "dev": true, "license": "MIT", "dependencies": { @@ -9894,6 +11350,8 @@ }, "node_modules/ieee754": { "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", "funding": [ { "type": "github", @@ -9912,6 +11370,8 @@ }, "node_modules/ignore": { "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", "license": "MIT", "engines": { "node": ">= 4" @@ -9919,6 +11379,8 @@ }, "node_modules/import-fresh": { "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", "license": "MIT", "dependencies": { "parent-module": "^1.0.0", @@ -9933,6 +11395,8 @@ }, "node_modules/import-fresh/node_modules/resolve-from": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", "license": "MIT", "engines": { "node": ">=4" @@ -9940,6 +11404,8 @@ }, "node_modules/import-lazy": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-4.0.0.tgz", + "integrity": "sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==", "dev": true, "license": "MIT", "engines": { @@ -9948,8 +11414,9 @@ }, "node_modules/import-local": { "version": "3.1.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", + "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", "dev": true, - "license": "MIT", "dependencies": { "pkg-dir": "^4.2.0", "resolve-cwd": "^3.0.0" @@ -9966,6 +11433,8 @@ }, "node_modules/imurmurhash": { "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", "license": "MIT", "engines": { "node": ">=0.8.19" @@ -9973,6 +11442,8 @@ }, "node_modules/indent-string": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", "license": "MIT", "engines": { "node": ">=8" @@ -9980,6 +11451,8 @@ }, "node_modules/inflight": { "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", "license": "ISC", "dependencies": { "once": "^1.3.0", @@ -9988,10 +11461,14 @@ }, "node_modules/inherits": { "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", "license": "ISC" }, "node_modules/ini": { "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", "dev": true, "license": "ISC" }, @@ -10009,6 +11486,8 @@ }, "node_modules/interpret": { "version": "1.4.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", + "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", "dev": true, "license": "MIT", "engines": { @@ -10017,11 +11496,23 @@ }, "node_modules/ip": { "version": "1.1.8", + "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.8.tgz", + "integrity": "sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg==", "dev": true, "license": "MIT" }, + "node_modules/irregular-plurals": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/irregular-plurals/-/irregular-plurals-3.5.0.tgz", + "integrity": "sha512-1ANGLZ+Nkv1ptFb2pa8oG8Lem4krflKuX/gINiHJHjJUKaJHk/SXk5x6K3J+39/p0h1RQ2saROclJJ+QLvETCQ==", + "engines": { + "node": ">=8" + } + }, "node_modules/is-absolute": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-1.0.0.tgz", + "integrity": "sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==", "license": "MIT", "dependencies": { "is-relative": "^1.0.0", @@ -10048,11 +11539,15 @@ }, "node_modules/is-arrayish": { "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", "dev": true, "license": "MIT" }, "node_modules/is-bigint": { "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", "license": "MIT", "dependencies": { "has-bigints": "^1.0.1" @@ -10063,6 +11558,8 @@ }, "node_modules/is-binary-path": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", "dev": true, "license": "MIT", "dependencies": { @@ -10074,6 +11571,8 @@ }, "node_modules/is-boolean-object": { "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", "license": "MIT", "dependencies": { "call-bind": "^1.0.2", @@ -10088,6 +11587,8 @@ }, "node_modules/is-callable": { "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", "license": "MIT", "engines": { "node": ">= 0.4" @@ -10098,6 +11599,8 @@ }, "node_modules/is-ci": { "version": "3.0.1", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-3.0.1.tgz", + "integrity": "sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==", "license": "MIT", "dependencies": { "ci-info": "^3.2.0" @@ -10118,6 +11621,8 @@ }, "node_modules/is-date-object": { "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", "license": "MIT", "dependencies": { "has-tostringtag": "^1.0.0" @@ -10131,6 +11636,8 @@ }, "node_modules/is-docker": { "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", "dev": true, "license": "MIT", "bin": { @@ -10145,6 +11652,8 @@ }, "node_modules/is-extglob": { "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", "license": "MIT", "engines": { "node": ">=0.10.0" @@ -10152,6 +11661,8 @@ }, "node_modules/is-fullwidth-code-point": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "license": "MIT", "engines": { "node": ">=8" @@ -10159,14 +11670,17 @@ }, "node_modules/is-generator-fn": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", + "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/is-glob": { "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", "license": "MIT", "dependencies": { "is-extglob": "^2.1.1" @@ -10210,6 +11724,8 @@ }, "node_modules/is-installed-globally": { "version": "0.4.0", + "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.4.0.tgz", + "integrity": "sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==", "license": "MIT", "dependencies": { "global-dirs": "^3.0.0", @@ -10224,6 +11740,8 @@ }, "node_modules/is-interactive": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-2.0.0.tgz", + "integrity": "sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ==", "dev": true, "license": "MIT", "engines": { @@ -10240,6 +11758,8 @@ }, "node_modules/is-map": { "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.2.tgz", + "integrity": "sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==", "dev": true, "license": "MIT", "funding": { @@ -10248,6 +11768,8 @@ }, "node_modules/is-negative-zero": { "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", + "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", "license": "MIT", "engines": { "node": ">= 0.4" @@ -10258,6 +11780,8 @@ }, "node_modules/is-npm": { "version": "6.0.0", + "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-6.0.0.tgz", + "integrity": "sha512-JEjxbSmtPSt1c8XTkVrlujcXdKV1/tvuQ7GwKcAlyiVLeYFQ2VHat8xfrDJsIkhCdF/tZ7CiIR3sy141c6+gPQ==", "dev": true, "license": "MIT", "engines": { @@ -10269,6 +11793,8 @@ }, "node_modules/is-number": { "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "license": "MIT", "engines": { "node": ">=0.12.0" @@ -10276,6 +11802,8 @@ }, "node_modules/is-number-object": { "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", + "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", "license": "MIT", "dependencies": { "has-tostringtag": "^1.0.0" @@ -10289,6 +11817,8 @@ }, "node_modules/is-obj": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", + "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", "dev": true, "license": "MIT", "engines": { @@ -10297,6 +11827,8 @@ }, "node_modules/is-path-inside": { "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", "license": "MIT", "engines": { "node": ">=8" @@ -10304,6 +11836,8 @@ }, "node_modules/is-plain-obj": { "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==", "dev": true, "license": "MIT", "engines": { @@ -10312,6 +11846,8 @@ }, "node_modules/is-plain-object": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", + "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", "dev": true, "license": "MIT", "engines": { @@ -10320,6 +11856,8 @@ }, "node_modules/is-regex": { "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", "license": "MIT", "dependencies": { "call-bind": "^1.0.2", @@ -10334,6 +11872,8 @@ }, "node_modules/is-relative": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-1.0.0.tgz", + "integrity": "sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==", "license": "MIT", "dependencies": { "is-unc-path": "^1.0.0" @@ -10344,6 +11884,8 @@ }, "node_modules/is-retry-allowed": { "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-2.2.0.tgz", + "integrity": "sha512-XVm7LOeLpTW4jV19QSH38vkswxoLud8sQ57YwJVTPWdiaI9I8keEhGFpBlslyVsgdQy4Opg8QOLb8YRgsyZiQg==", "license": "MIT", "engines": { "node": ">=10" @@ -10354,6 +11896,8 @@ }, "node_modules/is-set": { "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.2.tgz", + "integrity": "sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==", "dev": true, "license": "MIT", "funding": { @@ -10362,6 +11906,8 @@ }, "node_modules/is-shared-array-buffer": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", + "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", "license": "MIT", "dependencies": { "call-bind": "^1.0.2" @@ -10372,6 +11918,8 @@ }, "node_modules/is-ssh": { "version": "1.4.0", + "resolved": "https://registry.npmjs.org/is-ssh/-/is-ssh-1.4.0.tgz", + "integrity": "sha512-x7+VxdxOdlV3CYpjvRLBv5Lo9OJerlYanjwFrPR9fuGPjCiNiCzFgAWpiLAohSbsnH4ZAys3SBh+hq5rJosxUQ==", "dev": true, "license": "MIT", "dependencies": { @@ -10380,6 +11928,8 @@ }, "node_modules/is-stream": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", "license": "MIT", "engines": { "node": ">=8" @@ -10390,6 +11940,8 @@ }, "node_modules/is-string": { "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", "license": "MIT", "dependencies": { "has-tostringtag": "^1.0.0" @@ -10403,6 +11955,8 @@ }, "node_modules/is-symbol": { "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", "license": "MIT", "dependencies": { "has-symbols": "^1.0.2" @@ -10416,6 +11970,8 @@ }, "node_modules/is-text-path": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-text-path/-/is-text-path-1.0.1.tgz", + "integrity": "sha512-xFuJpne9oFz5qDaodwmmG08e3CawH/2ZV8Qqza1Ko7Sk8POWbkRdwIoAWVhqvq0XeUzANEhKo2n0IXUGBm7A/w==", "dev": true, "license": "MIT", "dependencies": { @@ -10427,10 +11983,14 @@ }, "node_modules/is-typedarray": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", "license": "MIT" }, "node_modules/is-unc-path": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-1.0.0.tgz", + "integrity": "sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==", "license": "MIT", "dependencies": { "unc-path-regex": "^0.1.2" @@ -10441,6 +12001,8 @@ }, "node_modules/is-unicode-supported": { "version": "1.3.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-1.3.0.tgz", + "integrity": "sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==", "dev": true, "license": "MIT", "engines": { @@ -10452,6 +12014,8 @@ }, "node_modules/is-weakref": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", + "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", "license": "MIT", "dependencies": { "call-bind": "^1.0.2" @@ -10462,6 +12026,8 @@ }, "node_modules/is-windows": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", "license": "MIT", "engines": { "node": ">=0.10.0" @@ -10469,6 +12035,8 @@ }, "node_modules/is-wsl": { "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", "dev": true, "license": "MIT", "dependencies": { @@ -10480,6 +12048,8 @@ }, "node_modules/is-yarn-global": { "version": "0.4.1", + "resolved": "https://registry.npmjs.org/is-yarn-global/-/is-yarn-global-0.4.1.tgz", + "integrity": "sha512-/kppl+R+LO5VmhYSEWARUFjodS25D68gvj8W7z0I7OWhUla5xWu8KL6CtB2V0R6yqhnRgbcaREMr4EEM6htLPQ==", "dev": true, "license": "MIT", "engines": { @@ -10488,11 +12058,15 @@ }, "node_modules/isarray": { "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", "dev": true, "license": "MIT" }, "node_modules/isexe": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", "license": "ISC" }, "node_modules/isstream": { @@ -10518,6 +12092,8 @@ }, "node_modules/istanbul-lib-coverage": { "version": "3.2.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", + "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", "dev": true, "license": "BSD-3-Clause", "engines": { @@ -10537,6 +12113,8 @@ }, "node_modules/istanbul-lib-instrument": { "version": "5.2.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", + "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", "dev": true, "license": "BSD-3-Clause", "dependencies": { @@ -10600,6 +12178,8 @@ }, "node_modules/istanbul-lib-report/node_modules/supports-color": { "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "license": "MIT", "dependencies": { @@ -10611,6 +12191,8 @@ }, "node_modules/istanbul-lib-source-maps": { "version": "4.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", + "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", "dev": true, "license": "BSD-3-Clause", "dependencies": { @@ -10636,6 +12218,8 @@ }, "node_modules/iterate-iterator": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/iterate-iterator/-/iterate-iterator-1.0.2.tgz", + "integrity": "sha512-t91HubM4ZDQ70M9wqp+pcNpu8OyJ9UAtXntT/Bcsvp5tZMnz9vRa+IunKXeI8AnfZMTv0jNuVEmGeLSMjVvfPw==", "dev": true, "license": "MIT", "funding": { @@ -10644,6 +12228,8 @@ }, "node_modules/iterate-value": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/iterate-value/-/iterate-value-1.0.2.tgz", + "integrity": "sha512-A6fMAio4D2ot2r/TYzr4yUWrmwNdsN5xL7+HUiyACE4DXm+q8HtPcnFTp+NnW3k4N05tZ7FVYFFb2CR13NxyHQ==", "dev": true, "license": "MIT", "dependencies": { @@ -10655,14 +12241,15 @@ } }, "node_modules/jest": { - "version": "29.3.1", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest/-/jest-29.7.0.tgz", + "integrity": "sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==", "dev": true, - "license": "MIT", "dependencies": { - "@jest/core": "^29.3.1", - "@jest/types": "^29.3.1", + "@jest/core": "^29.7.0", + "@jest/types": "^29.6.3", "import-local": "^3.0.2", - "jest-cli": "^29.3.1" + "jest-cli": "^29.7.0" }, "bin": { "jest": "bin/jest.js" @@ -10680,11 +12267,13 @@ } }, "node_modules/jest-changed-files": { - "version": "29.2.0", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.7.0.tgz", + "integrity": "sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==", "dev": true, - "license": "MIT", "dependencies": { "execa": "^5.0.0", + "jest-util": "^29.7.0", "p-limit": "^3.1.0" }, "engines": { @@ -10693,8 +12282,9 @@ }, "node_modules/jest-changed-files/node_modules/execa": { "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", "dev": true, - "license": "MIT", "dependencies": { "cross-spawn": "^7.0.3", "get-stream": "^6.0.0", @@ -10715,34 +12305,37 @@ }, "node_modules/jest-changed-files/node_modules/human-signals": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", "dev": true, - "license": "Apache-2.0", "engines": { "node": ">=10.17.0" } }, "node_modules/jest-circus": { - "version": "29.3.1", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.7.0.tgz", + "integrity": "sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==", "dev": true, - "license": "MIT", "dependencies": { - "@jest/environment": "^29.3.1", - "@jest/expect": "^29.3.1", - "@jest/test-result": "^29.3.1", - "@jest/types": "^29.3.1", + "@jest/environment": "^29.7.0", + "@jest/expect": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/types": "^29.6.3", "@types/node": "*", "chalk": "^4.0.0", "co": "^4.6.0", - "dedent": "^0.7.0", + "dedent": "^1.0.0", "is-generator-fn": "^2.0.0", - "jest-each": "^29.3.1", - "jest-matcher-utils": "^29.3.1", - "jest-message-util": "^29.3.1", - "jest-runtime": "^29.3.1", - "jest-snapshot": "^29.3.1", - "jest-util": "^29.3.1", + "jest-each": "^29.7.0", + "jest-matcher-utils": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-runtime": "^29.7.0", + "jest-snapshot": "^29.7.0", + "jest-util": "^29.7.0", "p-limit": "^3.1.0", - "pretty-format": "^29.3.1", + "pretty-format": "^29.7.0", + "pure-rand": "^6.0.0", "slash": "^3.0.0", "stack-utils": "^2.0.3" }, @@ -10751,21 +12344,21 @@ } }, "node_modules/jest-cli": { - "version": "29.3.1", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.7.0.tgz", + "integrity": "sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==", "dev": true, - "license": "MIT", "dependencies": { - "@jest/core": "^29.3.1", - "@jest/test-result": "^29.3.1", - "@jest/types": "^29.3.1", + "@jest/core": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/types": "^29.6.3", "chalk": "^4.0.0", + "create-jest": "^29.7.0", "exit": "^0.1.2", - "graceful-fs": "^4.2.9", "import-local": "^3.0.2", - "jest-config": "^29.3.1", - "jest-util": "^29.3.1", - "jest-validate": "^29.3.1", - "prompts": "^2.0.1", + "jest-config": "^29.7.0", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", "yargs": "^17.3.1" }, "bin": { @@ -10784,30 +12377,31 @@ } }, "node_modules/jest-config": { - "version": "29.3.1", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.7.0.tgz", + "integrity": "sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==", "dev": true, - "license": "MIT", "dependencies": { "@babel/core": "^7.11.6", - "@jest/test-sequencer": "^29.3.1", - "@jest/types": "^29.3.1", - "babel-jest": "^29.3.1", + "@jest/test-sequencer": "^29.7.0", + "@jest/types": "^29.6.3", + "babel-jest": "^29.7.0", "chalk": "^4.0.0", "ci-info": "^3.2.0", "deepmerge": "^4.2.2", "glob": "^7.1.3", "graceful-fs": "^4.2.9", - "jest-circus": "^29.3.1", - "jest-environment-node": "^29.3.1", - "jest-get-type": "^29.2.0", - "jest-regex-util": "^29.2.0", - "jest-resolve": "^29.3.1", - "jest-runner": "^29.3.1", - "jest-util": "^29.3.1", - "jest-validate": "^29.3.1", + "jest-circus": "^29.7.0", + "jest-environment-node": "^29.7.0", + "jest-get-type": "^29.6.3", + "jest-regex-util": "^29.6.3", + "jest-resolve": "^29.7.0", + "jest-runner": "^29.7.0", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", "micromatch": "^4.0.4", "parse-json": "^5.2.0", - "pretty-format": "^29.3.1", + "pretty-format": "^29.7.0", "slash": "^3.0.0", "strip-json-comments": "^3.1.1" }, @@ -10828,23 +12422,25 @@ } }, "node_modules/jest-diff": { - "version": "29.3.1", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz", + "integrity": "sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==", "dev": true, - "license": "MIT", "dependencies": { "chalk": "^4.0.0", - "diff-sequences": "^29.3.1", - "jest-get-type": "^29.2.0", - "pretty-format": "^29.3.1" + "diff-sequences": "^29.6.3", + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-docblock": { - "version": "29.2.0", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.7.0.tgz", + "integrity": "sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==", "dev": true, - "license": "MIT", "dependencies": { "detect-newline": "^3.0.0" }, @@ -10853,58 +12449,62 @@ } }, "node_modules/jest-each": { - "version": "29.3.1", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.7.0.tgz", + "integrity": "sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==", "dev": true, - "license": "MIT", "dependencies": { - "@jest/types": "^29.3.1", + "@jest/types": "^29.6.3", "chalk": "^4.0.0", - "jest-get-type": "^29.2.0", - "jest-util": "^29.3.1", - "pretty-format": "^29.3.1" + "jest-get-type": "^29.6.3", + "jest-util": "^29.7.0", + "pretty-format": "^29.7.0" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-environment-node": { - "version": "29.3.1", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.7.0.tgz", + "integrity": "sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==", "dev": true, - "license": "MIT", "dependencies": { - "@jest/environment": "^29.3.1", - "@jest/fake-timers": "^29.3.1", - "@jest/types": "^29.3.1", + "@jest/environment": "^29.7.0", + "@jest/fake-timers": "^29.7.0", + "@jest/types": "^29.6.3", "@types/node": "*", - "jest-mock": "^29.3.1", - "jest-util": "^29.3.1" + "jest-mock": "^29.7.0", + "jest-util": "^29.7.0" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-get-type": { - "version": "29.2.0", + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz", + "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==", "dev": true, - "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-haste-map": { - "version": "29.3.1", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.7.0.tgz", + "integrity": "sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==", "dev": true, - "license": "MIT", "dependencies": { - "@jest/types": "^29.3.1", + "@jest/types": "^29.6.3", "@types/graceful-fs": "^4.1.3", "@types/node": "*", "anymatch": "^3.0.3", "fb-watchman": "^2.0.0", "graceful-fs": "^4.2.9", - "jest-regex-util": "^29.2.0", - "jest-util": "^29.3.1", - "jest-worker": "^29.3.1", + "jest-regex-util": "^29.6.3", + "jest-util": "^29.7.0", + "jest-worker": "^29.7.0", "micromatch": "^4.0.4", "walker": "^1.0.8" }, @@ -10916,43 +12516,46 @@ } }, "node_modules/jest-leak-detector": { - "version": "29.3.1", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz", + "integrity": "sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==", "dev": true, - "license": "MIT", "dependencies": { - "jest-get-type": "^29.2.0", - "pretty-format": "^29.3.1" + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-matcher-utils": { - "version": "29.3.1", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz", + "integrity": "sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==", "dev": true, - "license": "MIT", "dependencies": { "chalk": "^4.0.0", - "jest-diff": "^29.3.1", - "jest-get-type": "^29.2.0", - "pretty-format": "^29.3.1" + "jest-diff": "^29.7.0", + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-message-util": { - "version": "29.3.1", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz", + "integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==", "dev": true, - "license": "MIT", "dependencies": { "@babel/code-frame": "^7.12.13", - "@jest/types": "^29.3.1", + "@jest/types": "^29.6.3", "@types/stack-utils": "^2.0.0", "chalk": "^4.0.0", "graceful-fs": "^4.2.9", "micromatch": "^4.0.4", - "pretty-format": "^29.3.1", + "pretty-format": "^29.7.0", "slash": "^3.0.0", "stack-utils": "^2.0.3" }, @@ -10961,13 +12564,14 @@ } }, "node_modules/jest-mock": { - "version": "29.3.1", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.7.0.tgz", + "integrity": "sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==", "dev": true, - "license": "MIT", "dependencies": { - "@jest/types": "^29.3.1", + "@jest/types": "^29.6.3", "@types/node": "*", - "jest-util": "^29.3.1" + "jest-util": "^29.7.0" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -10975,8 +12579,9 @@ }, "node_modules/jest-pnp-resolver": { "version": "1.2.3", + "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", + "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", "dev": true, - "license": "MIT", "engines": { "node": ">=6" }, @@ -10990,26 +12595,28 @@ } }, "node_modules/jest-regex-util": { - "version": "29.2.0", + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.6.3.tgz", + "integrity": "sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==", "dev": true, - "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-resolve": { - "version": "29.3.1", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.7.0.tgz", + "integrity": "sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==", "dev": true, - "license": "MIT", "dependencies": { "chalk": "^4.0.0", "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.3.1", + "jest-haste-map": "^29.7.0", "jest-pnp-resolver": "^1.2.2", - "jest-util": "^29.3.1", - "jest-validate": "^29.3.1", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", "resolve": "^1.20.0", - "resolve.exports": "^1.1.0", + "resolve.exports": "^2.0.0", "slash": "^3.0.0" }, "engines": { @@ -11017,41 +12624,43 @@ } }, "node_modules/jest-resolve-dependencies": { - "version": "29.3.1", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.7.0.tgz", + "integrity": "sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==", "dev": true, - "license": "MIT", "dependencies": { - "jest-regex-util": "^29.2.0", - "jest-snapshot": "^29.3.1" + "jest-regex-util": "^29.6.3", + "jest-snapshot": "^29.7.0" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-runner": { - "version": "29.3.1", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.7.0.tgz", + "integrity": "sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==", "dev": true, - "license": "MIT", "dependencies": { - "@jest/console": "^29.3.1", - "@jest/environment": "^29.3.1", - "@jest/test-result": "^29.3.1", - "@jest/transform": "^29.3.1", - "@jest/types": "^29.3.1", + "@jest/console": "^29.7.0", + "@jest/environment": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", "@types/node": "*", "chalk": "^4.0.0", "emittery": "^0.13.1", "graceful-fs": "^4.2.9", - "jest-docblock": "^29.2.0", - "jest-environment-node": "^29.3.1", - "jest-haste-map": "^29.3.1", - "jest-leak-detector": "^29.3.1", - "jest-message-util": "^29.3.1", - "jest-resolve": "^29.3.1", - "jest-runtime": "^29.3.1", - "jest-util": "^29.3.1", - "jest-watcher": "^29.3.1", - "jest-worker": "^29.3.1", + "jest-docblock": "^29.7.0", + "jest-environment-node": "^29.7.0", + "jest-haste-map": "^29.7.0", + "jest-leak-detector": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-resolve": "^29.7.0", + "jest-runtime": "^29.7.0", + "jest-util": "^29.7.0", + "jest-watcher": "^29.7.0", + "jest-worker": "^29.7.0", "p-limit": "^3.1.0", "source-map-support": "0.5.13" }, @@ -11061,38 +12670,40 @@ }, "node_modules/jest-runner/node_modules/source-map-support": { "version": "0.5.13", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", + "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", "dev": true, - "license": "MIT", "dependencies": { "buffer-from": "^1.0.0", "source-map": "^0.6.0" } }, "node_modules/jest-runtime": { - "version": "29.3.1", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/environment": "^29.3.1", - "@jest/fake-timers": "^29.3.1", - "@jest/globals": "^29.3.1", - "@jest/source-map": "^29.2.0", - "@jest/test-result": "^29.3.1", - "@jest/transform": "^29.3.1", - "@jest/types": "^29.3.1", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.7.0.tgz", + "integrity": "sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==", + "dev": true, + "dependencies": { + "@jest/environment": "^29.7.0", + "@jest/fake-timers": "^29.7.0", + "@jest/globals": "^29.7.0", + "@jest/source-map": "^29.6.3", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", "@types/node": "*", "chalk": "^4.0.0", "cjs-module-lexer": "^1.0.0", "collect-v8-coverage": "^1.0.0", "glob": "^7.1.3", "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.3.1", - "jest-message-util": "^29.3.1", - "jest-mock": "^29.3.1", - "jest-regex-util": "^29.2.0", - "jest-resolve": "^29.3.1", - "jest-snapshot": "^29.3.1", - "jest-util": "^29.3.1", + "jest-haste-map": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-mock": "^29.7.0", + "jest-regex-util": "^29.6.3", + "jest-resolve": "^29.7.0", + "jest-snapshot": "^29.7.0", + "jest-util": "^29.7.0", "slash": "^3.0.0", "strip-bom": "^4.0.0" }, @@ -11102,52 +12713,51 @@ }, "node_modules/jest-runtime/node_modules/strip-bom": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", + "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/jest-snapshot": { - "version": "29.3.1", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.7.0.tgz", + "integrity": "sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==", "dev": true, - "license": "MIT", "dependencies": { "@babel/core": "^7.11.6", "@babel/generator": "^7.7.2", "@babel/plugin-syntax-jsx": "^7.7.2", "@babel/plugin-syntax-typescript": "^7.7.2", - "@babel/traverse": "^7.7.2", "@babel/types": "^7.3.3", - "@jest/expect-utils": "^29.3.1", - "@jest/transform": "^29.3.1", - "@jest/types": "^29.3.1", - "@types/babel__traverse": "^7.0.6", - "@types/prettier": "^2.1.5", + "@jest/expect-utils": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", "babel-preset-current-node-syntax": "^1.0.0", "chalk": "^4.0.0", - "expect": "^29.3.1", + "expect": "^29.7.0", "graceful-fs": "^4.2.9", - "jest-diff": "^29.3.1", - "jest-get-type": "^29.2.0", - "jest-haste-map": "^29.3.1", - "jest-matcher-utils": "^29.3.1", - "jest-message-util": "^29.3.1", - "jest-util": "^29.3.1", + "jest-diff": "^29.7.0", + "jest-get-type": "^29.6.3", + "jest-matcher-utils": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0", "natural-compare": "^1.4.0", - "pretty-format": "^29.3.1", - "semver": "^7.3.5" + "pretty-format": "^29.7.0", + "semver": "^7.5.3" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-util": { - "version": "29.3.1", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", + "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", "dev": true, - "license": "MIT", "dependencies": { - "@jest/types": "^29.3.1", + "@jest/types": "^29.6.3", "@types/node": "*", "chalk": "^4.0.0", "ci-info": "^3.2.0", @@ -11159,16 +12769,17 @@ } }, "node_modules/jest-validate": { - "version": "29.3.1", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.7.0.tgz", + "integrity": "sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==", "dev": true, - "license": "MIT", "dependencies": { - "@jest/types": "^29.3.1", + "@jest/types": "^29.6.3", "camelcase": "^6.2.0", "chalk": "^4.0.0", - "jest-get-type": "^29.2.0", + "jest-get-type": "^29.6.3", "leven": "^3.1.0", - "pretty-format": "^29.3.1" + "pretty-format": "^29.7.0" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -11176,8 +12787,9 @@ }, "node_modules/jest-validate/node_modules/camelcase": { "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", "dev": true, - "license": "MIT", "engines": { "node": ">=10" }, @@ -11186,17 +12798,18 @@ } }, "node_modules/jest-watcher": { - "version": "29.3.1", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.7.0.tgz", + "integrity": "sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==", "dev": true, - "license": "MIT", "dependencies": { - "@jest/test-result": "^29.3.1", - "@jest/types": "^29.3.1", + "@jest/test-result": "^29.7.0", + "@jest/types": "^29.6.3", "@types/node": "*", "ansi-escapes": "^4.2.1", "chalk": "^4.0.0", "emittery": "^0.13.1", - "jest-util": "^29.3.1", + "jest-util": "^29.7.0", "string-length": "^4.0.1" }, "engines": { @@ -11204,12 +12817,13 @@ } }, "node_modules/jest-worker": { - "version": "29.3.1", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz", + "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==", "dev": true, - "license": "MIT", "dependencies": { "@types/node": "*", - "jest-util": "^29.3.1", + "jest-util": "^29.7.0", "merge-stream": "^2.0.0", "supports-color": "^8.0.0" }, @@ -11231,6 +12845,8 @@ }, "node_modules/joycon": { "version": "3.1.1", + "resolved": "https://registry.npmjs.org/joycon/-/joycon-3.1.1.tgz", + "integrity": "sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==", "dev": true, "license": "MIT", "engines": { @@ -11239,10 +12855,14 @@ }, "node_modules/js-tokens": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", "license": "MIT" }, "node_modules/js-yaml": { "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", "license": "MIT", "dependencies": { "argparse": "^1.0.7", @@ -11259,6 +12879,8 @@ }, "node_modules/jsesc": { "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", "dev": true, "license": "MIT", "bin": { @@ -11270,16 +12892,22 @@ }, "node_modules/json-buffer": { "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", "dev": true, "license": "MIT" }, "node_modules/json-parse-better-errors": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", "dev": true, "license": "MIT" }, "node_modules/json-parse-even-better-errors": { "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", "dev": true, "license": "MIT" }, @@ -11290,14 +12918,20 @@ }, "node_modules/json-schema-traverse": { "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", "license": "MIT" }, "node_modules/json-stable-stringify-without-jsonify": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", "license": "MIT" }, "node_modules/json-stringify-safe": { "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==", "license": "ISC" }, "node_modules/json5": { @@ -11313,11 +12947,15 @@ }, "node_modules/jsonc-parser": { "version": "3.2.0", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz", + "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==", "dev": true, "license": "MIT" }, "node_modules/jsonfile": { "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", "license": "MIT", "dependencies": { "universalify": "^2.0.0" @@ -11328,6 +12966,8 @@ }, "node_modules/jsonparse": { "version": "1.3.1", + "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", + "integrity": "sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==", "dev": true, "engines": [ "node >= 0.2.0" @@ -11336,6 +12976,8 @@ }, "node_modules/JSONStream": { "version": "1.3.5", + "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz", + "integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==", "dev": true, "license": "(MIT OR Apache-2.0)", "dependencies": { @@ -11385,6 +13027,8 @@ }, "node_modules/kind-of": { "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", "dev": true, "license": "MIT", "engines": { @@ -11393,8 +13037,9 @@ }, "node_modules/kleur": { "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", "dev": true, - "license": "MIT", "engines": { "node": ">=6" } @@ -11412,6 +13057,8 @@ }, "node_modules/latest-version": { "version": "7.0.0", + "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-7.0.0.tgz", + "integrity": "sha512-KvNT4XqAMzdcL6ka6Tl3i2lYeFDgXNCuIX+xNx6ZMVR1dFq+idXd9FLKNMOIx0t9mJ9/HudyX4oZWXZQ0UJHeg==", "dev": true, "license": "MIT", "dependencies": { @@ -11426,6 +13073,8 @@ }, "node_modules/lazy-ass": { "version": "1.6.0", + "resolved": "https://registry.npmjs.org/lazy-ass/-/lazy-ass-1.6.0.tgz", + "integrity": "sha512-cc8oEVoctTvsFZ/Oje/kGnHbpWHYBe8IAJe4C0QNc3t8uM/0Y8+erSz/7Y1ALuXTEZTMvxXwO6YbX1ey3ujiZw==", "license": "MIT", "engines": { "node": "> 0.8" @@ -11433,14 +13082,17 @@ }, "node_modules/leven": { "version": "3.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", "dev": true, - "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/levn": { "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", "license": "MIT", "dependencies": { "prelude-ls": "^1.2.1", @@ -11452,6 +13104,8 @@ }, "node_modules/levn/node_modules/prelude-ls": { "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", "license": "MIT", "engines": { "node": ">= 0.8.0" @@ -11459,6 +13113,8 @@ }, "node_modules/levn/node_modules/type-check": { "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", "license": "MIT", "dependencies": { "prelude-ls": "^1.2.1" @@ -11513,6 +13169,8 @@ }, "node_modules/lil-http-terminator": { "version": "1.2.3", + "resolved": "https://registry.npmjs.org/lil-http-terminator/-/lil-http-terminator-1.2.3.tgz", + "integrity": "sha512-vQcHSwAFq/kTR2cG6peOVS7SjgksGgSPeH0G2lkw+buue33thE/FCHdn10wJXXshc5RswFy0Iaz48qA2Busw5Q==", "license": "BSD-3-Clause", "engines": { "node": ">=12" @@ -11520,6 +13178,8 @@ }, "node_modules/lilconfig": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz", + "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==", "dev": true, "license": "MIT", "engines": { @@ -11528,11 +13188,15 @@ }, "node_modules/lines-and-columns": { "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", "dev": true, "license": "MIT" }, "node_modules/listr2": { "version": "3.14.0", + "resolved": "https://registry.npmjs.org/listr2/-/listr2-3.14.0.tgz", + "integrity": "sha512-TyWI8G99GX9GjE54cJ+RrNMcIFBfwMPxc3XTFiAYGN4s10hWROGtOg7+O6u6LE3mNkyld7RSLE6nrKBvTfcs3g==", "license": "MIT", "dependencies": { "cli-truncate": "^2.1.0", @@ -11595,6 +13259,8 @@ }, "node_modules/load-json-file": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", + "integrity": "sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==", "dev": true, "license": "MIT", "dependencies": { @@ -11609,6 +13275,8 @@ }, "node_modules/load-json-file/node_modules/parse-json": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==", "dev": true, "license": "MIT", "dependencies": { @@ -11621,6 +13289,8 @@ }, "node_modules/load-json-file/node_modules/pify": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", "dev": true, "license": "MIT", "engines": { @@ -11646,6 +13316,8 @@ }, "node_modules/locate-path": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "dev": true, "license": "MIT", "dependencies": { @@ -11657,6 +13329,8 @@ }, "node_modules/lodash": { "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", "license": "MIT" }, "node_modules/lodash.capitalize": { @@ -11684,6 +13358,8 @@ }, "node_modules/lodash.ismatch": { "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.ismatch/-/lodash.ismatch-4.4.0.tgz", + "integrity": "sha512-fPMfXjGQEV9Xsq/8MTSgUf255gawYRbjwMyDbcvDhXgV7enSZA0hynz6vMPnpAb5iONEzBHBPsT+0zes5Z301g==", "dev": true, "license": "MIT" }, @@ -11701,19 +13377,27 @@ }, "node_modules/lodash.merge": { "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", "license": "MIT" }, "node_modules/lodash.once": { "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", + "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==", "license": "MIT" }, "node_modules/lodash.sortby": { "version": "4.7.0", + "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", + "integrity": "sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==", "dev": true, "license": "MIT" }, "node_modules/lodash.truncate": { "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", + "integrity": "sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==", "license": "MIT" }, "node_modules/lodash.uniqby": { @@ -11724,6 +13408,8 @@ }, "node_modules/log-symbols": { "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", "license": "MIT", "dependencies": { "chalk": "^4.1.0", @@ -11738,6 +13424,8 @@ }, "node_modules/log-symbols/node_modules/is-unicode-supported": { "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", "license": "MIT", "engines": { "node": ">=10" @@ -11748,6 +13436,8 @@ }, "node_modules/log-update": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/log-update/-/log-update-4.0.0.tgz", + "integrity": "sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==", "license": "MIT", "dependencies": { "ansi-escapes": "^4.3.0", @@ -11764,6 +13454,8 @@ }, "node_modules/log-update/node_modules/wrap-ansi": { "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", "license": "MIT", "dependencies": { "ansi-styles": "^4.0.0", @@ -11776,6 +13468,8 @@ }, "node_modules/loose-envify": { "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", "license": "MIT", "dependencies": { "js-tokens": "^3.0.0 || ^4.0.0" @@ -11784,8 +13478,19 @@ "loose-envify": "cli.js" } }, + "node_modules/loupe": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.6.tgz", + "integrity": "sha512-RaPMZKiMy8/JruncMU5Bt6na1eftNoo++R4Y+N2FrxkDVTrGvcyzFTsaGif4QTeKESheMGegbhw6iUAq+5A8zA==", + "dev": true, + "dependencies": { + "get-func-name": "^2.0.0" + } + }, "node_modules/lowercase-keys": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-3.0.0.tgz", + "integrity": "sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ==", "dev": true, "license": "MIT", "engines": { @@ -11797,6 +13502,8 @@ }, "node_modules/lru-cache": { "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", "license": "ISC", "dependencies": { "yallist": "^4.0.0" @@ -11840,18 +13547,23 @@ }, "node_modules/make-error": { "version": "1.3.6", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", "license": "ISC" }, "node_modules/makeerror": { "version": "1.0.12", + "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", + "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", "dev": true, - "license": "BSD-3-Clause", "dependencies": { "tmpl": "1.0.5" } }, "node_modules/map-obj": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==", "dev": true, "license": "MIT", "engines": { @@ -11871,6 +13583,8 @@ }, "node_modules/meow": { "version": "8.1.2", + "resolved": "https://registry.npmjs.org/meow/-/meow-8.1.2.tgz", + "integrity": "sha512-r85E3NdZ+mpYk1C6RjPFEMSE+s1iZMuHtsHAqY0DT3jZczl0diWUZ8g6oU7h0M9cD2EL+PzaYghhCLzR0ZNn5Q==", "dev": true, "license": "MIT", "dependencies": { @@ -11895,6 +13609,8 @@ }, "node_modules/meow/node_modules/normalize-package-data": { "version": "3.0.3", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz", + "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==", "dev": true, "license": "BSD-2-Clause", "dependencies": { @@ -11909,6 +13625,8 @@ }, "node_modules/meow/node_modules/read-pkg": { "version": "5.2.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", "dev": true, "license": "MIT", "dependencies": { @@ -11923,6 +13641,8 @@ }, "node_modules/meow/node_modules/read-pkg-up": { "version": "7.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", + "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", "dev": true, "license": "MIT", "dependencies": { @@ -11939,6 +13659,8 @@ }, "node_modules/meow/node_modules/read-pkg-up/node_modules/type-fest": { "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", "dev": true, "license": "(MIT OR CC0-1.0)", "engines": { @@ -11947,11 +13669,15 @@ }, "node_modules/meow/node_modules/read-pkg/node_modules/hosted-git-info": { "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", "dev": true, "license": "ISC" }, "node_modules/meow/node_modules/read-pkg/node_modules/normalize-package-data": { "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", "dev": true, "license": "BSD-2-Clause", "dependencies": { @@ -11971,6 +13697,8 @@ }, "node_modules/meow/node_modules/read-pkg/node_modules/type-fest": { "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", "dev": true, "license": "(MIT OR CC0-1.0)", "engines": { @@ -11979,6 +13707,8 @@ }, "node_modules/meow/node_modules/type-fest": { "version": "0.18.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz", + "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==", "dev": true, "license": "(MIT OR CC0-1.0)", "engines": { @@ -11990,10 +13720,14 @@ }, "node_modules/merge-stream": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", "license": "MIT" }, "node_modules/merge2": { "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", "license": "MIT", "engines": { "node": ">= 8" @@ -12001,6 +13735,8 @@ }, "node_modules/micromatch": { "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", "license": "MIT", "dependencies": { "braces": "^3.0.2", @@ -12012,6 +13748,8 @@ }, "node_modules/mime-db": { "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", "license": "MIT", "engines": { "node": ">= 0.6" @@ -12019,6 +13757,8 @@ }, "node_modules/mime-types": { "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", "license": "MIT", "dependencies": { "mime-db": "1.52.0" @@ -12029,6 +13769,8 @@ }, "node_modules/mimic-fn": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", "license": "MIT", "engines": { "node": ">=6" @@ -12036,6 +13778,8 @@ }, "node_modules/mimic-response": { "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", + "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", "dev": true, "license": "MIT", "engines": { @@ -12047,6 +13791,8 @@ }, "node_modules/min-indent": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", + "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", "dev": true, "license": "MIT", "engines": { @@ -12055,6 +13801,8 @@ }, "node_modules/minimatch": { "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" @@ -12073,6 +13821,8 @@ }, "node_modules/minimist-options": { "version": "4.1.0", + "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz", + "integrity": "sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==", "dev": true, "license": "MIT", "dependencies": { @@ -12086,14 +13836,27 @@ }, "node_modules/modify-values": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/modify-values/-/modify-values-1.0.1.tgz", + "integrity": "sha512-xV2bxeN6F7oYjZWTe/YPAy6MN2M+sL4u/Rlm2AHCIVGfo2p1yGmBHQ6vHehl4bRTZBdHu3TSkWdYgkwpYzAGSw==", "dev": true, "license": "MIT", "engines": { "node": ">=0.10.0" } }, + "node_modules/mri": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz", + "integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, "node_modules/ms": { "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "license": "MIT" }, "node_modules/msgpackr": { @@ -12136,8 +13899,35 @@ "node-gyp-build-optional-packages-test": "build-test.js" } }, + "node_modules/multimatch": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/multimatch/-/multimatch-4.0.0.tgz", + "integrity": "sha512-lDmx79y1z6i7RNx0ZGCPq1bzJ6ZoDDKbvh7jxr9SJcWLkShMzXrHbYVpTdnhNM5MXpDUxCQ4DgqVttVXlBgiBQ==", + "dev": true, + "dependencies": { + "@types/minimatch": "^3.0.3", + "array-differ": "^3.0.0", + "array-union": "^2.1.0", + "arrify": "^2.0.1", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/multimatch/node_modules/arrify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz", + "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/mz": { "version": "2.7.0", + "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", + "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", "dev": true, "license": "MIT", "dependencies": { @@ -12158,15 +13948,21 @@ }, "node_modules/natural-compare": { "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", "license": "MIT" }, "node_modules/neo-async": { "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", "dev": true, "license": "MIT" }, "node_modules/netmask": { "version": "2.0.2", + "resolved": "https://registry.npmjs.org/netmask/-/netmask-2.0.2.tgz", + "integrity": "sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg==", "dev": true, "license": "MIT", "engines": { @@ -12175,6 +13971,8 @@ }, "node_modules/new-github-release-url": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/new-github-release-url/-/new-github-release-url-2.0.0.tgz", + "integrity": "sha512-NHDDGYudnvRutt/VhKFlX26IotXe1w0cmkDm6JGquh5bz/bDTw0LufSmH/GxTjEdpHEO+bVKFTwdrcGa/9XlKQ==", "dev": true, "license": "MIT", "dependencies": { @@ -12243,6 +14041,8 @@ }, "node_modules/nice-try": { "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", "license": "MIT" }, "node_modules/nock": { @@ -12266,6 +14066,8 @@ }, "node_modules/node-domexception": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz", + "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==", "dev": true, "funding": [ { @@ -12294,8 +14096,9 @@ }, "node_modules/node-int64": { "version": "0.4.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", + "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", + "dev": true }, "node_modules/node-preload": { "version": "0.2.1", @@ -12315,6 +14118,8 @@ }, "node_modules/normalize-package-data": { "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", "dev": true, "license": "BSD-2-Clause", "dependencies": { @@ -12326,6 +14131,8 @@ }, "node_modules/normalize-package-data/node_modules/hosted-git-info": { "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", "dev": true, "license": "ISC" }, @@ -12339,6 +14146,8 @@ }, "node_modules/normalize-path": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", "dev": true, "license": "MIT", "engines": { @@ -12347,6 +14156,8 @@ }, "node_modules/normalize-url": { "version": "8.0.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-8.0.0.tgz", + "integrity": "sha512-uVFpKhj5MheNBJRTiMZ9pE/7hD1QTeEvugSJW/OmLzAp78PB5O6adfMNTvmfKhXBkvCzC+rqifWcVYpGFwTjnw==", "dev": true, "license": "MIT", "engines": { @@ -12358,6 +14169,8 @@ }, "node_modules/npm-path": { "version": "2.0.4", + "resolved": "https://registry.npmjs.org/npm-path/-/npm-path-2.0.4.tgz", + "integrity": "sha512-IFsj0R9C7ZdR5cP+ET342q77uSRdtWOlWpih5eC+lu29tIDbNEgDbzgVJ5UFvYHWhxDZ5TFkJafFioO0pPQjCw==", "license": "MIT", "dependencies": { "which": "^1.2.10" @@ -12371,6 +14184,8 @@ }, "node_modules/npm-run-path": { "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", "license": "MIT", "dependencies": { "path-key": "^3.0.0" @@ -12381,6 +14196,8 @@ }, "node_modules/npm-run-path/node_modules/path-key": { "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", "license": "MIT", "engines": { "node": ">=8" @@ -12388,6 +14205,8 @@ }, "node_modules/npm-which": { "version": "3.0.1", + "resolved": "https://registry.npmjs.org/npm-which/-/npm-which-3.0.1.tgz", + "integrity": "sha512-CM8vMpeFQ7MAPin0U3wzDhSGV0hMHNwHU0wjo402IVizPDrs45jSfSuoC+wThevY88LQti8VvaAnqYAeVy3I1A==", "license": "MIT", "dependencies": { "commander": "^2.9.0", @@ -12403,6 +14222,8 @@ }, "node_modules/npm-which/node_modules/commander": { "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", "license": "MIT" }, "node_modules/nth-check": { @@ -12514,6 +14335,8 @@ }, "node_modules/nyc/node_modules/semver": { "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, "license": "ISC", "bin": { @@ -12522,6 +14345,8 @@ }, "node_modules/nyc/node_modules/wrap-ansi": { "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", "dev": true, "license": "MIT", "dependencies": { @@ -12573,6 +14398,8 @@ }, "node_modules/object-assign": { "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", "license": "MIT", "engines": { "node": ">=0.10.0" @@ -12587,6 +14414,8 @@ }, "node_modules/object-keys": { "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", "license": "MIT", "engines": { "node": ">= 0.4" @@ -12594,6 +14423,8 @@ }, "node_modules/object.assign": { "version": "4.1.4", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", + "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", "license": "MIT", "dependencies": { "call-bind": "^1.0.2", @@ -12663,6 +14494,8 @@ }, "node_modules/once": { "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", "license": "ISC", "dependencies": { "wrappy": "1" @@ -12670,6 +14503,8 @@ }, "node_modules/onetime": { "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", "license": "MIT", "dependencies": { "mimic-fn": "^2.1.0" @@ -12688,6 +14523,8 @@ }, "node_modules/os-tmpdir": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", "dev": true, "license": "MIT", "engines": { @@ -12696,10 +14533,14 @@ }, "node_modules/ospath": { "version": "1.2.2", + "resolved": "https://registry.npmjs.org/ospath/-/ospath-1.2.2.tgz", + "integrity": "sha512-o6E5qJV5zkAbIDNhGSIlyOhScKXgQrSRMilfph0clDfM0nEnBOlKlH4sWDmG95BW/CvwNz0vmm7dJVtU2KlMiA==", "license": "MIT" }, "node_modules/p-cancelable": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-3.0.0.tgz", + "integrity": "sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw==", "dev": true, "license": "MIT", "engines": { @@ -12708,6 +14549,8 @@ }, "node_modules/p-finally": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==", "license": "MIT", "engines": { "node": ">=4" @@ -12715,8 +14558,9 @@ }, "node_modules/p-limit": { "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", "dev": true, - "license": "MIT", "dependencies": { "yocto-queue": "^0.1.0" }, @@ -12729,6 +14573,8 @@ }, "node_modules/p-locate": { "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "dev": true, "license": "MIT", "dependencies": { @@ -12740,6 +14586,8 @@ }, "node_modules/p-locate/node_modules/p-limit": { "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "dev": true, "license": "MIT", "dependencies": { @@ -12754,6 +14602,8 @@ }, "node_modules/p-map": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", "license": "MIT", "dependencies": { "aggregate-error": "^3.0.0" @@ -12767,6 +14617,8 @@ }, "node_modules/p-try": { "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", "dev": true, "license": "MIT", "engines": { @@ -12845,6 +14697,8 @@ }, "node_modules/parent-module": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", "license": "MIT", "dependencies": { "callsites": "^3.0.0" @@ -12855,6 +14709,8 @@ }, "node_modules/parse-json": { "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", "dev": true, "license": "MIT", "dependencies": { @@ -12872,6 +14728,8 @@ }, "node_modules/parse-ms": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/parse-ms/-/parse-ms-2.1.0.tgz", + "integrity": "sha512-kHt7kzLoS9VBZfUsiKjv43mr91ea+U05EyKkEtqp7vNbHxmaVuEqN7XxeEVnGrMtYOAxGrDElSi96K7EgO1zCA==", "license": "MIT", "engines": { "node": ">=6" @@ -12879,6 +14737,8 @@ }, "node_modules/parse-path": { "version": "7.0.0", + "resolved": "https://registry.npmjs.org/parse-path/-/parse-path-7.0.0.tgz", + "integrity": "sha512-Euf9GG8WT9CdqwuWJGdf3RkUcTBArppHABkO7Lm8IzRQp0e2r/kkFnmhu4TSK30Wcu5rVAZLmfPKSBBi9tWFog==", "dev": true, "license": "MIT", "dependencies": { @@ -12887,6 +14747,8 @@ }, "node_modules/parse-url": { "version": "8.1.0", + "resolved": "https://registry.npmjs.org/parse-url/-/parse-url-8.1.0.tgz", + "integrity": "sha512-xDvOoLU5XRrcOZvnI6b8zA6n9O9ejNk/GExuz1yBuWUGn9KA97GI6HTs6u02wKara1CeVmZhH+0TZFdWScR89w==", "dev": true, "license": "MIT", "dependencies": { @@ -12895,6 +14757,8 @@ }, "node_modules/path-exists": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", "dev": true, "license": "MIT", "engines": { @@ -12903,6 +14767,8 @@ }, "node_modules/path-is-absolute": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", "license": "MIT", "engines": { "node": ">=0.10.0" @@ -12910,6 +14776,8 @@ }, "node_modules/path-key": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", "license": "MIT", "engines": { "node": ">=4" @@ -12917,15 +14785,28 @@ }, "node_modules/path-parse": { "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", "license": "MIT" }, "node_modules/path-type": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", "license": "MIT", "engines": { "node": ">=8" } }, + "node_modules/pathval": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", + "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", + "dev": true, + "engines": { + "node": "*" + } + }, "node_modules/pause-stream": { "version": "0.0.11", "dev": true, @@ -12939,6 +14820,8 @@ }, "node_modules/pend": { "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", + "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==", "license": "MIT" }, "node_modules/performance-now": { @@ -12948,10 +14831,14 @@ }, "node_modules/picocolors": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", "license": "ISC" }, "node_modules/picomatch": { "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", "license": "MIT", "engines": { "node": ">=8.6" @@ -12962,6 +14849,8 @@ }, "node_modules/pify": { "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", "license": "MIT", "engines": { "node": ">=0.10.0" @@ -12977,6 +14866,8 @@ }, "node_modules/pkg-dir": { "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", "dev": true, "license": "MIT", "dependencies": { @@ -12988,6 +14879,8 @@ }, "node_modules/postcss": { "version": "8.4.14", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.14.tgz", + "integrity": "sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig==", "funding": [ { "type": "opencollective", @@ -13010,6 +14903,8 @@ }, "node_modules/postcss-load-config": { "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-4.0.1.tgz", + "integrity": "sha512-vEJIc8RdiBRu3oRAI0ymerOn+7rPuMvRXslTvZUKZonDHFIczxztIyJ1urxM1x9JXEikvpWWTUUqal5j/8QgvA==", "dev": true, "license": "MIT", "dependencies": { @@ -13103,6 +14998,8 @@ }, "node_modules/pretty-bytes": { "version": "5.6.0", + "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz", + "integrity": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==", "license": "MIT", "engines": { "node": ">=6" @@ -13112,11 +15009,12 @@ } }, "node_modules/pretty-format": { - "version": "29.3.1", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", "dev": true, - "license": "MIT", "dependencies": { - "@jest/schemas": "^29.0.0", + "@jest/schemas": "^29.6.3", "ansi-styles": "^5.0.0", "react-is": "^18.0.0" }, @@ -13126,6 +15024,8 @@ }, "node_modules/pretty-format/node_modules/ansi-styles": { "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", "dev": true, "license": "MIT", "engines": { @@ -13137,20 +15037,81 @@ }, "node_modules/pretty-format/node_modules/react-is": { "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", "dev": true, "license": "MIT" }, "node_modules/pretty-ms": { "version": "7.0.1", + "resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-7.0.1.tgz", + "integrity": "sha512-973driJZvxiGOQ5ONsFhOF/DtzPMOMtgC11kCpUrPGMTgqp2q/1gwzCquocrN33is0VZ5GFHXZYMM9l6h67v2Q==", "license": "MIT", "dependencies": { - "parse-ms": "^2.1.0" + "parse-ms": "^2.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pretty-quick": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/pretty-quick/-/pretty-quick-3.1.3.tgz", + "integrity": "sha512-kOCi2FJabvuh1as9enxYmrnBC6tVMoVOenMaBqRfsvBHB0cbpYHjdQEpSglpASDFEXVwplpcGR4CLEaisYAFcA==", + "dev": true, + "dependencies": { + "chalk": "^3.0.0", + "execa": "^4.0.0", + "find-up": "^4.1.0", + "ignore": "^5.1.4", + "mri": "^1.1.5", + "multimatch": "^4.0.0" + }, + "bin": { + "pretty-quick": "bin/pretty-quick.js" + }, + "engines": { + "node": ">=10.13" + }, + "peerDependencies": { + "prettier": ">=2.0.0" + } + }, + "node_modules/pretty-quick/node_modules/chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pretty-quick/node_modules/ignore": { + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", + "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/pretty-quick/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=8" } }, "node_modules/process": { @@ -13163,6 +15124,8 @@ }, "node_modules/process-nextick-args": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", "dev": true, "license": "MIT" }, @@ -13179,6 +15142,8 @@ }, "node_modules/progress": { "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", "license": "MIT", "engines": { "node": ">=0.4.0" @@ -13186,6 +15151,8 @@ }, "node_modules/promise.allsettled": { "version": "1.0.6", + "resolved": "https://registry.npmjs.org/promise.allsettled/-/promise.allsettled-1.0.6.tgz", + "integrity": "sha512-22wJUOD3zswWFqgwjNHa1965LvqTX87WPu/lreY2KSd7SVcERfuZ4GfUaOnJNnvtoIv2yXT/W00YIGMetXtFXg==", "dev": true, "license": "MIT", "dependencies": { @@ -13205,8 +15172,9 @@ }, "node_modules/prompts": { "version": "2.4.2", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", + "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", "dev": true, - "license": "MIT", "dependencies": { "kleur": "^3.0.3", "sisteransi": "^1.0.5" @@ -13217,6 +15185,8 @@ }, "node_modules/prop-types": { "version": "15.8.1", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", "license": "MIT", "dependencies": { "loose-envify": "^1.4.0", @@ -13226,6 +15196,8 @@ }, "node_modules/propagate": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/propagate/-/propagate-2.0.1.tgz", + "integrity": "sha512-vGrhOavPSTz4QVNuBNdcNXePNdNMaO1xj9yBeH1ScQPjk/rhg9sSlCXPhMkFuaNNW/syTvYqsnbIJxMBfRbbag==", "dev": true, "license": "MIT", "engines": { @@ -13234,16 +15206,22 @@ }, "node_modules/proto-list": { "version": "1.2.4", + "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", + "integrity": "sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==", "dev": true, "license": "ISC" }, "node_modules/protocols": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/protocols/-/protocols-2.0.1.tgz", + "integrity": "sha512-/XJ368cyBJ7fzLMwLKv1e4vLxOju2MNAIokcr7meSaNcVbWz/CPcW22cP04mwxOErdA5mwjA8Q6w/cdAQxVn7Q==", "dev": true, "license": "MIT" }, "node_modules/proxy-from-env": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.0.0.tgz", + "integrity": "sha512-F2JHgJQ1iqwnHDcQjVBsq3n/uoaFL+iPW/eAeL7kVxy/2RrWaN4WroKjjvbsoRtv0ftelNyC01bjRhn/bhcf4A==", "license": "MIT" }, "node_modules/ps-tree": { @@ -13267,6 +15245,8 @@ }, "node_modules/pump": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", "license": "MIT", "dependencies": { "end-of-stream": "^1.1.0", @@ -13282,6 +15262,8 @@ }, "node_modules/pupa": { "version": "3.1.0", + "resolved": "https://registry.npmjs.org/pupa/-/pupa-3.1.0.tgz", + "integrity": "sha512-FLpr4flz5xZTSJxSeaheeMKN/EDzMdK7b8PTOC6a5PYFKTucWbdqjgqaEyH0shFiSJrVB1+Qqi4Tk19ccU6Aug==", "dev": true, "license": "MIT", "dependencies": { @@ -13294,6 +15276,22 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/pure-rand": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.0.3.tgz", + "integrity": "sha512-KddyFewCsO0j3+np81IQ+SweXLDnDQTs5s67BOnrYmYe/yNmUhttQyGsYzy8yUnoljGAQ9sl38YB4vH8ur7Y+w==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/dubzzz" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fast-check" + } + ] + }, "node_modules/qs": { "version": "6.10.4", "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.4.tgz", @@ -13315,6 +15313,8 @@ }, "node_modules/queue-microtask": { "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", "funding": [ { "type": "github", @@ -13333,6 +15333,8 @@ }, "node_modules/quick-lru": { "version": "5.1.1", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", + "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", "dev": true, "license": "MIT", "engines": { @@ -13344,6 +15346,8 @@ }, "node_modules/ramda": { "version": "0.26.1", + "resolved": "https://registry.npmjs.org/ramda/-/ramda-0.26.1.tgz", + "integrity": "sha512-hLWjpy7EnsDBb0p+Z3B7rPi3GDeRG5ZtiI33kJhTt+ORCd38AbAIjB/9zRIUoeTbE/AVX5ZkU7m6bznsvrf8eQ==", "license": "MIT" }, "node_modules/randombytes": { @@ -13357,6 +15361,8 @@ }, "node_modules/rc": { "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", "dev": true, "license": "(BSD-2-Clause OR MIT OR Apache-2.0)", "dependencies": { @@ -13371,6 +15377,8 @@ }, "node_modules/rc/node_modules/strip-json-comments": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", "dev": true, "license": "MIT", "engines": { @@ -13379,6 +15387,8 @@ }, "node_modules/react": { "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz", + "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==", "license": "MIT", "dependencies": { "loose-envify": "^1.1.0" @@ -13389,6 +15399,8 @@ }, "node_modules/react-dom": { "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz", + "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==", "license": "MIT", "dependencies": { "loose-envify": "^1.1.0", @@ -13405,6 +15417,8 @@ }, "node_modules/react-is": { "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", "license": "MIT" }, "node_modules/react-refresh": { @@ -13417,6 +15431,8 @@ }, "node_modules/read-pkg": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", + "integrity": "sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA==", "dev": true, "license": "MIT", "dependencies": { @@ -13430,6 +15446,8 @@ }, "node_modules/read-pkg-up": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-3.0.0.tgz", + "integrity": "sha512-YFzFrVvpC6frF1sz8psoHDBGF7fLPc+llq/8NB43oagqWkx8ar5zYtsTORtOjw9W2RHLpWP+zTWwBvf1bCmcSw==", "dev": true, "license": "MIT", "dependencies": { @@ -13442,6 +15460,8 @@ }, "node_modules/read-pkg-up/node_modules/find-up": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==", "dev": true, "license": "MIT", "dependencies": { @@ -13453,6 +15473,8 @@ }, "node_modules/read-pkg-up/node_modules/locate-path": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==", "dev": true, "license": "MIT", "dependencies": { @@ -13465,6 +15487,8 @@ }, "node_modules/read-pkg-up/node_modules/p-limit": { "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", "dev": true, "license": "MIT", "dependencies": { @@ -13476,6 +15500,8 @@ }, "node_modules/read-pkg-up/node_modules/p-locate": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==", "dev": true, "license": "MIT", "dependencies": { @@ -13487,6 +15513,8 @@ }, "node_modules/read-pkg-up/node_modules/p-try": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==", "dev": true, "license": "MIT", "engines": { @@ -13495,6 +15523,8 @@ }, "node_modules/read-pkg-up/node_modules/path-exists": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", "dev": true, "license": "MIT", "engines": { @@ -13503,6 +15533,8 @@ }, "node_modules/read-pkg/node_modules/path-type": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", "dev": true, "license": "MIT", "dependencies": { @@ -13514,6 +15546,8 @@ }, "node_modules/read-pkg/node_modules/pify": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", "dev": true, "license": "MIT", "engines": { @@ -13535,6 +15569,8 @@ }, "node_modules/readdirp": { "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", "dev": true, "license": "MIT", "dependencies": { @@ -13546,6 +15582,8 @@ }, "node_modules/rechoir": { "version": "0.6.2", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", + "integrity": "sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==", "dev": true, "dependencies": { "resolve": "^1.1.6" @@ -13556,6 +15594,8 @@ }, "node_modules/redent": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", + "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", "dev": true, "license": "MIT", "dependencies": { @@ -13614,6 +15654,8 @@ }, "node_modules/regexpp": { "version": "3.2.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", + "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", "license": "MIT", "engines": { "node": ">=8" @@ -13652,6 +15694,8 @@ }, "node_modules/registry-url": { "version": "6.0.1", + "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-6.0.1.tgz", + "integrity": "sha512-+crtS5QjFRqFCoQmvGduwYWEBng99ZvmFvF+cUJkGYF1L1BfU8C6Zp9T7f5vPAwyLkUExpvK+ANVZmGU49qi4Q==", "dev": true, "license": "MIT", "dependencies": { @@ -13697,6 +15741,8 @@ }, "node_modules/request-progress": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/request-progress/-/request-progress-3.0.0.tgz", + "integrity": "sha512-MnWzEHHaxHO2iWiQuHrUPBi/1WeBf5PkxQqNyNvLl9VAYSdXkP8tQ3pBSeCPD+yw0v0Aq1zosWLz0BdeXpWwZg==", "license": "MIT", "dependencies": { "throttleit": "^1.0.0" @@ -13704,6 +15750,8 @@ }, "node_modules/require-directory": { "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", "dev": true, "license": "MIT", "engines": { @@ -13712,6 +15760,8 @@ }, "node_modules/require-from-string": { "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", "license": "MIT", "engines": { "node": ">=0.10.0" @@ -13744,13 +15794,16 @@ }, "node_modules/resolve-alpn": { "version": "1.2.1", + "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz", + "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==", "dev": true, "license": "MIT" }, "node_modules/resolve-cwd": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", "dev": true, - "license": "MIT", "dependencies": { "resolve-from": "^5.0.0" }, @@ -13760,6 +15813,8 @@ }, "node_modules/resolve-from": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", "dev": true, "license": "MIT", "engines": { @@ -13767,15 +15822,18 @@ } }, "node_modules/resolve.exports": { - "version": "1.1.0", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.2.tgz", + "integrity": "sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==", "dev": true, - "license": "MIT", "engines": { "node": ">=10" } }, "node_modules/responselike": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-3.0.0.tgz", + "integrity": "sha512-40yHxbNcl2+rzXvZuVkrYohathsSJlMTXKryG5y8uciHv1+xDLHQpgjG64JUO9nrEq2jGLH6IZ8BcZyw3wrweg==", "dev": true, "license": "MIT", "dependencies": { @@ -13790,6 +15848,8 @@ }, "node_modules/restore-cursor": { "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", "license": "MIT", "dependencies": { "onetime": "^5.1.0", @@ -13801,6 +15861,8 @@ }, "node_modules/retry": { "version": "0.13.1", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", + "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", "dev": true, "license": "MIT", "engines": { @@ -13809,6 +15871,8 @@ }, "node_modules/reusify": { "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", "license": "MIT", "engines": { "iojs": ">=1.0.0", @@ -13817,10 +15881,14 @@ }, "node_modules/rfdc": { "version": "1.3.0", + "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz", + "integrity": "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==", "license": "MIT" }, "node_modules/rimraf": { "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", "license": "ISC", "dependencies": { "glob": "^7.1.3" @@ -13896,6 +15964,8 @@ }, "node_modules/run-parallel": { "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", "funding": [ { "type": "github", @@ -13925,6 +15995,8 @@ }, "node_modules/safe-buffer": { "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", "funding": [ { "type": "github", @@ -13948,6 +16020,8 @@ }, "node_modules/safe-regex-test": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz", + "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==", "license": "MIT", "dependencies": { "call-bind": "^1.0.2", @@ -13960,10 +16034,14 @@ }, "node_modules/safer-buffer": { "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", "license": "MIT" }, "node_modules/scheduler": { "version": "0.23.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz", + "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==", "license": "MIT", "dependencies": { "loose-envify": "^1.1.0" @@ -14018,6 +16096,8 @@ }, "node_modules/schema-utils/node_modules/json-schema-traverse": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", "dev": true, "license": "MIT", "peer": true @@ -14038,6 +16118,8 @@ }, "node_modules/semver-diff": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-4.0.0.tgz", + "integrity": "sha512-0Ju4+6A8iOnpL/Thra7dZsSlOHYAHIeMxfhWQRI1/VLcT3WDBZKKtQt/QkBOsiIN9ZpuvHE6cGZ0x4glCMmfiA==", "dev": true, "license": "MIT", "dependencies": { @@ -14066,6 +16148,8 @@ }, "node_modules/shebang-command": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", "license": "MIT", "dependencies": { "shebang-regex": "^3.0.0" @@ -14076,6 +16160,8 @@ }, "node_modules/shebang-regex": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", "license": "MIT", "engines": { "node": ">=8" @@ -14091,6 +16177,8 @@ }, "node_modules/shelljs": { "version": "0.8.5", + "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.5.tgz", + "integrity": "sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==", "dev": true, "license": "BSD-3-Clause", "dependencies": { @@ -14107,6 +16195,8 @@ }, "node_modules/side-channel": { "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", "license": "MIT", "dependencies": { "call-bind": "^1.0.0", @@ -14119,10 +16209,14 @@ }, "node_modules/signal-exit": { "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", "license": "ISC" }, "node_modules/simple-bin-help": { "version": "1.8.0", + "resolved": "https://registry.npmjs.org/simple-bin-help/-/simple-bin-help-1.8.0.tgz", + "integrity": "sha512-0LxHn+P1lF5r2WwVB/za3hLRIsYoLaNq1CXqjbrs3ZvLuvlWnRKrUjEWzV7umZL7hpQ7xULiQMV+0iXdRa5iFg==", "dev": true, "license": "MIT", "engines": { @@ -14131,11 +16225,14 @@ }, "node_modules/sisteransi": { "version": "1.0.5", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", + "dev": true }, "node_modules/slash": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", "license": "MIT", "engines": { "node": ">=8" @@ -14143,6 +16240,8 @@ }, "node_modules/slice-ansi": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", + "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", "license": "MIT", "dependencies": { "ansi-styles": "^4.0.0", @@ -14158,6 +16257,8 @@ }, "node_modules/smart-buffer": { "version": "4.2.0", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", "dev": true, "license": "MIT", "engines": { @@ -14167,6 +16268,8 @@ }, "node_modules/socks": { "version": "2.7.1", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.7.1.tgz", + "integrity": "sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ==", "dev": true, "license": "MIT", "dependencies": { @@ -14180,11 +16283,15 @@ }, "node_modules/socks/node_modules/ip": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz", + "integrity": "sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==", "dev": true, "license": "MIT" }, "node_modules/source-map": { "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" @@ -14192,6 +16299,8 @@ }, "node_modules/source-map-js": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" @@ -14199,6 +16308,8 @@ }, "node_modules/source-map-support": { "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", "license": "MIT", "dependencies": { "buffer-from": "^1.0.0", @@ -14207,6 +16318,8 @@ }, "node_modules/spawn-command": { "version": "0.0.2-1", + "resolved": "https://registry.npmjs.org/spawn-command/-/spawn-command-0.0.2-1.tgz", + "integrity": "sha512-n98l9E2RMSJ9ON1AKisHzz7V42VDiBQGY6PB1BwRglz99wpVsSuGzQ+jOi6lFXBGVTCrRpltvjm+/XA+tpeJrg==", "dev": true, "license": "MIT" }, @@ -14228,6 +16341,8 @@ }, "node_modules/spawn-wrap/node_modules/which": { "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", "dev": true, "license": "ISC", "dependencies": { @@ -14251,11 +16366,15 @@ }, "node_modules/spdx-exceptions": { "version": "2.3.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", "dev": true, "license": "CC-BY-3.0" }, "node_modules/spdx-expression-parse": { "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", "dev": true, "license": "MIT", "dependencies": { @@ -14281,6 +16400,8 @@ }, "node_modules/split2": { "version": "3.2.2", + "resolved": "https://registry.npmjs.org/split2/-/split2-3.2.2.tgz", + "integrity": "sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==", "dev": true, "license": "ISC", "dependencies": { @@ -14289,6 +16410,8 @@ }, "node_modules/sprintf-js": { "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", "license": "BSD-3-Clause" }, "node_modules/srcset": { @@ -14333,6 +16456,8 @@ }, "node_modules/stack-utils": { "version": "2.0.6", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", + "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", "dev": true, "license": "MIT", "dependencies": { @@ -14344,6 +16469,8 @@ }, "node_modules/stack-utils/node_modules/escape-string-regexp": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", "dev": true, "license": "MIT", "engines": { @@ -14402,6 +16529,8 @@ }, "node_modules/start-server-and-test/node_modules/human-signals": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", "dev": true, "license": "Apache-2.0", "engines": { @@ -14433,6 +16562,8 @@ }, "node_modules/string_decoder": { "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", "dev": true, "license": "MIT", "dependencies": { @@ -14441,8 +16572,9 @@ }, "node_modules/string-length": { "version": "4.0.2", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", + "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", "dev": true, - "license": "MIT", "dependencies": { "char-regex": "^1.0.2", "strip-ansi": "^6.0.0" @@ -14453,6 +16585,8 @@ }, "node_modules/string-width": { "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "license": "MIT", "dependencies": { "emoji-regex": "^8.0.0", @@ -14465,6 +16599,8 @@ }, "node_modules/string-width/node_modules/emoji-regex": { "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", "license": "MIT" }, "node_modules/string.prototype.matchall": { @@ -14486,6 +16622,8 @@ }, "node_modules/string.prototype.trimend": { "version": "1.0.6", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz", + "integrity": "sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==", "license": "MIT", "dependencies": { "call-bind": "^1.0.2", @@ -14498,6 +16636,8 @@ }, "node_modules/string.prototype.trimstart": { "version": "1.0.6", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz", + "integrity": "sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==", "license": "MIT", "dependencies": { "call-bind": "^1.0.2", @@ -14510,6 +16650,8 @@ }, "node_modules/strip-ansi": { "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "license": "MIT", "dependencies": { "ansi-regex": "^5.0.1" @@ -14520,6 +16662,8 @@ }, "node_modules/strip-bom": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", "license": "MIT", "engines": { "node": ">=4" @@ -14527,6 +16671,8 @@ }, "node_modules/strip-eof": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==", "license": "MIT", "engines": { "node": ">=0.10.0" @@ -14534,6 +16680,8 @@ }, "node_modules/strip-final-newline": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", "license": "MIT", "engines": { "node": ">=6" @@ -14541,6 +16689,8 @@ }, "node_modules/strip-indent": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", + "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", "dev": true, "license": "MIT", "dependencies": { @@ -14552,6 +16702,8 @@ }, "node_modules/strip-json-comments": { "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", "license": "MIT", "engines": { "node": ">=8" @@ -14562,6 +16714,8 @@ }, "node_modules/styled-jsx": { "version": "5.1.1", + "resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.1.1.tgz", + "integrity": "sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==", "license": "MIT", "dependencies": { "client-only": "0.0.1" @@ -14603,6 +16757,8 @@ }, "node_modules/sucrase/node_modules/commander": { "version": "4.1.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", + "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", "dev": true, "license": "MIT", "engines": { @@ -14611,6 +16767,8 @@ }, "node_modules/sucrase/node_modules/glob": { "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", "dev": true, "license": "ISC", "dependencies": { @@ -14630,6 +16788,8 @@ }, "node_modules/supports-color": { "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -14643,6 +16803,8 @@ }, "node_modules/supports-preserve-symlinks-flag": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", "license": "MIT", "engines": { "node": ">= 0.4" @@ -14688,6 +16850,8 @@ }, "node_modules/table": { "version": "6.8.1", + "resolved": "https://registry.npmjs.org/table/-/table-6.8.1.tgz", + "integrity": "sha512-Y4X9zqrCftUhMeH2EptSSERdVKt/nEdijTOacGD/97EKjhQ/Qs8RTlEGABSJNNN8lac9kheH+af7yAkEWlgneA==", "license": "BSD-3-Clause", "dependencies": { "ajv": "^8.0.1", @@ -14716,6 +16880,8 @@ }, "node_modules/table/node_modules/json-schema-traverse": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", "license": "MIT" }, "node_modules/tapable": { @@ -14846,6 +17012,8 @@ }, "node_modules/test-exclude": { "version": "6.0.0", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", + "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", "dev": true, "license": "ISC", "dependencies": { @@ -14867,6 +17035,8 @@ }, "node_modules/text-extensions": { "version": "1.9.0", + "resolved": "https://registry.npmjs.org/text-extensions/-/text-extensions-1.9.0.tgz", + "integrity": "sha512-wiBrwC1EhBelW12Zy26JeOUkQ5mRu+5o8rpsJk5+2t+Y5vE7e842qtZDQ2g1NpX/29HdyFeJ4nSIhI47ENSxlQ==", "dev": true, "license": "MIT", "engines": { @@ -14875,10 +17045,14 @@ }, "node_modules/text-table": { "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", "license": "MIT" }, "node_modules/thenify": { "version": "3.3.1", + "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", + "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", "dev": true, "license": "MIT", "dependencies": { @@ -14887,6 +17061,8 @@ }, "node_modules/thenify-all": { "version": "1.6.0", + "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", + "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", "dev": true, "license": "MIT", "dependencies": { @@ -14898,10 +17074,14 @@ }, "node_modules/throttleit": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/throttleit/-/throttleit-1.0.0.tgz", + "integrity": "sha512-rkTVqu6IjfQ/6+uNuuc3sZek4CEYxTJom3IktzgdSxcZqdARuebbA/f4QmAxMQIxqq9ZLEUkSYqvuk1I6VKq4g==", "license": "MIT" }, "node_modules/through": { "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", "license": "MIT" }, "node_modules/timsort": { @@ -14923,6 +17103,8 @@ }, "node_modules/tmp": { "version": "0.2.1", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", + "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", "license": "MIT", "dependencies": { "rimraf": "^3.0.0" @@ -14933,6 +17115,8 @@ }, "node_modules/tmp-promise": { "version": "3.0.3", + "resolved": "https://registry.npmjs.org/tmp-promise/-/tmp-promise-3.0.3.tgz", + "integrity": "sha512-RwM7MoPojPxsOBYnyd2hy0bxtIlVrihNs9pj5SUvY8Zz1sQcQG2tG1hSr8PDxfgEB8RNKDhqbIlroIarSNDNsQ==", "license": "MIT", "dependencies": { "tmp": "^0.2.0" @@ -14940,11 +17124,14 @@ }, "node_modules/tmpl": { "version": "1.0.5", - "dev": true, - "license": "BSD-3-Clause" + "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", + "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", + "dev": true }, "node_modules/to-fast-properties": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", "dev": true, "license": "MIT", "engines": { @@ -14953,6 +17140,8 @@ }, "node_modules/to-regex-range": { "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", "license": "MIT", "dependencies": { "is-number": "^7.0.0" @@ -14985,11 +17174,15 @@ }, "node_modules/tr46": { "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", "dev": true, "license": "MIT" }, "node_modules/tree-kill": { "version": "1.2.2", + "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", + "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", "dev": true, "license": "MIT", "bin": { @@ -14998,6 +17191,8 @@ }, "node_modules/trim-newlines": { "version": "3.0.1", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.1.tgz", + "integrity": "sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==", "dev": true, "license": "MIT", "engines": { @@ -15006,11 +17201,15 @@ }, "node_modules/ts-interface-checker": { "version": "0.1.13", + "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz", + "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==", "dev": true, "license": "Apache-2.0" }, "node_modules/ts-node": { "version": "10.9.1", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz", + "integrity": "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==", "license": "MIT", "dependencies": { "@cspotcode/source-map-support": "^0.8.0", @@ -15052,10 +17251,14 @@ }, "node_modules/ts-pattern": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ts-pattern/-/ts-pattern-4.3.0.tgz", + "integrity": "sha512-pefrkcd4lmIVR0LA49Imjf9DYLK8vtWhqBPA3Ya1ir8xCW0O2yjL9dsCVvI7pCodLC5q7smNpEtDR2yVulQxOg==", "license": "MIT" }, "node_modules/tsconfig": { "version": "7.0.0", + "resolved": "https://registry.npmjs.org/tsconfig/-/tsconfig-7.0.0.tgz", + "integrity": "sha512-vZXmzPrL+EmC4T/4rVlT2jNVMWCi/O4DIiSj3UHg1OE5kCKbk4mfrXc6dZksLgRM/TZlKnousKH9bbTazUWRRw==", "dev": true, "license": "MIT", "dependencies": { @@ -15087,6 +17290,8 @@ }, "node_modules/tsconfig/node_modules/strip-json-comments": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", "dev": true, "license": "MIT", "engines": { @@ -15158,6 +17363,8 @@ }, "node_modules/tsup/node_modules/bundle-require": { "version": "4.0.1", + "resolved": "https://registry.npmjs.org/bundle-require/-/bundle-require-4.0.1.tgz", + "integrity": "sha512-9NQkRHlNdNpDBGmLpngF3EFDcwodhMUuLz9PaWYciVcQF9SE4LFjM2DB/xV1Li5JiuDMv7ZUWuC3rGbqR0MAXQ==", "dev": true, "license": "MIT", "dependencies": { @@ -15208,6 +17415,8 @@ }, "node_modules/tsup/node_modules/execa": { "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", "dev": true, "license": "MIT", "dependencies": { @@ -15230,6 +17439,8 @@ }, "node_modules/tsup/node_modules/human-signals": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", "dev": true, "license": "Apache-2.0", "engines": { @@ -15238,6 +17449,8 @@ }, "node_modules/tsup/node_modules/source-map": { "version": "0.8.0-beta.0", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.8.0-beta.0.tgz", + "integrity": "sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==", "dev": true, "license": "BSD-3-Clause", "dependencies": { @@ -15249,6 +17462,8 @@ }, "node_modules/tsup/node_modules/tr46": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", + "integrity": "sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==", "dev": true, "license": "MIT", "dependencies": { @@ -15257,11 +17472,15 @@ }, "node_modules/tsup/node_modules/webidl-conversions": { "version": "4.0.2", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", + "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", "dev": true, "license": "BSD-2-Clause" }, "node_modules/tsup/node_modules/whatwg-url": { "version": "7.1.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", + "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", "dev": true, "license": "MIT", "dependencies": { @@ -15272,6 +17491,8 @@ }, "node_modules/tsutils": { "version": "3.21.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", "license": "MIT", "dependencies": { "tslib": "^1.8.1" @@ -15285,6 +17506,8 @@ }, "node_modules/tsutils/node_modules/tslib": { "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", "license": "0BSD" }, "node_modules/tunnel-agent": { @@ -15395,6 +17618,8 @@ }, "node_modules/tv4": { "version": "1.3.0", + "resolved": "https://registry.npmjs.org/tv4/-/tv4-1.3.0.tgz", + "integrity": "sha512-afizzfpJgvPr+eDkREK4MxJ/+r8nEEHcmitwgnPUqpaP+FpwQyadnxNoSACbgc/b1LsZYtODGoPiFxQrgJgjvw==", "license": [ { "type": "Public Domain", @@ -15416,14 +17641,17 @@ }, "node_modules/type-detect": { "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", "dev": true, - "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/type-fest": { "version": "2.19.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", + "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", "dev": true, "license": "(MIT OR CC0-1.0)", "engines": { @@ -15435,11 +17663,15 @@ }, "node_modules/typedarray": { "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==", "dev": true, "license": "MIT" }, "node_modules/typedarray-to-buffer": { "version": "3.1.5", + "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", + "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", "dev": true, "license": "MIT", "dependencies": { @@ -15447,8 +17679,9 @@ } }, "node_modules/typescript": { - "version": "4.9.4", - "license": "Apache-2.0", + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", + "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -15459,6 +17692,8 @@ }, "node_modules/uglify-js": { "version": "3.17.4", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.17.4.tgz", + "integrity": "sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g==", "dev": true, "license": "BSD-2-Clause", "optional": true, @@ -15471,6 +17706,8 @@ }, "node_modules/unbox-primitive": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", + "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", "license": "MIT", "dependencies": { "call-bind": "^1.0.2", @@ -15484,6 +17721,8 @@ }, "node_modules/unc-path-regex": { "version": "0.1.2", + "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz", + "integrity": "sha512-eXL4nmJT7oCpkZsHZUOJo8hcX3GbsiDOa0Qu9F646fi8dT3XuSVopVqAcEiVzSKKH7UoDti23wNX3qGFxcW5Qg==", "license": "MIT", "engines": { "node": ">=0.10.0" @@ -15531,6 +17770,8 @@ }, "node_modules/unique-string": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-3.0.0.tgz", + "integrity": "sha512-VGXBUVwxKMBUznyffQweQABPRRW1vHZAbadFZud4pLFAqRGvv/96vafgjWFqzourzr8YonlQiPgH0YCJfawoGQ==", "dev": true, "license": "MIT", "dependencies": { @@ -15545,11 +17786,15 @@ }, "node_modules/universal-user-agent": { "version": "6.0.0", + "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.0.tgz", + "integrity": "sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w==", "dev": true, "license": "ISC" }, "node_modules/universalify": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", "license": "MIT", "engines": { "node": ">= 10.0.0" @@ -15557,6 +17802,8 @@ }, "node_modules/untildify": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz", + "integrity": "sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==", "license": "MIT", "engines": { "node": ">=8" @@ -15564,6 +17811,8 @@ }, "node_modules/update-browserslist-db": { "version": "1.0.11", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz", + "integrity": "sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==", "dev": true, "funding": [ { @@ -15593,6 +17842,8 @@ }, "node_modules/update-notifier": { "version": "6.0.2", + "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-6.0.2.tgz", + "integrity": "sha512-EDxhTEVPZZRLWYcJ4ZXjGFN0oP7qYvbXWzEgRm/Yql4dHX5wDbvh89YHP6PK1lzZJYrMtXUuZZz8XGK+U6U1og==", "dev": true, "license": "BSD-2-Clause", "dependencies": { @@ -15631,6 +17882,8 @@ }, "node_modules/uri-js": { "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", "license": "BSD-2-Clause", "dependencies": { "punycode": "^2.1.0" @@ -15638,6 +17891,8 @@ }, "node_modules/url-join": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/url-join/-/url-join-5.0.0.tgz", + "integrity": "sha512-n2huDr9h9yzd6exQVnH/jU5mr+Pfx08LRXXZhkLLetAMESRj+anQsTAh940iMrIetKAmry9coFuZQ2jY8/p3WA==", "dev": true, "license": "MIT", "engines": { @@ -15655,6 +17910,8 @@ }, "node_modules/util-deprecate": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", "dev": true, "license": "MIT" }, @@ -15668,6 +17925,8 @@ }, "node_modules/uuid": { "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", "license": "MIT", "bin": { "uuid": "dist/bin/uuid" @@ -15679,12 +17938,15 @@ }, "node_modules/v8-compile-cache-lib": { "version": "3.0.1", + "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", + "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", "license": "MIT" }, "node_modules/v8-to-istanbul": { - "version": "9.0.1", + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.1.0.tgz", + "integrity": "sha512-6z3GW9x8G1gd+JIIgQQQxXuiJtCXeAjp6RaPEPLv62mH3iPHPxV6W3robxtCzNErRo6ZwTmzWhsbNvjyEBKzKA==", "dev": true, - "license": "ISC", "dependencies": { "@jridgewell/trace-mapping": "^0.3.12", "@types/istanbul-lib-coverage": "^2.0.1", @@ -15696,6 +17958,8 @@ }, "node_modules/validate-npm-package-license": { "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -15745,8 +18009,9 @@ }, "node_modules/walker": { "version": "1.0.8", + "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", + "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", "dev": true, - "license": "Apache-2.0", "dependencies": { "makeerror": "1.0.12" } @@ -15766,6 +18031,8 @@ }, "node_modules/wcwidth": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", + "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", "dev": true, "license": "MIT", "dependencies": { @@ -15783,6 +18050,8 @@ }, "node_modules/web-streams-polyfill": { "version": "3.2.1", + "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.2.1.tgz", + "integrity": "sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q==", "dev": true, "license": "MIT", "engines": { @@ -15791,6 +18060,8 @@ }, "node_modules/webidl-conversions": { "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", "dev": true, "license": "BSD-2-Clause" }, @@ -15870,6 +18141,8 @@ }, "node_modules/whatwg-url": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", "dev": true, "license": "MIT", "dependencies": { @@ -15879,6 +18152,8 @@ }, "node_modules/which": { "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", "license": "ISC", "dependencies": { "isexe": "^2.0.0" @@ -15889,6 +18164,8 @@ }, "node_modules/which-boxed-primitive": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", "license": "MIT", "dependencies": { "is-bigint": "^1.0.1", @@ -15908,6 +18185,8 @@ }, "node_modules/widest-line": { "version": "4.0.1", + "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-4.0.1.tgz", + "integrity": "sha512-o0cyEG0e8GPzT4iGHphIOh0cJOV8fivsXxddQasHPHfoZf1ZexrfeA21w2NaEN1RHE+fXlfISmOE8R9N3u3Qig==", "dev": true, "license": "MIT", "dependencies": { @@ -15922,6 +18201,8 @@ }, "node_modules/widest-line/node_modules/ansi-regex": { "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", "dev": true, "license": "MIT", "engines": { @@ -15933,6 +18214,8 @@ }, "node_modules/widest-line/node_modules/string-width": { "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", "dev": true, "license": "MIT", "dependencies": { @@ -15963,6 +18246,8 @@ }, "node_modules/wildcard-match": { "version": "5.1.2", + "resolved": "https://registry.npmjs.org/wildcard-match/-/wildcard-match-5.1.2.tgz", + "integrity": "sha512-qNXwI591Z88c8bWxp+yjV60Ch4F8Riawe3iGxbzquhy8Xs9m+0+SLFBGb/0yCTIDElawtaImC37fYZ+dr32KqQ==", "dev": true, "license": "ISC" }, @@ -15982,6 +18267,8 @@ }, "node_modules/windows-release/node_modules/execa": { "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", "dev": true, "license": "MIT", "dependencies": { @@ -16004,6 +18291,8 @@ }, "node_modules/windows-release/node_modules/human-signals": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", "dev": true, "license": "Apache-2.0", "engines": { @@ -16019,11 +18308,15 @@ }, "node_modules/wordwrap": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==", "dev": true, "license": "MIT" }, "node_modules/wrap-ansi": { "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", "license": "MIT", "dependencies": { "ansi-styles": "^4.0.0", @@ -16039,10 +18332,14 @@ }, "node_modules/wrappy": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", "license": "ISC" }, "node_modules/write-file-atomic": { "version": "3.0.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", + "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", "dev": true, "license": "ISC", "dependencies": { @@ -16054,6 +18351,8 @@ }, "node_modules/ws": { "version": "8.13.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.13.0.tgz", + "integrity": "sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==", "license": "MIT", "engines": { "node": ">=10.0.0" @@ -16073,6 +18372,8 @@ }, "node_modules/xdg-basedir": { "version": "5.1.0", + "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-5.1.0.tgz", + "integrity": "sha512-GCPAHLvrIH13+c0SuacwvRYj2SxJXQ4kaVTT5xgL3kPrz56XxkF21IGhjSE1+W0aw7gpBWRGXLCPnPby6lSpmQ==", "dev": true, "license": "MIT", "engines": { @@ -16084,6 +18385,8 @@ }, "node_modules/xtend": { "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", "dev": true, "license": "MIT", "engines": { @@ -16097,6 +18400,8 @@ }, "node_modules/y18n": { "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", "dev": true, "license": "ISC", "engines": { @@ -16105,6 +18410,8 @@ }, "node_modules/yallist": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", "license": "ISC" }, "node_modules/yaml": { @@ -16134,6 +18441,8 @@ }, "node_modules/yargs-parser": { "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", "dev": true, "license": "ISC", "engines": { @@ -16142,6 +18451,8 @@ }, "node_modules/yargs/node_modules/yargs-parser": { "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", "dev": true, "license": "ISC", "engines": { @@ -16150,6 +18461,8 @@ }, "node_modules/yauzl": { "version": "2.10.0", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", "license": "MIT", "dependencies": { "buffer-crc32": "~0.2.3", @@ -16158,6 +18471,8 @@ }, "node_modules/yn": { "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", + "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", "license": "MIT", "engines": { "node": ">=6" @@ -16165,8 +18480,9 @@ }, "node_modules/yocto-queue": { "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", "dev": true, - "license": "MIT", "engines": { "node": ">=10" }, @@ -16175,7 +18491,7 @@ } }, "packages/cypress-cloud": { - "version": "1.10.0-beta.0", + "version": "1.10.0-beta.5", "license": "GPL-3.0-or-later", "dependencies": { "@cypress/commit-info": "^2.2.0", @@ -16186,6 +18502,7 @@ "commander": "^10.0.0", "common-path-prefix": "^3.0.0", "cy2": "^3.4.2", + "date-fns": "^2.30.0", "debug": "^4.3.4", "execa": "^5.1.1", "fast-safe-stringify": "^2.1.1", @@ -16195,6 +18512,7 @@ "lil-http-terminator": "^1.2.3", "lodash": "^4.17.21", "nanoid": "^3.3.4", + "plur": "^4.0.0", "pretty-ms": "^7.0.1", "source-map-support": "^0.5.21", "table": "^6.8.1", @@ -16207,8 +18525,8 @@ }, "devDependencies": { "@release-it/conventional-changelog": "^7.0.0", - "@swc/core": "^1.3.23", - "@swc/jest": "^0.2.24", + "@swc/core": "^1.3.86", + "@swc/jest": "^0.2.29", "@types/bluebird": "^3.5.38", "@types/debug": "^4.1.7", "@types/getos": "^3.0.1", @@ -16216,7 +18534,7 @@ "@types/jest": "^29.2.4", "@types/lodash": "^4.14.191", "@types/ws": "^8.5.4", - "cypress": "^13.0.0", + "cypress": "^13.2.0", "esbuild": "^0.16.5", "eslint": "^7.32.0", "eslint-config-custom": "latest", @@ -16234,6 +18552,8 @@ }, "packages/cypress-cloud/node_modules/@next/eslint-plugin-next": { "version": "12.3.4", + "resolved": "https://registry.npmjs.org/@next/eslint-plugin-next/-/eslint-plugin-next-12.3.4.tgz", + "integrity": "sha512-BFwj8ykJY+zc1/jWANsDprDIu2MgwPOIKxNVnrKvPs+f5TPegrVnem8uScND+1veT4B7F6VeqgaNLFW1Hzl9Og==", "dev": true, "license": "MIT", "dependencies": { @@ -16343,6 +18663,70 @@ "node": ">=10" } }, + "packages/cypress-cloud/node_modules/@swc/core": { + "version": "1.3.86", + "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.3.86.tgz", + "integrity": "sha512-bEXUtm37bcmJ3q+geG7Zy4rJNUzpxalXQUrrqX1ZoGj3HRtzdeVZ0L/um3fG2j16qe61t8TX/OIZ2G6j6dkG/w==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "@swc/types": "^0.1.4" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/swc" + }, + "optionalDependencies": { + "@swc/core-darwin-arm64": "1.3.86", + "@swc/core-darwin-x64": "1.3.86", + "@swc/core-linux-arm-gnueabihf": "1.3.86", + "@swc/core-linux-arm64-gnu": "1.3.86", + "@swc/core-linux-arm64-musl": "1.3.86", + "@swc/core-linux-x64-gnu": "1.3.86", + "@swc/core-linux-x64-musl": "1.3.86", + "@swc/core-win32-arm64-msvc": "1.3.86", + "@swc/core-win32-ia32-msvc": "1.3.86", + "@swc/core-win32-x64-msvc": "1.3.86" + }, + "peerDependencies": { + "@swc/helpers": "^0.5.0" + }, + "peerDependenciesMeta": { + "@swc/helpers": { + "optional": true + } + } + }, + "packages/cypress-cloud/node_modules/@swc/core-darwin-arm64": { + "version": "1.3.86", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.3.86.tgz", + "integrity": "sha512-hMvSDms0sJJHNtRa3Vhmr9StWN1vmikbf5VE0IZUYGnF1/JZTkXU1h6CdNUY4Hr6i7uCZjH6BEhxFHX1JtKV4w==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=10" + } + }, + "packages/cypress-cloud/node_modules/@swc/helpers": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.2.tgz", + "integrity": "sha512-E4KcWTpoLHqwPHLxidpOqQbcrZVgi0rsmmZXUle1jXmJfuIf/UWpczUJ7MZZ5tlxytgJXyp0w4PGkkeLiuIdZw==", + "dev": true, + "optional": true, + "peer": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, "packages/cypress-cloud/node_modules/agent-base": { "version": "7.1.0", "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.0.tgz", @@ -16697,6 +19081,8 @@ }, "packages/cypress-cloud/node_modules/eslint-config-custom/node_modules/eslint-config-next": { "version": "12.3.4", + "resolved": "https://registry.npmjs.org/eslint-config-next/-/eslint-config-next-12.3.4.tgz", + "integrity": "sha512-WuT3gvgi7Bwz00AOmKGhOeqnyA5P29Cdyr0iVjLyfDbk+FANQKcOjFUTZIdyYfe5Tq1x4TGcmoe4CwctGvFjHQ==", "dev": true, "license": "MIT", "dependencies": { @@ -16750,6 +19136,8 @@ }, "packages/cypress-cloud/node_modules/eslint-config-custom/node_modules/eslint-plugin-react": { "version": "7.28.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.28.0.tgz", + "integrity": "sha512-IOlFIRHzWfEQQKcAD4iyYDndHwTQiCMcJVJjxempf203jnNLUnW34AXLrV33+nEXoifJE2ZEGmcjKPL8957eSw==", "dev": true, "license": "MIT", "dependencies": { @@ -16777,6 +19165,8 @@ }, "packages/cypress-cloud/node_modules/execa": { "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", "license": "MIT", "dependencies": { "cross-spawn": "^7.0.3", @@ -16900,6 +19290,8 @@ }, "packages/cypress-cloud/node_modules/glob": { "version": "7.1.7", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", + "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", "dev": true, "license": "ISC", "dependencies": { @@ -16970,6 +19362,8 @@ }, "packages/cypress-cloud/node_modules/human-signals": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", "license": "Apache-2.0", "engines": { "node": ">=10.17.0" @@ -17349,6 +19743,20 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "packages/cypress-cloud/node_modules/plur": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/plur/-/plur-4.0.0.tgz", + "integrity": "sha512-4UGewrYgqDFw9vV6zNV+ADmPAUAfJPKtGvb/VdpQAx25X5f3xXdGdyOEVFwkl8Hl/tl7+xbeHqSEM+D5/TirUg==", + "dependencies": { + "irregular-plurals": "^3.2.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "packages/cypress-cloud/node_modules/proxy-agent": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/proxy-agent/-/proxy-agent-6.3.0.tgz", @@ -17558,6 +19966,8 @@ }, "packages/cypress-cloud/node_modules/resolve": { "version": "2.0.0-next.4", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.4.tgz", + "integrity": "sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ==", "dev": true, "license": "MIT", "dependencies": { @@ -17721,6 +20131,8 @@ }, "@babel/compat-data": { "version": "7.22.9", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.22.9.tgz", + "integrity": "sha512-5UamI7xkUcJ3i9qVDS+KFDEK8/7oJ55/sJMB1Ge7IEapr7KfdfV/HErR+koZwOfd+SgtFKOKRhRakdg++DcJpQ==", "dev": true }, "@babel/core": { @@ -17746,6 +20158,8 @@ "dependencies": { "semver": { "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true } } @@ -17800,6 +20214,8 @@ "dependencies": { "lru-cache": { "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", "dev": true, "requires": { "yallist": "^3.0.2" @@ -17807,10 +20223,14 @@ }, "semver": { "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true }, "yallist": { "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", "dev": true } } @@ -17833,6 +20253,8 @@ "dependencies": { "semver": { "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, "peer": true } @@ -17850,6 +20272,8 @@ "dependencies": { "semver": { "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, "peer": true } @@ -17869,10 +20293,14 @@ }, "@babel/helper-environment-visitor": { "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.5.tgz", + "integrity": "sha512-XGmhECfVA/5sAt+H+xpSg0mfrHq6FzNr9Oxh7PSEBBRUb/mL7Kz3NICXb194rCqAEdxkhPT1a88teizAFyvk8Q==", "dev": true }, "@babel/helper-function-name": { "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.22.5.tgz", + "integrity": "sha512-wtHSq6jMRE3uF2otvfuD3DIvVhOsSNshQl0Qrd7qC9oQJzHvOL4qQXlQn2916+CXGywIjpGuIkoyZRRxHPiNQQ==", "dev": true, "requires": { "@babel/template": "^7.22.5", @@ -17881,6 +20309,8 @@ }, "@babel/helper-hoist-variables": { "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", + "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", "dev": true, "requires": { "@babel/types": "^7.22.5" @@ -17896,6 +20326,8 @@ }, "@babel/helper-module-imports": { "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.5.tgz", + "integrity": "sha512-8Dl6+HD/cKifutF5qGd/8ZJi84QeAKh+CEe1sBzz8UayBBGg1dAIJrdHOcOM5b2MpzWL2yuotJTtGjETq0qjXg==", "dev": true, "requires": { "@babel/types": "^7.22.5" @@ -17903,6 +20335,8 @@ }, "@babel/helper-module-transforms": { "version": "7.22.9", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.22.9.tgz", + "integrity": "sha512-t+WA2Xn5K+rTeGtC8jCsdAH52bjggG5TKRuRrAGNM/mjIbO4GxvlLMFOEz9wXY5I2XQ60PMFsAG2WIcG82dQMQ==", "dev": true, "requires": { "@babel/helper-environment-visitor": "^7.22.5", @@ -17922,6 +20356,8 @@ }, "@babel/helper-plugin-utils": { "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz", + "integrity": "sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==", "dev": true }, "@babel/helper-remap-async-to-generator": { @@ -17946,6 +20382,8 @@ }, "@babel/helper-simple-access": { "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz", + "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==", "dev": true, "requires": { "@babel/types": "^7.22.5" @@ -17961,6 +20399,8 @@ }, "@babel/helper-split-export-declaration": { "version": "7.22.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", + "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", "dev": true, "requires": { "@babel/types": "^7.22.5" @@ -17968,13 +20408,19 @@ }, "@babel/helper-string-parser": { "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz", + "integrity": "sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==", "dev": true }, "@babel/helper-validator-identifier": { - "version": "7.22.5" + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.5.tgz", + "integrity": "sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ==" }, "@babel/helper-validator-option": { "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.22.5.tgz", + "integrity": "sha512-R3oB6xlIVKUnxNUxbmgq7pKjxpru24zlimpE8WK47fACIlM0II/Hm1RS8IaOI7NgCr6LNS+jl5l75m20npAziw==", "dev": true }, "@babel/helper-wrap-function": { @@ -18006,6 +20452,8 @@ "dependencies": { "ansi-styles": { "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "requires": { "color-convert": "^1.9.0" } @@ -18020,18 +20468,26 @@ }, "color-convert": { "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", "requires": { "color-name": "1.1.3" } }, "color-name": { - "version": "1.1.3" + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" }, "has-flag": { - "version": "3.0.0" + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==" }, "supports-color": { "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "requires": { "has-flag": "^3.0.0" } @@ -18077,6 +20533,8 @@ }, "@babel/plugin-syntax-async-generators": { "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.8.0" @@ -18084,6 +20542,8 @@ }, "@babel/plugin-syntax-bigint": { "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", + "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.8.0" @@ -18091,6 +20551,8 @@ }, "@babel/plugin-syntax-class-properties": { "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.12.13" @@ -18138,6 +20600,8 @@ }, "@babel/plugin-syntax-import-meta": { "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", + "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.10.4" @@ -18145,6 +20609,8 @@ }, "@babel/plugin-syntax-json-strings": { "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.8.0" @@ -18159,6 +20625,8 @@ }, "@babel/plugin-syntax-logical-assignment-operators": { "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.10.4" @@ -18166,6 +20634,8 @@ }, "@babel/plugin-syntax-nullish-coalescing-operator": { "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.8.0" @@ -18173,6 +20643,8 @@ }, "@babel/plugin-syntax-numeric-separator": { "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.10.4" @@ -18180,6 +20652,8 @@ }, "@babel/plugin-syntax-object-rest-spread": { "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.8.0" @@ -18187,6 +20661,8 @@ }, "@babel/plugin-syntax-optional-catch-binding": { "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.8.0" @@ -18194,6 +20670,8 @@ }, "@babel/plugin-syntax-optional-chaining": { "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.8.0" @@ -18209,16 +20687,20 @@ }, "@babel/plugin-syntax-top-level-await": { "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-syntax-typescript": { - "version": "7.20.0", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.22.5.tgz", + "integrity": "sha512-1mS2o03i7t1c6VzH6fdQ3OA8tcEIxwG18zIPRp+UY1Ihv6W+XZzBCVxExF9upussPXJ0xE9XRHwMoNs1ep/nRQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.19.0" + "@babel/helper-plugin-utils": "^7.22.5" } }, "@babel/plugin-syntax-unicode-sets-regex": { @@ -18312,6 +20794,8 @@ "dependencies": { "globals": { "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", "dev": true, "peer": true } @@ -18762,6 +21246,8 @@ "dependencies": { "semver": { "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, "peer": true } @@ -18785,9 +21271,18 @@ "peer": true }, "@babel/runtime": { - "version": "7.20.6", + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.22.15.tgz", + "integrity": "sha512-T0O+aa+4w0u06iNmapipJXMV4HoUir03hpx3/YqXXhu9xim3w+dVphjFWl1OH8NbZHw5Lbm9k45drDkgq2VNNA==", "requires": { - "regenerator-runtime": "^0.13.11" + "regenerator-runtime": "^0.14.0" + }, + "dependencies": { + "regenerator-runtime": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz", + "integrity": "sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==" + } } }, "@babel/runtime-corejs3": { @@ -18799,6 +21294,8 @@ }, "@babel/template": { "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.5.tgz", + "integrity": "sha512-X7yV7eiwAxdj9k94NEylvbVHLiVG1nvzCV2EAowhxLTwODV1jl9UzZ48leOC0sH7OnuHrIkllaBgneUykIcZaw==", "dev": true, "requires": { "@babel/code-frame": "^7.22.5", @@ -18824,6 +21321,8 @@ "dependencies": { "globals": { "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", "dev": true } } @@ -18839,20 +21338,28 @@ }, "@bcoe/v8-coverage": { "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", + "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", "dev": true }, "@colors/colors": { "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", + "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", "optional": true }, "@cspotcode/source-map-support": { "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", + "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", "requires": { "@jridgewell/trace-mapping": "0.3.9" }, "dependencies": { "@jridgewell/trace-mapping": { "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", + "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", "requires": { "@jridgewell/resolve-uri": "^3.0.3", "@jridgewell/sourcemap-codec": "^1.4.10" @@ -18877,6 +21384,8 @@ "dependencies": { "argparse": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", "dev": true }, "globby": { @@ -18910,6 +21419,8 @@ }, "@cypress/commit-info": { "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@cypress/commit-info/-/commit-info-2.2.0.tgz", + "integrity": "sha512-A7CYS0Iqp/u52JTnSWlDFjWMKx7rIfd+mk0Fdksrcs4Wdf5HXPsoZO475VJ+xL7LPhJrjKhgyl/TPKO3worZyQ==", "requires": { "bluebird": "3.5.5", "check-more-types": "2.24.0", @@ -18920,10 +21431,14 @@ }, "dependencies": { "bluebird": { - "version": "3.5.5" + "version": "3.5.5", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.5.tgz", + "integrity": "sha512-5am6HnnfN+urzt4yfg7IgTbotDjIT/u8AJpEt0sIU9FtXfVeezXAPKswrG+xKUCOYAINpSdgZVDU6QFh+cuH3w==" }, "cross-spawn": { "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", "requires": { "nice-try": "^1.0.4", "path-key": "^2.0.1", @@ -18934,6 +21449,8 @@ }, "execa": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", "requires": { "cross-spawn": "^6.0.0", "get-stream": "^4.0.0", @@ -18946,15 +21463,21 @@ }, "get-stream": { "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", "requires": { "pump": "^3.0.0" } }, "is-stream": { - "version": "1.1.0" + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==" }, "npm-run-path": { "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==", "requires": { "path-key": "^2.0.0" } @@ -18964,17 +21487,23 @@ }, "shebang-command": { "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", "requires": { "shebang-regex": "^1.0.0" } }, "shebang-regex": { - "version": "1.0.0" + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==" } } }, "@cypress/grep": { "version": "3.1.5", + "resolved": "https://registry.npmjs.org/@cypress/grep/-/grep-3.1.5.tgz", + "integrity": "sha512-dbLKP9wGLId+TwTRFDcWVcr9AvJ06W3K7dVeJzLONiPbI5/XJh2mDZvnoyJlAz+VZxdwe0+nejk/CPmuphuzkQ==", "dev": true, "requires": { "debug": "^4.3.4", @@ -18983,9 +21512,9 @@ } }, "@cypress/request": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@cypress/request/-/request-3.0.0.tgz", - "integrity": "sha512-GKFCqwZwMYmL3IBoNeR2MM1SnxRIGERsQOTWeQKoYBt2JLqcqiy7JXqO894FLrpjZYqGxW92MNwRH2BN56obdQ==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@cypress/request/-/request-3.0.1.tgz", + "integrity": "sha512-TWivJlJi8ZDx2wGOw1dbLuHJKUYX7bWySw377nlnGOW3hP9/MUKIsEdXT/YngWxVdgNCHRBmFlBipE+5/2ZZlQ==", "requires": { "aws-sign2": "~0.7.0", "aws4": "^1.8.0", @@ -19000,7 +21529,7 @@ "json-stringify-safe": "~5.0.1", "mime-types": "~2.1.19", "performance-now": "^2.1.0", - "qs": "~6.10.3", + "qs": "6.10.4", "safe-buffer": "^5.1.2", "tough-cookie": "^4.1.3", "tunnel-agent": "^0.6.0", @@ -19036,23 +21565,41 @@ }, "@cypress/xvfb": { "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@cypress/xvfb/-/xvfb-1.2.4.tgz", + "integrity": "sha512-skbBzPggOVYCbnGgV+0dmBdW/s77ZkAOXIC1knS8NagwDjBrNC1LuXtQJeiN6l+m7lzmHtaoUw/ctJKdqkG57Q==", "requires": { "debug": "^3.1.0", "lodash.once": "^4.1.1" + }, + "dependencies": { + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "requires": { + "ms": "^2.1.1" + } + } } }, "@esbuild/darwin-arm64": { "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.16.17.tgz", + "integrity": "sha512-/2agbUEfmxWHi9ARTX6OQ/KgXnOWfsNlTeLcoV7HSuSTv63E4DqtAc+2XqGw1KHxKMHGZgbVCZge7HXWX9Vn+w==", "dev": true, "optional": true }, "@esbuild/darwin-x64": { "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.16.17.tgz", + "integrity": "sha512-2By45OBHulkd9Svy5IOCZt376Aa2oOkiE9QWUK9fe6Tb+WDr8hXL3dpqi+DeLiMed8tVXspzsTAvd0jUl96wmg==", "dev": true, "optional": true }, "@eslint/eslintrc": { "version": "0.4.3", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.3.tgz", + "integrity": "sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==", "requires": { "ajv": "^6.12.4", "debug": "^4.1.1", @@ -19078,6 +21625,8 @@ }, "@humanwhocodes/config-array": { "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.5.0.tgz", + "integrity": "sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==", "requires": { "@humanwhocodes/object-schema": "^1.2.0", "debug": "^4.1.1", @@ -19085,18 +21634,26 @@ } }, "@humanwhocodes/object-schema": { - "version": "1.2.1" + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", + "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==" }, "@hutson/parse-repository-url": { "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@hutson/parse-repository-url/-/parse-repository-url-3.0.2.tgz", + "integrity": "sha512-H9XAx3hc0BQHY6l+IFSWHDySypcXsvsuLhgYLUGywmJ5pswRVQJUHpOsobnLYp2ZUaUlKiKDrgWWhosOwAEM8Q==", "dev": true }, "@iarna/toml": { "version": "2.2.5", + "resolved": "https://registry.npmjs.org/@iarna/toml/-/toml-2.2.5.tgz", + "integrity": "sha512-trnsAYxU3xnS1gPHPyU961coFyLkh4gAD/0zQ5mymY4yOZ+CYvsPqUbOFSw0aDM4y0tV7tiFxL/1XfXPNC6IPg==", "dev": true }, "@istanbuljs/load-nyc-config": { "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", + "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", "dev": true, "requires": { "camelcase": "^5.3.1", @@ -19108,56 +21665,64 @@ }, "@istanbuljs/schema": { "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", + "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", "dev": true }, "@jest/console": { - "version": "29.3.1", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.7.0.tgz", + "integrity": "sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==", "dev": true, "requires": { - "@jest/types": "^29.3.1", + "@jest/types": "^29.6.3", "@types/node": "*", "chalk": "^4.0.0", - "jest-message-util": "^29.3.1", - "jest-util": "^29.3.1", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0", "slash": "^3.0.0" } }, "@jest/core": { - "version": "29.3.1", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.7.0.tgz", + "integrity": "sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==", "dev": true, "requires": { - "@jest/console": "^29.3.1", - "@jest/reporters": "^29.3.1", - "@jest/test-result": "^29.3.1", - "@jest/transform": "^29.3.1", - "@jest/types": "^29.3.1", + "@jest/console": "^29.7.0", + "@jest/reporters": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", "@types/node": "*", "ansi-escapes": "^4.2.1", "chalk": "^4.0.0", "ci-info": "^3.2.0", "exit": "^0.1.2", "graceful-fs": "^4.2.9", - "jest-changed-files": "^29.2.0", - "jest-config": "^29.3.1", - "jest-haste-map": "^29.3.1", - "jest-message-util": "^29.3.1", - "jest-regex-util": "^29.2.0", - "jest-resolve": "^29.3.1", - "jest-resolve-dependencies": "^29.3.1", - "jest-runner": "^29.3.1", - "jest-runtime": "^29.3.1", - "jest-snapshot": "^29.3.1", - "jest-util": "^29.3.1", - "jest-validate": "^29.3.1", - "jest-watcher": "^29.3.1", + "jest-changed-files": "^29.7.0", + "jest-config": "^29.7.0", + "jest-haste-map": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-regex-util": "^29.6.3", + "jest-resolve": "^29.7.0", + "jest-resolve-dependencies": "^29.7.0", + "jest-runner": "^29.7.0", + "jest-runtime": "^29.7.0", + "jest-snapshot": "^29.7.0", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "jest-watcher": "^29.7.0", "micromatch": "^4.0.4", - "pretty-format": "^29.3.1", + "pretty-format": "^29.7.0", "slash": "^3.0.0", "strip-ansi": "^6.0.0" } }, "@jest/create-cache-key-function": { "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/create-cache-key-function/-/create-cache-key-function-27.5.1.tgz", + "integrity": "sha512-dmH1yW+makpTSURTy8VzdUwFnfQh1G8R+DxO2Ho2FFmBbKFEVm+3jWdvFhE2VqB/LATCTokkP0dotjyQyw5/AQ==", "dev": true, "requires": { "@jest/types": "^27.5.1" @@ -19165,6 +21730,8 @@ "dependencies": { "@jest/types": { "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", "dev": true, "requires": { "@types/istanbul-lib-coverage": "^2.0.0", @@ -19184,62 +21751,74 @@ } }, "@jest/environment": { - "version": "29.3.1", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.7.0.tgz", + "integrity": "sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==", "dev": true, "requires": { - "@jest/fake-timers": "^29.3.1", - "@jest/types": "^29.3.1", + "@jest/fake-timers": "^29.7.0", + "@jest/types": "^29.6.3", "@types/node": "*", - "jest-mock": "^29.3.1" + "jest-mock": "^29.7.0" } }, "@jest/expect": { - "version": "29.3.1", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.7.0.tgz", + "integrity": "sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==", "dev": true, "requires": { - "expect": "^29.3.1", - "jest-snapshot": "^29.3.1" + "expect": "^29.7.0", + "jest-snapshot": "^29.7.0" } }, "@jest/expect-utils": { - "version": "29.3.1", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.7.0.tgz", + "integrity": "sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==", "dev": true, "requires": { - "jest-get-type": "^29.2.0" + "jest-get-type": "^29.6.3" } }, "@jest/fake-timers": { - "version": "29.3.1", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.7.0.tgz", + "integrity": "sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==", "dev": true, "requires": { - "@jest/types": "^29.3.1", - "@sinonjs/fake-timers": "^9.1.2", + "@jest/types": "^29.6.3", + "@sinonjs/fake-timers": "^10.0.2", "@types/node": "*", - "jest-message-util": "^29.3.1", - "jest-mock": "^29.3.1", - "jest-util": "^29.3.1" + "jest-message-util": "^29.7.0", + "jest-mock": "^29.7.0", + "jest-util": "^29.7.0" } }, "@jest/globals": { - "version": "29.3.1", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.7.0.tgz", + "integrity": "sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==", "dev": true, "requires": { - "@jest/environment": "^29.3.1", - "@jest/expect": "^29.3.1", - "@jest/types": "^29.3.1", - "jest-mock": "^29.3.1" + "@jest/environment": "^29.7.0", + "@jest/expect": "^29.7.0", + "@jest/types": "^29.6.3", + "jest-mock": "^29.7.0" } }, "@jest/reporters": { - "version": "29.3.1", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.7.0.tgz", + "integrity": "sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==", "dev": true, "requires": { "@bcoe/v8-coverage": "^0.2.3", - "@jest/console": "^29.3.1", - "@jest/test-result": "^29.3.1", - "@jest/transform": "^29.3.1", - "@jest/types": "^29.3.1", - "@jridgewell/trace-mapping": "^0.3.15", + "@jest/console": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@jridgewell/trace-mapping": "^0.3.18", "@types/node": "*", "chalk": "^4.0.0", "collect-v8-coverage": "^1.0.0", @@ -19247,82 +21826,111 @@ "glob": "^7.1.3", "graceful-fs": "^4.2.9", "istanbul-lib-coverage": "^3.0.0", - "istanbul-lib-instrument": "^5.1.0", + "istanbul-lib-instrument": "^6.0.0", "istanbul-lib-report": "^3.0.0", "istanbul-lib-source-maps": "^4.0.0", "istanbul-reports": "^3.1.3", - "jest-message-util": "^29.3.1", - "jest-util": "^29.3.1", - "jest-worker": "^29.3.1", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0", + "jest-worker": "^29.7.0", "slash": "^3.0.0", "string-length": "^4.0.1", "strip-ansi": "^6.0.0", "v8-to-istanbul": "^9.0.1" + }, + "dependencies": { + "istanbul-lib-instrument": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.0.tgz", + "integrity": "sha512-x58orMzEVfzPUKqlbLd1hXCnySCxKdDKa6Rjg97CwuLLRI4g3FHTdnExu1OqffVFay6zeMW+T6/DowFLndWnIw==", + "dev": true, + "requires": { + "@babel/core": "^7.12.3", + "@babel/parser": "^7.14.7", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^7.5.4" + } + } } }, "@jest/schemas": { - "version": "29.0.0", + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", + "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", "dev": true, "requires": { - "@sinclair/typebox": "^0.24.1" + "@sinclair/typebox": "^0.27.8" } }, "@jest/source-map": { - "version": "29.2.0", + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-29.6.3.tgz", + "integrity": "sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==", "dev": true, "requires": { - "@jridgewell/trace-mapping": "^0.3.15", + "@jridgewell/trace-mapping": "^0.3.18", "callsites": "^3.0.0", "graceful-fs": "^4.2.9" } }, "@jest/test-result": { - "version": "29.3.1", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.7.0.tgz", + "integrity": "sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==", "dev": true, "requires": { - "@jest/console": "^29.3.1", - "@jest/types": "^29.3.1", + "@jest/console": "^29.7.0", + "@jest/types": "^29.6.3", "@types/istanbul-lib-coverage": "^2.0.0", "collect-v8-coverage": "^1.0.0" } }, "@jest/test-sequencer": { - "version": "29.3.1", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.7.0.tgz", + "integrity": "sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==", "dev": true, "requires": { - "@jest/test-result": "^29.3.1", + "@jest/test-result": "^29.7.0", "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.3.1", + "jest-haste-map": "^29.7.0", "slash": "^3.0.0" } }, "@jest/transform": { - "version": "29.3.1", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.7.0.tgz", + "integrity": "sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==", "dev": true, "requires": { "@babel/core": "^7.11.6", - "@jest/types": "^29.3.1", - "@jridgewell/trace-mapping": "^0.3.15", + "@jest/types": "^29.6.3", + "@jridgewell/trace-mapping": "^0.3.18", "babel-plugin-istanbul": "^6.1.1", "chalk": "^4.0.0", "convert-source-map": "^2.0.0", "fast-json-stable-stringify": "^2.1.0", "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.3.1", - "jest-regex-util": "^29.2.0", - "jest-util": "^29.3.1", + "jest-haste-map": "^29.7.0", + "jest-regex-util": "^29.6.3", + "jest-util": "^29.7.0", "micromatch": "^4.0.4", "pirates": "^4.0.4", "slash": "^3.0.0", - "write-file-atomic": "^4.0.1" + "write-file-atomic": "^4.0.2" }, "dependencies": { "convert-source-map": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", "dev": true }, "write-file-atomic": { "version": "4.0.2", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", + "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", "dev": true, "requires": { "imurmurhash": "^0.1.4", @@ -19332,10 +21940,12 @@ } }, "@jest/types": { - "version": "29.3.1", + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", + "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", "dev": true, "requires": { - "@jest/schemas": "^29.0.0", + "@jest/schemas": "^29.6.3", "@types/istanbul-lib-coverage": "^2.0.0", "@types/istanbul-reports": "^3.0.0", "@types/node": "*", @@ -19356,6 +21966,8 @@ }, "@jridgewell/set-array": { "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", + "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", "dev": true }, "@jridgewell/source-map": { @@ -19369,6 +21981,8 @@ "dependencies": { "@jridgewell/gen-mapping": { "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", + "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", "dev": true, "peer": true, "requires": { @@ -19383,11 +21997,13 @@ "version": "1.4.14" }, "@jridgewell/trace-mapping": { - "version": "0.3.17", + "version": "0.3.19", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.19.tgz", + "integrity": "sha512-kf37QtfW+Hwx/buWGMPcR60iF9ziHa6r/CZJIHbmcm4+0qrXiVdxegAH0F6yddEVQ7zdkjcGCgCzUu+BcbhQxw==", "dev": true, "requires": { - "@jridgewell/resolve-uri": "3.1.0", - "@jridgewell/sourcemap-codec": "1.4.14" + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" } }, "@lezer/common": { @@ -19437,6 +22053,8 @@ "dependencies": { "glob": { "version": "7.1.7", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", + "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", "requires": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -19458,16 +22076,22 @@ }, "@nodelib/fs.scandir": { "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", "requires": { "@nodelib/fs.stat": "2.0.5", "run-parallel": "^1.1.9" } }, "@nodelib/fs.stat": { - "version": "2.0.5" + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==" }, "@nodelib/fs.walk": { "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", "requires": { "@nodelib/fs.scandir": "2.1.5", "fastq": "^1.6.0" @@ -19536,6 +22160,8 @@ }, "@octokit/plugin-request-log": { "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@octokit/plugin-request-log/-/plugin-request-log-1.0.4.tgz", + "integrity": "sha512-mLUsMkgP7K/cnFEw07kWqXGF5LKrOkD+lhCrKvPHXWDywAwuDUeDwWBpc69XK3pNX0uKiVt8g5z96PJ6z9xCFA==", "dev": true, "requires": {} }, @@ -19943,6 +22569,69 @@ "dev": true, "optional": true }, + "@swc/core-darwin-x64": { + "version": "1.3.71", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.3.71.tgz", + "integrity": "sha512-9sbDXBWgM22w/3Ll5kPhXMPkOiHRoqwMOyxLJBfGtIMnFlh5O+NRN3umRerK3pe4Q6/7hj2M5V+crEHYrXmuxg==", + "dev": true, + "optional": true + }, + "@swc/core-linux-arm-gnueabihf": { + "version": "1.3.71", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.3.71.tgz", + "integrity": "sha512-boKdMZsfKvhBs0FDeqH7KQj0lfYe0wCtrL1lv50oYMEeLajY9o4U5xSmc61Sg4HRXjlbR6dlM2cFfL84t7NpAA==", + "dev": true, + "optional": true + }, + "@swc/core-linux-arm64-gnu": { + "version": "1.3.71", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.3.71.tgz", + "integrity": "sha512-yDatyHYMiOVwhyIA/LBwknPs2CUtLYWEMzPZjgLc+56PbgPs3oiEbNWeVUND5onPrfDQgK7NK1y8JeiXZqTgGQ==", + "dev": true, + "optional": true + }, + "@swc/core-linux-arm64-musl": { + "version": "1.3.71", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.3.71.tgz", + "integrity": "sha512-xAdCA0L/hoa0ULL5SR4sMZCxkWk7C90DOU7wJalNVG9qNWYICfq3G7AR0E9Ohphzqyahfb5QJED/nA7N0+XwbQ==", + "dev": true, + "optional": true + }, + "@swc/core-linux-x64-gnu": { + "version": "1.3.71", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.3.71.tgz", + "integrity": "sha512-j94qLXP/yqhu2afnABAq/xrJIU8TEqcNkp1TlsAeO3R2nVLYL1w4XX8GW71SPnXmd2bwF102c3Cfv/2ilf2y2A==", + "dev": true, + "optional": true + }, + "@swc/core-linux-x64-musl": { + "version": "1.3.71", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.3.71.tgz", + "integrity": "sha512-YiyU848ql6dLlmt0BHccGAaZ36Cf61VzCAMDKID/gd72snvzWcMCHrwSRW0gEFNXHsjBJrmNl+SLYZHfqoGwUA==", + "dev": true, + "optional": true + }, + "@swc/core-win32-arm64-msvc": { + "version": "1.3.71", + "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.3.71.tgz", + "integrity": "sha512-1UsJ+6hnIRe/PVdgDPexvgGaN4KpBncT/bAOqlWc9XC7KeBXAWcGA08LrPUz2Ei00DJXzR622IGZVEYOHNkUOw==", + "dev": true, + "optional": true + }, + "@swc/core-win32-ia32-msvc": { + "version": "1.3.71", + "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.3.71.tgz", + "integrity": "sha512-KnuI89+zojR9lDFELdQYZpxzPZ6pBfLwJfWTSGatnpL1ZHhIsV3tK1jwqIdJK1zkRxpBwc6p6FzSZdZwCSpnJw==", + "dev": true, + "optional": true + }, + "@swc/core-win32-x64-msvc": { + "version": "1.3.71", + "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.3.71.tgz", + "integrity": "sha512-Pcw7fFirpaBOZsU8fhO48ZCb7NxIjuLnLRPrHqWQ4Mapx1+w9ZNdGya2DKP9n8EAiUrJO20WDsrBNMT2MQSWkA==", + "dev": true, + "optional": true + }, "@swc/helpers": { "version": "0.5.1", "dev": true, @@ -20331,6 +23020,8 @@ }, "@pnpm/network.ca-file": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@pnpm/network.ca-file/-/network.ca-file-1.0.2.tgz", + "integrity": "sha512-YcPQ8a0jwYU9bTdJDpXjMi7Brhkr1mXsXrUJvjqM2mQDgkRiz8jFaQGOdaLxgjtUfQgZhKy/O3cG/YwmgKaxLA==", "dev": true, "requires": { "graceful-fs": "4.2.10" @@ -20362,46 +23053,182 @@ "version": "2.0.0", "dev": true }, - "@sinclair/typebox": { - "version": "0.24.51", - "dev": true + "@sinclair/typebox": { + "version": "0.27.8", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", + "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==", + "dev": true + }, + "@sindresorhus/is": { + "version": "5.3.0", + "dev": true + }, + "@sinonjs/commons": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.0.tgz", + "integrity": "sha512-jXBtWAF4vmdNmZgD5FoKsVLv3rPgDnLgPbU84LIJ3otV44vJlDRokVng5v8NFJdCf/da9legHcKaRuZs4L7faA==", + "dev": true, + "requires": { + "type-detect": "4.0.8" + } + }, + "@sinonjs/fake-timers": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz", + "integrity": "sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==", + "dev": true, + "requires": { + "@sinonjs/commons": "^3.0.0" + } + }, + "@swc/core": { + "version": "1.3.23", + "devOptional": true, + "peer": true, + "requires": { + "@swc/core-darwin-arm64": "1.3.23", + "@swc/core-darwin-x64": "1.3.23", + "@swc/core-linux-arm-gnueabihf": "1.3.23", + "@swc/core-linux-arm64-gnu": "1.3.23", + "@swc/core-linux-arm64-musl": "1.3.23", + "@swc/core-linux-x64-gnu": "1.3.23", + "@swc/core-linux-x64-musl": "1.3.23", + "@swc/core-win32-arm64-msvc": "1.3.23", + "@swc/core-win32-ia32-msvc": "1.3.23", + "@swc/core-win32-x64-msvc": "1.3.23" + }, + "dependencies": { + "@swc/core-darwin-x64": { + "version": "1.3.23", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.3.23.tgz", + "integrity": "sha512-eQSN+JJqx/5Dk2C5uet2l7HifGsDBorQHD3PAVnge5jxl+rXU/zbzX9Un56+uuUB0QYeS4Dyr8cN7NHuIKGxBA==", + "optional": true, + "peer": true + }, + "@swc/core-linux-arm-gnueabihf": { + "version": "1.3.23", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.3.23.tgz", + "integrity": "sha512-zxYvggbw6R/sTNey0qgsigFMY59DYepm1+JNojxOKjbnvxmgyeIa5sPdu/5gLj0TtJOiWvSGrpMPNUIVreUSGA==", + "optional": true, + "peer": true + }, + "@swc/core-linux-arm64-gnu": { + "version": "1.3.23", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.3.23.tgz", + "integrity": "sha512-l8UWhcNvZ6RzNZBBToMYuKYijF0h7mbw2RuFV5rpCYF/k/Wh85PaDHPQIQ6qjMHJsIBHYXUt0HLAP+fiAfBiDw==", + "optional": true, + "peer": true + }, + "@swc/core-linux-arm64-musl": { + "version": "1.3.23", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.3.23.tgz", + "integrity": "sha512-TZDPp1wUE1ynVyY0vwIToyOULKEQ91H49R+p6Iu/2YY+UQQwUamhX0Gp8O85RT+j72/iHyhbQkz7yRg6v+GB5A==", + "optional": true, + "peer": true + }, + "@swc/core-linux-x64-gnu": { + "version": "1.3.23", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.3.23.tgz", + "integrity": "sha512-rKqWnOmUyQfoKZuuXs/S0RNobN+kcUyMtwoCdRdCNqOlk1XZRCMpjGc9Aqn73K3xlZ6JXX6oLrXKn375b2dydw==", + "optional": true, + "peer": true + }, + "@swc/core-linux-x64-musl": { + "version": "1.3.23", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.3.23.tgz", + "integrity": "sha512-1MK9eocIhuIr/+yUKnTNHpYovMQvfKTJQbU4UMfQLg2qyCGKAvO+jOy5JIGR9x04MWqz9U3EHHS/7Id35ekhFQ==", + "optional": true, + "peer": true + }, + "@swc/core-win32-arm64-msvc": { + "version": "1.3.23", + "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.3.23.tgz", + "integrity": "sha512-3nmdugj0SJIGWeCJBhvPWIfnE2Ax8H2KZsJfcaWmWg0SDh19aAt48Ncyd8WHHBandJmVm2fSjaANSjp+cS2S9A==", + "optional": true, + "peer": true + }, + "@swc/core-win32-ia32-msvc": { + "version": "1.3.23", + "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.3.23.tgz", + "integrity": "sha512-2AlGRhys1BsfLjXyWOd+5J/Ko2kkVQVuy3ZR8OBGy7XI54p0PpepabloYI9irr+4bi9vtyxoc5rS21PmJxB83Q==", + "optional": true, + "peer": true + }, + "@swc/core-win32-x64-msvc": { + "version": "1.3.23", + "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.3.23.tgz", + "integrity": "sha512-qYKP8sIM7VVLuDb5BkRBoHy28OHZWrUhPTO7WgpErhVVM9wnzmMi/Jgg8SyfMy6oheBjO0QiwWbXONxBwByjnQ==", + "optional": true, + "peer": true + } + } + }, + "@swc/core-darwin-arm64": { + "version": "1.3.23", + "optional": true, + "peer": true + }, + "@swc/core-darwin-x64": { + "version": "1.3.86", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.3.86.tgz", + "integrity": "sha512-Jro6HVH4uSOBM7tTDaQNKLNc8BJV7n+SO+Ft2HAZINyeKJS/8MfEYneG7Vmqg18gv00c6dz9AOCcyz+BR7BFkQ==", + "dev": true, + "optional": true + }, + "@swc/core-linux-arm-gnueabihf": { + "version": "1.3.86", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.3.86.tgz", + "integrity": "sha512-wYB9m0pzXJVSzedXSl4JwS3gKtvcPinpe9MbkddezpqL7OjyDP6pHHW9qIucsfgCrtMtbPC2nqulXLPtAAyIjw==", + "dev": true, + "optional": true + }, + "@swc/core-linux-arm64-gnu": { + "version": "1.3.86", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.3.86.tgz", + "integrity": "sha512-fR44IyK5cdCaO8cC++IEH0Jn03tWnunJnjzA99LxlE5TRInSIOvFm+g5OSUQZDAvEXmQ38sd31LO2HOoDS1Edw==", + "dev": true, + "optional": true }, - "@sindresorhus/is": { - "version": "5.3.0", - "dev": true + "@swc/core-linux-arm64-musl": { + "version": "1.3.86", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.3.86.tgz", + "integrity": "sha512-EUPfdbK4dUk/nkX3Vmv/47XH+DqHOa9JI0CTthvJ8/ZXei1MKDUsUc+tI1zMQX2uCuSkSWsEIEpCmA0tMwFhtw==", + "dev": true, + "optional": true }, - "@sinonjs/commons": { - "version": "1.8.6", + "@swc/core-linux-x64-gnu": { + "version": "1.3.86", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.3.86.tgz", + "integrity": "sha512-snVZZWv8XgNVaKrTxtO3rUN+BbbB6I8Fqwe8zM/DWGJ096J13r89doQ48x5ZyO+bW4D48eZIWP5pdfSW7oBE3w==", "dev": true, - "requires": { - "type-detect": "4.0.8" - } + "optional": true }, - "@sinonjs/fake-timers": { - "version": "9.1.2", + "@swc/core-linux-x64-musl": { + "version": "1.3.86", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.3.86.tgz", + "integrity": "sha512-PnnksUJymEJkdnbV2orOSOSB441UqsxYbJge9zbr5UTRXUfWO3eFRV0iTBegjTlOQGbW6yN+YRSDkenTbmCI6g==", "dev": true, - "requires": { - "@sinonjs/commons": "^1.7.0" - } + "optional": true }, - "@swc/core": { - "version": "1.3.23", - "devOptional": true, - "requires": { - "@swc/core-darwin-arm64": "1.3.23", - "@swc/core-darwin-x64": "1.3.23", - "@swc/core-linux-arm-gnueabihf": "1.3.23", - "@swc/core-linux-arm64-gnu": "1.3.23", - "@swc/core-linux-arm64-musl": "1.3.23", - "@swc/core-linux-x64-gnu": "1.3.23", - "@swc/core-linux-x64-musl": "1.3.23", - "@swc/core-win32-arm64-msvc": "1.3.23", - "@swc/core-win32-ia32-msvc": "1.3.23", - "@swc/core-win32-x64-msvc": "1.3.23" - } + "@swc/core-win32-arm64-msvc": { + "version": "1.3.86", + "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.3.86.tgz", + "integrity": "sha512-XlGEGyHwLndm08VvgeAPGj40L+Hx575MQC+2fsyB1uSNUN+uf7fvke+wc7k50a92CaQe/8foLyIR5faayozEJA==", + "dev": true, + "optional": true }, - "@swc/core-darwin-arm64": { - "version": "1.3.23", + "@swc/core-win32-ia32-msvc": { + "version": "1.3.86", + "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.3.86.tgz", + "integrity": "sha512-U1BhZa1x9yn+wZGTQmt1cYR79a0FzW/wL6Jas1Pn0bykKLxdRU4mCeZt2P+T3buLm8jr8LpPWiCrbvr658PzwA==", + "dev": true, + "optional": true + }, + "@swc/core-win32-x64-msvc": { + "version": "1.3.86", + "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.3.86.tgz", + "integrity": "sha512-wRoQUajqpE3wITHhZVj/6BPu/QwHriFHLHuJA+9y6PeGtUtTmntL42aBKXIFhfL767dYFtohyNg1uZ9eqbGyGQ==", + "dev": true, "optional": true }, "@swc/helpers": { @@ -20411,15 +23238,25 @@ } }, "@swc/jest": { - "version": "0.2.24", + "version": "0.2.29", + "resolved": "https://registry.npmjs.org/@swc/jest/-/jest-0.2.29.tgz", + "integrity": "sha512-8reh5RvHBsSikDC3WGCd5ZTd2BXKkyOdK7QwynrCH58jk2cQFhhHhFBg/jvnWZehUQe/EoOImLENc9/DwbBFow==", "dev": true, "requires": { "@jest/create-cache-key-function": "^27.4.2", "jsonc-parser": "^3.2.0" } }, + "@swc/types": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/@swc/types/-/types-0.1.5.tgz", + "integrity": "sha512-myfUej5naTBWnqOCc/MdVOLVjXUXtIA+NpDrDBKJtLLg2shUjBu3cZmB/85RyitKc55+lUUyl7oRfLOvkr2hsw==", + "dev": true + }, "@szmarczak/http-timer": { "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-5.0.1.tgz", + "integrity": "sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw==", "dev": true, "requires": { "defer-to-connect": "^2.0.1" @@ -20436,37 +23273,49 @@ "dev": true }, "@tsconfig/node10": { - "version": "1.0.9" + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz", + "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==" }, "@tsconfig/node12": { - "version": "1.0.11" + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", + "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==" }, "@tsconfig/node14": { - "version": "1.0.3" + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", + "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==" }, "@tsconfig/node16": { "version": "1.0.3" }, "@types/babel__core": { - "version": "7.1.20", + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.2.tgz", + "integrity": "sha512-pNpr1T1xLUc2l3xJKuPtsEky3ybxN3m4fJkknfIpTCTfIZCDW57oAg+EfCgIIp2rvCe0Wn++/FfodDS4YXxBwA==", "dev": true, "requires": { - "@babel/parser": "^7.1.0", - "@babel/types": "^7.0.0", + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", "@types/babel__generator": "*", "@types/babel__template": "*", "@types/babel__traverse": "*" } }, "@types/babel__generator": { - "version": "7.6.4", + "version": "7.6.5", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.5.tgz", + "integrity": "sha512-h9yIuWbJKdOPLJTbmSpPzkF67e659PbQDba7ifWm5BJ8xTv+sDmS7rFmywkWOvXedGTivCdeGSIIX8WLcRTz8w==", "dev": true, "requires": { "@babel/types": "^7.0.0" } }, "@types/babel__template": { - "version": "7.4.1", + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.2.tgz", + "integrity": "sha512-/AVzPICMhMOMYoSx9MoKpGDKdBRsIXMNByh1PXSZoa+v6ZoLa8xxtsT/uLQ/NJm0XVAWl/BvId4MlDeXJaeIZQ==", "dev": true, "requires": { "@babel/parser": "^7.1.0", @@ -20474,14 +23323,18 @@ } }, "@types/babel__traverse": { - "version": "7.18.3", + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.2.tgz", + "integrity": "sha512-ojlGK1Hsfce93J0+kn3H5R73elidKUaZonirN33GSmgTUMpzI/MIFfSpF3haANe3G1bEBS9/9/QEqwTzwqFsKw==", "dev": true, "requires": { - "@babel/types": "^7.3.0" + "@babel/types": "^7.20.7" } }, "@types/bluebird": { "version": "3.5.38", + "resolved": "https://registry.npmjs.org/@types/bluebird/-/bluebird-3.5.38.tgz", + "integrity": "sha512-yR/Kxc0dd4FfwtEoLZMoqJbM/VE/W7hXn/MIjb+axcwag0iFmSPK7OBUZq1YWLynJUoWQkfUrI7T0HDqGApNSg==", "dev": true }, "@types/cacheable-request": { @@ -20494,6 +23347,12 @@ "@types/responselike": "^1.0.0" } }, + "@types/chai": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.6.tgz", + "integrity": "sha512-VOVRLM1mBxIRxydiViqPcKn6MIxZytrbMpd6RJLIWKxUNr3zux8no0Oc7kJx0WAPIitgZ0gkrDS+btlqQpubpw==", + "dev": true + }, "@types/debug": { "version": "4.1.7", "dev": true, @@ -20526,10 +23385,14 @@ }, "@types/getos": { "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/getos/-/getos-3.0.1.tgz", + "integrity": "sha512-igBIU7ZwzRrVGYf0nQyISMJZjuDF+5T2v8gnqXGpIbMN7j/pk6s4uSHXfolXPMUZET6aCfG9xoPDT47oM9RN6A==", "dev": true }, "@types/graceful-fs": { - "version": "4.1.5", + "version": "4.1.6", + "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.6.tgz", + "integrity": "sha512-Sig0SNORX9fdW+bQuTEovKj3uHcUL6LQKbCrrqb1X7J6/ReAbhCXRAhc+SMejhLELFj2QcyuxmUooZ4bt5ReSw==", "dev": true, "requires": { "@types/node": "*" @@ -20537,10 +23400,14 @@ }, "@types/http-cache-semantics": { "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.1.tgz", + "integrity": "sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ==", "dev": true }, "@types/is-ci": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/is-ci/-/is-ci-3.0.0.tgz", + "integrity": "sha512-Q0Op0hdWbYd1iahB+IFNQcWXFq4O0Q5MwQP7uN0souuQ4rPg1vEYcnIOfr1gY+M+6rc8FGoRaBO1mOOvL29sEQ==", "dev": true, "requires": { "ci-info": "^3.1.0" @@ -20548,10 +23415,14 @@ }, "@types/istanbul-lib-coverage": { "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", + "integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==", "dev": true }, "@types/istanbul-lib-report": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==", "dev": true, "requires": { "@types/istanbul-lib-coverage": "*" @@ -20559,13 +23430,17 @@ }, "@types/istanbul-reports": { "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", + "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", "dev": true, "requires": { "@types/istanbul-lib-report": "*" } }, "@types/jest": { - "version": "29.2.4", + "version": "29.5.4", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.4.tgz", + "integrity": "sha512-PhglGmhWeD46FYOVLt3X7TiWjzwuVGW9wG/4qocPevXMjCmrIc5b6db9WjeGE4QYVpUAWMDv3v0IiBwObY289A==", "dev": true, "requires": { "expect": "^29.0.0", @@ -20578,7 +23453,9 @@ "peer": true }, "@types/json5": { - "version": "0.0.29" + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==" }, "@types/keyv": { "version": "3.1.4", @@ -20591,27 +23468,39 @@ "version": "4.14.191", "dev": true }, + "@types/minimatch": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz", + "integrity": "sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==", + "dev": true + }, "@types/minimist": { "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.2.tgz", + "integrity": "sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==", "dev": true }, "@types/ms": { "version": "0.7.31", + "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.31.tgz", + "integrity": "sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==", "dev": true }, "@types/node": { - "version": "18.11.17" + "version": "18.17.15", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.17.15.tgz", + "integrity": "sha512-2yrWpBk32tvV/JAd3HNHWuZn/VDN1P+72hWirHnvsvTGSqbANi+kSeuQR9yAHnbvaBvHDsoTdXV0Fe+iRtHLKA==" }, "@types/normalize-package-data": { "version": "2.4.1", - "dev": true - }, - "@types/prettier": { - "version": "2.7.2", + "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz", + "integrity": "sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==", "dev": true }, "@types/prop-types": { "version": "15.7.5", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz", + "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==", "dev": true }, "@types/react": { @@ -20642,21 +23531,31 @@ "dev": true }, "@types/sinonjs__fake-timers": { - "version": "8.1.1" + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-8.1.1.tgz", + "integrity": "sha512-0kSuKjAS0TrGLJ0M/+8MaFkGsQhZpB6pxOmvS3K8FYI72K//YmdfoW9X2qPsAKh1mkwxGD5zib9s1FIFed6E8g==" }, "@types/sizzle": { - "version": "2.3.3" + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/@types/sizzle/-/sizzle-2.3.3.tgz", + "integrity": "sha512-JYM8x9EGF163bEyhdJBpR2QX1R5naCJHC8ucJylJ3w9/CVBaskdQ8WqBf8MmQrd1kRvp/a4TS8HJ+bxzR7ZJYQ==" }, "@types/stack-utils": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz", + "integrity": "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==", "dev": true }, "@types/strip-bom": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-xevGOReSYGM7g/kUBZzPqCrR/KYAo+F0yiPc85WFTJa0MSLtyFTVTU6cJu/aV4mid7IffDIWqo69THF2o4JiEQ==", "dev": true }, "@types/strip-json-comments": { "version": "0.0.30", + "resolved": "https://registry.npmjs.org/@types/strip-json-comments/-/strip-json-comments-0.0.30.tgz", + "integrity": "sha512-7NQmHra/JILCd1QqpSzl8+mJRc8ZHz3uDm8YV1Ks9IhK0epEiTw8aIErbvH9PI+6XbqhyIQy3462nEsn7UVzjQ==", "dev": true }, "@types/ws": { @@ -20675,10 +23574,14 @@ }, "@types/yargs-parser": { "version": "21.0.0", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.0.tgz", + "integrity": "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==", "dev": true }, "@types/yauzl": { "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha512-Cn6WYCm0tXv8p6k+A8PvbDG763EDpBoTzHdA+Q/MF6H3sapGjCm9NzoaJncJS9tUKSuCoDs9XHxYYsQDgxR6kw==", "optional": true, "requires": { "@types/node": "*" @@ -20882,14 +23785,20 @@ "requires": {} }, "acorn-walk": { - "version": "8.2.0" + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", + "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==" }, "add-stream": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/add-stream/-/add-stream-1.0.0.tgz", + "integrity": "sha512-qQLMr+8o0WC4FZGQTcJiKBVC59JylcPSrTtk6usvmIDFUOCKegapy1VHQwRbFMOFyb/inzUVqHs+eMYKDM1YeQ==", "dev": true }, "aggregate-error": { "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", "requires": { "clean-stack": "^2.0.0", "indent-string": "^4.0.0" @@ -20897,6 +23806,8 @@ }, "ajv": { "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "requires": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -20925,6 +23836,8 @@ }, "json-schema-traverse": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", "dev": true, "peer": true } @@ -20938,40 +23851,56 @@ }, "ansi-align": { "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz", + "integrity": "sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==", "dev": true, "requires": { "string-width": "^4.1.0" } }, "ansi-colors": { - "version": "4.1.3" + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", + "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==" }, "ansi-escapes": { "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", "requires": { "type-fest": "^0.21.3" }, "dependencies": { "type-fest": { - "version": "0.21.3" + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==" } } }, "ansi-regex": { - "version": "5.0.1" + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" }, "ansi-styles": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "requires": { "color-convert": "^2.0.1" } }, "any-promise": { "version": "1.3.0", + "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", + "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==", "dev": true }, "anymatch": { "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", "dev": true, "requires": { "normalize-path": "^3.0.0", @@ -20986,17 +23915,23 @@ } }, "arch": { - "version": "2.2.0" + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/arch/-/arch-2.2.0.tgz", + "integrity": "sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==" }, "archy": { "version": "1.0.0", "dev": true }, "arg": { - "version": "4.1.3" + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", + "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==" }, "argparse": { "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", "requires": { "sprintf-js": "~1.0.2" } @@ -21008,8 +23943,16 @@ "@babel/runtime-corejs3": "^7.10.2" } }, + "array-differ": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-3.0.0.tgz", + "integrity": "sha512-THtfYS6KtME/yIAhKjZ2ul7XI96lQGHRputJQHO80LAWQnuGP4iCIN8vdMRboGbIEYBwU33q8Tch1os2+X0kMg==", + "dev": true + }, "array-ify": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-ify/-/array-ify-1.0.0.tgz", + "integrity": "sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng==", "dev": true }, "array-includes": { @@ -21023,7 +23966,9 @@ } }, "array-union": { - "version": "2.1.0" + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==" }, "array.prototype.flat": { "version": "1.3.1", @@ -21036,6 +23981,8 @@ }, "array.prototype.flatmap": { "version": "1.3.1", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.1.tgz", + "integrity": "sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ==", "requires": { "call-bind": "^1.0.2", "define-properties": "^1.1.4", @@ -21045,6 +23992,8 @@ }, "array.prototype.map": { "version": "1.0.5", + "resolved": "https://registry.npmjs.org/array.prototype.map/-/array.prototype.map-1.0.5.tgz", + "integrity": "sha512-gfaKntvwqYIuC7mLLyv2wzZIJqrRhn5PZ9EfFejSx6a78sV7iDsGpG9P+3oUPtm1Rerqm6nrKS4FYuTIvWfo3g==", "dev": true, "requires": { "call-bind": "^1.0.2", @@ -21056,6 +24005,8 @@ }, "array.prototype.tosorted": { "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.1.tgz", + "integrity": "sha512-pZYPXPRl2PqWcsUs6LOMn+1f1532nEoPTYowBtqLwAW+W8vSVhkIGnmOX1t/UQjD6YGI0vcD2B1U7ZFGQH9jnQ==", "requires": { "call-bind": "^1.0.2", "define-properties": "^1.1.4", @@ -21066,6 +24017,8 @@ }, "arrify": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==", "dev": true }, "asn1": { @@ -21081,34 +24034,54 @@ "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==" }, + "assertion-error": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", + "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", + "dev": true + }, "ast-types": { "version": "0.13.4", + "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.13.4.tgz", + "integrity": "sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w==", "dev": true, "requires": { "tslib": "^2.0.1" } }, "ast-types-flow": { - "version": "0.0.7" + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.7.tgz", + "integrity": "sha512-eBvWn1lvIApYMhzQMsu9ciLfkBY499mFZlNqG+/9WR7PVlroQw0vG30cOQQbaKz3sCEc44TAOu2ykzqXSNnwag==" }, "astral-regex": { - "version": "2.0.0" + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==" }, "async": { - "version": "3.2.4" + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", + "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==" }, "async-retry": { "version": "1.3.3", + "resolved": "https://registry.npmjs.org/async-retry/-/async-retry-1.3.3.tgz", + "integrity": "sha512-wfr/jstw9xNi/0teMHrRW7dsz3Lt5ARhYNZ2ewpadnhaIp5mbALhOAP+EAdsC7t4Z6wqsDVv9+W6gm1Dk9mEyw==", "dev": true, "requires": { "retry": "0.13.1" } }, "asynckit": { - "version": "0.4.0" + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" }, "at-least-node": { - "version": "1.0.0" + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", + "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==" }, "aws-sign2": { "version": "0.7.0", @@ -21132,7 +24105,9 @@ }, "dependencies": { "proxy-from-env": { - "version": "1.1.0" + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" } } }, @@ -21147,13 +24122,15 @@ "version": "2.2.0" }, "babel-jest": { - "version": "29.3.1", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.7.0.tgz", + "integrity": "sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==", "dev": true, "requires": { - "@jest/transform": "^29.3.1", + "@jest/transform": "^29.7.0", "@types/babel__core": "^7.1.14", "babel-plugin-istanbul": "^6.1.1", - "babel-preset-jest": "^29.2.0", + "babel-preset-jest": "^29.6.3", "chalk": "^4.0.0", "graceful-fs": "^4.2.9", "slash": "^3.0.0" @@ -21170,6 +24147,8 @@ }, "babel-plugin-istanbul": { "version": "6.1.1", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", + "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0", @@ -21180,7 +24159,9 @@ } }, "babel-plugin-jest-hoist": { - "version": "29.2.0", + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.6.3.tgz", + "integrity": "sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==", "dev": true, "requires": { "@babel/template": "^7.3.3", @@ -21201,6 +24182,8 @@ "dependencies": { "semver": { "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, "peer": true } @@ -21225,6 +24208,8 @@ }, "babel-preset-current-node-syntax": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz", + "integrity": "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==", "dev": true, "requires": { "@babel/plugin-syntax-async-generators": "^7.8.4", @@ -21242,15 +24227,19 @@ } }, "babel-preset-jest": { - "version": "29.2.0", + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.6.3.tgz", + "integrity": "sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==", "dev": true, "requires": { - "babel-plugin-jest-hoist": "^29.2.0", + "babel-plugin-jest-hoist": "^29.6.3", "babel-preset-current-node-syntax": "^1.0.0" } }, "balanced-match": { - "version": "1.0.2" + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" }, "base-x": { "version": "3.0.9", @@ -21260,7 +24249,9 @@ } }, "base64-js": { - "version": "1.5.1" + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" }, "basic-ftp": { "version": "5.0.3", @@ -21278,6 +24269,8 @@ }, "before-after-hook": { "version": "2.2.3", + "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.2.3.tgz", + "integrity": "sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ==", "dev": true }, "big-integer": { @@ -21288,10 +24281,14 @@ }, "binary-extensions": { "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", "dev": true }, "bl": { "version": "5.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-5.1.0.tgz", + "integrity": "sha512-tv1ZJHLfTDnXE6tMHv73YgSJaWR2AFuPwMntBe7XL/GBFHnT0CLnsHMogfk5+GzCDC5ZWarSCYaIGATZt9dNsQ==", "dev": true, "requires": { "buffer": "^6.0.3", @@ -21301,6 +24298,8 @@ "dependencies": { "buffer": { "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", "dev": true, "requires": { "base64-js": "^1.3.1", @@ -21310,10 +24309,14 @@ } }, "blob-util": { - "version": "2.0.2" + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/blob-util/-/blob-util-2.0.2.tgz", + "integrity": "sha512-T7JQa+zsXXEa6/8ZhHcQEW1UFfVM49Ts65uBkFL6fz2QmrElqmbajIDJvuA0tEhRe5eIjpV9ZF+0RfZR9voJFQ==" }, "bluebird": { - "version": "3.7.2" + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==" }, "boolbase": { "version": "1.0.0", @@ -21335,10 +24338,14 @@ "dependencies": { "ansi-regex": { "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", "dev": true }, "ansi-styles": { "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", "dev": true }, "camelcase": { @@ -21351,6 +24358,8 @@ }, "string-width": { "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", "dev": true, "requires": { "eastasianwidth": "^0.2.0", @@ -21387,6 +24396,8 @@ }, "brace-expansion": { "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -21394,6 +24405,8 @@ }, "braces": { "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", "requires": { "fill-range": "^7.0.1" } @@ -21410,6 +24423,8 @@ }, "bser": { "version": "2.1.1", + "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", + "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", "dev": true, "requires": { "node-int64": "^0.4.0" @@ -21417,16 +24432,22 @@ }, "buffer": { "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", "requires": { "base64-js": "^1.3.1", "ieee754": "^1.1.13" } }, "buffer-crc32": { - "version": "0.2.13" + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==" }, "buffer-from": { - "version": "1.1.2" + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" }, "bundle-name": { "version": "3.0.0", @@ -21439,10 +24460,14 @@ }, "cac": { "version": "6.7.14", + "resolved": "https://registry.npmjs.org/cac/-/cac-6.7.14.tgz", + "integrity": "sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==", "dev": true }, "cacheable-lookup": { "version": "7.0.0", + "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-7.0.0.tgz", + "integrity": "sha512-+qJyx4xiKra8mZrcwhjMRMUhD5NR1R8esPkzIYxX96JiecFoxAXFuz/GpR3+ev4PE1WamHip78wV0vcmPQtp8w==", "dev": true }, "cacheable-request": { @@ -21462,6 +24487,8 @@ "dependencies": { "mimic-response": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-4.0.0.tgz", + "integrity": "sha512-e5ISH9xMYU0DzrT+jl8q2ze9D6eWBto+I8CNpe+VI+K2J/F/k3PdkdTdz4wvGVH4NTpo+NRYTVIuMQEMMcsLqg==", "dev": true } } @@ -21481,20 +24508,28 @@ }, "call-bind": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", "requires": { "function-bind": "^1.1.1", "get-intrinsic": "^1.0.2" } }, "callsites": { - "version": "3.1.0" + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==" }, "camelcase": { "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", "dev": true }, "camelcase-keys": { "version": "6.2.2", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-6.2.2.tgz", + "integrity": "sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==", "dev": true, "requires": { "camelcase": "^5.3.1", @@ -21504,10 +24539,14 @@ "dependencies": { "map-obj": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.3.0.tgz", + "integrity": "sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==", "dev": true }, "quick-lru": { "version": "4.0.1", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz", + "integrity": "sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==", "dev": true } } @@ -21520,8 +24559,25 @@ "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==" }, + "chai": { + "version": "4.3.8", + "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.8.tgz", + "integrity": "sha512-vX4YvVVtxlfSZ2VecZgFUTU5qPCYsobVI2O9FmwEXBhDigYGQA6jRXCycIs1yJnnWbZ6/+a2zNIF5DfVCcJBFQ==", + "dev": true, + "requires": { + "assertion-error": "^1.1.0", + "check-error": "^1.0.2", + "deep-eql": "^4.1.2", + "get-func-name": "^2.0.0", + "loupe": "^2.3.1", + "pathval": "^1.1.1", + "type-detect": "^4.0.5" + } + }, "chalk": { "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "requires": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -21529,6 +24585,8 @@ "dependencies": { "supports-color": { "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "requires": { "has-flag": "^4.0.0" } @@ -21537,10 +24595,14 @@ }, "char-regex": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", + "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", "dev": true }, "chardet": { "version": "0.7.0", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", "dev": true }, "check-code-coverage": { @@ -21583,6 +24645,8 @@ }, "get-stream": { "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", "dev": true, "requires": { "pump": "^3.0.0" @@ -21634,11 +24698,21 @@ } } }, + "check-error": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", + "integrity": "sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA==", + "dev": true + }, "check-more-types": { - "version": "2.24.0" + "version": "2.24.0", + "resolved": "https://registry.npmjs.org/check-more-types/-/check-more-types-2.24.0.tgz", + "integrity": "sha512-Pj779qHxV2tuapviy1bSZNEL1maXr13bPYpsvSDB68HlYcYuhlDrmGd63i0JHMCLKzc7rUSNIrpdJlhVlNwrxA==" }, "chokidar": { "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", "dev": true, "requires": { "anymatch": "~3.1.2", @@ -21659,18 +24733,26 @@ "version": "3.7.0" }, "cjs-module-lexer": { - "version": "1.2.2", + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.3.tgz", + "integrity": "sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ==", "dev": true }, "clean-stack": { - "version": "2.2.0" + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==" }, "cli-boxes": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-3.0.0.tgz", + "integrity": "sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==", "dev": true }, "cli-cursor": { "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", "requires": { "restore-cursor": "^3.1.0" } @@ -21683,6 +24765,8 @@ }, "cli-table3": { "version": "0.6.3", + "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.3.tgz", + "integrity": "sha512-w5Jac5SykAeZJKntOxJCrm63Eg5/4dhMWIcuTbo9rpE+brgaSZo0RuNJZeOyMgsUdhDeojvgyQLmjI+K50ZGyg==", "requires": { "@colors/colors": "1.5.0", "string-width": "^4.2.0" @@ -21690,6 +24774,8 @@ }, "cli-truncate": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-2.1.0.tgz", + "integrity": "sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==", "requires": { "slice-ansi": "^3.0.0", "string-width": "^4.2.0" @@ -21697,6 +24783,8 @@ "dependencies": { "slice-ansi": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-3.0.0.tgz", + "integrity": "sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==", "requires": { "ansi-styles": "^4.0.0", "astral-regex": "^2.0.0", @@ -21712,10 +24800,14 @@ "dev": true }, "client-only": { - "version": "0.0.1" + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz", + "integrity": "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==" }, "cliui": { "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", "dev": true, "requires": { "string-width": "^4.2.0", @@ -21725,6 +24817,8 @@ }, "clone": { "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", "dev": true }, "clone-response": { @@ -21742,26 +24836,41 @@ }, "co": { "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", "dev": true }, "collect-v8-coverage": { - "version": "1.0.1", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz", + "integrity": "sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==", "dev": true }, "color-convert": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "requires": { "color-name": "~1.1.4" } }, "color-name": { - "version": "1.1.4" + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, "colorette": { "version": "2.0.19" }, + "colors": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", + "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==" + }, "combined-stream": { "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", "requires": { "delayed-stream": "~1.0.0" } @@ -21772,10 +24881,14 @@ "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==" }, "common-path-prefix": { - "version": "3.0.0" + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/common-path-prefix/-/common-path-prefix-3.0.0.tgz", + "integrity": "sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==" }, "common-tags": { - "version": "1.8.2" + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.8.2.tgz", + "integrity": "sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==" }, "commondir": { "version": "1.0.1", @@ -21783,6 +24896,8 @@ }, "compare-func": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/compare-func/-/compare-func-2.0.0.tgz", + "integrity": "sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==", "dev": true, "requires": { "array-ify": "^1.0.0", @@ -21791,6 +24906,8 @@ "dependencies": { "dot-prop": { "version": "5.3.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", + "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", "dev": true, "requires": { "is-obj": "^2.0.0" @@ -21799,10 +24916,14 @@ } }, "concat-map": { - "version": "0.0.1" + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" }, "concat-stream": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-2.0.0.tgz", + "integrity": "sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==", "dev": true, "requires": { "buffer-from": "^1.0.0", @@ -21813,6 +24934,8 @@ }, "concurrently": { "version": "7.6.0", + "resolved": "https://registry.npmjs.org/concurrently/-/concurrently-7.6.0.tgz", + "integrity": "sha512-BKtRgvcJGeZ4XttiDiNcFiRlxoAeZOseqUvyYRUp/Vtd+9p1ULmeoSqGsDA+2ivdeDFpqrJvGvmI+StKfKl5hw==", "dev": true, "requires": { "chalk": "^4.1.0", @@ -21828,6 +24951,8 @@ }, "config-chain": { "version": "1.1.13", + "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.13.tgz", + "integrity": "sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==", "dev": true, "requires": { "ini": "^1.3.4", @@ -21836,6 +24961,8 @@ }, "configstore": { "version": "6.0.0", + "resolved": "https://registry.npmjs.org/configstore/-/configstore-6.0.0.tgz", + "integrity": "sha512-cD31W1v3GqUlQvbBCGcXmd2Nj9SvLDOP1oQ0YFuLETufzSPaKp11rYBsSOm7rCsW3OnIRAFM3OxRhceaXNYHkA==", "dev": true, "requires": { "dot-prop": "^6.0.1", @@ -21847,6 +24974,8 @@ }, "convert-source-map": { "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", "dev": true }, "core-js-compat": { @@ -21877,10 +25006,14 @@ "dependencies": { "argparse": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", "dev": true }, "js-yaml": { "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "dev": true, "requires": { "argparse": "^2.0.1" @@ -21888,11 +25021,30 @@ } } }, + "create-jest": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/create-jest/-/create-jest-29.7.0.tgz", + "integrity": "sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==", + "dev": true, + "requires": { + "@jest/types": "^29.6.3", + "chalk": "^4.0.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "jest-config": "^29.7.0", + "jest-util": "^29.7.0", + "prompts": "^2.0.1" + } + }, "create-require": { - "version": "1.1.1" + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", + "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==" }, "cross-spawn": { "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", "requires": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", @@ -21900,10 +25052,14 @@ }, "dependencies": { "path-key": { - "version": "3.1.1" + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==" }, "which": { "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", "requires": { "isexe": "^2.0.0" } @@ -21912,6 +25068,8 @@ }, "crypto-random-string": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-4.0.0.tgz", + "integrity": "sha512-x8dy3RnvYdlUcPOjkEHqozhiwzKNSq7GcPuXFbnyMOCHxX8V3OgIg/pYuabl2sbUPfIJaeAQB7PMOK8DFIdoRA==", "dev": true, "requires": { "type-fest": "^1.0.1" @@ -21919,6 +25077,8 @@ "dependencies": { "type-fest": { "version": "1.4.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz", + "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==", "dev": true } } @@ -22022,6 +25182,8 @@ }, "cy2": { "version": "3.4.3", + "resolved": "https://registry.npmjs.org/cy2/-/cy2-3.4.3.tgz", + "integrity": "sha512-I1yfJWJTRy2ROti1TlLM5Qk86WSeKMrtZbY/G6VD2tjm3VKTu6pDkpcV56C2HhN+txK5p6MMsmzKXJM2W9JlxA==", "requires": { "acorn": "^8.8.0", "debug": "^4.3.2", @@ -22033,10 +25195,14 @@ }, "dependencies": { "argparse": { - "version": "2.0.1" + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" }, "js-yaml": { "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "requires": { "argparse": "^2.0.1" } @@ -22044,13 +25210,13 @@ } }, "cypress": { - "version": "13.0.0", - "resolved": "https://registry.npmjs.org/cypress/-/cypress-13.0.0.tgz", - "integrity": "sha512-nWHU5dUxP2Wm/zrMd8SWTTl706aJex/l+H4vi/tbu2SWUr17BUcd/sIYeqyxeoSPW1JFV2pT1pf4JEImH/POMg==", + "version": "13.2.0", + "resolved": "https://registry.npmjs.org/cypress/-/cypress-13.2.0.tgz", + "integrity": "sha512-AvDQxBydE771GTq0TR4ZUBvv9m9ffXuB/ueEtpDF/6gOcvFR96amgwSJP16Yhqw6VhmwqspT5nAGzoxxB+D89g==", "requires": { "@cypress/request": "^3.0.0", "@cypress/xvfb": "^1.2.4", - "@types/node": "^16.18.39", + "@types/node": "^18.17.5", "@types/sinonjs__fake-timers": "8.1.1", "@types/sizzle": "^2.3.2", "arch": "^2.2.0", @@ -22091,12 +25257,148 @@ "tmp": "~0.2.1", "untildify": "^4.0.0", "yauzl": "^2.10.0" + } + }, + "cypress-12-demo": { + "version": "file:e2e/cypress-12-demo", + "requires": { + "@types/chai": "^4.3.6", + "@types/node": "^17.0.12", + "chai": "^4.3.8", + "colors": "^1.4.0", + "cypress": "^12.17.4", + "cypress-cloud": "*", + "tsconfig": "*", + "typescript": "^5.2.2" + }, + "dependencies": { + "@cypress/request": { + "version": "2.88.12", + "resolved": "https://registry.npmjs.org/@cypress/request/-/request-2.88.12.tgz", + "integrity": "sha512-tOn+0mDZxASFM+cuAP9szGUGPI1HwWVSvdzm7V4cCsPdFTx6qMj29CwaQmRAMIEhORIUBFBsYROYJcveK4uOjA==", + "dev": true, + "requires": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "http-signature": "~1.3.6", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "performance-now": "^2.1.0", + "qs": "~6.10.3", + "safe-buffer": "^5.1.2", + "tough-cookie": "^4.1.3", + "tunnel-agent": "^0.6.0", + "uuid": "^8.3.2" + } + }, + "@types/node": { + "version": "17.0.45", + "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.45.tgz", + "integrity": "sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==", + "dev": true + }, + "cypress": { + "version": "12.17.4", + "resolved": "https://registry.npmjs.org/cypress/-/cypress-12.17.4.tgz", + "integrity": "sha512-gAN8Pmns9MA5eCDFSDJXWKUpaL3IDd89N9TtIupjYnzLSmlpVr+ZR+vb4U/qaMp+lB6tBvAmt7504c3Z4RU5KQ==", + "dev": true, + "requires": { + "@cypress/request": "2.88.12", + "@cypress/xvfb": "^1.2.4", + "@types/node": "^16.18.39", + "@types/sinonjs__fake-timers": "8.1.1", + "@types/sizzle": "^2.3.2", + "arch": "^2.2.0", + "blob-util": "^2.0.2", + "bluebird": "^3.7.2", + "buffer": "^5.6.0", + "cachedir": "^2.3.0", + "chalk": "^4.1.0", + "check-more-types": "^2.24.0", + "cli-cursor": "^3.1.0", + "cli-table3": "~0.6.1", + "commander": "^6.2.1", + "common-tags": "^1.8.0", + "dayjs": "^1.10.4", + "debug": "^4.3.4", + "enquirer": "^2.3.6", + "eventemitter2": "6.4.7", + "execa": "4.1.0", + "executable": "^4.1.1", + "extract-zip": "2.0.1", + "figures": "^3.2.0", + "fs-extra": "^9.1.0", + "getos": "^3.2.1", + "is-ci": "^3.0.0", + "is-installed-globally": "~0.4.0", + "lazy-ass": "^1.6.0", + "listr2": "^3.8.3", + "lodash": "^4.17.21", + "log-symbols": "^4.0.0", + "minimist": "^1.2.8", + "ospath": "^1.2.2", + "pretty-bytes": "^5.6.0", + "process": "^0.11.10", + "proxy-from-env": "1.0.0", + "request-progress": "^3.0.0", + "semver": "^7.5.3", + "supports-color": "^8.1.1", + "tmp": "~0.2.1", + "untildify": "^4.0.0", + "yauzl": "^2.10.0" + }, + "dependencies": { + "@types/node": { + "version": "16.18.50", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.50.tgz", + "integrity": "sha512-OiDU5xRgYTJ203v4cprTs0RwOCd5c5Zjv+K5P8KSqfiCsB1W3LcamTUMcnQarpq5kOYbhHfSOgIEJvdPyb5xyw==", + "dev": true + } + } + }, + "form-data": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "dev": true, + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + } + }, + "typescript": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz", + "integrity": "sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==", + "dev": true + } + } + }, + "cypress-13-demo": { + "version": "file:e2e/cypress-13-demo", + "requires": { + "@swc/jest": "^0.2.29", + "@types/node": "^17.0.12", + "cypress": "^13.1.0", + "cypress-cloud": "*", + "jest": "^29.7.0", + "tsconfig": "*", + "typescript": "^4.7.4" }, "dependencies": { "@types/node": { - "version": "16.18.46", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.46.tgz", - "integrity": "sha512-Mnq3O9Xz52exs3mlxMcQuA7/9VFe/dXcrgAyfjLkABIqxXKOgBRjyazTxUbjsxDa4BP7hhPliyjVTP9RDP14xg==" + "version": "17.0.45", + "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.45.tgz", + "integrity": "sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==", + "dev": true } } }, @@ -22105,8 +25407,8 @@ "requires": { "@cypress/commit-info": "^2.2.0", "@release-it/conventional-changelog": "^7.0.0", - "@swc/core": "^1.3.23", - "@swc/jest": "^0.2.24", + "@swc/core": "^1.3.86", + "@swc/jest": "^0.2.29", "@types/bluebird": "^3.5.38", "@types/debug": "^4.1.7", "@types/getos": "^3.0.1", @@ -22121,7 +25423,8 @@ "commander": "^10.0.0", "common-path-prefix": "^3.0.0", "cy2": "^3.4.2", - "cypress": "13", + "cypress": "^13.2.0", + "date-fns": "^2.30.0", "debug": "^4.3.4", "esbuild": "^0.16.5", "eslint": "^7.32.0", @@ -22136,6 +25439,7 @@ "lodash": "^4.17.21", "nanoid": "^3.3.4", "nock": "^13.2.9", + "plur": "^4.0.0", "pretty-ms": "^7.0.1", "release-it": "^16.1.5", "rimraf": "^3.0.2", @@ -22151,6 +25455,8 @@ "dependencies": { "@next/eslint-plugin-next": { "version": "12.3.4", + "resolved": "https://registry.npmjs.org/@next/eslint-plugin-next/-/eslint-plugin-next-12.3.4.tgz", + "integrity": "sha512-BFwj8ykJY+zc1/jWANsDprDIu2MgwPOIKxNVnrKvPs+f5TPegrVnem8uScND+1veT4B7F6VeqgaNLFW1Hzl9Og==", "dev": true, "requires": { "glob": "7.1.7" @@ -22236,6 +25542,43 @@ } } }, + "@swc/core": { + "version": "1.3.86", + "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.3.86.tgz", + "integrity": "sha512-bEXUtm37bcmJ3q+geG7Zy4rJNUzpxalXQUrrqX1ZoGj3HRtzdeVZ0L/um3fG2j16qe61t8TX/OIZ2G6j6dkG/w==", + "dev": true, + "requires": { + "@swc/core-darwin-arm64": "1.3.86", + "@swc/core-darwin-x64": "1.3.86", + "@swc/core-linux-arm-gnueabihf": "1.3.86", + "@swc/core-linux-arm64-gnu": "1.3.86", + "@swc/core-linux-arm64-musl": "1.3.86", + "@swc/core-linux-x64-gnu": "1.3.86", + "@swc/core-linux-x64-musl": "1.3.86", + "@swc/core-win32-arm64-msvc": "1.3.86", + "@swc/core-win32-ia32-msvc": "1.3.86", + "@swc/core-win32-x64-msvc": "1.3.86", + "@swc/types": "^0.1.4" + } + }, + "@swc/core-darwin-arm64": { + "version": "1.3.86", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.3.86.tgz", + "integrity": "sha512-hMvSDms0sJJHNtRa3Vhmr9StWN1vmikbf5VE0IZUYGnF1/JZTkXU1h6CdNUY4Hr6i7uCZjH6BEhxFHX1JtKV4w==", + "dev": true, + "optional": true + }, + "@swc/helpers": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.2.tgz", + "integrity": "sha512-E4KcWTpoLHqwPHLxidpOqQbcrZVgi0rsmmZXUle1jXmJfuIf/UWpczUJ7MZZ5tlxytgJXyp0w4PGkkeLiuIdZw==", + "dev": true, + "optional": true, + "peer": true, + "requires": { + "tslib": "^2.4.0" + } + }, "agent-base": { "version": "7.1.0", "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.0.tgz", @@ -22495,6 +25838,8 @@ "dependencies": { "eslint-config-next": { "version": "12.3.4", + "resolved": "https://registry.npmjs.org/eslint-config-next/-/eslint-config-next-12.3.4.tgz", + "integrity": "sha512-WuT3gvgi7Bwz00AOmKGhOeqnyA5P29Cdyr0iVjLyfDbk+FANQKcOjFUTZIdyYfe5Tq1x4TGcmoe4CwctGvFjHQ==", "dev": true, "requires": { "@next/eslint-plugin-next": "12.3.4", @@ -22533,6 +25878,8 @@ }, "eslint-plugin-react": { "version": "7.28.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.28.0.tgz", + "integrity": "sha512-IOlFIRHzWfEQQKcAD4iyYDndHwTQiCMcJVJjxempf203jnNLUnW34AXLrV33+nEXoifJE2ZEGmcjKPL8957eSw==", "dev": true, "requires": { "array-includes": "^3.1.4", @@ -22555,6 +25902,8 @@ }, "execa": { "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", "requires": { "cross-spawn": "^7.0.3", "get-stream": "^6.0.0", @@ -22642,6 +25991,8 @@ }, "glob": { "version": "7.1.7", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", + "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", "dev": true, "requires": { "fs.realpath": "^1.0.0", @@ -22692,7 +26043,9 @@ } }, "human-signals": { - "version": "2.1.0" + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==" }, "ignore": { "version": "5.2.4", @@ -22955,6 +26308,14 @@ "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", "dev": true }, + "plur": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/plur/-/plur-4.0.0.tgz", + "integrity": "sha512-4UGewrYgqDFw9vV6zNV+ADmPAUAfJPKtGvb/VdpQAx25X5f3xXdGdyOEVFwkl8Hl/tl7+xbeHqSEM+D5/TirUg==", + "requires": { + "irregular-plurals": "^3.2.0" + } + }, "proxy-agent": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/proxy-agent/-/proxy-agent-6.3.0.tgz", @@ -23105,6 +26466,8 @@ }, "resolve": { "version": "2.0.0-next.4", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.4.tgz", + "integrity": "sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ==", "dev": true, "requires": { "is-core-module": "^2.9.0", @@ -23207,6 +26570,8 @@ "dependencies": { "fs-extra": { "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", "requires": { "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", @@ -23216,10 +26581,14 @@ } }, "damerau-levenshtein": { - "version": "1.0.8" + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz", + "integrity": "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==" }, "dargs": { "version": "7.0.0", + "resolved": "https://registry.npmjs.org/dargs/-/dargs-7.0.0.tgz", + "integrity": "sha512-2iy1EkLdlBzQGvbweYRFxmFath8+K7+AKB0TlhHWkNuH+TmovaMH/Wp7V7R4u7f4SnX3OgLsU9t1NI9ioDnUpg==", "dev": true }, "dashdash": { @@ -23235,28 +26604,42 @@ "dev": true }, "date-fns": { - "version": "2.29.3", - "dev": true + "version": "2.30.0", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.30.0.tgz", + "integrity": "sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==", + "requires": { + "@babel/runtime": "^7.21.0" + } }, "dateformat": { "version": "3.0.3", + "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-3.0.3.tgz", + "integrity": "sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==", "dev": true }, "dayjs": { - "version": "1.11.9" + "version": "1.11.9", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.9.tgz", + "integrity": "sha512-QvzAURSbQ0pKdIye2txOzNaHmxtUBXerpY0FJsFXUMKbIZeFm5ht1LS/jFsrncjnmtv8HsG0W2g6c0zUjZWmpA==" }, "debug": { "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "requires": { "ms": "2.1.2" } }, "decamelize": { "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", "dev": true }, "decamelize-keys": { "version": "1.1.1", + "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.1.tgz", + "integrity": "sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==", "dev": true, "requires": { "decamelize": "^1.1.0", @@ -23265,24 +26648,44 @@ }, "decompress-response": { "version": "6.0.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", + "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", "dev": true, "requires": { "mimic-response": "^3.1.0" } }, "dedent": { - "version": "0.7.0", - "dev": true + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.5.1.tgz", + "integrity": "sha512-+LxW+KLWxu3HW3M2w2ympwtqPrqYRzU8fqi6Fhd18fBALe15blJPI/I4+UHveMVG6lJqB4JNd4UG0S5cnVHwIg==", + "dev": true, + "requires": {} + }, + "deep-eql": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.3.tgz", + "integrity": "sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==", + "dev": true, + "requires": { + "type-detect": "^4.0.0" + } }, "deep-extend": { "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", "dev": true }, "deep-is": { - "version": "0.1.4" + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==" }, "deepmerge": { - "version": "4.2.2", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", "dev": true }, "default-browser": { @@ -23383,12 +26786,16 @@ "dependencies": { "strip-bom": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", + "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", "dev": true } } }, "defaults": { "version": "1.0.4", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", + "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", "dev": true, "requires": { "clone": "^1.0.2" @@ -23396,6 +26803,8 @@ }, "defer-to-connect": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz", + "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==", "dev": true }, "define-properties": { @@ -23406,10 +26815,14 @@ } }, "delayed-stream": { - "version": "1.0.0" + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==" }, "deprecation": { "version": "2.3.1", + "resolved": "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz", + "integrity": "sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==", "dev": true }, "detect-libc": { @@ -23418,23 +26831,33 @@ }, "detect-newline": { "version": "3.1.0", + "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", + "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", "dev": true }, "diff": { - "version": "4.0.2" + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==" }, "diff-sequences": { - "version": "29.3.1", + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", + "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", "dev": true }, "dir-glob": { "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", "requires": { "path-type": "^4.0.0" } }, "doctrine": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", "requires": { "esutils": "^2.0.2" } @@ -23476,6 +26899,8 @@ }, "dot-prop": { "version": "6.0.1", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-6.0.1.tgz", + "integrity": "sha512-tE7ztYzXHIeyvc7N+hR3oi7FIbf/NIjVP9hmAt3yMXzrQ072/fpjGLx2GxNxGxUl5V73MEqYzioOMoVhGMJ5cA==", "dev": true, "requires": { "is-obj": "^2.0.0" @@ -23495,6 +26920,8 @@ }, "eastasianwidth": { "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", "dev": true }, "ecc-jsbn": { @@ -23512,13 +26939,19 @@ }, "emittery": { "version": "0.13.1", + "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz", + "integrity": "sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==", "dev": true }, "emoji-regex": { - "version": "9.2.2" + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==" }, "end-of-stream": { "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", "requires": { "once": "^1.4.0" } @@ -23544,6 +26977,8 @@ }, "error-ex": { "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", "dev": true, "requires": { "is-arrayish": "^0.2.1" @@ -23581,6 +27016,8 @@ }, "es-array-method-boxes-properly": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz", + "integrity": "sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==", "dev": true }, "es-get-iterator": { @@ -23604,12 +27041,16 @@ }, "es-shim-unscopables": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz", + "integrity": "sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==", "requires": { "has": "^1.0.3" } }, "es-to-primitive": { "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", "requires": { "is-callable": "^1.1.4", "is-date-object": "^1.0.1", @@ -23622,6 +27063,8 @@ }, "esbuild": { "version": "0.16.17", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.16.17.tgz", + "integrity": "sha512-G8LEkV0XzDMNwXKgM0Jwu3nY3lSTwSGY6XbxM9cr9+s0T/qSV1q1JVPBGzm3dcjhCic9+emZDmMffkwgPeOeLg==", "dev": true, "requires": { "@esbuild/android-arm": "0.16.17", @@ -23650,14 +27093,20 @@ }, "escalade": { "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", "dev": true }, "escape-goat": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-goat/-/escape-goat-4.0.0.tgz", + "integrity": "sha512-2Sd4ShcWxbx6OY1IHyla/CVNwvg7XwZVoXZHcSu9w9SReNP1EzzD5T8NWKIR38fIqEns9kDWKUQTXXAmlDrdPg==", "dev": true }, "escape-string-regexp": { - "version": "1.0.5" + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==" }, "escodegen": { "version": "2.1.0", @@ -23672,6 +27121,8 @@ }, "eslint": { "version": "7.32.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.32.0.tgz", + "integrity": "sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==", "requires": { "@babel/code-frame": "7.12.11", "@eslint/eslintrc": "^0.4.3", @@ -23717,21 +27168,29 @@ "dependencies": { "@babel/code-frame": { "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", + "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", "requires": { "@babel/highlight": "^7.10.4" } }, "doctrine": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", "requires": { "esutils": "^2.0.2" } }, "escape-string-regexp": { - "version": "4.0.0" + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==" }, "eslint-visitor-keys": { - "version": "2.1.0" + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==" }, "optionator": { "version": "0.9.1", @@ -23745,10 +27204,14 @@ } }, "prelude-ls": { - "version": "1.2.1" + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==" }, "type-check": { "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", "requires": { "prelude-ls": "^1.2.1" } @@ -23803,6 +27266,8 @@ }, "resolve": { "version": "2.0.0-next.4", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.4.tgz", + "integrity": "sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ==", "requires": { "is-core-module": "^2.9.0", "path-parse": "^1.0.7", @@ -23835,6 +27300,8 @@ }, "eslint-import-resolver-typescript": { "version": "2.7.1", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-2.7.1.tgz", + "integrity": "sha512-00UbgGwV8bSgUv34igBDbTOtKhqoRMy9bFjNehT40bXg6585PNIct8HhXZ0SybqB9rWtXj9crcku8ndDn/gIqQ==", "requires": { "debug": "^4.3.4", "glob": "^7.2.0", @@ -23915,6 +27382,8 @@ "dependencies": { "resolve": { "version": "2.0.0-next.4", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.4.tgz", + "integrity": "sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ==", "requires": { "is-core-module": "^2.9.0", "path-parse": "^1.0.7", @@ -23928,6 +27397,8 @@ }, "eslint-plugin-react-hooks": { "version": "4.6.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz", + "integrity": "sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==", "requires": {} }, "eslint-plugin-turbo": { @@ -23947,27 +27418,37 @@ }, "eslint-scope": { "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", "requires": { "esrecurse": "^4.3.0", "estraverse": "^4.1.1" }, "dependencies": { "estraverse": { - "version": "4.3.0" + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==" } } }, "eslint-utils": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", + "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", "requires": { "eslint-visitor-keys": "^1.1.0" } }, "eslint-visitor-keys": { - "version": "1.3.0" + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==" }, "espree": { "version": "7.3.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", + "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==", "requires": { "acorn": "^7.4.0", "acorn-jsx": "^5.3.1", @@ -23975,16 +27456,22 @@ }, "dependencies": { "acorn": { - "version": "7.4.1" + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==" }, "acorn-jsx": { "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", "requires": {} } } }, "esprima": { - "version": "4.0.1" + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" }, "esquery": { "version": "1.4.0", @@ -23994,15 +27481,21 @@ }, "esrecurse": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", "requires": { "estraverse": "^5.2.0" } }, "estraverse": { - "version": "5.3.0" + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==" }, "esutils": { - "version": "2.0.3" + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==" }, "event-stream": { "version": "3.3.4", @@ -24018,7 +27511,9 @@ } }, "eventemitter2": { - "version": "6.4.7" + "version": "6.4.7", + "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-6.4.7.tgz", + "integrity": "sha512-tYUSVOGeQPKt/eC1ABfhHy5Xd96N3oIijJvN3O9+TsC28T5V9yX9oEfEK5faP0EFSNVOG97qtAS68GBrQB2hDg==" }, "events": { "version": "3.3.0", @@ -24041,6 +27536,8 @@ }, "execa": { "version": "4.1.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz", + "integrity": "sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==", "requires": { "cross-spawn": "^7.0.0", "get-stream": "^5.0.0", @@ -24055,6 +27552,8 @@ "dependencies": { "get-stream": { "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", "requires": { "pump": "^3.0.0" } @@ -24063,23 +27562,29 @@ }, "executable": { "version": "4.1.1", + "resolved": "https://registry.npmjs.org/executable/-/executable-4.1.1.tgz", + "integrity": "sha512-8iA79xD3uAch729dUG8xaaBBFGaEa0wdD2VkYLFHwlqosEj/jT66AzcreRDSgV7ehnNLBW2WR5jIXwGKjVdTLg==", "requires": { "pify": "^2.2.0" } }, "exit": { "version": "0.1.2", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", "dev": true }, "expect": { - "version": "29.3.1", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/expect/-/expect-29.7.0.tgz", + "integrity": "sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==", "dev": true, "requires": { - "@jest/expect-utils": "^29.3.1", - "jest-get-type": "^29.2.0", - "jest-matcher-utils": "^29.3.1", - "jest-message-util": "^29.3.1", - "jest-util": "^29.3.1" + "@jest/expect-utils": "^29.7.0", + "jest-get-type": "^29.6.3", + "jest-matcher-utils": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0" } }, "extend": { @@ -24089,6 +27594,8 @@ }, "external-editor": { "version": "3.1.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", + "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", "dev": true, "requires": { "chardet": "^0.7.0", @@ -24098,6 +27605,8 @@ "dependencies": { "tmp": { "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", "dev": true, "requires": { "os-tmpdir": "~1.0.2" @@ -24107,6 +27616,8 @@ }, "extract-zip": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", + "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", "requires": { "@types/yauzl": "^2.9.1", "debug": "^4.1.1", @@ -24116,6 +27627,8 @@ "dependencies": { "get-stream": { "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", "requires": { "pump": "^3.0.0" } @@ -24128,7 +27641,9 @@ "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==" }, "fast-deep-equal": { - "version": "3.1.3" + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" }, "fast-glob": { "version": "3.3.1", @@ -24143,10 +27658,14 @@ } }, "fast-json-stable-stringify": { - "version": "2.1.0" + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" }, "fast-levenshtein": { - "version": "2.0.6" + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==" }, "fast-safe-stringify": { "version": "2.1.1", @@ -24161,6 +27680,8 @@ }, "fb-watchman": { "version": "2.0.2", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", + "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", "dev": true, "requires": { "bser": "2.1.1" @@ -24168,12 +27689,16 @@ }, "fd-slicer": { "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", + "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", "requires": { "pend": "~1.2.0" } }, "fetch-blob": { "version": "3.2.0", + "resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.2.0.tgz", + "integrity": "sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==", "dev": true, "requires": { "node-domexception": "^1.0.0", @@ -24182,18 +27707,24 @@ }, "figures": { "version": "3.2.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", + "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", "requires": { "escape-string-regexp": "^1.0.5" } }, "file-entry-cache": { "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", "requires": { "flat-cache": "^3.0.4" } }, "fill-range": { "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", "requires": { "to-regex-range": "^5.0.1" } @@ -24274,6 +27805,8 @@ }, "find-up": { "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "dev": true, "requires": { "locate-path": "^5.0.0", @@ -24291,7 +27824,9 @@ "version": "3.2.7" }, "follow-redirects": { - "version": "1.15.2" + "version": "1.15.2", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", + "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==" }, "foreground-child": { "version": "2.0.0", @@ -24308,6 +27843,8 @@ }, "form-data": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", "requires": { "asynckit": "^0.4.0", "combined-stream": "^1.0.8", @@ -24316,10 +27853,14 @@ }, "form-data-encoder": { "version": "2.1.4", + "resolved": "https://registry.npmjs.org/form-data-encoder/-/form-data-encoder-2.1.4.tgz", + "integrity": "sha512-yDYSgNMraqvnxiEXO4hi88+YZxaHC6QKzb5N84iRCTDeRO7ZALpir/lVmf/uXUhnwUr2O4HU8s/n6x+yNjQkHw==", "dev": true }, "formdata-polyfill": { "version": "4.0.10", + "resolved": "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz", + "integrity": "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==", "dev": true, "requires": { "fetch-blob": "^3.1.2" @@ -24335,6 +27876,8 @@ }, "fs-extra": { "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", "requires": { "at-least-node": "^1.0.0", "graceful-fs": "^4.2.0", @@ -24343,7 +27886,9 @@ } }, "fs.realpath": { - "version": "1.0.0" + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" }, "fsevents": { "version": "2.3.2", @@ -24351,7 +27896,9 @@ "optional": true }, "function-bind": { - "version": "1.1.1" + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" }, "function.prototype.name": { "version": "1.1.5", @@ -24363,17 +27910,29 @@ } }, "functional-red-black-tree": { - "version": "1.0.1" + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==" }, "functions-have-names": { "version": "1.2.3" }, "gensync": { "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", "dev": true }, "get-caller-file": { "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true + }, + "get-func-name": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", + "integrity": "sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig==", "dev": true }, "get-intrinsic": { @@ -24386,10 +27945,14 @@ }, "get-package-type": { "version": "0.1.0", + "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", + "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", "dev": true }, "get-pkg-repo": { "version": "4.2.1", + "resolved": "https://registry.npmjs.org/get-pkg-repo/-/get-pkg-repo-4.2.1.tgz", + "integrity": "sha512-2+QbHjFRfGB74v/pYWjd5OhU3TDIC2Gv/YKUTk/tCvAz0pkn/Mz6P3uByuBimLOcPvN2jYdScl3xGFSrx0jEcA==", "dev": true, "requires": { "@hutson/parse-repository-url": "^3.0.0", @@ -24400,6 +27963,8 @@ "dependencies": { "cliui": { "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", "dev": true, "requires": { "string-width": "^4.2.0", @@ -24409,10 +27974,14 @@ }, "core-util-is": { "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", "dev": true }, "isarray": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", "dev": true }, "readable-stream": { @@ -24430,10 +27999,14 @@ }, "safe-buffer": { "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", "dev": true }, "string_decoder": { "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dev": true, "requires": { "safe-buffer": "~5.1.0" @@ -24441,6 +28014,8 @@ }, "through2": { "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", "dev": true, "requires": { "readable-stream": "~2.3.6", @@ -24449,6 +28024,8 @@ }, "yargs": { "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", "dev": true, "requires": { "cliui": "^7.0.2", @@ -24467,10 +28044,14 @@ "dev": true }, "get-stream": { - "version": "6.0.1" + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==" }, "get-symbol-description": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", + "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", "requires": { "call-bind": "^1.0.2", "get-intrinsic": "^1.1.1" @@ -24478,6 +28059,8 @@ }, "getos": { "version": "3.2.1", + "resolved": "https://registry.npmjs.org/getos/-/getos-3.2.1.tgz", + "integrity": "sha512-U56CfOK17OKgTVqozZjUKNdkfEv6jk5WISBJ8SHoagjE6L69zOwl3Z+O8myjY9MEW3i2HPWQBt/LTbCgcC973Q==", "requires": { "async": "^3.2.0" } @@ -24492,6 +28075,8 @@ }, "git-remote-origin-url": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/git-remote-origin-url/-/git-remote-origin-url-2.0.0.tgz", + "integrity": "sha512-eU+GGrZgccNJcsDH5LkXR3PB9M958hxc7sbA8DFJjrv9j4L2P/eZfKhM+QD6wyzpiv+b1BpK0XrYCxkovtjSLw==", "dev": true, "requires": { "gitconfiglocal": "^1.0.0", @@ -24500,6 +28085,8 @@ }, "git-up": { "version": "7.0.0", + "resolved": "https://registry.npmjs.org/git-up/-/git-up-7.0.0.tgz", + "integrity": "sha512-ONdIrbBCFusq1Oy0sC71F5azx8bVkvtZtMJAsv+a6lz5YAmbNnLD6HAB4gptHZVLPR8S2/kVN6Gab7lryq5+lQ==", "dev": true, "requires": { "is-ssh": "^1.4.0", @@ -24508,6 +28095,8 @@ }, "git-url-parse": { "version": "13.1.0", + "resolved": "https://registry.npmjs.org/git-url-parse/-/git-url-parse-13.1.0.tgz", + "integrity": "sha512-5FvPJP/70WkIprlUZ33bm4UAaFdjcLkJLpWft1BeZKqwR0uhhNGoKwlUaPtVb4LxCSQ++erHapRak9kWGj+FCA==", "dev": true, "requires": { "git-up": "^7.0.0" @@ -24515,6 +28104,8 @@ }, "gitconfiglocal": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/gitconfiglocal/-/gitconfiglocal-1.0.0.tgz", + "integrity": "sha512-spLUXeTAVHxDtKsJc8FkFVgFtMdEN9qPGpL23VfSHx4fP4+Ds097IXLvymbnDH8FnmxX5Nr9bPw3A+AQ6mWEaQ==", "dev": true, "requires": { "ini": "^1.3.2" @@ -24522,6 +28113,8 @@ }, "glob": { "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", "requires": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -24533,23 +28126,31 @@ }, "glob-parent": { "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "requires": { "is-glob": "^4.0.1" } }, "glob-to-regexp": { "version": "0.4.1", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", "dev": true, "peer": true }, "global-dirs": { "version": "3.0.1", + "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.1.tgz", + "integrity": "sha512-NBcGGFbBA9s1VzD41QXDG+3++t9Mn5t1FpLdhESY6oKY4gYTFpX4wO3sqGUa0Srjtbfj3szX0RnemmrVRUdULA==", "requires": { "ini": "2.0.0" }, "dependencies": { "ini": { - "version": "2.0.0" + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz", + "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==" } } }, @@ -24560,12 +28161,16 @@ }, "dependencies": { "type-fest": { - "version": "0.20.2" + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==" } } }, "globby": { "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", "requires": { "array-union": "^2.1.0", "dir-glob": "^3.0.1", @@ -24576,12 +28181,16 @@ }, "dependencies": { "ignore": { - "version": "5.2.4" + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", + "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==" } } }, "gopd": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", "requires": { "get-intrinsic": "^1.1.3" } @@ -24604,7 +28213,9 @@ } }, "graceful-fs": { - "version": "4.2.10" + "version": "4.2.10", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==" }, "handlebars": { "version": "4.7.7", @@ -24619,37 +28230,53 @@ }, "hard-rejection": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz", + "integrity": "sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==", "dev": true }, "has": { "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", "requires": { "function-bind": "^1.1.1" } }, "has-bigints": { - "version": "1.0.2" + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==" }, "has-flag": { - "version": "4.0.0" + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" }, "has-property-descriptors": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", + "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", "requires": { "get-intrinsic": "^1.1.1" } }, "has-symbols": { - "version": "1.0.3" + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==" }, "has-tostringtag": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", "requires": { "has-symbols": "^1.0.2" } }, "has-yarn": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-yarn/-/has-yarn-3.0.0.tgz", + "integrity": "sha512-IrsVwUHhEULx3R8f/aA8AHuEzAorplsab/v8HBzEiIukwq5i/EC+xmOW+HfP1OaDP+2JkgT1yILHN2O3UFIbcA==", "dev": true }, "hasha": { @@ -24668,6 +28295,8 @@ }, "hosted-git-info": { "version": "4.1.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", + "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", "dev": true, "requires": { "lru-cache": "^6.0.0" @@ -24675,6 +28304,8 @@ }, "html-escaper": { "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", "dev": true }, "htmlnano": { @@ -24698,6 +28329,8 @@ }, "http-cache-semantics": { "version": "4.1.1", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", + "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==", "dev": true }, "http-signature": { @@ -24712,6 +28345,8 @@ }, "http2-wrapper": { "version": "2.2.0", + "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-2.2.0.tgz", + "integrity": "sha512-kZB0wxMo0sh1PehyjJUWRFEd99KC5TLjZ2cULC4f9iqJBAmKQQXEICjxl5iPJRwP40dpeHFqqhm7tYCvODpqpQ==", "dev": true, "requires": { "quick-lru": "^5.1.1", @@ -24719,39 +28354,61 @@ } }, "human-signals": { - "version": "1.1.1" + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz", + "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==" + }, + "husky": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/husky/-/husky-8.0.3.tgz", + "integrity": "sha512-+dQSyqPh4x1hlO1swXBiNb2HzTDN1I2IGLQx1GrBuiqFJfoMrnZWwVmatvSiO+Iz8fBUnf+lekwNo4c2LlXItg==", + "dev": true }, "iconv-lite": { "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", "dev": true, "requires": { "safer-buffer": ">= 2.1.2 < 3" } }, "ieee754": { - "version": "1.2.1" + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" }, "ignore": { - "version": "4.0.6" + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==" }, "import-fresh": { "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", "requires": { "parent-module": "^1.0.0", "resolve-from": "^4.0.0" }, "dependencies": { "resolve-from": { - "version": "4.0.0" + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==" } } }, "import-lazy": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-4.0.0.tgz", + "integrity": "sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==", "dev": true }, "import-local": { "version": "3.1.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", + "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", "dev": true, "requires": { "pkg-dir": "^4.2.0", @@ -24759,23 +28416,33 @@ } }, "imurmurhash": { - "version": "0.1.4" + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==" }, "indent-string": { - "version": "4.0.0" + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==" }, "inflight": { "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", "requires": { "once": "^1.3.0", "wrappy": "1" } }, "inherits": { - "version": "2.0.4" + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, "ini": { "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", "dev": true }, "internal-slot": { @@ -24788,14 +28455,25 @@ }, "interpret": { "version": "1.4.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", + "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", "dev": true }, "ip": { "version": "1.1.8", + "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.8.tgz", + "integrity": "sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg==", "dev": true }, + "irregular-plurals": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/irregular-plurals/-/irregular-plurals-3.5.0.tgz", + "integrity": "sha512-1ANGLZ+Nkv1ptFb2pa8oG8Lem4krflKuX/gINiHJHjJUKaJHk/SXk5x6K3J+39/p0h1RQ2saROclJJ+QLvETCQ==" + }, "is-absolute": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-1.0.0.tgz", + "integrity": "sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==", "requires": { "is-relative": "^1.0.0", "is-windows": "^1.0.1" @@ -24811,16 +28489,22 @@ }, "is-arrayish": { "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", "dev": true }, "is-bigint": { "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", "requires": { "has-bigints": "^1.0.1" } }, "is-binary-path": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", "dev": true, "requires": { "binary-extensions": "^2.0.0" @@ -24828,16 +28512,22 @@ }, "is-boolean-object": { "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", "requires": { "call-bind": "^1.0.2", "has-tostringtag": "^1.0.0" } }, "is-callable": { - "version": "1.2.7" + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==" }, "is-ci": { "version": "3.0.1", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-3.0.1.tgz", + "integrity": "sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==", "requires": { "ci-info": "^3.2.0" } @@ -24850,26 +28540,38 @@ }, "is-date-object": { "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", "requires": { "has-tostringtag": "^1.0.0" } }, "is-docker": { "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", "dev": true }, "is-extglob": { - "version": "2.1.1" + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==" }, "is-fullwidth-code-point": { - "version": "3.0.0" + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" }, "is-generator-fn": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", + "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", "dev": true }, "is-glob": { "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", "requires": { "is-extglob": "^2.1.1" } @@ -24893,6 +28595,8 @@ }, "is-installed-globally": { "version": "0.4.0", + "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.4.0.tgz", + "integrity": "sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==", "requires": { "global-dirs": "^3.0.0", "is-path-inside": "^3.0.2" @@ -24900,6 +28604,8 @@ }, "is-interactive": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-2.0.0.tgz", + "integrity": "sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ==", "dev": true }, "is-json": { @@ -24908,41 +28614,61 @@ }, "is-map": { "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.2.tgz", + "integrity": "sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==", "dev": true }, "is-negative-zero": { - "version": "2.0.2" + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", + "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==" }, "is-npm": { "version": "6.0.0", + "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-6.0.0.tgz", + "integrity": "sha512-JEjxbSmtPSt1c8XTkVrlujcXdKV1/tvuQ7GwKcAlyiVLeYFQ2VHat8xfrDJsIkhCdF/tZ7CiIR3sy141c6+gPQ==", "dev": true }, "is-number": { - "version": "7.0.0" + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" }, "is-number-object": { "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", + "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", "requires": { "has-tostringtag": "^1.0.0" } }, "is-obj": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", + "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", "dev": true }, "is-path-inside": { - "version": "3.0.3" + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==" }, "is-plain-obj": { "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==", "dev": true }, "is-plain-object": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", + "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", "dev": true }, "is-regex": { "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", "requires": { "call-bind": "^1.0.2", "has-tostringtag": "^1.0.0" @@ -24950,76 +28676,106 @@ }, "is-relative": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-1.0.0.tgz", + "integrity": "sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==", "requires": { "is-unc-path": "^1.0.0" } }, "is-retry-allowed": { - "version": "2.2.0" + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-2.2.0.tgz", + "integrity": "sha512-XVm7LOeLpTW4jV19QSH38vkswxoLud8sQ57YwJVTPWdiaI9I8keEhGFpBlslyVsgdQy4Opg8QOLb8YRgsyZiQg==" }, "is-set": { "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.2.tgz", + "integrity": "sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==", "dev": true }, "is-shared-array-buffer": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", + "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", "requires": { "call-bind": "^1.0.2" } }, "is-ssh": { "version": "1.4.0", + "resolved": "https://registry.npmjs.org/is-ssh/-/is-ssh-1.4.0.tgz", + "integrity": "sha512-x7+VxdxOdlV3CYpjvRLBv5Lo9OJerlYanjwFrPR9fuGPjCiNiCzFgAWpiLAohSbsnH4ZAys3SBh+hq5rJosxUQ==", "dev": true, "requires": { "protocols": "^2.0.1" } }, "is-stream": { - "version": "2.0.1" + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==" }, "is-string": { "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", "requires": { "has-tostringtag": "^1.0.0" } }, "is-symbol": { "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", "requires": { "has-symbols": "^1.0.2" } }, "is-text-path": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-text-path/-/is-text-path-1.0.1.tgz", + "integrity": "sha512-xFuJpne9oFz5qDaodwmmG08e3CawH/2ZV8Qqza1Ko7Sk8POWbkRdwIoAWVhqvq0XeUzANEhKo2n0IXUGBm7A/w==", "dev": true, "requires": { "text-extensions": "^1.0.0" } }, "is-typedarray": { - "version": "1.0.0" + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==" }, "is-unc-path": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-1.0.0.tgz", + "integrity": "sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==", "requires": { "unc-path-regex": "^0.1.2" } }, "is-unicode-supported": { "version": "1.3.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-1.3.0.tgz", + "integrity": "sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==", "dev": true }, "is-weakref": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", + "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", "requires": { "call-bind": "^1.0.2" } }, "is-windows": { - "version": "1.0.2" + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==" }, "is-wsl": { "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", "dev": true, "requires": { "is-docker": "^2.0.0" @@ -25027,14 +28783,20 @@ }, "is-yarn-global": { "version": "0.4.1", + "resolved": "https://registry.npmjs.org/is-yarn-global/-/is-yarn-global-0.4.1.tgz", + "integrity": "sha512-/kppl+R+LO5VmhYSEWARUFjodS25D68gvj8W7z0I7OWhUla5xWu8KL6CtB2V0R6yqhnRgbcaREMr4EEM6htLPQ==", "dev": true }, "isarray": { "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", "dev": true }, "isexe": { - "version": "2.0.0" + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" }, "isstream": { "version": "0.1.2", @@ -25056,6 +28818,8 @@ }, "istanbul-lib-coverage": { "version": "3.2.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", + "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", "dev": true }, "istanbul-lib-hook": { @@ -25067,6 +28831,8 @@ }, "istanbul-lib-instrument": { "version": "5.2.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", + "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", "dev": true, "requires": { "@babel/core": "^7.12.3", @@ -25114,6 +28880,8 @@ "dependencies": { "supports-color": { "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "requires": { "has-flag": "^4.0.0" @@ -25123,6 +28891,8 @@ }, "istanbul-lib-source-maps": { "version": "4.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", + "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", "dev": true, "requires": { "debug": "^4.1.1", @@ -25140,10 +28910,14 @@ }, "iterate-iterator": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/iterate-iterator/-/iterate-iterator-1.0.2.tgz", + "integrity": "sha512-t91HubM4ZDQ70M9wqp+pcNpu8OyJ9UAtXntT/Bcsvp5tZMnz9vRa+IunKXeI8AnfZMTv0jNuVEmGeLSMjVvfPw==", "dev": true }, "iterate-value": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/iterate-value/-/iterate-value-1.0.2.tgz", + "integrity": "sha512-A6fMAio4D2ot2r/TYzr4yUWrmwNdsN5xL7+HUiyACE4DXm+q8HtPcnFTp+NnW3k4N05tZ7FVYFFb2CR13NxyHQ==", "dev": true, "requires": { "es-get-iterator": "^1.0.2", @@ -25151,25 +28925,32 @@ } }, "jest": { - "version": "29.3.1", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest/-/jest-29.7.0.tgz", + "integrity": "sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==", "dev": true, "requires": { - "@jest/core": "^29.3.1", - "@jest/types": "^29.3.1", + "@jest/core": "^29.7.0", + "@jest/types": "^29.6.3", "import-local": "^3.0.2", - "jest-cli": "^29.3.1" + "jest-cli": "^29.7.0" } }, "jest-changed-files": { - "version": "29.2.0", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.7.0.tgz", + "integrity": "sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==", "dev": true, "requires": { "execa": "^5.0.0", + "jest-util": "^29.7.0", "p-limit": "^3.1.0" }, "dependencies": { "execa": { "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", "dev": true, "requires": { "cross-spawn": "^7.0.3", @@ -25185,246 +28966,286 @@ }, "human-signals": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", "dev": true } } }, "jest-circus": { - "version": "29.3.1", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.7.0.tgz", + "integrity": "sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==", "dev": true, "requires": { - "@jest/environment": "^29.3.1", - "@jest/expect": "^29.3.1", - "@jest/test-result": "^29.3.1", - "@jest/types": "^29.3.1", + "@jest/environment": "^29.7.0", + "@jest/expect": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/types": "^29.6.3", "@types/node": "*", "chalk": "^4.0.0", "co": "^4.6.0", - "dedent": "^0.7.0", + "dedent": "^1.0.0", "is-generator-fn": "^2.0.0", - "jest-each": "^29.3.1", - "jest-matcher-utils": "^29.3.1", - "jest-message-util": "^29.3.1", - "jest-runtime": "^29.3.1", - "jest-snapshot": "^29.3.1", - "jest-util": "^29.3.1", + "jest-each": "^29.7.0", + "jest-matcher-utils": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-runtime": "^29.7.0", + "jest-snapshot": "^29.7.0", + "jest-util": "^29.7.0", "p-limit": "^3.1.0", - "pretty-format": "^29.3.1", + "pretty-format": "^29.7.0", + "pure-rand": "^6.0.0", "slash": "^3.0.0", "stack-utils": "^2.0.3" } }, "jest-cli": { - "version": "29.3.1", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.7.0.tgz", + "integrity": "sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==", "dev": true, "requires": { - "@jest/core": "^29.3.1", - "@jest/test-result": "^29.3.1", - "@jest/types": "^29.3.1", + "@jest/core": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/types": "^29.6.3", "chalk": "^4.0.0", + "create-jest": "^29.7.0", "exit": "^0.1.2", - "graceful-fs": "^4.2.9", "import-local": "^3.0.2", - "jest-config": "^29.3.1", - "jest-util": "^29.3.1", - "jest-validate": "^29.3.1", - "prompts": "^2.0.1", + "jest-config": "^29.7.0", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", "yargs": "^17.3.1" } }, "jest-config": { - "version": "29.3.1", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.7.0.tgz", + "integrity": "sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==", "dev": true, "requires": { "@babel/core": "^7.11.6", - "@jest/test-sequencer": "^29.3.1", - "@jest/types": "^29.3.1", - "babel-jest": "^29.3.1", + "@jest/test-sequencer": "^29.7.0", + "@jest/types": "^29.6.3", + "babel-jest": "^29.7.0", "chalk": "^4.0.0", "ci-info": "^3.2.0", "deepmerge": "^4.2.2", "glob": "^7.1.3", "graceful-fs": "^4.2.9", - "jest-circus": "^29.3.1", - "jest-environment-node": "^29.3.1", - "jest-get-type": "^29.2.0", - "jest-regex-util": "^29.2.0", - "jest-resolve": "^29.3.1", - "jest-runner": "^29.3.1", - "jest-util": "^29.3.1", - "jest-validate": "^29.3.1", + "jest-circus": "^29.7.0", + "jest-environment-node": "^29.7.0", + "jest-get-type": "^29.6.3", + "jest-regex-util": "^29.6.3", + "jest-resolve": "^29.7.0", + "jest-runner": "^29.7.0", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", "micromatch": "^4.0.4", "parse-json": "^5.2.0", - "pretty-format": "^29.3.1", + "pretty-format": "^29.7.0", "slash": "^3.0.0", "strip-json-comments": "^3.1.1" } }, "jest-diff": { - "version": "29.3.1", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz", + "integrity": "sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==", "dev": true, "requires": { "chalk": "^4.0.0", - "diff-sequences": "^29.3.1", - "jest-get-type": "^29.2.0", - "pretty-format": "^29.3.1" + "diff-sequences": "^29.6.3", + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" } }, "jest-docblock": { - "version": "29.2.0", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.7.0.tgz", + "integrity": "sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==", "dev": true, "requires": { "detect-newline": "^3.0.0" } }, "jest-each": { - "version": "29.3.1", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.7.0.tgz", + "integrity": "sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==", "dev": true, "requires": { - "@jest/types": "^29.3.1", + "@jest/types": "^29.6.3", "chalk": "^4.0.0", - "jest-get-type": "^29.2.0", - "jest-util": "^29.3.1", - "pretty-format": "^29.3.1" + "jest-get-type": "^29.6.3", + "jest-util": "^29.7.0", + "pretty-format": "^29.7.0" } }, "jest-environment-node": { - "version": "29.3.1", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.7.0.tgz", + "integrity": "sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==", "dev": true, "requires": { - "@jest/environment": "^29.3.1", - "@jest/fake-timers": "^29.3.1", - "@jest/types": "^29.3.1", + "@jest/environment": "^29.7.0", + "@jest/fake-timers": "^29.7.0", + "@jest/types": "^29.6.3", "@types/node": "*", - "jest-mock": "^29.3.1", - "jest-util": "^29.3.1" + "jest-mock": "^29.7.0", + "jest-util": "^29.7.0" } }, "jest-get-type": { - "version": "29.2.0", + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz", + "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==", "dev": true }, "jest-haste-map": { - "version": "29.3.1", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.7.0.tgz", + "integrity": "sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==", "dev": true, "requires": { - "@jest/types": "^29.3.1", + "@jest/types": "^29.6.3", "@types/graceful-fs": "^4.1.3", "@types/node": "*", "anymatch": "^3.0.3", "fb-watchman": "^2.0.0", "fsevents": "^2.3.2", "graceful-fs": "^4.2.9", - "jest-regex-util": "^29.2.0", - "jest-util": "^29.3.1", - "jest-worker": "^29.3.1", + "jest-regex-util": "^29.6.3", + "jest-util": "^29.7.0", + "jest-worker": "^29.7.0", "micromatch": "^4.0.4", "walker": "^1.0.8" } }, "jest-leak-detector": { - "version": "29.3.1", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz", + "integrity": "sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==", "dev": true, "requires": { - "jest-get-type": "^29.2.0", - "pretty-format": "^29.3.1" + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" } }, "jest-matcher-utils": { - "version": "29.3.1", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz", + "integrity": "sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==", "dev": true, "requires": { "chalk": "^4.0.0", - "jest-diff": "^29.3.1", - "jest-get-type": "^29.2.0", - "pretty-format": "^29.3.1" + "jest-diff": "^29.7.0", + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" } }, "jest-message-util": { - "version": "29.3.1", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz", + "integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==", "dev": true, "requires": { "@babel/code-frame": "^7.12.13", - "@jest/types": "^29.3.1", + "@jest/types": "^29.6.3", "@types/stack-utils": "^2.0.0", "chalk": "^4.0.0", "graceful-fs": "^4.2.9", "micromatch": "^4.0.4", - "pretty-format": "^29.3.1", + "pretty-format": "^29.7.0", "slash": "^3.0.0", "stack-utils": "^2.0.3" } }, "jest-mock": { - "version": "29.3.1", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.7.0.tgz", + "integrity": "sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==", "dev": true, "requires": { - "@jest/types": "^29.3.1", + "@jest/types": "^29.6.3", "@types/node": "*", - "jest-util": "^29.3.1" + "jest-util": "^29.7.0" } }, "jest-pnp-resolver": { "version": "1.2.3", + "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", + "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", "dev": true, "requires": {} }, "jest-regex-util": { - "version": "29.2.0", + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.6.3.tgz", + "integrity": "sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==", "dev": true }, "jest-resolve": { - "version": "29.3.1", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.7.0.tgz", + "integrity": "sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==", "dev": true, "requires": { "chalk": "^4.0.0", "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.3.1", + "jest-haste-map": "^29.7.0", "jest-pnp-resolver": "^1.2.2", - "jest-util": "^29.3.1", - "jest-validate": "^29.3.1", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", "resolve": "^1.20.0", - "resolve.exports": "^1.1.0", + "resolve.exports": "^2.0.0", "slash": "^3.0.0" } }, "jest-resolve-dependencies": { - "version": "29.3.1", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.7.0.tgz", + "integrity": "sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==", "dev": true, "requires": { - "jest-regex-util": "^29.2.0", - "jest-snapshot": "^29.3.1" + "jest-regex-util": "^29.6.3", + "jest-snapshot": "^29.7.0" } }, "jest-runner": { - "version": "29.3.1", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.7.0.tgz", + "integrity": "sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==", "dev": true, "requires": { - "@jest/console": "^29.3.1", - "@jest/environment": "^29.3.1", - "@jest/test-result": "^29.3.1", - "@jest/transform": "^29.3.1", - "@jest/types": "^29.3.1", + "@jest/console": "^29.7.0", + "@jest/environment": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", "@types/node": "*", "chalk": "^4.0.0", "emittery": "^0.13.1", "graceful-fs": "^4.2.9", - "jest-docblock": "^29.2.0", - "jest-environment-node": "^29.3.1", - "jest-haste-map": "^29.3.1", - "jest-leak-detector": "^29.3.1", - "jest-message-util": "^29.3.1", - "jest-resolve": "^29.3.1", - "jest-runtime": "^29.3.1", - "jest-util": "^29.3.1", - "jest-watcher": "^29.3.1", - "jest-worker": "^29.3.1", + "jest-docblock": "^29.7.0", + "jest-environment-node": "^29.7.0", + "jest-haste-map": "^29.7.0", + "jest-leak-detector": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-resolve": "^29.7.0", + "jest-runtime": "^29.7.0", + "jest-util": "^29.7.0", + "jest-watcher": "^29.7.0", + "jest-worker": "^29.7.0", "p-limit": "^3.1.0", "source-map-support": "0.5.13" }, "dependencies": { "source-map-support": { "version": "0.5.13", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", + "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", "dev": true, "requires": { "buffer-from": "^1.0.0", @@ -25434,74 +29255,78 @@ } }, "jest-runtime": { - "version": "29.3.1", - "dev": true, - "requires": { - "@jest/environment": "^29.3.1", - "@jest/fake-timers": "^29.3.1", - "@jest/globals": "^29.3.1", - "@jest/source-map": "^29.2.0", - "@jest/test-result": "^29.3.1", - "@jest/transform": "^29.3.1", - "@jest/types": "^29.3.1", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.7.0.tgz", + "integrity": "sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==", + "dev": true, + "requires": { + "@jest/environment": "^29.7.0", + "@jest/fake-timers": "^29.7.0", + "@jest/globals": "^29.7.0", + "@jest/source-map": "^29.6.3", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", "@types/node": "*", "chalk": "^4.0.0", "cjs-module-lexer": "^1.0.0", "collect-v8-coverage": "^1.0.0", "glob": "^7.1.3", "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.3.1", - "jest-message-util": "^29.3.1", - "jest-mock": "^29.3.1", - "jest-regex-util": "^29.2.0", - "jest-resolve": "^29.3.1", - "jest-snapshot": "^29.3.1", - "jest-util": "^29.3.1", + "jest-haste-map": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-mock": "^29.7.0", + "jest-regex-util": "^29.6.3", + "jest-resolve": "^29.7.0", + "jest-snapshot": "^29.7.0", + "jest-util": "^29.7.0", "slash": "^3.0.0", "strip-bom": "^4.0.0" }, "dependencies": { "strip-bom": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", + "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", "dev": true } } }, "jest-snapshot": { - "version": "29.3.1", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.7.0.tgz", + "integrity": "sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==", "dev": true, "requires": { "@babel/core": "^7.11.6", "@babel/generator": "^7.7.2", "@babel/plugin-syntax-jsx": "^7.7.2", "@babel/plugin-syntax-typescript": "^7.7.2", - "@babel/traverse": "^7.7.2", "@babel/types": "^7.3.3", - "@jest/expect-utils": "^29.3.1", - "@jest/transform": "^29.3.1", - "@jest/types": "^29.3.1", - "@types/babel__traverse": "^7.0.6", - "@types/prettier": "^2.1.5", + "@jest/expect-utils": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", "babel-preset-current-node-syntax": "^1.0.0", "chalk": "^4.0.0", - "expect": "^29.3.1", + "expect": "^29.7.0", "graceful-fs": "^4.2.9", - "jest-diff": "^29.3.1", - "jest-get-type": "^29.2.0", - "jest-haste-map": "^29.3.1", - "jest-matcher-utils": "^29.3.1", - "jest-message-util": "^29.3.1", - "jest-util": "^29.3.1", + "jest-diff": "^29.7.0", + "jest-get-type": "^29.6.3", + "jest-matcher-utils": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0", "natural-compare": "^1.4.0", - "pretty-format": "^29.3.1", - "semver": "^7.3.5" + "pretty-format": "^29.7.0", + "semver": "^7.5.3" } }, "jest-util": { - "version": "29.3.1", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", + "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", "dev": true, "requires": { - "@jest/types": "^29.3.1", + "@jest/types": "^29.6.3", "@types/node": "*", "chalk": "^4.0.0", "ci-info": "^3.2.0", @@ -25510,43 +29335,51 @@ } }, "jest-validate": { - "version": "29.3.1", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.7.0.tgz", + "integrity": "sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==", "dev": true, "requires": { - "@jest/types": "^29.3.1", + "@jest/types": "^29.6.3", "camelcase": "^6.2.0", "chalk": "^4.0.0", - "jest-get-type": "^29.2.0", + "jest-get-type": "^29.6.3", "leven": "^3.1.0", - "pretty-format": "^29.3.1" + "pretty-format": "^29.7.0" }, "dependencies": { "camelcase": { "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", "dev": true } } }, "jest-watcher": { - "version": "29.3.1", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.7.0.tgz", + "integrity": "sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==", "dev": true, "requires": { - "@jest/test-result": "^29.3.1", - "@jest/types": "^29.3.1", + "@jest/test-result": "^29.7.0", + "@jest/types": "^29.6.3", "@types/node": "*", "ansi-escapes": "^4.2.1", "chalk": "^4.0.0", "emittery": "^0.13.1", - "jest-util": "^29.3.1", + "jest-util": "^29.7.0", "string-length": "^4.0.1" } }, "jest-worker": { - "version": "29.3.1", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz", + "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==", "dev": true, "requires": { "@types/node": "*", - "jest-util": "^29.3.1", + "jest-util": "^29.7.0", "merge-stream": "^2.0.0", "supports-color": "^8.0.0" } @@ -25564,13 +29397,19 @@ }, "joycon": { "version": "3.1.1", + "resolved": "https://registry.npmjs.org/joycon/-/joycon-3.1.1.tgz", + "integrity": "sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==", "dev": true }, "js-tokens": { - "version": "4.0.0" + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" }, "js-yaml": { "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", "requires": { "argparse": "^1.0.7", "esprima": "^4.0.0" @@ -25583,18 +29422,26 @@ }, "jsesc": { "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", "dev": true }, "json-buffer": { "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", "dev": true }, "json-parse-better-errors": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", "dev": true }, "json-parse-even-better-errors": { "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", "dev": true }, "json-schema": { @@ -25603,13 +29450,19 @@ "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==" }, "json-schema-traverse": { - "version": "0.4.1" + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" }, "json-stable-stringify-without-jsonify": { - "version": "1.0.1" + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==" }, "json-stringify-safe": { - "version": "5.0.1" + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==" }, "json5": { "version": "2.2.2", @@ -25617,10 +29470,14 @@ }, "jsonc-parser": { "version": "3.2.0", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz", + "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==", "dev": true }, "jsonfile": { "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", "requires": { "graceful-fs": "^4.1.6", "universalify": "^2.0.0" @@ -25628,10 +29485,14 @@ }, "jsonparse": { "version": "1.3.1", + "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", + "integrity": "sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==", "dev": true }, "JSONStream": { "version": "1.3.5", + "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz", + "integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==", "dev": true, "requires": { "jsonparse": "^1.2.0", @@ -25667,10 +29528,14 @@ }, "kind-of": { "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", "dev": true }, "kleur": { "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", "dev": true }, "language-subtag-registry": { @@ -25684,30 +29549,42 @@ }, "latest-version": { "version": "7.0.0", + "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-7.0.0.tgz", + "integrity": "sha512-KvNT4XqAMzdcL6ka6Tl3i2lYeFDgXNCuIX+xNx6ZMVR1dFq+idXd9FLKNMOIx0t9mJ9/HudyX4oZWXZQ0UJHeg==", "dev": true, "requires": { "package-json": "^8.1.0" } }, "lazy-ass": { - "version": "1.6.0" + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/lazy-ass/-/lazy-ass-1.6.0.tgz", + "integrity": "sha512-cc8oEVoctTvsFZ/Oje/kGnHbpWHYBe8IAJe4C0QNc3t8uM/0Y8+erSz/7Y1ALuXTEZTMvxXwO6YbX1ey3ujiZw==" }, "leven": { "version": "3.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", "dev": true }, "levn": { "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", "requires": { "prelude-ls": "^1.2.1", "type-check": "~0.4.0" }, "dependencies": { "prelude-ls": { - "version": "1.2.1" + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==" }, "type-check": { "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", "requires": { "prelude-ls": "^1.2.1" } @@ -25735,18 +29612,26 @@ "optional": true }, "lil-http-terminator": { - "version": "1.2.3" + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/lil-http-terminator/-/lil-http-terminator-1.2.3.tgz", + "integrity": "sha512-vQcHSwAFq/kTR2cG6peOVS7SjgksGgSPeH0G2lkw+buue33thE/FCHdn10wJXXshc5RswFy0Iaz48qA2Busw5Q==" }, "lilconfig": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz", + "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==", "dev": true }, "lines-and-columns": { "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", "dev": true }, "listr2": { "version": "3.14.0", + "resolved": "https://registry.npmjs.org/listr2/-/listr2-3.14.0.tgz", + "integrity": "sha512-TyWI8G99GX9GjE54cJ+RrNMcIFBfwMPxc3XTFiAYGN4s10hWROGtOg7+O6u6LE3mNkyld7RSLE6nrKBvTfcs3g==", "requires": { "cli-truncate": "^2.1.0", "colorette": "^2.0.16", @@ -25790,6 +29675,8 @@ }, "load-json-file": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", + "integrity": "sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==", "dev": true, "requires": { "graceful-fs": "^4.1.2", @@ -25800,6 +29687,8 @@ "dependencies": { "parse-json": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==", "dev": true, "requires": { "error-ex": "^1.3.1", @@ -25808,6 +29697,8 @@ }, "pify": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", "dev": true } } @@ -25823,13 +29714,17 @@ }, "locate-path": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "dev": true, "requires": { "p-locate": "^4.1.0" } }, "lodash": { - "version": "4.17.21" + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" }, "lodash.capitalize": { "version": "4.2.1", @@ -25854,6 +29749,8 @@ }, "lodash.ismatch": { "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.ismatch/-/lodash.ismatch-4.4.0.tgz", + "integrity": "sha512-fPMfXjGQEV9Xsq/8MTSgUf255gawYRbjwMyDbcvDhXgV7enSZA0hynz6vMPnpAb5iONEzBHBPsT+0zes5Z301g==", "dev": true }, "lodash.isplainobject": { @@ -25869,17 +29766,25 @@ "dev": true }, "lodash.merge": { - "version": "4.6.2" + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==" }, "lodash.once": { - "version": "4.1.1" + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", + "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==" }, "lodash.sortby": { "version": "4.7.0", + "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", + "integrity": "sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==", "dev": true }, "lodash.truncate": { - "version": "4.4.2" + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", + "integrity": "sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==" }, "lodash.uniqby": { "version": "4.7.0", @@ -25889,18 +29794,24 @@ }, "log-symbols": { "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", "requires": { "chalk": "^4.1.0", "is-unicode-supported": "^0.1.0" }, "dependencies": { "is-unicode-supported": { - "version": "0.1.0" + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==" } } }, "log-update": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/log-update/-/log-update-4.0.0.tgz", + "integrity": "sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==", "requires": { "ansi-escapes": "^4.3.0", "cli-cursor": "^3.1.0", @@ -25910,6 +29821,8 @@ "dependencies": { "wrap-ansi": { "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", "requires": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", @@ -25920,16 +29833,31 @@ }, "loose-envify": { "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", "requires": { "js-tokens": "^3.0.0 || ^4.0.0" } }, + "loupe": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.6.tgz", + "integrity": "sha512-RaPMZKiMy8/JruncMU5Bt6na1eftNoo++R4Y+N2FrxkDVTrGvcyzFTsaGif4QTeKESheMGegbhw6iUAq+5A8zA==", + "dev": true, + "requires": { + "get-func-name": "^2.0.0" + } + }, "lowercase-keys": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-3.0.0.tgz", + "integrity": "sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ==", "dev": true }, "lru-cache": { "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", "requires": { "yallist": "^4.0.0" } @@ -25952,10 +29880,14 @@ } }, "make-error": { - "version": "1.3.6" + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==" }, "makeerror": { "version": "1.0.12", + "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", + "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", "dev": true, "requires": { "tmpl": "1.0.5" @@ -25963,6 +29895,8 @@ }, "map-obj": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==", "dev": true }, "map-stream": { @@ -25977,6 +29911,8 @@ }, "meow": { "version": "8.1.2", + "resolved": "https://registry.npmjs.org/meow/-/meow-8.1.2.tgz", + "integrity": "sha512-r85E3NdZ+mpYk1C6RjPFEMSE+s1iZMuHtsHAqY0DT3jZczl0diWUZ8g6oU7h0M9cD2EL+PzaYghhCLzR0ZNn5Q==", "dev": true, "requires": { "@types/minimist": "^1.2.0", @@ -25994,6 +29930,8 @@ "dependencies": { "normalize-package-data": { "version": "3.0.3", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz", + "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==", "dev": true, "requires": { "hosted-git-info": "^4.0.1", @@ -26004,6 +29942,8 @@ }, "read-pkg": { "version": "5.2.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", "dev": true, "requires": { "@types/normalize-package-data": "^2.4.0", @@ -26014,10 +29954,14 @@ "dependencies": { "hosted-git-info": { "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", "dev": true }, "normalize-package-data": { "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", "dev": true, "requires": { "hosted-git-info": "^2.1.4", @@ -26032,12 +29976,16 @@ }, "type-fest": { "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", "dev": true } } }, "read-pkg-up": { "version": "7.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", + "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", "dev": true, "requires": { "find-up": "^4.1.0", @@ -26047,51 +29995,73 @@ "dependencies": { "type-fest": { "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", "dev": true } } }, "type-fest": { "version": "0.18.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz", + "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==", "dev": true } } }, "merge-stream": { - "version": "2.0.0" + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" }, "merge2": { - "version": "1.4.1" + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==" }, "micromatch": { "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", "requires": { "braces": "^3.0.2", "picomatch": "^2.3.1" } }, "mime-db": { - "version": "1.52.0" + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==" }, "mime-types": { "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", "requires": { "mime-db": "1.52.0" } }, "mimic-fn": { - "version": "2.1.0" + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==" }, "mimic-response": { "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", + "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", "dev": true }, "min-indent": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", + "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", "dev": true }, "minimatch": { "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "requires": { "brace-expansion": "^1.1.7" } @@ -26103,6 +30073,8 @@ }, "minimist-options": { "version": "4.1.0", + "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz", + "integrity": "sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==", "dev": true, "requires": { "arrify": "^1.0.1", @@ -26112,10 +30084,20 @@ }, "modify-values": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/modify-values/-/modify-values-1.0.1.tgz", + "integrity": "sha512-xV2bxeN6F7oYjZWTe/YPAy6MN2M+sL4u/Rlm2AHCIVGfo2p1yGmBHQ6vHehl4bRTZBdHu3TSkWdYgkwpYzAGSw==", + "dev": true + }, + "mri": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz", + "integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==", "dev": true }, "ms": { - "version": "2.1.2" + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, "msgpackr": { "version": "1.9.5", @@ -26145,8 +30127,31 @@ } } }, + "multimatch": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/multimatch/-/multimatch-4.0.0.tgz", + "integrity": "sha512-lDmx79y1z6i7RNx0ZGCPq1bzJ6ZoDDKbvh7jxr9SJcWLkShMzXrHbYVpTdnhNM5MXpDUxCQ4DgqVttVXlBgiBQ==", + "dev": true, + "requires": { + "@types/minimatch": "^3.0.3", + "array-differ": "^3.0.0", + "array-union": "^2.1.0", + "arrify": "^2.0.1", + "minimatch": "^3.0.4" + }, + "dependencies": { + "arrify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz", + "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==", + "dev": true + } + } + }, "mz": { "version": "2.7.0", + "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", + "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", "dev": true, "requires": { "any-promise": "^1.0.0", @@ -26158,18 +30163,26 @@ "version": "3.3.4" }, "natural-compare": { - "version": "1.4.0" + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==" }, "neo-async": { "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", "dev": true }, "netmask": { "version": "2.0.2", + "resolved": "https://registry.npmjs.org/netmask/-/netmask-2.0.2.tgz", + "integrity": "sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg==", "dev": true }, "new-github-release-url": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/new-github-release-url/-/new-github-release-url-2.0.0.tgz", + "integrity": "sha512-NHDDGYudnvRutt/VhKFlX26IotXe1w0cmkDm6JGquh5bz/bDTw0LufSmH/GxTjEdpHEO+bVKFTwdrcGa/9XlKQ==", "dev": true, "requires": { "type-fest": "^2.5.1" @@ -26199,7 +30212,9 @@ } }, "nice-try": { - "version": "1.0.5" + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==" }, "nock": { "version": "13.2.9", @@ -26217,6 +30232,8 @@ }, "node-domexception": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz", + "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==", "dev": true }, "node-gyp-build-optional-packages": { @@ -26225,6 +30242,8 @@ }, "node-int64": { "version": "0.4.0", + "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", + "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", "dev": true }, "node-preload": { @@ -26240,6 +30259,8 @@ }, "normalize-package-data": { "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", "dev": true, "requires": { "hosted-git-info": "^2.1.4", @@ -26250,6 +30271,8 @@ "dependencies": { "hosted-git-info": { "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", "dev": true }, "semver": { @@ -26260,31 +30283,43 @@ }, "normalize-path": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", "dev": true }, "normalize-url": { "version": "8.0.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-8.0.0.tgz", + "integrity": "sha512-uVFpKhj5MheNBJRTiMZ9pE/7hD1QTeEvugSJW/OmLzAp78PB5O6adfMNTvmfKhXBkvCzC+rqifWcVYpGFwTjnw==", "dev": true }, "npm-path": { "version": "2.0.4", + "resolved": "https://registry.npmjs.org/npm-path/-/npm-path-2.0.4.tgz", + "integrity": "sha512-IFsj0R9C7ZdR5cP+ET342q77uSRdtWOlWpih5eC+lu29tIDbNEgDbzgVJ5UFvYHWhxDZ5TFkJafFioO0pPQjCw==", "requires": { "which": "^1.2.10" } }, "npm-run-path": { "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", "requires": { "path-key": "^3.0.0" }, "dependencies": { "path-key": { - "version": "3.1.1" + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==" } } }, "npm-which": { "version": "3.0.1", + "resolved": "https://registry.npmjs.org/npm-which/-/npm-which-3.0.1.tgz", + "integrity": "sha512-CM8vMpeFQ7MAPin0U3wzDhSGV0hMHNwHU0wjo402IVizPDrs45jSfSuoC+wThevY88LQti8VvaAnqYAeVy3I1A==", "requires": { "commander": "^2.9.0", "npm-path": "^2.0.2", @@ -26292,7 +30327,9 @@ }, "dependencies": { "commander": { - "version": "2.20.3" + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" } } }, @@ -26377,10 +30414,14 @@ }, "semver": { "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true }, "wrap-ansi": { "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", "dev": true, "requires": { "ansi-styles": "^4.0.0", @@ -26420,16 +30461,22 @@ } }, "object-assign": { - "version": "4.1.1" + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==" }, "object-inspect": { "version": "1.12.2" }, "object-keys": { - "version": "1.1.1" + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" }, "object.assign": { "version": "4.1.4", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", + "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", "requires": { "call-bind": "^1.0.2", "define-properties": "^1.1.4", @@ -26470,12 +30517,16 @@ }, "once": { "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", "requires": { "wrappy": "1" } }, "onetime": { "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", "requires": { "mimic-fn": "^2.1.0" } @@ -26486,20 +30537,30 @@ }, "os-tmpdir": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", "dev": true }, "ospath": { - "version": "1.2.2" + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/ospath/-/ospath-1.2.2.tgz", + "integrity": "sha512-o6E5qJV5zkAbIDNhGSIlyOhScKXgQrSRMilfph0clDfM0nEnBOlKlH4sWDmG95BW/CvwNz0vmm7dJVtU2KlMiA==" }, "p-cancelable": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-3.0.0.tgz", + "integrity": "sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw==", "dev": true }, "p-finally": { - "version": "1.0.0" + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==" }, "p-limit": { "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", "dev": true, "requires": { "yocto-queue": "^0.1.0" @@ -26507,6 +30568,8 @@ }, "p-locate": { "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "dev": true, "requires": { "p-limit": "^2.2.0" @@ -26514,6 +30577,8 @@ "dependencies": { "p-limit": { "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "dev": true, "requires": { "p-try": "^2.0.0" @@ -26523,12 +30588,16 @@ }, "p-map": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", "requires": { "aggregate-error": "^3.0.0" } }, "p-try": { "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", "dev": true }, "package-hash": { @@ -26579,12 +30648,16 @@ }, "parent-module": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", "requires": { "callsites": "^3.0.0" } }, "parse-json": { "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", "dev": true, "requires": { "@babel/code-frame": "^7.0.0", @@ -26594,10 +30667,14 @@ } }, "parse-ms": { - "version": "2.1.0" + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/parse-ms/-/parse-ms-2.1.0.tgz", + "integrity": "sha512-kHt7kzLoS9VBZfUsiKjv43mr91ea+U05EyKkEtqp7vNbHxmaVuEqN7XxeEVnGrMtYOAxGrDElSi96K7EgO1zCA==" }, "parse-path": { "version": "7.0.0", + "resolved": "https://registry.npmjs.org/parse-path/-/parse-path-7.0.0.tgz", + "integrity": "sha512-Euf9GG8WT9CdqwuWJGdf3RkUcTBArppHABkO7Lm8IzRQp0e2r/kkFnmhu4TSK30Wcu5rVAZLmfPKSBBi9tWFog==", "dev": true, "requires": { "protocols": "^2.0.0" @@ -26605,6 +30682,8 @@ }, "parse-url": { "version": "8.1.0", + "resolved": "https://registry.npmjs.org/parse-url/-/parse-url-8.1.0.tgz", + "integrity": "sha512-xDvOoLU5XRrcOZvnI6b8zA6n9O9ejNk/GExuz1yBuWUGn9KA97GI6HTs6u02wKara1CeVmZhH+0TZFdWScR89w==", "dev": true, "requires": { "parse-path": "^7.0.0" @@ -26612,19 +30691,35 @@ }, "path-exists": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", "dev": true }, "path-is-absolute": { - "version": "1.0.1" + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==" }, "path-key": { - "version": "2.0.1" + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==" }, "path-parse": { - "version": "1.0.7" + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" }, "path-type": { - "version": "4.0.0" + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==" + }, + "pathval": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", + "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", + "dev": true }, "pause-stream": { "version": "0.0.11", @@ -26634,7 +30729,9 @@ } }, "pend": { - "version": "1.2.0" + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", + "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==" }, "performance-now": { "version": "2.1.0", @@ -26642,13 +30739,19 @@ "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==" }, "picocolors": { - "version": "1.0.0" + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" }, "picomatch": { - "version": "2.3.1" + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==" }, "pify": { - "version": "2.3.0" + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==" }, "pirates": { "version": "4.0.5", @@ -26656,6 +30759,8 @@ }, "pkg-dir": { "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", "dev": true, "requires": { "find-up": "^4.0.0" @@ -26663,6 +30768,8 @@ }, "postcss": { "version": "8.4.14", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.14.tgz", + "integrity": "sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig==", "requires": { "nanoid": "^3.3.4", "picocolors": "^1.0.0", @@ -26671,6 +30778,8 @@ }, "postcss-load-config": { "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-4.0.1.tgz", + "integrity": "sha512-vEJIc8RdiBRu3oRAI0ymerOn+7rPuMvRXslTvZUKZonDHFIczxztIyJ1urxM1x9JXEikvpWWTUUqal5j/8QgvA==", "dev": true, "requires": { "lilconfig": "^2.0.5", @@ -26719,33 +30828,84 @@ "dev": true }, "pretty-bytes": { - "version": "5.6.0" + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz", + "integrity": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==" }, "pretty-format": { - "version": "29.3.1", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", "dev": true, "requires": { - "@jest/schemas": "^29.0.0", + "@jest/schemas": "^29.6.3", "ansi-styles": "^5.0.0", "react-is": "^18.0.0" }, "dependencies": { "ansi-styles": { "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", "dev": true }, "react-is": { "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", "dev": true } } }, "pretty-ms": { "version": "7.0.1", + "resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-7.0.1.tgz", + "integrity": "sha512-973driJZvxiGOQ5ONsFhOF/DtzPMOMtgC11kCpUrPGMTgqp2q/1gwzCquocrN33is0VZ5GFHXZYMM9l6h67v2Q==", "requires": { "parse-ms": "^2.1.0" } }, + "pretty-quick": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/pretty-quick/-/pretty-quick-3.1.3.tgz", + "integrity": "sha512-kOCi2FJabvuh1as9enxYmrnBC6tVMoVOenMaBqRfsvBHB0cbpYHjdQEpSglpASDFEXVwplpcGR4CLEaisYAFcA==", + "dev": true, + "requires": { + "chalk": "^3.0.0", + "execa": "^4.0.0", + "find-up": "^4.1.0", + "ignore": "^5.1.4", + "mri": "^1.1.5", + "multimatch": "^4.0.0" + }, + "dependencies": { + "chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "ignore": { + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", + "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, "process": { "version": "0.11.10", "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", @@ -26753,6 +30913,8 @@ }, "process-nextick-args": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", "dev": true }, "process-on-spawn": { @@ -26763,10 +30925,14 @@ } }, "progress": { - "version": "2.0.3" + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==" }, "promise.allsettled": { "version": "1.0.6", + "resolved": "https://registry.npmjs.org/promise.allsettled/-/promise.allsettled-1.0.6.tgz", + "integrity": "sha512-22wJUOD3zswWFqgwjNHa1965LvqTX87WPu/lreY2KSd7SVcERfuZ4GfUaOnJNnvtoIv2yXT/W00YIGMetXtFXg==", "dev": true, "requires": { "array.prototype.map": "^1.0.5", @@ -26779,6 +30945,8 @@ }, "prompts": { "version": "2.4.2", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", + "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", "dev": true, "requires": { "kleur": "^3.0.3", @@ -26787,6 +30955,8 @@ }, "prop-types": { "version": "15.8.1", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", "requires": { "loose-envify": "^1.4.0", "object-assign": "^4.1.1", @@ -26795,18 +30965,26 @@ }, "propagate": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/propagate/-/propagate-2.0.1.tgz", + "integrity": "sha512-vGrhOavPSTz4QVNuBNdcNXePNdNMaO1xj9yBeH1ScQPjk/rhg9sSlCXPhMkFuaNNW/syTvYqsnbIJxMBfRbbag==", "dev": true }, "proto-list": { "version": "1.2.4", + "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", + "integrity": "sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==", "dev": true }, "protocols": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/protocols/-/protocols-2.0.1.tgz", + "integrity": "sha512-/XJ368cyBJ7fzLMwLKv1e4vLxOju2MNAIokcr7meSaNcVbWz/CPcW22cP04mwxOErdA5mwjA8Q6w/cdAQxVn7Q==", "dev": true }, "proxy-from-env": { - "version": "1.0.0" + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.0.0.tgz", + "integrity": "sha512-F2JHgJQ1iqwnHDcQjVBsq3n/uoaFL+iPW/eAeL7kVxy/2RrWaN4WroKjjvbsoRtv0ftelNyC01bjRhn/bhcf4A==" }, "ps-tree": { "version": "1.2.0", @@ -26822,6 +31000,8 @@ }, "pump": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", "requires": { "end-of-stream": "^1.1.0", "once": "^1.3.1" @@ -26832,11 +31012,19 @@ }, "pupa": { "version": "3.1.0", + "resolved": "https://registry.npmjs.org/pupa/-/pupa-3.1.0.tgz", + "integrity": "sha512-FLpr4flz5xZTSJxSeaheeMKN/EDzMdK7b8PTOC6a5PYFKTucWbdqjgqaEyH0shFiSJrVB1+Qqi4Tk19ccU6Aug==", "dev": true, "requires": { "escape-goat": "^4.0.0" } }, + "pure-rand": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.0.3.tgz", + "integrity": "sha512-KddyFewCsO0j3+np81IQ+SweXLDnDQTs5s67BOnrYmYe/yNmUhttQyGsYzy8yUnoljGAQ9sl38YB4vH8ur7Y+w==", + "dev": true + }, "qs": { "version": "6.10.4", "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.4.tgz", @@ -26851,14 +31039,20 @@ "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==" }, "queue-microtask": { - "version": "1.2.3" + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==" }, "quick-lru": { "version": "5.1.1", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", + "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", "dev": true }, "ramda": { - "version": "0.26.1" + "version": "0.26.1", + "resolved": "https://registry.npmjs.org/ramda/-/ramda-0.26.1.tgz", + "integrity": "sha512-hLWjpy7EnsDBb0p+Z3B7rPi3GDeRG5ZtiI33kJhTt+ORCd38AbAIjB/9zRIUoeTbE/AVX5ZkU7m6bznsvrf8eQ==" }, "randombytes": { "version": "2.1.0", @@ -26870,6 +31064,8 @@ }, "rc": { "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", "dev": true, "requires": { "deep-extend": "^0.6.0", @@ -26880,18 +31076,24 @@ "dependencies": { "strip-json-comments": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", "dev": true } } }, "react": { "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz", + "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==", "requires": { "loose-envify": "^1.1.0" } }, "react-dom": { "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz", + "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==", "requires": { "loose-envify": "^1.1.0", "scheduler": "^0.23.0" @@ -26902,7 +31104,9 @@ "dev": true }, "react-is": { - "version": "16.13.1" + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" }, "react-refresh": { "version": "0.9.0", @@ -26910,6 +31114,8 @@ }, "read-pkg": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", + "integrity": "sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA==", "dev": true, "requires": { "load-json-file": "^4.0.0", @@ -26919,6 +31125,8 @@ "dependencies": { "path-type": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", "dev": true, "requires": { "pify": "^3.0.0" @@ -26926,12 +31134,16 @@ }, "pify": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", "dev": true } } }, "read-pkg-up": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-3.0.0.tgz", + "integrity": "sha512-YFzFrVvpC6frF1sz8psoHDBGF7fLPc+llq/8NB43oagqWkx8ar5zYtsTORtOjw9W2RHLpWP+zTWwBvf1bCmcSw==", "dev": true, "requires": { "find-up": "^2.0.0", @@ -26940,6 +31152,8 @@ "dependencies": { "find-up": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==", "dev": true, "requires": { "locate-path": "^2.0.0" @@ -26947,6 +31161,8 @@ }, "locate-path": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==", "dev": true, "requires": { "p-locate": "^2.0.0", @@ -26955,6 +31171,8 @@ }, "p-limit": { "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", "dev": true, "requires": { "p-try": "^1.0.0" @@ -26962,6 +31180,8 @@ }, "p-locate": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==", "dev": true, "requires": { "p-limit": "^1.1.0" @@ -26969,10 +31189,14 @@ }, "p-try": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==", "dev": true }, "path-exists": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", "dev": true } } @@ -26988,6 +31212,8 @@ }, "readdirp": { "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", "dev": true, "requires": { "picomatch": "^2.2.1" @@ -26995,6 +31221,8 @@ }, "rechoir": { "version": "0.6.2", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", + "integrity": "sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==", "dev": true, "requires": { "resolve": "^1.1.6" @@ -27002,6 +31230,8 @@ }, "redent": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", + "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", "dev": true, "requires": { "indent-string": "^4.0.0", @@ -27041,7 +31271,9 @@ } }, "regexpp": { - "version": "3.2.0" + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", + "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==" }, "regexpu-core": { "version": "5.3.2", @@ -27065,6 +31297,8 @@ }, "registry-url": { "version": "6.0.1", + "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-6.0.1.tgz", + "integrity": "sha512-+crtS5QjFRqFCoQmvGduwYWEBng99ZvmFvF+cUJkGYF1L1BfU8C6Zp9T7f5vPAwyLkUExpvK+ANVZmGU49qi4Q==", "dev": true, "requires": { "rc": "1.2.8" @@ -27094,16 +31328,22 @@ }, "request-progress": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/request-progress/-/request-progress-3.0.0.tgz", + "integrity": "sha512-MnWzEHHaxHO2iWiQuHrUPBi/1WeBf5PkxQqNyNvLl9VAYSdXkP8tQ3pBSeCPD+yw0v0Aq1zosWLz0BdeXpWwZg==", "requires": { "throttleit": "^1.0.0" } }, "require-directory": { "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", "dev": true }, "require-from-string": { - "version": "2.0.2" + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==" }, "require-main-filename": { "version": "2.0.0", @@ -27124,10 +31364,14 @@ }, "resolve-alpn": { "version": "1.2.1", + "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz", + "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==", "dev": true }, "resolve-cwd": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", "dev": true, "requires": { "resolve-from": "^5.0.0" @@ -27135,14 +31379,20 @@ }, "resolve-from": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", "dev": true }, "resolve.exports": { - "version": "1.1.0", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.2.tgz", + "integrity": "sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==", "dev": true }, "responselike": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-3.0.0.tgz", + "integrity": "sha512-40yHxbNcl2+rzXvZuVkrYohathsSJlMTXKryG5y8uciHv1+xDLHQpgjG64JUO9nrEq2jGLH6IZ8BcZyw3wrweg==", "dev": true, "requires": { "lowercase-keys": "^3.0.0" @@ -27150,6 +31400,8 @@ }, "restore-cursor": { "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", "requires": { "onetime": "^5.1.0", "signal-exit": "^3.0.2" @@ -27157,16 +31409,24 @@ }, "retry": { "version": "0.13.1", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", + "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", "dev": true }, "reusify": { - "version": "1.0.4" + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==" }, "rfdc": { - "version": "1.3.0" + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz", + "integrity": "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==" }, "rimraf": { "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", "requires": { "glob": "^7.1.3" } @@ -27214,6 +31474,8 @@ }, "run-parallel": { "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", "requires": { "queue-microtask": "^1.2.2" } @@ -27227,7 +31489,9 @@ } }, "safe-buffer": { - "version": "5.2.1" + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" }, "safe-json-stringify": { "version": "1.2.0", @@ -27236,6 +31500,8 @@ }, "safe-regex-test": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz", + "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==", "requires": { "call-bind": "^1.0.2", "get-intrinsic": "^1.1.3", @@ -27243,10 +31509,14 @@ } }, "safer-buffer": { - "version": "2.1.2" + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, "scheduler": { "version": "0.23.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz", + "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==", "requires": { "loose-envify": "^1.1.0" } @@ -27283,6 +31553,8 @@ }, "json-schema-traverse": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", "dev": true, "peer": true } @@ -27298,6 +31570,8 @@ }, "semver-diff": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-4.0.0.tgz", + "integrity": "sha512-0Ju4+6A8iOnpL/Thra7dZsSlOHYAHIeMxfhWQRI1/VLcT3WDBZKKtQt/QkBOsiIN9ZpuvHE6cGZ0x4glCMmfiA==", "dev": true, "requires": { "semver": "^7.3.5" @@ -27317,12 +31591,16 @@ }, "shebang-command": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", "requires": { "shebang-regex": "^3.0.0" } }, "shebang-regex": { - "version": "3.0.0" + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==" }, "shell-quote": { "version": "1.8.0", @@ -27330,6 +31608,8 @@ }, "shelljs": { "version": "0.8.5", + "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.5.tgz", + "integrity": "sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==", "dev": true, "requires": { "glob": "^7.0.0", @@ -27339,6 +31619,8 @@ }, "side-channel": { "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", "requires": { "call-bind": "^1.0.0", "get-intrinsic": "^1.0.2", @@ -27346,21 +31628,31 @@ } }, "signal-exit": { - "version": "3.0.7" + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" }, "simple-bin-help": { "version": "1.8.0", + "resolved": "https://registry.npmjs.org/simple-bin-help/-/simple-bin-help-1.8.0.tgz", + "integrity": "sha512-0LxHn+P1lF5r2WwVB/za3hLRIsYoLaNq1CXqjbrs3ZvLuvlWnRKrUjEWzV7umZL7hpQ7xULiQMV+0iXdRa5iFg==", "dev": true }, "sisteransi": { "version": "1.0.5", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", "dev": true }, "slash": { - "version": "3.0.0" + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==" }, "slice-ansi": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", + "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", "requires": { "ansi-styles": "^4.0.0", "astral-regex": "^2.0.0", @@ -27369,10 +31661,14 @@ }, "smart-buffer": { "version": "4.2.0", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", "dev": true }, "socks": { "version": "2.7.1", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.7.1.tgz", + "integrity": "sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ==", "dev": true, "requires": { "ip": "^2.0.0", @@ -27381,18 +31677,26 @@ "dependencies": { "ip": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz", + "integrity": "sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==", "dev": true } } }, "source-map": { - "version": "0.6.1" + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" }, "source-map-js": { - "version": "1.0.2" + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==" }, "source-map-support": { "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", "requires": { "buffer-from": "^1.0.0", "source-map": "^0.6.0" @@ -27400,6 +31704,8 @@ }, "spawn-command": { "version": "0.0.2-1", + "resolved": "https://registry.npmjs.org/spawn-command/-/spawn-command-0.0.2-1.tgz", + "integrity": "sha512-n98l9E2RMSJ9ON1AKisHzz7V42VDiBQGY6PB1BwRglz99wpVsSuGzQ+jOi6lFXBGVTCrRpltvjm+/XA+tpeJrg==", "dev": true }, "spawn-wrap": { @@ -27416,6 +31722,8 @@ "dependencies": { "which": { "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", "dev": true, "requires": { "isexe": "^2.0.0" @@ -27433,10 +31741,14 @@ }, "spdx-exceptions": { "version": "2.3.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", "dev": true }, "spdx-expression-parse": { "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", "dev": true, "requires": { "spdx-exceptions": "^2.1.0", @@ -27456,13 +31768,17 @@ }, "split2": { "version": "3.2.2", + "resolved": "https://registry.npmjs.org/split2/-/split2-3.2.2.tgz", + "integrity": "sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==", "dev": true, "requires": { "readable-stream": "^3.0.0" } }, "sprintf-js": { - "version": "1.0.3" + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==" }, "srcset": { "version": "4.0.0", @@ -27490,6 +31806,8 @@ }, "stack-utils": { "version": "2.0.6", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", + "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", "dev": true, "requires": { "escape-string-regexp": "^2.0.0" @@ -27497,6 +31815,8 @@ "dependencies": { "escape-string-regexp": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", "dev": true } } @@ -27536,6 +31856,8 @@ }, "human-signals": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", "dev": true } } @@ -27558,6 +31880,8 @@ }, "string_decoder": { "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", "dev": true, "requires": { "safe-buffer": "~5.2.0" @@ -27565,6 +31889,8 @@ }, "string-length": { "version": "4.0.2", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", + "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", "dev": true, "requires": { "char-regex": "^1.0.2", @@ -27573,6 +31899,8 @@ }, "string-width": { "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "requires": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -27580,7 +31908,9 @@ }, "dependencies": { "emoji-regex": { - "version": "8.0.0" + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" } } }, @@ -27599,6 +31929,8 @@ }, "string.prototype.trimend": { "version": "1.0.6", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz", + "integrity": "sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==", "requires": { "call-bind": "^1.0.2", "define-properties": "^1.1.4", @@ -27607,6 +31939,8 @@ }, "string.prototype.trimstart": { "version": "1.0.6", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz", + "integrity": "sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==", "requires": { "call-bind": "^1.0.2", "define-properties": "^1.1.4", @@ -27615,31 +31949,45 @@ }, "strip-ansi": { "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "requires": { "ansi-regex": "^5.0.1" } }, "strip-bom": { - "version": "3.0.0" + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==" }, "strip-eof": { - "version": "1.0.0" + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==" }, "strip-final-newline": { - "version": "2.0.0" + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==" }, "strip-indent": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", + "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", "dev": true, "requires": { "min-indent": "^1.0.0" } }, "strip-json-comments": { - "version": "3.1.1" + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==" }, "styled-jsx": { "version": "5.1.1", + "resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.1.1.tgz", + "integrity": "sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==", "requires": { "client-only": "0.0.1" } @@ -27658,10 +32006,14 @@ "dependencies": { "commander": { "version": "4.1.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", + "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", "dev": true }, "glob": { "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", "dev": true, "requires": { "fs.realpath": "^1.0.0", @@ -27676,12 +32028,16 @@ }, "supports-color": { "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", "requires": { "has-flag": "^4.0.0" } }, "supports-preserve-symlinks-flag": { - "version": "1.0.0" + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==" }, "svgo": { "version": "3.0.2", @@ -27707,6 +32063,8 @@ }, "table": { "version": "6.8.1", + "resolved": "https://registry.npmjs.org/table/-/table-6.8.1.tgz", + "integrity": "sha512-Y4X9zqrCftUhMeH2EptSSERdVKt/nEdijTOacGD/97EKjhQ/Qs8RTlEGABSJNNN8lac9kheH+af7yAkEWlgneA==", "requires": { "ajv": "^8.0.1", "lodash.truncate": "^4.4.2", @@ -27725,7 +32083,9 @@ } }, "json-schema-traverse": { - "version": "1.0.0" + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" } } }, @@ -27816,6 +32176,8 @@ }, "test-exclude": { "version": "6.0.0", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", + "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", "dev": true, "requires": { "@istanbuljs/schema": "^0.1.2", @@ -27837,6 +32199,8 @@ "dependencies": { "@next/eslint-plugin-next": { "version": "12.3.4", + "resolved": "https://registry.npmjs.org/@next/eslint-plugin-next/-/eslint-plugin-next-12.3.4.tgz", + "integrity": "sha512-BFwj8ykJY+zc1/jWANsDprDIu2MgwPOIKxNVnrKvPs+f5TPegrVnem8uScND+1veT4B7F6VeqgaNLFW1Hzl9Og==", "dev": true, "requires": { "glob": "7.1.7" @@ -27844,6 +32208,8 @@ }, "@types/node": { "version": "17.0.45", + "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.45.tgz", + "integrity": "sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==", "dev": true }, "eslint-config-custom": { @@ -27859,6 +32225,8 @@ "dependencies": { "eslint-config-next": { "version": "12.3.4", + "resolved": "https://registry.npmjs.org/eslint-config-next/-/eslint-config-next-12.3.4.tgz", + "integrity": "sha512-WuT3gvgi7Bwz00AOmKGhOeqnyA5P29Cdyr0iVjLyfDbk+FANQKcOjFUTZIdyYfe5Tq1x4TGcmoe4CwctGvFjHQ==", "dev": true, "requires": { "@next/eslint-plugin-next": "12.3.4", @@ -27897,6 +32265,8 @@ }, "eslint-plugin-react": { "version": "7.28.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.28.0.tgz", + "integrity": "sha512-IOlFIRHzWfEQQKcAD4iyYDndHwTQiCMcJVJjxempf203jnNLUnW34AXLrV33+nEXoifJE2ZEGmcjKPL8957eSw==", "dev": true, "requires": { "array-includes": "^3.1.4", @@ -27919,6 +32289,8 @@ }, "glob": { "version": "7.1.7", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", + "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", "dev": true, "requires": { "fs.realpath": "^1.0.0", @@ -27931,6 +32303,8 @@ }, "resolve": { "version": "2.0.0-next.4", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.4.tgz", + "integrity": "sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ==", "dev": true, "requires": { "is-core-module": "^2.9.0", @@ -27955,19 +32329,27 @@ "dependencies": { "@types/node": { "version": "17.0.45", + "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.45.tgz", + "integrity": "sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==", "dev": true } } }, "text-extensions": { "version": "1.9.0", + "resolved": "https://registry.npmjs.org/text-extensions/-/text-extensions-1.9.0.tgz", + "integrity": "sha512-wiBrwC1EhBelW12Zy26JeOUkQ5mRu+5o8rpsJk5+2t+Y5vE7e842qtZDQ2g1NpX/29HdyFeJ4nSIhI47ENSxlQ==", "dev": true }, "text-table": { - "version": "0.2.0" + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==" }, "thenify": { "version": "3.3.1", + "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", + "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", "dev": true, "requires": { "any-promise": "^1.0.0" @@ -27975,16 +32357,22 @@ }, "thenify-all": { "version": "1.6.0", + "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", + "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", "dev": true, "requires": { "thenify": ">= 3.1.0 < 4" } }, "throttleit": { - "version": "1.0.0" + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/throttleit/-/throttleit-1.0.0.tgz", + "integrity": "sha512-rkTVqu6IjfQ/6+uNuuc3sZek4CEYxTJom3IktzgdSxcZqdARuebbA/f4QmAxMQIxqq9ZLEUkSYqvuk1I6VKq4g==" }, "through": { - "version": "2.3.8" + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==" }, "timsort": { "version": "0.3.0", @@ -27998,26 +32386,36 @@ }, "tmp": { "version": "0.2.1", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", + "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", "requires": { "rimraf": "^3.0.0" } }, "tmp-promise": { "version": "3.0.3", + "resolved": "https://registry.npmjs.org/tmp-promise/-/tmp-promise-3.0.3.tgz", + "integrity": "sha512-RwM7MoPojPxsOBYnyd2hy0bxtIlVrihNs9pj5SUvY8Zz1sQcQG2tG1hSr8PDxfgEB8RNKDhqbIlroIarSNDNsQ==", "requires": { "tmp": "^0.2.0" } }, "tmpl": { "version": "1.0.5", + "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", + "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", "dev": true }, "to-fast-properties": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", "dev": true }, "to-regex-range": { "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", "requires": { "is-number": "^7.0.0" } @@ -28042,22 +32440,32 @@ }, "tr46": { "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", "dev": true }, "tree-kill": { "version": "1.2.2", + "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", + "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", "dev": true }, "trim-newlines": { "version": "3.0.1", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.1.tgz", + "integrity": "sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==", "dev": true }, "ts-interface-checker": { "version": "0.1.13", + "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz", + "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==", "dev": true }, "ts-node": { "version": "10.9.1", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz", + "integrity": "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==", "requires": { "@cspotcode/source-map-support": "^0.8.0", "@tsconfig/node10": "^1.0.7", @@ -28075,10 +32483,14 @@ } }, "ts-pattern": { - "version": "4.3.0" + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ts-pattern/-/ts-pattern-4.3.0.tgz", + "integrity": "sha512-pefrkcd4lmIVR0LA49Imjf9DYLK8vtWhqBPA3Ya1ir8xCW0O2yjL9dsCVvI7pCodLC5q7smNpEtDR2yVulQxOg==" }, "tsconfig": { "version": "7.0.0", + "resolved": "https://registry.npmjs.org/tsconfig/-/tsconfig-7.0.0.tgz", + "integrity": "sha512-vZXmzPrL+EmC4T/4rVlT2jNVMWCi/O4DIiSj3UHg1OE5kCKbk4mfrXc6dZksLgRM/TZlKnousKH9bbTazUWRRw==", "dev": true, "requires": { "@types/strip-bom": "^3.0.0", @@ -28089,6 +32501,8 @@ "dependencies": { "strip-json-comments": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", "dev": true } } @@ -28140,6 +32554,8 @@ }, "bundle-require": { "version": "4.0.1", + "resolved": "https://registry.npmjs.org/bundle-require/-/bundle-require-4.0.1.tgz", + "integrity": "sha512-9NQkRHlNdNpDBGmLpngF3EFDcwodhMUuLz9PaWYciVcQF9SE4LFjM2DB/xV1Li5JiuDMv7ZUWuC3rGbqR0MAXQ==", "dev": true, "requires": { "load-tsconfig": "^0.2.3" @@ -28175,6 +32591,8 @@ }, "execa": { "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", "dev": true, "requires": { "cross-spawn": "^7.0.3", @@ -28190,10 +32608,14 @@ }, "human-signals": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", "dev": true }, "source-map": { "version": "0.8.0-beta.0", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.8.0-beta.0.tgz", + "integrity": "sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==", "dev": true, "requires": { "whatwg-url": "^7.0.0" @@ -28201,6 +32623,8 @@ }, "tr46": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", + "integrity": "sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==", "dev": true, "requires": { "punycode": "^2.1.0" @@ -28208,10 +32632,14 @@ }, "webidl-conversions": { "version": "4.0.2", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", + "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", "dev": true }, "whatwg-url": { "version": "7.1.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", + "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", "dev": true, "requires": { "lodash.sortby": "^4.7.0", @@ -28223,12 +32651,16 @@ }, "tsutils": { "version": "3.21.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", "requires": { "tslib": "^1.8.1" }, "dependencies": { "tslib": { - "version": "1.14.1" + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" } } }, @@ -28297,7 +32729,9 @@ "optional": true }, "tv4": { - "version": "1.3.0" + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/tv4/-/tv4-1.3.0.tgz", + "integrity": "sha512-afizzfpJgvPr+eDkREK4MxJ/+r8nEEHcmitwgnPUqpaP+FpwQyadnxNoSACbgc/b1LsZYtODGoPiFxQrgJgjvw==" }, "tweetnacl": { "version": "0.14.5", @@ -28306,33 +32740,47 @@ }, "type-detect": { "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", "dev": true }, "type-fest": { "version": "2.19.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", + "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", "dev": true }, "typedarray": { "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==", "dev": true }, "typedarray-to-buffer": { "version": "3.1.5", + "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", + "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", "dev": true, "requires": { "is-typedarray": "^1.0.0" } }, "typescript": { - "version": "4.9.4" + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", + "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==" }, "uglify-js": { "version": "3.17.4", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.17.4.tgz", + "integrity": "sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g==", "dev": true, "optional": true }, "unbox-primitive": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", + "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", "requires": { "call-bind": "^1.0.2", "has-bigints": "^1.0.2", @@ -28341,7 +32789,9 @@ } }, "unc-path-regex": { - "version": "0.1.2" + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz", + "integrity": "sha512-eXL4nmJT7oCpkZsHZUOJo8hcX3GbsiDOa0Qu9F646fi8dT3XuSVopVqAcEiVzSKKH7UoDti23wNX3qGFxcW5Qg==" }, "unicode-canonical-property-names-ecmascript": { "version": "2.0.0", @@ -28369,6 +32819,8 @@ }, "unique-string": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-3.0.0.tgz", + "integrity": "sha512-VGXBUVwxKMBUznyffQweQABPRRW1vHZAbadFZud4pLFAqRGvv/96vafgjWFqzourzr8YonlQiPgH0YCJfawoGQ==", "dev": true, "requires": { "crypto-random-string": "^4.0.0" @@ -28376,16 +32828,24 @@ }, "universal-user-agent": { "version": "6.0.0", + "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.0.tgz", + "integrity": "sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w==", "dev": true }, "universalify": { - "version": "2.0.0" + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==" }, "untildify": { - "version": "4.0.0" + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz", + "integrity": "sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==" }, "update-browserslist-db": { "version": "1.0.11", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz", + "integrity": "sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==", "dev": true, "requires": { "escalade": "^3.1.1", @@ -28394,6 +32854,8 @@ }, "update-notifier": { "version": "6.0.2", + "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-6.0.2.tgz", + "integrity": "sha512-EDxhTEVPZZRLWYcJ4ZXjGFN0oP7qYvbXWzEgRm/Yql4dHX5wDbvh89YHP6PK1lzZJYrMtXUuZZz8XGK+U6U1og==", "dev": true, "requires": { "boxen": "^7.0.0", @@ -28420,12 +32882,16 @@ }, "uri-js": { "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", "requires": { "punycode": "^2.1.0" } }, "url-join": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/url-join/-/url-join-5.0.0.tgz", + "integrity": "sha512-n2huDr9h9yzd6exQVnH/jU5mr+Pfx08LRXXZhkLLetAMESRj+anQsTAh940iMrIetKAmry9coFuZQ2jY8/p3WA==", "dev": true }, "url-parse": { @@ -28439,6 +32905,8 @@ }, "util-deprecate": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", "dev": true }, "utility-types": { @@ -28446,16 +32914,22 @@ "dev": true }, "uuid": { - "version": "8.3.2" + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==" }, "v8-compile-cache": { "version": "2.3.0" }, "v8-compile-cache-lib": { - "version": "3.0.1" + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", + "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==" }, "v8-to-istanbul": { - "version": "9.0.1", + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.1.0.tgz", + "integrity": "sha512-6z3GW9x8G1gd+JIIgQQQxXuiJtCXeAjp6RaPEPLv62mH3iPHPxV6W3robxtCzNErRo6ZwTmzWhsbNvjyEBKzKA==", "dev": true, "requires": { "@jridgewell/trace-mapping": "^0.3.12", @@ -28465,6 +32939,8 @@ }, "validate-npm-package-license": { "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", "dev": true, "requires": { "spdx-correct": "^3.0.0", @@ -28504,6 +32980,8 @@ }, "walker": { "version": "1.0.8", + "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", + "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", "dev": true, "requires": { "makeerror": "1.0.12" @@ -28520,6 +32998,8 @@ }, "wcwidth": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", + "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", "dev": true, "requires": { "defaults": "^1.0.3" @@ -28576,6 +33056,8 @@ }, "@next/eslint-plugin-next": { "version": "12.3.4", + "resolved": "https://registry.npmjs.org/@next/eslint-plugin-next/-/eslint-plugin-next-12.3.4.tgz", + "integrity": "sha512-BFwj8ykJY+zc1/jWANsDprDIu2MgwPOIKxNVnrKvPs+f5TPegrVnem8uScND+1veT4B7F6VeqgaNLFW1Hzl9Og==", "dev": true, "requires": { "glob": "7.1.7" @@ -28583,6 +33065,8 @@ }, "@types/node": { "version": "17.0.45", + "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.45.tgz", + "integrity": "sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==", "dev": true }, "cypress": { @@ -28636,9 +33120,9 @@ }, "dependencies": { "@types/node": { - "version": "16.18.46", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.46.tgz", - "integrity": "sha512-Mnq3O9Xz52exs3mlxMcQuA7/9VFe/dXcrgAyfjLkABIqxXKOgBRjyazTxUbjsxDa4BP7hhPliyjVTP9RDP14xg==" + "version": "16.18.52", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.52.tgz", + "integrity": "sha512-sm2aph6cRSsTMFYFgI+RpPLunXO9ClJkpizUVdT7KmGeyfQ14xnjTMT/f3MHcfKqevXqGT6BgVFzW8wcEoDUtA==" }, "semver": { "version": "7.5.4", @@ -28663,6 +33147,8 @@ "dependencies": { "eslint-config-next": { "version": "12.3.4", + "resolved": "https://registry.npmjs.org/eslint-config-next/-/eslint-config-next-12.3.4.tgz", + "integrity": "sha512-WuT3gvgi7Bwz00AOmKGhOeqnyA5P29Cdyr0iVjLyfDbk+FANQKcOjFUTZIdyYfe5Tq1x4TGcmoe4CwctGvFjHQ==", "dev": true, "requires": { "@next/eslint-plugin-next": "12.3.4", @@ -28701,6 +33187,8 @@ }, "eslint-plugin-react": { "version": "7.28.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.28.0.tgz", + "integrity": "sha512-IOlFIRHzWfEQQKcAD4iyYDndHwTQiCMcJVJjxempf203jnNLUnW34AXLrV33+nEXoifJE2ZEGmcjKPL8957eSw==", "dev": true, "requires": { "array-includes": "^3.1.4", @@ -28733,6 +33221,8 @@ }, "glob": { "version": "7.1.7", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", + "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", "dev": true, "requires": { "fs.realpath": "^1.0.0", @@ -28745,6 +33235,8 @@ }, "resolve": { "version": "2.0.0-next.4", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.4.tgz", + "integrity": "sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ==", "dev": true, "requires": { "is-core-module": "^2.9.0", @@ -28760,10 +33252,14 @@ }, "web-streams-polyfill": { "version": "3.2.1", + "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.2.1.tgz", + "integrity": "sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q==", "dev": true }, "webidl-conversions": { "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", "dev": true }, "webpack": { @@ -28816,6 +33312,8 @@ }, "whatwg-url": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", "dev": true, "requires": { "tr46": "~0.0.3", @@ -28824,12 +33322,16 @@ }, "which": { "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", "requires": { "isexe": "^2.0.0" } }, "which-boxed-primitive": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", "requires": { "is-bigint": "^1.0.1", "is-boolean-object": "^1.1.0", @@ -28844,6 +33346,8 @@ }, "widest-line": { "version": "4.0.1", + "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-4.0.1.tgz", + "integrity": "sha512-o0cyEG0e8GPzT4iGHphIOh0cJOV8fivsXxddQasHPHfoZf1ZexrfeA21w2NaEN1RHE+fXlfISmOE8R9N3u3Qig==", "dev": true, "requires": { "string-width": "^5.0.1" @@ -28851,10 +33355,14 @@ "dependencies": { "ansi-regex": { "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", "dev": true }, "string-width": { "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", "dev": true, "requires": { "eastasianwidth": "^0.2.0", @@ -28873,6 +33381,8 @@ }, "wildcard-match": { "version": "5.1.2", + "resolved": "https://registry.npmjs.org/wildcard-match/-/wildcard-match-5.1.2.tgz", + "integrity": "sha512-qNXwI591Z88c8bWxp+yjV60Ch4F8Riawe3iGxbzquhy8Xs9m+0+SLFBGb/0yCTIDElawtaImC37fYZ+dr32KqQ==", "dev": true }, "windows-release": { @@ -28884,6 +33394,8 @@ "dependencies": { "execa": { "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", "dev": true, "requires": { "cross-spawn": "^7.0.3", @@ -28899,6 +33411,8 @@ }, "human-signals": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", "dev": true } } @@ -28908,10 +33422,14 @@ }, "wordwrap": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==", "dev": true }, "wrap-ansi": { "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", "requires": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", @@ -28919,10 +33437,14 @@ } }, "wrappy": { - "version": "1.0.2" + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" }, "write-file-atomic": { "version": "3.0.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", + "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", "dev": true, "requires": { "imurmurhash": "^0.1.4", @@ -28933,14 +33455,20 @@ }, "ws": { "version": "8.13.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.13.0.tgz", + "integrity": "sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==", "requires": {} }, "xdg-basedir": { "version": "5.1.0", + "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-5.1.0.tgz", + "integrity": "sha512-GCPAHLvrIH13+c0SuacwvRYj2SxJXQ4kaVTT5xgL3kPrz56XxkF21IGhjSE1+W0aw7gpBWRGXLCPnPby6lSpmQ==", "dev": true }, "xtend": { "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", "dev": true }, "xxhash-wasm": { @@ -28949,10 +33477,14 @@ }, "y18n": { "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", "dev": true }, "yallist": { - "version": "4.0.0" + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" }, "yaml": { "version": "2.3.1", @@ -28973,26 +33505,36 @@ "dependencies": { "yargs-parser": { "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", "dev": true } } }, "yargs-parser": { "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", "dev": true }, "yauzl": { "version": "2.10.0", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", "requires": { "buffer-crc32": "~0.2.3", "fd-slicer": "~1.1.0" } }, "yn": { - "version": "3.1.1" + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", + "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==" }, "yocto-queue": { "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", "dev": true } } diff --git a/package.json b/package.json index 6a1d42a..04bcc79 100644 --- a/package.json +++ b/package.json @@ -17,11 +17,14 @@ "test": "FORCE_COLOR=1 turbo run test", "test:watch": "turbo run test:watch", "format": "prettier --write \"**/*.{ts,tsx,md}\"", - "format-check": "prettier --check \"**/*.{ts,tsx,md}\"" + "format-check": "prettier --check \"**/*.{ts,tsx,md}\"", + "prepare": "husky install" }, "devDependencies": { "eslint-config-custom": "latest", + "husky": "^8.0.3", "prettier": "latest", + "pretty-quick": "^3.1.3", "turbo": "^1.10.13" }, "engines": { @@ -29,5 +32,11 @@ }, "resolutions": { "debug": "^4.3.4" + }, + "prettier": { + "trailingComma": "es5", + "tabWidth": 2, + "semi": true, + "singleQuote": false } } diff --git a/packages/cypress-cloud/bin/cli.ts b/packages/cypress-cloud/bin/cli.ts index 3c2f86c..edd9303 100755 --- a/packages/cypress-cloud/bin/cli.ts +++ b/packages/cypress-cloud/bin/cli.ts @@ -15,10 +15,12 @@ main() if (!result) { process.exit(1); } + + // @ts-ignore: running bare cypress in offline mode breaks the types if (result.status === "failed") { process.exit(1); } - + // @ts-ignore: running bare cypress in offline mode breaks the types const overallFailed = result.totalFailed + result.totalSkipped; if (overallFailed > 0) { process.exit(overallFailed); diff --git a/packages/cypress-cloud/bin/lib/@commander-js/extra-typings/README.md b/packages/cypress-cloud/bin/lib/@commander-js/extra-typings/README.md index ad86121..f59885f 100644 --- a/packages/cypress-cloud/bin/lib/@commander-js/extra-typings/README.md +++ b/packages/cypress-cloud/bin/lib/@commander-js/extra-typings/README.md @@ -33,11 +33,12 @@ Credit: this builds on work by @PaperStrike in ') - .option('--double-sided') +program + .command("print") + .argument("") + .option("--double-sided") .action((targetFile, options) => { // command-arguments and options are fully typed }); @@ -46,19 +47,18 @@ program.command('print') For working with a single command without an action handler, the configuration need to be done at the same time as the variable is declared. ```js -import { Command } from '@commander-js/extra-typings'; +import { Command } from "@commander-js/extra-typings"; // broken pattern const program = new Command(); // program type does not include options or arguments -program.option('-d, --debug'); // adding option does not change type of program +program.option("-d, --debug"); // adding option does not change type of program const options = program.opts(); // dumb type ``` ```js -import { Command } from '@commander-js/extra-typings'; +import { Command } from "@commander-js/extra-typings"; // working pattern -const program = new Command() - .option('-d, --debug'); // program type includes chained options and arguments +const program = new Command().option("-d, --debug"); // program type includes chained options and arguments const options = program.opts(); // smart type ``` diff --git a/packages/cypress-cloud/bin/lib/@commander-js/extra-typings/index.d.ts b/packages/cypress-cloud/bin/lib/@commander-js/extra-typings/index.d.ts index 0d7b487..05b6bda 100644 --- a/packages/cypress-cloud/bin/lib/@commander-js/extra-typings/index.d.ts +++ b/packages/cypress-cloud/bin/lib/@commander-js/extra-typings/index.d.ts @@ -1,4 +1,3 @@ - type TrimRight = S extends `${infer R} ` ? TrimRight : S; type TrimLeft = S extends ` ${infer R}` ? TrimLeft : S; type Trim = TrimLeft>; @@ -20,152 +19,299 @@ type Resolve = T extends infer O ? { [K in keyof O]: O[K] } : never; // - https://github.com/microsoft/TypeScript/issues/29729 // - https://github.com/sindresorhus/type-fest/blob/main/source/literal-union.d.ts // - https://github.com/sindresorhus/type-fest/blob/main/source/primitive.d.ts -type LiteralUnion = LiteralType | (BaseType & Record); +type LiteralUnion = + | LiteralType + | (BaseType & Record); // Side note: not trying to represent arrays as non-empty, keep it simple. // https://stackoverflow.com/a/56006703/1082434 -type InferVariadic = - S extends `${string}...` - ? ArgT[] - : ArgT; - -type InferArgumentType = - [CoerceT] extends [undefined] - ? InferVariadic | DefaultT - : ([ChoicesT] extends [undefined] - ? CoerceT | DefaultT - : CoerceT | DefaultT | ChoicesT - ) +type InferVariadic = S extends `${string}...` + ? ArgT[] + : ArgT; +type InferArgumentType = [ + CoerceT, +] extends [undefined] + ? + | InferVariadic + | DefaultT + : [ChoicesT] extends [undefined] + ? CoerceT | DefaultT + : CoerceT | DefaultT | ChoicesT; // Special handling for optional variadic argument, won't be undefined as implementation returns []. -type InferArgumentOptionalType = - Value extends `${string}...` - ? InferArgumentType - : InferArgumentType +type InferArgumentOptionalType< + Value extends string, + DefaultT, + CoerceT, + ChoicesT, +> = Value extends `${string}...` + ? InferArgumentType< + Value, + [DefaultT] extends [undefined] ? never : DefaultT, + CoerceT, + ChoicesT + > + : InferArgumentType; // ArgRequired comes from .argRequired()/.argOptional(), and ArgRequiredFromUsage is implied by usage /[optional] -type ResolveRequired = - ArgRequired extends undefined - ? ArgRequiredFromUsage - : ArgRequired; +type ResolveRequired< + ArgRequired extends boolean | undefined, + ArgRequiredFromUsage extends boolean, +> = ArgRequired extends undefined ? ArgRequiredFromUsage : ArgRequired; -type InferArgumentTypeResolvedRequired = - ArgRequired extends true - ? InferArgumentType - : InferArgumentOptionalType; +type InferArgumentTypeResolvedRequired< + Value extends string, + DefaultT, + CoerceT, + ArgRequired extends boolean, + ChoicesT, +> = ArgRequired extends true + ? InferArgumentType + : InferArgumentOptionalType; // Resolve whether argument required, and strip []/<> from around value. -type InferArgument = - S extends `<${infer Value}>` - ? InferArgumentTypeResolvedRequired, ChoicesT> - : S extends `[${infer Value}]` - ? InferArgumentTypeResolvedRequired, ChoicesT> - : InferArgumentTypeResolvedRequired, ChoicesT>; // the implementation fallback is treat as - -type InferArguments = - S extends `${infer First} ${infer Rest}` - ? [InferArgument, ...InferArguments>] - : [InferArgument]; +type InferArgument< + S extends string, + DefaultT = undefined, + CoerceT = undefined, + ArgRequired extends boolean | undefined = undefined, + ChoicesT = undefined, +> = S extends `<${infer Value}>` + ? InferArgumentTypeResolvedRequired< + Value, + DefaultT, + CoerceT, + ResolveRequired, + ChoicesT + > + : S extends `[${infer Value}]` + ? InferArgumentTypeResolvedRequired< + Value, + DefaultT, + CoerceT, + ResolveRequired, + ChoicesT + > + : InferArgumentTypeResolvedRequired< + S, + DefaultT, + CoerceT, + ResolveRequired, + ChoicesT + >; // the implementation fallback is treat as + +type InferArguments = S extends `${infer First} ${infer Rest}` + ? [InferArgument, ...InferArguments>] + : [InferArgument]; type InferCommmandArguments = - S extends `${string} ${infer Args}` - ? InferArguments> - : []; + S extends `${string} ${infer Args}` ? InferArguments> : []; type FlagsToFlag = - Flags extends `${string},${infer LongFlag}` - ? TrimLeft - : Flags extends `${string}|${infer LongFlag}` - ? TrimLeft - : Flags extends `${string} ${infer LongFlag}` - ? TrimLeft - : Flags; - -type ConvertFlagToName = - Flag extends `--no-${infer Name}` - ? CamelCase - : Flag extends `--${infer Name}` - ? CamelCase - : Flag extends `-${infer Name}` - ? CamelCase - : never; - -type CombineOptions = - keyof O extends keyof Options - ? { [K in keyof Options]: K extends keyof O ? Options[K] | O[keyof O] : Options[K] } - : Options & O; - -type IsAlwaysDefined = - Mandatory extends true - ? true - : [undefined] extends [DefaulT] - ? false - : true; + Flags extends `${string},${infer LongFlag}` + ? TrimLeft + : Flags extends `${string}|${infer LongFlag}` + ? TrimLeft + : Flags extends `${string} ${infer LongFlag}` + ? TrimLeft + : Flags; + +type ConvertFlagToName = Flag extends `--no-${infer Name}` + ? CamelCase + : Flag extends `--${infer Name}` + ? CamelCase + : Flag extends `-${infer Name}` + ? CamelCase + : never; + +type CombineOptions = keyof O extends keyof Options + ? { + [K in keyof Options]: K extends keyof O + ? Options[K] | O[keyof O] + : Options[K]; + } + : Options & O; + +type IsAlwaysDefined< + DefaulT, + Mandatory extends boolean, +> = Mandatory extends true + ? true + : [undefined] extends [DefaulT] + ? false + : true; // Modify PresetT to take into account negated. -type NegatePresetType = - Flag extends `--no-${string}` - ? undefined extends PresetT ? false : PresetT - : undefined extends PresetT ? true : PresetT; - +type NegatePresetType< + Flag extends string, + PresetT, +> = Flag extends `--no-${string}` + ? undefined extends PresetT + ? false + : PresetT + : undefined extends PresetT + ? true + : PresetT; + // Modify DefaultT to take into account negated. -type NegateDefaultType = - Flag extends `--no-${string}` - ? [undefined] extends [DefaultT] ? true : DefaultT - : [undefined] extends [DefaultT] ? never : DefaultT; // don't add undefined, will make property optional later - +type NegateDefaultType< + Flag extends string, + DefaultT, +> = Flag extends `--no-${string}` + ? [undefined] extends [DefaultT] + ? true + : DefaultT + : [undefined] extends [DefaultT] + ? never + : DefaultT; // don't add undefined, will make property optional later + // Modify ValueT to take into account coerce function. -type CoerceValueType = - [ValueT] extends [never] - ? never - : [CoerceT] extends [undefined] - ? ValueT - : CoerceT; - +type CoerceValueType = [ValueT] extends [never] + ? never + : [CoerceT] extends [undefined] + ? ValueT + : CoerceT; + // Modify PresetT to take into account coerce function. -type CoercePresetType = - [PresetT] extends [never] - ? never - : [CoerceT] extends [undefined] - ? PresetT - : undefined extends PresetT ? undefined : CoerceT; +type CoercePresetType = [PresetT] extends [never] + ? never + : [CoerceT] extends [undefined] + ? PresetT + : undefined extends PresetT + ? undefined + : CoerceT; -type BuildOptionProperty = - AlwaysDefined extends true - ? { [K in Name]: FullValueT } - : { [K in Name]?: FullValueT }; +type BuildOptionProperty< + Name extends string, + FullValueT, + AlwaysDefined extends boolean, +> = AlwaysDefined extends true + ? { [K in Name]: FullValueT } + : { [K in Name]?: FullValueT }; -type InferOptionsCombine = - Resolve>>; +type InferOptionsCombine< + Options, + Name extends string, + FullValueT, + AlwaysDefined extends boolean, +> = Resolve< + CombineOptions> +>; // Combine the possible types -type InferOptionsNegateCombo = - Flag extends `--no-${string}` - ? Name extends keyof Options - ? InferOptionsCombine // combo does not set default, leave that to positive option - : InferOptionsCombine // lone negated option sets default - : InferOptionsCombine; +type InferOptionsNegateCombo< + Options, + Flag extends string, + Name extends string, + ValueT, + PresetT, + DefaultT, + AlwaysDefined extends boolean, +> = Flag extends `--no-${string}` + ? Name extends keyof Options + ? InferOptionsCombine // combo does not set default, leave that to positive option + : InferOptionsCombine // lone negated option sets default + : InferOptionsCombine< + Options, + Name, + ValueT | PresetT | DefaultT, + AlwaysDefined + >; // Recalc values taking into account negated option. // Fill in appropriate PresetT value if undefined. -type InferOptionTypes = - InferOptionsNegateCombo, - CoerceValueType : InferVariadic>, - NegatePresetType>, - NegateDefaultType, - IsAlwaysDefined>; +type InferOptionTypes< + Options, + Flag extends string, + Value extends string, + ValueT, + PresetT, + DefaultT, + CoerceT, + Mandatory extends boolean, + ChoicesT, +> = InferOptionsNegateCombo< + Options, + Flag, + ConvertFlagToName, + CoerceValueType< + CoerceT, + [ChoicesT] extends [undefined] + ? InferVariadic + : InferVariadic + >, + NegatePresetType>, + NegateDefaultType, + IsAlwaysDefined +>; -type InferOptionsFlag = - InferOptionTypes>, Trim, ValueT, PresetT, DefaultT, CoerceT, Mandatory, ChoicesT>; +type InferOptionsFlag< + Options, + Flags extends string, + Value extends string, + ValueT, + PresetT, + DefaultT, + CoerceT, + Mandatory extends boolean, + ChoicesT, +> = InferOptionTypes< + Options, + FlagsToFlag>, + Trim, + ValueT, + PresetT, + DefaultT, + CoerceT, + Mandatory, + ChoicesT +>; // Split up Usage into Flags and Value -type InferOptions = - Usage extends `${infer Flags} <${infer Value}>` - ? InferOptionsFlag - : Usage extends `${infer Flags} [${infer Value}]` - ? InferOptionsFlag - : InferOptionsFlag; +type InferOptions< + Options, + Usage extends string, + DefaultT, + CoerceT, + Mandatory extends boolean, + PresetT = undefined, + ChoicesT = undefined, +> = Usage extends `${infer Flags} <${infer Value}>` + ? InferOptionsFlag< + Options, + Flags, + Value, + string, + never, + DefaultT, + CoerceT, + Mandatory, + ChoicesT + > + : Usage extends `${infer Flags} [${infer Value}]` + ? InferOptionsFlag< + Options, + Flags, + Value, + string, + PresetT, + DefaultT, + CoerceT, + Mandatory, + ChoicesT + > + : InferOptionsFlag< + Options, + Usage, + "", + never, + PresetT, + DefaultT, + CoerceT, + Mandatory, + ChoicesT + >; export type CommandUnknownOpts = Command; @@ -176,911 +322,1055 @@ export type CommandUnknownOpts = Command; /* eslint-disable @typescript-eslint/no-explicit-any */ export class CommanderError extends Error { - code: string; - exitCode: number; - message: string; - nestedError?: string; - - /** - * Constructs the CommanderError class - * @param exitCode - suggested exit code which could be used with process.exit - * @param code - an id string representing the error - * @param message - human-readable description of the error - * @constructor - */ - constructor(exitCode: number, code: string, message: string); - } - - export class InvalidArgumentError extends CommanderError { - /** - * Constructs the InvalidArgumentError class - * @param message - explanation of why argument is invalid - * @constructor - */ - constructor(message: string); - } - export { InvalidArgumentError as InvalidOptionArgumentError }; // deprecated old name - - export interface ErrorOptions { // optional parameter for error() - /** an id string representing the error */ - code?: string; - /** suggested exit code which could be used with process.exit */ - exitCode?: number; - } - - export class Argument { - description: string; - required: boolean; - variadic: boolean; - - /** - * Initialize a new command argument with the given name and description. - * The default is that the argument is required, and you can explicitly - * indicate this with <> around the name. Put [] around the name for an optional argument. - */ - constructor(arg: Usage, description?: string); - - /** - * Return argument name. - */ - name(): string; - - /** - * Set the default value, and optionally supply the description to be displayed in the help. - */ - default(value: T, description?: string): Argument; - - /** - * Set the custom handler for processing CLI command arguments into argument values. - */ - argParser(fn: (value: string, previous: T) => T): Argument; // setting ChoicesT to undefined because argParser overwrites choices - - /** - * Only allow argument value to be one of choices. - */ - choices(values: T): Argument; // setting CoerceT to undefined because choices overrides argParser - - /** - * Make argument required. - */ - argRequired(): Argument; - - /** - * Make argument optional. - */ - argOptional(): Argument; - } - - export class Option { - flags: string; - description: string; - - required: boolean; // A value must be supplied when the option is specified. - optional: boolean; // A value is optional when the option is specified. - variadic: boolean; - mandatory: boolean; // The option must have a value after parsing, which usually means it must be specified on command line. - optionFlags: string; - short?: string; - long?: string; - negate: boolean; - defaultValue?: any; - defaultValueDescription?: string; - parseArg?: (value: string, previous: T) => T; - hidden: boolean; - argChoices?: string[]; - - constructor(flags: Usage, description?: string); - - /** - * Set the default value, and optionally supply the description to be displayed in the help. - */ - default(value: T, description?: string): Option; - - /** - * Preset to use when option used without option-argument, especially optional but also boolean and negated. - * The custom processing (parseArg) is called. - * - * @example - * ```ts - * new Option('--color').default('GREYSCALE').preset('RGB'); - * new Option('--donate [amount]').preset('20').argParser(parseFloat); - * ``` - */ - preset(arg: T): Option; - - /** - * Add option name(s) that conflict with this option. - * An error will be displayed if conflicting options are found during parsing. - * - * @example - * ```ts - * new Option('--rgb').conflicts('cmyk'); - * new Option('--js').conflicts(['ts', 'jsx']); - * ``` - */ - conflicts(names: string | string[]): this; - - /** - * Specify implied option values for when this option is set and the implied options are not. - * - * The custom processing (parseArg) is not called on the implied values. - * - * @example - * program - * .addOption(new Option('--log', 'write logging information to file')) - * .addOption(new Option('--trace', 'log extra details').implies({ log: 'trace.txt' })); - */ - implies(optionValues: OptionValues): this; - - /** - * Set environment variable to check for option value. - * - * An environment variables is only used if when processed the current option value is - * undefined, or the source of the current value is 'default' or 'config' or 'env'. - */ - env(name: string): this; - - /** - * Calculate the full description, including defaultValue etc. - */ - fullDescription(): string; - - /** - * Set the custom handler for processing CLI option arguments into option values. - */ - argParser(fn: (value: string, previous: T) => T): Option; // setting ChoicesT to undefined because argParser overrides choices - - /** - * Whether the option is mandatory and must have a value after parsing. - */ - makeOptionMandatory(mandatory?: M): Option; - - /** - * Hide option in help. - */ - hideHelp(hide?: boolean): this; - - /** - * Only allow option value to be one of choices. - */ - choices(values: T): Option; // setting CoerceT to undefined becuase choices overrides argParser - - /** - * Return option name. - */ - name(): string; - - /** - * Return option name, in a camelcase format that can be used - * as a object attribute key. - */ - attributeName(): string; - - /** - * Return whether a boolean option. - * - * Options are one of boolean, negated, required argument, or optional argument. - */ - isBoolean(): boolean; - } - - export class Help { - /** output helpWidth, long lines are wrapped to fit */ - helpWidth?: number; - sortSubcommands: boolean; - sortOptions: boolean; - showGlobalOptions: boolean; - - constructor(); - - /** Get the command term to show in the list of subcommands. */ - subcommandTerm(cmd: CommandUnknownOpts): string; - /** Get the command summary to show in the list of subcommands. */ - subcommandDescription(cmd: CommandUnknownOpts): string; - /** Get the option term to show in the list of options. */ - optionTerm(option: Option): string; - /** Get the option description to show in the list of options. */ - optionDescription(option: Option): string; - /** Get the argument term to show in the list of arguments. */ - argumentTerm(argument: Argument): string; - /** Get the argument description to show in the list of arguments. */ - argumentDescription(argument: Argument): string; - - /** Get the command usage to be displayed at the top of the built-in help. */ - commandUsage(cmd: CommandUnknownOpts): string; - /** Get the description for the command. */ - commandDescription(cmd: CommandUnknownOpts): string; - - /** Get an array of the visible subcommands. Includes a placeholder for the implicit help command, if there is one. */ - visibleCommands(cmd: CommandUnknownOpts): CommandUnknownOpts[]; - /** Get an array of the visible options. Includes a placeholder for the implicit help option, if there is one. */ - visibleOptions(cmd: CommandUnknownOpts): Option[]; - /** Get an array of the visible global options. (Not including help.) */ - visibleGlobalOptions(cmd: CommandUnknownOpts): Option[]; - /** Get an array of the arguments which have descriptions. */ - visibleArguments(cmd: CommandUnknownOpts): Argument[]; - - /** Get the longest command term length. */ - longestSubcommandTermLength(cmd: CommandUnknownOpts, helper: Help): number; - /** Get the longest option term length. */ - longestOptionTermLength(cmd: CommandUnknownOpts, helper: Help): number; - /** Get the longest global option term length. */ - longestGlobalOptionTermLength(cmd: CommandUnknownOpts, helper: Help): number; - /** Get the longest argument term length. */ - longestArgumentTermLength(cmd: CommandUnknownOpts, helper: Help): number; - /** Calculate the pad width from the maximum term length. */ - padWidth(cmd: CommandUnknownOpts, helper: Help): number; - - /** - * Wrap the given string to width characters per line, with lines after the first indented. - * Do not wrap if insufficient room for wrapping (minColumnWidth), or string is manually formatted. - */ - wrap(str: string, width: number, indent: number, minColumnWidth?: number): string; - - /** Generate the built-in help text. */ - formatHelp(cmd: CommandUnknownOpts, helper: Help): string; - } - export type HelpConfiguration = Partial; - - export interface ParseOptions { - from: 'node' | 'electron' | 'user'; - } - export interface HelpContext { // optional parameter for .help() and .outputHelp() - error: boolean; - } - export interface AddHelpTextContext { // passed to text function used with .addHelpText() - error: boolean; - command: Command; - } - export interface OutputConfiguration { - writeOut?(str: string): void; - writeErr?(str: string): void; - getOutHelpWidth?(): number; - getErrHelpWidth?(): number; - outputError?(str: string, write: (str: string) => void): void; - - } - - export type AddHelpTextPosition = 'beforeAll' | 'before' | 'after' | 'afterAll'; - export type HookEvent = 'preSubcommand' | 'preAction' | 'postAction'; - // The source is a string so author can define their own too. - export type OptionValueSource = LiteralUnion<'default' | 'config' | 'env' | 'cli' | 'implied', string> | undefined; - - export interface OptionValues { - [key: string]: unknown; - } - - export class Command { - args: string[]; - processedArgs: Args; - commands: CommandUnknownOpts[]; - parent: CommandUnknownOpts | null; - - constructor(name?: string); - - /** - * Set the program version to `str`. - * - * This method auto-registers the "-V, --version" flag - * which will print the version number when passed. - * - * You can optionally supply the flags and description to override the defaults. - */ - version(str: string, flags?: string, description?: string): this; - - /** - * Define a command, implemented using an action handler. - * - * @remarks - * The command description is supplied using `.description`, not as a parameter to `.command`. - * - * @example - * ```ts - * program - * .command('clone [destination]') - * .description('clone a repository into a newly created directory') - * .action((source, destination) => { - * console.log('clone command called'); - * }); - * ``` - * - * @param nameAndArgs - command name and arguments, args are `` or `[optional]` and last may also be `variadic...` - * @param opts - configuration options - * @returns new command - */ - command(nameAndArgs: Usage, opts?: CommandOptions): Command<[...InferCommmandArguments]>; - /** - * Define a command, implemented in a separate executable file. - * - * @remarks - * The command description is supplied as the second parameter to `.command`. - * - * @example - * ```ts - * program - * .command('start ', 'start named service') - * .command('stop [service]', 'stop named service, or all if no name supplied'); - * ``` - * - * @param nameAndArgs - command name and arguments, args are `` or `[optional]` and last may also be `variadic...` - * @param description - description of executable command - * @param opts - configuration options - * @returns `this` command for chaining - */ - command(nameAndArgs: string, description: string, opts?: ExecutableCommandOptions): this; - - /** - * Factory routine to create a new unattached command. - * - * See .command() for creating an attached subcommand, which uses this routine to - * create the command. You can override createCommand to customise subcommands. - */ - createCommand(name?: string): Command; - - /** - * Add a prepared subcommand. - * - * See .command() for creating an attached subcommand which inherits settings from its parent. - * - * @returns `this` command for chaining - */ - addCommand(cmd: CommandUnknownOpts, opts?: CommandOptions): this; - - /** - * Factory routine to create a new unattached argument. - * - * See .argument() for creating an attached argument, which uses this routine to - * create the argument. You can override createArgument to return a custom argument. - */ - createArgument(name: Usage, description?: string): Argument; - - /** - * Define argument syntax for command. - * - * The default is that the argument is required, and you can explicitly - * indicate this with <> around the name. Put [] around the name for an optional argument. - * - * @example - * ``` - * program.argument(''); - * program.argument('[output-file]'); - * ``` - * - * @returns `this` command for chaining - */ - argument( - flags: S, description: string, fn: (value: string, previous: T) => T): Command<[...Args, InferArgument]>; - argument( - flags: S, description: string, fn: (value: string, previous: T) => T, defaultValue: T): Command<[...Args, InferArgument]>; - argument( - usage: S, description?: string): Command<[...Args, InferArgument]>; - argument( - usage: S, description: string, defaultValue: DefaultT): Command<[...Args, InferArgument]>; - - /** - * Define argument syntax for command, adding a prepared argument. - * - * @returns `this` command for chaining - */ - addArgument( - arg: Argument): Command<[...Args, InferArgument]>; - - - /** - * Define argument syntax for command, adding multiple at once (without descriptions). - * - * See also .argument(). - * - * @example - * ``` - * program.arguments(' [env]'); - * ``` - * - * @returns `this` command for chaining - */ - arguments(args: Names): Command<[...Args, ...InferArguments]>; - - - /** - * Override default decision whether to add implicit help command. - * - * @example - * ``` - * addHelpCommand() // force on - * addHelpCommand(false); // force off - * addHelpCommand('help [cmd]', 'display help for [cmd]'); // force on with custom details - * ``` - * - * @returns `this` command for chaining - */ - addHelpCommand(enableOrNameAndArgs?: string | boolean, description?: string): this; - - /** - * Add hook for life cycle event. - */ - hook(event: HookEvent, listener: (thisCommand: this, actionCommand: CommandUnknownOpts) => void | Promise): this; - - /** - * Register callback to use as replacement for calling process.exit. - */ - exitOverride(callback?: (err: CommanderError) => never | void): this; - - /** - * Display error message and exit (or call exitOverride). - */ - error(message: string, errorOptions?: ErrorOptions): never; - - /** - * You can customise the help with a subclass of Help by overriding createHelp, - * or by overriding Help properties using configureHelp(). - */ - createHelp(): Help; - - /** - * You can customise the help by overriding Help properties using configureHelp(), - * or with a subclass of Help by overriding createHelp(). - */ - configureHelp(configuration: HelpConfiguration): this; - /** Get configuration */ - configureHelp(): HelpConfiguration; - - /** - * The default output goes to stdout and stderr. You can customise this for special - * applications. You can also customise the display of errors by overriding outputError. - * - * The configuration properties are all functions: - * ``` - * // functions to change where being written, stdout and stderr - * writeOut(str) - * writeErr(str) - * // matching functions to specify width for wrapping help - * getOutHelpWidth() - * getErrHelpWidth() - * // functions based on what is being written out - * outputError(str, write) // used for displaying errors, and not used for displaying help - * ``` - */ - configureOutput(configuration: OutputConfiguration): this; - /** Get configuration */ - configureOutput(): OutputConfiguration; - - /** - * Copy settings that are useful to have in common across root command and subcommands. - * - * (Used internally when adding a command using `.command()` so subcommands inherit parent settings.) - */ - copyInheritedSettings(sourceCommand: CommandUnknownOpts): this; - - /** - * Display the help or a custom message after an error occurs. - */ - showHelpAfterError(displayHelp?: boolean | string): this; - - /** - * Display suggestion of similar commands for unknown commands, or options for unknown options. - */ - showSuggestionAfterError(displaySuggestion?: boolean): this; - - /** - * Register callback `fn` for the command. - * - * @example - * ``` - * program - * .command('serve') - * .description('start service') - * .action(function() { - * // do work here - * }); - * ``` - * - * @returns `this` command for chaining - */ - action(fn: (...args: [...Args, Opts, this]) => void | Promise): this; - - /** - * Define option with `flags`, `description` and optional - * coercion `fn`. - * - * The `flags` string contains the short and/or long flags, - * separated by comma, a pipe or space. The following are all valid - * all will output this way when `--help` is used. - * - * "-p, --pepper" - * "-p|--pepper" - * "-p --pepper" - * - * @example - * ``` - * // simple boolean defaulting to false - * program.option('-p, --pepper', 'add pepper'); - * - * --pepper - * program.pepper - * // => Boolean - * - * // simple boolean defaulting to true - * program.option('-C, --no-cheese', 'remove cheese'); - * - * program.cheese - * // => true - * - * --no-cheese - * program.cheese - * // => false - * - * // required argument - * program.option('-C, --chdir ', 'change the working directory'); - * - * --chdir /tmp - * program.chdir - * // => "/tmp" - * - * // optional argument - * program.option('-c, --cheese [type]', 'add cheese [marble]'); - * ``` - * - * @returns `this` command for chaining - */ - option( - usage: S, description?: string): Command>; - option( - usage: S, description?: string, defaultValue?: DefaultT): Command>; - option( - usage: S, description: string, fn: (value: string, previous: T) => T): Command>; - option( - usage: S, description: string, fn: (value: string, previous: T) => T, defaultValue?: T): Command>; - - /** - * Define a required option, which must have a value after parsing. This usually means - * the option must be specified on the command line. (Otherwise the same as .option().) - * - * The `flags` string contains the short and/or long flags, separated by comma, a pipe or space. - */ - requiredOption( - usage: S, description?: string): Command>; - requiredOption( - usage: S, description?: string, defaultValue?: DefaultT): Command>; - requiredOption( - usage: S, description: string, fn: (value: string, previous: T) => T): Command>; - requiredOption( - usage: S, description: string, fn: (value: string, previous: T) => T, defaultValue?: D): Command>; - - /** - * Factory routine to create a new unattached option. - * - * See .option() for creating an attached option, which uses this routine to - * create the option. You can override createOption to return a custom option. - */ - - createOption(flags: Usage, description?: string): Option; - - /** - * Add a prepared Option. - * - * See .option() and .requiredOption() for creating and attaching an option in a single call. - */ - addOption( - option: Option): Command>; - - /** - * Whether to store option values as properties on command object, - * or store separately (specify false). In both cases the option values can be accessed using .opts(). - * - * @returns `this` command for chaining - */ - storeOptionsAsProperties(): this & T; - storeOptionsAsProperties(storeAsProperties: true): this & T; - storeOptionsAsProperties(storeAsProperties?: boolean): this; - - /** - * Retrieve option value. - */ - getOptionValue(key: K): Opts[K]; - getOptionValue(key: string): unknown; - - /** - * Store option value. - */ - setOptionValue(key: K, value: unknown): this; - setOptionValue(key: string, value: unknown): this; - - /** - * Store option value and where the value came from. - */ - setOptionValueWithSource(key: K, value: unknown, source: OptionValueSource): this; - setOptionValueWithSource(key: string, value: unknown, source: OptionValueSource): this; - - /** - * Get source of option value. - */ - getOptionValueSource(key: K): OptionValueSource | undefined; - getOptionValueSource(key: string): OptionValueSource | undefined; - - /** - * Get source of option value. See also .optsWithGlobals(). - */ - getOptionValueSourceWithGlobals(key: K): OptionValueSource | undefined; - getOptionValueSourceWithGlobals(key: string): OptionValueSource | undefined; - - /** - * Alter parsing of short flags with optional values. - * - * @example - * ``` - * // for `.option('-f,--flag [value]'): - * .combineFlagAndOptionalValue(true) // `-f80` is treated like `--flag=80`, this is the default behaviour - * .combineFlagAndOptionalValue(false) // `-fb` is treated like `-f -b` - * ``` - * - * @returns `this` command for chaining - */ - combineFlagAndOptionalValue(combine?: boolean): this; - - /** - * Allow unknown options on the command line. - * - * @returns `this` command for chaining - */ - allowUnknownOption(allowUnknown?: boolean): this; - - /** - * Allow excess command-arguments on the command line. Pass false to make excess arguments an error. - * - * @returns `this` command for chaining - */ - allowExcessArguments(allowExcess?: boolean): this; - - /** - * Enable positional options. Positional means global options are specified before subcommands which lets - * subcommands reuse the same option names, and also enables subcommands to turn on passThroughOptions. - * - * The default behaviour is non-positional and global options may appear anywhere on the command line. - * - * @returns `this` command for chaining - */ - enablePositionalOptions(positional?: boolean): this; - - /** - * Pass through options that come after command-arguments rather than treat them as command-options, - * so actual command-options come before command-arguments. Turning this on for a subcommand requires - * positional options to have been enabled on the program (parent commands). - * - * The default behaviour is non-positional and options may appear before or after command-arguments. - * - * @returns `this` command for chaining - */ - passThroughOptions(passThrough?: boolean): this; - - /** - * Parse `argv`, setting options and invoking commands when defined. - * - * The default expectation is that the arguments are from node and have the application as argv[0] - * and the script being run in argv[1], with user parameters after that. - * - * @example - * ``` - * program.parse(process.argv); - * program.parse(); // implicitly use process.argv and auto-detect node vs electron conventions - * program.parse(my-args, { from: 'user' }); // just user supplied arguments, nothing special about argv[0] - * ``` - * - * @returns `this` command for chaining - */ - parse(argv?: readonly string[], options?: ParseOptions): this; - - /** - * Parse `argv`, setting options and invoking commands when defined. - * - * Use parseAsync instead of parse if any of your action handlers are async. Returns a Promise. - * - * The default expectation is that the arguments are from node and have the application as argv[0] - * and the script being run in argv[1], with user parameters after that. - * - * @example - * ``` - * program.parseAsync(process.argv); - * program.parseAsync(); // implicitly use process.argv and auto-detect node vs electron conventions - * program.parseAsync(my-args, { from: 'user' }); // just user supplied arguments, nothing special about argv[0] - * ``` - * - * @returns Promise - */ - parseAsync(argv?: readonly string[], options?: ParseOptions): Promise; - - /** - * Parse options from `argv` removing known options, - * and return argv split into operands and unknown arguments. - * - * argv => operands, unknown - * --known kkk op => [op], [] - * op --known kkk => [op], [] - * sub --unknown uuu op => [sub], [--unknown uuu op] - * sub -- --unknown uuu op => [sub --unknown uuu op], [] - */ - parseOptions(argv: string[]): ParseOptionsResult; - - /** - * Return an object containing local option values as key-value pairs - */ - opts(): Opts; - - /** - * Return an object containing merged local and global option values as key-value pairs. - */ - optsWithGlobals(): T; - - /** - * Set the description. - * - * @returns `this` command for chaining - */ - - description(str: string): this; - /** @deprecated since v8, instead use .argument to add command argument with description */ - description(str: string, argsDescription: {[argName: string]: string}): this; - /** - * Get the description. - */ - description(): string; - - /** - * Set the summary. Used when listed as subcommand of parent. - * - * @returns `this` command for chaining - */ - - summary(str: string): this; - /** - * Get the summary. - */ - summary(): string; - - /** - * Set an alias for the command. - * - * You may call more than once to add multiple aliases. Only the first alias is shown in the auto-generated help. - * - * @returns `this` command for chaining - */ - alias(alias: string): this; - /** - * Get alias for the command. - */ - alias(): string; - - /** - * Set aliases for the command. - * - * Only the first alias is shown in the auto-generated help. - * - * @returns `this` command for chaining - */ - aliases(aliases: readonly string[]): this; - /** - * Get aliases for the command. - */ - aliases(): string[]; - - /** - * Set the command usage. - * - * @returns `this` command for chaining - */ - usage(str: string): this; - /** - * Get the command usage. - */ - usage(): string; - - /** - * Set the name of the command. - * - * @returns `this` command for chaining - */ - name(str: string): this; - /** - * Get the name of the command. - */ - name(): string; - - /** - * Set the name of the command from script filename, such as process.argv[1], - * or require.main.filename, or __filename. - * - * (Used internally and public although not documented in README.) - * - * @example - * ```ts - * program.nameFromFilename(require.main.filename); - * ``` - * - * @returns `this` command for chaining - */ - nameFromFilename(filename: string): this; - - /** - * Set the directory for searching for executable subcommands of this command. - * - * @example - * ```ts - * program.executableDir(__dirname); - * // or - * program.executableDir('subcommands'); - * ``` - * - * @returns `this` command for chaining - */ - executableDir(path: string): this; - /** - * Get the executable search directory. - */ - executableDir(): string; - - /** - * Output help information for this command. - * - * Outputs built-in help, and custom text added using `.addHelpText()`. - * - */ - outputHelp(context?: HelpContext): void; - /** @deprecated since v7 */ - outputHelp(cb?: (str: string) => string): void; - - /** - * Return command help documentation. - */ - helpInformation(context?: HelpContext): string; - - /** - * You can pass in flags and a description to override the help - * flags and help description for your command. Pass in false - * to disable the built-in help option. - */ - helpOption(flags?: string | boolean, description?: string): this; - - /** - * Output help information and exit. - * - * Outputs built-in help, and custom text added using `.addHelpText()`. - */ - help(context?: HelpContext): never; - /** @deprecated since v7 */ - help(cb?: (str: string) => string): never; - - /** - * Add additional text to be displayed with the built-in help. - * - * Position is 'before' or 'after' to affect just this command, - * and 'beforeAll' or 'afterAll' to affect this command and all its subcommands. - */ - addHelpText(position: AddHelpTextPosition, text: string): this; - addHelpText(position: AddHelpTextPosition, text: (context: AddHelpTextContext) => string): this; - - /** - * Add a listener (callback) for when events occur. (Implemented using EventEmitter.) - */ - on(event: string | symbol, listener: (...args: any[]) => void): this; - } - - export interface CommandOptions { - hidden?: boolean; - isDefault?: boolean; - /** @deprecated since v7, replaced by hidden */ - noHelp?: boolean; - } - export interface ExecutableCommandOptions extends CommandOptions { - executableFile?: string; - } - - export interface ParseOptionsResult { - operands: string[]; - unknown: string[]; - } - - export function createCommand(name?: string): Command; - export function createOption(flags: Usage, description?: string): Option; - export function createArgument(name: Usage, description?: string): Argument; - - export const program: Command; - + code: string; + exitCode: number; + message: string; + nestedError?: string; + + /** + * Constructs the CommanderError class + * @param exitCode - suggested exit code which could be used with process.exit + * @param code - an id string representing the error + * @param message - human-readable description of the error + * @constructor + */ + constructor(exitCode: number, code: string, message: string); +} + +export class InvalidArgumentError extends CommanderError { + /** + * Constructs the InvalidArgumentError class + * @param message - explanation of why argument is invalid + * @constructor + */ + constructor(message: string); +} +export { InvalidArgumentError as InvalidOptionArgumentError }; // deprecated old name + +export interface ErrorOptions { + // optional parameter for error() + /** an id string representing the error */ + code?: string; + /** suggested exit code which could be used with process.exit */ + exitCode?: number; +} + +export class Argument< + Usage extends string = "", + DefaultT = undefined, + CoerceT = undefined, + ArgRequired extends boolean | undefined = undefined, + ChoicesT = undefined, +> { + description: string; + required: boolean; + variadic: boolean; + + /** + * Initialize a new command argument with the given name and description. + * The default is that the argument is required, and you can explicitly + * indicate this with <> around the name. Put [] around the name for an optional argument. + */ + constructor(arg: Usage, description?: string); + + /** + * Return argument name. + */ + name(): string; + + /** + * Set the default value, and optionally supply the description to be displayed in the help. + */ + default( + value: T, + description?: string + ): Argument; + + /** + * Set the custom handler for processing CLI command arguments into argument values. + */ + argParser( + fn: (value: string, previous: T) => T + ): Argument; // setting ChoicesT to undefined because argParser overwrites choices + + /** + * Only allow argument value to be one of choices. + */ + choices( + values: T + ): Argument; // setting CoerceT to undefined because choices overrides argParser + + /** + * Make argument required. + */ + argRequired(): Argument; + + /** + * Make argument optional. + */ + argOptional(): Argument; +} + +export class Option< + Usage extends string = "", + PresetT = undefined, + DefaultT = undefined, + CoerceT = undefined, + Mandatory extends boolean = false, + ChoicesT = undefined, +> { + flags: string; + description: string; + + required: boolean; // A value must be supplied when the option is specified. + optional: boolean; // A value is optional when the option is specified. + variadic: boolean; + mandatory: boolean; // The option must have a value after parsing, which usually means it must be specified on command line. + optionFlags: string; + short?: string; + long?: string; + negate: boolean; + defaultValue?: any; + defaultValueDescription?: string; + parseArg?: (value: string, previous: T) => T; + hidden: boolean; + argChoices?: string[]; + + constructor(flags: Usage, description?: string); + + /** + * Set the default value, and optionally supply the description to be displayed in the help. + */ + default( + value: T, + description?: string + ): Option; + + /** + * Preset to use when option used without option-argument, especially optional but also boolean and negated. + * The custom processing (parseArg) is called. + * + * @example + * ```ts + * new Option('--color').default('GREYSCALE').preset('RGB'); + * new Option('--donate [amount]').preset('20').argParser(parseFloat); + * ``` + */ + preset(arg: T): Option; + + /** + * Add option name(s) that conflict with this option. + * An error will be displayed if conflicting options are found during parsing. + * + * @example + * ```ts + * new Option('--rgb').conflicts('cmyk'); + * new Option('--js').conflicts(['ts', 'jsx']); + * ``` + */ + conflicts(names: string | string[]): this; + + /** + * Specify implied option values for when this option is set and the implied options are not. + * + * The custom processing (parseArg) is not called on the implied values. + * + * @example + * program + * .addOption(new Option('--log', 'write logging information to file')) + * .addOption(new Option('--trace', 'log extra details').implies({ log: 'trace.txt' })); + */ + implies(optionValues: OptionValues): this; + + /** + * Set environment variable to check for option value. + * + * An environment variables is only used if when processed the current option value is + * undefined, or the source of the current value is 'default' or 'config' or 'env'. + */ + env(name: string): this; + + /** + * Calculate the full description, including defaultValue etc. + */ + fullDescription(): string; + + /** + * Set the custom handler for processing CLI option arguments into option values. + */ + argParser( + fn: (value: string, previous: T) => T + ): Option; // setting ChoicesT to undefined because argParser overrides choices + + /** + * Whether the option is mandatory and must have a value after parsing. + */ + makeOptionMandatory( + mandatory?: M + ): Option; + + /** + * Hide option in help. + */ + hideHelp(hide?: boolean): this; + + /** + * Only allow option value to be one of choices. + */ + choices( + values: T + ): Option; // setting CoerceT to undefined becuase choices overrides argParser + + /** + * Return option name. + */ + name(): string; + + /** + * Return option name, in a camelcase format that can be used + * as a object attribute key. + */ + attributeName(): string; + + /** + * Return whether a boolean option. + * + * Options are one of boolean, negated, required argument, or optional argument. + */ + isBoolean(): boolean; +} + +export class Help { + /** output helpWidth, long lines are wrapped to fit */ + helpWidth?: number; + sortSubcommands: boolean; + sortOptions: boolean; + showGlobalOptions: boolean; + + constructor(); + + /** Get the command term to show in the list of subcommands. */ + subcommandTerm(cmd: CommandUnknownOpts): string; + /** Get the command summary to show in the list of subcommands. */ + subcommandDescription(cmd: CommandUnknownOpts): string; + /** Get the option term to show in the list of options. */ + optionTerm(option: Option): string; + /** Get the option description to show in the list of options. */ + optionDescription(option: Option): string; + /** Get the argument term to show in the list of arguments. */ + argumentTerm(argument: Argument): string; + /** Get the argument description to show in the list of arguments. */ + argumentDescription(argument: Argument): string; + + /** Get the command usage to be displayed at the top of the built-in help. */ + commandUsage(cmd: CommandUnknownOpts): string; + /** Get the description for the command. */ + commandDescription(cmd: CommandUnknownOpts): string; + + /** Get an array of the visible subcommands. Includes a placeholder for the implicit help command, if there is one. */ + visibleCommands(cmd: CommandUnknownOpts): CommandUnknownOpts[]; + /** Get an array of the visible options. Includes a placeholder for the implicit help option, if there is one. */ + visibleOptions(cmd: CommandUnknownOpts): Option[]; + /** Get an array of the visible global options. (Not including help.) */ + visibleGlobalOptions(cmd: CommandUnknownOpts): Option[]; + /** Get an array of the arguments which have descriptions. */ + visibleArguments(cmd: CommandUnknownOpts): Argument[]; + + /** Get the longest command term length. */ + longestSubcommandTermLength(cmd: CommandUnknownOpts, helper: Help): number; + /** Get the longest option term length. */ + longestOptionTermLength(cmd: CommandUnknownOpts, helper: Help): number; + /** Get the longest global option term length. */ + longestGlobalOptionTermLength(cmd: CommandUnknownOpts, helper: Help): number; + /** Get the longest argument term length. */ + longestArgumentTermLength(cmd: CommandUnknownOpts, helper: Help): number; + /** Calculate the pad width from the maximum term length. */ + padWidth(cmd: CommandUnknownOpts, helper: Help): number; + + /** + * Wrap the given string to width characters per line, with lines after the first indented. + * Do not wrap if insufficient room for wrapping (minColumnWidth), or string is manually formatted. + */ + wrap( + str: string, + width: number, + indent: number, + minColumnWidth?: number + ): string; + + /** Generate the built-in help text. */ + formatHelp(cmd: CommandUnknownOpts, helper: Help): string; +} +export type HelpConfiguration = Partial; + +export interface ParseOptions { + from: "node" | "electron" | "user"; +} +export interface HelpContext { + // optional parameter for .help() and .outputHelp() + error: boolean; +} +export interface AddHelpTextContext { + // passed to text function used with .addHelpText() + error: boolean; + command: Command; +} +export interface OutputConfiguration { + writeOut?(str: string): void; + writeErr?(str: string): void; + getOutHelpWidth?(): number; + getErrHelpWidth?(): number; + outputError?(str: string, write: (str: string) => void): void; +} + +export type AddHelpTextPosition = "beforeAll" | "before" | "after" | "afterAll"; +export type HookEvent = "preSubcommand" | "preAction" | "postAction"; +// The source is a string so author can define their own too. +export type OptionValueSource = + | LiteralUnion<"default" | "config" | "env" | "cli" | "implied", string> + | undefined; + +export interface OptionValues { + [key: string]: unknown; +} + +export class Command { + args: string[]; + processedArgs: Args; + commands: CommandUnknownOpts[]; + parent: CommandUnknownOpts | null; + + constructor(name?: string); + + /** + * Set the program version to `str`. + * + * This method auto-registers the "-V, --version" flag + * which will print the version number when passed. + * + * You can optionally supply the flags and description to override the defaults. + */ + version(str: string, flags?: string, description?: string): this; + + /** + * Define a command, implemented using an action handler. + * + * @remarks + * The command description is supplied using `.description`, not as a parameter to `.command`. + * + * @example + * ```ts + * program + * .command('clone [destination]') + * .description('clone a repository into a newly created directory') + * .action((source, destination) => { + * console.log('clone command called'); + * }); + * ``` + * + * @param nameAndArgs - command name and arguments, args are `` or `[optional]` and last may also be `variadic...` + * @param opts - configuration options + * @returns new command + */ + command( + nameAndArgs: Usage, + opts?: CommandOptions + ): Command<[...InferCommmandArguments]>; + /** + * Define a command, implemented in a separate executable file. + * + * @remarks + * The command description is supplied as the second parameter to `.command`. + * + * @example + * ```ts + * program + * .command('start ', 'start named service') + * .command('stop [service]', 'stop named service, or all if no name supplied'); + * ``` + * + * @param nameAndArgs - command name and arguments, args are `` or `[optional]` and last may also be `variadic...` + * @param description - description of executable command + * @param opts - configuration options + * @returns `this` command for chaining + */ + command( + nameAndArgs: string, + description: string, + opts?: ExecutableCommandOptions + ): this; + + /** + * Factory routine to create a new unattached command. + * + * See .command() for creating an attached subcommand, which uses this routine to + * create the command. You can override createCommand to customise subcommands. + */ + createCommand(name?: string): Command; + + /** + * Add a prepared subcommand. + * + * See .command() for creating an attached subcommand which inherits settings from its parent. + * + * @returns `this` command for chaining + */ + addCommand(cmd: CommandUnknownOpts, opts?: CommandOptions): this; + + /** + * Factory routine to create a new unattached argument. + * + * See .argument() for creating an attached argument, which uses this routine to + * create the argument. You can override createArgument to return a custom argument. + */ + createArgument( + name: Usage, + description?: string + ): Argument; + + /** + * Define argument syntax for command. + * + * The default is that the argument is required, and you can explicitly + * indicate this with <> around the name. Put [] around the name for an optional argument. + * + * @example + * ``` + * program.argument(''); + * program.argument('[output-file]'); + * ``` + * + * @returns `this` command for chaining + */ + argument( + flags: S, + description: string, + fn: (value: string, previous: T) => T + ): Command<[...Args, InferArgument]>; + argument( + flags: S, + description: string, + fn: (value: string, previous: T) => T, + defaultValue: T + ): Command<[...Args, InferArgument]>; + argument( + usage: S, + description?: string + ): Command<[...Args, InferArgument]>; + argument( + usage: S, + description: string, + defaultValue: DefaultT + ): Command<[...Args, InferArgument]>; + + /** + * Define argument syntax for command, adding a prepared argument. + * + * @returns `this` command for chaining + */ + addArgument< + Usage extends string, + DefaultT, + CoerceT, + ArgRequired extends boolean | undefined, + ChoicesT, + >( + arg: Argument + ): Command< + [...Args, InferArgument] + >; + + /** + * Define argument syntax for command, adding multiple at once (without descriptions). + * + * See also .argument(). + * + * @example + * ``` + * program.arguments(' [env]'); + * ``` + * + * @returns `this` command for chaining + */ + arguments( + args: Names + ): Command<[...Args, ...InferArguments]>; + + /** + * Override default decision whether to add implicit help command. + * + * @example + * ``` + * addHelpCommand() // force on + * addHelpCommand(false); // force off + * addHelpCommand('help [cmd]', 'display help for [cmd]'); // force on with custom details + * ``` + * + * @returns `this` command for chaining + */ + addHelpCommand( + enableOrNameAndArgs?: string | boolean, + description?: string + ): this; + + /** + * Add hook for life cycle event. + */ + hook( + event: HookEvent, + listener: ( + thisCommand: this, + actionCommand: CommandUnknownOpts + ) => void | Promise + ): this; + + /** + * Register callback to use as replacement for calling process.exit. + */ + exitOverride(callback?: (err: CommanderError) => never | void): this; + + /** + * Display error message and exit (or call exitOverride). + */ + error(message: string, errorOptions?: ErrorOptions): never; + + /** + * You can customise the help with a subclass of Help by overriding createHelp, + * or by overriding Help properties using configureHelp(). + */ + createHelp(): Help; + + /** + * You can customise the help by overriding Help properties using configureHelp(), + * or with a subclass of Help by overriding createHelp(). + */ + configureHelp(configuration: HelpConfiguration): this; + /** Get configuration */ + configureHelp(): HelpConfiguration; + + /** + * The default output goes to stdout and stderr. You can customise this for special + * applications. You can also customise the display of errors by overriding outputError. + * + * The configuration properties are all functions: + * ``` + * // functions to change where being written, stdout and stderr + * writeOut(str) + * writeErr(str) + * // matching functions to specify width for wrapping help + * getOutHelpWidth() + * getErrHelpWidth() + * // functions based on what is being written out + * outputError(str, write) // used for displaying errors, and not used for displaying help + * ``` + */ + configureOutput(configuration: OutputConfiguration): this; + /** Get configuration */ + configureOutput(): OutputConfiguration; + + /** + * Copy settings that are useful to have in common across root command and subcommands. + * + * (Used internally when adding a command using `.command()` so subcommands inherit parent settings.) + */ + copyInheritedSettings(sourceCommand: CommandUnknownOpts): this; + + /** + * Display the help or a custom message after an error occurs. + */ + showHelpAfterError(displayHelp?: boolean | string): this; + + /** + * Display suggestion of similar commands for unknown commands, or options for unknown options. + */ + showSuggestionAfterError(displaySuggestion?: boolean): this; + + /** + * Register callback `fn` for the command. + * + * @example + * ``` + * program + * .command('serve') + * .description('start service') + * .action(function() { + * // do work here + * }); + * ``` + * + * @returns `this` command for chaining + */ + action(fn: (...args: [...Args, Opts, this]) => void | Promise): this; + + /** + * Define option with `flags`, `description` and optional + * coercion `fn`. + * + * The `flags` string contains the short and/or long flags, + * separated by comma, a pipe or space. The following are all valid + * all will output this way when `--help` is used. + * + * "-p, --pepper" + * "-p|--pepper" + * "-p --pepper" + * + * @example + * ``` + * // simple boolean defaulting to false + * program.option('-p, --pepper', 'add pepper'); + * + * --pepper + * program.pepper + * // => Boolean + * + * // simple boolean defaulting to true + * program.option('-C, --no-cheese', 'remove cheese'); + * + * program.cheese + * // => true + * + * --no-cheese + * program.cheese + * // => false + * + * // required argument + * program.option('-C, --chdir ', 'change the working directory'); + * + * --chdir /tmp + * program.chdir + * // => "/tmp" + * + * // optional argument + * program.option('-c, --cheese [type]', 'add cheese [marble]'); + * ``` + * + * @returns `this` command for chaining + */ + option( + usage: S, + description?: string + ): Command>; + option( + usage: S, + description?: string, + defaultValue?: DefaultT + ): Command>; + option( + usage: S, + description: string, + fn: (value: string, previous: T) => T + ): Command>; + option( + usage: S, + description: string, + fn: (value: string, previous: T) => T, + defaultValue?: T + ): Command>; + + /** + * Define a required option, which must have a value after parsing. This usually means + * the option must be specified on the command line. (Otherwise the same as .option().) + * + * The `flags` string contains the short and/or long flags, separated by comma, a pipe or space. + */ + requiredOption( + usage: S, + description?: string + ): Command>; + requiredOption< + S extends string, + DefaultT extends string | boolean | string[], + >( + usage: S, + description?: string, + defaultValue?: DefaultT + ): Command>; + requiredOption( + usage: S, + description: string, + fn: (value: string, previous: T) => T + ): Command>; + requiredOption( + usage: S, + description: string, + fn: (value: string, previous: T) => T, + defaultValue?: D + ): Command>; + + /** + * Factory routine to create a new unattached option. + * + * See .option() for creating an attached option, which uses this routine to + * create the option. You can override createOption to return a custom option. + */ + + createOption( + flags: Usage, + description?: string + ): Option; + + /** + * Add a prepared Option. + * + * See .option() and .requiredOption() for creating and attaching an option in a single call. + */ + addOption< + Usage extends string, + PresetT, + DefaultT, + CoerceT, + Mandatory extends boolean, + ChoicesT, + >( + option: Option + ): Command< + Args, + InferOptions + >; + + /** + * Whether to store option values as properties on command object, + * or store separately (specify false). In both cases the option values can be accessed using .opts(). + * + * @returns `this` command for chaining + */ + storeOptionsAsProperties(): this & T; + storeOptionsAsProperties( + storeAsProperties: true + ): this & T; + storeOptionsAsProperties(storeAsProperties?: boolean): this; + + /** + * Retrieve option value. + */ + getOptionValue(key: K): Opts[K]; + getOptionValue(key: string): unknown; + + /** + * Store option value. + */ + setOptionValue(key: K, value: unknown): this; + setOptionValue(key: string, value: unknown): this; + + /** + * Store option value and where the value came from. + */ + setOptionValueWithSource( + key: K, + value: unknown, + source: OptionValueSource + ): this; + setOptionValueWithSource( + key: string, + value: unknown, + source: OptionValueSource + ): this; + + /** + * Get source of option value. + */ + getOptionValueSource( + key: K + ): OptionValueSource | undefined; + getOptionValueSource(key: string): OptionValueSource | undefined; + + /** + * Get source of option value. See also .optsWithGlobals(). + */ + getOptionValueSourceWithGlobals( + key: K + ): OptionValueSource | undefined; + getOptionValueSourceWithGlobals(key: string): OptionValueSource | undefined; + + /** + * Alter parsing of short flags with optional values. + * + * @example + * ``` + * // for `.option('-f,--flag [value]'): + * .combineFlagAndOptionalValue(true) // `-f80` is treated like `--flag=80`, this is the default behaviour + * .combineFlagAndOptionalValue(false) // `-fb` is treated like `-f -b` + * ``` + * + * @returns `this` command for chaining + */ + combineFlagAndOptionalValue(combine?: boolean): this; + + /** + * Allow unknown options on the command line. + * + * @returns `this` command for chaining + */ + allowUnknownOption(allowUnknown?: boolean): this; + + /** + * Allow excess command-arguments on the command line. Pass false to make excess arguments an error. + * + * @returns `this` command for chaining + */ + allowExcessArguments(allowExcess?: boolean): this; + + /** + * Enable positional options. Positional means global options are specified before subcommands which lets + * subcommands reuse the same option names, and also enables subcommands to turn on passThroughOptions. + * + * The default behaviour is non-positional and global options may appear anywhere on the command line. + * + * @returns `this` command for chaining + */ + enablePositionalOptions(positional?: boolean): this; + + /** + * Pass through options that come after command-arguments rather than treat them as command-options, + * so actual command-options come before command-arguments. Turning this on for a subcommand requires + * positional options to have been enabled on the program (parent commands). + * + * The default behaviour is non-positional and options may appear before or after command-arguments. + * + * @returns `this` command for chaining + */ + passThroughOptions(passThrough?: boolean): this; + + /** + * Parse `argv`, setting options and invoking commands when defined. + * + * The default expectation is that the arguments are from node and have the application as argv[0] + * and the script being run in argv[1], with user parameters after that. + * + * @example + * ``` + * program.parse(process.argv); + * program.parse(); // implicitly use process.argv and auto-detect node vs electron conventions + * program.parse(my-args, { from: 'user' }); // just user supplied arguments, nothing special about argv[0] + * ``` + * + * @returns `this` command for chaining + */ + parse(argv?: readonly string[], options?: ParseOptions): this; + + /** + * Parse `argv`, setting options and invoking commands when defined. + * + * Use parseAsync instead of parse if any of your action handlers are async. Returns a Promise. + * + * The default expectation is that the arguments are from node and have the application as argv[0] + * and the script being run in argv[1], with user parameters after that. + * + * @example + * ``` + * program.parseAsync(process.argv); + * program.parseAsync(); // implicitly use process.argv and auto-detect node vs electron conventions + * program.parseAsync(my-args, { from: 'user' }); // just user supplied arguments, nothing special about argv[0] + * ``` + * + * @returns Promise + */ + parseAsync(argv?: readonly string[], options?: ParseOptions): Promise; + + /** + * Parse options from `argv` removing known options, + * and return argv split into operands and unknown arguments. + * + * argv => operands, unknown + * --known kkk op => [op], [] + * op --known kkk => [op], [] + * sub --unknown uuu op => [sub], [--unknown uuu op] + * sub -- --unknown uuu op => [sub --unknown uuu op], [] + */ + parseOptions(argv: string[]): ParseOptionsResult; + + /** + * Return an object containing local option values as key-value pairs + */ + opts(): Opts; + + /** + * Return an object containing merged local and global option values as key-value pairs. + */ + optsWithGlobals(): T; + + /** + * Set the description. + * + * @returns `this` command for chaining + */ + + description(str: string): this; + /** @deprecated since v8, instead use .argument to add command argument with description */ + description( + str: string, + argsDescription: { [argName: string]: string } + ): this; + /** + * Get the description. + */ + description(): string; + + /** + * Set the summary. Used when listed as subcommand of parent. + * + * @returns `this` command for chaining + */ + + summary(str: string): this; + /** + * Get the summary. + */ + summary(): string; + + /** + * Set an alias for the command. + * + * You may call more than once to add multiple aliases. Only the first alias is shown in the auto-generated help. + * + * @returns `this` command for chaining + */ + alias(alias: string): this; + /** + * Get alias for the command. + */ + alias(): string; + + /** + * Set aliases for the command. + * + * Only the first alias is shown in the auto-generated help. + * + * @returns `this` command for chaining + */ + aliases(aliases: readonly string[]): this; + /** + * Get aliases for the command. + */ + aliases(): string[]; + + /** + * Set the command usage. + * + * @returns `this` command for chaining + */ + usage(str: string): this; + /** + * Get the command usage. + */ + usage(): string; + + /** + * Set the name of the command. + * + * @returns `this` command for chaining + */ + name(str: string): this; + /** + * Get the name of the command. + */ + name(): string; + + /** + * Set the name of the command from script filename, such as process.argv[1], + * or require.main.filename, or __filename. + * + * (Used internally and public although not documented in README.) + * + * @example + * ```ts + * program.nameFromFilename(require.main.filename); + * ``` + * + * @returns `this` command for chaining + */ + nameFromFilename(filename: string): this; + + /** + * Set the directory for searching for executable subcommands of this command. + * + * @example + * ```ts + * program.executableDir(__dirname); + * // or + * program.executableDir('subcommands'); + * ``` + * + * @returns `this` command for chaining + */ + executableDir(path: string): this; + /** + * Get the executable search directory. + */ + executableDir(): string; + + /** + * Output help information for this command. + * + * Outputs built-in help, and custom text added using `.addHelpText()`. + * + */ + outputHelp(context?: HelpContext): void; + /** @deprecated since v7 */ + outputHelp(cb?: (str: string) => string): void; + + /** + * Return command help documentation. + */ + helpInformation(context?: HelpContext): string; + + /** + * You can pass in flags and a description to override the help + * flags and help description for your command. Pass in false + * to disable the built-in help option. + */ + helpOption(flags?: string | boolean, description?: string): this; + + /** + * Output help information and exit. + * + * Outputs built-in help, and custom text added using `.addHelpText()`. + */ + help(context?: HelpContext): never; + /** @deprecated since v7 */ + help(cb?: (str: string) => string): never; + + /** + * Add additional text to be displayed with the built-in help. + * + * Position is 'before' or 'after' to affect just this command, + * and 'beforeAll' or 'afterAll' to affect this command and all its subcommands. + */ + addHelpText(position: AddHelpTextPosition, text: string): this; + addHelpText( + position: AddHelpTextPosition, + text: (context: AddHelpTextContext) => string + ): this; + + /** + * Add a listener (callback) for when events occur. (Implemented using EventEmitter.) + */ + on(event: string | symbol, listener: (...args: any[]) => void): this; +} + +export interface CommandOptions { + hidden?: boolean; + isDefault?: boolean; + /** @deprecated since v7, replaced by hidden */ + noHelp?: boolean; +} +export interface ExecutableCommandOptions extends CommandOptions { + executableFile?: string; +} + +export interface ParseOptionsResult { + operands: string[]; + unknown: string[]; +} + +export function createCommand(name?: string): Command; +export function createOption( + flags: Usage, + description?: string +): Option; +export function createArgument( + name: Usage, + description?: string +): Argument; + +export const program: Command; diff --git a/packages/cypress-cloud/jest.config.js b/packages/cypress-cloud/jest.config.js index e657a27..b448702 100644 --- a/packages/cypress-cloud/jest.config.js +++ b/packages/cypress-cloud/jest.config.js @@ -7,7 +7,7 @@ module.exports = { "^.+\\.tsx?$": "@swc/jest", }, moduleNameMapper: { - "cypress-cloud/(.*)$": "/../cypress-cloud/$1", + "^cypress-cloud/(.*)$": "/../cypress-cloud/$1", }, transformIgnorePatterns: ["node_modules"], moduleFileExtensions: ["ts", "js", "d.ts"], diff --git a/packages/cypress-cloud/lib/__tests__/README.md b/packages/cypress-cloud/lib/__tests__/README.md new file mode 100644 index 0000000..e5c84b7 --- /dev/null +++ b/packages/cypress-cloud/lib/__tests__/README.md @@ -0,0 +1,15 @@ +# Data flow test + +This test reproduces the data flow as appears in: + +https://www.figma.com/file/46bnshkBlyvlmCaCX45Hbx/Cypress-Cloud-Data-Flow?type=whiteboard&node-id=0%3A1&t=OfMHO8NtfI2cUjJw-1 + +The idea is to replicate the data in the `executionState`. + +- Collect the raw events produced by cypress. Search the source code for for `// % save results` comment and uncomment. It will capture raw events and save them. Copy the events to `fixtures`. + + - The raw events are are in `fixtures///.json` + - The expected API response is in `fixtures/api//payload.ts` + +- Read the events and populate `executionState` +- Create reporting tasks and compare the output diff --git a/packages/cypress-cloud/lib/__tests__/dataFlow.test.ts b/packages/cypress-cloud/lib/__tests__/dataFlow.test.ts new file mode 100644 index 0000000..6fc8ee5 --- /dev/null +++ b/packages/cypress-cloud/lib/__tests__/dataFlow.test.ts @@ -0,0 +1,154 @@ +import { expect } from "@jest/globals"; +import fs from "fs"; +import path from "path"; +import * as api from "../api"; +import { initCapture } from "../capture"; +import { listenToEvents, stopListeningToEvents } from "../listener"; +import { Event, getPubSub } from "../pubsub"; +import { getReportResultsTask } from "../results/uploadResults"; +import { ConfigState, ExecutionState } from "../state"; + +jest.mock("../api", () => ({ + reportInstanceResultsMerged: jest.fn(), + reportInstanceResults: jest.fn(), + reportInstanceTests: jest.fn(), +})); + +jest.mock("../env", () => ({ + isCurrents: jest.fn().mockReturnValue(true), +})); + +const cypressVersions = ["13.2.0", "12.17.4"]; +// const cypressVersions = ["12.17.4"] as const; + +const specs = [ + "crash.spec.js", + "passed.spec.js", + "failed.spec.js", + "pending.spec.js", + "skipped.spec.js", + "retries.spec.js", +] as const; + +// const specs = [ +// "crash.spec.js", +// "passing.spec.js", +// "failed.spec.js", +// "pending.spec.js", +// "skipped.spec.js", +// "retries.spec.js", +// ]; + +// /fixtures/12.17.4/fails.spec.js/12.17.4_fails.spec.js_specAfter +function getFixtureBase(cypressVersion: string, spec: string) { + return path.resolve(__dirname, `./fixtures/${cypressVersion}/${spec}`); +} + +function getSingleFixturePath( + cypressVersion: string, + spec: string, + fixtureType: "specAfter" | "runResult" +) { + return `${getFixtureBase(cypressVersion, spec)}/${fixtureType}.json`; +} + +function getAPIPayloadPath(spec: string) { + return `./fixtures/api/${spec}/payload.ts`; +} + +function getMultipleFixtures( + cypressVersion: string, + spec: string, + type: string +) { + const files = fs.readdirSync(getFixtureBase(cypressVersion, spec)); + const imports = files + .filter((f) => f.includes(type)) + .map((f) => import(path.resolve(getFixtureBase(cypressVersion, spec), f))); + return Promise.all(imports); +} + +describe("Data Flow", () => { + cypressVersions.forEach((cypressVersion) => { + describe(`Cypress ${cypressVersion}`, () => { + specs.forEach((spec) => { + describe(spec, () => { + beforeEach(() => { + stopListeningToEvents(); + jest.clearAllMocks(); + }); + it(`${spec} should have the right API call payload`, async () => { + const instanceId = "instanceId"; + const executionState = new ExecutionState(); + const configState = new ConfigState(); + (api.reportInstanceResultsMerged as jest.Mock).mockResolvedValue( + {} + ); + initCapture(); + listenToEvents(configState, executionState); + + const specRelative = `cypress/e2e/${spec}`; + const attempts = await getMultipleFixtures( + cypressVersion, + spec, + "testAfter" + ); + const screenshots = await getMultipleFixtures( + cypressVersion, + spec, + "screenshot" + ); + + const specAfter = await import( + getSingleFixturePath(cypressVersion, spec, "specAfter") + ); + const runResult = await import( + getSingleFixturePath(cypressVersion, spec, "runResult") + ); + + executionState.initInstance({ instanceId, spec: specRelative }); + attempts.forEach((attempt) => + executionState.addAttemptsData(attempt) + ); + screenshots.forEach((screenshot) => + executionState.addScreenshotsData(screenshot) + ); + + getPubSub().emit(Event.RUN_RESULT, { + specRelative, + instanceId, + runResult, + }); + getPubSub().emit(Event.AFTER_SPEC, { + spec: { + relative: specRelative, + }, + results: specAfter, + }); + + await getReportResultsTask( + instanceId, + executionState, + configState, + "", + undefined + ); + const actualAPIPayload = ( + api.reportInstanceResultsMerged as jest.Mock + ).mock.calls[0][1]; + + const expectedAPIPayload = await import(getAPIPayloadPath(spec)); + + expect(actualAPIPayload.tests).toMatchObject( + expectedAPIPayload.tests + ); + + expect(actualAPIPayload.results).toMatchObject( + expectedAPIPayload.results + ); + }); + }); + }); + }); + }); +}); diff --git a/packages/cypress-cloud/lib/__tests__/fixtures/12.17.4/crash.spec.js/runResult.json b/packages/cypress-cloud/lib/__tests__/fixtures/12.17.4/crash.spec.js/runResult.json new file mode 100644 index 0000000..5ac93b0 --- /dev/null +++ b/packages/cypress-cloud/lib/__tests__/fixtures/12.17.4/crash.spec.js/runResult.json @@ -0,0 +1 @@ +{"status":"finished","startedTestsAt":"2023-09-18T23:38:17.817Z","endedTestsAt":"2023-09-18T23:38:21.625Z","totalDuration":1018,"totalSuites":1,"totalTests":1,"totalPassed":1,"totalPending":0,"totalFailed":1,"totalSkipped":0,"runs":[{"error":"Oops...we found an error preparing this test file:\n\n > cypress/e2e/crash.spec.js\n\nThe error was:\n\nError: Webpack Compilation Error\nModule not found: Error: Can't resolve 'fff' in '/Users/agoldis/cypress-cloud/examples/webapp/cypress/e2e'\n at handle (/Users/agoldis/Library/Caches/Cypress/12.17.4/Cypress.app/Contents/Resources/app/packages/server/node_modules/@cypress/webpack-preprocessor/dist/index.js:212:23)\n at finalCallback (/Users/agoldis/Library/Caches/Cypress/12.17.4/Cypress.app/Contents/Resources/app/node_modules/webpack/lib/Compiler.js:441:32)\n at /Users/agoldis/Library/Caches/Cypress/12.17.4/Cypress.app/Contents/Resources/app/node_modules/webpack/lib/Compiler.js:505:17\n at /Users/agoldis/Library/Caches/Cypress/12.17.4/Cypress.app/Contents/Resources/app/node_modules/webpack/lib/HookWebpackError.js:68:3\n at Hook.eval [as callAsync] (eval at create (/Users/agoldis/Library/Caches/Cypress/12.17.4/Cypress.app/Contents/Resources/app/node_modules/tapable/lib/HookCodeFactory.js:33:10), :6:1)\n at Hook.CALL_ASYNC_DELEGATE [as _callAsync] (/Users/agoldis/Library/Caches/Cypress/12.17.4/Cypress.app/Contents/Resources/app/node_modules/tapable/lib/Hook.js:18:14)\n at Cache.storeBuildDependencies (/Users/agoldis/Library/Caches/Cypress/12.17.4/Cypress.app/Contents/Resources/app/node_modules/webpack/lib/Cache.js:122:37)\n at /Users/agoldis/Library/Caches/Cypress/12.17.4/Cypress.app/Contents/Resources/app/node_modules/webpack/lib/Compiler.js:501:19\n at Hook.eval [as callAsync] (eval at create (/Users/agoldis/Library/Caches/Cypress/12.17.4/Cypress.app/Contents/Resources/app/node_modules/tapable/lib/HookCodeFactory.js:33:10), :6:1)\n at Hook.CALL_ASYNC_DELEGATE [as _callAsync] (/Users/agoldis/Library/Caches/Cypress/12.17.4/Cypress.app/Contents/Resources/app/node_modules/tapable/lib/Hook.js:18:14)\n at /Users/agoldis/Library/Caches/Cypress/12.17.4/Cypress.app/Contents/Resources/app/node_modules/webpack/lib/Compiler.js:498:23\n at Compiler.emitRecords (/Users/agoldis/Library/Caches/Cypress/12.17.4/Cypress.app/Contents/Resources/app/node_modules/webpack/lib/Compiler.js:919:5)\n at /Users/agoldis/Library/Caches/Cypress/12.17.4/Cypress.app/Contents/Resources/app/node_modules/webpack/lib/Compiler.js:490:11\n at /Users/agoldis/Library/Caches/Cypress/12.17.4/Cypress.app/Contents/Resources/app/node_modules/webpack/lib/Compiler.js:885:14\n at Hook.eval [as callAsync] (eval at create (/Users/agoldis/Library/Caches/Cypress/12.17.4/Cypress.app/Contents/Resources/app/node_modules/tapable/lib/HookCodeFactory.js:33:10), :6:1)\n at Hook.CALL_ASYNC_DELEGATE [as _callAsync] (/Users/agoldis/Library/Caches/Cypress/12.17.4/Cypress.app/Contents/Resources/app/node_modules/tapable/lib/Hook.js:18:14)\n at /Users/agoldis/Library/Caches/Cypress/12.17.4/Cypress.app/Contents/Resources/app/node_modules/webpack/lib/Compiler.js:882:27\n at /Users/agoldis/Library/Caches/Cypress/12.17.4/Cypress.app/Contents/Resources/app/node_modules/neo-async/async.js:2818:7\n at done (/Users/agoldis/Library/Caches/Cypress/12.17.4/Cypress.app/Contents/Resources/app/node_modules/neo-async/async.js:3522:9)\n at alreadyWritten (/Users/agoldis/Library/Caches/Cypress/12.17.4/Cypress.app/Contents/Resources/app/node_modules/webpack/lib/Compiler.js:714:8)\n at /Users/agoldis/Library/Caches/Cypress/12.17.4/Cypress.app/Contents/Resources/app/node_modules/webpack/lib/Compiler.js:802:19\n at /Users/agoldis/Library/Caches/Cypress/12.17.4/Cypress.app/Contents/Resources/app/node_modules/graceful-fs/graceful-fs.js:123:16\n at /Users/agoldis/Library/Caches/Cypress/12.17.4/Cypress.app/Contents/Resources/app/packages/server/node_modules/graceful-fs/graceful-fs.js:123:16\n at /Users/agoldis/Library/Caches/Cypress/12.17.4/Cypress.app/Contents/Resources/app/packages/server/node_modules/graceful-fs/graceful-fs.js:123:16\n at FSReqCallback.readFileAfterClose [as oncomplete] (node:internal/fs/read_file_context:68:3)\n\nThis occurred while Cypress was compiling and bundling your test code. This is usually caused by:\n\n- A missing file or dependency\n- A syntax error in the file or one of its dependencies\n\nFix the error in your code and re-run your tests.","stats":{"failures":1,"tests":0,"passes":0,"pending":0,"suites":0,"skipped":0,"duration":0,"startedAt":"2023-09-18T23:38:21.625Z","endedAt":"2023-09-18T23:38:21.625Z"},"hooks":null,"tests":null,"video":"/Users/agoldis/cypress-cloud/examples/webapp/cypress/videos/crash.spec.js.mp4","reporterStats":null,"spec":{"fileExtension":".js","baseName":"crash.spec.js","fileName":"crash","specFileExtension":".spec.js","relativeToCommonRoot":"crash.spec.js","specType":"integration","name":"cypress/e2e/crash.spec.js","relative":"cypress/e2e/crash.spec.js","absolute":"/Users/agoldis/cypress-cloud/examples/webapp/cypress/e2e/crash.spec.js"},"shouldUploadVideo":true}],"browserPath":"","browserName":"electron","browserVersion":"106.0.5249.51","osName":"darwin","osVersion":"22.1.0","cypressVersion":"12.17.4","config":{"configFile":"/Users/agoldis/cypress-cloud/examples/webapp/cypress.config.ts","testingType":"e2e","video":true,"projectId":"l4zuz8","baseUrl":"https://todomvc.com/examples/vanillajs","supportFile":"/Users/agoldis/cypress-cloud/examples/webapp/cypress/support/e2e.ts","specPattern":"cypress/e2e/*.js","setupNodeEvents":"[Function setupNodeEvents]","projectRoot":"/Users/agoldis/cypress-cloud/examples/webapp","projectName":"webapp","repoRoot":"/Users/agoldis/cypress-cloud","rawJson":{"video":true,"e2e":{"projectId":"l4zuz8","baseUrl":"https://todomvc.com/examples/vanillajs","supportFile":"cypress/support/e2e.ts","specPattern":"cypress/e2e/*.js","setupNodeEvents":"[Function setupNodeEvents]"},"component":{"specPattern":["pages/__tests__/*.spec.tsx"],"setupNodeEvents":"[Function setupNodeEvents]","devServer":{"framework":"next","bundler":"webpack"}},"projectId":"l4zuz8","baseUrl":"https://todomvc.com/examples/vanillajs","supportFile":"cypress/support/e2e.ts","specPattern":"cypress/e2e/*.js","setupNodeEvents":"[Function setupNodeEvents]","envFile":{},"projectRoot":"/Users/agoldis/cypress-cloud/examples/webapp","projectName":"webapp","repoRoot":"/Users/agoldis/cypress-cloud"},"morgan":false,"isTextTerminal":true,"socketId":"tr1yo9weg8","report":true,"trashAssetsBeforeRuns":false,"animationDistanceThreshold":5,"arch":"arm64","blockHosts":null,"chromeWebSecurity":true,"clientCertificates":[],"defaultCommandTimeout":4000,"downloadsFolder":"/Users/agoldis/cypress-cloud/examples/webapp/cypress/downloads","env":{"currents_ws":59149},"execTimeout":60000,"experimentalCspAllowList":false,"experimentalFetchPolyfill":false,"experimentalInteractiveRunEvents":false,"experimentalRunAllSpecs":false,"experimentalMemoryManagement":false,"experimentalModifyObstructiveThirdPartyCode":false,"experimentalSkipDomainInjection":null,"experimentalOriginDependencies":false,"experimentalSourceRewriting":false,"experimentalSingleTabRunMode":false,"experimentalStudio":false,"experimentalWebKitSupport":false,"fileServerFolder":"/Users/agoldis/cypress-cloud/examples/webapp","fixturesFolder":"/Users/agoldis/cypress-cloud/examples/webapp/cypress/fixtures","excludeSpecPattern":"*.hot-update.js","includeShadowDom":false,"keystrokeDelay":0,"modifyObstructiveCode":true,"numTestsKeptInMemory":0,"platform":"darwin","pageLoadTimeout":60000,"port":59159,"redirectionLimit":20,"reporter":"spec","reporterOptions":null,"requestTimeout":5000,"resolvedNodePath":"/Users/agoldis/.nvm/versions/node/v18.16.1/bin/node","resolvedNodeVersion":"18.16.1","responseTimeout":30000,"retries":{"runMode":0,"openMode":0},"screenshotOnRunFailure":true,"screenshotsFolder":"/Users/agoldis/cypress-cloud/examples/webapp/cypress/screenshots","slowTestThreshold":10000,"scrollBehavior":"top","supportFolder":"/Users/agoldis/cypress-cloud/examples/webapp/cypress/support","taskTimeout":60000,"testIsolation":true,"userAgent":null,"videoCompression":32,"videosFolder":"/Users/agoldis/cypress-cloud/examples/webapp/cypress/videos","videoUploadOnPasses":true,"viewportHeight":660,"viewportWidth":1000,"waitForAnimations":true,"watchForFileChanges":false,"additionalIgnorePattern":[],"autoOpen":false,"browsers":[{"name":"chrome","family":"chromium","channel":"stable","displayName":"Chrome","version":"117.0.5938.88","path":"/Applications/Google Chrome.app/Contents/MacOS/Google Chrome","minSupportedVersion":64,"majorVersion":"117"},{"name":"firefox","family":"firefox","channel":"stable","displayName":"Firefox","version":"108.0","path":"/Applications/Firefox.app/Contents/MacOS/firefox","minSupportedVersion":86,"majorVersion":"108"},{"name":"electron","channel":"stable","family":"chromium","displayName":"Electron","version":"106.0.5249.51","path":"","majorVersion":106}],"clientRoute":"/__/","cypressBinaryRoot":"/Users/agoldis/Library/Caches/Cypress/12.17.4/Cypress.app/Contents/Resources/app","devServerPublicPathRoute":"/__cypress/src","hosts":null,"isInteractive":true,"namespace":"__cypress","reporterRoute":"/__cypress/reporter","socketIoCookie":"__socket","socketIoRoute":"/__socket","version":"12.17.4","cypressEnv":"production","resolved":{"animationDistanceThreshold":{"value":5,"from":"default"},"arch":{"value":"arm64","from":"default"},"baseUrl":{"value":"https://todomvc.com/examples/vanillajs","from":"config"},"blockHosts":{"value":null,"from":"default"},"chromeWebSecurity":{"value":true,"from":"default"},"clientCertificates":{"value":[],"from":"default"},"defaultCommandTimeout":{"value":4000,"from":"default"},"downloadsFolder":{"value":"cypress/downloads","from":"default"},"env":{"currents_ws":{"value":59149,"from":"cli"}},"execTimeout":{"value":60000,"from":"default"},"experimentalCspAllowList":{"value":false,"from":"default"},"experimentalFetchPolyfill":{"value":false,"from":"default"},"experimentalInteractiveRunEvents":{"value":false,"from":"default"},"experimentalRunAllSpecs":{"value":false,"from":"default"},"experimentalMemoryManagement":{"value":false,"from":"default"},"experimentalModifyObstructiveThirdPartyCode":{"value":false,"from":"default"},"experimentalSkipDomainInjection":{"value":null,"from":"default"},"experimentalOriginDependencies":{"value":false,"from":"default"},"experimentalSourceRewriting":{"value":false,"from":"default"},"experimentalSingleTabRunMode":{"value":false,"from":"default"},"experimentalStudio":{"value":false,"from":"default"},"experimentalWebKitSupport":{"value":false,"from":"default"},"fileServerFolder":{"value":"","from":"default"},"fixturesFolder":{"value":"cypress/fixtures","from":"default"},"excludeSpecPattern":{"value":"*.hot-update.js","from":"default"},"includeShadowDom":{"value":false,"from":"default"},"keystrokeDelay":{"value":0,"from":"default"},"modifyObstructiveCode":{"value":true,"from":"default"},"nodeVersion":{"from":"default"},"numTestsKeptInMemory":{"value":0,"from":"config"},"platform":{"value":"darwin","from":"default"},"pageLoadTimeout":{"value":60000,"from":"default"},"port":{"value":null,"from":"default"},"projectId":{"value":"l4zuz8","from":"config"},"redirectionLimit":{"value":20,"from":"default"},"reporter":{"value":"spec","from":"default"},"reporterOptions":{"value":null,"from":"default"},"requestTimeout":{"value":5000,"from":"default"},"resolvedNodePath":{"value":null,"from":"default"},"resolvedNodeVersion":{"value":null,"from":"default"},"responseTimeout":{"value":30000,"from":"default"},"retries":{"value":{"runMode":0,"openMode":0},"from":"default"},"screenshotOnRunFailure":{"value":true,"from":"default"},"screenshotsFolder":{"value":"cypress/screenshots","from":"default"},"slowTestThreshold":{"value":10000,"from":"default"},"scrollBehavior":{"value":"top","from":"default"},"supportFile":{"value":"cypress/support/e2e.ts","from":"config"},"supportFolder":{"value":false,"from":"default"},"taskTimeout":{"value":60000,"from":"default"},"testIsolation":{"value":true,"from":"default"},"trashAssetsBeforeRuns":{"value":false,"from":"cli"},"userAgent":{"value":null,"from":"default"},"video":{"value":true,"from":"default"},"videoCompression":{"value":32,"from":"default"},"videosFolder":{"value":"cypress/videos","from":"default"},"videoUploadOnPasses":{"value":true,"from":"default"},"viewportHeight":{"value":660,"from":"default"},"viewportWidth":{"value":1000,"from":"default"},"waitForAnimations":{"value":true,"from":"default"},"watchForFileChanges":{"value":false,"from":"config"},"specPattern":{"value":"cypress/e2e/*.js","from":"config"},"browsers":{"value":[{"name":"chrome","family":"chromium","channel":"stable","displayName":"Chrome","version":"117.0.5938.88","path":"/Applications/Google Chrome.app/Contents/MacOS/Google Chrome","minSupportedVersion":64,"majorVersion":"117"},{"name":"firefox","family":"firefox","channel":"stable","displayName":"Firefox","version":"108.0","path":"/Applications/Firefox.app/Contents/MacOS/firefox","minSupportedVersion":86,"majorVersion":"108"},{"name":"electron","channel":"stable","family":"chromium","displayName":"Electron","version":"106.0.5249.51","path":"","majorVersion":106,"isHeadless":true,"isHeaded":false}],"from":"runtime"},"hosts":{"value":null,"from":"default"},"isInteractive":{"value":true,"from":"default"},"configFile":{"value":"/Users/agoldis/cypress-cloud/examples/webapp/cypress.config.ts","from":"plugin"},"testingType":{"value":"e2e","from":"plugin"}},"remote":{"origin":"https://todomvc.com","strategy":"http","fileServer":null,"domainName":"todomvc.com","props":{"port":"443","protocol":"https:","subdomain":null,"domain":"todomvc","tld":"com"}},"browser":null,"specs":[],"proxyUrl":"http://localhost:59159","browserUrl":"https://todomvc.com/__/","reporterUrl":"https://todomvc.com/__cypress/reporter","proxyServer":"http://localhost:59159","state":{}}} \ No newline at end of file diff --git a/packages/cypress-cloud/lib/__tests__/fixtures/12.17.4/crash.spec.js/specAfter.json b/packages/cypress-cloud/lib/__tests__/fixtures/12.17.4/crash.spec.js/specAfter.json new file mode 100644 index 0000000..263c782 --- /dev/null +++ b/packages/cypress-cloud/lib/__tests__/fixtures/12.17.4/crash.spec.js/specAfter.json @@ -0,0 +1 @@ +{"error":"Oops...we found an error preparing this test file:\n\n > cypress/e2e/crash.spec.js\n\nThe error was:\n\nError: Webpack Compilation Error\nModule not found: Error: Can't resolve 'fff' in '/Users/agoldis/cypress-cloud/examples/webapp/cypress/e2e'\n at handle (/Users/agoldis/Library/Caches/Cypress/12.17.4/Cypress.app/Contents/Resources/app/packages/server/node_modules/@cypress/webpack-preprocessor/dist/index.js:212:23)\n at finalCallback (/Users/agoldis/Library/Caches/Cypress/12.17.4/Cypress.app/Contents/Resources/app/node_modules/webpack/lib/Compiler.js:441:32)\n at /Users/agoldis/Library/Caches/Cypress/12.17.4/Cypress.app/Contents/Resources/app/node_modules/webpack/lib/Compiler.js:505:17\n at /Users/agoldis/Library/Caches/Cypress/12.17.4/Cypress.app/Contents/Resources/app/node_modules/webpack/lib/HookWebpackError.js:68:3\n at Hook.eval [as callAsync] (eval at create (/Users/agoldis/Library/Caches/Cypress/12.17.4/Cypress.app/Contents/Resources/app/node_modules/tapable/lib/HookCodeFactory.js:33:10), :6:1)\n at Hook.CALL_ASYNC_DELEGATE [as _callAsync] (/Users/agoldis/Library/Caches/Cypress/12.17.4/Cypress.app/Contents/Resources/app/node_modules/tapable/lib/Hook.js:18:14)\n at Cache.storeBuildDependencies (/Users/agoldis/Library/Caches/Cypress/12.17.4/Cypress.app/Contents/Resources/app/node_modules/webpack/lib/Cache.js:122:37)\n at /Users/agoldis/Library/Caches/Cypress/12.17.4/Cypress.app/Contents/Resources/app/node_modules/webpack/lib/Compiler.js:501:19\n at Hook.eval [as callAsync] (eval at create (/Users/agoldis/Library/Caches/Cypress/12.17.4/Cypress.app/Contents/Resources/app/node_modules/tapable/lib/HookCodeFactory.js:33:10), :6:1)\n at Hook.CALL_ASYNC_DELEGATE [as _callAsync] (/Users/agoldis/Library/Caches/Cypress/12.17.4/Cypress.app/Contents/Resources/app/node_modules/tapable/lib/Hook.js:18:14)\n at /Users/agoldis/Library/Caches/Cypress/12.17.4/Cypress.app/Contents/Resources/app/node_modules/webpack/lib/Compiler.js:498:23\n at Compiler.emitRecords (/Users/agoldis/Library/Caches/Cypress/12.17.4/Cypress.app/Contents/Resources/app/node_modules/webpack/lib/Compiler.js:919:5)\n at /Users/agoldis/Library/Caches/Cypress/12.17.4/Cypress.app/Contents/Resources/app/node_modules/webpack/lib/Compiler.js:490:11\n at /Users/agoldis/Library/Caches/Cypress/12.17.4/Cypress.app/Contents/Resources/app/node_modules/webpack/lib/Compiler.js:885:14\n at Hook.eval [as callAsync] (eval at create (/Users/agoldis/Library/Caches/Cypress/12.17.4/Cypress.app/Contents/Resources/app/node_modules/tapable/lib/HookCodeFactory.js:33:10), :6:1)\n at Hook.CALL_ASYNC_DELEGATE [as _callAsync] (/Users/agoldis/Library/Caches/Cypress/12.17.4/Cypress.app/Contents/Resources/app/node_modules/tapable/lib/Hook.js:18:14)\n at /Users/agoldis/Library/Caches/Cypress/12.17.4/Cypress.app/Contents/Resources/app/node_modules/webpack/lib/Compiler.js:882:27\n at /Users/agoldis/Library/Caches/Cypress/12.17.4/Cypress.app/Contents/Resources/app/node_modules/neo-async/async.js:2818:7\n at done (/Users/agoldis/Library/Caches/Cypress/12.17.4/Cypress.app/Contents/Resources/app/node_modules/neo-async/async.js:3522:9)\n at alreadyWritten (/Users/agoldis/Library/Caches/Cypress/12.17.4/Cypress.app/Contents/Resources/app/node_modules/webpack/lib/Compiler.js:714:8)\n at /Users/agoldis/Library/Caches/Cypress/12.17.4/Cypress.app/Contents/Resources/app/node_modules/webpack/lib/Compiler.js:802:19\n at /Users/agoldis/Library/Caches/Cypress/12.17.4/Cypress.app/Contents/Resources/app/node_modules/graceful-fs/graceful-fs.js:123:16\n at /Users/agoldis/Library/Caches/Cypress/12.17.4/Cypress.app/Contents/Resources/app/packages/server/node_modules/graceful-fs/graceful-fs.js:123:16\n at /Users/agoldis/Library/Caches/Cypress/12.17.4/Cypress.app/Contents/Resources/app/packages/server/node_modules/graceful-fs/graceful-fs.js:123:16\n at FSReqCallback.readFileAfterClose [as oncomplete] (node:internal/fs/read_file_context:68:3)\n\nThis occurred while Cypress was compiling and bundling your test code. This is usually caused by:\n\n- A missing file or dependency\n- A syntax error in the file or one of its dependencies\n\nFix the error in your code and re-run your tests.","stats":{"failures":1,"tests":0,"passes":0,"pending":0,"suites":0,"skipped":0,"wallClockDuration":0,"wallClockStartedAt":"2023-09-18T23:38:21.625Z","wallClockEndedAt":"2023-09-18T23:38:21.625Z"},"hooks":null,"tests":null,"video":"/Users/agoldis/cypress-cloud/examples/webapp/cypress/videos/crash.spec.js.mp4","screenshots":[],"reporterStats":null,"spec":{"fileExtension":".js","baseName":"crash.spec.js","fileName":"crash","specFileExtension":".spec.js","relativeToCommonRoot":"crash.spec.js","specType":"integration","name":"cypress/e2e/crash.spec.js","relative":"cypress/e2e/crash.spec.js","absolute":"/Users/agoldis/cypress-cloud/examples/webapp/cypress/e2e/crash.spec.js"}} \ No newline at end of file diff --git a/packages/cypress-cloud/lib/__tests__/fixtures/12.17.4/failed.spec.js/runResult.json b/packages/cypress-cloud/lib/__tests__/fixtures/12.17.4/failed.spec.js/runResult.json new file mode 100644 index 0000000..7b21d11 --- /dev/null +++ b/packages/cypress-cloud/lib/__tests__/fixtures/12.17.4/failed.spec.js/runResult.json @@ -0,0 +1 @@ +{"status":"finished","startedTestsAt":"2023-09-18T23:38:39.001Z","endedTestsAt":"2023-09-18T23:38:42.813Z","totalDuration":1035,"totalSuites":2,"totalTests":3,"totalPassed":0,"totalPending":0,"totalFailed":2,"totalSkipped":1,"runs":[{"stats":{"suites":1,"tests":1,"passes":0,"pending":0,"skipped":0,"failures":1,"duration":627,"startedAt":"2023-09-18T23:38:39.001Z","endedAt":"2023-09-18T23:38:39.628Z"},"reporter":"spec","reporterStats":{"suites":1,"tests":1,"passes":0,"pending":0,"failures":1,"start":"2023-09-18T23:38:39.002Z","end":"2023-09-18T23:38:39.631Z","duration":629},"hooks":[{"hookName":"before each","title":["\"before each\" hook"],"body":"() => {\n const currentTest = cy.state(\"ctx\").currentTest;\n if (currentTest) {\n handleBefore(currentTest);\n }\n}"},{"hookName":"before each","title":["\"before each\" hook"],"body":"function () {\n cy.visit(\"/\");\n}"},{"hookName":"after each","title":["\"after each\" hook"],"body":"function () {\n self.sendLogsToPrinter(self.collectorState.getCurrentLogStackIndex(), self.collectorState.getCurrentTest());\n }"},{"hookName":"after each","title":["\"after each\" hook"],"body":"() => {\n const currentTest = cy.state(\"ctx\").currentTest;\n if (currentTest) {\n handleAfter(currentTest);\n }\n}"},{"hookName":"after all","title":["\"after all\" hook"],"body":"function () {\n // Need to wait otherwise some last commands get omitted from logs.\n cy.task(CONSTANTS.TASK_NAME_OUTPUT, null, {log: false});\n }"}],"tests":[{"title":["Failed","should fail"],"state":"failed","body":"function () {\n expect(fail).to.be.true;\n }","displayError":"ReferenceError: fail is not defined\n at Context.eval (webpack://web/./cypress/e2e/failed.spec.js:3:11)","attempts":[{"state":"failed","error":{"name":"ReferenceError","message":"fail is not defined","stack":" at Context.eval (webpack://web/./cypress/e2e/failed.spec.js:3:11)","codeFrame":{"line":3,"column":12,"originalFile":"cypress/e2e/failed.spec.js","relativeFile":"examples/webapp/cypress/e2e/failed.spec.js","absoluteFile":"/Users/agoldis/cypress-cloud/examples/webapp/cypress/e2e/failed.spec.js","frame":" 1 | describe(\"Failed\", function () {\n 2 | it(\"should fail\", function () {\n> 3 | expect(fail).to.be.true;\n | ^\n 4 | });\n 5 | });\n 6 | ","language":"js"}},"videoTimestamp":2213,"duration":609,"startedAt":"2023-09-18T23:38:39.005Z","screenshots":[{"name":null,"takenAt":"2023-09-18T23:38:39.368Z","path":"/Users/agoldis/cypress-cloud/examples/webapp/cypress/screenshots/failed.spec.js/Failed -- should fail (failed).png","height":1440,"width":2560}]}]}],"error":null,"video":"/Users/agoldis/cypress-cloud/examples/webapp/cypress/videos/failed.spec.js.mp4","spec":{"fileExtension":".js","baseName":"failed.spec.js","fileName":"failed","specFileExtension":".spec.js","relativeToCommonRoot":"failed.spec.js","specType":"integration","name":"cypress/e2e/failed.spec.js","relative":"cypress/e2e/failed.spec.js","absolute":"/Users/agoldis/cypress-cloud/examples/webapp/cypress/e2e/failed.spec.js"},"shouldUploadVideo":true}],"browserPath":"","browserName":"electron","browserVersion":"106.0.5249.51","osName":"darwin","osVersion":"22.1.0","cypressVersion":"12.17.4","config":{"configFile":"/Users/agoldis/cypress-cloud/examples/webapp/cypress.config.ts","testingType":"e2e","video":true,"projectId":"l4zuz8","baseUrl":"https://todomvc.com/examples/vanillajs","supportFile":"/Users/agoldis/cypress-cloud/examples/webapp/cypress/support/e2e.ts","specPattern":"cypress/e2e/*.js","setupNodeEvents":"[Function setupNodeEvents]","projectRoot":"/Users/agoldis/cypress-cloud/examples/webapp","projectName":"webapp","repoRoot":"/Users/agoldis/cypress-cloud","rawJson":{"video":true,"e2e":{"projectId":"l4zuz8","baseUrl":"https://todomvc.com/examples/vanillajs","supportFile":"cypress/support/e2e.ts","specPattern":"cypress/e2e/*.js","setupNodeEvents":"[Function setupNodeEvents]"},"component":{"specPattern":["pages/__tests__/*.spec.tsx"],"setupNodeEvents":"[Function setupNodeEvents]","devServer":{"framework":"next","bundler":"webpack"}},"projectId":"l4zuz8","baseUrl":"https://todomvc.com/examples/vanillajs","supportFile":"cypress/support/e2e.ts","specPattern":"cypress/e2e/*.js","setupNodeEvents":"[Function setupNodeEvents]","envFile":{},"projectRoot":"/Users/agoldis/cypress-cloud/examples/webapp","projectName":"webapp","repoRoot":"/Users/agoldis/cypress-cloud"},"morgan":false,"isTextTerminal":true,"socketId":"g4wfg2qk9f","report":true,"trashAssetsBeforeRuns":false,"animationDistanceThreshold":5,"arch":"arm64","blockHosts":null,"chromeWebSecurity":true,"clientCertificates":[],"defaultCommandTimeout":4000,"downloadsFolder":"/Users/agoldis/cypress-cloud/examples/webapp/cypress/downloads","env":{"currents_ws":59149},"execTimeout":60000,"experimentalCspAllowList":false,"experimentalFetchPolyfill":false,"experimentalInteractiveRunEvents":false,"experimentalRunAllSpecs":false,"experimentalMemoryManagement":false,"experimentalModifyObstructiveThirdPartyCode":false,"experimentalSkipDomainInjection":null,"experimentalOriginDependencies":false,"experimentalSourceRewriting":false,"experimentalSingleTabRunMode":false,"experimentalStudio":false,"experimentalWebKitSupport":false,"fileServerFolder":"/Users/agoldis/cypress-cloud/examples/webapp","fixturesFolder":"/Users/agoldis/cypress-cloud/examples/webapp/cypress/fixtures","excludeSpecPattern":"*.hot-update.js","includeShadowDom":false,"keystrokeDelay":0,"modifyObstructiveCode":true,"numTestsKeptInMemory":0,"platform":"darwin","pageLoadTimeout":60000,"port":59392,"redirectionLimit":20,"reporter":"spec","reporterOptions":null,"requestTimeout":5000,"resolvedNodePath":"/Users/agoldis/.nvm/versions/node/v18.16.1/bin/node","resolvedNodeVersion":"18.16.1","responseTimeout":30000,"retries":{"runMode":0,"openMode":0},"screenshotOnRunFailure":true,"screenshotsFolder":"/Users/agoldis/cypress-cloud/examples/webapp/cypress/screenshots","slowTestThreshold":10000,"scrollBehavior":"top","supportFolder":"/Users/agoldis/cypress-cloud/examples/webapp/cypress/support","taskTimeout":60000,"testIsolation":true,"userAgent":null,"videoCompression":32,"videosFolder":"/Users/agoldis/cypress-cloud/examples/webapp/cypress/videos","videoUploadOnPasses":true,"viewportHeight":660,"viewportWidth":1000,"waitForAnimations":true,"watchForFileChanges":false,"additionalIgnorePattern":[],"autoOpen":false,"browsers":[{"name":"chrome","family":"chromium","channel":"stable","displayName":"Chrome","version":"117.0.5938.88","path":"/Applications/Google Chrome.app/Contents/MacOS/Google Chrome","minSupportedVersion":64,"majorVersion":"117"},{"name":"firefox","family":"firefox","channel":"stable","displayName":"Firefox","version":"108.0","path":"/Applications/Firefox.app/Contents/MacOS/firefox","minSupportedVersion":86,"majorVersion":"108"},{"name":"electron","channel":"stable","family":"chromium","displayName":"Electron","version":"106.0.5249.51","path":"","majorVersion":106}],"clientRoute":"/__/","cypressBinaryRoot":"/Users/agoldis/Library/Caches/Cypress/12.17.4/Cypress.app/Contents/Resources/app","devServerPublicPathRoute":"/__cypress/src","hosts":null,"isInteractive":true,"namespace":"__cypress","reporterRoute":"/__cypress/reporter","socketIoCookie":"__socket","socketIoRoute":"/__socket","version":"12.17.4","cypressEnv":"production","resolved":{"animationDistanceThreshold":{"value":5,"from":"default"},"arch":{"value":"arm64","from":"default"},"baseUrl":{"value":"https://todomvc.com/examples/vanillajs","from":"config"},"blockHosts":{"value":null,"from":"default"},"chromeWebSecurity":{"value":true,"from":"default"},"clientCertificates":{"value":[],"from":"default"},"defaultCommandTimeout":{"value":4000,"from":"default"},"downloadsFolder":{"value":"cypress/downloads","from":"default"},"env":{"currents_ws":{"value":59149,"from":"cli"}},"execTimeout":{"value":60000,"from":"default"},"experimentalCspAllowList":{"value":false,"from":"default"},"experimentalFetchPolyfill":{"value":false,"from":"default"},"experimentalInteractiveRunEvents":{"value":false,"from":"default"},"experimentalRunAllSpecs":{"value":false,"from":"default"},"experimentalMemoryManagement":{"value":false,"from":"default"},"experimentalModifyObstructiveThirdPartyCode":{"value":false,"from":"default"},"experimentalSkipDomainInjection":{"value":null,"from":"default"},"experimentalOriginDependencies":{"value":false,"from":"default"},"experimentalSourceRewriting":{"value":false,"from":"default"},"experimentalSingleTabRunMode":{"value":false,"from":"default"},"experimentalStudio":{"value":false,"from":"default"},"experimentalWebKitSupport":{"value":false,"from":"default"},"fileServerFolder":{"value":"","from":"default"},"fixturesFolder":{"value":"cypress/fixtures","from":"default"},"excludeSpecPattern":{"value":"*.hot-update.js","from":"default"},"includeShadowDom":{"value":false,"from":"default"},"keystrokeDelay":{"value":0,"from":"default"},"modifyObstructiveCode":{"value":true,"from":"default"},"nodeVersion":{"from":"default"},"numTestsKeptInMemory":{"value":0,"from":"config"},"platform":{"value":"darwin","from":"default"},"pageLoadTimeout":{"value":60000,"from":"default"},"port":{"value":null,"from":"default"},"projectId":{"value":"l4zuz8","from":"config"},"redirectionLimit":{"value":20,"from":"default"},"reporter":{"value":"spec","from":"default"},"reporterOptions":{"value":null,"from":"default"},"requestTimeout":{"value":5000,"from":"default"},"resolvedNodePath":{"value":null,"from":"default"},"resolvedNodeVersion":{"value":null,"from":"default"},"responseTimeout":{"value":30000,"from":"default"},"retries":{"value":{"runMode":0,"openMode":0},"from":"default"},"screenshotOnRunFailure":{"value":true,"from":"default"},"screenshotsFolder":{"value":"cypress/screenshots","from":"default"},"slowTestThreshold":{"value":10000,"from":"default"},"scrollBehavior":{"value":"top","from":"default"},"supportFile":{"value":"cypress/support/e2e.ts","from":"config"},"supportFolder":{"value":false,"from":"default"},"taskTimeout":{"value":60000,"from":"default"},"testIsolation":{"value":true,"from":"default"},"trashAssetsBeforeRuns":{"value":false,"from":"cli"},"userAgent":{"value":null,"from":"default"},"video":{"value":true,"from":"default"},"videoCompression":{"value":32,"from":"default"},"videosFolder":{"value":"cypress/videos","from":"default"},"videoUploadOnPasses":{"value":true,"from":"default"},"viewportHeight":{"value":660,"from":"default"},"viewportWidth":{"value":1000,"from":"default"},"waitForAnimations":{"value":true,"from":"default"},"watchForFileChanges":{"value":false,"from":"config"},"specPattern":{"value":"cypress/e2e/*.js","from":"config"},"browsers":{"value":[{"name":"chrome","family":"chromium","channel":"stable","displayName":"Chrome","version":"117.0.5938.88","path":"/Applications/Google Chrome.app/Contents/MacOS/Google Chrome","minSupportedVersion":64,"majorVersion":"117"},{"name":"firefox","family":"firefox","channel":"stable","displayName":"Firefox","version":"108.0","path":"/Applications/Firefox.app/Contents/MacOS/firefox","minSupportedVersion":86,"majorVersion":"108"},{"name":"electron","channel":"stable","family":"chromium","displayName":"Electron","version":"106.0.5249.51","path":"","majorVersion":106,"isHeadless":true,"isHeaded":false}],"from":"runtime"},"hosts":{"value":null,"from":"default"},"isInteractive":{"value":true,"from":"default"},"configFile":{"value":"/Users/agoldis/cypress-cloud/examples/webapp/cypress.config.ts","from":"plugin"},"testingType":{"value":"e2e","from":"plugin"}},"remote":{"origin":"https://todomvc.com","strategy":"http","fileServer":null,"domainName":"todomvc.com","props":{"port":"443","protocol":"https:","subdomain":null,"domain":"todomvc","tld":"com"}},"browser":null,"specs":[],"proxyUrl":"http://localhost:59392","browserUrl":"https://todomvc.com/__/","reporterUrl":"https://todomvc.com/__cypress/reporter","proxyServer":"http://localhost:59392","state":{}}} \ No newline at end of file diff --git a/packages/cypress-cloud/lib/__tests__/fixtures/12.17.4/failed.spec.js/screenshot_01.json b/packages/cypress-cloud/lib/__tests__/fixtures/12.17.4/failed.spec.js/screenshot_01.json new file mode 100644 index 0000000..f53a98c --- /dev/null +++ b/packages/cypress-cloud/lib/__tests__/fixtures/12.17.4/failed.spec.js/screenshot_01.json @@ -0,0 +1 @@ +{"testAttemptIndex":0,"size":329668,"takenAt":"2023-09-18T23:38:39.368Z","dimensions":{"width":2560,"height":1440},"multipart":false,"specName":"failed.spec.js","testFailure":true,"path":"/Users/agoldis/cypress-cloud/examples/webapp/cypress/screenshots/failed.spec.js/Failed -- should fail (failed).png","scaled":true,"blackout":[],"duration":222,"testId":"r3","height":1440,"width":2560} \ No newline at end of file diff --git a/packages/cypress-cloud/lib/__tests__/fixtures/12.17.4/failed.spec.js/specAfter.json b/packages/cypress-cloud/lib/__tests__/fixtures/12.17.4/failed.spec.js/specAfter.json new file mode 100644 index 0000000..fd05878 --- /dev/null +++ b/packages/cypress-cloud/lib/__tests__/fixtures/12.17.4/failed.spec.js/specAfter.json @@ -0,0 +1 @@ +{"stats":{"suites":1,"tests":1,"passes":0,"pending":0,"skipped":0,"failures":1,"wallClockStartedAt":"2023-09-18T23:38:39.001Z","wallClockEndedAt":"2023-09-18T23:38:39.628Z","wallClockDuration":627},"reporter":"spec","reporterStats":{"suites":1,"tests":1,"passes":0,"pending":0,"failures":1,"start":"2023-09-18T23:38:39.002Z","end":"2023-09-18T23:38:39.631Z","duration":629},"hooks":[{"hookId":"h1","hookName":"before each","title":["\"before each\" hook"],"body":"() => {\n const currentTest = cy.state(\"ctx\").currentTest;\n if (currentTest) {\n handleBefore(currentTest);\n }\n}"},{"hookId":"h2","hookName":"before each","title":["\"before each\" hook"],"body":"function () {\n cy.visit(\"/\");\n}"},{"hookId":"h4","hookName":"after each","title":["\"after each\" hook"],"body":"function () {\n self.sendLogsToPrinter(self.collectorState.getCurrentLogStackIndex(), self.collectorState.getCurrentTest());\n }"},{"hookId":"h5","hookName":"after each","title":["\"after each\" hook"],"body":"() => {\n const currentTest = cy.state(\"ctx\").currentTest;\n if (currentTest) {\n handleAfter(currentTest);\n }\n}"},{"hookId":"h3","hookName":"after all","title":["\"after all\" hook"],"body":"function () {\n // Need to wait otherwise some last commands get omitted from logs.\n cy.task(CONSTANTS.TASK_NAME_OUTPUT, null, {log: false});\n }"}],"tests":[{"testId":"r3","title":["Failed","should fail"],"state":"failed","body":"function () {\n expect(fail).to.be.true;\n }","displayError":"ReferenceError: fail is not defined\n at Context.eval (webpack://web/./cypress/e2e/failed.spec.js:3:11)","attempts":[{"state":"failed","error":{"name":"ReferenceError","message":"fail is not defined","stack":" at Context.eval (webpack://web/./cypress/e2e/failed.spec.js:3:11)","codeFrame":{"line":3,"column":12,"originalFile":"cypress/e2e/failed.spec.js","relativeFile":"examples/webapp/cypress/e2e/failed.spec.js","absoluteFile":"/Users/agoldis/cypress-cloud/examples/webapp/cypress/e2e/failed.spec.js","frame":" 1 | describe(\"Failed\", function () {\n 2 | it(\"should fail\", function () {\n> 3 | expect(fail).to.be.true;\n | ^\n 4 | });\n 5 | });\n 6 | ","language":"js"}},"timings":{"lifecycle":28,"before each":[{"hookId":"h1","fnDuration":12,"afterFnDuration":0},{"hookId":"h2","fnDuration":318,"afterFnDuration":1}],"test":{"fnDuration":1,"afterFnDuration":224},"after each":[{"hookId":"h4","fnDuration":12,"afterFnDuration":0},{"hookId":"h5","fnDuration":7,"afterFnDuration":0}],"after all":[{"hookId":"h3","fnDuration":3,"afterFnDuration":0}]},"failedFromHookId":null,"wallClockStartedAt":"2023-09-18T23:38:39.005Z","wallClockDuration":609,"videoTimestamp":2213}]}],"error":null,"video":"/Users/agoldis/cypress-cloud/examples/webapp/cypress/videos/failed.spec.js.mp4","screenshots":[{"screenshotId":"c68ku","name":null,"testId":"r3","testAttemptIndex":0,"takenAt":"2023-09-18T23:38:39.368Z","path":"/Users/agoldis/cypress-cloud/examples/webapp/cypress/screenshots/failed.spec.js/Failed -- should fail (failed).png","height":1440,"width":2560}],"spec":{"fileExtension":".js","baseName":"failed.spec.js","fileName":"failed","specFileExtension":".spec.js","relativeToCommonRoot":"failed.spec.js","specType":"integration","name":"cypress/e2e/failed.spec.js","relative":"cypress/e2e/failed.spec.js","absolute":"/Users/agoldis/cypress-cloud/examples/webapp/cypress/e2e/failed.spec.js"}} \ No newline at end of file diff --git a/packages/cypress-cloud/lib/__tests__/fixtures/12.17.4/failed.spec.js/testAfter_00.json b/packages/cypress-cloud/lib/__tests__/fixtures/12.17.4/failed.spec.js/testAfter_00.json new file mode 100644 index 0000000..36ce740 --- /dev/null +++ b/packages/cypress-cloud/lib/__tests__/fixtures/12.17.4/failed.spec.js/testAfter_00.json @@ -0,0 +1 @@ +{"async":false,"body":"function () {\n expect(fail).to.be.true;\n }","duration":585,"err":{"message":"fail is not defined","name":"ReferenceError","stack":"ReferenceError: fail is not defined\n at Context.eval (webpack://web/./cypress/e2e/failed.spec.js:3:11)","parsedStack":[{"message":"ReferenceError: fail is not defined","whitespace":""},{"function":"Context.eval","fileUrl":"https://todomvc.com/__cypress/tests?p=cypress/e2e/failed.spec.js","originalFile":"webpack://web/./cypress/e2e/failed.spec.js","relativeFile":"cypress/e2e/failed.spec.js","absoluteFile":"/Users/agoldis/cypress-cloud/examples/webapp/cypress/e2e/failed.spec.js","line":3,"column":11,"whitespace":" "}],"codeFrame":{"line":3,"column":12,"originalFile":"cypress/e2e/failed.spec.js","relativeFile":"examples/webapp/cypress/e2e/failed.spec.js","absoluteFile":"/Users/agoldis/cypress-cloud/examples/webapp/cypress/e2e/failed.spec.js","frame":" 1 | describe(\"Failed\", function () {\n 2 | it(\"should fail\", function () {\n> 3 | expect(fail).to.be.true;\n | ^\n 4 | });\n 5 | });\n 6 | ","language":"js"}},"final":false,"hooks":[],"id":"r3","invocationDetails":{"function":"Suite.eval","fileUrl":"https://todomvc.com/__cypress/tests?p=cypress/e2e/failed.spec.js","originalFile":"webpack://web/./cypress/e2e/failed.spec.js","relativeFile":"cypress/e2e/failed.spec.js","absoluteFile":"/Users/agoldis/cypress-cloud/examples/webapp/cypress/e2e/failed.spec.js","line":2,"column":2,"whitespace":" ","stack":"Error\n at Suite.eval (https://todomvc.com/__cypress/tests?p=cypress/e2e/failed.spec.js:10:3)\n at eval (https://todomvc.com/__cypress/tests?p=cypress/e2e/failed.spec.js:9:1)\n at eval (https://todomvc.com/__cypress/tests?p=cypress/e2e/failed.spec.js:14:12)\n at eval ()"},"order":1,"pending":false,"retries":0,"state":"failed","sync":true,"timedOut":false,"timings":{"lifecycle":28,"before each":[{"hookId":"h1","fnDuration":12,"afterFnDuration":0},{"hookId":"h2","fnDuration":318,"afterFnDuration":1}],"test":{"fnDuration":1,"afterFnDuration":224},"after each":[{"hookId":"h4","fnDuration":12,"afterFnDuration":0}]},"type":"test","wallClockStartedAt":"2023-09-18T23:38:39.005Z","title":"should fail","currentRetry":0,"fullTitle":"Failed should fail"} \ No newline at end of file diff --git a/packages/cypress-cloud/lib/__tests__/fixtures/12.17.4/passed.spec.js/runResult.json b/packages/cypress-cloud/lib/__tests__/fixtures/12.17.4/passed.spec.js/runResult.json new file mode 100644 index 0000000..bb71cd1 --- /dev/null +++ b/packages/cypress-cloud/lib/__tests__/fixtures/12.17.4/passed.spec.js/runResult.json @@ -0,0 +1,389 @@ +{ + "status": "finished", + "startedTestsAt": "2023-09-18T23:38:26.949Z", + "endedTestsAt": "2023-09-18T23:38:30.846Z", + "totalDuration": 1023, + "totalSuites": 2, + "totalTests": 2, + "totalPassed": 1, + "totalPending": 1, + "totalFailed": 0, + "totalSkipped": 0, + "runs": [ + { + "stats": { + "suites": 1, + "tests": 1, + "passes": 1, + "pending": 0, + "skipped": 0, + "failures": 0, + "duration": 981, + "startedAt": "2023-09-18T23:38:26.949Z", + "endedAt": "2023-09-18T23:38:27.930Z" + }, + "reporter": "spec", + "reporterStats": { + "suites": 1, + "tests": 1, + "passes": 1, + "pending": 0, + "failures": 0, + "start": "2023-09-18T23:38:26.951Z", + "end": "2023-09-18T23:38:27.932Z", + "duration": 981 + }, + "hooks": [ + { + "hookName": "before each", + "title": ["\"before each\" hook"], + "body": "() => {\n const currentTest = cy.state(\"ctx\").currentTest;\n if (currentTest) {\n handleBefore(currentTest);\n }\n}" + }, + { + "hookName": "before each", + "title": ["\"before each\" hook"], + "body": "function () {\n cy.visit(\"/\");\n}" + }, + { + "hookName": "after each", + "title": ["\"after each\" hook"], + "body": "function () {\n self.sendLogsToPrinter(self.collectorState.getCurrentLogStackIndex(), self.collectorState.getCurrentTest());\n }" + }, + { + "hookName": "after each", + "title": ["\"after each\" hook"], + "body": "() => {\n const currentTest = cy.state(\"ctx\").currentTest;\n if (currentTest) {\n handleAfter(currentTest);\n }\n}" + }, + { + "hookName": "after all", + "title": ["\"after all\" hook"], + "body": "function () {\n // Need to wait otherwise some last commands get omitted from logs.\n cy.task(CONSTANTS.TASK_NAME_OUTPUT, null, {log: false});\n }" + } + ], + "tests": [ + { + "title": ["Passed", "should pass"], + "state": "passed", + "body": "function () {\n cy.visit(\"/\");\n cy.screenshot({\n name: \"Customer screenshot\"\n });\n expect(true).to.be.true;\n }", + "displayError": null, + "attempts": [ + { + "state": "passed", + "error": null, + "videoTimestamp": 2102, + "duration": 976, + "startedAt": "2023-09-18T23:38:26.953Z", + "screenshots": [ + { + "name": "custom-screenshot", + "takenAt": "2023-09-18T23:38:27.376Z", + "path": "/Users/agoldis/cypress-cloud/examples/webapp/cypress/screenshots/passed.spec.js/Passed -- should pass.png", + "height": 1320, + "width": 2000 + } + ] + } + ] + } + ], + "error": null, + "video": "/Users/agoldis/cypress-cloud/examples/webapp/cypress/videos/passed.spec.js.mp4", + "spec": { + "fileExtension": ".js", + "baseName": "passed.spec.js", + "fileName": "passed", + "specFileExtension": ".spec.js", + "relativeToCommonRoot": "passed.spec.js", + "specType": "integration", + "name": "cypress/e2e/passed.spec.js", + "relative": "cypress/e2e/passed.spec.js", + "absolute": "/Users/agoldis/cypress-cloud/examples/webapp/cypress/e2e/passed.spec.js" + }, + "shouldUploadVideo": true + } + ], + "browserPath": "", + "browserName": "electron", + "browserVersion": "106.0.5249.51", + "osName": "darwin", + "osVersion": "22.1.0", + "cypressVersion": "12.17.4", + "config": { + "configFile": "/Users/agoldis/cypress-cloud/examples/webapp/cypress.config.ts", + "testingType": "e2e", + "video": true, + "projectId": "l4zuz8", + "baseUrl": "https://todomvc.com/examples/vanillajs", + "supportFile": "/Users/agoldis/cypress-cloud/examples/webapp/cypress/support/e2e.ts", + "specPattern": "cypress/e2e/*.js", + "setupNodeEvents": "[Function setupNodeEvents]", + "projectRoot": "/Users/agoldis/cypress-cloud/examples/webapp", + "projectName": "webapp", + "repoRoot": "/Users/agoldis/cypress-cloud", + "rawJson": { + "video": true, + "e2e": { + "projectId": "l4zuz8", + "baseUrl": "https://todomvc.com/examples/vanillajs", + "supportFile": "cypress/support/e2e.ts", + "specPattern": "cypress/e2e/*.js", + "setupNodeEvents": "[Function setupNodeEvents]" + }, + "component": { + "specPattern": ["pages/__tests__/*.spec.tsx"], + "setupNodeEvents": "[Function setupNodeEvents]", + "devServer": { "framework": "next", "bundler": "webpack" } + }, + "projectId": "l4zuz8", + "baseUrl": "https://todomvc.com/examples/vanillajs", + "supportFile": "cypress/support/e2e.ts", + "specPattern": "cypress/e2e/*.js", + "setupNodeEvents": "[Function setupNodeEvents]", + "envFile": {}, + "projectRoot": "/Users/agoldis/cypress-cloud/examples/webapp", + "projectName": "webapp", + "repoRoot": "/Users/agoldis/cypress-cloud" + }, + "morgan": false, + "isTextTerminal": true, + "socketId": "ekjyy7v5f7", + "report": true, + "trashAssetsBeforeRuns": false, + "animationDistanceThreshold": 5, + "arch": "arm64", + "blockHosts": null, + "chromeWebSecurity": true, + "clientCertificates": [], + "defaultCommandTimeout": 4000, + "downloadsFolder": "/Users/agoldis/cypress-cloud/examples/webapp/cypress/downloads", + "env": { "currents_ws": 59149 }, + "execTimeout": 60000, + "experimentalCspAllowList": false, + "experimentalFetchPolyfill": false, + "experimentalInteractiveRunEvents": false, + "experimentalRunAllSpecs": false, + "experimentalMemoryManagement": false, + "experimentalModifyObstructiveThirdPartyCode": false, + "experimentalSkipDomainInjection": null, + "experimentalOriginDependencies": false, + "experimentalSourceRewriting": false, + "experimentalSingleTabRunMode": false, + "experimentalStudio": false, + "experimentalWebKitSupport": false, + "fileServerFolder": "/Users/agoldis/cypress-cloud/examples/webapp", + "fixturesFolder": "/Users/agoldis/cypress-cloud/examples/webapp/cypress/fixtures", + "excludeSpecPattern": "*.hot-update.js", + "includeShadowDom": false, + "keystrokeDelay": 0, + "modifyObstructiveCode": true, + "numTestsKeptInMemory": 0, + "platform": "darwin", + "pageLoadTimeout": 60000, + "port": 59278, + "redirectionLimit": 20, + "reporter": "spec", + "reporterOptions": null, + "requestTimeout": 5000, + "resolvedNodePath": "/Users/agoldis/.nvm/versions/node/v18.16.1/bin/node", + "resolvedNodeVersion": "18.16.1", + "responseTimeout": 30000, + "retries": { "runMode": 0, "openMode": 0 }, + "screenshotOnRunFailure": true, + "screenshotsFolder": "/Users/agoldis/cypress-cloud/examples/webapp/cypress/screenshots", + "slowTestThreshold": 10000, + "scrollBehavior": "top", + "supportFolder": "/Users/agoldis/cypress-cloud/examples/webapp/cypress/support", + "taskTimeout": 60000, + "testIsolation": true, + "userAgent": null, + "videoCompression": 32, + "videosFolder": "/Users/agoldis/cypress-cloud/examples/webapp/cypress/videos", + "videoUploadOnPasses": true, + "viewportHeight": 660, + "viewportWidth": 1000, + "waitForAnimations": true, + "watchForFileChanges": false, + "additionalIgnorePattern": [], + "autoOpen": false, + "browsers": [ + { + "name": "chrome", + "family": "chromium", + "channel": "stable", + "displayName": "Chrome", + "version": "117.0.5938.88", + "path": "/Applications/Google Chrome.app/Contents/MacOS/Google Chrome", + "minSupportedVersion": 64, + "majorVersion": "117" + }, + { + "name": "firefox", + "family": "firefox", + "channel": "stable", + "displayName": "Firefox", + "version": "108.0", + "path": "/Applications/Firefox.app/Contents/MacOS/firefox", + "minSupportedVersion": 86, + "majorVersion": "108" + }, + { + "name": "electron", + "channel": "stable", + "family": "chromium", + "displayName": "Electron", + "version": "106.0.5249.51", + "path": "", + "majorVersion": 106 + } + ], + "clientRoute": "/__/", + "cypressBinaryRoot": "/Users/agoldis/Library/Caches/Cypress/12.17.4/Cypress.app/Contents/Resources/app", + "devServerPublicPathRoute": "/__cypress/src", + "hosts": null, + "isInteractive": true, + "namespace": "__cypress", + "reporterRoute": "/__cypress/reporter", + "socketIoCookie": "__socket", + "socketIoRoute": "/__socket", + "version": "12.17.4", + "cypressEnv": "production", + "resolved": { + "animationDistanceThreshold": { "value": 5, "from": "default" }, + "arch": { "value": "arm64", "from": "default" }, + "baseUrl": { + "value": "https://todomvc.com/examples/vanillajs", + "from": "config" + }, + "blockHosts": { "value": null, "from": "default" }, + "chromeWebSecurity": { "value": true, "from": "default" }, + "clientCertificates": { "value": [], "from": "default" }, + "defaultCommandTimeout": { "value": 4000, "from": "default" }, + "downloadsFolder": { "value": "cypress/downloads", "from": "default" }, + "env": { "currents_ws": { "value": 59149, "from": "cli" } }, + "execTimeout": { "value": 60000, "from": "default" }, + "experimentalCspAllowList": { "value": false, "from": "default" }, + "experimentalFetchPolyfill": { "value": false, "from": "default" }, + "experimentalInteractiveRunEvents": { "value": false, "from": "default" }, + "experimentalRunAllSpecs": { "value": false, "from": "default" }, + "experimentalMemoryManagement": { "value": false, "from": "default" }, + "experimentalModifyObstructiveThirdPartyCode": { + "value": false, + "from": "default" + }, + "experimentalSkipDomainInjection": { "value": null, "from": "default" }, + "experimentalOriginDependencies": { "value": false, "from": "default" }, + "experimentalSourceRewriting": { "value": false, "from": "default" }, + "experimentalSingleTabRunMode": { "value": false, "from": "default" }, + "experimentalStudio": { "value": false, "from": "default" }, + "experimentalWebKitSupport": { "value": false, "from": "default" }, + "fileServerFolder": { "value": "", "from": "default" }, + "fixturesFolder": { "value": "cypress/fixtures", "from": "default" }, + "excludeSpecPattern": { "value": "*.hot-update.js", "from": "default" }, + "includeShadowDom": { "value": false, "from": "default" }, + "keystrokeDelay": { "value": 0, "from": "default" }, + "modifyObstructiveCode": { "value": true, "from": "default" }, + "nodeVersion": { "from": "default" }, + "numTestsKeptInMemory": { "value": 0, "from": "config" }, + "platform": { "value": "darwin", "from": "default" }, + "pageLoadTimeout": { "value": 60000, "from": "default" }, + "port": { "value": null, "from": "default" }, + "projectId": { "value": "l4zuz8", "from": "config" }, + "redirectionLimit": { "value": 20, "from": "default" }, + "reporter": { "value": "spec", "from": "default" }, + "reporterOptions": { "value": null, "from": "default" }, + "requestTimeout": { "value": 5000, "from": "default" }, + "resolvedNodePath": { "value": null, "from": "default" }, + "resolvedNodeVersion": { "value": null, "from": "default" }, + "responseTimeout": { "value": 30000, "from": "default" }, + "retries": { + "value": { "runMode": 0, "openMode": 0 }, + "from": "default" + }, + "screenshotOnRunFailure": { "value": true, "from": "default" }, + "screenshotsFolder": { + "value": "cypress/screenshots", + "from": "default" + }, + "slowTestThreshold": { "value": 10000, "from": "default" }, + "scrollBehavior": { "value": "top", "from": "default" }, + "supportFile": { "value": "cypress/support/e2e.ts", "from": "config" }, + "supportFolder": { "value": false, "from": "default" }, + "taskTimeout": { "value": 60000, "from": "default" }, + "testIsolation": { "value": true, "from": "default" }, + "trashAssetsBeforeRuns": { "value": false, "from": "cli" }, + "userAgent": { "value": null, "from": "default" }, + "video": { "value": true, "from": "default" }, + "videoCompression": { "value": 32, "from": "default" }, + "videosFolder": { "value": "cypress/videos", "from": "default" }, + "videoUploadOnPasses": { "value": true, "from": "default" }, + "viewportHeight": { "value": 660, "from": "default" }, + "viewportWidth": { "value": 1000, "from": "default" }, + "waitForAnimations": { "value": true, "from": "default" }, + "watchForFileChanges": { "value": false, "from": "config" }, + "specPattern": { "value": "cypress/e2e/*.js", "from": "config" }, + "browsers": { + "value": [ + { + "name": "chrome", + "family": "chromium", + "channel": "stable", + "displayName": "Chrome", + "version": "117.0.5938.88", + "path": "/Applications/Google Chrome.app/Contents/MacOS/Google Chrome", + "minSupportedVersion": 64, + "majorVersion": "117" + }, + { + "name": "firefox", + "family": "firefox", + "channel": "stable", + "displayName": "Firefox", + "version": "108.0", + "path": "/Applications/Firefox.app/Contents/MacOS/firefox", + "minSupportedVersion": 86, + "majorVersion": "108" + }, + { + "name": "electron", + "channel": "stable", + "family": "chromium", + "displayName": "Electron", + "version": "106.0.5249.51", + "path": "", + "majorVersion": 106, + "isHeadless": true, + "isHeaded": false + } + ], + "from": "runtime" + }, + "hosts": { "value": null, "from": "default" }, + "isInteractive": { "value": true, "from": "default" }, + "configFile": { + "value": "/Users/agoldis/cypress-cloud/examples/webapp/cypress.config.ts", + "from": "plugin" + }, + "testingType": { "value": "e2e", "from": "plugin" } + }, + "remote": { + "origin": "https://todomvc.com", + "strategy": "http", + "fileServer": null, + "domainName": "todomvc.com", + "props": { + "port": "443", + "protocol": "https:", + "subdomain": null, + "domain": "todomvc", + "tld": "com" + } + }, + "browser": null, + "specs": [], + "proxyUrl": "http://localhost:59278", + "browserUrl": "https://todomvc.com/__/", + "reporterUrl": "https://todomvc.com/__cypress/reporter", + "proxyServer": "http://localhost:59278", + "state": {} + } +} diff --git a/packages/cypress-cloud/lib/__tests__/fixtures/12.17.4/passed.spec.js/screenshot_01.json b/packages/cypress-cloud/lib/__tests__/fixtures/12.17.4/passed.spec.js/screenshot_01.json new file mode 100644 index 0000000..f1175eb --- /dev/null +++ b/packages/cypress-cloud/lib/__tests__/fixtures/12.17.4/passed.spec.js/screenshot_01.json @@ -0,0 +1,17 @@ +{ + "testAttemptIndex": 0, + "size": 236374, + "takenAt": "2023-09-18T23:38:27.376Z", + "dimensions": { "width": 2000, "height": 1320 }, + "multipart": true, + "pixelRatio": 2, + "name": "custom-screenshot", + "specName": "passed.spec.js", + "path": "/Users/agoldis/cypress-cloud/examples/webapp/cypress/screenshots/passed.spec.js/Passed -- should pass.png", + "scaled": false, + "blackout": [], + "duration": 529, + "testId": "r3", + "height": 1320, + "width": 2000 +} diff --git a/packages/cypress-cloud/lib/__tests__/fixtures/12.17.4/passed.spec.js/specAfter.json b/packages/cypress-cloud/lib/__tests__/fixtures/12.17.4/passed.spec.js/specAfter.json new file mode 100644 index 0000000..6766469 --- /dev/null +++ b/packages/cypress-cloud/lib/__tests__/fixtures/12.17.4/passed.spec.js/specAfter.json @@ -0,0 +1,115 @@ +{ + "stats": { + "suites": 1, + "tests": 1, + "passes": 1, + "pending": 0, + "skipped": 0, + "failures": 0, + "wallClockStartedAt": "2023-09-18T23:38:26.949Z", + "wallClockEndedAt": "2023-09-18T23:38:27.930Z", + "wallClockDuration": 981 + }, + "reporter": "spec", + "reporterStats": { + "suites": 1, + "tests": 1, + "passes": 1, + "pending": 0, + "failures": 0, + "start": "2023-09-18T23:38:26.951Z", + "end": "2023-09-18T23:38:27.932Z", + "duration": 981 + }, + "hooks": [ + { + "hookId": "h1", + "hookName": "before each", + "title": ["\"before each\" hook"], + "body": "() => {\n const currentTest = cy.state(\"ctx\").currentTest;\n if (currentTest) {\n handleBefore(currentTest);\n }\n}" + }, + { + "hookId": "h2", + "hookName": "before each", + "title": ["\"before each\" hook"], + "body": "function () {\n cy.visit(\"/\");\n}" + }, + { + "hookId": "h4", + "hookName": "after each", + "title": ["\"after each\" hook"], + "body": "function () {\n self.sendLogsToPrinter(self.collectorState.getCurrentLogStackIndex(), self.collectorState.getCurrentTest());\n }" + }, + { + "hookId": "h5", + "hookName": "after each", + "title": ["\"after each\" hook"], + "body": "() => {\n const currentTest = cy.state(\"ctx\").currentTest;\n if (currentTest) {\n handleAfter(currentTest);\n }\n}" + }, + { + "hookId": "h3", + "hookName": "after all", + "title": ["\"after all\" hook"], + "body": "function () {\n // Need to wait otherwise some last commands get omitted from logs.\n cy.task(CONSTANTS.TASK_NAME_OUTPUT, null, {log: false});\n }" + } + ], + "tests": [ + { + "testId": "r3", + "title": ["Passed", "should pass"], + "state": "passed", + "body": "function () {\n cy.visit(\"/\");\n cy.screenshot({\n name: \"Customer screenshot\"\n });\n expect(true).to.be.true;\n }", + "displayError": null, + "attempts": [ + { + "state": "passed", + "error": null, + "timings": { + "lifecycle": 27, + "before each": [ + { "hookId": "h1", "fnDuration": 8, "afterFnDuration": 0 }, + { "hookId": "h2", "fnDuration": 323, "afterFnDuration": 0 } + ], + "test": { "fnDuration": 587, "afterFnDuration": 0 }, + "after each": [ + { "hookId": "h4", "fnDuration": 12, "afterFnDuration": 0 }, + { "hookId": "h5", "fnDuration": 5, "afterFnDuration": 1 } + ], + "after all": [ + { "hookId": "h3", "fnDuration": 3, "afterFnDuration": 1 } + ] + }, + "failedFromHookId": null, + "wallClockStartedAt": "2023-09-18T23:38:26.953Z", + "wallClockDuration": 976, + "videoTimestamp": 2102 + } + ] + } + ], + "error": null, + "video": "/Users/agoldis/cypress-cloud/examples/webapp/cypress/videos/passed.spec.js.mp4", + "screenshots": [ + { + "screenshotId": "dp4ir", + "name": "custom-screenshot", + "testId": "r3", + "testAttemptIndex": 0, + "takenAt": "2023-09-18T23:38:27.376Z", + "path": "/Users/agoldis/cypress-cloud/examples/webapp/cypress/screenshots/passed.spec.js/Passed -- should pass.png", + "height": 1320, + "width": 2000 + } + ], + "spec": { + "fileExtension": ".js", + "baseName": "passed.spec.js", + "fileName": "passed", + "specFileExtension": ".spec.js", + "relativeToCommonRoot": "passed.spec.js", + "specType": "integration", + "name": "cypress/e2e/passed.spec.js", + "relative": "cypress/e2e/passed.spec.js", + "absolute": "/Users/agoldis/cypress-cloud/examples/webapp/cypress/e2e/passed.spec.js" + } +} diff --git a/packages/cypress-cloud/lib/__tests__/fixtures/12.17.4/passed.spec.js/testAfter_00.json b/packages/cypress-cloud/lib/__tests__/fixtures/12.17.4/passed.spec.js/testAfter_00.json new file mode 100644 index 0000000..d097464 --- /dev/null +++ b/packages/cypress-cloud/lib/__tests__/fixtures/12.17.4/passed.spec.js/testAfter_00.json @@ -0,0 +1 @@ +{"async":false,"body":"function () {\n cy.visit(\"/\");\n cy.screenshot({\n name: \"Customer screenshot\"\n });\n expect(true).to.be.true;\n }","duration":946,"final":false,"hooks":[],"id":"r3","invocationDetails":{"function":"Suite.eval","fileUrl":"https://todomvc.com/__cypress/tests?p=cypress/e2e/passed.spec.js","originalFile":"webpack://web/./cypress/e2e/passed.spec.js","relativeFile":"cypress/e2e/passed.spec.js","absoluteFile":"/Users/agoldis/cypress-cloud/examples/webapp/cypress/e2e/passed.spec.js","line":2,"column":2,"whitespace":" ","stack":"Error\n at Suite.eval (https://todomvc.com/__cypress/tests?p=cypress/e2e/passed.spec.js:10:3)\n at eval (https://todomvc.com/__cypress/tests?p=cypress/e2e/passed.spec.js:9:1)\n at eval (https://todomvc.com/__cypress/tests?p=cypress/e2e/passed.spec.js:18:12)\n at eval ()"},"order":1,"pending":false,"retries":0,"state":"passed","sync":true,"timedOut":false,"timings":{"lifecycle":27,"before each":[{"hookId":"h1","fnDuration":8,"afterFnDuration":0},{"hookId":"h2","fnDuration":323,"afterFnDuration":0}],"test":{"fnDuration":587,"afterFnDuration":0},"after each":[{"hookId":"h4","fnDuration":12,"afterFnDuration":0}]},"type":"test","wallClockStartedAt":"2023-09-18T23:38:26.953Z","title":"should pass","currentRetry":0,"fullTitle":"Passed should pass"} \ No newline at end of file diff --git a/packages/cypress-cloud/lib/__tests__/fixtures/12.17.4/pending.spec.js/runResult.json b/packages/cypress-cloud/lib/__tests__/fixtures/12.17.4/pending.spec.js/runResult.json new file mode 100644 index 0000000..9e876ed --- /dev/null +++ b/packages/cypress-cloud/lib/__tests__/fixtures/12.17.4/pending.spec.js/runResult.json @@ -0,0 +1 @@ +{"status":"finished","startedTestsAt":"2023-09-18T23:38:26.949Z","endedTestsAt":"2023-09-18T23:38:30.846Z","totalDuration":1023,"totalSuites":2,"totalTests":2,"totalPassed":1,"totalPending":1,"totalFailed":0,"totalSkipped":0,"runs":[{"stats":{"suites":1,"tests":1,"passes":0,"pending":1,"skipped":0,"failures":0,"duration":42,"startedAt":"2023-09-18T23:38:30.804Z","endedAt":"2023-09-18T23:38:30.846Z"},"reporter":"spec","reporterStats":{"suites":1,"tests":1,"passes":0,"pending":1,"failures":0,"start":"2023-09-18T23:38:30.805Z","end":"2023-09-18T23:38:30.848Z","duration":43},"hooks":[{"hookName":"after all","title":["\"after all\" hook"],"body":"function () {\n // Need to wait otherwise some last commands get omitted from logs.\n cy.task(CONSTANTS.TASK_NAME_OUTPUT, null, {log: false});\n }"}],"tests":[{"title":["Pending","Pending test"],"state":"pending","body":"() => {\n expect(true).to.be.true;\n }","displayError":null,"attempts":[{"state":"pending","error":null,"videoTimestamp":855,"duration":30,"startedAt":"2023-09-18T23:38:30.814Z","screenshots":[]}]}],"error":null,"video":null,"spec":{"fileExtension":".js","baseName":"pending.spec.js","fileName":"pending","specFileExtension":".spec.js","relativeToCommonRoot":"pending.spec.js","specType":"integration","name":"cypress/e2e/pending.spec.js","relative":"cypress/e2e/pending.spec.js","absolute":"/Users/agoldis/cypress-cloud/examples/webapp/cypress/e2e/pending.spec.js"},"shouldUploadVideo":true}],"browserPath":"","browserName":"electron","browserVersion":"106.0.5249.51","osName":"darwin","osVersion":"22.1.0","cypressVersion":"12.17.4","config":{"configFile":"/Users/agoldis/cypress-cloud/examples/webapp/cypress.config.ts","testingType":"e2e","video":true,"projectId":"l4zuz8","baseUrl":"https://todomvc.com/examples/vanillajs","supportFile":"/Users/agoldis/cypress-cloud/examples/webapp/cypress/support/e2e.ts","specPattern":"cypress/e2e/*.js","setupNodeEvents":"[Function setupNodeEvents]","projectRoot":"/Users/agoldis/cypress-cloud/examples/webapp","projectName":"webapp","repoRoot":"/Users/agoldis/cypress-cloud","rawJson":{"video":true,"e2e":{"projectId":"l4zuz8","baseUrl":"https://todomvc.com/examples/vanillajs","supportFile":"cypress/support/e2e.ts","specPattern":"cypress/e2e/*.js","setupNodeEvents":"[Function setupNodeEvents]"},"component":{"specPattern":["pages/__tests__/*.spec.tsx"],"setupNodeEvents":"[Function setupNodeEvents]","devServer":{"framework":"next","bundler":"webpack"}},"projectId":"l4zuz8","baseUrl":"https://todomvc.com/examples/vanillajs","supportFile":"cypress/support/e2e.ts","specPattern":"cypress/e2e/*.js","setupNodeEvents":"[Function setupNodeEvents]","envFile":{},"projectRoot":"/Users/agoldis/cypress-cloud/examples/webapp","projectName":"webapp","repoRoot":"/Users/agoldis/cypress-cloud"},"morgan":false,"isTextTerminal":true,"socketId":"ekjyy7v5f7","report":true,"trashAssetsBeforeRuns":false,"animationDistanceThreshold":5,"arch":"arm64","blockHosts":null,"chromeWebSecurity":true,"clientCertificates":[],"defaultCommandTimeout":4000,"downloadsFolder":"/Users/agoldis/cypress-cloud/examples/webapp/cypress/downloads","env":{"currents_ws":59149},"execTimeout":60000,"experimentalCspAllowList":false,"experimentalFetchPolyfill":false,"experimentalInteractiveRunEvents":false,"experimentalRunAllSpecs":false,"experimentalMemoryManagement":false,"experimentalModifyObstructiveThirdPartyCode":false,"experimentalSkipDomainInjection":null,"experimentalOriginDependencies":false,"experimentalSourceRewriting":false,"experimentalSingleTabRunMode":false,"experimentalStudio":false,"experimentalWebKitSupport":false,"fileServerFolder":"/Users/agoldis/cypress-cloud/examples/webapp","fixturesFolder":"/Users/agoldis/cypress-cloud/examples/webapp/cypress/fixtures","excludeSpecPattern":"*.hot-update.js","includeShadowDom":false,"keystrokeDelay":0,"modifyObstructiveCode":true,"numTestsKeptInMemory":0,"platform":"darwin","pageLoadTimeout":60000,"port":59278,"redirectionLimit":20,"reporter":"spec","reporterOptions":null,"requestTimeout":5000,"resolvedNodePath":"/Users/agoldis/.nvm/versions/node/v18.16.1/bin/node","resolvedNodeVersion":"18.16.1","responseTimeout":30000,"retries":{"runMode":0,"openMode":0},"screenshotOnRunFailure":true,"screenshotsFolder":"/Users/agoldis/cypress-cloud/examples/webapp/cypress/screenshots","slowTestThreshold":10000,"scrollBehavior":"top","supportFolder":"/Users/agoldis/cypress-cloud/examples/webapp/cypress/support","taskTimeout":60000,"testIsolation":true,"userAgent":null,"videoCompression":32,"videosFolder":"/Users/agoldis/cypress-cloud/examples/webapp/cypress/videos","videoUploadOnPasses":true,"viewportHeight":660,"viewportWidth":1000,"waitForAnimations":true,"watchForFileChanges":false,"additionalIgnorePattern":[],"autoOpen":false,"browsers":[{"name":"chrome","family":"chromium","channel":"stable","displayName":"Chrome","version":"117.0.5938.88","path":"/Applications/Google Chrome.app/Contents/MacOS/Google Chrome","minSupportedVersion":64,"majorVersion":"117"},{"name":"firefox","family":"firefox","channel":"stable","displayName":"Firefox","version":"108.0","path":"/Applications/Firefox.app/Contents/MacOS/firefox","minSupportedVersion":86,"majorVersion":"108"},{"name":"electron","channel":"stable","family":"chromium","displayName":"Electron","version":"106.0.5249.51","path":"","majorVersion":106}],"clientRoute":"/__/","cypressBinaryRoot":"/Users/agoldis/Library/Caches/Cypress/12.17.4/Cypress.app/Contents/Resources/app","devServerPublicPathRoute":"/__cypress/src","hosts":null,"isInteractive":true,"namespace":"__cypress","reporterRoute":"/__cypress/reporter","socketIoCookie":"__socket","socketIoRoute":"/__socket","version":"12.17.4","cypressEnv":"production","resolved":{"animationDistanceThreshold":{"value":5,"from":"default"},"arch":{"value":"arm64","from":"default"},"baseUrl":{"value":"https://todomvc.com/examples/vanillajs","from":"config"},"blockHosts":{"value":null,"from":"default"},"chromeWebSecurity":{"value":true,"from":"default"},"clientCertificates":{"value":[],"from":"default"},"defaultCommandTimeout":{"value":4000,"from":"default"},"downloadsFolder":{"value":"cypress/downloads","from":"default"},"env":{"currents_ws":{"value":59149,"from":"cli"}},"execTimeout":{"value":60000,"from":"default"},"experimentalCspAllowList":{"value":false,"from":"default"},"experimentalFetchPolyfill":{"value":false,"from":"default"},"experimentalInteractiveRunEvents":{"value":false,"from":"default"},"experimentalRunAllSpecs":{"value":false,"from":"default"},"experimentalMemoryManagement":{"value":false,"from":"default"},"experimentalModifyObstructiveThirdPartyCode":{"value":false,"from":"default"},"experimentalSkipDomainInjection":{"value":null,"from":"default"},"experimentalOriginDependencies":{"value":false,"from":"default"},"experimentalSourceRewriting":{"value":false,"from":"default"},"experimentalSingleTabRunMode":{"value":false,"from":"default"},"experimentalStudio":{"value":false,"from":"default"},"experimentalWebKitSupport":{"value":false,"from":"default"},"fileServerFolder":{"value":"","from":"default"},"fixturesFolder":{"value":"cypress/fixtures","from":"default"},"excludeSpecPattern":{"value":"*.hot-update.js","from":"default"},"includeShadowDom":{"value":false,"from":"default"},"keystrokeDelay":{"value":0,"from":"default"},"modifyObstructiveCode":{"value":true,"from":"default"},"nodeVersion":{"from":"default"},"numTestsKeptInMemory":{"value":0,"from":"config"},"platform":{"value":"darwin","from":"default"},"pageLoadTimeout":{"value":60000,"from":"default"},"port":{"value":null,"from":"default"},"projectId":{"value":"l4zuz8","from":"config"},"redirectionLimit":{"value":20,"from":"default"},"reporter":{"value":"spec","from":"default"},"reporterOptions":{"value":null,"from":"default"},"requestTimeout":{"value":5000,"from":"default"},"resolvedNodePath":{"value":null,"from":"default"},"resolvedNodeVersion":{"value":null,"from":"default"},"responseTimeout":{"value":30000,"from":"default"},"retries":{"value":{"runMode":0,"openMode":0},"from":"default"},"screenshotOnRunFailure":{"value":true,"from":"default"},"screenshotsFolder":{"value":"cypress/screenshots","from":"default"},"slowTestThreshold":{"value":10000,"from":"default"},"scrollBehavior":{"value":"top","from":"default"},"supportFile":{"value":"cypress/support/e2e.ts","from":"config"},"supportFolder":{"value":false,"from":"default"},"taskTimeout":{"value":60000,"from":"default"},"testIsolation":{"value":true,"from":"default"},"trashAssetsBeforeRuns":{"value":false,"from":"cli"},"userAgent":{"value":null,"from":"default"},"video":{"value":true,"from":"default"},"videoCompression":{"value":32,"from":"default"},"videosFolder":{"value":"cypress/videos","from":"default"},"videoUploadOnPasses":{"value":true,"from":"default"},"viewportHeight":{"value":660,"from":"default"},"viewportWidth":{"value":1000,"from":"default"},"waitForAnimations":{"value":true,"from":"default"},"watchForFileChanges":{"value":false,"from":"config"},"specPattern":{"value":"cypress/e2e/*.js","from":"config"},"browsers":{"value":[{"name":"chrome","family":"chromium","channel":"stable","displayName":"Chrome","version":"117.0.5938.88","path":"/Applications/Google Chrome.app/Contents/MacOS/Google Chrome","minSupportedVersion":64,"majorVersion":"117"},{"name":"firefox","family":"firefox","channel":"stable","displayName":"Firefox","version":"108.0","path":"/Applications/Firefox.app/Contents/MacOS/firefox","minSupportedVersion":86,"majorVersion":"108"},{"name":"electron","channel":"stable","family":"chromium","displayName":"Electron","version":"106.0.5249.51","path":"","majorVersion":106,"isHeadless":true,"isHeaded":false}],"from":"runtime"},"hosts":{"value":null,"from":"default"},"isInteractive":{"value":true,"from":"default"},"configFile":{"value":"/Users/agoldis/cypress-cloud/examples/webapp/cypress.config.ts","from":"plugin"},"testingType":{"value":"e2e","from":"plugin"}},"remote":{"origin":"https://todomvc.com","strategy":"http","fileServer":null,"domainName":"todomvc.com","props":{"port":"443","protocol":"https:","subdomain":null,"domain":"todomvc","tld":"com"}},"browser":null,"specs":[],"proxyUrl":"http://localhost:59278","browserUrl":"https://todomvc.com/__/","reporterUrl":"https://todomvc.com/__cypress/reporter","proxyServer":"http://localhost:59278","state":{}}} \ No newline at end of file diff --git a/packages/cypress-cloud/lib/__tests__/fixtures/12.17.4/pending.spec.js/specAfter.json b/packages/cypress-cloud/lib/__tests__/fixtures/12.17.4/pending.spec.js/specAfter.json new file mode 100644 index 0000000..0bc8e74 --- /dev/null +++ b/packages/cypress-cloud/lib/__tests__/fixtures/12.17.4/pending.spec.js/specAfter.json @@ -0,0 +1 @@ +{"stats":{"suites":1,"tests":1,"passes":0,"pending":1,"skipped":0,"failures":0,"wallClockStartedAt":"2023-09-18T23:38:30.804Z","wallClockEndedAt":"2023-09-18T23:38:30.846Z","wallClockDuration":42},"reporter":"spec","reporterStats":{"suites":1,"tests":1,"passes":0,"pending":1,"failures":0,"start":"2023-09-18T23:38:30.805Z","end":"2023-09-18T23:38:30.848Z","duration":43},"hooks":[{"hookId":"h3","hookName":"after all","title":["\"after all\" hook"],"body":"function () {\n // Need to wait otherwise some last commands get omitted from logs.\n cy.task(CONSTANTS.TASK_NAME_OUTPUT, null, {log: false});\n }"}],"tests":[{"testId":"r3","title":["Pending","Pending test"],"state":"pending","body":"() => {\n expect(true).to.be.true;\n }","displayError":null,"attempts":[{"state":"pending","error":null,"timings":{"lifecycle":25,"after all":[{"hookId":"h3","fnDuration":5,"afterFnDuration":0}]},"failedFromHookId":null,"wallClockStartedAt":"2023-09-18T23:38:30.814Z","wallClockDuration":30,"videoTimestamp":855}]}],"error":null,"video":"/Users/agoldis/cypress-cloud/examples/webapp/cypress/videos/pending.spec.js.mp4","screenshots":[],"spec":{"fileExtension":".js","baseName":"pending.spec.js","fileName":"pending","specFileExtension":".spec.js","relativeToCommonRoot":"pending.spec.js","specType":"integration","name":"cypress/e2e/pending.spec.js","relative":"cypress/e2e/pending.spec.js","absolute":"/Users/agoldis/cypress-cloud/examples/webapp/cypress/e2e/pending.spec.js"}} \ No newline at end of file diff --git a/packages/cypress-cloud/lib/__tests__/fixtures/12.17.4/retries.spec.js/runResult.json b/packages/cypress-cloud/lib/__tests__/fixtures/12.17.4/retries.spec.js/runResult.json new file mode 100644 index 0000000..0ed9f2f --- /dev/null +++ b/packages/cypress-cloud/lib/__tests__/fixtures/12.17.4/retries.spec.js/runResult.json @@ -0,0 +1 @@ +{"status":"finished","startedTestsAt":"2023-09-18T23:38:17.817Z","endedTestsAt":"2023-09-18T23:38:21.625Z","totalDuration":1018,"totalSuites":1,"totalTests":1,"totalPassed":1,"totalPending":0,"totalFailed":1,"totalSkipped":0,"runs":[{"stats":{"suites":1,"tests":1,"passes":1,"pending":0,"skipped":0,"failures":0,"duration":1018,"startedAt":"2023-09-18T23:38:17.817Z","endedAt":"2023-09-18T23:38:18.835Z"},"reporter":"spec","reporterStats":{"suites":1,"tests":1,"passes":1,"pending":0,"failures":0,"start":"2023-09-18T23:38:17.819Z","end":"2023-09-18T23:38:18.838Z","duration":1019},"hooks":[{"hookName":"before each","title":["\"before each\" hook"],"body":"() => {\n const currentTest = cy.state(\"ctx\").currentTest;\n if (currentTest) {\n handleBefore(currentTest);\n }\n}"},{"hookName":"before each","title":["\"before each\" hook"],"body":"function () {\n cy.visit(\"/\");\n}"},{"hookName":"after each","title":["\"after each\" hook"],"body":"function () {\n self.sendLogsToPrinter(self.collectorState.getCurrentLogStackIndex(), self.collectorState.getCurrentTest());\n }"},{"hookName":"after each","title":["\"after each\" hook"],"body":"() => {\n const currentTest = cy.state(\"ctx\").currentTest;\n if (currentTest) {\n handleAfter(currentTest);\n }\n}"},{"hookName":"after all","title":["\"after all\" hook"],"body":"function () {\n // Need to wait otherwise some last commands get omitted from logs.\n cy.task(CONSTANTS.TASK_NAME_OUTPUT, null, {log: false});\n }"}],"tests":[{"title":["Retries","Runs a test with retries"],"state":"passed","body":"function () {\n if (i > 1) {\n i--;\n throw new Error(\"oh no!\");\n }\n return;\n }","displayError":null,"attempts":[{"state":"failed","error":{"name":"Error","message":"oh no!","stack":" at Context.eval (webpack://web/./cypress/e2e/retries.spec.js:11:14)","codeFrame":{"line":11,"column":15,"originalFile":"cypress/e2e/retries.spec.js","relativeFile":"examples/webapp/cypress/e2e/retries.spec.js","absoluteFile":"/Users/agoldis/cypress-cloud/examples/webapp/cypress/e2e/retries.spec.js","frame":" 9 | if (i > 1) {\n 10 | i--;\n> 11 | throw new Error(\"oh no!\");\n | ^\n 12 | }\n 13 | return;\n 14 | }","language":"js"}},"videoTimestamp":2253,"duration":601,"startedAt":"2023-09-18T23:38:17.821Z","screenshots":[{"name":null,"takenAt":"2023-09-18T23:38:18.184Z","path":"/Users/agoldis/cypress-cloud/examples/webapp/cypress/screenshots/retries.spec.js/Retries -- Runs a test with retries (failed).png","height":1440,"width":2560}]},{"state":"failed","error":{"name":"Error","message":"oh no!","stack":" at Context.eval (webpack://web/./cypress/e2e/retries.spec.js:11:14)","codeFrame":{"line":11,"column":15,"originalFile":"cypress/e2e/retries.spec.js","relativeFile":"examples/webapp/cypress/e2e/retries.spec.js","absoluteFile":"/Users/agoldis/cypress-cloud/examples/webapp/cypress/e2e/retries.spec.js","frame":" 9 | if (i > 1) {\n 10 | i--;\n> 11 | throw new Error(\"oh no!\");\n | ^\n 12 | }\n 13 | return;\n 14 | }","language":"js"}},"videoTimestamp":2871,"duration":274,"startedAt":"2023-09-18T23:38:18.439Z","screenshots":[{"name":null,"takenAt":"2023-09-18T23:38:18.522Z","path":"/Users/agoldis/cypress-cloud/examples/webapp/cypress/screenshots/retries.spec.js/Retries -- Runs a test with retries (failed) (attempt 2).png","height":1440,"width":2560}]},{"state":"passed","error":null,"videoTimestamp":3153,"duration":113,"startedAt":"2023-09-18T23:38:18.721Z","screenshots":[]}]}],"error":null,"video":"/Users/agoldis/cypress-cloud/examples/webapp/cypress/videos/retries.spec.js.mp4","spec":{"fileExtension":".js","baseName":"retries.spec.js","fileName":"retries","specFileExtension":".spec.js","relativeToCommonRoot":"retries.spec.js","specType":"integration","name":"cypress/e2e/retries.spec.js","relative":"cypress/e2e/retries.spec.js","absolute":"/Users/agoldis/cypress-cloud/examples/webapp/cypress/e2e/retries.spec.js"},"shouldUploadVideo":true}],"browserPath":"","browserName":"electron","browserVersion":"106.0.5249.51","osName":"darwin","osVersion":"22.1.0","cypressVersion":"12.17.4","config":{"configFile":"/Users/agoldis/cypress-cloud/examples/webapp/cypress.config.ts","testingType":"e2e","video":true,"projectId":"l4zuz8","baseUrl":"https://todomvc.com/examples/vanillajs","supportFile":"/Users/agoldis/cypress-cloud/examples/webapp/cypress/support/e2e.ts","specPattern":"cypress/e2e/*.js","setupNodeEvents":"[Function setupNodeEvents]","projectRoot":"/Users/agoldis/cypress-cloud/examples/webapp","projectName":"webapp","repoRoot":"/Users/agoldis/cypress-cloud","rawJson":{"video":true,"e2e":{"projectId":"l4zuz8","baseUrl":"https://todomvc.com/examples/vanillajs","supportFile":"cypress/support/e2e.ts","specPattern":"cypress/e2e/*.js","setupNodeEvents":"[Function setupNodeEvents]"},"component":{"specPattern":["pages/__tests__/*.spec.tsx"],"setupNodeEvents":"[Function setupNodeEvents]","devServer":{"framework":"next","bundler":"webpack"}},"projectId":"l4zuz8","baseUrl":"https://todomvc.com/examples/vanillajs","supportFile":"cypress/support/e2e.ts","specPattern":"cypress/e2e/*.js","setupNodeEvents":"[Function setupNodeEvents]","envFile":{},"projectRoot":"/Users/agoldis/cypress-cloud/examples/webapp","projectName":"webapp","repoRoot":"/Users/agoldis/cypress-cloud"},"morgan":false,"isTextTerminal":true,"socketId":"tr1yo9weg8","report":true,"trashAssetsBeforeRuns":false,"animationDistanceThreshold":5,"arch":"arm64","blockHosts":null,"chromeWebSecurity":true,"clientCertificates":[],"defaultCommandTimeout":4000,"downloadsFolder":"/Users/agoldis/cypress-cloud/examples/webapp/cypress/downloads","env":{"currents_ws":59149},"execTimeout":60000,"experimentalCspAllowList":false,"experimentalFetchPolyfill":false,"experimentalInteractiveRunEvents":false,"experimentalRunAllSpecs":false,"experimentalMemoryManagement":false,"experimentalModifyObstructiveThirdPartyCode":false,"experimentalSkipDomainInjection":null,"experimentalOriginDependencies":false,"experimentalSourceRewriting":false,"experimentalSingleTabRunMode":false,"experimentalStudio":false,"experimentalWebKitSupport":false,"fileServerFolder":"/Users/agoldis/cypress-cloud/examples/webapp","fixturesFolder":"/Users/agoldis/cypress-cloud/examples/webapp/cypress/fixtures","excludeSpecPattern":"*.hot-update.js","includeShadowDom":false,"keystrokeDelay":0,"modifyObstructiveCode":true,"numTestsKeptInMemory":0,"platform":"darwin","pageLoadTimeout":60000,"port":59159,"redirectionLimit":20,"reporter":"spec","reporterOptions":null,"requestTimeout":5000,"resolvedNodePath":"/Users/agoldis/.nvm/versions/node/v18.16.1/bin/node","resolvedNodeVersion":"18.16.1","responseTimeout":30000,"retries":{"runMode":0,"openMode":0},"screenshotOnRunFailure":true,"screenshotsFolder":"/Users/agoldis/cypress-cloud/examples/webapp/cypress/screenshots","slowTestThreshold":10000,"scrollBehavior":"top","supportFolder":"/Users/agoldis/cypress-cloud/examples/webapp/cypress/support","taskTimeout":60000,"testIsolation":true,"userAgent":null,"videoCompression":32,"videosFolder":"/Users/agoldis/cypress-cloud/examples/webapp/cypress/videos","videoUploadOnPasses":true,"viewportHeight":660,"viewportWidth":1000,"waitForAnimations":true,"watchForFileChanges":false,"additionalIgnorePattern":[],"autoOpen":false,"browsers":[{"name":"chrome","family":"chromium","channel":"stable","displayName":"Chrome","version":"117.0.5938.88","path":"/Applications/Google Chrome.app/Contents/MacOS/Google Chrome","minSupportedVersion":64,"majorVersion":"117"},{"name":"firefox","family":"firefox","channel":"stable","displayName":"Firefox","version":"108.0","path":"/Applications/Firefox.app/Contents/MacOS/firefox","minSupportedVersion":86,"majorVersion":"108"},{"name":"electron","channel":"stable","family":"chromium","displayName":"Electron","version":"106.0.5249.51","path":"","majorVersion":106}],"clientRoute":"/__/","cypressBinaryRoot":"/Users/agoldis/Library/Caches/Cypress/12.17.4/Cypress.app/Contents/Resources/app","devServerPublicPathRoute":"/__cypress/src","hosts":null,"isInteractive":true,"namespace":"__cypress","reporterRoute":"/__cypress/reporter","socketIoCookie":"__socket","socketIoRoute":"/__socket","version":"12.17.4","cypressEnv":"production","resolved":{"animationDistanceThreshold":{"value":5,"from":"default"},"arch":{"value":"arm64","from":"default"},"baseUrl":{"value":"https://todomvc.com/examples/vanillajs","from":"config"},"blockHosts":{"value":null,"from":"default"},"chromeWebSecurity":{"value":true,"from":"default"},"clientCertificates":{"value":[],"from":"default"},"defaultCommandTimeout":{"value":4000,"from":"default"},"downloadsFolder":{"value":"cypress/downloads","from":"default"},"env":{"currents_ws":{"value":59149,"from":"cli"}},"execTimeout":{"value":60000,"from":"default"},"experimentalCspAllowList":{"value":false,"from":"default"},"experimentalFetchPolyfill":{"value":false,"from":"default"},"experimentalInteractiveRunEvents":{"value":false,"from":"default"},"experimentalRunAllSpecs":{"value":false,"from":"default"},"experimentalMemoryManagement":{"value":false,"from":"default"},"experimentalModifyObstructiveThirdPartyCode":{"value":false,"from":"default"},"experimentalSkipDomainInjection":{"value":null,"from":"default"},"experimentalOriginDependencies":{"value":false,"from":"default"},"experimentalSourceRewriting":{"value":false,"from":"default"},"experimentalSingleTabRunMode":{"value":false,"from":"default"},"experimentalStudio":{"value":false,"from":"default"},"experimentalWebKitSupport":{"value":false,"from":"default"},"fileServerFolder":{"value":"","from":"default"},"fixturesFolder":{"value":"cypress/fixtures","from":"default"},"excludeSpecPattern":{"value":"*.hot-update.js","from":"default"},"includeShadowDom":{"value":false,"from":"default"},"keystrokeDelay":{"value":0,"from":"default"},"modifyObstructiveCode":{"value":true,"from":"default"},"nodeVersion":{"from":"default"},"numTestsKeptInMemory":{"value":0,"from":"config"},"platform":{"value":"darwin","from":"default"},"pageLoadTimeout":{"value":60000,"from":"default"},"port":{"value":null,"from":"default"},"projectId":{"value":"l4zuz8","from":"config"},"redirectionLimit":{"value":20,"from":"default"},"reporter":{"value":"spec","from":"default"},"reporterOptions":{"value":null,"from":"default"},"requestTimeout":{"value":5000,"from":"default"},"resolvedNodePath":{"value":null,"from":"default"},"resolvedNodeVersion":{"value":null,"from":"default"},"responseTimeout":{"value":30000,"from":"default"},"retries":{"value":{"runMode":0,"openMode":0},"from":"default"},"screenshotOnRunFailure":{"value":true,"from":"default"},"screenshotsFolder":{"value":"cypress/screenshots","from":"default"},"slowTestThreshold":{"value":10000,"from":"default"},"scrollBehavior":{"value":"top","from":"default"},"supportFile":{"value":"cypress/support/e2e.ts","from":"config"},"supportFolder":{"value":false,"from":"default"},"taskTimeout":{"value":60000,"from":"default"},"testIsolation":{"value":true,"from":"default"},"trashAssetsBeforeRuns":{"value":false,"from":"cli"},"userAgent":{"value":null,"from":"default"},"video":{"value":true,"from":"default"},"videoCompression":{"value":32,"from":"default"},"videosFolder":{"value":"cypress/videos","from":"default"},"videoUploadOnPasses":{"value":true,"from":"default"},"viewportHeight":{"value":660,"from":"default"},"viewportWidth":{"value":1000,"from":"default"},"waitForAnimations":{"value":true,"from":"default"},"watchForFileChanges":{"value":false,"from":"config"},"specPattern":{"value":"cypress/e2e/*.js","from":"config"},"browsers":{"value":[{"name":"chrome","family":"chromium","channel":"stable","displayName":"Chrome","version":"117.0.5938.88","path":"/Applications/Google Chrome.app/Contents/MacOS/Google Chrome","minSupportedVersion":64,"majorVersion":"117"},{"name":"firefox","family":"firefox","channel":"stable","displayName":"Firefox","version":"108.0","path":"/Applications/Firefox.app/Contents/MacOS/firefox","minSupportedVersion":86,"majorVersion":"108"},{"name":"electron","channel":"stable","family":"chromium","displayName":"Electron","version":"106.0.5249.51","path":"","majorVersion":106,"isHeadless":true,"isHeaded":false}],"from":"runtime"},"hosts":{"value":null,"from":"default"},"isInteractive":{"value":true,"from":"default"},"configFile":{"value":"/Users/agoldis/cypress-cloud/examples/webapp/cypress.config.ts","from":"plugin"},"testingType":{"value":"e2e","from":"plugin"}},"remote":{"origin":"https://todomvc.com","strategy":"http","fileServer":null,"domainName":"todomvc.com","props":{"port":"443","protocol":"https:","subdomain":null,"domain":"todomvc","tld":"com"}},"browser":null,"specs":[],"proxyUrl":"http://localhost:59159","browserUrl":"https://todomvc.com/__/","reporterUrl":"https://todomvc.com/__cypress/reporter","proxyServer":"http://localhost:59159","state":{}}} \ No newline at end of file diff --git a/packages/cypress-cloud/lib/__tests__/fixtures/12.17.4/retries.spec.js/screenshot_01.json b/packages/cypress-cloud/lib/__tests__/fixtures/12.17.4/retries.spec.js/screenshot_01.json new file mode 100644 index 0000000..0446abd --- /dev/null +++ b/packages/cypress-cloud/lib/__tests__/fixtures/12.17.4/retries.spec.js/screenshot_01.json @@ -0,0 +1 @@ +{"testAttemptIndex":0,"size":334509,"takenAt":"2023-09-18T23:38:18.184Z","dimensions":{"width":2560,"height":1440},"multipart":false,"specName":"retries.spec.js","testFailure":true,"path":"/Users/agoldis/cypress-cloud/examples/webapp/cypress/screenshots/retries.spec.js/Retries -- Runs a test with retries (failed).png","scaled":true,"blackout":[],"duration":221,"testId":"r3","height":1440,"width":2560} \ No newline at end of file diff --git a/packages/cypress-cloud/lib/__tests__/fixtures/12.17.4/retries.spec.js/screenshot_02.json b/packages/cypress-cloud/lib/__tests__/fixtures/12.17.4/retries.spec.js/screenshot_02.json new file mode 100644 index 0000000..3a8685e --- /dev/null +++ b/packages/cypress-cloud/lib/__tests__/fixtures/12.17.4/retries.spec.js/screenshot_02.json @@ -0,0 +1 @@ +{"testAttemptIndex":1,"size":277492,"takenAt":"2023-09-18T23:38:18.522Z","dimensions":{"width":2560,"height":1440},"multipart":false,"specName":"retries.spec.js","testFailure":true,"path":"/Users/agoldis/cypress-cloud/examples/webapp/cypress/screenshots/retries.spec.js/Retries -- Runs a test with retries (failed) (attempt 2).png","scaled":true,"blackout":[],"duration":170,"testId":"r3","height":1440,"width":2560} \ No newline at end of file diff --git a/packages/cypress-cloud/lib/__tests__/fixtures/12.17.4/retries.spec.js/specAfter.json b/packages/cypress-cloud/lib/__tests__/fixtures/12.17.4/retries.spec.js/specAfter.json new file mode 100644 index 0000000..1a0772e --- /dev/null +++ b/packages/cypress-cloud/lib/__tests__/fixtures/12.17.4/retries.spec.js/specAfter.json @@ -0,0 +1 @@ +{"stats":{"suites":1,"tests":1,"passes":1,"pending":0,"skipped":0,"failures":0,"wallClockStartedAt":"2023-09-18T23:38:17.817Z","wallClockEndedAt":"2023-09-18T23:38:18.835Z","wallClockDuration":1018},"reporter":"spec","reporterStats":{"suites":1,"tests":1,"passes":1,"pending":0,"failures":0,"start":"2023-09-18T23:38:17.819Z","end":"2023-09-18T23:38:18.838Z","duration":1019},"hooks":[{"hookId":"h1","hookName":"before each","title":["\"before each\" hook"],"body":"() => {\n const currentTest = cy.state(\"ctx\").currentTest;\n if (currentTest) {\n handleBefore(currentTest);\n }\n}"},{"hookId":"h2","hookName":"before each","title":["\"before each\" hook"],"body":"function () {\n cy.visit(\"/\");\n}"},{"hookId":"h4","hookName":"after each","title":["\"after each\" hook"],"body":"function () {\n self.sendLogsToPrinter(self.collectorState.getCurrentLogStackIndex(), self.collectorState.getCurrentTest());\n }"},{"hookId":"h5","hookName":"after each","title":["\"after each\" hook"],"body":"() => {\n const currentTest = cy.state(\"ctx\").currentTest;\n if (currentTest) {\n handleAfter(currentTest);\n }\n}"},{"hookId":"h3","hookName":"after all","title":["\"after all\" hook"],"body":"function () {\n // Need to wait otherwise some last commands get omitted from logs.\n cy.task(CONSTANTS.TASK_NAME_OUTPUT, null, {log: false});\n }"}],"tests":[{"testId":"r3","title":["Retries","Runs a test with retries"],"state":"passed","body":"function () {\n if (i > 1) {\n i--;\n throw new Error(\"oh no!\");\n }\n return;\n }","displayError":null,"attempts":[{"state":"failed","error":{"name":"Error","message":"oh no!","stack":" at Context.eval (webpack://web/./cypress/e2e/retries.spec.js:11:14)","codeFrame":{"line":11,"column":15,"originalFile":"cypress/e2e/retries.spec.js","relativeFile":"examples/webapp/cypress/e2e/retries.spec.js","absoluteFile":"/Users/agoldis/cypress-cloud/examples/webapp/cypress/e2e/retries.spec.js","frame":" 9 | if (i > 1) {\n 10 | i--;\n> 11 | throw new Error(\"oh no!\");\n | ^\n 12 | }\n 13 | return;\n 14 | }","language":"js"}},"timings":{"lifecycle":29,"before each":[{"hookId":"h1","fnDuration":9,"afterFnDuration":0},{"hookId":"h2","fnDuration":318,"afterFnDuration":0}],"test":{"fnDuration":1,"afterFnDuration":223},"after each":[{"hookId":"h4","fnDuration":15,"afterFnDuration":0},{"hookId":"h5","fnDuration":4,"afterFnDuration":0}]},"failedFromHookId":null,"wallClockStartedAt":"2023-09-18T23:38:17.821Z","wallClockDuration":601,"videoTimestamp":2253},{"state":"failed","error":{"name":"Error","message":"oh no!","stack":" at Context.eval (webpack://web/./cypress/e2e/retries.spec.js:11:14)","codeFrame":{"line":11,"column":15,"originalFile":"cypress/e2e/retries.spec.js","relativeFile":"examples/webapp/cypress/e2e/retries.spec.js","absoluteFile":"/Users/agoldis/cypress-cloud/examples/webapp/cypress/e2e/retries.spec.js","frame":" 9 | if (i > 1) {\n 10 | i--;\n> 11 | throw new Error(\"oh no!\");\n | ^\n 12 | }\n 13 | return;\n 14 | }","language":"js"}},"timings":{"lifecycle":20,"before each":[{"hookId":"h1","fnDuration":4,"afterFnDuration":0},{"hookId":"h2","fnDuration":57,"afterFnDuration":0}],"test":{"fnDuration":0,"afterFnDuration":173},"after each":[{"hookId":"h4","fnDuration":13,"afterFnDuration":0},{"hookId":"h5","fnDuration":4,"afterFnDuration":1}]},"failedFromHookId":null,"wallClockStartedAt":"2023-09-18T23:38:18.439Z","wallClockDuration":274,"videoTimestamp":2871},{"state":"passed","error":null,"timings":{"lifecycle":30,"before each":[{"hookId":"h1","fnDuration":3,"afterFnDuration":0},{"hookId":"h2","fnDuration":46,"afterFnDuration":0}],"test":{"fnDuration":0,"afterFnDuration":0},"after each":[{"hookId":"h4","fnDuration":13,"afterFnDuration":0},{"hookId":"h5","fnDuration":8,"afterFnDuration":0}],"after all":[{"hookId":"h3","fnDuration":6,"afterFnDuration":0}]},"failedFromHookId":null,"wallClockStartedAt":"2023-09-18T23:38:18.721Z","wallClockDuration":113,"videoTimestamp":3153}]}],"error":null,"video":"/Users/agoldis/cypress-cloud/examples/webapp/cypress/videos/retries.spec.js.mp4","screenshots":[{"screenshotId":"wnsm1","name":null,"testId":"r3","testAttemptIndex":0,"takenAt":"2023-09-18T23:38:18.184Z","path":"/Users/agoldis/cypress-cloud/examples/webapp/cypress/screenshots/retries.spec.js/Retries -- Runs a test with retries (failed).png","height":1440,"width":2560},{"screenshotId":"w2gss","name":null,"testId":"r3","testAttemptIndex":1,"takenAt":"2023-09-18T23:38:18.522Z","path":"/Users/agoldis/cypress-cloud/examples/webapp/cypress/screenshots/retries.spec.js/Retries -- Runs a test with retries (failed) (attempt 2).png","height":1440,"width":2560}],"spec":{"fileExtension":".js","baseName":"retries.spec.js","fileName":"retries","specFileExtension":".spec.js","relativeToCommonRoot":"retries.spec.js","specType":"integration","name":"cypress/e2e/retries.spec.js","relative":"cypress/e2e/retries.spec.js","absolute":"/Users/agoldis/cypress-cloud/examples/webapp/cypress/e2e/retries.spec.js"}} \ No newline at end of file diff --git a/packages/cypress-cloud/lib/__tests__/fixtures/12.17.4/retries.spec.js/testAfter_00.json b/packages/cypress-cloud/lib/__tests__/fixtures/12.17.4/retries.spec.js/testAfter_00.json new file mode 100644 index 0000000..4fbb5e1 --- /dev/null +++ b/packages/cypress-cloud/lib/__tests__/fixtures/12.17.4/retries.spec.js/testAfter_00.json @@ -0,0 +1 @@ +{"async":false,"body":"function () {\n if (i > 1) {\n i--;\n throw new Error(\"oh no!\");\n }\n return;\n }","duration":582,"err":{"message":"oh no!","name":"Error","stack":"Error: oh no!\n at Context.eval (webpack://web/./cypress/e2e/retries.spec.js:11:14)","parsedStack":[{"message":"Error: oh no!","whitespace":""},{"function":"Context.eval","fileUrl":"https://todomvc.com/__cypress/tests?p=cypress/e2e/retries.spec.js","originalFile":"webpack://web/./cypress/e2e/retries.spec.js","relativeFile":"cypress/e2e/retries.spec.js","absoluteFile":"/Users/agoldis/cypress-cloud/examples/webapp/cypress/e2e/retries.spec.js","line":11,"column":14,"whitespace":" "}],"codeFrame":{"line":11,"column":15,"originalFile":"cypress/e2e/retries.spec.js","relativeFile":"examples/webapp/cypress/e2e/retries.spec.js","absoluteFile":"/Users/agoldis/cypress-cloud/examples/webapp/cypress/e2e/retries.spec.js","frame":" 9 | if (i > 1) {\n 10 | i--;\n> 11 | throw new Error(\"oh no!\");\n | ^\n 12 | }\n 13 | return;\n 14 | }","language":"js"}},"final":false,"hooks":[],"id":"r3","invocationDetails":{"function":"Suite.eval","fileUrl":"https://todomvc.com/__cypress/tests?p=cypress/e2e/retries.spec.js","originalFile":"webpack://web/./cypress/e2e/retries.spec.js","relativeFile":"cypress/e2e/retries.spec.js","absoluteFile":"/Users/agoldis/cypress-cloud/examples/webapp/cypress/e2e/retries.spec.js","line":3,"column":2,"whitespace":" ","stack":"Error\n at Suite.eval (https://todomvc.com/__cypress/tests?p=cypress/e2e/retries.spec.js:11:3)\n at eval (https://todomvc.com/__cypress/tests?p=cypress/e2e/retries.spec.js:10:1)\n at eval (https://todomvc.com/__cypress/tests?p=cypress/e2e/retries.spec.js:21:12)\n at eval ()"},"order":1,"pending":false,"retries":3,"state":"failed","sync":true,"timedOut":false,"timings":{"lifecycle":29,"before each":[{"hookId":"h1","fnDuration":9,"afterFnDuration":0},{"hookId":"h2","fnDuration":318,"afterFnDuration":0}],"test":{"fnDuration":1,"afterFnDuration":223},"after each":[{"hookId":"h4","fnDuration":15,"afterFnDuration":0}]},"type":"test","wallClockStartedAt":"2023-09-18T23:38:17.821Z","title":"Runs a test with retries","currentRetry":0,"fullTitle":"Retries Runs a test with retries"} \ No newline at end of file diff --git a/packages/cypress-cloud/lib/__tests__/fixtures/12.17.4/retries.spec.js/testAfter_01.json b/packages/cypress-cloud/lib/__tests__/fixtures/12.17.4/retries.spec.js/testAfter_01.json new file mode 100644 index 0000000..7d29ff3 --- /dev/null +++ b/packages/cypress-cloud/lib/__tests__/fixtures/12.17.4/retries.spec.js/testAfter_01.json @@ -0,0 +1 @@ +{"async":false,"body":"function () {\n if (i > 1) {\n i--;\n throw new Error(\"oh no!\");\n }\n return;\n }","duration":255,"err":{"message":"oh no!","name":"Error","stack":"Error: oh no!\n at Context.eval (webpack://web/./cypress/e2e/retries.spec.js:11:14)","parsedStack":[{"message":"Error: oh no!","whitespace":""},{"function":"Context.eval","fileUrl":"https://todomvc.com/__cypress/tests?p=cypress/e2e/retries.spec.js","originalFile":"webpack://web/./cypress/e2e/retries.spec.js","relativeFile":"cypress/e2e/retries.spec.js","absoluteFile":"/Users/agoldis/cypress-cloud/examples/webapp/cypress/e2e/retries.spec.js","line":11,"column":14,"whitespace":" "}],"codeFrame":{"line":11,"column":15,"originalFile":"cypress/e2e/retries.spec.js","relativeFile":"examples/webapp/cypress/e2e/retries.spec.js","absoluteFile":"/Users/agoldis/cypress-cloud/examples/webapp/cypress/e2e/retries.spec.js","frame":" 9 | if (i > 1) {\n 10 | i--;\n> 11 | throw new Error(\"oh no!\");\n | ^\n 12 | }\n 13 | return;\n 14 | }","language":"js"}},"final":false,"id":"r3","order":1,"pending":false,"retries":3,"state":"failed","sync":true,"timedOut":false,"timings":{"lifecycle":20,"before each":[{"hookId":"h1","fnDuration":4,"afterFnDuration":0},{"hookId":"h2","fnDuration":57,"afterFnDuration":0}],"test":{"fnDuration":0,"afterFnDuration":173},"after each":[{"hookId":"h4","fnDuration":13,"afterFnDuration":0}]},"type":"test","wallClockStartedAt":"2023-09-18T23:38:18.439Z","title":"Runs a test with retries","currentRetry":1,"fullTitle":"Retries Runs a test with retries"} \ No newline at end of file diff --git a/packages/cypress-cloud/lib/__tests__/fixtures/12.17.4/retries.spec.js/testAfter_02.json b/packages/cypress-cloud/lib/__tests__/fixtures/12.17.4/retries.spec.js/testAfter_02.json new file mode 100644 index 0000000..82c36eb --- /dev/null +++ b/packages/cypress-cloud/lib/__tests__/fixtures/12.17.4/retries.spec.js/testAfter_02.json @@ -0,0 +1 @@ +{"async":false,"body":"function () {\n if (i > 1) {\n i--;\n throw new Error(\"oh no!\");\n }\n return;\n }","duration":81,"final":false,"id":"r3","order":1,"pending":false,"retries":3,"state":"passed","sync":true,"timedOut":false,"timings":{"lifecycle":30,"before each":[{"hookId":"h1","fnDuration":3,"afterFnDuration":0},{"hookId":"h2","fnDuration":46,"afterFnDuration":0}],"test":{"fnDuration":0,"afterFnDuration":0},"after each":[{"hookId":"h4","fnDuration":13,"afterFnDuration":0}]},"type":"test","wallClockStartedAt":"2023-09-18T23:38:18.721Z","title":"Runs a test with retries","currentRetry":2,"fullTitle":"Retries Runs a test with retries"} \ No newline at end of file diff --git a/packages/cypress-cloud/lib/__tests__/fixtures/12.17.4/skipped.spec.js/runResult.json b/packages/cypress-cloud/lib/__tests__/fixtures/12.17.4/skipped.spec.js/runResult.json new file mode 100644 index 0000000..4f00d0c --- /dev/null +++ b/packages/cypress-cloud/lib/__tests__/fixtures/12.17.4/skipped.spec.js/runResult.json @@ -0,0 +1,423 @@ +{ + "status": "finished", + "startedTestsAt": "2023-09-18T23:38:39.001Z", + "endedTestsAt": "2023-09-18T23:38:42.813Z", + "totalDuration": 1035, + "totalSuites": 2, + "totalTests": 3, + "totalPassed": 0, + "totalPending": 0, + "totalFailed": 2, + "totalSkipped": 1, + "runs": [ + { + "stats": { + "suites": 1, + "tests": 2, + "passes": 0, + "pending": 0, + "skipped": 1, + "failures": 1, + "duration": 408, + "startedAt": "2023-09-18T23:38:42.405Z", + "endedAt": "2023-09-18T23:38:42.813Z" + }, + "reporter": "spec", + "reporterStats": { + "suites": 1, + "tests": 1, + "passes": 0, + "pending": 0, + "failures": 1, + "start": "2023-09-18T23:38:42.406Z", + "end": "2023-09-18T23:38:42.815Z", + "duration": 409 + }, + "hooks": [ + { + "hookName": "before each", + "title": ["\"before each\" hook"], + "body": "() => {\n const currentTest = cy.state(\"ctx\").currentTest;\n if (currentTest) {\n handleBefore(currentTest);\n }\n}" + }, + { + "hookName": "before each", + "title": ["\"before each\" hook"], + "body": "function () {\n cy.visit(\"/\");\n}" + }, + { + "hookName": "before each", + "title": ["\"before each\" hook"], + "body": "function () {\n throw new Error(\"before each exception\");\n }" + }, + { + "hookName": "after each", + "title": ["\"after each\" hook"], + "body": "function () {\n self.sendLogsToPrinter(self.collectorState.getCurrentLogStackIndex(), self.collectorState.getCurrentTest());\n }" + }, + { + "hookName": "after each", + "title": ["\"after each\" hook"], + "body": "() => {\n const currentTest = cy.state(\"ctx\").currentTest;\n if (currentTest) {\n handleAfter(currentTest);\n }\n}" + }, + { + "hookName": "after all", + "title": ["\"after all\" hook"], + "body": "function () {\n // Need to wait otherwise some last commands get omitted from logs.\n cy.task(CONSTANTS.TASK_NAME_OUTPUT, null, {log: false});\n }" + } + ], + "tests": [ + { + "title": ["Skipped", "should not be skipped"], + "state": "failed", + "body": "function () {\n expect(true).to.be.true;\n }", + "displayError": "Error: before each exception\n\nBecause this error occurred during a `before each` hook we are skipping the remaining tests in the current suite: `Skipped`\n at Context.eval (webpack://web/./cypress/e2e/skipped.spec.js:3:10)", + "attempts": [ + { + "state": "failed", + "error": { + "name": "Error", + "message": "before each exception\n\nBecause this error occurred during a `before each` hook we are skipping the remaining tests in the current suite: `Skipped`", + "stack": " at Context.eval (webpack://web/./cypress/e2e/skipped.spec.js:3:10)", + "codeFrame": { + "line": 3, + "column": 11, + "originalFile": "cypress/e2e/skipped.spec.js", + "relativeFile": "examples/webapp/cypress/e2e/skipped.spec.js", + "absoluteFile": "/Users/agoldis/cypress-cloud/examples/webapp/cypress/e2e/skipped.spec.js", + "frame": " 1 | describe(\"Skipped\", function () {\n 2 | beforeEach(function () {\n> 3 | throw new Error(\"before each exception\");\n | ^\n 4 | });\n 5 | it(\"should not be skipped\", function () {\n 6 | expect(true).to.be.true;", + "language": "js" + } + }, + "videoTimestamp": 864, + "duration": 361, + "startedAt": "2023-09-18T23:38:42.415Z", + "screenshots": [ + { + "name": null, + "takenAt": "2023-09-18T23:38:42.571Z", + "path": "/Users/agoldis/cypress-cloud/examples/webapp/cypress/screenshots/skipped.spec.js/Skipped -- should not be skipped -- before each hook (failed).png", + "height": 1440, + "width": 2560 + } + ] + } + ] + }, + { + "title": ["Skipped", "should be skipped"], + "state": "skipped", + "body": "function () {\n expect(true).to.be.true;\n }", + "displayError": null, + "attempts": [ + { + "state": "skipped", + "error": null, + "videoTimestamp": 1239, + "duration": null, + "startedAt": "2023-09-18T23:38:42.790Z", + "screenshots": [] + } + ] + } + ], + "error": null, + "video": "/Users/agoldis/cypress-cloud/examples/webapp/cypress/videos/skipped.spec.js.mp4", + "spec": { + "fileExtension": ".js", + "baseName": "skipped.spec.js", + "fileName": "skipped", + "specFileExtension": ".spec.js", + "relativeToCommonRoot": "skipped.spec.js", + "specType": "integration", + "name": "cypress/e2e/skipped.spec.js", + "relative": "cypress/e2e/skipped.spec.js", + "absolute": "/Users/agoldis/cypress-cloud/examples/webapp/cypress/e2e/skipped.spec.js" + }, + "shouldUploadVideo": true + } + ], + "browserPath": "", + "browserName": "electron", + "browserVersion": "106.0.5249.51", + "osName": "darwin", + "osVersion": "22.1.0", + "cypressVersion": "12.17.4", + "config": { + "configFile": "/Users/agoldis/cypress-cloud/examples/webapp/cypress.config.ts", + "testingType": "e2e", + "video": true, + "projectId": "l4zuz8", + "baseUrl": "https://todomvc.com/examples/vanillajs", + "supportFile": "/Users/agoldis/cypress-cloud/examples/webapp/cypress/support/e2e.ts", + "specPattern": "cypress/e2e/*.js", + "setupNodeEvents": "[Function setupNodeEvents]", + "projectRoot": "/Users/agoldis/cypress-cloud/examples/webapp", + "projectName": "webapp", + "repoRoot": "/Users/agoldis/cypress-cloud", + "rawJson": { + "video": true, + "e2e": { + "projectId": "l4zuz8", + "baseUrl": "https://todomvc.com/examples/vanillajs", + "supportFile": "cypress/support/e2e.ts", + "specPattern": "cypress/e2e/*.js", + "setupNodeEvents": "[Function setupNodeEvents]" + }, + "component": { + "specPattern": ["pages/__tests__/*.spec.tsx"], + "setupNodeEvents": "[Function setupNodeEvents]", + "devServer": { "framework": "next", "bundler": "webpack" } + }, + "projectId": "l4zuz8", + "baseUrl": "https://todomvc.com/examples/vanillajs", + "supportFile": "cypress/support/e2e.ts", + "specPattern": "cypress/e2e/*.js", + "setupNodeEvents": "[Function setupNodeEvents]", + "envFile": {}, + "projectRoot": "/Users/agoldis/cypress-cloud/examples/webapp", + "projectName": "webapp", + "repoRoot": "/Users/agoldis/cypress-cloud" + }, + "morgan": false, + "isTextTerminal": true, + "socketId": "g4wfg2qk9f", + "report": true, + "trashAssetsBeforeRuns": false, + "animationDistanceThreshold": 5, + "arch": "arm64", + "blockHosts": null, + "chromeWebSecurity": true, + "clientCertificates": [], + "defaultCommandTimeout": 4000, + "downloadsFolder": "/Users/agoldis/cypress-cloud/examples/webapp/cypress/downloads", + "env": { "currents_ws": 59149 }, + "execTimeout": 60000, + "experimentalCspAllowList": false, + "experimentalFetchPolyfill": false, + "experimentalInteractiveRunEvents": false, + "experimentalRunAllSpecs": false, + "experimentalMemoryManagement": false, + "experimentalModifyObstructiveThirdPartyCode": false, + "experimentalSkipDomainInjection": null, + "experimentalOriginDependencies": false, + "experimentalSourceRewriting": false, + "experimentalSingleTabRunMode": false, + "experimentalStudio": false, + "experimentalWebKitSupport": false, + "fileServerFolder": "/Users/agoldis/cypress-cloud/examples/webapp", + "fixturesFolder": "/Users/agoldis/cypress-cloud/examples/webapp/cypress/fixtures", + "excludeSpecPattern": "*.hot-update.js", + "includeShadowDom": false, + "keystrokeDelay": 0, + "modifyObstructiveCode": true, + "numTestsKeptInMemory": 0, + "platform": "darwin", + "pageLoadTimeout": 60000, + "port": 59392, + "redirectionLimit": 20, + "reporter": "spec", + "reporterOptions": null, + "requestTimeout": 5000, + "resolvedNodePath": "/Users/agoldis/.nvm/versions/node/v18.16.1/bin/node", + "resolvedNodeVersion": "18.16.1", + "responseTimeout": 30000, + "retries": { "runMode": 0, "openMode": 0 }, + "screenshotOnRunFailure": true, + "screenshotsFolder": "/Users/agoldis/cypress-cloud/examples/webapp/cypress/screenshots", + "slowTestThreshold": 10000, + "scrollBehavior": "top", + "supportFolder": "/Users/agoldis/cypress-cloud/examples/webapp/cypress/support", + "taskTimeout": 60000, + "testIsolation": true, + "userAgent": null, + "videoCompression": 32, + "videosFolder": "/Users/agoldis/cypress-cloud/examples/webapp/cypress/videos", + "videoUploadOnPasses": true, + "viewportHeight": 660, + "viewportWidth": 1000, + "waitForAnimations": true, + "watchForFileChanges": false, + "additionalIgnorePattern": [], + "autoOpen": false, + "browsers": [ + { + "name": "chrome", + "family": "chromium", + "channel": "stable", + "displayName": "Chrome", + "version": "117.0.5938.88", + "path": "/Applications/Google Chrome.app/Contents/MacOS/Google Chrome", + "minSupportedVersion": 64, + "majorVersion": "117" + }, + { + "name": "firefox", + "family": "firefox", + "channel": "stable", + "displayName": "Firefox", + "version": "108.0", + "path": "/Applications/Firefox.app/Contents/MacOS/firefox", + "minSupportedVersion": 86, + "majorVersion": "108" + }, + { + "name": "electron", + "channel": "stable", + "family": "chromium", + "displayName": "Electron", + "version": "106.0.5249.51", + "path": "", + "majorVersion": 106 + } + ], + "clientRoute": "/__/", + "cypressBinaryRoot": "/Users/agoldis/Library/Caches/Cypress/12.17.4/Cypress.app/Contents/Resources/app", + "devServerPublicPathRoute": "/__cypress/src", + "hosts": null, + "isInteractive": true, + "namespace": "__cypress", + "reporterRoute": "/__cypress/reporter", + "socketIoCookie": "__socket", + "socketIoRoute": "/__socket", + "version": "12.17.4", + "cypressEnv": "production", + "resolved": { + "animationDistanceThreshold": { "value": 5, "from": "default" }, + "arch": { "value": "arm64", "from": "default" }, + "baseUrl": { + "value": "https://todomvc.com/examples/vanillajs", + "from": "config" + }, + "blockHosts": { "value": null, "from": "default" }, + "chromeWebSecurity": { "value": true, "from": "default" }, + "clientCertificates": { "value": [], "from": "default" }, + "defaultCommandTimeout": { "value": 4000, "from": "default" }, + "downloadsFolder": { "value": "cypress/downloads", "from": "default" }, + "env": { "currents_ws": { "value": 59149, "from": "cli" } }, + "execTimeout": { "value": 60000, "from": "default" }, + "experimentalCspAllowList": { "value": false, "from": "default" }, + "experimentalFetchPolyfill": { "value": false, "from": "default" }, + "experimentalInteractiveRunEvents": { "value": false, "from": "default" }, + "experimentalRunAllSpecs": { "value": false, "from": "default" }, + "experimentalMemoryManagement": { "value": false, "from": "default" }, + "experimentalModifyObstructiveThirdPartyCode": { + "value": false, + "from": "default" + }, + "experimentalSkipDomainInjection": { "value": null, "from": "default" }, + "experimentalOriginDependencies": { "value": false, "from": "default" }, + "experimentalSourceRewriting": { "value": false, "from": "default" }, + "experimentalSingleTabRunMode": { "value": false, "from": "default" }, + "experimentalStudio": { "value": false, "from": "default" }, + "experimentalWebKitSupport": { "value": false, "from": "default" }, + "fileServerFolder": { "value": "", "from": "default" }, + "fixturesFolder": { "value": "cypress/fixtures", "from": "default" }, + "excludeSpecPattern": { "value": "*.hot-update.js", "from": "default" }, + "includeShadowDom": { "value": false, "from": "default" }, + "keystrokeDelay": { "value": 0, "from": "default" }, + "modifyObstructiveCode": { "value": true, "from": "default" }, + "nodeVersion": { "from": "default" }, + "numTestsKeptInMemory": { "value": 0, "from": "config" }, + "platform": { "value": "darwin", "from": "default" }, + "pageLoadTimeout": { "value": 60000, "from": "default" }, + "port": { "value": null, "from": "default" }, + "projectId": { "value": "l4zuz8", "from": "config" }, + "redirectionLimit": { "value": 20, "from": "default" }, + "reporter": { "value": "spec", "from": "default" }, + "reporterOptions": { "value": null, "from": "default" }, + "requestTimeout": { "value": 5000, "from": "default" }, + "resolvedNodePath": { "value": null, "from": "default" }, + "resolvedNodeVersion": { "value": null, "from": "default" }, + "responseTimeout": { "value": 30000, "from": "default" }, + "retries": { + "value": { "runMode": 0, "openMode": 0 }, + "from": "default" + }, + "screenshotOnRunFailure": { "value": true, "from": "default" }, + "screenshotsFolder": { + "value": "cypress/screenshots", + "from": "default" + }, + "slowTestThreshold": { "value": 10000, "from": "default" }, + "scrollBehavior": { "value": "top", "from": "default" }, + "supportFile": { "value": "cypress/support/e2e.ts", "from": "config" }, + "supportFolder": { "value": false, "from": "default" }, + "taskTimeout": { "value": 60000, "from": "default" }, + "testIsolation": { "value": true, "from": "default" }, + "trashAssetsBeforeRuns": { "value": false, "from": "cli" }, + "userAgent": { "value": null, "from": "default" }, + "video": { "value": true, "from": "default" }, + "videoCompression": { "value": 32, "from": "default" }, + "videosFolder": { "value": "cypress/videos", "from": "default" }, + "videoUploadOnPasses": { "value": true, "from": "default" }, + "viewportHeight": { "value": 660, "from": "default" }, + "viewportWidth": { "value": 1000, "from": "default" }, + "waitForAnimations": { "value": true, "from": "default" }, + "watchForFileChanges": { "value": false, "from": "config" }, + "specPattern": { "value": "cypress/e2e/*.js", "from": "config" }, + "browsers": { + "value": [ + { + "name": "chrome", + "family": "chromium", + "channel": "stable", + "displayName": "Chrome", + "version": "117.0.5938.88", + "path": "/Applications/Google Chrome.app/Contents/MacOS/Google Chrome", + "minSupportedVersion": 64, + "majorVersion": "117" + }, + { + "name": "firefox", + "family": "firefox", + "channel": "stable", + "displayName": "Firefox", + "version": "108.0", + "path": "/Applications/Firefox.app/Contents/MacOS/firefox", + "minSupportedVersion": 86, + "majorVersion": "108" + }, + { + "name": "electron", + "channel": "stable", + "family": "chromium", + "displayName": "Electron", + "version": "106.0.5249.51", + "path": "", + "majorVersion": 106, + "isHeadless": true, + "isHeaded": false + } + ], + "from": "runtime" + }, + "hosts": { "value": null, "from": "default" }, + "isInteractive": { "value": true, "from": "default" }, + "configFile": { + "value": "/Users/agoldis/cypress-cloud/examples/webapp/cypress.config.ts", + "from": "plugin" + }, + "testingType": { "value": "e2e", "from": "plugin" } + }, + "remote": { + "origin": "https://todomvc.com", + "strategy": "http", + "fileServer": null, + "domainName": "todomvc.com", + "props": { + "port": "443", + "protocol": "https:", + "subdomain": null, + "domain": "todomvc", + "tld": "com" + } + }, + "browser": null, + "specs": [], + "proxyUrl": "http://localhost:59392", + "browserUrl": "https://todomvc.com/__/", + "reporterUrl": "https://todomvc.com/__cypress/reporter", + "proxyServer": "http://localhost:59392", + "state": {} + } +} diff --git a/packages/cypress-cloud/lib/__tests__/fixtures/12.17.4/skipped.spec.js/screenshot_01.json b/packages/cypress-cloud/lib/__tests__/fixtures/12.17.4/skipped.spec.js/screenshot_01.json new file mode 100644 index 0000000..876b6ee --- /dev/null +++ b/packages/cypress-cloud/lib/__tests__/fixtures/12.17.4/skipped.spec.js/screenshot_01.json @@ -0,0 +1 @@ +{"testAttemptIndex":0,"size":337459,"takenAt":"2023-09-18T23:38:42.571Z","dimensions":{"width":2560,"height":1440},"multipart":false,"specName":"skipped.spec.js","testFailure":true,"path":"/Users/agoldis/cypress-cloud/examples/webapp/cypress/screenshots/skipped.spec.js/Skipped -- should not be skipped -- before each hook (failed).png","scaled":true,"blackout":[],"duration":183,"testId":"r3","height":1440,"width":2560} \ No newline at end of file diff --git a/packages/cypress-cloud/lib/__tests__/fixtures/12.17.4/skipped.spec.js/specAfter.json b/packages/cypress-cloud/lib/__tests__/fixtures/12.17.4/skipped.spec.js/specAfter.json new file mode 100644 index 0000000..36d268a --- /dev/null +++ b/packages/cypress-cloud/lib/__tests__/fixtures/12.17.4/skipped.spec.js/specAfter.json @@ -0,0 +1,149 @@ +{ + "stats": { + "suites": 1, + "tests": 2, + "passes": 0, + "pending": 0, + "skipped": 1, + "failures": 1, + "wallClockStartedAt": "2023-09-18T23:38:42.405Z", + "wallClockEndedAt": "2023-09-18T23:38:42.813Z", + "wallClockDuration": 408 + }, + "reporter": "spec", + "reporterStats": { + "suites": 1, + "tests": 1, + "passes": 0, + "pending": 0, + "failures": 1, + "start": "2023-09-18T23:38:42.406Z", + "end": "2023-09-18T23:38:42.815Z", + "duration": 409 + }, + "hooks": [ + { + "hookId": "h1", + "hookName": "before each", + "title": ["\"before each\" hook"], + "body": "() => {\n const currentTest = cy.state(\"ctx\").currentTest;\n if (currentTest) {\n handleBefore(currentTest);\n }\n}" + }, + { + "hookId": "h2", + "hookName": "before each", + "title": ["\"before each\" hook"], + "body": "function () {\n cy.visit(\"/\");\n}" + }, + { + "hookId": "h6", + "hookName": "before each", + "title": ["\"before each\" hook"], + "body": "function () {\n throw new Error(\"before each exception\");\n }" + }, + { + "hookId": "h4", + "hookName": "after each", + "title": ["\"after each\" hook"], + "body": "function () {\n self.sendLogsToPrinter(self.collectorState.getCurrentLogStackIndex(), self.collectorState.getCurrentTest());\n }" + }, + { + "hookId": "h5", + "hookName": "after each", + "title": ["\"after each\" hook"], + "body": "() => {\n const currentTest = cy.state(\"ctx\").currentTest;\n if (currentTest) {\n handleAfter(currentTest);\n }\n}" + }, + { + "hookId": "h3", + "hookName": "after all", + "title": ["\"after all\" hook"], + "body": "function () {\n // Need to wait otherwise some last commands get omitted from logs.\n cy.task(CONSTANTS.TASK_NAME_OUTPUT, null, {log: false});\n }" + } + ], + "tests": [ + { + "testId": "r3", + "title": ["Skipped", "should not be skipped"], + "state": "failed", + "body": "function () {\n expect(true).to.be.true;\n }", + "displayError": "Error: before each exception\n\nBecause this error occurred during a `before each` hook we are skipping the remaining tests in the current suite: `Skipped`\n at Context.eval (webpack://web/./cypress/e2e/skipped.spec.js:3:10)", + "attempts": [ + { + "state": "failed", + "error": { + "name": "Error", + "message": "before each exception\n\nBecause this error occurred during a `before each` hook we are skipping the remaining tests in the current suite: `Skipped`", + "stack": " at Context.eval (webpack://web/./cypress/e2e/skipped.spec.js:3:10)", + "codeFrame": { + "line": 3, + "column": 11, + "originalFile": "cypress/e2e/skipped.spec.js", + "relativeFile": "examples/webapp/cypress/e2e/skipped.spec.js", + "absoluteFile": "/Users/agoldis/cypress-cloud/examples/webapp/cypress/e2e/skipped.spec.js", + "frame": " 1 | describe(\"Skipped\", function () {\n 2 | beforeEach(function () {\n> 3 | throw new Error(\"before each exception\");\n | ^\n 4 | });\n 5 | it(\"should not be skipped\", function () {\n 6 | expect(true).to.be.true;", + "language": "js" + } + }, + "timings": { + "lifecycle": 26, + "before each": [ + { "hookId": "h1", "fnDuration": 5, "afterFnDuration": 0 }, + { "hookId": "h2", "fnDuration": 112, "afterFnDuration": 0 }, + { "hookId": "h6", "fnDuration": 1, "afterFnDuration": 192 } + ], + "after each": [ + { "hookId": "h4", "fnDuration": 13, "afterFnDuration": 0 }, + { "hookId": "h5", "fnDuration": 5, "afterFnDuration": 0 } + ] + }, + "failedFromHookId": "h6", + "wallClockStartedAt": "2023-09-18T23:38:42.415Z", + "wallClockDuration": 361, + "videoTimestamp": 864 + } + ] + }, + { + "testId": "r4", + "title": ["Skipped", "should be skipped"], + "state": "skipped", + "body": "function () {\n expect(true).to.be.true;\n }", + "displayError": null, + "attempts": [ + { + "state": "skipped", + "error": null, + "timings": null, + "failedFromHookId": null, + "wallClockStartedAt": "2023-09-18T23:38:42.790Z", + "wallClockDuration": null, + "videoTimestamp": 1239 + } + ] + } + ], + "error": null, + "video": "/Users/agoldis/cypress-cloud/examples/webapp/cypress/videos/skipped.spec.js.mp4", + "screenshots": [ + { + "screenshotId": "vdaak", + "name": null, + "testId": "r3", + "testAttemptIndex": 0, + "takenAt": "2023-09-18T23:38:42.571Z", + "path": "/Users/agoldis/cypress-cloud/examples/webapp/cypress/screenshots/skipped.spec.js/Skipped -- should not be skipped -- before each hook (failed).png", + "height": 1440, + "width": 2560 + } + ], + "spec": { + "fileExtension": ".js", + "baseName": "skipped.spec.js", + "fileName": "skipped", + "specFileExtension": ".spec.js", + "relativeToCommonRoot": "skipped.spec.js", + "specType": "integration", + "name": "cypress/e2e/skipped.spec.js", + "relative": "cypress/e2e/skipped.spec.js", + "absolute": "/Users/agoldis/cypress-cloud/examples/webapp/cypress/e2e/skipped.spec.js" + } +} diff --git a/packages/cypress-cloud/lib/__tests__/fixtures/12.17.4/skipped.spec.js/testAfter_00.json b/packages/cypress-cloud/lib/__tests__/fixtures/12.17.4/skipped.spec.js/testAfter_00.json new file mode 100644 index 0000000..69a32c1 --- /dev/null +++ b/packages/cypress-cloud/lib/__tests__/fixtures/12.17.4/skipped.spec.js/testAfter_00.json @@ -0,0 +1,66 @@ +{ + "async": false, + "body": "function () {\n expect(true).to.be.true;\n }", + "duration": 193, + "err": { + "message": "before each exception\n\nBecause this error occurred during a `before each` hook we are skipping the remaining tests in the current suite: `Skipped`", + "name": "Error", + "stack": "Error: before each exception\n\nBecause this error occurred during a `before each` hook we are skipping the remaining tests in the current suite: `Skipped`\n at Context.eval (webpack://web/./cypress/e2e/skipped.spec.js:3:10)", + "parsedStack": [ + { "message": "Error: before each exception", "whitespace": "" }, + { + "function": "Context.eval", + "fileUrl": "https://todomvc.com/__cypress/tests?p=cypress/e2e/skipped.spec.js", + "originalFile": "webpack://web/./cypress/e2e/skipped.spec.js", + "relativeFile": "cypress/e2e/skipped.spec.js", + "absoluteFile": "/Users/agoldis/cypress-cloud/examples/webapp/cypress/e2e/skipped.spec.js", + "line": 3, + "column": 10, + "whitespace": " " + } + ], + "codeFrame": { + "line": 3, + "column": 11, + "originalFile": "cypress/e2e/skipped.spec.js", + "relativeFile": "examples/webapp/cypress/e2e/skipped.spec.js", + "absoluteFile": "/Users/agoldis/cypress-cloud/examples/webapp/cypress/e2e/skipped.spec.js", + "frame": " 1 | describe(\"Skipped\", function () {\n 2 | beforeEach(function () {\n> 3 | throw new Error(\"before each exception\");\n | ^\n 4 | });\n 5 | it(\"should not be skipped\", function () {\n 6 | expect(true).to.be.true;", + "language": "js" + } + }, + "final": false, + "hooks": [], + "id": "r3", + "invocationDetails": { + "function": "Suite.eval", + "fileUrl": "https://todomvc.com/__cypress/tests?p=cypress/e2e/skipped.spec.js", + "originalFile": "webpack://web/./cypress/e2e/skipped.spec.js", + "relativeFile": "cypress/e2e/skipped.spec.js", + "absoluteFile": "/Users/agoldis/cypress-cloud/examples/webapp/cypress/e2e/skipped.spec.js", + "line": 5, + "column": 2, + "whitespace": " ", + "stack": "Error\n at Suite.eval (https://todomvc.com/__cypress/tests?p=cypress/e2e/skipped.spec.js:13:3)\n at eval (https://todomvc.com/__cypress/tests?p=cypress/e2e/skipped.spec.js:9:1)\n at eval (https://todomvc.com/__cypress/tests?p=cypress/e2e/skipped.spec.js:20:12)\n at eval ()" + }, + "order": 1, + "pending": false, + "retries": 0, + "state": "failed", + "sync": true, + "timedOut": false, + "timings": { + "lifecycle": 26, + "before each": [ + { "hookId": "h1", "fnDuration": 5, "afterFnDuration": 0 }, + { "hookId": "h2", "fnDuration": 112, "afterFnDuration": 0 }, + { "hookId": "h6", "fnDuration": 1, "afterFnDuration": 192 } + ], + "after each": [{ "hookId": "h4", "fnDuration": 13, "afterFnDuration": 0 }] + }, + "type": "test", + "wallClockStartedAt": "2023-09-18T23:38:42.415Z", + "title": "should not be skipped", + "currentRetry": 0, + "fullTitle": "Skipped should not be skipped" +} diff --git a/packages/cypress-cloud/lib/__tests__/fixtures/13.2.0/crash.spec.js/runResult.json b/packages/cypress-cloud/lib/__tests__/fixtures/13.2.0/crash.spec.js/runResult.json new file mode 100644 index 0000000..882d2a0 --- /dev/null +++ b/packages/cypress-cloud/lib/__tests__/fixtures/13.2.0/crash.spec.js/runResult.json @@ -0,0 +1,144 @@ +{ + "browserName": "electron", + "browserPath": "", + "browserVersion": "114.0.5735.289", + "config": { + "configFile": "/Users/agoldis/cypress-cloud/examples/webapp/cypress.config.ts", + "testingType": "e2e", + "video": true, + "projectId": "l4zuz8", + "baseUrl": "https://todomvc.com/examples/vanillajs", + "supportFile": "/Users/agoldis/cypress-cloud/examples/webapp/cypress/support/e2e.ts", + "specPattern": "cypress/e2e/*.js", + "projectRoot": "/Users/agoldis/cypress-cloud/examples/webapp", + "projectName": "webapp", + "isTextTerminal": true, + "trashAssetsBeforeRuns": false, + "animationDistanceThreshold": 5, + "arch": "arm64", + "blockHosts": null, + "chromeWebSecurity": true, + "clientCertificates": [], + "defaultCommandTimeout": 4000, + "downloadsFolder": "/Users/agoldis/cypress-cloud/examples/webapp/cypress/downloads", + "env": { "currents_ws": 62381 }, + "execTimeout": 60000, + "experimentalCspAllowList": false, + "experimentalFetchPolyfill": false, + "experimentalInteractiveRunEvents": false, + "experimentalRunAllSpecs": false, + "experimentalMemoryManagement": false, + "experimentalModifyObstructiveThirdPartyCode": false, + "experimentalSkipDomainInjection": null, + "experimentalOriginDependencies": false, + "experimentalSourceRewriting": false, + "experimentalSingleTabRunMode": false, + "experimentalStudio": false, + "experimentalWebKitSupport": false, + "fileServerFolder": "/Users/agoldis/cypress-cloud/examples/webapp", + "fixturesFolder": "/Users/agoldis/cypress-cloud/examples/webapp/cypress/fixtures", + "excludeSpecPattern": "*.hot-update.js", + "includeShadowDom": false, + "keystrokeDelay": 0, + "modifyObstructiveCode": true, + "numTestsKeptInMemory": 0, + "platform": "darwin", + "pageLoadTimeout": 60000, + "port": 62391, + "redirectionLimit": 20, + "reporter": "spec", + "reporterOptions": null, + "requestTimeout": 5000, + "resolvedNodePath": "/Users/agoldis/.nvm/versions/node/v18.16.1/bin/node", + "resolvedNodeVersion": "18.16.1", + "responseTimeout": 30000, + "retries": { "runMode": 0, "openMode": 0 }, + "screenshotOnRunFailure": true, + "screenshotsFolder": "/Users/agoldis/cypress-cloud/examples/webapp/cypress/screenshots", + "slowTestThreshold": 10000, + "scrollBehavior": "top", + "taskTimeout": 60000, + "testIsolation": true, + "userAgent": null, + "videoCompression": false, + "videosFolder": "/Users/agoldis/cypress-cloud/examples/webapp/cypress/videos", + "viewportHeight": 660, + "viewportWidth": 1000, + "waitForAnimations": true, + "watchForFileChanges": false, + "browsers": [ + { + "channel": "stable", + "displayName": "Chrome", + "family": "chromium", + "majorVersion": "117", + "name": "chrome", + "path": "/Applications/Google Chrome.app/Contents/MacOS/Google Chrome", + "version": "117.0.5938.88" + }, + { + "channel": "stable", + "displayName": "Firefox", + "family": "firefox", + "majorVersion": "108", + "name": "firefox", + "path": "/Applications/Firefox.app/Contents/MacOS/firefox", + "version": "108.0" + }, + { + "channel": "stable", + "displayName": "Electron", + "family": "chromium", + "majorVersion": 114, + "name": "electron", + "path": "", + "version": "114.0.5735.289" + } + ], + "cypressBinaryRoot": "/Users/agoldis/Library/Caches/Cypress/13.2.0/Cypress.app/Contents/Resources/app", + "hosts": null, + "isInteractive": true, + "version": "13.2.0", + "browser": null, + "cypressInternalEnv": "production" + }, + "cypressVersion": "13.2.0", + "endedTestsAt": "2023-09-18T22:31:58.985Z", + "osName": "darwin", + "osVersion": "22.1.0", + "runs": [ + { + "error": "Oops...we found an error preparing this test file:\n\n > cypress/e2e/crash.spec.js\n\nThe error was:\n\nError: Webpack Compilation Error\nModule not found: Error: Can't resolve 'fff' in '/Users/agoldis/cypress-cloud/examples/webapp/cypress/e2e'\n at handle (/Users/agoldis/Library/Caches/Cypress/13.2.0/Cypress.app/Contents/Resources/app/packages/server/node_modules/@cypress/webpack-preprocessor/dist/index.js:212:23)\n at finalCallback (/Users/agoldis/Library/Caches/Cypress/13.2.0/Cypress.app/Contents/Resources/app/node_modules/webpack/lib/Compiler.js:441:32)\n at /Users/agoldis/Library/Caches/Cypress/13.2.0/Cypress.app/Contents/Resources/app/node_modules/webpack/lib/Compiler.js:505:17\n at /Users/agoldis/Library/Caches/Cypress/13.2.0/Cypress.app/Contents/Resources/app/node_modules/webpack/lib/HookWebpackError.js:68:3\n at Hook.eval [as callAsync] (eval at create (/Users/agoldis/Library/Caches/Cypress/13.2.0/Cypress.app/Contents/Resources/app/node_modules/tapable/lib/HookCodeFactory.js:33:10), :6:1)\n at Hook.CALL_ASYNC_DELEGATE [as _callAsync] (/Users/agoldis/Library/Caches/Cypress/13.2.0/Cypress.app/Contents/Resources/app/node_modules/tapable/lib/Hook.js:18:14)\n at Cache.storeBuildDependencies (/Users/agoldis/Library/Caches/Cypress/13.2.0/Cypress.app/Contents/Resources/app/node_modules/webpack/lib/Cache.js:122:37)\n at /Users/agoldis/Library/Caches/Cypress/13.2.0/Cypress.app/Contents/Resources/app/node_modules/webpack/lib/Compiler.js:501:19\n at Hook.eval [as callAsync] (eval at create (/Users/agoldis/Library/Caches/Cypress/13.2.0/Cypress.app/Contents/Resources/app/node_modules/tapable/lib/HookCodeFactory.js:33:10), :6:1)\n at Hook.CALL_ASYNC_DELEGATE [as _callAsync] (/Users/agoldis/Library/Caches/Cypress/13.2.0/Cypress.app/Contents/Resources/app/node_modules/tapable/lib/Hook.js:18:14)\n at /Users/agoldis/Library/Caches/Cypress/13.2.0/Cypress.app/Contents/Resources/app/node_modules/webpack/lib/Compiler.js:498:23\n at Compiler.emitRecords (/Users/agoldis/Library/Caches/Cypress/13.2.0/Cypress.app/Contents/Resources/app/node_modules/webpack/lib/Compiler.js:919:5)\n at /Users/agoldis/Library/Caches/Cypress/13.2.0/Cypress.app/Contents/Resources/app/node_modules/webpack/lib/Compiler.js:490:11\n at /Users/agoldis/Library/Caches/Cypress/13.2.0/Cypress.app/Contents/Resources/app/node_modules/webpack/lib/Compiler.js:885:14\n at Hook.eval [as callAsync] (eval at create (/Users/agoldis/Library/Caches/Cypress/13.2.0/Cypress.app/Contents/Resources/app/node_modules/tapable/lib/HookCodeFactory.js:33:10), :6:1)\n at Hook.CALL_ASYNC_DELEGATE [as _callAsync] (/Users/agoldis/Library/Caches/Cypress/13.2.0/Cypress.app/Contents/Resources/app/node_modules/tapable/lib/Hook.js:18:14)\n at /Users/agoldis/Library/Caches/Cypress/13.2.0/Cypress.app/Contents/Resources/app/node_modules/webpack/lib/Compiler.js:882:27\n at /Users/agoldis/Library/Caches/Cypress/13.2.0/Cypress.app/Contents/Resources/app/node_modules/neo-async/async.js:2818:7\n at done (/Users/agoldis/Library/Caches/Cypress/13.2.0/Cypress.app/Contents/Resources/app/node_modules/neo-async/async.js:3522:9)\n at alreadyWritten (/Users/agoldis/Library/Caches/Cypress/13.2.0/Cypress.app/Contents/Resources/app/node_modules/webpack/lib/Compiler.js:714:8)\n at /Users/agoldis/Library/Caches/Cypress/13.2.0/Cypress.app/Contents/Resources/app/node_modules/webpack/lib/Compiler.js:802:19\n at /Users/agoldis/Library/Caches/Cypress/13.2.0/Cypress.app/Contents/Resources/app/node_modules/graceful-fs/graceful-fs.js:123:16\n at /Users/agoldis/Library/Caches/Cypress/13.2.0/Cypress.app/Contents/Resources/app/packages/server/node_modules/graceful-fs/graceful-fs.js:123:16\n at /Users/agoldis/Library/Caches/Cypress/13.2.0/Cypress.app/Contents/Resources/app/packages/server/node_modules/graceful-fs/graceful-fs.js:123:16\n at FSReqCallback.readFileAfterClose [as oncomplete] (node:internal/fs/read_file_context:68:3)\n\nThis occurred while Cypress was compiling and bundling your test code. This is usually caused by:\n\n- A missing file or dependency\n- A syntax error in the file or one of its dependencies\n\nFix the error in your code and re-run your tests.", + "reporterStats": null, + "screenshots": [], + "spec": { + "absolute": "/Users/agoldis/cypress-cloud/examples/webapp/cypress/e2e/crash.spec.js", + "fileExtension": ".js", + "fileName": "crash", + "name": "crash.spec.js", + "relative": "cypress/e2e/crash.spec.js" + }, + "stats": { + "duration": 0, + "endedAt": "2023-09-18T22:31:58.985Z", + "failures": 1, + "passes": 0, + "pending": 0, + "skipped": 0, + "startedAt": "2023-09-18T22:31:58.985Z", + "suites": 0, + "tests": 0 + }, + "tests": [], + "video": "/Users/agoldis/cypress-cloud/examples/webapp/cypress/videos/crash.spec.js.mp4" + } + ], + "startedTestsAt": "2023-09-18T22:31:58.985Z", + "totalDuration": 0, + "totalFailed": 1, + "totalPassed": 0, + "totalPending": 0, + "totalSkipped": 0, + "totalSuites": 0, + "totalTests": 0 +} diff --git a/packages/cypress-cloud/lib/__tests__/fixtures/13.2.0/crash.spec.js/specAfter.json b/packages/cypress-cloud/lib/__tests__/fixtures/13.2.0/crash.spec.js/specAfter.json new file mode 100644 index 0000000..40944e1 --- /dev/null +++ b/packages/cypress-cloud/lib/__tests__/fixtures/13.2.0/crash.spec.js/specAfter.json @@ -0,0 +1 @@ +{"error":"Oops...we found an error preparing this test file:\n\n > cypress/e2e/crash.spec.js\n\nThe error was:\n\nError: Webpack Compilation Error\nModule not found: Error: Can't resolve 'fff' in '/Users/agoldis/cypress-cloud/examples/webapp/cypress/e2e'\n at handle (/Users/agoldis/Library/Caches/Cypress/13.2.0/Cypress.app/Contents/Resources/app/packages/server/node_modules/@cypress/webpack-preprocessor/dist/index.js:212:23)\n at finalCallback (/Users/agoldis/Library/Caches/Cypress/13.2.0/Cypress.app/Contents/Resources/app/node_modules/webpack/lib/Compiler.js:441:32)\n at /Users/agoldis/Library/Caches/Cypress/13.2.0/Cypress.app/Contents/Resources/app/node_modules/webpack/lib/Compiler.js:505:17\n at /Users/agoldis/Library/Caches/Cypress/13.2.0/Cypress.app/Contents/Resources/app/node_modules/webpack/lib/HookWebpackError.js:68:3\n at Hook.eval [as callAsync] (eval at create (/Users/agoldis/Library/Caches/Cypress/13.2.0/Cypress.app/Contents/Resources/app/node_modules/tapable/lib/HookCodeFactory.js:33:10), :6:1)\n at Hook.CALL_ASYNC_DELEGATE [as _callAsync] (/Users/agoldis/Library/Caches/Cypress/13.2.0/Cypress.app/Contents/Resources/app/node_modules/tapable/lib/Hook.js:18:14)\n at Cache.storeBuildDependencies (/Users/agoldis/Library/Caches/Cypress/13.2.0/Cypress.app/Contents/Resources/app/node_modules/webpack/lib/Cache.js:122:37)\n at /Users/agoldis/Library/Caches/Cypress/13.2.0/Cypress.app/Contents/Resources/app/node_modules/webpack/lib/Compiler.js:501:19\n at Hook.eval [as callAsync] (eval at create (/Users/agoldis/Library/Caches/Cypress/13.2.0/Cypress.app/Contents/Resources/app/node_modules/tapable/lib/HookCodeFactory.js:33:10), :6:1)\n at Hook.CALL_ASYNC_DELEGATE [as _callAsync] (/Users/agoldis/Library/Caches/Cypress/13.2.0/Cypress.app/Contents/Resources/app/node_modules/tapable/lib/Hook.js:18:14)\n at /Users/agoldis/Library/Caches/Cypress/13.2.0/Cypress.app/Contents/Resources/app/node_modules/webpack/lib/Compiler.js:498:23\n at Compiler.emitRecords (/Users/agoldis/Library/Caches/Cypress/13.2.0/Cypress.app/Contents/Resources/app/node_modules/webpack/lib/Compiler.js:919:5)\n at /Users/agoldis/Library/Caches/Cypress/13.2.0/Cypress.app/Contents/Resources/app/node_modules/webpack/lib/Compiler.js:490:11\n at /Users/agoldis/Library/Caches/Cypress/13.2.0/Cypress.app/Contents/Resources/app/node_modules/webpack/lib/Compiler.js:885:14\n at Hook.eval [as callAsync] (eval at create (/Users/agoldis/Library/Caches/Cypress/13.2.0/Cypress.app/Contents/Resources/app/node_modules/tapable/lib/HookCodeFactory.js:33:10), :6:1)\n at Hook.CALL_ASYNC_DELEGATE [as _callAsync] (/Users/agoldis/Library/Caches/Cypress/13.2.0/Cypress.app/Contents/Resources/app/node_modules/tapable/lib/Hook.js:18:14)\n at /Users/agoldis/Library/Caches/Cypress/13.2.0/Cypress.app/Contents/Resources/app/node_modules/webpack/lib/Compiler.js:882:27\n at /Users/agoldis/Library/Caches/Cypress/13.2.0/Cypress.app/Contents/Resources/app/node_modules/neo-async/async.js:2818:7\n at done (/Users/agoldis/Library/Caches/Cypress/13.2.0/Cypress.app/Contents/Resources/app/node_modules/neo-async/async.js:3522:9)\n at alreadyWritten (/Users/agoldis/Library/Caches/Cypress/13.2.0/Cypress.app/Contents/Resources/app/node_modules/webpack/lib/Compiler.js:714:8)\n at /Users/agoldis/Library/Caches/Cypress/13.2.0/Cypress.app/Contents/Resources/app/node_modules/webpack/lib/Compiler.js:802:19\n at /Users/agoldis/Library/Caches/Cypress/13.2.0/Cypress.app/Contents/Resources/app/node_modules/graceful-fs/graceful-fs.js:123:16\n at /Users/agoldis/Library/Caches/Cypress/13.2.0/Cypress.app/Contents/Resources/app/packages/server/node_modules/graceful-fs/graceful-fs.js:123:16\n at /Users/agoldis/Library/Caches/Cypress/13.2.0/Cypress.app/Contents/Resources/app/packages/server/node_modules/graceful-fs/graceful-fs.js:123:16\n at FSReqCallback.readFileAfterClose [as oncomplete] (node:internal/fs/read_file_context:68:3)\n\nThis occurred while Cypress was compiling and bundling your test code. This is usually caused by:\n\n- A missing file or dependency\n- A syntax error in the file or one of its dependencies\n\nFix the error in your code and re-run your tests.","reporterStats":null,"screenshots":[],"spec":{"absolute":"/Users/agoldis/cypress-cloud/examples/webapp/cypress/e2e/crash.spec.js","fileExtension":".js","fileName":"crash","name":"crash.spec.js","relative":"cypress/e2e/crash.spec.js"},"stats":{"duration":0,"endedAt":"2023-09-18T22:31:58.985Z","failures":1,"passes":0,"pending":0,"skipped":0,"startedAt":"2023-09-18T22:31:58.985Z","suites":0,"tests":0},"tests":[],"video":"/Users/agoldis/cypress-cloud/examples/webapp/cypress/videos/crash.spec.js.mp4"} \ No newline at end of file diff --git a/packages/cypress-cloud/lib/__tests__/fixtures/13.2.0/failed.spec.js/runResult.json b/packages/cypress-cloud/lib/__tests__/fixtures/13.2.0/failed.spec.js/runResult.json new file mode 100644 index 0000000..019a6a2 --- /dev/null +++ b/packages/cypress-cloud/lib/__tests__/fixtures/13.2.0/failed.spec.js/runResult.json @@ -0,0 +1,170 @@ +{ + "browserName": "electron", + "browserPath": "", + "browserVersion": "114.0.5735.289", + "config": { + "configFile": "/Users/agoldis/cypress-cloud/examples/webapp/cypress.config.ts", + "testingType": "e2e", + "video": true, + "projectId": "l4zuz8", + "baseUrl": "https://todomvc.com/examples/vanillajs", + "supportFile": "/Users/agoldis/cypress-cloud/examples/webapp/cypress/support/e2e.ts", + "specPattern": "cypress/e2e/*.js", + "projectRoot": "/Users/agoldis/cypress-cloud/examples/webapp", + "projectName": "webapp", + "isTextTerminal": true, + "trashAssetsBeforeRuns": false, + "animationDistanceThreshold": 5, + "arch": "arm64", + "blockHosts": null, + "chromeWebSecurity": true, + "clientCertificates": [], + "defaultCommandTimeout": 4000, + "downloadsFolder": "/Users/agoldis/cypress-cloud/examples/webapp/cypress/downloads", + "env": { "currents_ws": 60842 }, + "execTimeout": 60000, + "experimentalCspAllowList": false, + "experimentalFetchPolyfill": false, + "experimentalInteractiveRunEvents": false, + "experimentalRunAllSpecs": false, + "experimentalMemoryManagement": false, + "experimentalModifyObstructiveThirdPartyCode": false, + "experimentalSkipDomainInjection": null, + "experimentalOriginDependencies": false, + "experimentalSourceRewriting": false, + "experimentalSingleTabRunMode": false, + "experimentalStudio": false, + "experimentalWebKitSupport": false, + "fileServerFolder": "/Users/agoldis/cypress-cloud/examples/webapp", + "fixturesFolder": "/Users/agoldis/cypress-cloud/examples/webapp/cypress/fixtures", + "excludeSpecPattern": "*.hot-update.js", + "includeShadowDom": false, + "keystrokeDelay": 0, + "modifyObstructiveCode": true, + "numTestsKeptInMemory": 0, + "platform": "darwin", + "pageLoadTimeout": 60000, + "port": 60856, + "redirectionLimit": 20, + "reporter": "spec", + "reporterOptions": null, + "requestTimeout": 5000, + "resolvedNodePath": "/Users/agoldis/.nvm/versions/node/v18.16.1/bin/node", + "resolvedNodeVersion": "18.16.1", + "responseTimeout": 30000, + "retries": { "runMode": 0, "openMode": 0 }, + "screenshotOnRunFailure": true, + "screenshotsFolder": "/Users/agoldis/cypress-cloud/examples/webapp/cypress/screenshots", + "slowTestThreshold": 10000, + "scrollBehavior": "top", + "taskTimeout": 60000, + "testIsolation": true, + "userAgent": null, + "videoCompression": false, + "videosFolder": "/Users/agoldis/cypress-cloud/examples/webapp/cypress/videos", + "viewportHeight": 660, + "viewportWidth": 1000, + "waitForAnimations": true, + "watchForFileChanges": false, + "browsers": [ + { + "channel": "stable", + "displayName": "Chrome", + "family": "chromium", + "majorVersion": "117", + "name": "chrome", + "path": "/Applications/Google Chrome.app/Contents/MacOS/Google Chrome", + "version": "117.0.5938.88" + }, + { + "channel": "stable", + "displayName": "Firefox", + "family": "firefox", + "majorVersion": "108", + "name": "firefox", + "path": "/Applications/Firefox.app/Contents/MacOS/firefox", + "version": "108.0" + }, + { + "channel": "stable", + "displayName": "Electron", + "family": "chromium", + "majorVersion": 114, + "name": "electron", + "path": "", + "version": "114.0.5735.289" + } + ], + "cypressBinaryRoot": "/Users/agoldis/Library/Caches/Cypress/13.2.0/Cypress.app/Contents/Resources/app", + "hosts": null, + "isInteractive": true, + "version": "13.2.0", + "browser": null, + "cypressInternalEnv": "production" + }, + "cypressVersion": "13.2.0", + "endedTestsAt": "2023-09-18T08:28:58.956Z", + "osName": "darwin", + "osVersion": "22.1.0", + "runs": [ + { + "error": null, + "reporter": "spec", + "reporterStats": { + "suites": 1, + "tests": 1, + "passes": 0, + "pending": 0, + "failures": 1, + "start": "2023-09-18T08:28:58.143Z", + "end": "2023-09-18T08:28:58.958Z", + "duration": 815 + }, + "screenshots": [ + { + "height": 1440, + "name": null, + "path": "/Users/agoldis/cypress-cloud/examples/webapp/cypress/screenshots/failed.spec.js/Failed -- should fail (failed).png", + "takenAt": "2023-09-18T08:28:58.691Z", + "width": 2560 + } + ], + "spec": { + "absolute": "/Users/agoldis/cypress-cloud/examples/webapp/cypress/e2e/failed.spec.js", + "fileExtension": ".js", + "fileName": "failed", + "name": "failed.spec.js", + "relative": "cypress/e2e/failed.spec.js" + }, + "stats": { + "duration": 816, + "endedAt": "2023-09-18T08:28:58.956Z", + "failures": 1, + "passes": 0, + "pending": 0, + "skipped": 0, + "startedAt": "2023-09-18T08:28:58.140Z", + "suites": 1, + "tests": 1 + }, + "tests": [ + { + "attempts": [{ "state": "failed" }], + "displayError": "ReferenceError: fail is not defined\n at Context.eval (webpack://web/./cypress/e2e/failed.spec.js:3:11)", + "duration": 785, + "state": "failed", + "title": ["Failed", "should fail"] + } + ], + "video": "/Users/agoldis/cypress-cloud/examples/webapp/cypress/videos/failed.spec.js.mp4" + } + ], + "startedTestsAt": "2023-09-18T08:28:58.140Z", + "totalDuration": 816, + "totalFailed": 1, + "totalPassed": 0, + "totalPending": 0, + "totalSkipped": 0, + "totalSuites": 1, + "totalTests": 1 +} diff --git a/packages/cypress-cloud/lib/__tests__/fixtures/13.2.0/failed.spec.js/screenshot_01.json b/packages/cypress-cloud/lib/__tests__/fixtures/13.2.0/failed.spec.js/screenshot_01.json new file mode 100644 index 0000000..948f136 --- /dev/null +++ b/packages/cypress-cloud/lib/__tests__/fixtures/13.2.0/failed.spec.js/screenshot_01.json @@ -0,0 +1,16 @@ +{ + "testAttemptIndex": 0, + "size": 331875, + "takenAt": "2023-09-18T08:28:58.691Z", + "dimensions": { "width": 2560, "height": 1440 }, + "multipart": false, + "specName": "failed.spec.js", + "testFailure": true, + "path": "/Users/agoldis/cypress-cloud/examples/webapp/cypress/screenshots/failed.spec.js/Failed -- should fail (failed).png", + "scaled": true, + "blackout": [], + "duration": 215, + "testId": "r3", + "height": 1440, + "width": 2560 +} diff --git a/packages/cypress-cloud/lib/__tests__/fixtures/13.2.0/failed.spec.js/specAfter.json b/packages/cypress-cloud/lib/__tests__/fixtures/13.2.0/failed.spec.js/specAfter.json new file mode 100644 index 0000000..d4a230d --- /dev/null +++ b/packages/cypress-cloud/lib/__tests__/fixtures/13.2.0/failed.spec.js/specAfter.json @@ -0,0 +1,51 @@ +{ + "error": null, + "reporter": "spec", + "reporterStats": { + "suites": 1, + "tests": 1, + "passes": 0, + "pending": 0, + "failures": 1, + "start": "2023-09-18T08:28:58.143Z", + "end": "2023-09-18T08:28:58.958Z", + "duration": 815 + }, + "screenshots": [ + { + "height": 1440, + "name": null, + "path": "/Users/agoldis/cypress-cloud/examples/webapp/cypress/screenshots/failed.spec.js/Failed -- should fail (failed).png", + "takenAt": "2023-09-18T08:28:58.691Z", + "width": 2560 + } + ], + "spec": { + "absolute": "/Users/agoldis/cypress-cloud/examples/webapp/cypress/e2e/failed.spec.js", + "fileExtension": ".js", + "fileName": "failed", + "name": "failed.spec.js", + "relative": "cypress/e2e/failed.spec.js" + }, + "stats": { + "duration": 816, + "endedAt": "2023-09-18T08:28:58.956Z", + "failures": 1, + "passes": 0, + "pending": 0, + "skipped": 0, + "startedAt": "2023-09-18T08:28:58.140Z", + "suites": 1, + "tests": 1 + }, + "tests": [ + { + "attempts": [{ "state": "failed" }], + "displayError": "ReferenceError: fail is not defined\n at Context.eval (webpack://web/./cypress/e2e/failed.spec.js:3:11)", + "duration": 785, + "state": "failed", + "title": ["Failed", "should fail"] + } + ], + "video": "/Users/agoldis/cypress-cloud/examples/webapp/cypress/videos/failed.spec.js.mp4" +} diff --git a/packages/cypress-cloud/lib/__tests__/fixtures/13.2.0/failed.spec.js/testAfter_00.json b/packages/cypress-cloud/lib/__tests__/fixtures/13.2.0/failed.spec.js/testAfter_00.json new file mode 100644 index 0000000..42f557c --- /dev/null +++ b/packages/cypress-cloud/lib/__tests__/fixtures/13.2.0/failed.spec.js/testAfter_00.json @@ -0,0 +1,66 @@ +{ + "async": false, + "body": "function () {\n expect(fail).to.be.true;\n }", + "duration": 750, + "err": { + "message": "fail is not defined", + "name": "ReferenceError", + "stack": "ReferenceError: fail is not defined\n at Context.eval (webpack://web/./cypress/e2e/failed.spec.js:3:11)", + "parsedStack": [ + { "message": "ReferenceError: fail is not defined", "whitespace": "" }, + { + "function": "Context.eval", + "fileUrl": "https://todomvc.com/__cypress/tests?p=cypress/e2e/failed.spec.js", + "originalFile": "webpack://web/./cypress/e2e/failed.spec.js", + "relativeFile": "cypress/e2e/failed.spec.js", + "absoluteFile": "/Users/agoldis/cypress-cloud/examples/webapp/cypress/e2e/failed.spec.js", + "line": 3, + "column": 11, + "whitespace": " " + } + ], + "codeFrame": { + "line": 3, + "column": 12, + "originalFile": "cypress/e2e/failed.spec.js", + "relativeFile": "examples/webapp/cypress/e2e/failed.spec.js", + "absoluteFile": "/Users/agoldis/cypress-cloud/examples/webapp/cypress/e2e/failed.spec.js", + "frame": " 1 | describe(\"Failed\", function () {\n 2 | it(\"should fail\", function () {\n> 3 | expect(fail).to.be.true;\n | ^\n 4 | });\n 5 | });\n 6 | ", + "language": "js" + } + }, + "final": false, + "hooks": [], + "id": "r3", + "invocationDetails": { + "function": "Suite.eval", + "fileUrl": "https://todomvc.com/__cypress/tests?p=cypress/e2e/failed.spec.js", + "originalFile": "webpack://web/./cypress/e2e/failed.spec.js", + "relativeFile": "cypress/e2e/failed.spec.js", + "absoluteFile": "/Users/agoldis/cypress-cloud/examples/webapp/cypress/e2e/failed.spec.js", + "line": 2, + "column": 2, + "whitespace": " ", + "stack": "Error\n at Suite.eval (https://todomvc.com/__cypress/tests?p=cypress/e2e/failed.spec.js:10:3)\n at eval (https://todomvc.com/__cypress/tests?p=cypress/e2e/failed.spec.js:9:1)\n at eval (https://todomvc.com/__cypress/tests?p=cypress/e2e/failed.spec.js:14:12)\n at eval ()" + }, + "order": 1, + "pending": false, + "retries": 0, + "state": "failed", + "sync": true, + "timedOut": false, + "timings": { + "lifecycle": 10, + "before each": [ + { "hookId": "h1", "fnDuration": 9, "afterFnDuration": 0 }, + { "hookId": "h2", "fnDuration": 508, "afterFnDuration": 1 } + ], + "test": { "fnDuration": 1, "afterFnDuration": 218 }, + "after each": [{ "hookId": "h4", "fnDuration": 18, "afterFnDuration": 0 }] + }, + "type": "test", + "wallClockStartedAt": "2023-09-18T08:28:58.157Z", + "title": "should fail", + "currentRetry": 0, + "fullTitle": "Failed should fail" +} diff --git a/packages/cypress-cloud/lib/__tests__/fixtures/13.2.0/passed.spec.js/runResult.json b/packages/cypress-cloud/lib/__tests__/fixtures/13.2.0/passed.spec.js/runResult.json new file mode 100644 index 0000000..61109e7 --- /dev/null +++ b/packages/cypress-cloud/lib/__tests__/fixtures/13.2.0/passed.spec.js/runResult.json @@ -0,0 +1 @@ +{"browserName":"electron","browserPath":"","browserVersion":"114.0.5735.289","config":{"configFile":"/Users/agoldis/cypress-cloud/examples/webapp/cypress.config.ts","testingType":"e2e","video":true,"projectId":"l4zuz8","baseUrl":"https://todomvc.com/examples/vanillajs","supportFile":"/Users/agoldis/cypress-cloud/examples/webapp/cypress/support/e2e.ts","specPattern":"cypress/e2e/*.js","projectRoot":"/Users/agoldis/cypress-cloud/examples/webapp","projectName":"webapp","isTextTerminal":true,"trashAssetsBeforeRuns":false,"animationDistanceThreshold":5,"arch":"arm64","blockHosts":null,"chromeWebSecurity":true,"clientCertificates":[],"defaultCommandTimeout":4000,"downloadsFolder":"/Users/agoldis/cypress-cloud/examples/webapp/cypress/downloads","env":{"currents_ws":54784},"execTimeout":60000,"experimentalCspAllowList":false,"experimentalFetchPolyfill":false,"experimentalInteractiveRunEvents":false,"experimentalRunAllSpecs":false,"experimentalMemoryManagement":false,"experimentalModifyObstructiveThirdPartyCode":false,"experimentalSkipDomainInjection":null,"experimentalOriginDependencies":false,"experimentalSourceRewriting":false,"experimentalSingleTabRunMode":false,"experimentalStudio":false,"experimentalWebKitSupport":false,"fileServerFolder":"/Users/agoldis/cypress-cloud/examples/webapp","fixturesFolder":"/Users/agoldis/cypress-cloud/examples/webapp/cypress/fixtures","excludeSpecPattern":"*.hot-update.js","includeShadowDom":false,"keystrokeDelay":0,"modifyObstructiveCode":true,"numTestsKeptInMemory":0,"platform":"darwin","pageLoadTimeout":60000,"port":54901,"redirectionLimit":20,"reporter":"spec","reporterOptions":null,"requestTimeout":5000,"resolvedNodePath":"/Users/agoldis/.nvm/versions/node/v18.16.1/bin/node","resolvedNodeVersion":"18.16.1","responseTimeout":30000,"retries":{"runMode":0,"openMode":0},"screenshotOnRunFailure":true,"screenshotsFolder":"/Users/agoldis/cypress-cloud/examples/webapp/cypress/screenshots","slowTestThreshold":10000,"scrollBehavior":"top","taskTimeout":60000,"testIsolation":true,"userAgent":null,"videoCompression":false,"videosFolder":"/Users/agoldis/cypress-cloud/examples/webapp/cypress/videos","viewportHeight":660,"viewportWidth":1000,"waitForAnimations":true,"watchForFileChanges":false,"browsers":[{"channel":"stable","displayName":"Chrome","family":"chromium","majorVersion":"117","name":"chrome","path":"/Applications/Google Chrome.app/Contents/MacOS/Google Chrome","version":"117.0.5938.88"},{"channel":"stable","displayName":"Firefox","family":"firefox","majorVersion":"108","name":"firefox","path":"/Applications/Firefox.app/Contents/MacOS/firefox","version":"108.0"},{"channel":"stable","displayName":"Electron","family":"chromium","majorVersion":114,"name":"electron","path":"","version":"114.0.5735.289"}],"cypressBinaryRoot":"/Users/agoldis/Library/Caches/Cypress/13.2.0/Cypress.app/Contents/Resources/app","hosts":null,"isInteractive":true,"version":"13.2.0","browser":null,"cypressInternalEnv":"production"},"cypressVersion":"13.2.0","endedTestsAt":"2023-09-18T23:17:08.543Z","osName":"darwin","osVersion":"22.1.0","runs":[{"error":null,"reporter":"spec","reporterStats":{"suites":1,"tests":1,"passes":1,"pending":0,"failures":0,"start":"2023-09-18T23:17:05.312Z","end":"2023-09-18T23:17:06.413Z","duration":1101},"screenshots":[{"height":1320,"name":null,"path":"/Users/agoldis/cypress-cloud/examples/webapp/cypress/screenshots/passed.spec.js/Passed -- should pass.png","takenAt":"2023-09-18T23:17:05.774Z","width":2000}],"spec":{"absolute":"/Users/agoldis/cypress-cloud/examples/webapp/cypress/e2e/passed.spec.js","fileExtension":".js","fileName":"passed","name":"passed.spec.js","relative":"cypress/e2e/passed.spec.js"},"stats":{"duration":1103,"endedAt":"2023-09-18T23:17:06.411Z","failures":0,"passes":1,"pending":0,"skipped":0,"startedAt":"2023-09-18T23:17:05.308Z","suites":1,"tests":1},"tests":[{"attempts":[{"state":"passed"}],"displayError":null,"duration":1098,"state":"passed","title":["Passed","should pass"]}],"video":"/Users/agoldis/cypress-cloud/examples/webapp/cypress/videos/passed.spec.js.mp4"}],"startedTestsAt":"2023-09-18T23:17:05.308Z","totalDuration":1152,"totalFailed":0,"totalPassed":1,"totalPending":1,"totalSkipped":0,"totalSuites":2,"totalTests":2} \ No newline at end of file diff --git a/packages/cypress-cloud/lib/__tests__/fixtures/13.2.0/passed.spec.js/screenshot_01.json b/packages/cypress-cloud/lib/__tests__/fixtures/13.2.0/passed.spec.js/screenshot_01.json new file mode 100644 index 0000000..2b6e5fa --- /dev/null +++ b/packages/cypress-cloud/lib/__tests__/fixtures/13.2.0/passed.spec.js/screenshot_01.json @@ -0,0 +1,17 @@ +{ + "testAttemptIndex": 0, + "size": 236374, + "takenAt": "2023-09-18T23:17:05.774Z", + "dimensions": { "width": 2000, "height": 1320 }, + "multipart": true, + "pixelRatio": 2, + "name": "custom-screenshot", + "specName": "passed.spec.js", + "path": "/Users/agoldis/cypress-cloud/examples/webapp/cypress/screenshots/passed.spec.js/Passed -- should pass.png", + "scaled": false, + "blackout": [], + "duration": 607, + "testId": "r3", + "height": 1320, + "width": 2000 +} diff --git a/packages/cypress-cloud/lib/__tests__/fixtures/13.2.0/passed.spec.js/specAfter.json b/packages/cypress-cloud/lib/__tests__/fixtures/13.2.0/passed.spec.js/specAfter.json new file mode 100644 index 0000000..66ccb4d --- /dev/null +++ b/packages/cypress-cloud/lib/__tests__/fixtures/13.2.0/passed.spec.js/specAfter.json @@ -0,0 +1,51 @@ +{ + "error": null, + "reporter": "spec", + "reporterStats": { + "suites": 1, + "tests": 1, + "passes": 1, + "pending": 0, + "failures": 0, + "start": "2023-09-18T23:17:05.312Z", + "end": "2023-09-18T23:17:06.413Z", + "duration": 1101 + }, + "screenshots": [ + { + "height": 1320, + "name": "custom-screenshot", + "path": "/Users/agoldis/cypress-cloud/examples/webapp/cypress/screenshots/passed.spec.js/Passed -- should pass.png", + "takenAt": "2023-09-18T23:17:05.774Z", + "width": 2000 + } + ], + "spec": { + "absolute": "/Users/agoldis/cypress-cloud/examples/webapp/cypress/e2e/passed.spec.js", + "fileExtension": ".js", + "fileName": "passed", + "name": "passed.spec.js", + "relative": "cypress/e2e/passed.spec.js" + }, + "stats": { + "duration": 1103, + "endedAt": "2023-09-18T23:17:06.411Z", + "failures": 0, + "passes": 1, + "pending": 0, + "skipped": 0, + "startedAt": "2023-09-18T23:17:05.308Z", + "suites": 1, + "tests": 1 + }, + "tests": [ + { + "attempts": [{ "state": "passed" }], + "displayError": null, + "duration": 1098, + "state": "passed", + "title": ["Passed", "should pass"] + } + ], + "video": "/Users/agoldis/cypress-cloud/examples/webapp/cypress/videos/passed.spec.js.mp4" +} diff --git a/packages/cypress-cloud/lib/__tests__/fixtures/13.2.0/passed.spec.js/testAfter_00.json b/packages/cypress-cloud/lib/__tests__/fixtures/13.2.0/passed.spec.js/testAfter_00.json new file mode 100644 index 0000000..390a7bb --- /dev/null +++ b/packages/cypress-cloud/lib/__tests__/fixtures/13.2.0/passed.spec.js/testAfter_00.json @@ -0,0 +1 @@ +{"async":false,"body":"function () {\n cy.visit(\"/\");\n cy.screenshot({\n name: \"Customer screenshot\"\n });\n expect(true).to.be.true;\n }","duration":1062,"final":false,"hooks":[],"id":"r3","invocationDetails":{"function":"Suite.eval","fileUrl":"https://todomvc.com/__cypress/tests?p=cypress/e2e/passed.spec.js","originalFile":"webpack://web/./cypress/e2e/passed.spec.js","relativeFile":"cypress/e2e/passed.spec.js","absoluteFile":"/Users/agoldis/cypress-cloud/examples/webapp/cypress/e2e/passed.spec.js","line":2,"column":2,"whitespace":" ","stack":"Error\n at Suite.eval (https://todomvc.com/__cypress/tests?p=cypress/e2e/passed.spec.js:10:3)\n at eval (https://todomvc.com/__cypress/tests?p=cypress/e2e/passed.spec.js:9:1)\n at eval (https://todomvc.com/__cypress/tests?p=cypress/e2e/passed.spec.js:18:12)\n at eval ()"},"order":1,"pending":false,"retries":0,"state":"passed","sync":true,"timedOut":false,"timings":{"lifecycle":14,"before each":[{"hookId":"h1","fnDuration":10,"afterFnDuration":1},{"hookId":"h2","fnDuration":355,"afterFnDuration":0}],"test":{"fnDuration":681,"afterFnDuration":0},"after each":[{"hookId":"h4","fnDuration":19,"afterFnDuration":0}]},"type":"test","wallClockStartedAt":"2023-09-18T23:17:05.312Z","title":"should pass","currentRetry":0,"fullTitle":"Passed should pass"} \ No newline at end of file diff --git a/packages/cypress-cloud/lib/__tests__/fixtures/13.2.0/pending.spec.js/runResult.json b/packages/cypress-cloud/lib/__tests__/fixtures/13.2.0/pending.spec.js/runResult.json new file mode 100644 index 0000000..1a78389 --- /dev/null +++ b/packages/cypress-cloud/lib/__tests__/fixtures/13.2.0/pending.spec.js/runResult.json @@ -0,0 +1 @@ +{"browserName":"electron","browserPath":"","browserVersion":"114.0.5735.289","config":{"configFile":"/Users/agoldis/cypress-cloud/examples/webapp/cypress.config.ts","testingType":"e2e","video":true,"projectId":"l4zuz8","baseUrl":"https://todomvc.com/examples/vanillajs","supportFile":"/Users/agoldis/cypress-cloud/examples/webapp/cypress/support/e2e.ts","specPattern":"cypress/e2e/*.js","projectRoot":"/Users/agoldis/cypress-cloud/examples/webapp","projectName":"webapp","isTextTerminal":true,"trashAssetsBeforeRuns":false,"animationDistanceThreshold":5,"arch":"arm64","blockHosts":null,"chromeWebSecurity":true,"clientCertificates":[],"defaultCommandTimeout":4000,"downloadsFolder":"/Users/agoldis/cypress-cloud/examples/webapp/cypress/downloads","env":{"currents_ws":54784},"execTimeout":60000,"experimentalCspAllowList":false,"experimentalFetchPolyfill":false,"experimentalInteractiveRunEvents":false,"experimentalRunAllSpecs":false,"experimentalMemoryManagement":false,"experimentalModifyObstructiveThirdPartyCode":false,"experimentalSkipDomainInjection":null,"experimentalOriginDependencies":false,"experimentalSourceRewriting":false,"experimentalSingleTabRunMode":false,"experimentalStudio":false,"experimentalWebKitSupport":false,"fileServerFolder":"/Users/agoldis/cypress-cloud/examples/webapp","fixturesFolder":"/Users/agoldis/cypress-cloud/examples/webapp/cypress/fixtures","excludeSpecPattern":"*.hot-update.js","includeShadowDom":false,"keystrokeDelay":0,"modifyObstructiveCode":true,"numTestsKeptInMemory":0,"platform":"darwin","pageLoadTimeout":60000,"port":54901,"redirectionLimit":20,"reporter":"spec","reporterOptions":null,"requestTimeout":5000,"resolvedNodePath":"/Users/agoldis/.nvm/versions/node/v18.16.1/bin/node","resolvedNodeVersion":"18.16.1","responseTimeout":30000,"retries":{"runMode":0,"openMode":0},"screenshotOnRunFailure":true,"screenshotsFolder":"/Users/agoldis/cypress-cloud/examples/webapp/cypress/screenshots","slowTestThreshold":10000,"scrollBehavior":"top","taskTimeout":60000,"testIsolation":true,"userAgent":null,"videoCompression":false,"videosFolder":"/Users/agoldis/cypress-cloud/examples/webapp/cypress/videos","viewportHeight":660,"viewportWidth":1000,"waitForAnimations":true,"watchForFileChanges":false,"browsers":[{"channel":"stable","displayName":"Chrome","family":"chromium","majorVersion":"117","name":"chrome","path":"/Applications/Google Chrome.app/Contents/MacOS/Google Chrome","version":"117.0.5938.88"},{"channel":"stable","displayName":"Firefox","family":"firefox","majorVersion":"108","name":"firefox","path":"/Applications/Firefox.app/Contents/MacOS/firefox","version":"108.0"},{"channel":"stable","displayName":"Electron","family":"chromium","majorVersion":114,"name":"electron","path":"","version":"114.0.5735.289"}],"cypressBinaryRoot":"/Users/agoldis/Library/Caches/Cypress/13.2.0/Cypress.app/Contents/Resources/app","hosts":null,"isInteractive":true,"version":"13.2.0","browser":null,"cypressInternalEnv":"production"},"cypressVersion":"13.2.0","endedTestsAt":"2023-09-18T23:17:08.543Z","osName":"darwin","osVersion":"22.1.0","runs":[{"error":null,"reporter":"spec","reporterStats":{"suites":1,"tests":1,"passes":0,"pending":1,"failures":0,"start":"2023-09-18T23:17:08.498Z","end":"2023-09-18T23:17:08.544Z","duration":46},"screenshots":[],"spec":{"absolute":"/Users/agoldis/cypress-cloud/examples/webapp/cypress/e2e/pending.spec.js","fileExtension":".js","fileName":"pending","name":"pending.spec.js","relative":"cypress/e2e/pending.spec.js"},"stats":{"duration":49,"endedAt":"2023-09-18T23:17:08.543Z","failures":0,"passes":0,"pending":1,"skipped":0,"startedAt":"2023-09-18T23:17:08.494Z","suites":1,"tests":1},"tests":[{"attempts":[{"state":"pending"}],"displayError":null,"duration":30,"state":"pending","title":["Pending","Pending test"]}],"video":null}],"startedTestsAt":"2023-09-18T23:17:05.308Z","totalDuration":1152,"totalFailed":0,"totalPassed":1,"totalPending":1,"totalSkipped":0,"totalSuites":2,"totalTests":2} \ No newline at end of file diff --git a/packages/cypress-cloud/lib/__tests__/fixtures/13.2.0/pending.spec.js/specAfter.json b/packages/cypress-cloud/lib/__tests__/fixtures/13.2.0/pending.spec.js/specAfter.json new file mode 100644 index 0000000..8e6ee1a --- /dev/null +++ b/packages/cypress-cloud/lib/__tests__/fixtures/13.2.0/pending.spec.js/specAfter.json @@ -0,0 +1 @@ +{"error":null,"reporter":"spec","reporterStats":{"suites":1,"tests":1,"passes":0,"pending":1,"failures":0,"start":"2023-09-18T23:17:08.498Z","end":"2023-09-18T23:17:08.544Z","duration":46},"screenshots":[],"spec":{"absolute":"/Users/agoldis/cypress-cloud/examples/webapp/cypress/e2e/pending.spec.js","fileExtension":".js","fileName":"pending","name":"pending.spec.js","relative":"cypress/e2e/pending.spec.js"},"stats":{"duration":49,"endedAt":"2023-09-18T23:17:08.543Z","failures":0,"passes":0,"pending":1,"skipped":0,"startedAt":"2023-09-18T23:17:08.494Z","suites":1,"tests":1},"tests":[{"attempts":[{"state":"pending"}],"displayError":null,"duration":30,"state":"pending","title":["Pending","Pending test"]}],"video":"/Users/agoldis/cypress-cloud/examples/webapp/cypress/videos/pending.spec.js.mp4"} \ No newline at end of file diff --git a/packages/cypress-cloud/lib/__tests__/fixtures/13.2.0/retries.spec.js/runResult.json b/packages/cypress-cloud/lib/__tests__/fixtures/13.2.0/retries.spec.js/runResult.json new file mode 100644 index 0000000..710cc34 --- /dev/null +++ b/packages/cypress-cloud/lib/__tests__/fixtures/13.2.0/retries.spec.js/runResult.json @@ -0,0 +1,181 @@ +{ + "browserName": "electron", + "browserPath": "", + "browserVersion": "114.0.5735.289", + "config": { + "configFile": "/Users/agoldis/cypress-cloud/examples/webapp/cypress.config.ts", + "testingType": "e2e", + "video": true, + "projectId": "l4zuz8", + "baseUrl": "https://todomvc.com/examples/vanillajs", + "supportFile": "/Users/agoldis/cypress-cloud/examples/webapp/cypress/support/e2e.ts", + "specPattern": "cypress/e2e/*.js", + "projectRoot": "/Users/agoldis/cypress-cloud/examples/webapp", + "projectName": "webapp", + "isTextTerminal": true, + "trashAssetsBeforeRuns": false, + "animationDistanceThreshold": 5, + "arch": "arm64", + "blockHosts": null, + "chromeWebSecurity": true, + "clientCertificates": [], + "defaultCommandTimeout": 4000, + "downloadsFolder": "/Users/agoldis/cypress-cloud/examples/webapp/cypress/downloads", + "env": { "currents_ws": 54784 }, + "execTimeout": 60000, + "experimentalCspAllowList": false, + "experimentalFetchPolyfill": false, + "experimentalInteractiveRunEvents": false, + "experimentalRunAllSpecs": false, + "experimentalMemoryManagement": false, + "experimentalModifyObstructiveThirdPartyCode": false, + "experimentalSkipDomainInjection": null, + "experimentalOriginDependencies": false, + "experimentalSourceRewriting": false, + "experimentalSingleTabRunMode": false, + "experimentalStudio": false, + "experimentalWebKitSupport": false, + "fileServerFolder": "/Users/agoldis/cypress-cloud/examples/webapp", + "fixturesFolder": "/Users/agoldis/cypress-cloud/examples/webapp/cypress/fixtures", + "excludeSpecPattern": "*.hot-update.js", + "includeShadowDom": false, + "keystrokeDelay": 0, + "modifyObstructiveCode": true, + "numTestsKeptInMemory": 0, + "platform": "darwin", + "pageLoadTimeout": 60000, + "port": 54794, + "redirectionLimit": 20, + "reporter": "spec", + "reporterOptions": null, + "requestTimeout": 5000, + "resolvedNodePath": "/Users/agoldis/.nvm/versions/node/v18.16.1/bin/node", + "resolvedNodeVersion": "18.16.1", + "responseTimeout": 30000, + "retries": { "runMode": 0, "openMode": 0 }, + "screenshotOnRunFailure": true, + "screenshotsFolder": "/Users/agoldis/cypress-cloud/examples/webapp/cypress/screenshots", + "slowTestThreshold": 10000, + "scrollBehavior": "top", + "taskTimeout": 60000, + "testIsolation": true, + "userAgent": null, + "videoCompression": false, + "videosFolder": "/Users/agoldis/cypress-cloud/examples/webapp/cypress/videos", + "viewportHeight": 660, + "viewportWidth": 1000, + "waitForAnimations": true, + "watchForFileChanges": false, + "browsers": [ + { + "channel": "stable", + "displayName": "Chrome", + "family": "chromium", + "majorVersion": "117", + "name": "chrome", + "path": "/Applications/Google Chrome.app/Contents/MacOS/Google Chrome", + "version": "117.0.5938.88" + }, + { + "channel": "stable", + "displayName": "Firefox", + "family": "firefox", + "majorVersion": "108", + "name": "firefox", + "path": "/Applications/Firefox.app/Contents/MacOS/firefox", + "version": "108.0" + }, + { + "channel": "stable", + "displayName": "Electron", + "family": "chromium", + "majorVersion": 114, + "name": "electron", + "path": "", + "version": "114.0.5735.289" + } + ], + "cypressBinaryRoot": "/Users/agoldis/Library/Caches/Cypress/13.2.0/Cypress.app/Contents/Resources/app", + "hosts": null, + "isInteractive": true, + "version": "13.2.0", + "browser": null, + "cypressInternalEnv": "production" + }, + "cypressVersion": "13.2.0", + "endedTestsAt": "2023-09-18T23:17:00.290Z", + "osName": "darwin", + "osVersion": "22.1.0", + "runs": [ + { + "error": null, + "reporter": "spec", + "reporterStats": { + "suites": 1, + "tests": 1, + "passes": 1, + "pending": 0, + "failures": 0, + "start": "2023-09-18T23:16:57.176Z", + "end": "2023-09-18T23:16:58.239Z", + "duration": 1063 + }, + "screenshots": [ + { + "height": 1440, + "name": null, + "path": "/Users/agoldis/cypress-cloud/examples/webapp/cypress/screenshots/retries.spec.js/Retries -- Runs a test with retries (failed).png", + "takenAt": "2023-09-18T23:16:57.528Z", + "width": 2560 + }, + { + "height": 1440, + "name": null, + "path": "/Users/agoldis/cypress-cloud/examples/webapp/cypress/screenshots/retries.spec.js/Retries -- Runs a test with retries (failed) (attempt 2).png", + "takenAt": "2023-09-18T23:16:57.888Z", + "width": 2560 + } + ], + "spec": { + "absolute": "/Users/agoldis/cypress-cloud/examples/webapp/cypress/e2e/retries.spec.js", + "fileExtension": ".js", + "fileName": "retries", + "name": "retries.spec.js", + "relative": "cypress/e2e/retries.spec.js" + }, + "stats": { + "duration": 1065, + "endedAt": "2023-09-18T23:16:58.237Z", + "failures": 0, + "passes": 1, + "pending": 0, + "skipped": 0, + "startedAt": "2023-09-18T23:16:57.172Z", + "suites": 1, + "tests": 1 + }, + "tests": [ + { + "attempts": [ + { "state": "failed" }, + { "state": "failed" }, + { "state": "passed" } + ], + "displayError": null, + "duration": 1027, + "state": "passed", + "title": ["Retries", "Runs a test with retries"] + } + ], + "video": "/Users/agoldis/cypress-cloud/examples/webapp/cypress/videos/retries.spec.js.mp4" + } + ], + "startedTestsAt": "2023-09-18T23:16:57.172Z", + "totalDuration": 1065, + "totalFailed": 1, + "totalPassed": 1, + "totalPending": 0, + "totalSkipped": 0, + "totalSuites": 1, + "totalTests": 1 +} diff --git a/packages/cypress-cloud/lib/__tests__/fixtures/13.2.0/retries.spec.js/screenshot_01.json b/packages/cypress-cloud/lib/__tests__/fixtures/13.2.0/retries.spec.js/screenshot_01.json new file mode 100644 index 0000000..c61eddb --- /dev/null +++ b/packages/cypress-cloud/lib/__tests__/fixtures/13.2.0/retries.spec.js/screenshot_01.json @@ -0,0 +1,16 @@ +{ + "testAttemptIndex": 0, + "size": 331830, + "takenAt": "2023-09-18T23:16:57.528Z", + "dimensions": { "width": 2560, "height": 1440 }, + "multipart": false, + "specName": "retries.spec.js", + "testFailure": true, + "path": "/Users/agoldis/cypress-cloud/examples/webapp/cypress/screenshots/retries.spec.js/Retries -- Runs a test with retries (failed).png", + "scaled": true, + "blackout": [], + "duration": 215, + "testId": "r3", + "height": 1440, + "width": 2560 +} diff --git a/packages/cypress-cloud/lib/__tests__/fixtures/13.2.0/retries.spec.js/screenshot_02.json b/packages/cypress-cloud/lib/__tests__/fixtures/13.2.0/retries.spec.js/screenshot_02.json new file mode 100644 index 0000000..b4e97bf --- /dev/null +++ b/packages/cypress-cloud/lib/__tests__/fixtures/13.2.0/retries.spec.js/screenshot_02.json @@ -0,0 +1,16 @@ +{ + "testAttemptIndex": 1, + "size": 374560, + "takenAt": "2023-09-18T23:16:57.888Z", + "dimensions": { "width": 2560, "height": 1440 }, + "multipart": false, + "specName": "retries.spec.js", + "testFailure": true, + "path": "/Users/agoldis/cypress-cloud/examples/webapp/cypress/screenshots/retries.spec.js/Retries -- Runs a test with retries (failed) (attempt 2).png", + "scaled": true, + "blackout": [], + "duration": 200, + "testId": "r3", + "height": 1440, + "width": 2560 +} diff --git a/packages/cypress-cloud/lib/__tests__/fixtures/13.2.0/retries.spec.js/specAfter.json b/packages/cypress-cloud/lib/__tests__/fixtures/13.2.0/retries.spec.js/specAfter.json new file mode 100644 index 0000000..442c2e9 --- /dev/null +++ b/packages/cypress-cloud/lib/__tests__/fixtures/13.2.0/retries.spec.js/specAfter.json @@ -0,0 +1,62 @@ +{ + "error": null, + "reporter": "spec", + "reporterStats": { + "suites": 1, + "tests": 1, + "passes": 1, + "pending": 0, + "failures": 0, + "start": "2023-09-18T23:16:57.176Z", + "end": "2023-09-18T23:16:58.239Z", + "duration": 1063 + }, + "screenshots": [ + { + "height": 1440, + "name": null, + "path": "/Users/agoldis/cypress-cloud/examples/webapp/cypress/screenshots/retries.spec.js/Retries -- Runs a test with retries (failed).png", + "takenAt": "2023-09-18T23:16:57.528Z", + "width": 2560 + }, + { + "height": 1440, + "name": null, + "path": "/Users/agoldis/cypress-cloud/examples/webapp/cypress/screenshots/retries.spec.js/Retries -- Runs a test with retries (failed) (attempt 2).png", + "takenAt": "2023-09-18T23:16:57.888Z", + "width": 2560 + } + ], + "spec": { + "absolute": "/Users/agoldis/cypress-cloud/examples/webapp/cypress/e2e/retries.spec.js", + "fileExtension": ".js", + "fileName": "retries", + "name": "retries.spec.js", + "relative": "cypress/e2e/retries.spec.js" + }, + "stats": { + "duration": 1065, + "endedAt": "2023-09-18T23:16:58.237Z", + "failures": 0, + "passes": 1, + "pending": 0, + "skipped": 0, + "startedAt": "2023-09-18T23:16:57.172Z", + "suites": 1, + "tests": 1 + }, + "tests": [ + { + "attempts": [ + { "state": "failed" }, + { "state": "failed" }, + { "state": "passed" } + ], + "displayError": null, + "duration": 1027, + "state": "passed", + "title": ["Retries", "Runs a test with retries"] + } + ], + "video": "/Users/agoldis/cypress-cloud/examples/webapp/cypress/videos/retries.spec.js.mp4" +} diff --git a/packages/cypress-cloud/lib/__tests__/fixtures/13.2.0/retries.spec.js/testAfter_00.json b/packages/cypress-cloud/lib/__tests__/fixtures/13.2.0/retries.spec.js/testAfter_00.json new file mode 100644 index 0000000..faa877b --- /dev/null +++ b/packages/cypress-cloud/lib/__tests__/fixtures/13.2.0/retries.spec.js/testAfter_00.json @@ -0,0 +1,66 @@ +{ + "async": false, + "body": "function () {\n if (i > 1) {\n i--;\n throw new Error(\"oh no!\");\n }\n return;\n }", + "duration": 569, + "err": { + "message": "oh no!", + "name": "Error", + "stack": "Error: oh no!\n at Context.eval (webpack://web/./cypress/e2e/retries.spec.js:11:14)", + "parsedStack": [ + { "message": "Error: oh no!", "whitespace": "" }, + { + "function": "Context.eval", + "fileUrl": "https://todomvc.com/__cypress/tests?p=cypress/e2e/retries.spec.js", + "originalFile": "webpack://web/./cypress/e2e/retries.spec.js", + "relativeFile": "cypress/e2e/retries.spec.js", + "absoluteFile": "/Users/agoldis/cypress-cloud/examples/webapp/cypress/e2e/retries.spec.js", + "line": 11, + "column": 14, + "whitespace": " " + } + ], + "codeFrame": { + "line": 11, + "column": 15, + "originalFile": "cypress/e2e/retries.spec.js", + "relativeFile": "examples/webapp/cypress/e2e/retries.spec.js", + "absoluteFile": "/Users/agoldis/cypress-cloud/examples/webapp/cypress/e2e/retries.spec.js", + "frame": " 9 | if (i > 1) {\n 10 | i--;\n> 11 | throw new Error(\"oh no!\");\n | ^\n 12 | }\n 13 | return;\n 14 | }", + "language": "js" + } + }, + "final": false, + "hooks": [], + "id": "r3", + "invocationDetails": { + "function": "Suite.eval", + "fileUrl": "https://todomvc.com/__cypress/tests?p=cypress/e2e/retries.spec.js", + "originalFile": "webpack://web/./cypress/e2e/retries.spec.js", + "relativeFile": "cypress/e2e/retries.spec.js", + "absoluteFile": "/Users/agoldis/cypress-cloud/examples/webapp/cypress/e2e/retries.spec.js", + "line": 3, + "column": 2, + "whitespace": " ", + "stack": "Error\n at Suite.eval (https://todomvc.com/__cypress/tests?p=cypress/e2e/retries.spec.js:11:3)\n at eval (https://todomvc.com/__cypress/tests?p=cypress/e2e/retries.spec.js:10:1)\n at eval (https://todomvc.com/__cypress/tests?p=cypress/e2e/retries.spec.js:21:12)\n at eval ()" + }, + "order": 1, + "pending": false, + "retries": 3, + "state": "failed", + "sync": true, + "timedOut": false, + "timings": { + "lifecycle": 24, + "before each": [ + { "hookId": "h1", "fnDuration": 8, "afterFnDuration": 1 }, + { "hookId": "h2", "fnDuration": 316, "afterFnDuration": 0 } + ], + "test": { "fnDuration": 1, "afterFnDuration": 219 }, + "after each": [{ "hookId": "h4", "fnDuration": 15, "afterFnDuration": 0 }] + }, + "type": "test", + "wallClockStartedAt": "2023-09-18T23:16:57.176Z", + "title": "Runs a test with retries", + "currentRetry": 0, + "fullTitle": "Retries Runs a test with retries" +} diff --git a/packages/cypress-cloud/lib/__tests__/fixtures/13.2.0/retries.spec.js/testAfter_01.json b/packages/cypress-cloud/lib/__tests__/fixtures/13.2.0/retries.spec.js/testAfter_01.json new file mode 100644 index 0000000..554ac92 --- /dev/null +++ b/packages/cypress-cloud/lib/__tests__/fixtures/13.2.0/retries.spec.js/testAfter_01.json @@ -0,0 +1,54 @@ +{ + "async": false, + "body": "function () {\n if (i > 1) {\n i--;\n throw new Error(\"oh no!\");\n }\n return;\n }", + "duration": 287, + "err": { + "message": "oh no!", + "name": "Error", + "stack": "Error: oh no!\n at Context.eval (webpack://web/./cypress/e2e/retries.spec.js:11:14)", + "parsedStack": [ + { "message": "Error: oh no!", "whitespace": "" }, + { + "function": "Context.eval", + "fileUrl": "https://todomvc.com/__cypress/tests?p=cypress/e2e/retries.spec.js", + "originalFile": "webpack://web/./cypress/e2e/retries.spec.js", + "relativeFile": "cypress/e2e/retries.spec.js", + "absoluteFile": "/Users/agoldis/cypress-cloud/examples/webapp/cypress/e2e/retries.spec.js", + "line": 11, + "column": 14, + "whitespace": " " + } + ], + "codeFrame": { + "line": 11, + "column": 15, + "originalFile": "cypress/e2e/retries.spec.js", + "relativeFile": "examples/webapp/cypress/e2e/retries.spec.js", + "absoluteFile": "/Users/agoldis/cypress-cloud/examples/webapp/cypress/e2e/retries.spec.js", + "frame": " 9 | if (i > 1) {\n 10 | i--;\n> 11 | throw new Error(\"oh no!\");\n | ^\n 12 | }\n 13 | return;\n 14 | }", + "language": "js" + } + }, + "final": false, + "id": "r3", + "order": 1, + "pending": false, + "retries": 3, + "state": "failed", + "sync": true, + "timedOut": false, + "timings": { + "lifecycle": 21, + "before each": [ + { "hookId": "h1", "fnDuration": 4, "afterFnDuration": 0 }, + { "hookId": "h2", "fnDuration": 53, "afterFnDuration": 0 } + ], + "test": { "fnDuration": 1, "afterFnDuration": 207 }, + "after each": [{ "hookId": "h4", "fnDuration": 12, "afterFnDuration": 0 }] + }, + "type": "test", + "wallClockStartedAt": "2023-09-18T23:16:57.804Z", + "title": "Runs a test with retries", + "currentRetry": 1, + "fullTitle": "Retries Runs a test with retries" +} diff --git a/packages/cypress-cloud/lib/__tests__/fixtures/13.2.0/retries.spec.js/testAfter_02.json b/packages/cypress-cloud/lib/__tests__/fixtures/13.2.0/retries.spec.js/testAfter_02.json new file mode 100644 index 0000000..f05b4c6 --- /dev/null +++ b/packages/cypress-cloud/lib/__tests__/fixtures/13.2.0/retries.spec.js/testAfter_02.json @@ -0,0 +1,27 @@ +{ + "async": false, + "body": "function () {\n if (i > 1) {\n i--;\n throw new Error(\"oh no!\");\n }\n return;\n }", + "duration": 72, + "final": false, + "id": "r3", + "order": 1, + "pending": false, + "retries": 3, + "state": "passed", + "sync": true, + "timedOut": false, + "timings": { + "lifecycle": 17, + "before each": [ + { "hookId": "h1", "fnDuration": 3, "afterFnDuration": 1 }, + { "hookId": "h2", "fnDuration": 50, "afterFnDuration": 0 } + ], + "test": { "fnDuration": 0, "afterFnDuration": 0 }, + "after each": [{ "hookId": "h4", "fnDuration": 14, "afterFnDuration": 0 }] + }, + "type": "test", + "wallClockStartedAt": "2023-09-18T23:16:58.124Z", + "title": "Runs a test with retries", + "currentRetry": 2, + "fullTitle": "Retries Runs a test with retries" +} diff --git a/packages/cypress-cloud/lib/__tests__/fixtures/13.2.0/skipped.spec.js/apiCall.json b/packages/cypress-cloud/lib/__tests__/fixtures/13.2.0/skipped.spec.js/apiCall.json new file mode 100644 index 0000000..43f678a --- /dev/null +++ b/packages/cypress-cloud/lib/__tests__/fixtures/13.2.0/skipped.spec.js/apiCall.json @@ -0,0 +1 @@ +{"tests":{"config":{"additionalIgnorePattern":[],"animationDistanceThreshold":5,"arch":"arm64","autoOpen":false,"baseUrl":"https://todomvc.com/examples/vanillajs","blockHosts":null,"browsers":[{"name":"chrome","family":"chromium","channel":"stable","displayName":"Chrome","version":"117.0.5938.88","path":"/Applications/Google Chrome.app/Contents/MacOS/Google Chrome","minSupportedVersion":64,"majorVersion":"117"},{"name":"firefox","family":"firefox","channel":"stable","displayName":"Firefox","version":"108.0","path":"/Applications/Firefox.app/Contents/MacOS/firefox","minSupportedVersion":86,"majorVersion":"108"},{"name":"electron","channel":"stable","family":"chromium","displayName":"Electron","version":"114.0.5735.289","path":"","majorVersion":114}],"chromeWebSecurity":true,"clientCertificates":[],"clientRoute":"/__/","configFile":"/Users/agoldis/cypress-cloud/examples/webapp/cypress.config.ts","cypressBinaryRoot":"/Users/agoldis/Library/Caches/Cypress/13.2.0/Cypress.app/Contents/Resources/app","cypressEnv":"production","defaultCommandTimeout":4000,"devServerPublicPathRoute":"/__cypress/src","downloadsFolder":"/Users/agoldis/cypress-cloud/examples/webapp/cypress/downloads","env":{"currents_temp_file":"/var/folders/x1/tpchd48d78x5bzxvz5ws5st00000gn/T/tmp-49142-TtFNSUGjb4EQ","currents_debug_enabled":false},"excludeSpecPattern":"*.hot-update.js","execTimeout":60000,"experimentalCspAllowList":false,"experimentalFetchPolyfill":false,"experimentalInteractiveRunEvents":false,"experimentalMemoryManagement":false,"experimentalModifyObstructiveThirdPartyCode":false,"experimentalOriginDependencies":false,"experimentalRunAllSpecs":false,"experimentalSingleTabRunMode":false,"experimentalSkipDomainInjection":null,"experimentalSourceRewriting":false,"experimentalStudio":false,"experimentalWebKitSupport":false,"fileServerFolder":"/Users/agoldis/cypress-cloud/examples/webapp","fixturesFolder":"/Users/agoldis/cypress-cloud/examples/webapp/cypress/fixtures","hideCommandLog":false,"hideRunnerUi":false,"hosts":null,"includeShadowDom":false,"isInteractive":true,"isTextTerminal":true,"keystrokeDelay":0,"modifyObstructiveCode":true,"morgan":false,"namespace":"__cypress","numTestsKeptInMemory":0,"pageLoadTimeout":60000,"platform":"darwin","port":null,"projectId":"l4zuz8","projectName":"webapp","projectRoot":"/Users/agoldis/cypress-cloud/examples/webapp","protocolEnabled":false,"rawJson":{"video":true,"e2e":{"projectId":"l4zuz8","baseUrl":"https://todomvc.com/examples/vanillajs","supportFile":"cypress/support/e2e.ts","specPattern":"cypress/e2e/*.js","setupNodeEvents":"[Function setupNodeEvents]"},"component":{"specPattern":["pages/__tests__/*.spec.tsx"],"setupNodeEvents":"[Function setupNodeEvents]","devServer":{"framework":"next","bundler":"webpack"}},"projectId":"l4zuz8","baseUrl":"https://todomvc.com/examples/vanillajs","supportFile":"cypress/support/e2e.ts","specPattern":"cypress/e2e/*.js","setupNodeEvents":"[Function setupNodeEvents]","envFile":{},"projectRoot":"/Users/agoldis/cypress-cloud/examples/webapp","projectName":"webapp","repoRoot":"/Users/agoldis/cypress-cloud"},"redirectionLimit":20,"repoRoot":"/Users/agoldis/cypress-cloud","report":true,"reporter":"spec","reporterOptions":null,"reporterRoute":"/__cypress/reporter","requestTimeout":5000,"resolved":{"animationDistanceThreshold":{"value":5,"from":"default"},"arch":{"value":"arm64","from":"default"},"baseUrl":{"value":"https://todomvc.com/examples/vanillajs","from":"config"},"blockHosts":{"value":null,"from":"default"},"chromeWebSecurity":{"value":true,"from":"default"},"clientCertificates":{"value":[],"from":"default"},"defaultCommandTimeout":{"value":4000,"from":"default"},"downloadsFolder":{"value":"cypress/downloads","from":"default"},"env":{"currents_temp_file":{"value":"/var/folders/x1/tpchd48d78x5bzxvz5ws5st00000gn/T/tmp-49142-TtFNSUGjb4EQ","from":"cli"},"currents_debug_enabled":{"value":false,"from":"cli"}},"execTimeout":{"value":60000,"from":"default"},"experimentalCspAllowList":{"value":false,"from":"default"},"experimentalFetchPolyfill":{"value":false,"from":"default"},"experimentalInteractiveRunEvents":{"value":false,"from":"default"},"experimentalRunAllSpecs":{"value":false,"from":"default"},"experimentalMemoryManagement":{"value":false,"from":"default"},"experimentalModifyObstructiveThirdPartyCode":{"value":false,"from":"default"},"experimentalSkipDomainInjection":{"value":null,"from":"default"},"experimentalOriginDependencies":{"value":false,"from":"default"},"experimentalSourceRewriting":{"value":false,"from":"default"},"experimentalSingleTabRunMode":{"value":false,"from":"default"},"experimentalStudio":{"value":false,"from":"default"},"experimentalWebKitSupport":{"value":false,"from":"default"},"fileServerFolder":{"value":"","from":"default"},"fixturesFolder":{"value":"cypress/fixtures","from":"default"},"excludeSpecPattern":{"value":"*.hot-update.js","from":"default"},"includeShadowDom":{"value":false,"from":"default"},"keystrokeDelay":{"value":0,"from":"default"},"modifyObstructiveCode":{"value":true,"from":"default"},"numTestsKeptInMemory":{"value":0,"from":"config"},"platform":{"value":"darwin","from":"default"},"pageLoadTimeout":{"value":60000,"from":"default"},"port":{"value":null,"from":"default"},"projectId":{"value":"l4zuz8","from":"config"},"redirectionLimit":{"value":20,"from":"default"},"reporter":{"value":"spec","from":"default"},"reporterOptions":{"value":null,"from":"default"},"requestTimeout":{"value":5000,"from":"default"},"resolvedNodePath":{"value":null,"from":"default"},"resolvedNodeVersion":{"value":null,"from":"default"},"responseTimeout":{"value":30000,"from":"default"},"retries":{"value":{"runMode":0,"openMode":0},"from":"default"},"screenshotOnRunFailure":{"value":true,"from":"default"},"screenshotsFolder":{"value":"cypress/screenshots","from":"default"},"slowTestThreshold":{"value":10000,"from":"default"},"scrollBehavior":{"value":"top","from":"default"},"supportFile":{"value":"cypress/support/e2e.ts","from":"config"},"supportFolder":{"value":false,"from":"default"},"taskTimeout":{"value":60000,"from":"default"},"testIsolation":{"value":true,"from":"default"},"trashAssetsBeforeRuns":{"value":true,"from":"default"},"userAgent":{"value":null,"from":"default"},"video":{"value":true,"from":"config"},"videoCompression":{"value":false,"from":"default"},"videosFolder":{"value":"cypress/videos","from":"default"},"viewportHeight":{"value":660,"from":"default"},"viewportWidth":{"value":1000,"from":"default"},"waitForAnimations":{"value":true,"from":"default"},"watchForFileChanges":{"value":false,"from":"config"},"specPattern":{"value":"cypress/e2e/*.js","from":"config"},"browsers":{"value":[{"name":"chrome","family":"chromium","channel":"stable","displayName":"Chrome","version":"117.0.5938.88","path":"/Applications/Google Chrome.app/Contents/MacOS/Google Chrome","minSupportedVersion":64,"majorVersion":"117"},{"name":"firefox","family":"firefox","channel":"stable","displayName":"Firefox","version":"108.0","path":"/Applications/Firefox.app/Contents/MacOS/firefox","minSupportedVersion":86,"majorVersion":"108"},{"name":"electron","channel":"stable","family":"chromium","displayName":"Electron","version":"114.0.5735.289","path":"","majorVersion":114}],"from":"runtime"},"hosts":{"value":null,"from":"default"},"isInteractive":{"value":true,"from":"default"}},"resolvedNodePath":"/Users/agoldis/.nvm/versions/node/v18.16.1/bin/node","resolvedNodeVersion":"18.16.1","responseTimeout":30000,"retries":{"runMode":0,"openMode":0},"screenshotOnRunFailure":true,"screenshotsFolder":"/Users/agoldis/cypress-cloud/examples/webapp/cypress/screenshots","scrollBehavior":"top","setupNodeEvents":"[Function setupNodeEvents]","slowTestThreshold":10000,"socketId":"b4whuvjayd","socketIoCookie":"__socket","socketIoRoute":"/__socket","specPattern":"cypress/e2e/*.js","supportFile":"/Users/agoldis/cypress-cloud/examples/webapp/cypress/support/e2e.ts","supportFolder":"/Users/agoldis/cypress-cloud/examples/webapp/cypress/support","taskTimeout":60000,"testIsolation":true,"trashAssetsBeforeRuns":true,"userAgent":null,"version":"13.2.0","video":true,"videoCompression":false,"videosFolder":"/Users/agoldis/cypress-cloud/examples/webapp/cypress/videos","viewportHeight":660,"viewportWidth":1000,"waitForAnimations":true,"watchForFileChanges":false,"testingType":"e2e","videoUploadOnPasses":false},"tests":[{"body":"redacted","title":["Skipped","should not be skipped"],"clientId":"r0"},{"body":"redacted","title":["Skipped","should be skipped"],"clientId":"r1"}],"hooks":null},"results":{"stats":{"duration":459,"endedAt":"2023-09-18T23:17:19.901Z","startedAt":"2023-09-18T23:17:19.442Z","failures":1,"passes":0,"pending":0,"skipped":1,"suites":1,"tests":2,"wallClockDuration":459,"wallClockStartedAt":"2023-09-18T23:17:19.442Z","wallClockEndedAt":"2023-09-18T23:17:19.901Z"},"reporterStats":{"suites":1,"tests":1,"passes":0,"pending":0,"failures":1,"start":"2023-09-18T23:17:19.445Z","end":"2023-09-18T23:17:19.907Z","duration":462},"exception":null,"video":true,"screenshots":[{"height":1440,"width":2560,"name":null,"path":"/Users/agoldis/cypress-cloud/examples/webapp/cypress/screenshots/skipped.spec.js/Skipped -- should not be skipped -- before each hook (failed).png","takenAt":"2023-09-18T23:17:19.625Z","testAttemptIndex":0,"testId":"r0","screenshotId":"ewjxmwxzqe"}],"hasCoverage":false,"tests":[{"displayError":"Error: before each exception\n\nBecause this error occurred during a `before each` hook we are skipping the remaining tests in the current suite: `Skipped`\n at Context.eval (webpack://web/./cypress/e2e/skipped.spec.js:3:10)","state":"failed","attempts":[{"state":"failed","error":{"name":"Error","message":"before each exception\n\nBecause this error occurred during a `before each` hook we are skipping the remaining tests in the current suite: `Skipped`","stack":"Error: before each exception\n\nBecause this error occurred during a `before each` hook we are skipping the remaining tests in the current suite: `Skipped`\n at Context.eval (webpack://web/./cypress/e2e/skipped.spec.js:3:10)","codeFrame":{"line":3,"column":11,"originalFile":"cypress/e2e/skipped.spec.js","relativeFile":"examples/webapp/cypress/e2e/skipped.spec.js","absoluteFile":"/Users/agoldis/cypress-cloud/examples/webapp/cypress/e2e/skipped.spec.js","frame":" 1 | describe(\"Skipped\", function () {\n 2 | beforeEach(function () {\n> 3 | throw new Error(\"before each exception\");\n | ^\n 4 | });\n 5 | it(\"should not be skipped\", function () {\n 6 | expect(true).to.be.true;","language":"js"}},"wallClockStartedAt":"2023-09-18T23:17:19.446Z","wallClockDuration":213,"videoTimestamp":4}],"clientId":"r0"},{"displayError":null,"state":"skipped","attempts":[{"state":"skipped","error":{"name":"Error","message":"The test was skipped because of a hook failure","stack":"","codeFrame":null},"wallClockStartedAt":"2023-09-18T23:17:21.036Z","wallClockDuration":0,"videoTimestamp":0}],"clientId":"r1"}]}} \ No newline at end of file diff --git a/packages/cypress-cloud/lib/__tests__/fixtures/13.2.0/skipped.spec.js/runResult.json b/packages/cypress-cloud/lib/__tests__/fixtures/13.2.0/skipped.spec.js/runResult.json new file mode 100644 index 0000000..0669265 --- /dev/null +++ b/packages/cypress-cloud/lib/__tests__/fixtures/13.2.0/skipped.spec.js/runResult.json @@ -0,0 +1 @@ +{"browserName":"electron","browserPath":"","browserVersion":"114.0.5735.289","config":{"configFile":"/Users/agoldis/cypress-cloud/examples/webapp/cypress.config.ts","testingType":"e2e","video":true,"projectId":"l4zuz8","baseUrl":"https://todomvc.com/examples/vanillajs","supportFile":"/Users/agoldis/cypress-cloud/examples/webapp/cypress/support/e2e.ts","specPattern":"cypress/e2e/*.js","projectRoot":"/Users/agoldis/cypress-cloud/examples/webapp","projectName":"webapp","isTextTerminal":true,"trashAssetsBeforeRuns":false,"animationDistanceThreshold":5,"arch":"arm64","blockHosts":null,"chromeWebSecurity":true,"clientCertificates":[],"defaultCommandTimeout":4000,"downloadsFolder":"/Users/agoldis/cypress-cloud/examples/webapp/cypress/downloads","env":{"currents_ws":54784},"execTimeout":60000,"experimentalCspAllowList":false,"experimentalFetchPolyfill":false,"experimentalInteractiveRunEvents":false,"experimentalRunAllSpecs":false,"experimentalMemoryManagement":false,"experimentalModifyObstructiveThirdPartyCode":false,"experimentalSkipDomainInjection":null,"experimentalOriginDependencies":false,"experimentalSourceRewriting":false,"experimentalSingleTabRunMode":false,"experimentalStudio":false,"experimentalWebKitSupport":false,"fileServerFolder":"/Users/agoldis/cypress-cloud/examples/webapp","fixturesFolder":"/Users/agoldis/cypress-cloud/examples/webapp/cypress/fixtures","excludeSpecPattern":"*.hot-update.js","includeShadowDom":false,"keystrokeDelay":0,"modifyObstructiveCode":true,"numTestsKeptInMemory":0,"platform":"darwin","pageLoadTimeout":60000,"port":55007,"redirectionLimit":20,"reporter":"spec","reporterOptions":null,"requestTimeout":5000,"resolvedNodePath":"/Users/agoldis/.nvm/versions/node/v18.16.1/bin/node","resolvedNodeVersion":"18.16.1","responseTimeout":30000,"retries":{"runMode":0,"openMode":0},"screenshotOnRunFailure":true,"screenshotsFolder":"/Users/agoldis/cypress-cloud/examples/webapp/cypress/screenshots","slowTestThreshold":10000,"scrollBehavior":"top","taskTimeout":60000,"testIsolation":true,"userAgent":null,"videoCompression":false,"videosFolder":"/Users/agoldis/cypress-cloud/examples/webapp/cypress/videos","viewportHeight":660,"viewportWidth":1000,"waitForAnimations":true,"watchForFileChanges":false,"browsers":[{"channel":"stable","displayName":"Chrome","family":"chromium","majorVersion":"117","name":"chrome","path":"/Applications/Google Chrome.app/Contents/MacOS/Google Chrome","version":"117.0.5938.88"},{"channel":"stable","displayName":"Firefox","family":"firefox","majorVersion":"108","name":"firefox","path":"/Applications/Firefox.app/Contents/MacOS/firefox","version":"108.0"},{"channel":"stable","displayName":"Electron","family":"chromium","majorVersion":114,"name":"electron","path":"","version":"114.0.5735.289"}],"cypressBinaryRoot":"/Users/agoldis/Library/Caches/Cypress/13.2.0/Cypress.app/Contents/Resources/app","hosts":null,"isInteractive":true,"version":"13.2.0","browser":null,"cypressInternalEnv":"production"},"cypressVersion":"13.2.0","endedTestsAt":"2023-09-18T23:17:19.901Z","osName":"darwin","osVersion":"22.1.0","runs":[{"error":null,"reporter":"spec","reporterStats":{"suites":1,"tests":1,"passes":0,"pending":0,"failures":1,"start":"2023-09-18T23:17:19.445Z","end":"2023-09-18T23:17:19.907Z","duration":462},"screenshots":[{"height":1440,"name":null,"path":"/Users/agoldis/cypress-cloud/examples/webapp/cypress/screenshots/skipped.spec.js/Skipped -- should not be skipped -- before each hook (failed).png","takenAt":"2023-09-18T23:17:19.625Z","width":2560}],"spec":{"absolute":"/Users/agoldis/cypress-cloud/examples/webapp/cypress/e2e/skipped.spec.js","fileExtension":".js","fileName":"skipped","name":"skipped.spec.js","relative":"cypress/e2e/skipped.spec.js"},"stats":{"duration":459,"endedAt":"2023-09-18T23:17:19.901Z","failures":1,"passes":0,"pending":0,"skipped":1,"startedAt":"2023-09-18T23:17:19.442Z","suites":1,"tests":2},"tests":[{"attempts":[{"state":"failed"}],"displayError":"Error: before each exception\n\nBecause this error occurred during a `before each` hook we are skipping the remaining tests in the current suite: `Skipped`\n at Context.eval (webpack://web/./cypress/e2e/skipped.spec.js:3:10)","duration":415,"state":"failed","title":["Skipped","should not be skipped"]},{"attempts":[{"state":"skipped"}],"displayError":null,"duration":0,"state":"skipped","title":["Skipped","should be skipped"]}],"video":"/Users/agoldis/cypress-cloud/examples/webapp/cypress/videos/skipped.spec.js.mp4"}],"startedTestsAt":"2023-09-18T23:17:16.676Z","totalDuration":1155,"totalFailed":2,"totalPassed":0,"totalPending":0,"totalSkipped":1,"totalSuites":2,"totalTests":3} \ No newline at end of file diff --git a/packages/cypress-cloud/lib/__tests__/fixtures/13.2.0/skipped.spec.js/screenshot_01.json b/packages/cypress-cloud/lib/__tests__/fixtures/13.2.0/skipped.spec.js/screenshot_01.json new file mode 100644 index 0000000..0686601 --- /dev/null +++ b/packages/cypress-cloud/lib/__tests__/fixtures/13.2.0/skipped.spec.js/screenshot_01.json @@ -0,0 +1 @@ +{"testAttemptIndex":0,"size":339836,"takenAt":"2023-09-18T23:17:19.625Z","dimensions":{"width":2560,"height":1440},"multipart":false,"specName":"skipped.spec.js","testFailure":true,"path":"/Users/agoldis/cypress-cloud/examples/webapp/cypress/screenshots/skipped.spec.js/Skipped -- should not be skipped -- before each hook (failed).png","scaled":true,"blackout":[],"duration":206,"testId":"r3","height":1440,"width":2560} \ No newline at end of file diff --git a/packages/cypress-cloud/lib/__tests__/fixtures/13.2.0/skipped.spec.js/specAfter.json b/packages/cypress-cloud/lib/__tests__/fixtures/13.2.0/skipped.spec.js/specAfter.json new file mode 100644 index 0000000..db8194d --- /dev/null +++ b/packages/cypress-cloud/lib/__tests__/fixtures/13.2.0/skipped.spec.js/specAfter.json @@ -0,0 +1 @@ +{"error":null,"reporter":"spec","reporterStats":{"suites":1,"tests":1,"passes":0,"pending":0,"failures":1,"start":"2023-09-18T23:17:19.445Z","end":"2023-09-18T23:17:19.907Z","duration":462},"screenshots":[{"height":1440,"name":null,"path":"/Users/agoldis/cypress-cloud/examples/webapp/cypress/screenshots/skipped.spec.js/Skipped -- should not be skipped -- before each hook (failed).png","takenAt":"2023-09-18T23:17:19.625Z","width":2560}],"spec":{"absolute":"/Users/agoldis/cypress-cloud/examples/webapp/cypress/e2e/skipped.spec.js","fileExtension":".js","fileName":"skipped","name":"skipped.spec.js","relative":"cypress/e2e/skipped.spec.js"},"stats":{"duration":459,"endedAt":"2023-09-18T23:17:19.901Z","failures":1,"passes":0,"pending":0,"skipped":1,"startedAt":"2023-09-18T23:17:19.442Z","suites":1,"tests":2},"tests":[{"attempts":[{"state":"failed"}],"displayError":"Error: before each exception\n\nBecause this error occurred during a `before each` hook we are skipping the remaining tests in the current suite: `Skipped`\n at Context.eval (webpack://web/./cypress/e2e/skipped.spec.js:3:10)","duration":415,"state":"failed","title":["Skipped","should not be skipped"]},{"attempts":[{"state":"skipped"}],"displayError":null,"duration":0,"state":"skipped","title":["Skipped","should be skipped"]}],"video":"/Users/agoldis/cypress-cloud/examples/webapp/cypress/videos/skipped.spec.js.mp4"} \ No newline at end of file diff --git a/packages/cypress-cloud/lib/__tests__/fixtures/13.2.0/skipped.spec.js/testAfter_00.json b/packages/cypress-cloud/lib/__tests__/fixtures/13.2.0/skipped.spec.js/testAfter_00.json new file mode 100644 index 0000000..cc5d46d --- /dev/null +++ b/packages/cypress-cloud/lib/__tests__/fixtures/13.2.0/skipped.spec.js/testAfter_00.json @@ -0,0 +1 @@ +{"async":false,"body":"function () {\n expect(true).to.be.true;\n }","duration":213,"err":{"message":"before each exception\n\nBecause this error occurred during a `before each` hook we are skipping the remaining tests in the current suite: `Skipped`","name":"Error","stack":"Error: before each exception\n\nBecause this error occurred during a `before each` hook we are skipping the remaining tests in the current suite: `Skipped`\n at Context.eval (webpack://web/./cypress/e2e/skipped.spec.js:3:10)","parsedStack":[{"message":"Error: before each exception","whitespace":""},{"function":"Context.eval","fileUrl":"https://todomvc.com/__cypress/tests?p=cypress/e2e/skipped.spec.js","originalFile":"webpack://web/./cypress/e2e/skipped.spec.js","relativeFile":"cypress/e2e/skipped.spec.js","absoluteFile":"/Users/agoldis/cypress-cloud/examples/webapp/cypress/e2e/skipped.spec.js","line":3,"column":10,"whitespace":" "}],"codeFrame":{"line":3,"column":11,"originalFile":"cypress/e2e/skipped.spec.js","relativeFile":"examples/webapp/cypress/e2e/skipped.spec.js","absoluteFile":"/Users/agoldis/cypress-cloud/examples/webapp/cypress/e2e/skipped.spec.js","frame":" 1 | describe(\"Skipped\", function () {\n 2 | beforeEach(function () {\n> 3 | throw new Error(\"before each exception\");\n | ^\n 4 | });\n 5 | it(\"should not be skipped\", function () {\n 6 | expect(true).to.be.true;","language":"js"}},"final":false,"hooks":[],"id":"r3","invocationDetails":{"function":"Suite.eval","fileUrl":"https://todomvc.com/__cypress/tests?p=cypress/e2e/skipped.spec.js","originalFile":"webpack://web/./cypress/e2e/skipped.spec.js","relativeFile":"cypress/e2e/skipped.spec.js","absoluteFile":"/Users/agoldis/cypress-cloud/examples/webapp/cypress/e2e/skipped.spec.js","line":5,"column":2,"whitespace":" ","stack":"Error\n at Suite.eval (https://todomvc.com/__cypress/tests?p=cypress/e2e/skipped.spec.js:13:3)\n at eval (https://todomvc.com/__cypress/tests?p=cypress/e2e/skipped.spec.js:9:1)\n at eval (https://todomvc.com/__cypress/tests?p=cypress/e2e/skipped.spec.js:20:12)\n at eval ()"},"order":1,"pending":false,"retries":0,"state":"failed","sync":true,"timedOut":false,"timings":{"lifecycle":32,"before each":[{"hookId":"h1","fnDuration":6,"afterFnDuration":1},{"hookId":"h2","fnDuration":131,"afterFnDuration":1},{"hookId":"h6","fnDuration":1,"afterFnDuration":212}],"after each":[{"hookId":"h4","fnDuration":14,"afterFnDuration":0}]},"type":"test","wallClockStartedAt":"2023-09-18T23:17:19.446Z","title":"should not be skipped","currentRetry":0,"fullTitle":"Skipped should not be skipped"} \ No newline at end of file diff --git a/packages/cypress-cloud/lib/__tests__/fixtures/api/crash.spec.js/payload.ts b/packages/cypress-cloud/lib/__tests__/fixtures/api/crash.spec.js/payload.ts new file mode 100644 index 0000000..1ae7147 --- /dev/null +++ b/packages/cypress-cloud/lib/__tests__/fixtures/api/crash.spec.js/payload.ts @@ -0,0 +1,50 @@ +import { expect } from "@jest/globals"; +export const tests = { + config: { + videoUploadOnPasses: false, + }, + tests: [{ body: "redacted", title: ["Unknown"], clientId: "r0" }], + hooks: null, +}; +export const results = { + stats: { + duration: 0, + endedAt: expect.any(String), + startedAt: expect.any(String), + failures: 1, + passes: 0, + pending: 0, + skipped: 0, + suites: 0, + tests: 1, + wallClockDuration: 0, + wallClockStartedAt: expect.any(String), + wallClockEndedAt: expect.any(String), + }, + reporterStats: null, + exception: expect.any(String), + video: true, + screenshots: [], + hasCoverage: false, + tests: [ + { + displayError: "Oops...we found an error preparing this test file:", + state: "failed", + attempts: [ + { + state: "failed", + error: { + name: "Error", + message: "Oops...we found an error preparing this test file:", + stack: expect.any(String), + codeFrame: null, + }, + wallClockStartedAt: expect.any(String), + wallClockDuration: 0, + videoTimestamp: 0, + }, + ], + clientId: "r0", + }, + ], +}; diff --git a/packages/cypress-cloud/lib/__tests__/fixtures/api/failed.spec.js/payload.ts b/packages/cypress-cloud/lib/__tests__/fixtures/api/failed.spec.js/payload.ts new file mode 100644 index 0000000..3b46907 --- /dev/null +++ b/packages/cypress-cloud/lib/__tests__/fixtures/api/failed.spec.js/payload.ts @@ -0,0 +1,87 @@ +import { expect } from "@jest/globals"; +export const tests = { + config: { + videoUploadOnPasses: false, + }, + tests: [ + { + body: "redacted", + title: ["Failed", "should fail"], + clientId: "r0", + }, + ], + hooks: null, +}; +export const results = { + stats: { + duration: expect.any(Number), + endedAt: expect.any(String), + startedAt: expect.any(String), + failures: 1, + passes: 0, + pending: 0, + skipped: 0, + suites: 1, + tests: 1, + wallClockDuration: expect.any(Number), + wallClockStartedAt: expect.any(String), + wallClockEndedAt: expect.any(String), + }, + reporterStats: { + suites: 1, + tests: 1, + passes: 0, + pending: 0, + failures: 1, + start: expect.any(String), + end: expect.any(String), + duration: expect.any(Number), + }, + exception: null, + video: true, + screenshots: [ + { + screenshotId: expect.any(String), + name: null, + testId: "r0", + testAttemptIndex: 0, + takenAt: expect.any(String), + path: "/Users/agoldis/cypress-cloud/examples/webapp/cypress/screenshots/failed.spec.js/Failed -- should fail (failed).png", + height: 1440, + width: 2560, + }, + ], + hasCoverage: false, + tests: [ + { + displayError: + "ReferenceError: fail is not defined\n at Context.eval (webpack://web/./cypress/e2e/failed.spec.js:3:11)", + state: "failed", + attempts: [ + { + state: "failed", + error: { + name: "ReferenceError", + message: "fail is not defined", + stack: expect.any(String), + codeFrame: { + line: 3, + column: 12, + originalFile: "cypress/e2e/failed.spec.js", + relativeFile: "examples/webapp/cypress/e2e/failed.spec.js", + absoluteFile: + "/Users/agoldis/cypress-cloud/examples/webapp/cypress/e2e/failed.spec.js", + frame: + ' 1 | describe("Failed", function () {\n 2 | it("should fail", function () {\n> 3 | expect(fail).to.be.true;\n | ^\n 4 | });\n 5 | });\n 6 | ', + language: "js", + }, + }, + wallClockStartedAt: expect.any(String), + wallClockDuration: expect.any(Number), + videoTimestamp: expect.any(Number), + }, + ], + clientId: "r0", + }, + ], +}; diff --git a/packages/cypress-cloud/lib/__tests__/fixtures/api/passed.spec.js/payload.ts b/packages/cypress-cloud/lib/__tests__/fixtures/api/passed.spec.js/payload.ts new file mode 100644 index 0000000..9da236f --- /dev/null +++ b/packages/cypress-cloud/lib/__tests__/fixtures/api/passed.spec.js/payload.ts @@ -0,0 +1,73 @@ +import { expect } from "@jest/globals"; + +export const tests = { + config: { + videoUploadOnPasses: false, + }, + tests: [ + { + body: "redacted", + title: ["Passed", "should pass"], + clientId: "r0", + }, + ], + hooks: null, +}; + +export const results = { + stats: { + duration: expect.any(Number), + endedAt: expect.any(String), + startedAt: expect.any(String), + failures: 0, + passes: 1, + pending: 0, + skipped: 0, + suites: 1, + tests: 1, + wallClockDuration: expect.any(Number), + wallClockStartedAt: expect.any(String), + wallClockEndedAt: expect.any(String), + }, + reporterStats: { + suites: 1, + tests: 1, + passes: 1, + pending: 0, + failures: 0, + start: expect.any(String), + end: expect.any(String), + duration: expect.any(Number), + }, + exception: null, + video: true, + screenshots: [ + { + height: 1320, + width: 2000, + name: "custom-screenshot", + path: "/Users/agoldis/cypress-cloud/examples/webapp/cypress/screenshots/passed.spec.js/Passed -- should pass.png", + takenAt: expect.any(String), + testAttemptIndex: 0, + testId: "r0", + screenshotId: expect.any(String), + }, + ], + hasCoverage: false, + tests: [ + { + displayError: null, + state: "passed", + attempts: [ + { + state: "passed", + error: null, + wallClockStartedAt: expect.any(String), + wallClockDuration: expect.any(Number), + videoTimestamp: expect.any(Number), + }, + ], + clientId: "r0", + }, + ], +}; diff --git a/packages/cypress-cloud/lib/__tests__/fixtures/api/pending.spec.js/payload.ts b/packages/cypress-cloud/lib/__tests__/fixtures/api/pending.spec.js/payload.ts new file mode 100644 index 0000000..4abc953 --- /dev/null +++ b/packages/cypress-cloud/lib/__tests__/fixtures/api/pending.spec.js/payload.ts @@ -0,0 +1,61 @@ +import { expect } from "@jest/globals"; + +export const tests = { + config: { + videoUploadOnPasses: false, + }, + tests: [ + { + body: "redacted", + title: ["Pending", "Pending test"], + clientId: "r0", + }, + ], + hooks: null, +}; +export const results = { + stats: { + duration: expect.any(Number), + endedAt: expect.any(String), + startedAt: expect.any(String), + failures: 0, + passes: 0, + pending: 1, + skipped: 0, + suites: 1, + tests: 1, + wallClockDuration: expect.any(Number), + wallClockStartedAt: expect.any(String), + wallClockEndedAt: expect.any(String), + }, + reporterStats: { + suites: 1, + tests: 1, + passes: 0, + pending: 1, + failures: 0, + start: expect.any(String), + end: expect.any(String), + duration: expect.any(Number), + }, + exception: null, + video: true, + screenshots: [], + hasCoverage: false, + tests: [ + { + displayError: null, + state: "pending", + attempts: [ + { + state: "pending", + error: null, + wallClockStartedAt: expect.any(String), + wallClockDuration: expect.any(Number), + videoTimestamp: expect.any(Number), + }, + ], + clientId: "r0", + }, + ], +}; diff --git a/packages/cypress-cloud/lib/__tests__/fixtures/api/retries.spec.js/payload.ts b/packages/cypress-cloud/lib/__tests__/fixtures/api/retries.spec.js/payload.ts new file mode 100644 index 0000000..4eae0c3 --- /dev/null +++ b/packages/cypress-cloud/lib/__tests__/fixtures/api/retries.spec.js/payload.ts @@ -0,0 +1,126 @@ +import { expect } from "@jest/globals"; + +export const tests = { + config: { + videoUploadOnPasses: false, + }, + tests: [ + { + body: "redacted", + title: ["Retries", "Runs a test with retries"], + clientId: "r0", + }, + ], + hooks: null, +}; +export const results = { + stats: { + duration: expect.any(Number), + endedAt: expect.any(String), + startedAt: expect.any(String), + failures: 0, + passes: 1, + pending: 0, + skipped: 0, + suites: 1, + tests: 1, + wallClockDuration: expect.any(Number), + wallClockStartedAt: expect.any(String), + wallClockEndedAt: expect.any(String), + }, + reporterStats: { + suites: 1, + tests: 1, + passes: 1, + pending: 0, + failures: 0, + start: expect.any(String), + end: expect.any(String), + duration: expect.any(Number), + }, + exception: null, + video: true, + screenshots: [ + { + height: 1440, + width: 2560, + name: null, + path: "/Users/agoldis/cypress-cloud/examples/webapp/cypress/screenshots/retries.spec.js/Retries -- Runs a test with retries (failed).png", + takenAt: expect.any(String), + testAttemptIndex: 0, + testId: "r0", + screenshotId: expect.any(String), + }, + { + height: 1440, + width: 2560, + name: null, + path: "/Users/agoldis/cypress-cloud/examples/webapp/cypress/screenshots/retries.spec.js/Retries -- Runs a test with retries (failed) (attempt 2).png", + takenAt: expect.any(String), + testAttemptIndex: 1, + testId: "r0", + screenshotId: expect.any(String), + }, + ], + hasCoverage: false, + tests: [ + { + displayError: null, + state: "passed", + attempts: [ + { + state: "failed", + error: { + name: "Error", + message: "oh no!", + stack: expect.any(String), + codeFrame: { + line: 11, + column: 15, + originalFile: "cypress/e2e/retries.spec.js", + relativeFile: "examples/webapp/cypress/e2e/retries.spec.js", + absoluteFile: + "/Users/agoldis/cypress-cloud/examples/webapp/cypress/e2e/retries.spec.js", + frame: + ' 9 | if (i > 1) {\n 10 | i--;\n> 11 | throw new Error("oh no!");\n | ^\n 12 | }\n 13 | return;\n 14 | }', + language: "js", + }, + }, + wallClockStartedAt: expect.any(String), + wallClockDuration: expect.any(Number), + videoTimestamp: expect.any(Number), + }, + { + state: "failed", + error: { + name: "Error", + message: "oh no!", + stack: expect.any(String), + codeFrame: { + line: 11, + column: 15, + originalFile: "cypress/e2e/retries.spec.js", + relativeFile: "examples/webapp/cypress/e2e/retries.spec.js", + absoluteFile: + "/Users/agoldis/cypress-cloud/examples/webapp/cypress/e2e/retries.spec.js", + frame: + ' 9 | if (i > 1) {\n 10 | i--;\n> 11 | throw new Error("oh no!");\n | ^\n 12 | }\n 13 | return;\n 14 | }', + language: "js", + }, + }, + wallClockStartedAt: expect.any(String), + wallClockDuration: expect.any(Number), + videoTimestamp: expect.any(Number), + }, + { + state: "passed", + error: null, + wallClockStartedAt: expect.any(String), + wallClockDuration: expect.any(Number), + videoTimestamp: expect.any(Number), + }, + ], + clientId: "r0", + }, + ], +}; diff --git a/packages/cypress-cloud/lib/__tests__/fixtures/api/skipped.spec.js/payload.ts b/packages/cypress-cloud/lib/__tests__/fixtures/api/skipped.spec.js/payload.ts new file mode 100644 index 0000000..9f699f3 --- /dev/null +++ b/packages/cypress-cloud/lib/__tests__/fixtures/api/skipped.spec.js/payload.ts @@ -0,0 +1,114 @@ +import { expect } from "@jest/globals"; + +export const tests = { + config: { + videoUploadOnPasses: false, + }, + tests: [ + { + body: "redacted", + title: ["Skipped", "should not be skipped"], + clientId: "r0", + }, + { + body: "redacted", + title: ["Skipped", "should be skipped"], + clientId: "r1", + }, + ], + hooks: null, +}; + +export const results = { + stats: { + duration: expect.any(Number), + endedAt: expect.any(String), + startedAt: expect.any(String), + failures: 1, + passes: 0, + pending: 0, + skipped: 1, + suites: 1, + tests: 2, + wallClockDuration: expect.any(Number), + wallClockStartedAt: expect.any(String), + wallClockEndedAt: expect.any(String), + }, + reporterStats: { + suites: 1, + tests: 1, + passes: 0, + pending: 0, + failures: 1, + start: expect.any(String), + end: expect.any(String), + duration: expect.any(Number), + }, + exception: null, + video: true, + screenshots: [ + { + height: 1440, + width: 2560, + name: null, + path: "/Users/agoldis/cypress-cloud/examples/webapp/cypress/screenshots/skipped.spec.js/Skipped -- should not be skipped -- before each hook (failed).png", + takenAt: expect.any(String), + testAttemptIndex: 0, + testId: "r0", + screenshotId: expect.any(String), + }, + ], + hasCoverage: false, + tests: [ + { + displayError: + "Error: before each exception\n\nBecause this error occurred during a `before each` hook we are skipping the remaining tests in the current suite: `Skipped`\n at Context.eval (webpack://web/./cypress/e2e/skipped.spec.js:3:10)", + state: "failed", + attempts: [ + { + state: "failed", + error: { + name: "Error", + message: + "before each exception\n\nBecause this error occurred during a `before each` hook we are skipping the remaining tests in the current suite: `Skipped`", + stack: expect.any(String), + codeFrame: { + line: 3, + column: 11, + originalFile: "cypress/e2e/skipped.spec.js", + relativeFile: "examples/webapp/cypress/e2e/skipped.spec.js", + absoluteFile: + "/Users/agoldis/cypress-cloud/examples/webapp/cypress/e2e/skipped.spec.js", + frame: + ' 1 | describe("Skipped", function () {\n 2 | beforeEach(function () {\n> 3 | throw new Error("before each exception");\n | ^\n 4 | });\n 5 | it("should not be skipped", function () {\n 6 | expect(true).to.be.true;', + language: "js", + }, + }, + wallClockStartedAt: expect.any(String), + wallClockDuration: expect.any(Number), + videoTimestamp: expect.any(Number), + }, + ], + clientId: "r0", + }, + { + displayError: null, + state: "skipped", + attempts: [ + { + state: "skipped", + error: { + name: "Error", + message: "The test was skipped because of a hook failure", + stack: "", + codeFrame: null, + }, + wallClockStartedAt: expect.any(String), + wallClockDuration: expect.any(Number), + videoTimestamp: expect.any(Number), + }, + ], + clientId: "r1", + }, + ], +}; diff --git a/packages/cypress-cloud/lib/api/__tests__/api.test.ts b/packages/cypress-cloud/lib/api/__tests__/api.test.ts index 9d68636..3a70ba8 100644 --- a/packages/cypress-cloud/lib/api/__tests__/api.test.ts +++ b/packages/cypress-cloud/lib/api/__tests__/api.test.ts @@ -1,16 +1,11 @@ import { - createInstance, - CreateInstancePayload, - CreateInstanceResponse, - createRun, CreateRunPayload, CreateRunResponse, + InstanceAPIPayload, + createInstance, + createRun, setInstanceTests, - SetInstanceTestsPayload, - TestState, updateInstanceResults, - UpdateInstanceResultsPayload, - UpdateInstanceResultsResponse, updateInstanceStdout, } from "cypress-cloud/lib/api"; import { getAPIBaseUrl } from "cypress-cloud/lib/httpClient/config"; @@ -78,7 +73,7 @@ describe("cloud/api", () => { }); describe("createInstance", () => { - let payload: CreateInstancePayload; + let payload: InstanceAPIPayload.CreateInstancePayload; beforeEach(() => { payload = { @@ -95,7 +90,7 @@ describe("cloud/api", () => { }); it("POST /runs/:id/instances + returns CreateInstanceResponse", async () => { - const result: CreateInstanceResponse = { + const result: InstanceAPIPayload.CreateInstanceResponse = { spec: null, instanceId: null, claimedInstances: 10, @@ -112,7 +107,7 @@ describe("cloud/api", () => { }); describe("setInstanceTests", () => { - let payload: SetInstanceTestsPayload; + let payload: InstanceAPIPayload.SetInstanceTestsPayload; beforeEach(() => { payload = { @@ -138,7 +133,7 @@ describe("cloud/api", () => { }); describe("updateInstanceResults", () => { - let payload: UpdateInstanceResultsPayload; + let payload: InstanceAPIPayload.UpdateInstanceResultsPayload; beforeEach(() => { payload = { @@ -156,11 +151,11 @@ describe("cloud/api", () => { tests: [ { clientId: "r3", - state: TestState.Pending, + state: "pending", displayError: null, attempts: [ { - state: TestState.Pending, + state: "pending", error: null, wallClockStartedAt: null, wallClockDuration: null, @@ -170,11 +165,11 @@ describe("cloud/api", () => { }, { clientId: "r4", - state: TestState.Passed, + state: "passed", displayError: null, attempts: [ { - state: TestState.Passed, + state: "passed", error: null, wallClockStartedAt: "2022-12-11T08:46:31.893Z", wallClockDuration: 18625, @@ -200,7 +195,7 @@ describe("cloud/api", () => { }); it("POST /instances/:id/results + returning UpdateInstanceResultsResponse", async () => { - const result: UpdateInstanceResultsResponse = { + const result: InstanceAPIPayload.UpdateInstanceResultsResponse = { screenshotUploadUrls: [], videoUploadUrl: null, }; diff --git a/packages/cypress-cloud/lib/api/api.ts b/packages/cypress-cloud/lib/api/api.ts index ab0c0ed..b2c36d2 100644 --- a/packages/cypress-cloud/lib/api/api.ts +++ b/packages/cypress-cloud/lib/api/api.ts @@ -1,15 +1,8 @@ import { makeRequest } from "../httpClient"; import { - CreateInstanceCyPayload, - CreateInstancePayload, - CreateInstanceResponse, - CreateInstancesResponse, CreateRunPayload, CreateRunResponse, - SetInstanceTestsPayload, - UpdateInstanceResultsMergedPayload, - UpdateInstanceResultsPayload, - UpdateInstanceResultsResponse, + InstanceAPIPayload, } from "./types"; import { printWarnings } from "./warnings"; @@ -32,10 +25,10 @@ export const createInstance = async ({ groupId, machineId, platform, -}: CreateInstancePayload) => { +}: InstanceAPIPayload.CreateInstancePayload) => { const response = await makeRequest< - CreateInstanceResponse, - CreateInstancePayload + InstanceAPIPayload.CreateInstanceResponse, + InstanceAPIPayload.CreateInstancePayload >({ method: "POST", url: `runs/${runId}/instances`, @@ -50,10 +43,12 @@ export const createInstance = async ({ return response.data; }; -export const createBatchedInstances = async (data: CreateInstanceCyPayload) => { +export const createBatchedInstances = async ( + data: InstanceAPIPayload.CreateInstanceCyPayload +) => { const respone = await makeRequest< - CreateInstancesResponse, - CreateInstanceCyPayload + InstanceAPIPayload.CreateInstancesResponse, + InstanceAPIPayload.CreateInstanceCyPayload >({ method: "POST", url: `runs/${data.runId}/cy/instances`, @@ -65,9 +60,9 @@ export const createBatchedInstances = async (data: CreateInstanceCyPayload) => { export const setInstanceTests = ( instanceId: string, - payload: SetInstanceTestsPayload + payload: InstanceAPIPayload.SetInstanceTestsPayload ) => - makeRequest<{}, SetInstanceTestsPayload>({ + makeRequest<{}, InstanceAPIPayload.SetInstanceTestsPayload>({ method: "POST", url: `instances/${instanceId}/tests`, data: payload, @@ -75,9 +70,12 @@ export const setInstanceTests = ( export const updateInstanceResults = ( instanceId: string, - payload: UpdateInstanceResultsPayload + payload: InstanceAPIPayload.UpdateInstanceResultsPayload ) => - makeRequest({ + makeRequest< + InstanceAPIPayload.UpdateInstanceResultsResponse, + InstanceAPIPayload.UpdateInstanceResultsPayload + >({ method: "POST", url: `instances/${instanceId}/results`, data: payload, @@ -85,11 +83,11 @@ export const updateInstanceResults = ( export const reportInstanceResultsMerged = ( instanceId: string, - payload: UpdateInstanceResultsMergedPayload + payload: InstanceAPIPayload.UpdateInstanceResultsMergedPayload ) => makeRequest< - UpdateInstanceResultsResponse, - UpdateInstanceResultsMergedPayload + InstanceAPIPayload.UpdateInstanceResultsResponse, + InstanceAPIPayload.UpdateInstanceResultsMergedPayload >({ method: "POST", url: `instances/${instanceId}/cy/results`, diff --git a/packages/cypress-cloud/lib/api/types/index.ts b/packages/cypress-cloud/lib/api/types/index.ts index 1efaa61..63e692f 100644 --- a/packages/cypress-cloud/lib/api/types/index.ts +++ b/packages/cypress-cloud/lib/api/types/index.ts @@ -1,3 +1,2 @@ export * from "./instance"; export * from "./run"; -export * from "./test"; diff --git a/packages/cypress-cloud/lib/api/types/instance.ts b/packages/cypress-cloud/lib/api/types/instance.ts index 039f121..74a6c68 100644 --- a/packages/cypress-cloud/lib/api/types/instance.ts +++ b/packages/cypress-cloud/lib/api/types/instance.ts @@ -1,131 +1,172 @@ import { Platform, ScreenshotArtifact } from "cypress-cloud/types"; -import { SetTestsPayload, Test } from "./test"; - -export interface Screenshot { - screenshotId: string; - name: string | null; - testId: string; - takenAt: string; - height: number; - width: number; - screenshotURL: string; -} - -export interface InstanceResultStats { - suites: number; - tests: number; - passes: number; - pending: number; - skipped: number; - failures: number; - wallClockStartedAt: string; - wallClockEndedAt: string; - wallClockDuration: number; -} - -export interface ReporterStats { - suites: number; - tests: number; - passes: number; - pending: number; - failures: number; - start: string; - end: string; - duration: number; -} - -export interface CypressConfig { - video: boolean; - videoUploadOnPasses: boolean; - [key: string]: any; -} - -export interface InstanceResult { - stats: InstanceResultStats; - tests: Test[]; - error?: string; - reporterStats: ReporterStats; - exception: null | string; - cypressConfig?: PickedCypressConfig | null; - screenshots: Screenshot[]; - video: boolean; - videoUrl?: string; - hasCoverage?: boolean; -} +import { Standard } from "../../cypress.types"; +import { TestAttemptState, TestState } from "../../cypress.types/shared"; + +export namespace InstanceAPIPayload { + export interface Screenshot { + screenshotId: string; + name: string | null; + testId: string; + takenAt: string; + height: number; + width: number; + screenshotURL: string; + } + + export interface InstanceResultStats { + suites: number; + tests: number; + passes: number; + pending: number; + skipped: number; + failures: number; + wallClockStartedAt: string; + wallClockEndedAt: string; + wallClockDuration: number; + } + + export interface ReporterStats { + suites: number; + tests: number; + passes: number; + pending: number; + failures: number; + start: string; + end: string; + duration: number; + } + + export interface CypressConfig { + video: boolean; + videoUploadOnPasses: boolean; + [key: string]: any; + } + + export interface InstanceResult { + stats: InstanceResultStats; + tests: Test[]; + error?: string; + reporterStats: ReporterStats; + exception: null | string; + cypressConfig?: PickedCypressConfig | null; + screenshots: Screenshot[]; + video: boolean; + videoUrl?: string; + hasCoverage?: boolean; + } + + export interface AssetUploadInstruction { + uploadUrl: string; + readUrl: string; + } + + export interface ScreenshotUploadInstruction extends AssetUploadInstruction { + screenshotId: string; + } + + export type SetResultsTestsPayload = Pick< + Test, + "state" | "displayError" | "attempts" + > & { clientId: string }; + + export interface SetInstanceTestsPayload { + config: PickedCypressConfig; + tests: Array; + hooks: Standard.ModuleAPI.Run["hooks"]; + } + + export type PickedCypressConfig = Pick< + CypressConfig, + "video" | "videoUploadOnPasses" + >; + + export type CreateInstancePayload = { + runId: string; + groupId: string; + machineId: string; + platform: Platform; + }; -export interface AssetUploadInstruction { - uploadUrl: string; - readUrl: string; -} + export type CreateInstanceCyPayload = CreateInstancePayload & { + batchSize: number; + }; + export type CreateInstanceResponse = { + spec: string | null; + instanceId: string | null; + claimedInstances: number; + totalInstances: number; + }; -export interface ScreenshotUploadInstruction extends AssetUploadInstruction { - screenshotId: string; -} + export type InstanceResponseSpecDetails = { + spec: string; + instanceId: string; + }; + export type CreateInstancesResponse = { + specs: Array; + claimedInstances: number; + totalInstances: number; + }; -export type SetResultsTestsPayload = Pick< - Test, - "state" | "displayError" | "attempts" -> & { clientId: string }; + export type UpdateInstanceResultsPayload = Pick< + InstanceResult, + "stats" | "exception" | "video" | "hasCoverage" + > & { + tests: Array | null; + } & { + reporterStats: CypressCommandLine.RunResult["reporterStats"] | null; + } & { + screenshots: ScreenshotArtifact[]; + }; -export interface SetInstanceTestsPayload { - config: PickedCypressConfig; - tests: Array; - hooks: CypressCommandLine.RunResult["hooks"]; -} + export type UpdateInstanceResultsMergedPayload = { + tests: SetInstanceTestsPayload; + results: UpdateInstanceResultsPayload; + }; -export type PickedCypressConfig = Pick< - CypressConfig, - "video" | "videoUploadOnPasses" ->; - -export type CreateInstancePayload = { - runId: string; - groupId: string; - machineId: string; - platform: Platform; -}; - -export type CreateInstanceCyPayload = CreateInstancePayload & { - batchSize: number; -}; -export type CreateInstanceResponse = { - spec: string | null; - instanceId: string | null; - claimedInstances: number; - totalInstances: number; -}; - -export type InstanceResponseSpecDetails = { - spec: string; - instanceId: string; -}; -export type CreateInstancesResponse = { - specs: Array; - claimedInstances: number; - totalInstances: number; -}; - -export type UpdateInstanceResultsPayload = Pick< - InstanceResult, - "stats" | "exception" | "video" | "hasCoverage" -> & { - tests: Array | null; -} & { - reporterStats: CypressCommandLine.RunResult["reporterStats"] | null; -} & { - screenshots: ScreenshotArtifact[]; -}; - -export type UpdateInstanceResultsMergedPayload = { - tests: SetInstanceTestsPayload; - results: UpdateInstanceResultsPayload; -}; - -export interface UpdateInstanceResultsResponse { - videoUploadUrl?: string | null; - screenshotUploadUrls: ScreenshotUploadInstruction[]; - coverageUploadUrl?: string | null; - cloud?: { - shouldCancel: false | string; + export interface UpdateInstanceResultsResponse { + videoUploadUrl?: string | null; + screenshotUploadUrls: ScreenshotUploadInstruction[]; + coverageUploadUrl?: string | null; + cloud?: { + shouldCancel: false | string; + }; + } + + export interface TestAttempt { + state: TestAttemptState; + error: Standard.ModuleAPI.TestAttempt["error"] | null; + wallClockStartedAt: string | null; + wallClockDuration: number | null; + videoTimestamp: number | null; + } + + interface TestConfig { + retries: + | { + openMode: number; + runMode: number; + } + | number; + } + + export interface TestHook { + clientId: string; + type: "before each"; + title: string[]; + body: string; + } + + export interface Test { + state: TestState; + testId: string; + displayError: string | null; + title: string[]; + config?: null | TestConfig; + body: string; + attempts: TestAttempt[]; + } + + export type SetTestsPayload = Pick & { + clientId: string; }; } diff --git a/packages/cypress-cloud/lib/api/types/test.ts b/packages/cypress-cloud/lib/api/types/test.ts deleted file mode 100644 index 825e918..0000000 --- a/packages/cypress-cloud/lib/api/types/test.ts +++ /dev/null @@ -1,47 +0,0 @@ -export enum TestState { - Failed = "failed", - Passed = "passed", - Pending = "pending", - Skipped = "skipped", -} - -export interface TestAttempt { - state: TestState; - error: CypressCommandLine.TestError | null; - wallClockStartedAt: string | null; - wallClockDuration: number | null; - videoTimestamp: number | null; -} - -interface TestConfig { - retries: - | { - openMode: number; - runMode: number; - } - | number; -} - -export interface TestHook { - clientId: string; - type: "before each"; - title: string[]; - body: string; -} - -export interface Test { - state: TestState; - testId: string; - displayError: string | null; - title: string[]; - config?: null | TestConfig; - hookIds: string[]; - body: string; - attempts: TestAttempt[]; - hooks: TestHook[] | null; -} - -export type SetTestsPayload = Pick< - Test, - "body" | "title" | "config" | "hookIds" -> & { clientId: string }; diff --git a/packages/cypress-cloud/lib/artifacts.ts b/packages/cypress-cloud/lib/artifacts.ts index 748d4a3..ca3dc47 100644 --- a/packages/cypress-cloud/lib/artifacts.ts +++ b/packages/cypress-cloud/lib/artifacts.ts @@ -2,10 +2,12 @@ import Debug from "debug"; import { ScreenshotArtifact, ScreenshotUploadInstruction } from "../types"; import { updateInstanceStdout } from "./api"; import { safe } from "./lang"; -import { warn } from "./log"; +import { dim } from "./log"; +import { ExecutionState } from "./state"; import { uploadImage, uploadJson, uploadVideo } from "./upload"; const debug = Debug("currents:artifacts"); interface UploadArtifacts { + executionState: ExecutionState; videoPath: string | null; videoUploadUrl?: string | null; screenshots: ScreenshotArtifact[]; @@ -14,6 +16,7 @@ interface UploadArtifacts { coverageFilePath?: string | null; } export async function uploadArtifacts({ + executionState, videoPath, videoUploadUrl, screenshots, @@ -21,8 +24,6 @@ export async function uploadArtifacts({ coverageFilePath, coverageUploadUrl, }: UploadArtifacts) { - // title("blue", "Uploading Results"); - debug("uploading artifacts: %o", { videoPath, videoUploadUrl, @@ -32,9 +33,9 @@ export async function uploadArtifacts({ coverageUploadUrl, }); - const totalUploads = (videoPath ? 1 : 0) + screenshots.length; + const totalUploads = + (videoPath ? 1 : 0) + screenshots.length + (coverageUploadUrl ? 1 : 0); if (totalUploads === 0) { - // info("Nothing to upload"); return; } @@ -42,7 +43,12 @@ export async function uploadArtifacts({ if (videoUploadUrl && videoPath) { await safe( uploadVideo, - (e) => debug("failed uploading video %s. Error: %o", videoPath, e), + (e) => { + debug("failed uploading video %s. Error: %o", videoPath, e); + executionState.addWarning( + `Failed uploading video ${videoPath}.\n${dim(e)}` + ); + }, () => debug("success uploading", videoPath) )(videoPath, videoUploadUrl); } @@ -59,17 +65,23 @@ export async function uploadArtifacts({ screenshot, screenshotUploadUrls ); - warn("Cannot find upload url for screenshot: %s", screenshot.path); + executionState.addWarning( + `No upload URL for screenshot ${screenshot.path}` + ); return Promise.resolve(); } return safe( uploadImage, - (e) => + (e) => { debug( "failed uploading screenshot %s. Error: %o", screenshot.path, e - ), + ); + executionState.addWarning( + `Failed uploading screenshot ${screenshot.path}.\n${dim(e)}` + ); + }, () => debug("success uploading", screenshot.path) )(screenshot.path, url); }) @@ -79,12 +91,18 @@ export async function uploadArtifacts({ if (coverageUploadUrl && coverageFilePath) { await safe( uploadJson, - (e) => + (e) => { debug( "failed uploading coverage file %s. Error: %o", coverageFilePath, e - ), + ); + + executionState.addWarning( + `Failed uploading coverage file ${coverageFilePath}.\n${dim(e)}` + ); + }, + () => debug("success uploading", coverageFilePath) )(coverageFilePath, coverageUploadUrl); } diff --git a/packages/cypress-cloud/lib/bootstrap/serializer.ts b/packages/cypress-cloud/lib/bootstrap/serializer.ts index 20cb9d5..fcad5f3 100644 --- a/packages/cypress-cloud/lib/bootstrap/serializer.ts +++ b/packages/cypress-cloud/lib/bootstrap/serializer.ts @@ -4,12 +4,10 @@ import { } from "cypress-cloud/types"; import Debug from "debug"; import _ from "lodash"; -import { customAlphabet } from "nanoid"; import { getCypressRunAPIParams } from "../config"; +import { getRandomString } from "../nano"; const debug = Debug("currents:boot"); -const getDummySpec = customAlphabet("abcdefghijklmnopqrstuvwxyz", 10); - export function getBootstrapArgs({ params, tempFilePath, @@ -40,7 +38,7 @@ export function getBootstrapArgs({ return [ ...args, "--spec", - getDummySpec(), + getRandomString(), params.testingType === "component" ? "--component" : "--e2e", ]; }) diff --git a/packages/cypress-cloud/lib/cancellation/cancellation.ts b/packages/cypress-cloud/lib/cancellation/cancellation.ts index df5dec0..883bbef 100644 --- a/packages/cypress-cloud/lib/cancellation/cancellation.ts +++ b/packages/cypress-cloud/lib/cancellation/cancellation.ts @@ -1,4 +1,4 @@ -import { Event, pubsub } from "../pubsub"; +import { Event, getPubSub } from "../pubsub"; interface ExecutionState { cancellationReason: string | null; @@ -12,7 +12,7 @@ export const setCancellationReason = (reason: string) => { return; } state.cancellationReason = reason; - pubsub.emit(Event.RUN_CANCELLED, reason); + getPubSub().emit(Event.RUN_CANCELLED, reason); }; export const getCancellationReason = () => state.cancellationReason; diff --git a/packages/cypress-cloud/lib/config/config.ts b/packages/cypress-cloud/lib/config/config.ts index e1d0cf8..3ffbab6 100644 --- a/packages/cypress-cloud/lib/config/config.ts +++ b/packages/cypress-cloud/lib/config/config.ts @@ -89,6 +89,7 @@ export async function getMergedConfig(params: ValidatedCurrentsParameters) { projectRoot: string; rawJson: Record; browsers: DetectedBrowser[]; + version: string; }) | undefined = await bootCypress(params); diff --git a/packages/cypress-cloud/lib/config/params.ts b/packages/cypress-cloud/lib/config/params.ts index 4578a86..7b6e203 100644 --- a/packages/cypress-cloud/lib/config/params.ts +++ b/packages/cypress-cloud/lib/config/params.ts @@ -37,10 +37,13 @@ export async function resolveCurrentsParams( const testingType = params.testingType ?? "e2e"; - const batchSize = - testingType === "e2e" - ? configFromFile.e2e.batchSize - : configFromFile.component.batchSize; + let batchSize = params.batchSize; + if (!batchSize) { + batchSize = + testingType === "e2e" + ? configFromFile.e2e.batchSize + : configFromFile.component.batchSize; + } // batchSize and cloudServiceUrl defaults are in getCurrentsConfig() return { diff --git a/packages/cypress-cloud/lib/coverage/index.ts b/packages/cypress-cloud/lib/coverage/index.ts index 5ad7cc8..be881ae 100644 --- a/packages/cypress-cloud/lib/coverage/index.ts +++ b/packages/cypress-cloud/lib/coverage/index.ts @@ -1,6 +1,5 @@ -import { join } from "path"; import fs from "fs/promises"; -import { warn } from "../log"; +import { join } from "path"; export const getCoverageFilePath = async ( coverageFile = "./.nyc_output/out.json" @@ -9,12 +8,14 @@ export const getCoverageFilePath = async ( try { await fs.access(path); - return path; + return { + path, + error: false, + }; } catch (error) { - warn( - 'Coverage file was not found at "%s". Coverage recording will be skipped.', - path - ); - return null; + return { + path, + error, + }; } }; diff --git a/packages/cypress-cloud/lib/cypress.types/12.ts b/packages/cypress-cloud/lib/cypress.types/12.ts new file mode 100644 index 0000000..16c2e52 --- /dev/null +++ b/packages/cypress-cloud/lib/cypress.types/12.ts @@ -0,0 +1,270 @@ +import { + MochaError, + MochaHook, + MochaInvocationDetails, + TestAttemptState, + TestState, + TestingType, + Timing, +} from "./shared"; + +/** + * Cypress 12.17.4 and lower shape + */ +export namespace Cypress12 { + export namespace SpecAfter { + export interface Payload { + error: string | null; + hooks: Hooks[] | null; + reporter?: string; + reporterStats: ReporterStats | null; + screenshots: Screenshot[]; + spec: Spec; + stats: Stats; + tests: Test[] | null; + video: string | null; + } + + export interface Spec { + absolute: string; // /Users/agoldis/cypress-cloud/examples/webapp/cypress/e2e/crash.spec.js + baseName: string; // crash.spec.js + fileExtension: string; // .js + fileName: string; // crash + name: string; // cypress/e2e/crash.spec.js + relative: string; // cypress/e2e/crash.spec.js + relativeToCommonRoot: string; // crash.spec.js + specFileExtension: string; // .spec.js + specType: string; // integration + } + + export interface Screenshot { + height: number; + name: string | null; + path: string; + screenshotId: string; + takenAt: string; + testAttemptIndex: number; + testId: string; + width: number; + } + + export interface ReporterStats { + suites: number; + tests: number; + passes: number; + pending: number; + failures: number; + start: string; + end: string; + duration: number; + } + + export interface Stats { + suites: number; + tests: number; + passes: number; + pending: number; + skipped: number; + failures: number; + wallClockStartedAt: string; + wallClockEndedAt: string; + wallClockDuration: number; + } + + export interface Test { + attempts: TestAttempt[]; + body: string; + displayError: string | null; + state: TestState; + title: string[]; + testId: string; + } + + export interface Hooks { + hookId: string; + hookName: "before each" | "after each" | "before all" | "after all"; + title: string[]; + body: string; + } + + export interface TestAttempt { + error: TestError | null; + failedFromHookId: string | null; + state: TestAttemptState; + timings: Timing | null; + videoTimestamp: number; + wallClockDuration: number; + wallClockStartedAt: string; + } + + export interface TestError { + message: string; + name: string; + stack: string; + codeFrame: CodeFrame | null; + } + + export interface CodeFrame { + line: number | null; + column: number | null; + originalFile: string | null; + relativeFile: string | null; + absoluteFile: string | null; + frame: string | null; + language: string | null; + } + } + + /** + * test:after:run event + */ + export namespace TestAfter { + /** + * test:after:run event payload + */ + export interface Payload extends TestBefore.Payload { + duration: number; + err?: MochaError; + hooks: MochaHook[]; + timings: Timing; + } + } + + /** + * test:before:run event + */ + export namespace TestBefore { + export interface Payload { + async: boolean; + body: string; + currentRetry: number; + fullTitle: string; + hooks?: MochaHook[]; // missing for non-first attempts + id: string; + invocationDetails?: MochaInvocationDetails; // missing for non-first attempts + order: number; + pending: boolean; + retries: number; + state: string; + sync: boolean; + timedOut: boolean; + timings: Pick; + title: string; + type: string; + wallClockStartedAt: string; + } + } + + /** + * screenshot:after event + */ + export namespace ScreenshotAfter { + export interface Payload { + testAttemptIndex: number; + size: number; + takenAt: string; + dimensions: { width: number; height: number }; + multipart: boolean; + specName: string; + name: string | null; + testFailure: boolean; + path: string; + scaled: boolean; + duration: number; + blackout: string[]; + } + } + /** + * Module API (cypress.run()) + */ + export namespace ModuleAPI { + /** + * return value of cypress.run() + */ + export type Result = CompletedResult | FailureResult; + + export interface FailureResult { + status: "failed"; + failures: number; + message: string; + } + + export interface CompletedResult { + browserName: string; + browserPath: string; + browserVersion: string; + config: Config; + cypressVersion: string; + endedTestsAt: string; + osName: string; + osVersion: string; + runs: Run[]; + startedTestsAt: string; + status: "finished" | "failed"; + totalDuration: number; + totalFailed: number; + totalPassed: number; + totalPending: number; + totalSkipped: number; + totalSuites: number; + totalTests: number; + } + + export interface Run { + error: SpecAfter.Payload["error"]; + hooks: SpecAfter.Payload["hooks"]; + reporter?: SpecAfter.Payload["reporter"]; + reporterStats: SpecAfter.Payload["reporterStats"]; + shouldUploadVideo: boolean; + spec: SpecAfter.Spec; + stats: Stats; + tests: Test[] | null; + video: string | null; + } + + export interface Test { + title: string[]; + state: TestState; + body: string; + displayError: string | null; + attempts: TestAttempt[]; + } + + export interface TestAttempt { + state: SpecAfter.TestAttempt["state"]; + error: SpecAfter.TestAttempt["error"]; + videoTimestamp: number; + duration: number | null; + startedAt: string; + screenshots: Screenshot[]; + } + + export interface Screenshot { + name: string | null; + takenAt: string; + path: string; + height: number; + width: number; + } + + export interface Stats { + duration: number; + endedAt: string; + failures: number; + passes: number; + pending: number; + skipped: number; + startedAt: string; + suites: number; + tests: number; + } + + export interface Config { + specPattern: string; + video: boolean; + videoUploadOnPasses: boolean; + version: string; + testingType: TestingType; + } + } +} diff --git a/packages/cypress-cloud/lib/cypress.types/13.ts b/packages/cypress-cloud/lib/cypress.types/13.ts new file mode 100644 index 0000000..1a1eac8 --- /dev/null +++ b/packages/cypress-cloud/lib/cypress.types/13.ts @@ -0,0 +1,144 @@ +import { Cypress12 } from "./12"; +import { TestAttemptState, TestState, TestingType } from "./shared"; + +export namespace Cypress13 { + export namespace SpecAfter { + export interface Payload { + error: string | null; // āœ… + reporter: string; // āœ… + reporterStats: ReporterStats | null; // āœ… + screenshots: Screenshot[]; // āœ… + spec: Spec; // āœ… + stats: Stats; // āœ… + tests: Test[] | null; // āœ… + video: string | null; // āœ… + } + + export interface Spec { + absolute: string; // /Users/agoldis/cypress-cloud/examples/webapp/cypress/e2e/crash.spec.js + fileExtension: string; // .js + fileName: string; // crash + name: string; // crash.spec.js + relative: string; // cypress/e2e/crash.spec.js + } + + export interface Screenshot { + height: number; + name: string | null; + path: string; + screenshotId: string; + takenAt: string; + width: number; + } + + export interface ReporterStats { + suites: number; + tests: number; + passes: number; + pending: number; + failures: number; + start: string; + end: string; + duration: number; + } + + export interface Stats { + suites: number; + tests: number; + passes: number; + pending: number; + skipped: number; + failures: number; + startedAt: string; + endedAt: string; + duration?: number; // node_modules/cypress/types/cypress-npm-api.d.ts + } + + export interface Test { + attempts: TestAttempt[]; + displayError: string | null; + state: TestState; + duration: number; + title: string[]; + } + + export interface TestAttempt { + state: TestAttemptState; + } + } + + export namespace TestAfter { + export interface Payload extends Cypress12.TestAfter.Payload {} + } + + export namespace TestBefore { + export interface Payload extends Cypress12.TestBefore.Payload {} + } + + export namespace ScreenshotAfter { + export interface Payload extends Cypress12.ScreenshotAfter.Payload {} + } + + // return value of cypress.run() + export namespace ModuleAPI { + export type Result = CompletedResult | FailureResult; + + export interface FailureResult extends Cypress12.ModuleAPI.FailureResult {} + export interface CompletedResult { + browserName: string; + browserPath: string; + browserVersion: string; + config: Config; + cypressVersion: string; + endedTestsAt: string; + osName: string; + osVersion: string; + runs: Run[]; + startedTestsAt: string; + totalDuration: number; + totalFailed: number; + totalPassed: number; + totalPending: number; + totalSkipped: number; + totalSuites: number; + totalTests: number; + } + + export interface Run { + error: SpecAfter.Payload["error"]; + reporter?: SpecAfter.Payload["reporter"]; + reporterStats: SpecAfter.Payload["reporterStats"]; + spec: SpecAfter.Spec; + screenshots: Screenshot[]; + stats: Stats; + tests: Test[] | null; + video: string | null; + } + + export interface Screenshot { + height: number; + name: string | null; + path: string; + takenAt: string; + width: number; + } + export interface Config { + specPattern: string; + video: boolean; + videoUploadOnPasses: boolean; + version: string; + testingType: TestingType; + } + + export interface Stats extends Cypress12.ModuleAPI.Stats {} + export interface Test { + displayError: string | null; + duration: number; + state: TestState; + title: string[]; + attempts: TestAttempt[]; + } + + export interface TestAttempt extends Cypress13.SpecAfter.TestAttempt {} + } +} diff --git a/packages/cypress-cloud/lib/cypress.types/README.md b/packages/cypress-cloud/lib/cypress.types/README.md new file mode 100644 index 0000000..b8fd6b6 --- /dev/null +++ b/packages/cypress-cloud/lib/cypress.types/README.md @@ -0,0 +1,19 @@ +# Cypress Types + +This directory stored cross-version definition of Cypress Types. Those definition help to identify and standardize the results across different versions. + +- `13.ts` - data for Cypress 13+ (based on 13.2.0) +- `12.ts` - data for Cypress 12+ (based on 12.174) +- `index.ts` - union of all types + +The namespaces in `index.ts` are as follows: + +- `CypressTypes` - Cypress types + + - `EventPayload` - data for different event emitted by Cypress + - `ModuleAPI` - data returned by `cypress.run` ModuleAPI + +- `Standard` - a standard form used by Currents to store data collected from various cypress versions. Before sending payload to Currents or Sorry Cypress API we will convert the data from version-specific shape to the `Standard` shape via a series of transformations (see `dataFlow.spec.ts`) + + - `SpecAfter` - payload of `spec:after` events + - `ModuleAPI` - payload of `cypress.run` return value diff --git a/packages/cypress-cloud/lib/cypress.types/index.ts b/packages/cypress-cloud/lib/cypress.types/index.ts new file mode 100644 index 0000000..68229e4 --- /dev/null +++ b/packages/cypress-cloud/lib/cypress.types/index.ts @@ -0,0 +1,88 @@ +import { Cypress12 } from "./12"; +import { Cypress13 } from "./13"; + +export * from "./12"; +export * from "./13"; +export * from "./shared"; +export namespace CypressTypes { + export namespace EventPayload { + export type ScreenshotAfter = + | Cypress12.ScreenshotAfter.Payload + | Cypress13.ScreenshotAfter.Payload; + + export type TestAfter = + | Cypress12.TestAfter.Payload + | Cypress13.TestAfter.Payload; + + export type TestBefore = + | Cypress12.TestBefore.Payload + | Cypress13.TestBefore.Payload; + + export namespace SpecAfter { + export type Spec = Cypress12.SpecAfter.Spec | Cypress13.SpecAfter.Spec; + export type Stats = Cypress12.SpecAfter.Stats | Cypress13.SpecAfter.Stats; + export type Test = Cypress12.SpecAfter.Test | Cypress13.SpecAfter.Test; + export type TestAttempt = + | Cypress12.SpecAfter.TestAttempt + | Cypress13.SpecAfter.TestAttempt; + + export type Payload = + | Cypress12.SpecAfter.Payload + | Cypress13.SpecAfter.Payload; + } + } + + export namespace ModuleAPI { + export type Result = + | Cypress12.ModuleAPI.Result + | Cypress13.ModuleAPI.Result; + + export type FailureResult = + | Cypress12.ModuleAPI.FailureResult + | Cypress13.ModuleAPI.FailureResult; + + export type CompletedResult = + | Cypress12.ModuleAPI.CompletedResult + | Cypress13.ModuleAPI.CompletedResult; + + export type Run = Cypress12.ModuleAPI.Run | Cypress13.ModuleAPI.Run; + + export type Test = Cypress12.ModuleAPI.Test | Cypress13.ModuleAPI.Test; + export type TestAttempt = + | Cypress12.ModuleAPI.TestAttempt + | Cypress13.ModuleAPI.TestAttempt; + } +} + +/** + * How Currents stores data internally and how we send it to the backend + */ +export namespace Standard { + /** + * spef:after event + */ + export namespace SpecAfter { + /** + * spec:after event payload + */ + export type Payload = Cypress12.SpecAfter.Payload; + export type Spec = Cypress12.SpecAfter.Spec; + export type Stats = Cypress12.SpecAfter.Stats; + export type Test = Cypress12.SpecAfter.Test; + export type TestAttempt = Cypress12.SpecAfter.TestAttempt; + } + + /** + * Module API (cypress.run()) + */ + export namespace ModuleAPI { + /** + * return value of cypress.run() + */ + export type Result = Cypress12.ModuleAPI.Result; + export type CompletedResult = Cypress12.ModuleAPI.CompletedResult; + export type Run = Cypress12.ModuleAPI.Run; + export type Test = Cypress12.ModuleAPI.Test; + export type TestAttempt = Cypress12.ModuleAPI.TestAttempt; + } +} diff --git a/packages/cypress-cloud/lib/cypress.types/shared.ts b/packages/cypress-cloud/lib/cypress.types/shared.ts new file mode 100644 index 0000000..6ac46ab --- /dev/null +++ b/packages/cypress-cloud/lib/cypress.types/shared.ts @@ -0,0 +1,74 @@ +export type TestState = "failed" | "passed" | "pending" | "skipped"; +export type TestAttemptState = "failed" | "passed" | "pending"; +export type TestingType = "e2e" | "component"; +export interface MochaError { + message: string; + name: string; + stack: string; + parsedStack: MochaParsedStackItem[]; + codeFrame: MochaCodeFrame; +} + +export interface MochaInvocationDetails { + function: string; + fileUrl: string; + originalFile: string; + relativeFile: string; + absoluteFile: string; + line: number; + column: number; + whitespace: string; + stack: string; +} + +export interface MochaCodeFrame { + line: number; + column: number; + originalFile: string; + relativeFile: string; + absoluteFile: string; + frame: string; + language: string; +} + +export interface MochaParsedStackItem { + message: string; + whitespace: string; + function?: string; + fileUrl?: string; + originalFile?: string; + relativeFile?: string; + absoluteFile?: string; + line?: number; + column?: number; +} + +export interface MochaHook { + title: string; + hookName: string; + hookId: string; + pending: boolean; + body: string; + type: string; + file: null | string; + invocationDetails: MochaInvocationDetails; + currentRetry: number; + retries: number; + _slow: number; +} + +type TimingKey = "before each" | "after each" | "after all" | "before all"; +export type Timing = { + [key in TimingKey]?: HookTimingItem; +} & { + lifecycle: number; + test: TimingItem; +}; + +export interface HookTimingItem extends TimingItem { + hookId: string; +} +export interface TimingItem { + fnDuration: number; + afterFnDuration: number; +} diff --git a/packages/cypress-cloud/lib/cypress/cypress.ts b/packages/cypress-cloud/lib/cypress/cypress.ts index 5ad3c30..4184c06 100644 --- a/packages/cypress-cloud/lib/cypress/cypress.ts +++ b/packages/cypress-cloud/lib/cypress/cypress.ts @@ -1,14 +1,15 @@ import cypress from "cypress"; import { CurrentsRunParameters, - CypressResult, ValidatedCurrentsParameters, } from "cypress-cloud/types"; import Debug from "debug"; import _ from "lodash"; import { getCypressRunAPIParams } from "../config"; +import { CypressTypes } from "../cypress.types"; import { safe } from "../lang"; import { warn } from "../log"; +import { ModuleAPIResults } from "../results/moduleAPIResult"; import { getWSSPort } from "../ws"; const debug = Debug("currents:cypress"); @@ -54,9 +55,9 @@ export async function runSpecFile( spec, }; debug("running cypress with options %o", options); - const result = await cypress.run(options); + const result = (await cypress.run(options)) as CypressTypes.ModuleAPI.Result; - if (result.status === "failed") { + if (ModuleAPIResults.isFailureResult(result)) { warn('Cypress runner failed with message: "%s"', result.message); warn( "The following spec files will be marked as failed: %s", @@ -73,7 +74,7 @@ export async function runSpecFile( export const runSpecFileSafe = ( spec: RunCypressSpecFile, cypressRunOptions: ValidatedCurrentsParameters -): Promise => +): Promise => safe( runSpecFile, (error) => { diff --git a/packages/cypress-cloud/lib/debug-data.ts b/packages/cypress-cloud/lib/debug-data.ts new file mode 100644 index 0000000..93a120e --- /dev/null +++ b/packages/cypress-cloud/lib/debug-data.ts @@ -0,0 +1,54 @@ +import fs from "fs"; +import path from "path"; + +import { CypressTypes } from "./cypress.types"; +import { green } from "./log"; +import { _cypressVersion } from "./state/global"; + +export function writeDataToFile( + data: string, + spec: string, + type: string, + suffix: string = "" +) { + // eslint-disable-next-line turbo/no-undeclared-env-vars + if (typeof process.env.JEST_WORKER_ID !== "undefined") { + return; + } + const dir = path.resolve(`${_cypressVersion as string}/${spec}`); + if (!fs.existsSync(dir)) { + fs.mkdirSync(dir, { + recursive: true, + }); + } + const p = path.resolve(`${dir}/${type}${suffix}.json`); + console.log(green(`\tWriting ${type} data to: ${p}`)); + fs.writeFileSync(p, data); +} +export function getSpecShortName(spec: string) { + const dir = path.dirname(spec); + return spec.replace(`${dir}/`, ""); +} + +const screenshots: Record = {}; +export function getScreenshotCount(spec: string) { + if (!screenshots[spec]) { + screenshots[spec] = 0; + } + screenshots[spec]++; + return screenshots[spec]; +} + +const testsHooks: Record = {}; +export function getTestHookSpecName( + test: + | CypressTypes.EventPayload.TestAfter + | CypressTypes.EventPayload.TestBefore +) { + if (test.invocationDetails) { + const r = getSpecShortName(test.invocationDetails.relativeFile); + testsHooks[test.fullTitle] = r; + } + + return testsHooks[test.fullTitle]; +} diff --git a/packages/cypress-cloud/lib/httpClient/__tests__/httpClient.retries.test.ts b/packages/cypress-cloud/lib/httpClient/__tests__/httpClient.retries.test.ts index 2bca2e2..092fa8e 100644 --- a/packages/cypress-cloud/lib/httpClient/__tests__/httpClient.retries.test.ts +++ b/packages/cypress-cloud/lib/httpClient/__tests__/httpClient.retries.test.ts @@ -5,7 +5,6 @@ import { makeRequest } from "../httpClient"; jest.mock("../config"); jest.mock("cypress-cloud/lib/log"); - (getAPIBaseUrl as jest.Mock).mockReturnValue("http://localhost:1234"); const apiMock = nock(getAPIBaseUrl()).persist(); diff --git a/packages/cypress-cloud/lib/httpClient/httpClient.ts b/packages/cypress-cloud/lib/httpClient/httpClient.ts index 7e73755..d6536e4 100644 --- a/packages/cypress-cloud/lib/httpClient/httpClient.ts +++ b/packages/cypress-cloud/lib/httpClient/httpClient.ts @@ -12,6 +12,7 @@ import prettyMilliseconds from "pretty-ms"; import { getCurrentsConfig } from "../config"; import { ValidationError } from "../errors"; import { warn } from "../log"; +import { _currentsVersion, _cypressVersion, _runId } from "../state/global"; import { getAPIBaseUrl, getDelay, isRetriableError } from "./config"; import { maybePrintErrors } from "./printErrors"; @@ -84,21 +85,6 @@ export async function getClient() { return _client; } -let _runId: string | undefined = undefined; -export const setRunId = (runId: string) => { - _runId = runId; -}; - -let _cypressVersion: string | undefined = undefined; -export const setCypressVersion = (cypressVersion: string) => { - _cypressVersion = cypressVersion; -}; - -let _currentsVersion: string | undefined = undefined; -export const setCurrentsVersion = (v: string) => { - _currentsVersion = v; -}; - function onRetry( retryCount: number, err: AxiosError<{ message: string; errors?: string[] }>, diff --git a/packages/cypress-cloud/lib/init.ts b/packages/cypress-cloud/lib/init.ts index 9ce9928..b773761 100644 --- a/packages/cypress-cloud/lib/init.ts +++ b/packages/cypress-cloud/lib/init.ts @@ -6,7 +6,7 @@ const cypressPkg = require("cypress/package.json"); const pkg = require("cypress-cloud/package.json"); import { initCapture } from "./capture"; -import { setCurrentsVersion, setCypressVersion } from "./httpClient"; +import { setCurrentsVersion, setCypressVersion } from "./state/global"; initCapture(); setCypressVersion(cypressPkg.version); diff --git a/packages/cypress-cloud/lib/listener.ts b/packages/cypress-cloud/lib/listener.ts new file mode 100644 index 0000000..718396e --- /dev/null +++ b/packages/cypress-cloud/lib/listener.ts @@ -0,0 +1,85 @@ +import Debug from "debug"; + +import { CypressTypes } from "./cypress.types"; +import { Event, allEvents, getPubSub } from "./pubsub"; +import { + handleScreenshotEvent, + handleSpecAfter, + handleTestAfter, + handleTestBefore, +} from "./results/captureHooks"; +import { ModuleAPIResults } from "./results/moduleAPIResult"; +import { ConfigState, ExecutionState } from "./state"; + +const debug = Debug("currents:events"); + +export function stopListeningToEvents() { + allEvents.forEach((e) => getPubSub().removeAllListeners(e)); +} +export function listenToEvents( + configState: ConfigState, + executionState: ExecutionState, + experimentalCoverageRecording: boolean = false +) { + getPubSub().on( + Event.RUN_RESULT, + ({ + instanceId, + runResult, + specRelative, + }: { + specRelative: string; + instanceId: string; + runResult: CypressTypes.ModuleAPI.CompletedResult; + }) => { + // % save results + // writeDataToFile( + // JSON.stringify(runResult), + // getSpecShortName(specRelative), + // "runResult" + // ); + debug("%s %s: %o", Event.RUN_RESULT, instanceId, runResult); + executionState.setInstanceResult( + instanceId, + ModuleAPIResults.getStandardResult(runResult, executionState) + ); + } + ); + + getPubSub().on(Event.TEST_AFTER_RUN, (payload: string) => { + debug("%s %o", Event.TEST_AFTER_RUN, payload); + handleTestAfter(payload, executionState); + }); + + getPubSub().on(Event.TEST_BEFORE_RUN, (payload: string) => { + debug("%s %o", Event.TEST_BEFORE_RUN, payload); + handleTestBefore(payload, executionState); + }); + + getPubSub().on( + Event.AFTER_SCREENSHOT, + (screenshot: CypressTypes.EventPayload.ScreenshotAfter) => { + debug("%s %o", Event.AFTER_SCREENSHOT, screenshot); + handleScreenshotEvent(screenshot, executionState); + } + ); + + getPubSub().on( + Event.AFTER_SPEC, + async ({ + spec, + results, + }: { + spec: CypressTypes.EventPayload.SpecAfter.Spec; + results: CypressTypes.EventPayload.SpecAfter.Payload; + }) => { + await handleSpecAfter({ + spec, + results, + executionState, + configState, + experimentalCoverageRecording, + }); + } + ); +} diff --git a/packages/cypress-cloud/lib/log.ts b/packages/cypress-cloud/lib/log.ts index 6f0d6ac..14e7cb2 100644 --- a/packages/cypress-cloud/lib/log.ts +++ b/packages/cypress-cloud/lib/log.ts @@ -5,6 +5,7 @@ const log = (...args: unknown[]) => console.log(util.format(...args)); export const info = log; +export const format = util.format; export const withError = (msg: string) => chalk.bgRed.white(" ERROR ") + " " + msg; export const withWarning = (msg: string) => @@ -37,3 +38,4 @@ export const gray = chalk.gray; export const white = chalk.white; export const magenta = chalk.magenta; export const bold = chalk.bold; +export const dim = chalk.dim; diff --git a/packages/cypress-cloud/lib/nano.ts b/packages/cypress-cloud/lib/nano.ts new file mode 100644 index 0000000..3682097 --- /dev/null +++ b/packages/cypress-cloud/lib/nano.ts @@ -0,0 +1,3 @@ +import { customAlphabet } from "nanoid"; + +export const getRandomString = customAlphabet("abcdefghijklmnopqrstuvwxyz", 10); diff --git a/packages/cypress-cloud/lib/pubsub.ts b/packages/cypress-cloud/lib/pubsub.ts deleted file mode 100644 index a0872cd..0000000 --- a/packages/cypress-cloud/lib/pubsub.ts +++ /dev/null @@ -1,5 +0,0 @@ -import EventEmitter from "events"; -export enum Event { - RUN_CANCELLED = "runCancelled", -} -export const pubsub = new EventEmitter(); diff --git a/packages/cypress-cloud/lib/pubsub/events.ts b/packages/cypress-cloud/lib/pubsub/events.ts new file mode 100644 index 0000000..c995d49 --- /dev/null +++ b/packages/cypress-cloud/lib/pubsub/events.ts @@ -0,0 +1,9 @@ +export enum Event { + RUN_CANCELLED = "run:cancelled", + RUN_RESULT = "run:result", + TEST_AFTER_RUN = "test:after:run", + TEST_BEFORE_RUN = "test:before:run", + AFTER_SCREENSHOT = "after:screenshot", + AFTER_SPEC = "after:spec", +} +export const allEvents = Object.values(Event); diff --git a/packages/cypress-cloud/lib/pubsub/index.ts b/packages/cypress-cloud/lib/pubsub/index.ts new file mode 100644 index 0000000..00dbd5c --- /dev/null +++ b/packages/cypress-cloud/lib/pubsub/index.ts @@ -0,0 +1,2 @@ +export * from "./events"; +export * from "./pubsub"; diff --git a/packages/cypress-cloud/lib/pubsub/pubsub.ts b/packages/cypress-cloud/lib/pubsub/pubsub.ts new file mode 100644 index 0000000..38b15df --- /dev/null +++ b/packages/cypress-cloud/lib/pubsub/pubsub.ts @@ -0,0 +1,9 @@ +import EventEmitter from "events"; + +let _pubsub: EventEmitter | null = null; +export const getPubSub = () => { + if (!_pubsub) { + _pubsub = new EventEmitter(); + } + return _pubsub; +}; diff --git a/packages/cypress-cloud/lib/results/__tests__/mapResults.test.ts b/packages/cypress-cloud/lib/results/__tests__/mapResults.test.ts deleted file mode 100644 index b4e9a29..0000000 --- a/packages/cypress-cloud/lib/results/__tests__/mapResults.test.ts +++ /dev/null @@ -1,67 +0,0 @@ -import { - getInstanceResultPayload, - getInstanceTestsPayload, - getTestAttempt, -} from "../results"; -import configException from "./fixtures/payloads/cypressResult/exception/config.json"; -import rawResultException from "./fixtures/payloads/cypressResult/exception/results.json"; - -describe("exception in cypress result", () => { - xit("should populate instance tests payload when exception", () => { - expect( - getInstanceTestsPayload(rawResultException, configException) - ).toMatchObject({ - config: configException, - tests: [ - { - displayError: "Oops...we found an error preparing this test file:", - state: "failed", - hooks: [], - clientId: "r0", - body: "", - attempts: [ - getTestAttempt({ - state: "failed", - duration: 0, - error: { - name: "Error", - message: rawResultException.error.split("\n")[0], - stack: rawResultException.error, - }, - screenshots: [], - startedAt: rawResultException.stats.startedAt, - videoTimestamp: 0, - }), - ], - }, - ], - }); - }); - xit("should populate instances results payload when exception", () => { - expect(getInstanceResultPayload(rawResultException)).toMatchObject({ - tests: [ - { - displayError: "Oops...we found an error preparing this test file:", - state: "failed", - hooks: [], - clientId: "r0", - body: "", - attempts: [ - getTestAttempt({ - state: "failed", - duration: 0, - error: { - name: "Error", - message: rawResultException.error.split("\n")[0], - stack: rawResultException.error, - }, - screenshots: [], - startedAt: rawResultException.stats.startedAt, - videoTimestamp: 0, - }), - ], - }, - ], - }); - }); -}); diff --git a/packages/cypress-cloud/lib/results/__tests__/table.test.ts b/packages/cypress-cloud/lib/results/__tests__/table.test.ts index e672493..e3cb409 100644 --- a/packages/cypress-cloud/lib/results/__tests__/table.test.ts +++ b/packages/cypress-cloud/lib/results/__tests__/table.test.ts @@ -1,6 +1,6 @@ import { expect } from "@jest/globals"; import { MergedConfig } from "../../config"; -import { summarizeTestResults } from "../results"; +import { summarizeExecution } from "../summarize"; import { summaryTable } from "../table"; import commonPath from "./fixtures/payloads/cypressResult/no-exception/common-path"; import mixedResults from "./fixtures/payloads/cypressResult/no-exception/mixed"; @@ -11,7 +11,7 @@ describe("Table", () => { it("renders table with failed tests correctly", () => { const result = summaryTable( // @ts-ignore - summarizeTestResults(Object.values(singleFailed), {} as MergedConfig) + summarizeExecution(Object.values(singleFailed), {} as MergedConfig) ); expect(result).toMatchSnapshot(); @@ -20,7 +20,7 @@ describe("Table", () => { it("renders table with only successful tests correctly", () => { const result = summaryTable( // @ts-ignore - summarizeTestResults(Object.values(singlePassed), {} as MergedConfig) + summarizeExecution(Object.values(singlePassed), {} as MergedConfig) ); expect(result).toMatchSnapshot(); }); @@ -28,7 +28,7 @@ describe("Table", () => { it("renders table with mixed results ", () => { const result = summaryTable( // @ts-ignore - summarizeTestResults(Object.values(mixedResults), {} as MergedConfig) + summarizeExecution(Object.values(mixedResults), {} as MergedConfig) ); expect(result).toMatchSnapshot(); }); @@ -36,7 +36,7 @@ describe("Table", () => { it("renders common path stripped", () => { const result = summaryTable( // @ts-ignore - summarizeTestResults(Object.values(commonPath), {} as MergedConfig) + summarizeExecution(Object.values(commonPath), {} as MergedConfig) ); expect(result).toMatchSnapshot(); }); diff --git a/packages/cypress-cloud/lib/results/api.ts b/packages/cypress-cloud/lib/results/api.ts new file mode 100644 index 0000000..aaafa23 --- /dev/null +++ b/packages/cypress-cloud/lib/results/api.ts @@ -0,0 +1,109 @@ +import Debug from "debug"; +import { InstanceAPIPayload } from "../api"; + +import { Standard } from "../cypress.types"; +import { getRandomString } from "../nano"; +import { ConfigState } from "../state"; + +const debug = Debug("currents:results"); + +export const getInstanceResultPayload = ( + runResult: Standard.ModuleAPI.Run, + coverageFilePath?: string +): InstanceAPIPayload.UpdateInstanceResultsPayload => { + debug("generating instance result payload from %o", runResult); + return { + stats: StandardResultsToAPIResults.getStats(runResult.stats), + reporterStats: runResult.reporterStats, + exception: runResult.error ?? null, + video: !!runResult.video, // Did the instance generate a video? + screenshots: StandardResultsToAPIResults.getAllScreenshots(runResult), + hasCoverage: !!coverageFilePath, + tests: (runResult.tests ?? []).map( + StandardResultsToAPIResults.getTestForResults + ), + }; +}; + +export const getInstanceTestsPayload = ( + runResult: Standard.ModuleAPI.Run, + config: ConfigState +): InstanceAPIPayload.SetInstanceTestsPayload => { + return { + // @ts-ignore + config: { + ...config.getConfig(), + videoUploadOnPasses: config.getConfig()?.videoUploadOnPasses ?? false, + }, + tests: (runResult.tests ?? []).map( + StandardResultsToAPIResults.getTestForSetTests + ), + hooks: runResult.hooks, + }; +}; + +/** + * Map standard results to API result + */ +class StandardResultsToAPIResults { + static getTestAttempt( + attempt: Standard.ModuleAPI.TestAttempt + ): InstanceAPIPayload.TestAttempt { + return { + state: attempt.state, + error: attempt.error, + wallClockStartedAt: attempt.startedAt, + wallClockDuration: attempt.duration, + videoTimestamp: attempt.videoTimestamp, + }; + } + static getTestForResults( + test: Standard.ModuleAPI.Test, + index: number + ): InstanceAPIPayload.SetResultsTestsPayload { + return { + displayError: test.displayError, + state: test.state, + attempts: (test.attempts ?? []).map( + StandardResultsToAPIResults.getTestAttempt + ), + clientId: `r${index}`, + }; + } + + static getTestForSetTests( + test: Standard.ModuleAPI.Test, + index: number + ): InstanceAPIPayload.SetTestsPayload { + return { + body: "redacted", + title: test.title, + clientId: `r${index}`, + }; + } + static getAllScreenshots( + run: Standard.ModuleAPI.Run + ): InstanceAPIPayload.UpdateInstanceResultsPayload["screenshots"] { + return (run.tests ?? []).flatMap((t, i) => + t.attempts.flatMap((a, j) => + a.screenshots.map((s) => ({ + ...s, + testId: `r${i}`, + testAttemptIndex: j, + screenshotId: getRandomString(), + })) + ) + ); + } + + static getStats( + stats: Standard.ModuleAPI.Run["stats"] + ): InstanceAPIPayload.UpdateInstanceResultsPayload["stats"] { + return { + ...stats, + wallClockDuration: stats.duration, + wallClockStartedAt: stats.startedAt, + wallClockEndedAt: stats.endedAt, + }; + } +} diff --git a/packages/cypress-cloud/lib/results/captureHooks.ts b/packages/cypress-cloud/lib/results/captureHooks.ts new file mode 100644 index 0000000..4f49ee5 --- /dev/null +++ b/packages/cypress-cloud/lib/results/captureHooks.ts @@ -0,0 +1,101 @@ +import Debug from "debug"; +import { getCapturedOutput } from "../capture"; +import { getCoverageFilePath } from "../coverage"; +import { CypressTypes } from "../cypress.types"; +import { dim } from "../log"; +import { createReportTaskSpec } from "../runner"; +import { ConfigState, ExecutionState } from "../state"; +import { SpecAfterResult } from "./specAfterResult"; + +const debug = Debug("currents:events"); + +export function handleScreenshotEvent( + screenshot: CypressTypes.EventPayload.ScreenshotAfter, + executionState: ExecutionState +) { + const data = { + ...screenshot, + testId: executionState.getCurrentTestID(), + height: screenshot.dimensions.height, + width: screenshot.dimensions.width, + }; + // % save results + // writeDataToFile( + // JSON.stringify(data), + // `${screenshot.specName}`, + // `screenshot`, + // `_0${getScreenshotCount(screenshot.specName)}` + // ); + + executionState.addScreenshotsData(data); +} + +export function handleTestBefore( + testAttempt: string, + executionState: ExecutionState +) { + const parsed: CypressTypes.EventPayload.TestBefore = JSON.parse(testAttempt); + executionState.setCurrentTestID(parsed.id); +} + +export function handleTestAfter( + testAttempt: string, + executionState: ExecutionState +) { + const test: CypressTypes.EventPayload.TestAfter = JSON.parse(testAttempt); + + // % save results + // writeDataToFile( + // testAttempt, + // getTestHookSpecName(test), + // "testAfter", + // `_0${test.currentRetry}` + // ); + + executionState.addAttemptsData(test); +} + +export async function handleSpecAfter({ + executionState, + configState, + spec, + results, + experimentalCoverageRecording = false, +}: { + executionState: ExecutionState; + configState: ConfigState; + spec: CypressTypes.EventPayload.SpecAfter.Spec; + results: CypressTypes.EventPayload.SpecAfter.Payload; + experimentalCoverageRecording: boolean; +}) { + // % save results + // const s = getSpecShortName(spec.relative); + // writeDataToFile(JSON.stringify(results), s, "specAfter"); + + debug("after:spec %s %o", spec.relative, results); + executionState.setSpecAfter( + spec.relative, + SpecAfterResult.getSpecAfterStandard(results, executionState) + ); + executionState.setSpecOutput(spec.relative, getCapturedOutput()); + const config = configState.getConfig(); + + if (experimentalCoverageRecording) { + const config = configState.getConfig(); + + const { path, error } = await getCoverageFilePath( + config?.env?.coverageFile + ); + + if (!error) { + executionState.setSpecCoverage(spec.relative, path); + } else { + executionState.addWarning( + `Error reading coverage file "${path}". Coverage recording will be skipped.\n${dim( + error + )}` + ); + } + } + createReportTaskSpec(configState, executionState, spec.relative); +} diff --git a/packages/cypress-cloud/lib/results/empty.ts b/packages/cypress-cloud/lib/results/empty.ts new file mode 100644 index 0000000..1ae92a7 --- /dev/null +++ b/packages/cypress-cloud/lib/results/empty.ts @@ -0,0 +1,112 @@ +import { Standard } from "../cypress.types"; +import { ConfigState } from "../state"; + +export const emptyStats = { + totalDuration: 0, + totalSuites: 0, + totalPending: 0, + totalFailed: 0, + totalSkipped: 0, + totalPassed: 0, + totalTests: 0, +}; + +const getDummyFailedTest = ( + start: string, + error: string +): Standard.ModuleAPI.Test => ({ + title: ["Unknown"], + state: "failed", + body: "// This test is automatically generated due to execution failure", + displayError: error, + attempts: [ + { + state: "failed", + startedAt: start, + duration: 0, + videoTimestamp: 0, + screenshots: [], + error: { + name: "CypressExecutionError", + message: error, + stack: "", + codeFrame: null, + }, + }, + ], +}); + +export function getFailedFakeInstanceResult( + configState: ConfigState, + { + specs, + error, + }: { + specs: string[]; + error: string; + } +): Standard.ModuleAPI.CompletedResult { + const start = new Date().toISOString(); + const end = new Date().toISOString(); + return { + // @ts-ignore + config: configState.getConfig() ?? {}, + status: "finished", + startedTestsAt: new Date().toISOString(), + endedTestsAt: new Date().toISOString(), + totalDuration: 0, + totalSuites: 1, + totalFailed: 1, + totalPassed: 0, + totalPending: 0, + totalSkipped: 0, + totalTests: 1, + browserName: "unknown", + browserVersion: "unknown", + browserPath: "unknown", + osName: "unknown", + osVersion: "unknown", + cypressVersion: "unknown", + runs: specs.map((s) => ({ + stats: { + suites: 1, + tests: 1, + passes: 0, + pending: 0, + skipped: 0, + failures: 1, + startedAt: start, + endedAt: end, + duration: 0, + }, + reporter: "spec", + reporterStats: { + suites: 1, + tests: 1, + passes: 0, + pending: 0, + failures: 1, + start: start, + end: end, + duration: 0, + }, + hooks: [], + error, + video: null, + spec: { + name: s, + relative: s, + absolute: s, + relativeToCommonRoot: s, + baseName: s, + specType: "integration", + fileExtension: "js", + fileName: s, + specFileExtension: "js", + }, + tests: [getDummyFailedTest(start, error)], + shouldUploadVideo: false, + skippedSpec: false, + })), + }; +} diff --git a/packages/cypress-cloud/lib/results/index.ts b/packages/cypress-cloud/lib/results/index.ts index 1aba98f..dc84d06 100644 --- a/packages/cypress-cloud/lib/results/index.ts +++ b/packages/cypress-cloud/lib/results/index.ts @@ -1,3 +1,3 @@ -export * from "./results"; +export * from "./summarize"; export * from "./table"; export * from "./uploadResults"; diff --git a/packages/cypress-cloud/lib/results/mapResult.ts b/packages/cypress-cloud/lib/results/mapResult.ts index 0e4646f..7b26f35 100644 --- a/packages/cypress-cloud/lib/results/mapResult.ts +++ b/packages/cypress-cloud/lib/results/mapResult.ts @@ -1,123 +1,141 @@ -import { - CypressRun, - CypressScreenshot, - CypressTest, - CypressTestAttempt, -} from "cypress-cloud/types"; +/** + * Map Module API results to after:spec results + */ -import * as SpecAfter from "../runner/spec.type"; +import { Standard } from "../cypress.types"; import { ConfigState } from "../state"; -import { getFakeTestFromException } from "./results"; -function getScreenshot(s: SpecAfter.Screenshot): CypressScreenshot { - return { - ...s, - name: s.name ?? "screenshot", - }; -} +export class SpecAfterToModuleAPIMapper { + static getTestAttempt( + attempt: Standard.SpecAfter.TestAttempt, + screenshots: Standard.SpecAfter.Payload["screenshots"] + ): Standard.ModuleAPI.TestAttempt { + return { + ...attempt, + duration: attempt.wallClockDuration, + startedAt: attempt.wallClockStartedAt, + screenshots, + }; + } -function getTestAttempt( - attempt: SpecAfter.TestAttempt, - screenshots: SpecAfter.Screenshot[] -): CypressTestAttempt { - return { - ...attempt, - startedAt: attempt.wallClockStartedAt, - duration: attempt.wallClockDuration, - screenshots: screenshots.map(getScreenshot), - }; -} + static getTest( + t: Standard.SpecAfter.Test, + screenshots: Standard.SpecAfter.Payload["screenshots"] + ): Standard.ModuleAPI.Test { + return { + ...t, + attempts: t.attempts.map((a, i) => + SpecAfterToModuleAPIMapper.getTestAttempt( + a, + screenshots.filter( + (s) => s.testId === t.testId && s.testAttemptIndex === i + ) + ) + ), + }; + } -function getTest( - t: SpecAfter.Test, - screenshots: SpecAfter.Screenshot[] -): CypressTest { - const _screenshots = screenshots.filter((s) => s.testId === t.testId); - return { - ...t, - attempts: t.attempts.map((a, i) => - getTestAttempt( - a, - _screenshots.filter((s) => s.testAttemptIndex === i) - ) - ), - }; + static convert( + specAfterResult: Standard.SpecAfter.Payload, + configState: ConfigState + ): Standard.ModuleAPI.CompletedResult { + const stats = { + duration: specAfterResult.stats.wallClockDuration, + endedAt: specAfterResult.stats.wallClockEndedAt, + startedAt: specAfterResult.stats.wallClockStartedAt, + failures: specAfterResult.stats.failures ?? 0, + passes: specAfterResult.stats.passes ?? 0, + pending: specAfterResult.stats.pending ?? 0, + skipped: specAfterResult.stats.skipped ?? 0, + suites: specAfterResult.stats.suites ?? 0, + tests: specAfterResult.stats.tests ?? 0, + }; + return { + status: "finished", + // @ts-ignore + config: configState.getConfig(), + totalDuration: stats.duration, + totalSuites: stats.suites, + totalTests: stats.tests, + totalFailed: stats.failures, + totalPassed: stats.passes, + totalPending: stats.pending, + totalSkipped: stats.skipped ?? 0, + startedTestsAt: stats.startedAt, + endedTestsAt: stats.endedAt, + runs: [ + { + stats, + reporter: specAfterResult.reporter, + reporterStats: specAfterResult.reporterStats ?? null, + spec: specAfterResult.spec, + error: specAfterResult.error, + video: specAfterResult.video, + // @ts-ignore + shouldUploadVideo: true, // not really used + // @ts-ignore + // wrong typedef for CypressCommandLine.CypressRunResult + // actual HookName is "before all" | "before each" | "after all" | "after each" + hooks: specAfterResult.hooks, + tests: (specAfterResult.tests ?? []).map((t) => + SpecAfterToModuleAPIMapper.getTest(t, specAfterResult.screenshots) + ), + }, + ], + }; + } + + static backfillException( + result: Standard.ModuleAPI.CompletedResult + ): Standard.ModuleAPI.CompletedResult { + return { + ...result, + runs: result.runs.map(SpecAfterToModuleAPIMapper.backfillExceptionRun), + }; + } + + static backfillExceptionRun(run: Standard.ModuleAPI.Run) { + if (!run.error) { + return run; + } + + return { + ...run, + tests: [getFakeTestFromException(run.error, run.stats)], + }; + } } -export function specResultsToCypressResults( - configState: ConfigState, - specAfterResult: SpecAfter.SpecResult -): CypressCommandLine.CypressRunResult { - const stats = { - duration: - specAfterResult.stats.duration ?? - (specAfterResult.stats.wallClockDuration as number) ?? - 0, - endedAt: - specAfterResult.stats.endedAt ?? - specAfterResult.stats.wallClockEndedAt ?? - new Date().toISOString(), - startedAt: - specAfterResult.stats.startedAt ?? - specAfterResult.stats.wallClockStartedAt ?? - new Date().toISOString(), - failures: specAfterResult.stats.failures ?? 0, - passes: specAfterResult.stats.passes ?? 0, - pending: specAfterResult.stats.pending ?? 0, - skipped: specAfterResult.stats.skipped ?? 0, - suites: specAfterResult.stats.suites ?? 0, - tests: specAfterResult.stats.tests ?? 0, - }; +/** + * Generates a fake test item from an exception + * + * @param error + * @param stats + * @returns + */ +function getFakeTestFromException( + error: string, + stats: Standard.ModuleAPI.Run["stats"] +): Standard.ModuleAPI.Test { return { - status: "finished", - // @ts-ignore - config: configState.getConfig(), - totalDuration: stats.duration, - totalSuites: stats.suites, - totalTests: stats.tests, - totalFailed: stats.failures, - totalPassed: stats.passes, - totalPending: stats.pending, - totalSkipped: stats.skipped ?? 0, - startedTestsAt: stats.startedAt, - endedTestsAt: stats.endedAt, - runs: [ + title: ["Unknown"], + body: "", + displayError: error.split("\n")[0], + state: "failed", + attempts: [ { - stats, - reporter: specAfterResult.reporter, - reporterStats: specAfterResult.reporterStats ?? {}, - spec: specAfterResult.spec, - error: specAfterResult.error, - video: specAfterResult.video, - shouldUploadVideo: true, // not really used - // @ts-ignore - // wrong typedef for CypressCommandLine.CypressRunResult - // actual HookName is "before all" | "before each" | "after all" | "after each" - hooks: specAfterResult.hooks, - tests: (specAfterResult.tests ?? []).map((t) => - getTest(t, specAfterResult.screenshots) - ), + state: "failed", + duration: 0, + error: { + name: "Error", + message: error.split("\n")[0], + stack: error, + codeFrame: null, + }, + screenshots: [], + startedAt: stats.startedAt, + videoTimestamp: 0, }, ], }; } - -export const backfillException = ( - result: CypressCommandLine.CypressRunResult -) => { - return { - ...result, - runs: result.runs.map(backfillExceptionRun), - }; -}; - -const backfillExceptionRun = (run: CypressRun) => { - if (!run.error) { - return run; - } - - return { - ...run, - tests: [getFakeTestFromException(run.error, run.stats)], - }; -}; diff --git a/packages/cypress-cloud/lib/results/moduleAPIResult.ts b/packages/cypress-cloud/lib/results/moduleAPIResult.ts new file mode 100644 index 0000000..75f7f08 --- /dev/null +++ b/packages/cypress-cloud/lib/results/moduleAPIResult.ts @@ -0,0 +1,216 @@ +import { parseISO } from "date-fns"; +import { MergedConfig } from "../config"; +import { CypressTypes, Standard } from "../cypress.types"; +import { + ExecutionState, + ExecutionStateScreenshot, + ExecutionStateTestAttempt, +} from "../state"; + +import { SpecAfterResult } from "./specAfterResult"; + +export class ModuleAPIResults { + private static getRunScreenshots(run: CypressTypes.ModuleAPI.Run) { + if ("screenshots" in run) { + return run.screenshots; + } + return (run.tests ?? []).flatMap((t) => + t.attempts.flatMap((a) => a.screenshots) + ); + } + + private static getTests( + run: CypressTypes.ModuleAPI.Run, + executionState: ExecutionState + ) { + const tests = run.tests ?? []; + + return tests.map((test, i) => { + const mochaAttempts = executionState + .getAttemptsData() + .filter((attempt) => attempt.fullTitle === test.title.join(" ")); + + const testId = + "testId" in test ? test.testId : mochaAttempts[0]?.id ?? `r${i}`; + + const runScreenshotPaths = ModuleAPIResults.getRunScreenshots(run).map( + (i) => i.path + ); + const testScreenshots = executionState + .getScreenshotsData() + // spec screenshots + .filter((s) => runScreenshotPaths.includes(s.path)) + // test screenshots + .filter((s) => s.testId === testId); + + const standardAttempts = (test.attempts ?? []).map( + (cypressAttempt, j) => { + const mochaAttempt = mochaAttempts.find( + (ma) => ma.currentRetry === j + ); + const attemptScreenshots = testScreenshots.filter( + (t) => t.testAttemptIndex === j + ); + return ModuleAPIResults.getTestAttempt( + mochaAttempt ?? null, + cypressAttempt, + attemptScreenshots, + // run only has 1 spec + SpecAfterResult.getSpecStartedAt(run.stats) + ); + } + ); + + return { + body: "body" in test ? test.body : mochaAttempts[0]?.body ?? "", + testId, + title: test.title, + displayError: test.displayError, + state: test.state, + attempts: standardAttempts, + }; + }); + } + + /** + * Convert version-specific attempt to a standard test attempt + */ + static getTestAttempt( + mochaAttempt: ExecutionStateTestAttempt | null, + cypressAttempt: CypressTypes.ModuleAPI.TestAttempt, + screenshots: ExecutionStateScreenshot[], + specStartedAt: Date + ): Standard.ModuleAPI.TestAttempt { + if (!mochaAttempt) { + return { + state: cypressAttempt.state, + error: + "error" in cypressAttempt + ? cypressAttempt.error + : SpecAfterResult.getDummyTestAttemptError(cypressAttempt.state), + startedAt: + "startedAt" in cypressAttempt + ? cypressAttempt.startedAt + : new Date().toISOString(), + + duration: "duration" in cypressAttempt ? cypressAttempt.duration : 0, + videoTimestamp: + "videoTimestamp" in cypressAttempt + ? cypressAttempt.videoTimestamp + : 0, + screenshots: + "screenshots" in cypressAttempt + ? cypressAttempt.screenshots + : screenshots, + }; + } + + return { + state: cypressAttempt.state, + error: + "error" in cypressAttempt + ? cypressAttempt.error + : SpecAfterResult.getAttemptError(mochaAttempt.err), + + startedAt: + "startedAt" in cypressAttempt + ? cypressAttempt.startedAt + : mochaAttempt.wallClockStartedAt ?? new Date().toISOString(), + duration: + "duration" in cypressAttempt + ? cypressAttempt.duration + : mochaAttempt.duration ?? -1, + videoTimestamp: + "videoTimestamp" in cypressAttempt + ? cypressAttempt.videoTimestamp + : SpecAfterResult.getAttemptVideoTimestamp( + parseISO(mochaAttempt.wallClockStartedAt).getTime(), + specStartedAt.getTime() + ), + screenshots: + "screenshots" in cypressAttempt + ? cypressAttempt.screenshots + : screenshots, + }; + } + + static getRun( + run: CypressTypes.ModuleAPI.Run, + executionState: ExecutionState + ): Standard.ModuleAPI.Run { + return { + ...run, + tests: ModuleAPIResults.getTests(run, executionState), + spec: SpecAfterResult.getSpecStandard(run.spec), + // hooks: "hooks" in run ? run.hooks : [], + hooks: null, + shouldUploadVideo: + "shouldUploadVideo" in run ? run.shouldUploadVideo : true, + }; + } + + /** + * Converts different Cypress versions to standard form + */ + static getStandardResult( + result: CypressTypes.ModuleAPI.CompletedResult, + executionState: ExecutionState + ): Standard.ModuleAPI.CompletedResult { + if (result.runs.length !== 1) { + throw new Error("Expected single run"); + } + const run = result.runs[0]; + const stats = SpecAfterResult.getStatsStandard(run.stats); + + // standardize the result for singe spec + return { + ...result, + runs: [ModuleAPIResults.getRun(run, executionState)], + totalSuites: 1, + totalDuration: stats.wallClockDuration, + totalTests: stats.tests, + totalFailed: stats.failures, + totalPassed: stats.passes, + totalPending: stats.pending, + totalSkipped: stats.skipped, + startedTestsAt: stats.wallClockStartedAt, + endedTestsAt: stats.wallClockEndedAt, + status: "finished", + }; + } + + static isFailureResult( + result: CypressTypes.ModuleAPI.Result + ): result is CypressTypes.ModuleAPI.FailureResult { + return "status" in result && result.status === "failed"; + } + + static isSuccessResult = ( + result: CypressTypes.ModuleAPI.Result + ): result is CypressTypes.ModuleAPI.CompletedResult => { + if ("status" in result) { + return result.status === "finished"; + } + return true; + }; + + static getEmptyResult( + config: MergedConfig + ): Standard.ModuleAPI.CompletedResult { + return { + status: "finished", + totalDuration: 0, + totalSuites: 0, + totalPending: 0, + totalFailed: 0, + totalSkipped: 0, + totalPassed: 0, + totalTests: 0, + startedTestsAt: new Date().toISOString(), + endedTestsAt: new Date().toISOString(), + runs: [], + // @ts-ignore + config, + }; + } +} diff --git a/packages/cypress-cloud/lib/results/results.ts b/packages/cypress-cloud/lib/results/results.ts deleted file mode 100644 index 2c34fe0..0000000 --- a/packages/cypress-cloud/lib/results/results.ts +++ /dev/null @@ -1,309 +0,0 @@ -import { CypressResult, ScreenshotArtifact } from "cypress-cloud/types"; -import Debug from "debug"; -import _ from "lodash"; -import { nanoid } from "nanoid"; -import { - SetInstanceTestsPayload, - TestState, - UpdateInstanceResultsPayload, -} from "../api"; -import { MergedConfig } from "../config"; -import { ConfigState } from "../state"; - -const debug = Debug("currents:results"); - -export const isSuccessResult = ( - result: CypressResult -): result is CypressCommandLine.CypressRunResult => { - return result.status === "finished"; -}; - -export const getScreenshotsSummary = ( - tests: CypressCommandLine.TestResult[] = [] -): ScreenshotArtifact[] => { - return tests.flatMap((test, i) => - test.attempts.flatMap((a, ai) => - a.screenshots.flatMap((s) => ({ - ...s, - testId: `r${i}`, - testAttemptIndex: ai, - screenshotId: nanoid(), - })) - ) - ); -}; - -export const getStats = (stats: CypressCommandLine.RunResult["stats"]) => { - return { - ...stats, - wallClockDuration: stats.duration, - wallClockStartedAt: stats.startedAt, - wallClockEndedAt: stats.endedAt, - }; -}; - -export const getTestAttempt = (attempt: CypressCommandLine.AttemptResult) => { - return { - ...attempt, - state: attempt.state as TestState, - wallClockDuration: attempt.duration ?? 0, - wallClockStartedAt: attempt.startedAt, - }; -}; - -export const getInstanceResultPayload = ( - runResult: CypressCommandLine.RunResult, - coverageFilePath?: string -): UpdateInstanceResultsPayload => { - return { - stats: getStats(runResult.stats), - reporterStats: runResult.reporterStats, - exception: runResult.error ?? null, - video: !!runResult.video, // Did the instance generate a video? - screenshots: getScreenshotsSummary(runResult.tests ?? []), - hasCoverage: !!coverageFilePath, - tests: - runResult.tests?.map((test, i) => ({ - displayError: test.displayError, - state: test.state as TestState, - hooks: runResult.hooks ?? [], - attempts: test.attempts?.map(getTestAttempt) ?? [], - clientId: `r${i}`, - })) ?? [], - }; -}; - -export function getFakeTestFromException( - error: string, - stats: CypressCommandLine.RunResult["stats"] -) { - return { - title: ["Unknown"], - body: "", - displayError: error.split("\n")[0], - state: "failed", - hooks: [], - attempts: [ - getTestAttempt({ - state: "failed", - duration: 0, - error: { - name: "Error", - message: error.split("\n")[0], - stack: error, - }, - screenshots: [], - startedAt: stats.startedAt, - videoTimestamp: 0, - }), - ], - clientId: "r0", - }; -} - -export const getInstanceTestsPayload = ( - runResult: CypressCommandLine.RunResult, - config: Cypress.ResolvedConfigOptions -): SetInstanceTestsPayload => { - return { - config, - tests: - runResult.tests?.map((test, i) => ({ - title: test.title, - config: null, - body: test.body ?? "redacted", - clientId: `r${i}`, - hookIds: [], - })) ?? [], - hooks: runResult.hooks ?? [], - }; -}; - -export const summarizeTestResults = ( - input: CypressCommandLine.CypressRunResult[], - config: MergedConfig -): CypressCommandLine.CypressRunResult => { - if (!input.length) { - return getEmptyCypressResults(config); - } - - debugger; - const overall = input.reduce( - ( - acc, - { - totalDuration, - totalFailed, - totalPassed, - totalPending, - totalSkipped, - totalTests, - totalSuites, - } - ) => ({ - totalDuration: acc.totalDuration + totalDuration, - totalSuites: acc.totalSuites + totalSuites, - totalPending: acc.totalPending + totalPending, - totalFailed: acc.totalFailed + totalFailed, - totalSkipped: acc.totalSkipped + totalSkipped, - totalPassed: acc.totalPassed + totalPassed, - totalTests: acc.totalTests + totalTests, - }), - emptyStats - ); - const firstResult = input[0]; - const startItems = input.map((i) => i.startedTestsAt).sort(); - const endItems = input.map((i) => i.endedTestsAt).sort(); - const runs = input.map((i) => i.runs).flat(); - return { - ...overall, - runs, - startedTestsAt: _.first(startItems) as string, - endedTestsAt: _.last(endItems) as string, - ..._.pick( - firstResult, - "browserName", - "browserVersion", - "browserPath", - "osName", - "osVersion", - "cypressVersion", - "config" - ), - status: "finished", - }; -}; - -export function getEmptyCypressResults( - config: MergedConfig -): CypressCommandLine.CypressRunResult { - return { - ...emptyStats, - status: "finished", - startedTestsAt: new Date().toISOString(), - endedTestsAt: new Date().toISOString(), - runs: [], - // @ts-ignore - config, - }; -} -const emptyStats = { - totalDuration: 0, - totalSuites: 0, - totalPending: 0, - totalFailed: 0, - totalSkipped: 0, - totalPassed: 0, - totalTests: 0, -}; - -const getDummyFailedTest = (start: string, error: string) => ({ - title: ["Unknown"], - state: "failed", - body: "// This test is automatically generated due to execution failure", - displayError: error, - attempts: [ - { - state: "failed", - startedAt: start, - duration: 0, - videoTimestamp: 0, - screenshots: [], - error: { - name: "CypressExecutionError", - message: error, - stack: "", - }, - }, - ], -}); - -export function getFailedDummyResult( - configState: ConfigState, - { - specs, - error, - }: { - specs: string[]; - error: string; - } -): CypressCommandLine.CypressRunResult { - const start = new Date().toISOString(); - const end = new Date().toISOString(); - return { - // @ts-ignore - config: configState.getConfig() ?? {}, - status: "finished", - startedTestsAt: new Date().toISOString(), - endedTestsAt: new Date().toISOString(), - totalDuration: 0, - totalSuites: 1, - totalFailed: 1, - totalPassed: 0, - totalPending: 0, - totalSkipped: 0, - totalTests: 1, - browserName: "unknown", - browserVersion: "unknown", - browserPath: "unknown", - osName: "unknown", - osVersion: "unknown", - cypressVersion: "unknown", - runs: specs.map((s) => ({ - stats: { - suites: 1, - tests: 1, - passes: 0, - pending: 0, - skipped: 0, - failures: 1, - startedAt: start, - endedAt: end, - duration: 0, - }, - reporter: "spec", - reporterStats: {}, - hooks: [], - error, - video: null, - spec: { - name: s, - relative: s, - absolute: s, - relativeToCommonRoot: s, - }, - tests: [getDummyFailedTest(start, error)], - shouldUploadVideo: false, - skippedSpec: false, - })), - }; -} - -export function getCypressRunResultForSpec( - spec: string, - cypressResult: CypressResult -): CypressCommandLine.CypressRunResult | undefined { - if (!isSuccessResult(cypressResult)) { - return; - } - - const run = cypressResult.runs.find((r) => r.spec.relative === spec); - if (!run) { - return; - } - const stats = getStats(run.stats); - // adjust the result for singe spec - return { - ...cypressResult, - runs: [run], - totalSuites: 1, - totalDuration: stats.wallClockDuration, - totalTests: stats.tests, - totalFailed: stats.failures, - totalPassed: stats.passes, - totalPending: stats.pending, - totalSkipped: stats.skipped, - startedTestsAt: stats.wallClockStartedAt, - endedTestsAt: stats.wallClockEndedAt, - }; -} diff --git a/packages/cypress-cloud/lib/results/specAfterResult.ts b/packages/cypress-cloud/lib/results/specAfterResult.ts new file mode 100644 index 0000000..2b85bea --- /dev/null +++ b/packages/cypress-cloud/lib/results/specAfterResult.ts @@ -0,0 +1,280 @@ +/** + * Transforms cypress payloads from various versions to a single standard + */ + +import { parseISO } from "date-fns"; +import { match } from "ts-pattern"; +import { CypressTypes, Standard } from "../cypress.types"; +import { MochaError } from "../cypress.types/shared"; +import { warn } from "../log"; +import { getRandomString } from "../nano"; +import { ExecutionState, ExecutionStateTestAttempt } from "../state"; + +export class SpecAfterResult { + /** + * Combine standalone attempts and screenshots into standard result + * @param specResult - spec:after results + * @param executionState - ccy execution state + * @returns unified results, including attempts and screenshot details + */ + static getSpecAfterStandard( + specAfterResults: CypressTypes.EventPayload.SpecAfter.Payload, + executionState: ExecutionState + ) { + return { + error: specAfterResults.error, + // hooks: "hooks" in specAfterResults ? specAfterResults.hooks : null, + hooks: null, + reporter: specAfterResults.reporter, + reporterStats: specAfterResults.reporterStats, + spec: SpecAfterResult.getSpecStandard(specAfterResults.spec), + tests: SpecAfterResult.getTestStandard( + specAfterResults, + executionState.getAttemptsData() + ), + video: specAfterResults.video, + stats: SpecAfterResult.getStatsStandard(specAfterResults.stats), + screenshots: SpecAfterResult.getScreenshotsStandard( + specAfterResults.screenshots, + executionState.getScreenshotsData() + ), + }; + } + + static getAttemptError(err?: MochaError | null) { + if (!err) { + return null; + } + return { + name: err.name, + message: err.message, + stack: err.stack, + codeFrame: err.codeFrame, + }; + } + + static getAttemptVideoTimestamp( + attemptStartedAtMs: number, + specStartedAtMs: number + ) { + return Math.max(attemptStartedAtMs - specStartedAtMs, 0); + } + + static getSpecStartedAt( + stats: CypressTypes.EventPayload.SpecAfter.Payload["stats"] + ): Date { + if ("startedAt" in stats) { + return parseISO(stats.startedAt); + } + if ("wallClockStartedAt" in stats) { + return parseISO(stats.wallClockStartedAt); + } + + warn("Cannot determine spec start date from stats: %o", stats); + return new Date(); + } + + static getDummyTestAttemptError( + attemptState: "passed" | "skipped" | "pending" | "failed" + ) { + return match(attemptState) + .with("failed", () => ({ + name: "Error", + message: "[cypress-cloud] Could not get cypress attempt error details", + stack: "", + codeFrame: null, + })) + .with("skipped", () => ({ + name: "Error", + message: "The test was skipped because of a hook failure", + stack: "", + codeFrame: null, + })) + .otherwise(() => null); + } + + private static getTestAttemptStandard( + mochaAttempt: ExecutionStateTestAttempt | null, + cypressAttempt: CypressTypes.EventPayload.SpecAfter.TestAttempt, + specStartedAt: Date + ): Standard.SpecAfter.TestAttempt { + if (!mochaAttempt) { + const error = "error" in cypressAttempt ? cypressAttempt.error : null; + const duration = + "wallClockDuration" in cypressAttempt + ? cypressAttempt.wallClockDuration + : null; + return { + state: cypressAttempt.state, + error: error + ? error + : SpecAfterResult.getDummyTestAttemptError(cypressAttempt.state), + timings: "timings" in cypressAttempt ? cypressAttempt.timings : null, + wallClockStartedAt: + "wallClockStartedAt" in cypressAttempt + ? cypressAttempt.wallClockStartedAt + : new Date().toISOString(), + + wallClockDuration: duration ? duration : 0, + failedFromHookId: + "failedFromHookId" in cypressAttempt + ? cypressAttempt.failedFromHookId + : null, + videoTimestamp: + "videoTimestamp" in cypressAttempt + ? cypressAttempt.videoTimestamp + : 0, + }; + } + + return { + state: cypressAttempt.state, + error: + "error" in cypressAttempt + ? cypressAttempt.error + : SpecAfterResult.getAttemptError(mochaAttempt.err), + timings: + "timings" in cypressAttempt + ? cypressAttempt.timings + : mochaAttempt.timings, + wallClockStartedAt: + mochaAttempt.wallClockStartedAt ?? new Date().toISOString(), + wallClockDuration: mochaAttempt.duration ?? -1, + failedFromHookId: + "failedFromHookId" in cypressAttempt + ? cypressAttempt.failedFromHookId + : null, + videoTimestamp: + "videoTimestamp" in cypressAttempt + ? cypressAttempt.videoTimestamp + : SpecAfterResult.getAttemptVideoTimestamp( + parseISO(mochaAttempt.wallClockStartedAt).getTime(), + specStartedAt.getTime() + ), + }; + } + + private static getTestStandard( + specAfterResults: CypressTypes.EventPayload.SpecAfter.Payload, + attempts: ExecutionState["attemptsData"] + ) { + const standardTestList: Standard.SpecAfter.Payload["tests"] = ( + specAfterResults.tests ?? [] + ).map((test, i) => { + const mochaAttempts = attempts.filter( + (attempt) => attempt.fullTitle === test.title.join(" ") + ); + + const standardAttempts = (test.attempts ?? []).map( + (cypressAttempt, j) => { + const mochaAttempt = mochaAttempts.find( + (ma) => ma.currentRetry === j + ); + return SpecAfterResult.getTestAttemptStandard( + mochaAttempt ?? null, + cypressAttempt, + SpecAfterResult.getSpecStartedAt(specAfterResults.stats) + ); + } + ); + + return { + body: "body" in test ? test.body : mochaAttempts[0]?.body ?? "", + testId: + "testId" in test ? test.testId : mochaAttempts[0]?.id ?? `r${i}`, + title: test.title, + displayError: test.displayError, + state: test.state, + attempts: standardAttempts, + }; + }); + return standardTestList; + } + + static getSpecStandard( + spec: CypressTypes.EventPayload.SpecAfter.Spec + ): Standard.SpecAfter.Spec { + return { + name: spec.name, + relative: spec.relative, + absolute: spec.absolute, + fileExtension: spec.fileExtension, + baseName: "baseName" in spec ? spec.baseName : "", + fileName: "fileName" in spec ? spec.fileName : "", + relativeToCommonRoot: + "relativeToCommonRoot" in spec ? spec.relativeToCommonRoot : "", + specFileExtension: + "specFileExtension" in spec ? spec.specFileExtension : "", + specType: "specType" in spec ? spec.specType : "", + }; + } + + static getStatsStandard( + stats: CypressTypes.EventPayload.SpecAfter.Stats + ): Standard.SpecAfter.Stats { + const result = { + skipped: stats.skipped, + suites: stats.suites, + tests: stats.tests, + passes: stats.passes, + pending: stats.pending, + failures: stats.failures, + wallClockStartedAt: + "wallClockStartedAt" in stats + ? stats.wallClockStartedAt + : stats.startedAt, + wallClockEndedAt: + "wallClockEndedAt" in stats ? stats.wallClockEndedAt : stats.endedAt, + wallClockDuration: + "wallClockDuration" in stats + ? stats.wallClockDuration + : stats.duration ?? 0, + }; + + // fix wrong total for crashed runs - e.g. when cypress fails to compile + result.tests = + result.passes + result.failures + result.pending + result.skipped; + + return result; + } + + private static getScreenshotsStandard( + specAfterScreenshots: CypressTypes.EventPayload.SpecAfter.Payload["screenshots"], + screenshotEvents: ExecutionState["screenshotsData"] + ): Standard.SpecAfter.Payload["screenshots"] { + if (!specAfterScreenshots.length) { + return []; + } + + return specAfterScreenshots.map((specScreenshot) => { + const es = screenshotEvents.find( + (screenshot) => screenshot.path === specScreenshot.path + ); + if (!es) { + warn( + 'Could not find details for screenshot at path "%s", skipping...', + specScreenshot.path + ); + } + return { + height: specScreenshot.height, + width: specScreenshot.width, + name: specScreenshot.name ?? es?.name ?? null, + path: specScreenshot.path, + takenAt: specScreenshot.takenAt, + testAttemptIndex: + "testAttemptIndex" in specScreenshot + ? specScreenshot.testAttemptIndex + : es?.testAttemptIndex ?? -1, + testId: + "testId" in specScreenshot + ? specScreenshot.testId + : es?.testId ?? "unknown", + screenshotId: + "screenshotId" in specScreenshot + ? specScreenshot.screenshotId + : getRandomString(), + }; + }); + } +} diff --git a/packages/cypress-cloud/lib/results/summarize.ts b/packages/cypress-cloud/lib/results/summarize.ts new file mode 100644 index 0000000..c41992a --- /dev/null +++ b/packages/cypress-cloud/lib/results/summarize.ts @@ -0,0 +1,59 @@ +import _ from "lodash"; +import { MergedConfig } from "../config"; +import { Standard } from "../cypress.types"; +import { emptyStats } from "./empty"; +import { ModuleAPIResults } from "./moduleAPIResult"; + +export const summarizeExecution = ( + input: Standard.ModuleAPI.CompletedResult[], + config: MergedConfig +): Standard.ModuleAPI.CompletedResult => { + if (!input.length) { + return ModuleAPIResults.getEmptyResult(config); + } + + const overall = input.reduce( + ( + acc, + { + totalDuration, + totalFailed, + totalPassed, + totalPending, + totalSkipped, + totalTests, + totalSuites, + } + ) => ({ + totalDuration: acc.totalDuration + totalDuration, + totalSuites: acc.totalSuites + totalSuites, + totalPending: acc.totalPending + totalPending, + totalFailed: acc.totalFailed + totalFailed, + totalSkipped: acc.totalSkipped + totalSkipped, + totalPassed: acc.totalPassed + totalPassed, + totalTests: acc.totalTests + totalTests, + }), + emptyStats + ); + const firstResult = input[0]; + const startItems = input.map((i) => i.startedTestsAt).sort(); + const endItems = input.map((i) => i.endedTestsAt).sort(); + const runs = input.map((i) => i.runs).flat(); + return { + ...overall, + runs, + startedTestsAt: _.first(startItems) as string, + endedTestsAt: _.last(endItems) as string, + ..._.pick( + firstResult, + "browserName", + "browserVersion", + "browserPath", + "osName", + "osVersion", + "cypressVersion", + "config" + ), + status: "finished", + }; +}; diff --git a/packages/cypress-cloud/lib/results/table.ts b/packages/cypress-cloud/lib/results/table.ts index 855575f..6864a4b 100644 --- a/packages/cypress-cloud/lib/results/table.ts +++ b/packages/cypress-cloud/lib/results/table.ts @@ -1,12 +1,15 @@ +import getCommonPathPrefix from "common-path-prefix"; import _ from "lodash"; +import path from "path"; import prettyMS from "pretty-ms"; import { table } from "table"; +import { Standard } from "../cypress.types"; import { cyan, gray, green, red, white } from "../log"; const failureIcon = red("āœ–"); const successIcon = green("āœ”"); -export const summaryTable = (r: CypressCommandLine.CypressRunResult) => { +export const summaryTable = (r: Standard.ModuleAPI.CompletedResult) => { const overallSpecCount = r.runs.length; const failedSpecsCount = _.sum( r.runs.filter((v) => v.stats.failures + v.stats.skipped > 0).map(() => 1) @@ -19,10 +22,12 @@ export const summaryTable = (r: CypressCommandLine.CypressRunResult) => { ? "All specs passed!" : "No specs executed"; + const specs = r.runs.map((r) => r.spec.relative); + const commonPath = getCommonPath(specs); const data = r.runs.map((r) => [ r.stats.failures + r.stats.skipped > 0 ? failureIcon : successIcon, - r.spec.relativeToCommonRoot, - gray(prettyMS(r.stats.duration)), + stripCommonPath(r.spec.relative, commonPath), + gray(prettyMS(r.stats.duration ?? 0)), white(r.stats.tests ?? 0), r.stats.passes ? green(r.stats.passes) : gray("-"), r.stats.failures ? red(r.stats.failures) : gray("-"), @@ -108,3 +113,16 @@ const border = _.mapValues( }, (v) => gray(v) ); + +function getCommonPath(specs: string[]) { + if (specs.length === 0) { + return ""; + } + if (specs.length === 1) { + return path.dirname(specs[0]) + path.sep; + } + return getCommonPathPrefix(specs); +} +function stripCommonPath(spec: string, commonPath: string) { + return spec.replace(commonPath, ""); +} diff --git a/packages/cypress-cloud/lib/results/uploadResults.ts b/packages/cypress-cloud/lib/results/uploadResults.ts index 65955d7..c995a8c 100644 --- a/packages/cypress-cloud/lib/results/uploadResults.ts +++ b/packages/cypress-cloud/lib/results/uploadResults.ts @@ -1,30 +1,44 @@ import Debug from "debug"; import { + InstanceAPIPayload, reportInstanceResultsMerged, setInstanceTests, - SetInstanceTestsPayload, updateInstanceResults, - UpdateInstanceResultsPayload, } from "../api"; import { uploadArtifacts, uploadStdoutSafe } from "../artifacts"; import { setCancellationReason } from "../cancellation"; import { getInitialOutput } from "../capture"; import { isCurrents } from "../env"; -import { getInstanceResultPayload, getInstanceTestsPayload } from "./results"; +import { ConfigState, ExecutionState } from "../state"; +import { getInstanceResultPayload, getInstanceTestsPayload } from "./api"; + const debug = Debug("currents:results"); export async function getReportResultsTask( instanceId: string, - results: CypressCommandLine.CypressRunResult, + executionState: ExecutionState, + configState: ConfigState, stdout: string, coverageFilePath?: string ) { + const results = executionState.getInstanceResults(configState, instanceId); const run = results.runs[0]; if (!run) { throw new Error("No run found in Cypress results"); } const instanceResults = getInstanceResultPayload(run, coverageFilePath); - const instanceTests = getInstanceTestsPayload(run, results.config); + const instanceTests = getInstanceTestsPayload(run, configState); + + // % save results + // writeDataToFile( + // JSON.stringify({ + // tests: instanceTests, + // results: instanceResults, + // }), + // getSpecShortName(results.runs[0].spec.relative), + // "apiCall" + // ); + const { videoUploadUrl, screenshotUploadUrls, coverageUploadUrl, cloud } = await reportResults(instanceId, instanceTests, instanceResults); @@ -41,6 +55,7 @@ export async function getReportResultsTask( return Promise.all([ uploadArtifacts({ + executionState, videoUploadUrl, videoPath: run.video, screenshotUploadUrls, @@ -54,8 +69,8 @@ export async function getReportResultsTask( async function reportResults( instanceId: string, - instanceTests: SetInstanceTestsPayload, - instanceResults: UpdateInstanceResultsPayload + instanceTests: InstanceAPIPayload.SetInstanceTestsPayload, + instanceResults: InstanceAPIPayload.UpdateInstanceResultsPayload ) { debug("reporting instance %s results...", instanceId); if (isCurrents()) { diff --git a/packages/cypress-cloud/lib/run.ts b/packages/cypress-cloud/lib/run.ts index 582d4f9..63e28a2 100644 --- a/packages/cypress-cloud/lib/run.ts +++ b/packages/cypress-cloud/lib/run.ts @@ -4,7 +4,7 @@ import Debug from "debug"; import { getLegalNotice } from "../legal"; import { CurrentsRunParameters } from "../types"; import { createRun } from "./api"; -import { cutInitialOutput, getCapturedOutput } from "./capture"; +import { cutInitialOutput } from "./capture"; import { getCI } from "./ciProvider"; import { getMergedConfig, @@ -12,24 +12,21 @@ import { preprocessParams, validateParams, } from "./config"; -import { getCoverageFilePath } from "./coverage"; import { runBareCypress } from "./cypress"; import { activateDebug } from "./debug"; import { isCurrents } from "./env"; import { getGitInfo } from "./git"; -import { setAPIBaseUrl, setRunId } from "./httpClient"; +import { setAPIBaseUrl } from "./httpClient"; +import { listenToEvents } from "./listener"; import { bold, divider, info, spacer, title } from "./log"; import { getPlatform } from "./platform"; -import { pubsub } from "./pubsub"; -import { summarizeTestResults, summaryTable } from "./results"; -import { - createReportTaskSpec, - reportTasks, - runTillDoneOrCancelled, -} from "./runner"; +import { summarizeExecution, summaryTable } from "./results"; +import { reportTasks, runTillDoneOrCancelled } from "./runner"; import { shutdown } from "./shutdown"; import { getSpecFiles } from "./specMatcher"; import { ConfigState, ExecutionState } from "./state"; +import { setRunId } from "./state/global"; +import { printWarnings } from "./warnings"; import { startWSS } from "./ws"; const debug = Debug("currents:run"); @@ -37,7 +34,9 @@ const debug = Debug("currents:run"); export async function run(params: CurrentsRunParameters = {}) { const executionState = new ExecutionState(); const configState = new ConfigState(); + activateDebug(params.cloudDebug); + debug("run params %o", params); params = preprocessParams(params); debug("params after preprocess %o", params); @@ -115,7 +114,7 @@ export async function run(params: CurrentsRunParameters = {}) { cutInitialOutput(); await startWSS(); - listenToSpecEvents( + listenToEvents( configState, executionState, config.experimentalCoverageRecording @@ -137,58 +136,24 @@ export async function run(params: CurrentsRunParameters = {}) { divider(); await Promise.allSettled(reportTasks); - const _summary = summarizeTestResults( + const _summary = summarizeExecution( executionState.getResults(configState), config ); title("white", "Cloud Run Finished"); console.log(summaryTable(_summary)); - info("šŸ Recorded Run:", bold(run.runUrl)); - await shutdown(); + printWarnings(executionState); - spacer(); - if (_summary.status === "finished") { - return { - ..._summary, - runUrl: run.runUrl, - }; - } + info("\nšŸ Recorded Run:", bold(run.runUrl)); - return _summary; -} + await shutdown(); -function listenToSpecEvents( - configState: ConfigState, - executionState: ExecutionState, - experimentalCoverageRecording?: boolean -) { - const config = configState.getConfig(); - pubsub.on("test:after:run", async (test: any) => { - console.log("test:after:run"); - console.log(test); - }); - pubsub.on("before:spec", async ({ spec }: { spec: Cypress.Spec }) => { - debug("before:spec %o", spec); - executionState.setSpecBefore(spec.relative); - }); + spacer(); - pubsub.on( - "after:spec", - async ({ spec, results }: { spec: Cypress.Spec; results: any }) => { - debug("after:spec %o %o", spec, results); - executionState.setSpecAfter(spec.relative, results); - executionState.setSpecOutput(spec.relative, getCapturedOutput()); - if (experimentalCoverageRecording) { - const coverageFilePath = await getCoverageFilePath( - config?.env?.coverageFile - ); - if (coverageFilePath) { - executionState.setSpecCoverage(spec.relative, coverageFilePath); - } - } - createReportTaskSpec(configState, executionState, spec.relative); - } - ); + return { + ..._summary, + runUrl: run.runUrl, + }; } diff --git a/packages/cypress-cloud/lib/runner/__tests__/cancellable.test.ts b/packages/cypress-cloud/lib/runner/__tests__/cancellable.test.ts index 2f8661e..14ad702 100644 --- a/packages/cypress-cloud/lib/runner/__tests__/cancellable.test.ts +++ b/packages/cypress-cloud/lib/runner/__tests__/cancellable.test.ts @@ -1,6 +1,6 @@ import { describe, expect, it } from "@jest/globals"; import { warn } from "cypress-cloud/lib/log"; -import { Event, pubsub } from "cypress-cloud/lib/pubsub"; +import { Event, getPubSub } from "cypress-cloud/lib/pubsub"; import { random } from "lodash"; import { runTillDoneOrCancelled } from "../cancellable"; import { runTillDone } from "../runner"; @@ -31,7 +31,7 @@ describe("runTillDoneOrCancelled", () => { await runTillDoneOrCancelled({}); expect(runTillDone).toHaveBeenCalled(); expect(result).toEqual(_result); - expect(pubsub.listeners(Event.RUN_CANCELLED)).toHaveLength(0); + expect(getPubSub().listeners(Event.RUN_CANCELLED)).toHaveLength(0); }); it("rejects when runTillDone rejects", async () => { @@ -41,7 +41,7 @@ describe("runTillDoneOrCancelled", () => { // @ts-expect-error await expect(runTillDoneOrCancelled()).rejects.toThrow(); await new Promise((resolve) => setTimeout(resolve, 100)); - expect(pubsub.listeners(Event.RUN_CANCELLED)).toHaveLength(0); + expect(getPubSub().listeners(Event.RUN_CANCELLED)).toHaveLength(0); }); it("cancels the run when the RUN_CANCELLED event is emitted", async () => { @@ -58,13 +58,13 @@ describe("runTillDoneOrCancelled", () => { // schedule firing the event setTimeout(() => { - pubsub.emit(Event.RUN_CANCELLED, cancelReason); + getPubSub().emit(Event.RUN_CANCELLED, cancelReason); }, 100); // @ts-expect-error await runTillDoneOrCancelled(); expect(runTillDone).toHaveBeenCalled(); expect(warn).toHaveBeenCalledWith(expect.any(String), cancelReason); - expect(pubsub.listeners(Event.RUN_CANCELLED)).toHaveLength(0); + expect(getPubSub().listeners(Event.RUN_CANCELLED)).toHaveLength(0); }); }); diff --git a/packages/cypress-cloud/lib/runner/cancellable.ts b/packages/cypress-cloud/lib/runner/cancellable.ts index 608f668..825eb91 100644 --- a/packages/cypress-cloud/lib/runner/cancellable.ts +++ b/packages/cypress-cloud/lib/runner/cancellable.ts @@ -1,6 +1,6 @@ import { BPromise } from "../lang"; import { warn } from "../log"; -import { Event, pubsub } from "../pubsub"; +import { Event, getPubSub } from "../pubsub"; import { runTillDone } from "./runner"; let cancellable: { @@ -36,8 +36,8 @@ export async function runTillDoneOrCancelled( ); }); - pubsub.addListener(Event.RUN_CANCELLED, onRunCancelled); + getPubSub().addListener(Event.RUN_CANCELLED, onRunCancelled); }).finally(() => { - pubsub.removeListener(Event.RUN_CANCELLED, onRunCancelled); + getPubSub().removeListener(Event.RUN_CANCELLED, onRunCancelled); }); } diff --git a/packages/cypress-cloud/lib/runner/reportTask.ts b/packages/cypress-cloud/lib/runner/reportTask.ts index 5f7dcc0..3c842dc 100644 --- a/packages/cypress-cloud/lib/runner/reportTask.ts +++ b/packages/cypress-cloud/lib/runner/reportTask.ts @@ -29,7 +29,8 @@ export const createReportTask = ( reportTasks.push( getReportResultsTask( instanceId, - executionState.getInstanceResults(configState, instanceId), + executionState, + configState, instance.output ?? "no output captured", instance.coverageFilePath ).catch(error) diff --git a/packages/cypress-cloud/lib/runner/runner.ts b/packages/cypress-cloud/lib/runner/runner.ts index 3025107..e028dfa 100644 --- a/packages/cypress-cloud/lib/runner/runner.ts +++ b/packages/cypress-cloud/lib/runner/runner.ts @@ -4,19 +4,20 @@ import { } from "cypress-cloud/types"; import { getCapturedOutput, resetCapture } from "../capture"; -import { getCypressRunResultForSpec } from "../results"; +import { ModuleAPIResults } from "../results/moduleAPIResult"; import Debug from "debug"; import { + InstanceAPIPayload, createBatchedInstances, createInstance, - CreateInstancePayload, - InstanceResponseSpecDetails, } from "../api"; import { runSpecFileSafe } from "../cypress"; +import { CypressTypes } from "../cypress.types"; import { isCurrents } from "../env"; import { divider, info, title, warn } from "../log"; +import { Event, getPubSub } from "../pubsub"; import { ConfigState, ExecutionState } from "../state"; import { createReportTask, reportTasks } from "./reportTask"; @@ -31,7 +32,7 @@ export async function runTillDone( machineId, platform, specs: allSpecs, - }: CreateInstancePayload & { + }: InstanceAPIPayload.CreateInstancePayload & { specs: SpecWithRelativeRoot[]; }, params: ValidatedCurrentsParameters @@ -72,14 +73,14 @@ async function runBatch( runId: string; groupId: string; machineId: string; - platform: CreateInstancePayload["platform"]; + platform: InstanceAPIPayload.CreateInstancePayload["platform"]; }; allSpecs: SpecWithRelativeRoot[]; params: ValidatedCurrentsParameters; } ) { let batch = { - specs: [] as InstanceResponseSpecDetails[], + specs: [] as InstanceAPIPayload.InstanceResponseSpecDetails[], claimedInstances: 0, totalInstances: 0, }; @@ -135,7 +136,7 @@ async function runBatch( batch.totalInstances ); - const rawResult = await runSpecFileSafe( + const batchedResult = await runSpecFileSafe( { // use absolute paths - user can run the program from a different directory, e.g. nx or a monorepo workspace // cypress still report the path relative to the project root @@ -150,18 +151,19 @@ async function runBatch( const output = getCapturedOutput(); - // %state batch.specs.forEach((spec) => { executionState.setInstanceOutput(spec.instanceId, output); - const specRunResult = getCypressRunResultForSpec(spec.spec, rawResult); - if (!specRunResult) { + + const singleSpecResult = getSingleSpecRunResult(spec.spec, batchedResult); + if (!singleSpecResult) { return; } - executionState.setInstanceResult( - configState, - spec.instanceId, - specRunResult - ); + + getPubSub().emit(Event.RUN_RESULT, { + specRelative: spec.spec, + instanceId: spec.instanceId, + runResult: singleSpecResult, + }); }); resetCapture(); @@ -169,6 +171,27 @@ async function runBatch( return batch.specs; } +function getSingleSpecRunResult( + specRelative: string, + batchedResult: CypressTypes.ModuleAPI.Result +): CypressTypes.ModuleAPI.CompletedResult | undefined { + if (!ModuleAPIResults.isSuccessResult(batchedResult)) { + // TODO: return dummy result for missing spec results? + return; + } + + const run = batchedResult.runs.find((r) => r.spec.relative === specRelative); + if (!run) { + return; + } + + return { + ...batchedResult, + // @ts-ignore + runs: [run], + }; +} + function getSpecAbsolutePath( allSpecs: SpecWithRelativeRoot[], relative: string diff --git a/packages/cypress-cloud/lib/runner/spec.type.ts b/packages/cypress-cloud/lib/runner/spec.type.ts deleted file mode 100644 index 2d9d617..0000000 --- a/packages/cypress-cloud/lib/runner/spec.type.ts +++ /dev/null @@ -1,137 +0,0 @@ -// as reported by spec:after -export interface SpecResult { - error: string | null; - exception: null | string; - hooks: TestHook[] | null; - reporter: string; - reporterStats: ReporterStats | null; - screenshots: Screenshot[]; - spec: Spec; - stats: Stats; - tests: Test[] | null; - video: string | null; -} - -export interface Spec { - absolute: string; - baseName: string; - fileExtension: string; - fileName: string; - name: string; - relative: string; - relativeToCommonRoot: string; - specFileExtension: string; - specType: string; -} - -export interface Screenshot { - height: number; - name: string | null; - path: string; - screenshotId: string; - takenAt: string; - testAttemptIndex: number; - testId: string; - width: number; -} - -export interface ReporterStats { - suites: number; - tests: number; - passes: number; - pending: number; - failures: number; - start: string; - end: string; - duration: number; -} - -export interface Stats { - suites: number; - tests: number; - passes: number; - pending: number; - skipped: number; - failures: number; - wallClockStartedAt: string; - wallClockEndedAt: string; - wallClockDuration: number; - duration: string; - startedAt: string; - endedAt: number; -} - -export interface Test { - attempts: TestAttempt[]; - body: string; - displayError: string | null; - state: TestState; - title: string[]; - config?: null | TestConfig; - hookIds: string[]; - hooks: TestHook[] | null; - testId: string; -} - -export interface TestHook { - hookId: string; - hookName: "before each" | "after each" | "before all" | "after all"; - title: string[]; - body: string; -} - -interface TestConfig { - retries: - | { - openMode: number; - runMode: number; - } - | number; -} - -export enum TestState { - Failed = "failed", - Passed = "passed", - Pending = "pending", - Skipped = "skipped", -} - -export interface TestAttempt { - error: TestError | null; - failedFromHookId: string | null; - state: TestState; - timings: TestAttemptTiming | null; - videoTimestamp: number; - wallClockDuration: number; - wallClockStartedAt: string; -} - -export type TestError = CypressCommandLine.TestError & { - codeFrame?: TestCodeFrame | null; -}; - -interface TestCodeFrame { - line: number | null; - column: number | null; - originalFile: string | null; - relativeFile: string | null; - absoluteFile: string | null; - frame: string | null; - language: string | null; -} - -export type TestAttemptTiming = { - [key in HookTimingKeys]: HookTiming; -} & { - lifecycle: number; - test: TimingItem; -}; - -type HookTimingKeys = "before each" | "after each"; -export interface HookTiming extends TimingItem { - hookId: string; -} -export interface TimingItem { - fnDuration: number; - afterFnDuration: number; -} diff --git a/packages/cypress-cloud/lib/state/execution.ts b/packages/cypress-cloud/lib/state/execution.ts index 50a8a08..96ce721 100644 --- a/packages/cypress-cloud/lib/state/execution.ts +++ b/packages/cypress-cloud/lib/state/execution.ts @@ -1,13 +1,10 @@ import { InstanceId } from "cypress-cloud/types"; import { error, warn } from "../log"; -import { getFailedDummyResult } from "../results"; -import { - backfillException, - specResultsToCypressResults, -} from "../results/mapResult"; -import { SpecResult } from "../runner/spec.type"; +import { getFailedFakeInstanceResult } from "../results/empty"; +import { SpecAfterToModuleAPIMapper } from "../results/mapResult"; import Debug from "debug"; +import { CypressTypes, Standard } from "../cypress.types"; import { ConfigState } from "./config"; const debug = Debug("currents:state"); @@ -17,18 +14,41 @@ type InstanceExecutionState = { output?: string; specBefore?: Date; createdAt: Date; - runResults?: CypressCommandLine.CypressRunResult; + runResults?: Standard.ModuleAPI.CompletedResult; runResultsReportedAt?: Date; specAfter?: Date; - specAfterResults?: SpecResult; + specAfterResults?: Standard.SpecAfter.Payload; reportStartedAt?: Date; coverageFilePath?: string; }; +export type ExecutionStateScreenshot = + CypressTypes.EventPayload.ScreenshotAfter & { + testId?: string; + testAttemptIndex: number; + width: number; + height: number; + }; +export type ExecutionStateTestAttempt = CypressTypes.EventPayload.TestAfter; + export class ExecutionState { + private warnings: Set = new Set(); + private attemptsData: ExecutionStateTestAttempt[] = []; + private screenshotsData: ExecutionStateScreenshot[] = []; + private currentTestID?: string; private state: Record = {}; - public getResults(configState: ConfigState) { + public getWarnings() { + return this.warnings; + } + + public addWarning(warning: string) { + this.warnings.add(warning); + } + + public getResults( + configState: ConfigState + ): Standard.ModuleAPI.CompletedResult[] { return Object.values(this.state).map((i) => this.getInstanceResults(configState, i.instanceId) ); @@ -78,7 +98,7 @@ export class ExecutionState { i.coverageFilePath = coverageFilePath; } - public setSpecAfter(spec: string, results: SpecResult) { + public setSpecAfter(spec: string, results: Standard.SpecAfter.Payload) { const i = this.getSpec(spec); if (!i) { warn('Cannot find execution state for spec "%s"', spec); @@ -111,49 +131,77 @@ export class ExecutionState { } public setInstanceResult( - configState: ConfigState, instanceId: string, - results: CypressCommandLine.CypressRunResult + runResults: Standard.ModuleAPI.CompletedResult ) { const i = this.state[instanceId]; if (!i) { warn('Cannot find execution state for instance "%s"', instanceId); return; } - i.runResults = results; + i.runResults = { + ...runResults, + status: "finished", + }; i.runResultsReportedAt = new Date(); } public getInstanceResults( configState: ConfigState, instanceId: string - ): CypressCommandLine.CypressRunResult { + ): Standard.ModuleAPI.CompletedResult { const i = this.getInstance(instanceId); if (!i) { error('Cannot find execution state for instance "%s"', instanceId); - return getFailedDummyResult(configState, { + return getFailedFakeInstanceResult(configState, { specs: ["unknown"], - error: "Cannot find execution state for instance", + error: `[currents] Error while processing cypress results for instance ${instanceId}. See the console output for details.`, }); } // use spec:after results - it can become available before run results if (i.specAfterResults) { - return backfillException( - specResultsToCypressResults(configState, i.specAfterResults) + debug('Using spec:after results for %s "%s"', instanceId, i.spec); + return SpecAfterToModuleAPIMapper.backfillException( + SpecAfterToModuleAPIMapper.convert(i.specAfterResults, configState) ); } if (i.runResults) { - return backfillException(i.runResults); + debug('Using runResults for %s "%s"', instanceId, i.spec); + return SpecAfterToModuleAPIMapper.backfillException(i.runResults); } debug('No results detected for "%s"', i.spec); - return getFailedDummyResult(configState, { + return getFailedFakeInstanceResult(configState, { specs: [i.spec], error: `No results detected for the spec file. That usually happens because of cypress crash. See the console output for details.`, }); } + + public addAttemptsData(attemptDetails: CypressTypes.EventPayload.TestAfter) { + this.attemptsData.push(attemptDetails); + } + + public getAttemptsData() { + return this.attemptsData; + } + + public addScreenshotsData(screenshotsData: ExecutionStateScreenshot) { + this.screenshotsData.push(screenshotsData); + } + + public getScreenshotsData() { + return this.screenshotsData; + } + + public setCurrentTestID(testID: string) { + this.currentTestID = testID; + } + + public getCurrentTestID() { + return this.currentTestID; + } } diff --git a/packages/cypress-cloud/lib/state/global.ts b/packages/cypress-cloud/lib/state/global.ts new file mode 100644 index 0000000..712f9da --- /dev/null +++ b/packages/cypress-cloud/lib/state/global.ts @@ -0,0 +1,14 @@ +export let _runId: string | undefined = undefined; +export const setRunId = (runId: string) => { + _runId = runId; +}; + +export let _cypressVersion: string | undefined = undefined; +export const setCypressVersion = (cypressVersion: string) => { + _cypressVersion = cypressVersion; +}; + +export let _currentsVersion: string | undefined = undefined; +export const setCurrentsVersion = (v: string) => { + _currentsVersion = v; +}; diff --git a/packages/cypress-cloud/lib/warnings.ts b/packages/cypress-cloud/lib/warnings.ts new file mode 100644 index 0000000..c243d31 --- /dev/null +++ b/packages/cypress-cloud/lib/warnings.ts @@ -0,0 +1,20 @@ +import chalk from "chalk"; +import plur from "plur"; +import { warn } from "./log"; +import { ExecutionState } from "./state"; + +export function printWarnings(executionState: ExecutionState) { + const warnings = Array.from(executionState.getWarnings()); + if (warnings.length > 0) { + warn( + `${warnings.length} ${plur( + "Warning", + warnings.length + )} encountered during the execution:\n${warnings + .map( + (w, i) => `\n${chalk.yellow(`[${i + 1}/${warnings.length}]`)} ${w}` + ) + .join("\n")}` + ); + } +} diff --git a/packages/cypress-cloud/lib/ws/ws.ts b/packages/cypress-cloud/lib/ws/ws.ts index e8a9ef7..4d609ac 100644 --- a/packages/cypress-cloud/lib/ws/ws.ts +++ b/packages/cypress-cloud/lib/ws/ws.ts @@ -4,7 +4,7 @@ import http from "http"; import HttpTerminator from "lil-http-terminator"; import { match, P } from "ts-pattern"; import * as WebSocket from "ws"; -import { pubsub } from "../pubsub"; +import { getPubSub } from "../pubsub"; const debug = Debug("currents:ws"); @@ -48,7 +48,7 @@ export const startWSS = () => { wss.on("connection", function connection(ws) { ws.on("message", function incoming(event) { const message = JSON.parse(event.toString()); - pubsub.emit(message.type, message.payload); + getPubSub().emit(message.type, message.payload); }); }); }) diff --git a/packages/cypress-cloud/package.json b/packages/cypress-cloud/package.json index a50474b..22f8d09 100644 --- a/packages/cypress-cloud/package.json +++ b/packages/cypress-cloud/package.json @@ -1,6 +1,6 @@ { "name": "cypress-cloud", - "version": "1.10.0-beta.0", + "version": "1.10.0-beta.5", "main": "./dist/index.js", "author": "Currents Software Inc", "homepage": "https://github.com/currents-dev/cypress-cloud", @@ -31,8 +31,8 @@ }, "devDependencies": { "@release-it/conventional-changelog": "^7.0.0", - "@swc/core": "^1.3.23", - "@swc/jest": "^0.2.24", + "@swc/core": "^1.3.86", + "@swc/jest": "^0.2.29", "@types/bluebird": "^3.5.38", "@types/debug": "^4.1.7", "@types/getos": "^3.0.1", @@ -40,7 +40,7 @@ "@types/jest": "^29.2.4", "@types/lodash": "^4.14.191", "@types/ws": "^8.5.4", - "cypress": "^13.0.0", + "cypress": "^13.2.0", "esbuild": "^0.16.5", "eslint": "^7.32.0", "eslint-config-custom": "latest", @@ -61,6 +61,7 @@ "commander": "^10.0.0", "common-path-prefix": "^3.0.0", "cy2": "^3.4.2", + "date-fns": "^2.30.0", "debug": "^4.3.4", "execa": "^5.1.1", "fast-safe-stringify": "^2.1.1", @@ -70,6 +71,7 @@ "lil-http-terminator": "^1.2.3", "lodash": "^4.17.21", "nanoid": "^3.3.4", + "plur": "^4.0.0", "pretty-ms": "^7.0.1", "source-map-support": "^0.5.21", "table": "^6.8.1", diff --git a/packages/cypress-cloud/plugin/index.ts b/packages/cypress-cloud/plugin/index.ts index 0b0d264..776d0d2 100644 --- a/packages/cypress-cloud/plugin/index.ts +++ b/packages/cypress-cloud/plugin/index.ts @@ -3,6 +3,7 @@ import fs from "fs"; import { format } from "util"; import WebSocket from "ws"; +import { Event } from "../lib/pubsub"; export async function cloudPlugin( on: Cypress.PluginEvents, @@ -15,7 +16,10 @@ export async function cloudPlugin( } on("after:screenshot", (details) => { - console.log("screenshot", details); + sendToWS({ + type: Event.AFTER_SCREENSHOT, + payload: details, + }); }); let ws: WebSocket | null = null; @@ -37,8 +41,17 @@ export async function cloudPlugin( on("task", { "currents:test:after:run": (test) => { - console.log("test:after:run"); - console.log(JSON.parse(test)); + sendToWS({ + type: Event.TEST_AFTER_RUN, + payload: test, + }); + return null; + }, + "currents:test:before:run": (test) => { + sendToWS({ + type: Event.TEST_BEFORE_RUN, + payload: test, + }); return null; }, }); @@ -54,8 +67,15 @@ export async function cloudPlugin( on("before:spec", (spec) => { sendToWS({ type: "before:spec", payload: { spec } }); }); + on("after:spec", (spec, results) => { - sendToWS({ type: "after:spec", payload: { spec, results } }); + sendToWS({ + type: Event.AFTER_SPEC, + payload: { + spec, + results, + }, + }); }); return config; diff --git a/packages/cypress-cloud/support/index.ts b/packages/cypress-cloud/support/index.ts index 5376c50..67d18b7 100644 --- a/packages/cypress-cloud/support/index.ts +++ b/packages/cypress-cloud/support/index.ts @@ -1,32 +1,92 @@ /// import safeStringify from "fast-safe-stringify"; -localStorage.debug = "cypress:*"; -const reportedTests: string[] = []; +const afterReportedTests: string[] = []; +const beforeReportedTests: string[] = []; -function sendTestMetrics(test: Mocha.Test) { +function pickTestData(test: Mocha.Runnable) { + return { + async: !!test.async, + body: test.body, + duration: test.duration, + // @ts-ignore + err: test.err, + // @ts-ignore + final: !!test.final, + // @ts-ignore + hooks: test.hooks, + // @ts-ignore + id: test.id, + // @ts-ignore + invocationDetails: test.invocationDetails, + // @ts-ignore + order: test.order, + pending: test.pending, + retries: test.retries(), + state: test.state, + sync: !!test.sync, + timedOut: test.timedOut, + // @ts-ignore + timings: test.timings, + // @ts-ignore + type: test.type, + // @ts-ignore + wallClockStartedAt: test.wallClockStartedAt, + title: test.title, + // @ts-ignore + currentRetry: test._currentRetry, + fullTitle: test.fullTitle(), + }; +} +function sendTestAfterMetrics(test: Mocha.Runnable) { if (test.pending || !test.state) { // Test is either skipped or hasn't ran yet. // We need to check this because all tests will show up in the hook every time return; } - reportedTests.push(test.fullTitle()); - cy.task("currents:test:after:run", safeStringify(test)); + // @ts-ignore + afterReportedTests.push(getTestHash(test)); + cy.task(`currents:test:after:run`, safeStringify(pickTestData(test)), { + log: false, + }); } -function sendSuite(suite: Mocha.Suite) { - suite.eachTest((test) => { - if (!reportedTests.includes(test.fullTitle())) { - sendTestMetrics(test); - } +function sendTestBeforeMetrics(test: Mocha.Runnable) { + beforeReportedTests.push(getTestHash(test)); + cy.task(`currents:test:before:run`, safeStringify(pickTestData(test)), { + log: false, }); } +function getTestHash(test: Mocha.Runnable) { + // @ts-ignore + return `${test.fullTitle()}-${test._currentRetry}`; +} + +function handleAfter(test: Mocha.Runnable) { + if (!afterReportedTests.includes(getTestHash(test))) { + sendTestAfterMetrics(test); + } +} +function handleBefore(test: Mocha.Runnable) { + if (!beforeReportedTests.includes(getTestHash(test))) { + sendTestBeforeMetrics(test); + } +} + afterEach(() => { // @ts-ignore - const afterHook = cy.state("runnable"); + const currentTest = cy.state("ctx").currentTest; + if (currentTest) { + handleAfter(currentTest); + } +}); + +beforeEach(() => { + // @ts-ignore + const currentTest = cy.state("ctx").currentTest; - if (afterHook.parent) { - sendSuite(afterHook.parent); + if (currentTest) { + handleBefore(currentTest); } }); diff --git a/packages/cypress-cloud/types.ts b/packages/cypress-cloud/types.ts index 8c0dfd3..35510d4 100644 --- a/packages/cypress-cloud/types.ts +++ b/packages/cypress-cloud/types.ts @@ -4,19 +4,6 @@ export type SpecType = "component" | "integration"; export type ArrayItemType = T extends (infer U)[] ? U : T; export type NonEmptyArray = [T, ...T[]]; -export type CypressRun = ArrayItemType< - CypressCommandLine.CypressRunResult["runs"] ->; -export type CypressTest = ArrayItemType; -export type CypressTestAttempt = ArrayItemType; -export type CypressScreenshot = ArrayItemType< - CypressTestAttempt["screenshots"] ->; - -export type CypressResult = - | CypressCommandLine.CypressRunResult - | CypressCommandLine.CypressFailedRunResult; - export type Platform = { osName: string; osVersion: string; @@ -85,7 +72,12 @@ export interface ScreenshotUploadInstruction { readUrl: string; } -export type ScreenshotArtifact = CypressCommandLine.ScreenshotInformation & { +export type ScreenshotArtifact = { + name: string | null; + takenAt: string; + path: string; + height: number; + width: number; testId: string; testAttemptIndex: number; screenshotId: string; diff --git a/turbo.json b/turbo.json index 104c23a..d3aa808 100644 --- a/turbo.json +++ b/turbo.json @@ -8,14 +8,21 @@ "cache": false }, "build": { - "dependsOn": ["^build"], - "outputs": ["dist/**", ".next/**"], + "dependsOn": [ + "^build" + ], + "outputs": [ + "dist/**", + ".next/**" + ], "env": [ "DEBUG", "CURRENTS_ENFORCE_IS_CURRENTS", "CURRENTS_PROJECT_ID", "CURRENTS_API_URL", "CURRENTS_RECORD_KEY", + "CURRENTS_API_KEY", + "CURRENTS_RUN_BASE_URL", "TF_BUILD", "TF_BUILD_BUILDNUMBER", "AZURE_HTTP_USER_AGENT", @@ -43,4 +50,4 @@ "cache": false } } -} +} \ No newline at end of file