From 1165abc3eb8cbe5cfd91afcdcc8635282ddea827 Mon Sep 17 00:00:00 2001 From: Chris Sherlock Date: Tue, 28 Nov 2023 13:55:39 +0000 Subject: [PATCH 1/8] Cypress: Update dependencies, migrate folder structure for cypress v10+ --- CypressTests/cypress.config.js | 13 + CypressTests/cypress.json | 3 - .../v1/healthchecks.cy.js} | 11 +- .../v2/get-fss-projects.cy.js} | 4 +- .../cypress/support/{index.js => e2e.js} | 2 + CypressTests/package-lock.json | 1306 ++++++++++++++--- CypressTests/package.json | 32 +- 7 files changed, 1122 insertions(+), 249 deletions(-) create mode 100644 CypressTests/cypress.config.js delete mode 100644 CypressTests/cypress.json rename CypressTests/cypress/{integration/health/healthcheck.js => e2e/v1/healthchecks.cy.js} (86%) rename CypressTests/cypress/{integration/fss/GET fss-projects/get-fss-projects.js => e2e/v2/get-fss-projects.cy.js} (94%) rename CypressTests/cypress/support/{index.js => e2e.js} (95%) diff --git a/CypressTests/cypress.config.js b/CypressTests/cypress.config.js new file mode 100644 index 000000000..dc91b93be --- /dev/null +++ b/CypressTests/cypress.config.js @@ -0,0 +1,13 @@ +const { defineConfig } = require('cypress') + +module.exports = defineConfig({ + failOnStatusCode: 'false', + userAgent: 'AcademiesApi/1.0 Cypress', + e2e: { + // We've imported your old cypress plugins here. + // You may want to clean this up later by importing these. + setupNodeEvents(on, config) { + return require('./cypress/plugins/index.js')(on, config) + }, + }, +}) diff --git a/CypressTests/cypress.json b/CypressTests/cypress.json deleted file mode 100644 index 4cf000cec..000000000 --- a/CypressTests/cypress.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "failOnStatusCode": "false" -} diff --git a/CypressTests/cypress/integration/health/healthcheck.js b/CypressTests/cypress/e2e/v1/healthchecks.cy.js similarity index 86% rename from CypressTests/cypress/integration/health/healthcheck.js rename to CypressTests/cypress/e2e/v1/healthchecks.cy.js index 72341214b..83df2bba2 100644 --- a/CypressTests/cypress/integration/health/healthcheck.js +++ b/CypressTests/cypress/e2e/v1/healthchecks.cy.js @@ -1,19 +1,18 @@ describe("Health Check and Database Check", () => { let apiKey = Cypress.env('apiKey'); let url = Cypress.env('url') - let urn; it('Health Check', () => { - cy.request({ + cy.api({ method : 'GET', failOnStatusCode: false, - url: url+"HealthCheck", + url: url+"/HealthCheck", headers: { ApiKey: apiKey, "Content-type" : "application/json" } }) - .should((response)=>{ + .then((response)=>{ expect(response.body).to.contain('Health check ok'); expect(response.status).to.eq(200); cy.log(JSON.stringify(response.body)); @@ -21,7 +20,7 @@ describe("Health Check and Database Check", () => { }); it('Database Check', () => { - cy.request({ + cy.api({ method : 'GET', failOnStatusCode: false, url: url+"check_db", @@ -30,7 +29,7 @@ describe("Health Check and Database Check", () => { "Content-type" : "application/json" } }) - .should((response)=>{ + .then((response)=>{ expect(response.status).to.eq(200); expect(response.body).to.eq(true); cy.log("Database Check = "+JSON.stringify(response.body)); diff --git a/CypressTests/cypress/integration/fss/GET fss-projects/get-fss-projects.js b/CypressTests/cypress/e2e/v2/get-fss-projects.cy.js similarity index 94% rename from CypressTests/cypress/integration/fss/GET fss-projects/get-fss-projects.js rename to CypressTests/cypress/e2e/v2/get-fss-projects.cy.js index 33621036d..2f8ae1f66 100644 --- a/CypressTests/cypress/integration/fss/GET fss-projects/get-fss-projects.js +++ b/CypressTests/cypress/e2e/v2/get-fss-projects.cy.js @@ -3,7 +3,7 @@ describe("GET fss-projects", () => { let apiKey = Cypress.env('apiKey'); let url = Cypress.env('url') it("Should return a valid 200 response", () => { - cy.request({ + cy.api({ failOnStatusCode: false, url: url+"/v2/fss/projects", headers: { @@ -13,7 +13,7 @@ describe("GET fss-projects", () => { }); it("Should return a valid 401 response when omitting API key", () => { - cy.request({ + cy.api({ failOnStatusCode: false, url: url+"/v2/fss/projects", headers: { diff --git a/CypressTests/cypress/support/index.js b/CypressTests/cypress/support/e2e.js similarity index 95% rename from CypressTests/cypress/support/index.js rename to CypressTests/cypress/support/e2e.js index d68db96df..84047258f 100644 --- a/CypressTests/cypress/support/index.js +++ b/CypressTests/cypress/support/e2e.js @@ -16,5 +16,7 @@ // Import commands.js using ES2015 syntax: import './commands' +import 'cypress-plugin-api' + // Alternatively you can use CommonJS syntax: // require('./commands') diff --git a/CypressTests/package-lock.json b/CypressTests/package-lock.json index b1a848fac..076afae04 100644 --- a/CypressTests/package-lock.json +++ b/CypressTests/package-lock.json @@ -1,29 +1,42 @@ { - "name": "cypresstests", + "name": "academies-api-cypress-tests", "version": "1.0.0", "lockfileVersion": 2, "requires": true, "packages": { "": { - "name": "cypresstests", + "name": "academies-api-cypress-tests", "version": "1.0.0", "license": "ISC", "dependencies": { - "@cypress/schema-tools": "^1.3.1", + "cypress-plugin-api": "^2.11.1" + }, + "devDependencies": { + "@cypress/schema-tools": "^4.7.10", "ajv": "^8.10.0", "ajv-formats": "^2.1.1", - "cypress": "^9.2.1", + "cypress": "^13.6.0", + "eslint": "^8.43.0", + "eslint-plugin-cypress": "^2.13.3", "zaproxy": "^2.0.0-rc.2" + } + }, + "node_modules/@babel/parser": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.4.tgz", + "integrity": "sha512-vf3Xna6UEprW+7t6EtOmFpHNAuxw3xqPZghy+brsnusscJRW5BMUzzHZc5ICjULee81WeUV2jjakG09MDglJXQ==", + "bin": { + "parser": "bin/babel-parser.js" }, - "devDependencies": { - "eslint": "^8.43.0", - "eslint-plugin-cypress": "^2.13.3" + "engines": { + "node": ">=6.0.0" } }, "node_modules/@bahmutov/all-paths": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/@bahmutov/all-paths/-/all-paths-1.0.2.tgz", "integrity": "sha512-kqeMYh7e9yXWSm7LdQp4BZ4Igxk25lM2Jtw4+G83ro5nFvbHAp3ZmY2na/AVk57+CpZDH/sCXxyKFwkdisnkbw==", + "dev": true, "dependencies": { "lodash.isplainobject": "4.0.6", "lodash.range": "3.2.0" @@ -32,18 +45,6 @@ "node": ">=6" } }, - "node_modules/@bahmutov/is-my-json-valid": { - "version": "2.17.3", - "resolved": "https://registry.npmjs.org/@bahmutov/is-my-json-valid/-/is-my-json-valid-2.17.3.tgz", - "integrity": "sha512-NSxJsPQKXE2CGu2U7V9hFQYZNYpHXv88hd9cH7pVWOdIqcvgeR/MeaX16AoigWiRlYjEkx2v6IgKZcmmBFWDfQ==", - "dependencies": { - "generate-function": "^2.0.0", - "generate-object-property": "^1.1.0", - "is-my-ip-valid": "^1.0.0", - "jsonpointer": "^4.0.0", - "xtend": "^4.0.0" - } - }, "node_modules/@colors/colors": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", @@ -54,9 +55,9 @@ } }, "node_modules/@cypress/request": { - "version": "2.88.10", - "resolved": "https://registry.npmjs.org/@cypress/request/-/request-2.88.10.tgz", - "integrity": "sha512-Zp7F+R93N0yZyG34GutyTNr+okam7s/Fzc1+i3kcqOP8vk6OuajuE9qZJ6Rs+10/1JFtXFYMdyarnU1rZuJesg==", + "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", @@ -71,9 +72,9 @@ "json-stringify-safe": "~5.0.1", "mime-types": "~2.1.19", "performance-now": "^2.1.0", - "qs": "~6.5.2", + "qs": "6.10.4", "safe-buffer": "^5.1.2", - "tough-cookie": "~2.5.0", + "tough-cookie": "^4.1.3", "tunnel-agent": "^0.6.0", "uuid": "^8.3.2" }, @@ -82,23 +83,45 @@ } }, "node_modules/@cypress/schema-tools": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@cypress/schema-tools/-/schema-tools-1.9.0.tgz", - "integrity": "sha512-9O2qtVZMpVH9nnJsIDBj2AyNM5gVoGmPvL+wFGA+Jpk+HY4ur23mYaTK3/+sMGk7d4z5r3BNcr58gQnIyR1g4A==", + "version": "4.7.10", + "resolved": "https://registry.npmjs.org/@cypress/schema-tools/-/schema-tools-4.7.10.tgz", + "integrity": "sha512-8S1XJFUkNjXX1EO2bWrQxcrfUIwIwf8QrhbTJLPmJeLWfh6/FpJpxZbJRqbR7+dQqiY6vxcHURCXQt3nxrkf/w==", + "dev": true, "dependencies": { "@bahmutov/all-paths": "1.0.2", - "@bahmutov/is-my-json-valid": "2.17.3", - "debug": "3.1.0", + "@types/ramda": "0.25.47", + "debug": "4.3.4", + "is-my-json-valid": "github:ax-vasquez/is-my-json-valid#b875c39b07f757593d9b9123e023b8fd2c350a0c", "json-stable-stringify": "1.0.1", - "json2md": "1.6.1", - "lazy-ass": "1.6.0", - "lodash.camelcase": "4.3.0", - "lodash.clonedeep": "4.5.0", - "lodash.get": "4.4.2", - "lodash.set": "4.3.2", + "json2md": "1.6.3", + "lodash": "4.17.21", + "quote": "0.4.0", "ramda": "0.25.0" } }, + "node_modules/@cypress/schema-tools/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@cypress/schema-tools/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==", + "dev": true + }, "node_modules/@cypress/xvfb": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/@cypress/xvfb/-/xvfb-1.2.4.tgz", @@ -265,6 +288,11 @@ "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", "dev": true }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==" + }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -301,9 +329,18 @@ } }, "node_modules/@types/node": { - "version": "14.18.34", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.34.tgz", - "integrity": "sha512-hcU9AIQVHmPnmjRK+XUUYlILlr9pQrsqSrwov/JK1pnf3GTQowVBhx54FbvM0AU/VXGH4i3+vgXS5EguR7fysA==" + "version": "18.18.13", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.13.tgz", + "integrity": "sha512-vXYZGRrSCreZmq1rEjMRLXJhiy8MrIeVasx+PCVlP414N7CJLHnMf+juVvjdprHyH+XRy3zKZLHeNueOpJCn0g==", + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "node_modules/@types/ramda": { + "version": "0.25.47", + "resolved": "https://registry.npmjs.org/@types/ramda/-/ramda-0.25.47.tgz", + "integrity": "sha512-+ffSU83+PR4/cZtNTkUcFkg70sK4GePle7p5h05bQ37ycPumOx/TBpU52bt36GKDlds6tCqXheqPvgC52MMLug==", + "dev": true }, "node_modules/@types/sinonjs__fake-timers": { "version": "8.1.1", @@ -324,6 +361,108 @@ "@types/node": "*" } }, + "node_modules/@vue/compiler-core": { + "version": "3.3.9", + "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.3.9.tgz", + "integrity": "sha512-+/Lf68Vr/nFBA6ol4xOtJrW+BQWv3QWKfRwGSm70jtXwfhZNF4R/eRgyVJYoxFRhdCTk/F6g99BP0ffPgZihfQ==", + "dependencies": { + "@babel/parser": "^7.23.3", + "@vue/shared": "3.3.9", + "estree-walker": "^2.0.2", + "source-map-js": "^1.0.2" + } + }, + "node_modules/@vue/compiler-dom": { + "version": "3.3.9", + "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.3.9.tgz", + "integrity": "sha512-nfWubTtLXuT4iBeDSZ5J3m218MjOy42Vp2pmKVuBKo2/BLcrFUX8nCSr/bKRFiJ32R8qbdnnnBgRn9AdU5v0Sg==", + "dependencies": { + "@vue/compiler-core": "3.3.9", + "@vue/shared": "3.3.9" + } + }, + "node_modules/@vue/compiler-sfc": { + "version": "3.3.9", + "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.3.9.tgz", + "integrity": "sha512-wy0CNc8z4ihoDzjASCOCsQuzW0A/HP27+0MDSSICMjVIFzk/rFViezkR3dzH+miS2NDEz8ywMdbjO5ylhOLI2A==", + "dependencies": { + "@babel/parser": "^7.23.3", + "@vue/compiler-core": "3.3.9", + "@vue/compiler-dom": "3.3.9", + "@vue/compiler-ssr": "3.3.9", + "@vue/reactivity-transform": "3.3.9", + "@vue/shared": "3.3.9", + "estree-walker": "^2.0.2", + "magic-string": "^0.30.5", + "postcss": "^8.4.31", + "source-map-js": "^1.0.2" + } + }, + "node_modules/@vue/compiler-ssr": { + "version": "3.3.9", + "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.3.9.tgz", + "integrity": "sha512-NO5oobAw78R0G4SODY5A502MGnDNiDjf6qvhn7zD7TJGc8XDeIEw4fg6JU705jZ/YhuokBKz0A5a/FL/XZU73g==", + "dependencies": { + "@vue/compiler-dom": "3.3.9", + "@vue/shared": "3.3.9" + } + }, + "node_modules/@vue/reactivity": { + "version": "3.3.9", + "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.3.9.tgz", + "integrity": "sha512-VmpIqlNp+aYDg2X0xQhJqHx9YguOmz2UxuUJDckBdQCNkipJvfk9yA75woLWElCa0Jtyec3lAAt49GO0izsphw==", + "dependencies": { + "@vue/shared": "3.3.9" + } + }, + "node_modules/@vue/reactivity-transform": { + "version": "3.3.9", + "resolved": "https://registry.npmjs.org/@vue/reactivity-transform/-/reactivity-transform-3.3.9.tgz", + "integrity": "sha512-HnUFm7Ry6dFa4Lp63DAxTixUp8opMtQr6RxQCpDI1vlh12rkGIeYqMvJtK+IKyEfEOa2I9oCkD1mmsPdaGpdVg==", + "dependencies": { + "@babel/parser": "^7.23.3", + "@vue/compiler-core": "3.3.9", + "@vue/shared": "3.3.9", + "estree-walker": "^2.0.2", + "magic-string": "^0.30.5" + } + }, + "node_modules/@vue/runtime-core": { + "version": "3.3.9", + "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.3.9.tgz", + "integrity": "sha512-xxaG9KvPm3GTRuM4ZyU8Tc+pMVzcu6eeoSRQJ9IE7NmCcClW6z4B3Ij6L4EDl80sxe/arTtQ6YmgiO4UZqRc+w==", + "dependencies": { + "@vue/reactivity": "3.3.9", + "@vue/shared": "3.3.9" + } + }, + "node_modules/@vue/runtime-dom": { + "version": "3.3.9", + "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.3.9.tgz", + "integrity": "sha512-e7LIfcxYSWbV6BK1wQv9qJyxprC75EvSqF/kQKe6bdZEDNValzeRXEVgiX7AHI6hZ59HA4h7WT5CGvm69vzJTQ==", + "dependencies": { + "@vue/runtime-core": "3.3.9", + "@vue/shared": "3.3.9", + "csstype": "^3.1.2" + } + }, + "node_modules/@vue/server-renderer": { + "version": "3.3.9", + "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.3.9.tgz", + "integrity": "sha512-w0zT/s5l3Oa3ZjtLW88eO4uV6AQFqU8X5GOgzq7SkQQu6vVr+8tfm+OI2kDBplS/W/XgCBuFXiPw6T5EdwXP0A==", + "dependencies": { + "@vue/compiler-ssr": "3.3.9", + "@vue/shared": "3.3.9" + }, + "peerDependencies": { + "vue": "3.3.9" + } + }, + "node_modules/@vue/shared": { + "version": "3.3.9", + "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.3.9.tgz", + "integrity": "sha512-ZE0VTIR0LmYgeyhurPTpy4KzKsuDyQbMSdM49eKkMnT5X4VfFBLysMzjIZhLEFQYjjOVVfbvUDHckwjDFiO2eA==" + }, "node_modules/acorn": { "version": "8.9.0", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.9.0.tgz", @@ -361,6 +500,7 @@ "version": "8.11.2", "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.2.tgz", "integrity": "sha512-E4bfmKAhGiSTvMfL1Myyycaub+cUEU2/IvpylXkUu7CHBkBj1f/ikdzbD7YQ6FKUbixDxeYvB/xY4fvyroDlQg==", + "dev": true, "dependencies": { "fast-deep-equal": "^3.1.1", "json-schema-traverse": "^1.0.0", @@ -376,6 +516,7 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", + "dev": true, "dependencies": { "ajv": "^8.0.0" }, @@ -508,14 +649,15 @@ } }, "node_modules/aws4": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", - "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==" + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.12.0.tgz", + "integrity": "sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg==" }, "node_modules/axios": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.4.0.tgz", - "integrity": "sha512-S4XCWMEmzvo64T9GfvQDOXgYRDJ/wsSZc7Jvdgx5u1sd0JwsuPLqb3SYmusag+edF6ziyMensPVqLTSc1PiSEA==", + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.2.tgz", + "integrity": "sha512-7i24Ri4pmDRfJTR7LDBhsOTtcm+9kjX5WiY1X3wIisx6G9So3pfMkEiU7emUBe46oceVImccTEM3k6C5dbVW8A==", + "dev": true, "dependencies": { "follow-redirects": "^1.15.0", "form-data": "^4.0.0", @@ -526,6 +668,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "dev": true, "dependencies": { "asynckit": "^0.4.0", "combined-stream": "^1.0.8", @@ -538,7 +681,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==" + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", + "dev": true }, "node_modules/balanced-match": { "version": "1.0.2", @@ -630,6 +774,19 @@ "node": ">=6" } }, + "node_modules/call-bind": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.5.tgz", + "integrity": "sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==", + "dependencies": { + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.1", + "set-function-length": "^1.1.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/callsites": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", @@ -767,9 +924,9 @@ } }, "node_modules/commander": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz", - "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==", + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz", + "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==", "engines": { "node": ">= 6" } @@ -805,15 +962,20 @@ "node": ">= 8" } }, + "node_modules/csstype": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz", + "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==" + }, "node_modules/cypress": { - "version": "9.7.0", - "resolved": "https://registry.npmjs.org/cypress/-/cypress-9.7.0.tgz", - "integrity": "sha512-+1EE1nuuuwIt/N1KXRR2iWHU+OiIt7H28jJDyyI4tiUftId/DrXYEwoDa5+kH2pki1zxnA0r6HrUGHV5eLbF5Q==", + "version": "13.6.0", + "resolved": "https://registry.npmjs.org/cypress/-/cypress-13.6.0.tgz", + "integrity": "sha512-quIsnFmtj4dBUEJYU4OH0H12bABJpSujvWexC24Ju1gTlKMJbeT6tTO0vh7WNfiBPPjoIXLN+OUqVtiKFs6SGw==", "hasInstallScript": true, "dependencies": { - "@cypress/request": "^2.88.10", + "@cypress/request": "^3.0.0", "@cypress/xvfb": "^1.2.4", - "@types/node": "^14.14.31", + "@types/node": "^18.17.5", "@types/sinonjs__fake-timers": "8.1.1", "@types/sizzle": "^2.3.2", "arch": "^2.2.0", @@ -825,12 +987,12 @@ "check-more-types": "^2.24.0", "cli-cursor": "^3.1.0", "cli-table3": "~0.6.1", - "commander": "^5.1.0", + "commander": "^6.2.1", "common-tags": "^1.8.0", "dayjs": "^1.10.4", - "debug": "^4.3.2", + "debug": "^4.3.4", "enquirer": "^2.3.6", - "eventemitter2": "^6.4.3", + "eventemitter2": "6.4.7", "execa": "4.1.0", "executable": "^4.1.1", "extract-zip": "2.0.1", @@ -843,12 +1005,13 @@ "listr2": "^3.8.3", "lodash": "^4.17.21", "log-symbols": "^4.0.0", - "minimist": "^1.2.6", + "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.3.2", + "semver": "^7.5.3", "supports-color": "^8.1.1", "tmp": "~0.2.1", "untildify": "^4.0.0", @@ -858,7 +1021,21 @@ "cypress": "bin/cypress" }, "engines": { - "node": ">=12.0.0" + "node": "^16.0.0 || ^18.0.0 || >=20.0.0" + } + }, + "node_modules/cypress-plugin-api": { + "version": "2.11.1", + "resolved": "https://registry.npmjs.org/cypress-plugin-api/-/cypress-plugin-api-2.11.1.tgz", + "integrity": "sha512-62Fc5H59Web01UrcbEsgfhp0pDN7xmHtkXYqTGmwD4NiHz1DN+9ZSxjxVFAUCBY1Q+Ns2E3nTOvDZIl8wdeNDQ==", + "dependencies": { + "highlight.js": "11.4.0", + "prismjs": "^1.29.0", + "set-cookie-parser": "^2.5.1", + "vue": "^3.2.41" + }, + "peerDependencies": { + "cypress": ">=3" } }, "node_modules/cypress/node_modules/debug": { @@ -912,6 +1089,19 @@ "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", "dev": true }, + "node_modules/define-data-property": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz", + "integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==", + "dependencies": { + "get-intrinsic": "^1.2.1", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", @@ -1185,6 +1375,11 @@ "node": ">=4.0" } }, + "node_modules/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==" + }, "node_modules/esutils": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", @@ -1195,9 +1390,9 @@ } }, "node_modules/eventemitter2": { - "version": "6.4.9", - "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-6.4.9.tgz", - "integrity": "sha512-JEPTiaOt9f04oa6NOkc4aH+nVp5I3wEjpHbIPqfgCdD5v5bUzy7xQqwcVO2aDQgOWhI28da57HksMrzK9HlRxg==" + "version": "6.4.7", + "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-6.4.7.tgz", + "integrity": "sha512-tYUSVOGeQPKt/eC1ABfhHy5Xd96N3oIijJvN3O9+TsC28T5V9yX9oEfEK5faP0EFSNVOG97qtAS68GBrQB2hDg==" }, "node_modules/execa": { "version": "4.1.0", @@ -1288,7 +1483,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==" + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true }, "node_modules/fast-json-stable-stringify": { "version": "2.1.0", @@ -1384,6 +1580,7 @@ "version": "1.15.2", "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", + "dev": true, "funding": [ { "type": "individual", @@ -1439,10 +1636,19 @@ "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/generate-function": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.3.1.tgz", "integrity": "sha512-eeB5GfMNeevm/GRYq20ShmsaGcmI81kIX2K9XQx5miC8KdHaC6Jm0qQ8ZNeGOi7wYB8OsdxKs+Y2oVuTFuVwKQ==", + "dev": true, "dependencies": { "is-property": "^1.0.2" } @@ -1451,10 +1657,25 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz", "integrity": "sha512-TuOwZWgJ2VAMEGJvAyPWvpqxSANF0LDpmyHauMjFYzaACvn+QTT/AZomvPCzVBV7yDN3OmwHQ5OvHaeLKre3JQ==", + "dev": true, "dependencies": { "is-property": "^1.0.0" } }, + "node_modules/get-intrinsic": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz", + "integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==", + "dependencies": { + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/get-stream": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", @@ -1557,6 +1778,17 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dependencies": { + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/graceful-fs": { "version": "4.2.10", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", @@ -1576,6 +1808,58 @@ "node": ">=8" } }, + "node_modules/has-property-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz", + "integrity": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==", + "dependencies": { + "get-intrinsic": "^1.2.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", + "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", + "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/highlight.js": { + "version": "11.4.0", + "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-11.4.0.tgz", + "integrity": "sha512-nawlpCBCSASs7EdvZOYOYVkJpGmAOKMYZgZtUqSRqodZE0GRVcFKwo1RcpeOemqh9hyttTdd5wDBwHkuSyUfnA==", + "engines": { + "node": ">=12.0.0" + } + }, "node_modules/http-signature": { "version": "1.3.6", "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.3.6.tgz", @@ -1661,7 +1945,8 @@ "node_modules/indento": { "version": "1.1.13", "resolved": "https://registry.npmjs.org/indento/-/indento-1.1.13.tgz", - "integrity": "sha512-YZWk3mreBEM7sBPddsiQnW9Z8SGg/gNpFfscJq00HCDS7pxcQWWWMSVKJU7YkTRyDu1Zv2s8zaK8gQWKmCXHlg==" + "integrity": "sha512-YZWk3mreBEM7sBPddsiQnW9Z8SGg/gNpFfscJq00HCDS7pxcQWWWMSVKJU7YkTRyDu1Zv2s8zaK8gQWKmCXHlg==", + "dev": true }, "node_modules/inflight": { "version": "1.0.6", @@ -1743,7 +2028,22 @@ "node_modules/is-my-ip-valid": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-my-ip-valid/-/is-my-ip-valid-1.0.1.tgz", - "integrity": "sha512-jxc8cBcOWbNK2i2aTkCZP6i7wkHF1bqKFrwEHuN5Jtg5BSaZHUZQ/JTOJwoV41YvHnOaRyWWh72T/KvfNz9DJg==" + "integrity": "sha512-jxc8cBcOWbNK2i2aTkCZP6i7wkHF1bqKFrwEHuN5Jtg5BSaZHUZQ/JTOJwoV41YvHnOaRyWWh72T/KvfNz9DJg==", + "dev": true + }, + "node_modules/is-my-json-valid": { + "version": "2.17.2", + "resolved": "git+ssh://git@github.com/ax-vasquez/is-my-json-valid.git#b875c39b07f757593d9b9123e023b8fd2c350a0c", + "integrity": "sha512-2gtS0CEh2ssrVaYZhn7hIerMFuFK8J8dZ7LKkTyvu8cEYrN8kY0AHeHcxujvaYUU+1QU2kHlAzbJE8loYvPmUA==", + "dev": true, + "license": "MIT", + "dependencies": { + "generate-function": "^2.0.0", + "generate-object-property": "^1.1.0", + "is-my-ip-valid": "^1.0.0", + "jsonpointer": "^5.0.0", + "xtend": "^4.0.0" + } }, "node_modules/is-path-inside": { "version": "3.0.3", @@ -1756,7 +2056,8 @@ "node_modules/is-property": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz", - "integrity": "sha512-Ks/IoX00TtClbGQr4TWXemAnktAQvYB7HzcCxDGqEZU6oCmb2INHuOoKxbtR+HFkmYWBKv/dOZtGRiAjDhj92g==" + "integrity": "sha512-Ks/IoX00TtClbGQr4TWXemAnktAQvYB7HzcCxDGqEZU6oCmb2INHuOoKxbtR+HFkmYWBKv/dOZtGRiAjDhj92g==", + "dev": true }, "node_modules/is-stream": { "version": "2.0.1", @@ -1820,12 +2121,14 @@ "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==" + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true }, "node_modules/json-stable-stringify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", "integrity": "sha512-i/J297TW6xyj7sDFa7AmBPkQvLIxWr2kKPWI26tXydnZrzVAocNqn5DMNT1Mzk0vit1V5UkRM7C1KdVNp7Lmcg==", + "dev": true, "dependencies": { "jsonify": "~0.0.0" } @@ -1842,9 +2145,10 @@ "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==" }, "node_modules/json2md": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/json2md/-/json2md-1.6.1.tgz", - "integrity": "sha512-O/dYWihMsYRf1J9EqhMLvIDSles1LKPtJTiXD3/dcuezdvJVPygFid5s6BN1tKbGYJ5x5BBo2zFfKztttyQu3Q==", + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/json2md/-/json2md-1.6.3.tgz", + "integrity": "sha512-bdza+dm2rKu9NgguimGe9Os7grpYE8CCLXIXMkIYGOfkZLxSMKN487OOT8PBgBW2xFCcItoxh6WFA7SJOEDKkw==", + "dev": true, "dependencies": { "indento": "^1.1.7" } @@ -1864,14 +2168,16 @@ "version": "0.0.1", "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.1.tgz", "integrity": "sha512-2/Ki0GcmuqSrgFyelQq9M05y7PS0mEwuIzrf3f1fPqkVDVRvZrPZtVSMHxdgo8Aq0sxAOb/cr2aqqA3LeWHVPg==", + "dev": true, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/jsonpointer": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-4.1.0.tgz", - "integrity": "sha512-CXcRvMyTlnR53xMcKnuMzfCA5i/nfblTnnr74CZb6C4vG39eu6w51t7nKmU5MfLfbTgGItliNyjO/ciNPDqClg==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-5.0.1.tgz", + "integrity": "sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ==", + "dev": true, "engines": { "node": ">=0.10.0" } @@ -1957,25 +2263,11 @@ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" }, - "node_modules/lodash.camelcase": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", - "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==" - }, - "node_modules/lodash.clonedeep": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", - "integrity": "sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==" - }, - "node_modules/lodash.get": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", - "integrity": "sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==" - }, "node_modules/lodash.isplainobject": { "version": "4.0.6", "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", - "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==" + "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==", + "dev": true }, "node_modules/lodash.merge": { "version": "4.6.2", @@ -1991,12 +2283,8 @@ "node_modules/lodash.range": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/lodash.range/-/lodash.range-3.2.0.tgz", - "integrity": "sha512-Fgkb7SinmuzqgIhNhAElo0BL/R1rHCnhwSZf78omqSwvWqD0kD2ssOAutQonDKH/ldS8BxA72ORYI09qAY9CYg==" - }, - "node_modules/lodash.set": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/lodash.set/-/lodash.set-4.3.2.tgz", - "integrity": "sha512-4hNPN5jlm/N/HLMCO43v8BXKq9Z7QdAGc/VGrRD61w8gN9g/6jF9A4L1pbUgBLCffi0w9VsXfTOij5x8iTyFvg==" + "integrity": "sha512-Fgkb7SinmuzqgIhNhAElo0BL/R1rHCnhwSZf78omqSwvWqD0kD2ssOAutQonDKH/ldS8BxA72ORYI09qAY9CYg==", + "dev": true }, "node_modules/log-symbols": { "version": "4.1.0", @@ -2070,6 +2358,17 @@ "node": ">=10" } }, + "node_modules/magic-string": { + "version": "0.30.5", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.5.tgz", + "integrity": "sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA==", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.4.15" + }, + "engines": { + "node": ">=12" + } + }, "node_modules/merge-stream": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", @@ -2114,9 +2413,9 @@ } }, "node_modules/minimist": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz", - "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==", + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -2126,6 +2425,23 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" }, + "node_modules/nanoid": { + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", + "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, "node_modules/natural-compare": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", @@ -2143,6 +2459,14 @@ "node": ">=8" } }, + "node_modules/object-inspect": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", + "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", @@ -2278,6 +2602,11 @@ "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==" }, + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" + }, "node_modules/pify": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", @@ -2286,6 +2615,33 @@ "node": ">=0.10.0" } }, + "node_modules/postcss": { + "version": "8.4.31", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz", + "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "nanoid": "^3.3.6", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, "node_modules/prelude-ls": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", @@ -2306,6 +2662,22 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/prismjs": { + "version": "1.29.0", + "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.29.0.tgz", + "integrity": "sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==", + "engines": { + "node": ">=6" + } + }, + "node_modules/process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", + "engines": { + "node": ">= 0.6.0" + } + }, "node_modules/proxy-from-env": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.0.0.tgz", @@ -2334,13 +2706,24 @@ } }, "node_modules/qs": { - "version": "6.5.3", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", - "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==", + "version": "6.10.4", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.4.tgz", + "integrity": "sha512-OQiU+C+Ds5qiH91qh/mg0w+8nwQuLjM4F4M/PbmhDOoYehPh+Fb0bDjtR1sOvy7YKxvj28Y/M0PhP5uVX0kB+g==", + "dependencies": { + "side-channel": "^1.0.4" + }, "engines": { "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/querystringify": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", + "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==" + }, "node_modules/queue-microtask": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", @@ -2361,10 +2744,17 @@ } ] }, + "node_modules/quote": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/quote/-/quote-0.4.0.tgz", + "integrity": "sha512-KHp3y3xDjuBhRx+tYKOgzPnVHMRlgpn2rU450GcU4PL24r1H6ls/hfPrxDwX2pvYMlwODHI2l8WwgoV69x5rUQ==", + "dev": true + }, "node_modules/ramda": { "version": "0.25.0", "resolved": "https://registry.npmjs.org/ramda/-/ramda-0.25.0.tgz", - "integrity": "sha512-GXpfrYVPwx3K7RQ6aYT8KPS8XViSXUVJT1ONhoKPE9VAleW42YE+U+8VEyGWt41EnEQW7gwecYJriTI0pKoecQ==" + "integrity": "sha512-GXpfrYVPwx3K7RQ6aYT8KPS8XViSXUVJT1ONhoKPE9VAleW42YE+U+8VEyGWt41EnEQW7gwecYJriTI0pKoecQ==", + "dev": true }, "node_modules/request-progress": { "version": "3.0.0", @@ -2378,10 +2768,16 @@ "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==", + "dev": true, "engines": { "node": ">=0.10.0" } }, + "node_modules/requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==" + }, "node_modules/resolve-from": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", @@ -2488,9 +2884,9 @@ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, "node_modules/semver": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "dependencies": { "lru-cache": "^6.0.0" }, @@ -2501,6 +2897,25 @@ "node": ">=10" } }, + "node_modules/set-cookie-parser": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.6.0.tgz", + "integrity": "sha512-RVnVQxTXuerk653XfuliOxBP81Sf0+qfQE73LIYKcyMYHG94AuH0kgrQpRDuTZnSmjpysHmzxJXKNfa6PjFhyQ==" + }, + "node_modules/set-function-length": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.1.1.tgz", + "integrity": "sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==", + "dependencies": { + "define-data-property": "^1.1.1", + "get-intrinsic": "^1.2.1", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", @@ -2520,6 +2935,19 @@ "node": ">=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==", + "dependencies": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/signal-exit": { "version": "3.0.7", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", @@ -2538,10 +2966,18 @@ "node": ">=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==", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/sshpk": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.17.0.tgz", - "integrity": "sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==", + "version": "1.18.0", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.18.0.tgz", + "integrity": "sha512-2p2KJZTSqQ/I3+HX42EpYOa2l3f8Erv8MWKsy2I9uf4wA7yFIkXRffYdsx86y6z4vHtV8u7g+pPlr8/4ouAxsQ==", "dependencies": { "asn1": "~0.2.3", "assert-plus": "^1.0.0", @@ -2648,15 +3084,25 @@ } }, "node_modules/tough-cookie": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", - "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.3.tgz", + "integrity": "sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw==", "dependencies": { - "psl": "^1.1.28", - "punycode": "^2.1.1" + "psl": "^1.1.33", + "punycode": "^2.1.1", + "universalify": "^0.2.0", + "url-parse": "^1.5.3" }, "engines": { - "node": ">=0.8" + "node": ">=6" + } + }, + "node_modules/tough-cookie/node_modules/universalify": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", + "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", + "engines": { + "node": ">= 4.0.0" } }, "node_modules/tslib": { @@ -2703,6 +3149,11 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==" + }, "node_modules/universalify": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", @@ -2723,10 +3174,20 @@ "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, "dependencies": { "punycode": "^2.1.0" } }, + "node_modules/url-parse": { + "version": "1.5.10", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", + "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", + "dependencies": { + "querystringify": "^2.1.1", + "requires-port": "^1.0.0" + } + }, "node_modules/uuid": { "version": "8.3.2", "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", @@ -2748,6 +3209,26 @@ "extsprintf": "^1.2.0" } }, + "node_modules/vue": { + "version": "3.3.9", + "resolved": "https://registry.npmjs.org/vue/-/vue-3.3.9.tgz", + "integrity": "sha512-sy5sLCTR8m6tvUk1/ijri3Yqzgpdsmxgj6n6yl7GXXCXqVbmW2RCXe9atE4cEI6Iv7L89v5f35fZRRr5dChP9w==", + "dependencies": { + "@vue/compiler-dom": "3.3.9", + "@vue/compiler-sfc": "3.3.9", + "@vue/runtime-dom": "3.3.9", + "@vue/server-renderer": "3.3.9", + "@vue/shared": "3.3.9" + }, + "peerDependencies": { + "typescript": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, "node_modules/which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", @@ -2763,9 +3244,9 @@ } }, "node_modules/word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", "dev": true, "engines": { "node": ">=0.10.0" @@ -2796,6 +3277,7 @@ "version": "4.0.2", "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "dev": true, "engines": { "node": ">=0.4" } @@ -2830,6 +3312,7 @@ "version": "2.0.0-rc.2", "resolved": "https://registry.npmjs.org/zaproxy/-/zaproxy-2.0.0-rc.2.tgz", "integrity": "sha512-OH9CtBgem9vcB25/qVQaxp30dFiChW7VsHuTCC1nodyR4FkqiicTF6/cX3MGaeJTssRpDUmZMGfsDxs+wsGKsw==", + "dev": true, "dependencies": { "axios": "^1.3.3" }, @@ -2839,27 +3322,21 @@ } }, "dependencies": { + "@babel/parser": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.4.tgz", + "integrity": "sha512-vf3Xna6UEprW+7t6EtOmFpHNAuxw3xqPZghy+brsnusscJRW5BMUzzHZc5ICjULee81WeUV2jjakG09MDglJXQ==" + }, "@bahmutov/all-paths": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/@bahmutov/all-paths/-/all-paths-1.0.2.tgz", "integrity": "sha512-kqeMYh7e9yXWSm7LdQp4BZ4Igxk25lM2Jtw4+G83ro5nFvbHAp3ZmY2na/AVk57+CpZDH/sCXxyKFwkdisnkbw==", + "dev": true, "requires": { "lodash.isplainobject": "4.0.6", "lodash.range": "3.2.0" } }, - "@bahmutov/is-my-json-valid": { - "version": "2.17.3", - "resolved": "https://registry.npmjs.org/@bahmutov/is-my-json-valid/-/is-my-json-valid-2.17.3.tgz", - "integrity": "sha512-NSxJsPQKXE2CGu2U7V9hFQYZNYpHXv88hd9cH7pVWOdIqcvgeR/MeaX16AoigWiRlYjEkx2v6IgKZcmmBFWDfQ==", - "requires": { - "generate-function": "^2.0.0", - "generate-object-property": "^1.1.0", - "is-my-ip-valid": "^1.0.0", - "jsonpointer": "^4.0.0", - "xtend": "^4.0.0" - } - }, "@colors/colors": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", @@ -2867,9 +3344,9 @@ "optional": true }, "@cypress/request": { - "version": "2.88.10", - "resolved": "https://registry.npmjs.org/@cypress/request/-/request-2.88.10.tgz", - "integrity": "sha512-Zp7F+R93N0yZyG34GutyTNr+okam7s/Fzc1+i3kcqOP8vk6OuajuE9qZJ6Rs+10/1JFtXFYMdyarnU1rZuJesg==", + "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", @@ -2884,29 +3361,45 @@ "json-stringify-safe": "~5.0.1", "mime-types": "~2.1.19", "performance-now": "^2.1.0", - "qs": "~6.5.2", + "qs": "6.10.4", "safe-buffer": "^5.1.2", - "tough-cookie": "~2.5.0", + "tough-cookie": "^4.1.3", "tunnel-agent": "^0.6.0", "uuid": "^8.3.2" } }, "@cypress/schema-tools": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@cypress/schema-tools/-/schema-tools-1.9.0.tgz", - "integrity": "sha512-9O2qtVZMpVH9nnJsIDBj2AyNM5gVoGmPvL+wFGA+Jpk+HY4ur23mYaTK3/+sMGk7d4z5r3BNcr58gQnIyR1g4A==", + "version": "4.7.10", + "resolved": "https://registry.npmjs.org/@cypress/schema-tools/-/schema-tools-4.7.10.tgz", + "integrity": "sha512-8S1XJFUkNjXX1EO2bWrQxcrfUIwIwf8QrhbTJLPmJeLWfh6/FpJpxZbJRqbR7+dQqiY6vxcHURCXQt3nxrkf/w==", + "dev": true, "requires": { "@bahmutov/all-paths": "1.0.2", - "@bahmutov/is-my-json-valid": "2.17.3", - "debug": "3.1.0", + "@types/ramda": "0.25.47", + "debug": "4.3.4", + "is-my-json-valid": "github:ax-vasquez/is-my-json-valid#b875c39b07f757593d9b9123e023b8fd2c350a0c", "json-stable-stringify": "1.0.1", - "json2md": "1.6.1", - "lazy-ass": "1.6.0", - "lodash.camelcase": "4.3.0", - "lodash.clonedeep": "4.5.0", - "lodash.get": "4.4.2", - "lodash.set": "4.3.2", + "json2md": "1.6.3", + "lodash": "4.17.21", + "quote": "0.4.0", "ramda": "0.25.0" + }, + "dependencies": { + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } } }, "@cypress/xvfb": { @@ -3031,6 +3524,11 @@ "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", "dev": true }, + "@jridgewell/sourcemap-codec": { + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==" + }, "@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -3058,9 +3556,18 @@ } }, "@types/node": { - "version": "14.18.34", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.34.tgz", - "integrity": "sha512-hcU9AIQVHmPnmjRK+XUUYlILlr9pQrsqSrwov/JK1pnf3GTQowVBhx54FbvM0AU/VXGH4i3+vgXS5EguR7fysA==" + "version": "18.18.13", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.13.tgz", + "integrity": "sha512-vXYZGRrSCreZmq1rEjMRLXJhiy8MrIeVasx+PCVlP414N7CJLHnMf+juVvjdprHyH+XRy3zKZLHeNueOpJCn0g==", + "requires": { + "undici-types": "~5.26.4" + } + }, + "@types/ramda": { + "version": "0.25.47", + "resolved": "https://registry.npmjs.org/@types/ramda/-/ramda-0.25.47.tgz", + "integrity": "sha512-+ffSU83+PR4/cZtNTkUcFkg70sK4GePle7p5h05bQ37ycPumOx/TBpU52bt36GKDlds6tCqXheqPvgC52MMLug==", + "dev": true }, "@types/sinonjs__fake-timers": { "version": "8.1.1", @@ -3081,6 +3588,105 @@ "@types/node": "*" } }, + "@vue/compiler-core": { + "version": "3.3.9", + "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.3.9.tgz", + "integrity": "sha512-+/Lf68Vr/nFBA6ol4xOtJrW+BQWv3QWKfRwGSm70jtXwfhZNF4R/eRgyVJYoxFRhdCTk/F6g99BP0ffPgZihfQ==", + "requires": { + "@babel/parser": "^7.23.3", + "@vue/shared": "3.3.9", + "estree-walker": "^2.0.2", + "source-map-js": "^1.0.2" + } + }, + "@vue/compiler-dom": { + "version": "3.3.9", + "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.3.9.tgz", + "integrity": "sha512-nfWubTtLXuT4iBeDSZ5J3m218MjOy42Vp2pmKVuBKo2/BLcrFUX8nCSr/bKRFiJ32R8qbdnnnBgRn9AdU5v0Sg==", + "requires": { + "@vue/compiler-core": "3.3.9", + "@vue/shared": "3.3.9" + } + }, + "@vue/compiler-sfc": { + "version": "3.3.9", + "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.3.9.tgz", + "integrity": "sha512-wy0CNc8z4ihoDzjASCOCsQuzW0A/HP27+0MDSSICMjVIFzk/rFViezkR3dzH+miS2NDEz8ywMdbjO5ylhOLI2A==", + "requires": { + "@babel/parser": "^7.23.3", + "@vue/compiler-core": "3.3.9", + "@vue/compiler-dom": "3.3.9", + "@vue/compiler-ssr": "3.3.9", + "@vue/reactivity-transform": "3.3.9", + "@vue/shared": "3.3.9", + "estree-walker": "^2.0.2", + "magic-string": "^0.30.5", + "postcss": "^8.4.31", + "source-map-js": "^1.0.2" + } + }, + "@vue/compiler-ssr": { + "version": "3.3.9", + "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.3.9.tgz", + "integrity": "sha512-NO5oobAw78R0G4SODY5A502MGnDNiDjf6qvhn7zD7TJGc8XDeIEw4fg6JU705jZ/YhuokBKz0A5a/FL/XZU73g==", + "requires": { + "@vue/compiler-dom": "3.3.9", + "@vue/shared": "3.3.9" + } + }, + "@vue/reactivity": { + "version": "3.3.9", + "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.3.9.tgz", + "integrity": "sha512-VmpIqlNp+aYDg2X0xQhJqHx9YguOmz2UxuUJDckBdQCNkipJvfk9yA75woLWElCa0Jtyec3lAAt49GO0izsphw==", + "requires": { + "@vue/shared": "3.3.9" + } + }, + "@vue/reactivity-transform": { + "version": "3.3.9", + "resolved": "https://registry.npmjs.org/@vue/reactivity-transform/-/reactivity-transform-3.3.9.tgz", + "integrity": "sha512-HnUFm7Ry6dFa4Lp63DAxTixUp8opMtQr6RxQCpDI1vlh12rkGIeYqMvJtK+IKyEfEOa2I9oCkD1mmsPdaGpdVg==", + "requires": { + "@babel/parser": "^7.23.3", + "@vue/compiler-core": "3.3.9", + "@vue/shared": "3.3.9", + "estree-walker": "^2.0.2", + "magic-string": "^0.30.5" + } + }, + "@vue/runtime-core": { + "version": "3.3.9", + "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.3.9.tgz", + "integrity": "sha512-xxaG9KvPm3GTRuM4ZyU8Tc+pMVzcu6eeoSRQJ9IE7NmCcClW6z4B3Ij6L4EDl80sxe/arTtQ6YmgiO4UZqRc+w==", + "requires": { + "@vue/reactivity": "3.3.9", + "@vue/shared": "3.3.9" + } + }, + "@vue/runtime-dom": { + "version": "3.3.9", + "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.3.9.tgz", + "integrity": "sha512-e7LIfcxYSWbV6BK1wQv9qJyxprC75EvSqF/kQKe6bdZEDNValzeRXEVgiX7AHI6hZ59HA4h7WT5CGvm69vzJTQ==", + "requires": { + "@vue/runtime-core": "3.3.9", + "@vue/shared": "3.3.9", + "csstype": "^3.1.2" + } + }, + "@vue/server-renderer": { + "version": "3.3.9", + "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.3.9.tgz", + "integrity": "sha512-w0zT/s5l3Oa3ZjtLW88eO4uV6AQFqU8X5GOgzq7SkQQu6vVr+8tfm+OI2kDBplS/W/XgCBuFXiPw6T5EdwXP0A==", + "requires": { + "@vue/compiler-ssr": "3.3.9", + "@vue/shared": "3.3.9" + } + }, + "@vue/shared": { + "version": "3.3.9", + "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.3.9.tgz", + "integrity": "sha512-ZE0VTIR0LmYgeyhurPTpy4KzKsuDyQbMSdM49eKkMnT5X4VfFBLysMzjIZhLEFQYjjOVVfbvUDHckwjDFiO2eA==" + }, "acorn": { "version": "8.9.0", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.9.0.tgz", @@ -3107,6 +3713,7 @@ "version": "8.11.2", "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.2.tgz", "integrity": "sha512-E4bfmKAhGiSTvMfL1Myyycaub+cUEU2/IvpylXkUu7CHBkBj1f/ikdzbD7YQ6FKUbixDxeYvB/xY4fvyroDlQg==", + "dev": true, "requires": { "fast-deep-equal": "^3.1.1", "json-schema-traverse": "^1.0.0", @@ -3118,6 +3725,7 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", + "dev": true, "requires": { "ajv": "^8.0.0" } @@ -3198,14 +3806,15 @@ "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==" }, "aws4": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", - "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==" + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.12.0.tgz", + "integrity": "sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg==" }, "axios": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.4.0.tgz", - "integrity": "sha512-S4XCWMEmzvo64T9GfvQDOXgYRDJ/wsSZc7Jvdgx5u1sd0JwsuPLqb3SYmusag+edF6ziyMensPVqLTSc1PiSEA==", + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.2.tgz", + "integrity": "sha512-7i24Ri4pmDRfJTR7LDBhsOTtcm+9kjX5WiY1X3wIisx6G9So3pfMkEiU7emUBe46oceVImccTEM3k6C5dbVW8A==", + "dev": true, "requires": { "follow-redirects": "^1.15.0", "form-data": "^4.0.0", @@ -3216,6 +3825,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "dev": true, "requires": { "asynckit": "^0.4.0", "combined-stream": "^1.0.8", @@ -3225,7 +3835,8 @@ "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==" + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", + "dev": true } } }, @@ -3285,6 +3896,16 @@ "resolved": "https://registry.npmjs.org/cachedir/-/cachedir-2.3.0.tgz", "integrity": "sha512-A+Fezp4zxnit6FanDmv9EqXNAi3vt9DWp51/71UEhXukb7QUuvtv9344h91dyAxuTLoSYJFU299qzR3tzwPAhw==" }, + "call-bind": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.5.tgz", + "integrity": "sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==", + "requires": { + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.1", + "set-function-length": "^1.1.1" + } + }, "callsites": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", @@ -3383,9 +4004,9 @@ } }, "commander": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz", - "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==" + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz", + "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==" }, "common-tags": { "version": "1.8.2", @@ -3412,14 +4033,19 @@ "which": "^2.0.1" } }, + "csstype": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz", + "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==" + }, "cypress": { - "version": "9.7.0", - "resolved": "https://registry.npmjs.org/cypress/-/cypress-9.7.0.tgz", - "integrity": "sha512-+1EE1nuuuwIt/N1KXRR2iWHU+OiIt7H28jJDyyI4tiUftId/DrXYEwoDa5+kH2pki1zxnA0r6HrUGHV5eLbF5Q==", + "version": "13.6.0", + "resolved": "https://registry.npmjs.org/cypress/-/cypress-13.6.0.tgz", + "integrity": "sha512-quIsnFmtj4dBUEJYU4OH0H12bABJpSujvWexC24Ju1gTlKMJbeT6tTO0vh7WNfiBPPjoIXLN+OUqVtiKFs6SGw==", "requires": { - "@cypress/request": "^2.88.10", + "@cypress/request": "^3.0.0", "@cypress/xvfb": "^1.2.4", - "@types/node": "^14.14.31", + "@types/node": "^18.17.5", "@types/sinonjs__fake-timers": "8.1.1", "@types/sizzle": "^2.3.2", "arch": "^2.2.0", @@ -3431,12 +4057,12 @@ "check-more-types": "^2.24.0", "cli-cursor": "^3.1.0", "cli-table3": "~0.6.1", - "commander": "^5.1.0", + "commander": "^6.2.1", "common-tags": "^1.8.0", "dayjs": "^1.10.4", - "debug": "^4.3.2", + "debug": "^4.3.4", "enquirer": "^2.3.6", - "eventemitter2": "^6.4.3", + "eventemitter2": "6.4.7", "execa": "4.1.0", "executable": "^4.1.1", "extract-zip": "2.0.1", @@ -3449,12 +4075,13 @@ "listr2": "^3.8.3", "lodash": "^4.17.21", "log-symbols": "^4.0.0", - "minimist": "^1.2.6", + "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.3.2", + "semver": "^7.5.3", "supports-color": "^8.1.1", "tmp": "~0.2.1", "untildify": "^4.0.0", @@ -3476,6 +4103,17 @@ } } }, + "cypress-plugin-api": { + "version": "2.11.1", + "resolved": "https://registry.npmjs.org/cypress-plugin-api/-/cypress-plugin-api-2.11.1.tgz", + "integrity": "sha512-62Fc5H59Web01UrcbEsgfhp0pDN7xmHtkXYqTGmwD4NiHz1DN+9ZSxjxVFAUCBY1Q+Ns2E3nTOvDZIl8wdeNDQ==", + "requires": { + "highlight.js": "11.4.0", + "prismjs": "^1.29.0", + "set-cookie-parser": "^2.5.1", + "vue": "^3.2.41" + } + }, "dashdash": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", @@ -3503,6 +4141,16 @@ "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", "dev": true }, + "define-data-property": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz", + "integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==", + "requires": { + "get-intrinsic": "^1.2.1", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0" + } + }, "delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", @@ -3708,6 +4356,11 @@ "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true }, + "estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==" + }, "esutils": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", @@ -3715,9 +4368,9 @@ "dev": true }, "eventemitter2": { - "version": "6.4.9", - "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-6.4.9.tgz", - "integrity": "sha512-JEPTiaOt9f04oa6NOkc4aH+nVp5I3wEjpHbIPqfgCdD5v5bUzy7xQqwcVO2aDQgOWhI28da57HksMrzK9HlRxg==" + "version": "6.4.7", + "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-6.4.7.tgz", + "integrity": "sha512-tYUSVOGeQPKt/eC1ABfhHy5Xd96N3oIijJvN3O9+TsC28T5V9yX9oEfEK5faP0EFSNVOG97qtAS68GBrQB2hDg==" }, "execa": { "version": "4.1.0", @@ -3782,7 +4435,8 @@ "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==" + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true }, "fast-json-stable-stringify": { "version": "2.1.0", @@ -3859,7 +4513,8 @@ "follow-redirects": { "version": "1.15.2", "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", - "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==" + "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", + "dev": true }, "forever-agent": { "version": "0.6.1", @@ -3892,10 +4547,16 @@ "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" }, + "function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==" + }, "generate-function": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.3.1.tgz", "integrity": "sha512-eeB5GfMNeevm/GRYq20ShmsaGcmI81kIX2K9XQx5miC8KdHaC6Jm0qQ8ZNeGOi7wYB8OsdxKs+Y2oVuTFuVwKQ==", + "dev": true, "requires": { "is-property": "^1.0.2" } @@ -3904,10 +4565,22 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz", "integrity": "sha512-TuOwZWgJ2VAMEGJvAyPWvpqxSANF0LDpmyHauMjFYzaACvn+QTT/AZomvPCzVBV7yDN3OmwHQ5OvHaeLKre3JQ==", + "dev": true, "requires": { "is-property": "^1.0.0" } }, + "get-intrinsic": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz", + "integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==", + "requires": { + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" + } + }, "get-stream": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", @@ -3979,6 +4652,14 @@ } } }, + "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" + } + }, "graceful-fs": { "version": "4.2.10", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", @@ -3995,6 +4676,37 @@ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" }, + "has-property-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz", + "integrity": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==", + "requires": { + "get-intrinsic": "^1.2.2" + } + }, + "has-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", + "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==" + }, + "has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==" + }, + "hasown": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", + "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", + "requires": { + "function-bind": "^1.1.2" + } + }, + "highlight.js": { + "version": "11.4.0", + "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-11.4.0.tgz", + "integrity": "sha512-nawlpCBCSASs7EdvZOYOYVkJpGmAOKMYZgZtUqSRqodZE0GRVcFKwo1RcpeOemqh9hyttTdd5wDBwHkuSyUfnA==" + }, "http-signature": { "version": "1.3.6", "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.3.6.tgz", @@ -4045,7 +4757,8 @@ "indento": { "version": "1.1.13", "resolved": "https://registry.npmjs.org/indento/-/indento-1.1.13.tgz", - "integrity": "sha512-YZWk3mreBEM7sBPddsiQnW9Z8SGg/gNpFfscJq00HCDS7pxcQWWWMSVKJU7YkTRyDu1Zv2s8zaK8gQWKmCXHlg==" + "integrity": "sha512-YZWk3mreBEM7sBPddsiQnW9Z8SGg/gNpFfscJq00HCDS7pxcQWWWMSVKJU7YkTRyDu1Zv2s8zaK8gQWKmCXHlg==", + "dev": true }, "inflight": { "version": "1.0.6", @@ -4106,7 +4819,21 @@ "is-my-ip-valid": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-my-ip-valid/-/is-my-ip-valid-1.0.1.tgz", - "integrity": "sha512-jxc8cBcOWbNK2i2aTkCZP6i7wkHF1bqKFrwEHuN5Jtg5BSaZHUZQ/JTOJwoV41YvHnOaRyWWh72T/KvfNz9DJg==" + "integrity": "sha512-jxc8cBcOWbNK2i2aTkCZP6i7wkHF1bqKFrwEHuN5Jtg5BSaZHUZQ/JTOJwoV41YvHnOaRyWWh72T/KvfNz9DJg==", + "dev": true + }, + "is-my-json-valid": { + "version": "git+ssh://git@github.com/ax-vasquez/is-my-json-valid.git#b875c39b07f757593d9b9123e023b8fd2c350a0c", + "integrity": "sha512-2gtS0CEh2ssrVaYZhn7hIerMFuFK8J8dZ7LKkTyvu8cEYrN8kY0AHeHcxujvaYUU+1QU2kHlAzbJE8loYvPmUA==", + "dev": true, + "from": "is-my-json-valid@github:ax-vasquez/is-my-json-valid#b875c39b07f757593d9b9123e023b8fd2c350a0c", + "requires": { + "generate-function": "^2.0.0", + "generate-object-property": "^1.1.0", + "is-my-ip-valid": "^1.0.0", + "jsonpointer": "^5.0.0", + "xtend": "^4.0.0" + } }, "is-path-inside": { "version": "3.0.3", @@ -4116,7 +4843,8 @@ "is-property": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz", - "integrity": "sha512-Ks/IoX00TtClbGQr4TWXemAnktAQvYB7HzcCxDGqEZU6oCmb2INHuOoKxbtR+HFkmYWBKv/dOZtGRiAjDhj92g==" + "integrity": "sha512-Ks/IoX00TtClbGQr4TWXemAnktAQvYB7HzcCxDGqEZU6oCmb2INHuOoKxbtR+HFkmYWBKv/dOZtGRiAjDhj92g==", + "dev": true }, "is-stream": { "version": "2.0.1", @@ -4165,12 +4893,14 @@ "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==" + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true }, "json-stable-stringify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", "integrity": "sha512-i/J297TW6xyj7sDFa7AmBPkQvLIxWr2kKPWI26tXydnZrzVAocNqn5DMNT1Mzk0vit1V5UkRM7C1KdVNp7Lmcg==", + "dev": true, "requires": { "jsonify": "~0.0.0" } @@ -4187,9 +4917,10 @@ "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==" }, "json2md": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/json2md/-/json2md-1.6.1.tgz", - "integrity": "sha512-O/dYWihMsYRf1J9EqhMLvIDSles1LKPtJTiXD3/dcuezdvJVPygFid5s6BN1tKbGYJ5x5BBo2zFfKztttyQu3Q==", + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/json2md/-/json2md-1.6.3.tgz", + "integrity": "sha512-bdza+dm2rKu9NgguimGe9Os7grpYE8CCLXIXMkIYGOfkZLxSMKN487OOT8PBgBW2xFCcItoxh6WFA7SJOEDKkw==", + "dev": true, "requires": { "indento": "^1.1.7" } @@ -4206,12 +4937,14 @@ "jsonify": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.1.tgz", - "integrity": "sha512-2/Ki0GcmuqSrgFyelQq9M05y7PS0mEwuIzrf3f1fPqkVDVRvZrPZtVSMHxdgo8Aq0sxAOb/cr2aqqA3LeWHVPg==" + "integrity": "sha512-2/Ki0GcmuqSrgFyelQq9M05y7PS0mEwuIzrf3f1fPqkVDVRvZrPZtVSMHxdgo8Aq0sxAOb/cr2aqqA3LeWHVPg==", + "dev": true }, "jsonpointer": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-4.1.0.tgz", - "integrity": "sha512-CXcRvMyTlnR53xMcKnuMzfCA5i/nfblTnnr74CZb6C4vG39eu6w51t7nKmU5MfLfbTgGItliNyjO/ciNPDqClg==" + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-5.0.1.tgz", + "integrity": "sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ==", + "dev": true }, "jsprim": { "version": "2.0.2", @@ -4268,25 +5001,11 @@ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" }, - "lodash.camelcase": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", - "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==" - }, - "lodash.clonedeep": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", - "integrity": "sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==" - }, - "lodash.get": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", - "integrity": "sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==" - }, "lodash.isplainobject": { "version": "4.0.6", "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", - "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==" + "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==", + "dev": true }, "lodash.merge": { "version": "4.6.2", @@ -4302,12 +5021,8 @@ "lodash.range": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/lodash.range/-/lodash.range-3.2.0.tgz", - "integrity": "sha512-Fgkb7SinmuzqgIhNhAElo0BL/R1rHCnhwSZf78omqSwvWqD0kD2ssOAutQonDKH/ldS8BxA72ORYI09qAY9CYg==" - }, - "lodash.set": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/lodash.set/-/lodash.set-4.3.2.tgz", - "integrity": "sha512-4hNPN5jlm/N/HLMCO43v8BXKq9Z7QdAGc/VGrRD61w8gN9g/6jF9A4L1pbUgBLCffi0w9VsXfTOij5x8iTyFvg==" + "integrity": "sha512-Fgkb7SinmuzqgIhNhAElo0BL/R1rHCnhwSZf78omqSwvWqD0kD2ssOAutQonDKH/ldS8BxA72ORYI09qAY9CYg==", + "dev": true }, "log-symbols": { "version": "4.1.0", @@ -4359,6 +5074,14 @@ "yallist": "^4.0.0" } }, + "magic-string": { + "version": "0.30.5", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.5.tgz", + "integrity": "sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA==", + "requires": { + "@jridgewell/sourcemap-codec": "^1.4.15" + } + }, "merge-stream": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", @@ -4391,15 +5114,20 @@ } }, "minimist": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz", - "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==" + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==" }, "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" }, + "nanoid": { + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", + "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==" + }, "natural-compare": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", @@ -4414,6 +5142,11 @@ "path-key": "^3.0.0" } }, + "object-inspect": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", + "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==" + }, "once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", @@ -4510,11 +5243,26 @@ "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==" }, + "picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" + }, "pify": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==" }, + "postcss": { + "version": "8.4.31", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz", + "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==", + "requires": { + "nanoid": "^3.3.6", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + } + }, "prelude-ls": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", @@ -4526,6 +5274,16 @@ "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz", "integrity": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==" }, + "prismjs": { + "version": "1.29.0", + "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.29.0.tgz", + "integrity": "sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==" + }, + "process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==" + }, "proxy-from-env": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.0.0.tgz", @@ -4551,9 +5309,17 @@ "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" }, "qs": { - "version": "6.5.3", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", - "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==" + "version": "6.10.4", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.4.tgz", + "integrity": "sha512-OQiU+C+Ds5qiH91qh/mg0w+8nwQuLjM4F4M/PbmhDOoYehPh+Fb0bDjtR1sOvy7YKxvj28Y/M0PhP5uVX0kB+g==", + "requires": { + "side-channel": "^1.0.4" + } + }, + "querystringify": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", + "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==" }, "queue-microtask": { "version": "1.2.3", @@ -4561,10 +5327,17 @@ "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", "dev": true }, + "quote": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/quote/-/quote-0.4.0.tgz", + "integrity": "sha512-KHp3y3xDjuBhRx+tYKOgzPnVHMRlgpn2rU450GcU4PL24r1H6ls/hfPrxDwX2pvYMlwODHI2l8WwgoV69x5rUQ==", + "dev": true + }, "ramda": { "version": "0.25.0", "resolved": "https://registry.npmjs.org/ramda/-/ramda-0.25.0.tgz", - "integrity": "sha512-GXpfrYVPwx3K7RQ6aYT8KPS8XViSXUVJT1ONhoKPE9VAleW42YE+U+8VEyGWt41EnEQW7gwecYJriTI0pKoecQ==" + "integrity": "sha512-GXpfrYVPwx3K7RQ6aYT8KPS8XViSXUVJT1ONhoKPE9VAleW42YE+U+8VEyGWt41EnEQW7gwecYJriTI0pKoecQ==", + "dev": true }, "request-progress": { "version": "3.0.0", @@ -4577,7 +5350,13 @@ "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==" + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true + }, + "requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==" }, "resolve-from": { "version": "4.0.0", @@ -4641,13 +5420,29 @@ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, "semver": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "requires": { "lru-cache": "^6.0.0" } }, + "set-cookie-parser": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.6.0.tgz", + "integrity": "sha512-RVnVQxTXuerk653XfuliOxBP81Sf0+qfQE73LIYKcyMYHG94AuH0kgrQpRDuTZnSmjpysHmzxJXKNfa6PjFhyQ==" + }, + "set-function-length": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.1.1.tgz", + "integrity": "sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==", + "requires": { + "define-data-property": "^1.1.1", + "get-intrinsic": "^1.2.1", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0" + } + }, "shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", @@ -4661,6 +5456,16 @@ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==" }, + "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", + "object-inspect": "^1.9.0" + } + }, "signal-exit": { "version": "3.0.7", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", @@ -4676,10 +5481,15 @@ "is-fullwidth-code-point": "^3.0.0" } }, + "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==" + }, "sshpk": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.17.0.tgz", - "integrity": "sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==", + "version": "1.18.0", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.18.0.tgz", + "integrity": "sha512-2p2KJZTSqQ/I3+HX42EpYOa2l3f8Erv8MWKsy2I9uf4wA7yFIkXRffYdsx86y6z4vHtV8u7g+pPlr8/4ouAxsQ==", "requires": { "asn1": "~0.2.3", "assert-plus": "^1.0.0", @@ -4754,12 +5564,21 @@ } }, "tough-cookie": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", - "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.3.tgz", + "integrity": "sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw==", "requires": { - "psl": "^1.1.28", - "punycode": "^2.1.1" + "psl": "^1.1.33", + "punycode": "^2.1.1", + "universalify": "^0.2.0", + "url-parse": "^1.5.3" + }, + "dependencies": { + "universalify": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", + "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==" + } } }, "tslib": { @@ -4794,6 +5613,11 @@ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==" }, + "undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==" + }, "universalify": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", @@ -4808,10 +5632,20 @@ "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, "requires": { "punycode": "^2.1.0" } }, + "url-parse": { + "version": "1.5.10", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", + "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", + "requires": { + "querystringify": "^2.1.1", + "requires-port": "^1.0.0" + } + }, "uuid": { "version": "8.3.2", "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", @@ -4827,6 +5661,18 @@ "extsprintf": "^1.2.0" } }, + "vue": { + "version": "3.3.9", + "resolved": "https://registry.npmjs.org/vue/-/vue-3.3.9.tgz", + "integrity": "sha512-sy5sLCTR8m6tvUk1/ijri3Yqzgpdsmxgj6n6yl7GXXCXqVbmW2RCXe9atE4cEI6Iv7L89v5f35fZRRr5dChP9w==", + "requires": { + "@vue/compiler-dom": "3.3.9", + "@vue/compiler-sfc": "3.3.9", + "@vue/runtime-dom": "3.3.9", + "@vue/server-renderer": "3.3.9", + "@vue/shared": "3.3.9" + } + }, "which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", @@ -4836,9 +5682,9 @@ } }, "word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", "dev": true }, "wrap-ansi": { @@ -4859,7 +5705,8 @@ "xtend": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "dev": true }, "yallist": { "version": "4.0.0", @@ -4885,6 +5732,7 @@ "version": "2.0.0-rc.2", "resolved": "https://registry.npmjs.org/zaproxy/-/zaproxy-2.0.0-rc.2.tgz", "integrity": "sha512-OH9CtBgem9vcB25/qVQaxp30dFiChW7VsHuTCC1nodyR4FkqiicTF6/cX3MGaeJTssRpDUmZMGfsDxs+wsGKsw==", + "dev": true, "requires": { "axios": "^1.3.3" } diff --git a/CypressTests/package.json b/CypressTests/package.json index dabf4c6ac..6bde9bca5 100644 --- a/CypressTests/package.json +++ b/CypressTests/package.json @@ -1,29 +1,43 @@ { - "name": "cypresstests", + "name": "academies-api-cypress-tests", "version": "1.0.0", - "description": "API tests for Service Support", + "description": "Automated regression tests for the Academies API", "main": "index.js", "scripts": { "cy:open": "cypress open", "cy:run": "cypress run", "lint": "eslint . --ext .js,.cy.js,.jsx,.ts,.tsx" }, + "repository": { + "type": "git", + "url": "git+https://github.com/DFE-Digital/academies-api.git" + }, "keywords": [ "api", "testing", "cypress" ], - "author": "Mike Dally", + "contributors": [ + "Mike Dally", + "Lisa Sau", + "Chris Sherlock", + "Dan Good" + ], "license": "ISC", + "bugs": { + "url": "https://github.com/DFE-Digital/academies-api/issues" + }, + "homepage": "https://github.com/DFE-Digital/academies-api#readme", "dependencies": { - "@cypress/schema-tools": "^1.3.1", - "ajv": "^8.10.0", - "ajv-formats": "^2.1.1", - "cypress": "^9.2.1", - "zaproxy": "^2.0.0-rc.2" + "cypress-plugin-api": "^2.11.1" }, "devDependencies": { + "@cypress/schema-tools": "^4.7.10", + "ajv": "^8.10.0", + "ajv-formats": "^2.1.1", + "cypress": "^13.6.0", "eslint": "^8.43.0", - "eslint-plugin-cypress": "^2.13.3" + "eslint-plugin-cypress": "^2.13.3", + "zaproxy": "^2.0.0-rc.2" } } From 1aff4767d381a9678950734d79c2f9859923c371 Mon Sep 17 00:00:00 2001 From: Chris Sherlock Date: Tue, 28 Nov 2023 13:57:43 +0000 Subject: [PATCH 2/8] Cypress - Move dep to dev dependency --- CypressTests/package.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/CypressTests/package.json b/CypressTests/package.json index 6bde9bca5..5eced3ed9 100644 --- a/CypressTests/package.json +++ b/CypressTests/package.json @@ -29,13 +29,14 @@ }, "homepage": "https://github.com/DFE-Digital/academies-api#readme", "dependencies": { - "cypress-plugin-api": "^2.11.1" + }, "devDependencies": { "@cypress/schema-tools": "^4.7.10", "ajv": "^8.10.0", "ajv-formats": "^2.1.1", "cypress": "^13.6.0", + "cypress-plugin-api": "^2.11.1", "eslint": "^8.43.0", "eslint-plugin-cypress": "^2.13.3", "zaproxy": "^2.0.0-rc.2" From 58740aa098aca67b5d76321f3a32b69dbf8a4304 Mon Sep 17 00:00:00 2001 From: Chris Sherlock Date: Tue, 28 Nov 2023 13:59:36 +0000 Subject: [PATCH 3/8] Cypress: tidy up lingering unnecessary package.json info --- CypressTests/package.json | 3 --- 1 file changed, 3 deletions(-) diff --git a/CypressTests/package.json b/CypressTests/package.json index 5eced3ed9..f8ec15774 100644 --- a/CypressTests/package.json +++ b/CypressTests/package.json @@ -28,9 +28,6 @@ "url": "https://github.com/DFE-Digital/academies-api/issues" }, "homepage": "https://github.com/DFE-Digital/academies-api#readme", - "dependencies": { - - }, "devDependencies": { "@cypress/schema-tools": "^4.7.10", "ajv": "^8.10.0", From 89dc5f1463a5bd765d5950efc7928b175968dd98 Mon Sep 17 00:00:00 2001 From: Chris Sherlock Date: Tue, 28 Nov 2023 14:53:00 +0000 Subject: [PATCH 4/8] Cypress: Add skeleton test classes for v4 endpoints --- .../cypress/e2e/v1/healthchecks.cy.js | 76 ++++++++++--------- .../cypress/e2e/v2/get-fss-projects.cy.js | 19 ++--- .../cypress/e2e/v4/establishments.cy.js | 67 ++++++++++++++++ CypressTests/cypress/e2e/v4/trusts.cy.js | 57 ++++++++++++++ 4 files changed, 174 insertions(+), 45 deletions(-) create mode 100644 CypressTests/cypress/e2e/v4/establishments.cy.js create mode 100644 CypressTests/cypress/e2e/v4/trusts.cy.js diff --git a/CypressTests/cypress/e2e/v1/healthchecks.cy.js b/CypressTests/cypress/e2e/v1/healthchecks.cy.js index 83df2bba2..f4634337c 100644 --- a/CypressTests/cypress/e2e/v1/healthchecks.cy.js +++ b/CypressTests/cypress/e2e/v1/healthchecks.cy.js @@ -1,39 +1,43 @@ -describe("Health Check and Database Check", () => { - let apiKey = Cypress.env('apiKey'); - let url = Cypress.env('url') +describe("Health and Database Checks", () => { + let apiKey = Cypress.env('apiKey'); + let url = Cypress.env('url') - it('Health Check', () => { - cy.api({ - method : 'GET', - failOnStatusCode: false, - url: url+"/HealthCheck", - headers: { - ApiKey: apiKey, - "Content-type" : "application/json" - } - }) - .then((response)=>{ - expect(response.body).to.contain('Health check ok'); - expect(response.status).to.eq(200); - cy.log(JSON.stringify(response.body)); - }) - }); + context('Health check endpoint', () => { + it('should return a healthy response', () => { + cy.api({ + method: 'GET', + failOnStatusCode: false, + url: url + "/HealthCheck", + headers: { + ApiKey: apiKey, + "Content-type": "application/json" + } + }) + .then((response) => { + expect(response.body).to.contain('Health check ok'); + expect(response.status).to.eq(200); + cy.log(JSON.stringify(response.body)); + }) + }) + }) - it('Database Check', () => { - cy.api({ - method : 'GET', - failOnStatusCode: false, - url: url+"check_db", - headers: { - ApiKey: apiKey, - "Content-type" : "application/json" - } - }) - .then((response)=>{ - expect(response.status).to.eq(200); - expect(response.body).to.eq(true); - cy.log("Database Check = "+JSON.stringify(response.body)); - }) - }); + context('Database check endpoint', () => { + it('should return a healthy response', () => { + cy.api({ + method: 'GET', + failOnStatusCode: false, + url: url + "check_db", + headers: { + ApiKey: apiKey, + "Content-type": "application/json" + } + }) + .then((response) => { + expect(response.status).to.eq(200); + expect(response.body).to.eq(true); + cy.log("Database Check = " + JSON.stringify(response.body)); + }) + }) + }) - }); \ No newline at end of file +}) diff --git a/CypressTests/cypress/e2e/v2/get-fss-projects.cy.js b/CypressTests/cypress/e2e/v2/get-fss-projects.cy.js index 2f8ae1f66..bcf982aab 100644 --- a/CypressTests/cypress/e2e/v2/get-fss-projects.cy.js +++ b/CypressTests/cypress/e2e/v2/get-fss-projects.cy.js @@ -1,24 +1,25 @@ /// -describe("GET fss-projects", () => { - let apiKey = Cypress.env('apiKey'); - let url = Cypress.env('url') +describe("Free Schools Store endpoint", () => { + + const apiKey = Cypress.env('apiKey'); + const url = Cypress.env('url') + it("Should return a valid 200 response", () => { cy.api({ - failOnStatusCode: false, - url: url+"/v2/fss/projects", + url: url + "/v2/fss/projects", headers: { ApiKey: apiKey, } }).its('status').should('eq', 200) - }); + }) it("Should return a valid 401 response when omitting API key", () => { cy.api({ failOnStatusCode: false, - url: url+"/v2/fss/projects", + url: url + "/v2/fss/projects", headers: { ApiKey: '', } }).its('status').should('eq', 401) - }); -}); + }) +}) diff --git a/CypressTests/cypress/e2e/v4/establishments.cy.js b/CypressTests/cypress/e2e/v4/establishments.cy.js new file mode 100644 index 000000000..2350a2b58 --- /dev/null +++ b/CypressTests/cypress/e2e/v4/establishments.cy.js @@ -0,0 +1,67 @@ +describe('Establishment endpoints tests', () => { + + const apiKey = Cypress.env('apiKey'); + const url = Cypress.env('url') + + context('Search Establishments', () => { + + it.skip('should return a list of establishments when no search parameters set', () => { + + }) + + it.skip('should return establishments when name set', () => { + + }) + + it.skip('should return establishments when UKPRN set', () => { + + }) + + it.skip('should return establishments when URN set', () => { + + }) + }) + + context('Get Establishment URNs by Region', () => { + + it.skip('should return a list of URNs when a single region is provided', () => { + + }) + + it.skip('should return a list of URNs when multiple regions are provided', () => { + + }) + }) + + context('Get Establishment by UKPRN', () => { + + it.skip('should return establishments when UKPRN set', () => { + + }) + }) + + context('Get Establishment by URN', () => { + + it.skip('should return a single establishment when a URN is provided', () => { + + }) + }) + + context('Bulk Get Establishments by URN', () => { + + it.skip('should return a single establishment when a URN is provided', () => { + + }) + + it.skip('should return a list of establishments when multiple URNs are provided', () => { + + }) + }) + + context('Get Establishments by Trust', () => { + + it.skip('should return establishments when UKPRN set', () => { + + }) + }) +}) diff --git a/CypressTests/cypress/e2e/v4/trusts.cy.js b/CypressTests/cypress/e2e/v4/trusts.cy.js new file mode 100644 index 000000000..15dc3950a --- /dev/null +++ b/CypressTests/cypress/e2e/v4/trusts.cy.js @@ -0,0 +1,57 @@ +describe('Trusts endpoints tests', () => { + + const apiKey = Cypress.env('apiKey'); + const url = Cypress.env('url') + + context('Search Trusts', () => { + + it.skip('should return a list of trusts when default search parameters set', () => { + + }) + + it.skip('should return a single trust when group name set', () => { + + }) + + it.skip('should return a single trust when UKPRN set', () => { + + }) + + it.skip('should return a single trust when Companies House Number set', () => { + + }) + }) + + context('Get Trust by UKPRN', () => { + + it.skip('should return a single trust when UKPRN set', () => { + + }) + }) + + context('Bulk Get Trusts by UKPRN', () => { + + it.skip('should return a single trust when a single UKPRN is provided', () => { + + }) + + it.skip('should return a list of trusts when multiple UKPRNs provided', () => { + + }) + }) + + context('Get Trust by Companies House Number', () => { + + it.skip('should return a single trust when Companies House Number set', () => { + + }) + }) + + context('Get Trusts by Trust Reference Number', () => { + + it.skip('should return a single trust when Trust Reference Number set', () => { + + }) + }) + +}) From 852916b6ffaef18d77cacf01a8c0c8b6e9bf0826 Mon Sep 17 00:00:00 2001 From: Chris Sherlock Date: Tue, 28 Nov 2023 16:30:01 +0000 Subject: [PATCH 5/8] Add basic tests for v4 establishment endpoints --- .../cypress/e2e/v4/establishments.cy.js | 214 ++++++++++++++++-- cypress.json | 3 - 2 files changed, 190 insertions(+), 27 deletions(-) delete mode 100644 cypress.json diff --git a/CypressTests/cypress/e2e/v4/establishments.cy.js b/CypressTests/cypress/e2e/v4/establishments.cy.js index 2350a2b58..caae63c61 100644 --- a/CypressTests/cypress/e2e/v4/establishments.cy.js +++ b/CypressTests/cypress/e2e/v4/establishments.cy.js @@ -1,67 +1,233 @@ describe('Establishment endpoints tests', () => { - const apiKey = Cypress.env('apiKey'); - const url = Cypress.env('url') + const apiKey = Cypress.env('apiKey') + const baseUrlV4 = `${Cypress.env('url')}/v4` context('Search Establishments', () => { - - it.skip('should return a list of establishments when no search parameters set', () => { + it('should return a list of establishments when no search parameters set', () => { + + cy.api({ + method: 'GET', + url: `${baseUrlV4}/establishments`, + headers: { + ApiKey: apiKey, + "Content-type": "application/json" + } + }) + .then((response) => { + expect(response.status).to.eq(200); + // TODO add more response checks + }) }) - it.skip('should return establishments when name set', () => { - + it('should return establishments when name set', () => { + + cy.api({ + method: 'GET', + url: `${baseUrlV4}/establishments`, + qs: { + name: 'The Aldgate School' + }, + headers: { + ApiKey: apiKey, + "Content-type": "application/json" + } + }) + .then((response) => { + expect(response.status).to.eq(200); + // TODO add more response checks + }) }) - it.skip('should return establishments when UKPRN set', () => { - + it('should return establishments when UKPRN set', () => { + + cy.api({ + method: 'GET', + url: `${baseUrlV4}/establishments`, + qs: { + ukPrn: '10079319' + }, + headers: { + ApiKey: apiKey, + "Content-type": "application/json" + } + }) + .then((response) => { + expect(response.status).to.eq(200); + // TODO add more response checks + }) }) - it.skip('should return establishments when URN set', () => { - + it('should return establishments when URN set', () => { + + cy.api({ + method: 'GET', + url: `${baseUrlV4}/establishments`, + qs: { + urn: '100000' + }, + headers: { + ApiKey: apiKey, + "Content-type": "application/json" + } + }) + .then((response) => { + expect(response.status).to.eq(200); + // TODO add more response checks + }) }) }) context('Get Establishment URNs by Region', () => { - it.skip('should return a list of URNs when a single region is provided', () => { - + it('should return a list of URNs when a single region is provided', () => { + + cy.api({ + method: 'GET', + url: `${baseUrlV4}/establishment/regions`, + qs: { + regions: 'North West' + }, + headers: { + ApiKey: apiKey, + "Content-type": "application/json" + } + }) + .then((response) => { + expect(response.status).to.eq(200); + // TODO add more response checks + }) }) - it.skip('should return a list of URNs when multiple regions are provided', () => { - + it('should return a list of URNs when multiple regions are provided', () => { + + cy.api({ + method: 'GET', + url: `${baseUrlV4}/establishment/regions`, + qs: { + regions: 'North West', + regions: 'South West' + }, + headers: { + ApiKey: apiKey, + "Content-type": "application/json" + } + }) + .then((response) => { + expect(response.status).to.eq(200); + // TODO add more response checks + }) }) }) context('Get Establishment by UKPRN', () => { - it.skip('should return establishments when UKPRN set', () => { - + const ukPrn = '10079319' + + it('should return establishments when UKPRN set', () => { + + cy.api({ + method: 'GET', + url: `${baseUrlV4}/establishment/${ukPrn}`, + headers: { + ApiKey: apiKey, + "Content-type": "application/json" + } + }) + .then((response) => { + expect(response.status).to.eq(200); + // TODO add more response checks + }) }) }) context('Get Establishment by URN', () => { - it.skip('should return a single establishment when a URN is provided', () => { - + const urn = '100000'; + + it('should return a single establishment when a URN is provided', () => { + + cy.api({ + method: 'GET', + url: `${baseUrlV4}/establishment/urn/${urn}`, + headers: { + ApiKey: apiKey, + "Content-type": "application/json" + } + }) + .then((response) => { + expect(response.status).to.eq(200); + // TODO add more response checks + }) }) }) context('Bulk Get Establishments by URN', () => { - it.skip('should return a single establishment when a URN is provided', () => { - + const urns = [100000, 100002]; + + it('should return a single establishment when a URN is provided', () => { + + cy.api({ + method: 'GET', + url: `${baseUrlV4}/establishments/bulk`, + qs: { + request: urns[0], + }, + headers: { + ApiKey: apiKey, + "Content-type": "application/json" + } + }) + .then((response) => { + expect(response.status).to.eq(200); + // TODO add more response checks + }) }) - it.skip('should return a list of establishments when multiple URNs are provided', () => { - + it('should return a list of establishments when multiple URNs are provided', () => { + + cy.api({ + method: 'GET', + url: `${baseUrlV4}/establishments/bulk`, + qs: { + request: urns[0], + request: urns[1] + }, + headers: { + ApiKey: apiKey, + "Content-type": "application/json" + } + }) + .then((response) => { + expect(response.status).to.eq(200); + // TODO add more response checks + }) }) }) context('Get Establishments by Trust', () => { - it.skip('should return establishments when UKPRN set', () => { - + const trustUkprn = '10067112' + + it('should return establishments when trust UKPRN set', () => { + + cy.api({ + method: 'GET', + url: `${baseUrlV4}/establishments/trust`, + qs: { + trustUkprn: trustUkprn + }, + headers: { + ApiKey: apiKey, + "Content-type": "application/json" + } + }) + .then((response) => { + expect(response.status).to.eq(200); + // TODO add more response checks + }) }) }) }) diff --git a/cypress.json b/cypress.json deleted file mode 100644 index 2308bc9d4..000000000 --- a/cypress.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "nodeVersion": "bundled" -} From e8a46d329bbedca76d6ab8809f69bb5ff05e1801 Mon Sep 17 00:00:00 2001 From: Chris Sherlock Date: Tue, 28 Nov 2023 16:46:37 +0000 Subject: [PATCH 6/8] Add basic v4 trusts endpoints tests --- CypressTests/cypress/e2e/v4/trusts.cy.js | 176 ++++++++++++++++++++--- 1 file changed, 157 insertions(+), 19 deletions(-) diff --git a/CypressTests/cypress/e2e/v4/trusts.cy.js b/CypressTests/cypress/e2e/v4/trusts.cy.js index 15dc3950a..c1b3c86ac 100644 --- a/CypressTests/cypress/e2e/v4/trusts.cy.js +++ b/CypressTests/cypress/e2e/v4/trusts.cy.js @@ -1,56 +1,194 @@ describe('Trusts endpoints tests', () => { const apiKey = Cypress.env('apiKey'); - const url = Cypress.env('url') + const baseUrlV4 = `${Cypress.env('url')}/v4` + const companiesHouseNumber = '11082297' + const ukprns = ['10067112', '10067113'] + const groupName = 'SOUTH YORK MULTI ACADEMY TRUST' + const trustReferenceNumber = 'TR03739' context('Search Trusts', () => { - it.skip('should return a list of trusts when default search parameters set', () => { - + it('should return a list of trusts when default search parameters set', () => { + + cy.api({ + method: 'GET', + url: `${baseUrlV4}/trusts`, + qs: { + page: 1, + count: 10 + }, + headers: { + ApiKey: apiKey, + "Content-type": "application/json" + } + }) + .then((response) => { + expect(response.status).to.eq(200); + // TODO add more response checks + }) }) - it.skip('should return a single trust when group name set', () => { - + it('should return a single trust when group name set', () => { + + cy.api({ + method: 'GET', + url: `${baseUrlV4}/trusts`, + qs: { + groupName: groupName, + page: 1, + count: 10 + }, + headers: { + ApiKey: apiKey, + "Content-type": "application/json" + } + }) + .then((response) => { + expect(response.status).to.eq(200); + // TODO add more response checks + }) }) - it.skip('should return a single trust when UKPRN set', () => { - + it('should return a single trust when UKPRN set', () => { + + cy.api({ + method: 'GET', + url: `${baseUrlV4}/trusts`, + qs: { + ukPrn: ukprns[0], + page: 1, + count: 10 + }, + headers: { + ApiKey: apiKey, + "Content-type": "application/json" + } + }) + .then((response) => { + expect(response.status).to.eq(200); + // TODO add more response checks + }) }) - it.skip('should return a single trust when Companies House Number set', () => { - + it('should return a single trust when Companies House Number set', () => { + + cy.api({ + method: 'GET', + url: `${baseUrlV4}/trusts`, + qs: { + companiesHouseNumber: companiesHouseNumber, + page: 1, + count: 10 + }, + headers: { + ApiKey: apiKey, + "Content-type": "application/json" + } + }) + .then((response) => { + expect(response.status).to.eq(200); + // TODO add more response checks + }) }) }) context('Get Trust by UKPRN', () => { - it.skip('should return a single trust when UKPRN set', () => { - + it('should return a single trust when UKPRN set', () => { + + cy.api({ + method: 'GET', + url: `${baseUrlV4}/trust/${ukprns[0]}`, + headers: { + ApiKey: apiKey, + "Content-type": "application/json" + } + }) + .then((response) => { + expect(response.status).to.eq(200); + // TODO add more response checks + }) }) }) context('Bulk Get Trusts by UKPRN', () => { - it.skip('should return a single trust when a single UKPRN is provided', () => { - + it('should return a single trust when a single UKPRN is provided', () => { + + cy.api({ + method: 'GET', + url: `${baseUrlV4}/trusts/bulk`, + qs: { + ukprns: ukprns[0] + }, + headers: { + ApiKey: apiKey, + "Content-type": "application/json" + } + }) + .then((response) => { + expect(response.status).to.eq(200); + // TODO add more response checks + }) }) - it.skip('should return a list of trusts when multiple UKPRNs provided', () => { - + it('should return a list of trusts when multiple UKPRNs provided', () => { + + cy.api({ + method: 'GET', + url: `${baseUrlV4}/trusts/bulk`, + qs: { + ukprns: ukprns[0], + ukprn: ukprns[1] + }, + headers: { + ApiKey: apiKey, + "Content-type": "application/json" + } + }) + .then((response) => { + expect(response.status).to.eq(200); + // TODO add more response checks + }) }) }) context('Get Trust by Companies House Number', () => { - it.skip('should return a single trust when Companies House Number set', () => { - + it('should return a single trust when Companies House Number set', () => { + + cy.api({ + method: 'GET', + url: `${baseUrlV4}/trust/companiesHouseNumber/${companiesHouseNumber}`, + headers: { + ApiKey: apiKey, + "Content-type": "application/json" + } + }) + .then((response) => { + expect(response.status).to.eq(200); + // TODO add more response checks + }) }) }) context('Get Trusts by Trust Reference Number', () => { - it.skip('should return a single trust when Trust Reference Number set', () => { - + it('should return a single trust when Trust Reference Number set', () => { + + cy.api({ + method: 'GET', + url: `${baseUrlV4}/trust/trustReferenceNumber/${trustReferenceNumber}`, + headers: { + ApiKey: apiKey, + "Content-type": "application/json" + } + }) + .then((response) => { + expect(response.status).to.eq(200); + // TODO add more response checks + }) }) }) From c32f5a25e568e70489751cc19adb7f1c1ce8e383 Mon Sep 17 00:00:00 2001 From: Chris Sherlock Date: Wed, 29 Nov 2023 12:15:44 +0000 Subject: [PATCH 7/8] Add more checks for trust and endpoint tests --- .../cypress/e2e/v4/establishments.cy.js | 89 ++++++++++--------- CypressTests/cypress/e2e/v4/trusts.cy.js | 38 +++++--- 2 files changed, 70 insertions(+), 57 deletions(-) diff --git a/CypressTests/cypress/e2e/v4/establishments.cy.js b/CypressTests/cypress/e2e/v4/establishments.cy.js index caae63c61..2c0e45fbc 100644 --- a/CypressTests/cypress/e2e/v4/establishments.cy.js +++ b/CypressTests/cypress/e2e/v4/establishments.cy.js @@ -2,6 +2,10 @@ describe('Establishment endpoints tests', () => { const apiKey = Cypress.env('apiKey') const baseUrlV4 = `${Cypress.env('url')}/v4` + const name = 'The Aldgate School' + const ukPrn = '10079319' + const urns = [100000, 100002] + const trustUkprn = '10067112' context('Search Establishments', () => { @@ -16,8 +20,8 @@ describe('Establishment endpoints tests', () => { } }) .then((response) => { - expect(response.status).to.eq(200); - // TODO add more response checks + expect(response.status).to.eq(200) + expect(response.body).to.have.lengthOf.at.least(1).and.lengthOf.at.most(100) }) }) @@ -27,7 +31,7 @@ describe('Establishment endpoints tests', () => { method: 'GET', url: `${baseUrlV4}/establishments`, qs: { - name: 'The Aldgate School' + name: name }, headers: { ApiKey: apiKey, @@ -35,8 +39,8 @@ describe('Establishment endpoints tests', () => { } }) .then((response) => { - expect(response.status).to.eq(200); - // TODO add more response checks + expect(response.status).to.eq(200) + expect(response.body[0].name).to.eq(name) }) }) @@ -54,8 +58,8 @@ describe('Establishment endpoints tests', () => { } }) .then((response) => { - expect(response.status).to.eq(200); - // TODO add more response checks + expect(response.status).to.eq(200) + expect(response.body[0].ukprn).to.eq(ukPrn) }) }) @@ -65,7 +69,7 @@ describe('Establishment endpoints tests', () => { method: 'GET', url: `${baseUrlV4}/establishments`, qs: { - urn: '100000' + urn: `${urns[0]}` }, headers: { ApiKey: apiKey, @@ -73,8 +77,8 @@ describe('Establishment endpoints tests', () => { } }) .then((response) => { - expect(response.status).to.eq(200); - // TODO add more response checks + expect(response.status).to.eq(200) + expect(response.body[0].urn).to.eq(`${urns[0]}`) }) }) }) @@ -95,36 +99,37 @@ describe('Establishment endpoints tests', () => { } }) .then((response) => { - expect(response.status).to.eq(200); - // TODO add more response checks + expect(response.status).to.eq(200) + expect(response.body).to.have.lengthOf.at.least(1) }) }) it('should return a list of URNs when multiple regions are provided', () => { + /* TODO Update to make use of qs in request once issue #17921 resolved, see + * https://github.com/cypress-io/cypress/issues/17921 + */ cy.api({ method: 'GET', - url: `${baseUrlV4}/establishment/regions`, - qs: { - regions: 'North West', - regions: 'South West' - }, + url: `${baseUrlV4}/establishment/regions?regions=North%20West®ions=South%20West`, + // qs: { + // regions: 'North West', + // regions: 'South West' + // }, headers: { ApiKey: apiKey, "Content-type": "application/json" } }) .then((response) => { - expect(response.status).to.eq(200); - // TODO add more response checks + expect(response.status).to.eq(200) + expect(response.body).to.have.lengthOf.at.least(1) }) }) }) context('Get Establishment by UKPRN', () => { - const ukPrn = '10079319' - it('should return establishments when UKPRN set', () => { cy.api({ @@ -136,37 +141,33 @@ describe('Establishment endpoints tests', () => { } }) .then((response) => { - expect(response.status).to.eq(200); - // TODO add more response checks + expect(response.status).to.eq(200) + expect(response.body.ukprn).to.eq(ukPrn) }) }) }) context('Get Establishment by URN', () => { - const urn = '100000'; - it('should return a single establishment when a URN is provided', () => { cy.api({ method: 'GET', - url: `${baseUrlV4}/establishment/urn/${urn}`, + url: `${baseUrlV4}/establishment/urn/${urns[0]}`, headers: { ApiKey: apiKey, "Content-type": "application/json" } }) .then((response) => { - expect(response.status).to.eq(200); - // TODO add more response checks + expect(response.status).to.eq(200) + expect(response.body.urn).to.eq(`${urns[0]}`) }) }) }) context('Bulk Get Establishments by URN', () => { - const urns = [100000, 100002]; - it('should return a single establishment when a URN is provided', () => { cy.api({ @@ -181,36 +182,38 @@ describe('Establishment endpoints tests', () => { } }) .then((response) => { - expect(response.status).to.eq(200); - // TODO add more response checks + expect(response.status).to.eq(200) + expect(response.body[0].urn).to.eq(`${urns[0]}`) }) }) it('should return a list of establishments when multiple URNs are provided', () => { + /* TODO Update to make use of qs in request once issue #17921 resolved, see + * https://github.com/cypress-io/cypress/issues/17921 + */ cy.api({ method: 'GET', - url: `${baseUrlV4}/establishments/bulk`, - qs: { - request: urns[0], - request: urns[1] - }, + url: `${baseUrlV4}/establishments/bulk?request=${urns[0]}&request=${urns[1]}`, + // qs: { + // request: urns[0], + // request: urns[1] + // }, headers: { ApiKey: apiKey, "Content-type": "application/json" } }) .then((response) => { - expect(response.status).to.eq(200); - // TODO add more response checks + expect(response.status).to.eq(200) + expect(response.body[0].urn).to.eq(`${urns[0]}`) + expect(response.body[1].urn).to.eq(`${urns[1]}`) }) }) }) context('Get Establishments by Trust', () => { - const trustUkprn = '10067112' - it('should return establishments when trust UKPRN set', () => { cy.api({ @@ -225,8 +228,8 @@ describe('Establishment endpoints tests', () => { } }) .then((response) => { - expect(response.status).to.eq(200); - // TODO add more response checks + expect(response.status).to.eq(200) + expect(response.body).to.have.lengthOf.at.least(1) }) }) }) diff --git a/CypressTests/cypress/e2e/v4/trusts.cy.js b/CypressTests/cypress/e2e/v4/trusts.cy.js index c1b3c86ac..166deb8b3 100644 --- a/CypressTests/cypress/e2e/v4/trusts.cy.js +++ b/CypressTests/cypress/e2e/v4/trusts.cy.js @@ -25,7 +25,8 @@ describe('Trusts endpoints tests', () => { }) .then((response) => { expect(response.status).to.eq(200); - // TODO add more response checks + expect(response.body.data).to.have.lengthOf.at.least(1).and.lengthOf.at.most(10) + expect(response.body.paging.page).to.eq(1) }) }) @@ -46,7 +47,7 @@ describe('Trusts endpoints tests', () => { }) .then((response) => { expect(response.status).to.eq(200); - // TODO add more response checks + expect(response.body.data[0].name).to.eq(groupName) }) }) @@ -67,7 +68,7 @@ describe('Trusts endpoints tests', () => { }) .then((response) => { expect(response.status).to.eq(200); - // TODO add more response checks + expect(response.body.data[0].name).to.eq(groupName) }) }) @@ -88,7 +89,8 @@ describe('Trusts endpoints tests', () => { }) .then((response) => { expect(response.status).to.eq(200); - // TODO add more response checks + expect(response.body.data[0].name).to.eq(groupName) + expect(response.body.data[0].companiesHouseNumber).to.eq(companiesHouseNumber) }) }) }) @@ -107,7 +109,7 @@ describe('Trusts endpoints tests', () => { }) .then((response) => { expect(response.status).to.eq(200); - // TODO add more response checks + expect(response.body.name).to.eq(groupName) }) }) }) @@ -129,19 +131,22 @@ describe('Trusts endpoints tests', () => { }) .then((response) => { expect(response.status).to.eq(200); - // TODO add more response checks + expect(response.body[0].name).to.eq(groupName) + expect(response.body[0].ukprn).to.eq(ukprns[0]) }) }) it('should return a list of trusts when multiple UKPRNs provided', () => { + /* TODO Update to make use of qs in request once issue #17921 resolved, see + * https://github.com/cypress-io/cypress/issues/17921 + */ cy.api({ method: 'GET', - url: `${baseUrlV4}/trusts/bulk`, - qs: { - ukprns: ukprns[0], - ukprn: ukprns[1] - }, + url: `${baseUrlV4}/trusts/bulk?ukprns=${ukprns[0]}&ukprns=${ukprns[1]}`, + // qs: { + // ukprns: [ukprns[0], ukprns[1]] + // }, headers: { ApiKey: apiKey, "Content-type": "application/json" @@ -149,7 +154,10 @@ describe('Trusts endpoints tests', () => { }) .then((response) => { expect(response.status).to.eq(200); - // TODO add more response checks + expect(response.body[0].name).to.eq(groupName) + expect(response.body[0].ukprn).to.eq(ukprns[0]) + expect(response.body[1].name).to.eq('THE BISHOP FRASER TRUST') + expect(response.body[1].ukprn).to.eq(ukprns[1]) }) }) }) @@ -168,7 +176,8 @@ describe('Trusts endpoints tests', () => { }) .then((response) => { expect(response.status).to.eq(200); - // TODO add more response checks + expect(response.body.name).to.eq(groupName) + expect(response.body.companiesHouseNumber).to.eq(companiesHouseNumber) }) }) }) @@ -187,7 +196,8 @@ describe('Trusts endpoints tests', () => { }) .then((response) => { expect(response.status).to.eq(200); - // TODO add more response checks + expect(response.body.name).to.eq(groupName) + expect(response.body.referenceNumber).to.eq(trustReferenceNumber) }) }) }) From f7bd20dc70123eb5e3c314f25562a42d1f17c2d1 Mon Sep 17 00:00:00 2001 From: Chris Sherlock Date: Wed, 29 Nov 2023 16:04:22 +0000 Subject: [PATCH 8/8] Cypress: Reorder response checks from bulk trust endpoint --- CypressTests/cypress/e2e/v4/trusts.cy.js | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/CypressTests/cypress/e2e/v4/trusts.cy.js b/CypressTests/cypress/e2e/v4/trusts.cy.js index 166deb8b3..3d79da3a0 100644 --- a/CypressTests/cypress/e2e/v4/trusts.cy.js +++ b/CypressTests/cypress/e2e/v4/trusts.cy.js @@ -154,10 +154,11 @@ describe('Trusts endpoints tests', () => { }) .then((response) => { expect(response.status).to.eq(200); - expect(response.body[0].name).to.eq(groupName) - expect(response.body[0].ukprn).to.eq(ukprns[0]) - expect(response.body[1].name).to.eq('THE BISHOP FRASER TRUST') - expect(response.body[1].ukprn).to.eq(ukprns[1]) + // Response isn't in UKPRN order + expect(response.body[1].name).to.eq(groupName) + expect(response.body[1].ukprn).to.eq(ukprns[0]) + expect(response.body[0].name).to.eq('THE BISHOP FRASER TRUST') + expect(response.body[0].ukprn).to.eq(ukprns[1]) }) }) })