From 4ea37918d5e6ab8b2ff473c4fdc205efec1856e5 Mon Sep 17 00:00:00 2001 From: Matthew Evans Date: Tue, 7 Nov 2023 01:01:43 +0000 Subject: [PATCH 01/10] Bump cypress --- webapp/package.json | 8 ++-- webapp/yarn.lock | 102 ++++++++++++++++++++++++++------------------ 2 files changed, 65 insertions(+), 45 deletions(-) diff --git a/webapp/package.json b/webapp/package.json index d5b361571..1af4bf9a6 100644 --- a/webapp/package.json +++ b/webapp/package.json @@ -47,10 +47,10 @@ "devDependencies": { "@babel/core": "^7.12.16", "@babel/eslint-parser": "^7.12.16", - "@testing-library/cypress": "^8.0.0", - "@testing-library/vue": "^6.4.2", + "@testing-library/cypress": "*", + "@testing-library/vue": "*", "@vue/cli-plugin-babel": "~5.0.8", - "@vue/cli-plugin-e2e-cypress": "5.0.8", + "@vue/cli-plugin-e2e-cypress": "*", "@vue/cli-plugin-eslint": "~5.0.8", "@vue/cli-plugin-router": "~5.0.8", "@vue/cli-plugin-vuex": "~5.0.8", @@ -60,7 +60,7 @@ "@vue/test-utils": "^2.0.0-0", "babel-core": "7.0.0-bridge.0", "babel-plugin-transform-remove-console": "^6.9.4", - "cypress": "12.17.2", + "cypress": "13.4.0", "eslint": "^7.32.0", "eslint-config-prettier": "^8.3.0", "eslint-plugin-prettier": "^4.0.0", diff --git a/webapp/yarn.lock b/webapp/yarn.lock index 9d338649a..cee59a7a3 100644 --- a/webapp/yarn.lock +++ b/webapp/yarn.lock @@ -1213,13 +1213,20 @@ resolved "https://registry.yarnpkg.com/@babel/regjsgen/-/regjsgen-0.8.0.tgz#f0ba69b075e1f05fb2825b7fad991e7adbb18310" integrity sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA== -"@babel/runtime@^7.12.13", "@babel/runtime@^7.12.5", "@babel/runtime@^7.14.6", "@babel/runtime@^7.15.4", "@babel/runtime@^7.21.0", "@babel/runtime@^7.8.4": +"@babel/runtime@^7.12.13", "@babel/runtime@^7.12.5", "@babel/runtime@^7.14.6", "@babel/runtime@^7.21.0", "@babel/runtime@^7.8.4": version "7.22.10" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.22.10.tgz#ae3e9631fd947cb7e3610d3e9d8fef5f76696682" integrity sha512-21t/fkKLMZI4pqP2wlmsQAWnYW1PDyKyyUV4vCi+B25ydmdaYTKXPwCj0BzSUnZf4seIiYvSA3jcZ3gdsMFkLQ== dependencies: regenerator-runtime "^0.14.0" +"@babel/runtime@^7.23.2": + version "7.23.2" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.23.2.tgz#062b0ac103261d68a966c4c7baf2ae3e62ec3885" + integrity sha512-mM8eg4yl5D6i3lu2QKPuPH4FArvJ8KhTofbE7jwMUv9KX5mBvwPAqnV3MlyBNqdp9RyRKP6Yck8TrfYrPvX3bg== + dependencies: + regenerator-runtime "^0.14.0" + "@babel/template@^7.22.15": version "7.22.15" resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.22.15.tgz#09576efc3830f0430f4548ef971dde1350ef2f38" @@ -1282,10 +1289,10 @@ resolved "https://registry.yarnpkg.com/@colors/colors/-/colors-1.5.0.tgz#bb504579c1cae923e6576a4f5da43d25f97bdbd9" integrity sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ== -"@cypress/request@^2.88.11": - version "2.88.12" - resolved "https://registry.yarnpkg.com/@cypress/request/-/request-2.88.12.tgz#ba4911431738494a85e93fb04498cb38bc55d590" - integrity sha512-tOn+0mDZxASFM+cuAP9szGUGPI1HwWVSvdzm7V4cCsPdFTx6qMj29CwaQmRAMIEhORIUBFBsYROYJcveK4uOjA== +"@cypress/request@^3.0.0": + version "3.0.1" + resolved "https://registry.yarnpkg.com/@cypress/request/-/request-3.0.1.tgz#72d7d5425236a2413bd3d8bb66d02d9dc3168960" + integrity sha512-TWivJlJi8ZDx2wGOw1dbLuHJKUYX7bWySw377nlnGOW3hP9/MUKIsEdXT/YngWxVdgNCHRBmFlBipE+5/2ZZlQ== dependencies: aws-sign2 "~0.7.0" aws4 "^1.8.0" @@ -1300,7 +1307,7 @@ json-stringify-safe "~5.0.1" mime-types "~2.1.19" performance-now "^2.1.0" - qs "~6.10.3" + qs "6.10.4" safe-buffer "^5.1.2" tough-cookie "^4.1.3" tunnel-agent "^0.6.0" @@ -1654,18 +1661,18 @@ resolved "https://registry.yarnpkg.com/@soda/get-current-script/-/get-current-script-1.0.2.tgz#a53515db25d8038374381b73af20bb4f2e508d87" integrity sha512-T7VNNlYVM1SgQ+VsMYhnDkcGmWhQdL0bDyGm5TlQ3GBXnJscEClUUOKduWTmm2zCnvNLC1hc3JpuXjs/nFOc5w== -"@testing-library/cypress@^8.0.0": - version "8.0.7" - resolved "https://registry.yarnpkg.com/@testing-library/cypress/-/cypress-8.0.7.tgz#18315eba3cf8852808afadf122e4858406384015" - integrity sha512-3HTV725rOS+YHve/gD9coZp/UcPK5xhr4H0GMnq/ni6USdtzVtSOG9WBFtd8rYnrXk8rrGD+0toRFYouJNIG0Q== +"@testing-library/cypress@*": + version "10.0.1" + resolved "https://registry.yarnpkg.com/@testing-library/cypress/-/cypress-10.0.1.tgz#15abae0edb83237316ec6d07e152b71a50b38387" + integrity sha512-e8uswjTZIBhaIXjzEcrQQ8nHRWHgZH7XBxKuIWxZ/T7FxfWhCR48nFhUX5nfPizjVOKSThEfOSv67jquc1ASkw== dependencies: "@babel/runtime" "^7.14.6" - "@testing-library/dom" "^8.1.0" + "@testing-library/dom" "^9.0.0" -"@testing-library/dom@^8.1.0", "@testing-library/dom@^8.5.0": - version "8.20.1" - resolved "https://registry.yarnpkg.com/@testing-library/dom/-/dom-8.20.1.tgz#2e52a32e46fc88369eef7eef634ac2a192decd9f" - integrity sha512-/DiOQ5xBxgdYRC8LNk7U+RWat0S3qRLeIw3ZIkMQ9kkVlRmwD/Eg8k8CqIpD6GW7u20JIUOfMKbxtiLutpjQ4g== +"@testing-library/dom@^9.0.0", "@testing-library/dom@^9.3.3": + version "9.3.3" + resolved "https://registry.yarnpkg.com/@testing-library/dom/-/dom-9.3.3.tgz#108c23a5b0ef51121c26ae92eb3179416b0434f5" + integrity sha512-fB0R+fa3AUqbLHWyxXa2kGVtf1Fe1ZZFr0Zp6AIbIAzXb2mKbEXl+PCQNUOaq5lbTab5tfctfXRNsWXxa2f7Aw== dependencies: "@babel/code-frame" "^7.10.4" "@babel/runtime" "^7.12.5" @@ -1676,14 +1683,14 @@ lz-string "^1.5.0" pretty-format "^27.0.2" -"@testing-library/vue@^6.4.2": - version "6.6.1" - resolved "https://registry.yarnpkg.com/@testing-library/vue/-/vue-6.6.1.tgz#b28d0ce9c0228032873947a1a5a2b96fc9016096" - integrity sha512-vpyBPrHzKTwEGS7ehUC8/IXgnqTBEMk6jd52Gouf51arG2jUorPhmkbsxUwJOyxz6L0gj2ZcmWnznG1OJcTCDQ== +"@testing-library/vue@*": + version "8.0.0" + resolved "https://registry.yarnpkg.com/@testing-library/vue/-/vue-8.0.0.tgz#beec937194b9a3b142cb5f0893ad3bde0bfe93b8" + integrity sha512-SP0qEY/SGpdT9+bPuHxYD3P/HCG0ZY8GlGJocVqdLn9EojbdQu69x06trJi1V7RW9tAZai/wwy+ZFcRsTp47kg== dependencies: - "@babel/runtime" "^7.15.4" - "@testing-library/dom" "^8.5.0" - "@vue/test-utils" "^2.0.0" + "@babel/runtime" "^7.23.2" + "@testing-library/dom" "^9.3.3" + "@vue/test-utils" "^2.4.1" "@tinymce/tinymce-vue@^4.0.0": version "4.0.7" @@ -1918,10 +1925,12 @@ resolved "https://registry.yarnpkg.com/@types/node/-/node-10.17.60.tgz#35f3d6213daed95da7f0f73e75bcc6980e90597b" integrity sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw== -"@types/node@^14.14.31": - version "14.18.54" - resolved "https://registry.yarnpkg.com/@types/node/-/node-14.18.54.tgz#fc304bd66419030141fa997dc5a9e0e374029ae8" - integrity sha512-uq7O52wvo2Lggsx1x21tKZgqkJpvwCseBBPtX/nKQfpVlEsLOb11zZ1CRsWUKvJF0+lzuA9jwvA7Pr2Wt7i3xw== +"@types/node@^18.17.5": + version "18.18.8" + resolved "https://registry.yarnpkg.com/@types/node/-/node-18.18.8.tgz#2b285361f2357c8c8578ec86b5d097c7f464cfd6" + integrity sha512-OLGBaaK5V3VRBS1bAkMVP2/W9B+H8meUfl866OrMNQqt7wDgdpWPp5o6gmIc9pB+lIQHSq4ZL8ypeH1vPxcPaQ== + dependencies: + undici-types "~5.26.4" "@types/normalize-package-data@^2.4.0": version "2.4.1" @@ -2270,7 +2279,7 @@ thread-loader "^3.0.0" webpack "^5.54.0" -"@vue/cli-plugin-e2e-cypress@5.0.8": +"@vue/cli-plugin-e2e-cypress@*": version "5.0.8" resolved "https://registry.yarnpkg.com/@vue/cli-plugin-e2e-cypress/-/cli-plugin-e2e-cypress-5.0.8.tgz#8cd53928abecb77a2a69895e92a4b79c2530ac44" integrity sha512-BasFHQSqDAmFvueaqk/d+s1hJnW0OtWEIgmHZRXg8hYkZJF4pu7kz66DmEAZl6DypfyoSxqwN7WHILYDuKAaEw== @@ -2593,7 +2602,7 @@ resolved "https://registry.yarnpkg.com/@vue/shared/-/shared-3.3.4.tgz#06e83c5027f464eef861c329be81454bc8b70780" integrity sha512-7OjdcV8vQ74eiz1TZLzZP4JwqM5fA94K6yntPS5Z25r9HDuGNzaGdgvwKYq6S+MxwF0TFRwe50fIR/MYnakdkQ== -"@vue/test-utils@^2.0.0", "@vue/test-utils@^2.0.0-0": +"@vue/test-utils@^2.0.0-0", "@vue/test-utils@^2.4.1": version "2.4.1" resolved "https://registry.yarnpkg.com/@vue/test-utils/-/test-utils-2.4.1.tgz#7db869b4142d2a5fce4ad6c6dfa01c8ea524f26c" integrity sha512-VO8nragneNzUZUah6kOjiFmD/gwRjUauG9DROh6oaOeFwX1cZRUNHhdeogE8635cISigXFTtGLUQWx5KCb0xeg== @@ -4342,14 +4351,14 @@ cuid@^2.1.1: resolved "https://registry.yarnpkg.com/cuid/-/cuid-2.1.8.tgz#cbb88f954171e0d5747606c0139fb65c5101eac0" integrity sha512-xiEMER6E7TlTPnDxrM4eRiC6TRgjNX9xzEZ5U/Se2YJKr7Mq4pJn/2XEHjl3STcSh96GmkHPcBXLES8M29wyyg== -cypress@12.17.2: - version "12.17.2" - resolved "https://registry.yarnpkg.com/cypress/-/cypress-12.17.2.tgz#040ac55de1e811f6e037d231a2869d5ab8c29c85" - integrity sha512-hxWAaWbqQBzzMuadSGSuQg5PDvIGOovm6xm0hIfpCVcORsCAj/gF2p0EvfnJ4f+jK2PCiDgP6D2eeE9/FK4Mjg== +cypress@13.4.0: + version "13.4.0" + resolved "https://registry.yarnpkg.com/cypress/-/cypress-13.4.0.tgz#7d91069983ba7c664c505abde84d3e3e20484344" + integrity sha512-KeWNC9xSHG/ewZURVbaQsBQg2mOKw4XhjJZFKjWbEjgZCdxpPXLpJnfq5Jns1Gvnjp6AlnIfpZfWFlDgVKXdWQ== dependencies: - "@cypress/request" "^2.88.11" + "@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" @@ -4382,6 +4391,7 @@ cypress@12.17.2: minimist "^1.2.8" ospath "^1.2.2" pretty-bytes "^5.6.0" + process "^0.11.10" proxy-from-env "1.0.0" request-progress "^3.0.0" semver "^7.5.3" @@ -9235,6 +9245,11 @@ process-nextick-args@~2.0.0: resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== +process@^0.11.10: + version "0.11.10" + resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" + integrity sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A== + progress-webpack-plugin@^1.0.12: version "1.0.16" resolved "https://registry.yarnpkg.com/progress-webpack-plugin/-/progress-webpack-plugin-1.0.16.tgz#278f5c1afd21af783aad72c5ec95241520230fe5" @@ -9317,6 +9332,13 @@ qs-stringify@^1.1.0: resolved "https://registry.yarnpkg.com/qs-stringify/-/qs-stringify-1.2.1.tgz#9b39ef6b816bd83309628fc9dad435fc0eccc28b" integrity sha512-2N5xGLGZUxpgAYq1fD1LmBSCbxQVsXYt5JU0nU3FuPWO8PlCnKNFQwXkZgyB6mrTdg7IbexX4wxIR403dJw9pw== +qs@6.10.4: + version "6.10.4" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.10.4.tgz#6a3003755add91c0ec9eacdc5f878b034e73f9e7" + integrity sha512-OQiU+C+Ds5qiH91qh/mg0w+8nwQuLjM4F4M/PbmhDOoYehPh+Fb0bDjtR1sOvy7YKxvj28Y/M0PhP5uVX0kB+g== + dependencies: + side-channel "^1.0.4" + qs@6.11.0: version "6.11.0" resolved "https://registry.yarnpkg.com/qs/-/qs-6.11.0.tgz#fd0d963446f7a65e1367e01abd85429453f0c37a" @@ -9324,13 +9346,6 @@ qs@6.11.0: dependencies: side-channel "^1.0.4" -qs@~6.10.3: - version "6.10.5" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.10.5.tgz#974715920a80ff6a262264acd2c7e6c2a53282b4" - integrity sha512-O5RlPh0VFtR78y79rgcgKK4wbAI0C5zGVLztOIdpWX6ep368q5Hv6XRxDvXuZ9q3C6v+e3n8UfZZJw7IIG27eQ== - dependencies: - side-channel "^1.0.4" - query-string@^5.0.1: version "5.1.1" resolved "https://registry.yarnpkg.com/query-string/-/query-string-5.1.1.tgz#a78c012b71c17e05f2e3fa2319dd330682efb3cb" @@ -10660,6 +10675,11 @@ unbzip2-stream@^1.0.9: buffer "^5.2.1" through "^2.3.8" +undici-types@~5.26.4: + version "5.26.5" + resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-5.26.5.tgz#bcd539893d00b56e964fd2657a4866b221a65617" + integrity sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA== + unicode-canonical-property-names-ecmascript@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz#301acdc525631670d39f6146e0e77ff6bbdebddc" From 7531fb7bc35940a4fc39b057cff14d708b32f55a Mon Sep 17 00:00:00 2001 From: Matthew Evans Date: Tue, 7 Nov 2023 11:46:59 +0000 Subject: [PATCH 02/10] Begin combining tests --- webapp/cypress/e2e/{sampleTablePage.cy.js => legacy.cy.js} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename webapp/cypress/e2e/{sampleTablePage.cy.js => legacy.cy.js} (100%) diff --git a/webapp/cypress/e2e/sampleTablePage.cy.js b/webapp/cypress/e2e/legacy.cy.js similarity index 100% rename from webapp/cypress/e2e/sampleTablePage.cy.js rename to webapp/cypress/e2e/legacy.cy.js From 091cf1690ec3e23fb8ea305eb73b361ef71373ac Mon Sep 17 00:00:00 2001 From: Matthew Evans Date: Tue, 7 Nov 2023 12:00:56 +0000 Subject: [PATCH 03/10] Migrate batch test code into legacy test monolith --- webapp/cypress/e2e/legacy.cy.js | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/webapp/cypress/e2e/legacy.cy.js b/webapp/cypress/e2e/legacy.cy.js index 33a0cd198..fa6ca7163 100644 --- a/webapp/cypress/e2e/legacy.cy.js +++ b/webapp/cypress/e2e/legacy.cy.js @@ -23,30 +23,34 @@ function createSample(sample_id, name = null, date = null) { function verifySample(sample_id, name = null, date = null) { if (date) { - cy.findByText(sample_id) + cy.get("[data-testid=sample-table]") + .contains(sample_id) .parents("tr") .within(() => { - cy.findByText(date.split("T")[0]); + cy.contains(date.slice(0, 8)); if (name) { - cy.findByText(name); + cy.contains(name); } }); } else { - cy.findByText(sample_id) + cy.get("[data-testid=sample-table]") + .contains(sample_id) .parents("tr") .within(() => { - cy.findByText(TODAY.split("T")[0]); + cy.contains(TODAY.split("T")[0]); if (name) { - cy.findByText(name); + cy.contains(name); } }); } } -function deleteSample(sample_id) { - // wait a bit to allow things to settle - cy.wait(100).then(() => { - cy.findByText(sample_id) +function deleteSample(sample_id, delay = 100) { + cy.wait(delay).then(() => { + cy.log("search for and delete: " + sample_id); + var matchingIds = []; + cy.get("[data-testid=sample-table]") + .contains(sample_id) .parents("tr") .within(() => { cy.get("button.close").click(); From fd3e170590144aa5d13ead6e4cf28d85d6c50e92 Mon Sep 17 00:00:00 2001 From: Matthew Evans Date: Tue, 7 Nov 2023 12:44:28 +0000 Subject: [PATCH 04/10] Better cleanup after edit page test --- webapp/cypress/e2e/editPage.cy.js | 24 ++++++------------------ 1 file changed, 6 insertions(+), 18 deletions(-) diff --git a/webapp/cypress/e2e/editPage.cy.js b/webapp/cypress/e2e/editPage.cy.js index 24ec85721..6d0aa945d 100644 --- a/webapp/cypress/e2e/editPage.cy.js +++ b/webapp/cypress/e2e/editPage.cy.js @@ -258,23 +258,11 @@ describe("Edit Page", () => { cy.get("[data-testid=sample-table] tr:nth-of-type(3) > td:nth-of-type(8)").contains(2); // 2 blocks are present }); - it("cleanup: delete the samples", () => { - cy.findByText("editable_sample") - .parents("tr") - .within(() => { - cy.get("button.close").click(); - }); - - cy.findByText("component1") - .parents("tr") - .within(() => { - cy.get("button.close").click(); - }); - - cy.findByText("component2") - .parents("tr") - .within(() => { - cy.get("button.close").click(); - }); + it("deletes the samples (cleanup)", () => { + ["editable_sample", "component1", "component2"].forEach((item_id) => { + deleteSample(item_id); + }); + + cy.get("[data-testid=sample-table] > tbody > tr").should("have.length", 0); }); }); From 1c7fec870f3881358a8a125ae895a818c8f62a79 Mon Sep 17 00:00:00 2001 From: Matthew Evans Date: Tue, 7 Nov 2023 13:16:17 +0000 Subject: [PATCH 05/10] Make testing a single monolithic spec to avoid isolation issues --- ...ure.cy.js => batchSampleFeature.cy.js.OLD} | 0 .../{editPage.cy.js => editPage.cy.js.OLD} | 0 webapp/cypress/e2e/legacy.cy.js | 999 ++++++++++++++++++ 3 files changed, 999 insertions(+) rename webapp/cypress/e2e/{batchSampleFeature.cy.js => batchSampleFeature.cy.js.OLD} (100%) rename webapp/cypress/e2e/{editPage.cy.js => editPage.cy.js.OLD} (100%) diff --git a/webapp/cypress/e2e/batchSampleFeature.cy.js b/webapp/cypress/e2e/batchSampleFeature.cy.js.OLD similarity index 100% rename from webapp/cypress/e2e/batchSampleFeature.cy.js rename to webapp/cypress/e2e/batchSampleFeature.cy.js.OLD diff --git a/webapp/cypress/e2e/editPage.cy.js b/webapp/cypress/e2e/editPage.cy.js.OLD similarity index 100% rename from webapp/cypress/e2e/editPage.cy.js rename to webapp/cypress/e2e/editPage.cy.js.OLD diff --git a/webapp/cypress/e2e/legacy.cy.js b/webapp/cypress/e2e/legacy.cy.js index fa6ca7163..c79e624d8 100644 --- a/webapp/cypress/e2e/legacy.cy.js +++ b/webapp/cypress/e2e/legacy.cy.js @@ -8,6 +8,42 @@ Cypress.on("window:before:load", (win) => { const TODAY = new Date().toISOString().slice(0, -8); +function getSubmitButton() { + return cy.get("[data-testid=batch-modal-container]").contains("Submit"); +} + +function getBatchAddCell(row, column, additionalSelectors = "") { + return cy.get( + `[data-testid=batch-add-table] > tbody > tr:nth-of-type(${row}) > td:nth-of-type(${column}) ${additionalSelectors}`, + ); +} + +function getBatchTemplateCell(column, additionalSelectors = "") { + return cy.get( + `[data-testid=batch-add-table-template] > tbody > td:nth-of-type(${column}) ${additionalSelectors}`, + ); +} + +function getBatchAddError(row, additionalSelectors = "") { + return cy.get( + `[data-testid=batch-add-table] > tbody > tr:nth-of-type(${row}) + td ${additionalSelectors}`, + ); +} + +function searchAndSelectItem(search_text, selector, delay = 100) { + // searches in the dropdown for the first real item with the given name, looking for a badge + // if click_plus, then also click the add row button before looking for the search bar + cy.get("#synthesis-information").within(() => { + cy.get("svg.add-row-button").click(); + }); + cy.get(selector).first().type(search_text); + cy.wait(delay).then(() => { + cy.get(".vs__dropdown-menu").within(() => { + cy.contains(".badge", search_text).click(); + }); + }); +} + function createSample(sample_id, name = null, date = null) { cy.findByText("Add an item").click(); cy.findByText("Add new sample").should("exist"); @@ -351,3 +387,966 @@ describe("Advanced sample creation features", () => { }); }); }); + +describe("Edit Page", () => { + beforeEach(() => { + cy.visit("/"); + }); + + // afterEach( () => { + // cy.expect(consoleSpy).not.to.be.called + // }); + + it("Loads the main page without any errors", () => { + cy.findByText("About").should("exist"); + cy.findByText("Samples").should("exist"); + cy.findByText("Add an item").should("exist"); + cy.findByText("# of blocks").should("exist"); + cy.wait(1000).then((x) => { + cy.contains("Server Error. Sample list not retreived.").should("not.exist"); + expect(consoleSpy).not.to.be.called; + }); + }); + + it("Adds a valid sample", () => { + cy.findByText("Add an item").click(); + cy.findByText("Add new sample").should("exist"); + cy.findByLabelText("ID:").type("editable_sample"); + cy.findByLabelText("Date Created:").type("1990-01-07T00:00"); + + cy.findByLabelText("Name:").type("This is a sample name"); + cy.contains("Submit").click(); + + cy.findByText("editable_sample"); + cy.findByText("This is a sample name"); + cy.get("tr>td").eq(7).contains(0); // 0 blocks are present + }); + + it("Adds a second valid sample, to use as a component", () => { + cy.findByText("Add an item").click(); + cy.findByText("Add new sample"); + cy.findByLabelText("ID:").type("component1"); + cy.findByLabelText("Name:").type("This is a component"); + cy.contains("Submit").click(); + }); + + it("Adds a third valid sample, to use as a component", () => { + cy.findByText("Add an item").click(); + cy.findByText("Add new sample"); + cy.findByLabelText("ID:").type("component2"); + cy.findByLabelText("Name:").type("This is another component"); + cy.contains("Submit").click(); + }); + + it("Checks editing the sample edit page", () => { + cy.findByText("editable_sample").click(); + cy.findByLabelText("Name").should("have.value", "This is a sample name"); + cy.findByLabelText("Chemical formula").type("NaCoO2", { force: true }); + + cy.findByText("Unsaved changes"); + cy.get(".fa-save").click(); + cy.contains("Unsaved changes").should("not.exist"); + cy.contains("Home").click(); + + cy.findByText("editable_sample"); + cy.findByText("This is a sample name"); + cy.findByText("1990-01-07"); + cy.get("tbody tr:nth-of-type(3)").contains("NaCoO2"); // sorta check the formula + }); + + it("adds a chemical formula to component1", () => { + cy.findByText("component1").click(); + cy.findByLabelText("Chemical formula").type("Na2O", { force: true }); + + cy.findByText("Unsaved changes"); + cy.wait(100).then(() => cy.get(".fa-save").click()); + cy.contains("Unsaved changes").should("not.exist"); + }); + + it("adds some synthesis information", () => { + cy.findByText("editable_sample").click(); + cy.get("svg.add-row-button").click(); + cy.get("#synthesis-information .vs__search").first().type("component1"); + cy.get(".vs__dropdown-menu").contains(".badge", "component1").click(); + cy.get("#synthesis-information tbody > tr").should("have.length", 2); + cy.findByText("Unsaved changes"); + + cy.get("#synthesis-information").contains("component1"); + cy.get("#synthesis-information").contains("Na2O"); + + cy.get("svg.add-row-button").click(); + cy.get("#synthesis-information .vs__search").first().type("component2"); + cy.get(".vs__dropdown-menu").contains(".badge", "component2").click(); + + cy.get("#synthesis-information").contains("component2"); + + cy.get("#synthesis-information tr:nth-of-type(1) td:nth-of-type(2)").type(10); + cy.get("#synthesis-information tr:nth-of-type(1) td:nth-of-type(3)").clear().type("mL"); + cy.get("#synthesis-information tr:nth-of-type(2) td:nth-of-type(2)").type(0.001); + cy.get("#synthesis-information tr:nth-of-type(2) td:nth-of-type(3)").clear().type("kg"); + + // save the synthesis information and make sure unsaved changes goes away + cy.contains("Unsaved changes"); + cy.wait(100).then(() => cy.get(".fa-save").click()); + cy.contains("Unsaved changes").should("not.exist"); + + cy.get("#synthesis-information tr:nth-of-type(2) td:nth-of-type(3) input") + .clear() + .type("pints"); + cy.contains("Unsaved changes"); + cy.wait(100).then(() => cy.get(".fa-save").click()); + cy.contains("Unsaved changes").should("not.exist"); + + cy.reload(); + + cy.get("#synthesis-information tbody tr:nth-of-type(1) td:nth-of-type(2) input").should( + "have.value", + 10, + ); + cy.get("#synthesis-information tbody tr:nth-of-type(1) td:nth-of-type(3) input").should( + "have.value", + "mL", + ); + cy.get("#synthesis-information tbody tr:nth-of-type(2) td:nth-of-type(2) input").should( + "have.value", + 0.001, + ); + cy.get("#synthesis-information tbody tr:nth-of-type(2) td:nth-of-type(3) input").should( + "have.value", + "pints", + ); + }); + + it("deletes synthesis components and re-adds them", () => { + cy.findByText("editable_sample").click(); + cy.get("#synthesis-information tbody > tr:nth-of-type(1) .close").click(); + cy.get("#synthesis-information tbody > tr").should("have.length", 2); + cy.get("#synthesis-information tbody > tr:nth-of-type(1) td:nth-of-type(2) input").should( + "have.value", + 0.001, + ); + cy.get("#synthesis-information tbody > tr:nth-of-type(1) td:nth-of-type(3) input").should( + "have.value", + "pints", + ); + + cy.get("#synthesis-information tbody > tr:nth-of-type(1) .close").click(); + cy.get("#synthesis-information tbody > tr").should("have.length", 1); + + cy.get("svg.add-row-button").click(); + cy.get("#synthesis-information .vs__search").first().type("component2"); + cy.get(".vs__dropdown-menu").contains(".badge", "component2").click(); + cy.get("#synthesis-information tbody > tr").should("have.length", 2); + cy.get("#synthesis-information").contains("component2"); + cy.get("#synthesis-information tbody > tr:nth-of-type(1) td:nth-of-type(2) input").should( + "have.value", + "", + ); // should be reset, not a previous value + + cy.get("svg.add-row-button").click(); + cy.get("#synthesis-information .vs__search").first().type("component1"); + cy.get(".vs__dropdown-menu").contains(".badge", "component1").click(); + cy.get("#synthesis-information tbody > tr").should("have.length", 3); + cy.get("#synthesis-information").contains("component1"); + cy.get("#synthesis-information").contains("Na2O"); + cy.get("#synthesis-information tbody > tr:nth-of-type(2) td:nth-of-type(2) input").should( + "have.value", + "", + ); // should be reset, not a previous value + }); + + it("tries to add a non-numeric value into quantity", () => { + cy.findByText("editable_sample").click(); + cy.get("#synthesis-information tbody > tr:nth-of-type(1) td:nth-of-type(2) input").type( + "100.001", + ); + cy.get( + "#synthesis-information tbody > tr:nth-of-type(1) td:nth-of-type(2) input.red-border", + ).should("not.exist"); + cy.get("#synthesis-information tbody > tr:nth-of-type(1) td:nth-of-type(2) input") + .clear() + .type("1"); + cy.get( + "#synthesis-information tbody > tr:nth-of-type(1) td:nth-of-type(2) input.red-border", + ).should("not.exist"); + cy.get("#synthesis-information tbody > tr:nth-of-type(1) td:nth-of-type(2) input") + .clear() + .type("word"); + cy.get( + "#synthesis-information tbody > tr:nth-of-type(1) td:nth-of-type(2) input.red-border", + ).should("exist"); + + cy.get("#synthesis-information tbody > tr:nth-of-type(2) td:nth-of-type(2) input") + .clear() + .type("$"); + cy.get( + "#synthesis-information tbody > tr:nth-of-type(2) td:nth-of-type(2) input.red-border", + ).should("exist"); + + cy.get("#synthesis-information tbody > tr:nth-of-type(1) td:nth-of-type(2) input") + .clear() + .type("1"); + cy.get("#synthesis-information tbody > tr:nth-of-type(2) td:nth-of-type(2) input") + .clear() + .type("1"); + }); + + it("Add some blocks to the sample and checks unsaved warning behavior", () => { + cy.findByText("editable_sample").click(); + cy.findByLabelText("Name").should("have.value", "This is a sample name"); + + cy.findByText("Add a block").click(); + cy.get(".dropdown-menu").within(() => { + cy.findByText("Comment").click(); + }); + + cy.contains("Unsaved changes").should("not.exist"); + + cy.findByText("Add a block").click(); + cy.get(".dropdown-menu").within(() => { + cy.findByText("Comment").click(); + }); + + cy.contains("Unsaved changes").should("not.exist"); + + cy.get(".datablock-content div").eq(0).type("the first comment box"); + cy.contains("Unsaved changes"); + + // click update block icon and make sure unsaved changes warning goes away + cy.get('.datablock-header [aria-label="updateBlock"]').eq(0).click(); + cy.contains("Unsaved changes").should("not.exist"); + cy.get(".datablock-content div").eq(0).contains("the first comment box"); + + cy.get(".datablock-content div").eq(0).type("The first comment box; further changes."); + cy.contains("Unsaved changes"); + + cy.get(".datablock-content div").eq(1).type("The second comment box"); + cy.contains("Unsaved changes"); + cy.get('.datablock-header [aria-label="updateBlock"]').eq(1).click(); + cy.wait(500).then(() => { + cy.contains("Unsaved changes"); // unsaved changes warning should still exist since first block is still edited + }); + cy.get('.datablock-header [aria-label="updateBlock"]').eq(0).click(); + cy.contains("Unsaved changes").should("not.exist"); + + cy.get(".datablock-content div").eq(1).type("The second comment box; further changes"); + cy.findByLabelText("Name").type("name change"); + cy.contains("Unsaved changes"); + + cy.get(".fa-save").click(); + cy.contains("Unsaved changes").should("not.exist"); + + cy.findByText("Home").click(); + cy.get("[data-testid=sample-table] tr:nth-of-type(3) > td:nth-of-type(8)").contains(2); // 2 blocks are present + }); + + it("deletes the samples (cleanup)", () => { + ["editable_sample", "component1", "component2"].forEach((item_id) => { + deleteSample(item_id); + }); + + cy.get("[data-testid=sample-table] > tbody > tr").should("have.length", 0); + }); +}); + +describe("Batch sample creation", () => { + beforeEach(() => { + cy.visit("/"); + }); + it("Adds 3 valid samples", () => { + cy.contains("Add batch of samples").click(); + getSubmitButton().should("be.disabled"); + cy.contains("Submit").should("be.disabled"); + getBatchAddCell(1, 1).type("testA"); + getBatchAddCell(2, 1).type("testB"); + getBatchAddCell(2, 2).type("this sample has a name"); + getSubmitButton().should("be.disabled"); + getBatchAddCell(3, 1).type("testC"); + getSubmitButton().click(); + + cy.get("[data-testid=batch-modal-container]").contains("a", "testA"); + cy.get("[data-testid=batch-modal-container]").contains("a", "testB"); + cy.get("[data-testid=batch-modal-container]").contains("a", "testC"); + cy.findAllByText("Successfully created.").should("have.length", 3); + + cy.get("[data-testid=batch-modal-container]").contains("Close").click(); + verifySample("testA"); + verifySample("testB", "this sample has a name"); + verifySample("testC"); + + deleteSample("testA"); + deleteSample("testB"); + deleteSample("testC"); + }); + + it("adds two valid samples", () => { + cy.contains("Add batch of samples").click(); + cy.findByLabelText("Number of rows:").clear().type(2); + + cy.contains("Submit").should("be.disabled"); + getBatchAddCell(1, 1).type("baseA"); + getBatchAddCell(2, 1).type("baseB"); + getBatchAddCell(2, 2).type("the name of baseB"); + getBatchAddCell(2, 3).type("1999-12-31T01:00"); + getSubmitButton().click(); + cy.get("[data-testid=batch-modal-container]").contains("a", "baseA"); + cy.get("[data-testid=batch-modal-container]").contains("a", "baseB"); + cy.findAllByText("Successfully created.").should("have.length", 2); + + cy.get("[data-testid=batch-modal-container]").contains("Close").click(); + verifySample("baseA"); + verifySample("baseB", "the name of baseB", "1999-12-31T01:00"); + }); + + it("adds four base samples", () => { + cy.contains("Add batch of samples").click(); + cy.findByLabelText("Number of rows:").clear().type(4); + + cy.contains("Submit").should("be.disabled"); + getBatchAddCell(1, 1).type("component1"); + getBatchAddCell(1, 2).type("this component has a name"); + getBatchAddCell(2, 1).type("component2"); + getBatchAddCell(3, 1).type("component3"); + getBatchAddCell(4, 1).type("component4"); + + getSubmitButton().click(); + cy.get("[data-testid=batch-modal-container]").contains("a", "component1"); + cy.get("[data-testid=batch-modal-container]").contains("a", "component2"); + cy.get("[data-testid=batch-modal-container]").contains("a", "component3"); + cy.get("[data-testid=batch-modal-container]").contains("a", "component4"); + + cy.findAllByText("Successfully created.").should("have.length", 4); + + cy.get("[data-testid=batch-modal-container]").contains("Close").click(); + verifySample("component1", "this component has a name"); + verifySample("component2"); + verifySample("component3"); + verifySample("component4"); + }); + + it("modifies some data in the first sample", () => { + cy.findByText("baseA").click(); + cy.findByLabelText("Description").type("this is a description of baseA."); + cy.findByText("Add a block").click(); + cy.findByText("Comment").click(); + + cy.get(".datablock-content div").first().type("a comment is added here."); + + cy.get(".fa-save").click(); + cy.findByText("Home").click(); + }); + + it("modifies some data in the second sample", () => { + cy.findByText("baseB").click(); + cy.findByLabelText("Description").type("this is a description of baseB."); + cy.findByText("Add a block").click(); + cy.findByLabelText("Add a block").contains("Comment").click(); + cy.get(".datablock-content div").first().type("a comment is added here."); + + cy.findByLabelText("Procedure").type("a description of the synthesis here"); + + cy.findByText("Add a block").click(); + cy.findByLabelText("Add a block").findByText("Comment").click(); + cy.get(".datablock-content").eq(1).type("a second comment is added here."); + + searchAndSelectItem("component3", "#synthesis-information .vs__search"); + cy.get("#synthesis-information tbody tr:nth-of-type(1) input").first().type("30"); + + searchAndSelectItem("component4", "#synthesis-information .vs__search"); + cy.get("#synthesis-information tbody tr:nth-of-type(2) input").eq(0).type("100"); + + cy.get(".fa-save").click(); + cy.findByText("Home").click(); + }); + + it("makes samples copied from others", () => { + cy.contains("Add batch of samples").click(); + getBatchAddCell(1, 1).type("baseA_copy"); + getBatchAddCell(1, 2).type("a copied sample"); + getBatchAddCell(1, 4, ".vs__search").type("BaseA"); + cy.get(".vs__dropdown-menu").within(() => { + cy.contains(".badge", "baseA").click(); + }); + + getBatchAddCell(2, 1).type("baseB_copy"); + getBatchAddCell(2, 4, ".vs__search").type("BaseB"); + cy.get(".vs__dropdown-menu").within(() => { + cy.contains(".badge", "baseB").click(); + }); + + getBatchAddCell(3, 1).type("baseB_copy2"); + getBatchAddCell(3, 4, ".vs__search").type("BaseB"); + cy.get(".vs__dropdown-menu").within(() => { + cy.contains(".badge", "baseB").click(); + }); + + getSubmitButton().click(); + + cy.get("[data-testid=batch-modal-container]").contains("a", "baseA_copy"); + cy.get("[data-testid=batch-modal-container]").contains("a", "baseB_copy"); + cy.get("[data-testid=batch-modal-container]").contains("a", "baseB_copy2"); + + cy.findAllByText("Successfully created.").should("have.length", 3); + + cy.get("[data-testid=batch-modal-container]").contains("Close").click(); + verifySample("baseA_copy", "a copied sample"); + verifySample("baseB_copy"); + verifySample("baseB_copy2"); + }); + it("checks the copied samples", () => { + // check the copied samples + cy.contains("baseA_copy").click(); + cy.findByLabelText("Name").should("have.value", "a copied sample"); + cy.findByText("this is a description of baseA."); + cy.findByText("a comment is added here."); + cy.findByText("Home").click(); + + cy.contains(/^baseB_copy$/).click(); + cy.findByText("this is a description of baseB."); + cy.findByText("a comment is added here."); + cy.findByText("a second comment is added here."); + cy.findByText("a description of the synthesis here"); + cy.findAllByText("component3"); + cy.findAllByText("component4"); + cy.get("#synthesis-information tbody tr:nth-of-type(1) input").eq(0).should("have.value", "30"); + cy.get("#synthesis-information tbody tr:nth-of-type(2) input") + .eq(0) + .should("have.value", "100"); + cy.findByText("Home").click(); + + cy.findByText("baseB_copy2").click(); + cy.findByText("this is a description of baseB."); + cy.findByText("a comment is added here."); + cy.findByText("a second comment is added here."); + cy.findByText("a description of the synthesis here"); + cy.findAllByText("component3"); + cy.findAllByText("component4"); + cy.get("#synthesis-information tbody tr:nth-of-type(1) input").eq(0).should("have.value", "30"); + cy.get("#synthesis-information tbody tr:nth-of-type(2) input") + .eq(0) + .should("have.value", "100"); + cy.findByText("Home").click(); + }); + + it("creates samples using components", () => { + cy.contains("Add batch of samples").click(); + cy.findByLabelText("Number of rows:").clear().type(4); + + // sample with two components + getBatchAddCell(1, 1).type("test101"); + getBatchAddCell(1, 2).type("sample with two components"); + getBatchAddCell(1, 5, ".vs__search").type("component1"); + cy.get(".vs__dropdown-menu").within(() => { + cy.contains(".badge", "component1").click(); + }); + getBatchAddCell(1, 5, ".vs__search").type("component2"); + cy.get(".vs__dropdown-menu").within(() => { + cy.contains(".badge", "component2").click(); + }); + + // sample with two components, copied from a sample with no components + getBatchAddCell(2, 1).type("test102"); + getBatchAddCell(2, 2).type( + "sample with two components, copied from a sample with no components", + ); + getBatchAddCell(2, 4, ".vs__search").type("baseA"); + cy.get(".vs__dropdown-menu").within(() => { + cy.contains(".badge", "baseA").click(); + }); + getBatchAddCell(2, 5, ".vs__search").type("component1"); + cy.get(".vs__dropdown-menu").within(() => { + cy.contains(".badge", "component1").click(); + }); + getBatchAddCell(2, 5, ".vs__search").type("component2"); + cy.get(".vs__dropdown-menu").within(() => { + cy.contains(".badge", "component2").click(); + }); + + // sample with one components, copied from a sample with two components + getBatchAddCell(3, 1).type("test103"); + getBatchAddCell(3, 2).type( + "sample with one component, copied from a sample with two components", + ); + getBatchAddCell(3, 4, ".vs__search").type("baseB"); + cy.get(".vs__dropdown-menu").within(() => { + cy.contains(".badge", "baseB").click(); + }); + getBatchAddCell(3, 5, ".vs__search").type("component1"); + cy.get(".vs__dropdown-menu").within(() => { + cy.contains(".badge", "component1").click(); + }); + + // sample with three components, copied from a sample with some of the same components + getBatchAddCell(4, 1).type("test104"); + getBatchAddCell(4, 2).type( + "sample with three components, copied from a sample with some of the same components", + ); + getBatchAddCell(4, 4, ".vs__search").type("baseB"); + cy.get(".vs__dropdown-menu").within(() => { + cy.contains(".badge", "baseB").click(); + }); + getBatchAddCell(4, 5, ".vs__search").type("component2"); + cy.get(".vs__dropdown-menu").within(() => { + cy.contains(".badge", "component2").click(); + }); + getBatchAddCell(4, 5, ".vs__search").type("component3"); + cy.get(".vs__dropdown-menu").within(() => { + cy.contains(".badge", "component3").click(); + }); + getBatchAddCell(4, 5, ".vs__search").type("component4"); + cy.get(".vs__dropdown-menu").within(() => { + cy.contains(".badge", "component4").click(); + }); + + getSubmitButton().click(); + cy.get("[data-testid=batch-modal-container]").contains("a", "test101"); + cy.get("[data-testid=batch-modal-container]").contains("a", "test102"); + cy.get("[data-testid=batch-modal-container]").contains("a", "test103"); + cy.get("[data-testid=batch-modal-container]").contains("a", "test104"); + + cy.findAllByText("Successfully created.").should("have.length", 4); + cy.get("[data-testid=batch-modal-container]").contains("Close").click(); + }); + + it("checks the created samples", () => { + cy.contains("test101").click(); + cy.findByLabelText("Name").should("have.value", "sample with two components"); + cy.get("#synthesis-information table").contains("component1"); + cy.get("#synthesis-information table").contains("component2"); + cy.get("#synthesis-information tbody tr:nth-of-type(1) input").eq(0).should("have.value", ""); + cy.get("#synthesis-information tbody tr:nth-of-type(2) input").eq(0).should("have.value", ""); + cy.findByText("Home").click(); + + cy.contains("test102").click(); + cy.findByLabelText("Name").should( + "have.value", + "sample with two components, copied from a sample with no components", + ); + cy.contains("this is a description of baseA."); + cy.get("#synthesis-information table").contains("component1"); + cy.get("#synthesis-information table").contains("component2"); + cy.get("#synthesis-information tbody tr:nth-of-type(1) input").eq(0).should("have.value", ""); + cy.get("#synthesis-information tbody tr:nth-of-type(2) input").eq(0).should("have.value", ""); + cy.findByText("a comment is added here."); + cy.findByText("Home").click(); + + cy.contains("test103").click(); + cy.findByLabelText("Name").should( + "have.value", + "sample with one component, copied from a sample with two components", + ); + cy.contains("this is a description of baseB."); + cy.get("#synthesis-information table").contains("component1"); + cy.get("#synthesis-information table").contains("this component has a name"); + + cy.get("#synthesis-information table").contains("component3"); + cy.get("#synthesis-information table").contains("component4"); + + cy.get("#synthesis-information tbody tr:nth-of-type(1) td:nth-of-type(2) input").should( + "have.value", + "30", + ); + cy.get("#synthesis-information tbody tr:nth-of-type(1) td:nth-of-type(3) input").should( + "have.value", + "g", + ); + cy.get("#synthesis-information tbody tr:nth-of-type(2) td:nth-of-type(2) input").should( + "have.value", + "100", + ); + cy.get("#synthesis-information tbody tr:nth-of-type(2) td:nth-of-type(3) input").should( + "have.value", + "g", + ); + + cy.findByText("a comment is added here."); + cy.findByText("a second comment is added here."); + cy.findByText("Home").click(); + + cy.contains("test104").click(); + cy.findByLabelText("Name").should( + "have.value", + "sample with three components, copied from a sample with some of the same components", + ); + cy.contains("this is a description of baseB."); + cy.get("#synthesis-information table").contains("component2"); + + cy.get("#synthesis-information table").contains("component3"); + cy.get("#synthesis-information table").contains("component4"); + + cy.get("#synthesis-information tbody tr:nth-of-type(1) td:nth-of-type(2) input").should( + "have.value", + "30", + ); + cy.get("#synthesis-information tbody tr:nth-of-type(1) td:nth-of-type(3) input").should( + "have.value", + "g", + ); + cy.get("#synthesis-information tbody tr:nth-of-type(2) td:nth-of-type(2) input").should( + "have.value", + "100", + ); + cy.get("#synthesis-information tbody tr:nth-of-type(2) td:nth-of-type(3) input").should( + "have.value", + "g", + ); + cy.get("#synthesis-information tbody tr:nth-of-type(3) td:nth-of-type(2) input").should( + "have.value", + "", + ); + cy.get("#synthesis-information tbody tr:nth-of-type(3) td:nth-of-type(3) input").should( + "have.value", + "g", + ); + + cy.findByText("a description of the synthesis here"); + cy.findByText("a comment is added here."); + cy.findByText("a second comment is added here."); + + cy.findByText("Home").click(); + }); + + it("uses the template id", () => { + cy.contains("Add batch of samples").click(); + getBatchTemplateCell(1).type("test_{{}#{}}"); + + // manually type names and a date + getBatchAddCell(1, 2).type("testing 1"); + getBatchAddCell(2, 2).type("testing 1,2"); + getBatchAddCell(3, 2).type("testing 1,2,3"); + getBatchAddCell(1, 3).type("1992-12-10T14:34"); + + getSubmitButton().click(); + + cy.get("[data-testid=batch-modal-container]").contains("a", "test_1"); + cy.get("[data-testid=batch-modal-container]").contains("a", "test_2"); + cy.get("[data-testid=batch-modal-container]").contains("a", "test_3"); + cy.findAllByText("Successfully created.").should("have.length", 3); + + cy.get("[data-testid=batch-modal-container]").contains("Close").click(); + verifySample("test_1", "testing 1", "1992-12-10T14:34"); + verifySample("test_2", "testing 1,2"); + verifySample("test_3", "testing 1,2,3"); + + deleteSample("test_1"); + deleteSample("test_2"); + deleteSample("test_3"); + }); + + it("uses the template id, name, and date", () => { + cy.contains("Add batch of samples").click(); + getBatchTemplateCell(1).type("test_{{}#{}}"); + getBatchTemplateCell(2).type("this is the test sample #{{}#{}}"); + getBatchTemplateCell(3).type("1980-02-01T05:35"); + + cy.findByLabelText("start counting {#} at:").clear().type(5); + + getSubmitButton().click(); + + cy.get("[data-testid=batch-modal-container]").contains("a", "test_5"); + cy.get("[data-testid=batch-modal-container]").contains("a", "test_6"); + cy.get("[data-testid=batch-modal-container]").contains("a", "test_7"); + cy.findAllByText("Successfully created.").should("have.length", 3); + + cy.get("[data-testid=batch-modal-container]").contains("Close").click(); + verifySample("test_5", "this is the test sample #5", "1980-02-01T05:35"); + verifySample("test_6", "this is the test sample #6", "1980-02-01T05:35"); + verifySample("test_7", "this is the test sample #7", "1980-02-01T05:35"); + + deleteSample("test_5"); + deleteSample("test_6"); + deleteSample("test_7"); + }); + + it("uses the template id, name, date, copyFrom, and components", () => { + cy.contains("Add batch of samples").click(); + getBatchTemplateCell(1).type("test_{{}#{}}"); + getBatchTemplateCell(2).type("this is the test sample #{{}#{}}"); + getBatchTemplateCell(3).type("1980-02-01T23:59"); + + // select copyFrom sample, check that it is applied correctly + getBatchTemplateCell(4, ".vs__search").type("baseA"); + cy.get(".vs__dropdown-menu").within(() => { + cy.contains(".badge", "baseA").click(); + }); + + getBatchAddCell(1, 4).contains("baseA"); + getBatchAddCell(2, 4).contains("baseA"); + getBatchAddCell(3, 4).contains("baseA"); + + // change the copyFrom sample, check that it is applied correctly + getBatchTemplateCell(4, ".vs__search").type("baseB"); + cy.get(".vs__dropdown-menu").within(() => { + cy.contains(".badge", "baseB").click(); + }); + + getBatchAddCell(1, 4).contains("baseB"); + getBatchAddCell(2, 4).contains("baseB"); + getBatchAddCell(3, 4).contains("baseB"); + + // add a component, check that it is applied correctly + getBatchTemplateCell(5, ".vs__search").type("component1"); + cy.get(".vs__dropdown-menu").within(() => { + cy.contains(".badge", "component1").click(); + }); + getBatchAddCell(1, 5).contains("component1"); + getBatchAddCell(2, 5).contains("component1"); + getBatchAddCell(3, 5).contains("component1"); + + // add another component, check that it is applied correctly + getBatchTemplateCell(5, ".vs__search").type("component2"); + cy.get(".vs__dropdown-menu").within(() => { + cy.contains(".badge", "component2").click(); + }); + getBatchAddCell(1, 5).contains("component1"); + getBatchAddCell(1, 5).contains("component2"); + getBatchAddCell(2, 5).contains("component1"); + getBatchAddCell(2, 5).contains("component2"); + getBatchAddCell(3, 5).contains("component1"); + getBatchAddCell(3, 5).contains("component2"); + + getSubmitButton().click(); + + verifySample("test_1", "this is the test sample #1", "1980-02-01T00:00"); + verifySample("test_2", "this is the test sample #2", "1980-02-01T00:00"); + verifySample("test_3", "this is the test sample #3", "1980-02-01T00:00"); + + cy.get("[data-testid=batch-modal-container]").contains("a", "test_1"); + cy.get("[data-testid=batch-modal-container]").contains("a", "test_2"); + cy.get("[data-testid=batch-modal-container]").contains("a", "test_3"); + cy.findAllByText("Successfully created.").should("have.length", 3); + + cy.get("[data-testid=batch-modal-container]").contains("Close").click(); + + function checkCreatedSample(item_id) { + cy.contains(item_id).click(); + cy.contains("this is a description of baseB."); + cy.get("#synthesis-information table").contains("component3"); + cy.get("#synthesis-information table").contains("component4"); + cy.get("#synthesis-information table").contains("component1"); + cy.get("#synthesis-information table").contains("this component has a name"); + + cy.get("#synthesis-information tbody tr:nth-of-type(1) input") + .eq(0) + .should("have.value", "30"); + cy.get("#synthesis-information tbody tr:nth-of-type(2) input") + .eq(0) + .should("have.value", "100"); + cy.get("#synthesis-information tbody tr:nth-of-type(3) input").eq(0).should("have.value", ""); + + cy.findByText("a comment is added here."); + cy.findByText("a second comment is added here."); + cy.findByText("Home").click(); + } + + checkCreatedSample("test_1"); + checkCreatedSample("test_2"); + checkCreatedSample("test_3"); + + // deleteSample("test_1"); + // deleteSample("test_2"); + // deleteSample("test_3");; + }); + + it("plays with the number of rows", () => { + cy.contains("Add batch of samples").click(); + cy.findByLabelText("Number of rows:").clear().type(3); + cy.get("[data-testid=batch-add-table] > tbody > tr").should("have.length", 3); + + cy.findByLabelText("Number of rows:").clear().type(0); + cy.get("[data-testid=batch-add-table] > tbody > tr").should("have.length", 0); + + getBatchTemplateCell(1).type("test{{}#{}}"); + getBatchTemplateCell(2).type("name{{}#{}}"); + + getBatchTemplateCell(4, ".vs__search").type("baseB"); + cy.get(".vs__dropdown-menu").within(() => { + cy.contains(".badge", "baseB").click(); + }); + + getBatchTemplateCell(5, ".vs__search").type("component1"); + cy.get(".vs__dropdown-menu").within(() => { + cy.contains(".badge", "component1").click(); + }); + + getBatchTemplateCell(5, ".vs__search").type("component3"); + cy.get(".vs__dropdown-menu").within(() => { + cy.contains(".badge", "component3").click(); + }); + + getBatchTemplateCell(5, ".vs__search").type("component4"); + cy.get(".vs__dropdown-menu").within(() => { + cy.contains(".badge", "component4").click(); + }); + + cy.findByLabelText("Number of rows:").clear().type(100); + cy.get("[data-testid=batch-add-table] > tbody > tr").should("have.length", 100); + + cy.findByLabelText("Number of rows:").clear().type(1); + cy.get("[data-testid=batch-add-table] > tbody > tr").should("have.length", 1); + + cy.findByLabelText("Number of rows:").clear().type(4); + cy.get("[data-testid=batch-add-table] > tbody > tr").should("have.length", 4); + + getBatchAddCell(1, 1, "input").should("have.value", "test1"); + getBatchAddCell(2, 1, "input").should("have.value", "test2"); + getBatchAddCell(3, 1, "input").should("have.value", "test3"); + getBatchAddCell(4, 1, "input").should("have.value", "test4"); + + getBatchAddCell(1, 2, "input").should("have.value", "name1"); + getBatchAddCell(2, 2, "input").should("have.value", "name2"); + getBatchAddCell(3, 2, "input").should("have.value", "name3"); + getBatchAddCell(4, 2, "input").should("have.value", "name4"); + + getBatchAddCell(1, 4).contains("baseB"); + getBatchAddCell(2, 4).contains("baseB"); + getBatchAddCell(3, 4).contains("baseB"); + getBatchAddCell(4, 4).contains("baseB"); + + getBatchAddCell(1, 5).contains("component1"); + getBatchAddCell(2, 5).contains("component1"); + getBatchAddCell(3, 5).contains("component1"); + getBatchAddCell(4, 5).contains("component1"); + + getBatchAddCell(1, 5).contains("component3"); + getBatchAddCell(2, 5).contains("component3"); + getBatchAddCell(3, 5).contains("component3"); + getBatchAddCell(4, 5).contains("component3"); + + getBatchAddCell(1, 5).contains("component4"); + getBatchAddCell(2, 5).contains("component4"); + getBatchAddCell(3, 5).contains("component4"); + getBatchAddCell(4, 5).contains("component4"); + + cy.findByLabelText("Number of rows:").clear().type(10); + cy.get("[data-testid=batch-add-table] > tbody > tr").should("have.length", 10); + + cy.findByLabelText("Number of rows:").type("{backspace}"); + cy.get("[data-testid=batch-add-table] > tbody > tr").should("have.length", 1); + getBatchAddCell(1, 1, "input").should("have.value", "test1"); + getBatchAddCell(1, 2, "input").should("have.value", "name1"); + + cy.findByLabelText("Number of rows:").clear().type(2); + + getSubmitButton().click(); + + cy.get("[data-testid=batch-modal-container]").contains("a", "test1"); + cy.get("[data-testid=batch-modal-container]").contains("a", "test2"); + cy.findAllByText("Successfully created.").should("have.length", 2); + + cy.get("[data-testid=batch-modal-container]").contains("Close").click(); + + function checkCreatedSample(item_id) { + cy.contains(item_id).click(); + cy.contains("this is a description of baseB."); + cy.get("#synthesis-information table").contains("component3"); + cy.get("#synthesis-information table").contains("component4"); + cy.get("#synthesis-information table").contains("component1"); + cy.get("#synthesis-information table").contains("this component has a name"); + + cy.get("#synthesis-information tbody tr:nth-of-type(1) input") + .eq(0) + .should("have.value", "30"); + cy.get("#synthesis-information tbody tr:nth-of-type(2) input") + .eq(0) + .should("have.value", "100"); + cy.get("#synthesis-information tbody tr:nth-of-type(3) input").eq(0).should("have.value", ""); + + cy.findByText("a comment is added here."); + cy.findByText("a second comment is added here."); + cy.findByText("Home").click(); + } + + verifySample("test1", "name1"); + verifySample("test2", "name2"); + checkCreatedSample("test1"); + checkCreatedSample("test2"); + deleteSample("test1"); + deleteSample("test2"); + }); + + it("checks errors on the row", () => { + cy.contains("Add batch of samples").click(); + getBatchTemplateCell("1").type("test10{{}#{}}"); + getSubmitButton().should("be.disabled"); + getBatchAddError(1).should("have.text", "test101 already in use."); + getBatchAddError(2).should("have.text", "test102 already in use."); + getBatchAddError(3).should("have.text", "test103 already in use."); + + cy.findByLabelText("Number of rows:").clear().type(4); + getSubmitButton().should("be.disabled"); + getBatchAddError(4).should("have.text", "test104 already in use."); + + getBatchAddCell(1, 1).type("_unique"); + getBatchTemplateCell(1, "input").should("have.value", ""); // test_id template should be cleared by modifying an item_id + getBatchAddError(1).invoke("text").invoke("trim").should("equal", ""); // expect no error for this row + getSubmitButton().should("be.disabled"); // but submit is still disabled because there are still errors + + getBatchAddCell(3, 1).type("_unique"); + getBatchAddError(1).invoke("text").invoke("trim").should("equal", ""); // expect no error + getBatchAddError(3).invoke("text").invoke("trim").should("equal", ""); // expect no error + + getBatchAddCell(2, 1).type("_unique"); + getBatchAddError(1).invoke("text").invoke("trim").should("equal", ""); // expect no error + getBatchAddError(2).invoke("text").invoke("trim").should("equal", ""); // expect no error + getBatchAddError(3).invoke("text").invoke("trim").should("equal", ""); // expect no error + + getBatchAddCell(2, 3).type("2000-01-01T10:05"); + + getBatchAddCell(4, 1).clear(); + getBatchAddError(4).invoke("text").invoke("trim").should("not.equal", ""); // expect some error + + getBatchAddCell(4, 1).type("test101_unique"); + getBatchAddError(4).invoke("text").invoke("trim").should("not.equal", ""); // expect some error + + getSubmitButton().should("be.disabled"); + + getBatchAddCell(4, 1).type("2"); + getBatchAddError(4).invoke("text").invoke("trim").should("equal", ""); // expect no error + + getSubmitButton().should("not.be.disabled"); // now all errors are fixed so submit is enabled + getSubmitButton().click(); + + cy.get("[data-testid=batch-modal-container]").contains("a", "test101_unique"); + cy.get("[data-testid=batch-modal-container]").contains("a", "test102_unique"); + cy.get("[data-testid=batch-modal-container]").contains("a", "test103_unique"); + cy.get("[data-testid=batch-modal-container]").contains("a", "test101_unique2"); + cy.findAllByText("Successfully created.").should("have.length", 4); + + cy.get("[data-testid=batch-modal-container]").contains("Close").click(); + + verifySample("test101_unique"); + verifySample("test102_unique", "", "2000-01-01T10:05"); + verifySample("test103_unique"); + verifySample("test101_unique2"); + }); + + // as contains matches greedily, if any IDs have matching substrings they must be added in the appropriate order + it("deletes the rest of the samples (cleanup)", () => { + [ + "test102_unique", + "test103_unique", + "test101_unique2", + "test101_unique", + "component1", + "component2", + "component3", + "component4", + "baseA_copy", + "baseB_copy2", + "baseB_copy", + "test101", + "test102", + "test103", + "test104", + "test_1", + "test_2", + "test_3", + "baseA", + "baseB", + ].forEach((item_id) => { + deleteSample(item_id); + }); + cy.get("[data-testid=sample-table] > tbody > tr").should("have.length", 0); + }); +}); From b983066ee6987cf7d460f34420d0abff1172a3ce Mon Sep 17 00:00:00 2001 From: Matthew Evans Date: Tue, 7 Nov 2023 16:14:46 +0000 Subject: [PATCH 06/10] Remove defunct tests --- .../cypress/e2e/batchSampleFeature.cy.js.OLD | 785 ------------------ webapp/cypress/e2e/editPage.cy.js.OLD | 268 ------ 2 files changed, 1053 deletions(-) delete mode 100644 webapp/cypress/e2e/batchSampleFeature.cy.js.OLD delete mode 100644 webapp/cypress/e2e/editPage.cy.js.OLD diff --git a/webapp/cypress/e2e/batchSampleFeature.cy.js.OLD b/webapp/cypress/e2e/batchSampleFeature.cy.js.OLD deleted file mode 100644 index 05544e38e..000000000 --- a/webapp/cypress/e2e/batchSampleFeature.cy.js.OLD +++ /dev/null @@ -1,785 +0,0 @@ -const API_URL = Cypress.config("apiUrl"); -console.log(API_URL); - -let consoleSpy; // keeps track of every time an error is written to the console -Cypress.on("window:before:load", (win) => { - consoleSpy = cy.spy(win.console, "error"); -}); - -const TODAY = new Date().toISOString().slice(0, -8); - -function verifySample(sample_id, name = null, date = null) { - if (date) { - cy.get("[data-testid=sample-table]") - .contains(sample_id) - .parents("tr") - .within(() => { - cy.contains(date.slice(0, 8)); - if (name) { - cy.contains(name); - } - }); - } else { - cy.get("[data-testid=sample-table]") - .contains(sample_id) - .parents("tr") - .within(() => { - cy.contains(TODAY.split("T")[0]); - if (name) { - cy.contains(name); - } - }); - } -} - -function getSubmitButton() { - return cy.get("[data-testid=batch-modal-container]").contains("Submit"); -} - -function searchAndSelectItem(search_text, selector, delay = 100) { - // searches in the dropdown for the first real item with the given name, looking for a badge - // if click_plus, then also click the add row button before looking for the search bar - cy.get("#synthesis-information").within(() => { - cy.get("svg.add-row-button").click(); - }); - cy.get(selector).first().type(search_text); - cy.wait(delay).then(() => { - cy.get(".vs__dropdown-menu").within(() => { - cy.contains(".badge", search_text).click(); - }); - }); -} - -function deleteSample(sample_id, delay = 100) { - cy.wait(delay).then(() => { - cy.log("search for and delete: " + sample_id); - var matchingIds = []; - cy.get("[data-testid=sample-table]") - .contains(sample_id) - .parents("tr") - .within(() => { - cy.get("button.close").click(); - }); - }); -} - -function getBatchAddCell(row, column, additionalSelectors = "") { - return cy.get( - `[data-testid=batch-add-table] > tbody > tr:nth-of-type(${row}) > td:nth-of-type(${column}) ${additionalSelectors}`, - ); -} - -function getBatchTemplateCell(column, additionalSelectors = "") { - return cy.get( - `[data-testid=batch-add-table-template] > tbody > td:nth-of-type(${column}) ${additionalSelectors}`, - ); -} - -function getBatchAddError(row, additionalSelectors = "") { - return cy.get( - `[data-testid=batch-add-table] > tbody > tr:nth-of-type(${row}) + td ${additionalSelectors}`, - ); -} - -describe("Batch sample creation", () => { - beforeEach(() => { - cy.visit("/"); - }); - it("Adds 3 valid samples", () => { - cy.contains("Add batch of samples").click(); - getSubmitButton().should("be.disabled"); - cy.contains("Submit").should("be.disabled"); - getBatchAddCell(1, 1).type("testA"); - getBatchAddCell(2, 1).type("testB"); - getBatchAddCell(2, 2).type("this sample has a name"); - getSubmitButton().should("be.disabled"); - getBatchAddCell(3, 1).type("testC"); - getSubmitButton().click(); - - cy.get("[data-testid=batch-modal-container]").contains("a", "testA"); - cy.get("[data-testid=batch-modal-container]").contains("a", "testB"); - cy.get("[data-testid=batch-modal-container]").contains("a", "testC"); - cy.findAllByText("Successfully created.").should("have.length", 3); - - cy.get("[data-testid=batch-modal-container]").contains("Close").click(); - verifySample("testA"); - verifySample("testB", "this sample has a name"); - verifySample("testC"); - - deleteSample("testA"); - deleteSample("testB"); - deleteSample("testC"); - }); - - it("adds two valid samples", () => { - cy.contains("Add batch of samples").click(); - cy.findByLabelText("Number of rows:").clear().type(2); - - cy.contains("Submit").should("be.disabled"); - getBatchAddCell(1, 1).type("baseA"); - getBatchAddCell(2, 1).type("baseB"); - getBatchAddCell(2, 2).type("the name of baseB"); - getBatchAddCell(2, 3).type("1999-12-31T01:00"); - getSubmitButton().click(); - cy.get("[data-testid=batch-modal-container]").contains("a", "baseA"); - cy.get("[data-testid=batch-modal-container]").contains("a", "baseB"); - cy.findAllByText("Successfully created.").should("have.length", 2); - - cy.get("[data-testid=batch-modal-container]").contains("Close").click(); - verifySample("baseA"); - verifySample("baseB", "the name of baseB", "1999-12-31T01:00"); - }); - - it("adds four base samples", () => { - cy.contains("Add batch of samples").click(); - cy.findByLabelText("Number of rows:").clear().type(4); - - cy.contains("Submit").should("be.disabled"); - getBatchAddCell(1, 1).type("component1"); - getBatchAddCell(1, 2).type("this component has a name"); - getBatchAddCell(2, 1).type("component2"); - getBatchAddCell(3, 1).type("component3"); - getBatchAddCell(4, 1).type("component4"); - - getSubmitButton().click(); - cy.get("[data-testid=batch-modal-container]").contains("a", "component1"); - cy.get("[data-testid=batch-modal-container]").contains("a", "component2"); - cy.get("[data-testid=batch-modal-container]").contains("a", "component3"); - cy.get("[data-testid=batch-modal-container]").contains("a", "component4"); - - cy.findAllByText("Successfully created.").should("have.length", 4); - - cy.get("[data-testid=batch-modal-container]").contains("Close").click(); - verifySample("component1", "this component has a name"); - verifySample("component2"); - verifySample("component3"); - verifySample("component4"); - }); - - it("modifies some data in the first sample", () => { - cy.findByText("baseA").click(); - cy.findByLabelText("Description").type("this is a description of baseA."); - cy.findByText("Add a block").click(); - cy.findByText("Comment").click(); - - cy.get(".datablock-content div").first().type("a comment is added here."); - - cy.get(".fa-save").click(); - cy.findByText("Home").click(); - }); - - it("modifies some data in the second sample", () => { - cy.findByText("baseB").click(); - cy.findByLabelText("Description").type("this is a description of baseB."); - cy.findByText("Add a block").click(); - cy.findByLabelText("Add a block").contains("Comment").click(); - cy.get(".datablock-content div").first().type("a comment is added here."); - - cy.findByLabelText("Procedure").type("a description of the synthesis here"); - - cy.findByText("Add a block").click(); - cy.findByLabelText("Add a block").findByText("Comment").click(); - cy.get(".datablock-content").eq(1).type("a second comment is added here."); - - searchAndSelectItem("component3", "#synthesis-information .vs__search"); - cy.get("#synthesis-information tbody tr:nth-of-type(1) input").first().type("30"); - - searchAndSelectItem("component4", "#synthesis-information .vs__search"); - cy.get("#synthesis-information tbody tr:nth-of-type(2) input").eq(0).type("100"); - - cy.get(".fa-save").click(); - cy.findByText("Home").click(); - }); - - it("makes samples copied from others", () => { - cy.contains("Add batch of samples").click(); - getBatchAddCell(1, 1).type("baseA_copy"); - getBatchAddCell(1, 2).type("a copied sample"); - getBatchAddCell(1, 4, ".vs__search").type("BaseA"); - cy.get(".vs__dropdown-menu").within(() => { - cy.contains(".badge", "baseA").click(); - }); - - getBatchAddCell(2, 1).type("baseB_copy"); - getBatchAddCell(2, 4, ".vs__search").type("BaseB"); - cy.get(".vs__dropdown-menu").within(() => { - cy.contains(".badge", "baseB").click(); - }); - - getBatchAddCell(3, 1).type("baseB_copy2"); - getBatchAddCell(3, 4, ".vs__search").type("BaseB"); - cy.get(".vs__dropdown-menu").within(() => { - cy.contains(".badge", "baseB").click(); - }); - - getSubmitButton().click(); - - cy.get("[data-testid=batch-modal-container]").contains("a", "baseA_copy"); - cy.get("[data-testid=batch-modal-container]").contains("a", "baseB_copy"); - cy.get("[data-testid=batch-modal-container]").contains("a", "baseB_copy2"); - - cy.findAllByText("Successfully created.").should("have.length", 3); - - cy.get("[data-testid=batch-modal-container]").contains("Close").click(); - verifySample("baseA_copy", "a copied sample"); - verifySample("baseB_copy"); - verifySample("baseB_copy2"); - }); - it("checks the copied samples", () => { - // check the copied samples - cy.contains("baseA_copy").click(); - cy.findByLabelText("Name").should("have.value", "a copied sample"); - cy.findByText("this is a description of baseA."); - cy.findByText("a comment is added here."); - cy.findByText("Home").click(); - - cy.contains(/^baseB_copy$/).click(); - cy.findByText("this is a description of baseB."); - cy.findByText("a comment is added here."); - cy.findByText("a second comment is added here."); - cy.findByText("a description of the synthesis here"); - cy.findAllByText("component3"); - cy.findAllByText("component4"); - cy.get("#synthesis-information tbody tr:nth-of-type(1) input").eq(0).should("have.value", "30"); - cy.get("#synthesis-information tbody tr:nth-of-type(2) input") - .eq(0) - .should("have.value", "100"); - cy.findByText("Home").click(); - - cy.findByText("baseB_copy2").click(); - cy.findByText("this is a description of baseB."); - cy.findByText("a comment is added here."); - cy.findByText("a second comment is added here."); - cy.findByText("a description of the synthesis here"); - cy.findAllByText("component3"); - cy.findAllByText("component4"); - cy.get("#synthesis-information tbody tr:nth-of-type(1) input").eq(0).should("have.value", "30"); - cy.get("#synthesis-information tbody tr:nth-of-type(2) input") - .eq(0) - .should("have.value", "100"); - cy.findByText("Home").click(); - }); - - it("creates samples using components", () => { - cy.contains("Add batch of samples").click(); - cy.findByLabelText("Number of rows:").clear().type(4); - - // sample with two components - getBatchAddCell(1, 1).type("test101"); - getBatchAddCell(1, 2).type("sample with two components"); - getBatchAddCell(1, 5, ".vs__search").type("component1"); - cy.get(".vs__dropdown-menu").within(() => { - cy.contains(".badge", "component1").click(); - }); - getBatchAddCell(1, 5, ".vs__search").type("component2"); - cy.get(".vs__dropdown-menu").within(() => { - cy.contains(".badge", "component2").click(); - }); - - // sample with two components, copied from a sample with no components - getBatchAddCell(2, 1).type("test102"); - getBatchAddCell(2, 2).type( - "sample with two components, copied from a sample with no components", - ); - getBatchAddCell(2, 4, ".vs__search").type("baseA"); - cy.get(".vs__dropdown-menu").within(() => { - cy.contains(".badge", "baseA").click(); - }); - getBatchAddCell(2, 5, ".vs__search").type("component1"); - cy.get(".vs__dropdown-menu").within(() => { - cy.contains(".badge", "component1").click(); - }); - getBatchAddCell(2, 5, ".vs__search").type("component2"); - cy.get(".vs__dropdown-menu").within(() => { - cy.contains(".badge", "component2").click(); - }); - - // sample with one components, copied from a sample with two components - getBatchAddCell(3, 1).type("test103"); - getBatchAddCell(3, 2).type( - "sample with one component, copied from a sample with two components", - ); - getBatchAddCell(3, 4, ".vs__search").type("baseB"); - cy.get(".vs__dropdown-menu").within(() => { - cy.contains(".badge", "baseB").click(); - }); - getBatchAddCell(3, 5, ".vs__search").type("component1"); - cy.get(".vs__dropdown-menu").within(() => { - cy.contains(".badge", "component1").click(); - }); - - // sample with three components, copied from a sample with some of the same components - getBatchAddCell(4, 1).type("test104"); - getBatchAddCell(4, 2).type( - "sample with three components, copied from a sample with some of the same components", - ); - getBatchAddCell(4, 4, ".vs__search").type("baseB"); - cy.get(".vs__dropdown-menu").within(() => { - cy.contains(".badge", "baseB").click(); - }); - getBatchAddCell(4, 5, ".vs__search").type("component2"); - cy.get(".vs__dropdown-menu").within(() => { - cy.contains(".badge", "component2").click(); - }); - getBatchAddCell(4, 5, ".vs__search").type("component3"); - cy.get(".vs__dropdown-menu").within(() => { - cy.contains(".badge", "component3").click(); - }); - getBatchAddCell(4, 5, ".vs__search").type("component4"); - cy.get(".vs__dropdown-menu").within(() => { - cy.contains(".badge", "component4").click(); - }); - - getSubmitButton().click(); - cy.get("[data-testid=batch-modal-container]").contains("a", "test101"); - cy.get("[data-testid=batch-modal-container]").contains("a", "test102"); - cy.get("[data-testid=batch-modal-container]").contains("a", "test103"); - cy.get("[data-testid=batch-modal-container]").contains("a", "test104"); - - cy.findAllByText("Successfully created.").should("have.length", 4); - cy.get("[data-testid=batch-modal-container]").contains("Close").click(); - }); - - it("checks the created samples", () => { - cy.contains("test101").click(); - cy.findByLabelText("Name").should("have.value", "sample with two components"); - cy.get("#synthesis-information table").contains("component1"); - cy.get("#synthesis-information table").contains("component2"); - cy.get("#synthesis-information tbody tr:nth-of-type(1) input").eq(0).should("have.value", ""); - cy.get("#synthesis-information tbody tr:nth-of-type(2) input").eq(0).should("have.value", ""); - cy.findByText("Home").click(); - - cy.contains("test102").click(); - cy.findByLabelText("Name").should( - "have.value", - "sample with two components, copied from a sample with no components", - ); - cy.contains("this is a description of baseA."); - cy.get("#synthesis-information table").contains("component1"); - cy.get("#synthesis-information table").contains("component2"); - cy.get("#synthesis-information tbody tr:nth-of-type(1) input").eq(0).should("have.value", ""); - cy.get("#synthesis-information tbody tr:nth-of-type(2) input").eq(0).should("have.value", ""); - cy.findByText("a comment is added here."); - cy.findByText("Home").click(); - - cy.contains("test103").click(); - cy.findByLabelText("Name").should( - "have.value", - "sample with one component, copied from a sample with two components", - ); - cy.contains("this is a description of baseB."); - cy.get("#synthesis-information table").contains("component1"); - cy.get("#synthesis-information table").contains("this component has a name"); - - cy.get("#synthesis-information table").contains("component3"); - cy.get("#synthesis-information table").contains("component4"); - - cy.get("#synthesis-information tbody tr:nth-of-type(1) td:nth-of-type(2) input").should( - "have.value", - "30", - ); - cy.get("#synthesis-information tbody tr:nth-of-type(1) td:nth-of-type(3) input").should( - "have.value", - "g", - ); - cy.get("#synthesis-information tbody tr:nth-of-type(2) td:nth-of-type(2) input").should( - "have.value", - "100", - ); - cy.get("#synthesis-information tbody tr:nth-of-type(2) td:nth-of-type(3) input").should( - "have.value", - "g", - ); - - cy.findByText("a comment is added here."); - cy.findByText("a second comment is added here."); - cy.findByText("Home").click(); - - cy.contains("test104").click(); - cy.findByLabelText("Name").should( - "have.value", - "sample with three components, copied from a sample with some of the same components", - ); - cy.contains("this is a description of baseB."); - cy.get("#synthesis-information table").contains("component2"); - - cy.get("#synthesis-information table").contains("component3"); - cy.get("#synthesis-information table").contains("component4"); - - cy.get("#synthesis-information tbody tr:nth-of-type(1) td:nth-of-type(2) input").should( - "have.value", - "30", - ); - cy.get("#synthesis-information tbody tr:nth-of-type(1) td:nth-of-type(3) input").should( - "have.value", - "g", - ); - cy.get("#synthesis-information tbody tr:nth-of-type(2) td:nth-of-type(2) input").should( - "have.value", - "100", - ); - cy.get("#synthesis-information tbody tr:nth-of-type(2) td:nth-of-type(3) input").should( - "have.value", - "g", - ); - cy.get("#synthesis-information tbody tr:nth-of-type(3) td:nth-of-type(2) input").should( - "have.value", - "", - ); - cy.get("#synthesis-information tbody tr:nth-of-type(3) td:nth-of-type(3) input").should( - "have.value", - "g", - ); - - cy.findByText("a description of the synthesis here"); - cy.findByText("a comment is added here."); - cy.findByText("a second comment is added here."); - - cy.findByText("Home").click(); - }); - - it("uses the template id", () => { - cy.contains("Add batch of samples").click(); - getBatchTemplateCell(1).type("test_{{}#{}}"); - - // manually type names and a date - getBatchAddCell(1, 2).type("testing 1"); - getBatchAddCell(2, 2).type("testing 1,2"); - getBatchAddCell(3, 2).type("testing 1,2,3"); - getBatchAddCell(1, 3).type("1992-12-10T14:34"); - - getSubmitButton().click(); - - cy.get("[data-testid=batch-modal-container]").contains("a", "test_1"); - cy.get("[data-testid=batch-modal-container]").contains("a", "test_2"); - cy.get("[data-testid=batch-modal-container]").contains("a", "test_3"); - cy.findAllByText("Successfully created.").should("have.length", 3); - - cy.get("[data-testid=batch-modal-container]").contains("Close").click(); - verifySample("test_1", "testing 1", "1992-12-10T14:34"); - verifySample("test_2", "testing 1,2"); - verifySample("test_3", "testing 1,2,3"); - - deleteSample("test_1"); - deleteSample("test_2"); - deleteSample("test_3"); - }); - - it("uses the template id, name, and date", () => { - cy.contains("Add batch of samples").click(); - getBatchTemplateCell(1).type("test_{{}#{}}"); - getBatchTemplateCell(2).type("this is the test sample #{{}#{}}"); - getBatchTemplateCell(3).type("1980-02-01T05:35"); - - cy.findByLabelText("start counting {#} at:").clear().type(5); - - getSubmitButton().click(); - - cy.get("[data-testid=batch-modal-container]").contains("a", "test_5"); - cy.get("[data-testid=batch-modal-container]").contains("a", "test_6"); - cy.get("[data-testid=batch-modal-container]").contains("a", "test_7"); - cy.findAllByText("Successfully created.").should("have.length", 3); - - cy.get("[data-testid=batch-modal-container]").contains("Close").click(); - verifySample("test_5", "this is the test sample #5", "1980-02-01T05:35"); - verifySample("test_6", "this is the test sample #6", "1980-02-01T05:35"); - verifySample("test_7", "this is the test sample #7", "1980-02-01T05:35"); - - deleteSample("test_5"); - deleteSample("test_6"); - deleteSample("test_7"); - }); - - it("uses the template id, name, date, copyFrom, and components", () => { - cy.contains("Add batch of samples").click(); - getBatchTemplateCell(1).type("test_{{}#{}}"); - getBatchTemplateCell(2).type("this is the test sample #{{}#{}}"); - getBatchTemplateCell(3).type("1980-02-01T23:59"); - - // select copyFrom sample, check that it is applied correctly - getBatchTemplateCell(4, ".vs__search").type("baseA"); - cy.get(".vs__dropdown-menu").within(() => { - cy.contains(".badge", "baseA").click(); - }); - - getBatchAddCell(1, 4).contains("baseA"); - getBatchAddCell(2, 4).contains("baseA"); - getBatchAddCell(3, 4).contains("baseA"); - - // change the copyFrom sample, check that it is applied correctly - getBatchTemplateCell(4, ".vs__search").type("baseB"); - cy.get(".vs__dropdown-menu").within(() => { - cy.contains(".badge", "baseB").click(); - }); - - getBatchAddCell(1, 4).contains("baseB"); - getBatchAddCell(2, 4).contains("baseB"); - getBatchAddCell(3, 4).contains("baseB"); - - // add a component, check that it is applied correctly - getBatchTemplateCell(5, ".vs__search").type("component1"); - cy.get(".vs__dropdown-menu").within(() => { - cy.contains(".badge", "component1").click(); - }); - getBatchAddCell(1, 5).contains("component1"); - getBatchAddCell(2, 5).contains("component1"); - getBatchAddCell(3, 5).contains("component1"); - - // add another component, check that it is applied correctly - getBatchTemplateCell(5, ".vs__search").type("component2"); - cy.get(".vs__dropdown-menu").within(() => { - cy.contains(".badge", "component2").click(); - }); - getBatchAddCell(1, 5).contains("component1"); - getBatchAddCell(1, 5).contains("component2"); - getBatchAddCell(2, 5).contains("component1"); - getBatchAddCell(2, 5).contains("component2"); - getBatchAddCell(3, 5).contains("component1"); - getBatchAddCell(3, 5).contains("component2"); - - getSubmitButton().click(); - - verifySample("test_1", "this is the test sample #1", "1980-02-01T00:00"); - verifySample("test_2", "this is the test sample #2", "1980-02-01T00:00"); - verifySample("test_3", "this is the test sample #3", "1980-02-01T00:00"); - - cy.get("[data-testid=batch-modal-container]").contains("a", "test_1"); - cy.get("[data-testid=batch-modal-container]").contains("a", "test_2"); - cy.get("[data-testid=batch-modal-container]").contains("a", "test_3"); - cy.findAllByText("Successfully created.").should("have.length", 3); - - cy.get("[data-testid=batch-modal-container]").contains("Close").click(); - - function checkCreatedSample(item_id) { - cy.contains(item_id).click(); - cy.contains("this is a description of baseB."); - cy.get("#synthesis-information table").contains("component3"); - cy.get("#synthesis-information table").contains("component4"); - cy.get("#synthesis-information table").contains("component1"); - cy.get("#synthesis-information table").contains("this component has a name"); - - cy.get("#synthesis-information tbody tr:nth-of-type(1) input") - .eq(0) - .should("have.value", "30"); - cy.get("#synthesis-information tbody tr:nth-of-type(2) input") - .eq(0) - .should("have.value", "100"); - cy.get("#synthesis-information tbody tr:nth-of-type(3) input").eq(0).should("have.value", ""); - - cy.findByText("a comment is added here."); - cy.findByText("a second comment is added here."); - cy.findByText("Home").click(); - } - - checkCreatedSample("test_1"); - checkCreatedSample("test_2"); - checkCreatedSample("test_3"); - - // deleteSample("test_1"); - // deleteSample("test_2"); - // deleteSample("test_3");; - }); - - it("plays with the number of rows", () => { - cy.contains("Add batch of samples").click(); - cy.findByLabelText("Number of rows:").clear().type(3); - cy.get("[data-testid=batch-add-table] > tbody > tr").should("have.length", 3); - - cy.findByLabelText("Number of rows:").clear().type(0); - cy.get("[data-testid=batch-add-table] > tbody > tr").should("have.length", 0); - - getBatchTemplateCell(1).type("test{{}#{}}"); - getBatchTemplateCell(2).type("name{{}#{}}"); - - getBatchTemplateCell(4, ".vs__search").type("baseB"); - cy.get(".vs__dropdown-menu").within(() => { - cy.contains(".badge", "baseB").click(); - }); - - getBatchTemplateCell(5, ".vs__search").type("component1"); - cy.get(".vs__dropdown-menu").within(() => { - cy.contains(".badge", "component1").click(); - }); - - getBatchTemplateCell(5, ".vs__search").type("component3"); - cy.get(".vs__dropdown-menu").within(() => { - cy.contains(".badge", "component3").click(); - }); - - getBatchTemplateCell(5, ".vs__search").type("component4"); - cy.get(".vs__dropdown-menu").within(() => { - cy.contains(".badge", "component4").click(); - }); - - cy.findByLabelText("Number of rows:").clear().type(100); - cy.get("[data-testid=batch-add-table] > tbody > tr").should("have.length", 100); - - cy.findByLabelText("Number of rows:").clear().type(1); - cy.get("[data-testid=batch-add-table] > tbody > tr").should("have.length", 1); - - cy.findByLabelText("Number of rows:").clear().type(4); - cy.get("[data-testid=batch-add-table] > tbody > tr").should("have.length", 4); - - getBatchAddCell(1, 1, "input").should("have.value", "test1"); - getBatchAddCell(2, 1, "input").should("have.value", "test2"); - getBatchAddCell(3, 1, "input").should("have.value", "test3"); - getBatchAddCell(4, 1, "input").should("have.value", "test4"); - - getBatchAddCell(1, 2, "input").should("have.value", "name1"); - getBatchAddCell(2, 2, "input").should("have.value", "name2"); - getBatchAddCell(3, 2, "input").should("have.value", "name3"); - getBatchAddCell(4, 2, "input").should("have.value", "name4"); - - getBatchAddCell(1, 4).contains("baseB"); - getBatchAddCell(2, 4).contains("baseB"); - getBatchAddCell(3, 4).contains("baseB"); - getBatchAddCell(4, 4).contains("baseB"); - - getBatchAddCell(1, 5).contains("component1"); - getBatchAddCell(2, 5).contains("component1"); - getBatchAddCell(3, 5).contains("component1"); - getBatchAddCell(4, 5).contains("component1"); - - getBatchAddCell(1, 5).contains("component3"); - getBatchAddCell(2, 5).contains("component3"); - getBatchAddCell(3, 5).contains("component3"); - getBatchAddCell(4, 5).contains("component3"); - - getBatchAddCell(1, 5).contains("component4"); - getBatchAddCell(2, 5).contains("component4"); - getBatchAddCell(3, 5).contains("component4"); - getBatchAddCell(4, 5).contains("component4"); - - cy.findByLabelText("Number of rows:").clear().type(10); - cy.get("[data-testid=batch-add-table] > tbody > tr").should("have.length", 10); - - cy.findByLabelText("Number of rows:").type("{backspace}"); - cy.get("[data-testid=batch-add-table] > tbody > tr").should("have.length", 1); - getBatchAddCell(1, 1, "input").should("have.value", "test1"); - getBatchAddCell(1, 2, "input").should("have.value", "name1"); - - cy.findByLabelText("Number of rows:").clear().type(2); - - getSubmitButton().click(); - - cy.get("[data-testid=batch-modal-container]").contains("a", "test1"); - cy.get("[data-testid=batch-modal-container]").contains("a", "test2"); - cy.findAllByText("Successfully created.").should("have.length", 2); - - cy.get("[data-testid=batch-modal-container]").contains("Close").click(); - - function checkCreatedSample(item_id) { - cy.contains(item_id).click(); - cy.contains("this is a description of baseB."); - cy.get("#synthesis-information table").contains("component3"); - cy.get("#synthesis-information table").contains("component4"); - cy.get("#synthesis-information table").contains("component1"); - cy.get("#synthesis-information table").contains("this component has a name"); - - cy.get("#synthesis-information tbody tr:nth-of-type(1) input") - .eq(0) - .should("have.value", "30"); - cy.get("#synthesis-information tbody tr:nth-of-type(2) input") - .eq(0) - .should("have.value", "100"); - cy.get("#synthesis-information tbody tr:nth-of-type(3) input").eq(0).should("have.value", ""); - - cy.findByText("a comment is added here."); - cy.findByText("a second comment is added here."); - cy.findByText("Home").click(); - } - - verifySample("test1", "name1"); - verifySample("test2", "name2"); - checkCreatedSample("test1"); - checkCreatedSample("test2"); - deleteSample("test1"); - deleteSample("test2"); - }); - - it("checks errors on the row", () => { - cy.contains("Add batch of samples").click(); - getBatchTemplateCell("1").type("test10{{}#{}}"); - getSubmitButton().should("be.disabled"); - getBatchAddError(1).should("have.text", "test101 already in use."); - getBatchAddError(2).should("have.text", "test102 already in use."); - getBatchAddError(3).should("have.text", "test103 already in use."); - - cy.findByLabelText("Number of rows:").clear().type(4); - getSubmitButton().should("be.disabled"); - getBatchAddError(4).should("have.text", "test104 already in use."); - - getBatchAddCell(1, 1).type("_unique"); - getBatchTemplateCell(1, "input").should("have.value", ""); // test_id template should be cleared by modifying an item_id - getBatchAddError(1).invoke("text").invoke("trim").should("equal", ""); // expect no error for this row - getSubmitButton().should("be.disabled"); // but submit is still disabled because there are still errors - - getBatchAddCell(3, 1).type("_unique"); - getBatchAddError(1).invoke("text").invoke("trim").should("equal", ""); // expect no error - getBatchAddError(3).invoke("text").invoke("trim").should("equal", ""); // expect no error - - getBatchAddCell(2, 1).type("_unique"); - getBatchAddError(1).invoke("text").invoke("trim").should("equal", ""); // expect no error - getBatchAddError(2).invoke("text").invoke("trim").should("equal", ""); // expect no error - getBatchAddError(3).invoke("text").invoke("trim").should("equal", ""); // expect no error - - getBatchAddCell(2, 3).type("2000-01-01T10:05"); - - getBatchAddCell(4, 1).clear(); - getBatchAddError(4).invoke("text").invoke("trim").should("not.equal", ""); // expect some error - - getBatchAddCell(4, 1).type("test101_unique"); - getBatchAddError(4).invoke("text").invoke("trim").should("not.equal", ""); // expect some error - - getSubmitButton().should("be.disabled"); - - getBatchAddCell(4, 1).type("2"); - getBatchAddError(4).invoke("text").invoke("trim").should("equal", ""); // expect no error - - getSubmitButton().should("not.be.disabled"); // now all errors are fixed so submit is enabled - getSubmitButton().click(); - - cy.get("[data-testid=batch-modal-container]").contains("a", "test101_unique"); - cy.get("[data-testid=batch-modal-container]").contains("a", "test102_unique"); - cy.get("[data-testid=batch-modal-container]").contains("a", "test103_unique"); - cy.get("[data-testid=batch-modal-container]").contains("a", "test101_unique2"); - cy.findAllByText("Successfully created.").should("have.length", 4); - - cy.get("[data-testid=batch-modal-container]").contains("Close").click(); - - verifySample("test101_unique"); - verifySample("test102_unique", "", "2000-01-01T10:05"); - verifySample("test103_unique"); - verifySample("test101_unique2"); - }); - - // as contains matches greedily, if any IDs have matching substrings they must be added in the appropriate order - it("deletes the rest of the samples (cleanup)", () => { - [ - "test102_unique", - "test103_unique", - "test101_unique2", - "test101_unique", - "component1", - "component2", - "component3", - "component4", - "baseA_copy", - "baseB_copy2", - "baseB_copy", - "test101", - "test102", - "test103", - "test104", - "test_1", - "test_2", - "test_3", - "baseA", - "baseB", - ].forEach((item_id) => { - deleteSample(item_id); - }); - - cy.get("[data-testid=sample-table] > tbody > tr").should("have.length", 0); - }); -}); diff --git a/webapp/cypress/e2e/editPage.cy.js.OLD b/webapp/cypress/e2e/editPage.cy.js.OLD deleted file mode 100644 index 6d0aa945d..000000000 --- a/webapp/cypress/e2e/editPage.cy.js.OLD +++ /dev/null @@ -1,268 +0,0 @@ -const API_URL = Cypress.config("apiUrl"); -console.log(API_URL); - -let consoleSpy; // keeps track of every time an error is written to the console -Cypress.on("window:before:load", (win) => { - consoleSpy = cy.spy(win.console, "error"); -}); - -describe("Edit Page", () => { - beforeEach(() => { - cy.visit("/"); - }); - - // afterEach( () => { - // cy.expect(consoleSpy).not.to.be.called - // }); - - it("Loads the main page without any errors", () => { - cy.findByText("About").should("exist"); - cy.findByText("Samples").should("exist"); - cy.findByText("Add an item").should("exist"); - cy.findByText("# of blocks").should("exist"); - cy.wait(1000).then((x) => { - cy.contains("Server Error. Sample list not retreived.").should("not.exist"); - expect(consoleSpy).not.to.be.called; - }); - }); - - it("Adds a valid sample", () => { - cy.findByText("Add an item").click(); - cy.findByText("Add new sample").should("exist"); - cy.findByLabelText("ID:").type("editable_sample"); - cy.findByLabelText("Date Created:").type("1990-01-07T00:00"); - - cy.findByLabelText("Name:").type("This is a sample name"); - cy.contains("Submit").click(); - - cy.findByText("editable_sample"); - cy.findByText("This is a sample name"); - cy.get("tr>td").eq(7).contains(0); // 0 blocks are present - }); - - it("Adds a second valid sample, to use as a component", () => { - cy.findByText("Add an item").click(); - cy.findByText("Add new sample"); - cy.findByLabelText("ID:").type("component1"); - cy.findByLabelText("Name:").type("This is a component"); - cy.contains("Submit").click(); - }); - - it("Adds a third valid sample, to use as a component", () => { - cy.findByText("Add an item").click(); - cy.findByText("Add new sample"); - cy.findByLabelText("ID:").type("component2"); - cy.findByLabelText("Name:").type("This is another component"); - cy.contains("Submit").click(); - }); - - it("Checks editing the sample edit page", () => { - cy.findByText("editable_sample").click(); - cy.findByLabelText("Name").should("have.value", "This is a sample name"); - cy.findByLabelText("Chemical formula").type("NaCoO2", { force: true }); - - cy.findByText("Unsaved changes"); - cy.get(".fa-save").click(); - cy.contains("Unsaved changes").should("not.exist"); - cy.contains("Home").click(); - - cy.findByText("editable_sample"); - cy.findByText("This is a sample name"); - cy.findByText("1990-01-07"); - cy.get("tbody tr:nth-of-type(3)").contains("NaCoO2"); // sorta check the formula - }); - - it("adds a chemical formula to component1", () => { - cy.findByText("component1").click(); - cy.findByLabelText("Chemical formula").type("Na2O", { force: true }); - - cy.findByText("Unsaved changes"); - cy.wait(100).then(() => cy.get(".fa-save").click()); - cy.contains("Unsaved changes").should("not.exist"); - }); - - it("adds some synthesis information", () => { - cy.findByText("editable_sample").click(); - cy.get("svg.add-row-button").click(); - cy.get("#synthesis-information .vs__search").first().type("component1"); - cy.get(".vs__dropdown-menu").contains(".badge", "component1").click(); - cy.get("#synthesis-information tbody > tr").should("have.length", 2); - cy.findByText("Unsaved changes"); - - cy.get("#synthesis-information").contains("component1"); - cy.get("#synthesis-information").contains("Na2O"); - - cy.get("svg.add-row-button").click(); - cy.get("#synthesis-information .vs__search").first().type("component2"); - cy.get(".vs__dropdown-menu").contains(".badge", "component2").click(); - - cy.get("#synthesis-information").contains("component2"); - - cy.get("#synthesis-information tr:nth-of-type(1) td:nth-of-type(2)").type(10); - cy.get("#synthesis-information tr:nth-of-type(1) td:nth-of-type(3)").clear().type("mL"); - cy.get("#synthesis-information tr:nth-of-type(2) td:nth-of-type(2)").type(0.001); - cy.get("#synthesis-information tr:nth-of-type(2) td:nth-of-type(3)").clear().type("kg"); - - // save the synthesis information and make sure unsaved changes goes away - cy.contains("Unsaved changes"); - cy.wait(100).then(() => cy.get(".fa-save").click()); - cy.contains("Unsaved changes").should("not.exist"); - - cy.get("#synthesis-information tr:nth-of-type(2) td:nth-of-type(3) input") - .clear() - .type("pints"); - cy.contains("Unsaved changes"); - cy.wait(100).then(() => cy.get(".fa-save").click()); - cy.contains("Unsaved changes").should("not.exist"); - - cy.reload(); - - cy.get("#synthesis-information tbody tr:nth-of-type(1) td:nth-of-type(2) input").should( - "have.value", - 10, - ); - cy.get("#synthesis-information tbody tr:nth-of-type(1) td:nth-of-type(3) input").should( - "have.value", - "mL", - ); - cy.get("#synthesis-information tbody tr:nth-of-type(2) td:nth-of-type(2) input").should( - "have.value", - 0.001, - ); - cy.get("#synthesis-information tbody tr:nth-of-type(2) td:nth-of-type(3) input").should( - "have.value", - "pints", - ); - }); - - it("deletes synthesis components and re-adds them", () => { - cy.findByText("editable_sample").click(); - cy.get("#synthesis-information tbody > tr:nth-of-type(1) .close").click(); - cy.get("#synthesis-information tbody > tr").should("have.length", 2); - cy.get("#synthesis-information tbody > tr:nth-of-type(1) td:nth-of-type(2) input").should( - "have.value", - 0.001, - ); - cy.get("#synthesis-information tbody > tr:nth-of-type(1) td:nth-of-type(3) input").should( - "have.value", - "pints", - ); - - cy.get("#synthesis-information tbody > tr:nth-of-type(1) .close").click(); - cy.get("#synthesis-information tbody > tr").should("have.length", 1); - - cy.get("svg.add-row-button").click(); - cy.get("#synthesis-information .vs__search").first().type("component2"); - cy.get(".vs__dropdown-menu").contains(".badge", "component2").click(); - cy.get("#synthesis-information tbody > tr").should("have.length", 2); - cy.get("#synthesis-information").contains("component2"); - cy.get("#synthesis-information tbody > tr:nth-of-type(1) td:nth-of-type(2) input").should( - "have.value", - "", - ); // should be reset, not a previous value - - cy.get("svg.add-row-button").click(); - cy.get("#synthesis-information .vs__search").first().type("component1"); - cy.get(".vs__dropdown-menu").contains(".badge", "component1").click(); - cy.get("#synthesis-information tbody > tr").should("have.length", 3); - cy.get("#synthesis-information").contains("component1"); - cy.get("#synthesis-information").contains("Na2O"); - cy.get("#synthesis-information tbody > tr:nth-of-type(2) td:nth-of-type(2) input").should( - "have.value", - "", - ); // should be reset, not a previous value - }); - - it("tries to add a non-numeric value into quantity", () => { - cy.findByText("editable_sample").click(); - cy.get("#synthesis-information tbody > tr:nth-of-type(1) td:nth-of-type(2) input").type( - "100.001", - ); - cy.get( - "#synthesis-information tbody > tr:nth-of-type(1) td:nth-of-type(2) input.red-border", - ).should("not.exist"); - cy.get("#synthesis-information tbody > tr:nth-of-type(1) td:nth-of-type(2) input") - .clear() - .type("1"); - cy.get( - "#synthesis-information tbody > tr:nth-of-type(1) td:nth-of-type(2) input.red-border", - ).should("not.exist"); - cy.get("#synthesis-information tbody > tr:nth-of-type(1) td:nth-of-type(2) input") - .clear() - .type("word"); - cy.get( - "#synthesis-information tbody > tr:nth-of-type(1) td:nth-of-type(2) input.red-border", - ).should("exist"); - - cy.get("#synthesis-information tbody > tr:nth-of-type(2) td:nth-of-type(2) input") - .clear() - .type("$"); - cy.get( - "#synthesis-information tbody > tr:nth-of-type(2) td:nth-of-type(2) input.red-border", - ).should("exist"); - - cy.get("#synthesis-information tbody > tr:nth-of-type(1) td:nth-of-type(2) input") - .clear() - .type("1"); - cy.get("#synthesis-information tbody > tr:nth-of-type(2) td:nth-of-type(2) input") - .clear() - .type("1"); - }); - - it("Add some blocks to the sample and checks unsaved warning behavior", () => { - cy.findByText("editable_sample").click(); - cy.findByLabelText("Name").should("have.value", "This is a sample name"); - - cy.findByText("Add a block").click(); - cy.get(".dropdown-menu").within(() => { - cy.findByText("Comment").click(); - }); - - cy.contains("Unsaved changes").should("not.exist"); - - cy.findByText("Add a block").click(); - cy.get(".dropdown-menu").within(() => { - cy.findByText("Comment").click(); - }); - - cy.contains("Unsaved changes").should("not.exist"); - - cy.get(".datablock-content div").eq(0).type("the first comment box"); - cy.contains("Unsaved changes"); - - // click update block icon and make sure unsaved changes warning goes away - cy.get('.datablock-header [aria-label="updateBlock"]').eq(0).click(); - cy.contains("Unsaved changes").should("not.exist"); - cy.get(".datablock-content div").eq(0).contains("the first comment box"); - - cy.get(".datablock-content div").eq(0).type("The first comment box; further changes."); - cy.contains("Unsaved changes"); - - cy.get(".datablock-content div").eq(1).type("The second comment box"); - cy.contains("Unsaved changes"); - cy.get('.datablock-header [aria-label="updateBlock"]').eq(1).click(); - cy.wait(500).then(() => { - cy.contains("Unsaved changes"); // unsaved changes warning should still exist since first block is still edited - }); - cy.get('.datablock-header [aria-label="updateBlock"]').eq(0).click(); - cy.contains("Unsaved changes").should("not.exist"); - - cy.get(".datablock-content div").eq(1).type("The second comment box; further changes"); - cy.findByLabelText("Name").type("name change"); - cy.contains("Unsaved changes"); - - cy.get(".fa-save").click(); - cy.contains("Unsaved changes").should("not.exist"); - - cy.findByText("Home").click(); - cy.get("[data-testid=sample-table] tr:nth-of-type(3) > td:nth-of-type(8)").contains(2); // 2 blocks are present - }); - - it("deletes the samples (cleanup)", () => { - ["editable_sample", "component1", "component2"].forEach((item_id) => { - deleteSample(item_id); - }); - - cy.get("[data-testid=sample-table] > tbody > tr").should("have.length", 0); - }); -}); From 03c14be5c0fe8ec512d79ab19b0e263b2dbebdc0 Mon Sep 17 00:00:00 2001 From: Matthew Evans Date: Tue, 7 Nov 2023 16:23:41 +0000 Subject: [PATCH 07/10] Try adding a couple of waits --- webapp/cypress/e2e/legacy.cy.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/webapp/cypress/e2e/legacy.cy.js b/webapp/cypress/e2e/legacy.cy.js index c79e624d8..b0a309ffa 100644 --- a/webapp/cypress/e2e/legacy.cy.js +++ b/webapp/cypress/e2e/legacy.cy.js @@ -767,12 +767,14 @@ describe("Batch sample creation", () => { cy.get(".vs__dropdown-menu").within(() => { cy.contains(".badge", "baseA").click(); }); + cy.wait(100); getBatchAddCell(2, 1).type("baseB_copy"); getBatchAddCell(2, 4, ".vs__search").type("BaseB"); cy.get(".vs__dropdown-menu").within(() => { cy.contains(".badge", "baseB").click(); }); + cy.wait(100); getBatchAddCell(3, 1).type("baseB_copy2"); getBatchAddCell(3, 4, ".vs__search").type("BaseB"); From 6e7f973be94d8bb2dd52ebd82ff7cfd63dccc7c5 Mon Sep 17 00:00:00 2001 From: Matthew Evans Date: Tue, 7 Nov 2023 16:53:22 +0000 Subject: [PATCH 08/10] Try adding a couple more waits --- webapp/cypress/e2e/legacy.cy.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/webapp/cypress/e2e/legacy.cy.js b/webapp/cypress/e2e/legacy.cy.js index b0a309ffa..20fb2fe9b 100644 --- a/webapp/cypress/e2e/legacy.cy.js +++ b/webapp/cypress/e2e/legacy.cy.js @@ -1269,7 +1269,9 @@ describe("Batch sample creation", () => { it("checks errors on the row", () => { cy.contains("Add batch of samples").click(); + cy.wait(100); getBatchTemplateCell("1").type("test10{{}#{}}"); + cy.wait(100); getSubmitButton().should("be.disabled"); getBatchAddError(1).should("have.text", "test101 already in use."); getBatchAddError(2).should("have.text", "test102 already in use."); From e69de259291537c4bfa6fd1978c0d8b1f5e52f2b Mon Sep 17 00:00:00 2001 From: Matthew Evans Date: Tue, 7 Nov 2023 17:15:20 +0000 Subject: [PATCH 09/10] Force the default value for number of rows --- webapp/cypress/e2e/legacy.cy.js | 1 + 1 file changed, 1 insertion(+) diff --git a/webapp/cypress/e2e/legacy.cy.js b/webapp/cypress/e2e/legacy.cy.js index 20fb2fe9b..0f538bc7c 100644 --- a/webapp/cypress/e2e/legacy.cy.js +++ b/webapp/cypress/e2e/legacy.cy.js @@ -1271,6 +1271,7 @@ describe("Batch sample creation", () => { cy.contains("Add batch of samples").click(); cy.wait(100); getBatchTemplateCell("1").type("test10{{}#{}}"); + cy.findByLabelText("Number of rows:").clear().type(3); cy.wait(100); getSubmitButton().should("be.disabled"); getBatchAddError(1).should("have.text", "test101 already in use."); From c9fa9441a7493b189f4a94576926e3551243d956 Mon Sep 17 00:00:00 2001 From: Matthew Evans Date: Fri, 10 Nov 2023 12:16:25 +0000 Subject: [PATCH 10/10] Update other deps --- webapp/package.json | 49 +- webapp/src/components/TinyMceInline.vue | 2 +- webapp/src/main.js | 1 - webapp/yarn.lock | 1113 +++++++++++++++-------- 4 files changed, 749 insertions(+), 416 deletions(-) diff --git a/webapp/package.json b/webapp/package.json index 1af4bf9a6..9e05e94db 100644 --- a/webapp/package.json +++ b/webapp/package.json @@ -14,39 +14,38 @@ "@fortawesome/free-brands-svg-icons": "^5.15.4", "@fortawesome/free-regular-svg-icons": "^5.15.2", "@fortawesome/free-solid-svg-icons": "^5.12.0-2", - "@fortawesome/vue-fontawesome": "^3.0.0-3", - "@tinymce/tinymce-vue": "^4.0.0", - "@uppy/core": "^1.16.0", - "@uppy/dashboard": "^1.16.0", - "@uppy/webcam": "^1.8.4", - "@uppy/xhr-upload": "^1.6.10", + "@fortawesome/vue-fontawesome": "^3.0.5", + "@tinymce/tinymce-vue": "^5.1.1", + "@uppy/core": "^3.6.1", + "@uppy/dashboard": "^3.6.0", + "@uppy/webcam": "^3.3.4", + "@uppy/xhr-upload": "^3.4.2", "@vue/cli": "^5.0.8", - "@vueuse/components": "^9.12.0", - "@vueuse/core": "^9.12.0", + "@vueuse/components": "^10.5.0", "bootstrap": "^4.5.3", - "core-js": "^3.6.5", "crypto-browserify": "^3.12.0", - "cytoscape": "^3.23.0", + "cytoscape": "^3.27.0", "cytoscape-cola": "^2.5.1", "cytoscape-dagre": "^2.4.0", "cytoscape-elk": "^2.1.0", "d3": "^7.6.1", "date-fns": "^2.29.3", - "highlight.js": "^11.7.0", - "markdown-it": "^13.0.1", - "mermaid": "^10.1.0", + "highlight.js": "^11.9.0", + "markdown-it": "^13.0.2", + "mermaid": "^10.6.1", "stream-browserify": "^3.0.0", - "tinymce": "^5.10.8", - "vue": "^3.2.4", - "vue-router": "^4.0.0-0", + "tinymce": "^6.7.2", + "vue": "^3.3.8", + "vue-router": "^4.2.5", "vue-select": "^4.0.0-beta.6", "vue3-easy-data-table": "^1.5.45", "vuex": "^4.0.0-0", "webcola": "^3.4.0" }, "devDependencies": { - "@babel/core": "^7.12.16", - "@babel/eslint-parser": "^7.12.16", + "@babel/core": "^7.23.2", + "@babel/eslint-parser": "^7.22.15", + "@babel/plugin-transform-export-namespace-from": "*", "@testing-library/cypress": "*", "@testing-library/vue": "*", "@vue/cli-plugin-babel": "~5.0.8", @@ -55,17 +54,17 @@ "@vue/cli-plugin-router": "~5.0.8", "@vue/cli-plugin-vuex": "~5.0.8", "@vue/cli-service": "~5.0.8", - "@vue/compiler-sfc": "^3.2.4", - "@vue/eslint-config-prettier": "^6.0.0", + "@vue/compiler-sfc": "^3.3.8", + "@vue/eslint-config-prettier": "^8.0.0", "@vue/test-utils": "^2.0.0-0", "babel-core": "7.0.0-bridge.0", "babel-plugin-transform-remove-console": "^6.9.4", "cypress": "13.4.0", - "eslint": "^7.32.0", - "eslint-config-prettier": "^8.3.0", - "eslint-plugin-prettier": "^4.0.0", - "eslint-plugin-vue": "^8.0.3", - "prettier": "^2.4.1", + "eslint": "^8.53.0", + "eslint-config-prettier": "^9.0.0", + "eslint-plugin-prettier": "^5.0.1", + "eslint-plugin-vue": "^9.18.1", + "prettier": "^3.0.3", "typescript": "~3.9.3", "web-worker": "^1.2.0" } diff --git a/webapp/src/components/TinyMceInline.vue b/webapp/src/components/TinyMceInline.vue index eeb5c7ab1..dba2e81a4 100644 --- a/webapp/src/components/TinyMceInline.vue +++ b/webapp/src/components/TinyMceInline.vue @@ -8,7 +8,7 @@ menubar: false, placeholder: 'Add a description', toolbar_location: 'bottom', - plugins: 'hr image link lists charmap table', + plugins: 'image link lists charmap table', table_default_styles: { width: '50%', 'margin-left': '1rem', diff --git a/webapp/src/main.js b/webapp/src/main.js index d6eb8ba20..6c36127c7 100644 --- a/webapp/src/main.js +++ b/webapp/src/main.js @@ -85,7 +85,6 @@ import "tinymce/skins/ui/oxide/skin.min.css"; import "tinymce/skins/ui/oxide/content.min.css"; import "tinymce/skins/content/default/content.min.css"; // import "tinymce/plugins/emoticons" // not working for some reason -import "tinymce/plugins/hr"; import "tinymce/plugins/image"; import "tinymce/plugins/link"; import "tinymce/plugins/lists"; diff --git a/webapp/yarn.lock b/webapp/yarn.lock index cee59a7a3..d0400d4a2 100644 --- a/webapp/yarn.lock +++ b/webapp/yarn.lock @@ -139,13 +139,6 @@ dependencies: xss "^1.0.8" -"@babel/code-frame@7.12.11": - version "7.12.11" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.12.11.tgz#f4ad435aa263db935b8f10f2c552d23fb716a63f" - integrity sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw== - dependencies: - "@babel/highlight" "^7.10.4" - "@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.22.10", "@babel/code-frame@^7.22.5": version "7.22.10" resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.22.10.tgz#1c20e612b768fefa75f6e90d6ecb86329247f0a3" @@ -188,10 +181,31 @@ json5 "^2.2.2" semver "^6.3.1" -"@babel/eslint-parser@^7.12.16": - version "7.22.10" - resolved "https://registry.yarnpkg.com/@babel/eslint-parser/-/eslint-parser-7.22.10.tgz#bfdf3d1b32ad573fe7c1c3447e0b485e3a41fd09" - integrity sha512-0J8DNPRXQRLeR9rPaUMM3fA+RbixjnVLe/MRMYCkp3hzgsSuxCHQ8NN8xQG1wIHKJ4a1DTROTvFJdW+B5/eOsg== +"@babel/core@^7.23.2": + version "7.23.2" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.23.2.tgz#ed10df0d580fff67c5f3ee70fd22e2e4c90a9f94" + integrity sha512-n7s51eWdaWZ3vGT2tD4T7J6eJs3QoBXydv7vkUM06Bf1cbVD2Kc2UrkzhiQwobfV7NwOnQXYL7UBJ5VPU+RGoQ== + dependencies: + "@ampproject/remapping" "^2.2.0" + "@babel/code-frame" "^7.22.13" + "@babel/generator" "^7.23.0" + "@babel/helper-compilation-targets" "^7.22.15" + "@babel/helper-module-transforms" "^7.23.0" + "@babel/helpers" "^7.23.2" + "@babel/parser" "^7.23.0" + "@babel/template" "^7.22.15" + "@babel/traverse" "^7.23.2" + "@babel/types" "^7.23.0" + convert-source-map "^2.0.0" + debug "^4.1.0" + gensync "^1.0.0-beta.2" + json5 "^2.2.3" + semver "^6.3.1" + +"@babel/eslint-parser@^7.22.15": + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/eslint-parser/-/eslint-parser-7.22.15.tgz#263f059c476e29ca4972481a17b8b660cb025a34" + integrity sha512-yc8OOBIQk1EcRrpizuARSQS0TWAcOMpEJ1aafhNznaeYkeL+OhqnDObGFylB8ka8VFF/sZc+S4RzHyO+3LjQxg== dependencies: "@nicolo-ribaudo/eslint-scope-5-internals" "5.1.1-v1" eslint-visitor-keys "^2.1.0" @@ -242,6 +256,17 @@ lru-cache "^5.1.1" semver "^6.3.1" +"@babel/helper-compilation-targets@^7.22.15": + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.15.tgz#0698fc44551a26cf29f18d4662d5bf545a6cfc52" + integrity sha512-y6EEzULok0Qvz8yyLkCvVX+02ic+By2UdOhylwUOvOn9dvYc9mKICJuuU1n1XBI02YWsNsnrY1kc6DVbjcXbtw== + dependencies: + "@babel/compat-data" "^7.22.9" + "@babel/helper-validator-option" "^7.22.15" + browserslist "^4.21.9" + lru-cache "^5.1.1" + semver "^6.3.1" + "@babel/helper-create-class-features-plugin@^7.18.6", "@babel/helper-create-class-features-plugin@^7.22.10", "@babel/helper-create-class-features-plugin@^7.22.5": version "7.22.10" resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.22.10.tgz#dd2612d59eac45588021ac3d6fa976d08f4e95a3" @@ -324,6 +349,13 @@ dependencies: "@babel/types" "^7.22.5" +"@babel/helper-module-imports@^7.22.15": + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz#16146307acdc40cc00c3b2c647713076464bdbf0" + integrity sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w== + dependencies: + "@babel/types" "^7.22.15" + "@babel/helper-module-transforms@^7.22.5", "@babel/helper-module-transforms@^7.22.9": version "7.22.9" resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.22.9.tgz#92dfcb1fbbb2bc62529024f72d942a8c97142129" @@ -335,6 +367,17 @@ "@babel/helper-split-export-declaration" "^7.22.6" "@babel/helper-validator-identifier" "^7.22.5" +"@babel/helper-module-transforms@^7.23.0": + version "7.23.0" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.23.0.tgz#3ec246457f6c842c0aee62a01f60739906f7047e" + integrity sha512-WhDWw1tdrlT0gMgUJSlX0IQvoO1eN279zrAUbVB+KpV2c3Tylz8+GnKOLllCS6Z/iZQEyVYxhZVUdPTqs2YYPw== + dependencies: + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-module-imports" "^7.22.15" + "@babel/helper-simple-access" "^7.22.5" + "@babel/helper-split-export-declaration" "^7.22.6" + "@babel/helper-validator-identifier" "^7.22.20" + "@babel/helper-optimise-call-expression@^7.22.5": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.22.5.tgz#f21531a9ccbff644fdd156b4077c16ff0c3f609e" @@ -401,6 +444,11 @@ resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.5.tgz#9544ef6a33999343c8740fa51350f30eeaaaf193" integrity sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ== +"@babel/helper-validator-option@^7.22.15": + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.22.15.tgz#694c30dfa1d09a6534cdfcafbe56789d36aba040" + integrity sha512-bMn7RmyFjY/mdECUbgn9eoSY4vqvacUnS9i9vGAGttgFWesO6B4CYWA7XlpbWgBt71iv/hfbPlynohStqnu5hA== + "@babel/helper-validator-option@^7.22.5": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.22.5.tgz#de52000a15a177413c8234fa3a8af4ee8102d0ac" @@ -424,7 +472,16 @@ "@babel/traverse" "^7.22.10" "@babel/types" "^7.22.10" -"@babel/highlight@^7.10.4", "@babel/highlight@^7.22.10": +"@babel/helpers@^7.23.2": + version "7.23.2" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.23.2.tgz#2832549a6e37d484286e15ba36a5330483cac767" + integrity sha512-lzchcp8SjTSVe/fPmLwtWVBFC7+Tbn8LGHDVfDp9JGxpAY5opSaEFgt8UQvrnECWOTdji2mOWMz1rOhkHscmGQ== + dependencies: + "@babel/template" "^7.22.15" + "@babel/traverse" "^7.23.2" + "@babel/types" "^7.23.0" + +"@babel/highlight@^7.22.10": version "7.22.10" resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.22.10.tgz#02a3f6d8c1cb4521b2fd0ab0da8f4739936137d7" integrity sha512-78aUtVcT7MUscr0K5mIEnkwxPE0MaxkR5RxRwuHaQ+JuU5AmTPhY+do2mdzVTnIJJpyBglql2pehuBIWHug+WQ== @@ -782,6 +839,14 @@ "@babel/helper-builder-binary-assignment-operator-visitor" "^7.22.5" "@babel/helper-plugin-utils" "^7.22.5" +"@babel/plugin-transform-export-namespace-from@*": + version "7.22.11" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.22.11.tgz#b3c84c8f19880b6c7440108f8929caf6056db26c" + integrity sha512-xa7aad7q7OiT8oNZ1mU7NrISjlSkVdMbNxn9IuLZyL9AJEhs1Apba3I+u5riX1dIkdptP5EKDG5XDPByWxtehw== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-export-namespace-from" "^7.8.3" + "@babel/plugin-transform-export-namespace-from@^7.22.5": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.22.5.tgz#57c41cb1d0613d22f548fddd8b288eedb9973a5b" @@ -1245,7 +1310,7 @@ "@babel/parser" "^7.22.5" "@babel/types" "^7.22.5" -"@babel/traverse@^7.22.10", "@babel/traverse@^7.22.5": +"@babel/traverse@^7.22.10", "@babel/traverse@^7.22.5", "@babel/traverse@^7.23.2": version "7.23.2" resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.23.2.tgz#329c7a06735e144a506bdb2cad0268b7f46f4ad8" integrity sha512-azpe59SQ48qG6nu2CzcMLbxUudtN+dOM9kDbUqGq3HXUJRlo7i8fvPoxQUzYgLZ4cMVmuZgm8vvBpNeRhd6XSw== @@ -1326,21 +1391,38 @@ resolved "https://registry.yarnpkg.com/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz#1d572bfbbe14b7704e0ba0f39b74815b84870d70" integrity sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw== -"@eslint/eslintrc@^0.4.3": - version "0.4.3" - resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-0.4.3.tgz#9e42981ef035beb3dd49add17acb96e8ff6f394c" - integrity sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw== +"@eslint-community/eslint-utils@^4.2.0", "@eslint-community/eslint-utils@^4.4.0": + version "4.4.0" + resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz#a23514e8fb9af1269d5f7788aa556798d61c6b59" + integrity sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA== + dependencies: + eslint-visitor-keys "^3.3.0" + +"@eslint-community/regexpp@^4.6.1": + version "4.10.0" + resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.10.0.tgz#548f6de556857c8bb73bbee70c35dc82a2e74d63" + integrity sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA== + +"@eslint/eslintrc@^2.1.3": + version "2.1.3" + resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-2.1.3.tgz#797470a75fe0fbd5a53350ee715e85e87baff22d" + integrity sha512-yZzuIG+jnVu6hNSzFEN07e8BxF3uAzYtQb6uDkaYZLo6oYZDCq454c5kB8zxnzfCYyP4MIuyBn10L0DqwujTmA== dependencies: ajv "^6.12.4" - debug "^4.1.1" - espree "^7.3.0" - globals "^13.9.0" - ignore "^4.0.6" + debug "^4.3.2" + espree "^9.6.0" + globals "^13.19.0" + ignore "^5.2.0" import-fresh "^3.2.1" - js-yaml "^3.13.1" - minimatch "^3.0.4" + js-yaml "^4.1.0" + minimatch "^3.1.2" strip-json-comments "^3.1.1" +"@eslint/js@8.53.0": + version "8.53.0" + resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.53.0.tgz#bea56f2ed2b5baea164348ff4d5a879f6f81f20d" + integrity sha512-Kn7K8dx/5U6+cT1yEhpX1w4PCSg0M+XyRILPgvwcEBjerFWCwQj5sbr3/VmxqV0JGHCBCzyd6LxypEuehypY1w== + "@fortawesome/fontawesome-common-types@^0.2.36": version "0.2.36" resolved "https://registry.yarnpkg.com/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-0.2.36.tgz#b44e52db3b6b20523e0c57ef8c42d315532cb903" @@ -1379,10 +1461,10 @@ dependencies: "@fortawesome/fontawesome-common-types" "^0.2.36" -"@fortawesome/vue-fontawesome@^3.0.0-3": - version "3.0.3" - resolved "https://registry.yarnpkg.com/@fortawesome/vue-fontawesome/-/vue-fontawesome-3.0.3.tgz#633e2998d11f7d4ed41f0d5ea461a22ec9b9d034" - integrity sha512-KCPHi9QemVXGMrfuwf3nNnNo129resAIQWut9QTAMXmXqL2ErABC6ohd2yY5Ipq0CLWNbKHk8TMdTXL/Zf3ZhA== +"@fortawesome/vue-fontawesome@^3.0.5": + version "3.0.5" + resolved "https://registry.yarnpkg.com/@fortawesome/vue-fontawesome/-/vue-fontawesome-3.0.5.tgz#fef21fbb0277711160f9105e8e5bb9a15f5fce25" + integrity sha512-isZZ4+utQH9qg9cWxWYHQ9GwI3r5FeO7GnmzKYV+gbjxcptQhh+F99iZXi1Y9AvFUEgy8kRpAdvDlbb3drWFrw== "@graphql-tools/merge@8.3.1": version "8.3.1" @@ -1462,19 +1544,24 @@ dependencies: "@hapi/hoek" "^9.0.0" -"@humanwhocodes/config-array@^0.5.0": - version "0.5.0" - resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.5.0.tgz#1407967d4c6eecd7388f83acf1eaf4d0c6e58ef9" - integrity sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg== +"@humanwhocodes/config-array@^0.11.13": + version "0.11.13" + resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.13.tgz#075dc9684f40a531d9b26b0822153c1e832ee297" + integrity sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ== dependencies: - "@humanwhocodes/object-schema" "^1.2.0" + "@humanwhocodes/object-schema" "^2.0.1" debug "^4.1.1" - minimatch "^3.0.4" + minimatch "^3.0.5" -"@humanwhocodes/object-schema@^1.2.0": - version "1.2.1" - resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45" - integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA== +"@humanwhocodes/module-importer@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c" + integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== + +"@humanwhocodes/object-schema@^2.0.1": + version "2.0.1" + resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-2.0.1.tgz#e5211452df060fa8522b55c7b3c0c4d1981cb044" + integrity sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw== "@josephg/resolvable@^1.0.0": version "1.0.1" @@ -1553,7 +1640,7 @@ resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== -"@nodelib/fs.walk@^1.2.3": +"@nodelib/fs.walk@^1.2.3", "@nodelib/fs.walk@^1.2.8": version "1.2.8" resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== @@ -1566,6 +1653,18 @@ resolved "https://registry.yarnpkg.com/@one-ini/wasm/-/wasm-0.1.1.tgz#6013659736c9dbfccc96e8a9c2b3de317df39323" integrity sha512-XuySG1E38YScSJoMlqovLru4KTUNSjgVTIjyh7qMX6aNN5HY5Ct5LhRJdxO79JtTzKfzV/bnWpz+zquYrISsvw== +"@pkgr/utils@^2.3.1": + version "2.4.2" + resolved "https://registry.yarnpkg.com/@pkgr/utils/-/utils-2.4.2.tgz#9e638bbe9a6a6f165580dc943f138fd3309a2cbc" + integrity sha512-POgTXhjrTfbTV63DiFXav4lBHiICLKKwDeaKn9Nphwj7WH6m0hMMCaJkMyRWjgtPFyRKRVoMXXjczsTQRDEhYw== + dependencies: + cross-spawn "^7.0.3" + fast-glob "^3.3.0" + is-glob "^4.0.3" + open "^9.1.0" + picocolors "^1.0.0" + tslib "^2.6.0" + "@polka/url@^1.0.0-next.20": version "1.0.0-next.21" resolved "https://registry.yarnpkg.com/@polka/url/-/url-1.0.0-next.21.tgz#5de5a2385a35309427f6011992b544514d559aa1" @@ -1692,18 +1791,23 @@ "@testing-library/dom" "^9.3.3" "@vue/test-utils" "^2.4.1" -"@tinymce/tinymce-vue@^4.0.0": - version "4.0.7" - resolved "https://registry.yarnpkg.com/@tinymce/tinymce-vue/-/tinymce-vue-4.0.7.tgz#811dd87a2a9f70e60c43c2d9d932771c0c8b4677" - integrity sha512-1esB8wGWrjPCY+rK8vy3QB1cxwXo7HLJWuNrcyPl6LOVR+QJjub0OiV/C+TUEsLN6OpCtRv+QnIqMC5vXz783Q== +"@tinymce/tinymce-vue@^5.1.1": + version "5.1.1" + resolved "https://registry.yarnpkg.com/@tinymce/tinymce-vue/-/tinymce-vue-5.1.1.tgz#0879787e07833a4316b2eaf0417c7c6a2abce86b" + integrity sha512-iO57HOWesFOhsaqjA5Ea6sDvQBmJJH3/dq00Uvg7metlct2kLF+ctRgoDsetLt6gmeZ7COPftr814/XzqnJ/dg== dependencies: - tinymce "^5.5.0" + tinymce "^6.0.0 || ^5.5.1" "@transloadit/prettier-bytes@0.0.7": version "0.0.7" resolved "https://registry.yarnpkg.com/@transloadit/prettier-bytes/-/prettier-bytes-0.0.7.tgz#cdb5399f445fdd606ed833872fa0cabdbc51686b" integrity sha512-VeJbUb0wEKbcwaSlj5n+LscBl9IPgLPkHVGBkh00cztv6X4L/TJXK58LzFuBKX7/GAfiGhIwH67YTLTlzvIzBA== +"@transloadit/prettier-bytes@0.0.9": + version "0.0.9" + resolved "https://registry.yarnpkg.com/@transloadit/prettier-bytes/-/prettier-bytes-0.0.9.tgz#8d3146f75fd9d3c544cb63ec7dbdeb6670d3e2d7" + integrity sha512-pCvdmea/F3Tn4hAtHqNXmjcixSaroJJ+L3STXlYJdir1g1m2mRQpWbN8a4SvgQtaw2930Ckhdx8qXdXBFMKbAA== + "@trysound/sax@0.2.0": version "0.2.0" resolved "https://registry.yarnpkg.com/@trysound/sax/-/sax-0.2.0.tgz#cccaab758af56761eb7bf37af6f03f326dd798ad" @@ -2010,10 +2114,10 @@ resolved "https://registry.yarnpkg.com/@types/unist/-/unist-2.0.7.tgz#5b06ad6894b236a1d2bd6b2f07850ca5c59cf4d6" integrity sha512-cputDpIbFgLUaGQn6Vqg3/YsJwxUwHLO13v3i5ouxT4lat0khip9AEWxtERujXV9wxIB1EyF97BSJFt6vpdI8g== -"@types/web-bluetooth@^0.0.16": - version "0.0.16" - resolved "https://registry.yarnpkg.com/@types/web-bluetooth/-/web-bluetooth-0.0.16.tgz#1d12873a8e49567371f2a75fe3e7f7edca6662d8" - integrity sha512-oh8q2Zc32S6gd/j50GowEjKLoOVOwHP/bWVjKJInBwQqdOYMdPrf1oVlelTlyfFK3CKxL1uahMDAr+vy8T7yMQ== +"@types/web-bluetooth@^0.0.18": + version "0.0.18" + resolved "https://registry.yarnpkg.com/@types/web-bluetooth/-/web-bluetooth-0.0.18.tgz#74bd1c8fd3a2058cb6fc76b188fcded50a83d866" + integrity sha512-v/ZHEj9xh82usl8LMR3GarzFY1IrbXJw5L4QfQhokjRV91q+SelFqxQWSep1ucXEZ22+dSTwLFkXeur25sPIbw== "@types/ws@^8.5.5": version "8.5.5" @@ -2029,116 +2133,118 @@ dependencies: "@types/node" "*" -"@uppy/companion-client@^1.10.2": - version "1.10.2" - resolved "https://registry.yarnpkg.com/@uppy/companion-client/-/companion-client-1.10.2.tgz#a640b3ef90b91751c49bf4b6a7a63c2ebac294f6" - integrity sha512-5RmsNF9UBvUqmqQz48SoiLvkpGmvQTgwNM4bJX8xwVozv/6goRpFrsMJGLwqFcHS/9xj6STKOqrM582g8exVwQ== +"@ungap/structured-clone@^1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@ungap/structured-clone/-/structured-clone-1.2.0.tgz#756641adb587851b5ccb3e095daf27ae581c8406" + integrity sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ== + +"@uppy/companion-client@^3.5.0": + version "3.5.0" + resolved "https://registry.yarnpkg.com/@uppy/companion-client/-/companion-client-3.5.0.tgz#13df17bc2ecbe2be60b84231121971c62b57d2c0" + integrity sha512-+Ql28pPdXpWFje18kHT3xt9RdrVPpbkMprTkoW85JFRbqrCCz6pFa8P+BHCh/J0ZHNDaL+jCuS7jRjYLRaeR7w== dependencies: - "@uppy/utils" "^3.6.2" + "@uppy/utils" "^5.5.2" namespace-emitter "^2.0.1" - qs-stringify "^1.1.0" - url-parse "^1.4.7" -"@uppy/core@^1.16.0": - version "1.20.1" - resolved "https://registry.yarnpkg.com/@uppy/core/-/core-1.20.1.tgz#23ca28d4388c29987fdc4e65a968474dcdc303c6" - integrity sha512-Z0yGixSNOSMgT/2aLylXQaEBB6X32RqGLQUgDJDK08jI0ZcMha5glNhD2RU1Gs9noQOAR/f7QwBssSnYJUNRfg== +"@uppy/core@^3.6.1": + version "3.6.1" + resolved "https://registry.yarnpkg.com/@uppy/core/-/core-3.6.1.tgz#db9ef5bcb9e0b8b69ecff9b462a21727b2378519" + integrity sha512-DZWSCcQlRbYmIjZ5cl4PMqnvssgpovLQ9Ke/9N8djIcVZdUV4TwNlF3ctdYaFSwsthIkxjR+h3Hf4cWDCZujJg== dependencies: - "@transloadit/prettier-bytes" "0.0.7" - "@uppy/store-default" "^1.2.7" - "@uppy/utils" "^3.6.2" - cuid "^2.1.1" - lodash.throttle "^4.1.1" + "@transloadit/prettier-bytes" "0.0.9" + "@uppy/store-default" "^3.0.5" + "@uppy/utils" "^5.5.2" + lodash "^4.17.21" mime-match "^1.0.2" namespace-emitter "^2.0.1" - preact "8.2.9" + nanoid "^4.0.0" + preact "^10.5.13" -"@uppy/dashboard@^1.16.0": - version "1.21.1" - resolved "https://registry.yarnpkg.com/@uppy/dashboard/-/dashboard-1.21.1.tgz#c920d3af69b61413ef109608dde9b12d3c8a434b" - integrity sha512-psMwBVxxhAZxYkRds4e//+Sx3zkFYRnYpt4jaF4hmwpL9SehlyhQKwaB/scZz/O4yshmgTN8Sri0mYK5FSh5SQ== +"@uppy/dashboard@^3.6.0": + version "3.6.0" + resolved "https://registry.yarnpkg.com/@uppy/dashboard/-/dashboard-3.6.0.tgz#a2f7ac519af1855a8f7180dc7010967fbddd880c" + integrity sha512-OVUbOxMnZzR9xREk73HcYHc6UCgDFvuB5ctVma41z/xlgi6wHczqNu6RFuWhh2WdNxgNLcQvllLzy3VcaybE/A== dependencies: "@transloadit/prettier-bytes" "0.0.7" - "@uppy/informer" "^1.6.6" - "@uppy/provider-views" "^1.12.3" - "@uppy/status-bar" "^1.9.6" - "@uppy/thumbnail-generator" "^1.7.11" - "@uppy/utils" "^3.6.2" + "@uppy/informer" "^3.0.4" + "@uppy/provider-views" "^3.6.0" + "@uppy/status-bar" "^3.2.5" + "@uppy/thumbnail-generator" "^3.0.6" + "@uppy/utils" "^5.5.2" classnames "^2.2.6" - cuid "^2.1.1" is-shallow-equal "^1.0.1" - lodash.debounce "^4.0.8" - lodash.throttle "^4.1.1" - memoize-one "^5.0.4" - preact "8.2.9" - resize-observer-polyfill "^1.5.0" + lodash "^4.17.21" + memoize-one "^6.0.0" + nanoid "^4.0.0" + preact "^10.5.13" -"@uppy/informer@^1.6.6": - version "1.6.6" - resolved "https://registry.yarnpkg.com/@uppy/informer/-/informer-1.6.6.tgz#94090ab74997f10c2a2151c04b1c75484bdfe7eb" - integrity sha512-9rZoAqNrKQN/HINnGg8rGnKEliLgc+9/tQQ0f9QcBgRIu/rnbBCTwS+qnGGdjYBdEJTSbHx+U7X9ufjrrjB+CA== +"@uppy/informer@^3.0.4": + version "3.0.4" + resolved "https://registry.yarnpkg.com/@uppy/informer/-/informer-3.0.4.tgz#dc8cfd870135caead5975b3357c043cc442732ab" + integrity sha512-gzocdxn8qAFsW2EryehwjghladaBgv6Isjte53FTBV7o/vjaHPP6huKGbYpljyuQi8i9V+KrmvNGslofssgJ4g== dependencies: - "@uppy/utils" "^3.6.2" - preact "8.2.9" + "@uppy/utils" "^5.5.2" + preact "^10.5.13" -"@uppy/provider-views@^1.12.3": - version "1.12.3" - resolved "https://registry.yarnpkg.com/@uppy/provider-views/-/provider-views-1.12.3.tgz#aecfed615bc174abc548539a3c17b39e455aed0e" - integrity sha512-r2kra3IftmGLeKMEgZbmQM1qXixulWUUzydgpHcZqJOpeNIjJcpspJruYRctrVqaLz/8asw87V4KxDk0U4xGzw== +"@uppy/provider-views@^3.6.0": + version "3.6.0" + resolved "https://registry.yarnpkg.com/@uppy/provider-views/-/provider-views-3.6.0.tgz#f6c391bda061bd3644ffa1e97a4ecde6704d9ad3" + integrity sha512-ySuFh6ZEmpQ7MEKj5mRF6RJtDItmYqq7DxVZsNrKnM/vFYCunyMSdhoJfvZEWMYVN37Dg1y8/0AIpnhZoGYfwQ== dependencies: - "@uppy/utils" "^3.6.2" + "@uppy/utils" "^5.5.2" classnames "^2.2.6" - preact "8.2.9" + nanoid "^4.0.0" + p-queue "^7.3.4" + preact "^10.5.13" -"@uppy/status-bar@^1.9.6": - version "1.9.6" - resolved "https://registry.yarnpkg.com/@uppy/status-bar/-/status-bar-1.9.6.tgz#a04f699444fc7f156c260e5b7c001125e5190a5f" - integrity sha512-U/KPs5SwZ5d4hJFiCNAdriGHSk1Uhrl+iQmpJS8hoM+8r8rPfwScdua2/ehLuH69Ymwp6k7DpK2DU7UG2XZ+ag== +"@uppy/status-bar@^3.2.5": + version "3.2.5" + resolved "https://registry.yarnpkg.com/@uppy/status-bar/-/status-bar-3.2.5.tgz#7ded2e8b4456fa369bc5b679b26ce12427fee556" + integrity sha512-bRSxBPio5B+Kuf6w8ll+/i9VUwG8f0FnbZ1yQvCr8J9vxhd0Z5hvwhX4NP8uzHC6ZPJHlEQOTsxzGQ6y+Mdm0A== dependencies: - "@transloadit/prettier-bytes" "0.0.7" - "@uppy/utils" "^3.6.2" + "@transloadit/prettier-bytes" "0.0.9" + "@uppy/utils" "^5.5.2" classnames "^2.2.6" - lodash.throttle "^4.1.1" - preact "8.2.9" + preact "^10.5.13" -"@uppy/store-default@^1.2.7": - version "1.2.7" - resolved "https://registry.yarnpkg.com/@uppy/store-default/-/store-default-1.2.7.tgz#41a0b1579f4d5b86c236e7f5e52fdc01960bb011" - integrity sha512-58IG9yk/i/kYQ9uEwAwMFl1H2V3syOoODrYoFfVHlxaqv+9MkXBg2tHE2gk40iaAIxcCErcPxZkBOvkqzO1SQA== +"@uppy/store-default@^3.0.5": + version "3.0.5" + resolved "https://registry.yarnpkg.com/@uppy/store-default/-/store-default-3.0.5.tgz#a1c864691c61a936936f3b425f26d801d14e4769" + integrity sha512-NEow8ZYicAvxEDqcmi9MSW2gy4uElVnRuHoHBx9zwB5g81F9i2Q/i1u08sKzUY704o84zI6bctDe2cCYdBCuZw== -"@uppy/thumbnail-generator@^1.7.11": - version "1.7.11" - resolved "https://registry.yarnpkg.com/@uppy/thumbnail-generator/-/thumbnail-generator-1.7.11.tgz#c6f49be90469f220a419ac43c129bf835cc11c41" - integrity sha512-qo9ZD8ByDMM6gIJ4JPN0V/dWlruYMhmYifhUvDUu0qhPAOTJAqh2hLQ+dlmUXTns8RnDorCXScreICSQ09FuLQ== +"@uppy/thumbnail-generator@^3.0.6": + version "3.0.6" + resolved "https://registry.yarnpkg.com/@uppy/thumbnail-generator/-/thumbnail-generator-3.0.6.tgz#9718fa9b4c1561cdf04bc4a7a5ac92c0289fcbfa" + integrity sha512-gsi/BQBiunHneXCbo8VglFbhEb0CoQXQjCyGNKoEq/deEcbXhBBDxkiGcgv83l5GZJl2jLiKWqXnXAXREkldrQ== dependencies: - "@uppy/utils" "^3.6.2" - exifr "^6.0.0" - math-log2 "^1.0.1" + "@uppy/utils" "^5.5.2" + exifr "^7.0.0" -"@uppy/utils@^3.6.2": - version "3.6.2" - resolved "https://registry.yarnpkg.com/@uppy/utils/-/utils-3.6.2.tgz#78b02455b9c469d927d22736be5b68cda2600826" - integrity sha512-wGTZma7eywIojfuE1vXlT0fxPSpmCRMkfgFWYc+6TL2FfGqWInmePoB+yal6/M2AnjeKHz6XYMhIpZkjOxFvcw== +"@uppy/utils@^5.5.2": + version "5.5.2" + resolved "https://registry.yarnpkg.com/@uppy/utils/-/utils-5.5.2.tgz#374af59a16b26bf25dd2c17975aff52af3d54f89" + integrity sha512-3vGx0L3t2ikZ1fgQxM2ztHDfx0hnC8QYFi+Wtc+8tNpiClzlJQHyOWLfBJ0mW0yREVXoITqa6mxev+/Zc3oVzA== dependencies: - abortcontroller-polyfill "^1.4.0" - lodash.throttle "^4.1.1" + lodash "^4.17.21" + preact "^10.5.13" -"@uppy/webcam@^1.8.4": - version "1.8.13" - resolved "https://registry.yarnpkg.com/@uppy/webcam/-/webcam-1.8.13.tgz#33a6d8c771c6b589eafee94eec8ed854a435c39d" - integrity sha512-DN9hPe9u9FRerGXTl4TgTMOYy2aMCXCK5Nu7FgMf7T+OT5qJmQcQ6ty4rEVlDTWdm45zmIpV1OG/dUb+iLcCjQ== +"@uppy/webcam@^3.3.4": + version "3.3.4" + resolved "https://registry.yarnpkg.com/@uppy/webcam/-/webcam-3.3.4.tgz#501667402a27d4b2f861437734422ae37e8a1828" + integrity sha512-K6YQTxjj7wlYQas8RbNPxyXPsKVOKx06oy5hHJIax3rKfXwaKz86dIK1Vc+WHwX/aHxc4z7YQyU+A2dwa++tZg== dependencies: - "@uppy/utils" "^3.6.2" - preact "8.2.9" + "@uppy/utils" "^5.5.2" + is-mobile "^3.1.1" + preact "^10.5.13" -"@uppy/xhr-upload@^1.6.10": - version "1.7.5" - resolved "https://registry.yarnpkg.com/@uppy/xhr-upload/-/xhr-upload-1.7.5.tgz#990ba3e698503bd51534a59fd426096e37ef942b" - integrity sha512-Itnc9j9k/PemcmT5KrZ1BEw3pTc6WJg0yyyOcE+hLO8Hjv60Fm7c/I2ZknarOroIjT1WiTSyuxTBPp+9UGkxNA== +"@uppy/xhr-upload@^3.4.2": + version "3.4.2" + resolved "https://registry.yarnpkg.com/@uppy/xhr-upload/-/xhr-upload-3.4.2.tgz#651e481b5106db98324880ca3daa6e11aa46389b" + integrity sha512-Y6H8+qC1HsjNy6WRU3AaqS8L/xJxtyZHpO1pC5l9bvoVjUZP60c4P3H5ZK7mUyPuCXfVa75KqwyRgiBMhFeaRg== dependencies: - "@uppy/companion-client" "^1.10.2" - "@uppy/utils" "^3.6.2" - cuid "^2.1.1" + "@uppy/companion-client" "^3.5.0" + "@uppy/utils" "^5.5.2" + nanoid "^4.0.0" "@vue/babel-helper-vue-jsx-merge-props@^1.4.0": version "1.4.0" @@ -2485,6 +2591,16 @@ estree-walker "^2.0.2" source-map-js "^1.0.2" +"@vue/compiler-core@3.3.8": + version "3.3.8" + resolved "https://registry.yarnpkg.com/@vue/compiler-core/-/compiler-core-3.3.8.tgz#301bb60d0245265a88ed5b30e200fbf223acb313" + integrity sha512-hN/NNBUECw8SusQvDSqqcVv6gWq8L6iAktUR0UF3vGu2OhzRqcOiAno0FmBJWwxhYEXRlQJT5XnoKsVq1WZx4g== + dependencies: + "@babel/parser" "^7.23.0" + "@vue/shared" "3.3.8" + estree-walker "^2.0.2" + source-map-js "^1.0.2" + "@vue/compiler-dom@3.3.4", "@vue/compiler-dom@^3.0.5": version "3.3.4" resolved "https://registry.yarnpkg.com/@vue/compiler-dom/-/compiler-dom-3.3.4.tgz#f56e09b5f4d7dc350f981784de9713d823341151" @@ -2493,6 +2609,14 @@ "@vue/compiler-core" "3.3.4" "@vue/shared" "3.3.4" +"@vue/compiler-dom@3.3.8": + version "3.3.8" + resolved "https://registry.yarnpkg.com/@vue/compiler-dom/-/compiler-dom-3.3.8.tgz#09d832514b9b8d9415a3816b065d69dbefcc7e9b" + integrity sha512-+PPtv+p/nWDd0AvJu3w8HS0RIm/C6VGBIRe24b9hSyNWOAPEUosFZ5diwawwP8ip5sJ8n0Pe87TNNNHnvjs0FQ== + dependencies: + "@vue/compiler-core" "3.3.8" + "@vue/shared" "3.3.8" + "@vue/compiler-sfc@2.7.14": version "2.7.14" resolved "https://registry.yarnpkg.com/@vue/compiler-sfc/-/compiler-sfc-2.7.14.tgz#3446fd2fbb670d709277fc3ffa88efc5e10284fd" @@ -2502,7 +2626,7 @@ postcss "^8.4.14" source-map "^0.6.1" -"@vue/compiler-sfc@3.3.4", "@vue/compiler-sfc@^3.2.4": +"@vue/compiler-sfc@3.3.4": version "3.3.4" resolved "https://registry.yarnpkg.com/@vue/compiler-sfc/-/compiler-sfc-3.3.4.tgz#b19d942c71938893535b46226d602720593001df" integrity sha512-6y/d8uw+5TkCuzBkgLS0v3lSM3hJDntFEiUORM11pQ/hKvkhSKZrXW6i69UyXlJQisJxuUEJKAWEqWbWsLeNKQ== @@ -2518,6 +2642,22 @@ postcss "^8.1.10" source-map-js "^1.0.2" +"@vue/compiler-sfc@3.3.8", "@vue/compiler-sfc@^3.3.8": + version "3.3.8" + resolved "https://registry.yarnpkg.com/@vue/compiler-sfc/-/compiler-sfc-3.3.8.tgz#40b18e48aa00260950964d1d72157668521be0e1" + integrity sha512-WMzbUrlTjfYF8joyT84HfwwXo+8WPALuPxhy+BZ6R4Aafls+jDBnSz8PDz60uFhuqFbl3HxRfxvDzrUf3THwpA== + dependencies: + "@babel/parser" "^7.23.0" + "@vue/compiler-core" "3.3.8" + "@vue/compiler-dom" "3.3.8" + "@vue/compiler-ssr" "3.3.8" + "@vue/reactivity-transform" "3.3.8" + "@vue/shared" "3.3.8" + estree-walker "^2.0.2" + magic-string "^0.30.5" + postcss "^8.4.31" + source-map-js "^1.0.2" + "@vue/compiler-ssr@3.3.4": version "3.3.4" resolved "https://registry.yarnpkg.com/@vue/compiler-ssr/-/compiler-ssr-3.3.4.tgz#9d1379abffa4f2b0cd844174ceec4a9721138777" @@ -2526,6 +2666,14 @@ "@vue/compiler-dom" "3.3.4" "@vue/shared" "3.3.4" +"@vue/compiler-ssr@3.3.8": + version "3.3.8" + resolved "https://registry.yarnpkg.com/@vue/compiler-ssr/-/compiler-ssr-3.3.8.tgz#136eed54411e4694815d961048a237191063fbce" + integrity sha512-hXCqQL/15kMVDBuoBYpUnSYT8doDNwsjvm3jTefnXr+ytn294ySnT8NlsFHmTgKNjwpuFy7XVV8yTeLtNl/P6w== + dependencies: + "@vue/compiler-dom" "3.3.8" + "@vue/shared" "3.3.8" + "@vue/component-compiler-utils@^3.1.0", "@vue/component-compiler-utils@^3.3.0": version "3.3.0" resolved "https://registry.yarnpkg.com/@vue/component-compiler-utils/-/component-compiler-utils-3.3.0.tgz#f9f5fb53464b0c37b2c8d2f3fbfe44df60f61dc9" @@ -2547,12 +2695,13 @@ resolved "https://registry.yarnpkg.com/@vue/devtools-api/-/devtools-api-6.5.0.tgz#98b99425edee70b4c992692628fa1ea2c1e57d07" integrity sha512-o9KfBeaBmCKl10usN4crU53fYtC1r7jJwdGKjPT24t348rHxgfpZ0xL3Xm/gLUYnc0oTp8LAmrxOeLyu6tbk2Q== -"@vue/eslint-config-prettier@^6.0.0": - version "6.0.0" - resolved "https://registry.yarnpkg.com/@vue/eslint-config-prettier/-/eslint-config-prettier-6.0.0.tgz#ad5912b308f4ae468458e02a2b05db0b9d246700" - integrity sha512-wFQmv45c3ige5EA+ngijq40YpVcIkAy0Lihupnsnd1Dao5CBbPyfCzqtejFLZX1EwH/kCJdpz3t6s+5wd3+KxQ== +"@vue/eslint-config-prettier@^8.0.0": + version "8.0.0" + resolved "https://registry.yarnpkg.com/@vue/eslint-config-prettier/-/eslint-config-prettier-8.0.0.tgz#de5cb77ed483b43683d17a788808a0fa4e7bd07e" + integrity sha512-55dPqtC4PM/yBjhAr+yEw6+7KzzdkBuLmnhBrDfp4I48+wy+Giqqj9yUr5T2uD/BkBROjjmqnLZmXRdOx/VtQg== dependencies: - eslint-config-prettier "^6.0.0" + eslint-config-prettier "^8.8.0" + eslint-plugin-prettier "^5.0.0" "@vue/reactivity-transform@3.3.4": version "3.3.4" @@ -2565,6 +2714,17 @@ estree-walker "^2.0.2" magic-string "^0.30.0" +"@vue/reactivity-transform@3.3.8": + version "3.3.8" + resolved "https://registry.yarnpkg.com/@vue/reactivity-transform/-/reactivity-transform-3.3.8.tgz#6d07649013b0be5c670f0ab6cc7ddd3150ad03f2" + integrity sha512-49CvBzmZNtcHua0XJ7GdGifM8GOXoUMOX4dD40Y5DxI3R8OUhMlvf2nvgUAcPxaXiV5MQQ1Nwy09ADpnLQUqRw== + dependencies: + "@babel/parser" "^7.23.0" + "@vue/compiler-core" "3.3.8" + "@vue/shared" "3.3.8" + estree-walker "^2.0.2" + magic-string "^0.30.5" + "@vue/reactivity@3.3.4": version "3.3.4" resolved "https://registry.yarnpkg.com/@vue/reactivity/-/reactivity-3.3.4.tgz#a27a29c6cd17faba5a0e99fbb86ee951653e2253" @@ -2572,6 +2732,13 @@ dependencies: "@vue/shared" "3.3.4" +"@vue/reactivity@3.3.8": + version "3.3.8" + resolved "https://registry.yarnpkg.com/@vue/reactivity/-/reactivity-3.3.8.tgz#cce8a03a3fd3539c3eeda53e277ba365d160dd4d" + integrity sha512-ctLWitmFBu6mtddPyOKpHg8+5ahouoTCRtmAHZAXmolDtuZXfjL2T3OJ6DL6ezBPQB1SmMnpzjiWjCiMYmpIuw== + dependencies: + "@vue/shared" "3.3.8" + "@vue/runtime-core@3.3.4": version "3.3.4" resolved "https://registry.yarnpkg.com/@vue/runtime-core/-/runtime-core-3.3.4.tgz#4bb33872bbb583721b340f3088888394195967d1" @@ -2580,6 +2747,14 @@ "@vue/reactivity" "3.3.4" "@vue/shared" "3.3.4" +"@vue/runtime-core@3.3.8": + version "3.3.8" + resolved "https://registry.yarnpkg.com/@vue/runtime-core/-/runtime-core-3.3.8.tgz#fba5a632cbf2b5d29e171489570149cb6975dcdb" + integrity sha512-qurzOlb6q26KWQ/8IShHkMDOuJkQnQcTIp1sdP4I9MbCf9FJeGVRXJFr2mF+6bXh/3Zjr9TDgURXrsCr9bfjUw== + dependencies: + "@vue/reactivity" "3.3.8" + "@vue/shared" "3.3.8" + "@vue/runtime-dom@3.3.4": version "3.3.4" resolved "https://registry.yarnpkg.com/@vue/runtime-dom/-/runtime-dom-3.3.4.tgz#992f2579d0ed6ce961f47bbe9bfe4b6791251566" @@ -2589,6 +2764,15 @@ "@vue/shared" "3.3.4" csstype "^3.1.1" +"@vue/runtime-dom@3.3.8": + version "3.3.8" + resolved "https://registry.yarnpkg.com/@vue/runtime-dom/-/runtime-dom-3.3.8.tgz#e2d7aa795cf50914dda9a951887765a594b38af4" + integrity sha512-Noy5yM5UIf9UeFoowBVgghyGGPIDPy1Qlqt0yVsUdAVbqI8eeMSsTqBtauaEoT2UFXUk5S64aWVNJN4MJ2vRdA== + dependencies: + "@vue/runtime-core" "3.3.8" + "@vue/shared" "3.3.8" + csstype "^3.1.2" + "@vue/server-renderer@3.3.4": version "3.3.4" resolved "https://registry.yarnpkg.com/@vue/server-renderer/-/server-renderer-3.3.4.tgz#ea46594b795d1536f29bc592dd0f6655f7ea4c4c" @@ -2597,11 +2781,24 @@ "@vue/compiler-ssr" "3.3.4" "@vue/shared" "3.3.4" +"@vue/server-renderer@3.3.8": + version "3.3.8" + resolved "https://registry.yarnpkg.com/@vue/server-renderer/-/server-renderer-3.3.8.tgz#9b1779010e75783edeed8fcfb97d9c95fc3ac5d2" + integrity sha512-zVCUw7RFskvPuNlPn/8xISbrf0zTWsTSdYTsUTN1ERGGZGVnRxM2QZ3x1OR32+vwkkCm0IW6HmJ49IsPm7ilLg== + dependencies: + "@vue/compiler-ssr" "3.3.8" + "@vue/shared" "3.3.8" + "@vue/shared@3.3.4": version "3.3.4" resolved "https://registry.yarnpkg.com/@vue/shared/-/shared-3.3.4.tgz#06e83c5027f464eef861c329be81454bc8b70780" integrity sha512-7OjdcV8vQ74eiz1TZLzZP4JwqM5fA94K6yntPS5Z25r9HDuGNzaGdgvwKYq6S+MxwF0TFRwe50fIR/MYnakdkQ== +"@vue/shared@3.3.8": + version "3.3.8" + resolved "https://registry.yarnpkg.com/@vue/shared/-/shared-3.3.8.tgz#f044942142e1d3a395f24132e6203a784838542d" + integrity sha512-8PGwybFwM4x8pcfgqEQFy70NaQxASvOC5DJwLQfpArw1UDfUXrJkdxD3BhVTMS+0Lef/TU7YO0Jvr0jJY8T+mw== + "@vue/test-utils@^2.0.0-0", "@vue/test-utils@^2.4.1": version "2.4.1" resolved "https://registry.yarnpkg.com/@vue/test-utils/-/test-utils-2.4.1.tgz#7db869b4142d2a5fce4ad6c6dfa01c8ea524f26c" @@ -2626,36 +2823,36 @@ resolved "https://registry.yarnpkg.com/@vue/web-component-wrapper/-/web-component-wrapper-1.3.0.tgz#b6b40a7625429d2bd7c2281ddba601ed05dc7f1a" integrity sha512-Iu8Tbg3f+emIIMmI2ycSI8QcEuAUgPTgHwesDU1eKMLE4YC/c/sFbGc70QgMq31ijRftV0R7vCm9co6rldCeOA== -"@vueuse/components@^9.12.0": - version "9.13.0" - resolved "https://registry.yarnpkg.com/@vueuse/components/-/components-9.13.0.tgz#ff909e5abdedc4123a3001c8ce88d6230b1bb5d9" - integrity sha512-UJ8PjQ4SGb2rsVIy9vhEc6aCu+3+2cc+xEfGNX8/M1NKIuL2Vo6c2Kc2fYFaRzWZkP8HWXu+IcwvnAzL44IEFA== +"@vueuse/components@^10.5.0": + version "10.5.0" + resolved "https://registry.yarnpkg.com/@vueuse/components/-/components-10.5.0.tgz#fdb8c20e3d9bf52a32be8c59dd389fa37acabd09" + integrity sha512-zWQZ8zkNBvX++VHfyiUaQ4otb+4PWI8679GR8FvdrNnj+01LXnqvrkyKd8yTCMJ9nHqwRRTJikS5fu4Zspn9DQ== dependencies: - "@vueuse/core" "9.13.0" - "@vueuse/shared" "9.13.0" - vue-demi "*" + "@vueuse/core" "10.5.0" + "@vueuse/shared" "10.5.0" + vue-demi ">=0.14.6" -"@vueuse/core@9.13.0", "@vueuse/core@^9.12.0": - version "9.13.0" - resolved "https://registry.yarnpkg.com/@vueuse/core/-/core-9.13.0.tgz#2f69e66d1905c1e4eebc249a01759cf88ea00cf4" - integrity sha512-pujnclbeHWxxPRqXWmdkKV5OX4Wk4YeK7wusHqRwU0Q7EFusHoqNA/aPhB6KCh9hEqJkLAJo7bb0Lh9b+OIVzw== +"@vueuse/core@10.5.0": + version "10.5.0" + resolved "https://registry.yarnpkg.com/@vueuse/core/-/core-10.5.0.tgz#04d1e6d26592bb997bb755a4830ea7583c3e8612" + integrity sha512-z/tI2eSvxwLRjOhDm0h/SXAjNm8N5ld6/SC/JQs6o6kpJ6Ya50LnEL8g5hoYu005i28L0zqB5L5yAl8Jl26K3A== dependencies: - "@types/web-bluetooth" "^0.0.16" - "@vueuse/metadata" "9.13.0" - "@vueuse/shared" "9.13.0" - vue-demi "*" + "@types/web-bluetooth" "^0.0.18" + "@vueuse/metadata" "10.5.0" + "@vueuse/shared" "10.5.0" + vue-demi ">=0.14.6" -"@vueuse/metadata@9.13.0": - version "9.13.0" - resolved "https://registry.yarnpkg.com/@vueuse/metadata/-/metadata-9.13.0.tgz#bc25a6cdad1b1a93c36ce30191124da6520539ff" - integrity sha512-gdU7TKNAUVlXXLbaF+ZCfte8BjRJQWPCa2J55+7/h+yDtzw3vOoGQDRXzI6pyKyo6bXFT5/QoPE4hAknExjRLQ== +"@vueuse/metadata@10.5.0": + version "10.5.0" + resolved "https://registry.yarnpkg.com/@vueuse/metadata/-/metadata-10.5.0.tgz#7501a88cf5cbf7a515a03f0b8bbe3cecf30cad11" + integrity sha512-fEbElR+MaIYyCkeM0SzWkdoMtOpIwO72x8WsZHRE7IggiOlILttqttM69AS13nrDxosnDBYdyy3C5mR1LCxHsw== -"@vueuse/shared@9.13.0": - version "9.13.0" - resolved "https://registry.yarnpkg.com/@vueuse/shared/-/shared-9.13.0.tgz#089ff4cc4e2e7a4015e57a8f32e4b39d096353b9" - integrity sha512-UrnhU+Cnufu4S6JLCPZnkWh0WwZGUp72ktOF2DFptMlOs3TOdVv8xJN53zhHGARmVOsz5KqOls09+J1NR6sBKw== +"@vueuse/shared@10.5.0": + version "10.5.0" + resolved "https://registry.yarnpkg.com/@vueuse/shared/-/shared-10.5.0.tgz#b3ac8c190a5dae41db5e1b60fe304a9b4247393c" + integrity sha512-18iyxbbHYLst9MqU1X1QNdMHIjks6wC7XTVf0KNOv5es/Ms6gjVFCAAWTVP2JStuGqydg3DT+ExpFORUEi9yhg== dependencies: - vue-demi "*" + vue-demi ">=0.14.6" "@webassemblyjs/ast@1.11.6", "@webassemblyjs/ast@^1.11.5": version "1.11.6" @@ -2793,11 +2990,6 @@ abbrev@^1.0.0: resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== -abortcontroller-polyfill@^1.4.0: - version "1.7.5" - resolved "https://registry.yarnpkg.com/abortcontroller-polyfill/-/abortcontroller-polyfill-1.7.5.tgz#6738495f4e901fbb57b6c0611d0c75f76c485bed" - integrity sha512-JMJ5soJWP18htbbxJjG7bG6yuI6pRhgJ0scHHTfkUjf6wjP912xZWvM+A4sJK3gqd9E8fcPbDnOefbA9Th/FIQ== - accepts@^1.3.5, accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.8: version "1.3.8" resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.8.tgz#0bf0be125b67014adcb0b0921e62db7bffe16b2e" @@ -2811,7 +3003,7 @@ acorn-import-assertions@^1.9.0: resolved "https://registry.yarnpkg.com/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz#507276249d684797c84e0734ef84860334cfb1ac" integrity sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA== -acorn-jsx@^5.3.1, acorn-jsx@^5.3.2: +acorn-jsx@^5.3.2: version "5.3.2" resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== @@ -2821,11 +3013,6 @@ acorn-walk@^8.0.0, acorn-walk@^8.0.2: resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.2.0.tgz#741210f2e2426454508853a2f44d0ab83b7f69c1" integrity sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA== -acorn@^7.4.0: - version "7.4.1" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" - integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== - acorn@^8.0.4, acorn@^8.0.5, acorn@^8.7.1, acorn@^8.8.2, acorn@^8.9.0: version "8.10.0" resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.10.0.tgz#8be5b3907a67221a81ab23c7889c4c5526b62ec5" @@ -2863,7 +3050,7 @@ ajv-keywords@^5.1.0: dependencies: fast-deep-equal "^3.1.3" -ajv@^6.10.0, ajv@^6.12.4, ajv@^6.12.5: +ajv@^6.12.4, ajv@^6.12.5: version "6.12.6" resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== @@ -2873,7 +3060,7 @@ ajv@^6.10.0, ajv@^6.12.4, ajv@^6.12.5: json-schema-traverse "^0.4.1" uri-js "^4.2.2" -ajv@^8.0.0, ajv@^8.0.1, ajv@^8.9.0: +ajv@^8.0.0, ajv@^8.9.0: version "8.12.0" resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.12.0.tgz#d1a0527323e22f53562c567c00991577dfbe19d1" integrity sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA== @@ -3319,6 +3506,11 @@ bcrypt-pbkdf@^1.0.0: dependencies: tweetnacl "^0.14.3" +big-integer@^1.6.44: + version "1.6.51" + resolved "https://registry.yarnpkg.com/big-integer/-/big-integer-1.6.51.tgz#0df92a5d9880560d3ff2d5fd20245c889d130686" + integrity sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg== + big.js@^5.2.2: version "5.2.2" resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328" @@ -3436,6 +3628,13 @@ boxen@^5.0.0: widest-line "^3.1.0" wrap-ansi "^7.0.0" +bplist-parser@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/bplist-parser/-/bplist-parser-0.2.0.tgz#43a9d183e5bf9d545200ceac3e712f79ebbe8d0e" + integrity sha512-z0M+byMThzQmD9NILRniCUXYsYpjwnlO8N5uCFaCqIOpqRsJCrQL9NK3JsD67CN5a08nF5oIL2bD6loTdHOuKw== + dependencies: + big-integer "^1.6.44" + brace-expansion@^1.1.7: version "1.1.11" resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" @@ -3589,6 +3788,13 @@ builtins@^1.0.3: resolved "https://registry.yarnpkg.com/builtins/-/builtins-1.0.3.tgz#cb94faeb61c8696451db36534e1422f94f0aee88" integrity sha512-uYBjakWipfaO/bXI7E8rq6kpwHRZK5cNYrUv2OzZSI/FvmdMyXJ2tG9dKcjEC5YHmHpUAwsargWIZNWdxb/bnQ== +bundle-name@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/bundle-name/-/bundle-name-3.0.0.tgz#ba59bcc9ac785fb67ccdbf104a2bf60c099f0e1a" + integrity sha512-PKA4BeSvBpQKQ8iPOGCSiell+N8P+Tf1DlwqmYhpe2gAhKPHn8EYOxVT+ShuGmhg8lN8XiSlS80yiExKXrURlw== + dependencies: + run-applescript "^5.0.0" + bytes@3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" @@ -4061,6 +4267,11 @@ convert-source-map@^1.7.0: resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.9.0.tgz#7faae62353fb4213366d0ca98358d22e8368b05f" integrity sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A== +convert-source-map@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-2.0.0.tgz#4b560f649fc4e918dd0ab75cf4961e8bc882d82a" + integrity sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg== + cookie-signature@1.0.6: version "1.0.6" resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" @@ -4095,7 +4306,7 @@ core-js-compat@^3.31.0, core-js-compat@^3.8.3: dependencies: browserslist "^4.21.9" -core-js@^3.6.5, core-js@^3.8.3: +core-js@^3.8.3: version "3.32.0" resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.32.0.tgz#7643d353d899747ab1f8b03d2803b0312a0fb3b6" integrity sha512-rd4rYZNlF3WuoYuRIDEmbR/ga9CeuWX9U05umAvgrrZoHY4Z++cp/xwPQMvUpBB4Ag6J8KfD80G0zwCyaSxDww== @@ -4341,16 +4552,11 @@ csso@^4.2.0: dependencies: css-tree "^1.1.2" -csstype@^3.1.0, csstype@^3.1.1: +csstype@^3.1.0, csstype@^3.1.1, csstype@^3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.2.tgz#1d4bf9d572f11c14031f0436e1c10bc1f571f50b" integrity sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ== -cuid@^2.1.1: - version "2.1.8" - resolved "https://registry.yarnpkg.com/cuid/-/cuid-2.1.8.tgz#cbb88f954171e0d5747606c0139fb65c5101eac0" - integrity sha512-xiEMER6E7TlTPnDxrM4eRiC6TRgjNX9xzEZ5U/Se2YJKr7Mq4pJn/2XEHjl3STcSh96GmkHPcBXLES8M29wyyg== - cypress@13.4.0: version "13.4.0" resolved "https://registry.yarnpkg.com/cypress/-/cypress-13.4.0.tgz#7d91069983ba7c664c505abde84d3e3e20484344" @@ -4443,6 +4649,14 @@ cytoscape@^3.23.0: heap "^0.2.6" lodash "^4.17.21" +cytoscape@^3.27.0: + version "3.27.0" + resolved "https://registry.yarnpkg.com/cytoscape/-/cytoscape-3.27.0.tgz#5141cd694570807c91075b609181bce102e0bb88" + integrity sha512-pPZJilfX9BxESwujODz5pydeGi+FBrXq1rcaB1mfhFXXFJ9GjE6CNndAk+8jPzoXGD+16LtSS4xlYEIUiW4Abg== + dependencies: + heap "^0.2.6" + lodash "^4.17.21" + "d3-array@1 - 2": version "2.12.1" resolved "https://registry.yarnpkg.com/d3-array/-/d3-array-2.12.1.tgz#e20b41aafcdffdf5d50928004ececf815a465e81" @@ -4786,7 +5000,7 @@ debug@^3.1.0, debug@^3.2.7: dependencies: ms "^2.1.1" -debug@^4.0.0, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.3.2, debug@^4.3.4: +debug@^4.0.0, debug@^4.1.0, debug@^4.1.1, debug@^4.3.2, debug@^4.3.4: version "4.3.4" resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== @@ -4904,6 +5118,24 @@ deepmerge@^4.2.2: resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.3.1.tgz#44b5f2147cd3b00d4b56137685966f26fd25dd4a" integrity sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A== +default-browser-id@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/default-browser-id/-/default-browser-id-3.0.0.tgz#bee7bbbef1f4e75d31f98f4d3f1556a14cea790c" + integrity sha512-OZ1y3y0SqSICtE8DE4S8YOE9UZOJ8wO16fKWVP5J1Qz42kV9jcnMVFrEE/noXb/ss3Q4pZIH79kxofzyNNtUNA== + dependencies: + bplist-parser "^0.2.0" + untildify "^4.0.0" + +default-browser@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/default-browser/-/default-browser-4.0.0.tgz#53c9894f8810bf86696de117a6ce9085a3cbc7da" + integrity sha512-wX5pXO1+BrhMkSbROFsyxUm0i/cJEScyNhA4PPxc41ICuv05ZZB/MX28s8aZx6xjmatvebIapF6hLEKEcpneUA== + dependencies: + bundle-name "^3.0.0" + default-browser-id "^3.0.0" + execa "^7.1.1" + titleize "^3.0.0" + default-gateway@^6.0.3: version "6.0.3" resolved "https://registry.yarnpkg.com/default-gateway/-/default-gateway-6.0.3.tgz#819494c888053bdb743edbf343d6cdf7f2943a71" @@ -4923,6 +5155,11 @@ define-lazy-prop@^2.0.0: resolved "https://registry.yarnpkg.com/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz#3f7ae421129bcaaac9bc74905c98a0009ec9ee7f" integrity sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og== +define-lazy-prop@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz#dbb19adfb746d7fc6d734a06b72f4a00d021255f" + integrity sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg== + define-properties@^1.1.3, define-properties@^1.1.4, define-properties@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.2.0.tgz#52988570670c9eacedd8064f4a990f2405849bd5" @@ -5228,7 +5465,7 @@ enhanced-resolve@^5.15.0: graceful-fs "^4.2.4" tapable "^2.2.0" -enquirer@^2.3.5, enquirer@^2.3.6: +enquirer@^2.3.6: version "2.4.1" resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.4.1.tgz#93334b3fbd74fc7097b224ab4a8fb7e40bf4ae56" integrity sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ== @@ -5305,18 +5542,16 @@ escape-string-regexp@^4.0.0: resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== -eslint-config-prettier@^6.0.0: - version "6.15.0" - resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-6.15.0.tgz#7f93f6cb7d45a92f1537a70ecc06366e1ac6fed9" - integrity sha512-a1+kOYLR8wMGustcgAjdydMsQ2A/2ipRPwRKUmfYaSxc9ZPcrku080Ctl6zrZzZNs/U82MjSv+qKREkoq3bJaw== - dependencies: - get-stdin "^6.0.0" - -eslint-config-prettier@^8.3.0: +eslint-config-prettier@^8.8.0: version "8.10.0" resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-8.10.0.tgz#3a06a662130807e2502fc3ff8b4143d8a0658e11" integrity sha512-SM8AMJdeQqRYT9O9zguiruQZaN7+z+E4eAP9oiLNGKMtomwaB1E9dcgUD6ZAn/eQAb52USbvezbiljfZUhbJcg== +eslint-config-prettier@^9.0.0: + version "9.0.0" + resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-9.0.0.tgz#eb25485946dd0c66cd216a46232dc05451518d1f" + integrity sha512-IcJsTkJae2S35pRsRAwoCE+925rJJStOdkKnLVgtE+tEpqU0EVVM7OqrwxqgptKdX29NUwC82I5pXsGFIgSevw== + eslint-plugin-cypress@^2.11.2: version "2.14.0" resolved "https://registry.yarnpkg.com/eslint-plugin-cypress/-/eslint-plugin-cypress-2.14.0.tgz#c65e1f592680dd25bbd00c86194ee85fecf59bd7" @@ -5324,26 +5559,28 @@ eslint-plugin-cypress@^2.11.2: dependencies: globals "^13.20.0" -eslint-plugin-prettier@^4.0.0: - version "4.2.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-4.2.1.tgz#651cbb88b1dab98bfd42f017a12fa6b2d993f94b" - integrity sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ== +eslint-plugin-prettier@^5.0.0, eslint-plugin-prettier@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-5.0.1.tgz#a3b399f04378f79f066379f544e42d6b73f11515" + integrity sha512-m3u5RnR56asrwV/lDC4GHorlW75DsFfmUcjfCYylTUs85dBRnB7VM6xG8eCMJdeDRnppzmxZVf1GEPJvl1JmNg== dependencies: prettier-linter-helpers "^1.0.0" + synckit "^0.8.5" -eslint-plugin-vue@^8.0.3: - version "8.7.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-vue/-/eslint-plugin-vue-8.7.1.tgz#f13c53547a0c9d64588a675cc5ecc6ccaf63703f" - integrity sha512-28sbtm4l4cOzoO1LtzQPxfxhQABararUb1JtqusQqObJpWX2e/gmVyeYVfepizPFne0Q5cILkYGiBoV36L12Wg== +eslint-plugin-vue@^9.18.1: + version "9.18.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-vue/-/eslint-plugin-vue-9.18.1.tgz#73cf29df7450ce5913296465f8d1dc545344920c" + integrity sha512-7hZFlrEgg9NIzuVik2I9xSnJA5RsmOfueYgsUGUokEDLJ1LHtxO0Pl4duje1BriZ/jDWb+44tcIlC3yi0tdlZg== dependencies: - eslint-utils "^3.0.0" + "@eslint-community/eslint-utils" "^4.4.0" natural-compare "^1.4.0" - nth-check "^2.0.1" - postcss-selector-parser "^6.0.9" - semver "^7.3.5" - vue-eslint-parser "^8.0.1" + nth-check "^2.1.1" + postcss-selector-parser "^6.0.13" + semver "^7.5.4" + vue-eslint-parser "^9.3.1" + xml-name-validator "^4.0.0" -eslint-scope@5.1.1, eslint-scope@^5.1.1: +eslint-scope@5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== @@ -5351,7 +5588,7 @@ eslint-scope@5.1.1, eslint-scope@^5.1.1: esrecurse "^4.3.0" estraverse "^4.1.1" -eslint-scope@^7.0.0: +eslint-scope@^7.1.1, eslint-scope@^7.2.2: version "7.2.2" resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.2.2.tgz#deb4f92563390f32006894af62a22dba1c46423f" integrity sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg== @@ -5359,31 +5596,12 @@ eslint-scope@^7.0.0: esrecurse "^4.3.0" estraverse "^5.2.0" -eslint-utils@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-2.1.0.tgz#d2de5e03424e707dc10c74068ddedae708741b27" - integrity sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg== - dependencies: - eslint-visitor-keys "^1.1.0" - -eslint-utils@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-3.0.0.tgz#8aebaface7345bb33559db0a1f13a1d2d48c3672" - integrity sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA== - dependencies: - eslint-visitor-keys "^2.0.0" - -eslint-visitor-keys@^1.1.0, eslint-visitor-keys@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e" - integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ== - -eslint-visitor-keys@^2.0.0, eslint-visitor-keys@^2.1.0: +eslint-visitor-keys@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303" integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw== -eslint-visitor-keys@^3.1.0, eslint-visitor-keys@^3.4.1: +eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4.3: version "3.4.3" resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz#0cd72fe8550e3c2eae156a96a4dddcd1c8ac5800" integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== @@ -5399,62 +5617,51 @@ eslint-webpack-plugin@^3.1.0: normalize-path "^3.0.0" schema-utils "^4.0.0" -eslint@^7.32.0: - version "7.32.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.32.0.tgz#c6d328a14be3fb08c8d1d21e12c02fdb7a2a812d" - integrity sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA== - dependencies: - "@babel/code-frame" "7.12.11" - "@eslint/eslintrc" "^0.4.3" - "@humanwhocodes/config-array" "^0.5.0" - ajv "^6.10.0" +eslint@^8.53.0: + version "8.53.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.53.0.tgz#14f2c8244298fcae1f46945459577413ba2697ce" + integrity sha512-N4VuiPjXDUa4xVeV/GC/RV3hQW9Nw+Y463lkWaKKXKYMvmRiRDAtfpuPFLN+E1/6ZhyR8J2ig+eVREnYgUsiag== + dependencies: + "@eslint-community/eslint-utils" "^4.2.0" + "@eslint-community/regexpp" "^4.6.1" + "@eslint/eslintrc" "^2.1.3" + "@eslint/js" "8.53.0" + "@humanwhocodes/config-array" "^0.11.13" + "@humanwhocodes/module-importer" "^1.0.1" + "@nodelib/fs.walk" "^1.2.8" + "@ungap/structured-clone" "^1.2.0" + ajv "^6.12.4" chalk "^4.0.0" cross-spawn "^7.0.2" - debug "^4.0.1" + debug "^4.3.2" doctrine "^3.0.0" - enquirer "^2.3.5" escape-string-regexp "^4.0.0" - eslint-scope "^5.1.1" - eslint-utils "^2.1.0" - eslint-visitor-keys "^2.0.0" - espree "^7.3.1" - esquery "^1.4.0" + eslint-scope "^7.2.2" + eslint-visitor-keys "^3.4.3" + espree "^9.6.1" + esquery "^1.4.2" esutils "^2.0.2" fast-deep-equal "^3.1.3" file-entry-cache "^6.0.1" - functional-red-black-tree "^1.0.1" - glob-parent "^5.1.2" - globals "^13.6.0" - ignore "^4.0.6" - import-fresh "^3.0.0" + find-up "^5.0.0" + glob-parent "^6.0.2" + globals "^13.19.0" + graphemer "^1.4.0" + ignore "^5.2.0" imurmurhash "^0.1.4" is-glob "^4.0.0" - js-yaml "^3.13.1" + is-path-inside "^3.0.3" + js-yaml "^4.1.0" json-stable-stringify-without-jsonify "^1.0.1" levn "^0.4.1" lodash.merge "^4.6.2" - minimatch "^3.0.4" + minimatch "^3.1.2" natural-compare "^1.4.0" - optionator "^0.9.1" - progress "^2.0.0" - regexpp "^3.1.0" - semver "^7.2.1" - strip-ansi "^6.0.0" - strip-json-comments "^3.1.0" - table "^6.0.9" + optionator "^0.9.3" + strip-ansi "^6.0.1" text-table "^0.2.0" - v8-compile-cache "^2.0.3" -espree@^7.3.0, espree@^7.3.1: - version "7.3.1" - resolved "https://registry.yarnpkg.com/espree/-/espree-7.3.1.tgz#f2df330b752c6f55019f8bd89b7660039c1bbbb6" - integrity sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g== - dependencies: - acorn "^7.4.0" - acorn-jsx "^5.3.1" - eslint-visitor-keys "^1.3.0" - -espree@^9.0.0: +espree@^9.3.1, espree@^9.6.0, espree@^9.6.1: version "9.6.1" resolved "https://registry.yarnpkg.com/espree/-/espree-9.6.1.tgz#a2a17b8e434690a5432f2f8018ce71d331a48c6f" integrity sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ== @@ -5468,7 +5675,7 @@ esprima@^4.0.0, esprima@~4.0.0: resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== -esquery@^1.4.0: +esquery@^1.4.0, esquery@^1.4.2: version "1.5.0" resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.5.0.tgz#6ce17738de8577694edd7361c57182ac8cb0db0b" integrity sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg== @@ -5527,6 +5734,11 @@ eventemitter3@^4.0.0: resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== +eventemitter3@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-5.0.1.tgz#53f5ffd0a492ac800721bb42c66b841de96423c4" + integrity sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA== + events@^3.2.0: version "3.3.0" resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" @@ -5612,6 +5824,21 @@ execa@^5.0.0: signal-exit "^3.0.3" strip-final-newline "^2.0.0" +execa@^7.1.1: + version "7.2.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-7.2.0.tgz#657e75ba984f42a70f38928cedc87d6f2d4fe4e9" + integrity sha512-UduyVP7TLB5IcAQl+OzLyLcS/l32W/GLg+AhHJ+ow40FOk2U3SAllPwR44v4vmdFwIWqpdwxxpQbF1n5ta9seA== + dependencies: + cross-spawn "^7.0.3" + get-stream "^6.0.1" + human-signals "^4.3.0" + is-stream "^3.0.0" + merge-stream "^2.0.0" + npm-run-path "^5.1.0" + onetime "^6.0.0" + signal-exit "^3.0.7" + strip-final-newline "^3.0.0" + executable@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/executable/-/executable-4.1.1.tgz#41532bff361d3e57af4d763b70582db18f5d133c" @@ -5619,10 +5846,10 @@ executable@^4.1.1: dependencies: pify "^2.2.0" -exifr@^6.0.0: - version "6.3.0" - resolved "https://registry.yarnpkg.com/exifr/-/exifr-6.3.0.tgz#ba6a49c0a30372a969d109684e1cd8450a05ba43" - integrity sha512-NCSOP15py+4QyvD90etFN0QOVj12ygVE8kfEDG8GDc+SXf9YAOxua2x5kGp6WvxbGjufA5C3r/1ZKHOpHbEWFg== +exifr@^7.0.0: + version "7.1.3" + resolved "https://registry.yarnpkg.com/exifr/-/exifr-7.1.3.tgz#f6218012c36dbb7d843222011b27f065fddbab6f" + integrity sha512-g/aje2noHivrRSLbAUtBPWFbxKdKhgj/xr1vATDdUXPOFYJlQ62Ft0oy+72V6XLIpDJfHs6gXLbBLAolqOXYRw== expand-brackets@^2.1.4: version "2.1.4" @@ -5779,6 +6006,17 @@ fast-glob@^3.2.7, fast-glob@^3.2.9: merge2 "^1.3.0" micromatch "^4.0.4" +fast-glob@^3.3.0: + version "3.3.2" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.2.tgz#a904501e57cfdd2ffcded45e99a54fef55e46129" + integrity sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow== + dependencies: + "@nodelib/fs.stat" "^2.0.2" + "@nodelib/fs.walk" "^1.2.3" + glob-parent "^5.1.2" + merge2 "^1.3.0" + micromatch "^4.0.4" + fast-json-stable-stringify@^2.0.0, fast-json-stable-stringify@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" @@ -6080,11 +6318,6 @@ function-bind@^1.1.1: resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== -functional-red-black-tree@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" - integrity sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g== - functions-have-names@^1.2.3: version "1.2.3" resolved "https://registry.yarnpkg.com/functions-have-names/-/functions-have-names-1.2.3.tgz#0404fe4ee2ba2f607f0e0ec3c80bae994133b834" @@ -6117,11 +6350,6 @@ get-proxy@^2.0.0: dependencies: npm-conf "^1.1.0" -get-stdin@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-6.0.0.tgz#9e09bf712b360ab9225e812048f71fde9c89657b" - integrity sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g== - get-stream@3.0.0, get-stream@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14" @@ -6149,7 +6377,7 @@ get-stream@^5.0.0, get-stream@^5.1.0: dependencies: pump "^3.0.0" -get-stream@^6.0.0: +get-stream@^6.0.0, get-stream@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== @@ -6190,7 +6418,7 @@ glob-parent@^5.1.2, glob-parent@~5.1.2: dependencies: is-glob "^4.0.1" -glob-parent@^6.0.1: +glob-parent@^6.0.1, glob-parent@^6.0.2: version "6.0.2" resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3" integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== @@ -6244,7 +6472,14 @@ globals@^11.1.0: resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== -globals@^13.20.0, globals@^13.6.0, globals@^13.9.0: +globals@^13.19.0: + version "13.23.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-13.23.0.tgz#ef31673c926a0976e1f61dab4dca57e0c0a8af02" + integrity sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA== + dependencies: + type-fest "^0.20.2" + +globals@^13.20.0: version "13.21.0" resolved "https://registry.yarnpkg.com/globals/-/globals-13.21.0.tgz#163aae12f34ef502f5153cfbdd3600f36c63c571" integrity sha512-ybyme3s4yy/t/3s35bewwXKOf7cvzfreG2lH0lZl0JB7I4GxRP2ghxOK/Nb9EkRXdbBXZLfq/p/0W2JUONB/Gg== @@ -6298,6 +6533,11 @@ graceful-fs@^4.1.10, graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.3 resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== +graphemer@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/graphemer/-/graphemer-1.4.0.tgz#fb2f1d55e0e3a1849aeffc90c4fa0dd53a0e66c6" + integrity sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag== + graphlib@^2.1.8: version "2.1.8" resolved "https://registry.yarnpkg.com/graphlib/-/graphlib-2.1.8.tgz#5761d414737870084c92ec7b5dbcb0592c9d35da" @@ -6477,10 +6717,10 @@ highlight.js@^10.7.1: resolved "https://registry.yarnpkg.com/highlight.js/-/highlight.js-10.7.3.tgz#697272e3991356e40c3cac566a74eef681756531" integrity sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A== -highlight.js@^11.7.0: - version "11.8.0" - resolved "https://registry.yarnpkg.com/highlight.js/-/highlight.js-11.8.0.tgz#966518ea83257bae2e7c9a48596231856555bb65" - integrity sha512-MedQhoqVdr0U6SSnWPzfiadUcDHfN/Wzq25AkXiQv9oiOO/sG0S7XkvpFIqWBl9Yq1UYyYOOVORs5UW2XlPyzg== +highlight.js@^11.9.0: + version "11.9.0" + resolved "https://registry.yarnpkg.com/highlight.js/-/highlight.js-11.9.0.tgz#04ab9ee43b52a41a047432c8103e2158a1b8b5b0" + integrity sha512-fJ7cW7fQGCYAkgv4CPfwFHrfd/cLS4Hau96JuJ+ZTOWhjnhoeN1ub1tFmALm/+lW5z4WCAuAV9bm05AP0mS6Gw== hmac-drbg@^1.0.1: version "1.0.1" @@ -6630,6 +6870,11 @@ human-signals@^2.1.0: resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== +human-signals@^4.3.0: + version "4.3.1" + resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-4.3.1.tgz#ab7f811e851fca97ffbd2c1fe9a958964de321b2" + integrity sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ== + iconv-lite@0.4.24, iconv-lite@^0.4.24: version "0.4.24" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" @@ -6654,17 +6899,12 @@ ieee754@^1.1.13: resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== -ignore@^4.0.6: - version "4.0.6" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" - integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== - ignore@^5.2.0: version "5.2.4" resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.4.tgz#a291c0c6178ff1b960befe47fcdec301674a6324" integrity sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ== -import-fresh@^3.0.0, import-fresh@^3.2.1: +import-fresh@^3.2.1: version "3.3.0" resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== @@ -6927,6 +7167,11 @@ is-docker@^2.0.0, is-docker@^2.1.1: resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.2.1.tgz#33eeabe23cfe86f14bde4408a02c0cfb853acdaa" integrity sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ== +is-docker@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-3.0.0.tgz#90093aa3106277d8a77a5910dbae71747e15a200" + integrity sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ== + is-extendable@^0.1.0, is-extendable@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" @@ -6968,6 +7213,13 @@ is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1: dependencies: is-extglob "^2.1.1" +is-inside-container@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-inside-container/-/is-inside-container-1.0.0.tgz#e81fba699662eb31dbdaf26766a61d4814717ea4" + integrity sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA== + dependencies: + is-docker "^3.0.0" + is-installed-globally@~0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/is-installed-globally/-/is-installed-globally-0.4.0.tgz#9a0fd407949c30f86eb6959ef1b7994ed0b7b520" @@ -6986,6 +7238,11 @@ is-map@^2.0.1, is-map@^2.0.2: resolved "https://registry.yarnpkg.com/is-map/-/is-map-2.0.2.tgz#00922db8c9bf73e81b7a335827bc2a43f2b91127" integrity sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg== +is-mobile@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/is-mobile/-/is-mobile-3.1.1.tgz#3b9e48f40068e4ea2da411f5009779844ce8d6aa" + integrity sha512-RRoXXR2HNFxNkUnxtaBdGBXtFlUMFa06S0NUKf/LCF+MuGLu13gi9iBCkoEmc6+rpXuwi5Mso5V8Zf7mNynMBQ== + is-natural-number@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/is-natural-number/-/is-natural-number-4.0.1.tgz#ab9d76e1db4ced51e35de0c72ebecf09f734cde8" @@ -7015,7 +7272,7 @@ is-object@^1.0.1: resolved "https://registry.yarnpkg.com/is-object/-/is-object-1.0.2.tgz#a56552e1c665c9e950b4a025461da87e72f86fcf" integrity sha512-2rRIahhZr2UWb45fIOuvZGpFtz0TyOZLf32KxBbSoUCeZR495zCKlWUKKUByk3geS2eAs7ZAABt0Y/Rx0GiQGA== -is-path-inside@^3.0.2: +is-path-inside@^3.0.2, is-path-inside@^3.0.3: version "3.0.3" resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== @@ -7082,6 +7339,11 @@ is-stream@^2.0.0: resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== +is-stream@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-3.0.0.tgz#e6bfd7aa6bef69f4f472ce9bb681e3e57b4319ac" + integrity sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA== + is-string@^1.0.5, is-string@^1.0.7: version "1.0.7" resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.7.tgz#0dd12bf2006f255bb58f695110eff7491eebc0fd" @@ -7252,7 +7514,7 @@ js-tokens@^4.0.0: resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== -js-yaml@^3.13.1, js-yaml@^3.14.1: +js-yaml@^3.14.1: version "3.14.1" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== @@ -7260,7 +7522,7 @@ js-yaml@^3.13.1, js-yaml@^3.14.1: argparse "^1.0.7" esprima "^4.0.0" -js-yaml@^4.0.0: +js-yaml@^4.0.0, js-yaml@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== @@ -7354,7 +7616,7 @@ json5@^1.0.1: dependencies: minimist "^1.2.0" -json5@^2.1.2, json5@^2.2.2: +json5@^2.1.2, json5@^2.2.2, json5@^2.2.3: version "2.2.3" resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== @@ -7593,16 +7855,6 @@ lodash.sortby@^4.7.0: resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438" integrity sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA== -lodash.throttle@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/lodash.throttle/-/lodash.throttle-4.1.1.tgz#c23e91b710242ac70c37f1e1cda9274cc39bf2f4" - integrity sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ== - -lodash.truncate@^4.4.2: - version "4.4.2" - resolved "https://registry.yarnpkg.com/lodash.truncate/-/lodash.truncate-4.4.2.tgz#5a350da0b1113b837ecfffd5812cbe58d6eae193" - integrity sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw== - lodash.uniq@^4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" @@ -7717,6 +7969,13 @@ magic-string@^0.30.0: dependencies: "@jridgewell/sourcemap-codec" "^1.4.15" +magic-string@^0.30.5: + version "0.30.5" + resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.30.5.tgz#1994d980bd1c8835dc6e78db7cbd4ae4f24746f9" + integrity sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA== + dependencies: + "@jridgewell/sourcemap-codec" "^1.4.15" + make-dir@^1.0.0, make-dir@^1.2.0: version "1.3.0" resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.3.0.tgz#79c1033b80515bd6d24ec9933e860ca75ee27f0c" @@ -7751,10 +8010,10 @@ map-visit@^1.0.0: dependencies: object-visit "^1.0.0" -markdown-it@^13.0.1: - version "13.0.1" - resolved "https://registry.yarnpkg.com/markdown-it/-/markdown-it-13.0.1.tgz#c6ecc431cacf1a5da531423fc6a42807814af430" - integrity sha512-lTlxriVoy2criHP0JKRhO2VDG9c2ypWCsT237eDiLqi09rmbKoUetyGHq2uOIRoRS//kfoJckS0eUzzkDR+k2Q== +markdown-it@^13.0.2: + version "13.0.2" + resolved "https://registry.yarnpkg.com/markdown-it/-/markdown-it-13.0.2.tgz#1bc22e23379a6952e5d56217fbed881e0c94d536" + integrity sha512-FtwnEuuK+2yVU7goGn/MJ0WBZMM9ZPgU9spqlFs7/A/pDIUNSOQZhUgOqYCficIuR2QaFnrt8LHqBWsbTAoI5w== dependencies: argparse "^2.0.1" entities "~3.0.1" @@ -7762,11 +8021,6 @@ markdown-it@^13.0.1: mdurl "^1.0.1" uc.micro "^1.0.5" -math-log2@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/math-log2/-/math-log2-1.0.1.tgz#fb8941be5f5ebe8979e718e6273b178e58694565" - integrity sha512-9W0yGtkaMAkf74XGYVy4Dqw3YUMnTNB2eeiw9aQbUl4A3KmuCEHTt2DgAB07ENzOYAjsYSAYufkAq0Zd+jU7zA== - md5.js@^1.3.4: version "1.3.5" resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f" @@ -7823,10 +8077,10 @@ memfs@^3.4.3: dependencies: fs-monkey "^1.0.4" -memoize-one@^5.0.4: - version "5.2.1" - resolved "https://registry.yarnpkg.com/memoize-one/-/memoize-one-5.2.1.tgz#8337aa3c4335581839ec01c3d594090cebe8f00e" - integrity sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q== +memoize-one@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/memoize-one/-/memoize-one-6.0.0.tgz#b2591b871ed82948aee4727dc6abceeeac8c1045" + integrity sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw== merge-descriptors@1.0.1: version "1.0.1" @@ -7850,10 +8104,10 @@ merge2@^1.3.0, merge2@^1.4.1: resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== -mermaid@^10.1.0: - version "10.3.1" - resolved "https://registry.yarnpkg.com/mermaid/-/mermaid-10.3.1.tgz#2f3c7e9f6bd7a8da2bef71cce2a542c8eba2a62e" - integrity sha512-hkenh7WkuRWPcob3oJtrN3W+yzrrIYuWF1OIfk/d0xGE8UWlvDhfexaHmDwwe8DKQgqMLI8DWEPwGprxkumjuw== +mermaid@^10.6.1: + version "10.6.1" + resolved "https://registry.yarnpkg.com/mermaid/-/mermaid-10.6.1.tgz#701f4160484137a417770ce757ce1887a98c00fc" + integrity sha512-Hky0/RpOw/1il9X8AvzOEChfJtVvmXm+y7JML5C//ePYMy0/9jCEmW1E1g86x9oDfW9+iVEdTV/i+M6KWRNs4A== dependencies: "@braintree/sanitize-url" "^6.0.1" "@types/d3-scale" "^4.0.3" @@ -8144,6 +8398,11 @@ mimic-fn@^2.1.0: resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== +mimic-fn@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-4.0.0.tgz#60a90550d5cb0b239cca65d893b1a53b29871ecc" + integrity sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw== + mimic-response@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b" @@ -8173,7 +8432,7 @@ minimatch@9.0.1: dependencies: brace-expansion "^2.0.1" -minimatch@^3.0.2, minimatch@^3.0.4, minimatch@^3.1.1, minimatch@^3.1.2: +minimatch@^3.0.2, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== @@ -8281,6 +8540,11 @@ nanoid@^3.3.6: resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.6.tgz#443380c856d6e9f9824267d960b4236ad583ea4c" integrity sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA== +nanoid@^4.0.0: + version "4.0.2" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-4.0.2.tgz#140b3c5003959adbebf521c170f282c5e7f9fb9e" + integrity sha512-7ZtY5KTCNheRGfEFxnedV5zFiORN1+Y1N6zvPTnHQd8ENUvfaDBeuJDZb2bN/oXwXxu3qkTXDzy57W5vAmDTBw== + nanomatch@^1.2.9: version "1.2.13" resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" @@ -8440,7 +8704,14 @@ npm-run-path@^4.0.0, npm-run-path@^4.0.1: dependencies: path-key "^3.0.0" -nth-check@^2.0.1: +npm-run-path@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-5.1.0.tgz#bc62f7f3f6952d9894bd08944ba011a6ee7b7e00" + integrity sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q== + dependencies: + path-key "^4.0.0" + +nth-check@^2.0.1, nth-check@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-2.1.1.tgz#c9eab428effce36cd6b92c924bdb000ef1f1ed1d" integrity sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w== @@ -8541,6 +8812,13 @@ onetime@^5.1.0, onetime@^5.1.2: dependencies: mimic-fn "^2.1.0" +onetime@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-6.0.0.tgz#7c24c18ed1fd2e9bca4bd26806a33613c77d34b4" + integrity sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ== + dependencies: + mimic-fn "^4.0.0" + open@^8.0.2, open@^8.0.9: version "8.4.2" resolved "https://registry.yarnpkg.com/open/-/open-8.4.2.tgz#5b5ffe2a8f793dcd2aad73e550cb87b59cb084f9" @@ -8550,12 +8828,22 @@ open@^8.0.2, open@^8.0.9: is-docker "^2.1.1" is-wsl "^2.2.0" +open@^9.1.0: + version "9.1.0" + resolved "https://registry.yarnpkg.com/open/-/open-9.1.0.tgz#684934359c90ad25742f5a26151970ff8c6c80b6" + integrity sha512-OS+QTnw1/4vrf+9hh1jc1jnYjzSG4ttTBB8UxOwAnInG3Uo4ssetzC1ihqaIHjLJnA5GGlRl6QlZXOTQhRBUvg== + dependencies: + default-browser "^4.0.0" + define-lazy-prop "^3.0.0" + is-inside-container "^1.0.0" + is-wsl "^2.2.0" + opener@^1.5.2: version "1.5.2" resolved "https://registry.yarnpkg.com/opener/-/opener-1.5.2.tgz#5d37e1f35077b9dcac4301372271afdeb2a13598" integrity sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A== -optionator@^0.9.1: +optionator@^0.9.3: version "0.9.3" resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.3.tgz#007397d44ed1872fdc6ed31360190f81814e2c64" integrity sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg== @@ -8661,6 +8949,14 @@ p-map@^4.0.0: dependencies: aggregate-error "^3.0.0" +p-queue@^7.3.4: + version "7.4.1" + resolved "https://registry.yarnpkg.com/p-queue/-/p-queue-7.4.1.tgz#7f86f853048beca8272abdbb7cec1ed2afc0f265" + integrity sha512-vRpMXmIkYF2/1hLBKisKeVYJZ8S2tZ0zEAmIJgdVKP2nq0nh4qCdf8bgw+ZgKrkh71AOCaqzwbJJk1WtdcF3VA== + dependencies: + eventemitter3 "^5.0.1" + p-timeout "^5.0.2" + p-retry@^4.5.0: version "4.6.2" resolved "https://registry.yarnpkg.com/p-retry/-/p-retry-4.6.2.tgz#9baae7184057edd4e17231cee04264106e092a16" @@ -8676,6 +8972,11 @@ p-timeout@^2.0.1: dependencies: p-finally "^1.0.0" +p-timeout@^5.0.2: + version "5.1.0" + resolved "https://registry.yarnpkg.com/p-timeout/-/p-timeout-5.1.0.tgz#b3c691cf4415138ce2d9cfe071dba11f0fee085b" + integrity sha512-auFDyzzzGZZZdHz3BtET9VEz0SE/uMEAx7uWfGPucfzEwwe/xH0iVeZibQmANYE/hp9T2+UUZT5m+BKyrDp3Ew== + p-try@^2.0.0: version "2.2.0" resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" @@ -8785,6 +9086,11 @@ path-key@^3.0.0, path-key@^3.1.0: resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== +path-key@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-4.0.0.tgz#295588dc3aee64154f877adb9d780b81c554bf18" + integrity sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ== + path-parse@^1.0.7: version "1.0.7" resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" @@ -9129,7 +9435,7 @@ postcss-reduce-transforms@^5.1.0: dependencies: postcss-value-parser "^4.2.0" -postcss-selector-parser@^6.0.2, postcss-selector-parser@^6.0.4, postcss-selector-parser@^6.0.5, postcss-selector-parser@^6.0.9: +postcss-selector-parser@^6.0.13, postcss-selector-parser@^6.0.2, postcss-selector-parser@^6.0.4, postcss-selector-parser@^6.0.5, postcss-selector-parser@^6.0.9: version "6.0.13" resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.13.tgz#d05d8d76b1e8e173257ef9d60b706a8e5e99bf1b" integrity sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ== @@ -9174,10 +9480,19 @@ postcss@^8.1.10, postcss@^8.2.6, postcss@^8.3.5, postcss@^8.4.14, postcss@^8.4.2 picocolors "^1.0.0" source-map-js "^1.0.2" -preact@8.2.9: - version "8.2.9" - resolved "https://registry.yarnpkg.com/preact/-/preact-8.2.9.tgz#813ba9dd45e5d97c5ea0d6c86d375b3be711cc40" - integrity sha512-ThuGXBmJS3VsT+jIP+eQufD3L8pRw/PY3FoCys6O9Pu6aF12Pn9zAJDX99TfwRAFOCEKm/P0lwiPTbqKMJp0fA== +postcss@^8.4.31: + version "8.4.31" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.31.tgz#92b451050a9f914da6755af352bdc0192508656d" + integrity sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ== + dependencies: + nanoid "^3.3.6" + picocolors "^1.0.0" + source-map-js "^1.0.2" + +preact@^10.5.13: + version "10.18.2" + resolved "https://registry.yarnpkg.com/preact/-/preact-10.18.2.tgz#e3aeccc292aebbc2e0b76ed76570aa61dd5f75e4" + integrity sha512-X/K43vocUHDg0XhWVmTTMbec4LT/iBMh+csCEqJk+pJqegaXsvjdqN80ZZ3L+93azWCnWCZ+WGwYb8SplxeNjA== prelude-ls@^1.2.1: version "1.2.1" @@ -9196,11 +9511,16 @@ prettier-linter-helpers@^1.0.0: dependencies: fast-diff "^1.1.2" -"prettier@^1.18.2 || ^2.0.0", prettier@^2.4.1: +"prettier@^1.18.2 || ^2.0.0": version "2.8.8" resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.8.8.tgz#e8c5d7e98a4305ffe3de2e1fc4aca1a71c28b1da" integrity sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q== +prettier@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.0.3.tgz#432a51f7ba422d1469096c0fdc28e235db8f9643" + integrity sha512-L/4pUDMxcNa8R/EthV08Zt42WBO4h1rarVtK0K+QJG0X187OLo7l699jWw0GKuwzkPQ//jMFA/8Xm6Fh3J/DAg== + pretty-bytes@^5.6.0: version "5.6.0" resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-5.6.0.tgz#356256f643804773c82f64723fe78c92c62beaeb" @@ -9259,11 +9579,6 @@ progress-webpack-plugin@^1.0.12: figures "^2.0.0" log-update "^2.3.0" -progress@^2.0.0: - version "2.0.3" - resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" - integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== - proto-list@~1.2.1: version "1.2.4" resolved "https://registry.yarnpkg.com/proto-list/-/proto-list-1.2.4.tgz#212d5bfe1318306a420f6402b8e26ff39647a849" @@ -9519,11 +9834,6 @@ regexp.prototype.flags@^1.5.0: define-properties "^1.2.0" functions-have-names "^1.2.3" -regexpp@^3.1.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.2.0.tgz#0425a2768d8f23bad70ca4b90461fa2f1213e1b2" - integrity sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg== - regexpu-core@^5.3.1: version "5.3.2" resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-5.3.2.tgz#11a2b06884f3527aec3e93dbbf4a3b958a95546b" @@ -9591,11 +9901,6 @@ requires-port@^1.0.0: resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" integrity sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ== -resize-observer-polyfill@^1.5.0: - version "1.5.1" - resolved "https://registry.yarnpkg.com/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz#0e9020dd3d21024458d4ebd27e23e40269810464" - integrity sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg== - resolve-from@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" @@ -9693,6 +9998,13 @@ rss-parser@^3.11.0: entities "^2.0.3" xml2js "^0.5.0" +run-applescript@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/run-applescript/-/run-applescript-5.0.0.tgz#e11e1c932e055d5c6b40d98374e0268d9b11899c" + integrity sha512-XcT5rBksx1QdIhlFOCtgZkB99ZEouFZ1E2Kc2LHqNW13U3/74YGdkQRmThTwxy4QIyookibDKYZOPqX//6BlAg== + dependencies: + execa "^5.0.0" + run-async@^2.4.0: version "2.4.1" resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.4.1.tgz#8440eccf99ea3e70bd409d49aab88e10c189a455" @@ -9815,7 +10127,7 @@ semver@^6.0.0, semver@^6.3.1: resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== -semver@^7.2.1, semver@^7.3.4, semver@^7.3.5, semver@^7.3.8, semver@^7.5.3: +semver@^7.3.4, semver@^7.3.5, semver@^7.3.6, semver@^7.3.8, semver@^7.5.3, semver@^7.5.4: version "7.5.4" resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.4.tgz#483986ec4ed38e1c6c48c34894a9182dbff68a6e" integrity sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA== @@ -9956,7 +10268,7 @@ side-channel@^1.0.4: get-intrinsic "^1.0.2" object-inspect "^1.9.0" -signal-exit@^3.0.0, signal-exit@^3.0.2, signal-exit@^3.0.3: +signal-exit@^3.0.0, signal-exit@^3.0.2, signal-exit@^3.0.3, signal-exit@^3.0.7: version "3.0.7" resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== @@ -10292,12 +10604,17 @@ strip-final-newline@^2.0.0: resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== +strip-final-newline@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-3.0.0.tgz#52894c313fbff318835280aed60ff71ebf12b8fd" + integrity sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw== + strip-indent@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-2.0.0.tgz#5ef8db295d01e6ed6cbf7aab96998d7822527b68" integrity sha512-RsSNPLpq6YUL7QYy44RnPVTn/lcVZtb48Uof3X5JLbF4zD/Gs7ZFDv2HWol+leoQN2mT86LAzSshGfkTlSOpsA== -strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: +strip-json-comments@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== @@ -10382,16 +10699,13 @@ symbol-observable@^1.0.4: resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.2.0.tgz#c22688aed4eab3cdc2dfeacbb561660560a00804" integrity sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ== -table@^6.0.9: - version "6.8.1" - resolved "https://registry.yarnpkg.com/table/-/table-6.8.1.tgz#ea2b71359fe03b017a5fbc296204471158080bdf" - integrity sha512-Y4X9zqrCftUhMeH2EptSSERdVKt/nEdijTOacGD/97EKjhQ/Qs8RTlEGABSJNNN8lac9kheH+af7yAkEWlgneA== +synckit@^0.8.5: + version "0.8.5" + resolved "https://registry.yarnpkg.com/synckit/-/synckit-0.8.5.tgz#b7f4358f9bb559437f9f167eb6bc46b3c9818fa3" + integrity sha512-L1dapNV6vu2s/4Sputv8xGsCdAVlb5nRDMFU/E27D44l5U6cw1g0dGd45uLc+OXjNMmF4ntiMdCimzcjFKQI8Q== dependencies: - ajv "^8.0.1" - lodash.truncate "^4.4.2" - slice-ansi "^4.0.0" - string-width "^4.2.3" - strip-ansi "^6.0.1" + "@pkgr/utils" "^2.3.1" + tslib "^2.5.0" tapable@^2.0.0, tapable@^2.1.1, tapable@^2.2.0: version "2.2.1" @@ -10497,10 +10811,15 @@ timed-out@^4.0.1: resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-4.0.1.tgz#f32eacac5a175bea25d7fab565ab3ed8741ef56f" integrity sha512-G7r3AhovYtr5YKOWQkta8RKAPb+J9IsO4uVmzjl8AZwfhs8UcUwTiD6gcJYSgOtzyjvQKrKYn41syHbUWMkafA== -tinymce@^5.10.8, tinymce@^5.5.0: - version "5.10.8" - resolved "https://registry.yarnpkg.com/tinymce/-/tinymce-5.10.8.tgz#c85758fa3cca2cbb4b14dd037a0b315b6462c50e" - integrity sha512-iyoo3VGMAJhLMDdblAefKvYgBRk9kQi58GTwAmoieqsyggGsKZWlQl/YY6nTILFHUCA1FhYu0HdmM5YYjs17UQ== +"tinymce@^6.0.0 || ^5.5.1", tinymce@^6.7.2: + version "6.7.2" + resolved "https://registry.yarnpkg.com/tinymce/-/tinymce-6.7.2.tgz#39b077d26c171cb41341b2eef126e7811bb78697" + integrity sha512-6h/02jHmXyghekFzmzccZxUUEFtlPEKHxOd+gd49bjno3ybavZInPIaDd/pp2GeEwsFm20oGgJCL7UiebXm9dw== + +titleize@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/titleize/-/titleize-3.0.0.tgz#71c12eb7fdd2558aa8a44b0be83b8a76694acd53" + integrity sha512-KxVu8EYHDPBdUYdKZdKtU2aj2XfEx9AfjXxE/Aj0vT06w2icA09Vus1rh6eSu1y01akYg6BjIK/hxyLJINoMLQ== tmp@^0.0.33: version "0.0.33" @@ -10605,6 +10924,11 @@ tslib@^2.0.1, tslib@^2.0.3, tslib@^2.1.0, tslib@^2.4.0: resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.1.tgz#fd8c9a0ff42590b25703c0acb3de3d3f4ede0410" integrity sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig== +tslib@^2.5.0, tslib@^2.6.0: + version "2.6.2" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.2.tgz#703ac29425e7b37cd6fd456e92404d46d1f3e4ae" + integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q== + tunnel-agent@^0.6.0: version "0.6.0" resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" @@ -10775,7 +11099,7 @@ url-parse-lax@^3.0.0: dependencies: prepend-http "^2.0.0" -url-parse@^1.4.7, url-parse@^1.5.3: +url-parse@^1.5.3: version "1.5.10" resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.5.10.tgz#9d3c2f736c1d75dd3bd2be507dcc111f1e2ea9c1" integrity sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ== @@ -10828,11 +11152,6 @@ uvu@^0.5.0: kleur "^4.0.3" sade "^1.7.3" -v8-compile-cache@^2.0.3: - version "2.4.0" - resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.4.0.tgz#cdada8bec61e15865f05d097c5f4fd30e94dc128" - integrity sha512-ocyWc3bAHBB/guyqJQVI5o4BZkPhznPYUG2ea80Gond/BgNWpap8TOmLSeeQG7bnh2KMISxskdADG59j7zruhw== - validate-npm-package-license@^3.0.1: version "3.0.4" resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" @@ -10896,23 +11215,23 @@ vue-component-type-helpers@1.8.4: resolved "https://registry.yarnpkg.com/vue-component-type-helpers/-/vue-component-type-helpers-1.8.4.tgz#302d85fac912519cdf0dd2fb51402e5215d85628" integrity sha512-6bnLkn8O0JJyiFSIF0EfCogzeqNXpnjJ0vW/SZzNHfe6sPx30lTtTXlE5TFs2qhJlAtDFybStVNpL73cPe3OMQ== -vue-demi@*: - version "0.14.5" - resolved "https://registry.yarnpkg.com/vue-demi/-/vue-demi-0.14.5.tgz#676d0463d1a1266d5ab5cba932e043d8f5f2fbd9" - integrity sha512-o9NUVpl/YlsGJ7t+xuqJKx8EBGf1quRhCiT6D/J0pfwmk9zUwYkC7yrF4SZCe6fETvSM3UNL2edcbYrSyc4QHA== +vue-demi@>=0.14.6: + version "0.14.6" + resolved "https://registry.yarnpkg.com/vue-demi/-/vue-demi-0.14.6.tgz#dc706582851dc1cdc17a0054f4fec2eb6df74c92" + integrity sha512-8QA7wrYSHKaYgUxDA5ZC24w+eHm3sYCbp0EzcDwKqN3p6HqtTCGR/GVsPyZW92unff4UlcSh++lmqDWN3ZIq4w== -vue-eslint-parser@^8.0.1: - version "8.3.0" - resolved "https://registry.yarnpkg.com/vue-eslint-parser/-/vue-eslint-parser-8.3.0.tgz#5d31129a1b3dd89c0069ca0a1c88f970c360bd0d" - integrity sha512-dzHGG3+sYwSf6zFBa0Gi9ZDshD7+ad14DGOdTLjruRVgZXe2J+DcZ9iUhyR48z5g1PqRa20yt3Njna/veLJL/g== +vue-eslint-parser@^9.3.1: + version "9.3.2" + resolved "https://registry.yarnpkg.com/vue-eslint-parser/-/vue-eslint-parser-9.3.2.tgz#6f9638e55703f1c77875a19026347548d93fd499" + integrity sha512-q7tWyCVaV9f8iQyIA5Mkj/S6AoJ9KBN8IeUSf3XEmBrOtxOZnfTg5s4KClbZBCK3GtnT/+RyCLZyDHuZwTuBjg== dependencies: - debug "^4.3.2" - eslint-scope "^7.0.0" - eslint-visitor-keys "^3.1.0" - espree "^9.0.0" + debug "^4.3.4" + eslint-scope "^7.1.1" + eslint-visitor-keys "^3.3.0" + espree "^9.3.1" esquery "^1.4.0" lodash "^4.17.21" - semver "^7.3.5" + semver "^7.3.6" vue-hot-reload-api@^2.3.0: version "2.3.4" @@ -10928,10 +11247,10 @@ vue-loader@^17.0.0: hash-sum "^2.0.0" watchpack "^2.4.0" -vue-router@^4.0.0-0: - version "4.2.4" - resolved "https://registry.yarnpkg.com/vue-router/-/vue-router-4.2.4.tgz#382467a7e2923e6a85f015d081e1508052c191b9" - integrity sha512-9PISkmaCO02OzPVOMq2w82ilty6+xJmQrarYZDkjZBfl4RvYAlt4PKnEX21oW4KTtWfa9OuO/b3qk1Od3AEdCQ== +vue-router@^4.2.5: + version "4.2.5" + resolved "https://registry.yarnpkg.com/vue-router/-/vue-router-4.2.5.tgz#b9e3e08f1bd9ea363fdd173032620bc50cf0e98a" + integrity sha512-DIUpKcyg4+PTQKfFPX88UWhlagBEBEfJ5A8XDXRJLUnZOvcpMF8o/dnL90vpVkGaPbjvXazV/rC1qBKrZlFugw== dependencies: "@vue/devtools-api" "^6.5.0" @@ -10968,7 +11287,7 @@ vue@^2.6.14: "@vue/compiler-sfc" "2.7.14" csstype "^3.1.0" -vue@^3.2.4, vue@^3.2.45: +vue@^3.2.45: version "3.3.4" resolved "https://registry.yarnpkg.com/vue/-/vue-3.3.4.tgz#8ed945d3873667df1d0fcf3b2463ada028f88bd6" integrity sha512-VTyEYn3yvIeY1Py0WaYGZsXnz3y5UnGi62GjVEqvEGPl6nxbOrCXbVOTQWBEJUqAyTUk2uJ5JLVnYJ6ZzGbrSw== @@ -10979,6 +11298,17 @@ vue@^3.2.4, vue@^3.2.45: "@vue/server-renderer" "3.3.4" "@vue/shared" "3.3.4" +vue@^3.3.8: + version "3.3.8" + resolved "https://registry.yarnpkg.com/vue/-/vue-3.3.8.tgz#532ff071af24f6a69e5ecc53a66858a9ee874ffc" + integrity sha512-5VSX/3DabBikOXMsxzlW8JyfeLKlG9mzqnWgLQLty88vdZL7ZJgrdgBOmrArwxiLtmS+lNNpPcBYqrhE6TQW5w== + dependencies: + "@vue/compiler-dom" "3.3.8" + "@vue/compiler-sfc" "3.3.8" + "@vue/runtime-dom" "3.3.8" + "@vue/server-renderer" "3.3.8" + "@vue/shared" "3.3.8" + vuex@^4.0.0-0: version "4.1.0" resolved "https://registry.yarnpkg.com/vuex/-/vuex-4.1.0.tgz#aa1b3ea5c7385812b074c86faeeec2217872e36c" @@ -11292,6 +11622,11 @@ ws@^8.13.0: resolved "https://registry.yarnpkg.com/ws/-/ws-8.13.0.tgz#9a9fb92f93cf41512a0735c8f4dd09b8a1211cd0" integrity sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA== +xml-name-validator@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-4.0.0.tgz#79a006e2e63149a8600f15430f0a4725d1524835" + integrity sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw== + xml2js@^0.5.0: version "0.5.0" resolved "https://registry.yarnpkg.com/xml2js/-/xml2js-0.5.0.tgz#d9440631fbb2ed800203fad106f2724f62c493b7"