From a5197c83b9a52d099e51142bda6f2f2de9b5e86c Mon Sep 17 00:00:00 2001 From: Yuki Hattori Date: Sun, 19 Feb 2023 05:45:41 +0900 Subject: [PATCH 1/6] Upgrade dependent packages to the latest version --- package.json | 64 +- yarn.lock | 1686 ++++++++++++++++++++++++++------------------------ 2 files changed, 903 insertions(+), 847 deletions(-) diff --git a/package.json b/package.json index a51deeee..1c054ce4 100644 --- a/package.json +++ b/package.json @@ -68,26 +68,26 @@ }, "devDependencies": { "@babel/preset-env": "^7.20.2", - "@rollup/plugin-alias": "^4.0.2", - "@rollup/plugin-commonjs": "^24.0.0", + "@rollup/plugin-alias": "^4.0.3", + "@rollup/plugin-commonjs": "^24.0.1", "@rollup/plugin-json": "^6.0.0", "@rollup/plugin-node-resolve": "^15.0.1", "@rollup/plugin-replace": "^5.0.2", - "@rollup/plugin-terser": "^0.3.0", + "@rollup/plugin-terser": "^0.4.0", "@rollup/plugin-typescript": "^11.0.0", "@rollup/plugin-url": "^8.0.1", "@tsconfig/node14": "^1.0.3", "@types/cheerio": "^0.22.31", - "@types/express": "^4.17.15", - "@types/jest": "^29.2.5", + "@types/express": "^4.17.17", + "@types/jest": "^29.4.0", "@types/markdown-it": "^12.2.3", - "@types/node": "~18.11.18", + "@types/node": "~18.14.0", "@types/pug": "^2.0.6", "@types/supertest": "^2.0.12", "@types/ws": "^8.5.4", - "@types/yargs": "^17.0.19", - "@typescript-eslint/eslint-plugin": "^5.48.0", - "@typescript-eslint/parser": "^5.48.0", + "@types/yargs": "^17.0.22", + "@typescript-eslint/eslint-plugin": "^5.52.0", + "@typescript-eslint/parser": "^5.52.0", "autoprefixer": "^10.4.13", "babel-plugin-transform-rename-import": "^2.3.0", "bespoke": "bespokejs/bespoke", @@ -95,12 +95,12 @@ "chalk": "^5.2.0", "cheerio": "^1.0.0-rc.12", "chrome-launcher": "^0.15.1", - "cssnano": "^5.1.14", - "eslint": "^8.31.0", + "cssnano": "^5.1.15", + "eslint": "^8.34.0", "eslint-config-prettier": "^8.6.0", - "eslint-import-resolver-exports": "^1.0.0-beta.3", - "eslint-import-resolver-typescript": "^3.5.2", - "eslint-plugin-import": "^2.26.0", + "eslint-import-resolver-exports": "^1.0.0-beta.4", + "eslint-import-resolver-typescript": "^3.5.3", + "eslint-plugin-import": "^2.27.5", "eslint-plugin-jest": "^27.2.1", "express": "^4.18.2", "fast-plist": "^0.1.3", @@ -108,10 +108,10 @@ "globby": "^13.1.3", "image-size": "^1.0.2", "is-docker": "^3.0.0", - "jest": "^29.3.1", - "jest-environment-jsdom": "^29.3.1", + "jest": "^29.4.3", + "jest-environment-jsdom": "^29.4.3", "jest-junit": "^15.0.0", - "nanoid": "^4.0.0", + "nanoid": "^4.0.1", "npm-run-all": "^4.1.5", "os-locale": "^6.0.2", "pdf-lib": "^1.17.1", @@ -121,44 +121,44 @@ "postcss": "^8.4.21", "postcss-url": "^10.1.3", "pptxgenjs": "^3.11.0", - "prettier": "^2.8.2", + "prettier": "^2.8.4", "pug": "^3.0.2", - "rimraf": "^3.0.2", - "rollup": "^3.9.1", + "rimraf": "^4.1.2", + "rollup": "^3.17.1", "rollup-plugin-license": "^3.0.1", "rollup-plugin-postcss": "^4.0.2", "rollup-plugin-pug": "^1.1.1", - "sass": "^1.57.1", + "sass": "^1.58.3", "strip-ansi": "^7.0.1", - "stylelint": "^14.16.1", - "stylelint-config-prettier": "^9.0.4", - "stylelint-config-standard-scss": "^6.1.0", + "stylelint": "^15.1.0", + "stylelint-config-prettier": "^9.0.5", + "stylelint-config-standard-scss": "^7.0.1", "supertest": "^6.3.3", "tar-stream": "^3.0.0", - "ts-jest": "^29.0.3", + "ts-jest": "^29.0.5", "ts-key-enum": "^3.0.12", - "tslib": "^2.4.1", + "tslib": "^2.5.0", "typed-emitter": "^2.1.0", - "typescript": "^4.9.4", + "typescript": "^4.9.5", "vhtml": "^2.2.0", - "wrap-ansi": "^8.0.1", + "wrap-ansi": "^8.1.0", "yauzl": "^2.10.0", "zip-stream": "^4.1.0" }, "dependencies": { - "@marp-team/marp-core": "^3.4.2", + "@marp-team/marp-core": "^3.5.0", "@marp-team/marpit": "^2.4.2", "chokidar": "^3.5.3", "cosmiconfig": "^8.0.0", "import-from": "^4.0.0", "is-wsl": "^2.2.0", - "puppeteer-core": "19.4.1", + "puppeteer-core": "19.7.1", "remove": "^0.1.5", "serve-index": "^1.9.1", "tmp": "^0.2.1", "v8-compile-cache": "^2.3.0", - "ws": "^8.12.0", - "yargs": "^17.6.2" + "ws": "^8.12.1", + "yargs": "^17.7.0" }, "resolutions": { "pug": "^3.0.2", diff --git a/yarn.lock b/yarn.lock index bb0208f0..839b3ec3 100644 --- a/yarn.lock +++ b/yarn.lock @@ -18,9 +18,9 @@ "@babel/highlight" "^7.18.6" "@babel/compat-data@^7.17.7", "@babel/compat-data@^7.20.1", "@babel/compat-data@^7.20.5": - version "7.20.10" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.20.10.tgz#9d92fa81b87542fff50e848ed585b4212c1d34ec" - integrity sha512-sEnuDPpOJR/fcafHMjpcpGN5M2jbUGUHwmuWKM/YdPzeEDJg8bgmbcWQFUfE32MQjti1koACvoPVsDe8Uq+idg== + version "7.20.14" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.20.14.tgz#4106fc8b755f3e3ee0a0a7c27dde5de1d2b2baf8" + integrity sha512-0YpKHD6ImkWMEINCyDAD0HLLUH/lPCefG8ld9it8DJB2wnApraKuhgYTvTY1z7UFIfBTGy5LwncZ+5HWWGbhFw== "@babel/core@^7.11.6", "@babel/core@^7.12.3": version "7.20.12" @@ -53,9 +53,9 @@ jsesc "^2.5.1" "@babel/generator@^7.20.7", "@babel/generator@^7.7.2": - version "7.20.7" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.20.7.tgz#f8ef57c8242665c5929fe2e8d82ba75460187b4a" - integrity sha512-7wqMOJq8doJMZmP4ApXTzLxSr7+oO2jroJURrVEp6XShrQUObV8Tq/D0NCcoYg2uHqUrjzO0zwBjoYzelxK+sw== + version "7.20.14" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.20.14.tgz#9fa772c9f86a46c6ac9b321039400712b96f64ce" + integrity sha512-AEmuXHdcD3A52HHXxaTmYlb8q/xMEhoRP67B3T4Oq7lbmSoqroMZzjnGj3+i1io3pdnF8iBYVu4Ilj+c4hBxYg== dependencies: "@babel/types" "^7.20.7" "@jridgewell/gen-mapping" "^0.3.2" @@ -257,12 +257,12 @@ "@babel/types" "^7.20.5" "@babel/helpers@^7.20.7": - version "7.20.7" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.20.7.tgz#04502ff0feecc9f20ecfaad120a18f011a8e6dce" - integrity sha512-PBPjs5BppzsGaxHQCDKnZ6Gd9s6xl8bBCluz3vEInLGRJmnZan4F6BYCeqtyXqkk4W5IlPmjK4JlOuZkpJ3xZA== + version "7.20.13" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.20.13.tgz#e3cb731fb70dc5337134cadc24cbbad31cc87ad2" + integrity sha512-nzJ0DWCL3gB5RCXbUO3KIMMsBY2Eqbx8mBpKGE/02PgyRQFcPQLbkQ1vyy596mZLaP+dAfD+R4ckASzNVmW3jg== dependencies: "@babel/template" "^7.20.7" - "@babel/traverse" "^7.20.7" + "@babel/traverse" "^7.20.13" "@babel/types" "^7.20.7" "@babel/highlight@^7.18.6": @@ -279,10 +279,10 @@ resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.18.4.tgz#6774231779dd700e0af29f6ad8d479582d7ce5ef" integrity sha512-FDge0dFazETFcxGw/EXzOkN8uJp0PC7Qbm+Pe9T+av2zlBpOgunFHkQPPn+eRuClU73JF+98D531UgayY89tow== -"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.20.7", "@babel/parser@^7.6.0", "@babel/parser@^7.9.6": - version "7.20.7" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.20.7.tgz#66fe23b3c8569220817d5feb8b9dcdc95bb4f71b" - integrity sha512-T3Z9oHybU+0vZlY9CiDSJQTD5ZapcW18ZctFMi0MOAl/4BjFF4ul7NVSARLdbGO5vDqy9eQiGTV0LtKfvCYvcg== +"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.20.13", "@babel/parser@^7.20.7", "@babel/parser@^7.6.0", "@babel/parser@^7.9.6": + version "7.20.15" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.20.15.tgz#eec9f36d8eaf0948bb88c87a46784b5ee9fd0c89" + integrity sha512-DI4a1oZuf8wC+oAJA9RW6ga3Zbe8RZFt7kD9i4qAspz3I/yHet1VvC3DiSy/fsUvv5pvJuNPh0LPOdCcqinDPg== "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.18.6": version "7.18.6" @@ -586,9 +586,9 @@ "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-transform-block-scoping@^7.20.2": - version "7.20.11" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.20.11.tgz#9f5a3424bd112a3f32fe0cf9364fbb155cff262a" - integrity sha512-tA4N427a7fjf1P0/2I4ScsHGc5jcHPbb30xMbaTke2gxDuWpUfXDuX1FEymJwKk4tuGUvGcejAR6HdZVqmmPyw== + version "7.20.15" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.20.15.tgz#3e1b2aa9cbbe1eb8d644c823141a9c5c2a22392d" + integrity sha512-Vv4DMZ6MiNOhu/LdaZsT/bsLRxgL94d269Mv4R/9sp6+Mp++X/JqypZYypJXLlM4mlL352/Egzbzr98iABH1CA== dependencies: "@babel/helper-plugin-utils" "^7.20.2" @@ -905,10 +905,15 @@ "@babel/types" "^7.4.4" esutils "^2.0.2" +"@babel/regjsgen@^0.8.0": + version "0.8.0" + resolved "https://registry.yarnpkg.com/@babel/regjsgen/-/regjsgen-0.8.0.tgz#f0ba69b075e1f05fb2825b7fad991e7adbb18310" + integrity sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA== + "@babel/runtime@^7.8.4": - version "7.20.7" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.20.7.tgz#fcb41a5a70550e04a7b708037c7c32f7f356d8fd" - integrity sha512-UF0tvkUtxwAgZ5W/KrkHf0Rn0fdnLDU9ScxBrEVNUprE/MzirjK4MJUX1/BVDv00Sv8cljtukVK1aky++X1SjQ== + version "7.20.13" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.20.13.tgz#7055ab8a7cff2b8f6058bf6ae45ff84ad2aded4b" + integrity sha512-gt3PKXs0DBoL9xCvOIIZ2NEqAGZqHjAnmVbfQtB620V0uReIQutpel14KcneZuer7UioY8ALKZ7iocavvzTNFA== dependencies: regenerator-runtime "^0.13.11" @@ -921,10 +926,10 @@ "@babel/parser" "^7.20.7" "@babel/types" "^7.20.7" -"@babel/traverse@^7.20.10", "@babel/traverse@^7.20.12", "@babel/traverse@^7.20.5", "@babel/traverse@^7.20.7", "@babel/traverse@^7.7.2": - version "7.20.12" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.20.12.tgz#7f0f787b3a67ca4475adef1f56cb94f6abd4a4b5" - integrity sha512-MsIbFN0u+raeja38qboyF8TIT7K0BFzz/Yd/77ta4MsUsmP2RAnidIlwq7d5HFQrH/OZJecGV6B71C4zAgpoSQ== +"@babel/traverse@^7.20.10", "@babel/traverse@^7.20.12", "@babel/traverse@^7.20.13", "@babel/traverse@^7.20.5", "@babel/traverse@^7.20.7", "@babel/traverse@^7.7.2": + version "7.20.13" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.20.13.tgz#817c1ba13d11accca89478bd5481b2d168d07473" + integrity sha512-kMJXfF0T6DIS9E8cgdLCSAL+cuCK+YEZHWiLK0SXpTo8YRj5lpJu3CDNKiIBCne4m9hhTIqUg6SYTAI39tAiVQ== dependencies: "@babel/code-frame" "^7.18.6" "@babel/generator" "^7.20.7" @@ -932,7 +937,7 @@ "@babel/helper-function-name" "^7.19.0" "@babel/helper-hoist-variables" "^7.18.6" "@babel/helper-split-export-declaration" "^7.18.6" - "@babel/parser" "^7.20.7" + "@babel/parser" "^7.20.13" "@babel/types" "^7.20.7" debug "^4.1.0" globals "^11.1.0" @@ -959,10 +964,25 @@ resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== -"@csstools/selector-specificity@^2.0.2": +"@csstools/css-parser-algorithms@^2.0.1": + version "2.0.1" + resolved "https://registry.yarnpkg.com/@csstools/css-parser-algorithms/-/css-parser-algorithms-2.0.1.tgz#ff02629c7c95d1f4f8ea84d5ef1173461610535e" + integrity sha512-B9/8PmOtU6nBiibJg0glnNktQDZ3rZnGn/7UmDfrm2vMtrdlXO3p7ErE95N0up80IRk9YEtB5jyj/TmQ1WH3dw== + +"@csstools/css-tokenizer@^2.0.1": version "2.0.2" - resolved "https://registry.yarnpkg.com/@csstools/selector-specificity/-/selector-specificity-2.0.2.tgz#1bfafe4b7ed0f3e4105837e056e0a89b108ebe36" - integrity sha512-IkpVW/ehM1hWKln4fCA3NzJU8KwD+kIOvPZA4cqxoJHtE21CCzjyp+Kxbu0i5I4tBNOlXPL9mjwnWlL0VEG4Fg== + resolved "https://registry.yarnpkg.com/@csstools/css-tokenizer/-/css-tokenizer-2.0.2.tgz#3635560ffc8f1994295d7ce3482e14f956d3f9e1" + integrity sha512-prUTipz0NZH7Lc5wyBUy93NFy3QYDMVEQgSeZzNdpMbKRd6V2bgRFyJ+O0S0Dw0MXWuE/H9WXlJk3kzMZRHZ/g== + +"@csstools/media-query-list-parser@^2.0.1": + version "2.0.1" + resolved "https://registry.yarnpkg.com/@csstools/media-query-list-parser/-/media-query-list-parser-2.0.1.tgz#d85a366811563a5d002755ed10e5212a1613c91d" + integrity sha512-X2/OuzEbjaxhzm97UJ+95GrMeT29d1Ib+Pu+paGLuRWZnWRK9sI9r3ikmKXPWGA1C4y4JEdBEFpp9jEqCvLeRA== + +"@csstools/selector-specificity@^2.1.1": + version "2.1.1" + resolved "https://registry.yarnpkg.com/@csstools/selector-specificity/-/selector-specificity-2.1.1.tgz#c9c61d9fe5ca5ac664e1153bb0aa0eba1c6d6308" + integrity sha512-jwx+WCqszn53YHOfvFMJJRd/B2GqkCBt+1MJSG6o5/s8+ytHMvDZXsJgUEWLk12UnLd7HYKac4BYU5i/Ron1Cw== "@eslint/eslintrc@^1.4.1": version "1.4.1" @@ -1014,109 +1034,109 @@ resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.3.tgz#e45e384e4b8ec16bce2fd903af78450f6bf7ec98" integrity sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA== -"@jest/console@^29.3.1": - version "29.3.1" - resolved "https://registry.yarnpkg.com/@jest/console/-/console-29.3.1.tgz#3e3f876e4e47616ea3b1464b9fbda981872e9583" - integrity sha512-IRE6GD47KwcqA09RIWrabKdHPiKDGgtAL31xDxbi/RjQMsr+lY+ppxmHwY0dUEV3qvvxZzoe5Hl0RXZJOjQNUg== +"@jest/console@^29.4.3": + version "29.4.3" + resolved "https://registry.yarnpkg.com/@jest/console/-/console-29.4.3.tgz#1f25a99f7f860e4c46423b5b1038262466fadde1" + integrity sha512-W/o/34+wQuXlgqlPYTansOSiBnuxrTv61dEVkA6HNmpcgHLUjfaUbdqt6oVvOzaawwo9IdW9QOtMgQ1ScSZC4A== dependencies: - "@jest/types" "^29.3.1" + "@jest/types" "^29.4.3" "@types/node" "*" chalk "^4.0.0" - jest-message-util "^29.3.1" - jest-util "^29.3.1" + jest-message-util "^29.4.3" + jest-util "^29.4.3" slash "^3.0.0" -"@jest/core@^29.3.1": - version "29.3.1" - resolved "https://registry.yarnpkg.com/@jest/core/-/core-29.3.1.tgz#bff00f413ff0128f4debec1099ba7dcd649774a1" - integrity sha512-0ohVjjRex985w5MmO5L3u5GR1O30DexhBSpuwx2P+9ftyqHdJXnk7IUWiP80oHMvt7ubHCJHxV0a0vlKVuZirw== +"@jest/core@^29.4.3": + version "29.4.3" + resolved "https://registry.yarnpkg.com/@jest/core/-/core-29.4.3.tgz#829dd65bffdb490de5b0f69e97de8e3b5eadd94b" + integrity sha512-56QvBq60fS4SPZCuM7T+7scNrkGIe7Mr6PVIXUpu48ouvRaWOFqRPV91eifvFM0ay2HmfswXiGf97NGUN5KofQ== dependencies: - "@jest/console" "^29.3.1" - "@jest/reporters" "^29.3.1" - "@jest/test-result" "^29.3.1" - "@jest/transform" "^29.3.1" - "@jest/types" "^29.3.1" + "@jest/console" "^29.4.3" + "@jest/reporters" "^29.4.3" + "@jest/test-result" "^29.4.3" + "@jest/transform" "^29.4.3" + "@jest/types" "^29.4.3" "@types/node" "*" ansi-escapes "^4.2.1" chalk "^4.0.0" ci-info "^3.2.0" exit "^0.1.2" graceful-fs "^4.2.9" - jest-changed-files "^29.2.0" - jest-config "^29.3.1" - jest-haste-map "^29.3.1" - jest-message-util "^29.3.1" - jest-regex-util "^29.2.0" - jest-resolve "^29.3.1" - jest-resolve-dependencies "^29.3.1" - jest-runner "^29.3.1" - jest-runtime "^29.3.1" - jest-snapshot "^29.3.1" - jest-util "^29.3.1" - jest-validate "^29.3.1" - jest-watcher "^29.3.1" + jest-changed-files "^29.4.3" + jest-config "^29.4.3" + jest-haste-map "^29.4.3" + jest-message-util "^29.4.3" + jest-regex-util "^29.4.3" + jest-resolve "^29.4.3" + jest-resolve-dependencies "^29.4.3" + jest-runner "^29.4.3" + jest-runtime "^29.4.3" + jest-snapshot "^29.4.3" + jest-util "^29.4.3" + jest-validate "^29.4.3" + jest-watcher "^29.4.3" micromatch "^4.0.4" - pretty-format "^29.3.1" + pretty-format "^29.4.3" slash "^3.0.0" strip-ansi "^6.0.0" -"@jest/environment@^29.3.1": - version "29.3.1" - resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-29.3.1.tgz#eb039f726d5fcd14698acd072ac6576d41cfcaa6" - integrity sha512-pMmvfOPmoa1c1QpfFW0nXYtNLpofqo4BrCIk6f2kW4JFeNlHV2t3vd+3iDLf31e2ot2Mec0uqZfmI+U0K2CFag== +"@jest/environment@^29.4.3": + version "29.4.3" + resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-29.4.3.tgz#9fe2f3169c3b33815dc4bd3960a064a83eba6548" + integrity sha512-dq5S6408IxIa+lr54zeqce+QgI+CJT4nmmA+1yzFgtcsGK8c/EyiUb9XQOgz3BMKrRDfKseeOaxj2eO8LlD3lA== dependencies: - "@jest/fake-timers" "^29.3.1" - "@jest/types" "^29.3.1" + "@jest/fake-timers" "^29.4.3" + "@jest/types" "^29.4.3" "@types/node" "*" - jest-mock "^29.3.1" + jest-mock "^29.4.3" -"@jest/expect-utils@^29.3.1": - version "29.3.1" - resolved "https://registry.yarnpkg.com/@jest/expect-utils/-/expect-utils-29.3.1.tgz#531f737039e9b9e27c42449798acb5bba01935b6" - integrity sha512-wlrznINZI5sMjwvUoLVk617ll/UYfGIZNxmbU+Pa7wmkL4vYzhV9R2pwVqUh4NWWuLQWkI8+8mOkxs//prKQ3g== +"@jest/expect-utils@^29.4.3": + version "29.4.3" + resolved "https://registry.yarnpkg.com/@jest/expect-utils/-/expect-utils-29.4.3.tgz#95ce4df62952f071bcd618225ac7c47eaa81431e" + integrity sha512-/6JWbkxHOP8EoS8jeeTd9dTfc9Uawi+43oLKHfp6zzux3U2hqOOVnV3ai4RpDYHOccL6g+5nrxpoc8DmJxtXVQ== dependencies: - jest-get-type "^29.2.0" + jest-get-type "^29.4.3" -"@jest/expect@^29.3.1": - version "29.3.1" - resolved "https://registry.yarnpkg.com/@jest/expect/-/expect-29.3.1.tgz#456385b62894349c1d196f2d183e3716d4c6a6cd" - integrity sha512-QivM7GlSHSsIAWzgfyP8dgeExPRZ9BIe2LsdPyEhCGkZkoyA+kGsoIzbKAfZCvvRzfZioKwPtCZIt5SaoxYCvg== +"@jest/expect@^29.4.3": + version "29.4.3" + resolved "https://registry.yarnpkg.com/@jest/expect/-/expect-29.4.3.tgz#d31a28492e45a6bcd0f204a81f783fe717045c6e" + integrity sha512-iktRU/YsxEtumI9zsPctYUk7ptpC+AVLLk1Ax3AsA4g1C+8OOnKDkIQBDHtD5hA/+VtgMd5AWI5gNlcAlt2vxQ== dependencies: - expect "^29.3.1" - jest-snapshot "^29.3.1" + expect "^29.4.3" + jest-snapshot "^29.4.3" -"@jest/fake-timers@^29.3.1": - version "29.3.1" - resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-29.3.1.tgz#b140625095b60a44de820876d4c14da1aa963f67" - integrity sha512-iHTL/XpnDlFki9Tq0Q1GGuVeQ8BHZGIYsvCO5eN/O/oJaRzofG9Xndd9HuSDBI/0ZS79pg0iwn07OMTQ7ngF2A== +"@jest/fake-timers@^29.4.3": + version "29.4.3" + resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-29.4.3.tgz#31e982638c60fa657d310d4b9d24e023064027b0" + integrity sha512-4Hote2MGcCTWSD2gwl0dwbCpBRHhE6olYEuTj8FMowdg3oQWNKr2YuxenPQYZ7+PfqPY1k98wKDU4Z+Hvd4Tiw== dependencies: - "@jest/types" "^29.3.1" - "@sinonjs/fake-timers" "^9.1.2" + "@jest/types" "^29.4.3" + "@sinonjs/fake-timers" "^10.0.2" "@types/node" "*" - jest-message-util "^29.3.1" - jest-mock "^29.3.1" - jest-util "^29.3.1" + jest-message-util "^29.4.3" + jest-mock "^29.4.3" + jest-util "^29.4.3" -"@jest/globals@^29.3.1": - version "29.3.1" - resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-29.3.1.tgz#92be078228e82d629df40c3656d45328f134a0c6" - integrity sha512-cTicd134vOcwO59OPaB6AmdHQMCtWOe+/DitpTZVxWgMJ+YvXL1HNAmPyiGbSHmF/mXVBkvlm8YYtQhyHPnV6Q== +"@jest/globals@^29.4.3": + version "29.4.3" + resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-29.4.3.tgz#63a2c4200d11bc6d46f12bbe25b07f771fce9279" + integrity sha512-8BQ/5EzfOLG7AaMcDh7yFCbfRLtsc+09E1RQmRBI4D6QQk4m6NSK/MXo+3bJrBN0yU8A2/VIcqhvsOLFmziioA== dependencies: - "@jest/environment" "^29.3.1" - "@jest/expect" "^29.3.1" - "@jest/types" "^29.3.1" - jest-mock "^29.3.1" + "@jest/environment" "^29.4.3" + "@jest/expect" "^29.4.3" + "@jest/types" "^29.4.3" + jest-mock "^29.4.3" -"@jest/reporters@^29.3.1": - version "29.3.1" - resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-29.3.1.tgz#9a6d78c109608e677c25ddb34f907b90e07b4310" - integrity sha512-GhBu3YFuDrcAYW/UESz1JphEAbvUjaY2vShRZRoRY1mxpCMB3yGSJ4j9n0GxVlEOdCf7qjvUfBCrTUUqhVfbRA== +"@jest/reporters@^29.4.3": + version "29.4.3" + resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-29.4.3.tgz#0a68a0c0f20554760cc2e5443177a0018969e353" + integrity sha512-sr2I7BmOjJhyqj9ANC6CTLsL4emMoka7HkQpcoMRlhCbQJjz2zsRzw0BDPiPyEFDXAbxKgGFYuQZiSJ1Y6YoTg== dependencies: "@bcoe/v8-coverage" "^0.2.3" - "@jest/console" "^29.3.1" - "@jest/test-result" "^29.3.1" - "@jest/transform" "^29.3.1" - "@jest/types" "^29.3.1" + "@jest/console" "^29.4.3" + "@jest/test-result" "^29.4.3" + "@jest/transform" "^29.4.3" + "@jest/types" "^29.4.3" "@jridgewell/trace-mapping" "^0.3.15" "@types/node" "*" chalk "^4.0.0" @@ -1129,77 +1149,77 @@ istanbul-lib-report "^3.0.0" istanbul-lib-source-maps "^4.0.0" istanbul-reports "^3.1.3" - jest-message-util "^29.3.1" - jest-util "^29.3.1" - jest-worker "^29.3.1" + jest-message-util "^29.4.3" + jest-util "^29.4.3" + jest-worker "^29.4.3" slash "^3.0.0" string-length "^4.0.1" strip-ansi "^6.0.0" v8-to-istanbul "^9.0.1" -"@jest/schemas@^29.0.0": - version "29.0.0" - resolved "https://registry.yarnpkg.com/@jest/schemas/-/schemas-29.0.0.tgz#5f47f5994dd4ef067fb7b4188ceac45f77fe952a" - integrity sha512-3Ab5HgYIIAnS0HjqJHQYZS+zXc4tUmTmBH3z83ajI6afXp8X3ZtdLX+nXx+I7LNkJD7uN9LAVhgnjDgZa2z0kA== +"@jest/schemas@^29.4.3": + version "29.4.3" + resolved "https://registry.yarnpkg.com/@jest/schemas/-/schemas-29.4.3.tgz#39cf1b8469afc40b6f5a2baaa146e332c4151788" + integrity sha512-VLYKXQmtmuEz6IxJsrZwzG9NvtkQsWNnWMsKxqWNu3+CnfzJQhp0WDDKWLVV9hLKr0l3SLLFRqcYHjhtyuDVxg== dependencies: - "@sinclair/typebox" "^0.24.1" + "@sinclair/typebox" "^0.25.16" -"@jest/source-map@^29.2.0": - version "29.2.0" - resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-29.2.0.tgz#ab3420c46d42508dcc3dc1c6deee0b613c235744" - integrity sha512-1NX9/7zzI0nqa6+kgpSdKPK+WU1p+SJk3TloWZf5MzPbxri9UEeXX5bWZAPCzbQcyuAzubcdUHA7hcNznmRqWQ== +"@jest/source-map@^29.4.3": + version "29.4.3" + resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-29.4.3.tgz#ff8d05cbfff875d4a791ab679b4333df47951d20" + integrity sha512-qyt/mb6rLyd9j1jUts4EQncvS6Yy3PM9HghnNv86QBlV+zdL2inCdK1tuVlL+J+lpiw2BI67qXOrX3UurBqQ1w== dependencies: "@jridgewell/trace-mapping" "^0.3.15" callsites "^3.0.0" graceful-fs "^4.2.9" -"@jest/test-result@^29.3.1": - version "29.3.1" - resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-29.3.1.tgz#92cd5099aa94be947560a24610aa76606de78f50" - integrity sha512-qeLa6qc0ddB0kuOZyZIhfN5q0e2htngokyTWsGriedsDhItisW7SDYZ7ceOe57Ii03sL988/03wAcBh3TChMGw== +"@jest/test-result@^29.4.3": + version "29.4.3" + resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-29.4.3.tgz#e13d973d16c8c7cc0c597082d5f3b9e7f796ccb8" + integrity sha512-Oi4u9NfBolMq9MASPwuWTlC5WvmNRwI4S8YrQg5R5Gi47DYlBe3sh7ILTqi/LGrK1XUE4XY9KZcQJTH1WJCLLA== dependencies: - "@jest/console" "^29.3.1" - "@jest/types" "^29.3.1" + "@jest/console" "^29.4.3" + "@jest/types" "^29.4.3" "@types/istanbul-lib-coverage" "^2.0.0" collect-v8-coverage "^1.0.0" -"@jest/test-sequencer@^29.3.1": - version "29.3.1" - resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-29.3.1.tgz#fa24b3b050f7a59d48f7ef9e0b782ab65123090d" - integrity sha512-IqYvLbieTv20ArgKoAMyhLHNrVHJfzO6ARZAbQRlY4UGWfdDnLlZEF0BvKOMd77uIiIjSZRwq3Jb3Fa3I8+2UA== +"@jest/test-sequencer@^29.4.3": + version "29.4.3" + resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-29.4.3.tgz#0862e876a22993385a0f3e7ea1cc126f208a2898" + integrity sha512-yi/t2nES4GB4G0mjLc0RInCq/cNr9dNwJxcGg8sslajua5Kb4kmozAc+qPLzplhBgfw1vLItbjyHzUN92UXicw== dependencies: - "@jest/test-result" "^29.3.1" + "@jest/test-result" "^29.4.3" graceful-fs "^4.2.9" - jest-haste-map "^29.3.1" + jest-haste-map "^29.4.3" slash "^3.0.0" -"@jest/transform@^29.3.1": - version "29.3.1" - resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-29.3.1.tgz#1e6bd3da4af50b5c82a539b7b1f3770568d6e36d" - integrity sha512-8wmCFBTVGYqFNLWfcOWoVuMuKYPUBTnTMDkdvFtAYELwDOl9RGwOsvQWGPFxDJ8AWY9xM/8xCXdqmPK3+Q5Lug== +"@jest/transform@^29.4.3": + version "29.4.3" + resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-29.4.3.tgz#f7d17eac9cb5bb2e1222ea199c7c7e0835e0c037" + integrity sha512-8u0+fBGWolDshsFgPQJESkDa72da/EVwvL+II0trN2DR66wMwiQ9/CihaGfHdlLGFzbBZwMykFtxuwFdZqlKwg== dependencies: "@babel/core" "^7.11.6" - "@jest/types" "^29.3.1" + "@jest/types" "^29.4.3" "@jridgewell/trace-mapping" "^0.3.15" babel-plugin-istanbul "^6.1.1" chalk "^4.0.0" convert-source-map "^2.0.0" fast-json-stable-stringify "^2.1.0" graceful-fs "^4.2.9" - jest-haste-map "^29.3.1" - jest-regex-util "^29.2.0" - jest-util "^29.3.1" + jest-haste-map "^29.4.3" + jest-regex-util "^29.4.3" + jest-util "^29.4.3" micromatch "^4.0.4" pirates "^4.0.4" slash "^3.0.0" - write-file-atomic "^4.0.1" + write-file-atomic "^4.0.2" -"@jest/types@^29.3.1": - version "29.3.1" - resolved "https://registry.yarnpkg.com/@jest/types/-/types-29.3.1.tgz#7c5a80777cb13e703aeec6788d044150341147e3" - integrity sha512-d0S0jmmTpjnhCmNpApgX3jrUZgZ22ivKJRvL2lli5hpCRoNnp1f85r2/wpKfXuYu8E7Jjh1hGfhPyup1NM5AmA== +"@jest/types@^29.4.3": + version "29.4.3" + resolved "https://registry.yarnpkg.com/@jest/types/-/types-29.4.3.tgz#9069145f4ef09adf10cec1b2901b2d390031431f" + integrity sha512-bPYfw8V65v17m2Od1cv44FH+SiKW7w2Xu7trhcdTLUmSv85rfKsP+qXSjO4KGJr4dtPSzl/gvslZBXctf1qGEA== dependencies: - "@jest/schemas" "^29.0.0" + "@jest/schemas" "^29.4.3" "@types/istanbul-lib-coverage" "^2.0.0" "@types/istanbul-reports" "^3.0.0" "@types/node" "*" @@ -1254,13 +1274,13 @@ "@jridgewell/resolve-uri" "3.1.0" "@jridgewell/sourcemap-codec" "1.4.14" -"@marp-team/marp-core@^3.4.2": - version "3.4.2" - resolved "https://registry.yarnpkg.com/@marp-team/marp-core/-/marp-core-3.4.2.tgz#07e9444c0be0fc969edfa33d4c31f304f18e7b2e" - integrity sha512-eJFK/Xk8d9Fe8yCwXreAA+QjSiQVSVLUP1FbscN2Jr0Jo0NRhvC8cob9yTq6XdPkkcZCyTW/v61W668eKMdaww== +"@marp-team/marp-core@^3.5.0": + version "3.5.0" + resolved "https://registry.yarnpkg.com/@marp-team/marp-core/-/marp-core-3.5.0.tgz#4f60cebd81172d07e986f0296ac3bd88ef2d9235" + integrity sha512-1PcPSvhh3VvHFyh8pMKslCpTuDY7hiAtPKdHb+yZCheTdd0+IUOeOI9YRW3mb3ge9/d65CoOGeATPBzuGYuUYQ== dependencies: "@marp-team/marpit" "^2.4.2" - "@marp-team/marpit-svg-polyfill" "^2.0.0" + "@marp-team/marpit-svg-polyfill" "^2.1.0" highlight.js "^11.7.0" katex "^0.16.4" mathjax-full "^3.2.2" @@ -1268,10 +1288,10 @@ postcss-selector-parser "^6.0.11" xss "^1.0.14" -"@marp-team/marpit-svg-polyfill@^2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@marp-team/marpit-svg-polyfill/-/marpit-svg-polyfill-2.0.0.tgz#4efbf248c86b48f2dac0d5e6b4d8bf5bac7dd0b2" - integrity sha512-KIp5EaUkwFaeYOAb0b9B7+3XAjZYAUDJi3LRSnH1y27jJY2TCKrXnKIATfPJXSkn9QjTy69fbwCZ07B93QhupA== +"@marp-team/marpit-svg-polyfill@^2.1.0": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@marp-team/marpit-svg-polyfill/-/marpit-svg-polyfill-2.1.0.tgz#40e7ce3a2aa7496748541cc7053e6779d2f866ac" + integrity sha512-VqCoAKwv1HJdzZp36dDPxznz2JZgRjkVSSPHpCzk72G2N753F0HPKXjevdjxmzN6gir9bUGBgMD1SguWJIi11A== "@marp-team/marpit@^2.4.2": version "2.4.2" @@ -1333,17 +1353,17 @@ tiny-glob "^0.2.9" tslib "^2.4.0" -"@rollup/plugin-alias@^4.0.2": - version "4.0.2" - resolved "https://registry.yarnpkg.com/@rollup/plugin-alias/-/plugin-alias-4.0.2.tgz#fec6c6aff8dd6fce580ae6bc5345084cd702bb62" - integrity sha512-1hv7dBOZZwo3SEupxn4UA2N0EDThqSSS+wI1St1TNTBtOZvUchyIClyHcnDcjjrReTPZ47Faedrhblv4n+T5UQ== +"@rollup/plugin-alias@^4.0.3": + version "4.0.3" + resolved "https://registry.yarnpkg.com/@rollup/plugin-alias/-/plugin-alias-4.0.3.tgz#571f6fb26387df91d0363905a7fd835757727ae2" + integrity sha512-ZuDWE1q4PQDhvm/zc5Prun8sBpLJy41DMptYrS6MhAy9s9kL/doN1613BWfEchGVfKxzliJ3BjbOPizXX38DbQ== dependencies: slash "^4.0.0" -"@rollup/plugin-commonjs@^24.0.0": - version "24.0.0" - resolved "https://registry.yarnpkg.com/@rollup/plugin-commonjs/-/plugin-commonjs-24.0.0.tgz#fb7cf4a6029f07ec42b25daa535c75b05a43f75c" - integrity sha512-0w0wyykzdyRRPHOb0cQt14mIBLujfAv6GgP6g8nvg/iBxEm112t3YPPq+Buqe2+imvElTka+bjNlJ/gB56TD8g== +"@rollup/plugin-commonjs@^24.0.1": + version "24.0.1" + resolved "https://registry.yarnpkg.com/@rollup/plugin-commonjs/-/plugin-commonjs-24.0.1.tgz#d54ba26a3e3c495dc332bd27a81f7e9e2df46f90" + integrity sha512-15LsiWRZk4eOGqvrJyu3z3DaBu5BhXIMeWnijSRvd8irrrg9SHpQ1pH+BUK4H6Z9wL9yOxZJMTLU+Au86XHxow== dependencies: "@rollup/pluginutils" "^5.0.1" commondir "^1.0.1" @@ -1379,10 +1399,10 @@ "@rollup/pluginutils" "^5.0.1" magic-string "^0.27.0" -"@rollup/plugin-terser@^0.3.0": - version "0.3.0" - resolved "https://registry.yarnpkg.com/@rollup/plugin-terser/-/plugin-terser-0.3.0.tgz#43ee908fed27ed2bc876496fb9aab8033a0566ac" - integrity sha512-mYTkNW9KjOscS/3QWU5LfOKsR3/fAAVDaqcAe2TZ7ng6pN46f+C7FOZbITuIW/neA+PhcjoKl7yMyB3XcmA4gw== +"@rollup/plugin-terser@^0.4.0": + version "0.4.0" + resolved "https://registry.yarnpkg.com/@rollup/plugin-terser/-/plugin-terser-0.4.0.tgz#4c76249ad337f3eb04ab409332f23717af2c1fbf" + integrity sha512-Ipcf3LPNerey1q9ZMjiaWHlNPEHNU/B5/uh9zXLltfEQ1lVSLLeZSgAtTPWGyw8Ip1guOeq+mDtdOlEj/wNxQw== dependencies: serialize-javascript "^6.0.0" smob "^0.0.6" @@ -1414,24 +1434,24 @@ estree-walker "^2.0.2" picomatch "^2.3.1" -"@sinclair/typebox@^0.24.1": - version "0.24.51" - resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.24.51.tgz#645f33fe4e02defe26f2f5c0410e1c094eac7f5f" - integrity sha512-1P1OROm/rdubP5aFDSZQILU0vrLCJ4fvHt6EoqHEM+2D/G5MK3bIaymUKLit8Js9gbns5UyJnkP/TZROLw4tUA== +"@sinclair/typebox@^0.25.16": + version "0.25.23" + resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.25.23.tgz#1c15b0d2b872d89cc0f47c7243eacb447df8b8bd" + integrity sha512-VEB8ygeP42CFLWyAJhN5OklpxUliqdNEUcXb4xZ/CINqtYGTjL5ukluKdKzQ0iWdUxyQ7B0539PAUhHKrCNWSQ== -"@sinonjs/commons@^1.7.0": - version "1.8.6" - resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-1.8.6.tgz#80c516a4dc264c2a69115e7578d62581ff455ed9" - integrity sha512-Ky+XkAkqPZSm3NLBeUng77EBQl3cmeJhITaGHdYH8kjVB+aun3S4XBRti2zt17mtt0mIUDiNxYeoJm6drVvBJQ== +"@sinonjs/commons@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-2.0.0.tgz#fd4ca5b063554307e8327b4564bd56d3b73924a3" + integrity sha512-uLa0j859mMrg2slwQYdO/AkrOfmH+X6LTVmNTS9CqexuE2IvVORIkSpJLqePAbEnKJ77aMmCwr1NUZ57120Xcg== dependencies: type-detect "4.0.8" -"@sinonjs/fake-timers@^9.1.2": - version "9.1.2" - resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-9.1.2.tgz#4eaab737fab77332ab132d396a3c0d364bd0ea8c" - integrity sha512-BPS4ynJW/o92PUR4wgriz2Ud5gpST5vz6GQfMixEDK0Z8ZCUv2M7SkBLykH56T++Xs+8ln9zTGbOvNGIe02/jw== +"@sinonjs/fake-timers@^10.0.2": + version "10.0.2" + resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-10.0.2.tgz#d10549ed1f423d80639c528b6c7f5a1017747d0c" + integrity sha512-SwUDyjWnah1AaNl7kxsa7cfLhlTYoiyhDAIgyh+El30YvXs/o7OLXpYH88Zdhyx9JExKrmHDJ+10bwIcY80Jmw== dependencies: - "@sinonjs/commons" "^1.7.0" + "@sinonjs/commons" "^2.0.0" "@tootallnate/once@2": version "2.0.0" @@ -1449,12 +1469,12 @@ integrity sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow== "@types/babel__core@^7.1.14": - version "7.1.20" - resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.20.tgz#e168cdd612c92a2d335029ed62ac94c95b362359" - integrity sha512-PVb6Bg2QuscZ30FvOU7z4guG6c926D9YRvOxEaelzndpMsvP+YM74Q/dAFASpg2l6+XLalxSGxcq/lrgYWZtyQ== + version "7.20.0" + resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.20.0.tgz#61bc5a4cae505ce98e1e36c5445e4bee060d8891" + integrity sha512-+n8dL/9GWblDO0iU6eZAwEIJVr5DWigtle+Q6HLOrh/pdbXOhOtqzq8VPPE2zvNJzSKY4vH/z3iT3tn0A3ypiQ== dependencies: - "@babel/parser" "^7.1.0" - "@babel/types" "^7.0.0" + "@babel/parser" "^7.20.7" + "@babel/types" "^7.20.7" "@types/babel__generator" "*" "@types/babel__template" "*" "@types/babel__traverse" "*" @@ -1513,29 +1533,29 @@ resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.0.tgz#5fb2e536c1ae9bf35366eed879e827fa59ca41c2" integrity sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ== -"@types/express-serve-static-core@^4.17.31": - version "4.17.32" - resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.32.tgz#93dda387f5516af616d8d3f05f2c4c79d81e1b82" - integrity sha512-aI5h/VOkxOF2Z1saPy0Zsxs5avets/iaiAJYznQFm5By/pamU31xWKL//epiF4OfUA2qTOc9PV6tCUjhO8wlZA== +"@types/express-serve-static-core@^4.17.33": + version "4.17.33" + resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.33.tgz#de35d30a9d637dc1450ad18dd583d75d5733d543" + integrity sha512-TPBqmR/HRYI3eC2E5hmiivIzv+bidAfXofM+sbonAGvyDhySGw9/PQZFt2BLOrjUUR++4eJVpx6KnLQK1Fk9tA== dependencies: "@types/node" "*" "@types/qs" "*" "@types/range-parser" "*" -"@types/express@^4.17.15": - version "4.17.15" - resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.15.tgz#9290e983ec8b054b65a5abccb610411953d417ff" - integrity sha512-Yv0k4bXGOH+8a+7bELd2PqHQsuiANB+A8a4gnQrkRWzrkKlb6KHaVvyXhqs04sVW/OWlbPyYxRgYlIXLfrufMQ== +"@types/express@^4.17.17": + version "4.17.17" + resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.17.tgz#01d5437f6ef9cfa8668e616e13c2f2ac9a491ae4" + integrity sha512-Q4FmmuLGBG58btUnfS1c1r/NQdlp3DMfGDGig8WhfpA2YRUtEkxAjkZb0yvplJGYdF1fsQ81iMDcH24sSCNC/Q== dependencies: "@types/body-parser" "*" - "@types/express-serve-static-core" "^4.17.31" + "@types/express-serve-static-core" "^4.17.33" "@types/qs" "*" "@types/serve-static" "*" "@types/graceful-fs@^4.1.3": - version "4.1.5" - resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.5.tgz#21ffba0d98da4350db64891f92a9e5db3cdb4e15" - integrity sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw== + version "4.1.6" + resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.6.tgz#e14b2576a1c25026b7f02ede1de3b84c3a1efeae" + integrity sha512-Sig0SNORX9fdW+bQuTEovKj3uHcUL6LQKbCrrqb1X7J6/ReAbhCXRAhc+SMejhLELFj2QcyuxmUooZ4bt5ReSw== dependencies: "@types/node" "*" @@ -1558,10 +1578,10 @@ dependencies: "@types/istanbul-lib-report" "*" -"@types/jest@^29.2.5": - version "29.2.5" - resolved "https://registry.yarnpkg.com/@types/jest/-/jest-29.2.5.tgz#c27f41a9d6253f288d1910d3c5f09484a56b73c0" - integrity sha512-H2cSxkKgVmqNHXP7TC2L/WUorrZu8ZigyRywfVzv6EyBlxj39n4C00hjXYQWsbwqgElaj/CiAeSRmk5GoaKTgw== +"@types/jest@^29.4.0": + version "29.4.0" + resolved "https://registry.yarnpkg.com/@types/jest/-/jest-29.4.0.tgz#a8444ad1704493e84dbf07bb05990b275b3b9206" + integrity sha512-VaywcGQ9tPorCX/Jkkni7RWGFfI11whqzs8dvxF41P17Z+z872thvEvlIbznjPJ02kl1HMX3LmLOonsj2n7HeQ== dependencies: expect "^29.0.0" pretty-format "^29.0.0" @@ -1613,10 +1633,10 @@ resolved "https://registry.yarnpkg.com/@types/minimist/-/minimist-1.2.2.tgz#ee771e2ba4b3dc5b372935d549fd9617bf345b8c" integrity sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ== -"@types/node@*", "@types/node@~18.11.18": - version "18.11.18" - resolved "https://registry.yarnpkg.com/@types/node/-/node-18.11.18.tgz#8dfb97f0da23c2293e554c5a50d61ef134d7697f" - integrity sha512-DHQpWGjyQKSHj3ebjFI/wRKcqQcdR+MoFBygntYOZytCqNfkd2ZC4ARDJ2DQqhjH5p85Nnd3jhUJIXrszFX/JA== +"@types/node@*", "@types/node@~18.14.0": + version "18.14.0" + resolved "https://registry.yarnpkg.com/@types/node/-/node-18.14.0.tgz#94c47b9217bbac49d4a67a967fdcdeed89ebb7d0" + integrity sha512-5EWrvLmglK+imbCJY0+INViFWUHg1AHel1sq4ZVSfdcNqGy9Edv3UB9IIzzg+xPaUcAgZYcfVs2fBcwDeZzU0A== "@types/node@^17.0.21": version "17.0.45" @@ -1628,11 +1648,6 @@ resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz#d3357479a0fdfdd5907fe67e17e0a85c906e1301" integrity sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw== -"@types/parse-json@^4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0" - integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA== - "@types/prettier@^2.1.5": version "2.7.2" resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.7.2.tgz#6c2324641cc4ba050a8c710b2b251b377581fbf0" @@ -1708,10 +1723,10 @@ resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-21.0.0.tgz#0c60e537fa790f5f9472ed2776c2b71ec117351b" integrity sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA== -"@types/yargs@^17.0.19", "@types/yargs@^17.0.8": - version "17.0.19" - resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-17.0.19.tgz#8dbecdc9ab48bee0cb74f6e3327de3fa0d0c98ae" - integrity sha512-cAx3qamwaYX9R0fzOIZAlFpo4A+1uBVCxqpKz9D26uTF4srRXaGTTsikQmaotCtNdbhzyUH7ft6p9ktz9s6UNQ== +"@types/yargs@^17.0.22", "@types/yargs@^17.0.8": + version "17.0.22" + resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-17.0.22.tgz#7dd37697691b5f17d020f3c63e7a45971ff71e9a" + integrity sha512-pet5WJ9U8yPVRhkwuEIp5ktAeAqRZOq4UdAyWLWzxbtpyXnzbtLdKiXAjJzi/KLmPGS9wk86lUFWZFN6sISo4g== dependencies: "@types/yargs-parser" "*" @@ -1722,87 +1737,88 @@ dependencies: "@types/node" "*" -"@typescript-eslint/eslint-plugin@^5.48.0": - version "5.48.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.48.0.tgz#54f8368d080eb384a455f60c2ee044e948a8ce67" - integrity sha512-SVLafp0NXpoJY7ut6VFVUU9I+YeFsDzeQwtK0WZ+xbRN3mtxJ08je+6Oi2N89qDn087COdO0u3blKZNv9VetRQ== +"@typescript-eslint/eslint-plugin@^5.52.0": + version "5.52.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.52.0.tgz#5fb0d43574c2411f16ea80f5fc335b8eaa7b28a8" + integrity sha512-lHazYdvYVsBokwCdKOppvYJKaJ4S41CgKBcPvyd0xjZNbvQdhn/pnJlGtQksQ/NhInzdaeaSarlBjDXHuclEbg== dependencies: - "@typescript-eslint/scope-manager" "5.48.0" - "@typescript-eslint/type-utils" "5.48.0" - "@typescript-eslint/utils" "5.48.0" + "@typescript-eslint/scope-manager" "5.52.0" + "@typescript-eslint/type-utils" "5.52.0" + "@typescript-eslint/utils" "5.52.0" debug "^4.3.4" + grapheme-splitter "^1.0.4" ignore "^5.2.0" natural-compare-lite "^1.4.0" regexpp "^3.2.0" semver "^7.3.7" tsutils "^3.21.0" -"@typescript-eslint/parser@^5.48.0": - version "5.48.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.48.0.tgz#02803355b23884a83e543755349809a50b7ed9ba" - integrity sha512-1mxNA8qfgxX8kBvRDIHEzrRGrKHQfQlbW6iHyfHYS0Q4X1af+S6mkLNtgCOsGVl8+/LUPrqdHMssAemkrQ01qg== +"@typescript-eslint/parser@^5.52.0": + version "5.52.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.52.0.tgz#73c136df6c0133f1d7870de7131ccf356f5be5a4" + integrity sha512-e2KiLQOZRo4Y0D/b+3y08i3jsekoSkOYStROYmPUnGMEoA0h+k2qOH5H6tcjIc68WDvGwH+PaOrP1XRzLJ6QlA== dependencies: - "@typescript-eslint/scope-manager" "5.48.0" - "@typescript-eslint/types" "5.48.0" - "@typescript-eslint/typescript-estree" "5.48.0" + "@typescript-eslint/scope-manager" "5.52.0" + "@typescript-eslint/types" "5.52.0" + "@typescript-eslint/typescript-estree" "5.52.0" debug "^4.3.4" -"@typescript-eslint/scope-manager@5.48.0": - version "5.48.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.48.0.tgz#607731cb0957fbc52fd754fd79507d1b6659cecf" - integrity sha512-0AA4LviDtVtZqlyUQnZMVHydDATpD9SAX/RC5qh6cBd3xmyWvmXYF+WT1oOmxkeMnWDlUVTwdODeucUnjz3gow== +"@typescript-eslint/scope-manager@5.52.0": + version "5.52.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.52.0.tgz#a993d89a0556ea16811db48eabd7c5b72dcb83d1" + integrity sha512-AR7sxxfBKiNV0FWBSARxM8DmNxrwgnYMPwmpkC1Pl1n+eT8/I2NAUPuwDy/FmDcC6F8pBfmOcaxcxRHspgOBMw== dependencies: - "@typescript-eslint/types" "5.48.0" - "@typescript-eslint/visitor-keys" "5.48.0" + "@typescript-eslint/types" "5.52.0" + "@typescript-eslint/visitor-keys" "5.52.0" -"@typescript-eslint/type-utils@5.48.0": - version "5.48.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.48.0.tgz#40496dccfdc2daa14a565f8be80ad1ae3882d6d6" - integrity sha512-vbtPO5sJyFjtHkGlGK4Sthmta0Bbls4Onv0bEqOGm7hP9h8UpRsHJwsrCiWtCUndTRNQO/qe6Ijz9rnT/DB+7g== +"@typescript-eslint/type-utils@5.52.0": + version "5.52.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.52.0.tgz#9fd28cd02e6f21f5109e35496df41893f33167aa" + integrity sha512-tEKuUHfDOv852QGlpPtB3lHOoig5pyFQN/cUiZtpw99D93nEBjexRLre5sQZlkMoHry/lZr8qDAt2oAHLKA6Jw== dependencies: - "@typescript-eslint/typescript-estree" "5.48.0" - "@typescript-eslint/utils" "5.48.0" + "@typescript-eslint/typescript-estree" "5.52.0" + "@typescript-eslint/utils" "5.52.0" debug "^4.3.4" tsutils "^3.21.0" -"@typescript-eslint/types@5.48.0": - version "5.48.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.48.0.tgz#d725da8dfcff320aab2ac6f65c97b0df30058449" - integrity sha512-UTe67B0Ypius0fnEE518NB2N8gGutIlTojeTg4nt0GQvikReVkurqxd2LvYa9q9M5MQ6rtpNyWTBxdscw40Xhw== +"@typescript-eslint/types@5.52.0": + version "5.52.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.52.0.tgz#19e9abc6afb5bd37a1a9bea877a1a836c0b3241b" + integrity sha512-oV7XU4CHYfBhk78fS7tkum+/Dpgsfi91IIDy7fjCyq2k6KB63M6gMC0YIvy+iABzmXThCRI6xpCEyVObBdWSDQ== -"@typescript-eslint/typescript-estree@5.48.0": - version "5.48.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.48.0.tgz#a7f04bccb001003405bb5452d43953a382c2fac2" - integrity sha512-7pjd94vvIjI1zTz6aq/5wwE/YrfIyEPLtGJmRfyNR9NYIW+rOvzzUv3Cmq2hRKpvt6e9vpvPUQ7puzX7VSmsEw== +"@typescript-eslint/typescript-estree@5.52.0": + version "5.52.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.52.0.tgz#6408cb3c2ccc01c03c278cb201cf07e73347dfca" + integrity sha512-WeWnjanyEwt6+fVrSR0MYgEpUAuROxuAH516WPjUblIrClzYJj0kBbjdnbQXLpgAN8qbEuGywiQsXUVDiAoEuQ== dependencies: - "@typescript-eslint/types" "5.48.0" - "@typescript-eslint/visitor-keys" "5.48.0" + "@typescript-eslint/types" "5.52.0" + "@typescript-eslint/visitor-keys" "5.52.0" debug "^4.3.4" globby "^11.1.0" is-glob "^4.0.3" semver "^7.3.7" tsutils "^3.21.0" -"@typescript-eslint/utils@5.48.0", "@typescript-eslint/utils@^5.10.0": - version "5.48.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.48.0.tgz#eee926af2733f7156ad8d15e51791e42ce300273" - integrity sha512-x2jrMcPaMfsHRRIkL+x96++xdzvrdBCnYRd5QiW5Wgo1OB4kDYPbC1XjWP/TNqlfK93K/lUL92erq5zPLgFScQ== +"@typescript-eslint/utils@5.52.0", "@typescript-eslint/utils@^5.10.0": + version "5.52.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.52.0.tgz#b260bb5a8f6b00a0ed51db66bdba4ed5e4845a72" + integrity sha512-As3lChhrbwWQLNk2HC8Ree96hldKIqk98EYvypd3It8Q1f8d5zWyIoaZEp2va5667M4ZyE7X8UUR+azXrFl+NA== dependencies: "@types/json-schema" "^7.0.9" "@types/semver" "^7.3.12" - "@typescript-eslint/scope-manager" "5.48.0" - "@typescript-eslint/types" "5.48.0" - "@typescript-eslint/typescript-estree" "5.48.0" + "@typescript-eslint/scope-manager" "5.52.0" + "@typescript-eslint/types" "5.52.0" + "@typescript-eslint/typescript-estree" "5.52.0" eslint-scope "^5.1.1" eslint-utils "^3.0.0" semver "^7.3.7" -"@typescript-eslint/visitor-keys@5.48.0": - version "5.48.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.48.0.tgz#4446d5e7f6cadde7140390c0e284c8702d944904" - integrity sha512-5motVPz5EgxQ0bHjut3chzBkJ3Z3sheYVcSwS5BpHZpLqSptSmELNtGixmgj65+rIfhvtQTz5i9OP2vtzdDH7Q== +"@typescript-eslint/visitor-keys@5.52.0": + version "5.52.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.52.0.tgz#e38c971259f44f80cfe49d97dbffa38e3e75030f" + integrity sha512-qMwpw6SU5VHCPr99y274xhbm+PRViK/NATY6qzt+Et7+mThGuFSl/ompj2/hrBlRP/kq+BFdgagnOSgw9TB0eA== dependencies: - "@typescript-eslint/types" "5.48.0" + "@typescript-eslint/types" "5.52.0" eslint-visitor-keys "^3.3.0" abab@^2.0.6: @@ -1849,9 +1865,9 @@ acorn@^7.1.1: integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== acorn@^8.1.0, acorn@^8.5.0, acorn@^8.8.0, acorn@^8.8.1: - version "8.8.1" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.8.1.tgz#0a3f9cbecc4ec3bea6f0a80b66ae8dd2da250b73" - integrity sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA== + version "8.8.2" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.8.2.tgz#1b2f25db02af965399b9776b0c2c391276d37c4a" + integrity sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw== agent-base@6: version "6.0.2" @@ -1985,7 +2001,7 @@ array-flatten@1.1.1: resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" integrity sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg== -array-includes@^3.1.4: +array-includes@^3.1.6: version "3.1.6" resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.6.tgz#9e9e720e194f198266ba9e18c29e6a9b0e4b225f" integrity sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw== @@ -2001,7 +2017,7 @@ array-union@^2.1.0: resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== -array.prototype.flat@^1.2.5: +array.prototype.flat@^1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.3.1.tgz#ffc6576a7ca3efc2f46a143b9d1dda9b4b3cf5e2" integrity sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA== @@ -2011,6 +2027,16 @@ array.prototype.flat@^1.2.5: es-abstract "^1.20.4" es-shim-unscopables "^1.0.0" +array.prototype.flatmap@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/array.prototype.flatmap/-/array.prototype.flatmap-1.3.1.tgz#1aae7903c2100433cb8261cd4ed310aab5c4a183" + integrity sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" + es-shim-unscopables "^1.0.0" + arrify@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" @@ -2070,15 +2096,15 @@ b4a@^1.6.1: resolved "https://registry.yarnpkg.com/b4a/-/b4a-1.6.1.tgz#9effac93a469a868d024e16fd77162c653544cbd" integrity sha512-AsKjNhz72yxteo/0EtQEiwkMUgk/tGmycXlbG4g3Ard2/ULtNLUykGOkeK0egmN27h0xMAhb76jYccW+XTBExA== -babel-jest@^29.3.1: - version "29.3.1" - resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-29.3.1.tgz#05c83e0d128cd48c453eea851482a38782249f44" - integrity sha512-aard+xnMoxgjwV70t0L6wkW/3HQQtV+O0PEimxKgzNqCJnbYmroPojdP2tqKSOAt8QAKV/uSZU8851M7B5+fcA== +babel-jest@^29.4.3: + version "29.4.3" + resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-29.4.3.tgz#478b84d430972b277ad67dd631be94abea676792" + integrity sha512-o45Wyn32svZE+LnMVWv/Z4x0SwtLbh4FyGcYtR20kIWd+rdrDZ9Fzq8Ml3MYLD+mZvEdzCjZsCnYZ2jpJyQ+Nw== dependencies: - "@jest/transform" "^29.3.1" + "@jest/transform" "^29.4.3" "@types/babel__core" "^7.1.14" babel-plugin-istanbul "^6.1.1" - babel-preset-jest "^29.2.0" + babel-preset-jest "^29.4.3" chalk "^4.0.0" graceful-fs "^4.2.9" slash "^3.0.0" @@ -2094,10 +2120,10 @@ babel-plugin-istanbul@^6.1.1: istanbul-lib-instrument "^5.0.4" test-exclude "^6.0.0" -babel-plugin-jest-hoist@^29.2.0: - version "29.2.0" - resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.2.0.tgz#23ee99c37390a98cfddf3ef4a78674180d823094" - integrity sha512-TnspP2WNiR3GLfCsUNHqeXw0RoQ2f9U5hQ5L3XFpwuO8htQmSrhh8qsB6vi5Yi8+kuynN1yjDjQsPfkebmB6ZA== +babel-plugin-jest-hoist@^29.4.3: + version "29.4.3" + resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.4.3.tgz#ad1dfb5d31940957e00410ef7d9b2aa94b216101" + integrity sha512-mB6q2q3oahKphy5V7CpnNqZOCkxxZ9aokf1eh82Dy3jQmg4xvM1tGrh5y6BQUJh4a3Pj9+eLfwvAZ7VNKg7H8Q== dependencies: "@babel/template" "^7.3.3" "@babel/types" "^7.3.3" @@ -2151,12 +2177,12 @@ babel-preset-current-node-syntax@^1.0.0: "@babel/plugin-syntax-optional-chaining" "^7.8.3" "@babel/plugin-syntax-top-level-await" "^7.8.3" -babel-preset-jest@^29.2.0: - version "29.2.0" - resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-29.2.0.tgz#3048bea3a1af222e3505e4a767a974c95a7620dc" - integrity sha512-z9JmMJppMxNv8N7fNRHvhMg9cvIkMxQBXgFkane3yKVEvEOP+kB50lk8DFRvF9PGqbyXxlmebKWhuDORO8RgdA== +babel-preset-jest@^29.4.3: + version "29.4.3" + resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-29.4.3.tgz#bb926b66ae253b69c6e3ef87511b8bb5c53c5b52" + integrity sha512-gWx6COtSuma6n9bw+8/F+2PCXrIgxV/D1TJFnp6OyBK2cxPWg0K9p/sriNYeifKjpUkMViWQ09DSWtzJQRETsw== dependencies: - babel-plugin-jest-hoist "^29.2.0" + babel-plugin-jest-hoist "^29.4.3" babel-preset-current-node-syntax "^1.0.0" babel-walk@3.0.0-canary-5: @@ -2258,15 +2284,15 @@ braces@^3.0.2, braces@~3.0.2: dependencies: fill-range "^7.0.1" -browserslist@^4.0.0, browserslist@^4.16.6, browserslist@^4.21.3, browserslist@^4.21.4: - version "4.21.4" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.21.4.tgz#e7496bbc67b9e39dd0f98565feccdcb0d4ff6987" - integrity sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw== +browserslist@^4.0.0, browserslist@^4.21.3, browserslist@^4.21.4, browserslist@^4.21.5: + version "4.21.5" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.21.5.tgz#75c5dae60063ee641f977e00edd3cfb2fb7af6a7" + integrity sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w== dependencies: - caniuse-lite "^1.0.30001400" - electron-to-chromium "^1.4.251" - node-releases "^2.0.6" - update-browserslist-db "^1.0.9" + caniuse-lite "^1.0.30001449" + electron-to-chromium "^1.4.284" + node-releases "^2.0.8" + update-browserslist-db "^1.0.10" bs-logger@0.x: version "0.2.6" @@ -2360,10 +2386,10 @@ caniuse-api@^3.0.0: lodash.memoize "^4.1.2" lodash.uniq "^4.5.0" -caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001400, caniuse-lite@^1.0.30001426: - version "1.0.30001442" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001442.tgz#40337f1cf3be7c637b061e2f78582dc1daec0614" - integrity sha512-239m03Pqy0hwxYPYR5JwOIxRJfLTWtle9FV8zosfV5pHg+/51uD4nxcUlM8+mWWGfwKtt8lJNHnD3cWw9VZ6ow== +caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001426, caniuse-lite@^1.0.30001449: + version "1.0.30001456" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001456.tgz#734ec1dbfa4f3abe6e435b78ecf40d68e8c32ce4" + integrity sha512-XFHJY5dUgmpMV25UqaD4kVq2LsiaU5rS8fb0f17pCoXQiQslzmFgnfOxfvo1bTpTqf7dwG/N/05CnLCnOEKmzA== "chainsaw@>=0.0.7 <0.1": version "0.0.9" @@ -2462,9 +2488,9 @@ chrome-launcher@^0.15.1: lighthouse-logger "^1.0.0" ci-info@^3.2.0: - version "3.7.1" - resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.7.1.tgz#708a6cdae38915d597afdf3b145f2f8e1ff55f3f" - integrity sha512-4jYS4MOAaCIStSRwiuxc4B8MYhIe676yO1sYGzARnjXkWpmzZMMYxY6zu8WYWDhSuth5zhrQ1rhNSibyyvv4/w== + version "3.8.0" + resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.8.0.tgz#81408265a5380c929f0bc665d62256628ce9ef91" + integrity sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw== cjs-module-lexer@^1.0.0: version "1.2.2" @@ -2626,9 +2652,9 @@ content-disposition@0.5.4: safe-buffer "5.2.1" content-type@~1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" - integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== + version "1.0.5" + resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.5.tgz#8b773162656d1d1086784c8f23a54ce6d73d7918" + integrity sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA== convert-source-map@^1.6.0, convert-source-map@^1.7.0: version "1.9.0" @@ -2650,34 +2676,23 @@ cookie@0.5.0: resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.5.0.tgz#d1f5d71adec6558c58f389987c366aa47e994f8b" integrity sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw== -cookiejar@^2.1.3: - version "2.1.3" - resolved "https://registry.yarnpkg.com/cookiejar/-/cookiejar-2.1.3.tgz#fc7a6216e408e74414b90230050842dacda75acc" - integrity sha512-JxbCBUdrfr6AQjOXrxoTvAMJO4HBTUIlBzslcJPAz+/KT8yk53fXun51u+RenNYvad/+Vc2DIz5o9UxlCDymFQ== +cookiejar@^2.1.4: + version "2.1.4" + resolved "https://registry.yarnpkg.com/cookiejar/-/cookiejar-2.1.4.tgz#ee669c1fea2cf42dc31585469d193fef0d65771b" + integrity sha512-LDx6oHrK+PhzLKJU9j5S7/Y3jM/mUHvD/DeI1WQmJn652iPC5Y4TBzC9l+5OMOXlyTTA+SmVUPm0HQUwpD5Jqw== core-js-compat@^3.25.1: - version "3.27.1" - resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.27.1.tgz#b5695eb25c602d72b1d30cbfba3cb7e5e4cf0a67" - integrity sha512-Dg91JFeCDA17FKnneN7oCMz4BkQ4TcffkgHP4OWwp9yx3pi7ubqMDXXSacfNak1PQqjc95skyt+YBLHQJnkJwA== + version "3.28.0" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.28.0.tgz#c08456d854608a7264530a2afa281fadf20ecee6" + integrity sha512-myzPgE7QodMg4nnd3K1TDoES/nADRStM8Gpz0D6nhkwbmwEnE0ZGJgoWsvQ722FR8D7xS0n0LV556RcEicjTyg== dependencies: - browserslist "^4.21.4" + browserslist "^4.21.5" core-util-is@~1.0.0: version "1.0.3" resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== -cosmiconfig@^7.1.0: - version "7.1.0" - resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-7.1.0.tgz#1443b9afa596b670082ea46cbd8f6a62b84635f6" - integrity sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA== - dependencies: - "@types/parse-json" "^4.0.0" - import-fresh "^3.2.1" - parse-json "^5.0.0" - path-type "^4.0.0" - yaml "^1.10.0" - cosmiconfig@^8.0.0: version "8.0.0" resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-8.0.0.tgz#e9feae014eab580f858f8a0288f38997a7bebe97" @@ -2768,6 +2783,14 @@ css-tree@^1.1.2, css-tree@^1.1.3: mdn-data "2.0.14" source-map "^0.6.1" +css-tree@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-2.3.1.tgz#10264ce1e5442e8572fc82fbe490644ff54b5c20" + integrity sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw== + dependencies: + mdn-data "2.0.30" + source-map-js "^1.0.1" + css-what@^6.0.1, css-what@^6.1.0: version "6.1.0" resolved "https://registry.yarnpkg.com/css-what/-/css-what-6.1.0.tgz#fb5effcf76f1ddea2c81bdfaa4de44e79bac70f4" @@ -2783,22 +2806,22 @@ cssfilter@0.0.10: resolved "https://registry.yarnpkg.com/cssfilter/-/cssfilter-0.0.10.tgz#c6d2672632a2e5c83e013e6864a42ce8defd20ae" integrity sha512-FAaLDaplstoRsDR8XGYH51znUN0UY7nMc6Z9/fvE8EXGwvJE9hu7W2vHwx1+bd6gCYnln9nLbzxFTrcO9YQDZw== -cssnano-preset-default@^5.2.13: - version "5.2.13" - resolved "https://registry.yarnpkg.com/cssnano-preset-default/-/cssnano-preset-default-5.2.13.tgz#e7353b0c57975d1bdd97ac96e68e5c1b8c68e990" - integrity sha512-PX7sQ4Pb+UtOWuz8A1d+Rbi+WimBIxJTRyBdgGp1J75VU0r/HFQeLnMYgHiCAp6AR4rqrc7Y4R+1Rjk3KJz6DQ== +cssnano-preset-default@^5.2.14: + version "5.2.14" + resolved "https://registry.yarnpkg.com/cssnano-preset-default/-/cssnano-preset-default-5.2.14.tgz#309def4f7b7e16d71ab2438052093330d9ab45d8" + integrity sha512-t0SFesj/ZV2OTylqQVOrFgEh5uanxbO6ZAdeCrNsUQ6fVuXwYTxJPNAGvGTxHbD68ldIJNec7PyYZDBrfDQ+6A== dependencies: css-declaration-sorter "^6.3.1" cssnano-utils "^3.1.0" postcss-calc "^8.2.3" - postcss-colormin "^5.3.0" + postcss-colormin "^5.3.1" postcss-convert-values "^5.1.3" postcss-discard-comments "^5.1.2" postcss-discard-duplicates "^5.1.0" postcss-discard-empty "^5.1.1" postcss-discard-overridden "^5.1.0" postcss-merge-longhand "^5.1.7" - postcss-merge-rules "^5.1.3" + postcss-merge-rules "^5.1.4" postcss-minify-font-values "^5.1.0" postcss-minify-gradients "^5.1.1" postcss-minify-params "^5.1.4" @@ -2813,7 +2836,7 @@ cssnano-preset-default@^5.2.13: postcss-normalize-url "^5.1.0" postcss-normalize-whitespace "^5.1.1" postcss-ordered-values "^5.1.3" - postcss-reduce-initial "^5.1.1" + postcss-reduce-initial "^5.1.2" postcss-reduce-transforms "^5.1.0" postcss-svgo "^5.1.0" postcss-unique-selectors "^5.1.1" @@ -2823,12 +2846,12 @@ cssnano-utils@^3.1.0: resolved "https://registry.yarnpkg.com/cssnano-utils/-/cssnano-utils-3.1.0.tgz#95684d08c91511edfc70d2636338ca37ef3a6861" integrity sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA== -cssnano@^5.0.1, cssnano@^5.1.14: - version "5.1.14" - resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-5.1.14.tgz#07b0af6da73641276fe5a6d45757702ebae2eb05" - integrity sha512-Oou7ihiTocbKqi0J1bB+TRJIQX5RMR3JghA8hcWSw9mjBLQ5Y3RWqEDoYG3sRNlAbCIXpqMoZGbq5KDR3vdzgw== +cssnano@^5.0.1, cssnano@^5.1.15: + version "5.1.15" + resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-5.1.15.tgz#ded66b5480d5127fcb44dac12ea5a983755136bf" + integrity sha512-j+BKgDcLDQA+eDifLx0EO4XSA56b7uut3BQFH+wbSaSTuGLuiyTa/wbRYthUXX8LC9mLg+WWKe8h+qJuwTAbHw== dependencies: - cssnano-preset-default "^5.2.13" + cssnano-preset-default "^5.2.14" lilconfig "^2.0.3" yaml "^1.10.2" @@ -2932,9 +2955,9 @@ deep-is@^0.1.3, deep-is@~0.1.3: integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== deepmerge@^4.2.2: - version "4.2.2" - resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955" - integrity sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg== + version "4.3.0" + resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.3.0.tgz#65491893ec47756d44719ae520e0e2609233b59b" + integrity sha512-z2wJZXrmeHdvYJp/Ux55wIjqo81G5Bp4c+oELTW+7ar6SogWHajt5a9gO3s3IDaGSAXjDk0vlQKN3rms8ab3og== define-lazy-prop@^2.0.0: version "2.0.0" @@ -2942,9 +2965,9 @@ define-lazy-prop@^2.0.0: integrity sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og== define-properties@^1.1.3, define-properties@^1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.4.tgz#0b14d7bd7fbeb2f3572c3a7eda80ea5d57fb05b1" - integrity sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA== + version "1.2.0" + resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.2.0.tgz#52988570670c9eacedd8064f4a990f2405849bd5" + integrity sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA== dependencies: has-property-descriptors "^1.0.0" object-keys "^1.1.1" @@ -2984,10 +3007,10 @@ detect-newline@^3.0.0: resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651" integrity sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA== -devtools-protocol@0.0.1068969: - version "0.0.1068969" - resolved "https://registry.yarnpkg.com/devtools-protocol/-/devtools-protocol-0.0.1068969.tgz#8b9a4bc48aed1453bed08d62b07481f9abf4d6d8" - integrity sha512-ATFTrPbY1dKYhPPvpjtwWKSK2mIwGmRwX54UASn9THEuIZCe2n9k3vVuMmt6jWeL+e5QaaguEv/pMyR+JQB7VQ== +devtools-protocol@0.0.1094867: + version "0.0.1094867" + resolved "https://registry.yarnpkg.com/devtools-protocol/-/devtools-protocol-0.0.1094867.tgz#2ab93908e9376bd85d4e0604aa2651258f13e374" + integrity sha512-pmMDBKiRVjh0uKK6CT1WqZmM3hBVSgD+N2MrgyV1uNizAZMw4tx6i/RTc+/uCsKSCmg0xXx7arCP/OFcIwTsiQ== dezalgo@^1.0.4: version "1.0.4" @@ -2997,10 +3020,10 @@ dezalgo@^1.0.4: asap "^2.0.0" wrappy "1" -diff-sequences@^29.3.1: - version "29.3.1" - resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-29.3.1.tgz#104b5b95fe725932421a9c6e5b4bef84c3f2249e" - integrity sha512-hlM3QR272NXCi4pq+N4Kok4kOp6EsgOM3ZSpJI7Da3UAs+Ttsi8MRmB6trM/lhyzUxGfOgnpkHtgqm5Q/CTcfQ== +diff-sequences@^29.4.3: + version "29.4.3" + resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-29.4.3.tgz#9314bc1fabe09267ffeca9cbafc457d8499a13f2" + integrity sha512-ofrBgwpPhCD85kMKtE9RYFFq6OC1A89oW2vvgWZNCwxrUpRUILopY7lsYyMDSjc8g6U6aiO0Qubg6r4Wgt5ZnA== dir-glob@^3.0.1: version "3.0.1" @@ -3100,10 +3123,10 @@ ee-first@1.1.1: resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== -electron-to-chromium@^1.4.251: - version "1.4.284" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.284.tgz#61046d1e4cab3a25238f6bf7413795270f125592" - integrity sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA== +electron-to-chromium@^1.4.284: + version "1.4.302" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.302.tgz#5770646ffe7051677b489226144aad9386d420f2" + integrity sha512-Uk7C+7aPBryUR1Fwvk9VmipBcN9fVsqBO57jV2ZjTm+IZ6BMNqu7EDVEg2HxCNufk6QcWlFsBkhQyQroB2VWKw== emittery@^0.13.1: version "0.13.1" @@ -3163,12 +3186,13 @@ error-ex@^1.3.1: is-arrayish "^0.2.1" es-abstract@^1.19.0, es-abstract@^1.20.4: - version "1.21.0" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.21.0.tgz#dd1b69ea5bfc3c27199c9753efd4de015102c252" - integrity sha512-GUGtW7eXQay0c+PRq0sGIKSdaBorfVqsCMhGHo4elP7YVqZu9nCZS4UkK4gv71gOWNMra/PaSKD3ao1oWExO0g== + version "1.21.1" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.21.1.tgz#e6105a099967c08377830a0c9cb589d570dd86c6" + integrity sha512-QudMsPOz86xYz/1dG1OuGBKOELjCh99IIWHLzy5znUB6j8xG2yMA7bfTV86VSqKF+Y/H08vQPR+9jyXpuC6hfg== dependencies: + available-typed-arrays "^1.0.5" call-bind "^1.0.2" - es-set-tostringtag "^2.0.0" + es-set-tostringtag "^2.0.1" es-to-primitive "^1.2.1" function-bind "^1.1.1" function.prototype.name "^1.1.5" @@ -3181,7 +3205,7 @@ es-abstract@^1.19.0, es-abstract@^1.20.4: has-proto "^1.0.1" has-symbols "^1.0.3" internal-slot "^1.0.4" - is-array-buffer "^3.0.0" + is-array-buffer "^3.0.1" is-callable "^1.2.7" is-negative-zero "^2.0.2" is-regex "^1.1.4" @@ -3200,7 +3224,7 @@ es-abstract@^1.19.0, es-abstract@^1.20.4: unbox-primitive "^1.0.2" which-typed-array "^1.1.9" -es-set-tostringtag@^2.0.0: +es-set-tostringtag@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz#338d502f6f674301d710b80c8592de8a15f09cd8" integrity sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg== @@ -3267,25 +3291,26 @@ eslint-config-prettier@^8.6.0: resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-8.6.0.tgz#dec1d29ab728f4fa63061774e1672ac4e363d207" integrity sha512-bAF0eLpLVqP5oEVUFKpMA+NnRFICwn9X8B5jrR9FcqnYBuPbqWEjTEspPWMj5ye6czoSLDweCzSo3Ko7gGrZaA== -eslint-import-resolver-exports@^1.0.0-beta.3: - version "1.0.0-beta.3" - resolved "https://registry.yarnpkg.com/eslint-import-resolver-exports/-/eslint-import-resolver-exports-1.0.0-beta.3.tgz#1c21ba97c788c491515aaafbd97343ca103e1bb4" - integrity sha512-8F0zy/1pudF4m9Uuq8ctX2ElXzPLYjzcZgvtGKrz70dHMRmtHDa6X7lPdJKw/ia1blM+SZ5os3+1sBCnX95nYw== +eslint-import-resolver-exports@^1.0.0-beta.4: + version "1.0.0-beta.4" + resolved "https://registry.yarnpkg.com/eslint-import-resolver-exports/-/eslint-import-resolver-exports-1.0.0-beta.4.tgz#920c2fab56790bc99a88db4d996631930f084ae2" + integrity sha512-aN/vmABEJI9gXk881f2wmflfvdVskGvguFXtcSx2ym35ETWPNj/tp+9KNCTe/4AbA7LkgN88GD8IKHneYXWxqQ== dependencies: - resolve.exports "^1.1.0" + resolve.exports "^1.1.1" -eslint-import-resolver-node@^0.3.6: - version "0.3.6" - resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.6.tgz#4048b958395da89668252001dbd9eca6b83bacbd" - integrity sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw== +eslint-import-resolver-node@^0.3.7: + version "0.3.7" + resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.7.tgz#83b375187d412324a1963d84fa664377a23eb4d7" + integrity sha512-gozW2blMLJCeFpBwugLTGyvVjNoeo1knonXAcatC6bjPBZitotxdWf7Gimr25N4c0AAOo4eOUfaG82IJPDpqCA== dependencies: debug "^3.2.7" - resolve "^1.20.0" + is-core-module "^2.11.0" + resolve "^1.22.1" -eslint-import-resolver-typescript@^3.5.2: - version "3.5.2" - resolved "https://registry.yarnpkg.com/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-3.5.2.tgz#9431acded7d898fd94591a08ea9eec3514c7de91" - integrity sha512-zX4ebnnyXiykjhcBvKIf5TNvt8K7yX6bllTRZ14MiurKPjDpCAZujlszTdB8pcNXhZcOf+god4s9SjQa5GnytQ== +eslint-import-resolver-typescript@^3.5.3: + version "3.5.3" + resolved "https://registry.yarnpkg.com/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-3.5.3.tgz#db5ed9e906651b7a59dd84870aaef0e78c663a05" + integrity sha512-njRcKYBc3isE42LaTcJNVANR3R99H9bAxBDMNDr2W7yq5gYPxbU3MkdhsQukxZ/Xg9C2vcyLlDsbKfRDg0QvCQ== dependencies: debug "^4.3.4" enhanced-resolve "^5.10.0" @@ -3295,30 +3320,32 @@ eslint-import-resolver-typescript@^3.5.2: is-glob "^4.0.3" synckit "^0.8.4" -eslint-module-utils@^2.7.3: +eslint-module-utils@^2.7.4: version "2.7.4" resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.7.4.tgz#4f3e41116aaf13a20792261e61d3a2e7e0583974" integrity sha512-j4GT+rqzCoRKHwURX7pddtIPGySnX9Si/cgMI5ztrcqOPtk5dDEeZ34CQVPphnqkJytlc97Vuk05Um2mJ3gEQA== dependencies: debug "^3.2.7" -eslint-plugin-import@^2.26.0: - version "2.26.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.26.0.tgz#f812dc47be4f2b72b478a021605a59fc6fe8b88b" - integrity sha512-hYfi3FXaM8WPLf4S1cikh/r4IxnO6zrhZbEGz2b660EJRbuxgpDS5gkCuYgGWg2xxh2rBuIr4Pvhve/7c31koA== +eslint-plugin-import@^2.27.5: + version "2.27.5" + resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.27.5.tgz#876a6d03f52608a3e5bb439c2550588e51dd6c65" + integrity sha512-LmEt3GVofgiGuiE+ORpnvP+kAm3h6MLZJ4Q5HCyHADofsb4VzXFsRiWj3c0OFiV+3DWFh0qg3v9gcPlfc3zRow== dependencies: - array-includes "^3.1.4" - array.prototype.flat "^1.2.5" - debug "^2.6.9" + array-includes "^3.1.6" + array.prototype.flat "^1.3.1" + array.prototype.flatmap "^1.3.1" + debug "^3.2.7" doctrine "^2.1.0" - eslint-import-resolver-node "^0.3.6" - eslint-module-utils "^2.7.3" + eslint-import-resolver-node "^0.3.7" + eslint-module-utils "^2.7.4" has "^1.0.3" - is-core-module "^2.8.1" + is-core-module "^2.11.0" is-glob "^4.0.3" minimatch "^3.1.2" - object.values "^1.1.5" - resolve "^1.22.0" + object.values "^1.1.6" + resolve "^1.22.1" + semver "^6.3.0" tsconfig-paths "^3.14.1" eslint-plugin-jest@^27.2.1: @@ -3361,10 +3388,10 @@ eslint-visitor-keys@^3.3.0: resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz#f6480fa6b1f30efe2d1968aa8ac745b862469826" integrity sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA== -eslint@^8.31.0: - version "8.31.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.31.0.tgz#75028e77cbcff102a9feae1d718135931532d524" - integrity sha512-0tQQEVdmPZ1UtUKXjX7EMm9BlgJ08G90IhWh0PKDCb3ZLsgAOHI8fYSIzYVZej92zsgq+ft0FGsxhJ3xo2tbuA== +eslint@^8.34.0: + version "8.34.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.34.0.tgz#fe0ab0ef478104c1f9ebc5537e303d25a8fb22d6" + integrity sha512-1Z8iFsucw+7kSqXNZVslXS8Ioa4u2KM7GPwuKtkTFAqZ/cHMcEaR+1+Br0wLlot49cNxIiZk5wp8EAbPcYZxTg== dependencies: "@eslint/eslintrc" "^1.4.1" "@humanwhocodes/config-array" "^0.11.8" @@ -3426,9 +3453,9 @@ esprima@^4.0.0, esprima@^4.0.1: integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== esquery@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.4.0.tgz#2148ffc38b82e8c7057dfed48425b3e61f0f24a5" - integrity sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w== + version "1.4.2" + resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.4.2.tgz#c6d3fee05dd665808e2ad870631f221f5617b1d1" + integrity sha512-JVSoLdTlTDkmjFmab7H/9SL9qGSyjElT3myyKp7krqjVFQCDLmj1QFaCLRFBszBKI0XVZaiiXvuPIX3ZwHe1Ng== dependencies: estraverse "^5.1.0" @@ -3509,16 +3536,16 @@ expand-template@^2.0.3: resolved "https://registry.yarnpkg.com/expand-template/-/expand-template-2.0.3.tgz#6e14b3fcee0f3a6340ecb57d2e8918692052a47c" integrity sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg== -expect@^29.0.0, expect@^29.3.1: - version "29.3.1" - resolved "https://registry.yarnpkg.com/expect/-/expect-29.3.1.tgz#92877aad3f7deefc2e3f6430dd195b92295554a6" - integrity sha512-gGb1yTgU30Q0O/tQq+z30KBWv24ApkMgFUpvKBkyLUBL68Wv8dHdJxTBZFl/iT8K/bqDHvUYRH6IIN3rToopPA== +expect@^29.0.0, expect@^29.4.3: + version "29.4.3" + resolved "https://registry.yarnpkg.com/expect/-/expect-29.4.3.tgz#5e47757316df744fe3b8926c3ae8a3ebdafff7fe" + integrity sha512-uC05+Q7eXECFpgDrHdXA4k2rpMyStAYPItEDLyQDo5Ta7fVkJnNA/4zh/OIVkVVNZ1oOK1PipQoyNjuZ6sz6Dg== dependencies: - "@jest/expect-utils" "^29.3.1" - jest-get-type "^29.2.0" - jest-matcher-utils "^29.3.1" - jest-message-util "^29.3.1" - jest-util "^29.3.1" + "@jest/expect-utils" "^29.4.3" + jest-get-type "^29.4.3" + jest-matcher-utils "^29.4.3" + jest-message-util "^29.4.3" + jest-util "^29.4.3" express@^4.18.2: version "4.18.2" @@ -3715,10 +3742,10 @@ form-data@^4.0.0: combined-stream "^1.0.8" mime-types "^2.1.12" -formidable@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/formidable/-/formidable-2.1.1.tgz#81269cbea1a613240049f5f61a9d97731517414f" - integrity sha512-0EcS9wCFEzLvfiks7omJ+SiYJAiD+TzK4Pcw1UlUoGnhUxDcMKjt0P7x8wEb0u6OHu8Nb98WG3nxtlF5C7bvUQ== +formidable@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/formidable/-/formidable-2.1.2.tgz#fa973a2bec150e4ce7cac15589d7a25fc30ebd89" + integrity sha512-CM3GuJ57US06mlpQ47YcunuUZ9jpm8Vx+P2CGt2j7HpgkKZO/DJYQ0Bobim8G6PFQmK5lOqOOdUXboU+h73A4g== dependencies: dezalgo "^1.0.4" hexoid "^1.0.0" @@ -3831,10 +3858,10 @@ get-caller-file@^2.0.5: resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== -get-intrinsic@^1.0.2, get-intrinsic@^1.1.1, get-intrinsic@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.3.tgz#063c84329ad93e83893c7f4f243ef63ffa351385" - integrity sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A== +get-intrinsic@^1.0.2, get-intrinsic@^1.1.1, get-intrinsic@^1.1.3, get-intrinsic@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.0.tgz#7ad1dc0535f3a2904bba075772763e5051f6d05f" + integrity sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q== dependencies: function-bind "^1.1.1" has "^1.0.3" @@ -3871,9 +3898,9 @@ get-symbol-description@^1.0.0: get-intrinsic "^1.1.1" get-tsconfig@^4.2.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/get-tsconfig/-/get-tsconfig-4.3.0.tgz#4c26fae115d1050e836aea65d6fe56b507ee249b" - integrity sha512-YCcF28IqSay3fqpIu5y3Krg/utCBHBeoflkZyHj/QcqI2nrLPC3ZegS9CmIo+hJb8K7aiGsuUl7PwWVjNG2HQQ== + version "4.4.0" + resolved "https://registry.yarnpkg.com/get-tsconfig/-/get-tsconfig-4.4.0.tgz#64eee64596668a81b8fce18403f94f245ee0d4e5" + integrity sha512-0Gdjo/9+FzsYhXCEFueo2aY1z1tpXrxWZzP7k8ul9qt1U5o8rYJwTJYmaeHdrVosYIVYkOy2iwCJ9FdpocJhPQ== github-from-package@0.0.0: version "0.0.0" @@ -3907,9 +3934,9 @@ glob@^7.1.3, glob@^7.1.4, glob@~7.2.0: path-is-absolute "^1.0.0" glob@^8.0.3: - version "8.0.3" - resolved "https://registry.yarnpkg.com/glob/-/glob-8.0.3.tgz#415c6eb2deed9e502c68fa44a272e6da6eeca42e" - integrity sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ== + version "8.1.0" + resolved "https://registry.yarnpkg.com/glob/-/glob-8.1.0.tgz#d388f656593ef708ee3e34640fdfb99a9fd1c33e" + integrity sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ== dependencies: fs.realpath "^1.0.0" inflight "^1.0.4" @@ -3939,9 +3966,9 @@ globals@^11.1.0: integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== globals@^13.19.0: - version "13.19.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-13.19.0.tgz#7a42de8e6ad4f7242fbcca27ea5b23aca367b5c8" - integrity sha512-dkQ957uSRWHw7CFXLUtUHQI3g3aWApYhfNR2O6jn/907riyTYKVBmxYVROkBcY614FSSeSJh7Xm7SrUWCxvJMQ== + version "13.20.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-13.20.0.tgz#ea276a1e508ffd4f1612888f9d1bad1e2717bf82" + integrity sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ== dependencies: type-fest "^0.20.2" @@ -4196,7 +4223,7 @@ ieee754@^1.1.13, ieee754@^1.2.1: resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== -ignore@^5.2.0, ignore@^5.2.1: +ignore@^5.2.0, ignore@^5.2.4: version "5.2.4" resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.4.tgz#a291c0c6178ff1b960befe47fcdec301674a6324" integrity sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ== @@ -4214,9 +4241,9 @@ immediate@~3.0.5: integrity sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ== immutable@^4.0.0: - version "4.2.2" - resolved "https://registry.yarnpkg.com/immutable/-/immutable-4.2.2.tgz#2da9ff4384a4330c36d4d1bc88e90f9e0b0ccd16" - integrity sha512-fTMKDwtbvO5tldky9QZ2fMX7slR0mYpY5nbnFWYp0fOzDhHqhgIw9KoYgxLWsoNTS9ZHGauHj18DTyEw6BK3Og== + version "4.2.4" + resolved "https://registry.yarnpkg.com/immutable/-/immutable-4.2.4.tgz#83260d50889526b4b531a5e293709a77f7c55a2a" + integrity sha512-WDxL3Hheb1JkRN3sQkyujNlL/xRjAo3rJtaU5xeufUauG66JdMr32bLj4gF+vWl84DIA3Zxw7tiAjneYzRRw+w== import-cwd@^3.0.0: version "3.0.0" @@ -4292,11 +4319,11 @@ ini@^1.3.5, ini@~1.3.0: integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== internal-slot@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.4.tgz#8551e7baf74a7a6ba5f749cfb16aa60722f0d6f3" - integrity sha512-tA8URYccNzMo94s5MQZgH8NB/XTa6HsOo0MLfXTKKEnHVVdegzaQoFZ7Jp44bdvLvY2waT5dc+j5ICEswhi7UQ== + version "1.0.5" + resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.5.tgz#f2a2ee21f668f8627a4667f309dc0f4fb6674986" + integrity sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ== dependencies: - get-intrinsic "^1.1.3" + get-intrinsic "^1.2.0" has "^1.0.3" side-channel "^1.0.4" @@ -4318,7 +4345,7 @@ ipaddr.js@1.9.1: resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== -is-array-buffer@^3.0.0: +is-array-buffer@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/is-array-buffer/-/is-array-buffer-3.0.1.tgz#deb1db4fcae48308d54ef2442706c0393997052a" integrity sha512-ASfLknmY8Xa2XtB4wmbz13Wu202baeA18cJBCeCy0wXUHZF0IPyVEXqKEcd+t2fNSLLL1vC6k7lxZEojNbISXQ== @@ -4360,9 +4387,9 @@ is-boolean-object@^1.1.0: has-tostringtag "^1.0.0" is-builtin-module@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-3.2.0.tgz#bb0310dfe881f144ca83f30100ceb10cf58835e0" - integrity sha512-phDA4oSGt7vl1n5tJvTWooWWAsXLY+2xCnxNqvKhGEzujg+A43wPlPOyDg3C8XQHN+6k/JTQWJ/j0dQh/qr+Hw== + version "3.2.1" + resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-3.2.1.tgz#f03271717d8654cfcaf07ab0463faa3571581169" + integrity sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A== dependencies: builtin-modules "^3.3.0" @@ -4378,7 +4405,7 @@ is-core-module@2.9.0: dependencies: has "^1.0.3" -is-core-module@^2.10.0, is-core-module@^2.5.0, is-core-module@^2.8.1, is-core-module@^2.9.0: +is-core-module@^2.10.0, is-core-module@^2.11.0, is-core-module@^2.5.0, is-core-module@^2.9.0: version "2.11.0" resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.11.0.tgz#ad4cb3e3863e814523c96f3f58d26cc570ff0144" integrity sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw== @@ -4604,158 +4631,158 @@ istanbul-reports@^3.1.3: html-escaper "^2.0.0" istanbul-lib-report "^3.0.0" -jest-changed-files@^29.2.0: - version "29.2.0" - resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-29.2.0.tgz#b6598daa9803ea6a4dce7968e20ab380ddbee289" - integrity sha512-qPVmLLyBmvF5HJrY7krDisx6Voi8DmlV3GZYX0aFNbaQsZeoz1hfxcCMbqDGuQCxU1dJy9eYc2xscE8QrCCYaA== +jest-changed-files@^29.4.3: + version "29.4.3" + resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-29.4.3.tgz#7961fe32536b9b6d5c28dfa0abcfab31abcf50a7" + integrity sha512-Vn5cLuWuwmi2GNNbokPOEcvrXGSGrqVnPEZV7rC6P7ck07Dyw9RFnvWglnupSh+hGys0ajGtw/bc2ZgweljQoQ== dependencies: execa "^5.0.0" p-limit "^3.1.0" -jest-circus@^29.3.1: - version "29.3.1" - resolved "https://registry.yarnpkg.com/jest-circus/-/jest-circus-29.3.1.tgz#177d07c5c0beae8ef2937a67de68f1e17bbf1b4a" - integrity sha512-wpr26sEvwb3qQQbdlmei+gzp6yoSSoSL6GsLPxnuayZSMrSd5Ka7IjAvatpIernBvT2+Ic6RLTg+jSebScmasg== +jest-circus@^29.4.3: + version "29.4.3" + resolved "https://registry.yarnpkg.com/jest-circus/-/jest-circus-29.4.3.tgz#fff7be1cf5f06224dd36a857d52a9efeb005ba04" + integrity sha512-Vw/bVvcexmdJ7MLmgdT3ZjkJ3LKu8IlpefYokxiqoZy6OCQ2VAm6Vk3t/qHiAGUXbdbJKJWnc8gH3ypTbB/OBw== dependencies: - "@jest/environment" "^29.3.1" - "@jest/expect" "^29.3.1" - "@jest/test-result" "^29.3.1" - "@jest/types" "^29.3.1" + "@jest/environment" "^29.4.3" + "@jest/expect" "^29.4.3" + "@jest/test-result" "^29.4.3" + "@jest/types" "^29.4.3" "@types/node" "*" chalk "^4.0.0" co "^4.6.0" dedent "^0.7.0" is-generator-fn "^2.0.0" - jest-each "^29.3.1" - jest-matcher-utils "^29.3.1" - jest-message-util "^29.3.1" - jest-runtime "^29.3.1" - jest-snapshot "^29.3.1" - jest-util "^29.3.1" + jest-each "^29.4.3" + jest-matcher-utils "^29.4.3" + jest-message-util "^29.4.3" + jest-runtime "^29.4.3" + jest-snapshot "^29.4.3" + jest-util "^29.4.3" p-limit "^3.1.0" - pretty-format "^29.3.1" + pretty-format "^29.4.3" slash "^3.0.0" stack-utils "^2.0.3" -jest-cli@^29.3.1: - version "29.3.1" - resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-29.3.1.tgz#e89dff427db3b1df50cea9a393ebd8640790416d" - integrity sha512-TO/ewvwyvPOiBBuWZ0gm04z3WWP8TIK8acgPzE4IxgsLKQgb377NYGrQLc3Wl/7ndWzIH2CDNNsUjGxwLL43VQ== +jest-cli@^29.4.3: + version "29.4.3" + resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-29.4.3.tgz#fe31fdd0c90c765f392b8b7c97e4845071cd2163" + integrity sha512-PiiAPuFNfWWolCE6t3ZrDXQc6OsAuM3/tVW0u27UWc1KE+n/HSn5dSE6B2juqN7WP+PP0jAcnKtGmI4u8GMYCg== dependencies: - "@jest/core" "^29.3.1" - "@jest/test-result" "^29.3.1" - "@jest/types" "^29.3.1" + "@jest/core" "^29.4.3" + "@jest/test-result" "^29.4.3" + "@jest/types" "^29.4.3" chalk "^4.0.0" exit "^0.1.2" graceful-fs "^4.2.9" import-local "^3.0.2" - jest-config "^29.3.1" - jest-util "^29.3.1" - jest-validate "^29.3.1" + jest-config "^29.4.3" + jest-util "^29.4.3" + jest-validate "^29.4.3" prompts "^2.0.1" yargs "^17.3.1" -jest-config@^29.3.1: - version "29.3.1" - resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-29.3.1.tgz#0bc3dcb0959ff8662957f1259947aedaefb7f3c6" - integrity sha512-y0tFHdj2WnTEhxmGUK1T7fgLen7YK4RtfvpLFBXfQkh2eMJAQq24Vx9472lvn5wg0MAO6B+iPfJfzdR9hJYalg== +jest-config@^29.4.3: + version "29.4.3" + resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-29.4.3.tgz#fca9cdfe6298ae6d04beef1624064d455347c978" + integrity sha512-eCIpqhGnIjdUCXGtLhz4gdDoxKSWXKjzNcc5r+0S1GKOp2fwOipx5mRcwa9GB/ArsxJ1jlj2lmlD9bZAsBxaWQ== dependencies: "@babel/core" "^7.11.6" - "@jest/test-sequencer" "^29.3.1" - "@jest/types" "^29.3.1" - babel-jest "^29.3.1" + "@jest/test-sequencer" "^29.4.3" + "@jest/types" "^29.4.3" + babel-jest "^29.4.3" chalk "^4.0.0" ci-info "^3.2.0" deepmerge "^4.2.2" glob "^7.1.3" graceful-fs "^4.2.9" - jest-circus "^29.3.1" - jest-environment-node "^29.3.1" - jest-get-type "^29.2.0" - jest-regex-util "^29.2.0" - jest-resolve "^29.3.1" - jest-runner "^29.3.1" - jest-util "^29.3.1" - jest-validate "^29.3.1" + jest-circus "^29.4.3" + jest-environment-node "^29.4.3" + jest-get-type "^29.4.3" + jest-regex-util "^29.4.3" + jest-resolve "^29.4.3" + jest-runner "^29.4.3" + jest-util "^29.4.3" + jest-validate "^29.4.3" micromatch "^4.0.4" parse-json "^5.2.0" - pretty-format "^29.3.1" + pretty-format "^29.4.3" slash "^3.0.0" strip-json-comments "^3.1.1" -jest-diff@^29.3.1: - version "29.3.1" - resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-29.3.1.tgz#d8215b72fed8f1e647aed2cae6c752a89e757527" - integrity sha512-vU8vyiO7568tmin2lA3r2DP8oRvzhvRcD4DjpXc6uGveQodyk7CKLhQlCSiwgx3g0pFaE88/KLZ0yaTWMc4Uiw== +jest-diff@^29.4.3: + version "29.4.3" + resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-29.4.3.tgz#42f4eb34d0bf8c0fb08b0501069b87e8e84df347" + integrity sha512-YB+ocenx7FZ3T5O9lMVMeLYV4265socJKtkwgk/6YUz/VsEzYDkiMuMhWzZmxm3wDRQvayJu/PjkjjSkjoHsCA== dependencies: chalk "^4.0.0" - diff-sequences "^29.3.1" - jest-get-type "^29.2.0" - pretty-format "^29.3.1" + diff-sequences "^29.4.3" + jest-get-type "^29.4.3" + pretty-format "^29.4.3" -jest-docblock@^29.2.0: - version "29.2.0" - resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-29.2.0.tgz#307203e20b637d97cee04809efc1d43afc641e82" - integrity sha512-bkxUsxTgWQGbXV5IENmfiIuqZhJcyvF7tU4zJ/7ioTutdz4ToB5Yx6JOFBpgI+TphRY4lhOyCWGNH/QFQh5T6A== +jest-docblock@^29.4.3: + version "29.4.3" + resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-29.4.3.tgz#90505aa89514a1c7dceeac1123df79e414636ea8" + integrity sha512-fzdTftThczeSD9nZ3fzA/4KkHtnmllawWrXO69vtI+L9WjEIuXWs4AmyME7lN5hU7dB0sHhuPfcKofRsUb/2Fg== dependencies: detect-newline "^3.0.0" -jest-each@^29.3.1: - version "29.3.1" - resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-29.3.1.tgz#bc375c8734f1bb96625d83d1ca03ef508379e132" - integrity sha512-qrZH7PmFB9rEzCSl00BWjZYuS1BSOH8lLuC0azQE9lQrAx3PWGKHTDudQiOSwIy5dGAJh7KA0ScYlCP7JxvFYA== +jest-each@^29.4.3: + version "29.4.3" + resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-29.4.3.tgz#a434c199a2f6151c5e3dc80b2d54586bdaa72819" + integrity sha512-1ElHNAnKcbJb/b+L+7j0/w7bDvljw4gTv1wL9fYOczeJrbTbkMGQ5iQPFJ3eFQH19VPTx1IyfePdqSpePKss7Q== dependencies: - "@jest/types" "^29.3.1" + "@jest/types" "^29.4.3" chalk "^4.0.0" - jest-get-type "^29.2.0" - jest-util "^29.3.1" - pretty-format "^29.3.1" - -jest-environment-jsdom@^29.3.1: - version "29.3.1" - resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-29.3.1.tgz#14ca63c3e0ef5c63c5bcb46033e50bc649e3b639" - integrity sha512-G46nKgiez2Gy4zvYNhayfMEAFlVHhWfncqvqS6yCd0i+a4NsSUD2WtrKSaYQrYiLQaupHXxCRi8xxVL2M9PbhA== - dependencies: - "@jest/environment" "^29.3.1" - "@jest/fake-timers" "^29.3.1" - "@jest/types" "^29.3.1" + jest-get-type "^29.4.3" + jest-util "^29.4.3" + pretty-format "^29.4.3" + +jest-environment-jsdom@^29.4.3: + version "29.4.3" + resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-29.4.3.tgz#bd8ed3808e6d3f616403fbaf8354f77019613d90" + integrity sha512-rFjf8JXrw3OjUzzmSE5l0XjMj0/MSVEUMCSXBGPDkfwb1T03HZI7iJSL0cGctZApPSyJxbjyKDVxkZuyhHkuTw== + dependencies: + "@jest/environment" "^29.4.3" + "@jest/fake-timers" "^29.4.3" + "@jest/types" "^29.4.3" "@types/jsdom" "^20.0.0" "@types/node" "*" - jest-mock "^29.3.1" - jest-util "^29.3.1" + jest-mock "^29.4.3" + jest-util "^29.4.3" jsdom "^20.0.0" -jest-environment-node@^29.3.1: - version "29.3.1" - resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-29.3.1.tgz#5023b32472b3fba91db5c799a0d5624ad4803e74" - integrity sha512-xm2THL18Xf5sIHoU7OThBPtuH6Lerd+Y1NLYiZJlkE3hbE+7N7r8uvHIl/FkZ5ymKXJe/11SQuf3fv4v6rUMag== +jest-environment-node@^29.4.3: + version "29.4.3" + resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-29.4.3.tgz#579c4132af478befc1889ddc43c2413a9cdbe014" + integrity sha512-gAiEnSKF104fsGDXNkwk49jD/0N0Bqu2K9+aMQXA6avzsA9H3Fiv1PW2D+gzbOSR705bWd2wJZRFEFpV0tXISg== dependencies: - "@jest/environment" "^29.3.1" - "@jest/fake-timers" "^29.3.1" - "@jest/types" "^29.3.1" + "@jest/environment" "^29.4.3" + "@jest/fake-timers" "^29.4.3" + "@jest/types" "^29.4.3" "@types/node" "*" - jest-mock "^29.3.1" - jest-util "^29.3.1" + jest-mock "^29.4.3" + jest-util "^29.4.3" -jest-get-type@^29.2.0: - version "29.2.0" - resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-29.2.0.tgz#726646f927ef61d583a3b3adb1ab13f3a5036408" - integrity sha512-uXNJlg8hKFEnDgFsrCjznB+sTxdkuqiCL6zMgA75qEbAJjJYTs9XPrvDctrEig2GDow22T/LvHgO57iJhXB/UA== +jest-get-type@^29.4.3: + version "29.4.3" + resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-29.4.3.tgz#1ab7a5207c995161100b5187159ca82dd48b3dd5" + integrity sha512-J5Xez4nRRMjk8emnTpWrlkyb9pfRQQanDrvWHhsR1+VUfbwxi30eVcZFlcdGInRibU4G5LwHXpI7IRHU0CY+gg== -jest-haste-map@^29.3.1: - version "29.3.1" - resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-29.3.1.tgz#af83b4347f1dae5ee8c2fb57368dc0bb3e5af843" - integrity sha512-/FFtvoG1xjbbPXQLFef+WSU4yrc0fc0Dds6aRPBojUid7qlPqZvxdUBA03HW0fnVHXVCnCdkuoghYItKNzc/0A== +jest-haste-map@^29.4.3: + version "29.4.3" + resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-29.4.3.tgz#085a44283269e7ace0645c63a57af0d2af6942e2" + integrity sha512-eZIgAS8tvm5IZMtKlR8Y+feEOMfo2pSQkmNbufdbMzMSn9nitgGxF1waM/+LbryO3OkMcKS98SUb+j/cQxp/vQ== dependencies: - "@jest/types" "^29.3.1" + "@jest/types" "^29.4.3" "@types/graceful-fs" "^4.1.3" "@types/node" "*" anymatch "^3.0.3" fb-watchman "^2.0.0" graceful-fs "^4.2.9" - jest-regex-util "^29.2.0" - jest-util "^29.3.1" - jest-worker "^29.3.1" + jest-regex-util "^29.4.3" + jest-util "^29.4.3" + jest-worker "^29.4.3" micromatch "^4.0.4" walker "^1.0.8" optionalDependencies: @@ -4771,140 +4798,140 @@ jest-junit@^15.0.0: uuid "^8.3.2" xml "^1.0.1" -jest-leak-detector@^29.3.1: - version "29.3.1" - resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-29.3.1.tgz#95336d020170671db0ee166b75cd8ef647265518" - integrity sha512-3DA/VVXj4zFOPagGkuqHnSQf1GZBmmlagpguxEERO6Pla2g84Q1MaVIB3YMxgUaFIaYag8ZnTyQgiZ35YEqAQA== +jest-leak-detector@^29.4.3: + version "29.4.3" + resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-29.4.3.tgz#2b35191d6b35aa0256e63a9b79b0f949249cf23a" + integrity sha512-9yw4VC1v2NspMMeV3daQ1yXPNxMgCzwq9BocCwYrRgXe4uaEJPAN0ZK37nFBhcy3cUwEVstFecFLaTHpF7NiGA== dependencies: - jest-get-type "^29.2.0" - pretty-format "^29.3.1" + jest-get-type "^29.4.3" + pretty-format "^29.4.3" -jest-matcher-utils@^29.3.1: - version "29.3.1" - resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-29.3.1.tgz#6e7f53512f80e817dfa148672bd2d5d04914a572" - integrity sha512-fkRMZUAScup3txIKfMe3AIZZmPEjWEdsPJFK3AIy5qRohWqQFg1qrmKfYXR9qEkNc7OdAu2N4KPHibEmy4HPeQ== +jest-matcher-utils@^29.4.3: + version "29.4.3" + resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-29.4.3.tgz#ea68ebc0568aebea4c4213b99f169ff786df96a0" + integrity sha512-TTciiXEONycZ03h6R6pYiZlSkvYgT0l8aa49z/DLSGYjex4orMUcafuLXYyyEDWB1RKglq00jzwY00Ei7yFNVg== dependencies: chalk "^4.0.0" - jest-diff "^29.3.1" - jest-get-type "^29.2.0" - pretty-format "^29.3.1" + jest-diff "^29.4.3" + jest-get-type "^29.4.3" + pretty-format "^29.4.3" -jest-message-util@^29.3.1: - version "29.3.1" - resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-29.3.1.tgz#37bc5c468dfe5120712053dd03faf0f053bd6adb" - integrity sha512-lMJTbgNcDm5z+6KDxWtqOFWlGQxD6XaYwBqHR8kmpkP+WWWG90I35kdtQHY67Ay5CSuydkTBbJG+tH9JShFCyA== +jest-message-util@^29.4.3: + version "29.4.3" + resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-29.4.3.tgz#65b5280c0fdc9419503b49d4f48d4999d481cb5b" + integrity sha512-1Y8Zd4ZCN7o/QnWdMmT76If8LuDv23Z1DRovBj/vcSFNlGCJGoO8D1nJDw1AdyAGUk0myDLFGN5RbNeJyCRGCw== dependencies: "@babel/code-frame" "^7.12.13" - "@jest/types" "^29.3.1" + "@jest/types" "^29.4.3" "@types/stack-utils" "^2.0.0" chalk "^4.0.0" graceful-fs "^4.2.9" micromatch "^4.0.4" - pretty-format "^29.3.1" + pretty-format "^29.4.3" slash "^3.0.0" stack-utils "^2.0.3" -jest-mock@^29.3.1: - version "29.3.1" - resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-29.3.1.tgz#60287d92e5010979d01f218c6b215b688e0f313e" - integrity sha512-H8/qFDtDVMFvFP4X8NuOT3XRDzOUTz+FeACjufHzsOIBAxivLqkB1PoLCaJx9iPPQ8dZThHPp/G3WRWyMgA3JA== +jest-mock@^29.4.3: + version "29.4.3" + resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-29.4.3.tgz#23d84a20a74cdfff0510fdbeefb841ed57b0fe7e" + integrity sha512-LjFgMg+xed9BdkPMyIJh+r3KeHt1klXPJYBULXVVAkbTaaKjPX1o1uVCAZADMEp/kOxGTwy/Ot8XbvgItOrHEg== dependencies: - "@jest/types" "^29.3.1" + "@jest/types" "^29.4.3" "@types/node" "*" - jest-util "^29.3.1" + jest-util "^29.4.3" jest-pnp-resolver@^1.2.2: version "1.2.3" resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz#930b1546164d4ad5937d5540e711d4d38d4cad2e" integrity sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w== -jest-regex-util@^29.2.0: - version "29.2.0" - resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-29.2.0.tgz#82ef3b587e8c303357728d0322d48bbfd2971f7b" - integrity sha512-6yXn0kg2JXzH30cr2NlThF+70iuO/3irbaB4mh5WyqNIvLLP+B6sFdluO1/1RJmslyh/f9osnefECflHvTbwVA== +jest-regex-util@^29.4.3: + version "29.4.3" + resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-29.4.3.tgz#a42616141e0cae052cfa32c169945d00c0aa0bb8" + integrity sha512-O4FglZaMmWXbGHSQInfXewIsd1LMn9p3ZXB/6r4FOkyhX2/iP/soMG98jGvk/A3HAN78+5VWcBGO0BJAPRh4kg== -jest-resolve-dependencies@^29.3.1: - version "29.3.1" - resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-29.3.1.tgz#a6a329708a128e68d67c49f38678a4a4a914c3bf" - integrity sha512-Vk0cYq0byRw2WluNmNWGqPeRnZ3p3hHmjJMp2dyyZeYIfiBskwq4rpiuGFR6QGAdbj58WC7HN4hQHjf2mpvrLA== +jest-resolve-dependencies@^29.4.3: + version "29.4.3" + resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-29.4.3.tgz#9ad7f23839a6d88cef91416bda9393a6e9fd1da5" + integrity sha512-uvKMZAQ3nmXLH7O8WAOhS5l0iWyT3WmnJBdmIHiV5tBbdaDZ1wqtNX04FONGoaFvSOSHBJxnwAVnSn1WHdGVaw== dependencies: - jest-regex-util "^29.2.0" - jest-snapshot "^29.3.1" + jest-regex-util "^29.4.3" + jest-snapshot "^29.4.3" -jest-resolve@^29.3.1: - version "29.3.1" - resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-29.3.1.tgz#9a4b6b65387a3141e4a40815535c7f196f1a68a7" - integrity sha512-amXJgH/Ng712w3Uz5gqzFBBjxV8WFLSmNjoreBGMqxgCz5cH7swmBZzgBaCIOsvb0NbpJ0vgaSFdJqMdT+rADw== +jest-resolve@^29.4.3: + version "29.4.3" + resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-29.4.3.tgz#3c5b5c984fa8a763edf9b3639700e1c7900538e2" + integrity sha512-GPokE1tzguRyT7dkxBim4wSx6E45S3bOQ7ZdKEG+Qj0Oac9+6AwJPCk0TZh5Vu0xzeX4afpb+eDmgbmZFFwpOw== dependencies: chalk "^4.0.0" graceful-fs "^4.2.9" - jest-haste-map "^29.3.1" + jest-haste-map "^29.4.3" jest-pnp-resolver "^1.2.2" - jest-util "^29.3.1" - jest-validate "^29.3.1" + jest-util "^29.4.3" + jest-validate "^29.4.3" resolve "^1.20.0" - resolve.exports "^1.1.0" + resolve.exports "^2.0.0" slash "^3.0.0" -jest-runner@^29.3.1: - version "29.3.1" - resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-29.3.1.tgz#a92a879a47dd096fea46bb1517b0a99418ee9e2d" - integrity sha512-oFvcwRNrKMtE6u9+AQPMATxFcTySyKfLhvso7Sdk/rNpbhg4g2GAGCopiInk1OP4q6gz3n6MajW4+fnHWlU3bA== +jest-runner@^29.4.3: + version "29.4.3" + resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-29.4.3.tgz#68dc82c68645eda12bea42b5beece6527d7c1e5e" + integrity sha512-GWPTEiGmtHZv1KKeWlTX9SIFuK19uLXlRQU43ceOQ2hIfA5yPEJC7AMkvFKpdCHx6pNEdOD+2+8zbniEi3v3gA== dependencies: - "@jest/console" "^29.3.1" - "@jest/environment" "^29.3.1" - "@jest/test-result" "^29.3.1" - "@jest/transform" "^29.3.1" - "@jest/types" "^29.3.1" + "@jest/console" "^29.4.3" + "@jest/environment" "^29.4.3" + "@jest/test-result" "^29.4.3" + "@jest/transform" "^29.4.3" + "@jest/types" "^29.4.3" "@types/node" "*" chalk "^4.0.0" emittery "^0.13.1" graceful-fs "^4.2.9" - jest-docblock "^29.2.0" - jest-environment-node "^29.3.1" - jest-haste-map "^29.3.1" - jest-leak-detector "^29.3.1" - jest-message-util "^29.3.1" - jest-resolve "^29.3.1" - jest-runtime "^29.3.1" - jest-util "^29.3.1" - jest-watcher "^29.3.1" - jest-worker "^29.3.1" + jest-docblock "^29.4.3" + jest-environment-node "^29.4.3" + jest-haste-map "^29.4.3" + jest-leak-detector "^29.4.3" + jest-message-util "^29.4.3" + jest-resolve "^29.4.3" + jest-runtime "^29.4.3" + jest-util "^29.4.3" + jest-watcher "^29.4.3" + jest-worker "^29.4.3" p-limit "^3.1.0" source-map-support "0.5.13" -jest-runtime@^29.3.1: - version "29.3.1" - resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-29.3.1.tgz#21efccb1a66911d6d8591276a6182f520b86737a" - integrity sha512-jLzkIxIqXwBEOZx7wx9OO9sxoZmgT2NhmQKzHQm1xwR1kNW/dn0OjxR424VwHHf1SPN6Qwlb5pp1oGCeFTQ62A== - dependencies: - "@jest/environment" "^29.3.1" - "@jest/fake-timers" "^29.3.1" - "@jest/globals" "^29.3.1" - "@jest/source-map" "^29.2.0" - "@jest/test-result" "^29.3.1" - "@jest/transform" "^29.3.1" - "@jest/types" "^29.3.1" +jest-runtime@^29.4.3: + version "29.4.3" + resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-29.4.3.tgz#f25db9874dcf35a3ab27fdaabca426666cc745bf" + integrity sha512-F5bHvxSH+LvLV24vVB3L8K467dt3y3dio6V3W89dUz9nzvTpqd/HcT9zfYKL2aZPvD63vQFgLvaUX/UpUhrP6Q== + dependencies: + "@jest/environment" "^29.4.3" + "@jest/fake-timers" "^29.4.3" + "@jest/globals" "^29.4.3" + "@jest/source-map" "^29.4.3" + "@jest/test-result" "^29.4.3" + "@jest/transform" "^29.4.3" + "@jest/types" "^29.4.3" "@types/node" "*" chalk "^4.0.0" cjs-module-lexer "^1.0.0" collect-v8-coverage "^1.0.0" glob "^7.1.3" graceful-fs "^4.2.9" - jest-haste-map "^29.3.1" - jest-message-util "^29.3.1" - jest-mock "^29.3.1" - jest-regex-util "^29.2.0" - jest-resolve "^29.3.1" - jest-snapshot "^29.3.1" - jest-util "^29.3.1" + jest-haste-map "^29.4.3" + jest-message-util "^29.4.3" + jest-mock "^29.4.3" + jest-regex-util "^29.4.3" + jest-resolve "^29.4.3" + jest-snapshot "^29.4.3" + jest-util "^29.4.3" slash "^3.0.0" strip-bom "^4.0.0" -jest-snapshot@^29.3.1: - version "29.3.1" - resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-29.3.1.tgz#17bcef71a453adc059a18a32ccbd594b8cc4e45e" - integrity sha512-+3JOc+s28upYLI2OJM4PWRGK9AgpsMs/ekNryUV0yMBClT9B1DF2u2qay8YxcQd338PPYSFNb0lsar1B49sLDA== +jest-snapshot@^29.4.3: + version "29.4.3" + resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-29.4.3.tgz#183d309371450d9c4a3de7567ed2151eb0e91145" + integrity sha512-NGlsqL0jLPDW91dz304QTM/SNO99lpcSYYAjNiX0Ou+sSGgkanKBcSjCfp/pqmiiO1nQaOyLp6XQddAzRcx3Xw== dependencies: "@babel/core" "^7.11.6" "@babel/generator" "^7.7.2" @@ -4912,87 +4939,87 @@ jest-snapshot@^29.3.1: "@babel/plugin-syntax-typescript" "^7.7.2" "@babel/traverse" "^7.7.2" "@babel/types" "^7.3.3" - "@jest/expect-utils" "^29.3.1" - "@jest/transform" "^29.3.1" - "@jest/types" "^29.3.1" + "@jest/expect-utils" "^29.4.3" + "@jest/transform" "^29.4.3" + "@jest/types" "^29.4.3" "@types/babel__traverse" "^7.0.6" "@types/prettier" "^2.1.5" babel-preset-current-node-syntax "^1.0.0" chalk "^4.0.0" - expect "^29.3.1" + expect "^29.4.3" graceful-fs "^4.2.9" - jest-diff "^29.3.1" - jest-get-type "^29.2.0" - jest-haste-map "^29.3.1" - jest-matcher-utils "^29.3.1" - jest-message-util "^29.3.1" - jest-util "^29.3.1" + jest-diff "^29.4.3" + jest-get-type "^29.4.3" + jest-haste-map "^29.4.3" + jest-matcher-utils "^29.4.3" + jest-message-util "^29.4.3" + jest-util "^29.4.3" natural-compare "^1.4.0" - pretty-format "^29.3.1" + pretty-format "^29.4.3" semver "^7.3.5" -jest-util@^29.0.0, jest-util@^29.3.1: - version "29.3.1" - resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-29.3.1.tgz#1dda51e378bbcb7e3bc9d8ab651445591ed373e1" - integrity sha512-7YOVZaiX7RJLv76ZfHt4nbNEzzTRiMW/IiOG7ZOKmTXmoGBxUDefgMAxQubu6WPVqP5zSzAdZG0FfLcC7HOIFQ== +jest-util@^29.0.0, jest-util@^29.4.3: + version "29.4.3" + resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-29.4.3.tgz#851a148e23fc2b633c55f6dad2e45d7f4579f496" + integrity sha512-ToSGORAz4SSSoqxDSylWX8JzkOQR7zoBtNRsA7e+1WUX5F8jrOwaNpuh1YfJHJKDHXLHmObv5eOjejUd+/Ws+Q== dependencies: - "@jest/types" "^29.3.1" + "@jest/types" "^29.4.3" "@types/node" "*" chalk "^4.0.0" ci-info "^3.2.0" graceful-fs "^4.2.9" picomatch "^2.2.3" -jest-validate@^29.3.1: - version "29.3.1" - resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-29.3.1.tgz#d56fefaa2e7d1fde3ecdc973c7f7f8f25eea704a" - integrity sha512-N9Lr3oYR2Mpzuelp1F8negJR3YE+L1ebk1rYA5qYo9TTY3f9OWdptLoNSPP9itOCBIRBqjt/S5XHlzYglLN67g== +jest-validate@^29.4.3: + version "29.4.3" + resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-29.4.3.tgz#a13849dec4f9e95446a7080ad5758f58fa88642f" + integrity sha512-J3u5v7aPQoXPzaar6GndAVhdQcZr/3osWSgTeKg5v574I9ybX/dTyH0AJFb5XgXIB7faVhf+rS7t4p3lL9qFaw== dependencies: - "@jest/types" "^29.3.1" + "@jest/types" "^29.4.3" camelcase "^6.2.0" chalk "^4.0.0" - jest-get-type "^29.2.0" + jest-get-type "^29.4.3" leven "^3.1.0" - pretty-format "^29.3.1" + pretty-format "^29.4.3" -jest-watcher@^29.3.1: - version "29.3.1" - resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-29.3.1.tgz#3341547e14fe3c0f79f9c3a4c62dbc3fc977fd4a" - integrity sha512-RspXG2BQFDsZSRKGCT/NiNa8RkQ1iKAjrO0//soTMWx/QUt+OcxMqMSBxz23PYGqUuWm2+m2mNNsmj0eIoOaFg== +jest-watcher@^29.4.3: + version "29.4.3" + resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-29.4.3.tgz#e503baa774f0c2f8f3c8db98a22ebf885f19c384" + integrity sha512-zwlXH3DN3iksoIZNk73etl1HzKyi5FuQdYLnkQKm5BW4n8HpoG59xSwpVdFrnh60iRRaRBGw0gcymIxjJENPcA== dependencies: - "@jest/test-result" "^29.3.1" - "@jest/types" "^29.3.1" + "@jest/test-result" "^29.4.3" + "@jest/types" "^29.4.3" "@types/node" "*" ansi-escapes "^4.2.1" chalk "^4.0.0" emittery "^0.13.1" - jest-util "^29.3.1" + jest-util "^29.4.3" string-length "^4.0.1" -jest-worker@^29.3.1: - version "29.3.1" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-29.3.1.tgz#e9462161017a9bb176380d721cab022661da3d6b" - integrity sha512-lY4AnnmsEWeiXirAIA0c9SDPbuCBq8IYuDVL8PMm0MZ2PEs2yPvRA/J64QBXuZp7CYKrDM/rmNrc9/i3KJQncw== +jest-worker@^29.4.3: + version "29.4.3" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-29.4.3.tgz#9a4023e1ea1d306034237c7133d7da4240e8934e" + integrity sha512-GLHN/GTAAMEy5BFdvpUfzr9Dr80zQqBrh0fz1mtRMe05hqP45+HfQltu7oTBfduD0UeZs09d+maFtFYAXFWvAA== dependencies: "@types/node" "*" - jest-util "^29.3.1" + jest-util "^29.4.3" merge-stream "^2.0.0" supports-color "^8.0.0" -jest@^29.3.1: - version "29.3.1" - resolved "https://registry.yarnpkg.com/jest/-/jest-29.3.1.tgz#c130c0d551ae6b5459b8963747fed392ddbde122" - integrity sha512-6iWfL5DTT0Np6UYs/y5Niu7WIfNv/wRTtN5RSXt2DIEft3dx3zPuw/3WJQBCJfmEzvDiEKwoqMbGD9n49+qLSA== +jest@^29.4.3: + version "29.4.3" + resolved "https://registry.yarnpkg.com/jest/-/jest-29.4.3.tgz#1b8be541666c6feb99990fd98adac4737e6e6386" + integrity sha512-XvK65feuEFGZT8OO0fB/QAQS+LGHvQpaadkH5p47/j3Ocqq3xf2pK9R+G0GzgfuhXVxEv76qCOOcMb5efLk6PA== dependencies: - "@jest/core" "^29.3.1" - "@jest/types" "^29.3.1" + "@jest/core" "^29.4.3" + "@jest/types" "^29.4.3" import-local "^3.0.2" - jest-cli "^29.3.1" + jest-cli "^29.4.3" js-sdsl@^4.1.4: - version "4.2.0" - resolved "https://registry.yarnpkg.com/js-sdsl/-/js-sdsl-4.2.0.tgz#278e98b7bea589b8baaf048c20aeb19eb7ad09d0" - integrity sha512-dyBIzQBDkCqCu+0upx25Y2jGdbTGxE9fshMsCdK0ViOongpV+n5tXRcZY9v7CaVQ79AGS9KA1KHtojxiM7aXSQ== + version "4.3.0" + resolved "https://registry.yarnpkg.com/js-sdsl/-/js-sdsl-4.3.0.tgz#aeefe32a451f7af88425b11fdb5f58c90ae1d711" + integrity sha512-mifzlm2+5nZ+lEcLJMoBK0/IH/bDg8XnJfd/Wq6IP+xoCjLZsTOnV2QpxlVbX9bMnkl5PdEjNtBJ9Cj1NjifhQ== js-stringify@^1.0.2: version "1.0.2" @@ -5093,7 +5120,7 @@ json5@^1.0.1: dependencies: minimist "^1.2.0" -json5@^2.2.1, json5@^2.2.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== @@ -5244,9 +5271,9 @@ locate-path@^6.0.0: p-locate "^5.0.0" locate-path@^7.1.0: - version "7.1.1" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-7.1.1.tgz#8e1e5a75c7343770cef02ff93c4bf1f0aa666374" - integrity sha512-vJXaRMJgRVD3+cUZs3Mncj2mxpt5mP0EmNOsxRSZRMlbqjvxzDEOIUWXGmavo0ZC9+tNZCBLQ66reA11nbpHZg== + version "7.2.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-7.2.0.tgz#69cb1779bd90b35ab1e771e1f2f89a202c2a8a8a" + integrity sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA== dependencies: p-locate "^6.0.0" @@ -5413,6 +5440,11 @@ mdn-data@2.0.14: resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.14.tgz#7113fc4281917d63ce29b43446f701e68c25ba50" integrity sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow== +mdn-data@2.0.30: + version "2.0.30" + resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.30.tgz#ce4df6f80af6cfbe218ecd5c552ba13c4dfa08cc" + integrity sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA== + mdurl@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/mdurl/-/mdurl-1.0.1.tgz#fe85b2ec75a59037f2adfec100fd6c601761152e" @@ -5534,9 +5566,9 @@ minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: brace-expansion "^1.1.7" minimatch@^5.0.1: - version "5.1.2" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.1.2.tgz#0939d7d6f0898acbd1508abe534d1929368a8fff" - integrity sha512-bNH9mmM9qsJ2X4r2Nat1B//1dJVcn3+iBLa3IgqJ7EbGaDNepL9QSHOxN4ng33s52VMMhhIfgCYDk3C4ZmlDAg== + version "5.1.6" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.1.6.tgz#1cfcb8cf5522ea69952cd2af95ae09477f122a96" + integrity sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g== dependencies: brace-expansion "^2.0.1" @@ -5557,9 +5589,9 @@ minimist-options@4.1.0: kind-of "^6.0.3" minimist@^1.2.0, minimist@^1.2.3, minimist@^1.2.6: - version "1.2.7" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.7.tgz#daa1c4d91f507390437c6a8bc01078e7000c4d18" - integrity sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g== + version "1.2.8" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" + integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== mj-context-menu@^0.6.1: version "0.6.1" @@ -5616,10 +5648,10 @@ nanoid@^3.3.4: resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.4.tgz#730b67e3cd09e2deacf03c027c81c9d9dbc5e8ab" integrity sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw== -nanoid@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-4.0.0.tgz#6e144dee117609232c3f415c34b0e550e64999a5" - integrity sha512-IgBP8piMxe/gf73RTQx7hmnhwz0aaEXYakvqZyE302IXW3HyVNhdNGC+O2MwMAVhLEnvXlvKtGbtJf6wvHihCg== +nanoid@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-4.0.1.tgz#398d7ccfdbf9faf2231b2ca7e8fff5dbca6a509b" + integrity sha512-udKGtCCUafD3nQtJg9wBhRP3KMbPglUsgV5JVsXhvyBs/oefqb4sqMEhKBBgqZncYowu58p1prsZQBYvAj/Gww== napi-build-utils@^1.0.1: version "1.0.2" @@ -5653,22 +5685,29 @@ node-abi@^2.21.0: dependencies: semver "^5.4.1" -node-fetch@2.6.7, node-fetch@^2.6.6: +node-fetch@2.6.7: version "2.6.7" resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.7.tgz#24de9fba827e3b4ae44dc8b20256a379160052ad" integrity sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ== dependencies: whatwg-url "^5.0.0" +node-fetch@^2.6.6: + version "2.6.9" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.9.tgz#7c7f744b5cc6eb5fd404e0c7a9fec630a55657e6" + integrity sha512-DJm/CJkZkRjKKj4Zi4BsKVZh3ValV5IR5s7LVZnW+6YMh0W1BfNA8XSs6DLMGYlId5F3KnA70uu2qepcR08Qqg== + dependencies: + whatwg-url "^5.0.0" + node-int64@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" integrity sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw== -node-releases@^2.0.6: - version "2.0.8" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.8.tgz#0f349cdc8fcfa39a92ac0be9bc48b7706292b9ae" - integrity sha512-dFSmB8fFHEH/s81Xi+Y/15DQY6VHW81nXRj86EMSL3lmuTmK1e+aT4wrFCkTbm+gSwkw4KpX+rT/pMM2c1mF+A== +node-releases@^2.0.8: + version "2.0.10" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.10.tgz#c311ebae3b6a148c89b1813fd7c4d3c024ef537f" + integrity sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w== normalize-package-data@^2.3.2, normalize-package-data@^2.5.0: version "2.5.0" @@ -5760,9 +5799,9 @@ object-assign@^4.1.0, object-assign@^4.1.1: integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== object-inspect@^1.12.2, object-inspect@^1.9.0: - version "1.12.2" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.2.tgz#c0641f26394532f28ab8d796ab954e43c009a8ea" - integrity sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ== + version "1.12.3" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.3.tgz#ba62dffd67ee256c8c086dfae69e016cd1f198b9" + integrity sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g== object-keys@^1.1.1: version "1.1.1" @@ -5779,7 +5818,7 @@ object.assign@^4.1.4: has-symbols "^1.0.3" object-keys "^1.1.1" -object.values@^1.1.5: +object.values@^1.1.6: version "1.1.6" resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.6.tgz#4abbaa71eba47d63589d402856f908243eea9b1d" integrity sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw== @@ -5810,9 +5849,9 @@ onetime@^5.1.2: mimic-fn "^2.1.0" open@^8.4.0: - version "8.4.0" - resolved "https://registry.yarnpkg.com/open/-/open-8.4.0.tgz#345321ae18f8138f82565a910fdc6b39e8c244f8" - integrity sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q== + version "8.4.1" + resolved "https://registry.yarnpkg.com/open/-/open-8.4.1.tgz#2ab3754c07f5d1f99a7a8d6a82737c95e3101cff" + integrity sha512-/4b7qZNhv6Uhd7jjnREh1NjnPxlTq+XNWPG88Ydkj5AILcA5m3ajvcg57pB24EQjKv0dK62XnDqk9c/hkIG5Kg== dependencies: define-lazy-prop "^2.0.0" is-docker "^2.1.1" @@ -6133,12 +6172,12 @@ postcss-calc@^8.2.3: postcss-selector-parser "^6.0.9" postcss-value-parser "^4.2.0" -postcss-colormin@^5.3.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-5.3.0.tgz#3cee9e5ca62b2c27e84fce63affc0cfb5901956a" - integrity sha512-WdDO4gOFG2Z8n4P8TWBpshnL3JpmNmJwdnfP2gbk2qBA8PWwOYcmjmI/t3CmMeL72a7Hkd+x/Mg9O2/0rD54Pg== +postcss-colormin@^5.3.1: + version "5.3.1" + resolved "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-5.3.1.tgz#86c27c26ed6ba00d96c79e08f3ffb418d1d1988f" + integrity sha512-UsWQG0AqTFQmpBegeLLc1+c3jIqBNB0zlDGRWR+dQ3pRKJL1oeMzyqmH3o2PIfn9MBdNrVPWhDbT769LxCTLJQ== dependencies: - browserslist "^4.16.6" + browserslist "^4.21.4" caniuse-api "^3.0.0" colord "^2.9.1" postcss-value-parser "^4.2.0" @@ -6192,10 +6231,10 @@ postcss-merge-longhand@^5.1.7: postcss-value-parser "^4.2.0" stylehacks "^5.1.1" -postcss-merge-rules@^5.1.3: - version "5.1.3" - resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-5.1.3.tgz#8f97679e67cc8d08677a6519afca41edf2220894" - integrity sha512-LbLd7uFC00vpOuMvyZop8+vvhnfRGpp2S+IMQKeuOZZapPRY4SMq5ErjQeHbHsjCUgJkRNrlU+LmxsKIqPKQlA== +postcss-merge-rules@^5.1.4: + version "5.1.4" + resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-5.1.4.tgz#2f26fa5cacb75b1402e213789f6766ae5e40313c" + integrity sha512-0R2IuYpgU93y9lhVbO/OylTtKMVcHb67zjWIfCiKR9rWL3GUk1677LAqD/BcHizukdZEjT8Ru3oHRoAYoJy44g== dependencies: browserslist "^4.21.4" caniuse-api "^3.0.0" @@ -6347,10 +6386,10 @@ postcss-ordered-values@^5.1.3: cssnano-utils "^3.1.0" postcss-value-parser "^4.2.0" -postcss-reduce-initial@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/postcss-reduce-initial/-/postcss-reduce-initial-5.1.1.tgz#c18b7dfb88aee24b1f8e4936541c29adbd35224e" - integrity sha512-//jeDqWcHPuXGZLoolFrUXBDyuEGbr9S2rMo19bkTIjBQ4PqkaO+oI8wua5BOUxpfi97i3PCoInsiFIEBfkm9w== +postcss-reduce-initial@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/postcss-reduce-initial/-/postcss-reduce-initial-5.1.2.tgz#798cd77b3e033eae7105c18c9d371d989e1382d6" + integrity sha512-dE/y2XRaqAi6OvjzD22pjTUQ8eOfc6m/natGHgKFBK9DxFmIm69YmaRVQrGgFlEfc1HePIurY0TmDeROK05rIg== dependencies: browserslist "^4.21.4" caniuse-api "^3.0.0" @@ -6463,17 +6502,17 @@ prelude-ls@~1.1.2: resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" integrity sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w== -prettier@^2.8.2: - version "2.8.2" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.8.2.tgz#c4ea1b5b454d7c4b59966db2e06ed7eec5dfd160" - integrity sha512-BtRV9BcncDyI2tsuS19zzhzoxD8Dh8LiCx7j7tHzrkz8GFXAexeWFdi22mjE1d16dftH2qNaytVxqiRTGlMfpw== +prettier@^2.8.4: + version "2.8.4" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.8.4.tgz#34dd2595629bfbb79d344ac4a91ff948694463c3" + integrity sha512-vIS4Rlc2FNh0BySk3Wkd6xmwxB0FpOndW5fisM5H8hsZSxU2VWVB5CWIkIjWvrHjIhxk2g3bfMKM87zNTrZddw== -pretty-format@^29.0.0, pretty-format@^29.3.1: - version "29.3.1" - resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-29.3.1.tgz#1841cac822b02b4da8971dacb03e8a871b4722da" - integrity sha512-FyLnmb1cYJV8biEIiRyzRFvs2lry7PPIvOqKVe1GCUEYg4YGmlx1qG9EJNMxArYm7piII4qb8UV1Pncq5dxmcg== +pretty-format@^29.0.0, pretty-format@^29.4.3: + version "29.4.3" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-29.4.3.tgz#25500ada21a53c9e8423205cf0337056b201244c" + integrity sha512-cvpcHTc42lcsvOOAzd3XuNWTcvk1Jmnzqeu+WsOuiPmxUJTnkbAcFNsRKvEpBEUFVUgy/GTZLulZDcDEi+CIlA== dependencies: - "@jest/schemas" "^29.0.0" + "@jest/schemas" "^29.4.3" ansi-styles "^5.0.0" react-is "^18.0.0" @@ -6642,18 +6681,18 @@ pump@^3.0.0: once "^1.3.1" punycode@^2.1.0, punycode@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" - integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== + version "2.3.0" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.0.tgz#f67fa67c94da8f4d0cfff981aee4118064199b8f" + integrity sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA== -puppeteer-core@19.4.1: - version "19.4.1" - resolved "https://registry.yarnpkg.com/puppeteer-core/-/puppeteer-core-19.4.1.tgz#f4875943841ebdb6fc2ad7a475add958692b0237" - integrity sha512-JHIuqtqrUAx4jGOTxXu4ilapV2jabxtVMA/e4wwFUMvtSsqK4nVBSI+Z1SKDoz7gRy/JUIc8WzmfocCa6SIZ1w== +puppeteer-core@19.7.1: + version "19.7.1" + resolved "https://registry.yarnpkg.com/puppeteer-core/-/puppeteer-core-19.7.1.tgz#6f5326ba0a97a7ba63f8f986c3971e31ef42d871" + integrity sha512-4b5Go25IA+0xrUIw0Qtqi4nxc0qwdu/C7VT1+tFPl1W27207YT+7bxfANC3PjXMlS6bcbzinCf5YfGqMl8tfyQ== dependencies: cross-fetch "3.1.5" debug "4.3.4" - devtools-protocol "0.0.1068969" + devtools-protocol "0.0.1094867" extract-zip "2.0.1" https-proxy-agent "5.0.1" proxy-from-env "1.1.0" @@ -6847,22 +6886,17 @@ regexpp@^3.2.0: integrity sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg== regexpu-core@^5.2.1: - version "5.2.2" - resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-5.2.2.tgz#3e4e5d12103b64748711c3aad69934d7718e75fc" - integrity sha512-T0+1Zp2wjF/juXMrMxHxidqGYn8U4R+zleSJhX9tQ1PUsS8a9UtYfbsF9LdiVgNX3kiX8RNaKM42nfSgvFJjmw== + version "5.3.1" + resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-5.3.1.tgz#66900860f88def39a5cb79ebd9490e84f17bcdfb" + integrity sha512-nCOzW2V/X15XpLsK2rlgdwrysrBq+AauCn+omItIz4R1pIcmeot5zvjdmOBRLzEH/CkC6IxMJVmxDe3QcMuNVQ== dependencies: + "@babel/regjsgen" "^0.8.0" regenerate "^1.4.2" regenerate-unicode-properties "^10.1.0" - regjsgen "^0.7.1" regjsparser "^0.9.1" unicode-match-property-ecmascript "^2.0.0" unicode-match-property-value-ecmascript "^2.1.0" -regjsgen@^0.7.1: - version "0.7.1" - resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.7.1.tgz#ee5ef30e18d3f09b7c369b76e7c2373ed25546f6" - integrity sha512-RAt+8H2ZEzHeYWxZ3H2z6tF18zyyOnlcdaafLrm21Bguj7uZy6ULibiAFdXEtKQY4Sy7wDTwDiOazasMLc4KPA== - regjsparser@^0.9.1: version "0.9.1" resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.9.1.tgz#272d05aa10c7c1f67095b1ff0addae8442fc5709" @@ -6909,10 +6943,15 @@ resolve-from@^5.0.0: resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== -resolve.exports@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/resolve.exports/-/resolve.exports-1.1.0.tgz#5ce842b94b05146c0e03076985d1d0e7e48c90c9" - integrity sha512-J1l+Zxxp4XK3LUDZ9m60LRJF/mAe4z6a4xyabPHk7pvK5t35dACV32iIjJDFeWZFfZlO29w6SZ67knR0tHzJtQ== +resolve.exports@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/resolve.exports/-/resolve.exports-1.1.1.tgz#05cfd5b3edf641571fd46fa608b610dda9ead999" + integrity sha512-/NtpHNDN7jWhAaQ9BvBUYZ6YTXsRBgfqWFWP7BZBaoMJO/I3G5OFzvTuWNlZC3aPjins1F+TNrLKsGbH4rfsRQ== + +resolve.exports@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/resolve.exports/-/resolve.exports-2.0.0.tgz#c1a0028c2d166ec2fbf7d0644584927e76e7400e" + integrity sha512-6K/gDlqgQscOlg9fSRpWstA8sYe8rbELsSTNpx+3kTrsVCzvSl0zIvRErM7fdl9ERWDsKnrLnwB+Ne89918XOg== resolve@^1.10.0, resolve@^1.14.2, resolve@^1.15.1, resolve@^1.19.0, resolve@^1.20.0, resolve@^1.22.0, resolve@^1.22.1: version "1.22.1" @@ -6935,6 +6974,11 @@ rimraf@3.0.2, rimraf@^3.0.0, rimraf@^3.0.2: dependencies: glob "^7.1.3" +rimraf@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-4.1.2.tgz#20dfbc98083bdfaa28b01183162885ef213dbf7c" + integrity sha512-BlIbgFryTbw3Dz6hyoWFhKk+unCcHMSkZGrTFVAx2WmttdBSonsdtRlwiuTbDqTKr+UlXIUqJVS4QT5tUzGENQ== + rollup-plugin-license@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/rollup-plugin-license/-/rollup-plugin-license-3.0.1.tgz#e54d9464971dc2c5282b74c00cee09091b329054" @@ -6986,10 +7030,10 @@ rollup-pluginutils@^2.3.3, rollup-pluginutils@^2.8.2: dependencies: estree-walker "^0.6.1" -rollup@^3.9.1: - version "3.9.1" - resolved "https://registry.yarnpkg.com/rollup/-/rollup-3.9.1.tgz#27501d3d026418765fe379d5620d25954ff2a011" - integrity sha512-GswCYHXftN8ZKGVgQhTFUJB/NBXxrRGgO2NCy6E8s1rwEJ4Q9/VttNqcYfEvx4dTo4j58YqdC3OVztPzlKSX8w== +rollup@^3.17.1: + version "3.17.1" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-3.17.1.tgz#4be78852c2689d8ce5a21efbc2a45879bac75362" + integrity sha512-8RnSms6rNqHmZK+wiqgnPCqen+rRnUHXkciGDirh7B00g1rX1vpKbPDhuxCvAG2bburoI+W4Q9/PlUB/zYkiYA== optionalDependencies: fsevents "~2.3.2" @@ -7036,10 +7080,10 @@ safe-regex-test@^1.0.0: resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== -sass@^1.57.1: - version "1.57.1" - resolved "https://registry.yarnpkg.com/sass/-/sass-1.57.1.tgz#dfafd46eb3ab94817145e8825208ecf7281119b5" - integrity sha512-O2+LwLS79op7GI0xZ8fqzF7X2m/m8WFfI02dHOdsK5R2ECeS5F62zrwg/relM1rjSLy7Vd/DiMNIvPrQGsA0jw== +sass@^1.58.3: + version "1.58.3" + resolved "https://registry.yarnpkg.com/sass/-/sass-1.58.3.tgz#2348cc052061ba4f00243a208b09c40e031f270d" + integrity sha512-Q7RaEtYf6BflYrQ+buPudKR26/lH+10EmO9bBqbmPh/KeLqv8bjpTNqxe71ocONqXq+jYiCbpPUmQMS+JJPk4A== dependencies: chokidar ">=3.0.0 <4.0.0" immutable "^4.0.0" @@ -7097,9 +7141,9 @@ send@0.18.0: hashish ">=0.0.2 <0.1" serialize-javascript@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.0.tgz#efae5d88f45d7924141da8b5c3a7a7e663fefeb8" - integrity sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag== + version "6.0.1" + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.1.tgz#b206efb27c3da0b0ab6b52f48d170b7996458e5c" + integrity sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w== dependencies: randombytes "^2.1.0" @@ -7171,9 +7215,9 @@ shebang-regex@^3.0.0: integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== shell-quote@^1.6.1: - version "1.7.4" - resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.7.4.tgz#33fe15dee71ab2a81fcbd3a52106c5cfb9fb75d8" - integrity sha512-8o/QEhSSRb1a5i7TFR0iM4G16Z0vYB2OQVs4G3aAFXjn3T6yEx8AZxy1PgDF7I00LZHYA3WxaSYIf5e5sAX8Rw== + version "1.8.0" + resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.8.0.tgz#20d078d0eaf71d54f43bd2ba14a1b5b9bfa5c8ba" + integrity sha512-QHsz8GgQIGKlRi24yFc6a6lN69Idnx634w49ay6+jA5yFh7a1UY+4Rp6HPx/L/1zcEDPEij8cIsiqR6bQsE5VQ== side-channel@^1.0.4: version "1.0.4" @@ -7239,7 +7283,7 @@ smob@^0.0.6: resolved "https://registry.yarnpkg.com/smob/-/smob-0.0.6.tgz#09b268fea916158a2781c152044c6155adbb8aa1" integrity sha512-V21+XeNni+tTyiST1MHsa84AQhT1aFZipzPpOFAVB8DkHzwJyjjAmt9bgwnuZiZWnIbMo2duE29wybxv/7HWUw== -"source-map-js@>=0.6.2 <2.0.0", source-map-js@^1.0.2: +"source-map-js@>=0.6.2 <2.0.0", source-map-js@^1.0.1, source-map-js@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c" integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw== @@ -7375,9 +7419,9 @@ stream-meter@^1.0.4: readable-stream "^2.1.4" streamx@^2.12.5: - version "2.13.0" - resolved "https://registry.yarnpkg.com/streamx/-/streamx-2.13.0.tgz#590ad191bf326d76175e1d223ecad3b240256d46" - integrity sha512-9jD4uoX0juNSIcv4PazT+97FpM4Mww3cp7PM23HRTLANhgb7K7n1mB45guH/kT5F4enl04kApOM3EeoUXSPfvw== + version "2.13.2" + resolved "https://registry.yarnpkg.com/streamx/-/streamx-2.13.2.tgz#9de43569a1cd54980d128673b3c1429b79afff1c" + integrity sha512-+TWqixPhGDXEG9L/XczSbhfkmwAtGs3BJX5QNU6cvno+pOLKeszByWcnaTu6dg8efsTYqR8ZZuXWHhZfgrxMvA== dependencies: fast-fifo "^1.1.0" queue-tick "^1.0.1" @@ -7534,44 +7578,44 @@ stylehacks@^5.1.1: browserslist "^4.21.4" postcss-selector-parser "^6.0.4" -stylelint-config-prettier@^9.0.4: - version "9.0.4" - resolved "https://registry.yarnpkg.com/stylelint-config-prettier/-/stylelint-config-prettier-9.0.4.tgz#1b1dda614d5b3ef6c1f583fa6fa55f88245eb00b" - integrity sha512-38nIGTGpFOiK5LjJ8Ma1yUgpKENxoKSOhbDNSemY7Ep0VsJoXIW9Iq/2hSt699oB9tReynfWicTAoIHiq8Rvbg== +stylelint-config-prettier@^9.0.5: + version "9.0.5" + resolved "https://registry.yarnpkg.com/stylelint-config-prettier/-/stylelint-config-prettier-9.0.5.tgz#9f78bbf31c7307ca2df2dd60f42c7014ee9da56e" + integrity sha512-U44lELgLZhbAD/xy/vncZ2Pq8sh2TnpiPvo38Ifg9+zeioR+LAkHu0i6YORIOxFafZoVg0xqQwex6e6F25S5XA== -stylelint-config-recommended-scss@^8.0.0: - version "8.0.0" - resolved "https://registry.yarnpkg.com/stylelint-config-recommended-scss/-/stylelint-config-recommended-scss-8.0.0.tgz#1c1e93e619fe2275d4c1067928d92e0614f7d64f" - integrity sha512-BxjxEzRaZoQb7Iinc3p92GS6zRdRAkIuEu2ZFLTxJK2e1AIcCb5B5MXY9KOXdGTnYFZ+KKx6R4Fv9zU6CtMYPQ== +stylelint-config-recommended-scss@^9.0.0: + version "9.0.1" + resolved "https://registry.yarnpkg.com/stylelint-config-recommended-scss/-/stylelint-config-recommended-scss-9.0.1.tgz#7ea233ea637ac2d8f0b50d8aad236257e44e2cbb" + integrity sha512-qAmz/TdrqslwiMTuLM3QXeISUkfEDUXGMfRBCHm/xrkCJNnQefv+mzG2mWTsWkqcVk8HAyUkug10dwAcYp2fCQ== dependencies: postcss-scss "^4.0.2" - stylelint-config-recommended "^9.0.0" - stylelint-scss "^4.0.0" + stylelint-config-recommended "^10.0.1" + stylelint-scss "^4.4.0" -stylelint-config-recommended@^9.0.0: - version "9.0.0" - resolved "https://registry.yarnpkg.com/stylelint-config-recommended/-/stylelint-config-recommended-9.0.0.tgz#1c9e07536a8cd875405f8ecef7314916d94e7e40" - integrity sha512-9YQSrJq4NvvRuTbzDsWX3rrFOzOlYBmZP+o513BJN/yfEmGSr0AxdvrWs0P/ilSpVV/wisamAHu5XSk8Rcf4CQ== +stylelint-config-recommended@^10.0.1: + version "10.0.1" + resolved "https://registry.yarnpkg.com/stylelint-config-recommended/-/stylelint-config-recommended-10.0.1.tgz#25a8828acf6cde87dac6db2950c8c4ed82a69ae1" + integrity sha512-TQ4xQ48tW4QSlODcti7pgSRqBZcUaBzuh0jPpfiMhwJKBPkqzTIAU+IrSWL/7BgXlOM90DjB7YaNgFpx8QWhuA== -stylelint-config-standard-scss@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/stylelint-config-standard-scss/-/stylelint-config-standard-scss-6.1.0.tgz#a6cddd2a9430578b92fc89726a59474d5548a444" - integrity sha512-iZ2B5kQT2G3rUzx+437cEpdcnFOQkwnwqXuY8Z0QUwIHQVE8mnYChGAquyKFUKZRZ0pRnrciARlPaR1RBtPb0Q== +stylelint-config-standard-scss@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/stylelint-config-standard-scss/-/stylelint-config-standard-scss-7.0.1.tgz#4ba83fa19e1508937f7e02674e085cf94fc1a145" + integrity sha512-m5sRdtsB1F5fnC1Ozla7ryftU47wVpO+HWd+JQTqeoG0g/oPh5EfbWfcVHbNCEtuoHfALIySiUWS20pz2hX6jA== dependencies: - stylelint-config-recommended-scss "^8.0.0" - stylelint-config-standard "^29.0.0" + stylelint-config-recommended-scss "^9.0.0" + stylelint-config-standard "^30.0.1" -stylelint-config-standard@^29.0.0: - version "29.0.0" - resolved "https://registry.yarnpkg.com/stylelint-config-standard/-/stylelint-config-standard-29.0.0.tgz#4cc0e0f05512a39bb8b8e97853247d3a95d66fa2" - integrity sha512-uy8tZLbfq6ZrXy4JKu3W+7lYLgRQBxYTUUB88vPgQ+ZzAxdrvcaSUW9hOMNLYBnwH+9Kkj19M2DHdZ4gKwI7tg== +stylelint-config-standard@^30.0.1: + version "30.0.1" + resolved "https://registry.yarnpkg.com/stylelint-config-standard/-/stylelint-config-standard-30.0.1.tgz#a84d57c240c37f7db47023ab9d2e64c49090e1eb" + integrity sha512-NbeHOmpRQhjZh5XB1B/S4MLRWvz4xxAxeDBjzl0tY2xEcayNhLbaRGF0ZQzq+DQZLCcPpOHeS2Ru1ydbkhkmLg== dependencies: - stylelint-config-recommended "^9.0.0" + stylelint-config-recommended "^10.0.1" -stylelint-scss@^4.0.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/stylelint-scss/-/stylelint-scss-4.3.0.tgz#638800faf823db11fff60d537c81051fe74c90fa" - integrity sha512-GvSaKCA3tipzZHoz+nNO7S02ZqOsdBzMiCx9poSmLlb3tdJlGddEX/8QzCOD8O7GQan9bjsvLMsO5xiw6IhhIQ== +stylelint-scss@^4.4.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/stylelint-scss/-/stylelint-scss-4.4.0.tgz#87ce9d049eff1ce67cce788780fbfda63099017e" + integrity sha512-Qy66a+/30aylFhPmUArHhVsHOun1qrO93LGT15uzLuLjWS7hKDfpFm34mYo1ndR4MCo8W4bEZM1+AlJRJORaaw== dependencies: lodash "^4.17.21" postcss-media-query-parser "^0.2.3" @@ -7579,16 +7623,20 @@ stylelint-scss@^4.0.0: postcss-selector-parser "^6.0.6" postcss-value-parser "^4.1.0" -stylelint@^14.16.1: - version "14.16.1" - resolved "https://registry.yarnpkg.com/stylelint/-/stylelint-14.16.1.tgz#b911063530619a1bbe44c2b875fd8181ebdc742d" - integrity sha512-ErlzR/T3hhbV+a925/gbfc3f3Fep9/bnspMiJPorfGEmcBbXdS+oo6LrVtoUZ/w9fqD6o6k7PtUlCOsCRdjX/A== +stylelint@^15.1.0: + version "15.1.0" + resolved "https://registry.yarnpkg.com/stylelint/-/stylelint-15.1.0.tgz#24d7cbe06250ceca3b276393bfdeaaaba4356195" + integrity sha512-Tw8OyIiYhxnIHUzgoLlCyWgCUKsPYiP3TDgs7M1VbayS+q5qZly2yxABg+YPe/hFRWiu0cOtptCtpyrn1CrnYw== dependencies: - "@csstools/selector-specificity" "^2.0.2" + "@csstools/css-parser-algorithms" "^2.0.1" + "@csstools/css-tokenizer" "^2.0.1" + "@csstools/media-query-list-parser" "^2.0.1" + "@csstools/selector-specificity" "^2.1.1" balanced-match "^2.0.0" colord "^2.9.3" - cosmiconfig "^7.1.0" + cosmiconfig "^8.0.0" css-functions-list "^3.1.0" + css-tree "^2.3.1" debug "^4.3.4" fast-glob "^3.2.12" fastest-levenshtein "^1.0.16" @@ -7597,7 +7645,7 @@ stylelint@^14.16.1: globby "^11.1.0" globjoin "^0.1.4" html-tags "^3.2.0" - ignore "^5.2.1" + ignore "^5.2.4" import-lazy "^4.0.0" imurmurhash "^0.1.4" is-plain-object "^5.0.0" @@ -7607,7 +7655,7 @@ stylelint@^14.16.1: micromatch "^4.0.5" normalize-path "^3.0.0" picocolors "^1.0.0" - postcss "^8.4.19" + postcss "^8.4.21" postcss-media-query-parser "^0.2.3" postcss-resolve-nested-selector "^0.1.1" postcss-safe-parser "^6.0.0" @@ -7621,19 +7669,19 @@ stylelint@^14.16.1: svg-tags "^1.0.0" table "^6.8.1" v8-compile-cache "^2.3.0" - write-file-atomic "^4.0.2" + write-file-atomic "^5.0.0" superagent@^8.0.5: - version "8.0.6" - resolved "https://registry.yarnpkg.com/superagent/-/superagent-8.0.6.tgz#e3fb0b3112b79b12acd605c08846253197765bf6" - integrity sha512-HqSe6DSIh3hEn6cJvCkaM1BLi466f1LHi4yubR0tpewlMpk4RUFFy35bKz8SsPBwYfIIJy5eclp+3tCYAuX0bw== + version "8.0.9" + resolved "https://registry.yarnpkg.com/superagent/-/superagent-8.0.9.tgz#2c6fda6fadb40516515f93e9098c0eb1602e0535" + integrity sha512-4C7Bh5pyHTvU33KpZgwrNKh/VQnvgtCSqPRfJAUdmrtSYePVzVg4E4OzsrbkhJj9O7SO6Bnv75K/F8XVZT8YHA== dependencies: component-emitter "^1.3.0" - cookiejar "^2.1.3" + cookiejar "^2.1.4" debug "^4.3.4" fast-safe-stringify "^2.1.1" form-data "^4.0.0" - formidable "^2.1.1" + formidable "^2.1.2" methods "^1.1.2" mime "2.6.0" qs "^6.11.0" @@ -7705,12 +7753,12 @@ symbol-tree@^3.2.4: integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw== synckit@^0.8.4: - version "0.8.4" - resolved "https://registry.yarnpkg.com/synckit/-/synckit-0.8.4.tgz#0e6b392b73fafdafcde56692e3352500261d64ec" - integrity sha512-Dn2ZkzMdSX827QbowGbU/4yjWuvNaCoScLLoMo/yKbu+P4GBR6cRGKZH27k6a9bRzdqcyd1DE96pQtQ6uNkmyw== + version "0.8.5" + resolved "https://registry.yarnpkg.com/synckit/-/synckit-0.8.5.tgz#b7f4358f9bb559437f9f167eb6bc46b3c9818fa3" + integrity sha512-L1dapNV6vu2s/4Sputv8xGsCdAVlb5nRDMFU/E27D44l5U6cw1g0dGd45uLc+OXjNMmF4ntiMdCimzcjFKQI8Q== dependencies: "@pkgr/utils" "^2.3.1" - tslib "^2.4.0" + tslib "^2.5.0" table@^6.8.1: version "6.8.1" @@ -7759,9 +7807,9 @@ tar-stream@^3.0.0: streamx "^2.12.5" terser@^5.15.1: - version "5.16.1" - resolved "https://registry.yarnpkg.com/terser/-/terser-5.16.1.tgz#5af3bc3d0f24241c7fb2024199d5c461a1075880" - integrity sha512-xvQfyfA1ayT0qdK47zskQgRZeWLoOQ8JQ6mIgRGVNwZKdQMU+5FkCBjmv4QjcrTzyZquRw2FVtlJSRUmMKQslw== + version "5.16.4" + resolved "https://registry.yarnpkg.com/terser/-/terser-5.16.4.tgz#51284b440b93242291a98f2a9903c024cfb70e6e" + integrity sha512-5yEGuZ3DZradbogeYQ1NaGz7rXVBDWujWlx1PT8efXO6Txn+eWbfKqB2bTDVmFXmePFkoLU6XI8UektMIEA0ug== dependencies: "@jridgewell/source-map" "^0.3.2" acorn "^8.5.0" @@ -7866,15 +7914,15 @@ trim-newlines@^3.0.0: resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-3.0.1.tgz#260a5d962d8b752425b32f3a7db0dcacd176c144" integrity sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw== -ts-jest@^29.0.3: - version "29.0.3" - resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-29.0.3.tgz#63ea93c5401ab73595440733cefdba31fcf9cb77" - integrity sha512-Ibygvmuyq1qp/z3yTh9QTwVVAbFdDy/+4BtIQR2sp6baF2SJU/8CKK/hhnGIDY2L90Az2jIqTwZPnN2p+BweiQ== +ts-jest@^29.0.5: + version "29.0.5" + resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-29.0.5.tgz#c5557dcec8fe434fcb8b70c3e21c6b143bfce066" + integrity sha512-PL3UciSgIpQ7f6XjVOmbi96vmDHUqAyqDr8YxzopDqX3kfgYtX1cuNeBjP+L9sFXi6nzsGGA6R3fP3DDDJyrxA== dependencies: bs-logger "0.x" fast-json-stable-stringify "2.x" jest-util "^29.0.0" - json5 "^2.2.1" + json5 "^2.2.3" lodash.memoize "4.x" make-error "1.x" semver "7.x" @@ -7900,10 +7948,10 @@ tslib@^1.11.1, tslib@^1.8.1: resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== -tslib@^2.1.0, tslib@^2.4.0, tslib@^2.4.1: - version "2.4.1" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.4.1.tgz#0d0bfbaac2880b91e22df0768e55be9753a5b17e" - integrity sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA== +tslib@^2.1.0, tslib@^2.4.0, tslib@^2.5.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.5.0.tgz#42bfed86f5787aeb41d031866c8f402429e0fddf" + integrity sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg== tsutils@^3.21.0: version "3.21.0" @@ -7987,10 +8035,10 @@ typed-emitter@^2.1.0: optionalDependencies: rxjs "^7.5.2" -typescript@^4.9.4: - version "4.9.4" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.9.4.tgz#a2a3d2756c079abda241d75f149df9d561091e78" - integrity sha512-Uz+dTXYzxXXbsFpM86Wh3dKCxrQqUcVMxwU54orwlJjOpO3ao8L7j5lH+dWfTwgCwIuM9GQ2kvVotzYJMXTBZg== +typescript@^4.9.5: + version "4.9.5" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.9.5.tgz#095979f9bcc0d09da324d58d03ce8f8374cbe65a" + integrity sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g== uc.micro@^1.0.1, uc.micro@^1.0.5: version "1.0.6" @@ -8053,7 +8101,7 @@ unpipe@1.0.0, unpipe@~1.0.0: resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ== -update-browserslist-db@^1.0.9: +update-browserslist-db@^1.0.10: version "1.0.10" resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz#0f54b876545726f17d00cd9a2561e6dade943ff3" integrity sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ== @@ -8097,9 +8145,9 @@ v8-compile-cache@^2.3.0: integrity sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA== v8-to-istanbul@^9.0.1: - version "9.0.1" - resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-9.0.1.tgz#b6f994b0b5d4ef255e17a0d17dc444a9f5132fa4" - integrity sha512-74Y4LqY74kLE6IFyIjPtkSTWzUZmj8tdHT9Ii/26dvQ6K9Dl2NbEfj0XgU2sHCtKgt5VupqhlO/5aWuqS+IY1w== + version "9.1.0" + resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-9.1.0.tgz#1b83ed4e397f58c85c266a570fc2558b5feb9265" + integrity sha512-6z3GW9x8G1gd+JIIgQQQxXuiJtCXeAjp6RaPEPLv62mH3iPHPxV6W3robxtCzNErRo6ZwTmzWhsbNvjyEBKzKA== dependencies: "@jridgewell/trace-mapping" "^0.3.12" "@types/istanbul-lib-coverage" "^2.0.1" @@ -8253,10 +8301,10 @@ wrap-ansi@^7.0.0: string-width "^4.1.0" strip-ansi "^6.0.0" -wrap-ansi@^8.0.1: - version "8.0.1" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-8.0.1.tgz#2101e861777fec527d0ea90c57c6b03aac56a5b3" - integrity sha512-QFF+ufAqhoYHvoHdajT/Po7KoXVBPXS2bgjIam5isfWJPfIOnQZ50JtUiVvCv/sjgacf3yRrt2ZKUZ/V4itN4g== +wrap-ansi@^8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-8.1.0.tgz#56dc22368ee570face1b49819975d9b9a5ead214" + integrity sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ== dependencies: ansi-styles "^6.1.0" string-width "^5.0.1" @@ -8267,7 +8315,7 @@ wrappy@1: resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== -write-file-atomic@^4.0.1, write-file-atomic@^4.0.2: +write-file-atomic@^4.0.2: version "4.0.2" resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-4.0.2.tgz#a9df01ae5b77858a027fd2e80768ee433555fcfd" integrity sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg== @@ -8275,15 +8323,23 @@ write-file-atomic@^4.0.1, write-file-atomic@^4.0.2: imurmurhash "^0.1.4" signal-exit "^3.0.7" +write-file-atomic@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-5.0.0.tgz#54303f117e109bf3d540261125c8ea5a7320fab0" + integrity sha512-R7NYMnHSlV42K54lwY9lvW6MnSm1HSJqZL3xiSgi9E7//FYaI74r2G0rd+/X6VAMkHEdzxQaU5HUOXWUz5kA/w== + dependencies: + imurmurhash "^0.1.4" + signal-exit "^3.0.7" + ws@8.11.0: version "8.11.0" resolved "https://registry.yarnpkg.com/ws/-/ws-8.11.0.tgz#6a0d36b8edfd9f96d8b25683db2f8d7de6e8e143" integrity sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg== -ws@^8.11.0, ws@^8.12.0: - version "8.12.0" - resolved "https://registry.yarnpkg.com/ws/-/ws-8.12.0.tgz#485074cc392689da78e1828a9ff23585e06cddd8" - integrity sha512-kU62emKIdKVeEIOIKVegvqpXMSTAMLJozpHZaJNDYqBjzlSYXQGviYwN1osDLJ9av68qHd4a2oSjd7yD4pacig== +ws@^8.11.0, ws@^8.12.1: + version "8.12.1" + resolved "https://registry.yarnpkg.com/ws/-/ws-8.12.1.tgz#c51e583d79140b5e42e39be48c934131942d4a8f" + integrity sha512-1qo+M9Ba+xNhPB+YTWUlK6M17brTut5EXbcBaMRN5pH5dFrXz7lzz1ChFSUq3bOUl8yEvSenhHmYUNJxFzdJew== xml-name-validator@^4.0.0: version "4.0.0" @@ -8335,7 +8391,7 @@ yallist@^4.0.0: resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== -yaml@^1.10.0, yaml@^1.10.2: +yaml@^1.10.2: version "1.10.2" resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== @@ -8363,10 +8419,10 @@ yargs@^16.2.0: y18n "^5.0.5" yargs-parser "^20.2.2" -yargs@^17.3.1, yargs@^17.6.2: - version "17.6.2" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.6.2.tgz#2e23f2944e976339a1ee00f18c77fedee8332541" - integrity sha512-1/9UrdHjDZc0eOU0HxOHoS78C69UD3JRMvzlJ7S79S2nTaWRA/whGCTV8o9e/N/1Va9YIV7Q4sOxD8VV4pCWOw== +yargs@^17.3.1, yargs@^17.7.0: + version "17.7.0" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.7.0.tgz#b21e9af1e0a619a2a9c67b1133219b2975a07985" + integrity sha512-dwqOPg5trmrre9+v8SUo2q/hAwyKoVfu8OC1xPHKJGNdxAvPl4sKxL4vBnh3bQz/ZvvGAFeA5H3ou2kcOY8sQQ== dependencies: cliui "^8.0.1" escalade "^3.1.1" From 080adfb6f993e8c77e3f47c1ef34986319bf086b Mon Sep 17 00:00:00 2001 From: Yuki Hattori Date: Sun, 19 Feb 2023 05:47:22 +0900 Subject: [PATCH 2/6] Removed stylelint-config-prettier https://stylelint.io/migration-guide/to-15#deprecated-stylistic-rules --- .stylelintrc.yml | 1 - package.json | 1 - yarn.lock | 5 ----- 3 files changed, 7 deletions(-) diff --git a/.stylelintrc.yml b/.stylelintrc.yml index e18b8f79..e9ec39e0 100644 --- a/.stylelintrc.yml +++ b/.stylelintrc.yml @@ -1,6 +1,5 @@ extends: - stylelint-config-standard-scss - - stylelint-config-prettier rules: at-rule-no-unknown: diff --git a/package.json b/package.json index 1c054ce4..170abff9 100644 --- a/package.json +++ b/package.json @@ -131,7 +131,6 @@ "sass": "^1.58.3", "strip-ansi": "^7.0.1", "stylelint": "^15.1.0", - "stylelint-config-prettier": "^9.0.5", "stylelint-config-standard-scss": "^7.0.1", "supertest": "^6.3.3", "tar-stream": "^3.0.0", diff --git a/yarn.lock b/yarn.lock index 839b3ec3..8d3d68dc 100644 --- a/yarn.lock +++ b/yarn.lock @@ -7578,11 +7578,6 @@ stylehacks@^5.1.1: browserslist "^4.21.4" postcss-selector-parser "^6.0.4" -stylelint-config-prettier@^9.0.5: - version "9.0.5" - resolved "https://registry.yarnpkg.com/stylelint-config-prettier/-/stylelint-config-prettier-9.0.5.tgz#9f78bbf31c7307ca2df2dd60f42c7014ee9da56e" - integrity sha512-U44lELgLZhbAD/xy/vncZ2Pq8sh2TnpiPvo38Ifg9+zeioR+LAkHu0i6YORIOxFafZoVg0xqQwex6e6F25S5XA== - stylelint-config-recommended-scss@^9.0.0: version "9.0.1" resolved "https://registry.yarnpkg.com/stylelint-config-recommended-scss/-/stylelint-config-recommended-scss-9.0.1.tgz#7ea233ea637ac2d8f0b50d8aad236257e44e2cbb" From a5a46d91e948c526a5e24c9de03f8b7e52b34360 Mon Sep 17 00:00:00 2001 From: Yuki Hattori Date: Sun, 19 Feb 2023 05:47:28 +0900 Subject: [PATCH 3/6] Fix stylelint --- src/engine/transition/keyframes/cover.scss | 1 + src/engine/transition/keyframes/coverflow.scss | 1 + src/engine/transition/keyframes/cube.scss | 1 + src/engine/transition/keyframes/diamond.scss | 1 + src/engine/transition/keyframes/drop.scss | 2 ++ src/engine/transition/keyframes/explode.scss | 2 ++ src/engine/transition/keyframes/fade.scss | 1 + src/engine/transition/keyframes/fall.scss | 2 ++ src/engine/transition/keyframes/flip.scss | 1 + src/engine/transition/keyframes/glow.scss | 1 + src/engine/transition/keyframes/implode.scss | 1 + src/engine/transition/keyframes/in-out.scss | 1 + src/engine/transition/keyframes/iris-in.scss | 1 + src/engine/transition/keyframes/iris-out.scss | 2 ++ src/engine/transition/keyframes/overlap.scss | 1 + src/engine/transition/keyframes/pivot.scss | 1 + src/engine/transition/keyframes/pull.scss | 2 ++ src/engine/transition/keyframes/push.scss | 1 + src/engine/transition/keyframes/reveal.scss | 2 ++ src/engine/transition/keyframes/rotate.scss | 1 + src/engine/transition/keyframes/slide.scss | 1 + src/engine/transition/keyframes/star.scss | 1 + src/engine/transition/keyframes/swap.scss | 1 + src/engine/transition/keyframes/swipe.scss | 3 +++ src/engine/transition/keyframes/swoosh.scss | 1 + src/engine/transition/keyframes/wiper.scss | 1 + src/engine/transition/keyframes/zoom.scss | 1 + src/templates/bespoke/_transition.scss | 1 + 28 files changed, 36 insertions(+) diff --git a/src/engine/transition/keyframes/cover.scss b/src/engine/transition/keyframes/cover.scss index 1d2c0dd6..6a0b6f6d 100644 --- a/src/engine/transition/keyframes/cover.scss +++ b/src/engine/transition/keyframes/cover.scss @@ -18,6 +18,7 @@ transform: translateX(10%); } } + @keyframes marp-incoming-transition-backward-__builtin__cover { @include utils.send-backward; } diff --git a/src/engine/transition/keyframes/coverflow.scss b/src/engine/transition/keyframes/coverflow.scss index a3bde6cf..b4f93982 100644 --- a/src/engine/transition/keyframes/coverflow.scss +++ b/src/engine/transition/keyframes/coverflow.scss @@ -14,6 +14,7 @@ z-index: 0; } } + @keyframes marp-incoming-transition-__builtin__coverflow { from { animation-timing-function: ease-in-out; diff --git a/src/engine/transition/keyframes/cube.scss b/src/engine/transition/keyframes/cube.scss index c4eee83d..7a9501c4 100644 --- a/src/engine/transition/keyframes/cube.scss +++ b/src/engine/transition/keyframes/cube.scss @@ -14,6 +14,7 @@ translateZ(50vw); } } + @keyframes marp-incoming-transition-__builtin__cube { from { z-index: 0; diff --git a/src/engine/transition/keyframes/diamond.scss b/src/engine/transition/keyframes/diamond.scss index 95b0b5af..2c3e8913 100644 --- a/src/engine/transition/keyframes/diamond.scss +++ b/src/engine/transition/keyframes/diamond.scss @@ -13,6 +13,7 @@ @keyframes marp-incoming-transition-backward-__builtin__diamond { @include utils.send-backward; } + @keyframes marp-outgoing-transition-backward-__builtin__diamond { 0% { clip-path: polygon(50% -50%, 150% 50%, 50% 150%, -50% 50%); diff --git a/src/engine/transition/keyframes/drop.scss b/src/engine/transition/keyframes/drop.scss index 01a45303..ae032ac3 100644 --- a/src/engine/transition/keyframes/drop.scss +++ b/src/engine/transition/keyframes/drop.scss @@ -30,6 +30,7 @@ box-shadow: var(--bespoke-marp-transition-drop-shadow); } } + @keyframes marp-outgoing-transition-__builtin__drop { 35% { filter: none; @@ -50,6 +51,7 @@ filter: none; } } + @keyframes marp-outgoing-transition-backward-__builtin__drop { 0% { z-index: 1; diff --git a/src/engine/transition/keyframes/explode.scss b/src/engine/transition/keyframes/explode.scss index 895a7c48..24a306f4 100644 --- a/src/engine/transition/keyframes/explode.scss +++ b/src/engine/transition/keyframes/explode.scss @@ -3,6 +3,7 @@ @keyframes marp-incoming-transition-__builtin__explode { @include utils.send-backward; } + @keyframes marp-outgoing-transition-__builtin__explode { from { animation-timing-function: ease-out; @@ -21,5 +22,6 @@ opacity: 0; } } + @keyframes marp-outgoing-transition-backward-__builtin__explode { } diff --git a/src/engine/transition/keyframes/fade.scss b/src/engine/transition/keyframes/fade.scss index 6d0086d5..21ffc3a2 100644 --- a/src/engine/transition/keyframes/fade.scss +++ b/src/engine/transition/keyframes/fade.scss @@ -7,6 +7,7 @@ opacity: 0; } } + @keyframes marp-incoming-transition-__builtin__fade { from { mix-blend-mode: plus-lighter; diff --git a/src/engine/transition/keyframes/fall.scss b/src/engine/transition/keyframes/fall.scss index 1b6a9468..aedc5abc 100644 --- a/src/engine/transition/keyframes/fall.scss +++ b/src/engine/transition/keyframes/fall.scss @@ -3,6 +3,7 @@ @keyframes marp-incoming-transition-__builtin__fall { @include utils.send-backward; } + @keyframes marp-outgoing-transition-__builtin__fall { from { animation-timing-function: cubic-bezier(0.4, 0, 1, 0.6); @@ -30,5 +31,6 @@ transform-origin: 50% 100%; } } + @keyframes marp-outgoing-transition-backward-__builtin__fall { } diff --git a/src/engine/transition/keyframes/flip.scss b/src/engine/transition/keyframes/flip.scss index 7003cdeb..cef70104 100644 --- a/src/engine/transition/keyframes/flip.scss +++ b/src/engine/transition/keyframes/flip.scss @@ -14,6 +14,7 @@ opacity: 0; } } + @keyframes marp-incoming-transition-__builtin__flip { 0% { opacity: 0; diff --git a/src/engine/transition/keyframes/glow.scss b/src/engine/transition/keyframes/glow.scss index 6fbc5b0f..c112b041 100644 --- a/src/engine/transition/keyframes/glow.scss +++ b/src/engine/transition/keyframes/glow.scss @@ -11,6 +11,7 @@ opacity: 0; } } + @keyframes marp-incoming-transition-__builtin__glow { @include utils.send-backward; diff --git a/src/engine/transition/keyframes/implode.scss b/src/engine/transition/keyframes/implode.scss index 45286437..a654490b 100644 --- a/src/engine/transition/keyframes/implode.scss +++ b/src/engine/transition/keyframes/implode.scss @@ -11,6 +11,7 @@ @keyframes marp-incoming-transition-backward-__builtin__implode { @include utils.send-backward; } + @keyframes marp-outgoing-transition-backward-__builtin__implode { from { animation-timing-function: ease-out; diff --git a/src/engine/transition/keyframes/in-out.scss b/src/engine/transition/keyframes/in-out.scss index 364b0a31..f2f535f7 100644 --- a/src/engine/transition/keyframes/in-out.scss +++ b/src/engine/transition/keyframes/in-out.scss @@ -16,6 +16,7 @@ scale(0.45) translateX(calc(var(--marp-transition-direction, 1) * -25vw)); } } + @keyframes marp-incoming-transition-__builtin__in-out { 0% { z-index: -1; diff --git a/src/engine/transition/keyframes/iris-in.scss b/src/engine/transition/keyframes/iris-in.scss index c809c6a7..ae8efd13 100644 --- a/src/engine/transition/keyframes/iris-in.scss +++ b/src/engine/transition/keyframes/iris-in.scss @@ -19,6 +19,7 @@ clip-path: circle(0); } } + @keyframes marp-incoming-transition-backward-__builtin__iris-in { @include utils.send-backward; } diff --git a/src/engine/transition/keyframes/iris-out.scss b/src/engine/transition/keyframes/iris-out.scss index 612fbe50..45cb8189 100644 --- a/src/engine/transition/keyframes/iris-out.scss +++ b/src/engine/transition/keyframes/iris-out.scss @@ -9,6 +9,7 @@ clip-path: circle(0); } } + @keyframes marp-incoming-transition-__builtin__iris-out { @include utils.send-backward; } @@ -22,5 +23,6 @@ clip-path: circle(75vmax); } } + @keyframes marp-outgoing-transition-backward-__builtin__iris-out { } diff --git a/src/engine/transition/keyframes/overlap.scss b/src/engine/transition/keyframes/overlap.scss index d3cadd02..b73c3d61 100644 --- a/src/engine/transition/keyframes/overlap.scss +++ b/src/engine/transition/keyframes/overlap.scss @@ -7,6 +7,7 @@ filter: contrast(0); } } + @keyframes marp-incoming-transition-__builtin__overlap { 0% { mix-blend-mode: overlay; diff --git a/src/engine/transition/keyframes/pivot.scss b/src/engine/transition/keyframes/pivot.scss index 9d8e0d07..0bf8848b 100644 --- a/src/engine/transition/keyframes/pivot.scss +++ b/src/engine/transition/keyframes/pivot.scss @@ -15,6 +15,7 @@ @keyframes marp-incoming-transition-backward-__builtin__pivot { @include utils.send-backward; } + @keyframes marp-outgoing-transition-backward-__builtin__pivot { from { transform-origin: left top; diff --git a/src/engine/transition/keyframes/pull.scss b/src/engine/transition/keyframes/pull.scss index b01bd0eb..48daf2f5 100644 --- a/src/engine/transition/keyframes/pull.scss +++ b/src/engine/transition/keyframes/pull.scss @@ -9,6 +9,7 @@ transform: translateX(-100%); } } + @keyframes marp-incoming-transition-__builtin__pull { @include utils.send-backward; } @@ -19,5 +20,6 @@ transform: translateX(-100%); } } + @keyframes marp-outgoing-transition-backward-__builtin__pull { } diff --git a/src/engine/transition/keyframes/push.scss b/src/engine/transition/keyframes/push.scss index 1c86d5cc..c988131e 100644 --- a/src/engine/transition/keyframes/push.scss +++ b/src/engine/transition/keyframes/push.scss @@ -16,6 +16,7 @@ transform: translateX(100%); } } + @keyframes marp-incoming-transition-backward-__builtin__push { @include utils.send-backward; } diff --git a/src/engine/transition/keyframes/reveal.scss b/src/engine/transition/keyframes/reveal.scss index f6a2f2b0..3ec67fb5 100644 --- a/src/engine/transition/keyframes/reveal.scss +++ b/src/engine/transition/keyframes/reveal.scss @@ -10,12 +10,14 @@ transform: translateX(-10%); } } + @keyframes marp-incoming-transition-__builtin__reveal { @include utils.send-backward; } @keyframes marp-outgoing-transition-backward-__builtin__reveal { } + @keyframes marp-incoming-transition-backward-__builtin__reveal { from { opacity: 0; diff --git a/src/engine/transition/keyframes/rotate.scss b/src/engine/transition/keyframes/rotate.scss index 52e2d682..a020f630 100644 --- a/src/engine/transition/keyframes/rotate.scss +++ b/src/engine/transition/keyframes/rotate.scss @@ -15,6 +15,7 @@ opacity: 0; } } + @keyframes marp-incoming-transition-__builtin__rotate { from { opacity: 0; diff --git a/src/engine/transition/keyframes/slide.scss b/src/engine/transition/keyframes/slide.scss index 113838b3..c2f6a50d 100644 --- a/src/engine/transition/keyframes/slide.scss +++ b/src/engine/transition/keyframes/slide.scss @@ -8,6 +8,7 @@ animation-timing-function: ease-in-out; } } + @keyframes marp-outgoing-transition-__builtin__slide { from { animation-timing-function: ease-in-out; diff --git a/src/engine/transition/keyframes/star.scss b/src/engine/transition/keyframes/star.scss index 5e388ac1..27a69a52 100644 --- a/src/engine/transition/keyframes/star.scss +++ b/src/engine/transition/keyframes/star.scss @@ -39,6 +39,7 @@ } } } + @keyframes marp-incoming-transition-backward-__builtin__star { @include utils.send-backward; } diff --git a/src/engine/transition/keyframes/swap.scss b/src/engine/transition/keyframes/swap.scss index 9df9735f..fa20eaf7 100644 --- a/src/engine/transition/keyframes/swap.scss +++ b/src/engine/transition/keyframes/swap.scss @@ -19,6 +19,7 @@ z-index: 0; } } + @keyframes marp-incoming-transition-__builtin__swap { 0% { filter: brightness(0.75); diff --git a/src/engine/transition/keyframes/swipe.scss b/src/engine/transition/keyframes/swipe.scss index f8cf48e2..04ada39a 100644 --- a/src/engine/transition/keyframes/swipe.scss +++ b/src/engine/transition/keyframes/swipe.scss @@ -13,6 +13,7 @@ z-index: 1; } } + @keyframes marp-incoming-transition-__builtin__swipe { 0% { animation-timing-function: ease-in-out; @@ -25,6 +26,7 @@ transform: scale(1); } } + @keyframes marp-outgoing-transition-backward-__builtin__swipe { 0% { animation-timing-function: ease-in-out; @@ -35,6 +37,7 @@ transform: scale(0.95); } } + @keyframes marp-incoming-transition-backward-__builtin__swipe { 0% { animation-timing-function: ease-out; diff --git a/src/engine/transition/keyframes/swoosh.scss b/src/engine/transition/keyframes/swoosh.scss index ed614a91..7a37be57 100644 --- a/src/engine/transition/keyframes/swoosh.scss +++ b/src/engine/transition/keyframes/swoosh.scss @@ -14,6 +14,7 @@ @keyframes marp-incoming-transition-backward-__builtin__swoosh { @include utils.send-backward; } + @keyframes marp-outgoing-transition-backward-__builtin__swoosh { from { transform: translate(0, 0) scale(1) perspective(100vw); diff --git a/src/engine/transition/keyframes/wiper.scss b/src/engine/transition/keyframes/wiper.scss index b0950e48..9b76a50c 100644 --- a/src/engine/transition/keyframes/wiper.scss +++ b/src/engine/transition/keyframes/wiper.scss @@ -18,6 +18,7 @@ clip-path: polygon(50% 100%, 0% 100%, 0% 0%, 100% 0%, 100% 100%); } } + @keyframes marp-incoming-transition-backward-__builtin__wiper { 0% { clip-path: polygon(50% 100%, 100% 100%, 100% 100%, 100% 100%, 100% 100%); diff --git a/src/engine/transition/keyframes/zoom.scss b/src/engine/transition/keyframes/zoom.scss index 02422987..dbfb5bb8 100644 --- a/src/engine/transition/keyframes/zoom.scss +++ b/src/engine/transition/keyframes/zoom.scss @@ -11,6 +11,7 @@ @keyframes marp-incoming-transition-backward-__builtin__zoom { @include utils.send-backward; } + @keyframes marp-outgoing-transition-backward-__builtin__zoom { from { animation-timing-function: ease-in; diff --git a/src/templates/bespoke/_transition.scss b/src/templates/bespoke/_transition.scss index a267b819..00080f4d 100644 --- a/src/templates/bespoke/_transition.scss +++ b/src/templates/bespoke/_transition.scss @@ -8,6 +8,7 @@ opacity: 0; } } + @keyframes __bespoke_marp_transition_reduced_incoming__ { 0% { opacity: 0; From d57b571793dd94507b8d8d2b90f77919b5bebc37 Mon Sep 17 00:00:00 2001 From: Yuki Hattori Date: Sun, 19 Feb 2023 05:50:40 +0900 Subject: [PATCH 4/6] Upgrade Node.js to 18.14.1 --- .circleci/config.yml | 2 +- .github/workflows/test-win.yml | 2 +- .nvmrc | 2 +- Dockerfile | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 165dc70a..8f43eef9 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -12,7 +12,7 @@ executors: default: false version: type: string - default: '18.12' # Specify LTS major and minor for development + default: '18.14.1' # Specify LTS major and minor for development docker: - image: cimg/node:<< parameters.version >><<# parameters.browser >>-browsers<> working_directory: ~/marp-cli diff --git a/.github/workflows/test-win.yml b/.github/workflows/test-win.yml index 90eabc70..4e71991d 100644 --- a/.github/workflows/test-win.yml +++ b/.github/workflows/test-win.yml @@ -21,7 +21,7 @@ jobs: node-version: - '^14.21.1' - '^16.18.1' - - '18.13.0' + - '18.14.1' steps: # - name: Output concurrency group diff --git a/.nvmrc b/.nvmrc index d939939b..617bcf91 100644 --- a/.nvmrc +++ b/.nvmrc @@ -1 +1 @@ -18.13.0 +18.14.1 diff --git a/Dockerfile b/Dockerfile index bf9dcdf1..bc1205a6 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM node:18.13.0-alpine +FROM node:18.14.1-alpine LABEL maintainer "Marp team" RUN apk update && apk upgrade && \ From 49e556fb583df49d74e2af3fdc59b5a91f251555 Mon Sep 17 00:00:00 2001 From: Yuki Hattori Date: Sun, 19 Feb 2023 06:54:14 +0900 Subject: [PATCH 5/6] Update tests due to the change of behavior about jest.restoreAllMocks() --- test/__mocks__/fs.ts | 25 +- test/cli.ts | 7 +- test/converter.ts | 140 +++++--- test/index.ts | 66 ++-- test/marp-cli.ts | 758 +++++++++++++++++++++++++++------------- test/server.ts | 102 +++--- test/templates/watch.ts | 20 +- test/theme.ts | 31 +- test/watcher.ts | 39 ++- 9 files changed, 771 insertions(+), 417 deletions(-) diff --git a/test/__mocks__/fs.ts b/test/__mocks__/fs.ts index 87a8f5dc..4883d2fa 100644 --- a/test/__mocks__/fs.ts +++ b/test/__mocks__/fs.ts @@ -2,17 +2,34 @@ import { promisify } from 'util' const fs = jest.requireActual('fs') +let writeFileMockSpy: jest.SpyInstance | undefined +let writeFilePromiseMockSpy: jest.SpyInstance | undefined + +afterEach(() => { + writeFileMockSpy?.mockRestore() + writeFileMockSpy = undefined + + writeFilePromiseMockSpy?.mockRestore() + writeFilePromiseMockSpy = undefined +}) + fs.writeFile[promisify.custom] = (path, data) => new Promise((resolve, reject) => fs.writeFile(path, data, (e) => (e ? reject(e) : resolve())) ) fs.__mockWriteFile = (mockFn = (_, __, callback) => callback()) => { - jest - .spyOn(fs.promises, 'writeFile') - .mockImplementation(fs.writeFile[promisify.custom]) + if (!writeFilePromiseMockSpy) { + writeFilePromiseMockSpy = jest + .spyOn(fs.promises, 'writeFile') + .mockImplementation(fs.writeFile[promisify.custom]) + } + + if (!writeFileMockSpy) { + writeFileMockSpy = jest.spyOn(fs, 'writeFile').mockImplementation(mockFn) + } - return jest.spyOn(fs, 'writeFile').mockImplementation(mockFn) + return writeFileMockSpy } module.exports = fs diff --git a/test/cli.ts b/test/cli.ts index 7dc3ff78..b50da045 100644 --- a/test/cli.ts +++ b/test/cli.ts @@ -1,14 +1,13 @@ import chalk from 'chalk' import { error, info, silence, warn } from '../src/cli' -afterEach(() => { - jest.restoreAllMocks() - silence(false) -}) +afterEach(() => silence(false)) describe('CLI helpers', () => { let spy: jest.SpyInstance + afterEach(() => spy?.mockRestore()) + describe('#error', () => { beforeEach(() => (spy = jest.spyOn(console, 'error').mockImplementation())) diff --git a/test/converter.ts b/test/converter.ts index 3b6414df..6402a220 100644 --- a/test/converter.ts +++ b/test/converter.ts @@ -28,8 +28,8 @@ beforeEach(() => { mkdirSpy = jest.spyOn(fs.promises, 'mkdir').mockImplementation() }) +afterEach(() => mkdirSpy.mockRestore()) afterAll(() => Converter.closeBrowser()) -afterEach(() => jest.restoreAllMocks()) describe('Converter', () => { const onePath = path.resolve(__dirname, '_files/1.md') @@ -257,19 +257,24 @@ describe('Converter', () => { describe('when given URL is invalid', () => { it('outputs warning and does not override URL', async () => { const warn = jest.spyOn(console, 'warn').mockImplementation() - const { result } = await instance({ - globalDirectives: { url: '[INVALID]' }, - }).convert('---\nurl: https://example.com/\n---') - expect(warn).toHaveBeenCalledWith( - expect.stringContaining('Specified canonical URL is ignored') - ) - expect(warn).toHaveBeenCalledWith( - expect.stringContaining('[INVALID]') - ) - expect(result).toContain( - '' - ) + try { + const { result } = await instance({ + globalDirectives: { url: '[INVALID]' }, + }).convert('---\nurl: https://example.com/\n---') + + expect(warn).toHaveBeenCalledWith( + expect.stringContaining('Specified canonical URL is ignored') + ) + expect(warn).toHaveBeenCalledWith( + expect.stringContaining('[INVALID]') + ) + expect(result).toContain( + '' + ) + } finally { + warn.mockRestore() + } }) }) }) @@ -497,13 +502,17 @@ describe('Converter', () => { const write = (fs as any).__mockWriteFile() const stdout = jest.spyOn(process.stdout, 'write').mockImplementation() - const output = '-' - const ret = await instance({ output }).convertFile(new File(threePath)) + try { + const output = '-' + const ret = await instance({ output }).convertFile(new File(threePath)) - expect(write).not.toHaveBeenCalled() - expect(stdout).toHaveBeenCalledTimes(1) - expect(ret.file.path).toBe(threePath) - expect(ret.newFile?.type).toBe(FileType.StandardIO) + expect(write).not.toHaveBeenCalled() + expect(stdout).toHaveBeenCalledTimes(1) + expect(ret.file.path).toBe(threePath) + expect(ret.newFile?.type).toBe(FileType.StandardIO) + } finally { + stdout.mockRestore() + } }) describe('when convert type is PDF', () => { @@ -568,23 +577,30 @@ describe('Converter', () => { const fileTmp = jest.spyOn(File.prototype, 'saveTmpFile') const warn = jest.spyOn(console, 'warn').mockImplementation() - await pdfInstance({ - allowLocalFiles: true, - output: '-', - }).convertFile(file) - - expect(warn).toHaveBeenCalledWith( - expect.stringContaining( - 'Insecure local file accessing is enabled' + try { + await pdfInstance({ + allowLocalFiles: true, + output: '-', + }).convertFile(file) + + expect(warn).toHaveBeenCalledWith( + expect.stringContaining( + 'Insecure local file accessing is enabled' + ) ) - ) - expect(fileTmp).toHaveBeenCalledWith( - expect.objectContaining({ extension: '.html' }) - ) - expect(fileCleanup).toHaveBeenCalledWith( - expect.stringContaining(os.tmpdir()) - ) - expect(fileSave).toHaveBeenCalled() + expect(fileTmp).toHaveBeenCalledWith( + expect.objectContaining({ extension: '.html' }) + ) + expect(fileCleanup).toHaveBeenCalledWith( + expect.stringContaining(os.tmpdir()) + ) + expect(fileSave).toHaveBeenCalled() + } finally { + fileCleanup.mockRestore() + fileSave.mockRestore() + fileTmp.mockRestore() + warn.mockRestore() + } }, puppeteerTimeoutMs ) @@ -1176,24 +1192,29 @@ describe('Converter', () => { it('converts markdown file to empty text and save to specified path when output is defined but no notes exist', async () => { const warn = jest.spyOn(console, 'warn').mockImplementation() - const notesInstance = (opts: Partial = {}) => - instance({ ...opts, type: ConvertType.notes }) - const write = (fs as any).__mockWriteFile() - const output = './specified.txt' - const ret = await notesInstance({ output }).convertFile( - new File(onePath) - ) - const notes: Buffer = write.mock.calls[0][1] + try { + const notesInstance = (opts: Partial = {}) => + instance({ ...opts, type: ConvertType.notes }) - expect(warn).toHaveBeenCalledWith( - expect.stringContaining('contains no notes') - ) - expect(write).toHaveBeenCalled() - expect(write.mock.calls[0][0]).toBe('./specified.txt') - expect(notes.toString()).toBe('') - expect(ret.newFile?.path).toBe('./specified.txt') - expect(ret.newFile?.buffer).toBe(notes) + const write = (fs as any).__mockWriteFile() + const output = './specified.txt' + const ret = await notesInstance({ output }).convertFile( + new File(onePath) + ) + const notes: Buffer = write.mock.calls[0][1] + + expect(warn).toHaveBeenCalledWith( + expect.stringContaining('contains no notes') + ) + expect(write).toHaveBeenCalled() + expect(write.mock.calls[0][0]).toBe('./specified.txt') + expect(notes.toString()).toBe('') + expect(ret.newFile?.path).toBe('./specified.txt') + expect(ret.newFile?.buffer).toBe(notes) + } finally { + warn.mockRestore() + } }) }) }) @@ -1220,14 +1241,19 @@ describe('Converter', () => { it('converts passed files when output is stdout', async () => { const write = (fs as any).__mockWriteFile() const stdout = jest.spyOn(process.stdout, 'write').mockImplementation() - const files = [new File(onePath), new File(twoPath)] - await instance({ output: '-' }).convertFiles(files, { - onConverted: (result) => expect(files).toContain(result.file), - }) + try { + const files = [new File(onePath), new File(twoPath)] - expect(write).not.toHaveBeenCalled() - expect(stdout).toHaveBeenCalledTimes(2) + await instance({ output: '-' }).convertFiles(files, { + onConverted: (result) => expect(files).toContain(result.file), + }) + + expect(write).not.toHaveBeenCalled() + expect(stdout).toHaveBeenCalledTimes(2) + } finally { + stdout.mockRestore() + } }) }) }) diff --git a/test/index.ts b/test/index.ts index 3d4c7500..7a804e86 100644 --- a/test/index.ts +++ b/test/index.ts @@ -6,44 +6,54 @@ import * as puppeteerUtil from '../src/utils/puppeteer' const stdinBuffer = getStdin.buffer -afterEach(() => { - jest.restoreAllMocks() - jest.clearAllMocks() -}) +afterEach(() => jest.clearAllMocks()) describe('Marp CLI API interface', () => { it('runs Marp CLI with specific options', async () => { const marpCliSpy = jest.spyOn(marpCli, 'marpCli').mockResolvedValue(0) - const ret = await api([], { baseUrl: 'https://example.com/' }) - expect(ret).toBe(0) - expect(marpCliSpy).toHaveBeenCalled() + try { + const ret = await api([], { baseUrl: 'https://example.com/' }) + + expect(ret).toBe(0) + expect(marpCliSpy).toHaveBeenCalled() - const opts: marpCli.MarpCLIInternalOptions = marpCliSpy.mock.calls[0][1] + const opts: marpCli.MarpCLIInternalOptions = marpCliSpy.mock.calls[0][1] - expect(opts.baseUrl).toBe('https://example.com/') - expect(opts.stdin).toBe(false) - expect(opts.throwErrorAlways).toBe(true) + expect(opts.baseUrl).toBe('https://example.com/') + expect(opts.stdin).toBe(false) + expect(opts.throwErrorAlways).toBe(true) + } finally { + marpCliSpy.mockRestore() + } }) it('does not read input from stdin if called API', async () => { - jest.spyOn(console, 'error').mockImplementation() + const cliError = jest.spyOn(console, 'error').mockImplementation() - await marpCli.cliInterface([]) - expect(stdinBuffer).toHaveBeenCalled() - ;(stdinBuffer as jest.Mock).mockClear() + try { + await marpCli.cliInterface([]) + expect(stdinBuffer).toHaveBeenCalled() + ;(stdinBuffer as jest.Mock).mockClear() - await api([]) - expect(stdinBuffer).not.toHaveBeenCalled() + await api([]) + expect(stdinBuffer).not.toHaveBeenCalled() + } finally { + cliError.mockRestore() + } }) it('always throws error if CLI met an error to suspend', async () => { - jest.spyOn(console, 'error').mockImplementation() + const cliError = jest.spyOn(console, 'error').mockImplementation() - const fakePath = path.resolve(__dirname, '__fake') + try { + const fakePath = path.resolve(__dirname, '__fake') - expect(await marpCli.cliInterface(['-c', fakePath])).toBeGreaterThan(0) - await expect(api(['-c', fakePath])).rejects.toBeInstanceOf(CLIError) + expect(await marpCli.cliInterface(['-c', fakePath])).toBeGreaterThan(0) + await expect(api(['-c', fakePath])).rejects.toBeInstanceOf(CLIError) + } finally { + cliError.mockRestore() + } }) it('resets cached Chrome path every time', async () => { @@ -51,12 +61,16 @@ describe('Marp CLI API interface', () => { puppeteerUtil, 'resetExecutablePath' ) - jest.spyOn(marpCli, 'marpCli').mockResolvedValue(0) + const marpCliSpy = jest.spyOn(marpCli, 'marpCli').mockResolvedValue(0) - await api([]) - expect(resetExecutablePathSpy).toHaveBeenCalledTimes(1) + try { + await api([]) + expect(resetExecutablePathSpy).toHaveBeenCalledTimes(1) - await api([]) - expect(resetExecutablePathSpy).toHaveBeenCalledTimes(2) + await api([]) + expect(resetExecutablePathSpy).toHaveBeenCalledTimes(2) + } finally { + marpCliSpy.mockRestore() + } }) }) diff --git a/test/marp-cli.ts b/test/marp-cli.ts index 4a20eed2..2d3f4583 100644 --- a/test/marp-cli.ts +++ b/test/marp-cli.ts @@ -41,9 +41,12 @@ jest.mock('fs') jest.mock('../src/preview') jest.mock('../src/watcher', () => jest.createMockFromModule('../src/watcher')) +let previewEmitterOn: jest.SpyInstance + beforeEach(() => { previewEmitter.removeAllListeners() - jest + + previewEmitterOn = jest .spyOn(Preview.prototype, 'on') .mockImplementation((e, func) => previewEmitter.on(e, func)) }) @@ -55,7 +58,8 @@ afterEach(() => { observationHelper.stop() } - jest.restoreAllMocks() + previewEmitterOn?.mockRestore() + jest.clearAllMocks() }) @@ -74,28 +78,43 @@ describe('Marp CLI', () => { .mockImplementation() }) + afterEach(() => { + log.mockRestore() + findClassPath.mockRestore() + }) + const mockEnginePath = (path) => findClassPath.mockImplementation(() => path) it('outputs package versions about cli and bundled core', async () => { // isMarpCore does not return correct result in Windows environment - jest.spyOn(version, 'isMarpCore').mockResolvedValue(true) + const isMarpCoreSpy = jest + .spyOn(version, 'isMarpCore') + .mockResolvedValue(true) - expect(await marpCli([cmd])).toBe(0) - expect(log).toHaveBeenCalledWith( - expect.stringContaining(`@marp-team/marp-cli v${cliVersion}`) - ) - expect(log).toHaveBeenCalledWith( - expect.stringContaining(`@marp-team/marp-core v${coreVersion}`) - ) + try { + expect(await marpCli([cmd])).toBe(0) + expect(log).toHaveBeenCalledWith( + expect.stringContaining(`@marp-team/marp-cli v${cliVersion}`) + ) + expect(log).toHaveBeenCalledWith( + expect.stringContaining(`@marp-team/marp-core v${coreVersion}`) + ) + } finally { + isMarpCoreSpy.mockRestore() + } }) describe('when resolved core has unexpected version against bundled', () => { const pkgJson = { name: '@marp-team/marp-core', version: '0.0.0' } const pkgPath = '../node_modules/@marp-team/marp-core/package.json' + let isMarpCoreSpy: jest.SpyInstance + beforeEach(() => { - jest.spyOn(version, 'isMarpCore').mockResolvedValue(true) + isMarpCoreSpy = jest + .spyOn(version, 'isMarpCore') + .mockResolvedValue(true) mockEnginePath( assetFn('../node_modules/@marp-team/marp-core/lib/marp.js') @@ -104,7 +123,11 @@ describe('Marp CLI', () => { jest.doMock(pkgPath, () => pkgJson) }) - afterEach(() => jest.unmock(pkgPath)) + afterEach(() => { + jest.unmock(pkgPath) + + isMarpCoreSpy?.mockRestore() + }) it('outputs resolved version as user-installed core', async () => { expect(await marpCli([cmd])).toBe(0) @@ -171,6 +194,10 @@ describe('Marp CLI', () => { error = jest.spyOn(console, 'error').mockImplementation() }) + afterEach(() => { + error?.mockRestore() + }) + it('outputs help to stderr', async () => { expect(await run()).toBe(0) expect(error).toHaveBeenCalledWith(expect.stringContaining('Usage')) @@ -186,12 +213,18 @@ describe('Marp CLI', () => { describe('when CLI is running in an official Docker image', () => { it('does not output help about --preview option', async () => { - jest.spyOn(docker, 'isOfficialImage').mockImplementation(() => true) - - expect(await run()).toBe(0) - expect(error).toHaveBeenCalledWith( - expect.not.stringContaining('--preview') - ) + const isOfficialImage = jest + .spyOn(docker, 'isOfficialImage') + .mockReturnValue(true) + + try { + expect(await run()).toBe(0) + expect(error).toHaveBeenCalledWith( + expect.not.stringContaining('--preview') + ) + } finally { + isOfficialImage.mockRestore() + } }) }) }) @@ -203,9 +236,14 @@ describe('Marp CLI', () => { const warn = jest.spyOn(console, 'warn').mockImplementation() const error = jest.spyOn(console, 'error').mockImplementation() - expect(await marpCli(['_NOT_FOUND_FILE_'])).toBe(1) - expect(warn).toHaveBeenCalledWith(expect.stringContaining('Not found')) - expect(error).toHaveBeenCalledWith(expect.stringContaining('Usage')) + try { + expect(await marpCli(['_NOT_FOUND_FILE_'])).toBe(1) + expect(warn).toHaveBeenCalledWith(expect.stringContaining('Not found')) + expect(error).toHaveBeenCalledWith(expect.stringContaining('Usage')) + } finally { + warn.mockRestore() + error.mockRestore() + } }) }) @@ -213,10 +251,14 @@ describe('Marp CLI', () => { it('prints error and return error code when passed module is invalid', async () => { const error = jest.spyOn(console, 'error').mockImplementation() - expect(await marpCli(['--engine', '@marp-team/invalid'])).toBe(1) - expect(error).toHaveBeenCalledWith( - expect.stringContaining('The specified engine has not resolved.') - ) + try { + expect(await marpCli(['--engine', '@marp-team/invalid'])).toBe(1) + expect(error).toHaveBeenCalledWith( + expect.stringContaining('The specified engine has not resolved.') + ) + } finally { + error.mockRestore() + } }) }) @@ -227,52 +269,73 @@ describe('Marp CLI', () => { beforeEach(() => (writeFile = (fs as any).__mockWriteFile())) it('converts files in specified dir', async () => { - jest.spyOn(cli, 'info').mockImplementation() + const info = jest.spyOn(cli, 'info').mockImplementation() - expect(await marpCli(['--input-dir', files])).toBe(0) - expect(writeFile).toHaveBeenCalledTimes(6) - writeFile.mock.calls.forEach(([fn]) => expect(fn).toMatch(/\.html$/)) + try { + expect(await marpCli(['--input-dir', files])).toBe(0) + expect(writeFile).toHaveBeenCalledTimes(6) + writeFile.mock.calls.forEach(([fn]) => expect(fn).toMatch(/\.html$/)) + } finally { + info.mockRestore() + } }) it('allows using theme css in specified dir', async () => { - jest.spyOn(cli, 'info').mockImplementation() - expect(await marpCli(['--input-dir', files, '--theme', 'a'])).toBe(0) + const info = jest.spyOn(cli, 'info').mockImplementation() + + try { + expect(await marpCli(['--input-dir', files, '--theme', 'a'])).toBe(0) - for (const [, buffer] of writeFile.mock.calls) - expect(buffer.toString()).toContain('/* @theme a */') + for (const [, buffer] of writeFile.mock.calls) { + expect(buffer.toString()).toContain('/* @theme a */') + } + } finally { + info.mockRestore() + } }) it('prints error and return error code with invalid option(s)', async () => { const err = jest.spyOn(console, 'error').mockImplementation() - jest.spyOn(console, 'warn').mockImplementation() + const warn = jest.spyOn(console, 'warn').mockImplementation() - // Pass file path, not folder - expect(await marpCli(['--input-dir', assetFn('_files/1.md')])).toBe(1) - expect(err).toHaveBeenCalledWith( - expect.stringContaining('is not directory.') - ) + try { + // Pass file path, not folder + expect(await marpCli(['--input-dir', assetFn('_files/1.md')])).toBe(1) + expect(err).toHaveBeenCalledWith( + expect.stringContaining('is not directory.') + ) - // Pass not found path - err.mockReset() - expect(await marpCli(['--input-dir', assetFn('__NOT_FOUND__')])).toBe(1) - expect(err).toHaveBeenCalledWith(expect.stringContaining('is not found.')) - - // Pass together with regular input files - err.mockReset() - expect(await marpCli(['test.md', '--input-dir', files])).toBe(1) - expect(err).toHaveBeenCalledWith( - expect.stringContaining( - 'Cannot pass files together with input directory' + // Pass not found path + err.mockClear() + expect(await marpCli(['--input-dir', assetFn('__NOT_FOUND__')])).toBe(1) + expect(err).toHaveBeenCalledWith( + expect.stringContaining('is not found.') ) - ) + + // Pass together with regular input files + err.mockClear() + expect(await marpCli(['test.md', '--input-dir', files])).toBe(1) + expect(err).toHaveBeenCalledWith( + expect.stringContaining( + 'Cannot pass files together with input directory' + ) + ) + } finally { + err.mockRestore() + warn.mockRestore() + } }) describe('when the directory path has included glob pattern', () => { it('converts files in specified dir', async () => { - jest.spyOn(cli, 'info').mockImplementation() + const info = jest.spyOn(cli, 'info').mockImplementation() - expect(await marpCli(['--input-dir', assetFn('_files/(sp)')])).toBe(0) - expect(writeFile).toHaveBeenCalledTimes(1) + try { + expect(await marpCli(['--input-dir', assetFn('_files/(sp)')])).toBe(0) + expect(writeFile).toHaveBeenCalledTimes(1) + } finally { + info.mockRestore() + } }) }) @@ -280,16 +343,20 @@ describe('Marp CLI', () => { it('converts markdowns with keeping folder structure', async () => { const args = ['--input-dir', files, '-o', assetFn('dist')] - jest.spyOn(cli, 'info').mockImplementation() + const info = jest.spyOn(cli, 'info').mockImplementation() - expect(await marpCli(args)).toBe(0) - expect(writeFile).toHaveBeenCalledTimes(6) + try { + expect(await marpCli(args)).toBe(0) + expect(writeFile).toHaveBeenCalledTimes(6) - const outputFiles = writeFile.mock.calls.map(([fn]) => fn) - expect(outputFiles).toContain(assetFn('dist/1.html')) - expect(outputFiles).toContain(assetFn('dist/2.html')) - expect(outputFiles).toContain(assetFn('dist/3.html')) - expect(outputFiles).toContain(assetFn('dist/subfolder/5.html')) + const outputFiles = writeFile.mock.calls.map(([fn]) => fn) + expect(outputFiles).toContain(assetFn('dist/1.html')) + expect(outputFiles).toContain(assetFn('dist/2.html')) + expect(outputFiles).toContain(assetFn('dist/3.html')) + expect(outputFiles).toContain(assetFn('dist/subfolder/5.html')) + } finally { + info.mockRestore() + } }) }) @@ -301,26 +368,41 @@ describe('Marp CLI', () => { const serverStart = jest.spyOn(Server.prototype, 'start') serverStart.mockResolvedValue(0) - await runForObservation(['--input-dir', files, '--server']) - expect(info.mock.calls.map(([m]) => m)).toContainEqual( - expect.stringContaining('http://localhost:8080/') - ) - expect(serverStart).toHaveBeenCalledTimes(1) - expect(Watcher.watch).toHaveBeenCalledWith( - expect.arrayContaining([files]), - expect.objectContaining({ - mode: Watcher.WatchMode.Notify, - }) - ) + try { + await runForObservation(['--input-dir', files, '--server']) + expect(info.mock.calls.map(([m]) => m)).toContainEqual( + expect.stringContaining('http://localhost:8080/') + ) + expect(serverStart).toHaveBeenCalledTimes(1) + expect(Watcher.watch).toHaveBeenCalledWith( + expect.arrayContaining([files]), + expect.objectContaining({ + mode: Watcher.WatchMode.Notify, + }) + ) + } finally { + info.mockRestore() + serverStart.mockRestore() + } }) describe('with --preview option', () => { const run = () => runForObservation(['--input-dir', files, '--server', '--preview']) + let infoSpy: jest.SpyInstance + let serverStartSpy: jest.SpyInstance + beforeEach(() => { - jest.spyOn(cli, 'info').mockImplementation() - jest.spyOn(Server.prototype, 'start').mockResolvedValue(0) + infoSpy = jest.spyOn(cli, 'info').mockImplementation() + serverStartSpy = jest + .spyOn(Server.prototype, 'start') + .mockResolvedValue(0) + }) + + afterEach(() => { + infoSpy?.mockRestore() + serverStartSpy?.mockRestore() }) it('opens preview window through Preview.open()', async () => { @@ -330,14 +412,21 @@ describe('Marp CLI', () => { describe('when CLI is running in an official Docker image', () => { it('ignores --preview option with warning', async () => { - jest.spyOn(docker, 'isOfficialImage').mockImplementation(() => true) + const isOfficialImage = jest + .spyOn(docker, 'isOfficialImage') + .mockReturnValue(true) const warn = jest.spyOn(cli, 'warn').mockImplementation() - await run() - expect(Preview.prototype.open).not.toHaveBeenCalled() - expect(warn.mock.calls.map(([m]) => m)).toContainEqual( - expect.stringContaining('Preview option was ignored') - ) + try { + await run() + expect(Preview.prototype.open).not.toHaveBeenCalled() + expect(warn.mock.calls.map(([m]) => m)).toContainEqual( + expect.stringContaining('Preview option was ignored') + ) + } finally { + isOfficialImage.mockRestore() + warn.mockRestore() + } }) }) }) @@ -350,15 +439,20 @@ describe('Marp CLI', () => { it('resolves relative directory path from conf dir', async () => { const findDir = jest.spyOn(File, 'findDir') - jest.spyOn(console, 'warn').mockImplementation() - - expect(await marpCli(['-c', confFile])).toBe(0) - expect(findDir).toHaveBeenCalledWith(slides) - expect(writeFile).toHaveBeenCalledWith( - distHtml, - expect.any(Buffer), - expect.anything() - ) + const warn = jest.spyOn(console, 'warn').mockImplementation() + + try { + expect(await marpCli(['-c', confFile])).toBe(0) + expect(findDir).toHaveBeenCalledWith(slides) + expect(writeFile).toHaveBeenCalledWith( + distHtml, + expect.any(Buffer), + expect.anything() + ) + } finally { + findDir.mockRestore() + warn.mockRestore() + } }) }) }) @@ -375,6 +469,10 @@ describe('Marp CLI', () => { ;(fs as any).__mockWriteFile() }) + afterEach(() => { + info.mockRestore() + }) + describe('when passed value is theme name', () => { it('overrides theme to specified', async () => { const args = [assetFn('_files/1.md'), '--theme', 'gaia'] @@ -412,16 +510,21 @@ describe('Marp CLI', () => { it('prints error with advice and return error code', async () => { const cliError = jest.spyOn(cli, 'error').mockImplementation() - const args = [assetFn('_files/1.md'), '--theme', themesPath] - expect(await marpCli(args)).toBe(1) - expect(cliError.mock.calls.map(([m]) => m)).toContainEqual( - expect.stringContaining('Directory cannot pass to theme option') - ) - expect(info).toHaveBeenCalledTimes(1) + try { + const args = [assetFn('_files/1.md'), '--theme', themesPath] - const advice = stripAnsi(info.mock.calls[0][0]) - expect(advice).toContain('use --theme-set option') + expect(await marpCli(args)).toBe(1) + expect(cliError.mock.calls.map(([m]) => m)).toContainEqual( + expect.stringContaining('Directory cannot pass to theme option') + ) + expect(info).toHaveBeenCalledTimes(1) + + const advice = stripAnsi(info.mock.calls[0][0]) + expect(advice).toContain('use --theme-set option') + } finally { + cliError.mockRestore() + } }) }) }) @@ -435,15 +538,20 @@ describe('Marp CLI', () => { let convert: jest.MockInstance, any> let observeSpy: jest.MockInstance, any> + let infoSpy: jest.MockInstance beforeEach(() => { convert = jest.spyOn(Converter.prototype, 'convert') observeSpy = jest.spyOn(ThemeSet.prototype, 'observe') - jest.spyOn(cli, 'info').mockImplementation() + infoSpy = jest.spyOn(cli, 'info').mockImplementation() ;(fs as any).__mockWriteFile() }) + afterEach(() => { + infoSpy?.mockRestore() + }) + describe('with specified single file', () => { it('becomes to be able to use specified additional theme', async () => { expect( @@ -498,24 +606,34 @@ describe('Marp CLI', () => { it('outputs warning and continue conversion', async () => { const warn = jest.spyOn(console, 'warn').mockImplementation() - expect(await marpCli(baseArgs(dir))).toBe(0) - expect(convert).toHaveBeenCalledTimes(1) - expect(warn).toHaveBeenCalledWith( - expect.stringContaining('Not found additional theme CSS files') - ) + try { + expect(await marpCli(baseArgs(dir))).toBe(0) + expect(convert).toHaveBeenCalledTimes(1) + expect(warn).toHaveBeenCalledWith( + expect.stringContaining('Not found additional theme CSS files') + ) + } finally { + warn.mockRestore() + } }) }) }) }) describe('with experimental --bespoke.transition option', () => { + let error: jest.SpyInstance let warn: jest.SpyInstance beforeEach(() => { - jest.spyOn(console, 'error').mockImplementation() + error = jest.spyOn(console, 'error').mockImplementation() warn = jest.spyOn(console, 'warn').mockImplementation() }) + afterEach(() => { + error?.mockRestore() + warn?.mockRestore() + }) + const matcher = expect.stringContaining( 'transition support for bespoke template has been enabled' ) @@ -564,27 +682,37 @@ describe('Marp CLI', () => { it('converts file', async () => { const cliInfo = jest.spyOn(cli, 'info').mockImplementation() - ;(fs as any).__mockWriteFile() - expect(await marpCli([onePath])).toBe(0) + try { + ;(fs as any).__mockWriteFile() + + expect(await marpCli([onePath])).toBe(0) - const logs = cliInfo.mock.calls.map(([m]) => m) - expect(logs).toContainEqual(expect.stringContaining('1 markdown')) - expect(logs).toContainEqual(expect.stringMatching(/1\.md => .+1\.html/)) + const logs = cliInfo.mock.calls.map(([m]) => m) + expect(logs).toContainEqual(expect.stringContaining('1 markdown')) + expect(logs).toContainEqual(expect.stringMatching(/1\.md => .+1\.html/)) + } finally { + cliInfo.mockRestore() + } }) it('prints error and return error code when CLIError is raised', async () => { const cliError = jest.spyOn(cli, 'error').mockImplementation() - - jest.spyOn(cli, 'info').mockImplementation() - jest + const cliInfo = jest.spyOn(cli, 'info').mockImplementation() + const cvtFiles = jest .spyOn(Converter.prototype, 'convertFiles') .mockImplementation(() => Promise.reject(new CLIError('FAIL', 123))) - expect(await marpCli([onePath])).toBe(123) - expect(cliError.mock.calls.map(([m]) => m)).toContainEqual( - expect.stringContaining('FAIL') - ) + try { + expect(await marpCli([onePath])).toBe(123) + expect(cliError.mock.calls.map(([m]) => m)).toContainEqual( + expect.stringContaining('FAIL') + ) + } finally { + cvtFiles.mockRestore() + cliError.mockRestore() + cliInfo.mockRestore() + } }) describe('with --pdf option', () => { @@ -659,64 +787,93 @@ describe('Marp CLI', () => { }) it('allows a decimal point number', async () => { - jest + const load = jest .spyOn(Explorer.prototype, 'load') .mockResolvedValue({ filepath: conf, config: { imageScale: 0.5 } }) - const cmd = [onePath, '--config', conf] - expect((await conversion(...cmd)).options.imageScale).toBe(0.5) + try { + const cmd = [onePath, '--config', conf] + expect((await conversion(...cmd)).options.imageScale).toBe(0.5) + } finally { + load.mockRestore() + } }) it('restricts the scale factor up to x10', async () => { const warn = jest.spyOn(console, 'warn').mockImplementation() - const cmd = [onePath, '--image-scale', '15'] - expect((await conversion(...cmd)).options.imageScale).toBe(10) - expect(warn).toHaveBeenCalledWith(expect.stringContaining('restricted')) + try { + const cmd = [onePath, '--image-scale', '15'] + + expect((await conversion(...cmd)).options.imageScale).toBe(10) + expect(warn).toHaveBeenCalledWith( + expect.stringContaining('restricted') + ) + } finally { + warn.mockRestore() + } }) it('cannot specify the scale factor to zero', async () => { const cliError = jest.spyOn(cli, 'error').mockImplementation() - const cmd = [onePath, '--image-scale', '0'] - expect(await marpCli(cmd)).toBe(1) - expect(cliError).toHaveBeenCalledWith( - expect.stringContaining('cannot set as 0 or less') - ) + try { + const cmd = [onePath, '--image-scale', '0'] + + expect(await marpCli(cmd)).toBe(1) + expect(cliError).toHaveBeenCalledWith( + expect.stringContaining('cannot set as 0 or less') + ) + } finally { + cliError.mockRestore() + } }) it('cannot specify the scale factor to the negative value', async () => { const cliError = jest.spyOn(cli, 'error').mockImplementation() - const cmd = [onePath, '--image-scale', '-1'] - expect(await marpCli(cmd)).toBe(1) - expect(cliError).toHaveBeenCalledWith( - expect.stringContaining('cannot set as 0 or less') - ) + try { + const cmd = [onePath, '--image-scale', '-1'] + + expect(await marpCli(cmd)).toBe(1) + expect(cliError).toHaveBeenCalledWith( + expect.stringContaining('cannot set as 0 or less') + ) + } finally { + cliError.mockRestore() + } }) it('must be a number', async () => { const cliError = jest.spyOn(cli, 'error').mockImplementation() - - jest + const load = jest .spyOn(Explorer.prototype, 'load') .mockResolvedValue({ filepath: conf, config: { imageScale: 'test' } }) - expect(await marpCli([onePath, '-c', conf])).toBe(1) - expect(cliError).toHaveBeenCalledWith( - expect.stringContaining('must be a number') - ) + try { + expect(await marpCli([onePath, '-c', conf])).toBe(1) + expect(cliError).toHaveBeenCalledWith( + expect.stringContaining('must be a number') + ) + } finally { + cliError.mockRestore() + load.mockRestore() + } }) }) describe('with -o option', () => { it('converts file and output to stdout when -o is "-"', async () => { const stdout = jest.spyOn(process.stdout, 'write').mockImplementation() - - jest.spyOn(cli, 'info').mockImplementation() - - expect(await marpCli([onePath, '-o', '-'])).toBe(0) - expect(stdout).toHaveBeenCalledTimes(1) + const info = jest.spyOn(cli, 'info').mockImplementation() + + try { + expect(await marpCli([onePath, '-o', '-'])).toBe(0) + expect(stdout).toHaveBeenCalledTimes(1) + } finally { + stdout.mockRestore() + info.mockRestore() + } }) it('converts file with HTML type when extension is .html', async () => { @@ -763,11 +920,19 @@ describe('Marp CLI', () => { describe('with -w option', () => { it('starts watching by Watcher.watch()', async () => { - jest.spyOn(cli, 'info').mockImplementation() - ;(fs as any).__mockWriteFile() + const info = jest.spyOn(cli, 'info').mockImplementation() + + try { + ;(fs as any).__mockWriteFile() - await runForObservation([onePath, '-w']) - expect(Watcher.watch).toHaveBeenCalledWith([onePath], expect.anything()) + await runForObservation([onePath, '-w']) + expect(Watcher.watch).toHaveBeenCalledWith( + [onePath], + expect.anything() + ) + } finally { + info.mockRestore() + } }) }) @@ -775,62 +940,84 @@ describe('Marp CLI', () => { it('uses configuration file found from process.cwd()', async () => { const stdout = jest.spyOn(process.stdout, 'write').mockImplementation() - jest.spyOn(console, 'warn').mockImplementation() - jest + const warn = jest.spyOn(console, 'warn').mockImplementation() + const cwd = jest .spyOn(process, 'cwd') .mockImplementation(() => assetFn('_configs/basic/')) - expect(await marpCli(['md.md'])).toBe(0) + try { + expect(await marpCli(['md.md'])).toBe(0) - const html = stdout.mock.calls[0][0].toString() - expect(html).toContain('html') + const html = stdout.mock.calls[0][0].toString() + expect(html).toContain('html') + } finally { + stdout.mockRestore() + warn.mockRestore() + cwd.mockRestore() + } }) it('prevents looking up for configuration file if --no-config-file option is passed', async () => { const stdout = jest.spyOn(process.stdout, 'write').mockImplementation() - for (const opt of ['--no-config-file', '--no-config']) { - stdout.mockClear() + const warn = jest.spyOn(console, 'warn').mockImplementation() + const cwd = jest + .spyOn(process, 'cwd') + .mockImplementation(() => assetFn('_configs/basic/')) - jest.spyOn(console, 'warn').mockImplementation() - jest - .spyOn(process, 'cwd') - .mockImplementation(() => assetFn('_configs/basic/')) + try { + for (const opt of ['--no-config-file', '--no-config']) { + stdout.mockClear() - expect(await marpCli(['md.md', opt, '-o', '-'])).toBe(0) + expect(await marpCli(['md.md', opt, '-o', '-'])).toBe(0) - // html option in a configuration file should not work - const html = stdout.mock.calls[0][0].toString() - expect(html).toContain('<b>html</b>') + // html option in a configuration file should not work + const html = stdout.mock.calls[0][0].toString() + expect(html).toContain('<b>html</b>') + } + } finally { + stdout.mockRestore() + warn.mockRestore() + cwd.mockRestore() } }) it('uses marp section in package.json that is found in process.cwd()', async () => { const stdout = jest.spyOn(process.stdout, 'write').mockImplementation() - jest.spyOn(console, 'warn').mockImplementation() - jest + const warn = jest.spyOn(console, 'warn').mockImplementation() + const cwd = jest .spyOn(process, 'cwd') .mockImplementation(() => assetFn('_configs/package-json/')) - expect(await marpCli(['md.md', '-o', '-'])).toBe(0) + try { + expect(await marpCli(['md.md', '-o', '-'])).toBe(0) - const html = stdout.mock.calls[0][0].toString() - expect(html).toContain('@theme b') + const html = stdout.mock.calls[0][0].toString() + expect(html).toContain('@theme b') + } finally { + stdout.mockRestore() + warn.mockRestore() + cwd.mockRestore() + } }) describe('when --config-file / --config / -c option is passed', () => { it('prints error when specified config is not found', async () => { const error = jest.spyOn(console, 'error').mockImplementation() - expect(await marpCli(['--config-file', '_NOT_FOUND_FILE_'])).toBe(1) - expect(error).toHaveBeenCalledTimes(1) - expect(error).toHaveBeenCalledWith( - expect.stringContaining('_NOT_FOUND_FILE_') - ) - expect(error).toHaveBeenCalledWith( - expect.stringContaining('Could not find or parse configuration') - ) + try { + expect(await marpCli(['--config-file', '_NOT_FOUND_FILE_'])).toBe(1) + expect(error).toHaveBeenCalledTimes(1) + expect(error).toHaveBeenCalledWith( + expect.stringContaining('_NOT_FOUND_FILE_') + ) + expect(error).toHaveBeenCalledWith( + expect.stringContaining('Could not find or parse configuration') + ) + } finally { + error.mockRestore() + } }) it('applies specified config', async () => { @@ -838,13 +1025,20 @@ describe('Marp CLI', () => { .spyOn(process.stdout, 'write') .mockImplementation() - jest.spyOn(console, 'warn').mockImplementation() + const warn = jest.spyOn(console, 'warn').mockImplementation() - const conf = assetFn('_configs/marpit/config.js') - expect(await marpCli(['--config', conf, onePath, '-o', '-'])).toBe(0) + try { + const conf = assetFn('_configs/marpit/config.js') + expect(await marpCli(['--config', conf, onePath, '-o', '-'])).toBe( + 0 + ) - const html = stdout.mock.calls[0][0].toString() - expect(html).toContain('@theme a') + const html = stdout.mock.calls[0][0].toString() + expect(html).toContain('@theme a') + } finally { + stdout.mockRestore() + warn.mockRestore() + } }) it('allows custom engine class specified in js config', async () => { @@ -852,29 +1046,39 @@ describe('Marp CLI', () => { .spyOn(process.stdout, 'write') .mockImplementation() - jest.spyOn(console, 'warn').mockImplementation() - jest + const warn = jest.spyOn(console, 'warn').mockImplementation() + const cwd = jest .spyOn(process, 'cwd') .mockImplementation(() => assetFn('_configs/custom-engine/')) - expect(await marpCli(['md.md', '-o', '-'])).toBe(0) - - const html = stdout.mock.calls[0][0].toString() - expect(html).toContain('custom') - expect(html).toContain('/* custom */') + try { + expect(await marpCli(['md.md', '-o', '-'])).toBe(0) + + const html = stdout.mock.calls[0][0].toString() + expect(html).toContain('custom') + expect(html).toContain('/* custom */') + } finally { + stdout.mockRestore() + warn.mockRestore() + cwd.mockRestore() + } }) it('allows custom engine function specified in js config', async () => { - jest.spyOn(console, 'warn').mockImplementation() + const warn = jest.spyOn(console, 'warn').mockImplementation() - const conf = assetFn('_configs/custom-engine/anonymous.js') - const md = assetFn('_configs/custom-engine/md.md') - const { engine } = require(conf) // eslint-disable-line @typescript-eslint/no-var-requires + try { + const conf = assetFn('_configs/custom-engine/anonymous.js') + const md = assetFn('_configs/custom-engine/md.md') + const { engine } = require(conf) // eslint-disable-line @typescript-eslint/no-var-requires - expect(await marpCli(['-c', conf, md, '--no-output'])).toBe(0) - expect(engine).toHaveBeenCalledWith( - expect.objectContaining({ customOption: true }) - ) + expect(await marpCli(['-c', conf, md, '--no-output'])).toBe(0) + expect(engine).toHaveBeenCalledWith( + expect.objectContaining({ customOption: true }) + ) + } finally { + warn.mockRestore() + } }) }) }) @@ -882,9 +1086,13 @@ describe('Marp CLI', () => { describe('with --preview / -p option', () => { let warn: jest.SpyInstance, any> - beforeEach( - () => (warn = jest.spyOn(console, 'warn').mockImplementation()) - ) + beforeEach(() => { + warn = jest.spyOn(console, 'warn').mockImplementation() + }) + + afterEach(() => { + warn.mockRestore() + }) it('opens preview window through Preview.open()', async () => { await runForObservation([onePath, '-p', '--no-output']) @@ -906,13 +1114,20 @@ describe('Marp CLI', () => { describe('when CLI is running in an official Docker image', () => { it('ignores --preview option with warning', async () => { - jest.spyOn(docker, 'isOfficialImage').mockImplementation(() => true) - await marpCli([onePath, '--preview', '--no-output']) + const isOfficialImage = jest + .spyOn(docker, 'isOfficialImage') + .mockReturnValue(true) - expect(Preview.prototype.open).not.toHaveBeenCalled() - expect(warn).toHaveBeenCalledWith( - expect.stringContaining('Preview option was ignored') - ) + try { + await marpCli([onePath, '--preview', '--no-output']) + + expect(Preview.prototype.open).not.toHaveBeenCalled() + expect(warn).toHaveBeenCalledWith( + expect.stringContaining('Preview option was ignored') + ) + } finally { + isOfficialImage.mockRestore() + } }) }) }) @@ -1047,75 +1262,107 @@ describe('Marp CLI', () => { describe('with passing directory', () => { it('finds out markdown files recursively', async () => { const cliInfo = jest.spyOn(cli, 'info').mockImplementation() - - jest + const cvtFiles = jest .spyOn(Converter.prototype, 'convertFiles') .mockImplementation(() => []) - expect(await marpCli([assetFn('_files')])).toBe(0) - expect(cliInfo.mock.calls.map(([m]) => m)).toContainEqual( - expect.stringContaining('6 markdowns') - ) + try { + expect(await marpCli([assetFn('_files')])).toBe(0) + expect(cliInfo.mock.calls.map(([m]) => m)).toContainEqual( + expect.stringContaining('6 markdowns') + ) + } finally { + cliInfo.mockRestore() + cvtFiles.mockRestore() + } }) describe('when glob special chars are included in real file path', () => { it('finds out a file correctly', async () => { - jest.spyOn(cli, 'info').mockImplementation() - jest + const cliInfo = jest.spyOn(cli, 'info').mockImplementation() + const cvtFiles = jest .spyOn(Converter.prototype, 'convertFiles') .mockImplementation(() => []) - expect(await marpCli([assetFn('_files/字/(non-ascii).md')])).toBe(0) + try { + expect(await marpCli([assetFn('_files/字/(non-ascii).md')])).toBe(0) + } finally { + cliInfo.mockRestore() + cvtFiles.mockRestore() + } }) }) describe('when non-ASCII code is included in directory name', () => { it('finds out markdown files correctly', async () => { - jest.spyOn(cli, 'info').mockImplementation() - jest + const cliInfo = jest.spyOn(cli, 'info').mockImplementation() + const cvtFiles = jest .spyOn(Converter.prototype, 'convertFiles') .mockImplementation(() => []) - expect(await marpCli([assetFn('_files/字')])).toBe(0) + try { + expect(await marpCli([assetFn('_files/字')])).toBe(0) + } finally { + cliInfo.mockRestore() + cvtFiles.mockRestore() + } }) }) describe('when glob special chars are included in real directory path', () => { it('finds out markdown files in specified directory correctly', async () => { - jest.spyOn(cli, 'info').mockImplementation() - jest + const cliInfo = jest.spyOn(cli, 'info').mockImplementation() + const cvtFiles = jest .spyOn(Converter.prototype, 'convertFiles') .mockImplementation(() => []) - expect(await marpCli([assetFn('_files/(sp)')])).toBe(0) + try { + expect(await marpCli([assetFn('_files/(sp)')])).toBe(0) + } finally { + cliInfo.mockRestore() + cvtFiles.mockRestore() + } }) }) describe('with --server option', () => { it('treats passed directory as an input directory of the server', async () => { - jest.spyOn(cli, 'info').mockImplementation() + const cliInfo = jest.spyOn(cli, 'info').mockImplementation() const serverStart = jest.spyOn(Server.prototype, 'start') serverStart.mockResolvedValue(0) - await runForObservation(['--server', assetFn('_files')]) - expect(serverStart).toHaveBeenCalledTimes(1) + try { + await runForObservation(['--server', assetFn('_files')]) + expect(serverStart).toHaveBeenCalledTimes(1) - const server: any = serverStart.mock.instances[0] - const converter: Converter = server.converter + const server: any = serverStart.mock.instances[0] + const converter: Converter = server.converter - expect(converter.options.inputDir).toBe(assetFn('_files')) + expect(converter.options.inputDir).toBe(assetFn('_files')) + } finally { + cliInfo.mockRestore() + serverStart.mockRestore() + } }) describe('with --preview option', () => { it('opens served address through Preview.open()', async () => { - jest.spyOn(console, 'warn').mockImplementation() + const warn = jest.spyOn(console, 'warn').mockImplementation() - await runForObservation(['--server', assetFn('_files'), '--preview']) - expect(Preview.prototype.open).toHaveBeenCalledTimes(1) - expect(Preview.prototype.open).toHaveBeenCalledWith( - expect.stringMatching(/^http:\/\/localhost:/) - ) + try { + await runForObservation([ + '--server', + assetFn('_files'), + '--preview', + ]) + expect(Preview.prototype.open).toHaveBeenCalledTimes(1) + expect(Preview.prototype.open).toHaveBeenCalledWith( + expect.stringMatching(/^http:\/\/localhost:/) + ) + } finally { + warn.mockRestore() + } }) }) }) @@ -1128,19 +1375,27 @@ describe('Marp CLI', () => { it('prints error and return error code', async () => { const error = jest.spyOn(console, 'error').mockImplementation() - expect(await marpCli([...baseArgs, '--server'])).toBe(1) - expect(error).toHaveBeenCalledWith( - expect.stringContaining('specify just one directory') - ) + try { + expect(await marpCli([...baseArgs, '--server'])).toBe(1) + expect(error).toHaveBeenCalledWith( + expect.stringContaining('specify just one directory') + ) + } finally { + error.mockRestore() + } }) }) describe('with --preview option', () => { it('opens 2 preview windows through Preview.open()', async () => { - jest.spyOn(console, 'warn').mockImplementation() + const warn = jest.spyOn(console, 'warn').mockImplementation() - await runForObservation([...baseArgs, '--preview', '--no-output']) - expect(Preview.prototype.open).toHaveBeenCalledTimes(2) + try { + await runForObservation([...baseArgs, '--preview', '--no-output']) + expect(Preview.prototype.open).toHaveBeenCalledTimes(2) + } finally { + warn.mockRestore() + } }) }) }) @@ -1148,12 +1403,13 @@ describe('Marp CLI', () => { describe('with passing from stdin', () => { let cliInfo: jest.SpyInstance let stdout: jest.SpyInstance + let stdinBuffer: jest.SpyInstance beforeEach(() => { cliInfo = jest.spyOn(cli, 'info').mockImplementation() stdout = jest.spyOn(process.stdout, 'write').mockImplementation() - jest + stdinBuffer = jest .spyOn(getStdin, 'buffer') .mockResolvedValue(Buffer.from('# markdown')) @@ -1161,6 +1417,12 @@ describe('Marp CLI', () => { ;(File as any).stdinBuffer = undefined }) + afterEach(() => { + cliInfo?.mockRestore() + stdout?.mockRestore() + stdinBuffer?.mockRestore() + }) + it('converts markdown came from stdin and outputs to stdout', async () => { expect(await marpCli()).toBe(0) expect(cliInfo.mock.calls.map(([m]) => m)).toContainEqual( @@ -1171,13 +1433,17 @@ describe('Marp CLI', () => { describe('with --stdin option as false', () => { it('does not convert stdin even if passed', async () => { - jest.spyOn(console, 'error').mockImplementation() + const error = jest.spyOn(console, 'error').mockImplementation() - expect(await marpCli(['--stdin=false'])).toBe(0) - expect(cliInfo.mock.calls.map(([m]) => m)).not.toContainEqual( - expect.stringContaining(' => ') - ) - expect(stdout).not.toHaveBeenCalledWith(expect.any(Buffer)) + try { + expect(await marpCli(['--stdin=false'])).toBe(0) + expect(cliInfo.mock.calls.map(([m]) => m)).not.toContainEqual( + expect.stringContaining(' => ') + ) + expect(stdout).not.toHaveBeenCalledWith(expect.any(Buffer)) + } finally { + error.mockRestore() + } }) }) }) diff --git a/test/server.ts b/test/server.ts index c84e8466..dc4d44bd 100644 --- a/test/server.ts +++ b/test/server.ts @@ -15,8 +15,6 @@ import { ThemeSet } from '../src/theme' jest.mock('express') -afterEach(() => jest.restoreAllMocks()) - describe('Server', () => { let themeSet: ThemeSet beforeEach(async () => (themeSet = await ThemeSet.initialize([]))) @@ -144,48 +142,52 @@ describe('Server', () => { it('triggers conversion with corresponded type option', async () => { const server = await setupServer() - jest + const convertFileSpy = jest .spyOn(server.converter, 'convertFile') .mockResolvedValue({ newFile: { buffer: 'converted' } }) - const mdRes = await request(server.server).get('/1.md') - expect(server.converter.options.type).toBe(ConvertType.html) - expect(mdRes.type).toBe('text/html') - - const pdfRes = await request(server.server).get('/1.md?pdf') - expect(server.converter.options.type).toBe(ConvertType.pdf) - expect(pdfRes.type).toBe('application/pdf') - - const pptxRes = await request(server.server).get('/1.md?pptx') - expect(server.converter.options.type).toBe(ConvertType.pptx) - expect(pptxRes.type).toBe( - 'application/vnd.openxmlformats-officedocument.presentationml.presentation' - ) - - // PPTX document is downloaded with a proper filename because it cannot show in browser window. - expect(pptxRes.header['content-disposition']).toBe( - 'attachment; filename="1.pptx"' - ) - - const pngRes = await request(server.server).get('/1.md?png') - expect(server.converter.options.type).toBe(ConvertType.png) - expect(pngRes.type).toBe('image/png') - - const jpgRes = await request(server.server).get('/1.md?jpg') - expect(server.converter.options.type).toBe(ConvertType.jpeg) - expect(jpgRes.type).toBe('image/jpeg') - - const jpegRes = await request(server.server).get('/1.md?jpeg') - expect(server.converter.options.type).toBe(ConvertType.jpeg) - expect(jpegRes.type).toBe('image/jpeg') - - const txtRes = await request(server.server).get('/1.md?txt') - expect(server.converter.options.type).toBe(ConvertType.notes) - expect(txtRes.type).toBe('text/plain') - - const notesRes = await request(server.server).get('/1.md?notes') - expect(server.converter.options.type).toBe(ConvertType.notes) - expect(notesRes.type).toBe('text/plain') + try { + const mdRes = await request(server.server).get('/1.md') + expect(server.converter.options.type).toBe(ConvertType.html) + expect(mdRes.type).toBe('text/html') + + const pdfRes = await request(server.server).get('/1.md?pdf') + expect(server.converter.options.type).toBe(ConvertType.pdf) + expect(pdfRes.type).toBe('application/pdf') + + const pptxRes = await request(server.server).get('/1.md?pptx') + expect(server.converter.options.type).toBe(ConvertType.pptx) + expect(pptxRes.type).toBe( + 'application/vnd.openxmlformats-officedocument.presentationml.presentation' + ) + + // PPTX document is downloaded with a proper filename because it cannot show in browser window. + expect(pptxRes.header['content-disposition']).toBe( + 'attachment; filename="1.pptx"' + ) + + const pngRes = await request(server.server).get('/1.md?png') + expect(server.converter.options.type).toBe(ConvertType.png) + expect(pngRes.type).toBe('image/png') + + const jpgRes = await request(server.server).get('/1.md?jpg') + expect(server.converter.options.type).toBe(ConvertType.jpeg) + expect(jpgRes.type).toBe('image/jpeg') + + const jpegRes = await request(server.server).get('/1.md?jpeg') + expect(server.converter.options.type).toBe(ConvertType.jpeg) + expect(jpegRes.type).toBe('image/jpeg') + + const txtRes = await request(server.server).get('/1.md?txt') + expect(server.converter.options.type).toBe(ConvertType.notes) + expect(txtRes.type).toBe('text/plain') + + const notesRes = await request(server.server).get('/1.md?notes') + expect(server.converter.options.type).toBe(ConvertType.notes) + expect(notesRes.type).toBe('text/plain') + } finally { + convertFileSpy.mockRestore() + } }) }) @@ -195,12 +197,18 @@ describe('Server', () => { const event = jest.fn() const { server, converter } = (await setupServer()).on('error', event) - jest.spyOn(converter, 'convertFile').mockRejectedValue(err) - - const response = await request(server).get('/1.md') - expect(event).toHaveBeenCalledWith(err) - expect(response.status).toBe(503) - expect(response.text).toBe('Error: test') + const convertFileSpy = jest + .spyOn(converter, 'convertFile') + .mockRejectedValue(err) + + try { + const response = await request(server).get('/1.md') + expect(event).toHaveBeenCalledWith(err) + expect(response.status).toBe(503) + expect(response.text).toBe('Error: test') + } finally { + convertFileSpy.mockRestore() + } }) }) }) diff --git a/test/templates/watch.ts b/test/templates/watch.ts index 0f9c80aa..fc4e6879 100644 --- a/test/templates/watch.ts +++ b/test/templates/watch.ts @@ -1,4 +1,7 @@ -/** @jest-environment jsdom */ +/** + * @jest-environment jsdom + * @jest-environment-options {"customExportConditions": ["node", "node-addons"]} + */ import { getPortPromise } from 'portfinder' import { Server } from 'ws' import watch from '../../src/templates/watch/watch' @@ -8,10 +11,10 @@ beforeEach(() => { ;(window as any).location = { reload: jest.fn() } }) -afterEach(() => jest.restoreAllMocks()) - describe('Watch mode notifier on browser context', () => { let server: Server + let infoSpy: jest.SpyInstance + let warnSpy: jest.SpyInstance const createWSServer = async () => { const port = await getPortPromise({ port: 37717 }) @@ -26,13 +29,18 @@ describe('Watch mode notifier on browser context', () => { } beforeEach(async () => { - jest.spyOn(console, 'info').mockImplementation() - jest.spyOn(console, 'warn').mockImplementation() + infoSpy = jest.spyOn(console, 'info').mockImplementation() + warnSpy = jest.spyOn(console, 'warn').mockImplementation() server = await createWSServer() }) - afterEach(() => server.close()) + afterEach(() => { + server.close() + + infoSpy.mockRestore() + warnSpy.mockRestore() + }) describe('when window.__marpCliWatchWS is defined', () => { beforeEach(() => { diff --git a/test/theme.ts b/test/theme.ts index b4f76cdf..f2babc78 100644 --- a/test/theme.ts +++ b/test/theme.ts @@ -2,8 +2,6 @@ import path from 'path' import { Marpit } from '@marp-team/marpit' import { ThemeSet } from '../src/theme' -afterEach(() => jest.restoreAllMocks()) - describe('ThemeSet', () => { const themeDir = path.resolve(__dirname, '_files/themes') const themeA = path.resolve(themeDir, './a.css') @@ -54,9 +52,13 @@ describe('ThemeSet', () => { .spyOn(themeInstance, 'load') .mockResolvedValue(0) - await themeSet.load(themeA) - expect(themeSet.themes.size).toBe(1) - expect(load).toHaveBeenCalledTimes(1) + try { + await themeSet.load(themeA) + expect(themeSet.themes.size).toBe(1) + expect(load).toHaveBeenCalledTimes(1) + } finally { + load.mockRestore() + } }) describe('when theme has resolved name', () => { @@ -109,15 +111,20 @@ describe('ThemeSet', () => { it('outputs warning and ignores registration', async () => { const warn = jest.spyOn(console, 'warn').mockImplementation() - const themeSet = await ThemeSet.initialize([emptyCSS]) - const marpit = new Marpit() - themeSet.registerTo(marpit) + try { + const themeSet = await ThemeSet.initialize([emptyCSS]) + const marpit = new Marpit() + + themeSet.registerTo(marpit) - expect(marpit.themeSet.size).toBe(0) - expect(warn).toHaveBeenCalledWith( - expect.stringContaining('Cannot register theme CSS') - ) + expect(marpit.themeSet.size).toBe(0) + expect(warn).toHaveBeenCalledWith( + expect.stringContaining('Cannot register theme CSS') + ) + } finally { + warn.mockRestore() + } }) }) }) diff --git a/test/watcher.ts b/test/watcher.ts index cc2bb3a7..8299c149 100644 --- a/test/watcher.ts +++ b/test/watcher.ts @@ -25,7 +25,6 @@ jest.mock('../src/watcher') jest.mock('../src/theme') afterEach(() => { - jest.restoreAllMocks() mockWsOn.mockReset() }) @@ -82,17 +81,22 @@ describe('Watcher', () => { const conv = jest.spyOn(watcher as any, 'convert').mockImplementation() const del = jest.spyOn(watcher as any, 'delete').mockImplementation() - onChange('change') - expect(conv).toHaveBeenCalledWith('change') + try { + onChange('change') + expect(conv).toHaveBeenCalledWith('change') - onAdd('add') - expect(conv).toHaveBeenCalledWith('add') + onAdd('add') + expect(conv).toHaveBeenCalledWith('add') - onUnlink('unlink') - expect(del).toHaveBeenCalledWith('unlink') + onUnlink('unlink') + expect(del).toHaveBeenCalledWith('unlink') - watcher.converter.options.themeSet.onThemeUpdated('theme-update') - expect(conv).toHaveBeenCalledWith('theme-update') + watcher.converter.options.themeSet.onThemeUpdated('theme-update') + expect(conv).toHaveBeenCalledWith('theme-update') + } finally { + conv.mockRestore() + del.mockRestore() + } }) }) @@ -166,14 +170,19 @@ describe('WatchNotifier', () => { describe('#port', () => { it('finds available port from 37717', async () => { const finderSpy = jest.spyOn(portfinder, 'getPortPromise') - const instance = new WatchNotifier() - expect(await instance.port()).toBe(37717) - expect(finderSpy).toHaveBeenCalledTimes(1) + try { + const instance = new WatchNotifier() + + expect(await instance.port()).toBe(37717) + expect(finderSpy).toHaveBeenCalledTimes(1) - // Return stored port number of instance when called twice - await instance.port() - expect(finderSpy).toHaveBeenCalledTimes(1) + // Return stored port number of instance when called twice + await instance.port() + expect(finderSpy).toHaveBeenCalledTimes(1) + } finally { + finderSpy.mockRestore() + } }) describe('when 37717 port is using for the other purpose', () => { From 1a1d72194cb90f6840fdf4581db2e4f656561a95 Mon Sep 17 00:00:00 2001 From: Yuki Hattori Date: Sun, 19 Feb 2023 07:03:42 +0900 Subject: [PATCH 6/6] [ci skip] Update CHANGELOG.md --- CHANGELOG.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7a01e363..ca114652 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,11 @@ ## [Unreleased] +### Changed + +- Upgrade Marp Core to [v3.5.0](https://github.com/marp-team/marp-core/releases/v3.5.0) ([#502](https://github.com/marp-team/marp-cli/pull/502)) +- Upgrade Node.js and dependent packages ([#502](https://github.com/marp-team/marp-cli/pull/502)) + ## v2.3.0 - 2023-01-08 ### Breaking