diff --git a/jest.config.js b/jest.config.js index 410c9785f3..9675b9c925 100644 --- a/jest.config.js +++ b/jest.config.js @@ -25,7 +25,7 @@ module.exports = { strictPropertyInitialization: true, noUnusedParameters: true, noUnusedLocals: true, - types: ["rxjs", "node", "jest"], + types: ["node", "jest"], module: "es2015", moduleResolution: "node", esModuleInterop: true, diff --git a/package-lock.json b/package-lock.json index e773930733..36c628aab9 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13,56 +13,56 @@ "rxjs": "7.4.0" }, "devDependencies": { - "@babel/core": "7.17.7", - "@babel/plugin-transform-runtime": "7.17.0", - "@babel/preset-env": "7.16.11", - "@babel/preset-react": "7.16.7", - "@types/chai": "4.3.0", - "@types/jest": "27.4.1", - "@types/mocha": "9.1.0", - "@types/node": "17.0.21", + "@babel/core": "7.18.5", + "@babel/plugin-transform-runtime": "7.18.5", + "@babel/preset-env": "7.18.2", + "@babel/preset-react": "7.17.12", + "@types/chai": "4.3.1", + "@types/jest": "27.5.1", + "@types/mocha": "9.1.1", + "@types/node": "17.0.42", "@types/sinon": "10.0.11", - "@typescript-eslint/eslint-plugin": "5.15.0", - "@typescript-eslint/eslint-plugin-tslint": "5.15.0", - "@typescript-eslint/parser": "5.15.0", + "@typescript-eslint/eslint-plugin": "5.27.1", + "@typescript-eslint/eslint-plugin-tslint": "5.27.1", + "@typescript-eslint/parser": "5.27.1", "arraybuffer-loader": "1.0.8", - "babel-loader": "8.2.3", + "babel-loader": "8.2.5", "chai": "4.3.6", - "cheerio": "1.0.0-rc.10", - "core-js": "3.21.1", - "esbuild": "0.14.27", - "eslint": "8.11.0", - "eslint-plugin-import": "2.25.4", - "eslint-plugin-jsdoc": "38.0.4", - "eslint-plugin-react": "7.29.4", + "cheerio": "1.0.0-rc.11", + "core-js": "3.22.8", + "esbuild": "0.14.43", + "eslint": "8.17.0", + "eslint-plugin-import": "2.26.0", + "eslint-plugin-jsdoc": "39.3.2", + "eslint-plugin-react": "7.30.0", "esm": "3.2.25", - "express": "4.17.3", - "highlight.js": "11.5.0", - "html-entities": "2.3.2", + "express": "4.18.1", + "highlight.js": "11.5.1", + "html-entities": "2.3.3", "jest": "27.5.1", - "karma": "6.3.17", + "karma": "6.3.20", "karma-chrome-launcher": "3.1.1", "karma-firefox-launcher": "2.1.2", "karma-mocha": "2.0.1", "karma-webpack": "5.0.0", - "markdown-it": "12.3.2", - "mocha": "9.2.2", + "markdown-it": "13.0.1", + "mocha": "10.0.0", "mocha-loader": "5.1.5", "raw-loader": "4.0.2", - "react": "17.0.2", - "react-dom": "17.0.2", + "react": "18.1.0", + "react-dom": "18.1.0", "regenerator-runtime": "0.13.9", "rimraf": "3.0.2", - "semver": "7.3.5", - "sinon": "13.0.1", - "terser-webpack-plugin": "5.3.1", - "ts-jest": "27.1.3", - "ts-loader": "9.2.8", + "semver": "7.3.7", + "sinon": "14.0.0", + "terser-webpack-plugin": "5.3.3", + "ts-jest": "27.1.5", + "ts-loader": "9.3.0", "tslint": "6.1.3", - "typescript": "4.6.2", - "webpack": "5.70.0", + "typescript": "4.7.3", + "webpack": "5.73.0", "webpack-bundle-analyzer": "4.5.0", - "webpack-cli": "4.9.2" + "webpack-cli": "4.10.0" } }, "node_modules/@ampproject/remapping": { @@ -90,34 +90,34 @@ } }, "node_modules/@babel/compat-data": { - "version": "7.17.7", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.17.7.tgz", - "integrity": "sha512-p8pdE6j0a29TNGebNm7NzYZWB3xVZJBZ7XGs42uAKzQo8VQ3F0By/cQCtUEABwIqw5zo6WA4NbmxsfzADzMKnQ==", + "version": "7.18.5", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.18.5.tgz", + "integrity": "sha512-BxhE40PVCBxVEJsSBhB6UWyAuqJRxGsAw8BdHMJ3AKGydcwuWW4kOO3HmqBQAdcq/OP+/DlTVxLvsCzRTnZuGg==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/core": { - "version": "7.17.7", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.17.7.tgz", - "integrity": "sha512-djHlEfFHnSnTAcPb7dATbiM5HxGOP98+3JLBZtjRb5I7RXrw7kFRoG2dXM8cm3H+o11A8IFH/uprmJpwFynRNQ==", + "version": "7.18.5", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.18.5.tgz", + "integrity": "sha512-MGY8vg3DxMnctw0LdvSEojOsumc70g0t18gNyUdAZqB1Rpd1Bqo/svHGvt+UJ6JcGX+DIekGFDxxIWofBxLCnQ==", "dev": true, "dependencies": { "@ampproject/remapping": "^2.1.0", "@babel/code-frame": "^7.16.7", - "@babel/generator": "^7.17.7", - "@babel/helper-compilation-targets": "^7.17.7", - "@babel/helper-module-transforms": "^7.17.7", - "@babel/helpers": "^7.17.7", - "@babel/parser": "^7.17.7", + "@babel/generator": "^7.18.2", + "@babel/helper-compilation-targets": "^7.18.2", + "@babel/helper-module-transforms": "^7.18.0", + "@babel/helpers": "^7.18.2", + "@babel/parser": "^7.18.5", "@babel/template": "^7.16.7", - "@babel/traverse": "^7.17.3", - "@babel/types": "^7.17.0", + "@babel/traverse": "^7.18.5", + "@babel/types": "^7.18.4", "convert-source-map": "^1.7.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", - "json5": "^2.1.2", + "json5": "^2.2.1", "semver": "^6.3.0" }, "engines": { @@ -138,14 +138,14 @@ } }, "node_modules/@babel/generator": { - "version": "7.17.7", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.17.7.tgz", - "integrity": "sha512-oLcVCTeIFadUoArDTwpluncplrYBmTCCZZgXCbgNGvOBBiSDDK3eWO4b/+eOTli5tKv1lg+a5/NAXg+nTcei1w==", + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.18.2.tgz", + "integrity": "sha512-W1lG5vUwFvfMd8HVXqdfbuG7RuaSrTCCD8cl8fP8wOivdbtbIg2Db3IWUcgvfxKbbn6ZBGYRW/Zk1MIwK49mgw==", "dev": true, "dependencies": { - "@babel/types": "^7.17.0", - "jsesc": "^2.5.1", - "source-map": "^0.5.0" + "@babel/types": "^7.18.2", + "@jridgewell/gen-mapping": "^0.3.0", + "jsesc": "^2.5.1" }, "engines": { "node": ">=6.9.0" @@ -177,14 +177,14 @@ } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.17.7", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.17.7.tgz", - "integrity": "sha512-UFzlz2jjd8kroj0hmCFV5zr+tQPi1dpC2cRsDV/3IEW8bJfCPrPpmcSN6ZS8RqIq4LXcmpipCQFPddyFA5Yc7w==", + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.18.2.tgz", + "integrity": "sha512-s1jnPotJS9uQnzFtiZVBUxe67CuBa679oWFHpxYYnTpRL/1ffhyX44R9uYiXoa/pLXcY9H2moJta0iaanlk/rQ==", "dev": true, "dependencies": { - "@babel/compat-data": "^7.17.7", + "@babel/compat-data": "^7.17.10", "@babel/helper-validator-option": "^7.16.7", - "browserslist": "^4.17.5", + "browserslist": "^4.20.2", "semver": "^6.3.0" }, "engines": { @@ -204,15 +204,15 @@ } }, "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.17.6", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.17.6.tgz", - "integrity": "sha512-SogLLSxXm2OkBbSsHZMM4tUi8fUzjs63AT/d0YQIzr6GSd8Hxsbk2KYDX0k0DweAzGMj/YWeiCsorIdtdcW8Eg==", + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.18.0.tgz", + "integrity": "sha512-Kh8zTGR9de3J63e5nS0rQUdRs/kbtwoeQQ0sriS0lItjC96u8XXZN6lKpuyWd2coKSU13py/y+LTmThLuVX0Pg==", "dev": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.16.7", "@babel/helper-environment-visitor": "^7.16.7", - "@babel/helper-function-name": "^7.16.7", - "@babel/helper-member-expression-to-functions": "^7.16.7", + "@babel/helper-function-name": "^7.17.9", + "@babel/helper-member-expression-to-functions": "^7.17.7", "@babel/helper-optimise-call-expression": "^7.16.7", "@babel/helper-replace-supers": "^7.16.7", "@babel/helper-split-export-declaration": "^7.16.7" @@ -225,13 +225,13 @@ } }, "node_modules/@babel/helper-create-regexp-features-plugin": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.16.7.tgz", - "integrity": "sha512-fk5A6ymfp+O5+p2yCkXAu5Kyj6v0xh0RBeNcAkYUMDvvAAoxvSKXn+Jb37t/yWFiQVDFK1ELpUTD8/aLhCPu+g==", + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.17.12.tgz", + "integrity": "sha512-b2aZrV4zvutr9AIa6/gA3wsZKRwTKYoDxYiFKcESS3Ug2GTXzwBEvMuuFLhCQpEnRXs1zng4ISAXSUxxKBIcxw==", "dev": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.16.7", - "regexpu-core": "^4.7.1" + "regexpu-core": "^5.0.1" }, "engines": { "node": ">=6.9.0" @@ -269,13 +269,10 @@ } }, "node_modules/@babel/helper-environment-visitor": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.16.7.tgz", - "integrity": "sha512-SLLb0AAn6PkUeAfKJCCOl9e1R53pQlGAfc4y4XuMRZfqeMYLE0dM1LMhqbGAlGQY0lfw5/ohoYWAe9V1yibRag==", + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.2.tgz", + "integrity": "sha512-14GQKWkX9oJzPiQQ7/J36FTXcD4kSp8egKjO9nINlSKiHITRA9q/R74qu8S9xlc/b/yjsJItQUeeh3xnGN0voQ==", "dev": true, - "dependencies": { - "@babel/types": "^7.16.7" - }, "engines": { "node": ">=6.9.0" } @@ -293,26 +290,13 @@ } }, "node_modules/@babel/helper-function-name": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.16.7.tgz", - "integrity": "sha512-QfDfEnIUyyBSR3HtrtGECuZ6DAyCkYFp7GHl75vFtTnn6pjKeK0T1DB5lLkFvBea8MdaiUABx3osbgLyInoejA==", + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.17.9.tgz", + "integrity": "sha512-7cRisGlVtiVqZ0MW0/yFB4atgpGLWEHUVYnb448hZK4x+vih0YO5UoS11XIYtZYqHd0dIPMdUSv8q5K4LdMnIg==", "dev": true, "dependencies": { - "@babel/helper-get-function-arity": "^7.16.7", "@babel/template": "^7.16.7", - "@babel/types": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-get-function-arity": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.7.tgz", - "integrity": "sha512-flc+RLSOBXzNzVhcLu6ujeHUrD6tANAOU5ojrRx/as+tbzf8+stUCj7+IfRRoAbEZqj/ahXEMsjhOhgeZsrnTw==", - "dev": true, - "dependencies": { - "@babel/types": "^7.16.7" + "@babel/types": "^7.17.0" }, "engines": { "node": ">=6.9.0" @@ -331,12 +315,12 @@ } }, "node_modules/@babel/helper-member-expression-to-functions": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.16.7.tgz", - "integrity": "sha512-VtJ/65tYiU/6AbMTDwyoXGPKHgTsfRarivm+YbB5uAzKUyuPjgZSgAFeG87FCigc7KNHu2Pegh1XIT3lXjvz3Q==", + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.17.7.tgz", + "integrity": "sha512-thxXgnQ8qQ11W2wVUObIqDL4p148VMxkt5T/qpN5k2fboRyzFGFmKsTGViquyM5QHKUy48OZoca8kw4ajaDPyw==", "dev": true, "dependencies": { - "@babel/types": "^7.16.7" + "@babel/types": "^7.17.0" }, "engines": { "node": ">=6.9.0" @@ -355,9 +339,9 @@ } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.17.7", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.17.7.tgz", - "integrity": "sha512-VmZD99F3gNTYB7fJRDTi+u6l/zxY0BE6OIxPSU7a50s6ZUQkHwSDmV92FfM+oCG0pZRVojGYhkR8I0OGeCVREw==", + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.18.0.tgz", + "integrity": "sha512-kclUYSUBIjlvnzN2++K9f2qzYKFgjmnmjwL4zlmU5f8ZtzgWe8s0rUPSTGy2HmK4P8T52MQsS+HTQAgZd3dMEA==", "dev": true, "dependencies": { "@babel/helper-environment-visitor": "^7.16.7", @@ -366,8 +350,8 @@ "@babel/helper-split-export-declaration": "^7.16.7", "@babel/helper-validator-identifier": "^7.16.7", "@babel/template": "^7.16.7", - "@babel/traverse": "^7.17.3", - "@babel/types": "^7.17.0" + "@babel/traverse": "^7.18.0", + "@babel/types": "^7.18.0" }, "engines": { "node": ">=6.9.0" @@ -386,9 +370,9 @@ } }, "node_modules/@babel/helper-plugin-utils": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", - "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==", + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.17.12.tgz", + "integrity": "sha512-JDkf04mqtN3y4iAbO1hv9U2ARpPyPL1zqyWs/2WG1pgSq9llHFjStX5jdxb84himgJm+8Ng+x0oiWF/nw/XQKA==", "dev": true, "engines": { "node": ">=6.9.0" @@ -409,28 +393,28 @@ } }, "node_modules/@babel/helper-replace-supers": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.16.7.tgz", - "integrity": "sha512-y9vsWilTNaVnVh6xiJfABzsNpgDPKev9HnAgz6Gb1p6UUwf9NepdlsV7VXGCftJM+jqD5f7JIEubcpLjZj5dBw==", + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.18.2.tgz", + "integrity": "sha512-XzAIyxx+vFnrOxiQrToSUOzUOn0e1J2Li40ntddek1Y69AXUTXoDJ40/D5RdjFu7s7qHiaeoTiempZcbuVXh2Q==", "dev": true, "dependencies": { - "@babel/helper-environment-visitor": "^7.16.7", - "@babel/helper-member-expression-to-functions": "^7.16.7", + "@babel/helper-environment-visitor": "^7.18.2", + "@babel/helper-member-expression-to-functions": "^7.17.7", "@babel/helper-optimise-call-expression": "^7.16.7", - "@babel/traverse": "^7.16.7", - "@babel/types": "^7.16.7" + "@babel/traverse": "^7.18.2", + "@babel/types": "^7.18.2" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-simple-access": { - "version": "7.17.7", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.17.7.tgz", - "integrity": "sha512-txyMCGroZ96i+Pxr3Je3lzEJjqwaRC9buMUgtomcrLe5Nd0+fk1h0LLA+ixUF5OW7AhHuQ7Es1WcQJZmZsz2XA==", + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.18.2.tgz", + "integrity": "sha512-7LIrjYzndorDY88MycupkpQLKS1AFfsVRm2k/9PtKScSy5tZq0McZTj+DiMRynboZfIqOKvo03pmhTaUgiD6fQ==", "dev": true, "dependencies": { - "@babel/types": "^7.17.0" + "@babel/types": "^7.18.2" }, "engines": { "node": ">=6.9.0" @@ -494,14 +478,14 @@ } }, "node_modules/@babel/helpers": { - "version": "7.17.7", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.17.7.tgz", - "integrity": "sha512-TKsj9NkjJfTBxM7Phfy7kv6yYc4ZcOo+AaWGqQOKTPDOmcGkIFb5xNA746eKisQkm4yavUYh4InYM9S+VnO01w==", + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.18.2.tgz", + "integrity": "sha512-j+d+u5xT5utcQSzrh9p+PaJX94h++KN+ng9b9WEJq7pkUPAd61FGqhjuUEdfknb3E/uDBb7ruwEeKkIxNJPIrg==", "dev": true, "dependencies": { "@babel/template": "^7.16.7", - "@babel/traverse": "^7.17.3", - "@babel/types": "^7.17.0" + "@babel/traverse": "^7.18.2", + "@babel/types": "^7.18.2" }, "engines": { "node": ">=6.9.0" @@ -522,9 +506,9 @@ } }, "node_modules/@babel/parser": { - "version": "7.17.7", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.17.7.tgz", - "integrity": "sha512-bm3AQf45vR4gKggRfvJdYJ0gFLoCbsPxiFLSH6hTVYABptNHY6l9NrhnucVjQ/X+SPtLANT9lc0fFhikj+VBRA==", + "version": "7.18.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.18.5.tgz", + "integrity": "sha512-YZWVaglMiplo7v8f1oMQ5ZPQr0vn7HPeZXxXWsxXJRjGVrzUFn9OxFQl1sb5wzfootjA/yChhW84BV+383FSOw==", "dev": true, "bin": { "parser": "bin/babel-parser.js" @@ -534,12 +518,12 @@ } }, "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.16.7.tgz", - "integrity": "sha512-anv/DObl7waiGEnC24O9zqL0pSuI9hljihqiDuFHC8d7/bjr/4RLGPWuc8rYOff/QPzbEPSkzG8wGG9aDuhHRg==", + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.17.12.tgz", + "integrity": "sha512-xCJQXl4EeQ3J9C4yOmpTrtVGmzpm2iSzyxbkZHw7UCnZBftHpF/hpII80uWVyVrc40ytIClHjgWGTG1g/yB+aw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-plugin-utils": "^7.17.12" }, "engines": { "node": ">=6.9.0" @@ -549,14 +533,14 @@ } }, "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.16.7.tgz", - "integrity": "sha512-di8vUHRdf+4aJ7ltXhaDbPoszdkh59AQtJM5soLsuHpQJdFQZOA4uGj0V2u/CZ8bJ/u8ULDL5yq6FO/bCXnKHw==", + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.17.12.tgz", + "integrity": "sha512-/vt0hpIw0x4b6BLKUkwlvEoiGZYYLNZ96CzyHYPbtG2jZGz6LBe7/V+drYrc/d+ovrF9NBi0pmtvmNb/FsWtRQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-plugin-utils": "^7.17.12", "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", - "@babel/plugin-proposal-optional-chaining": "^7.16.7" + "@babel/plugin-proposal-optional-chaining": "^7.17.12" }, "engines": { "node": ">=6.9.0" @@ -566,12 +550,12 @@ } }, "node_modules/@babel/plugin-proposal-async-generator-functions": { - "version": "7.16.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.16.8.tgz", - "integrity": "sha512-71YHIvMuiuqWJQkebWJtdhQTfd4Q4mF76q2IX37uZPkG9+olBxsX+rH1vkhFto4UeJZ9dPY2s+mDvhDm1u2BGQ==", + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.17.12.tgz", + "integrity": "sha512-RWVvqD1ooLKP6IqWTA5GyFVX2isGEgC5iFxKzfYOIy/QEFdxYyCybBDtIGjipHpb9bDWHzcqGqFakf+mVmBTdQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-plugin-utils": "^7.17.12", "@babel/helper-remap-async-to-generator": "^7.16.8", "@babel/plugin-syntax-async-generators": "^7.8.4" }, @@ -583,13 +567,13 @@ } }, "node_modules/@babel/plugin-proposal-class-properties": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.16.7.tgz", - "integrity": "sha512-IobU0Xme31ewjYOShSIqd/ZGM/r/cuOz2z0MDbNrhF5FW+ZVgi0f2lyeoj9KFPDOAqsYxmLWZte1WOwlvY9aww==", + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.17.12.tgz", + "integrity": "sha512-U0mI9q8pW5Q9EaTHFPwSVusPMV/DV9Mm8p7csqROFLtIE9rBF5piLqyrBGigftALrBcsBGu4m38JneAe7ZDLXw==", "dev": true, "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-create-class-features-plugin": "^7.17.12", + "@babel/helper-plugin-utils": "^7.17.12" }, "engines": { "node": ">=6.9.0" @@ -599,13 +583,13 @@ } }, "node_modules/@babel/plugin-proposal-class-static-block": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.16.7.tgz", - "integrity": "sha512-dgqJJrcZoG/4CkMopzhPJjGxsIe9A8RlkQLnL/Vhhx8AA9ZuaRwGSlscSh42hazc7WSrya/IK7mTeoF0DP9tEw==", + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.18.0.tgz", + "integrity": "sha512-t+8LsRMMDE74c6sV7KShIw13sqbqd58tlqNrsWoWBTIMw7SVQ0cZ905wLNS/FBCy/3PyooRHLFFlfrUNyyz5lA==", "dev": true, "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-create-class-features-plugin": "^7.18.0", + "@babel/helper-plugin-utils": "^7.17.12", "@babel/plugin-syntax-class-static-block": "^7.14.5" }, "engines": { @@ -632,12 +616,12 @@ } }, "node_modules/@babel/plugin-proposal-export-namespace-from": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.16.7.tgz", - "integrity": "sha512-ZxdtqDXLRGBL64ocZcs7ovt71L3jhC1RGSyR996svrCi3PYqHNkb3SwPJCs8RIzD86s+WPpt2S73+EHCGO+NUA==", + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.17.12.tgz", + "integrity": "sha512-j7Ye5EWdwoXOpRmo5QmRyHPsDIe6+u70ZYZrd7uz+ebPYFKfRcLcNu3Ro0vOlJ5zuv8rU7xa+GttNiRzX56snQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-plugin-utils": "^7.17.12", "@babel/plugin-syntax-export-namespace-from": "^7.8.3" }, "engines": { @@ -648,12 +632,12 @@ } }, "node_modules/@babel/plugin-proposal-json-strings": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.16.7.tgz", - "integrity": "sha512-lNZ3EEggsGY78JavgbHsK9u5P3pQaW7k4axlgFLYkMd7UBsiNahCITShLjNQschPyjtO6dADrL24757IdhBrsQ==", + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.17.12.tgz", + "integrity": "sha512-rKJ+rKBoXwLnIn7n6o6fulViHMrOThz99ybH+hKHcOZbnN14VuMnH9fo2eHE69C8pO4uX1Q7t2HYYIDmv8VYkg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-plugin-utils": "^7.17.12", "@babel/plugin-syntax-json-strings": "^7.8.3" }, "engines": { @@ -664,12 +648,12 @@ } }, "node_modules/@babel/plugin-proposal-logical-assignment-operators": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.16.7.tgz", - "integrity": "sha512-K3XzyZJGQCr00+EtYtrDjmwX7o7PLK6U9bi1nCwkQioRFVUv6dJoxbQjtWVtP+bCPy82bONBKG8NPyQ4+i6yjg==", + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.17.12.tgz", + "integrity": "sha512-EqFo2s1Z5yy+JeJu7SFfbIUtToJTVlC61/C7WLKDntSw4Sz6JNAIfL7zQ74VvirxpjB5kz/kIx0gCcb+5OEo2Q==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-plugin-utils": "^7.17.12", "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" }, "engines": { @@ -680,12 +664,12 @@ } }, "node_modules/@babel/plugin-proposal-nullish-coalescing-operator": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.16.7.tgz", - "integrity": "sha512-aUOrYU3EVtjf62jQrCj63pYZ7k6vns2h/DQvHPWGmsJRYzWXZ6/AsfgpiRy6XiuIDADhJzP2Q9MwSMKauBQ+UQ==", + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.17.12.tgz", + "integrity": "sha512-ws/g3FSGVzv+VH86+QvgtuJL/kR67xaEIF2x0iPqdDfYW6ra6JF3lKVBkWynRLcNtIC1oCTfDRVxmm2mKzy+ag==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-plugin-utils": "^7.17.12", "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" }, "engines": { @@ -712,16 +696,16 @@ } }, "node_modules/@babel/plugin-proposal-object-rest-spread": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.16.7.tgz", - "integrity": "sha512-3O0Y4+dw94HA86qSg9IHfyPktgR7q3gpNVAeiKQd+8jBKFaU5NQS1Yatgo4wY+UFNuLjvxcSmzcsHqrhgTyBUA==", + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.18.0.tgz", + "integrity": "sha512-nbTv371eTrFabDfHLElkn9oyf9VG+VKK6WMzhY2o4eHKaG19BToD9947zzGMO6I/Irstx9d8CwX6njPNIAR/yw==", "dev": true, "dependencies": { - "@babel/compat-data": "^7.16.4", - "@babel/helper-compilation-targets": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7", + "@babel/compat-data": "^7.17.10", + "@babel/helper-compilation-targets": "^7.17.10", + "@babel/helper-plugin-utils": "^7.17.12", "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.16.7" + "@babel/plugin-transform-parameters": "^7.17.12" }, "engines": { "node": ">=6.9.0" @@ -747,12 +731,12 @@ } }, "node_modules/@babel/plugin-proposal-optional-chaining": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.16.7.tgz", - "integrity": "sha512-eC3xy+ZrUcBtP7x+sq62Q/HYd674pPTb/77XZMb5wbDPGWIdUbSr4Agr052+zaUPSb+gGRnjxXfKFvx5iMJ+DA==", + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.17.12.tgz", + "integrity": "sha512-7wigcOs/Z4YWlK7xxjkvaIw84vGhDv/P1dFGQap0nHkc8gFKY/r+hXc8Qzf5k1gY7CvGIcHqAnOagVKJJ1wVOQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-plugin-utils": "^7.17.12", "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", "@babel/plugin-syntax-optional-chaining": "^7.8.3" }, @@ -764,13 +748,13 @@ } }, "node_modules/@babel/plugin-proposal-private-methods": { - "version": "7.16.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.16.11.tgz", - "integrity": "sha512-F/2uAkPlXDr8+BHpZvo19w3hLFKge+k75XUprE6jaqKxjGkSYcK+4c+bup5PdW/7W/Rpjwql7FTVEDW+fRAQsw==", + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.17.12.tgz", + "integrity": "sha512-SllXoxo19HmxhDWm3luPz+cPhtoTSKLJE9PXshsfrOzBqs60QP0r8OaJItrPhAj0d7mZMnNF0Y1UUggCDgMz1A==", "dev": true, "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.16.10", - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-create-class-features-plugin": "^7.17.12", + "@babel/helper-plugin-utils": "^7.17.12" }, "engines": { "node": ">=6.9.0" @@ -780,14 +764,14 @@ } }, "node_modules/@babel/plugin-proposal-private-property-in-object": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.16.7.tgz", - "integrity": "sha512-rMQkjcOFbm+ufe3bTZLyOfsOUOxyvLXZJCTARhJr+8UMSoZmqTe1K1BgkFcrW37rAchWg57yI69ORxiWvUINuQ==", + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.17.12.tgz", + "integrity": "sha512-/6BtVi57CJfrtDNKfK5b66ydK2J5pXUKBKSPD2G1whamMuEnZWgoOIfO8Vf9F/DoD4izBLD/Au4NMQfruzzykg==", "dev": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.16.7", - "@babel/helper-create-class-features-plugin": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-create-class-features-plugin": "^7.17.12", + "@babel/helper-plugin-utils": "^7.17.12", "@babel/plugin-syntax-private-property-in-object": "^7.14.5" }, "engines": { @@ -798,13 +782,13 @@ } }, "node_modules/@babel/plugin-proposal-unicode-property-regex": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.16.7.tgz", - "integrity": "sha512-QRK0YI/40VLhNVGIjRNAAQkEHws0cswSdFFjpFyt943YmJIU1da9uW63Iu6NFV6CxTZW5eTDCrwZUstBWgp/Rg==", + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.17.12.tgz", + "integrity": "sha512-Wb9qLjXf3ZazqXA7IvI7ozqRIXIGPtSo+L5coFmEkhTQK18ao4UDDD0zdTGAarmbLj2urpRwrc6893cu5Bfh0A==", "dev": true, "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-create-regexp-features-plugin": "^7.17.12", + "@babel/helper-plugin-utils": "^7.17.12" }, "engines": { "node": ">=4" @@ -885,6 +869,21 @@ "@babel/core": "^7.0.0-0" } }, + "node_modules/@babel/plugin-syntax-import-assertions": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.17.12.tgz", + "integrity": "sha512-n/loy2zkq9ZEM8tEOwON9wTQSTNDTDEz6NujPtJGLU7qObzT1N4c4YZZf8E6ATB2AjNQg/Ib2AIpO03EZaCehw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.17.12" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, "node_modules/@babel/plugin-syntax-import-meta": { "version": "7.10.4", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", @@ -907,12 +906,12 @@ } }, "node_modules/@babel/plugin-syntax-jsx": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.16.7.tgz", - "integrity": "sha512-Esxmk7YjA8QysKeT3VhTXvF6y77f/a91SIs4pWb4H2eWGQkCKFgQaG6hdoEVZtGsrAcb2K5BW66XsOErD4WU3Q==", + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.17.12.tgz", + "integrity": "sha512-spyY3E3AURfxh/RHtjx5j6hs8am5NbUBGfcZ2vB3uShSpZdQyXSf5rR5Mk76vbtlAZOelyVQ71Fg0x9SG4fsog==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-plugin-utils": "^7.17.12" }, "engines": { "node": ">=6.9.0" @@ -1006,12 +1005,12 @@ } }, "node_modules/@babel/plugin-syntax-typescript": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.16.7.tgz", - "integrity": "sha512-YhUIJHHGkqPgEcMYkPCKTyGUdoGKWtopIycQyjJH8OjvRgOYsXsaKehLVPScKJWAULPxMa4N1vCe6szREFlZ7A==", + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.17.12.tgz", + "integrity": "sha512-TYY0SXFiO31YXtNg3HtFwNJHjLsAyIIhAhNWkQ5whPPS7HWUFlg9z0Ta4qAQNjQbP1wsSt/oKkmZ/4/WWdMUpw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-plugin-utils": "^7.17.12" }, "engines": { "node": ">=6.9.0" @@ -1021,12 +1020,12 @@ } }, "node_modules/@babel/plugin-transform-arrow-functions": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.16.7.tgz", - "integrity": "sha512-9ffkFFMbvzTvv+7dTp/66xvZAWASuPD5Tl9LK3Z9vhOmANo6j94rik+5YMBt4CwHVMWLWpMsriIc2zsa3WW3xQ==", + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.17.12.tgz", + "integrity": "sha512-PHln3CNi/49V+mza4xMwrg+WGYevSF1oaiXaC2EQfdp4HWlSjRsrDXWJiQBKpP7749u6vQ9mcry2uuFOv5CXvA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-plugin-utils": "^7.17.12" }, "engines": { "node": ">=6.9.0" @@ -1036,13 +1035,13 @@ } }, "node_modules/@babel/plugin-transform-async-to-generator": { - "version": "7.16.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.16.8.tgz", - "integrity": "sha512-MtmUmTJQHCnyJVrScNzNlofQJ3dLFuobYn3mwOTKHnSCMtbNsqvF71GQmJfFjdrXSsAA7iysFmYWw4bXZ20hOg==", + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.17.12.tgz", + "integrity": "sha512-J8dbrWIOO3orDzir57NRsjg4uxucvhby0L/KZuGsWDj0g7twWK3g7JhJhOrXtuXiw8MeiSdJ3E0OW9H8LYEzLQ==", "dev": true, "dependencies": { "@babel/helper-module-imports": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-plugin-utils": "^7.17.12", "@babel/helper-remap-async-to-generator": "^7.16.8" }, "engines": { @@ -1068,12 +1067,12 @@ } }, "node_modules/@babel/plugin-transform-block-scoping": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.16.7.tgz", - "integrity": "sha512-ObZev2nxVAYA4bhyusELdo9hb3H+A56bxH3FZMbEImZFiEDYVHXQSJ1hQKFlDnlt8G9bBrCZ5ZpURZUrV4G5qQ==", + "version": "7.18.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.18.4.tgz", + "integrity": "sha512-+Hq10ye+jlvLEogSOtq4mKvtk7qwcUQ1f0Mrueai866C82f844Yom2cttfJdMdqRLTxWpsbfbkIkOIfovyUQXw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-plugin-utils": "^7.17.12" }, "engines": { "node": ">=6.9.0" @@ -1083,17 +1082,17 @@ } }, "node_modules/@babel/plugin-transform-classes": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.16.7.tgz", - "integrity": "sha512-WY7og38SFAGYRe64BrjKf8OrE6ulEHtr5jEYaZMwox9KebgqPi67Zqz8K53EKk1fFEJgm96r32rkKZ3qA2nCWQ==", + "version": "7.18.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.18.4.tgz", + "integrity": "sha512-e42NSG2mlKWgxKUAD9EJJSkZxR67+wZqzNxLSpc51T8tRU5SLFHsPmgYR5yr7sdgX4u+iHA1C5VafJ6AyImV3A==", "dev": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.16.7", - "@babel/helper-environment-visitor": "^7.16.7", - "@babel/helper-function-name": "^7.16.7", + "@babel/helper-environment-visitor": "^7.18.2", + "@babel/helper-function-name": "^7.17.9", "@babel/helper-optimise-call-expression": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/helper-replace-supers": "^7.16.7", + "@babel/helper-plugin-utils": "^7.17.12", + "@babel/helper-replace-supers": "^7.18.2", "@babel/helper-split-export-declaration": "^7.16.7", "globals": "^11.1.0" }, @@ -1105,12 +1104,12 @@ } }, "node_modules/@babel/plugin-transform-computed-properties": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.16.7.tgz", - "integrity": "sha512-gN72G9bcmenVILj//sv1zLNaPyYcOzUho2lIJBMh/iakJ9ygCo/hEF9cpGb61SCMEDxbbyBoVQxrt+bWKu5KGw==", + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.17.12.tgz", + "integrity": "sha512-a7XINeplB5cQUWMg1E/GI1tFz3LfK021IjV1rj1ypE+R7jHm+pIHmHl25VNkZxtx9uuYp7ThGk8fur1HHG7PgQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-plugin-utils": "^7.17.12" }, "engines": { "node": ">=6.9.0" @@ -1120,12 +1119,12 @@ } }, "node_modules/@babel/plugin-transform-destructuring": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.16.7.tgz", - "integrity": "sha512-VqAwhTHBnu5xBVDCvrvqJbtLUa++qZaWC0Fgr2mqokBlulZARGyIvZDoqbPlPaKImQ9dKAcCzbv+ul//uqu70A==", + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.18.0.tgz", + "integrity": "sha512-Mo69klS79z6KEfrLg/1WkmVnB8javh75HX4pi2btjvlIoasuxilEyjtsQW6XPrubNd7AQy0MMaNIaQE4e7+PQw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-plugin-utils": "^7.17.12" }, "engines": { "node": ">=6.9.0" @@ -1151,12 +1150,12 @@ } }, "node_modules/@babel/plugin-transform-duplicate-keys": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.16.7.tgz", - "integrity": "sha512-03DvpbRfvWIXyK0/6QiR1KMTWeT6OcQ7tbhjrXyFS02kjuX/mu5Bvnh5SDSWHxyawit2g5aWhKwI86EE7GUnTw==", + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.17.12.tgz", + "integrity": "sha512-EA5eYFUG6xeerdabina/xIoB95jJ17mAkR8ivx6ZSu9frKShBjpOGZPn511MTDTkiCO+zXnzNczvUM69YSf3Zw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-plugin-utils": "^7.17.12" }, "engines": { "node": ">=6.9.0" @@ -1182,12 +1181,12 @@ } }, "node_modules/@babel/plugin-transform-for-of": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.16.7.tgz", - "integrity": "sha512-/QZm9W92Ptpw7sjI9Nx1mbcsWz33+l8kuMIQnDwgQBG5s3fAfQvkRjQ7NqXhtNcKOnPkdICmUHyCaWW06HCsqg==", + "version": "7.18.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.18.1.tgz", + "integrity": "sha512-+TTB5XwvJ5hZbO8xvl2H4XaMDOAK57zF4miuC9qQJgysPNEAZZ9Z69rdF5LJkozGdZrjBIUAIyKUWRMmebI7vg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-plugin-utils": "^7.17.12" }, "engines": { "node": ">=6.9.0" @@ -1214,12 +1213,12 @@ } }, "node_modules/@babel/plugin-transform-literals": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.16.7.tgz", - "integrity": "sha512-6tH8RTpTWI0s2sV6uq3e/C9wPo4PTqqZps4uF0kzQ9/xPLFQtipynvmT1g/dOfEJ+0EQsHhkQ/zyRId8J2b8zQ==", + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.17.12.tgz", + "integrity": "sha512-8iRkvaTjJciWycPIZ9k9duu663FT7VrBdNqNgxnVXEFwOIp55JWcZd23VBRySYbnS3PwQ3rGiabJBBBGj5APmQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-plugin-utils": "^7.17.12" }, "engines": { "node": ">=6.9.0" @@ -1244,13 +1243,13 @@ } }, "node_modules/@babel/plugin-transform-modules-amd": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.16.7.tgz", - "integrity": "sha512-KaaEtgBL7FKYwjJ/teH63oAmE3lP34N3kshz8mm4VMAw7U3PxjVwwUmxEFksbgsNUaO3wId9R2AVQYSEGRa2+g==", + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.18.0.tgz", + "integrity": "sha512-h8FjOlYmdZwl7Xm2Ug4iX2j7Qy63NANI+NQVWQzv6r25fqgg7k2dZl03p95kvqNclglHs4FZ+isv4p1uXMA+QA==", "dev": true, "dependencies": { - "@babel/helper-module-transforms": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-module-transforms": "^7.18.0", + "@babel/helper-plugin-utils": "^7.17.12", "babel-plugin-dynamic-import-node": "^2.3.3" }, "engines": { @@ -1261,14 +1260,14 @@ } }, "node_modules/@babel/plugin-transform-modules-commonjs": { - "version": "7.16.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.16.8.tgz", - "integrity": "sha512-oflKPvsLT2+uKQopesJt3ApiaIS2HW+hzHFcwRNtyDGieAeC/dIHZX8buJQ2J2X1rxGPy4eRcUijm3qcSPjYcA==", + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.18.2.tgz", + "integrity": "sha512-f5A865gFPAJAEE0K7F/+nm5CmAE3y8AWlMBG9unu5j9+tk50UQVK0QS8RNxSp7MJf0wh97uYyLWt3Zvu71zyOQ==", "dev": true, "dependencies": { - "@babel/helper-module-transforms": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/helper-simple-access": "^7.16.7", + "@babel/helper-module-transforms": "^7.18.0", + "@babel/helper-plugin-utils": "^7.17.12", + "@babel/helper-simple-access": "^7.18.2", "babel-plugin-dynamic-import-node": "^2.3.3" }, "engines": { @@ -1279,14 +1278,14 @@ } }, "node_modules/@babel/plugin-transform-modules-systemjs": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.16.7.tgz", - "integrity": "sha512-DuK5E3k+QQmnOqBR9UkusByy5WZWGRxfzV529s9nPra1GE7olmxfqO2FHobEOYSPIjPBTr4p66YDcjQnt8cBmw==", + "version": "7.18.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.18.5.tgz", + "integrity": "sha512-SEewrhPpcqMF1V7DhnEbhVJLrC+nnYfe1E0piZMZXBpxi9WvZqWGwpsk7JYP7wPWeqaBh4gyKlBhHJu3uz5g4Q==", "dev": true, "dependencies": { "@babel/helper-hoist-variables": "^7.16.7", - "@babel/helper-module-transforms": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-module-transforms": "^7.18.0", + "@babel/helper-plugin-utils": "^7.17.12", "@babel/helper-validator-identifier": "^7.16.7", "babel-plugin-dynamic-import-node": "^2.3.3" }, @@ -1298,13 +1297,13 @@ } }, "node_modules/@babel/plugin-transform-modules-umd": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.16.7.tgz", - "integrity": "sha512-EMh7uolsC8O4xhudF2F6wedbSHm1HHZ0C6aJ7K67zcDNidMzVcxWdGr+htW9n21klm+bOn+Rx4CBsAntZd3rEQ==", + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.18.0.tgz", + "integrity": "sha512-d/zZ8I3BWli1tmROLxXLc9A6YXvGK8egMxHp+E/rRwMh1Kip0AP77VwZae3snEJ33iiWwvNv2+UIIhfalqhzZA==", "dev": true, "dependencies": { - "@babel/helper-module-transforms": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-module-transforms": "^7.18.0", + "@babel/helper-plugin-utils": "^7.17.12" }, "engines": { "node": ">=6.9.0" @@ -1314,12 +1313,13 @@ } }, "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.16.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.16.8.tgz", - "integrity": "sha512-j3Jw+n5PvpmhRR+mrgIh04puSANCk/T/UA3m3P1MjJkhlK906+ApHhDIqBQDdOgL/r1UYpz4GNclTXxyZrYGSw==", + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.17.12.tgz", + "integrity": "sha512-vWoWFM5CKaTeHrdUJ/3SIOTRV+MBVGybOC9mhJkaprGNt5demMymDW24yC74avb915/mIRe3TgNb/d8idvnCRA==", "dev": true, "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.16.7" + "@babel/helper-create-regexp-features-plugin": "^7.17.12", + "@babel/helper-plugin-utils": "^7.17.12" }, "engines": { "node": ">=6.9.0" @@ -1329,12 +1329,12 @@ } }, "node_modules/@babel/plugin-transform-new-target": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.16.7.tgz", - "integrity": "sha512-xiLDzWNMfKoGOpc6t3U+etCE2yRnn3SM09BXqWPIZOBpL2gvVrBWUKnsJx0K/ADi5F5YC5f8APFfWrz25TdlGg==", + "version": "7.18.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.18.5.tgz", + "integrity": "sha512-TuRL5uGW4KXU6OsRj+mLp9BM7pO8e7SGNTEokQRRxHFkXYMFiy2jlKSZPFtI/mKORDzciH+hneskcSOp0gU8hg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-plugin-utils": "^7.17.12" }, "engines": { "node": ">=6.9.0" @@ -1360,12 +1360,12 @@ } }, "node_modules/@babel/plugin-transform-parameters": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.16.7.tgz", - "integrity": "sha512-AT3MufQ7zZEhU2hwOA11axBnExW0Lszu4RL/tAlUJBuNoRak+wehQW8h6KcXOcgjY42fHtDxswuMhMjFEuv/aw==", + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.17.12.tgz", + "integrity": "sha512-6qW4rWo1cyCdq1FkYri7AHpauchbGLXpdwnYsfxFb+KtddHENfsY5JZb35xUwkK5opOLcJ3BNd2l7PhRYGlwIA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-plugin-utils": "^7.17.12" }, "engines": { "node": ">=6.9.0" @@ -1405,16 +1405,16 @@ } }, "node_modules/@babel/plugin-transform-react-jsx": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.16.7.tgz", - "integrity": "sha512-8D16ye66fxiE8m890w0BpPpngG9o9OVBBy0gH2E+2AR7qMR2ZpTYJEqLxAsoroenMId0p/wMW+Blc0meDgu0Ag==", + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.17.12.tgz", + "integrity": "sha512-Lcaw8bxd1DKht3thfD4A12dqo1X16he1Lm8rIv8sTwjAYNInRS1qHa9aJoqvzpscItXvftKDCfaEQzwoVyXpEQ==", "dev": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.16.7", "@babel/helper-module-imports": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/plugin-syntax-jsx": "^7.16.7", - "@babel/types": "^7.16.7" + "@babel/helper-plugin-utils": "^7.17.12", + "@babel/plugin-syntax-jsx": "^7.17.12", + "@babel/types": "^7.17.12" }, "engines": { "node": ">=6.9.0" @@ -1455,12 +1455,13 @@ } }, "node_modules/@babel/plugin-transform-regenerator": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.16.7.tgz", - "integrity": "sha512-mF7jOgGYCkSJagJ6XCujSQg+6xC1M77/03K2oBmVJWoFGNUtnVJO4WHKJk3dnPC8HCcj4xBQP1Egm8DWh3Pb3Q==", + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.18.0.tgz", + "integrity": "sha512-C8YdRw9uzx25HSIzwA7EM7YP0FhCe5wNvJbZzjVNHHPGVcDJ3Aie+qGYYdS1oVQgn+B3eAIJbWFLrJ4Jipv7nw==", "dev": true, "dependencies": { - "regenerator-transform": "^0.14.2" + "@babel/helper-plugin-utils": "^7.17.12", + "regenerator-transform": "^0.15.0" }, "engines": { "node": ">=6.9.0" @@ -1470,12 +1471,12 @@ } }, "node_modules/@babel/plugin-transform-reserved-words": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.16.7.tgz", - "integrity": "sha512-KQzzDnZ9hWQBjwi5lpY5v9shmm6IVG0U9pB18zvMu2i4H90xpT4gmqwPYsn8rObiadYe2M0gmgsiOIF5A/2rtg==", + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.17.12.tgz", + "integrity": "sha512-1KYqwbJV3Co03NIi14uEHW8P50Md6KqFgt0FfpHdK6oyAHQVTosgPuPSiWud1HX0oYJ1hGRRlk0fP87jFpqXZA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-plugin-utils": "^7.17.12" }, "engines": { "node": ">=6.9.0" @@ -1485,13 +1486,13 @@ } }, "node_modules/@babel/plugin-transform-runtime": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.17.0.tgz", - "integrity": "sha512-fr7zPWnKXNc1xoHfrIU9mN/4XKX4VLZ45Q+oMhfsYIaHvg7mHgmhfOy/ckRWqDK7XF3QDigRpkh5DKq6+clE8A==", + "version": "7.18.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.18.5.tgz", + "integrity": "sha512-Q17hHxXr2fplrE+5BSC1j1Fo5cOA8YeP8XW3/1paI8MzF/faZGh0MaH1KC4jLAvqLPamQWHB5/B7KqSLY1kuHA==", "dev": true, "dependencies": { "@babel/helper-module-imports": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-plugin-utils": "^7.17.12", "babel-plugin-polyfill-corejs2": "^0.3.0", "babel-plugin-polyfill-corejs3": "^0.5.0", "babel-plugin-polyfill-regenerator": "^0.3.0", @@ -1529,12 +1530,12 @@ } }, "node_modules/@babel/plugin-transform-spread": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.16.7.tgz", - "integrity": "sha512-+pjJpgAngb53L0iaA5gU/1MLXJIfXcYepLgXB3esVRf4fqmj8f2cxM3/FKaHsZms08hFQJkFccEWuIpm429TXg==", + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.17.12.tgz", + "integrity": "sha512-9pgmuQAtFi3lpNUstvG9nGfk9DkrdmWNp9KeKPFmuZCpEnxRzYlS8JgwPjYj+1AWDOSvoGN0H30p1cBOmT/Svg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-plugin-utils": "^7.17.12", "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0" }, "engines": { @@ -1560,12 +1561,12 @@ } }, "node_modules/@babel/plugin-transform-template-literals": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.16.7.tgz", - "integrity": "sha512-VwbkDDUeenlIjmfNeDX/V0aWrQH2QiVyJtwymVQSzItFDTpxfyJh3EVaQiS0rIN/CqbLGr0VcGmuwyTdZtdIsA==", + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.2.tgz", + "integrity": "sha512-/cmuBVw9sZBGZVOMkpAEaVLwm4JmK2GZ1dFKOGGpMzEHWFmyZZ59lUU0PdRr8YNYeQdNzTDwuxP2X2gzydTc9g==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-plugin-utils": "^7.17.12" }, "engines": { "node": ">=6.9.0" @@ -1575,12 +1576,12 @@ } }, "node_modules/@babel/plugin-transform-typeof-symbol": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.16.7.tgz", - "integrity": "sha512-p2rOixCKRJzpg9JB4gjnG4gjWkWa89ZoYUnl9snJ1cWIcTH/hvxZqfO+WjG6T8DRBpctEol5jw1O5rA8gkCokQ==", + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.17.12.tgz", + "integrity": "sha512-Q8y+Jp7ZdtSPXCThB6zjQ74N3lj0f6TDh1Hnf5B+sYlzQ8i5Pjp8gW0My79iekSpT4WnI06blqP6DT0OmaXXmw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-plugin-utils": "^7.17.12" }, "engines": { "node": ">=6.9.0" @@ -1621,37 +1622,38 @@ } }, "node_modules/@babel/preset-env": { - "version": "7.16.11", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.16.11.tgz", - "integrity": "sha512-qcmWG8R7ZW6WBRPZK//y+E3Cli151B20W1Rv7ln27vuPaXU/8TKms6jFdiJtF7UDTxcrb7mZd88tAeK9LjdT8g==", + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.18.2.tgz", + "integrity": "sha512-PfpdxotV6afmXMU47S08F9ZKIm2bJIQ0YbAAtDfIENX7G1NUAXigLREh69CWDjtgUy7dYn7bsMzkgdtAlmS68Q==", "dev": true, "dependencies": { - "@babel/compat-data": "^7.16.8", - "@babel/helper-compilation-targets": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7", + "@babel/compat-data": "^7.17.10", + "@babel/helper-compilation-targets": "^7.18.2", + "@babel/helper-plugin-utils": "^7.17.12", "@babel/helper-validator-option": "^7.16.7", - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.16.7", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.16.7", - "@babel/plugin-proposal-async-generator-functions": "^7.16.8", - "@babel/plugin-proposal-class-properties": "^7.16.7", - "@babel/plugin-proposal-class-static-block": "^7.16.7", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.17.12", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.17.12", + "@babel/plugin-proposal-async-generator-functions": "^7.17.12", + "@babel/plugin-proposal-class-properties": "^7.17.12", + "@babel/plugin-proposal-class-static-block": "^7.18.0", "@babel/plugin-proposal-dynamic-import": "^7.16.7", - "@babel/plugin-proposal-export-namespace-from": "^7.16.7", - "@babel/plugin-proposal-json-strings": "^7.16.7", - "@babel/plugin-proposal-logical-assignment-operators": "^7.16.7", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.16.7", + "@babel/plugin-proposal-export-namespace-from": "^7.17.12", + "@babel/plugin-proposal-json-strings": "^7.17.12", + "@babel/plugin-proposal-logical-assignment-operators": "^7.17.12", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.17.12", "@babel/plugin-proposal-numeric-separator": "^7.16.7", - "@babel/plugin-proposal-object-rest-spread": "^7.16.7", + "@babel/plugin-proposal-object-rest-spread": "^7.18.0", "@babel/plugin-proposal-optional-catch-binding": "^7.16.7", - "@babel/plugin-proposal-optional-chaining": "^7.16.7", - "@babel/plugin-proposal-private-methods": "^7.16.11", - "@babel/plugin-proposal-private-property-in-object": "^7.16.7", - "@babel/plugin-proposal-unicode-property-regex": "^7.16.7", + "@babel/plugin-proposal-optional-chaining": "^7.17.12", + "@babel/plugin-proposal-private-methods": "^7.17.12", + "@babel/plugin-proposal-private-property-in-object": "^7.17.12", + "@babel/plugin-proposal-unicode-property-regex": "^7.17.12", "@babel/plugin-syntax-async-generators": "^7.8.4", "@babel/plugin-syntax-class-properties": "^7.12.13", "@babel/plugin-syntax-class-static-block": "^7.14.5", "@babel/plugin-syntax-dynamic-import": "^7.8.3", "@babel/plugin-syntax-export-namespace-from": "^7.8.3", + "@babel/plugin-syntax-import-assertions": "^7.17.12", "@babel/plugin-syntax-json-strings": "^7.8.3", "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", @@ -1661,44 +1663,44 @@ "@babel/plugin-syntax-optional-chaining": "^7.8.3", "@babel/plugin-syntax-private-property-in-object": "^7.14.5", "@babel/plugin-syntax-top-level-await": "^7.14.5", - "@babel/plugin-transform-arrow-functions": "^7.16.7", - "@babel/plugin-transform-async-to-generator": "^7.16.8", + "@babel/plugin-transform-arrow-functions": "^7.17.12", + "@babel/plugin-transform-async-to-generator": "^7.17.12", "@babel/plugin-transform-block-scoped-functions": "^7.16.7", - "@babel/plugin-transform-block-scoping": "^7.16.7", - "@babel/plugin-transform-classes": "^7.16.7", - "@babel/plugin-transform-computed-properties": "^7.16.7", - "@babel/plugin-transform-destructuring": "^7.16.7", + "@babel/plugin-transform-block-scoping": "^7.17.12", + "@babel/plugin-transform-classes": "^7.17.12", + "@babel/plugin-transform-computed-properties": "^7.17.12", + "@babel/plugin-transform-destructuring": "^7.18.0", "@babel/plugin-transform-dotall-regex": "^7.16.7", - "@babel/plugin-transform-duplicate-keys": "^7.16.7", + "@babel/plugin-transform-duplicate-keys": "^7.17.12", "@babel/plugin-transform-exponentiation-operator": "^7.16.7", - "@babel/plugin-transform-for-of": "^7.16.7", + "@babel/plugin-transform-for-of": "^7.18.1", "@babel/plugin-transform-function-name": "^7.16.7", - "@babel/plugin-transform-literals": "^7.16.7", + "@babel/plugin-transform-literals": "^7.17.12", "@babel/plugin-transform-member-expression-literals": "^7.16.7", - "@babel/plugin-transform-modules-amd": "^7.16.7", - "@babel/plugin-transform-modules-commonjs": "^7.16.8", - "@babel/plugin-transform-modules-systemjs": "^7.16.7", - "@babel/plugin-transform-modules-umd": "^7.16.7", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.16.8", - "@babel/plugin-transform-new-target": "^7.16.7", + "@babel/plugin-transform-modules-amd": "^7.18.0", + "@babel/plugin-transform-modules-commonjs": "^7.18.2", + "@babel/plugin-transform-modules-systemjs": "^7.18.0", + "@babel/plugin-transform-modules-umd": "^7.18.0", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.17.12", + "@babel/plugin-transform-new-target": "^7.17.12", "@babel/plugin-transform-object-super": "^7.16.7", - "@babel/plugin-transform-parameters": "^7.16.7", + "@babel/plugin-transform-parameters": "^7.17.12", "@babel/plugin-transform-property-literals": "^7.16.7", - "@babel/plugin-transform-regenerator": "^7.16.7", - "@babel/plugin-transform-reserved-words": "^7.16.7", + "@babel/plugin-transform-regenerator": "^7.18.0", + "@babel/plugin-transform-reserved-words": "^7.17.12", "@babel/plugin-transform-shorthand-properties": "^7.16.7", - "@babel/plugin-transform-spread": "^7.16.7", + "@babel/plugin-transform-spread": "^7.17.12", "@babel/plugin-transform-sticky-regex": "^7.16.7", - "@babel/plugin-transform-template-literals": "^7.16.7", - "@babel/plugin-transform-typeof-symbol": "^7.16.7", + "@babel/plugin-transform-template-literals": "^7.18.2", + "@babel/plugin-transform-typeof-symbol": "^7.17.12", "@babel/plugin-transform-unicode-escapes": "^7.16.7", "@babel/plugin-transform-unicode-regex": "^7.16.7", "@babel/preset-modules": "^0.1.5", - "@babel/types": "^7.16.8", + "@babel/types": "^7.18.2", "babel-plugin-polyfill-corejs2": "^0.3.0", "babel-plugin-polyfill-corejs3": "^0.5.0", "babel-plugin-polyfill-regenerator": "^0.3.0", - "core-js-compat": "^3.20.2", + "core-js-compat": "^3.22.1", "semver": "^6.3.0" }, "engines": { @@ -1734,15 +1736,15 @@ } }, "node_modules/@babel/preset-react": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.16.7.tgz", - "integrity": "sha512-fWpyI8UM/HE6DfPBzD8LnhQ/OcH8AgTaqcqP2nGOXEUV+VKBR5JRN9hCk9ai+zQQ57vtm9oWeXguBCPNUjytgA==", + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.17.12.tgz", + "integrity": "sha512-h5U+rwreXtZaRBEQhW1hOJLMq8XNJBQ/9oymXiCXTuT/0uOwpbT0gUt+sXeOqoXBgNuUKI7TaObVwoEyWkpFgA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-plugin-utils": "^7.17.12", "@babel/helper-validator-option": "^7.16.7", "@babel/plugin-transform-react-display-name": "^7.16.7", - "@babel/plugin-transform-react-jsx": "^7.16.7", + "@babel/plugin-transform-react-jsx": "^7.17.12", "@babel/plugin-transform-react-jsx-development": "^7.16.7", "@babel/plugin-transform-react-pure-annotations": "^7.16.7" }, @@ -1754,9 +1756,9 @@ } }, "node_modules/@babel/runtime": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.16.7.tgz", - "integrity": "sha512-9E9FJowqAsytyOY6LG+1KuueckRL+aQW+mKvXRXnuFGyRAyepJPmEo9vgMfXUA6O9u3IeEdv9MAkppFcaQwogQ==", + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.18.3.tgz", + "integrity": "sha512-38Y8f7YUhce/K7RMwTp7m0uCumpv9hZkitCbBClqQIow1qSbCvGkcegKOXpEWCQLfWmevgRiWokZ1GkpfhbZug==", "dev": true, "dependencies": { "regenerator-runtime": "^0.13.4" @@ -1780,19 +1782,19 @@ } }, "node_modules/@babel/traverse": { - "version": "7.17.3", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.17.3.tgz", - "integrity": "sha512-5irClVky7TxRWIRtxlh2WPUUOLhcPN06AGgaQSB8AEwuyEBgJVuJ5imdHm5zxk8w0QS5T+tDfnDxAlhWjpb7cw==", + "version": "7.18.5", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.18.5.tgz", + "integrity": "sha512-aKXj1KT66sBj0vVzk6rEeAO6Z9aiiQ68wfDgge3nHhA/my6xMM/7HGQUNumKZaoa2qUPQ5whJG9aAifsxUKfLA==", "dev": true, "dependencies": { "@babel/code-frame": "^7.16.7", - "@babel/generator": "^7.17.3", - "@babel/helper-environment-visitor": "^7.16.7", - "@babel/helper-function-name": "^7.16.7", + "@babel/generator": "^7.18.2", + "@babel/helper-environment-visitor": "^7.18.2", + "@babel/helper-function-name": "^7.17.9", "@babel/helper-hoist-variables": "^7.16.7", "@babel/helper-split-export-declaration": "^7.16.7", - "@babel/parser": "^7.17.3", - "@babel/types": "^7.17.0", + "@babel/parser": "^7.18.5", + "@babel/types": "^7.18.4", "debug": "^4.1.0", "globals": "^11.1.0" }, @@ -1801,9 +1803,9 @@ } }, "node_modules/@babel/types": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", - "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", + "version": "7.18.4", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.18.4.tgz", + "integrity": "sha512-ThN1mBcMq5pG/Vm2IcBmPPfyPXbd8S02rS+OBIDENdufvqC7Z/jHPCv9IcP01277aKtDI8g/2XysBN4hA8niiw==", "dev": true, "dependencies": { "@babel/helper-validator-identifier": "^7.16.7", @@ -1838,33 +1840,33 @@ } }, "node_modules/@es-joy/jsdoccomment": { - "version": "0.21.2", - "resolved": "https://registry.npmjs.org/@es-joy/jsdoccomment/-/jsdoccomment-0.21.2.tgz", - "integrity": "sha512-k8NwNnnYgUR/hyC/JdAbKvaIzTgnT5XJeCeVFo5tpT/4Fu5WiXmhdi6M/c4diqXSDf3ZENyrCtgzCUhIbfT8Zg==", + "version": "0.31.0", + "resolved": "https://registry.npmjs.org/@es-joy/jsdoccomment/-/jsdoccomment-0.31.0.tgz", + "integrity": "sha512-tc1/iuQcnaiSIUVad72PBierDFpsxdUHtEF/OrfqvM1CBAsIoMP51j52jTMb3dXriwhieTo289InzZj72jL3EQ==", "dev": true, "dependencies": { - "comment-parser": "1.3.0", + "comment-parser": "1.3.1", "esquery": "^1.4.0", - "jsdoc-type-pratt-parser": "~2.2.4" + "jsdoc-type-pratt-parser": "~3.1.0" }, "engines": { - "node": "^12 || ^14 || ^16 || ^17" + "node": "^14 || ^16 || ^17 || ^18" } }, "node_modules/@eslint/eslintrc": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.2.1.tgz", - "integrity": "sha512-bxvbYnBPN1Gibwyp6NrpnFzA3YtRL3BBAyEAFVIpNTm2Rn4Vy87GA5M4aSn3InRrlsbX5N0GW7XIx+U4SAEKdQ==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.0.tgz", + "integrity": "sha512-UWW0TMTmk2d7hLcWD1/e2g5HDM/HQ3csaLSqXCfqwh4uNDuNqlaKWXmEsL4Cs41Z0KnILNvwbHAah3C2yt06kw==", "dev": true, "dependencies": { "ajv": "^6.12.4", "debug": "^4.3.2", - "espree": "^9.3.1", - "globals": "^13.9.0", + "espree": "^9.3.2", + "globals": "^13.15.0", "ignore": "^5.2.0", "import-fresh": "^3.2.1", "js-yaml": "^4.1.0", - "minimatch": "^3.0.4", + "minimatch": "^3.1.2", "strip-json-comments": "^3.1.1" }, "engines": { @@ -1878,9 +1880,9 @@ "dev": true }, "node_modules/@eslint/eslintrc/node_modules/globals": { - "version": "13.12.1", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.12.1.tgz", - "integrity": "sha512-317dFlgY2pdJZ9rspXDks7073GpDmXdfbM3vYYp0HAMKGDh1FfWPleI2ljVNLQX5M5lXcAslTcPTrOrMEFOjyw==", + "version": "13.15.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.15.0.tgz", + "integrity": "sha512-bpzcOlgDhMG070Av0Vy5Owklpv1I6+j96GhUI7Rh7IzDCKLzboflLrrfqMu8NquDbiR4EOQk7XzJwqVJxicxog==", "dev": true, "dependencies": { "type-fest": "^0.20.2" @@ -1904,6 +1906,18 @@ "js-yaml": "bin/js-yaml.js" } }, + "node_modules/@eslint/eslintrc/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, "node_modules/@eslint/eslintrc/node_modules/type-fest": { "version": "0.20.2", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", @@ -2113,6 +2127,32 @@ } } }, + "node_modules/@jest/core/node_modules/@jest/transform": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-27.5.1.tgz", + "integrity": "sha512-ipON6WtYgl/1329g5AIJVbUuEh0wZVbdpGwC99Jw4LwuoBNS95MVphU6zOeD9pDkon+LLbFL7lOQRapbB8SCHw==", + "dev": true, + "dependencies": { + "@babel/core": "^7.1.0", + "@jest/types": "^27.5.1", + "babel-plugin-istanbul": "^6.1.1", + "chalk": "^4.0.0", + "convert-source-map": "^1.4.0", + "fast-json-stable-stringify": "^2.0.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^27.5.1", + "jest-regex-util": "^27.5.1", + "jest-util": "^27.5.1", + "micromatch": "^4.0.4", + "pirates": "^4.0.4", + "slash": "^3.0.0", + "source-map": "^0.6.1", + "write-file-atomic": "^3.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, "node_modules/@jest/core/node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", @@ -2171,6 +2211,41 @@ "node": ">=8" } }, + "node_modules/@jest/core/node_modules/jest-haste-map": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.5.1.tgz", + "integrity": "sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng==", + "dev": true, + "dependencies": { + "@jest/types": "^27.5.1", + "@types/graceful-fs": "^4.1.2", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "graceful-fs": "^4.2.9", + "jest-regex-util": "^27.5.1", + "jest-serializer": "^27.5.1", + "jest-util": "^27.5.1", + "jest-worker": "^27.5.1", + "micromatch": "^4.0.4", + "walker": "^1.0.7" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "optionalDependencies": { + "fsevents": "^2.3.2" + } + }, + "node_modules/@jest/core/node_modules/jest-regex-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.5.1.tgz", + "integrity": "sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg==", + "dev": true, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, "node_modules/@jest/core/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -2183,6 +2258,18 @@ "node": ">=8" } }, + "node_modules/@jest/core/node_modules/write-file-atomic": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", + "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", + "dev": true, + "dependencies": { + "imurmurhash": "^0.1.4", + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" + } + }, "node_modules/@jest/environment": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-27.5.1.tgz", @@ -2215,6 +2302,15 @@ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, + "node_modules/@jest/fake-timers/node_modules/@sinonjs/fake-timers": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-8.1.0.tgz", + "integrity": "sha512-OAPJUAtgeINhh/TAlUID4QTs53Njm7xzddaVlEs/SXwgtiD1tW22zAB/W1wdqfrpmikgaWQ9Fw6Ws+hsiRm5Vg==", + "dev": true, + "dependencies": { + "@sinonjs/commons": "^1.7.0" + } + }, "node_modules/@jest/globals": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-27.5.1.tgz", @@ -2273,6 +2369,32 @@ } } }, + "node_modules/@jest/reporters/node_modules/@jest/transform": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-27.5.1.tgz", + "integrity": "sha512-ipON6WtYgl/1329g5AIJVbUuEh0wZVbdpGwC99Jw4LwuoBNS95MVphU6zOeD9pDkon+LLbFL7lOQRapbB8SCHw==", + "dev": true, + "dependencies": { + "@babel/core": "^7.1.0", + "@jest/types": "^27.5.1", + "babel-plugin-istanbul": "^6.1.1", + "chalk": "^4.0.0", + "convert-source-map": "^1.4.0", + "fast-json-stable-stringify": "^2.0.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^27.5.1", + "jest-regex-util": "^27.5.1", + "jest-util": "^27.5.1", + "micromatch": "^4.0.4", + "pirates": "^4.0.4", + "slash": "^3.0.0", + "source-map": "^0.6.1", + "write-file-atomic": "^3.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, "node_modules/@jest/reporters/node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", @@ -2331,47 +2453,39 @@ "node": ">=8" } }, - "node_modules/@jest/reporters/node_modules/istanbul-lib-coverage": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", - "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/@jest/reporters/node_modules/istanbul-lib-instrument": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.1.0.tgz", - "integrity": "sha512-czwUz525rkOFDJxfKK6mYfIs9zBKILyrZQxjz3ABhjQXhbhFsSbo1HW/BFcsDnfJYJWA6thRR5/TUY2qs5W99Q==", + "node_modules/@jest/reporters/node_modules/jest-haste-map": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.5.1.tgz", + "integrity": "sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng==", "dev": true, "dependencies": { - "@babel/core": "^7.12.3", - "@babel/parser": "^7.14.7", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-coverage": "^3.2.0", - "semver": "^6.3.0" + "@jest/types": "^27.5.1", + "@types/graceful-fs": "^4.1.2", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "graceful-fs": "^4.2.9", + "jest-regex-util": "^27.5.1", + "jest-serializer": "^27.5.1", + "jest-util": "^27.5.1", + "jest-worker": "^27.5.1", + "micromatch": "^4.0.4", + "walker": "^1.0.7" }, "engines": { - "node": ">=8" - } - }, - "node_modules/@jest/reporters/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, - "bin": { - "semver": "bin/semver.js" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "optionalDependencies": { + "fsevents": "^2.3.2" } }, - "node_modules/@jest/reporters/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "node_modules/@jest/reporters/node_modules/jest-regex-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.5.1.tgz", + "integrity": "sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg==", "dev": true, "engines": { - "node": ">=0.10.0" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, "node_modules/@jest/reporters/node_modules/supports-color": { @@ -2386,6 +2500,18 @@ "node": ">=8" } }, + "node_modules/@jest/reporters/node_modules/write-file-atomic": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", + "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", + "dev": true, + "dependencies": { + "imurmurhash": "^0.1.4", + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" + } + }, "node_modules/@jest/source-map": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-27.5.1.tgz", @@ -2400,15 +2526,6 @@ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/@jest/source-map/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/@jest/test-result": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-27.5.1.tgz", @@ -2439,109 +2556,39 @@ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/@jest/transform": { + "node_modules/@jest/test-sequencer/node_modules/jest-haste-map": { "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-27.5.1.tgz", - "integrity": "sha512-ipON6WtYgl/1329g5AIJVbUuEh0wZVbdpGwC99Jw4LwuoBNS95MVphU6zOeD9pDkon+LLbFL7lOQRapbB8SCHw==", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.5.1.tgz", + "integrity": "sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng==", "dev": true, "dependencies": { - "@babel/core": "^7.1.0", "@jest/types": "^27.5.1", - "babel-plugin-istanbul": "^6.1.1", - "chalk": "^4.0.0", - "convert-source-map": "^1.4.0", - "fast-json-stable-stringify": "^2.0.0", + "@types/graceful-fs": "^4.1.2", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", "graceful-fs": "^4.2.9", - "jest-haste-map": "^27.5.1", "jest-regex-util": "^27.5.1", + "jest-serializer": "^27.5.1", "jest-util": "^27.5.1", + "jest-worker": "^27.5.1", "micromatch": "^4.0.4", - "pirates": "^4.0.4", - "slash": "^3.0.0", - "source-map": "^0.6.1", - "write-file-atomic": "^3.0.0" + "walker": "^1.0.7" }, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/@jest/transform/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/@jest/transform/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/@jest/transform/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/@jest/transform/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/@jest/transform/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/@jest/transform/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" + "optionalDependencies": { + "fsevents": "^2.3.2" } }, - "node_modules/@jest/transform/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "node_modules/@jest/test-sequencer/node_modules/jest-regex-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.5.1.tgz", + "integrity": "sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg==", "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, "engines": { - "node": ">=8" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, "node_modules/@jest/types": { @@ -2630,6 +2677,20 @@ "node": ">=8" } }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.1.tgz", + "integrity": "sha512-GcHwniMlA2z+WFPWuY8lp3fsza0I8xPFMWL5+n8LYyP6PSvPrXf4+n8stDHZY2DM0zy9sVkRDy1jDI4XGzYVqg==", + "dev": true, + "dependencies": { + "@jridgewell/set-array": "^1.0.0", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, "node_modules/@jridgewell/resolve-uri": { "version": "3.0.5", "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.0.5.tgz", @@ -2639,6 +2700,15 @@ "node": ">=6.0.0" } }, + "node_modules/@jridgewell/set-array": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.1.tgz", + "integrity": "sha512-Ct5MqZkLGEXTVmQYbGtx9SVqD2fqwvdubdps5D3djjAkgkKwT918VNOz65pEHFaYTeWcukmJmH5SwsA9Tn2ObQ==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, "node_modules/@jridgewell/sourcemap-codec": { "version": "1.4.11", "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.11.tgz", @@ -2646,9 +2716,9 @@ "dev": true }, "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.4", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.4.tgz", - "integrity": "sha512-vFv9ttIedivx0ux3QSjhgtCVjPZd5l46ZOMDSCwnH1yUO2e964gO8LZGyv2QkqcgR6TnBU1v+1IFqmeoG+0UJQ==", + "version": "0.3.13", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.13.tgz", + "integrity": "sha512-o1xbKhp9qnIAoHJSWd6KlCZfqslL4valSF81H8ImioOAxluWYWOpWkpyktY2vnt4tbrX9XYaxovq6cgowaJp2w==", "dev": true, "dependencies": { "@jridgewell/resolve-uri": "^3.0.3", @@ -2706,9 +2776,9 @@ } }, "node_modules/@sinonjs/fake-timers": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-8.1.0.tgz", - "integrity": "sha512-OAPJUAtgeINhh/TAlUID4QTs53Njm7xzddaVlEs/SXwgtiD1tW22zAB/W1wdqfrpmikgaWQ9Fw6Ws+hsiRm5Vg==", + "version": "9.1.2", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-9.1.2.tgz", + "integrity": "sha512-BPS4ynJW/o92PUR4wgriz2Ud5gpST5vz6GQfMixEDK0Z8ZCUv2M7SkBLykH56T++Xs+8ln9zTGbOvNGIe02/jw==", "dev": true, "dependencies": { "@sinonjs/commons": "^1.7.0" @@ -2731,15 +2801,6 @@ "integrity": "sha512-+iTbntw2IZPb/anVDbypzfQa+ay64MW0Zo8aJ8gZPWMMK6/OubMVb6lUPMagqjOPnmtauXnFCACVl3O7ogjeqQ==", "dev": true }, - "node_modules/@socket.io/base64-arraybuffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@socket.io/base64-arraybuffer/-/base64-arraybuffer-1.0.2.tgz", - "integrity": "sha512-dOlCBKnDw4iShaIsH/bxujKTM18+2TOAsYz+KSc11Am38H4q5Xw8Bbz97ZYdrVNM+um3p7w86Bvvmcn9q+5+eQ==", - "dev": true, - "engines": { - "node": ">= 0.6.0" - } - }, "node_modules/@tootallnate/once": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", @@ -2750,9 +2811,9 @@ } }, "node_modules/@types/babel__core": { - "version": "7.1.18", - "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.18.tgz", - "integrity": "sha512-S7unDjm/C7z2A2R9NzfKCK1I+BAALDtxEmsJBwlB3EzNfb929ykjL++1CK9LO++EIp2fQrC8O+BwjKvz6UeDyQ==", + "version": "7.1.19", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.19.tgz", + "integrity": "sha512-WEOTgRsbYkvA/KCsDwVEGkd7WAr1e3g31VHQ8zy5gul/V1qKullU/BU5I68X5v7V3GnB9eotmom4v5a5gjxorw==", "dev": true, "dependencies": { "@babel/parser": "^7.1.0", @@ -2782,18 +2843,18 @@ } }, "node_modules/@types/babel__traverse": { - "version": "7.14.2", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.14.2.tgz", - "integrity": "sha512-K2waXdXBi2302XUdcHcR1jCeU0LL4TD9HRs/gk0N2Xvrht+G/BfJa4QObBQZfhMdxiCpV3COl5Nfq4uKTeTnJA==", + "version": "7.17.1", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.17.1.tgz", + "integrity": "sha512-kVzjari1s2YVi77D3w1yuvohV2idweYXMCDzqBiVNN63TcDWrIlTVOYpqVrvbbyOE/IyzBoTKF0fdnLPEORFxA==", "dev": true, "dependencies": { "@babel/types": "^7.3.0" } }, "node_modules/@types/chai": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.0.tgz", - "integrity": "sha512-/ceqdqeRraGolFTcfoXNiqjyQhZzbINDngeoAq9GoHa8PPK1yNzTaxWjA6BFWp5Ua9JpXEMSS4s5i9tS0hOJtw==", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.1.tgz", + "integrity": "sha512-/zPMqDkzSZ8t3VtxOa4KPq7uzzW978M9Tvh+j7GHKuo6k6GTLxPJ4J5gE5cjfJ26pnXst0N5Hax8Sr0T2Mi9zQ==", "dev": true }, "node_modules/@types/component-emitter": { @@ -2850,9 +2911,9 @@ } }, "node_modules/@types/istanbul-lib-coverage": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.3.tgz", - "integrity": "sha512-sz7iLqvVUg1gIedBOvlkxPlc8/uVzyS5OwGz1cKjXzkl3FpL3al0crU8YGU1WoHkxn0Wxbw5tyi6hvzJKNzFsw==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", + "integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==", "dev": true }, "node_modules/@types/istanbul-lib-report": { @@ -2865,18 +2926,18 @@ } }, "node_modules/@types/istanbul-reports": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.0.tgz", - "integrity": "sha512-nwKNbvnwJ2/mndE9ItP/zc2TCzw6uuodnF4EHYWD+gCQDVBuRQL5UzbZD0/ezy1iKsFU2ZQiDqg4M9dN4+wZgA==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", + "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", "dev": true, "dependencies": { "@types/istanbul-lib-report": "*" } }, "node_modules/@types/jest": { - "version": "27.4.1", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-27.4.1.tgz", - "integrity": "sha512-23iPJADSmicDVrWk+HT58LMJtzLAnB2AgIzplQuq/bSrGaxCrlvRFjGbXmamnnk/mAmCdLStiGqggu28ocUyiw==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-27.5.1.tgz", + "integrity": "sha512-fUy7YRpT+rHXto1YlL+J9rs0uLGyiqVt3ZOTQR+4ROc47yNl8WLdVLgUloBRhOxP1PZvguHl44T3H0wAWxahYQ==", "dev": true, "dependencies": { "jest-matcher-utils": "^27.0.0", @@ -2892,25 +2953,25 @@ "node_modules/@types/json5": { "version": "0.0.29", "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", - "integrity": "sha1-7ihweulOEdK4J7y+UnC86n8+ce4=", + "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", "dev": true }, "node_modules/@types/mocha": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-9.1.0.tgz", - "integrity": "sha512-QCWHkbMv4Y5U9oW10Uxbr45qMMSzl4OzijsozynUAgx3kEHUdXB00udx2dWDQ7f2TU2a2uuiFaRZjCe3unPpeg==", + "version": "9.1.1", + "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-9.1.1.tgz", + "integrity": "sha512-Z61JK7DKDtdKTWwLeElSEBcWGRLY8g95ic5FoQqI9CMx0ns/Ghep3B4DfcEimiKMvtamNVULVNKEsiwV3aQmXw==", "dev": true }, "node_modules/@types/node": { - "version": "17.0.21", - "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.21.tgz", - "integrity": "sha512-DBZCJbhII3r90XbQxI8Y9IjjiiOGlZ0Hr32omXIZvwwZ7p4DMMXGrKXVyPfuoBOri9XNtL0UK69jYIBIsRX3QQ==", + "version": "17.0.42", + "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.42.tgz", + "integrity": "sha512-Q5BPGyGKcvQgAMbsr7qEGN/kIPN6zZecYYABeTDBizOsau+2NMdSVTar9UQw21A2+JyA2KRNDYaYrPB0Rpk2oQ==", "dev": true }, "node_modules/@types/prettier": { - "version": "2.4.4", - "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.4.4.tgz", - "integrity": "sha512-ReVR2rLTV1kvtlWFyuot+d1pkpG2Fw/XKE3PDAdj57rbM97ttSp9JZ2UsP+2EHTylra9cUf6JA7tGwW1INzUrA==", + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.6.3.tgz", + "integrity": "sha512-ymZk3LEC/fsut+/Q5qejp6R9O1rMxz3XaRHDV6kX8MrGAhOSPqVARbDi+EZvInBpw+BnCX3TD240byVkOfQsHg==", "dev": true }, "node_modules/@types/sinon": { @@ -2944,25 +3005,25 @@ } }, "node_modules/@types/yargs-parser": { - "version": "20.2.1", - "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-20.2.1.tgz", - "integrity": "sha512-7tFImggNeNBVMsn0vLrpn1H1uPrUBdnARPTpZoitY37ZrdJREzf7I16tMrlK3hen349gr1NYh8CmZQa7CTG6Aw==", + "version": "21.0.0", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.0.tgz", + "integrity": "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==", "dev": true }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "5.15.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.15.0.tgz", - "integrity": "sha512-u6Db5JfF0Esn3tiAKELvoU5TpXVSkOpZ78cEGn/wXtT2RVqs2vkt4ge6N8cRCyw7YVKhmmLDbwI2pg92mlv7cA==", + "version": "5.27.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.27.1.tgz", + "integrity": "sha512-6dM5NKT57ZduNnJfpY81Phe9nc9wolnMCnknb1im6brWi1RYv84nbMS3olJa27B6+irUVV1X/Wb+Am0FjJdGFw==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "5.15.0", - "@typescript-eslint/type-utils": "5.15.0", - "@typescript-eslint/utils": "5.15.0", - "debug": "^4.3.2", + "@typescript-eslint/scope-manager": "5.27.1", + "@typescript-eslint/type-utils": "5.27.1", + "@typescript-eslint/utils": "5.27.1", + "debug": "^4.3.4", "functional-red-black-tree": "^1.0.1", - "ignore": "^5.1.8", + "ignore": "^5.2.0", "regexpp": "^3.2.0", - "semver": "^7.3.5", + "semver": "^7.3.7", "tsutils": "^3.21.0" }, "engines": { @@ -2983,12 +3044,12 @@ } }, "node_modules/@typescript-eslint/eslint-plugin-tslint": { - "version": "5.15.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin-tslint/-/eslint-plugin-tslint-5.15.0.tgz", - "integrity": "sha512-1w1Uxqy4Wixv2vRE9DU0Z6IxRWc/JApowQIB0BrQqfgV5QQNmt9y1sI20p+CeomhLCA9Hd4VEWEFhndzHbGSVw==", + "version": "5.27.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin-tslint/-/eslint-plugin-tslint-5.27.1.tgz", + "integrity": "sha512-U95M4jCGNbag0T5OtnwVXQJ5qx/1V9QOipcv9pQnOdIwVPPSBuoLYluOChGeuoQLHN/TjfTPqKhTBKtI3NmnRA==", "dev": true, "dependencies": { - "@typescript-eslint/utils": "5.15.0", + "@typescript-eslint/utils": "5.27.1", "lodash": "^4.17.21" }, "engines": { @@ -3001,15 +3062,15 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "5.15.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.15.0.tgz", - "integrity": "sha512-NGAYP/+RDM2sVfmKiKOCgJYPstAO40vPAgACoWPO/+yoYKSgAXIFaBKsV8P0Cc7fwKgvj27SjRNX4L7f4/jCKQ==", + "version": "5.27.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.27.1.tgz", + "integrity": "sha512-7Va2ZOkHi5NP+AZwb5ReLgNF6nWLGTeUJfxdkVUAPPSaAdbWNnFZzLZ4EGGmmiCTg+AwlbE1KyUYTBglosSLHQ==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "5.15.0", - "@typescript-eslint/types": "5.15.0", - "@typescript-eslint/typescript-estree": "5.15.0", - "debug": "^4.3.2" + "@typescript-eslint/scope-manager": "5.27.1", + "@typescript-eslint/types": "5.27.1", + "@typescript-eslint/typescript-estree": "5.27.1", + "debug": "^4.3.4" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -3028,13 +3089,13 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "5.15.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.15.0.tgz", - "integrity": "sha512-EFiZcSKrHh4kWk0pZaa+YNJosvKE50EnmN4IfgjkA3bTHElPtYcd2U37QQkNTqwMCS7LXeDeZzEqnsOH8chjSg==", + "version": "5.27.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.27.1.tgz", + "integrity": "sha512-fQEOSa/QroWE6fAEg+bJxtRZJTH8NTskggybogHt4H9Da8zd4cJji76gA5SBlR0MgtwF7rebxTbDKB49YUCpAg==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.15.0", - "@typescript-eslint/visitor-keys": "5.15.0" + "@typescript-eslint/types": "5.27.1", + "@typescript-eslint/visitor-keys": "5.27.1" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -3045,13 +3106,13 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "5.15.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.15.0.tgz", - "integrity": "sha512-KGeDoEQ7gHieLydujGEFLyLofipe9PIzfvA/41urz4hv+xVxPEbmMQonKSynZ0Ks2xDhJQ4VYjB3DnRiywvKDA==", + "version": "5.27.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.27.1.tgz", + "integrity": "sha512-+UC1vVUWaDHRnC2cQrCJ4QtVjpjjCgjNFpg8b03nERmkHv9JV9X5M19D7UFMd+/G7T/sgFwX2pGmWK38rqyvXw==", "dev": true, "dependencies": { - "@typescript-eslint/utils": "5.15.0", - "debug": "^4.3.2", + "@typescript-eslint/utils": "5.27.1", + "debug": "^4.3.4", "tsutils": "^3.21.0" }, "engines": { @@ -3071,9 +3132,9 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "5.15.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.15.0.tgz", - "integrity": "sha512-yEiTN4MDy23vvsIksrShjNwQl2vl6kJeG9YkVJXjXZnkJElzVK8nfPsWKYxcsGWG8GhurYXP4/KGj3aZAxbeOA==", + "version": "5.27.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.27.1.tgz", + "integrity": "sha512-LgogNVkBhCTZU/m8XgEYIWICD6m4dmEDbKXESCbqOXfKZxRKeqpiJXQIErv66sdopRKZPo5l32ymNqibYEH/xg==", "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -3084,17 +3145,17 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "5.15.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.15.0.tgz", - "integrity": "sha512-Hb0e3dGc35b75xLzixM3cSbG1sSbrTBQDfIScqdyvrfJZVEi4XWAT+UL/HMxEdrJNB8Yk28SKxPLtAhfCbBInA==", + "version": "5.27.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.27.1.tgz", + "integrity": "sha512-DnZvvq3TAJ5ke+hk0LklvxwYsnXpRdqUY5gaVS0D4raKtbznPz71UJGnPTHEFo0GDxqLOLdMkkmVZjSpET1hFw==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.15.0", - "@typescript-eslint/visitor-keys": "5.15.0", - "debug": "^4.3.2", - "globby": "^11.0.4", + "@typescript-eslint/types": "5.27.1", + "@typescript-eslint/visitor-keys": "5.27.1", + "debug": "^4.3.4", + "globby": "^11.1.0", "is-glob": "^4.0.3", - "semver": "^7.3.5", + "semver": "^7.3.7", "tsutils": "^3.21.0" }, "engines": { @@ -3111,15 +3172,15 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "5.15.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.15.0.tgz", - "integrity": "sha512-081rWu2IPKOgTOhHUk/QfxuFog8m4wxW43sXNOMSCdh578tGJ1PAaWPsj42LOa7pguh173tNlMigsbrHvh/mtA==", + "version": "5.27.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.27.1.tgz", + "integrity": "sha512-mZ9WEn1ZLDaVrhRaYgzbkXBkTPghPFsup8zDbbsYTxC5OmqrFE7skkKS/sraVsLP3TcT3Ki5CSyEFBRkLH/H/w==", "dev": true, "dependencies": { "@types/json-schema": "^7.0.9", - "@typescript-eslint/scope-manager": "5.15.0", - "@typescript-eslint/types": "5.15.0", - "@typescript-eslint/typescript-estree": "5.15.0", + "@typescript-eslint/scope-manager": "5.27.1", + "@typescript-eslint/types": "5.27.1", + "@typescript-eslint/typescript-estree": "5.27.1", "eslint-scope": "^5.1.1", "eslint-utils": "^3.0.0" }, @@ -3135,13 +3196,13 @@ } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "5.15.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.15.0.tgz", - "integrity": "sha512-+vX5FKtgvyHbmIJdxMJ2jKm9z2BIlXJiuewI8dsDYMp5LzPUcuTT78Ya5iwvQg3VqSVdmxyM8Anj1Jeq7733ZQ==", + "version": "5.27.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.27.1.tgz", + "integrity": "sha512-xYs6ffo01nhdJgPieyk7HAOpjhTsx7r/oB9LWEhwAXgwn33tkr+W8DI2ChboqhZlC4q3TC6geDYPoiX8ROqyOQ==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.15.0", - "eslint-visitor-keys": "^3.0.0" + "@typescript-eslint/types": "5.27.1", + "eslint-visitor-keys": "^3.3.0" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -3304,9 +3365,9 @@ } }, "node_modules/@webpack-cli/configtest": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-1.1.1.tgz", - "integrity": "sha512-1FBc1f9G4P/AxMqIgfZgeOTuRnwZMten8E7zap5zgpPInnCrP8D4Q81+4CWIch8i/Nf7nXjP0v6CjjbHOrXhKg==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-1.2.0.tgz", + "integrity": "sha512-4FB8Tj6xyVkyqjj1OaTqCjXYULB9FMkqQ8yGrZjRDrYh0nOE+7Lhs45WioWQQMV+ceFlE368Ukhe6xdvJM9Egg==", "dev": true, "peerDependencies": { "webpack": "4.x.x || 5.x.x", @@ -3314,9 +3375,9 @@ } }, "node_modules/@webpack-cli/info": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-1.4.1.tgz", - "integrity": "sha512-PKVGmazEq3oAo46Q63tpMr4HipI3OPfP7LiNOEJg963RMgT0rqheag28NCML0o3GIzA3DmxP1ZIAv9oTX1CUIA==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-1.5.0.tgz", + "integrity": "sha512-e8tSXZpw2hPl2uMJY6fsMswaok5FdlGNRTktvFk2sD8RjH0hE2+XistawJx1vmKteh4NmGmNUrp+Tb2w+udPcQ==", "dev": true, "dependencies": { "envinfo": "^7.7.3" @@ -3326,9 +3387,9 @@ } }, "node_modules/@webpack-cli/serve": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-1.6.1.tgz", - "integrity": "sha512-gNGTiTrjEVQ0OcVnzsRSqTxaBSr+dmTfm+qJsCDluky8uhdLWep7Gcr62QsAKHTMxjCS/8nEITsmFAhfIx+QSw==", + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-1.7.0.tgz", + "integrity": "sha512-oxnCNGj88fL+xzV+dacXs44HcDwf1ovs3AuEzvP7mqXw7fQntqIhQ1BRmynh4qEKQSSSRSWVyXRjmTbZIX9V2Q==", "dev": true, "peerDependencies": { "webpack-cli": "4.x.x" @@ -3352,9 +3413,9 @@ "dev": true }, "node_modules/abab": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.5.tgz", - "integrity": "sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q==", + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", + "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==", "dev": true }, "node_modules/accepts": { @@ -3371,9 +3432,9 @@ } }, "node_modules/acorn": { - "version": "8.7.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.0.tgz", - "integrity": "sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==", + "version": "8.7.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.1.tgz", + "integrity": "sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==", "dev": true, "bin": { "acorn": "bin/acorn" @@ -3526,14 +3587,14 @@ "dev": true }, "node_modules/array-includes": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.4.tgz", - "integrity": "sha512-ZTNSQkmWumEbiHO2GF4GmWxYVTiQyJy2XOTa15sdQSrvKn7l+180egQMqlrMOUMCyLMD7pmyQe4mMDUT6Behrw==", + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.5.tgz", + "integrity": "sha512-iSDYZMMyTPkiFasVqfuAQnWAYcvO/SeBSCGKePoEthjp4LEMTe4uLc7b025o4jAZpHhihh8xPo99TNWUWWkGDQ==", "dev": true, "dependencies": { "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.1", + "define-properties": "^1.1.4", + "es-abstract": "^1.19.5", "get-intrinsic": "^1.1.1", "is-string": "^1.0.7" }, @@ -3571,14 +3632,15 @@ } }, "node_modules/array.prototype.flatmap": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.2.5.tgz", - "integrity": "sha512-08u6rVyi1Lj7oqWbS9nUxliETrtIROT4XGTA4D/LWGten6E3ocm7cy9SIrmNHOL5XVbVuckUp3X6Xyg8/zpvHA==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.0.tgz", + "integrity": "sha512-PZC9/8TKAIxcWKdyeb77EzULHPrIX/tIZebLJUQOMR1OwYosT8yggdfWScfTBCDj5utONvOuPQQumYsU2ULbkg==", "dev": true, "dependencies": { - "call-bind": "^1.0.0", + "call-bind": "^1.0.2", "define-properties": "^1.1.3", - "es-abstract": "^1.19.0" + "es-abstract": "^1.19.2", + "es-shim-unscopables": "^1.0.0" }, "engines": { "node": ">= 0.4" @@ -3611,109 +3673,17 @@ "node_modules/asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", "dev": true }, - "node_modules/babel-jest": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-27.5.1.tgz", - "integrity": "sha512-cdQ5dXjGRd0IBRATiQ4mZGlGlRE8kJpjPOixdNRdT+m3UcNqmYWN6rK6nvtXYfY3D76cb8s/O1Ss8ea24PIwcg==", - "dev": true, - "dependencies": { - "@jest/transform": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/babel__core": "^7.1.14", - "babel-plugin-istanbul": "^6.1.1", - "babel-preset-jest": "^27.5.1", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "slash": "^3.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - }, - "peerDependencies": { - "@babel/core": "^7.8.0" - } - }, - "node_modules/babel-jest/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/babel-jest/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/babel-jest/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/babel-jest/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/babel-jest/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/babel-jest/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/babel-loader": { - "version": "8.2.3", - "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.2.3.tgz", - "integrity": "sha512-n4Zeta8NC3QAsuyiizu0GkmRcQ6clkV9WFUnUf1iXP//IeSKbWjofW3UHyZVwlOB4y039YQKefawyTn64Zwbuw==", + "version": "8.2.5", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.2.5.tgz", + "integrity": "sha512-OSiFfH89LrEMiWd4pLNqGz4CwJDtbs2ZVc+iGu2HrkRfPxId9F2anQj38IxWpmRfsUY0aBZYi1EFcd3mhtRMLQ==", "dev": true, "dependencies": { "find-cache-dir": "^3.3.1", - "loader-utils": "^1.4.0", + "loader-utils": "^2.0.0", "make-dir": "^3.1.0", "schema-utils": "^2.6.5" }, @@ -3725,6 +3695,20 @@ "webpack": ">=2" } }, + "node_modules/babel-loader/node_modules/loader-utils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.2.tgz", + "integrity": "sha512-TM57VeHptv569d/GKh6TAYdzKblwDNiumOdkFnejjD0XwTH87K90w3O7AiJRqdQoXygvi1VQTJTLGhJl7WqA7A==", + "dev": true, + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + }, + "engines": { + "node": ">=8.9.0" + } + }, "node_modules/babel-plugin-dynamic-import-node": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", @@ -3750,55 +3734,6 @@ "node": ">=8" } }, - "node_modules/babel-plugin-istanbul/node_modules/istanbul-lib-coverage": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", - "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/babel-plugin-istanbul/node_modules/istanbul-lib-instrument": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.1.0.tgz", - "integrity": "sha512-czwUz525rkOFDJxfKK6mYfIs9zBKILyrZQxjz3ABhjQXhbhFsSbo1HW/BFcsDnfJYJWA6thRR5/TUY2qs5W99Q==", - "dev": true, - "dependencies": { - "@babel/core": "^7.12.3", - "@babel/parser": "^7.14.7", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-coverage": "^3.2.0", - "semver": "^6.3.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/babel-plugin-istanbul/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/babel-plugin-jest-hoist": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-27.5.1.tgz", - "integrity": "sha512-50wCwD5EMNW4aRpOwtqzyZHIewTYNxLA4nhB+09d8BIssfNfzBRhkBIHiaPv1Si226TQSvp8gxAJm2iY2qs2hQ==", - "dev": true, - "dependencies": { - "@babel/template": "^7.3.3", - "@babel/types": "^7.3.3", - "@types/babel__core": "^7.0.0", - "@types/babel__traverse": "^7.0.6" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, "node_modules/babel-plugin-polyfill-corejs2": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.0.tgz", @@ -3870,22 +3805,6 @@ "@babel/core": "^7.0.0" } }, - "node_modules/babel-preset-jest": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-27.5.1.tgz", - "integrity": "sha512-Nptf2FzlPCWYuJg41HBqXVT8ym6bXOevuCTbhxlUpjwtysGaIWFvDEjp4y+G7fl13FgOdjs7P/DmErqH7da0Ag==", - "dev": true, - "dependencies": { - "babel-plugin-jest-hoist": "^27.5.1", - "babel-preset-current-node-syntax": "^1.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, "node_modules/balanced-match": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", @@ -3920,24 +3839,27 @@ } }, "node_modules/body-parser": { - "version": "1.19.2", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.2.tgz", - "integrity": "sha512-SAAwOxgoCKMGs9uUAUFHygfLAyaniaoun6I8mFY9pRAJL9+Kec34aU+oIjDhTycub1jozEfEwx1W1IuOYxVSFw==", + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.0.tgz", + "integrity": "sha512-DfJ+q6EPcGKZD1QWUjSpqp+Q7bDQTsQIF4zfUAtZ6qk+H/3/QRhg9CEp39ss+/T2vw0+HaidC0ecJj/DRLIaKg==", "dev": true, "dependencies": { "bytes": "3.1.2", "content-type": "~1.0.4", "debug": "2.6.9", - "depd": "~1.1.2", - "http-errors": "1.8.1", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", "iconv-lite": "0.4.24", - "on-finished": "~2.3.0", - "qs": "6.9.7", - "raw-body": "2.4.3", - "type-is": "~1.6.18" + "on-finished": "2.4.1", + "qs": "6.10.3", + "raw-body": "2.5.1", + "type-is": "~1.6.18", + "unpipe": "1.0.0" }, "engines": { - "node": ">= 0.8" + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" } }, "node_modules/body-parser/node_modules/debug": { @@ -3955,10 +3877,22 @@ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", "dev": true }, + "node_modules/body-parser/node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "dev": true, + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, "node_modules/boolbase": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", - "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", "dev": true }, "node_modules/brace-expansion": { @@ -3996,15 +3930,25 @@ "dev": true }, "node_modules/browserslist": { - "version": "4.19.1", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.19.1.tgz", - "integrity": "sha512-u2tbbG5PdKRTUoctO3NBD8FQ5HdPh1ZXPHzp1rwaa5jTc+RV9/+RlWiAIKmjRPQF+xbGM9Kklj5bZQFa2s/38A==", + "version": "4.20.4", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.20.4.tgz", + "integrity": "sha512-ok1d+1WpnU24XYN7oC3QWgTyMhY/avPJ/r9T00xxvUOIparA/gc+UPUMaod3i+G6s+nI2nUb9xZ5k794uIwShw==", "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + } + ], "dependencies": { - "caniuse-lite": "^1.0.30001286", - "electron-to-chromium": "^1.4.17", + "caniuse-lite": "^1.0.30001349", + "electron-to-chromium": "^1.4.147", "escalade": "^3.1.1", - "node-releases": "^2.0.1", + "node-releases": "^2.0.5", "picocolors": "^1.0.0" }, "bin": { @@ -4012,10 +3956,6 @@ }, "engines": { "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" } }, "node_modules/bs-logger": { @@ -4092,14 +4032,20 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001286", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001286.tgz", - "integrity": "sha512-zaEMRH6xg8ESMi2eQ3R4eZ5qw/hJiVsO/HlLwniIwErij0JDr9P+8V4dtx1l+kLq6j3yy8l8W4fst1lBnat5wQ==", + "version": "1.0.30001352", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001352.tgz", + "integrity": "sha512-GUgH8w6YergqPQDGWhJGt8GDRnY0L/iJVQcU3eJ46GYf52R8tk0Wxp0PymuFVZboJYXGiCqwozAYZNRjVj6IcA==", "dev": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - } + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + } + ] }, "node_modules/chai": { "version": "4.3.6", @@ -4152,18 +4098,19 @@ } }, "node_modules/cheerio": { - "version": "1.0.0-rc.10", - "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.10.tgz", - "integrity": "sha512-g0J0q/O6mW8z5zxQ3A8E8J1hUgp4SMOvEoW/x84OwyHKe/Zccz83PVT4y5Crcr530FV6NgmKI1qvGTKVl9XXVw==", + "version": "1.0.0-rc.11", + "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.11.tgz", + "integrity": "sha512-bQwNaDIBKID5ts/DsdhxrjqFXYfLw4ste+wMKqWA8DyKcS4qwsPP4Bk8ZNaTJjvpiX/qW3BT4sU7d6Bh5i+dag==", "dev": true, "dependencies": { - "cheerio-select": "^1.5.0", - "dom-serializer": "^1.3.2", - "domhandler": "^4.2.0", - "htmlparser2": "^6.1.0", - "parse5": "^6.0.1", - "parse5-htmlparser2-tree-adapter": "^6.0.1", - "tslib": "^2.2.0" + "cheerio-select": "^2.1.0", + "dom-serializer": "^2.0.0", + "domhandler": "^5.0.3", + "domutils": "^3.0.1", + "htmlparser2": "^8.0.1", + "parse5": "^7.0.0", + "parse5-htmlparser2-tree-adapter": "^7.0.0", + "tslib": "^2.4.0" }, "engines": { "node": ">= 6" @@ -4173,25 +4120,26 @@ } }, "node_modules/cheerio-select": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-1.5.0.tgz", - "integrity": "sha512-qocaHPv5ypefh6YNxvnbABM07KMxExbtbfuJoIie3iZXX1ERwYmJcIiRrr9H05ucQP1k28dav8rpdDgjQd8drg==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-2.1.0.tgz", + "integrity": "sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==", "dev": true, "dependencies": { - "css-select": "^4.1.3", - "css-what": "^5.0.1", - "domelementtype": "^2.2.0", - "domhandler": "^4.2.0", - "domutils": "^2.7.0" + "boolbase": "^1.0.0", + "css-select": "^5.1.0", + "css-what": "^6.1.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3", + "domutils": "^3.0.1" }, "funding": { "url": "https://github.com/sponsors/fb55" } }, "node_modules/cheerio/node_modules/tslib": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.2.0.tgz", - "integrity": "sha512-gS9GVHRU+RGn5KQM2rllAlR3dU6m7AcpJKdtH8gFvQiC4Otgk98XnmMU+nZenHt/+VhnBPWwgrJsyrdcw6i23w==", + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", "dev": true }, "node_modules/chokidar": { @@ -4234,9 +4182,9 @@ } }, "node_modules/ci-info": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.2.0.tgz", - "integrity": "sha512-dVqRX7fLUm8J6FgHJ418XuIgDLZDkYcDFTeL6TA2gt5WlIZUQrrH6EZrNClwT/H0FateUsZkGIOPRrLbP+PR9A==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.3.1.tgz", + "integrity": "sha512-SXgeMX9VwDe7iFFaEWkA5AstuER9YKqy4EhHqr4DVqkwmD9rpVimkMKWHdjn30Ja45txyjhSn63lVX69eVCckg==", "dev": true }, "node_modules/cjs-module-lexer": { @@ -4273,7 +4221,7 @@ "node_modules/co": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", + "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", "dev": true, "engines": { "iojs": ">= 1.0.0", @@ -4326,9 +4274,9 @@ "dev": true }, "node_modules/comment-parser": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/comment-parser/-/comment-parser-1.3.0.tgz", - "integrity": "sha512-hRpmWIKgzd81vn0ydoWoyPoALEOnF4wt8yKD35Ib1D6XC2siLiYaiqfGkYrunuKdsXGwpBpHU3+9r+RVw2NZfA==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/comment-parser/-/comment-parser-1.3.1.tgz", + "integrity": "sha512-B52sN2VNghyq5ofvUsqZjmk6YkihBX5vMSChmSK9v4ShjKf3Vk5Xcmgpw4o+iIgtrnM/u5FiMpz9VKb8lpBveA==", "dev": true, "engines": { "node": ">= 12.0.0" @@ -4433,9 +4381,9 @@ } }, "node_modules/cookie": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", - "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==", + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", + "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", "dev": true, "engines": { "node": ">= 0.6" @@ -4448,9 +4396,9 @@ "dev": true }, "node_modules/core-js": { - "version": "3.21.1", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.21.1.tgz", - "integrity": "sha512-FRq5b/VMrWlrmCzwRrpDYNxyHP9BcAZC+xHJaqTgIE5091ZV1NTmyh0sGOg5XqpnHvR0svdy0sv1gWA1zmhxig==", + "version": "3.22.8", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.22.8.tgz", + "integrity": "sha512-UoGQ/cfzGYIuiq6Z7vWL1HfkE9U9IZ4Ub+0XSiJTCzvbZzgPA69oDF2f+lgJ6dFFLEdjW5O6svvoKzXX23xFkA==", "dev": true, "hasInstallScript": true, "funding": { @@ -4459,12 +4407,12 @@ } }, "node_modules/core-js-compat": { - "version": "3.21.1", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.21.1.tgz", - "integrity": "sha512-gbgX5AUvMb8gwxC7FLVWYT7Kkgu/y7+h/h1X43yJkNqhlK2fuYyQimqvKGNZFAY6CKii/GFKJ2cp/1/42TN36g==", + "version": "3.22.8", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.22.8.tgz", + "integrity": "sha512-pQnwg4xtuvc2Bs/5zYQPaEYYSuTxsF7LBWF0SvnVhthZo/Qe+rJpcEekrdNK5DWwDJ0gv0oI9NNX5Mppdy0ctg==", "dev": true, "dependencies": { - "browserslist": "^4.19.1", + "browserslist": "^4.20.3", "semver": "7.0.0" }, "funding": { @@ -4509,25 +4457,25 @@ } }, "node_modules/css-select": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.1.3.tgz", - "integrity": "sha512-gT3wBNd9Nj49rAbmtFHj1cljIAOLYSX1nZ8CB7TBO3INYckygm5B7LISU/szY//YmdiSLbJvDLOx9VnMVpMBxA==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz", + "integrity": "sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==", "dev": true, "dependencies": { "boolbase": "^1.0.0", - "css-what": "^5.0.0", - "domhandler": "^4.2.0", - "domutils": "^2.6.0", - "nth-check": "^2.0.0" + "css-what": "^6.1.0", + "domhandler": "^5.0.2", + "domutils": "^3.0.1", + "nth-check": "^2.0.1" }, "funding": { "url": "https://github.com/sponsors/fb55" } }, "node_modules/css-what": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-5.0.1.tgz", - "integrity": "sha512-FYDTSHb/7KXsWICVsxdmiExPjCfRC4qRFBdVwv7Ax9hMnvMmEjP9RfxTEZ3qPZGmADDn2vAKSo9UcN1jKVYscg==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", + "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", "dev": true, "engines": { "node": ">= 6" @@ -4602,9 +4550,9 @@ } }, "node_modules/debug": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", - "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "dev": true, "dependencies": { "ms": "2.1.2" @@ -4627,7 +4575,7 @@ "node_modules/dedent": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", - "integrity": "sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw=", + "integrity": "sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==", "dev": true }, "node_modules/deep-eql": { @@ -4658,40 +4606,48 @@ } }, "node_modules/define-properties": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", - "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz", + "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==", "dev": true, "dependencies": { - "object-keys": "^1.0.12" + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" }, "engines": { "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", "dev": true, "engines": { "node": ">=0.4.0" } }, "node_modules/depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", "dev": true, "engines": { - "node": ">= 0.6" + "node": ">= 0.8" } }, "node_modules/destroy": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", - "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=", - "dev": true + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "dev": true, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } }, "node_modules/detect-newline": { "version": "3.1.0", @@ -4763,23 +4719,23 @@ } }, "node_modules/dom-serializer": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.3.2.tgz", - "integrity": "sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", + "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", "dev": true, "dependencies": { - "domelementtype": "^2.0.1", - "domhandler": "^4.2.0", - "entities": "^2.0.0" + "domelementtype": "^2.3.0", + "domhandler": "^5.0.2", + "entities": "^4.2.0" }, "funding": { "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" } }, "node_modules/domelementtype": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz", - "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", "dev": true, "funding": [ { @@ -4810,12 +4766,12 @@ } }, "node_modules/domhandler": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.2.0.tgz", - "integrity": "sha512-zk7sgt970kzPks2Bf+dwT/PLzghLnsivb9CcxkvR8Mzr66Olr0Ofd8neSbglHJHaHa2MadfoSdNlKYAaafmWfA==", + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", + "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", "dev": true, "dependencies": { - "domelementtype": "^2.2.0" + "domelementtype": "^2.3.0" }, "engines": { "node": ">= 4" @@ -4825,14 +4781,14 @@ } }, "node_modules/domutils": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.7.0.tgz", - "integrity": "sha512-8eaHa17IwJUPAiB+SoTYBo5mCdeMgdcAoXJ59m6DT1vw+5iLS3gNoqYaRowaBKtGVrOF1Jz4yDTgYKLK2kvfJg==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.0.1.tgz", + "integrity": "sha512-z08c1l761iKhDFtfXO04C7kTdPBLi41zwOZl00WS8b5eiaebNpY00HKbztwBq+e3vyqWNwWF3mP9YLUeqIrF+Q==", "dev": true, "dependencies": { - "dom-serializer": "^1.0.1", - "domelementtype": "^2.2.0", - "domhandler": "^4.2.0" + "dom-serializer": "^2.0.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.1" }, "funding": { "url": "https://github.com/fb55/domutils?sponsor=1" @@ -4851,9 +4807,9 @@ "dev": true }, "node_modules/electron-to-chromium": { - "version": "1.4.18", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.18.tgz", - "integrity": "sha512-i7nKjGGBE1+YUIbfLObA1EZPmN7J1ITEllbhusDk+KIk6V6gUxN9PFe36v+Sd+8Cg0k3cgUv9lQhQZalr8rggw==", + "version": "1.4.152", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.152.tgz", + "integrity": "sha512-jk4Ju5SGZAQQJ1iI4Rgru7dDlvkQPLpNPWH9gIZmwCD4YteA5Bbk1xPcPDUf5jUYs3e1e80RXdi8XgKQZaigeg==", "dev": true }, "node_modules/emittery": { @@ -4893,9 +4849,9 @@ } }, "node_modules/engine.io": { - "version": "6.1.3", - "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.1.3.tgz", - "integrity": "sha512-rqs60YwkvWTLLnfazqgZqLa/aKo+9cueVfEi/dZ8PyGyaf8TLOxj++4QMIgeG3Gn0AhrWiFXvghsoY9L9h25GA==", + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.2.0.tgz", + "integrity": "sha512-4KzwW3F3bk+KlzSOY57fj/Jx6LyRQ1nbcyIadehl+AnXjKT7gDO0ORdRi/84ixvMKTym6ZKuxvbzN62HDDU1Lg==", "dev": true, "dependencies": { "@types/cookie": "^0.4.1", @@ -4914,17 +4870,23 @@ } }, "node_modules/engine.io-parser": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.0.3.tgz", - "integrity": "sha512-BtQxwF27XUNnSafQLvDi0dQ8s3i6VgzSoQMJacpIcGNrlUdfHSKbgm3jmjCVvQluGzqwujQMPAoMai3oYSTurg==", + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.0.4.tgz", + "integrity": "sha512-+nVFp+5z1E3HcToEnO7ZIj3g+3k9389DvWtvJZz0T6/eOCPIyyxehFcedoYrZQrp0LgQbD9pPXhpMBKMd5QURg==", "dev": true, - "dependencies": { - "@socket.io/base64-arraybuffer": "~1.0.2" - }, "engines": { "node": ">=10.0.0" } }, + "node_modules/engine.io/node_modules/cookie": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", + "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, "node_modules/engine.io/node_modules/ws": { "version": "8.2.3", "resolved": "https://registry.npmjs.org/ws/-/ws-8.2.3.tgz", @@ -4947,9 +4909,9 @@ } }, "node_modules/enhanced-resolve": { - "version": "5.9.2", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.9.2.tgz", - "integrity": "sha512-GIm3fQfwLJ8YZx2smuHpBKkXC1yOk+OBEmKckVyL0i/ea8mqDEykK3ld5dgH1QYPNyT/lIllxV2LULnxCHaHkA==", + "version": "5.9.3", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.9.3.tgz", + "integrity": "sha512-Bq9VSor+kjvW3f9/MiiR4eE3XYgOl7/rS8lnSxbRbF3kS0B2r+Y9w5krBWxZgDxASVZbdYrn5wT4j/Wb0J9qow==", "dev": true, "dependencies": { "graceful-fs": "^4.2.4", @@ -4966,10 +4928,16 @@ "dev": true }, "node_modules/entities": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.1.0.tgz", - "integrity": "sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w==", - "dev": true + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.3.0.tgz", + "integrity": "sha512-/iP1rZrSEJ0DTlPiX+jbzlA3eVkY/e8L8SozroF395fIqE3TYF/Nz7YOMAawta+vLmyJ/hkGNNPcSbMADCCXbg==", + "dev": true, + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } }, "node_modules/envinfo": { "version": "7.8.1", @@ -4993,31 +4961,34 @@ } }, "node_modules/es-abstract": { - "version": "1.19.1", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.19.1.tgz", - "integrity": "sha512-2vJ6tjA/UfqLm2MPs7jxVybLoB8i1t1Jd9R3kISld20sIxPcTbLuggQOUxeWeAvIUkduv/CfMjuh4WmiXr2v9w==", + "version": "1.20.1", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.20.1.tgz", + "integrity": "sha512-WEm2oBhfoI2sImeM4OF2zE2V3BYdSF+KnSi9Sidz51fQHd7+JuF8Xgcj9/0o+OWeIeIS/MiuNnlruQrJf16GQA==", "dev": true, "dependencies": { "call-bind": "^1.0.2", "es-to-primitive": "^1.2.1", "function-bind": "^1.1.1", + "function.prototype.name": "^1.1.5", "get-intrinsic": "^1.1.1", "get-symbol-description": "^1.0.0", "has": "^1.0.3", - "has-symbols": "^1.0.2", + "has-property-descriptors": "^1.0.0", + "has-symbols": "^1.0.3", "internal-slot": "^1.0.3", "is-callable": "^1.2.4", - "is-negative-zero": "^2.0.1", + "is-negative-zero": "^2.0.2", "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.1", + "is-shared-array-buffer": "^1.0.2", "is-string": "^1.0.7", - "is-weakref": "^1.0.1", - "object-inspect": "^1.11.0", + "is-weakref": "^1.0.2", + "object-inspect": "^1.12.0", "object-keys": "^1.1.1", "object.assign": "^4.1.2", - "string.prototype.trimend": "^1.0.4", - "string.prototype.trimstart": "^1.0.4", - "unbox-primitive": "^1.0.1" + "regexp.prototype.flags": "^1.4.3", + "string.prototype.trimend": "^1.0.5", + "string.prototype.trimstart": "^1.0.5", + "unbox-primitive": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -5032,6 +5003,15 @@ "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==", "dev": true }, + "node_modules/es-shim-unscopables": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz", + "integrity": "sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==", + "dev": true, + "dependencies": { + "has": "^1.0.3" + } + }, "node_modules/es-to-primitive": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", @@ -5050,9 +5030,9 @@ } }, "node_modules/esbuild": { - "version": "0.14.27", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.27.tgz", - "integrity": "sha512-MZQt5SywZS3hA9fXnMhR22dv0oPGh6QtjJRIYbgL1AeqAoQZE+Qn5ppGYQAoHv/vq827flj4tIJ79Mrdiwk46Q==", + "version": "0.14.43", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.43.tgz", + "integrity": "sha512-Uf94+kQmy/5jsFwKWiQB4hfo/RkM9Dh7b79p8yqd1tshULdr25G2szLz631NoH3s2ujnKEKVD16RmOxvCNKRFA==", "dev": true, "hasInstallScript": true, "bin": { @@ -5062,32 +5042,32 @@ "node": ">=12" }, "optionalDependencies": { - "esbuild-android-64": "0.14.27", - "esbuild-android-arm64": "0.14.27", - "esbuild-darwin-64": "0.14.27", - "esbuild-darwin-arm64": "0.14.27", - "esbuild-freebsd-64": "0.14.27", - "esbuild-freebsd-arm64": "0.14.27", - "esbuild-linux-32": "0.14.27", - "esbuild-linux-64": "0.14.27", - "esbuild-linux-arm": "0.14.27", - "esbuild-linux-arm64": "0.14.27", - "esbuild-linux-mips64le": "0.14.27", - "esbuild-linux-ppc64le": "0.14.27", - "esbuild-linux-riscv64": "0.14.27", - "esbuild-linux-s390x": "0.14.27", - "esbuild-netbsd-64": "0.14.27", - "esbuild-openbsd-64": "0.14.27", - "esbuild-sunos-64": "0.14.27", - "esbuild-windows-32": "0.14.27", - "esbuild-windows-64": "0.14.27", - "esbuild-windows-arm64": "0.14.27" + "esbuild-android-64": "0.14.43", + "esbuild-android-arm64": "0.14.43", + "esbuild-darwin-64": "0.14.43", + "esbuild-darwin-arm64": "0.14.43", + "esbuild-freebsd-64": "0.14.43", + "esbuild-freebsd-arm64": "0.14.43", + "esbuild-linux-32": "0.14.43", + "esbuild-linux-64": "0.14.43", + "esbuild-linux-arm": "0.14.43", + "esbuild-linux-arm64": "0.14.43", + "esbuild-linux-mips64le": "0.14.43", + "esbuild-linux-ppc64le": "0.14.43", + "esbuild-linux-riscv64": "0.14.43", + "esbuild-linux-s390x": "0.14.43", + "esbuild-netbsd-64": "0.14.43", + "esbuild-openbsd-64": "0.14.43", + "esbuild-sunos-64": "0.14.43", + "esbuild-windows-32": "0.14.43", + "esbuild-windows-64": "0.14.43", + "esbuild-windows-arm64": "0.14.43" } }, "node_modules/esbuild-android-64": { - "version": "0.14.27", - "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.14.27.tgz", - "integrity": "sha512-LuEd4uPuj/16Y8j6kqy3Z2E9vNY9logfq8Tq+oTE2PZVuNs3M1kj5Qd4O95ee66yDGb3isaOCV7sOLDwtMfGaQ==", + "version": "0.14.43", + "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.14.43.tgz", + "integrity": "sha512-kqFXAS72K6cNrB6RiM7YJ5lNvmWRDSlpi7ZuRZ1hu1S3w0zlwcoCxWAyM23LQUyZSs1PbjHgdbbfYAN8IGh6xg==", "cpu": [ "x64" ], @@ -5101,9 +5081,9 @@ } }, "node_modules/esbuild-android-arm64": { - "version": "0.14.27", - "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.27.tgz", - "integrity": "sha512-E8Ktwwa6vX8q7QeJmg8yepBYXaee50OdQS3BFtEHKrzbV45H4foMOeEE7uqdjGQZFBap5VAqo7pvjlyA92wznQ==", + "version": "0.14.43", + "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.43.tgz", + "integrity": "sha512-bKS2BBFh+7XZY9rpjiHGRNA7LvWYbZWP87pLehggTG7tTaCDvj8qQGOU/OZSjCSKDYbgY7Q+oDw8RlYQ2Jt2BA==", "cpu": [ "arm64" ], @@ -5117,9 +5097,9 @@ } }, "node_modules/esbuild-darwin-64": { - "version": "0.14.27", - "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.27.tgz", - "integrity": "sha512-czw/kXl/1ZdenPWfw9jDc5iuIYxqUxgQ/Q+hRd4/3udyGGVI31r29LCViN2bAJgGvQkqyLGVcG03PJPEXQ5i2g==", + "version": "0.14.43", + "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.43.tgz", + "integrity": "sha512-/3PSilx011ttoieRGkSZ0XV8zjBf2C9enV4ScMMbCT4dpx0mFhMOpFnCHkOK0pWGB8LklykFyHrWk2z6DENVUg==", "cpu": [ "x64" ], @@ -5133,9 +5113,9 @@ } }, "node_modules/esbuild-darwin-arm64": { - "version": "0.14.27", - "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.27.tgz", - "integrity": "sha512-BEsv2U2U4o672oV8+xpXNxN9bgqRCtddQC6WBh4YhXKDcSZcdNh7+6nS+DM2vu7qWIWNA4JbRG24LUUYXysimQ==", + "version": "0.14.43", + "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.43.tgz", + "integrity": "sha512-1HyFUKs8DMCBOvw1Qxpr5Vv/ThNcVIFb5xgXWK3pyT40WPvgYIiRTwJCvNs4l8i5qWF8/CK5bQxJVDjQvtv0Yw==", "cpu": [ "arm64" ], @@ -5149,9 +5129,9 @@ } }, "node_modules/esbuild-freebsd-64": { - "version": "0.14.27", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.27.tgz", - "integrity": "sha512-7FeiFPGBo+ga+kOkDxtPmdPZdayrSzsV9pmfHxcyLKxu+3oTcajeZlOO1y9HW+t5aFZPiv7czOHM4KNd0tNwCA==", + "version": "0.14.43", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.43.tgz", + "integrity": "sha512-FNWc05TPHYgaXjbPZO5/rJKSBslfG6BeMSs8GhwnqAKP56eEhvmzwnIz1QcC9cRVyO+IKqWNfmHFkCa1WJTULA==", "cpu": [ "x64" ], @@ -5165,9 +5145,9 @@ } }, "node_modules/esbuild-freebsd-arm64": { - "version": "0.14.27", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.27.tgz", - "integrity": "sha512-8CK3++foRZJluOWXpllG5zwAVlxtv36NpHfsbWS7TYlD8S+QruXltKlXToc/5ZNzBK++l6rvRKELu/puCLc7jA==", + "version": "0.14.43", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.43.tgz", + "integrity": "sha512-amrYopclz3VohqisOPR6hA3GOWA3LZC1WDLnp21RhNmoERmJ/vLnOpnrG2P/Zao+/erKTCUqmrCIPVtj58DRoA==", "cpu": [ "arm64" ], @@ -5181,9 +5161,9 @@ } }, "node_modules/esbuild-linux-32": { - "version": "0.14.27", - "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.27.tgz", - "integrity": "sha512-qhNYIcT+EsYSBClZ5QhLzFzV5iVsP1YsITqblSaztr3+ZJUI+GoK8aXHyzKd7/CKKuK93cxEMJPpfi1dfsOfdw==", + "version": "0.14.43", + "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.43.tgz", + "integrity": "sha512-KoxoEra+9O3AKVvgDFvDkiuddCds6q71owSQEYwjtqRV7RwbPzKxJa6+uyzUulHcyGVq0g15K0oKG5CFBcvYDw==", "cpu": [ "ia32" ], @@ -5197,9 +5177,9 @@ } }, "node_modules/esbuild-linux-64": { - "version": "0.14.27", - "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.27.tgz", - "integrity": "sha512-ESjck9+EsHoTaKWlFKJpPZRN26uiav5gkI16RuI8WBxUdLrrAlYuYSndxxKgEn1csd968BX/8yQZATYf/9+/qg==", + "version": "0.14.43", + "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.43.tgz", + "integrity": "sha512-EwINwGMyiJMgBby5/SbMqKcUhS5AYAZ2CpEBzSowsJPNBJEdhkCTtEjk757TN/wxgbu3QklqDM6KghY660QCUw==", "cpu": [ "x64" ], @@ -5213,9 +5193,9 @@ } }, "node_modules/esbuild-linux-arm": { - "version": "0.14.27", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.27.tgz", - "integrity": "sha512-JnnmgUBdqLQO9hoNZQqNHFWlNpSX82vzB3rYuCJMhtkuaWQEmQz6Lec1UIxJdC38ifEghNTBsF9bbe8dFilnCw==", + "version": "0.14.43", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.43.tgz", + "integrity": "sha512-e6YzQUoDxxtyamuF12eVzzRC7bbEFSZohJ6igQB9tBqnNmIQY3fI6Cns3z2wxtbZ3f2o6idkD2fQnlvs2902Dg==", "cpu": [ "arm" ], @@ -5229,9 +5209,9 @@ } }, "node_modules/esbuild-linux-arm64": { - "version": "0.14.27", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.27.tgz", - "integrity": "sha512-no6Mi17eV2tHlJnqBHRLekpZ2/VYx+NfGxKcBE/2xOMYwctsanCaXxw4zapvNrGE9X38vefVXLz6YCF8b1EHiQ==", + "version": "0.14.43", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.43.tgz", + "integrity": "sha512-UlSpjMWllAc70zYbHxWuDS3FJytyuR/gHJYBr8BICcTNb/TSOYVBg6U7b3jZ3mILTrgzwJUHwhEwK18FZDouUQ==", "cpu": [ "arm64" ], @@ -5245,9 +5225,9 @@ } }, "node_modules/esbuild-linux-mips64le": { - "version": "0.14.27", - "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.27.tgz", - "integrity": "sha512-NolWP2uOvIJpbwpsDbwfeExZOY1bZNlWE/kVfkzLMsSgqeVcl5YMen/cedRe9mKnpfLli+i0uSp7N+fkKNU27A==", + "version": "0.14.43", + "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.43.tgz", + "integrity": "sha512-f+v8cInPEL1/SDP//CfSYzcDNgE4CY3xgDV81DWm3KAPWzhvxARrKxB1Pstf5mB56yAslJDxu7ryBUPX207EZA==", "cpu": [ "mips64el" ], @@ -5261,9 +5241,9 @@ } }, "node_modules/esbuild-linux-ppc64le": { - "version": "0.14.27", - "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.27.tgz", - "integrity": "sha512-/7dTjDvXMdRKmsSxKXeWyonuGgblnYDn0MI1xDC7J1VQXny8k1qgNp6VmrlsawwnsymSUUiThhkJsI+rx0taNA==", + "version": "0.14.43", + "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.43.tgz", + "integrity": "sha512-5wZYMDGAL/K2pqkdIsW+I4IR41kyfHr/QshJcNpUfK3RjB3VQcPWOaZmc+74rm4ZjVirYrtz+jWw0SgxtxRanA==", "cpu": [ "ppc64" ], @@ -5277,9 +5257,9 @@ } }, "node_modules/esbuild-linux-riscv64": { - "version": "0.14.27", - "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.27.tgz", - "integrity": "sha512-D+aFiUzOJG13RhrSmZgrcFaF4UUHpqj7XSKrIiCXIj1dkIkFqdrmqMSOtSs78dOtObWiOrFCDDzB24UyeEiNGg==", + "version": "0.14.43", + "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.43.tgz", + "integrity": "sha512-lYcAOUxp85hC7lSjycJUVSmj4/9oEfSyXjb/ua9bNl8afonaduuqtw7hvKMoKuYnVwOCDw4RSfKpcnIRDWq+Bw==", "cpu": [ "riscv64" ], @@ -5293,9 +5273,9 @@ } }, "node_modules/esbuild-linux-s390x": { - "version": "0.14.27", - "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.27.tgz", - "integrity": "sha512-CD/D4tj0U4UQjELkdNlZhQ8nDHU5rBn6NGp47Hiz0Y7/akAY5i0oGadhEIg0WCY/HYVXFb3CsSPPwaKcTOW3bg==", + "version": "0.14.43", + "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.43.tgz", + "integrity": "sha512-27e43ZhHvhFE4nM7HqtUbMRu37I/4eNSUbb8FGZWszV+uLzMIsHDwLoBiJmw7G9N+hrehNPeQ4F5Ujad0DrUKQ==", "cpu": [ "s390x" ], @@ -5309,9 +5289,9 @@ } }, "node_modules/esbuild-netbsd-64": { - "version": "0.14.27", - "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.27.tgz", - "integrity": "sha512-h3mAld69SrO1VoaMpYl3a5FNdGRE/Nqc+E8VtHOag4tyBwhCQXxtvDDOAKOUQexBGca0IuR6UayQ4ntSX5ij1Q==", + "version": "0.14.43", + "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.43.tgz", + "integrity": "sha512-2mH4QF6hHBn5zzAfxEI/2eBC0mspVsZ6UVo821LpAJKMvLJPBk3XJO5xwg7paDqSqpl7p6IRrAenW999AEfJhQ==", "cpu": [ "x64" ], @@ -5325,9 +5305,9 @@ } }, "node_modules/esbuild-openbsd-64": { - "version": "0.14.27", - "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.27.tgz", - "integrity": "sha512-xwSje6qIZaDHXWoPpIgvL+7fC6WeubHHv18tusLYMwL+Z6bEa4Pbfs5IWDtQdHkArtfxEkIZz77944z8MgDxGw==", + "version": "0.14.43", + "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.43.tgz", + "integrity": "sha512-ZhQpiZjvqCqO8jKdGp9+8k9E/EHSA+zIWOg+grwZasI9RoblqJ1QiZqqi7jfd6ZrrG1UFBNGe4m0NFxCFbMVbg==", "cpu": [ "x64" ], @@ -5341,9 +5321,9 @@ } }, "node_modules/esbuild-sunos-64": { - "version": "0.14.27", - "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.27.tgz", - "integrity": "sha512-/nBVpWIDjYiyMhuqIqbXXsxBc58cBVH9uztAOIfWShStxq9BNBik92oPQPJ57nzWXRNKQUEFWr4Q98utDWz7jg==", + "version": "0.14.43", + "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.43.tgz", + "integrity": "sha512-DgxSi9DaHReL9gYuul2rrQCAapgnCJkh3LSHPKsY26zytYppG0HgkgVF80zjIlvEsUbGBP/GHQzBtrezj/Zq1Q==", "cpu": [ "x64" ], @@ -5357,9 +5337,9 @@ } }, "node_modules/esbuild-windows-32": { - "version": "0.14.27", - "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.27.tgz", - "integrity": "sha512-Q9/zEjhZJ4trtWhFWIZvS/7RUzzi8rvkoaS9oiizkHTTKd8UxFwn/Mm2OywsAfYymgUYm8+y2b+BKTNEFxUekw==", + "version": "0.14.43", + "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.43.tgz", + "integrity": "sha512-Ih3+2O5oExiqm0mY6YYE5dR0o8+AspccQ3vIAtRodwFvhuyGLjb0Hbmzun/F3Lw19nuhPMu3sW2fqIJ5xBxByw==", "cpu": [ "ia32" ], @@ -5373,9 +5353,9 @@ } }, "node_modules/esbuild-windows-64": { - "version": "0.14.27", - "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.27.tgz", - "integrity": "sha512-b3y3vTSl5aEhWHK66ngtiS/c6byLf6y/ZBvODH1YkBM+MGtVL6jN38FdHUsZasCz9gFwYs/lJMVY9u7GL6wfYg==", + "version": "0.14.43", + "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.43.tgz", + "integrity": "sha512-8NsuNfI8xwFuJbrCuI+aBqNTYkrWErejFO5aYM+yHqyHuL8mmepLS9EPzAzk8rvfaJrhN0+RvKWAcymViHOKEw==", "cpu": [ "x64" ], @@ -5389,9 +5369,9 @@ } }, "node_modules/esbuild-windows-arm64": { - "version": "0.14.27", - "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.27.tgz", - "integrity": "sha512-I/reTxr6TFMcR5qbIkwRGvldMIaiBu2+MP0LlD7sOlNXrfqIl9uNjsuxFPGEG4IRomjfQ5q8WT+xlF/ySVkqKg==", + "version": "0.14.43", + "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.43.tgz", + "integrity": "sha512-7ZlD7bo++kVRblJEoG+cepljkfP8bfuTPz5fIXzptwnPaFwGS6ahvfoYzY7WCf5v/1nX2X02HDraVItTgbHnKw==", "cpu": [ "arm64" ], @@ -5462,7 +5442,7 @@ "node_modules/escodegen/node_modules/levn": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", "dev": true, "dependencies": { "prelude-ls": "~1.1.2", @@ -5492,26 +5472,16 @@ "node_modules/escodegen/node_modules/prelude-ls": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", + "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==", "dev": true, "engines": { "node": ">= 0.8.0" } }, - "node_modules/escodegen/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/escodegen/node_modules/type-check": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==", "dev": true, "dependencies": { "prelude-ls": "~1.1.2" @@ -5521,12 +5491,12 @@ } }, "node_modules/eslint": { - "version": "8.11.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.11.0.tgz", - "integrity": "sha512-/KRpd9mIRg2raGxHRGwW9ZywYNAClZrHjdueHcrVDuO3a6bj83eoTirCCk0M0yPwOjWYKHwRVRid+xK4F/GHgA==", + "version": "8.17.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.17.0.tgz", + "integrity": "sha512-gq0m0BTJfci60Fz4nczYxNAlED+sMcihltndR8t9t1evnU/azx53x3t2UHXC/uRjcbvRw/XctpaNygSTcQD+Iw==", "dev": true, "dependencies": { - "@eslint/eslintrc": "^1.2.1", + "@eslint/eslintrc": "^1.3.0", "@humanwhocodes/config-array": "^0.9.2", "ajv": "^6.10.0", "chalk": "^4.0.0", @@ -5537,14 +5507,14 @@ "eslint-scope": "^7.1.1", "eslint-utils": "^3.0.0", "eslint-visitor-keys": "^3.3.0", - "espree": "^9.3.1", + "espree": "^9.3.2", "esquery": "^1.4.0", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", "file-entry-cache": "^6.0.1", "functional-red-black-tree": "^1.0.1", "glob-parent": "^6.0.1", - "globals": "^13.6.0", + "globals": "^13.15.0", "ignore": "^5.2.0", "import-fresh": "^3.0.0", "imurmurhash": "^0.1.4", @@ -5553,7 +5523,7 @@ "json-stable-stringify-without-jsonify": "^1.0.1", "levn": "^0.4.1", "lodash.merge": "^4.6.2", - "minimatch": "^3.0.4", + "minimatch": "^3.1.2", "natural-compare": "^1.4.0", "optionator": "^0.9.1", "regexpp": "^3.2.0", @@ -5592,9 +5562,9 @@ } }, "node_modules/eslint-module-utils": { - "version": "2.7.2", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.7.2.tgz", - "integrity": "sha512-zquepFnWCY2ISMFwD/DqzaM++H+7PDzOpUvotJWm/y1BAFt5R4oeULgdrTejKqLkz7MA/tgstsUMNYc7wNdTrg==", + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.7.3.tgz", + "integrity": "sha512-088JEC7O3lDZM9xGe0RerkOMd0EjFl+Yvd1jPWIkMT5u3H9+HC34mWWPnqPrN13gieT9pBOO+Qt07Nb/6TresQ==", "dev": true, "dependencies": { "debug": "^3.2.7", @@ -5616,7 +5586,7 @@ "node_modules/eslint-module-utils/node_modules/find-up": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "integrity": "sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==", "dev": true, "dependencies": { "locate-path": "^2.0.0" @@ -5628,7 +5598,7 @@ "node_modules/eslint-module-utils/node_modules/locate-path": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "integrity": "sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==", "dev": true, "dependencies": { "p-locate": "^2.0.0", @@ -5653,7 +5623,7 @@ "node_modules/eslint-module-utils/node_modules/p-locate": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "integrity": "sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==", "dev": true, "dependencies": { "p-limit": "^1.1.0" @@ -5665,7 +5635,7 @@ "node_modules/eslint-module-utils/node_modules/p-try": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "integrity": "sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==", "dev": true, "engines": { "node": ">=4" @@ -5674,16 +5644,16 @@ "node_modules/eslint-module-utils/node_modules/path-exists": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", "dev": true, "engines": { "node": ">=4" } }, "node_modules/eslint-plugin-import": { - "version": "2.25.4", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.25.4.tgz", - "integrity": "sha512-/KJBASVFxpu0xg1kIBn9AUa8hQVnszpwgE7Ld0lKAlx7Ie87yzEzCgSkekt+le/YVhiaosO4Y14GDAOc41nfxA==", + "version": "2.26.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.26.0.tgz", + "integrity": "sha512-hYfi3FXaM8WPLf4S1cikh/r4IxnO6zrhZbEGz2b660EJRbuxgpDS5gkCuYgGWg2xxh2rBuIr4Pvhve/7c31koA==", "dev": true, "dependencies": { "array-includes": "^3.1.4", @@ -5691,14 +5661,14 @@ "debug": "^2.6.9", "doctrine": "^2.1.0", "eslint-import-resolver-node": "^0.3.6", - "eslint-module-utils": "^2.7.2", + "eslint-module-utils": "^2.7.3", "has": "^1.0.3", - "is-core-module": "^2.8.0", + "is-core-module": "^2.8.1", "is-glob": "^4.0.3", - "minimatch": "^3.0.4", + "minimatch": "^3.1.2", "object.values": "^1.1.5", - "resolve": "^1.20.0", - "tsconfig-paths": "^3.12.0" + "resolve": "^1.22.0", + "tsconfig-paths": "^3.14.1" }, "engines": { "node": ">=4" @@ -5728,6 +5698,18 @@ "node": ">=0.10.0" } }, + "node_modules/eslint-plugin-import/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, "node_modules/eslint-plugin-import/node_modules/ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", @@ -5735,22 +5717,21 @@ "dev": true }, "node_modules/eslint-plugin-jsdoc": { - "version": "38.0.4", - "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-38.0.4.tgz", - "integrity": "sha512-/McOYm7BEmiwNd5niCea2iHuFRtTrqeZN6IKJPJoC2PO8hfQn3FFRgYoGs17hoo6PaIWQLxo6hvCJsu+/KSRfg==", + "version": "39.3.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-39.3.2.tgz", + "integrity": "sha512-RSGN94RYzIJS/WfW3l6cXzRLfJWxvJgNQZ4w0WCaxJWDJMigtwTsILEAfKqmmPkT2rwMH/s3C7G5ChDE6cwPJg==", "dev": true, "dependencies": { - "@es-joy/jsdoccomment": "~0.21.2", - "comment-parser": "1.3.0", - "debug": "^4.3.3", + "@es-joy/jsdoccomment": "~0.31.0", + "comment-parser": "1.3.1", + "debug": "^4.3.4", "escape-string-regexp": "^4.0.0", "esquery": "^1.4.0", - "regextras": "^0.8.0", - "semver": "^7.3.5", + "semver": "^7.3.7", "spdx-expression-parse": "^3.0.1" }, "engines": { - "node": "^12 || ^14 || ^16 || ^17" + "node": "^14 || ^16 || ^17 || ^18" }, "peerDependencies": { "eslint": "^7.0.0 || ^8.0.0" @@ -5769,25 +5750,25 @@ } }, "node_modules/eslint-plugin-react": { - "version": "7.29.4", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.29.4.tgz", - "integrity": "sha512-CVCXajliVh509PcZYRFyu/BoUEz452+jtQJq2b3Bae4v3xBUWPLCmtmBM+ZinG4MzwmxJgJ2M5rMqhqLVn7MtQ==", + "version": "7.30.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.30.0.tgz", + "integrity": "sha512-RgwH7hjW48BleKsYyHK5vUAvxtE9SMPDKmcPRQgtRCYaZA0XQPt5FSkrU3nhz5ifzMZcA8opwmRJ2cmOO8tr5A==", "dev": true, "dependencies": { - "array-includes": "^3.1.4", - "array.prototype.flatmap": "^1.2.5", + "array-includes": "^3.1.5", + "array.prototype.flatmap": "^1.3.0", "doctrine": "^2.1.0", "estraverse": "^5.3.0", "jsx-ast-utils": "^2.4.1 || ^3.0.0", "minimatch": "^3.1.2", "object.entries": "^1.1.5", "object.fromentries": "^2.0.5", - "object.hasown": "^1.1.0", + "object.hasown": "^1.1.1", "object.values": "^1.1.5", "prop-types": "^15.8.1", "resolve": "^2.0.0-next.3", "semver": "^6.3.0", - "string.prototype.matchall": "^4.0.6" + "string.prototype.matchall": "^4.0.7" }, "engines": { "node": ">=4" @@ -5996,9 +5977,9 @@ } }, "node_modules/eslint/node_modules/globals": { - "version": "13.7.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.7.0.tgz", - "integrity": "sha512-Aipsz6ZKRxa/xQkZhNg0qIWXT6x6rD46f6x/PCnBomlttdIyAPak4YD9jTmKpZ72uROSMU87qJtcgpgHaVchiA==", + "version": "13.15.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.15.0.tgz", + "integrity": "sha512-bpzcOlgDhMG070Av0Vy5Owklpv1I6+j96GhUI7Rh7IzDCKLzboflLrrfqMu8NquDbiR4EOQk7XzJwqVJxicxog==", "dev": true, "dependencies": { "type-fest": "^0.20.2" @@ -6031,6 +6012,18 @@ "js-yaml": "bin/js-yaml.js" } }, + "node_modules/eslint/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, "node_modules/eslint/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -6065,13 +6058,13 @@ } }, "node_modules/espree": { - "version": "9.3.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.3.1.tgz", - "integrity": "sha512-bvdyLmJMfwkV3NCRl5ZhJf22zBFo1y8bYh3VYb+bfzqNB4Je68P2sSuXyuFquzWLebHpNd2/d5uv7yoP9ISnGQ==", + "version": "9.3.2", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.3.2.tgz", + "integrity": "sha512-D211tC7ZwouTIuY5x9XnS0E9sWNChB7IYKX/Xp5eQj3nFXhqmiUDB9q27y76oFl8jTg3pXcQx/bpxMfs3CIZbA==", "dev": true, "dependencies": { - "acorn": "^8.7.0", - "acorn-jsx": "^5.3.1", + "acorn": "^8.7.1", + "acorn-jsx": "^5.3.2", "eslint-visitor-keys": "^3.3.0" }, "engines": { @@ -6154,7 +6147,7 @@ "node_modules/etag": { "version": "1.8.1", "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", "dev": true, "engines": { "node": ">= 0.6" @@ -6176,9 +6169,9 @@ } }, "node_modules/execa": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.0.1.tgz", - "integrity": "sha512-4hFTjFbFzQa3aCLobpbPJR/U+VoL1wdV5ozOWjeet0AWDeYr9UFGM1eUFWHX+VtOWFq4p0xXUXfW1YxUaP4fpw==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", "dev": true, "dependencies": { "cross-spawn": "^7.0.3", @@ -6201,7 +6194,7 @@ "node_modules/exit": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", - "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=", + "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", "dev": true, "engines": { "node": ">= 0.8.0" @@ -6223,38 +6216,39 @@ } }, "node_modules/express": { - "version": "4.17.3", - "resolved": "https://registry.npmjs.org/express/-/express-4.17.3.tgz", - "integrity": "sha512-yuSQpz5I+Ch7gFrPCk4/c+dIBKlQUxtgwqzph132bsT6qhuzss6I8cLJQz7B3rFblzd6wtcI0ZbGltH/C4LjUg==", + "version": "4.18.1", + "resolved": "https://registry.npmjs.org/express/-/express-4.18.1.tgz", + "integrity": "sha512-zZBcOX9TfehHQhtupq57OF8lFZ3UZi08Y97dwFCkD8p9d/d2Y3M+ykKcwaMDEL+4qyUolgBDX6AblpR3fL212Q==", "dev": true, "dependencies": { "accepts": "~1.3.8", "array-flatten": "1.1.1", - "body-parser": "1.19.2", + "body-parser": "1.20.0", "content-disposition": "0.5.4", "content-type": "~1.0.4", - "cookie": "0.4.2", + "cookie": "0.5.0", "cookie-signature": "1.0.6", "debug": "2.6.9", - "depd": "~1.1.2", + "depd": "2.0.0", "encodeurl": "~1.0.2", "escape-html": "~1.0.3", "etag": "~1.8.1", - "finalhandler": "~1.1.2", + "finalhandler": "1.2.0", "fresh": "0.5.2", + "http-errors": "2.0.0", "merge-descriptors": "1.0.1", "methods": "~1.1.2", - "on-finished": "~2.3.0", + "on-finished": "2.4.1", "parseurl": "~1.3.3", "path-to-regexp": "0.1.7", "proxy-addr": "~2.0.7", - "qs": "6.9.7", + "qs": "6.10.3", "range-parser": "~1.2.1", "safe-buffer": "5.2.1", - "send": "0.17.2", - "serve-static": "1.14.2", + "send": "0.18.0", + "serve-static": "1.15.0", "setprototypeof": "1.2.0", - "statuses": "~1.5.0", + "statuses": "2.0.1", "type-is": "~1.6.18", "utils-merge": "1.0.1", "vary": "~1.1.2" @@ -6272,12 +6266,42 @@ "ms": "2.0.0" } }, + "node_modules/express/node_modules/finalhandler": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", + "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", + "dev": true, + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "statuses": "2.0.1", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, "node_modules/express/node_modules/ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", "dev": true }, + "node_modules/express/node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "dev": true, + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, "node_modules/express/node_modules/safe-buffer": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", @@ -6298,6 +6322,15 @@ } ] }, + "node_modules/express/node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, "node_modules/extend": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", @@ -6520,7 +6553,7 @@ "node_modules/fresh": { "version": "0.5.2", "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", "dev": true, "engines": { "node": ">= 0.6" @@ -6575,12 +6608,39 @@ "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", "dev": true }, + "node_modules/function.prototype.name": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz", + "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.0", + "functions-have-names": "^1.2.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/functional-red-black-tree": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", "dev": true }, + "node_modules/functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/gensync": { "version": "1.0.0-beta.2", "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", @@ -6732,15 +6792,6 @@ "integrity": "sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ==", "dev": true }, - "node_modules/growl": { - "version": "1.10.5", - "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz", - "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==", - "dev": true, - "engines": { - "node": ">=4.x" - } - }, "node_modules/gzip-size": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-6.0.0.tgz", @@ -6766,9 +6817,9 @@ } }, "node_modules/has-bigints": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.1.tgz", - "integrity": "sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", "dev": true, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -6783,10 +6834,22 @@ "node": ">=4" } }, + "node_modules/has-property-descriptors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", + "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.1.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/has-symbols": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", - "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", "dev": true, "engines": { "node": ">= 0.4" @@ -6820,9 +6883,9 @@ } }, "node_modules/highlight.js": { - "version": "11.5.0", - "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-11.5.0.tgz", - "integrity": "sha512-SM6WDj5/C+VfIY8pZ6yW6Xa0Fm1tniYVYWYW1Q/DcMnISZFrC3aQAZZZFAAZtybKNrGId3p/DNbFTtcTXXgYBw==", + "version": "11.5.1", + "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-11.5.1.tgz", + "integrity": "sha512-LKzHqnxr4CrD2YsNoIf/o5nJ09j4yi/GcH5BnYz9UnVpZdS4ucMgvP61TDty5xJcFGRjnH4DpujkS9bHT3hq0Q==", "dev": true, "engines": { "node": ">=12.0.0" @@ -6841,9 +6904,9 @@ } }, "node_modules/html-entities": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.3.2.tgz", - "integrity": "sha512-c3Ab/url5ksaT0WyleslpBEthOzWhrjQbg75y7XUsfSzi3Dgzt0l8w5e7DylRn15MTlMMD58dTfzddNS2kcAjQ==", + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.3.3.tgz", + "integrity": "sha512-DV5Ln36z34NNTDgnz0EWGBLZENelNAtkiFA4kyNOG2tDI6Mz1uSWiq1wAKdyjnJwyDiDO7Fa2SO1CTxPXL8VxA==", "dev": true }, "node_modules/html-escaper": { @@ -6853,9 +6916,9 @@ "dev": true }, "node_modules/htmlparser2": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz", - "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-8.0.1.tgz", + "integrity": "sha512-4lVbmc1diZC7GUJQtRQ5yBAeUCL1exyMwmForWkRLnwyzWBFxN633SALPMGYaWZvKe9j1pRZJpauvmxENSp/EA==", "dev": true, "funding": [ "https://github.com/fb55/htmlparser2?sponsor=1", @@ -6865,26 +6928,35 @@ } ], "dependencies": { - "domelementtype": "^2.0.1", - "domhandler": "^4.0.0", - "domutils": "^2.5.2", - "entities": "^2.0.0" + "domelementtype": "^2.3.0", + "domhandler": "^5.0.2", + "domutils": "^3.0.1", + "entities": "^4.3.0" } }, "node_modules/http-errors": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz", - "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", "dev": true, "dependencies": { - "depd": "~1.1.2", + "depd": "2.0.0", "inherits": "2.0.4", "setprototypeof": "1.2.0", - "statuses": ">= 1.5.0 < 2", + "statuses": "2.0.1", "toidentifier": "1.0.1" }, "engines": { - "node": ">= 0.6" + "node": ">= 0.8" + } + }, + "node_modules/http-errors/node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "dev": true, + "engines": { + "node": ">= 0.8" } }, "node_modules/http-proxy": { @@ -6916,9 +6988,9 @@ } }, "node_modules/https-proxy-agent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", - "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", "dev": true, "dependencies": { "agent-base": "6", @@ -7065,7 +7137,7 @@ "node_modules/is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", "dev": true }, "node_modules/is-bigint": { @@ -7121,9 +7193,9 @@ } }, "node_modules/is-core-module": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.0.tgz", - "integrity": "sha512-vd15qHsaqrRL7dtH6QNuy0ndJmRDrS9HAM1CAiSifNUFv4x1a0CCVsj18hJ1mShxIG6T2i1sO78MkP56r0nYRw==", + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.9.0.tgz", + "integrity": "sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==", "dev": true, "dependencies": { "has": "^1.0.3" @@ -7220,9 +7292,9 @@ } }, "node_modules/is-number-object": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.6.tgz", - "integrity": "sha512-bEVOqiRcvo3zO1+G2lVMy+gkkEm9Yh7cDMRusKKu5ZJKPUYSJwICTKZrNKHA2EbSP0Tu0+6B/emsYNHZyn6K8g==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", + "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", "dev": true, "dependencies": { "has-tostringtag": "^1.0.0" @@ -7278,21 +7350,27 @@ } }, "node_modules/is-shared-array-buffer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.1.tgz", - "integrity": "sha512-IU0NmyknYZN0rChcKhRO1X8LYz5Isj/Fsqh8NJOSf+N/hCOTwy29F32Ik7a+QszE63IdvmwdTPDd6cZ5pg4cwA==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", + "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", "dev": true, + "dependencies": { + "call-bind": "^1.0.2" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/is-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz", - "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", "dev": true, "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/is-string": { @@ -7328,7 +7406,7 @@ "node_modules/is-typedarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", "dev": true }, "node_modules/is-unicode-supported": { @@ -7400,6 +7478,40 @@ "node": ">=0.10.0" } }, + "node_modules/istanbul-lib-coverage": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", + "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-instrument": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.0.tgz", + "integrity": "sha512-6Lthe1hqXHBNsqvgDzGO6l03XNeu3CrG4RqQ1KM9+l5+jNGpEJfIELx1NS3SEHmJQA8np/u+E4EPRKRiu6m19A==", + "dev": true, + "dependencies": { + "@babel/core": "^7.12.3", + "@babel/parser": "^7.14.7", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-instrument/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, "node_modules/istanbul-lib-report": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", @@ -7423,15 +7535,6 @@ "node": ">=8" } }, - "node_modules/istanbul-lib-report/node_modules/istanbul-lib-coverage": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz", - "integrity": "sha512-UiUIqxMgRDET6eR+o5HbfRYP1l0hqkWOs7vNxC/mggutCMUIhWMm8gAHb8tHlyfD3/l6rlgNA5cKdDzEAf6hEg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/istanbul-lib-report/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -7449,31 +7552,13 @@ "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", "dev": true, - "dependencies": { - "debug": "^4.1.1", - "istanbul-lib-coverage": "^3.0.0", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/istanbul-lib-source-maps/node_modules/istanbul-lib-coverage": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", - "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/istanbul-lib-source-maps/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, + "dependencies": { + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0", + "source-map": "^0.6.1" + }, "engines": { - "node": ">=0.10.0" + "node": ">=10" } }, "node_modules/istanbul-reports": { @@ -7775,6 +7860,32 @@ } } }, + "node_modules/jest-config/node_modules/@jest/transform": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-27.5.1.tgz", + "integrity": "sha512-ipON6WtYgl/1329g5AIJVbUuEh0wZVbdpGwC99Jw4LwuoBNS95MVphU6zOeD9pDkon+LLbFL7lOQRapbB8SCHw==", + "dev": true, + "dependencies": { + "@babel/core": "^7.1.0", + "@jest/types": "^27.5.1", + "babel-plugin-istanbul": "^6.1.1", + "chalk": "^4.0.0", + "convert-source-map": "^1.4.0", + "fast-json-stable-stringify": "^2.0.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^27.5.1", + "jest-regex-util": "^27.5.1", + "jest-util": "^27.5.1", + "micromatch": "^4.0.4", + "pirates": "^4.0.4", + "slash": "^3.0.0", + "source-map": "^0.6.1", + "write-file-atomic": "^3.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, "node_modules/jest-config/node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", @@ -7790,6 +7901,59 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, + "node_modules/jest-config/node_modules/babel-jest": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-27.5.1.tgz", + "integrity": "sha512-cdQ5dXjGRd0IBRATiQ4mZGlGlRE8kJpjPOixdNRdT+m3UcNqmYWN6rK6nvtXYfY3D76cb8s/O1Ss8ea24PIwcg==", + "dev": true, + "dependencies": { + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/babel__core": "^7.1.14", + "babel-plugin-istanbul": "^6.1.1", + "babel-preset-jest": "^27.5.1", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "slash": "^3.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.8.0" + } + }, + "node_modules/jest-config/node_modules/babel-plugin-jest-hoist": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-27.5.1.tgz", + "integrity": "sha512-50wCwD5EMNW4aRpOwtqzyZHIewTYNxLA4nhB+09d8BIssfNfzBRhkBIHiaPv1Si226TQSvp8gxAJm2iY2qs2hQ==", + "dev": true, + "dependencies": { + "@babel/template": "^7.3.3", + "@babel/types": "^7.3.3", + "@types/babel__core": "^7.0.0", + "@types/babel__traverse": "^7.0.6" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-config/node_modules/babel-preset-jest": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-27.5.1.tgz", + "integrity": "sha512-Nptf2FzlPCWYuJg41HBqXVT8ym6bXOevuCTbhxlUpjwtysGaIWFvDEjp4y+G7fl13FgOdjs7P/DmErqH7da0Ag==", + "dev": true, + "dependencies": { + "babel-plugin-jest-hoist": "^27.5.1", + "babel-preset-current-node-syntax": "^1.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, "node_modules/jest-config/node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", @@ -7833,6 +7997,41 @@ "node": ">=8" } }, + "node_modules/jest-config/node_modules/jest-haste-map": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.5.1.tgz", + "integrity": "sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng==", + "dev": true, + "dependencies": { + "@jest/types": "^27.5.1", + "@types/graceful-fs": "^4.1.2", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "graceful-fs": "^4.2.9", + "jest-regex-util": "^27.5.1", + "jest-serializer": "^27.5.1", + "jest-util": "^27.5.1", + "jest-worker": "^27.5.1", + "micromatch": "^4.0.4", + "walker": "^1.0.7" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "optionalDependencies": { + "fsevents": "^2.3.2" + } + }, + "node_modules/jest-config/node_modules/jest-regex-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.5.1.tgz", + "integrity": "sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg==", + "dev": true, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, "node_modules/jest-config/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -7845,6 +8044,18 @@ "node": ">=8" } }, + "node_modules/jest-config/node_modules/write-file-atomic": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", + "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", + "dev": true, + "dependencies": { + "imurmurhash": "^0.1.4", + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" + } + }, "node_modules/jest-diff": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.5.1.tgz", @@ -8072,32 +8283,6 @@ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/jest-haste-map": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.5.1.tgz", - "integrity": "sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng==", - "dev": true, - "dependencies": { - "@jest/types": "^27.5.1", - "@types/graceful-fs": "^4.1.2", - "@types/node": "*", - "anymatch": "^3.0.3", - "fb-watchman": "^2.0.0", - "graceful-fs": "^4.2.9", - "jest-regex-util": "^27.5.1", - "jest-serializer": "^27.5.1", - "jest-util": "^27.5.1", - "jest-worker": "^27.5.1", - "micromatch": "^4.0.4", - "walker": "^1.0.7" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - }, - "optionalDependencies": { - "fsevents": "^2.3.2" - } - }, "node_modules/jest-jasmine2": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-27.5.1.tgz", @@ -8414,15 +8599,6 @@ } } }, - "node_modules/jest-regex-util": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.5.1.tgz", - "integrity": "sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg==", - "dev": true, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, "node_modules/jest-resolve": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-27.5.1.tgz", @@ -8458,6 +8634,15 @@ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, + "node_modules/jest-resolve-dependencies/node_modules/jest-regex-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.5.1.tgz", + "integrity": "sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg==", + "dev": true, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, "node_modules/jest-resolve/node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", @@ -8516,6 +8701,41 @@ "node": ">=8" } }, + "node_modules/jest-resolve/node_modules/jest-haste-map": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.5.1.tgz", + "integrity": "sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng==", + "dev": true, + "dependencies": { + "@jest/types": "^27.5.1", + "@types/graceful-fs": "^4.1.2", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "graceful-fs": "^4.2.9", + "jest-regex-util": "^27.5.1", + "jest-serializer": "^27.5.1", + "jest-util": "^27.5.1", + "jest-worker": "^27.5.1", + "micromatch": "^4.0.4", + "walker": "^1.0.7" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "optionalDependencies": { + "fsevents": "^2.3.2" + } + }, + "node_modules/jest-resolve/node_modules/jest-regex-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.5.1.tgz", + "integrity": "sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg==", + "dev": true, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, "node_modules/jest-resolve/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -8560,6 +8780,32 @@ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, + "node_modules/jest-runner/node_modules/@jest/transform": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-27.5.1.tgz", + "integrity": "sha512-ipON6WtYgl/1329g5AIJVbUuEh0wZVbdpGwC99Jw4LwuoBNS95MVphU6zOeD9pDkon+LLbFL7lOQRapbB8SCHw==", + "dev": true, + "dependencies": { + "@babel/core": "^7.1.0", + "@jest/types": "^27.5.1", + "babel-plugin-istanbul": "^6.1.1", + "chalk": "^4.0.0", + "convert-source-map": "^1.4.0", + "fast-json-stable-stringify": "^2.0.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^27.5.1", + "jest-regex-util": "^27.5.1", + "jest-util": "^27.5.1", + "micromatch": "^4.0.4", + "pirates": "^4.0.4", + "slash": "^3.0.0", + "source-map": "^0.6.1", + "write-file-atomic": "^3.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, "node_modules/jest-runner/node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", @@ -8600,22 +8846,57 @@ "color-name": "~1.1.4" }, "engines": { - "node": ">=7.0.0" + "node": ">=7.0.0" + } + }, + "node_modules/jest-runner/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-runner/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-runner/node_modules/jest-haste-map": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.5.1.tgz", + "integrity": "sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng==", + "dev": true, + "dependencies": { + "@jest/types": "^27.5.1", + "@types/graceful-fs": "^4.1.2", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "graceful-fs": "^4.2.9", + "jest-regex-util": "^27.5.1", + "jest-serializer": "^27.5.1", + "jest-util": "^27.5.1", + "jest-worker": "^27.5.1", + "micromatch": "^4.0.4", + "walker": "^1.0.7" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "optionalDependencies": { + "fsevents": "^2.3.2" } }, - "node_modules/jest-runner/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/jest-runner/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "node_modules/jest-runner/node_modules/jest-regex-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.5.1.tgz", + "integrity": "sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg==", "dev": true, "engines": { - "node": ">=8" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, "node_modules/jest-runner/node_modules/supports-color": { @@ -8630,6 +8911,18 @@ "node": ">=8" } }, + "node_modules/jest-runner/node_modules/write-file-atomic": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", + "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", + "dev": true, + "dependencies": { + "imurmurhash": "^0.1.4", + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" + } + }, "node_modules/jest-runtime": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-27.5.1.tgz", @@ -8663,6 +8956,32 @@ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, + "node_modules/jest-runtime/node_modules/@jest/transform": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-27.5.1.tgz", + "integrity": "sha512-ipON6WtYgl/1329g5AIJVbUuEh0wZVbdpGwC99Jw4LwuoBNS95MVphU6zOeD9pDkon+LLbFL7lOQRapbB8SCHw==", + "dev": true, + "dependencies": { + "@babel/core": "^7.1.0", + "@jest/types": "^27.5.1", + "babel-plugin-istanbul": "^6.1.1", + "chalk": "^4.0.0", + "convert-source-map": "^1.4.0", + "fast-json-stable-stringify": "^2.0.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^27.5.1", + "jest-regex-util": "^27.5.1", + "jest-util": "^27.5.1", + "micromatch": "^4.0.4", + "pirates": "^4.0.4", + "slash": "^3.0.0", + "source-map": "^0.6.1", + "write-file-atomic": "^3.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, "node_modules/jest-runtime/node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", @@ -8721,13 +9040,39 @@ "node": ">=8" } }, - "node_modules/jest-runtime/node_modules/strip-bom": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", - "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", + "node_modules/jest-runtime/node_modules/jest-haste-map": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.5.1.tgz", + "integrity": "sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng==", + "dev": true, + "dependencies": { + "@jest/types": "^27.5.1", + "@types/graceful-fs": "^4.1.2", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "graceful-fs": "^4.2.9", + "jest-regex-util": "^27.5.1", + "jest-serializer": "^27.5.1", + "jest-util": "^27.5.1", + "jest-worker": "^27.5.1", + "micromatch": "^4.0.4", + "walker": "^1.0.7" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "optionalDependencies": { + "fsevents": "^2.3.2" + } + }, + "node_modules/jest-runtime/node_modules/jest-regex-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.5.1.tgz", + "integrity": "sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg==", "dev": true, "engines": { - "node": ">=8" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, "node_modules/jest-runtime/node_modules/supports-color": { @@ -8742,6 +9087,18 @@ "node": ">=8" } }, + "node_modules/jest-runtime/node_modules/write-file-atomic": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", + "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", + "dev": true, + "dependencies": { + "imurmurhash": "^0.1.4", + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" + } + }, "node_modules/jest-serializer": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-27.5.1.tgz", @@ -8788,6 +9145,32 @@ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, + "node_modules/jest-snapshot/node_modules/@jest/transform": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-27.5.1.tgz", + "integrity": "sha512-ipON6WtYgl/1329g5AIJVbUuEh0wZVbdpGwC99Jw4LwuoBNS95MVphU6zOeD9pDkon+LLbFL7lOQRapbB8SCHw==", + "dev": true, + "dependencies": { + "@babel/core": "^7.1.0", + "@jest/types": "^27.5.1", + "babel-plugin-istanbul": "^6.1.1", + "chalk": "^4.0.0", + "convert-source-map": "^1.4.0", + "fast-json-stable-stringify": "^2.0.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^27.5.1", + "jest-regex-util": "^27.5.1", + "jest-util": "^27.5.1", + "micromatch": "^4.0.4", + "pirates": "^4.0.4", + "slash": "^3.0.0", + "source-map": "^0.6.1", + "write-file-atomic": "^3.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, "node_modules/jest-snapshot/node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", @@ -8846,6 +9229,41 @@ "node": ">=8" } }, + "node_modules/jest-snapshot/node_modules/jest-haste-map": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.5.1.tgz", + "integrity": "sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng==", + "dev": true, + "dependencies": { + "@jest/types": "^27.5.1", + "@types/graceful-fs": "^4.1.2", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "graceful-fs": "^4.2.9", + "jest-regex-util": "^27.5.1", + "jest-serializer": "^27.5.1", + "jest-util": "^27.5.1", + "jest-worker": "^27.5.1", + "micromatch": "^4.0.4", + "walker": "^1.0.7" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "optionalDependencies": { + "fsevents": "^2.3.2" + } + }, + "node_modules/jest-snapshot/node_modules/jest-regex-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.5.1.tgz", + "integrity": "sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg==", + "dev": true, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, "node_modules/jest-snapshot/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -8858,6 +9276,18 @@ "node": ">=8" } }, + "node_modules/jest-snapshot/node_modules/write-file-atomic": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", + "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", + "dev": true, + "dependencies": { + "imurmurhash": "^0.1.4", + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" + } + }, "node_modules/jest-util": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", @@ -8891,9 +9321,9 @@ } }, "node_modules/jest-util/node_modules/chalk": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", - "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "dependencies": { "ansi-styles": "^4.1.0", @@ -9178,9 +9608,9 @@ } }, "node_modules/jsdoc-type-pratt-parser": { - "version": "2.2.5", - "resolved": "https://registry.npmjs.org/jsdoc-type-pratt-parser/-/jsdoc-type-pratt-parser-2.2.5.tgz", - "integrity": "sha512-2a6eRxSxp1BW040hFvaJxhsCMI9lT8QB8t14t+NY5tC5rckIR0U9cr2tjOeaFirmEOy6MHvmJnY7zTBHq431Lw==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jsdoc-type-pratt-parser/-/jsdoc-type-pratt-parser-3.1.0.tgz", + "integrity": "sha512-MgtD0ZiCDk9B+eI73BextfRrVQl0oyzRG8B2BjORts6jbunj4ScKPcyXGTbB6eXL4y9TzxCm6hyeLq/2ASzNdw==", "dev": true, "engines": { "node": ">=12.0.0" @@ -9232,6 +9662,12 @@ } } }, + "node_modules/jsdom/node_modules/parse5": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", + "dev": true + }, "node_modules/jsesc": { "version": "2.5.2", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", @@ -9244,12 +9680,6 @@ "node": ">=4" } }, - "node_modules/json-parse-better-errors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", - "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", - "dev": true - }, "node_modules/json-parse-even-better-errors": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", @@ -9269,13 +9699,10 @@ "dev": true }, "node_modules/json5": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.3.tgz", - "integrity": "sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", + "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==", "dev": true, - "dependencies": { - "minimist": "^1.2.5" - }, "bin": { "json5": "lib/cli.js" }, @@ -9324,9 +9751,9 @@ "dev": true }, "node_modules/karma": { - "version": "6.3.17", - "resolved": "https://registry.npmjs.org/karma/-/karma-6.3.17.tgz", - "integrity": "sha512-2TfjHwrRExC8yHoWlPBULyaLwAFmXmxQrcuFImt/JsAsSZu1uOWTZ1ZsWjqQtWpHLiatJOHL5jFjXSJIgCd01g==", + "version": "6.3.20", + "resolved": "https://registry.npmjs.org/karma/-/karma-6.3.20.tgz", + "integrity": "sha512-HRNQhMuKOwKpjYlWiJP0DUrJOh+QjaI/DTaD8b9rEm4Il3tJ8MijutVZH4ts10LuUFst/CedwTS6vieCN8yTSw==", "dev": true, "dependencies": { "@colors/colors": "1.5.0", @@ -9348,7 +9775,7 @@ "qjobs": "^1.2.0", "range-parser": "^1.2.1", "rimraf": "^3.0.2", - "socket.io": "^4.2.0", + "socket.io": "^4.4.1", "source-map": "^0.6.1", "tmp": "^0.2.1", "ua-parser-js": "^0.7.30", @@ -9439,15 +9866,6 @@ "node": ">=4.0.0" } }, - "node_modules/karma/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/kind-of": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", @@ -9495,9 +9913,9 @@ "dev": true }, "node_modules/linkify-it": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-3.0.2.tgz", - "integrity": "sha512-gDBO4aHNZS6coiZCKVhSNh43F9ioIL4JwRjLZPkoLIY4yZFwg264Y5lu2x6rb1Js42Gh6Yqm2f6L2AJcnkzinQ==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-4.0.1.tgz", + "integrity": "sha512-C7bfi1UZmoj8+PQx22XyeXCuBlokoyWQL5pWSP+EI6nzRylyThouddufc2c1NDIcP9k5agmN9fLpA7VNJfIiqw==", "dev": true, "dependencies": { "uc.micro": "^1.0.1" @@ -9666,14 +10084,14 @@ } }, "node_modules/markdown-it": { - "version": "12.3.2", - "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-12.3.2.tgz", - "integrity": "sha512-TchMembfxfNVpHkbtriWltGWc+m3xszaRD0CZup7GFFhzIgQqxIfn3eGj1yZpfuflzPvfkt611B2Q/Bsk1YnGg==", + "version": "13.0.1", + "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-13.0.1.tgz", + "integrity": "sha512-lTlxriVoy2criHP0JKRhO2VDG9c2ypWCsT237eDiLqi09rmbKoUetyGHq2uOIRoRS//kfoJckS0eUzzkDR+k2Q==", "dev": true, "dependencies": { "argparse": "^2.0.1", - "entities": "~2.1.0", - "linkify-it": "^3.0.1", + "entities": "~3.0.1", + "linkify-it": "^4.0.1", "mdurl": "^1.0.1", "uc.micro": "^1.0.5" }, @@ -9687,6 +10105,18 @@ "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", "dev": true }, + "node_modules/markdown-it/node_modules/entities": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/entities/-/entities-3.0.1.tgz", + "integrity": "sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q==", + "dev": true, + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, "node_modules/mdurl": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz", @@ -9818,42 +10248,40 @@ } }, "node_modules/mocha": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-9.2.2.tgz", - "integrity": "sha512-L6XC3EdwT6YrIk0yXpavvLkn8h+EU+Y5UcCHKECyMbdUIxyMuZj4bX4U9e1nvnvUUvQVsV2VHQr5zLdcUkhW/g==", + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.0.0.tgz", + "integrity": "sha512-0Wl+elVUD43Y0BqPZBzZt8Tnkw9CMUdNYnUsTfOM1vuhJVZL+kiesFYsqwBkEEuEixaiPe5ZQdqDgX2jddhmoA==", "dev": true, "dependencies": { "@ungap/promise-all-settled": "1.1.2", "ansi-colors": "4.1.1", "browser-stdout": "1.3.1", "chokidar": "3.5.3", - "debug": "4.3.3", + "debug": "4.3.4", "diff": "5.0.0", "escape-string-regexp": "4.0.0", "find-up": "5.0.0", "glob": "7.2.0", - "growl": "1.10.5", "he": "1.2.0", "js-yaml": "4.1.0", "log-symbols": "4.1.0", - "minimatch": "4.2.1", + "minimatch": "5.0.1", "ms": "2.1.3", - "nanoid": "3.3.1", + "nanoid": "3.3.3", "serialize-javascript": "6.0.0", "strip-json-comments": "3.1.1", "supports-color": "8.1.1", - "which": "2.0.2", - "workerpool": "6.2.0", + "workerpool": "6.2.1", "yargs": "16.2.0", "yargs-parser": "20.2.4", "yargs-unparser": "2.0.0" }, "bin": { "_mocha": "bin/_mocha", - "mocha": "bin/mocha" + "mocha": "bin/mocha.js" }, "engines": { - "node": ">= 12.0.0" + "node": ">= 14.0.0" }, "funding": { "type": "opencollective", @@ -9972,6 +10400,15 @@ "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", "dev": true }, + "node_modules/mocha/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, "node_modules/mocha/node_modules/chalk": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", @@ -10099,12 +10536,12 @@ } }, "node_modules/mocha/node_modules/minimatch": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-4.2.1.tgz", - "integrity": "sha512-9Uq1ChtSZO+Mxa/CL1eGizn2vRn3MlLgzhT0Iz8zaY8NdvxvB0d5QdPFmCKf7JKA9Lerx5vRrnwO03jsSfGG9g==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz", + "integrity": "sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==", "dev": true, "dependencies": { - "brace-expansion": "^1.1.7" + "brace-expansion": "^2.0.1" }, "engines": { "node": ">=10" @@ -10171,9 +10608,9 @@ "dev": true }, "node_modules/nanoid": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.1.tgz", - "integrity": "sha512-n6Vs/3KGyxPQd6uO0eH4Bv0ojGSUvuLlIHtC3Y0kEO23YRge8H9x1GCzLn28YX0H66pMkxuaeESFq4tKISKwdw==", + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.3.tgz", + "integrity": "sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w==", "dev": true, "bin": { "nanoid": "bin/nanoid.cjs" @@ -10233,13 +10670,13 @@ "node_modules/node-int64": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", - "integrity": "sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs=", + "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", "dev": true }, "node_modules/node-releases": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.1.tgz", - "integrity": "sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA==", + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.5.tgz", + "integrity": "sha512-U9h1NLROZTq9uE1SNffn6WuPDg8icmi3ns4rEl/oTfIle4iLjTliCzgTsbaIFMq/Xn078/lfY/BL0GWZ+psK4Q==", "dev": true }, "node_modules/normalize-path": { @@ -10264,9 +10701,9 @@ } }, "node_modules/nth-check": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.0.1.tgz", - "integrity": "sha512-it1vE95zF6dTT9lBsYbxvqh0Soy4SPowchj0UBGj/V6cTPnXXtQOPUbhZ6CmGzAD/rW22LQK6E96pcdJXk4A4w==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", "dev": true, "dependencies": { "boolbase": "^1.0.0" @@ -10291,9 +10728,9 @@ } }, "node_modules/object-inspect": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.11.1.tgz", - "integrity": "sha512-If7BjFlpkzzBeV1cqgT3OSWT3azyoxDGajR+iGnFBfVV2EWyDyWaZZW2ERDjUaY2QM8i5jI3Sj7mhsM4DDAqWA==", + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz", + "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==", "dev": true, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -10355,13 +10792,13 @@ } }, "node_modules/object.hasown": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.0.tgz", - "integrity": "sha512-MhjYRfj3GBlhSkDHo6QmvgjRLXQ2zndabdf3nX0yTyZK9rPfxb6uRpAac8HXNLy1GpqWtZ81Qh4v3uOls2sRAg==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.1.tgz", + "integrity": "sha512-LYLe4tivNQzq4JdaWW6WO3HMZZJWzkkH8fnI6EebWl0VZth2wL2Lovm74ep2/gZzlaTdV62JZHEqHQ2yVn8Q/A==", "dev": true, "dependencies": { - "define-properties": "^1.1.3", - "es-abstract": "^1.19.1" + "define-properties": "^1.1.4", + "es-abstract": "^1.19.5" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -10415,6 +10852,9 @@ }, "engines": { "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/opener": { @@ -10507,18 +10947,28 @@ } }, "node_modules/parse5": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", - "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", - "dev": true + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.0.0.tgz", + "integrity": "sha512-y/t8IXSPWTuRZqXc0ajH/UwDj4mnqLEbSttNbThcFhGrZuOyoyvNBO85PBp2jQa55wY9d07PBNjsK8ZP3K5U6g==", + "dev": true, + "dependencies": { + "entities": "^4.3.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } }, "node_modules/parse5-htmlparser2-tree-adapter": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz", - "integrity": "sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.0.0.tgz", + "integrity": "sha512-B77tOZrqqfUfnVcOrUvfdLbz4pu4RopLD/4vmu3HUPswwTA8OH0EMW9BlWR2B0RCoiZRAHEUu7IxeP1Pd1UU+g==", "dev": true, "dependencies": { - "parse5": "^6.0.1" + "domhandler": "^5.0.2", + "parse5": "^7.0.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" } }, "node_modules/parseurl": { @@ -10815,10 +11265,13 @@ } }, "node_modules/qs": { - "version": "6.9.7", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.7.tgz", - "integrity": "sha512-IhMFgUmuNpyRfxA90umL7ByLlgRXu6tIfKPpF5TmcfRLlLCckfP/g3IQmju6jjpu+Hh8rA+2p6A27ZSPOOHdKw==", + "version": "6.10.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz", + "integrity": "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==", "dev": true, + "dependencies": { + "side-channel": "^1.0.4" + }, "engines": { "node": ">=0.6" }, @@ -10865,13 +11318,13 @@ } }, "node_modules/raw-body": { - "version": "2.4.3", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.3.tgz", - "integrity": "sha512-UlTNLIcu0uzb4D2f4WltY6cVjLi+/jEN4lgEUj3E04tpMDpUlkBo/eSn6zou9hum2VMNpCCUone0O0WeJim07g==", + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", + "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", "dev": true, "dependencies": { "bytes": "3.1.2", - "http-errors": "1.8.1", + "http-errors": "2.0.0", "iconv-lite": "0.4.24", "unpipe": "1.0.0" }, @@ -10921,30 +11374,28 @@ } }, "node_modules/react": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react/-/react-17.0.2.tgz", - "integrity": "sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==", + "version": "18.1.0", + "resolved": "https://registry.npmjs.org/react/-/react-18.1.0.tgz", + "integrity": "sha512-4oL8ivCz5ZEPyclFQXaNksK3adutVS8l2xzZU0cqEFrE9Sb7fC0EFK5uEk74wIreL1DERyjvsU915j1pcT2uEQ==", "dev": true, "dependencies": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1" + "loose-envify": "^1.1.0" }, "engines": { "node": ">=0.10.0" } }, "node_modules/react-dom": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-17.0.2.tgz", - "integrity": "sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA==", + "version": "18.1.0", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.1.0.tgz", + "integrity": "sha512-fU1Txz7Budmvamp7bshe4Zi32d0ll7ect+ccxNu9FlObT605GOEB8BfO4tmRJ39R5Zj831VCpvQ05QPBW5yb+w==", "dev": true, "dependencies": { "loose-envify": "^1.1.0", - "object-assign": "^4.1.1", - "scheduler": "^0.20.2" + "scheduler": "^0.22.0" }, "peerDependencies": { - "react": "17.0.2" + "react": "^18.1.0" } }, "node_modules/react-is": { @@ -10984,9 +11435,9 @@ "dev": true }, "node_modules/regenerate-unicode-properties": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-9.0.0.tgz", - "integrity": "sha512-3E12UeNSPfjrgwjkR81m5J7Aw/T55Tu7nUyZVQYCKEOs+2dkxEY+DpPtZzO4YruuiPb7NkYLVcyJC4+zCbk5pA==", + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.0.1.tgz", + "integrity": "sha512-vn5DU6yg6h8hP/2OkQo3K7uVILvY4iu0oI4t3HFa81UPkhGJwkRwM10JEc3upjdhHjs/k8GJY1sRBhk5sr69Bw==", "dev": true, "dependencies": { "regenerate": "^1.4.2" @@ -11002,22 +11453,23 @@ "dev": true }, "node_modules/regenerator-transform": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.5.tgz", - "integrity": "sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw==", + "version": "0.15.0", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.0.tgz", + "integrity": "sha512-LsrGtPmbYg19bcPHwdtmXwbW+TqNvtY4riE3P83foeHRroMbH6/2ddFBfab3t7kbzc7v7p4wbkIecHImqt0QNg==", "dev": true, "dependencies": { "@babel/runtime": "^7.8.4" } }, "node_modules/regexp.prototype.flags": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.3.1.tgz", - "integrity": "sha512-JiBdRBq91WlY7uRJ0ds7R+dU02i6LKi8r3BuQhNXn+kmeLN+EfHhfjqMRis1zJxnlu88hq/4dx0P2OP3APRTOA==", + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz", + "integrity": "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==", "dev": true, "dependencies": { "call-bind": "^1.0.2", - "define-properties": "^1.1.3" + "define-properties": "^1.1.3", + "functions-have-names": "^1.2.2" }, "engines": { "node": ">= 0.4" @@ -11039,15 +11491,15 @@ } }, "node_modules/regexpu-core": { - "version": "4.8.0", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.8.0.tgz", - "integrity": "sha512-1F6bYsoYiz6is+oz70NWur2Vlh9KWtswuRuzJOfeYUrfPX2o8n74AnUVaOGDbUqVGO9fNHu48/pjJO4sNVwsOg==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.0.1.tgz", + "integrity": "sha512-CriEZlrKK9VJw/xQGJpQM5rY88BtuL8DM+AEwvcThHilbxiTAy8vq4iJnd2tqq8wLmjbGZzP7ZcKFjbGkmEFrw==", "dev": true, "dependencies": { "regenerate": "^1.4.2", - "regenerate-unicode-properties": "^9.0.0", - "regjsgen": "^0.5.2", - "regjsparser": "^0.7.0", + "regenerate-unicode-properties": "^10.0.1", + "regjsgen": "^0.6.0", + "regjsparser": "^0.8.2", "unicode-match-property-ecmascript": "^2.0.0", "unicode-match-property-value-ecmascript": "^2.0.0" }, @@ -11055,25 +11507,16 @@ "node": ">=4" } }, - "node_modules/regextras": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/regextras/-/regextras-0.8.0.tgz", - "integrity": "sha512-k519uI04Z3SaY0fLX843MRXnDeG2+vHOFsyhiPZvNLe7r8rD2YNRjq4BQLZZ0oAr2NrtvZlICsXysGNFPGa3CQ==", - "dev": true, - "engines": { - "node": ">=0.1.14" - } - }, "node_modules/regjsgen": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.2.tgz", - "integrity": "sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A==", + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.6.0.tgz", + "integrity": "sha512-ozE883Uigtqj3bx7OhL1KNbCzGyW2NQZPl6Hs09WTvCuZD5sTI4JY58bkbQWa/Y9hxIsvJ3M8Nbf7j54IqeZbA==", "dev": true }, "node_modules/regjsparser": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.7.0.tgz", - "integrity": "sha512-A4pcaORqmNMDVwUjWoTzuhwMGpP+NykpfqAsEgI1FSH/EzC7lrN5TMd+kN8YCovX+jMpu8eaqXgXPCa0g8FQNQ==", + "version": "0.8.4", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.8.4.tgz", + "integrity": "sha512-J3LABycON/VNEu3abOviqGHuB/LOtOQj8SKmfP9anY5GfAVw/SPjwzSjxGjbZXIxbGfqTHtJw58C2Li/WkStmA==", "dev": true, "dependencies": { "jsesc": "~0.5.0" @@ -11085,7 +11528,7 @@ "node_modules/regjsparser/node_modules/jsesc": { "version": "0.5.0", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", - "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", + "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", "dev": true, "bin": { "jsesc": "bin/jsesc" @@ -11107,13 +11550,17 @@ "dev": true }, "node_modules/resolve": { - "version": "1.20.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", - "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", + "version": "1.22.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz", + "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==", "dev": true, "dependencies": { - "is-core-module": "^2.2.0", - "path-parse": "^1.0.6" + "is-core-module": "^2.8.1", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -11250,13 +11697,12 @@ } }, "node_modules/scheduler": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.20.2.tgz", - "integrity": "sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==", + "version": "0.22.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.22.0.tgz", + "integrity": "sha512-6QAm1BgQI88NPYymgGQLCZgvep4FyePDWFpXVK+zNSUgHwlqpJy8VEh8Et0KxTACS4VWwMousBElAZOH9nkkoQ==", "dev": true, "dependencies": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1" + "loose-envify": "^1.1.0" } }, "node_modules/schema-utils": { @@ -11274,9 +11720,9 @@ } }, "node_modules/semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", "dev": true, "dependencies": { "lru-cache": "^6.0.0" @@ -11289,24 +11735,24 @@ } }, "node_modules/send": { - "version": "0.17.2", - "resolved": "https://registry.npmjs.org/send/-/send-0.17.2.tgz", - "integrity": "sha512-UJYB6wFSJE3G00nEivR5rgWp8c2xXvJ3OPWPhmuteU0IKj8nKbG3DrjiOmLwpnHGYWAVwA69zmTm++YG0Hmwww==", + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", + "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", "dev": true, "dependencies": { "debug": "2.6.9", - "depd": "~1.1.2", - "destroy": "~1.0.4", + "depd": "2.0.0", + "destroy": "1.2.0", "encodeurl": "~1.0.2", "escape-html": "~1.0.3", "etag": "~1.8.1", "fresh": "0.5.2", - "http-errors": "1.8.1", + "http-errors": "2.0.0", "mime": "1.6.0", "ms": "2.1.3", - "on-finished": "~2.3.0", + "on-finished": "2.4.1", "range-parser": "~1.2.1", - "statuses": "~1.5.0" + "statuses": "2.0.1" }, "engines": { "node": ">= 0.8.0" @@ -11324,7 +11770,7 @@ "node_modules/send/node_modules/debug/node_modules/ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true }, "node_modules/send/node_modules/ms": { @@ -11333,6 +11779,27 @@ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "dev": true }, + "node_modules/send/node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "dev": true, + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/send/node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, "node_modules/serialize-javascript": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", @@ -11343,15 +11810,15 @@ } }, "node_modules/serve-static": { - "version": "1.14.2", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.2.tgz", - "integrity": "sha512-+TMNA9AFxUEGuC0z2mevogSnn9MXKb4fa7ngeRMJaaGv8vTwnIEkKi+QGvPt33HSnf8pRS+WGM0EbMtCJLKMBQ==", + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", + "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", "dev": true, "dependencies": { "encodeurl": "~1.0.2", "escape-html": "~1.0.3", "parseurl": "~1.3.3", - "send": "0.17.2" + "send": "0.18.0" }, "engines": { "node": ">= 0.8.0" @@ -11411,19 +11878,19 @@ } }, "node_modules/signal-exit": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", - "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==", + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", "dev": true }, "node_modules/sinon": { - "version": "13.0.1", - "resolved": "https://registry.npmjs.org/sinon/-/sinon-13.0.1.tgz", - "integrity": "sha512-8yx2wIvkBjIq/MGY1D9h1LMraYW+z1X0mb648KZnKSdvLasvDu7maa0dFaNYdTDczFgbjNw2tOmWdTk9saVfwQ==", + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/sinon/-/sinon-14.0.0.tgz", + "integrity": "sha512-ugA6BFmE+WrJdh0owRZHToLd32Uw3Lxq6E6LtNRU+xTVBefx632h03Q7apXWRsRdZAJ41LB8aUfn2+O4jsDNMw==", "dev": true, "dependencies": { "@sinonjs/commons": "^1.8.3", - "@sinonjs/fake-timers": "^9.0.0", + "@sinonjs/fake-timers": "^9.1.2", "@sinonjs/samsam": "^6.1.1", "diff": "^5.0.0", "nise": "^5.1.1", @@ -11434,15 +11901,6 @@ "url": "https://opencollective.com/sinon" } }, - "node_modules/sinon/node_modules/@sinonjs/fake-timers": { - "version": "9.1.1", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-9.1.1.tgz", - "integrity": "sha512-Wp5vwlZ0lOqpSYGKqr53INws9HLkt6JDc/pDZcPf7bchQnrXJMXPns8CXx0hFikMSGSWfvtvvpb2gtMVfkWagA==", - "dev": true, - "dependencies": { - "@sinonjs/commons": "^1.7.0" - } - }, "node_modules/sinon/node_modules/diff": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", @@ -11515,16 +11973,16 @@ } }, "node_modules/socket.io": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.4.0.tgz", - "integrity": "sha512-bnpJxswR9ov0Bw6ilhCvO38/1WPtE3eA2dtxi2Iq4/sFebiDJQzgKNYA7AuVVdGW09nrESXd90NbZqtDd9dzRQ==", + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.5.1.tgz", + "integrity": "sha512-0y9pnIso5a9i+lJmsCdtmTTgJFFSvNQKDnPQRz28mGNnxbmqYg2QPtJTLFxhymFZhAIn50eHAKzJeiNaKr+yUQ==", "dev": true, "dependencies": { "accepts": "~1.3.4", "base64id": "~2.0.0", "debug": "~4.3.2", - "engine.io": "~6.1.0", - "socket.io-adapter": "~2.3.3", + "engine.io": "~6.2.0", + "socket.io-adapter": "~2.4.0", "socket.io-parser": "~4.0.4" }, "engines": { @@ -11532,9 +11990,9 @@ } }, "node_modules/socket.io-adapter": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.3.3.tgz", - "integrity": "sha512-Qd/iwn3VskrpNO60BeRyCyr8ZWw9CPZyitW4AQwmRZ8zCiyDiL+znRnWX6tDHXnWn1sJrM1+b6Mn6wEDJJ4aYQ==", + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.4.0.tgz", + "integrity": "sha512-W4N+o69rkMEGVuk2D/cvca3uYsvGlMwsySWV447y99gUPghxq42BxqLNMndb+a1mm/5/7NeXVQS7RLa2XyXvYg==", "dev": true }, "node_modules/socket.io-parser": { @@ -11552,9 +12010,9 @@ } }, "node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true, "engines": { "node": ">=0.10.0" @@ -11579,15 +12037,6 @@ "source-map": "^0.6.0" } }, - "node_modules/source-map-support/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/spdx-exceptions": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", @@ -11674,32 +12123,32 @@ } }, "node_modules/string-width": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", - "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dev": true, "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.0" + "strip-ansi": "^6.0.1" }, "engines": { "node": ">=8" } }, "node_modules/string.prototype.matchall": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.6.tgz", - "integrity": "sha512-6WgDX8HmQqvEd7J+G6VtAahhsQIssiZ8zl7zKh1VDMFyL3hRTJP4FTNA3RbIp2TOQ9AYNDcc7e3fH0Qbup+DBg==", + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.7.tgz", + "integrity": "sha512-f48okCX7JiwVi1NXCVWcFnZgADDC/n2vePlQ/KUCNqCikLLilQvwjMO8+BHVKvgzH0JB0J9LEPgxOGT02RoETg==", "dev": true, "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.1.3", "es-abstract": "^1.19.1", "get-intrinsic": "^1.1.1", - "has-symbols": "^1.0.2", + "has-symbols": "^1.0.3", "internal-slot": "^1.0.3", - "regexp.prototype.flags": "^1.3.1", + "regexp.prototype.flags": "^1.4.1", "side-channel": "^1.0.4" }, "funding": { @@ -11707,26 +12156,28 @@ } }, "node_modules/string.prototype.trimend": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz", - "integrity": "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.5.tgz", + "integrity": "sha512-I7RGvmjV4pJ7O3kdf+LXFpVfdNOxtCW/2C8f6jNiW4+PQchwxkCDzlk1/7p+Wl4bqFIZeF47qAHXLuHHWKAxog==", "dev": true, "dependencies": { "call-bind": "^1.0.2", - "define-properties": "^1.1.3" + "define-properties": "^1.1.4", + "es-abstract": "^1.19.5" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/string.prototype.trimstart": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz", - "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.5.tgz", + "integrity": "sha512-THx16TJCGlsN0o6dl2o6ncWUsdgnLRSA23rRE5pyGBw/mLr3Ej/R2LaqCtgP8VNMGZsvMWnf9ooZPyY2bHvUFg==", "dev": true, "dependencies": { "call-bind": "^1.0.2", - "define-properties": "^1.1.3" + "define-properties": "^1.1.4", + "es-abstract": "^1.19.5" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -11745,12 +12196,12 @@ } }, "node_modules/strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", + "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", "dev": true, "engines": { - "node": ">=4" + "node": ">=8" } }, "node_modules/strip-final-newline": { @@ -11817,6 +12268,18 @@ "node": ">=8" } }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/symbol-tree": { "version": "3.2.4", "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", @@ -11866,15 +12329,15 @@ } }, "node_modules/terser-webpack-plugin": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.1.tgz", - "integrity": "sha512-GvlZdT6wPQKbDNW/GDQzZFg/j4vKU96yl2q6mcUkzKOgW4gwf1Z8cZToUCrz31XHlPWH8MVb1r2tFtdDtTGJ7g==", + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.3.tgz", + "integrity": "sha512-Fx60G5HNYknNTNQnzQ1VePRuu89ZVYWfjRAeT5rITuCY/1b08s49e5kSQwHDirKZWuoKOBRFS98EUUoZ9kLEwQ==", "dev": true, "dependencies": { + "@jridgewell/trace-mapping": "^0.3.7", "jest-worker": "^27.4.5", "schema-utils": "^3.1.1", "serialize-javascript": "^6.0.0", - "source-map": "^0.6.1", "terser": "^5.7.2" }, "engines": { @@ -11917,15 +12380,6 @@ "url": "https://opencollective.com/webpack" } }, - "node_modules/terser-webpack-plugin/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/terser/node_modules/source-map": { "version": "0.7.3", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", @@ -12045,9 +12499,9 @@ } }, "node_modules/ts-jest": { - "version": "27.1.3", - "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-27.1.3.tgz", - "integrity": "sha512-6Nlura7s6uM9BVUAoqLH7JHyMXjz8gluryjpPXxr3IxZdAXnU6FhjvVLHFtfd1vsE1p8zD1OJfskkc0jhTSnkA==", + "version": "27.1.5", + "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-27.1.5.tgz", + "integrity": "sha512-Xv6jBQPoBEvBq/5i2TeSG9tt/nqkbpcurrEG1b+2yfBrcJelOZF9Ml6dmyMh7bcW9JyFbRYpR5rxROSlBLTZHA==", "dev": true, "dependencies": { "bs-logger": "0.x", @@ -12069,7 +12523,6 @@ "@babel/core": ">=7.0.0-beta.0 <8", "@types/jest": "^27.0.0", "babel-jest": ">=27.0.0 <28", - "esbuild": "~0.14.0", "jest": "^27.0.0", "typescript": ">=3.8 <5.0" }, @@ -12089,9 +12542,9 @@ } }, "node_modules/ts-loader": { - "version": "9.2.8", - "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.2.8.tgz", - "integrity": "sha512-gxSak7IHUuRtwKf3FIPSW1VpZcqF9+MBrHOvBp9cjHh+525SjtCIJKVGjRKIAfxBwDGDGCFF00rTfzB1quxdSw==", + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.3.0.tgz", + "integrity": "sha512-2kLLAdAD+FCKijvGKi9sS0OzoqxLCF3CxHpok7rVgCZ5UldRzH0TkbwG9XECKjBzHsAewntC5oDaI/FwKzEUog==", "dev": true, "dependencies": { "chalk": "^4.1.0", @@ -12172,14 +12625,14 @@ } }, "node_modules/tsconfig-paths": { - "version": "3.12.0", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.12.0.tgz", - "integrity": "sha512-e5adrnOYT6zqVnWqZu7i/BQ3BnhzvGbjEjejFXO20lKIKpwTaupkCPgEfv4GZK1IBciJUEhYs3J3p75FdaTFVg==", + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz", + "integrity": "sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ==", "dev": true, "dependencies": { "@types/json5": "^0.0.29", "json5": "^1.0.1", - "minimist": "^1.2.0", + "minimist": "^1.2.6", "strip-bom": "^3.0.0" } }, @@ -12195,6 +12648,15 @@ "json5": "lib/cli.js" } }, + "node_modules/tsconfig-paths/node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, "node_modules/tslib": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", @@ -12317,9 +12779,9 @@ } }, "node_modules/typescript": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.6.2.tgz", - "integrity": "sha512-HM/hFigTBHZhLXshn9sN37H085+hQGeJHJ/X7LpBWLID/fbc2acUMfU+lGD98X81sKP+pFa9f0DZmCwB9GnbAg==", + "version": "4.7.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.7.3.tgz", + "integrity": "sha512-WOkT3XYvrpXx4vMMqlD+8R8R37fZkjyLGlxavMc4iB8lrl8L0DeTcHbYgw/v0N/z9wAFsgBhcsF0ruoySS22mA==", "dev": true, "bin": { "tsc": "bin/tsc", @@ -12355,14 +12817,14 @@ "dev": true }, "node_modules/unbox-primitive": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz", - "integrity": "sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", + "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", "dev": true, "dependencies": { - "function-bind": "^1.1.1", - "has-bigints": "^1.0.1", - "has-symbols": "^1.0.2", + "call-bind": "^1.0.2", + "has-bigints": "^1.0.2", + "has-symbols": "^1.0.3", "which-boxed-primitive": "^1.0.2" }, "funding": { @@ -12478,9 +12940,9 @@ } }, "node_modules/v8-to-istanbul/node_modules/source-map": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", - "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", + "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", "dev": true, "engines": { "node": ">= 8" @@ -12557,9 +13019,9 @@ } }, "node_modules/webpack": { - "version": "5.70.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.70.0.tgz", - "integrity": "sha512-ZMWWy8CeuTTjCxbeaQI21xSswseF2oNOwc70QSKNePvmxE7XW36i7vpBMYZFAUHPwQiEbNGCEYIOOlyRbdGmxw==", + "version": "5.73.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.73.0.tgz", + "integrity": "sha512-svjudQRPPa0YiOYa2lM/Gacw0r6PvxptHj4FuEKQ2kX05ZLkjbVc5MnPs6its5j7IZljnIqSVo/OsY2X0IpHGA==", "dev": true, "dependencies": { "@types/eslint-scope": "^3.7.3", @@ -12571,13 +13033,13 @@ "acorn-import-assertions": "^1.7.6", "browserslist": "^4.14.5", "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.9.2", + "enhanced-resolve": "^5.9.3", "es-module-lexer": "^0.9.0", "eslint-scope": "5.1.1", "events": "^3.2.0", "glob-to-regexp": "^0.4.1", "graceful-fs": "^4.2.9", - "json-parse-better-errors": "^1.0.2", + "json-parse-even-better-errors": "^2.3.1", "loader-runner": "^4.2.0", "mime-types": "^2.1.27", "neo-async": "^2.6.2", @@ -12709,18 +13171,18 @@ } }, "node_modules/webpack-cli": { - "version": "4.9.2", - "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.9.2.tgz", - "integrity": "sha512-m3/AACnBBzK/kMTcxWHcZFPrw/eQuY4Df1TxvIWfWM2x7mRqBQCqKEd96oCUa9jkapLBaFfRce33eGDb4Pr7YQ==", + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.10.0.tgz", + "integrity": "sha512-NLhDfH/h4O6UOy+0LSso42xvYypClINuMNBVVzX4vX98TmTaTUxwRbXdhucbFMd2qLaCTcLq/PdYrvi8onw90w==", "dev": true, "dependencies": { "@discoveryjs/json-ext": "^0.5.0", - "@webpack-cli/configtest": "^1.1.1", - "@webpack-cli/info": "^1.4.1", - "@webpack-cli/serve": "^1.6.1", + "@webpack-cli/configtest": "^1.2.0", + "@webpack-cli/info": "^1.5.0", + "@webpack-cli/serve": "^1.7.0", "colorette": "^2.0.14", "commander": "^7.0.0", - "execa": "^5.0.0", + "cross-spawn": "^7.0.3", "fastest-levenshtein": "^1.0.12", "import-local": "^3.0.2", "interpret": "^2.2.0", @@ -12733,6 +13195,10 @@ "engines": { "node": ">=10.13.0" }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, "peerDependencies": { "webpack": "4.x.x || 5.x.x" }, @@ -12885,9 +13351,9 @@ } }, "node_modules/workerpool": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.0.tgz", - "integrity": "sha512-Rsk5qQHJ9eowMH28Jwhe8HEbmdYDX4lwoMWshiCXugjtHqMD9ZbiqSDLxcsfdqsETPzVUtX5s1Z5kStiIM6l4A==", + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.1.tgz", + "integrity": "sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw==", "dev": true }, "node_modules/wrap-ansi": { @@ -12946,18 +13412,6 @@ "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", "dev": true }, - "node_modules/write-file-atomic": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", - "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", - "dev": true, - "dependencies": { - "imurmurhash": "^0.1.4", - "is-typedarray": "^1.0.0", - "signal-exit": "^3.0.2", - "typedarray-to-buffer": "^3.1.5" - } - }, "node_modules/ws": { "version": "7.4.6", "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz", @@ -13087,31 +13541,31 @@ } }, "@babel/compat-data": { - "version": "7.17.7", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.17.7.tgz", - "integrity": "sha512-p8pdE6j0a29TNGebNm7NzYZWB3xVZJBZ7XGs42uAKzQo8VQ3F0By/cQCtUEABwIqw5zo6WA4NbmxsfzADzMKnQ==", + "version": "7.18.5", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.18.5.tgz", + "integrity": "sha512-BxhE40PVCBxVEJsSBhB6UWyAuqJRxGsAw8BdHMJ3AKGydcwuWW4kOO3HmqBQAdcq/OP+/DlTVxLvsCzRTnZuGg==", "dev": true }, "@babel/core": { - "version": "7.17.7", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.17.7.tgz", - "integrity": "sha512-djHlEfFHnSnTAcPb7dATbiM5HxGOP98+3JLBZtjRb5I7RXrw7kFRoG2dXM8cm3H+o11A8IFH/uprmJpwFynRNQ==", + "version": "7.18.5", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.18.5.tgz", + "integrity": "sha512-MGY8vg3DxMnctw0LdvSEojOsumc70g0t18gNyUdAZqB1Rpd1Bqo/svHGvt+UJ6JcGX+DIekGFDxxIWofBxLCnQ==", "dev": true, "requires": { "@ampproject/remapping": "^2.1.0", "@babel/code-frame": "^7.16.7", - "@babel/generator": "^7.17.7", - "@babel/helper-compilation-targets": "^7.17.7", - "@babel/helper-module-transforms": "^7.17.7", - "@babel/helpers": "^7.17.7", - "@babel/parser": "^7.17.7", + "@babel/generator": "^7.18.2", + "@babel/helper-compilation-targets": "^7.18.2", + "@babel/helper-module-transforms": "^7.18.0", + "@babel/helpers": "^7.18.2", + "@babel/parser": "^7.18.5", "@babel/template": "^7.16.7", - "@babel/traverse": "^7.17.3", - "@babel/types": "^7.17.0", + "@babel/traverse": "^7.18.5", + "@babel/types": "^7.18.4", "convert-source-map": "^1.7.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", - "json5": "^2.1.2", + "json5": "^2.2.1", "semver": "^6.3.0" }, "dependencies": { @@ -13124,14 +13578,14 @@ } }, "@babel/generator": { - "version": "7.17.7", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.17.7.tgz", - "integrity": "sha512-oLcVCTeIFadUoArDTwpluncplrYBmTCCZZgXCbgNGvOBBiSDDK3eWO4b/+eOTli5tKv1lg+a5/NAXg+nTcei1w==", + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.18.2.tgz", + "integrity": "sha512-W1lG5vUwFvfMd8HVXqdfbuG7RuaSrTCCD8cl8fP8wOivdbtbIg2Db3IWUcgvfxKbbn6ZBGYRW/Zk1MIwK49mgw==", "dev": true, "requires": { - "@babel/types": "^7.17.0", - "jsesc": "^2.5.1", - "source-map": "^0.5.0" + "@babel/types": "^7.18.2", + "@jridgewell/gen-mapping": "^0.3.0", + "jsesc": "^2.5.1" } }, "@babel/helper-annotate-as-pure": { @@ -13154,14 +13608,14 @@ } }, "@babel/helper-compilation-targets": { - "version": "7.17.7", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.17.7.tgz", - "integrity": "sha512-UFzlz2jjd8kroj0hmCFV5zr+tQPi1dpC2cRsDV/3IEW8bJfCPrPpmcSN6ZS8RqIq4LXcmpipCQFPddyFA5Yc7w==", + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.18.2.tgz", + "integrity": "sha512-s1jnPotJS9uQnzFtiZVBUxe67CuBa679oWFHpxYYnTpRL/1ffhyX44R9uYiXoa/pLXcY9H2moJta0iaanlk/rQ==", "dev": true, "requires": { - "@babel/compat-data": "^7.17.7", + "@babel/compat-data": "^7.17.10", "@babel/helper-validator-option": "^7.16.7", - "browserslist": "^4.17.5", + "browserslist": "^4.20.2", "semver": "^6.3.0" }, "dependencies": { @@ -13174,28 +13628,28 @@ } }, "@babel/helper-create-class-features-plugin": { - "version": "7.17.6", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.17.6.tgz", - "integrity": "sha512-SogLLSxXm2OkBbSsHZMM4tUi8fUzjs63AT/d0YQIzr6GSd8Hxsbk2KYDX0k0DweAzGMj/YWeiCsorIdtdcW8Eg==", + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.18.0.tgz", + "integrity": "sha512-Kh8zTGR9de3J63e5nS0rQUdRs/kbtwoeQQ0sriS0lItjC96u8XXZN6lKpuyWd2coKSU13py/y+LTmThLuVX0Pg==", "dev": true, "requires": { "@babel/helper-annotate-as-pure": "^7.16.7", "@babel/helper-environment-visitor": "^7.16.7", - "@babel/helper-function-name": "^7.16.7", - "@babel/helper-member-expression-to-functions": "^7.16.7", + "@babel/helper-function-name": "^7.17.9", + "@babel/helper-member-expression-to-functions": "^7.17.7", "@babel/helper-optimise-call-expression": "^7.16.7", "@babel/helper-replace-supers": "^7.16.7", "@babel/helper-split-export-declaration": "^7.16.7" } }, "@babel/helper-create-regexp-features-plugin": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.16.7.tgz", - "integrity": "sha512-fk5A6ymfp+O5+p2yCkXAu5Kyj6v0xh0RBeNcAkYUMDvvAAoxvSKXn+Jb37t/yWFiQVDFK1ELpUTD8/aLhCPu+g==", + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.17.12.tgz", + "integrity": "sha512-b2aZrV4zvutr9AIa6/gA3wsZKRwTKYoDxYiFKcESS3Ug2GTXzwBEvMuuFLhCQpEnRXs1zng4ISAXSUxxKBIcxw==", "dev": true, "requires": { "@babel/helper-annotate-as-pure": "^7.16.7", - "regexpu-core": "^4.7.1" + "regexpu-core": "^5.0.1" } }, "@babel/helper-define-polyfill-provider": { @@ -13223,13 +13677,10 @@ } }, "@babel/helper-environment-visitor": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.16.7.tgz", - "integrity": "sha512-SLLb0AAn6PkUeAfKJCCOl9e1R53pQlGAfc4y4XuMRZfqeMYLE0dM1LMhqbGAlGQY0lfw5/ohoYWAe9V1yibRag==", - "dev": true, - "requires": { - "@babel/types": "^7.16.7" - } + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.2.tgz", + "integrity": "sha512-14GQKWkX9oJzPiQQ7/J36FTXcD4kSp8egKjO9nINlSKiHITRA9q/R74qu8S9xlc/b/yjsJItQUeeh3xnGN0voQ==", + "dev": true }, "@babel/helper-explode-assignable-expression": { "version": "7.16.7", @@ -13241,23 +13692,13 @@ } }, "@babel/helper-function-name": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.16.7.tgz", - "integrity": "sha512-QfDfEnIUyyBSR3HtrtGECuZ6DAyCkYFp7GHl75vFtTnn6pjKeK0T1DB5lLkFvBea8MdaiUABx3osbgLyInoejA==", + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.17.9.tgz", + "integrity": "sha512-7cRisGlVtiVqZ0MW0/yFB4atgpGLWEHUVYnb448hZK4x+vih0YO5UoS11XIYtZYqHd0dIPMdUSv8q5K4LdMnIg==", "dev": true, "requires": { - "@babel/helper-get-function-arity": "^7.16.7", "@babel/template": "^7.16.7", - "@babel/types": "^7.16.7" - } - }, - "@babel/helper-get-function-arity": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.7.tgz", - "integrity": "sha512-flc+RLSOBXzNzVhcLu6ujeHUrD6tANAOU5ojrRx/as+tbzf8+stUCj7+IfRRoAbEZqj/ahXEMsjhOhgeZsrnTw==", - "dev": true, - "requires": { - "@babel/types": "^7.16.7" + "@babel/types": "^7.17.0" } }, "@babel/helper-hoist-variables": { @@ -13270,12 +13711,12 @@ } }, "@babel/helper-member-expression-to-functions": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.16.7.tgz", - "integrity": "sha512-VtJ/65tYiU/6AbMTDwyoXGPKHgTsfRarivm+YbB5uAzKUyuPjgZSgAFeG87FCigc7KNHu2Pegh1XIT3lXjvz3Q==", + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.17.7.tgz", + "integrity": "sha512-thxXgnQ8qQ11W2wVUObIqDL4p148VMxkt5T/qpN5k2fboRyzFGFmKsTGViquyM5QHKUy48OZoca8kw4ajaDPyw==", "dev": true, "requires": { - "@babel/types": "^7.16.7" + "@babel/types": "^7.17.0" } }, "@babel/helper-module-imports": { @@ -13288,9 +13729,9 @@ } }, "@babel/helper-module-transforms": { - "version": "7.17.7", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.17.7.tgz", - "integrity": "sha512-VmZD99F3gNTYB7fJRDTi+u6l/zxY0BE6OIxPSU7a50s6ZUQkHwSDmV92FfM+oCG0pZRVojGYhkR8I0OGeCVREw==", + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.18.0.tgz", + "integrity": "sha512-kclUYSUBIjlvnzN2++K9f2qzYKFgjmnmjwL4zlmU5f8ZtzgWe8s0rUPSTGy2HmK4P8T52MQsS+HTQAgZd3dMEA==", "dev": true, "requires": { "@babel/helper-environment-visitor": "^7.16.7", @@ -13299,8 +13740,8 @@ "@babel/helper-split-export-declaration": "^7.16.7", "@babel/helper-validator-identifier": "^7.16.7", "@babel/template": "^7.16.7", - "@babel/traverse": "^7.17.3", - "@babel/types": "^7.17.0" + "@babel/traverse": "^7.18.0", + "@babel/types": "^7.18.0" } }, "@babel/helper-optimise-call-expression": { @@ -13313,9 +13754,9 @@ } }, "@babel/helper-plugin-utils": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", - "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==", + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.17.12.tgz", + "integrity": "sha512-JDkf04mqtN3y4iAbO1hv9U2ARpPyPL1zqyWs/2WG1pgSq9llHFjStX5jdxb84himgJm+8Ng+x0oiWF/nw/XQKA==", "dev": true }, "@babel/helper-remap-async-to-generator": { @@ -13330,25 +13771,25 @@ } }, "@babel/helper-replace-supers": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.16.7.tgz", - "integrity": "sha512-y9vsWilTNaVnVh6xiJfABzsNpgDPKev9HnAgz6Gb1p6UUwf9NepdlsV7VXGCftJM+jqD5f7JIEubcpLjZj5dBw==", + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.18.2.tgz", + "integrity": "sha512-XzAIyxx+vFnrOxiQrToSUOzUOn0e1J2Li40ntddek1Y69AXUTXoDJ40/D5RdjFu7s7qHiaeoTiempZcbuVXh2Q==", "dev": true, "requires": { - "@babel/helper-environment-visitor": "^7.16.7", - "@babel/helper-member-expression-to-functions": "^7.16.7", + "@babel/helper-environment-visitor": "^7.18.2", + "@babel/helper-member-expression-to-functions": "^7.17.7", "@babel/helper-optimise-call-expression": "^7.16.7", - "@babel/traverse": "^7.16.7", - "@babel/types": "^7.16.7" + "@babel/traverse": "^7.18.2", + "@babel/types": "^7.18.2" } }, "@babel/helper-simple-access": { - "version": "7.17.7", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.17.7.tgz", - "integrity": "sha512-txyMCGroZ96i+Pxr3Je3lzEJjqwaRC9buMUgtomcrLe5Nd0+fk1h0LLA+ixUF5OW7AhHuQ7Es1WcQJZmZsz2XA==", + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.18.2.tgz", + "integrity": "sha512-7LIrjYzndorDY88MycupkpQLKS1AFfsVRm2k/9PtKScSy5tZq0McZTj+DiMRynboZfIqOKvo03pmhTaUgiD6fQ==", "dev": true, "requires": { - "@babel/types": "^7.17.0" + "@babel/types": "^7.18.2" } }, "@babel/helper-skip-transparent-expression-wrappers": { @@ -13394,14 +13835,14 @@ } }, "@babel/helpers": { - "version": "7.17.7", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.17.7.tgz", - "integrity": "sha512-TKsj9NkjJfTBxM7Phfy7kv6yYc4ZcOo+AaWGqQOKTPDOmcGkIFb5xNA746eKisQkm4yavUYh4InYM9S+VnO01w==", + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.18.2.tgz", + "integrity": "sha512-j+d+u5xT5utcQSzrh9p+PaJX94h++KN+ng9b9WEJq7pkUPAd61FGqhjuUEdfknb3E/uDBb7ruwEeKkIxNJPIrg==", "dev": true, "requires": { "@babel/template": "^7.16.7", - "@babel/traverse": "^7.17.3", - "@babel/types": "^7.17.0" + "@babel/traverse": "^7.18.2", + "@babel/types": "^7.18.2" } }, "@babel/highlight": { @@ -13416,60 +13857,60 @@ } }, "@babel/parser": { - "version": "7.17.7", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.17.7.tgz", - "integrity": "sha512-bm3AQf45vR4gKggRfvJdYJ0gFLoCbsPxiFLSH6hTVYABptNHY6l9NrhnucVjQ/X+SPtLANT9lc0fFhikj+VBRA==", + "version": "7.18.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.18.5.tgz", + "integrity": "sha512-YZWVaglMiplo7v8f1oMQ5ZPQr0vn7HPeZXxXWsxXJRjGVrzUFn9OxFQl1sb5wzfootjA/yChhW84BV+383FSOw==", "dev": true }, "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.16.7.tgz", - "integrity": "sha512-anv/DObl7waiGEnC24O9zqL0pSuI9hljihqiDuFHC8d7/bjr/4RLGPWuc8rYOff/QPzbEPSkzG8wGG9aDuhHRg==", + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.17.12.tgz", + "integrity": "sha512-xCJQXl4EeQ3J9C4yOmpTrtVGmzpm2iSzyxbkZHw7UCnZBftHpF/hpII80uWVyVrc40ytIClHjgWGTG1g/yB+aw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-plugin-utils": "^7.17.12" } }, "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.16.7.tgz", - "integrity": "sha512-di8vUHRdf+4aJ7ltXhaDbPoszdkh59AQtJM5soLsuHpQJdFQZOA4uGj0V2u/CZ8bJ/u8ULDL5yq6FO/bCXnKHw==", + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.17.12.tgz", + "integrity": "sha512-/vt0hpIw0x4b6BLKUkwlvEoiGZYYLNZ96CzyHYPbtG2jZGz6LBe7/V+drYrc/d+ovrF9NBi0pmtvmNb/FsWtRQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-plugin-utils": "^7.17.12", "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", - "@babel/plugin-proposal-optional-chaining": "^7.16.7" + "@babel/plugin-proposal-optional-chaining": "^7.17.12" } }, "@babel/plugin-proposal-async-generator-functions": { - "version": "7.16.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.16.8.tgz", - "integrity": "sha512-71YHIvMuiuqWJQkebWJtdhQTfd4Q4mF76q2IX37uZPkG9+olBxsX+rH1vkhFto4UeJZ9dPY2s+mDvhDm1u2BGQ==", + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.17.12.tgz", + "integrity": "sha512-RWVvqD1ooLKP6IqWTA5GyFVX2isGEgC5iFxKzfYOIy/QEFdxYyCybBDtIGjipHpb9bDWHzcqGqFakf+mVmBTdQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-plugin-utils": "^7.17.12", "@babel/helper-remap-async-to-generator": "^7.16.8", "@babel/plugin-syntax-async-generators": "^7.8.4" } }, "@babel/plugin-proposal-class-properties": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.16.7.tgz", - "integrity": "sha512-IobU0Xme31ewjYOShSIqd/ZGM/r/cuOz2z0MDbNrhF5FW+ZVgi0f2lyeoj9KFPDOAqsYxmLWZte1WOwlvY9aww==", + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.17.12.tgz", + "integrity": "sha512-U0mI9q8pW5Q9EaTHFPwSVusPMV/DV9Mm8p7csqROFLtIE9rBF5piLqyrBGigftALrBcsBGu4m38JneAe7ZDLXw==", "dev": true, "requires": { - "@babel/helper-create-class-features-plugin": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-create-class-features-plugin": "^7.17.12", + "@babel/helper-plugin-utils": "^7.17.12" } }, "@babel/plugin-proposal-class-static-block": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.16.7.tgz", - "integrity": "sha512-dgqJJrcZoG/4CkMopzhPJjGxsIe9A8RlkQLnL/Vhhx8AA9ZuaRwGSlscSh42hazc7WSrya/IK7mTeoF0DP9tEw==", + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.18.0.tgz", + "integrity": "sha512-t+8LsRMMDE74c6sV7KShIw13sqbqd58tlqNrsWoWBTIMw7SVQ0cZ905wLNS/FBCy/3PyooRHLFFlfrUNyyz5lA==", "dev": true, "requires": { - "@babel/helper-create-class-features-plugin": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-create-class-features-plugin": "^7.18.0", + "@babel/helper-plugin-utils": "^7.17.12", "@babel/plugin-syntax-class-static-block": "^7.14.5" } }, @@ -13484,42 +13925,42 @@ } }, "@babel/plugin-proposal-export-namespace-from": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.16.7.tgz", - "integrity": "sha512-ZxdtqDXLRGBL64ocZcs7ovt71L3jhC1RGSyR996svrCi3PYqHNkb3SwPJCs8RIzD86s+WPpt2S73+EHCGO+NUA==", + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.17.12.tgz", + "integrity": "sha512-j7Ye5EWdwoXOpRmo5QmRyHPsDIe6+u70ZYZrd7uz+ebPYFKfRcLcNu3Ro0vOlJ5zuv8rU7xa+GttNiRzX56snQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-plugin-utils": "^7.17.12", "@babel/plugin-syntax-export-namespace-from": "^7.8.3" } }, "@babel/plugin-proposal-json-strings": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.16.7.tgz", - "integrity": "sha512-lNZ3EEggsGY78JavgbHsK9u5P3pQaW7k4axlgFLYkMd7UBsiNahCITShLjNQschPyjtO6dADrL24757IdhBrsQ==", + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.17.12.tgz", + "integrity": "sha512-rKJ+rKBoXwLnIn7n6o6fulViHMrOThz99ybH+hKHcOZbnN14VuMnH9fo2eHE69C8pO4uX1Q7t2HYYIDmv8VYkg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-plugin-utils": "^7.17.12", "@babel/plugin-syntax-json-strings": "^7.8.3" } }, "@babel/plugin-proposal-logical-assignment-operators": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.16.7.tgz", - "integrity": "sha512-K3XzyZJGQCr00+EtYtrDjmwX7o7PLK6U9bi1nCwkQioRFVUv6dJoxbQjtWVtP+bCPy82bONBKG8NPyQ4+i6yjg==", + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.17.12.tgz", + "integrity": "sha512-EqFo2s1Z5yy+JeJu7SFfbIUtToJTVlC61/C7WLKDntSw4Sz6JNAIfL7zQ74VvirxpjB5kz/kIx0gCcb+5OEo2Q==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-plugin-utils": "^7.17.12", "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" } }, "@babel/plugin-proposal-nullish-coalescing-operator": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.16.7.tgz", - "integrity": "sha512-aUOrYU3EVtjf62jQrCj63pYZ7k6vns2h/DQvHPWGmsJRYzWXZ6/AsfgpiRy6XiuIDADhJzP2Q9MwSMKauBQ+UQ==", + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.17.12.tgz", + "integrity": "sha512-ws/g3FSGVzv+VH86+QvgtuJL/kR67xaEIF2x0iPqdDfYW6ra6JF3lKVBkWynRLcNtIC1oCTfDRVxmm2mKzy+ag==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-plugin-utils": "^7.17.12", "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" } }, @@ -13534,16 +13975,16 @@ } }, "@babel/plugin-proposal-object-rest-spread": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.16.7.tgz", - "integrity": "sha512-3O0Y4+dw94HA86qSg9IHfyPktgR7q3gpNVAeiKQd+8jBKFaU5NQS1Yatgo4wY+UFNuLjvxcSmzcsHqrhgTyBUA==", + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.18.0.tgz", + "integrity": "sha512-nbTv371eTrFabDfHLElkn9oyf9VG+VKK6WMzhY2o4eHKaG19BToD9947zzGMO6I/Irstx9d8CwX6njPNIAR/yw==", "dev": true, "requires": { - "@babel/compat-data": "^7.16.4", - "@babel/helper-compilation-targets": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7", + "@babel/compat-data": "^7.17.10", + "@babel/helper-compilation-targets": "^7.17.10", + "@babel/helper-plugin-utils": "^7.17.12", "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.16.7" + "@babel/plugin-transform-parameters": "^7.17.12" } }, "@babel/plugin-proposal-optional-catch-binding": { @@ -13557,46 +13998,46 @@ } }, "@babel/plugin-proposal-optional-chaining": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.16.7.tgz", - "integrity": "sha512-eC3xy+ZrUcBtP7x+sq62Q/HYd674pPTb/77XZMb5wbDPGWIdUbSr4Agr052+zaUPSb+gGRnjxXfKFvx5iMJ+DA==", + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.17.12.tgz", + "integrity": "sha512-7wigcOs/Z4YWlK7xxjkvaIw84vGhDv/P1dFGQap0nHkc8gFKY/r+hXc8Qzf5k1gY7CvGIcHqAnOagVKJJ1wVOQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-plugin-utils": "^7.17.12", "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", "@babel/plugin-syntax-optional-chaining": "^7.8.3" } }, "@babel/plugin-proposal-private-methods": { - "version": "7.16.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.16.11.tgz", - "integrity": "sha512-F/2uAkPlXDr8+BHpZvo19w3hLFKge+k75XUprE6jaqKxjGkSYcK+4c+bup5PdW/7W/Rpjwql7FTVEDW+fRAQsw==", + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.17.12.tgz", + "integrity": "sha512-SllXoxo19HmxhDWm3luPz+cPhtoTSKLJE9PXshsfrOzBqs60QP0r8OaJItrPhAj0d7mZMnNF0Y1UUggCDgMz1A==", "dev": true, "requires": { - "@babel/helper-create-class-features-plugin": "^7.16.10", - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-create-class-features-plugin": "^7.17.12", + "@babel/helper-plugin-utils": "^7.17.12" } }, "@babel/plugin-proposal-private-property-in-object": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.16.7.tgz", - "integrity": "sha512-rMQkjcOFbm+ufe3bTZLyOfsOUOxyvLXZJCTARhJr+8UMSoZmqTe1K1BgkFcrW37rAchWg57yI69ORxiWvUINuQ==", + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.17.12.tgz", + "integrity": "sha512-/6BtVi57CJfrtDNKfK5b66ydK2J5pXUKBKSPD2G1whamMuEnZWgoOIfO8Vf9F/DoD4izBLD/Au4NMQfruzzykg==", "dev": true, "requires": { "@babel/helper-annotate-as-pure": "^7.16.7", - "@babel/helper-create-class-features-plugin": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-create-class-features-plugin": "^7.17.12", + "@babel/helper-plugin-utils": "^7.17.12", "@babel/plugin-syntax-private-property-in-object": "^7.14.5" } }, "@babel/plugin-proposal-unicode-property-regex": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.16.7.tgz", - "integrity": "sha512-QRK0YI/40VLhNVGIjRNAAQkEHws0cswSdFFjpFyt943YmJIU1da9uW63Iu6NFV6CxTZW5eTDCrwZUstBWgp/Rg==", + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.17.12.tgz", + "integrity": "sha512-Wb9qLjXf3ZazqXA7IvI7ozqRIXIGPtSo+L5coFmEkhTQK18ao4UDDD0zdTGAarmbLj2urpRwrc6893cu5Bfh0A==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-create-regexp-features-plugin": "^7.17.12", + "@babel/helper-plugin-utils": "^7.17.12" } }, "@babel/plugin-syntax-async-generators": { @@ -13653,6 +14094,15 @@ "@babel/helper-plugin-utils": "^7.8.3" } }, + "@babel/plugin-syntax-import-assertions": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.17.12.tgz", + "integrity": "sha512-n/loy2zkq9ZEM8tEOwON9wTQSTNDTDEz6NujPtJGLU7qObzT1N4c4YZZf8E6ATB2AjNQg/Ib2AIpO03EZaCehw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.17.12" + } + }, "@babel/plugin-syntax-import-meta": { "version": "7.10.4", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", @@ -13672,12 +14122,12 @@ } }, "@babel/plugin-syntax-jsx": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.16.7.tgz", - "integrity": "sha512-Esxmk7YjA8QysKeT3VhTXvF6y77f/a91SIs4pWb4H2eWGQkCKFgQaG6hdoEVZtGsrAcb2K5BW66XsOErD4WU3Q==", + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.17.12.tgz", + "integrity": "sha512-spyY3E3AURfxh/RHtjx5j6hs8am5NbUBGfcZ2vB3uShSpZdQyXSf5rR5Mk76vbtlAZOelyVQ71Fg0x9SG4fsog==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-plugin-utils": "^7.17.12" } }, "@babel/plugin-syntax-logical-assignment-operators": { @@ -13753,31 +14203,31 @@ } }, "@babel/plugin-syntax-typescript": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.16.7.tgz", - "integrity": "sha512-YhUIJHHGkqPgEcMYkPCKTyGUdoGKWtopIycQyjJH8OjvRgOYsXsaKehLVPScKJWAULPxMa4N1vCe6szREFlZ7A==", + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.17.12.tgz", + "integrity": "sha512-TYY0SXFiO31YXtNg3HtFwNJHjLsAyIIhAhNWkQ5whPPS7HWUFlg9z0Ta4qAQNjQbP1wsSt/oKkmZ/4/WWdMUpw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-plugin-utils": "^7.17.12" } }, "@babel/plugin-transform-arrow-functions": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.16.7.tgz", - "integrity": "sha512-9ffkFFMbvzTvv+7dTp/66xvZAWASuPD5Tl9LK3Z9vhOmANo6j94rik+5YMBt4CwHVMWLWpMsriIc2zsa3WW3xQ==", + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.17.12.tgz", + "integrity": "sha512-PHln3CNi/49V+mza4xMwrg+WGYevSF1oaiXaC2EQfdp4HWlSjRsrDXWJiQBKpP7749u6vQ9mcry2uuFOv5CXvA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-plugin-utils": "^7.17.12" } }, "@babel/plugin-transform-async-to-generator": { - "version": "7.16.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.16.8.tgz", - "integrity": "sha512-MtmUmTJQHCnyJVrScNzNlofQJ3dLFuobYn3mwOTKHnSCMtbNsqvF71GQmJfFjdrXSsAA7iysFmYWw4bXZ20hOg==", + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.17.12.tgz", + "integrity": "sha512-J8dbrWIOO3orDzir57NRsjg4uxucvhby0L/KZuGsWDj0g7twWK3g7JhJhOrXtuXiw8MeiSdJ3E0OW9H8LYEzLQ==", "dev": true, "requires": { "@babel/helper-module-imports": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-plugin-utils": "^7.17.12", "@babel/helper-remap-async-to-generator": "^7.16.8" } }, @@ -13791,46 +14241,46 @@ } }, "@babel/plugin-transform-block-scoping": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.16.7.tgz", - "integrity": "sha512-ObZev2nxVAYA4bhyusELdo9hb3H+A56bxH3FZMbEImZFiEDYVHXQSJ1hQKFlDnlt8G9bBrCZ5ZpURZUrV4G5qQ==", + "version": "7.18.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.18.4.tgz", + "integrity": "sha512-+Hq10ye+jlvLEogSOtq4mKvtk7qwcUQ1f0Mrueai866C82f844Yom2cttfJdMdqRLTxWpsbfbkIkOIfovyUQXw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-plugin-utils": "^7.17.12" } }, "@babel/plugin-transform-classes": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.16.7.tgz", - "integrity": "sha512-WY7og38SFAGYRe64BrjKf8OrE6ulEHtr5jEYaZMwox9KebgqPi67Zqz8K53EKk1fFEJgm96r32rkKZ3qA2nCWQ==", + "version": "7.18.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.18.4.tgz", + "integrity": "sha512-e42NSG2mlKWgxKUAD9EJJSkZxR67+wZqzNxLSpc51T8tRU5SLFHsPmgYR5yr7sdgX4u+iHA1C5VafJ6AyImV3A==", "dev": true, "requires": { "@babel/helper-annotate-as-pure": "^7.16.7", - "@babel/helper-environment-visitor": "^7.16.7", - "@babel/helper-function-name": "^7.16.7", + "@babel/helper-environment-visitor": "^7.18.2", + "@babel/helper-function-name": "^7.17.9", "@babel/helper-optimise-call-expression": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/helper-replace-supers": "^7.16.7", + "@babel/helper-plugin-utils": "^7.17.12", + "@babel/helper-replace-supers": "^7.18.2", "@babel/helper-split-export-declaration": "^7.16.7", "globals": "^11.1.0" } }, "@babel/plugin-transform-computed-properties": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.16.7.tgz", - "integrity": "sha512-gN72G9bcmenVILj//sv1zLNaPyYcOzUho2lIJBMh/iakJ9ygCo/hEF9cpGb61SCMEDxbbyBoVQxrt+bWKu5KGw==", + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.17.12.tgz", + "integrity": "sha512-a7XINeplB5cQUWMg1E/GI1tFz3LfK021IjV1rj1ypE+R7jHm+pIHmHl25VNkZxtx9uuYp7ThGk8fur1HHG7PgQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-plugin-utils": "^7.17.12" } }, "@babel/plugin-transform-destructuring": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.16.7.tgz", - "integrity": "sha512-VqAwhTHBnu5xBVDCvrvqJbtLUa++qZaWC0Fgr2mqokBlulZARGyIvZDoqbPlPaKImQ9dKAcCzbv+ul//uqu70A==", + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.18.0.tgz", + "integrity": "sha512-Mo69klS79z6KEfrLg/1WkmVnB8javh75HX4pi2btjvlIoasuxilEyjtsQW6XPrubNd7AQy0MMaNIaQE4e7+PQw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-plugin-utils": "^7.17.12" } }, "@babel/plugin-transform-dotall-regex": { @@ -13844,12 +14294,12 @@ } }, "@babel/plugin-transform-duplicate-keys": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.16.7.tgz", - "integrity": "sha512-03DvpbRfvWIXyK0/6QiR1KMTWeT6OcQ7tbhjrXyFS02kjuX/mu5Bvnh5SDSWHxyawit2g5aWhKwI86EE7GUnTw==", + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.17.12.tgz", + "integrity": "sha512-EA5eYFUG6xeerdabina/xIoB95jJ17mAkR8ivx6ZSu9frKShBjpOGZPn511MTDTkiCO+zXnzNczvUM69YSf3Zw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-plugin-utils": "^7.17.12" } }, "@babel/plugin-transform-exponentiation-operator": { @@ -13863,12 +14313,12 @@ } }, "@babel/plugin-transform-for-of": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.16.7.tgz", - "integrity": "sha512-/QZm9W92Ptpw7sjI9Nx1mbcsWz33+l8kuMIQnDwgQBG5s3fAfQvkRjQ7NqXhtNcKOnPkdICmUHyCaWW06HCsqg==", + "version": "7.18.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.18.1.tgz", + "integrity": "sha512-+TTB5XwvJ5hZbO8xvl2H4XaMDOAK57zF4miuC9qQJgysPNEAZZ9Z69rdF5LJkozGdZrjBIUAIyKUWRMmebI7vg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-plugin-utils": "^7.17.12" } }, "@babel/plugin-transform-function-name": { @@ -13883,12 +14333,12 @@ } }, "@babel/plugin-transform-literals": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.16.7.tgz", - "integrity": "sha512-6tH8RTpTWI0s2sV6uq3e/C9wPo4PTqqZps4uF0kzQ9/xPLFQtipynvmT1g/dOfEJ+0EQsHhkQ/zyRId8J2b8zQ==", + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.17.12.tgz", + "integrity": "sha512-8iRkvaTjJciWycPIZ9k9duu663FT7VrBdNqNgxnVXEFwOIp55JWcZd23VBRySYbnS3PwQ3rGiabJBBBGj5APmQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-plugin-utils": "^7.17.12" } }, "@babel/plugin-transform-member-expression-literals": { @@ -13901,67 +14351,68 @@ } }, "@babel/plugin-transform-modules-amd": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.16.7.tgz", - "integrity": "sha512-KaaEtgBL7FKYwjJ/teH63oAmE3lP34N3kshz8mm4VMAw7U3PxjVwwUmxEFksbgsNUaO3wId9R2AVQYSEGRa2+g==", + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.18.0.tgz", + "integrity": "sha512-h8FjOlYmdZwl7Xm2Ug4iX2j7Qy63NANI+NQVWQzv6r25fqgg7k2dZl03p95kvqNclglHs4FZ+isv4p1uXMA+QA==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-module-transforms": "^7.18.0", + "@babel/helper-plugin-utils": "^7.17.12", "babel-plugin-dynamic-import-node": "^2.3.3" } }, "@babel/plugin-transform-modules-commonjs": { - "version": "7.16.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.16.8.tgz", - "integrity": "sha512-oflKPvsLT2+uKQopesJt3ApiaIS2HW+hzHFcwRNtyDGieAeC/dIHZX8buJQ2J2X1rxGPy4eRcUijm3qcSPjYcA==", + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.18.2.tgz", + "integrity": "sha512-f5A865gFPAJAEE0K7F/+nm5CmAE3y8AWlMBG9unu5j9+tk50UQVK0QS8RNxSp7MJf0wh97uYyLWt3Zvu71zyOQ==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/helper-simple-access": "^7.16.7", + "@babel/helper-module-transforms": "^7.18.0", + "@babel/helper-plugin-utils": "^7.17.12", + "@babel/helper-simple-access": "^7.18.2", "babel-plugin-dynamic-import-node": "^2.3.3" } }, "@babel/plugin-transform-modules-systemjs": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.16.7.tgz", - "integrity": "sha512-DuK5E3k+QQmnOqBR9UkusByy5WZWGRxfzV529s9nPra1GE7olmxfqO2FHobEOYSPIjPBTr4p66YDcjQnt8cBmw==", + "version": "7.18.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.18.5.tgz", + "integrity": "sha512-SEewrhPpcqMF1V7DhnEbhVJLrC+nnYfe1E0piZMZXBpxi9WvZqWGwpsk7JYP7wPWeqaBh4gyKlBhHJu3uz5g4Q==", "dev": true, "requires": { "@babel/helper-hoist-variables": "^7.16.7", - "@babel/helper-module-transforms": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-module-transforms": "^7.18.0", + "@babel/helper-plugin-utils": "^7.17.12", "@babel/helper-validator-identifier": "^7.16.7", "babel-plugin-dynamic-import-node": "^2.3.3" } }, "@babel/plugin-transform-modules-umd": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.16.7.tgz", - "integrity": "sha512-EMh7uolsC8O4xhudF2F6wedbSHm1HHZ0C6aJ7K67zcDNidMzVcxWdGr+htW9n21klm+bOn+Rx4CBsAntZd3rEQ==", + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.18.0.tgz", + "integrity": "sha512-d/zZ8I3BWli1tmROLxXLc9A6YXvGK8egMxHp+E/rRwMh1Kip0AP77VwZae3snEJ33iiWwvNv2+UIIhfalqhzZA==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-module-transforms": "^7.18.0", + "@babel/helper-plugin-utils": "^7.17.12" } }, "@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.16.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.16.8.tgz", - "integrity": "sha512-j3Jw+n5PvpmhRR+mrgIh04puSANCk/T/UA3m3P1MjJkhlK906+ApHhDIqBQDdOgL/r1UYpz4GNclTXxyZrYGSw==", + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.17.12.tgz", + "integrity": "sha512-vWoWFM5CKaTeHrdUJ/3SIOTRV+MBVGybOC9mhJkaprGNt5demMymDW24yC74avb915/mIRe3TgNb/d8idvnCRA==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.16.7" + "@babel/helper-create-regexp-features-plugin": "^7.17.12", + "@babel/helper-plugin-utils": "^7.17.12" } }, "@babel/plugin-transform-new-target": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.16.7.tgz", - "integrity": "sha512-xiLDzWNMfKoGOpc6t3U+etCE2yRnn3SM09BXqWPIZOBpL2gvVrBWUKnsJx0K/ADi5F5YC5f8APFfWrz25TdlGg==", + "version": "7.18.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.18.5.tgz", + "integrity": "sha512-TuRL5uGW4KXU6OsRj+mLp9BM7pO8e7SGNTEokQRRxHFkXYMFiy2jlKSZPFtI/mKORDzciH+hneskcSOp0gU8hg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-plugin-utils": "^7.17.12" } }, "@babel/plugin-transform-object-super": { @@ -13975,12 +14426,12 @@ } }, "@babel/plugin-transform-parameters": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.16.7.tgz", - "integrity": "sha512-AT3MufQ7zZEhU2hwOA11axBnExW0Lszu4RL/tAlUJBuNoRak+wehQW8h6KcXOcgjY42fHtDxswuMhMjFEuv/aw==", + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.17.12.tgz", + "integrity": "sha512-6qW4rWo1cyCdq1FkYri7AHpauchbGLXpdwnYsfxFb+KtddHENfsY5JZb35xUwkK5opOLcJ3BNd2l7PhRYGlwIA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-plugin-utils": "^7.17.12" } }, "@babel/plugin-transform-property-literals": { @@ -14002,16 +14453,16 @@ } }, "@babel/plugin-transform-react-jsx": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.16.7.tgz", - "integrity": "sha512-8D16ye66fxiE8m890w0BpPpngG9o9OVBBy0gH2E+2AR7qMR2ZpTYJEqLxAsoroenMId0p/wMW+Blc0meDgu0Ag==", + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.17.12.tgz", + "integrity": "sha512-Lcaw8bxd1DKht3thfD4A12dqo1X16he1Lm8rIv8sTwjAYNInRS1qHa9aJoqvzpscItXvftKDCfaEQzwoVyXpEQ==", "dev": true, "requires": { "@babel/helper-annotate-as-pure": "^7.16.7", "@babel/helper-module-imports": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/plugin-syntax-jsx": "^7.16.7", - "@babel/types": "^7.16.7" + "@babel/helper-plugin-utils": "^7.17.12", + "@babel/plugin-syntax-jsx": "^7.17.12", + "@babel/types": "^7.17.12" } }, "@babel/plugin-transform-react-jsx-development": { @@ -14034,31 +14485,32 @@ } }, "@babel/plugin-transform-regenerator": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.16.7.tgz", - "integrity": "sha512-mF7jOgGYCkSJagJ6XCujSQg+6xC1M77/03K2oBmVJWoFGNUtnVJO4WHKJk3dnPC8HCcj4xBQP1Egm8DWh3Pb3Q==", + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.18.0.tgz", + "integrity": "sha512-C8YdRw9uzx25HSIzwA7EM7YP0FhCe5wNvJbZzjVNHHPGVcDJ3Aie+qGYYdS1oVQgn+B3eAIJbWFLrJ4Jipv7nw==", "dev": true, "requires": { - "regenerator-transform": "^0.14.2" + "@babel/helper-plugin-utils": "^7.17.12", + "regenerator-transform": "^0.15.0" } }, "@babel/plugin-transform-reserved-words": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.16.7.tgz", - "integrity": "sha512-KQzzDnZ9hWQBjwi5lpY5v9shmm6IVG0U9pB18zvMu2i4H90xpT4gmqwPYsn8rObiadYe2M0gmgsiOIF5A/2rtg==", + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.17.12.tgz", + "integrity": "sha512-1KYqwbJV3Co03NIi14uEHW8P50Md6KqFgt0FfpHdK6oyAHQVTosgPuPSiWud1HX0oYJ1hGRRlk0fP87jFpqXZA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-plugin-utils": "^7.17.12" } }, "@babel/plugin-transform-runtime": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.17.0.tgz", - "integrity": "sha512-fr7zPWnKXNc1xoHfrIU9mN/4XKX4VLZ45Q+oMhfsYIaHvg7mHgmhfOy/ckRWqDK7XF3QDigRpkh5DKq6+clE8A==", + "version": "7.18.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.18.5.tgz", + "integrity": "sha512-Q17hHxXr2fplrE+5BSC1j1Fo5cOA8YeP8XW3/1paI8MzF/faZGh0MaH1KC4jLAvqLPamQWHB5/B7KqSLY1kuHA==", "dev": true, "requires": { "@babel/helper-module-imports": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-plugin-utils": "^7.17.12", "babel-plugin-polyfill-corejs2": "^0.3.0", "babel-plugin-polyfill-corejs3": "^0.5.0", "babel-plugin-polyfill-regenerator": "^0.3.0", @@ -14083,12 +14535,12 @@ } }, "@babel/plugin-transform-spread": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.16.7.tgz", - "integrity": "sha512-+pjJpgAngb53L0iaA5gU/1MLXJIfXcYepLgXB3esVRf4fqmj8f2cxM3/FKaHsZms08hFQJkFccEWuIpm429TXg==", + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.17.12.tgz", + "integrity": "sha512-9pgmuQAtFi3lpNUstvG9nGfk9DkrdmWNp9KeKPFmuZCpEnxRzYlS8JgwPjYj+1AWDOSvoGN0H30p1cBOmT/Svg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-plugin-utils": "^7.17.12", "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0" } }, @@ -14102,21 +14554,21 @@ } }, "@babel/plugin-transform-template-literals": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.16.7.tgz", - "integrity": "sha512-VwbkDDUeenlIjmfNeDX/V0aWrQH2QiVyJtwymVQSzItFDTpxfyJh3EVaQiS0rIN/CqbLGr0VcGmuwyTdZtdIsA==", + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.2.tgz", + "integrity": "sha512-/cmuBVw9sZBGZVOMkpAEaVLwm4JmK2GZ1dFKOGGpMzEHWFmyZZ59lUU0PdRr8YNYeQdNzTDwuxP2X2gzydTc9g==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-plugin-utils": "^7.17.12" } }, "@babel/plugin-transform-typeof-symbol": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.16.7.tgz", - "integrity": "sha512-p2rOixCKRJzpg9JB4gjnG4gjWkWa89ZoYUnl9snJ1cWIcTH/hvxZqfO+WjG6T8DRBpctEol5jw1O5rA8gkCokQ==", + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.17.12.tgz", + "integrity": "sha512-Q8y+Jp7ZdtSPXCThB6zjQ74N3lj0f6TDh1Hnf5B+sYlzQ8i5Pjp8gW0My79iekSpT4WnI06blqP6DT0OmaXXmw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-plugin-utils": "^7.17.12" } }, "@babel/plugin-transform-unicode-escapes": { @@ -14139,37 +14591,38 @@ } }, "@babel/preset-env": { - "version": "7.16.11", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.16.11.tgz", - "integrity": "sha512-qcmWG8R7ZW6WBRPZK//y+E3Cli151B20W1Rv7ln27vuPaXU/8TKms6jFdiJtF7UDTxcrb7mZd88tAeK9LjdT8g==", + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.18.2.tgz", + "integrity": "sha512-PfpdxotV6afmXMU47S08F9ZKIm2bJIQ0YbAAtDfIENX7G1NUAXigLREh69CWDjtgUy7dYn7bsMzkgdtAlmS68Q==", "dev": true, "requires": { - "@babel/compat-data": "^7.16.8", - "@babel/helper-compilation-targets": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7", + "@babel/compat-data": "^7.17.10", + "@babel/helper-compilation-targets": "^7.18.2", + "@babel/helper-plugin-utils": "^7.17.12", "@babel/helper-validator-option": "^7.16.7", - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.16.7", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.16.7", - "@babel/plugin-proposal-async-generator-functions": "^7.16.8", - "@babel/plugin-proposal-class-properties": "^7.16.7", - "@babel/plugin-proposal-class-static-block": "^7.16.7", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.17.12", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.17.12", + "@babel/plugin-proposal-async-generator-functions": "^7.17.12", + "@babel/plugin-proposal-class-properties": "^7.17.12", + "@babel/plugin-proposal-class-static-block": "^7.18.0", "@babel/plugin-proposal-dynamic-import": "^7.16.7", - "@babel/plugin-proposal-export-namespace-from": "^7.16.7", - "@babel/plugin-proposal-json-strings": "^7.16.7", - "@babel/plugin-proposal-logical-assignment-operators": "^7.16.7", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.16.7", + "@babel/plugin-proposal-export-namespace-from": "^7.17.12", + "@babel/plugin-proposal-json-strings": "^7.17.12", + "@babel/plugin-proposal-logical-assignment-operators": "^7.17.12", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.17.12", "@babel/plugin-proposal-numeric-separator": "^7.16.7", - "@babel/plugin-proposal-object-rest-spread": "^7.16.7", + "@babel/plugin-proposal-object-rest-spread": "^7.18.0", "@babel/plugin-proposal-optional-catch-binding": "^7.16.7", - "@babel/plugin-proposal-optional-chaining": "^7.16.7", - "@babel/plugin-proposal-private-methods": "^7.16.11", - "@babel/plugin-proposal-private-property-in-object": "^7.16.7", - "@babel/plugin-proposal-unicode-property-regex": "^7.16.7", + "@babel/plugin-proposal-optional-chaining": "^7.17.12", + "@babel/plugin-proposal-private-methods": "^7.17.12", + "@babel/plugin-proposal-private-property-in-object": "^7.17.12", + "@babel/plugin-proposal-unicode-property-regex": "^7.17.12", "@babel/plugin-syntax-async-generators": "^7.8.4", "@babel/plugin-syntax-class-properties": "^7.12.13", "@babel/plugin-syntax-class-static-block": "^7.14.5", "@babel/plugin-syntax-dynamic-import": "^7.8.3", "@babel/plugin-syntax-export-namespace-from": "^7.8.3", + "@babel/plugin-syntax-import-assertions": "^7.17.12", "@babel/plugin-syntax-json-strings": "^7.8.3", "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", @@ -14179,44 +14632,44 @@ "@babel/plugin-syntax-optional-chaining": "^7.8.3", "@babel/plugin-syntax-private-property-in-object": "^7.14.5", "@babel/plugin-syntax-top-level-await": "^7.14.5", - "@babel/plugin-transform-arrow-functions": "^7.16.7", - "@babel/plugin-transform-async-to-generator": "^7.16.8", + "@babel/plugin-transform-arrow-functions": "^7.17.12", + "@babel/plugin-transform-async-to-generator": "^7.17.12", "@babel/plugin-transform-block-scoped-functions": "^7.16.7", - "@babel/plugin-transform-block-scoping": "^7.16.7", - "@babel/plugin-transform-classes": "^7.16.7", - "@babel/plugin-transform-computed-properties": "^7.16.7", - "@babel/plugin-transform-destructuring": "^7.16.7", + "@babel/plugin-transform-block-scoping": "^7.17.12", + "@babel/plugin-transform-classes": "^7.17.12", + "@babel/plugin-transform-computed-properties": "^7.17.12", + "@babel/plugin-transform-destructuring": "^7.18.0", "@babel/plugin-transform-dotall-regex": "^7.16.7", - "@babel/plugin-transform-duplicate-keys": "^7.16.7", + "@babel/plugin-transform-duplicate-keys": "^7.17.12", "@babel/plugin-transform-exponentiation-operator": "^7.16.7", - "@babel/plugin-transform-for-of": "^7.16.7", + "@babel/plugin-transform-for-of": "^7.18.1", "@babel/plugin-transform-function-name": "^7.16.7", - "@babel/plugin-transform-literals": "^7.16.7", + "@babel/plugin-transform-literals": "^7.17.12", "@babel/plugin-transform-member-expression-literals": "^7.16.7", - "@babel/plugin-transform-modules-amd": "^7.16.7", - "@babel/plugin-transform-modules-commonjs": "^7.16.8", - "@babel/plugin-transform-modules-systemjs": "^7.16.7", - "@babel/plugin-transform-modules-umd": "^7.16.7", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.16.8", - "@babel/plugin-transform-new-target": "^7.16.7", + "@babel/plugin-transform-modules-amd": "^7.18.0", + "@babel/plugin-transform-modules-commonjs": "^7.18.2", + "@babel/plugin-transform-modules-systemjs": "^7.18.0", + "@babel/plugin-transform-modules-umd": "^7.18.0", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.17.12", + "@babel/plugin-transform-new-target": "^7.17.12", "@babel/plugin-transform-object-super": "^7.16.7", - "@babel/plugin-transform-parameters": "^7.16.7", + "@babel/plugin-transform-parameters": "^7.17.12", "@babel/plugin-transform-property-literals": "^7.16.7", - "@babel/plugin-transform-regenerator": "^7.16.7", - "@babel/plugin-transform-reserved-words": "^7.16.7", + "@babel/plugin-transform-regenerator": "^7.18.0", + "@babel/plugin-transform-reserved-words": "^7.17.12", "@babel/plugin-transform-shorthand-properties": "^7.16.7", - "@babel/plugin-transform-spread": "^7.16.7", + "@babel/plugin-transform-spread": "^7.17.12", "@babel/plugin-transform-sticky-regex": "^7.16.7", - "@babel/plugin-transform-template-literals": "^7.16.7", - "@babel/plugin-transform-typeof-symbol": "^7.16.7", + "@babel/plugin-transform-template-literals": "^7.18.2", + "@babel/plugin-transform-typeof-symbol": "^7.17.12", "@babel/plugin-transform-unicode-escapes": "^7.16.7", "@babel/plugin-transform-unicode-regex": "^7.16.7", "@babel/preset-modules": "^0.1.5", - "@babel/types": "^7.16.8", + "@babel/types": "^7.18.2", "babel-plugin-polyfill-corejs2": "^0.3.0", "babel-plugin-polyfill-corejs3": "^0.5.0", "babel-plugin-polyfill-regenerator": "^0.3.0", - "core-js-compat": "^3.20.2", + "core-js-compat": "^3.22.1", "semver": "^6.3.0" }, "dependencies": { @@ -14242,23 +14695,23 @@ } }, "@babel/preset-react": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.16.7.tgz", - "integrity": "sha512-fWpyI8UM/HE6DfPBzD8LnhQ/OcH8AgTaqcqP2nGOXEUV+VKBR5JRN9hCk9ai+zQQ57vtm9oWeXguBCPNUjytgA==", + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.17.12.tgz", + "integrity": "sha512-h5U+rwreXtZaRBEQhW1hOJLMq8XNJBQ/9oymXiCXTuT/0uOwpbT0gUt+sXeOqoXBgNuUKI7TaObVwoEyWkpFgA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-plugin-utils": "^7.17.12", "@babel/helper-validator-option": "^7.16.7", "@babel/plugin-transform-react-display-name": "^7.16.7", - "@babel/plugin-transform-react-jsx": "^7.16.7", + "@babel/plugin-transform-react-jsx": "^7.17.12", "@babel/plugin-transform-react-jsx-development": "^7.16.7", "@babel/plugin-transform-react-pure-annotations": "^7.16.7" } }, "@babel/runtime": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.16.7.tgz", - "integrity": "sha512-9E9FJowqAsytyOY6LG+1KuueckRL+aQW+mKvXRXnuFGyRAyepJPmEo9vgMfXUA6O9u3IeEdv9MAkppFcaQwogQ==", + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.18.3.tgz", + "integrity": "sha512-38Y8f7YUhce/K7RMwTp7m0uCumpv9hZkitCbBClqQIow1qSbCvGkcegKOXpEWCQLfWmevgRiWokZ1GkpfhbZug==", "dev": true, "requires": { "regenerator-runtime": "^0.13.4" @@ -14276,27 +14729,27 @@ } }, "@babel/traverse": { - "version": "7.17.3", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.17.3.tgz", - "integrity": "sha512-5irClVky7TxRWIRtxlh2WPUUOLhcPN06AGgaQSB8AEwuyEBgJVuJ5imdHm5zxk8w0QS5T+tDfnDxAlhWjpb7cw==", + "version": "7.18.5", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.18.5.tgz", + "integrity": "sha512-aKXj1KT66sBj0vVzk6rEeAO6Z9aiiQ68wfDgge3nHhA/my6xMM/7HGQUNumKZaoa2qUPQ5whJG9aAifsxUKfLA==", "dev": true, "requires": { "@babel/code-frame": "^7.16.7", - "@babel/generator": "^7.17.3", - "@babel/helper-environment-visitor": "^7.16.7", - "@babel/helper-function-name": "^7.16.7", + "@babel/generator": "^7.18.2", + "@babel/helper-environment-visitor": "^7.18.2", + "@babel/helper-function-name": "^7.17.9", "@babel/helper-hoist-variables": "^7.16.7", "@babel/helper-split-export-declaration": "^7.16.7", - "@babel/parser": "^7.17.3", - "@babel/types": "^7.17.0", + "@babel/parser": "^7.18.5", + "@babel/types": "^7.18.4", "debug": "^4.1.0", "globals": "^11.1.0" } }, "@babel/types": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", - "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", + "version": "7.18.4", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.18.4.tgz", + "integrity": "sha512-ThN1mBcMq5pG/Vm2IcBmPPfyPXbd8S02rS+OBIDENdufvqC7Z/jHPCv9IcP01277aKtDI8g/2XysBN4hA8niiw==", "dev": true, "requires": { "@babel/helper-validator-identifier": "^7.16.7", @@ -14322,30 +14775,30 @@ "dev": true }, "@es-joy/jsdoccomment": { - "version": "0.21.2", - "resolved": "https://registry.npmjs.org/@es-joy/jsdoccomment/-/jsdoccomment-0.21.2.tgz", - "integrity": "sha512-k8NwNnnYgUR/hyC/JdAbKvaIzTgnT5XJeCeVFo5tpT/4Fu5WiXmhdi6M/c4diqXSDf3ZENyrCtgzCUhIbfT8Zg==", + "version": "0.31.0", + "resolved": "https://registry.npmjs.org/@es-joy/jsdoccomment/-/jsdoccomment-0.31.0.tgz", + "integrity": "sha512-tc1/iuQcnaiSIUVad72PBierDFpsxdUHtEF/OrfqvM1CBAsIoMP51j52jTMb3dXriwhieTo289InzZj72jL3EQ==", "dev": true, "requires": { - "comment-parser": "1.3.0", + "comment-parser": "1.3.1", "esquery": "^1.4.0", - "jsdoc-type-pratt-parser": "~2.2.4" + "jsdoc-type-pratt-parser": "~3.1.0" } }, "@eslint/eslintrc": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.2.1.tgz", - "integrity": "sha512-bxvbYnBPN1Gibwyp6NrpnFzA3YtRL3BBAyEAFVIpNTm2Rn4Vy87GA5M4aSn3InRrlsbX5N0GW7XIx+U4SAEKdQ==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.0.tgz", + "integrity": "sha512-UWW0TMTmk2d7hLcWD1/e2g5HDM/HQ3csaLSqXCfqwh4uNDuNqlaKWXmEsL4Cs41Z0KnILNvwbHAah3C2yt06kw==", "dev": true, "requires": { "ajv": "^6.12.4", "debug": "^4.3.2", - "espree": "^9.3.1", - "globals": "^13.9.0", + "espree": "^9.3.2", + "globals": "^13.15.0", "ignore": "^5.2.0", "import-fresh": "^3.2.1", "js-yaml": "^4.1.0", - "minimatch": "^3.0.4", + "minimatch": "^3.1.2", "strip-json-comments": "^3.1.1" }, "dependencies": { @@ -14356,9 +14809,9 @@ "dev": true }, "globals": { - "version": "13.12.1", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.12.1.tgz", - "integrity": "sha512-317dFlgY2pdJZ9rspXDks7073GpDmXdfbM3vYYp0HAMKGDh1FfWPleI2ljVNLQX5M5lXcAslTcPTrOrMEFOjyw==", + "version": "13.15.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.15.0.tgz", + "integrity": "sha512-bpzcOlgDhMG070Av0Vy5Owklpv1I6+j96GhUI7Rh7IzDCKLzboflLrrfqMu8NquDbiR4EOQk7XzJwqVJxicxog==", "dev": true, "requires": { "type-fest": "^0.20.2" @@ -14370,7 +14823,16 @@ "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "dev": true, "requires": { - "argparse": "^2.0.1" + "argparse": "^2.0.1" + } + }, + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" } }, "type-fest": { @@ -14532,6 +14994,29 @@ "strip-ansi": "^6.0.0" }, "dependencies": { + "@jest/transform": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-27.5.1.tgz", + "integrity": "sha512-ipON6WtYgl/1329g5AIJVbUuEh0wZVbdpGwC99Jw4LwuoBNS95MVphU6zOeD9pDkon+LLbFL7lOQRapbB8SCHw==", + "dev": true, + "requires": { + "@babel/core": "^7.1.0", + "@jest/types": "^27.5.1", + "babel-plugin-istanbul": "^6.1.1", + "chalk": "^4.0.0", + "convert-source-map": "^1.4.0", + "fast-json-stable-stringify": "^2.0.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^27.5.1", + "jest-regex-util": "^27.5.1", + "jest-util": "^27.5.1", + "micromatch": "^4.0.4", + "pirates": "^4.0.4", + "slash": "^3.0.0", + "source-map": "^0.6.1", + "write-file-atomic": "^3.0.0" + } + }, "ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", @@ -14572,6 +15057,33 @@ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, + "jest-haste-map": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.5.1.tgz", + "integrity": "sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng==", + "dev": true, + "requires": { + "@jest/types": "^27.5.1", + "@types/graceful-fs": "^4.1.2", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "fsevents": "^2.3.2", + "graceful-fs": "^4.2.9", + "jest-regex-util": "^27.5.1", + "jest-serializer": "^27.5.1", + "jest-util": "^27.5.1", + "jest-worker": "^27.5.1", + "micromatch": "^4.0.4", + "walker": "^1.0.7" + } + }, + "jest-regex-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.5.1.tgz", + "integrity": "sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg==", + "dev": true + }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -14580,6 +15092,18 @@ "requires": { "has-flag": "^4.0.0" } + }, + "write-file-atomic": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", + "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", + "dev": true, + "requires": { + "imurmurhash": "^0.1.4", + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" + } } } }, @@ -14607,6 +15131,17 @@ "jest-message-util": "^27.5.1", "jest-mock": "^27.5.1", "jest-util": "^27.5.1" + }, + "dependencies": { + "@sinonjs/fake-timers": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-8.1.0.tgz", + "integrity": "sha512-OAPJUAtgeINhh/TAlUID4QTs53Njm7xzddaVlEs/SXwgtiD1tW22zAB/W1wdqfrpmikgaWQ9Fw6Ws+hsiRm5Vg==", + "dev": true, + "requires": { + "@sinonjs/commons": "^1.7.0" + } + } } }, "@jest/globals": { @@ -14653,6 +15188,29 @@ "v8-to-istanbul": "^8.1.0" }, "dependencies": { + "@jest/transform": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-27.5.1.tgz", + "integrity": "sha512-ipON6WtYgl/1329g5AIJVbUuEh0wZVbdpGwC99Jw4LwuoBNS95MVphU6zOeD9pDkon+LLbFL7lOQRapbB8SCHw==", + "dev": true, + "requires": { + "@babel/core": "^7.1.0", + "@jest/types": "^27.5.1", + "babel-plugin-istanbul": "^6.1.1", + "chalk": "^4.0.0", + "convert-source-map": "^1.4.0", + "fast-json-stable-stringify": "^2.0.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^27.5.1", + "jest-regex-util": "^27.5.1", + "jest-util": "^27.5.1", + "micromatch": "^4.0.4", + "pirates": "^4.0.4", + "slash": "^3.0.0", + "source-map": "^0.6.1", + "write-file-atomic": "^3.0.0" + } + }, "ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", @@ -14693,35 +15251,31 @@ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, - "istanbul-lib-coverage": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", - "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", - "dev": true - }, - "istanbul-lib-instrument": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.1.0.tgz", - "integrity": "sha512-czwUz525rkOFDJxfKK6mYfIs9zBKILyrZQxjz3ABhjQXhbhFsSbo1HW/BFcsDnfJYJWA6thRR5/TUY2qs5W99Q==", + "jest-haste-map": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.5.1.tgz", + "integrity": "sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng==", "dev": true, "requires": { - "@babel/core": "^7.12.3", - "@babel/parser": "^7.14.7", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-coverage": "^3.2.0", - "semver": "^6.3.0" + "@jest/types": "^27.5.1", + "@types/graceful-fs": "^4.1.2", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "fsevents": "^2.3.2", + "graceful-fs": "^4.2.9", + "jest-regex-util": "^27.5.1", + "jest-serializer": "^27.5.1", + "jest-util": "^27.5.1", + "jest-worker": "^27.5.1", + "micromatch": "^4.0.4", + "walker": "^1.0.7" } }, - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "jest-regex-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.5.1.tgz", + "integrity": "sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg==", "dev": true }, "supports-color": { @@ -14732,6 +15286,18 @@ "requires": { "has-flag": "^4.0.0" } + }, + "write-file-atomic": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", + "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", + "dev": true, + "requires": { + "imurmurhash": "^0.1.4", + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" + } } } }, @@ -14744,14 +15310,6 @@ "callsites": "^3.0.0", "graceful-fs": "^4.2.9", "source-map": "^0.6.0" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } } }, "@jest/test-result": { @@ -14776,85 +15334,34 @@ "graceful-fs": "^4.2.9", "jest-haste-map": "^27.5.1", "jest-runtime": "^27.5.1" - } - }, - "@jest/transform": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-27.5.1.tgz", - "integrity": "sha512-ipON6WtYgl/1329g5AIJVbUuEh0wZVbdpGwC99Jw4LwuoBNS95MVphU6zOeD9pDkon+LLbFL7lOQRapbB8SCHw==", - "dev": true, - "requires": { - "@babel/core": "^7.1.0", - "@jest/types": "^27.5.1", - "babel-plugin-istanbul": "^6.1.1", - "chalk": "^4.0.0", - "convert-source-map": "^1.4.0", - "fast-json-stable-stringify": "^2.0.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^27.5.1", - "jest-regex-util": "^27.5.1", - "jest-util": "^27.5.1", - "micromatch": "^4.0.4", - "pirates": "^4.0.4", - "slash": "^3.0.0", - "source-map": "^0.6.1", - "write-file-atomic": "^3.0.0" }, "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "jest-haste-map": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.5.1.tgz", + "integrity": "sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng==", "dev": true, "requires": { - "color-name": "~1.1.4" + "@jest/types": "^27.5.1", + "@types/graceful-fs": "^4.1.2", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "fsevents": "^2.3.2", + "graceful-fs": "^4.2.9", + "jest-regex-util": "^27.5.1", + "jest-serializer": "^27.5.1", + "jest-util": "^27.5.1", + "jest-worker": "^27.5.1", + "micromatch": "^4.0.4", + "walker": "^1.0.7" } }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "jest-regex-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.5.1.tgz", + "integrity": "sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg==", "dev": true - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } } } }, @@ -14922,12 +15429,29 @@ } } }, + "@jridgewell/gen-mapping": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.1.tgz", + "integrity": "sha512-GcHwniMlA2z+WFPWuY8lp3fsza0I8xPFMWL5+n8LYyP6PSvPrXf4+n8stDHZY2DM0zy9sVkRDy1jDI4XGzYVqg==", + "dev": true, + "requires": { + "@jridgewell/set-array": "^1.0.0", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + } + }, "@jridgewell/resolve-uri": { "version": "3.0.5", "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.0.5.tgz", "integrity": "sha512-VPeQ7+wH0itvQxnG+lIzWgkysKIr3L9sslimFW55rHMdGu/qCQ5z5h9zq4gI8uBtqkpHhsF4Z/OwExufUCThew==", "dev": true }, + "@jridgewell/set-array": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.1.tgz", + "integrity": "sha512-Ct5MqZkLGEXTVmQYbGtx9SVqD2fqwvdubdps5D3djjAkgkKwT918VNOz65pEHFaYTeWcukmJmH5SwsA9Tn2ObQ==", + "dev": true + }, "@jridgewell/sourcemap-codec": { "version": "1.4.11", "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.11.tgz", @@ -14935,9 +15459,9 @@ "dev": true }, "@jridgewell/trace-mapping": { - "version": "0.3.4", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.4.tgz", - "integrity": "sha512-vFv9ttIedivx0ux3QSjhgtCVjPZd5l46ZOMDSCwnH1yUO2e964gO8LZGyv2QkqcgR6TnBU1v+1IFqmeoG+0UJQ==", + "version": "0.3.13", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.13.tgz", + "integrity": "sha512-o1xbKhp9qnIAoHJSWd6KlCZfqslL4valSF81H8ImioOAxluWYWOpWkpyktY2vnt4tbrX9XYaxovq6cgowaJp2w==", "dev": true, "requires": { "@jridgewell/resolve-uri": "^3.0.3", @@ -14986,9 +15510,9 @@ } }, "@sinonjs/fake-timers": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-8.1.0.tgz", - "integrity": "sha512-OAPJUAtgeINhh/TAlUID4QTs53Njm7xzddaVlEs/SXwgtiD1tW22zAB/W1wdqfrpmikgaWQ9Fw6Ws+hsiRm5Vg==", + "version": "9.1.2", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-9.1.2.tgz", + "integrity": "sha512-BPS4ynJW/o92PUR4wgriz2Ud5gpST5vz6GQfMixEDK0Z8ZCUv2M7SkBLykH56T++Xs+8ln9zTGbOvNGIe02/jw==", "dev": true, "requires": { "@sinonjs/commons": "^1.7.0" @@ -15011,12 +15535,6 @@ "integrity": "sha512-+iTbntw2IZPb/anVDbypzfQa+ay64MW0Zo8aJ8gZPWMMK6/OubMVb6lUPMagqjOPnmtauXnFCACVl3O7ogjeqQ==", "dev": true }, - "@socket.io/base64-arraybuffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@socket.io/base64-arraybuffer/-/base64-arraybuffer-1.0.2.tgz", - "integrity": "sha512-dOlCBKnDw4iShaIsH/bxujKTM18+2TOAsYz+KSc11Am38H4q5Xw8Bbz97ZYdrVNM+um3p7w86Bvvmcn9q+5+eQ==", - "dev": true - }, "@tootallnate/once": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", @@ -15024,9 +15542,9 @@ "dev": true }, "@types/babel__core": { - "version": "7.1.18", - "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.18.tgz", - "integrity": "sha512-S7unDjm/C7z2A2R9NzfKCK1I+BAALDtxEmsJBwlB3EzNfb929ykjL++1CK9LO++EIp2fQrC8O+BwjKvz6UeDyQ==", + "version": "7.1.19", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.19.tgz", + "integrity": "sha512-WEOTgRsbYkvA/KCsDwVEGkd7WAr1e3g31VHQ8zy5gul/V1qKullU/BU5I68X5v7V3GnB9eotmom4v5a5gjxorw==", "dev": true, "requires": { "@babel/parser": "^7.1.0", @@ -15056,18 +15574,18 @@ } }, "@types/babel__traverse": { - "version": "7.14.2", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.14.2.tgz", - "integrity": "sha512-K2waXdXBi2302XUdcHcR1jCeU0LL4TD9HRs/gk0N2Xvrht+G/BfJa4QObBQZfhMdxiCpV3COl5Nfq4uKTeTnJA==", + "version": "7.17.1", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.17.1.tgz", + "integrity": "sha512-kVzjari1s2YVi77D3w1yuvohV2idweYXMCDzqBiVNN63TcDWrIlTVOYpqVrvbbyOE/IyzBoTKF0fdnLPEORFxA==", "dev": true, "requires": { "@babel/types": "^7.3.0" } }, "@types/chai": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.0.tgz", - "integrity": "sha512-/ceqdqeRraGolFTcfoXNiqjyQhZzbINDngeoAq9GoHa8PPK1yNzTaxWjA6BFWp5Ua9JpXEMSS4s5i9tS0hOJtw==", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.1.tgz", + "integrity": "sha512-/zPMqDkzSZ8t3VtxOa4KPq7uzzW978M9Tvh+j7GHKuo6k6GTLxPJ4J5gE5cjfJ26pnXst0N5Hax8Sr0T2Mi9zQ==", "dev": true }, "@types/component-emitter": { @@ -15124,9 +15642,9 @@ } }, "@types/istanbul-lib-coverage": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.3.tgz", - "integrity": "sha512-sz7iLqvVUg1gIedBOvlkxPlc8/uVzyS5OwGz1cKjXzkl3FpL3al0crU8YGU1WoHkxn0Wxbw5tyi6hvzJKNzFsw==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", + "integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==", "dev": true }, "@types/istanbul-lib-report": { @@ -15139,18 +15657,18 @@ } }, "@types/istanbul-reports": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.0.tgz", - "integrity": "sha512-nwKNbvnwJ2/mndE9ItP/zc2TCzw6uuodnF4EHYWD+gCQDVBuRQL5UzbZD0/ezy1iKsFU2ZQiDqg4M9dN4+wZgA==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", + "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", "dev": true, "requires": { "@types/istanbul-lib-report": "*" } }, "@types/jest": { - "version": "27.4.1", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-27.4.1.tgz", - "integrity": "sha512-23iPJADSmicDVrWk+HT58LMJtzLAnB2AgIzplQuq/bSrGaxCrlvRFjGbXmamnnk/mAmCdLStiGqggu28ocUyiw==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-27.5.1.tgz", + "integrity": "sha512-fUy7YRpT+rHXto1YlL+J9rs0uLGyiqVt3ZOTQR+4ROc47yNl8WLdVLgUloBRhOxP1PZvguHl44T3H0wAWxahYQ==", "dev": true, "requires": { "jest-matcher-utils": "^27.0.0", @@ -15166,25 +15684,25 @@ "@types/json5": { "version": "0.0.29", "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", - "integrity": "sha1-7ihweulOEdK4J7y+UnC86n8+ce4=", + "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", "dev": true }, "@types/mocha": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-9.1.0.tgz", - "integrity": "sha512-QCWHkbMv4Y5U9oW10Uxbr45qMMSzl4OzijsozynUAgx3kEHUdXB00udx2dWDQ7f2TU2a2uuiFaRZjCe3unPpeg==", + "version": "9.1.1", + "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-9.1.1.tgz", + "integrity": "sha512-Z61JK7DKDtdKTWwLeElSEBcWGRLY8g95ic5FoQqI9CMx0ns/Ghep3B4DfcEimiKMvtamNVULVNKEsiwV3aQmXw==", "dev": true }, "@types/node": { - "version": "17.0.21", - "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.21.tgz", - "integrity": "sha512-DBZCJbhII3r90XbQxI8Y9IjjiiOGlZ0Hr32omXIZvwwZ7p4DMMXGrKXVyPfuoBOri9XNtL0UK69jYIBIsRX3QQ==", + "version": "17.0.42", + "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.42.tgz", + "integrity": "sha512-Q5BPGyGKcvQgAMbsr7qEGN/kIPN6zZecYYABeTDBizOsau+2NMdSVTar9UQw21A2+JyA2KRNDYaYrPB0Rpk2oQ==", "dev": true }, "@types/prettier": { - "version": "2.4.4", - "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.4.4.tgz", - "integrity": "sha512-ReVR2rLTV1kvtlWFyuot+d1pkpG2Fw/XKE3PDAdj57rbM97ttSp9JZ2UsP+2EHTylra9cUf6JA7tGwW1INzUrA==", + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.6.3.tgz", + "integrity": "sha512-ymZk3LEC/fsut+/Q5qejp6R9O1rMxz3XaRHDV6kX8MrGAhOSPqVARbDi+EZvInBpw+BnCX3TD240byVkOfQsHg==", "dev": true }, "@types/sinon": { @@ -15218,114 +15736,114 @@ } }, "@types/yargs-parser": { - "version": "20.2.1", - "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-20.2.1.tgz", - "integrity": "sha512-7tFImggNeNBVMsn0vLrpn1H1uPrUBdnARPTpZoitY37ZrdJREzf7I16tMrlK3hen349gr1NYh8CmZQa7CTG6Aw==", + "version": "21.0.0", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.0.tgz", + "integrity": "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==", "dev": true }, "@typescript-eslint/eslint-plugin": { - "version": "5.15.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.15.0.tgz", - "integrity": "sha512-u6Db5JfF0Esn3tiAKELvoU5TpXVSkOpZ78cEGn/wXtT2RVqs2vkt4ge6N8cRCyw7YVKhmmLDbwI2pg92mlv7cA==", + "version": "5.27.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.27.1.tgz", + "integrity": "sha512-6dM5NKT57ZduNnJfpY81Phe9nc9wolnMCnknb1im6brWi1RYv84nbMS3olJa27B6+irUVV1X/Wb+Am0FjJdGFw==", "dev": true, "requires": { - "@typescript-eslint/scope-manager": "5.15.0", - "@typescript-eslint/type-utils": "5.15.0", - "@typescript-eslint/utils": "5.15.0", - "debug": "^4.3.2", + "@typescript-eslint/scope-manager": "5.27.1", + "@typescript-eslint/type-utils": "5.27.1", + "@typescript-eslint/utils": "5.27.1", + "debug": "^4.3.4", "functional-red-black-tree": "^1.0.1", - "ignore": "^5.1.8", + "ignore": "^5.2.0", "regexpp": "^3.2.0", - "semver": "^7.3.5", + "semver": "^7.3.7", "tsutils": "^3.21.0" } }, "@typescript-eslint/eslint-plugin-tslint": { - "version": "5.15.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin-tslint/-/eslint-plugin-tslint-5.15.0.tgz", - "integrity": "sha512-1w1Uxqy4Wixv2vRE9DU0Z6IxRWc/JApowQIB0BrQqfgV5QQNmt9y1sI20p+CeomhLCA9Hd4VEWEFhndzHbGSVw==", + "version": "5.27.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin-tslint/-/eslint-plugin-tslint-5.27.1.tgz", + "integrity": "sha512-U95M4jCGNbag0T5OtnwVXQJ5qx/1V9QOipcv9pQnOdIwVPPSBuoLYluOChGeuoQLHN/TjfTPqKhTBKtI3NmnRA==", "dev": true, "requires": { - "@typescript-eslint/utils": "5.15.0", + "@typescript-eslint/utils": "5.27.1", "lodash": "^4.17.21" } }, "@typescript-eslint/parser": { - "version": "5.15.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.15.0.tgz", - "integrity": "sha512-NGAYP/+RDM2sVfmKiKOCgJYPstAO40vPAgACoWPO/+yoYKSgAXIFaBKsV8P0Cc7fwKgvj27SjRNX4L7f4/jCKQ==", + "version": "5.27.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.27.1.tgz", + "integrity": "sha512-7Va2ZOkHi5NP+AZwb5ReLgNF6nWLGTeUJfxdkVUAPPSaAdbWNnFZzLZ4EGGmmiCTg+AwlbE1KyUYTBglosSLHQ==", "dev": true, "requires": { - "@typescript-eslint/scope-manager": "5.15.0", - "@typescript-eslint/types": "5.15.0", - "@typescript-eslint/typescript-estree": "5.15.0", - "debug": "^4.3.2" + "@typescript-eslint/scope-manager": "5.27.1", + "@typescript-eslint/types": "5.27.1", + "@typescript-eslint/typescript-estree": "5.27.1", + "debug": "^4.3.4" } }, "@typescript-eslint/scope-manager": { - "version": "5.15.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.15.0.tgz", - "integrity": "sha512-EFiZcSKrHh4kWk0pZaa+YNJosvKE50EnmN4IfgjkA3bTHElPtYcd2U37QQkNTqwMCS7LXeDeZzEqnsOH8chjSg==", + "version": "5.27.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.27.1.tgz", + "integrity": "sha512-fQEOSa/QroWE6fAEg+bJxtRZJTH8NTskggybogHt4H9Da8zd4cJji76gA5SBlR0MgtwF7rebxTbDKB49YUCpAg==", "dev": true, "requires": { - "@typescript-eslint/types": "5.15.0", - "@typescript-eslint/visitor-keys": "5.15.0" + "@typescript-eslint/types": "5.27.1", + "@typescript-eslint/visitor-keys": "5.27.1" } }, "@typescript-eslint/type-utils": { - "version": "5.15.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.15.0.tgz", - "integrity": "sha512-KGeDoEQ7gHieLydujGEFLyLofipe9PIzfvA/41urz4hv+xVxPEbmMQonKSynZ0Ks2xDhJQ4VYjB3DnRiywvKDA==", + "version": "5.27.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.27.1.tgz", + "integrity": "sha512-+UC1vVUWaDHRnC2cQrCJ4QtVjpjjCgjNFpg8b03nERmkHv9JV9X5M19D7UFMd+/G7T/sgFwX2pGmWK38rqyvXw==", "dev": true, "requires": { - "@typescript-eslint/utils": "5.15.0", - "debug": "^4.3.2", + "@typescript-eslint/utils": "5.27.1", + "debug": "^4.3.4", "tsutils": "^3.21.0" } }, "@typescript-eslint/types": { - "version": "5.15.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.15.0.tgz", - "integrity": "sha512-yEiTN4MDy23vvsIksrShjNwQl2vl6kJeG9YkVJXjXZnkJElzVK8nfPsWKYxcsGWG8GhurYXP4/KGj3aZAxbeOA==", + "version": "5.27.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.27.1.tgz", + "integrity": "sha512-LgogNVkBhCTZU/m8XgEYIWICD6m4dmEDbKXESCbqOXfKZxRKeqpiJXQIErv66sdopRKZPo5l32ymNqibYEH/xg==", "dev": true }, "@typescript-eslint/typescript-estree": { - "version": "5.15.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.15.0.tgz", - "integrity": "sha512-Hb0e3dGc35b75xLzixM3cSbG1sSbrTBQDfIScqdyvrfJZVEi4XWAT+UL/HMxEdrJNB8Yk28SKxPLtAhfCbBInA==", + "version": "5.27.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.27.1.tgz", + "integrity": "sha512-DnZvvq3TAJ5ke+hk0LklvxwYsnXpRdqUY5gaVS0D4raKtbznPz71UJGnPTHEFo0GDxqLOLdMkkmVZjSpET1hFw==", "dev": true, "requires": { - "@typescript-eslint/types": "5.15.0", - "@typescript-eslint/visitor-keys": "5.15.0", - "debug": "^4.3.2", - "globby": "^11.0.4", + "@typescript-eslint/types": "5.27.1", + "@typescript-eslint/visitor-keys": "5.27.1", + "debug": "^4.3.4", + "globby": "^11.1.0", "is-glob": "^4.0.3", - "semver": "^7.3.5", + "semver": "^7.3.7", "tsutils": "^3.21.0" } }, "@typescript-eslint/utils": { - "version": "5.15.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.15.0.tgz", - "integrity": "sha512-081rWu2IPKOgTOhHUk/QfxuFog8m4wxW43sXNOMSCdh578tGJ1PAaWPsj42LOa7pguh173tNlMigsbrHvh/mtA==", + "version": "5.27.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.27.1.tgz", + "integrity": "sha512-mZ9WEn1ZLDaVrhRaYgzbkXBkTPghPFsup8zDbbsYTxC5OmqrFE7skkKS/sraVsLP3TcT3Ki5CSyEFBRkLH/H/w==", "dev": true, "requires": { "@types/json-schema": "^7.0.9", - "@typescript-eslint/scope-manager": "5.15.0", - "@typescript-eslint/types": "5.15.0", - "@typescript-eslint/typescript-estree": "5.15.0", + "@typescript-eslint/scope-manager": "5.27.1", + "@typescript-eslint/types": "5.27.1", + "@typescript-eslint/typescript-estree": "5.27.1", "eslint-scope": "^5.1.1", "eslint-utils": "^3.0.0" } }, "@typescript-eslint/visitor-keys": { - "version": "5.15.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.15.0.tgz", - "integrity": "sha512-+vX5FKtgvyHbmIJdxMJ2jKm9z2BIlXJiuewI8dsDYMp5LzPUcuTT78Ya5iwvQg3VqSVdmxyM8Anj1Jeq7733ZQ==", + "version": "5.27.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.27.1.tgz", + "integrity": "sha512-xYs6ffo01nhdJgPieyk7HAOpjhTsx7r/oB9LWEhwAXgwn33tkr+W8DI2ChboqhZlC4q3TC6geDYPoiX8ROqyOQ==", "dev": true, "requires": { - "@typescript-eslint/types": "5.15.0", - "eslint-visitor-keys": "^3.0.0" + "@typescript-eslint/types": "5.27.1", + "eslint-visitor-keys": "^3.3.0" } }, "@ungap/promise-all-settled": { @@ -15481,25 +15999,25 @@ } }, "@webpack-cli/configtest": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-1.1.1.tgz", - "integrity": "sha512-1FBc1f9G4P/AxMqIgfZgeOTuRnwZMten8E7zap5zgpPInnCrP8D4Q81+4CWIch8i/Nf7nXjP0v6CjjbHOrXhKg==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-1.2.0.tgz", + "integrity": "sha512-4FB8Tj6xyVkyqjj1OaTqCjXYULB9FMkqQ8yGrZjRDrYh0nOE+7Lhs45WioWQQMV+ceFlE368Ukhe6xdvJM9Egg==", "dev": true, "requires": {} }, "@webpack-cli/info": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-1.4.1.tgz", - "integrity": "sha512-PKVGmazEq3oAo46Q63tpMr4HipI3OPfP7LiNOEJg963RMgT0rqheag28NCML0o3GIzA3DmxP1ZIAv9oTX1CUIA==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-1.5.0.tgz", + "integrity": "sha512-e8tSXZpw2hPl2uMJY6fsMswaok5FdlGNRTktvFk2sD8RjH0hE2+XistawJx1vmKteh4NmGmNUrp+Tb2w+udPcQ==", "dev": true, "requires": { "envinfo": "^7.7.3" } }, "@webpack-cli/serve": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-1.6.1.tgz", - "integrity": "sha512-gNGTiTrjEVQ0OcVnzsRSqTxaBSr+dmTfm+qJsCDluky8uhdLWep7Gcr62QsAKHTMxjCS/8nEITsmFAhfIx+QSw==", + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-1.7.0.tgz", + "integrity": "sha512-oxnCNGj88fL+xzV+dacXs44HcDwf1ovs3AuEzvP7mqXw7fQntqIhQ1BRmynh4qEKQSSSRSWVyXRjmTbZIX9V2Q==", "dev": true, "requires": {} }, @@ -15516,9 +16034,9 @@ "dev": true }, "abab": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.5.tgz", - "integrity": "sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q==", + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", + "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==", "dev": true }, "accepts": { @@ -15532,9 +16050,9 @@ } }, "acorn": { - "version": "8.7.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.0.tgz", - "integrity": "sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==", + "version": "8.7.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.1.tgz", + "integrity": "sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==", "dev": true }, "acorn-globals": { @@ -15651,14 +16169,14 @@ "dev": true }, "array-includes": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.4.tgz", - "integrity": "sha512-ZTNSQkmWumEbiHO2GF4GmWxYVTiQyJy2XOTa15sdQSrvKn7l+180egQMqlrMOUMCyLMD7pmyQe4mMDUT6Behrw==", + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.5.tgz", + "integrity": "sha512-iSDYZMMyTPkiFasVqfuAQnWAYcvO/SeBSCGKePoEthjp4LEMTe4uLc7b025o4jAZpHhihh8xPo99TNWUWWkGDQ==", "dev": true, "requires": { "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.1", + "define-properties": "^1.1.4", + "es-abstract": "^1.19.5", "get-intrinsic": "^1.1.1", "is-string": "^1.0.7" } @@ -15675,120 +16193,67 @@ "integrity": "sha512-KaYU+S+ndVqyUnignHftkwc58o3uVU1jzczILJ1tN2YaIZpFIKBiP/x/j97E5MVPsaCloPbqWLB/8qCTVvT2qg==", "dev": true, "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.0" - } - }, - "array.prototype.flatmap": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.2.5.tgz", - "integrity": "sha512-08u6rVyi1Lj7oqWbS9nUxliETrtIROT4XGTA4D/LWGten6E3ocm7cy9SIrmNHOL5XVbVuckUp3X6Xyg8/zpvHA==", - "dev": true, - "requires": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.0" - } - }, - "arraybuffer-loader": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/arraybuffer-loader/-/arraybuffer-loader-1.0.8.tgz", - "integrity": "sha512-CwUVCcxCgcgZUu2w741OV6Xj1tvRVQebq22RCyGXiLgJOJ4e4M/59EPYdtK2MLfIN28t1TDvuh2ojstNq3Kh5g==", - "dev": true, - "requires": { - "loader-utils": "^1.1.0" - } - }, - "assertion-error": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", - "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", - "dev": true - }, - "asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", - "dev": true - }, - "babel-jest": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-27.5.1.tgz", - "integrity": "sha512-cdQ5dXjGRd0IBRATiQ4mZGlGlRE8kJpjPOixdNRdT+m3UcNqmYWN6rK6nvtXYfY3D76cb8s/O1Ss8ea24PIwcg==", - "dev": true, - "requires": { - "@jest/transform": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/babel__core": "^7.1.14", - "babel-plugin-istanbul": "^6.1.1", - "babel-preset-jest": "^27.5.1", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "slash": "^3.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.0" + } + }, + "array.prototype.flatmap": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.0.tgz", + "integrity": "sha512-PZC9/8TKAIxcWKdyeb77EzULHPrIX/tIZebLJUQOMR1OwYosT8yggdfWScfTBCDj5utONvOuPQQumYsU2ULbkg==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.2", + "es-shim-unscopables": "^1.0.0" + } + }, + "arraybuffer-loader": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/arraybuffer-loader/-/arraybuffer-loader-1.0.8.tgz", + "integrity": "sha512-CwUVCcxCgcgZUu2w741OV6Xj1tvRVQebq22RCyGXiLgJOJ4e4M/59EPYdtK2MLfIN28t1TDvuh2ojstNq3Kh5g==", + "dev": true, + "requires": { + "loader-utils": "^1.1.0" } }, + "assertion-error": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", + "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", + "dev": true + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "dev": true + }, "babel-loader": { - "version": "8.2.3", - "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.2.3.tgz", - "integrity": "sha512-n4Zeta8NC3QAsuyiizu0GkmRcQ6clkV9WFUnUf1iXP//IeSKbWjofW3UHyZVwlOB4y039YQKefawyTn64Zwbuw==", + "version": "8.2.5", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.2.5.tgz", + "integrity": "sha512-OSiFfH89LrEMiWd4pLNqGz4CwJDtbs2ZVc+iGu2HrkRfPxId9F2anQj38IxWpmRfsUY0aBZYi1EFcd3mhtRMLQ==", "dev": true, "requires": { "find-cache-dir": "^3.3.1", - "loader-utils": "^1.4.0", + "loader-utils": "^2.0.0", "make-dir": "^3.1.0", "schema-utils": "^2.6.5" + }, + "dependencies": { + "loader-utils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.2.tgz", + "integrity": "sha512-TM57VeHptv569d/GKh6TAYdzKblwDNiumOdkFnejjD0XwTH87K90w3O7AiJRqdQoXygvi1VQTJTLGhJl7WqA7A==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + } + } } }, "babel-plugin-dynamic-import-node": { @@ -15811,45 +16276,6 @@ "@istanbuljs/schema": "^0.1.2", "istanbul-lib-instrument": "^5.0.4", "test-exclude": "^6.0.0" - }, - "dependencies": { - "istanbul-lib-coverage": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", - "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", - "dev": true - }, - "istanbul-lib-instrument": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.1.0.tgz", - "integrity": "sha512-czwUz525rkOFDJxfKK6mYfIs9zBKILyrZQxjz3ABhjQXhbhFsSbo1HW/BFcsDnfJYJWA6thRR5/TUY2qs5W99Q==", - "dev": true, - "requires": { - "@babel/core": "^7.12.3", - "@babel/parser": "^7.14.7", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-coverage": "^3.2.0", - "semver": "^6.3.0" - } - }, - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } - }, - "babel-plugin-jest-hoist": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-27.5.1.tgz", - "integrity": "sha512-50wCwD5EMNW4aRpOwtqzyZHIewTYNxLA4nhB+09d8BIssfNfzBRhkBIHiaPv1Si226TQSvp8gxAJm2iY2qs2hQ==", - "dev": true, - "requires": { - "@babel/template": "^7.3.3", - "@babel/types": "^7.3.3", - "@types/babel__core": "^7.0.0", - "@types/babel__traverse": "^7.0.6" } }, "babel-plugin-polyfill-corejs2": { @@ -15910,16 +16336,6 @@ "@babel/plugin-syntax-top-level-await": "^7.8.3" } }, - "babel-preset-jest": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-27.5.1.tgz", - "integrity": "sha512-Nptf2FzlPCWYuJg41HBqXVT8ym6bXOevuCTbhxlUpjwtysGaIWFvDEjp4y+G7fl13FgOdjs7P/DmErqH7da0Ag==", - "dev": true, - "requires": { - "babel-plugin-jest-hoist": "^27.5.1", - "babel-preset-current-node-syntax": "^1.0.0" - } - }, "balanced-match": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", @@ -15945,21 +16361,23 @@ "dev": true }, "body-parser": { - "version": "1.19.2", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.2.tgz", - "integrity": "sha512-SAAwOxgoCKMGs9uUAUFHygfLAyaniaoun6I8mFY9pRAJL9+Kec34aU+oIjDhTycub1jozEfEwx1W1IuOYxVSFw==", + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.0.tgz", + "integrity": "sha512-DfJ+q6EPcGKZD1QWUjSpqp+Q7bDQTsQIF4zfUAtZ6qk+H/3/QRhg9CEp39ss+/T2vw0+HaidC0ecJj/DRLIaKg==", "dev": true, "requires": { "bytes": "3.1.2", "content-type": "~1.0.4", "debug": "2.6.9", - "depd": "~1.1.2", - "http-errors": "1.8.1", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", "iconv-lite": "0.4.24", - "on-finished": "~2.3.0", - "qs": "6.9.7", - "raw-body": "2.4.3", - "type-is": "~1.6.18" + "on-finished": "2.4.1", + "qs": "6.10.3", + "raw-body": "2.5.1", + "type-is": "~1.6.18", + "unpipe": "1.0.0" }, "dependencies": { "debug": { @@ -15976,13 +16394,22 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", "dev": true + }, + "on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "dev": true, + "requires": { + "ee-first": "1.1.1" + } } } }, "boolbase": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", - "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", "dev": true }, "brace-expansion": { @@ -16017,15 +16444,15 @@ "dev": true }, "browserslist": { - "version": "4.19.1", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.19.1.tgz", - "integrity": "sha512-u2tbbG5PdKRTUoctO3NBD8FQ5HdPh1ZXPHzp1rwaa5jTc+RV9/+RlWiAIKmjRPQF+xbGM9Kklj5bZQFa2s/38A==", + "version": "4.20.4", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.20.4.tgz", + "integrity": "sha512-ok1d+1WpnU24XYN7oC3QWgTyMhY/avPJ/r9T00xxvUOIparA/gc+UPUMaod3i+G6s+nI2nUb9xZ5k794uIwShw==", "dev": true, "requires": { - "caniuse-lite": "^1.0.30001286", - "electron-to-chromium": "^1.4.17", + "caniuse-lite": "^1.0.30001349", + "electron-to-chromium": "^1.4.147", "escalade": "^3.1.1", - "node-releases": "^2.0.1", + "node-releases": "^2.0.5", "picocolors": "^1.0.0" } }, @@ -16088,9 +16515,9 @@ "dev": true }, "caniuse-lite": { - "version": "1.0.30001286", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001286.tgz", - "integrity": "sha512-zaEMRH6xg8ESMi2eQ3R4eZ5qw/hJiVsO/HlLwniIwErij0JDr9P+8V4dtx1l+kLq6j3yy8l8W4fst1lBnat5wQ==", + "version": "1.0.30001352", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001352.tgz", + "integrity": "sha512-GUgH8w6YergqPQDGWhJGt8GDRnY0L/iJVQcU3eJ46GYf52R8tk0Wxp0PymuFVZboJYXGiCqwozAYZNRjVj6IcA==", "dev": true }, "chai": { @@ -16132,39 +16559,41 @@ "dev": true }, "cheerio": { - "version": "1.0.0-rc.10", - "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.10.tgz", - "integrity": "sha512-g0J0q/O6mW8z5zxQ3A8E8J1hUgp4SMOvEoW/x84OwyHKe/Zccz83PVT4y5Crcr530FV6NgmKI1qvGTKVl9XXVw==", + "version": "1.0.0-rc.11", + "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.11.tgz", + "integrity": "sha512-bQwNaDIBKID5ts/DsdhxrjqFXYfLw4ste+wMKqWA8DyKcS4qwsPP4Bk8ZNaTJjvpiX/qW3BT4sU7d6Bh5i+dag==", "dev": true, "requires": { - "cheerio-select": "^1.5.0", - "dom-serializer": "^1.3.2", - "domhandler": "^4.2.0", - "htmlparser2": "^6.1.0", - "parse5": "^6.0.1", - "parse5-htmlparser2-tree-adapter": "^6.0.1", - "tslib": "^2.2.0" + "cheerio-select": "^2.1.0", + "dom-serializer": "^2.0.0", + "domhandler": "^5.0.3", + "domutils": "^3.0.1", + "htmlparser2": "^8.0.1", + "parse5": "^7.0.0", + "parse5-htmlparser2-tree-adapter": "^7.0.0", + "tslib": "^2.4.0" }, "dependencies": { "tslib": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.2.0.tgz", - "integrity": "sha512-gS9GVHRU+RGn5KQM2rllAlR3dU6m7AcpJKdtH8gFvQiC4Otgk98XnmMU+nZenHt/+VhnBPWwgrJsyrdcw6i23w==", + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", "dev": true } } }, "cheerio-select": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-1.5.0.tgz", - "integrity": "sha512-qocaHPv5ypefh6YNxvnbABM07KMxExbtbfuJoIie3iZXX1ERwYmJcIiRrr9H05ucQP1k28dav8rpdDgjQd8drg==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-2.1.0.tgz", + "integrity": "sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==", "dev": true, "requires": { - "css-select": "^4.1.3", - "css-what": "^5.0.1", - "domelementtype": "^2.2.0", - "domhandler": "^4.2.0", - "domutils": "^2.7.0" + "boolbase": "^1.0.0", + "css-select": "^5.1.0", + "css-what": "^6.1.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3", + "domutils": "^3.0.1" } }, "chokidar": { @@ -16193,9 +16622,9 @@ } }, "ci-info": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.2.0.tgz", - "integrity": "sha512-dVqRX7fLUm8J6FgHJ418XuIgDLZDkYcDFTeL6TA2gt5WlIZUQrrH6EZrNClwT/H0FateUsZkGIOPRrLbP+PR9A==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.3.1.tgz", + "integrity": "sha512-SXgeMX9VwDe7iFFaEWkA5AstuER9YKqy4EhHqr4DVqkwmD9rpVimkMKWHdjn30Ja45txyjhSn63lVX69eVCckg==", "dev": true }, "cjs-module-lexer": { @@ -16229,7 +16658,7 @@ "co": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", + "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", "dev": true }, "collect-v8-coverage": { @@ -16275,9 +16704,9 @@ "dev": true }, "comment-parser": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/comment-parser/-/comment-parser-1.3.0.tgz", - "integrity": "sha512-hRpmWIKgzd81vn0ydoWoyPoALEOnF4wt8yKD35Ib1D6XC2siLiYaiqfGkYrunuKdsXGwpBpHU3+9r+RVw2NZfA==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/comment-parser/-/comment-parser-1.3.1.tgz", + "integrity": "sha512-B52sN2VNghyq5ofvUsqZjmk6YkihBX5vMSChmSK9v4ShjKf3Vk5Xcmgpw4o+iIgtrnM/u5FiMpz9VKb8lpBveA==", "dev": true }, "commondir": { @@ -16360,9 +16789,9 @@ } }, "cookie": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", - "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==", + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", + "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", "dev": true }, "cookie-signature": { @@ -16372,18 +16801,18 @@ "dev": true }, "core-js": { - "version": "3.21.1", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.21.1.tgz", - "integrity": "sha512-FRq5b/VMrWlrmCzwRrpDYNxyHP9BcAZC+xHJaqTgIE5091ZV1NTmyh0sGOg5XqpnHvR0svdy0sv1gWA1zmhxig==", + "version": "3.22.8", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.22.8.tgz", + "integrity": "sha512-UoGQ/cfzGYIuiq6Z7vWL1HfkE9U9IZ4Ub+0XSiJTCzvbZzgPA69oDF2f+lgJ6dFFLEdjW5O6svvoKzXX23xFkA==", "dev": true }, "core-js-compat": { - "version": "3.21.1", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.21.1.tgz", - "integrity": "sha512-gbgX5AUvMb8gwxC7FLVWYT7Kkgu/y7+h/h1X43yJkNqhlK2fuYyQimqvKGNZFAY6CKii/GFKJ2cp/1/42TN36g==", + "version": "3.22.8", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.22.8.tgz", + "integrity": "sha512-pQnwg4xtuvc2Bs/5zYQPaEYYSuTxsF7LBWF0SvnVhthZo/Qe+rJpcEekrdNK5DWwDJ0gv0oI9NNX5Mppdy0ctg==", "dev": true, "requires": { - "browserslist": "^4.19.1", + "browserslist": "^4.20.3", "semver": "7.0.0" }, "dependencies": { @@ -16417,22 +16846,22 @@ } }, "css-select": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.1.3.tgz", - "integrity": "sha512-gT3wBNd9Nj49rAbmtFHj1cljIAOLYSX1nZ8CB7TBO3INYckygm5B7LISU/szY//YmdiSLbJvDLOx9VnMVpMBxA==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz", + "integrity": "sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==", "dev": true, "requires": { "boolbase": "^1.0.0", - "css-what": "^5.0.0", - "domhandler": "^4.2.0", - "domutils": "^2.6.0", - "nth-check": "^2.0.0" + "css-what": "^6.1.0", + "domhandler": "^5.0.2", + "domutils": "^3.0.1", + "nth-check": "^2.0.1" } }, "css-what": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-5.0.1.tgz", - "integrity": "sha512-FYDTSHb/7KXsWICVsxdmiExPjCfRC4qRFBdVwv7Ax9hMnvMmEjP9RfxTEZ3qPZGmADDn2vAKSo9UcN1jKVYscg==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", + "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", "dev": true }, "cssesc": { @@ -16488,9 +16917,9 @@ "dev": true }, "debug": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", - "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "dev": true, "requires": { "ms": "2.1.2" @@ -16505,7 +16934,7 @@ "dedent": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", - "integrity": "sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw=", + "integrity": "sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==", "dev": true }, "deep-eql": { @@ -16530,30 +16959,31 @@ "dev": true }, "define-properties": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", - "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz", + "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==", "dev": true, "requires": { - "object-keys": "^1.0.12" + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" } }, "delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", "dev": true }, "depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", "dev": true }, "destroy": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", - "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", "dev": true }, "detect-newline": { @@ -16611,20 +17041,20 @@ } }, "dom-serializer": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.3.2.tgz", - "integrity": "sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", + "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", "dev": true, "requires": { - "domelementtype": "^2.0.1", - "domhandler": "^4.2.0", - "entities": "^2.0.0" + "domelementtype": "^2.3.0", + "domhandler": "^5.0.2", + "entities": "^4.2.0" } }, "domelementtype": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz", - "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", "dev": true }, "domexception": { @@ -16645,23 +17075,23 @@ } }, "domhandler": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.2.0.tgz", - "integrity": "sha512-zk7sgt970kzPks2Bf+dwT/PLzghLnsivb9CcxkvR8Mzr66Olr0Ofd8neSbglHJHaHa2MadfoSdNlKYAaafmWfA==", + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", + "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", "dev": true, "requires": { - "domelementtype": "^2.2.0" + "domelementtype": "^2.3.0" } }, "domutils": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.7.0.tgz", - "integrity": "sha512-8eaHa17IwJUPAiB+SoTYBo5mCdeMgdcAoXJ59m6DT1vw+5iLS3gNoqYaRowaBKtGVrOF1Jz4yDTgYKLK2kvfJg==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.0.1.tgz", + "integrity": "sha512-z08c1l761iKhDFtfXO04C7kTdPBLi41zwOZl00WS8b5eiaebNpY00HKbztwBq+e3vyqWNwWF3mP9YLUeqIrF+Q==", "dev": true, "requires": { - "dom-serializer": "^1.0.1", - "domelementtype": "^2.2.0", - "domhandler": "^4.2.0" + "dom-serializer": "^2.0.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.1" } }, "duplexer": { @@ -16677,9 +17107,9 @@ "dev": true }, "electron-to-chromium": { - "version": "1.4.18", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.18.tgz", - "integrity": "sha512-i7nKjGGBE1+YUIbfLObA1EZPmN7J1ITEllbhusDk+KIk6V6gUxN9PFe36v+Sd+8Cg0k3cgUv9lQhQZalr8rggw==", + "version": "1.4.152", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.152.tgz", + "integrity": "sha512-jk4Ju5SGZAQQJ1iI4Rgru7dDlvkQPLpNPWH9gIZmwCD4YteA5Bbk1xPcPDUf5jUYs3e1e80RXdi8XgKQZaigeg==", "dev": true }, "emittery": { @@ -16707,9 +17137,9 @@ "dev": true }, "engine.io": { - "version": "6.1.3", - "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.1.3.tgz", - "integrity": "sha512-rqs60YwkvWTLLnfazqgZqLa/aKo+9cueVfEi/dZ8PyGyaf8TLOxj++4QMIgeG3Gn0AhrWiFXvghsoY9L9h25GA==", + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.2.0.tgz", + "integrity": "sha512-4KzwW3F3bk+KlzSOY57fj/Jx6LyRQ1nbcyIadehl+AnXjKT7gDO0ORdRi/84ixvMKTym6ZKuxvbzN62HDDU1Lg==", "dev": true, "requires": { "@types/cookie": "^0.4.1", @@ -16724,6 +17154,12 @@ "ws": "~8.2.3" }, "dependencies": { + "cookie": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", + "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==", + "dev": true + }, "ws": { "version": "8.2.3", "resolved": "https://registry.npmjs.org/ws/-/ws-8.2.3.tgz", @@ -16734,18 +17170,15 @@ } }, "engine.io-parser": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.0.3.tgz", - "integrity": "sha512-BtQxwF27XUNnSafQLvDi0dQ8s3i6VgzSoQMJacpIcGNrlUdfHSKbgm3jmjCVvQluGzqwujQMPAoMai3oYSTurg==", - "dev": true, - "requires": { - "@socket.io/base64-arraybuffer": "~1.0.2" - } + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.0.4.tgz", + "integrity": "sha512-+nVFp+5z1E3HcToEnO7ZIj3g+3k9389DvWtvJZz0T6/eOCPIyyxehFcedoYrZQrp0LgQbD9pPXhpMBKMd5QURg==", + "dev": true }, "enhanced-resolve": { - "version": "5.9.2", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.9.2.tgz", - "integrity": "sha512-GIm3fQfwLJ8YZx2smuHpBKkXC1yOk+OBEmKckVyL0i/ea8mqDEykK3ld5dgH1QYPNyT/lIllxV2LULnxCHaHkA==", + "version": "5.9.3", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.9.3.tgz", + "integrity": "sha512-Bq9VSor+kjvW3f9/MiiR4eE3XYgOl7/rS8lnSxbRbF3kS0B2r+Y9w5krBWxZgDxASVZbdYrn5wT4j/Wb0J9qow==", "dev": true, "requires": { "graceful-fs": "^4.2.4", @@ -16759,9 +17192,9 @@ "dev": true }, "entities": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.1.0.tgz", - "integrity": "sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.3.0.tgz", + "integrity": "sha512-/iP1rZrSEJ0DTlPiX+jbzlA3eVkY/e8L8SozroF395fIqE3TYF/Nz7YOMAawta+vLmyJ/hkGNNPcSbMADCCXbg==", "dev": true }, "envinfo": { @@ -16780,31 +17213,34 @@ } }, "es-abstract": { - "version": "1.19.1", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.19.1.tgz", - "integrity": "sha512-2vJ6tjA/UfqLm2MPs7jxVybLoB8i1t1Jd9R3kISld20sIxPcTbLuggQOUxeWeAvIUkduv/CfMjuh4WmiXr2v9w==", + "version": "1.20.1", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.20.1.tgz", + "integrity": "sha512-WEm2oBhfoI2sImeM4OF2zE2V3BYdSF+KnSi9Sidz51fQHd7+JuF8Xgcj9/0o+OWeIeIS/MiuNnlruQrJf16GQA==", "dev": true, "requires": { "call-bind": "^1.0.2", "es-to-primitive": "^1.2.1", "function-bind": "^1.1.1", + "function.prototype.name": "^1.1.5", "get-intrinsic": "^1.1.1", "get-symbol-description": "^1.0.0", "has": "^1.0.3", - "has-symbols": "^1.0.2", + "has-property-descriptors": "^1.0.0", + "has-symbols": "^1.0.3", "internal-slot": "^1.0.3", "is-callable": "^1.2.4", - "is-negative-zero": "^2.0.1", + "is-negative-zero": "^2.0.2", "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.1", + "is-shared-array-buffer": "^1.0.2", "is-string": "^1.0.7", - "is-weakref": "^1.0.1", - "object-inspect": "^1.11.0", + "is-weakref": "^1.0.2", + "object-inspect": "^1.12.0", "object-keys": "^1.1.1", "object.assign": "^4.1.2", - "string.prototype.trimend": "^1.0.4", - "string.prototype.trimstart": "^1.0.4", - "unbox-primitive": "^1.0.1" + "regexp.prototype.flags": "^1.4.3", + "string.prototype.trimend": "^1.0.5", + "string.prototype.trimstart": "^1.0.5", + "unbox-primitive": "^1.0.2" } }, "es-module-lexer": { @@ -16813,6 +17249,15 @@ "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==", "dev": true }, + "es-shim-unscopables": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz", + "integrity": "sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, "es-to-primitive": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", @@ -16825,170 +17270,170 @@ } }, "esbuild": { - "version": "0.14.27", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.27.tgz", - "integrity": "sha512-MZQt5SywZS3hA9fXnMhR22dv0oPGh6QtjJRIYbgL1AeqAoQZE+Qn5ppGYQAoHv/vq827flj4tIJ79Mrdiwk46Q==", - "dev": true, - "requires": { - "esbuild-android-64": "0.14.27", - "esbuild-android-arm64": "0.14.27", - "esbuild-darwin-64": "0.14.27", - "esbuild-darwin-arm64": "0.14.27", - "esbuild-freebsd-64": "0.14.27", - "esbuild-freebsd-arm64": "0.14.27", - "esbuild-linux-32": "0.14.27", - "esbuild-linux-64": "0.14.27", - "esbuild-linux-arm": "0.14.27", - "esbuild-linux-arm64": "0.14.27", - "esbuild-linux-mips64le": "0.14.27", - "esbuild-linux-ppc64le": "0.14.27", - "esbuild-linux-riscv64": "0.14.27", - "esbuild-linux-s390x": "0.14.27", - "esbuild-netbsd-64": "0.14.27", - "esbuild-openbsd-64": "0.14.27", - "esbuild-sunos-64": "0.14.27", - "esbuild-windows-32": "0.14.27", - "esbuild-windows-64": "0.14.27", - "esbuild-windows-arm64": "0.14.27" + "version": "0.14.43", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.43.tgz", + "integrity": "sha512-Uf94+kQmy/5jsFwKWiQB4hfo/RkM9Dh7b79p8yqd1tshULdr25G2szLz631NoH3s2ujnKEKVD16RmOxvCNKRFA==", + "dev": true, + "requires": { + "esbuild-android-64": "0.14.43", + "esbuild-android-arm64": "0.14.43", + "esbuild-darwin-64": "0.14.43", + "esbuild-darwin-arm64": "0.14.43", + "esbuild-freebsd-64": "0.14.43", + "esbuild-freebsd-arm64": "0.14.43", + "esbuild-linux-32": "0.14.43", + "esbuild-linux-64": "0.14.43", + "esbuild-linux-arm": "0.14.43", + "esbuild-linux-arm64": "0.14.43", + "esbuild-linux-mips64le": "0.14.43", + "esbuild-linux-ppc64le": "0.14.43", + "esbuild-linux-riscv64": "0.14.43", + "esbuild-linux-s390x": "0.14.43", + "esbuild-netbsd-64": "0.14.43", + "esbuild-openbsd-64": "0.14.43", + "esbuild-sunos-64": "0.14.43", + "esbuild-windows-32": "0.14.43", + "esbuild-windows-64": "0.14.43", + "esbuild-windows-arm64": "0.14.43" } }, "esbuild-android-64": { - "version": "0.14.27", - "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.14.27.tgz", - "integrity": "sha512-LuEd4uPuj/16Y8j6kqy3Z2E9vNY9logfq8Tq+oTE2PZVuNs3M1kj5Qd4O95ee66yDGb3isaOCV7sOLDwtMfGaQ==", + "version": "0.14.43", + "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.14.43.tgz", + "integrity": "sha512-kqFXAS72K6cNrB6RiM7YJ5lNvmWRDSlpi7ZuRZ1hu1S3w0zlwcoCxWAyM23LQUyZSs1PbjHgdbbfYAN8IGh6xg==", "dev": true, "optional": true }, "esbuild-android-arm64": { - "version": "0.14.27", - "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.27.tgz", - "integrity": "sha512-E8Ktwwa6vX8q7QeJmg8yepBYXaee50OdQS3BFtEHKrzbV45H4foMOeEE7uqdjGQZFBap5VAqo7pvjlyA92wznQ==", + "version": "0.14.43", + "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.43.tgz", + "integrity": "sha512-bKS2BBFh+7XZY9rpjiHGRNA7LvWYbZWP87pLehggTG7tTaCDvj8qQGOU/OZSjCSKDYbgY7Q+oDw8RlYQ2Jt2BA==", "dev": true, "optional": true }, "esbuild-darwin-64": { - "version": "0.14.27", - "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.27.tgz", - "integrity": "sha512-czw/kXl/1ZdenPWfw9jDc5iuIYxqUxgQ/Q+hRd4/3udyGGVI31r29LCViN2bAJgGvQkqyLGVcG03PJPEXQ5i2g==", + "version": "0.14.43", + "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.43.tgz", + "integrity": "sha512-/3PSilx011ttoieRGkSZ0XV8zjBf2C9enV4ScMMbCT4dpx0mFhMOpFnCHkOK0pWGB8LklykFyHrWk2z6DENVUg==", "dev": true, "optional": true }, "esbuild-darwin-arm64": { - "version": "0.14.27", - "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.27.tgz", - "integrity": "sha512-BEsv2U2U4o672oV8+xpXNxN9bgqRCtddQC6WBh4YhXKDcSZcdNh7+6nS+DM2vu7qWIWNA4JbRG24LUUYXysimQ==", + "version": "0.14.43", + "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.43.tgz", + "integrity": "sha512-1HyFUKs8DMCBOvw1Qxpr5Vv/ThNcVIFb5xgXWK3pyT40WPvgYIiRTwJCvNs4l8i5qWF8/CK5bQxJVDjQvtv0Yw==", "dev": true, "optional": true }, "esbuild-freebsd-64": { - "version": "0.14.27", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.27.tgz", - "integrity": "sha512-7FeiFPGBo+ga+kOkDxtPmdPZdayrSzsV9pmfHxcyLKxu+3oTcajeZlOO1y9HW+t5aFZPiv7czOHM4KNd0tNwCA==", + "version": "0.14.43", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.43.tgz", + "integrity": "sha512-FNWc05TPHYgaXjbPZO5/rJKSBslfG6BeMSs8GhwnqAKP56eEhvmzwnIz1QcC9cRVyO+IKqWNfmHFkCa1WJTULA==", "dev": true, "optional": true }, "esbuild-freebsd-arm64": { - "version": "0.14.27", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.27.tgz", - "integrity": "sha512-8CK3++foRZJluOWXpllG5zwAVlxtv36NpHfsbWS7TYlD8S+QruXltKlXToc/5ZNzBK++l6rvRKELu/puCLc7jA==", + "version": "0.14.43", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.43.tgz", + "integrity": "sha512-amrYopclz3VohqisOPR6hA3GOWA3LZC1WDLnp21RhNmoERmJ/vLnOpnrG2P/Zao+/erKTCUqmrCIPVtj58DRoA==", "dev": true, "optional": true }, "esbuild-linux-32": { - "version": "0.14.27", - "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.27.tgz", - "integrity": "sha512-qhNYIcT+EsYSBClZ5QhLzFzV5iVsP1YsITqblSaztr3+ZJUI+GoK8aXHyzKd7/CKKuK93cxEMJPpfi1dfsOfdw==", + "version": "0.14.43", + "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.43.tgz", + "integrity": "sha512-KoxoEra+9O3AKVvgDFvDkiuddCds6q71owSQEYwjtqRV7RwbPzKxJa6+uyzUulHcyGVq0g15K0oKG5CFBcvYDw==", "dev": true, "optional": true }, "esbuild-linux-64": { - "version": "0.14.27", - "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.27.tgz", - "integrity": "sha512-ESjck9+EsHoTaKWlFKJpPZRN26uiav5gkI16RuI8WBxUdLrrAlYuYSndxxKgEn1csd968BX/8yQZATYf/9+/qg==", + "version": "0.14.43", + "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.43.tgz", + "integrity": "sha512-EwINwGMyiJMgBby5/SbMqKcUhS5AYAZ2CpEBzSowsJPNBJEdhkCTtEjk757TN/wxgbu3QklqDM6KghY660QCUw==", "dev": true, "optional": true }, "esbuild-linux-arm": { - "version": "0.14.27", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.27.tgz", - "integrity": "sha512-JnnmgUBdqLQO9hoNZQqNHFWlNpSX82vzB3rYuCJMhtkuaWQEmQz6Lec1UIxJdC38ifEghNTBsF9bbe8dFilnCw==", + "version": "0.14.43", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.43.tgz", + "integrity": "sha512-e6YzQUoDxxtyamuF12eVzzRC7bbEFSZohJ6igQB9tBqnNmIQY3fI6Cns3z2wxtbZ3f2o6idkD2fQnlvs2902Dg==", "dev": true, "optional": true }, "esbuild-linux-arm64": { - "version": "0.14.27", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.27.tgz", - "integrity": "sha512-no6Mi17eV2tHlJnqBHRLekpZ2/VYx+NfGxKcBE/2xOMYwctsanCaXxw4zapvNrGE9X38vefVXLz6YCF8b1EHiQ==", + "version": "0.14.43", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.43.tgz", + "integrity": "sha512-UlSpjMWllAc70zYbHxWuDS3FJytyuR/gHJYBr8BICcTNb/TSOYVBg6U7b3jZ3mILTrgzwJUHwhEwK18FZDouUQ==", "dev": true, "optional": true }, "esbuild-linux-mips64le": { - "version": "0.14.27", - "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.27.tgz", - "integrity": "sha512-NolWP2uOvIJpbwpsDbwfeExZOY1bZNlWE/kVfkzLMsSgqeVcl5YMen/cedRe9mKnpfLli+i0uSp7N+fkKNU27A==", + "version": "0.14.43", + "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.43.tgz", + "integrity": "sha512-f+v8cInPEL1/SDP//CfSYzcDNgE4CY3xgDV81DWm3KAPWzhvxARrKxB1Pstf5mB56yAslJDxu7ryBUPX207EZA==", "dev": true, "optional": true }, "esbuild-linux-ppc64le": { - "version": "0.14.27", - "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.27.tgz", - "integrity": "sha512-/7dTjDvXMdRKmsSxKXeWyonuGgblnYDn0MI1xDC7J1VQXny8k1qgNp6VmrlsawwnsymSUUiThhkJsI+rx0taNA==", + "version": "0.14.43", + "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.43.tgz", + "integrity": "sha512-5wZYMDGAL/K2pqkdIsW+I4IR41kyfHr/QshJcNpUfK3RjB3VQcPWOaZmc+74rm4ZjVirYrtz+jWw0SgxtxRanA==", "dev": true, "optional": true }, "esbuild-linux-riscv64": { - "version": "0.14.27", - "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.27.tgz", - "integrity": "sha512-D+aFiUzOJG13RhrSmZgrcFaF4UUHpqj7XSKrIiCXIj1dkIkFqdrmqMSOtSs78dOtObWiOrFCDDzB24UyeEiNGg==", + "version": "0.14.43", + "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.43.tgz", + "integrity": "sha512-lYcAOUxp85hC7lSjycJUVSmj4/9oEfSyXjb/ua9bNl8afonaduuqtw7hvKMoKuYnVwOCDw4RSfKpcnIRDWq+Bw==", "dev": true, "optional": true }, "esbuild-linux-s390x": { - "version": "0.14.27", - "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.27.tgz", - "integrity": "sha512-CD/D4tj0U4UQjELkdNlZhQ8nDHU5rBn6NGp47Hiz0Y7/akAY5i0oGadhEIg0WCY/HYVXFb3CsSPPwaKcTOW3bg==", + "version": "0.14.43", + "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.43.tgz", + "integrity": "sha512-27e43ZhHvhFE4nM7HqtUbMRu37I/4eNSUbb8FGZWszV+uLzMIsHDwLoBiJmw7G9N+hrehNPeQ4F5Ujad0DrUKQ==", "dev": true, "optional": true }, "esbuild-netbsd-64": { - "version": "0.14.27", - "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.27.tgz", - "integrity": "sha512-h3mAld69SrO1VoaMpYl3a5FNdGRE/Nqc+E8VtHOag4tyBwhCQXxtvDDOAKOUQexBGca0IuR6UayQ4ntSX5ij1Q==", + "version": "0.14.43", + "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.43.tgz", + "integrity": "sha512-2mH4QF6hHBn5zzAfxEI/2eBC0mspVsZ6UVo821LpAJKMvLJPBk3XJO5xwg7paDqSqpl7p6IRrAenW999AEfJhQ==", "dev": true, "optional": true }, "esbuild-openbsd-64": { - "version": "0.14.27", - "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.27.tgz", - "integrity": "sha512-xwSje6qIZaDHXWoPpIgvL+7fC6WeubHHv18tusLYMwL+Z6bEa4Pbfs5IWDtQdHkArtfxEkIZz77944z8MgDxGw==", + "version": "0.14.43", + "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.43.tgz", + "integrity": "sha512-ZhQpiZjvqCqO8jKdGp9+8k9E/EHSA+zIWOg+grwZasI9RoblqJ1QiZqqi7jfd6ZrrG1UFBNGe4m0NFxCFbMVbg==", "dev": true, "optional": true }, "esbuild-sunos-64": { - "version": "0.14.27", - "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.27.tgz", - "integrity": "sha512-/nBVpWIDjYiyMhuqIqbXXsxBc58cBVH9uztAOIfWShStxq9BNBik92oPQPJ57nzWXRNKQUEFWr4Q98utDWz7jg==", + "version": "0.14.43", + "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.43.tgz", + "integrity": "sha512-DgxSi9DaHReL9gYuul2rrQCAapgnCJkh3LSHPKsY26zytYppG0HgkgVF80zjIlvEsUbGBP/GHQzBtrezj/Zq1Q==", "dev": true, "optional": true }, "esbuild-windows-32": { - "version": "0.14.27", - "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.27.tgz", - "integrity": "sha512-Q9/zEjhZJ4trtWhFWIZvS/7RUzzi8rvkoaS9oiizkHTTKd8UxFwn/Mm2OywsAfYymgUYm8+y2b+BKTNEFxUekw==", + "version": "0.14.43", + "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.43.tgz", + "integrity": "sha512-Ih3+2O5oExiqm0mY6YYE5dR0o8+AspccQ3vIAtRodwFvhuyGLjb0Hbmzun/F3Lw19nuhPMu3sW2fqIJ5xBxByw==", "dev": true, "optional": true }, "esbuild-windows-64": { - "version": "0.14.27", - "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.27.tgz", - "integrity": "sha512-b3y3vTSl5aEhWHK66ngtiS/c6byLf6y/ZBvODH1YkBM+MGtVL6jN38FdHUsZasCz9gFwYs/lJMVY9u7GL6wfYg==", + "version": "0.14.43", + "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.43.tgz", + "integrity": "sha512-8NsuNfI8xwFuJbrCuI+aBqNTYkrWErejFO5aYM+yHqyHuL8mmepLS9EPzAzk8rvfaJrhN0+RvKWAcymViHOKEw==", "dev": true, "optional": true }, "esbuild-windows-arm64": { - "version": "0.14.27", - "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.27.tgz", - "integrity": "sha512-I/reTxr6TFMcR5qbIkwRGvldMIaiBu2+MP0LlD7sOlNXrfqIl9uNjsuxFPGEG4IRomjfQ5q8WT+xlF/ySVkqKg==", + "version": "0.14.43", + "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.43.tgz", + "integrity": "sha512-7ZlD7bo++kVRblJEoG+cepljkfP8bfuTPz5fIXzptwnPaFwGS6ahvfoYzY7WCf5v/1nX2X02HDraVItTgbHnKw==", "dev": true, "optional": true }, @@ -17032,7 +17477,7 @@ "levn": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", "dev": true, "requires": { "prelude-ls": "~1.1.2", @@ -17056,20 +17501,13 @@ "prelude-ls": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", + "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==", "dev": true }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "optional": true - }, "type-check": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==", "dev": true, "requires": { "prelude-ls": "~1.1.2" @@ -17078,12 +17516,12 @@ } }, "eslint": { - "version": "8.11.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.11.0.tgz", - "integrity": "sha512-/KRpd9mIRg2raGxHRGwW9ZywYNAClZrHjdueHcrVDuO3a6bj83eoTirCCk0M0yPwOjWYKHwRVRid+xK4F/GHgA==", + "version": "8.17.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.17.0.tgz", + "integrity": "sha512-gq0m0BTJfci60Fz4nczYxNAlED+sMcihltndR8t9t1evnU/azx53x3t2UHXC/uRjcbvRw/XctpaNygSTcQD+Iw==", "dev": true, "requires": { - "@eslint/eslintrc": "^1.2.1", + "@eslint/eslintrc": "^1.3.0", "@humanwhocodes/config-array": "^0.9.2", "ajv": "^6.10.0", "chalk": "^4.0.0", @@ -17094,14 +17532,14 @@ "eslint-scope": "^7.1.1", "eslint-utils": "^3.0.0", "eslint-visitor-keys": "^3.3.0", - "espree": "^9.3.1", + "espree": "^9.3.2", "esquery": "^1.4.0", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", "file-entry-cache": "^6.0.1", "functional-red-black-tree": "^1.0.1", "glob-parent": "^6.0.1", - "globals": "^13.6.0", + "globals": "^13.15.0", "ignore": "^5.2.0", "import-fresh": "^3.0.0", "imurmurhash": "^0.1.4", @@ -17110,7 +17548,7 @@ "json-stable-stringify-without-jsonify": "^1.0.1", "levn": "^0.4.1", "lodash.merge": "^4.6.2", - "minimatch": "^3.0.4", + "minimatch": "^3.1.2", "natural-compare": "^1.4.0", "optionator": "^0.9.1", "regexpp": "^3.2.0", @@ -17192,9 +17630,9 @@ } }, "globals": { - "version": "13.7.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.7.0.tgz", - "integrity": "sha512-Aipsz6ZKRxa/xQkZhNg0qIWXT6x6rD46f6x/PCnBomlttdIyAPak4YD9jTmKpZ72uROSMU87qJtcgpgHaVchiA==", + "version": "13.15.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.15.0.tgz", + "integrity": "sha512-bpzcOlgDhMG070Av0Vy5Owklpv1I6+j96GhUI7Rh7IzDCKLzboflLrrfqMu8NquDbiR4EOQk7XzJwqVJxicxog==", "dev": true, "requires": { "type-fest": "^0.20.2" @@ -17215,6 +17653,15 @@ "argparse": "^2.0.1" } }, + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -17254,9 +17701,9 @@ } }, "eslint-module-utils": { - "version": "2.7.2", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.7.2.tgz", - "integrity": "sha512-zquepFnWCY2ISMFwD/DqzaM++H+7PDzOpUvotJWm/y1BAFt5R4oeULgdrTejKqLkz7MA/tgstsUMNYc7wNdTrg==", + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.7.3.tgz", + "integrity": "sha512-088JEC7O3lDZM9xGe0RerkOMd0EjFl+Yvd1jPWIkMT5u3H9+HC34mWWPnqPrN13gieT9pBOO+Qt07Nb/6TresQ==", "dev": true, "requires": { "debug": "^3.2.7", @@ -17275,7 +17722,7 @@ "find-up": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "integrity": "sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==", "dev": true, "requires": { "locate-path": "^2.0.0" @@ -17284,7 +17731,7 @@ "locate-path": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "integrity": "sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==", "dev": true, "requires": { "p-locate": "^2.0.0", @@ -17303,7 +17750,7 @@ "p-locate": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "integrity": "sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==", "dev": true, "requires": { "p-limit": "^1.1.0" @@ -17312,21 +17759,21 @@ "p-try": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "integrity": "sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==", "dev": true }, "path-exists": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", "dev": true } } }, "eslint-plugin-import": { - "version": "2.25.4", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.25.4.tgz", - "integrity": "sha512-/KJBASVFxpu0xg1kIBn9AUa8hQVnszpwgE7Ld0lKAlx7Ie87yzEzCgSkekt+le/YVhiaosO4Y14GDAOc41nfxA==", + "version": "2.26.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.26.0.tgz", + "integrity": "sha512-hYfi3FXaM8WPLf4S1cikh/r4IxnO6zrhZbEGz2b660EJRbuxgpDS5gkCuYgGWg2xxh2rBuIr4Pvhve/7c31koA==", "dev": true, "requires": { "array-includes": "^3.1.4", @@ -17334,14 +17781,14 @@ "debug": "^2.6.9", "doctrine": "^2.1.0", "eslint-import-resolver-node": "^0.3.6", - "eslint-module-utils": "^2.7.2", + "eslint-module-utils": "^2.7.3", "has": "^1.0.3", - "is-core-module": "^2.8.0", + "is-core-module": "^2.8.1", "is-glob": "^4.0.3", - "minimatch": "^3.0.4", + "minimatch": "^3.1.2", "object.values": "^1.1.5", - "resolve": "^1.20.0", - "tsconfig-paths": "^3.12.0" + "resolve": "^1.22.0", + "tsconfig-paths": "^3.14.1" }, "dependencies": { "debug": { @@ -17362,6 +17809,15 @@ "esutils": "^2.0.2" } }, + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", @@ -17371,18 +17827,17 @@ } }, "eslint-plugin-jsdoc": { - "version": "38.0.4", - "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-38.0.4.tgz", - "integrity": "sha512-/McOYm7BEmiwNd5niCea2iHuFRtTrqeZN6IKJPJoC2PO8hfQn3FFRgYoGs17hoo6PaIWQLxo6hvCJsu+/KSRfg==", + "version": "39.3.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-39.3.2.tgz", + "integrity": "sha512-RSGN94RYzIJS/WfW3l6cXzRLfJWxvJgNQZ4w0WCaxJWDJMigtwTsILEAfKqmmPkT2rwMH/s3C7G5ChDE6cwPJg==", "dev": true, "requires": { - "@es-joy/jsdoccomment": "~0.21.2", - "comment-parser": "1.3.0", - "debug": "^4.3.3", + "@es-joy/jsdoccomment": "~0.31.0", + "comment-parser": "1.3.1", + "debug": "^4.3.4", "escape-string-regexp": "^4.0.0", "esquery": "^1.4.0", - "regextras": "^0.8.0", - "semver": "^7.3.5", + "semver": "^7.3.7", "spdx-expression-parse": "^3.0.1" }, "dependencies": { @@ -17395,25 +17850,25 @@ } }, "eslint-plugin-react": { - "version": "7.29.4", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.29.4.tgz", - "integrity": "sha512-CVCXajliVh509PcZYRFyu/BoUEz452+jtQJq2b3Bae4v3xBUWPLCmtmBM+ZinG4MzwmxJgJ2M5rMqhqLVn7MtQ==", + "version": "7.30.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.30.0.tgz", + "integrity": "sha512-RgwH7hjW48BleKsYyHK5vUAvxtE9SMPDKmcPRQgtRCYaZA0XQPt5FSkrU3nhz5ifzMZcA8opwmRJ2cmOO8tr5A==", "dev": true, "requires": { - "array-includes": "^3.1.4", - "array.prototype.flatmap": "^1.2.5", + "array-includes": "^3.1.5", + "array.prototype.flatmap": "^1.3.0", "doctrine": "^2.1.0", "estraverse": "^5.3.0", "jsx-ast-utils": "^2.4.1 || ^3.0.0", "minimatch": "^3.1.2", "object.entries": "^1.1.5", "object.fromentries": "^2.0.5", - "object.hasown": "^1.1.0", + "object.hasown": "^1.1.1", "object.values": "^1.1.5", "prop-types": "^15.8.1", "resolve": "^2.0.0-next.3", "semver": "^6.3.0", - "string.prototype.matchall": "^4.0.6" + "string.prototype.matchall": "^4.0.7" }, "dependencies": { "doctrine": { @@ -17498,13 +17953,13 @@ "dev": true }, "espree": { - "version": "9.3.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.3.1.tgz", - "integrity": "sha512-bvdyLmJMfwkV3NCRl5ZhJf22zBFo1y8bYh3VYb+bfzqNB4Je68P2sSuXyuFquzWLebHpNd2/d5uv7yoP9ISnGQ==", + "version": "9.3.2", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.3.2.tgz", + "integrity": "sha512-D211tC7ZwouTIuY5x9XnS0E9sWNChB7IYKX/Xp5eQj3nFXhqmiUDB9q27y76oFl8jTg3pXcQx/bpxMfs3CIZbA==", "dev": true, "requires": { - "acorn": "^8.7.0", - "acorn-jsx": "^5.3.1", + "acorn": "^8.7.1", + "acorn-jsx": "^5.3.2", "eslint-visitor-keys": "^3.3.0" } }, @@ -17563,7 +18018,7 @@ "etag": { "version": "1.8.1", "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", "dev": true }, "eventemitter3": { @@ -17579,9 +18034,9 @@ "dev": true }, "execa": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.0.1.tgz", - "integrity": "sha512-4hFTjFbFzQa3aCLobpbPJR/U+VoL1wdV5ozOWjeet0AWDeYr9UFGM1eUFWHX+VtOWFq4p0xXUXfW1YxUaP4fpw==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", "dev": true, "requires": { "cross-spawn": "^7.0.3", @@ -17598,7 +18053,7 @@ "exit": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", - "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=", + "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", "dev": true }, "expect": { @@ -17614,38 +18069,39 @@ } }, "express": { - "version": "4.17.3", - "resolved": "https://registry.npmjs.org/express/-/express-4.17.3.tgz", - "integrity": "sha512-yuSQpz5I+Ch7gFrPCk4/c+dIBKlQUxtgwqzph132bsT6qhuzss6I8cLJQz7B3rFblzd6wtcI0ZbGltH/C4LjUg==", + "version": "4.18.1", + "resolved": "https://registry.npmjs.org/express/-/express-4.18.1.tgz", + "integrity": "sha512-zZBcOX9TfehHQhtupq57OF8lFZ3UZi08Y97dwFCkD8p9d/d2Y3M+ykKcwaMDEL+4qyUolgBDX6AblpR3fL212Q==", "dev": true, "requires": { "accepts": "~1.3.8", "array-flatten": "1.1.1", - "body-parser": "1.19.2", + "body-parser": "1.20.0", "content-disposition": "0.5.4", "content-type": "~1.0.4", - "cookie": "0.4.2", + "cookie": "0.5.0", "cookie-signature": "1.0.6", "debug": "2.6.9", - "depd": "~1.1.2", + "depd": "2.0.0", "encodeurl": "~1.0.2", "escape-html": "~1.0.3", "etag": "~1.8.1", - "finalhandler": "~1.1.2", + "finalhandler": "1.2.0", "fresh": "0.5.2", + "http-errors": "2.0.0", "merge-descriptors": "1.0.1", "methods": "~1.1.2", - "on-finished": "~2.3.0", + "on-finished": "2.4.1", "parseurl": "~1.3.3", "path-to-regexp": "0.1.7", "proxy-addr": "~2.0.7", - "qs": "6.9.7", + "qs": "6.10.3", "range-parser": "~1.2.1", "safe-buffer": "5.2.1", - "send": "0.17.2", - "serve-static": "1.14.2", + "send": "0.18.0", + "serve-static": "1.15.0", "setprototypeof": "1.2.0", - "statuses": "~1.5.0", + "statuses": "2.0.1", "type-is": "~1.6.18", "utils-merge": "1.0.1", "vary": "~1.1.2" @@ -17660,17 +18116,47 @@ "ms": "2.0.0" } }, + "finalhandler": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", + "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", + "dev": true, + "requires": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "statuses": "2.0.1", + "unpipe": "~1.0.0" + } + }, "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", "dev": true }, + "on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "dev": true, + "requires": { + "ee-first": "1.1.1" + } + }, "safe-buffer": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", "dev": true + }, + "statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "dev": true } } }, @@ -17854,7 +18340,7 @@ "fresh": { "version": "0.5.2", "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", "dev": true }, "fs-extra": { @@ -17895,12 +18381,30 @@ "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", "dev": true }, + "function.prototype.name": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz", + "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.0", + "functions-have-names": "^1.2.2" + } + }, "functional-red-black-tree": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", "dev": true }, + "functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "dev": true + }, "gensync": { "version": "1.0.0-beta.2", "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", @@ -18007,12 +18511,6 @@ "integrity": "sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ==", "dev": true }, - "growl": { - "version": "1.10.5", - "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz", - "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==", - "dev": true - }, "gzip-size": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-6.0.0.tgz", @@ -18032,9 +18530,9 @@ } }, "has-bigints": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.1.tgz", - "integrity": "sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", "dev": true }, "has-flag": { @@ -18043,10 +18541,19 @@ "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", "dev": true }, + "has-property-descriptors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", + "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "dev": true, + "requires": { + "get-intrinsic": "^1.1.1" + } + }, "has-symbols": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", - "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", "dev": true }, "has-tostringtag": { @@ -18065,9 +18572,9 @@ "dev": true }, "highlight.js": { - "version": "11.5.0", - "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-11.5.0.tgz", - "integrity": "sha512-SM6WDj5/C+VfIY8pZ6yW6Xa0Fm1tniYVYWYW1Q/DcMnISZFrC3aQAZZZFAAZtybKNrGId3p/DNbFTtcTXXgYBw==", + "version": "11.5.1", + "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-11.5.1.tgz", + "integrity": "sha512-LKzHqnxr4CrD2YsNoIf/o5nJ09j4yi/GcH5BnYz9UnVpZdS4ucMgvP61TDty5xJcFGRjnH4DpujkS9bHT3hq0Q==", "dev": true }, "html-encoding-sniffer": { @@ -18080,9 +18587,9 @@ } }, "html-entities": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.3.2.tgz", - "integrity": "sha512-c3Ab/url5ksaT0WyleslpBEthOzWhrjQbg75y7XUsfSzi3Dgzt0l8w5e7DylRn15MTlMMD58dTfzddNS2kcAjQ==", + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.3.3.tgz", + "integrity": "sha512-DV5Ln36z34NNTDgnz0EWGBLZENelNAtkiFA4kyNOG2tDI6Mz1uSWiq1wAKdyjnJwyDiDO7Fa2SO1CTxPXL8VxA==", "dev": true }, "html-escaper": { @@ -18092,28 +18599,36 @@ "dev": true }, "htmlparser2": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz", - "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-8.0.1.tgz", + "integrity": "sha512-4lVbmc1diZC7GUJQtRQ5yBAeUCL1exyMwmForWkRLnwyzWBFxN633SALPMGYaWZvKe9j1pRZJpauvmxENSp/EA==", "dev": true, "requires": { - "domelementtype": "^2.0.1", - "domhandler": "^4.0.0", - "domutils": "^2.5.2", - "entities": "^2.0.0" + "domelementtype": "^2.3.0", + "domhandler": "^5.0.2", + "domutils": "^3.0.1", + "entities": "^4.3.0" } }, "http-errors": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz", - "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", "dev": true, "requires": { - "depd": "~1.1.2", + "depd": "2.0.0", "inherits": "2.0.4", "setprototypeof": "1.2.0", - "statuses": ">= 1.5.0 < 2", + "statuses": "2.0.1", "toidentifier": "1.0.1" + }, + "dependencies": { + "statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "dev": true + } } }, "http-proxy": { @@ -18139,9 +18654,9 @@ } }, "https-proxy-agent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", - "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", "dev": true, "requires": { "agent-base": "6", @@ -18249,7 +18764,7 @@ "is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", "dev": true }, "is-bigint": { @@ -18287,9 +18802,9 @@ "dev": true }, "is-core-module": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.0.tgz", - "integrity": "sha512-vd15qHsaqrRL7dtH6QNuy0ndJmRDrS9HAM1CAiSifNUFv4x1a0CCVsj18hJ1mShxIG6T2i1sO78MkP56r0nYRw==", + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.9.0.tgz", + "integrity": "sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==", "dev": true, "requires": { "has": "^1.0.3" @@ -18350,9 +18865,9 @@ "dev": true }, "is-number-object": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.6.tgz", - "integrity": "sha512-bEVOqiRcvo3zO1+G2lVMy+gkkEm9Yh7cDMRusKKu5ZJKPUYSJwICTKZrNKHA2EbSP0Tu0+6B/emsYNHZyn6K8g==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", + "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", "dev": true, "requires": { "has-tostringtag": "^1.0.0" @@ -18390,15 +18905,18 @@ } }, "is-shared-array-buffer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.1.tgz", - "integrity": "sha512-IU0NmyknYZN0rChcKhRO1X8LYz5Isj/Fsqh8NJOSf+N/hCOTwy29F32Ik7a+QszE63IdvmwdTPDd6cZ5pg4cwA==", - "dev": true + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", + "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2" + } }, "is-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz", - "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", "dev": true }, "is-string": { @@ -18422,7 +18940,7 @@ "is-typedarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", "dev": true }, "is-unicode-supported": { @@ -18473,6 +18991,33 @@ "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", "dev": true }, + "istanbul-lib-coverage": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", + "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", + "dev": true + }, + "istanbul-lib-instrument": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.0.tgz", + "integrity": "sha512-6Lthe1hqXHBNsqvgDzGO6l03XNeu3CrG4RqQ1KM9+l5+jNGpEJfIELx1NS3SEHmJQA8np/u+E4EPRKRiu6m19A==", + "dev": true, + "requires": { + "@babel/core": "^7.12.3", + "@babel/parser": "^7.14.7", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, "istanbul-lib-report": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", @@ -18490,12 +19035,6 @@ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, - "istanbul-lib-coverage": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz", - "integrity": "sha512-UiUIqxMgRDET6eR+o5HbfRYP1l0hqkWOs7vNxC/mggutCMUIhWMm8gAHb8tHlyfD3/l6rlgNA5cKdDzEAf6hEg==", - "dev": true - }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -18513,23 +19052,9 @@ "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", "dev": true, "requires": { - "debug": "^4.1.1", - "istanbul-lib-coverage": "^3.0.0", - "source-map": "^0.6.1" - }, - "dependencies": { - "istanbul-lib-coverage": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", - "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", - "dev": true - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0", + "source-map": "^0.6.1" } }, "istanbul-reports": { @@ -18745,6 +19270,29 @@ "strip-json-comments": "^3.1.1" }, "dependencies": { + "@jest/transform": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-27.5.1.tgz", + "integrity": "sha512-ipON6WtYgl/1329g5AIJVbUuEh0wZVbdpGwC99Jw4LwuoBNS95MVphU6zOeD9pDkon+LLbFL7lOQRapbB8SCHw==", + "dev": true, + "requires": { + "@babel/core": "^7.1.0", + "@jest/types": "^27.5.1", + "babel-plugin-istanbul": "^6.1.1", + "chalk": "^4.0.0", + "convert-source-map": "^1.4.0", + "fast-json-stable-stringify": "^2.0.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^27.5.1", + "jest-regex-util": "^27.5.1", + "jest-util": "^27.5.1", + "micromatch": "^4.0.4", + "pirates": "^4.0.4", + "slash": "^3.0.0", + "source-map": "^0.6.1", + "write-file-atomic": "^3.0.0" + } + }, "ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", @@ -18754,6 +19302,44 @@ "color-convert": "^2.0.1" } }, + "babel-jest": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-27.5.1.tgz", + "integrity": "sha512-cdQ5dXjGRd0IBRATiQ4mZGlGlRE8kJpjPOixdNRdT+m3UcNqmYWN6rK6nvtXYfY3D76cb8s/O1Ss8ea24PIwcg==", + "dev": true, + "requires": { + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/babel__core": "^7.1.14", + "babel-plugin-istanbul": "^6.1.1", + "babel-preset-jest": "^27.5.1", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "slash": "^3.0.0" + } + }, + "babel-plugin-jest-hoist": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-27.5.1.tgz", + "integrity": "sha512-50wCwD5EMNW4aRpOwtqzyZHIewTYNxLA4nhB+09d8BIssfNfzBRhkBIHiaPv1Si226TQSvp8gxAJm2iY2qs2hQ==", + "dev": true, + "requires": { + "@babel/template": "^7.3.3", + "@babel/types": "^7.3.3", + "@types/babel__core": "^7.0.0", + "@types/babel__traverse": "^7.0.6" + } + }, + "babel-preset-jest": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-27.5.1.tgz", + "integrity": "sha512-Nptf2FzlPCWYuJg41HBqXVT8ym6bXOevuCTbhxlUpjwtysGaIWFvDEjp4y+G7fl13FgOdjs7P/DmErqH7da0Ag==", + "dev": true, + "requires": { + "babel-plugin-jest-hoist": "^27.5.1", + "babel-preset-current-node-syntax": "^1.0.0" + } + }, "chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", @@ -18785,6 +19371,33 @@ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, + "jest-haste-map": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.5.1.tgz", + "integrity": "sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng==", + "dev": true, + "requires": { + "@jest/types": "^27.5.1", + "@types/graceful-fs": "^4.1.2", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "fsevents": "^2.3.2", + "graceful-fs": "^4.2.9", + "jest-regex-util": "^27.5.1", + "jest-serializer": "^27.5.1", + "jest-util": "^27.5.1", + "jest-worker": "^27.5.1", + "micromatch": "^4.0.4", + "walker": "^1.0.7" + } + }, + "jest-regex-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.5.1.tgz", + "integrity": "sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg==", + "dev": true + }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -18793,6 +19406,18 @@ "requires": { "has-flag": "^4.0.0" } + }, + "write-file-atomic": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", + "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", + "dev": true, + "requires": { + "imurmurhash": "^0.1.4", + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" + } } } }, @@ -18967,27 +19592,6 @@ "integrity": "sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==", "dev": true }, - "jest-haste-map": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.5.1.tgz", - "integrity": "sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng==", - "dev": true, - "requires": { - "@jest/types": "^27.5.1", - "@types/graceful-fs": "^4.1.2", - "@types/node": "*", - "anymatch": "^3.0.3", - "fb-watchman": "^2.0.0", - "fsevents": "^2.3.2", - "graceful-fs": "^4.2.9", - "jest-regex-util": "^27.5.1", - "jest-serializer": "^27.5.1", - "jest-util": "^27.5.1", - "jest-worker": "^27.5.1", - "micromatch": "^4.0.4", - "walker": "^1.0.7" - } - }, "jest-jasmine2": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-27.5.1.tgz", @@ -19222,12 +19826,6 @@ "dev": true, "requires": {} }, - "jest-regex-util": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.5.1.tgz", - "integrity": "sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg==", - "dev": true - }, "jest-resolve": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-27.5.1.tgz", @@ -19286,6 +19884,33 @@ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, + "jest-haste-map": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.5.1.tgz", + "integrity": "sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng==", + "dev": true, + "requires": { + "@jest/types": "^27.5.1", + "@types/graceful-fs": "^4.1.2", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "fsevents": "^2.3.2", + "graceful-fs": "^4.2.9", + "jest-regex-util": "^27.5.1", + "jest-serializer": "^27.5.1", + "jest-util": "^27.5.1", + "jest-worker": "^27.5.1", + "micromatch": "^4.0.4", + "walker": "^1.0.7" + } + }, + "jest-regex-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.5.1.tgz", + "integrity": "sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg==", + "dev": true + }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -19306,6 +19931,14 @@ "@jest/types": "^27.5.1", "jest-regex-util": "^27.5.1", "jest-snapshot": "^27.5.1" + }, + "dependencies": { + "jest-regex-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.5.1.tgz", + "integrity": "sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg==", + "dev": true + } } }, "jest-runner": { @@ -19337,6 +19970,29 @@ "throat": "^6.0.1" }, "dependencies": { + "@jest/transform": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-27.5.1.tgz", + "integrity": "sha512-ipON6WtYgl/1329g5AIJVbUuEh0wZVbdpGwC99Jw4LwuoBNS95MVphU6zOeD9pDkon+LLbFL7lOQRapbB8SCHw==", + "dev": true, + "requires": { + "@babel/core": "^7.1.0", + "@jest/types": "^27.5.1", + "babel-plugin-istanbul": "^6.1.1", + "chalk": "^4.0.0", + "convert-source-map": "^1.4.0", + "fast-json-stable-stringify": "^2.0.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^27.5.1", + "jest-regex-util": "^27.5.1", + "jest-util": "^27.5.1", + "micromatch": "^4.0.4", + "pirates": "^4.0.4", + "slash": "^3.0.0", + "source-map": "^0.6.1", + "write-file-atomic": "^3.0.0" + } + }, "ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", @@ -19377,6 +20033,33 @@ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, + "jest-haste-map": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.5.1.tgz", + "integrity": "sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng==", + "dev": true, + "requires": { + "@jest/types": "^27.5.1", + "@types/graceful-fs": "^4.1.2", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "fsevents": "^2.3.2", + "graceful-fs": "^4.2.9", + "jest-regex-util": "^27.5.1", + "jest-serializer": "^27.5.1", + "jest-util": "^27.5.1", + "jest-worker": "^27.5.1", + "micromatch": "^4.0.4", + "walker": "^1.0.7" + } + }, + "jest-regex-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.5.1.tgz", + "integrity": "sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg==", + "dev": true + }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -19385,6 +20068,18 @@ "requires": { "has-flag": "^4.0.0" } + }, + "write-file-atomic": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", + "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", + "dev": true, + "requires": { + "imurmurhash": "^0.1.4", + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" + } } } }, @@ -19418,6 +20113,29 @@ "strip-bom": "^4.0.0" }, "dependencies": { + "@jest/transform": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-27.5.1.tgz", + "integrity": "sha512-ipON6WtYgl/1329g5AIJVbUuEh0wZVbdpGwC99Jw4LwuoBNS95MVphU6zOeD9pDkon+LLbFL7lOQRapbB8SCHw==", + "dev": true, + "requires": { + "@babel/core": "^7.1.0", + "@jest/types": "^27.5.1", + "babel-plugin-istanbul": "^6.1.1", + "chalk": "^4.0.0", + "convert-source-map": "^1.4.0", + "fast-json-stable-stringify": "^2.0.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^27.5.1", + "jest-regex-util": "^27.5.1", + "jest-util": "^27.5.1", + "micromatch": "^4.0.4", + "pirates": "^4.0.4", + "slash": "^3.0.0", + "source-map": "^0.6.1", + "write-file-atomic": "^3.0.0" + } + }, "ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", @@ -19458,10 +20176,31 @@ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, - "strip-bom": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", - "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", + "jest-haste-map": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.5.1.tgz", + "integrity": "sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng==", + "dev": true, + "requires": { + "@jest/types": "^27.5.1", + "@types/graceful-fs": "^4.1.2", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "fsevents": "^2.3.2", + "graceful-fs": "^4.2.9", + "jest-regex-util": "^27.5.1", + "jest-serializer": "^27.5.1", + "jest-util": "^27.5.1", + "jest-worker": "^27.5.1", + "micromatch": "^4.0.4", + "walker": "^1.0.7" + } + }, + "jest-regex-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.5.1.tgz", + "integrity": "sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg==", "dev": true }, "supports-color": { @@ -19472,6 +20211,18 @@ "requires": { "has-flag": "^4.0.0" } + }, + "write-file-atomic": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", + "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", + "dev": true, + "requires": { + "imurmurhash": "^0.1.4", + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" + } } } }, @@ -19515,6 +20266,29 @@ "semver": "^7.3.2" }, "dependencies": { + "@jest/transform": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-27.5.1.tgz", + "integrity": "sha512-ipON6WtYgl/1329g5AIJVbUuEh0wZVbdpGwC99Jw4LwuoBNS95MVphU6zOeD9pDkon+LLbFL7lOQRapbB8SCHw==", + "dev": true, + "requires": { + "@babel/core": "^7.1.0", + "@jest/types": "^27.5.1", + "babel-plugin-istanbul": "^6.1.1", + "chalk": "^4.0.0", + "convert-source-map": "^1.4.0", + "fast-json-stable-stringify": "^2.0.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^27.5.1", + "jest-regex-util": "^27.5.1", + "jest-util": "^27.5.1", + "micromatch": "^4.0.4", + "pirates": "^4.0.4", + "slash": "^3.0.0", + "source-map": "^0.6.1", + "write-file-atomic": "^3.0.0" + } + }, "ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", @@ -19555,6 +20329,33 @@ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, + "jest-haste-map": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.5.1.tgz", + "integrity": "sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng==", + "dev": true, + "requires": { + "@jest/types": "^27.5.1", + "@types/graceful-fs": "^4.1.2", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "fsevents": "^2.3.2", + "graceful-fs": "^4.2.9", + "jest-regex-util": "^27.5.1", + "jest-serializer": "^27.5.1", + "jest-util": "^27.5.1", + "jest-worker": "^27.5.1", + "micromatch": "^4.0.4", + "walker": "^1.0.7" + } + }, + "jest-regex-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.5.1.tgz", + "integrity": "sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg==", + "dev": true + }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -19563,6 +20364,18 @@ "requires": { "has-flag": "^4.0.0" } + }, + "write-file-atomic": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", + "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", + "dev": true, + "requires": { + "imurmurhash": "^0.1.4", + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" + } } } }, @@ -19590,9 +20403,9 @@ } }, "chalk": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", - "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "requires": { "ansi-styles": "^4.1.0", @@ -19807,9 +20620,9 @@ } }, "jsdoc-type-pratt-parser": { - "version": "2.2.5", - "resolved": "https://registry.npmjs.org/jsdoc-type-pratt-parser/-/jsdoc-type-pratt-parser-2.2.5.tgz", - "integrity": "sha512-2a6eRxSxp1BW040hFvaJxhsCMI9lT8QB8t14t+NY5tC5rckIR0U9cr2tjOeaFirmEOy6MHvmJnY7zTBHq431Lw==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jsdoc-type-pratt-parser/-/jsdoc-type-pratt-parser-3.1.0.tgz", + "integrity": "sha512-MgtD0ZiCDk9B+eI73BextfRrVQl0oyzRG8B2BjORts6jbunj4ScKPcyXGTbB6eXL4y9TzxCm6hyeLq/2ASzNdw==", "dev": true }, "jsdom": { @@ -19845,6 +20658,14 @@ "whatwg-url": "^8.5.0", "ws": "^7.4.6", "xml-name-validator": "^3.0.0" + }, + "dependencies": { + "parse5": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", + "dev": true + } } }, "jsesc": { @@ -19853,12 +20674,6 @@ "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", "dev": true }, - "json-parse-better-errors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", - "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", - "dev": true - }, "json-parse-even-better-errors": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", @@ -19878,13 +20693,10 @@ "dev": true }, "json5": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.3.tgz", - "integrity": "sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA==", - "dev": true, - "requires": { - "minimist": "^1.2.5" - } + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", + "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==", + "dev": true }, "jsonfile": { "version": "6.1.0", @@ -19921,9 +20733,9 @@ "dev": true }, "karma": { - "version": "6.3.17", - "resolved": "https://registry.npmjs.org/karma/-/karma-6.3.17.tgz", - "integrity": "sha512-2TfjHwrRExC8yHoWlPBULyaLwAFmXmxQrcuFImt/JsAsSZu1uOWTZ1ZsWjqQtWpHLiatJOHL5jFjXSJIgCd01g==", + "version": "6.3.20", + "resolved": "https://registry.npmjs.org/karma/-/karma-6.3.20.tgz", + "integrity": "sha512-HRNQhMuKOwKpjYlWiJP0DUrJOh+QjaI/DTaD8b9rEm4Il3tJ8MijutVZH4ts10LuUFst/CedwTS6vieCN8yTSw==", "dev": true, "requires": { "@colors/colors": "1.5.0", @@ -19945,7 +20757,7 @@ "qjobs": "^1.2.0", "range-parser": "^1.2.1", "rimraf": "^3.0.2", - "socket.io": "^4.2.0", + "socket.io": "^4.4.1", "source-map": "^0.6.1", "tmp": "^0.2.1", "ua-parser-js": "^0.7.30", @@ -19957,12 +20769,6 @@ "resolved": "https://registry.npmjs.org/mime/-/mime-2.5.2.tgz", "integrity": "sha512-tqkh47FzKeCPD2PUiPB6pkbMzsCasjxAfC62/Wap5qrUWcb+sFasXUC5I3gYM5iBM8v/Qpn4UK0x+j0iHyFPDg==", "dev": true - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true } } }, @@ -20062,9 +20868,9 @@ "dev": true }, "linkify-it": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-3.0.2.tgz", - "integrity": "sha512-gDBO4aHNZS6coiZCKVhSNh43F9ioIL4JwRjLZPkoLIY4yZFwg264Y5lu2x6rb1Js42Gh6Yqm2f6L2AJcnkzinQ==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-4.0.1.tgz", + "integrity": "sha512-C7bfi1UZmoj8+PQx22XyeXCuBlokoyWQL5pWSP+EI6nzRylyThouddufc2c1NDIcP9k5agmN9fLpA7VNJfIiqw==", "dev": true, "requires": { "uc.micro": "^1.0.1" @@ -20210,14 +21016,14 @@ } }, "markdown-it": { - "version": "12.3.2", - "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-12.3.2.tgz", - "integrity": "sha512-TchMembfxfNVpHkbtriWltGWc+m3xszaRD0CZup7GFFhzIgQqxIfn3eGj1yZpfuflzPvfkt611B2Q/Bsk1YnGg==", + "version": "13.0.1", + "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-13.0.1.tgz", + "integrity": "sha512-lTlxriVoy2criHP0JKRhO2VDG9c2ypWCsT237eDiLqi09rmbKoUetyGHq2uOIRoRS//kfoJckS0eUzzkDR+k2Q==", "dev": true, "requires": { "argparse": "^2.0.1", - "entities": "~2.1.0", - "linkify-it": "^3.0.1", + "entities": "~3.0.1", + "linkify-it": "^4.0.1", "mdurl": "^1.0.1", "uc.micro": "^1.0.5" }, @@ -20227,6 +21033,12 @@ "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", "dev": true + }, + "entities": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/entities/-/entities-3.0.1.tgz", + "integrity": "sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q==", + "dev": true } } }, @@ -20328,32 +21140,30 @@ } }, "mocha": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-9.2.2.tgz", - "integrity": "sha512-L6XC3EdwT6YrIk0yXpavvLkn8h+EU+Y5UcCHKECyMbdUIxyMuZj4bX4U9e1nvnvUUvQVsV2VHQr5zLdcUkhW/g==", + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.0.0.tgz", + "integrity": "sha512-0Wl+elVUD43Y0BqPZBzZt8Tnkw9CMUdNYnUsTfOM1vuhJVZL+kiesFYsqwBkEEuEixaiPe5ZQdqDgX2jddhmoA==", "dev": true, "requires": { "@ungap/promise-all-settled": "1.1.2", "ansi-colors": "4.1.1", "browser-stdout": "1.3.1", "chokidar": "3.5.3", - "debug": "4.3.3", + "debug": "4.3.4", "diff": "5.0.0", "escape-string-regexp": "4.0.0", "find-up": "5.0.0", "glob": "7.2.0", - "growl": "1.10.5", "he": "1.2.0", "js-yaml": "4.1.0", "log-symbols": "4.1.0", - "minimatch": "4.2.1", + "minimatch": "5.0.1", "ms": "2.1.3", - "nanoid": "3.3.1", + "nanoid": "3.3.3", "serialize-javascript": "6.0.0", "strip-json-comments": "3.1.1", "supports-color": "8.1.1", - "which": "2.0.2", - "workerpool": "6.2.0", + "workerpool": "6.2.1", "yargs": "16.2.0", "yargs-parser": "20.2.4", "yargs-unparser": "2.0.0" @@ -20374,6 +21184,15 @@ "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", "dev": true }, + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0" + } + }, "chalk": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", @@ -20467,12 +21286,12 @@ } }, "minimatch": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-4.2.1.tgz", - "integrity": "sha512-9Uq1ChtSZO+Mxa/CL1eGizn2vRn3MlLgzhT0Iz8zaY8NdvxvB0d5QdPFmCKf7JKA9Lerx5vRrnwO03jsSfGG9g==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz", + "integrity": "sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==", "dev": true, "requires": { - "brace-expansion": "^1.1.7" + "brace-expansion": "^2.0.1" } }, "ms": { @@ -20587,9 +21406,9 @@ "dev": true }, "nanoid": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.1.tgz", - "integrity": "sha512-n6Vs/3KGyxPQd6uO0eH4Bv0ojGSUvuLlIHtC3Y0kEO23YRge8H9x1GCzLn28YX0H66pMkxuaeESFq4tKISKwdw==", + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.3.tgz", + "integrity": "sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w==", "dev": true }, "natural-compare": { @@ -20642,13 +21461,13 @@ "node-int64": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", - "integrity": "sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs=", + "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", "dev": true }, "node-releases": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.1.tgz", - "integrity": "sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA==", + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.5.tgz", + "integrity": "sha512-U9h1NLROZTq9uE1SNffn6WuPDg8icmi3ns4rEl/oTfIle4iLjTliCzgTsbaIFMq/Xn078/lfY/BL0GWZ+psK4Q==", "dev": true }, "normalize-path": { @@ -20667,9 +21486,9 @@ } }, "nth-check": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.0.1.tgz", - "integrity": "sha512-it1vE95zF6dTT9lBsYbxvqh0Soy4SPowchj0UBGj/V6cTPnXXtQOPUbhZ6CmGzAD/rW22LQK6E96pcdJXk4A4w==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", "dev": true, "requires": { "boolbase": "^1.0.0" @@ -20688,9 +21507,9 @@ "dev": true }, "object-inspect": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.11.1.tgz", - "integrity": "sha512-If7BjFlpkzzBeV1cqgT3OSWT3azyoxDGajR+iGnFBfVV2EWyDyWaZZW2ERDjUaY2QM8i5jI3Sj7mhsM4DDAqWA==", + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz", + "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==", "dev": true }, "object-keys": { @@ -20734,13 +21553,13 @@ } }, "object.hasown": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.0.tgz", - "integrity": "sha512-MhjYRfj3GBlhSkDHo6QmvgjRLXQ2zndabdf3nX0yTyZK9rPfxb6uRpAac8HXNLy1GpqWtZ81Qh4v3uOls2sRAg==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.1.tgz", + "integrity": "sha512-LYLe4tivNQzq4JdaWW6WO3HMZZJWzkkH8fnI6EebWl0VZth2wL2Lovm74ep2/gZzlaTdV62JZHEqHQ2yVn8Q/A==", "dev": true, "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.19.1" + "define-properties": "^1.1.4", + "es-abstract": "^1.19.5" } }, "object.values": { @@ -20847,18 +21666,22 @@ } }, "parse5": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", - "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", - "dev": true + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.0.0.tgz", + "integrity": "sha512-y/t8IXSPWTuRZqXc0ajH/UwDj4mnqLEbSttNbThcFhGrZuOyoyvNBO85PBp2jQa55wY9d07PBNjsK8ZP3K5U6g==", + "dev": true, + "requires": { + "entities": "^4.3.0" + } }, "parse5-htmlparser2-tree-adapter": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz", - "integrity": "sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.0.0.tgz", + "integrity": "sha512-B77tOZrqqfUfnVcOrUvfdLbz4pu4RopLD/4vmu3HUPswwTA8OH0EMW9BlWR2B0RCoiZRAHEUu7IxeP1Pd1UU+g==", "dev": true, "requires": { - "parse5": "^6.0.1" + "domhandler": "^5.0.2", + "parse5": "^7.0.0" } }, "parseurl": { @@ -21083,10 +21906,13 @@ "dev": true }, "qs": { - "version": "6.9.7", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.7.tgz", - "integrity": "sha512-IhMFgUmuNpyRfxA90umL7ByLlgRXu6tIfKPpF5TmcfRLlLCckfP/g3IQmju6jjpu+Hh8rA+2p6A27ZSPOOHdKw==", - "dev": true + "version": "6.10.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz", + "integrity": "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==", + "dev": true, + "requires": { + "side-channel": "^1.0.4" + } }, "queue-microtask": { "version": "1.2.3", @@ -21110,13 +21936,13 @@ "dev": true }, "raw-body": { - "version": "2.4.3", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.3.tgz", - "integrity": "sha512-UlTNLIcu0uzb4D2f4WltY6cVjLi+/jEN4lgEUj3E04tpMDpUlkBo/eSn6zou9hum2VMNpCCUone0O0WeJim07g==", + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", + "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", "dev": true, "requires": { "bytes": "3.1.2", - "http-errors": "1.8.1", + "http-errors": "2.0.0", "iconv-lite": "0.4.24", "unpipe": "1.0.0" } @@ -21156,24 +21982,22 @@ } }, "react": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react/-/react-17.0.2.tgz", - "integrity": "sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==", + "version": "18.1.0", + "resolved": "https://registry.npmjs.org/react/-/react-18.1.0.tgz", + "integrity": "sha512-4oL8ivCz5ZEPyclFQXaNksK3adutVS8l2xzZU0cqEFrE9Sb7fC0EFK5uEk74wIreL1DERyjvsU915j1pcT2uEQ==", "dev": true, "requires": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1" + "loose-envify": "^1.1.0" } }, "react-dom": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-17.0.2.tgz", - "integrity": "sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA==", + "version": "18.1.0", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.1.0.tgz", + "integrity": "sha512-fU1Txz7Budmvamp7bshe4Zi32d0ll7ect+ccxNu9FlObT605GOEB8BfO4tmRJ39R5Zj831VCpvQ05QPBW5yb+w==", "dev": true, "requires": { "loose-envify": "^1.1.0", - "object-assign": "^4.1.1", - "scheduler": "^0.20.2" + "scheduler": "^0.22.0" } }, "react-is": { @@ -21207,9 +22031,9 @@ "dev": true }, "regenerate-unicode-properties": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-9.0.0.tgz", - "integrity": "sha512-3E12UeNSPfjrgwjkR81m5J7Aw/T55Tu7nUyZVQYCKEOs+2dkxEY+DpPtZzO4YruuiPb7NkYLVcyJC4+zCbk5pA==", + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.0.1.tgz", + "integrity": "sha512-vn5DU6yg6h8hP/2OkQo3K7uVILvY4iu0oI4t3HFa81UPkhGJwkRwM10JEc3upjdhHjs/k8GJY1sRBhk5sr69Bw==", "dev": true, "requires": { "regenerate": "^1.4.2" @@ -21222,22 +22046,23 @@ "dev": true }, "regenerator-transform": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.5.tgz", - "integrity": "sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw==", + "version": "0.15.0", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.0.tgz", + "integrity": "sha512-LsrGtPmbYg19bcPHwdtmXwbW+TqNvtY4riE3P83foeHRroMbH6/2ddFBfab3t7kbzc7v7p4wbkIecHImqt0QNg==", "dev": true, "requires": { "@babel/runtime": "^7.8.4" } }, "regexp.prototype.flags": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.3.1.tgz", - "integrity": "sha512-JiBdRBq91WlY7uRJ0ds7R+dU02i6LKi8r3BuQhNXn+kmeLN+EfHhfjqMRis1zJxnlu88hq/4dx0P2OP3APRTOA==", + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz", + "integrity": "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==", "dev": true, "requires": { "call-bind": "^1.0.2", - "define-properties": "^1.1.3" + "define-properties": "^1.1.3", + "functions-have-names": "^1.2.2" } }, "regexpp": { @@ -21247,35 +22072,29 @@ "dev": true }, "regexpu-core": { - "version": "4.8.0", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.8.0.tgz", - "integrity": "sha512-1F6bYsoYiz6is+oz70NWur2Vlh9KWtswuRuzJOfeYUrfPX2o8n74AnUVaOGDbUqVGO9fNHu48/pjJO4sNVwsOg==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.0.1.tgz", + "integrity": "sha512-CriEZlrKK9VJw/xQGJpQM5rY88BtuL8DM+AEwvcThHilbxiTAy8vq4iJnd2tqq8wLmjbGZzP7ZcKFjbGkmEFrw==", "dev": true, "requires": { "regenerate": "^1.4.2", - "regenerate-unicode-properties": "^9.0.0", - "regjsgen": "^0.5.2", - "regjsparser": "^0.7.0", + "regenerate-unicode-properties": "^10.0.1", + "regjsgen": "^0.6.0", + "regjsparser": "^0.8.2", "unicode-match-property-ecmascript": "^2.0.0", "unicode-match-property-value-ecmascript": "^2.0.0" } }, - "regextras": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/regextras/-/regextras-0.8.0.tgz", - "integrity": "sha512-k519uI04Z3SaY0fLX843MRXnDeG2+vHOFsyhiPZvNLe7r8rD2YNRjq4BQLZZ0oAr2NrtvZlICsXysGNFPGa3CQ==", - "dev": true - }, "regjsgen": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.2.tgz", - "integrity": "sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A==", + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.6.0.tgz", + "integrity": "sha512-ozE883Uigtqj3bx7OhL1KNbCzGyW2NQZPl6Hs09WTvCuZD5sTI4JY58bkbQWa/Y9hxIsvJ3M8Nbf7j54IqeZbA==", "dev": true }, "regjsparser": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.7.0.tgz", - "integrity": "sha512-A4pcaORqmNMDVwUjWoTzuhwMGpP+NykpfqAsEgI1FSH/EzC7lrN5TMd+kN8YCovX+jMpu8eaqXgXPCa0g8FQNQ==", + "version": "0.8.4", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.8.4.tgz", + "integrity": "sha512-J3LABycON/VNEu3abOviqGHuB/LOtOQj8SKmfP9anY5GfAVw/SPjwzSjxGjbZXIxbGfqTHtJw58C2Li/WkStmA==", "dev": true, "requires": { "jsesc": "~0.5.0" @@ -21284,7 +22103,7 @@ "jsesc": { "version": "0.5.0", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", - "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", + "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", "dev": true } } @@ -21302,13 +22121,14 @@ "dev": true }, "resolve": { - "version": "1.20.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", - "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", + "version": "1.22.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz", + "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==", "dev": true, "requires": { - "is-core-module": "^2.2.0", - "path-parse": "^1.0.6" + "is-core-module": "^2.8.1", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" } }, "resolve-cwd": { @@ -21407,13 +22227,12 @@ } }, "scheduler": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.20.2.tgz", - "integrity": "sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==", + "version": "0.22.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.22.0.tgz", + "integrity": "sha512-6QAm1BgQI88NPYymgGQLCZgvep4FyePDWFpXVK+zNSUgHwlqpJy8VEh8Et0KxTACS4VWwMousBElAZOH9nkkoQ==", "dev": true, "requires": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1" + "loose-envify": "^1.1.0" } }, "schema-utils": { @@ -21428,33 +22247,33 @@ } }, "semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", "dev": true, "requires": { "lru-cache": "^6.0.0" } }, "send": { - "version": "0.17.2", - "resolved": "https://registry.npmjs.org/send/-/send-0.17.2.tgz", - "integrity": "sha512-UJYB6wFSJE3G00nEivR5rgWp8c2xXvJ3OPWPhmuteU0IKj8nKbG3DrjiOmLwpnHGYWAVwA69zmTm++YG0Hmwww==", + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", + "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", "dev": true, "requires": { "debug": "2.6.9", - "depd": "~1.1.2", - "destroy": "~1.0.4", + "depd": "2.0.0", + "destroy": "1.2.0", "encodeurl": "~1.0.2", "escape-html": "~1.0.3", "etag": "~1.8.1", "fresh": "0.5.2", - "http-errors": "1.8.1", + "http-errors": "2.0.0", "mime": "1.6.0", "ms": "2.1.3", - "on-finished": "~2.3.0", + "on-finished": "2.4.1", "range-parser": "~1.2.1", - "statuses": "~1.5.0" + "statuses": "2.0.1" }, "dependencies": { "debug": { @@ -21469,7 +22288,7 @@ "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true } } @@ -21479,6 +22298,21 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "dev": true + }, + "on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "dev": true, + "requires": { + "ee-first": "1.1.1" + } + }, + "statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "dev": true } } }, @@ -21492,15 +22326,15 @@ } }, "serve-static": { - "version": "1.14.2", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.2.tgz", - "integrity": "sha512-+TMNA9AFxUEGuC0z2mevogSnn9MXKb4fa7ngeRMJaaGv8vTwnIEkKi+QGvPt33HSnf8pRS+WGM0EbMtCJLKMBQ==", + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", + "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", "dev": true, "requires": { "encodeurl": "~1.0.2", "escape-html": "~1.0.3", "parseurl": "~1.3.3", - "send": "0.17.2" + "send": "0.18.0" } }, "setprototypeof": { @@ -21545,34 +22379,25 @@ } }, "signal-exit": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", - "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==", + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", "dev": true }, "sinon": { - "version": "13.0.1", - "resolved": "https://registry.npmjs.org/sinon/-/sinon-13.0.1.tgz", - "integrity": "sha512-8yx2wIvkBjIq/MGY1D9h1LMraYW+z1X0mb648KZnKSdvLasvDu7maa0dFaNYdTDczFgbjNw2tOmWdTk9saVfwQ==", + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/sinon/-/sinon-14.0.0.tgz", + "integrity": "sha512-ugA6BFmE+WrJdh0owRZHToLd32Uw3Lxq6E6LtNRU+xTVBefx632h03Q7apXWRsRdZAJ41LB8aUfn2+O4jsDNMw==", "dev": true, "requires": { "@sinonjs/commons": "^1.8.3", - "@sinonjs/fake-timers": "^9.0.0", + "@sinonjs/fake-timers": "^9.1.2", "@sinonjs/samsam": "^6.1.1", "diff": "^5.0.0", "nise": "^5.1.1", "supports-color": "^7.2.0" }, "dependencies": { - "@sinonjs/fake-timers": { - "version": "9.1.1", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-9.1.1.tgz", - "integrity": "sha512-Wp5vwlZ0lOqpSYGKqr53INws9HLkt6JDc/pDZcPf7bchQnrXJMXPns8CXx0hFikMSGSWfvtvvpb2gtMVfkWagA==", - "dev": true, - "requires": { - "@sinonjs/commons": "^1.7.0" - } - }, "diff": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", @@ -21628,23 +22453,23 @@ "dev": true }, "socket.io": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.4.0.tgz", - "integrity": "sha512-bnpJxswR9ov0Bw6ilhCvO38/1WPtE3eA2dtxi2Iq4/sFebiDJQzgKNYA7AuVVdGW09nrESXd90NbZqtDd9dzRQ==", + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.5.1.tgz", + "integrity": "sha512-0y9pnIso5a9i+lJmsCdtmTTgJFFSvNQKDnPQRz28mGNnxbmqYg2QPtJTLFxhymFZhAIn50eHAKzJeiNaKr+yUQ==", "dev": true, "requires": { "accepts": "~1.3.4", "base64id": "~2.0.0", "debug": "~4.3.2", - "engine.io": "~6.1.0", - "socket.io-adapter": "~2.3.3", + "engine.io": "~6.2.0", + "socket.io-adapter": "~2.4.0", "socket.io-parser": "~4.0.4" } }, "socket.io-adapter": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.3.3.tgz", - "integrity": "sha512-Qd/iwn3VskrpNO60BeRyCyr8ZWw9CPZyitW4AQwmRZ8zCiyDiL+znRnWX6tDHXnWn1sJrM1+b6Mn6wEDJJ4aYQ==", + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.4.0.tgz", + "integrity": "sha512-W4N+o69rkMEGVuk2D/cvca3uYsvGlMwsySWV447y99gUPghxq42BxqLNMndb+a1mm/5/7NeXVQS7RLa2XyXvYg==", "dev": true }, "socket.io-parser": { @@ -21659,9 +22484,9 @@ } }, "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true }, "source-map-js": { @@ -21678,14 +22503,6 @@ "requires": { "buffer-from": "^1.0.0", "source-map": "^0.6.0" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } } }, "spdx-exceptions": { @@ -21761,50 +22578,52 @@ } }, "string-width": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", - "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dev": true, "requires": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.0" + "strip-ansi": "^6.0.1" } }, "string.prototype.matchall": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.6.tgz", - "integrity": "sha512-6WgDX8HmQqvEd7J+G6VtAahhsQIssiZ8zl7zKh1VDMFyL3hRTJP4FTNA3RbIp2TOQ9AYNDcc7e3fH0Qbup+DBg==", + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.7.tgz", + "integrity": "sha512-f48okCX7JiwVi1NXCVWcFnZgADDC/n2vePlQ/KUCNqCikLLilQvwjMO8+BHVKvgzH0JB0J9LEPgxOGT02RoETg==", "dev": true, "requires": { "call-bind": "^1.0.2", "define-properties": "^1.1.3", "es-abstract": "^1.19.1", "get-intrinsic": "^1.1.1", - "has-symbols": "^1.0.2", + "has-symbols": "^1.0.3", "internal-slot": "^1.0.3", - "regexp.prototype.flags": "^1.3.1", + "regexp.prototype.flags": "^1.4.1", "side-channel": "^1.0.4" } }, "string.prototype.trimend": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz", - "integrity": "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.5.tgz", + "integrity": "sha512-I7RGvmjV4pJ7O3kdf+LXFpVfdNOxtCW/2C8f6jNiW4+PQchwxkCDzlk1/7p+Wl4bqFIZeF47qAHXLuHHWKAxog==", "dev": true, "requires": { "call-bind": "^1.0.2", - "define-properties": "^1.1.3" + "define-properties": "^1.1.4", + "es-abstract": "^1.19.5" } }, "string.prototype.trimstart": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz", - "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.5.tgz", + "integrity": "sha512-THx16TJCGlsN0o6dl2o6ncWUsdgnLRSA23rRE5pyGBw/mLr3Ej/R2LaqCtgP8VNMGZsvMWnf9ooZPyY2bHvUFg==", "dev": true, "requires": { "call-bind": "^1.0.2", - "define-properties": "^1.1.3" + "define-properties": "^1.1.4", + "es-abstract": "^1.19.5" } }, "strip-ansi": { @@ -21817,9 +22636,9 @@ } }, "strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", + "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", "dev": true }, "strip-final-newline": { @@ -21870,6 +22689,12 @@ } } }, + "supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true + }, "symbol-tree": { "version": "3.2.4", "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", @@ -21912,15 +22737,15 @@ } }, "terser-webpack-plugin": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.1.tgz", - "integrity": "sha512-GvlZdT6wPQKbDNW/GDQzZFg/j4vKU96yl2q6mcUkzKOgW4gwf1Z8cZToUCrz31XHlPWH8MVb1r2tFtdDtTGJ7g==", + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.3.tgz", + "integrity": "sha512-Fx60G5HNYknNTNQnzQ1VePRuu89ZVYWfjRAeT5rITuCY/1b08s49e5kSQwHDirKZWuoKOBRFS98EUUoZ9kLEwQ==", "dev": true, "requires": { + "@jridgewell/trace-mapping": "^0.3.7", "jest-worker": "^27.4.5", "schema-utils": "^3.1.1", "serialize-javascript": "^6.0.0", - "source-map": "^0.6.1", "terser": "^5.7.2" }, "dependencies": { @@ -21934,12 +22759,6 @@ "ajv": "^6.12.5", "ajv-keywords": "^3.5.2" } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true } } }, @@ -22029,9 +22848,9 @@ } }, "ts-jest": { - "version": "27.1.3", - "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-27.1.3.tgz", - "integrity": "sha512-6Nlura7s6uM9BVUAoqLH7JHyMXjz8gluryjpPXxr3IxZdAXnU6FhjvVLHFtfd1vsE1p8zD1OJfskkc0jhTSnkA==", + "version": "27.1.5", + "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-27.1.5.tgz", + "integrity": "sha512-Xv6jBQPoBEvBq/5i2TeSG9tt/nqkbpcurrEG1b+2yfBrcJelOZF9Ml6dmyMh7bcW9JyFbRYpR5rxROSlBLTZHA==", "dev": true, "requires": { "bs-logger": "0.x", @@ -22045,9 +22864,9 @@ } }, "ts-loader": { - "version": "9.2.8", - "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.2.8.tgz", - "integrity": "sha512-gxSak7IHUuRtwKf3FIPSW1VpZcqF9+MBrHOvBp9cjHh+525SjtCIJKVGjRKIAfxBwDGDGCFF00rTfzB1quxdSw==", + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.3.0.tgz", + "integrity": "sha512-2kLLAdAD+FCKijvGKi9sS0OzoqxLCF3CxHpok7rVgCZ5UldRzH0TkbwG9XECKjBzHsAewntC5oDaI/FwKzEUog==", "dev": true, "requires": { "chalk": "^4.1.0", @@ -22108,14 +22927,14 @@ } }, "tsconfig-paths": { - "version": "3.12.0", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.12.0.tgz", - "integrity": "sha512-e5adrnOYT6zqVnWqZu7i/BQ3BnhzvGbjEjejFXO20lKIKpwTaupkCPgEfv4GZK1IBciJUEhYs3J3p75FdaTFVg==", + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz", + "integrity": "sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ==", "dev": true, "requires": { "@types/json5": "^0.0.29", "json5": "^1.0.1", - "minimist": "^1.2.0", + "minimist": "^1.2.6", "strip-bom": "^3.0.0" }, "dependencies": { @@ -22127,6 +22946,12 @@ "requires": { "minimist": "^1.2.0" } + }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "dev": true } } }, @@ -22224,9 +23049,9 @@ } }, "typescript": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.6.2.tgz", - "integrity": "sha512-HM/hFigTBHZhLXshn9sN37H085+hQGeJHJ/X7LpBWLID/fbc2acUMfU+lGD98X81sKP+pFa9f0DZmCwB9GnbAg==", + "version": "4.7.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.7.3.tgz", + "integrity": "sha512-WOkT3XYvrpXx4vMMqlD+8R8R37fZkjyLGlxavMc4iB8lrl8L0DeTcHbYgw/v0N/z9wAFsgBhcsF0ruoySS22mA==", "dev": true }, "ua-parser-js": { @@ -22242,14 +23067,14 @@ "dev": true }, "unbox-primitive": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz", - "integrity": "sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", + "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", "dev": true, "requires": { - "function-bind": "^1.1.1", - "has-bigints": "^1.0.1", - "has-symbols": "^1.0.2", + "call-bind": "^1.0.2", + "has-bigints": "^1.0.2", + "has-symbols": "^1.0.3", "which-boxed-primitive": "^1.0.2" } }, @@ -22338,9 +23163,9 @@ }, "dependencies": { "source-map": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", - "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", + "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", "dev": true } } @@ -22401,9 +23226,9 @@ "dev": true }, "webpack": { - "version": "5.70.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.70.0.tgz", - "integrity": "sha512-ZMWWy8CeuTTjCxbeaQI21xSswseF2oNOwc70QSKNePvmxE7XW36i7vpBMYZFAUHPwQiEbNGCEYIOOlyRbdGmxw==", + "version": "5.73.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.73.0.tgz", + "integrity": "sha512-svjudQRPPa0YiOYa2lM/Gacw0r6PvxptHj4FuEKQ2kX05ZLkjbVc5MnPs6its5j7IZljnIqSVo/OsY2X0IpHGA==", "dev": true, "requires": { "@types/eslint-scope": "^3.7.3", @@ -22415,13 +23240,13 @@ "acorn-import-assertions": "^1.7.6", "browserslist": "^4.14.5", "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.9.2", + "enhanced-resolve": "^5.9.3", "es-module-lexer": "^0.9.0", "eslint-scope": "5.1.1", "events": "^3.2.0", "glob-to-regexp": "^0.4.1", "graceful-fs": "^4.2.9", - "json-parse-better-errors": "^1.0.2", + "json-parse-even-better-errors": "^2.3.1", "loader-runner": "^4.2.0", "mime-types": "^2.1.27", "neo-async": "^2.6.2", @@ -22533,18 +23358,18 @@ } }, "webpack-cli": { - "version": "4.9.2", - "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.9.2.tgz", - "integrity": "sha512-m3/AACnBBzK/kMTcxWHcZFPrw/eQuY4Df1TxvIWfWM2x7mRqBQCqKEd96oCUa9jkapLBaFfRce33eGDb4Pr7YQ==", + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.10.0.tgz", + "integrity": "sha512-NLhDfH/h4O6UOy+0LSso42xvYypClINuMNBVVzX4vX98TmTaTUxwRbXdhucbFMd2qLaCTcLq/PdYrvi8onw90w==", "dev": true, "requires": { "@discoveryjs/json-ext": "^0.5.0", - "@webpack-cli/configtest": "^1.1.1", - "@webpack-cli/info": "^1.4.1", - "@webpack-cli/serve": "^1.6.1", + "@webpack-cli/configtest": "^1.2.0", + "@webpack-cli/info": "^1.5.0", + "@webpack-cli/serve": "^1.7.0", "colorette": "^2.0.14", "commander": "^7.0.0", - "execa": "^5.0.0", + "cross-spawn": "^7.0.3", "fastest-levenshtein": "^1.0.12", "import-local": "^3.0.2", "interpret": "^2.2.0", @@ -22637,9 +23462,9 @@ "dev": true }, "workerpool": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.0.tgz", - "integrity": "sha512-Rsk5qQHJ9eowMH28Jwhe8HEbmdYDX4lwoMWshiCXugjtHqMD9ZbiqSDLxcsfdqsETPzVUtX5s1Z5kStiIM6l4A==", + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.1.tgz", + "integrity": "sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw==", "dev": true }, "wrap-ansi": { @@ -22685,18 +23510,6 @@ "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", "dev": true }, - "write-file-atomic": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", - "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", - "dev": true, - "requires": { - "imurmurhash": "^0.1.4", - "is-typedarray": "^1.0.0", - "signal-exit": "^3.0.2", - "typedarray-to-buffer": "^3.1.5" - } - }, "ws": { "version": "7.4.6", "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz", diff --git a/package.json b/package.json index dea0128bf0..8151cb15da 100644 --- a/package.json +++ b/package.json @@ -81,56 +81,56 @@ "rxjs": "7.4.0" }, "devDependencies": { - "@babel/core": "7.17.7", - "@babel/plugin-transform-runtime": "7.17.0", - "@babel/preset-env": "7.16.11", - "@babel/preset-react": "7.16.7", - "@types/chai": "4.3.0", - "@types/jest": "27.4.1", - "@types/mocha": "9.1.0", - "@types/node": "17.0.21", + "@babel/core": "7.18.5", + "@babel/plugin-transform-runtime": "7.18.5", + "@babel/preset-env": "7.18.2", + "@babel/preset-react": "7.17.12", + "@types/chai": "4.3.1", + "@types/jest": "27.5.1", + "@types/mocha": "9.1.1", + "@types/node": "17.0.42", "@types/sinon": "10.0.11", - "@typescript-eslint/eslint-plugin": "5.15.0", - "@typescript-eslint/eslint-plugin-tslint": "5.15.0", - "@typescript-eslint/parser": "5.15.0", + "@typescript-eslint/eslint-plugin": "5.27.1", + "@typescript-eslint/eslint-plugin-tslint": "5.27.1", + "@typescript-eslint/parser": "5.27.1", "arraybuffer-loader": "1.0.8", - "babel-loader": "8.2.3", + "babel-loader": "8.2.5", "chai": "4.3.6", - "cheerio": "1.0.0-rc.10", - "core-js": "3.21.1", - "esbuild": "0.14.27", - "eslint": "8.11.0", - "eslint-plugin-import": "2.25.4", - "eslint-plugin-jsdoc": "38.0.4", - "eslint-plugin-react": "7.29.4", + "cheerio": "1.0.0-rc.11", + "core-js": "3.22.8", + "esbuild": "0.14.43", + "eslint": "8.17.0", + "eslint-plugin-import": "2.26.0", + "eslint-plugin-jsdoc": "39.3.2", + "eslint-plugin-react": "7.30.0", "esm": "3.2.25", - "express": "4.17.3", - "highlight.js": "11.5.0", - "html-entities": "2.3.2", + "express": "4.18.1", + "highlight.js": "11.5.1", + "html-entities": "2.3.3", "jest": "27.5.1", - "karma": "6.3.17", + "karma": "6.3.20", "karma-chrome-launcher": "3.1.1", "karma-firefox-launcher": "2.1.2", "karma-mocha": "2.0.1", "karma-webpack": "5.0.0", - "markdown-it": "12.3.2", - "mocha": "9.2.2", + "markdown-it": "13.0.1", + "mocha": "10.0.0", "mocha-loader": "5.1.5", "raw-loader": "4.0.2", - "react": "17.0.2", - "react-dom": "17.0.2", + "react": "18.1.0", + "react-dom": "18.1.0", "regenerator-runtime": "0.13.9", "rimraf": "3.0.2", - "semver": "7.3.5", - "sinon": "13.0.1", - "terser-webpack-plugin": "5.3.1", - "ts-jest": "27.1.3", - "ts-loader": "9.2.8", + "semver": "7.3.7", + "sinon": "14.0.0", + "terser-webpack-plugin": "5.3.3", + "ts-jest": "27.1.5", + "ts-loader": "9.3.0", "tslint": "6.1.3", - "typescript": "4.6.2", - "webpack": "5.70.0", + "typescript": "4.7.3", + "webpack": "5.73.0", "webpack-bundle-analyzer": "4.5.0", - "webpack-cli": "4.9.2" + "webpack-cli": "4.10.0" }, "scripts-list": { "Build a demo page (e.g. to test a code change)": { diff --git a/src/compat/__tests__/add_text_track.test.ts b/src/compat/__tests__/add_text_track.test.ts index bdc6c580d1..a8166a1f82 100644 --- a/src/compat/__tests__/add_text_track.test.ts +++ b/src/compat/__tests__/add_text_track.test.ts @@ -44,7 +44,7 @@ describe("compat - addTextTrack", () => { isIEOrEdge: true, })); - const addTextTrack = require("../add_text_track").default; + const addTextTrack = jest.requireActual("../add_text_track").default; const { track, trackElement } = addTextTrack(fakeMediaElement, true); expect(trackElement).toBe(undefined); expect(track).toBe(fakeTextTrack); @@ -74,7 +74,7 @@ describe("compat - addTextTrack", () => { isIEOrEdge: true, })); - const addTextTrack = require("../add_text_track").default; + const addTextTrack = jest.requireActual("../add_text_track").default; const { track, trackElement } = addTextTrack(fakeMediaElement, false); expect(trackElement).toBe(undefined); expect(track).toBe(fakeTextTrack); @@ -117,7 +117,7 @@ describe("compat - addTextTrack", () => { const spyOnCreateElement = jest.spyOn(document, "createElement") .mockImplementation(() => fakeTextTrackElement as unknown as HTMLElement); - const addTextTrack = require("../add_text_track").default; + const addTextTrack = jest.requireActual("../add_text_track").default; const { track, trackElement } = addTextTrack(fakeMediaElement, true); expect(track).toBe(fakeTextTrack); expect(track.mode).toBe("hidden"); @@ -162,7 +162,7 @@ describe("compat - addTextTrack", () => { const spyOnCreateElement = jest.spyOn(document, "createElement") .mockImplementation(() => fakeTextTrackElement as unknown as HTMLElement); - const addTextTrack = require("../add_text_track").default; + const addTextTrack = jest.requireActual("../add_text_track").default; const { track, trackElement } = addTextTrack(fakeMediaElement, false); expect(track).toBe(fakeTextTrack); expect(track.mode).toBe("showing"); diff --git a/src/compat/__tests__/browser_compatibility_types.test.ts b/src/compat/__tests__/browser_compatibility_types.test.ts index 1f31a748ff..3b912182b5 100644 --- a/src/compat/__tests__/browser_compatibility_types.test.ts +++ b/src/compat/__tests__/browser_compatibility_types.test.ts @@ -49,7 +49,7 @@ describe("compat - browser compatibility types", () => { win.WebKitMediaSource = { a: 3 }; win.MSMediaSource = { a: 4 }; - const { MediaSource_ } = require("../browser_compatibility_types"); + const { MediaSource_ } = jest.requireActual("../browser_compatibility_types"); expect(MediaSource_).toEqual(undefined); win.MediaSource = origMediaSource; @@ -72,7 +72,7 @@ describe("compat - browser compatibility types", () => { win.WebKitMediaSource = { a: 3 }; win.MSMediaSource = { a: 4 }; - const { MediaSource_ } = require("../browser_compatibility_types"); + const { MediaSource_ } = jest.requireActual("../browser_compatibility_types"); expect(MediaSource_).toEqual({ a: 1 }); win.MediaSource = origMediaSource; @@ -95,7 +95,7 @@ describe("compat - browser compatibility types", () => { win.WebKitMediaSource = undefined; win.MSMediaSource = undefined; - const { MediaSource_ } = require("../browser_compatibility_types"); + const { MediaSource_ } = jest.requireActual("../browser_compatibility_types"); expect(MediaSource_).toEqual({ a: 2 }); win.MediaSource = origMediaSource; @@ -118,7 +118,7 @@ describe("compat - browser compatibility types", () => { win.WebKitMediaSource = { a: 3 }; win.MSMediaSource = undefined; - const { MediaSource_ } = require("../browser_compatibility_types"); + const { MediaSource_ } = jest.requireActual("../browser_compatibility_types"); expect(MediaSource_).toEqual({ a: 3 }); win.MediaSource = origMediaSource; @@ -141,7 +141,7 @@ describe("compat - browser compatibility types", () => { win.WebKitMediaSource = undefined; win.MSMediaSource = { a: 4 }; - const { MediaSource_ } = require("../browser_compatibility_types"); + const { MediaSource_ } = jest.requireActual("../browser_compatibility_types"); expect(MediaSource_).toEqual({ a: 4 }); win.MediaSource = origMediaSource; diff --git a/src/compat/__tests__/browser_version.test.ts b/src/compat/__tests__/browser_version.test.ts index a7245e8104..8f10022e72 100644 --- a/src/compat/__tests__/browser_version.test.ts +++ b/src/compat/__tests__/browser_version.test.ts @@ -44,7 +44,7 @@ describe("Compat - Browser version", () => { return { __esModule: true as const, isFirefox: true }; }); - const { getFirefoxVersion } = require("../browser_version"); + const { getFirefoxVersion } = jest.requireActual("../browser_version"); nav.userAgent = "Firefox/60.0"; const version = getFirefoxVersion(); expect(version).toBe(60); @@ -55,7 +55,7 @@ describe("Compat - Browser version", () => { return { __esModule: true as const, isFirefox: true }; }); - const { getFirefoxVersion } = require("../browser_version"); + const { getFirefoxVersion } = jest.requireActual("../browser_version"); nav.userAgent = "Firefox/80.0"; const version = getFirefoxVersion(); expect(version).toBe(80); @@ -66,7 +66,7 @@ describe("Compat - Browser version", () => { return { __esModule: true as const, isFirefox: false }; }); - const { getFirefoxVersion } = require("../browser_version"); + const { getFirefoxVersion } = jest.requireActual("../browser_version"); const version = getFirefoxVersion(); expect(version).toBe(null); }); @@ -76,7 +76,7 @@ describe("Compat - Browser version", () => { return { __esModule: true as const, isFirefox: true }; }); - const { getFirefoxVersion } = require("../browser_version"); + const { getFirefoxVersion } = jest.requireActual("../browser_version"); nav.userAgent = "FireFennec/80.0"; const version = getFirefoxVersion(); expect(version).toBe(-1); diff --git a/src/compat/__tests__/can_patch_isobmff.test.ts b/src/compat/__tests__/can_patch_isobmff.test.ts index c26c110546..c06809e649 100644 --- a/src/compat/__tests__/can_patch_isobmff.test.ts +++ b/src/compat/__tests__/can_patch_isobmff.test.ts @@ -33,7 +33,7 @@ describe("compat - canPatchISOBMFFSegment", () => { isIEOrEdge: false, }; }); - const canPatchISOBMFFSegment = require("../can_patch_isobmff"); + const canPatchISOBMFFSegment = jest.requireActual("../can_patch_isobmff"); expect(canPatchISOBMFFSegment.default()).toBe(true); }); @@ -44,7 +44,7 @@ describe("compat - canPatchISOBMFFSegment", () => { isIEOrEdge: true, }; }); - const canPatchISOBMFFSegment = require("../can_patch_isobmff"); + const canPatchISOBMFFSegment = jest.requireActual("../can_patch_isobmff"); expect(canPatchISOBMFFSegment.default()).toBe(false); }); }); diff --git a/src/compat/__tests__/can_rely_on_video_visibility_and_size.test.ts b/src/compat/__tests__/can_rely_on_video_visibility_and_size.test.ts index 2375402647..edaef17160 100644 --- a/src/compat/__tests__/can_rely_on_video_visibility_and_size.test.ts +++ b/src/compat/__tests__/can_rely_on_video_visibility_and_size.test.ts @@ -30,7 +30,7 @@ describe("Compat - canRelyOnVideoVisibilityAndSize", () => { isFirefox: false }; }); const canRelyOnVideoVisibilityAndSize = - require("../can_rely_on_video_visibility_and_size.ts"); + jest.requireActual("../can_rely_on_video_visibility_and_size.ts"); expect(canRelyOnVideoVisibilityAndSize.default()).toBe(true); }); @@ -44,7 +44,7 @@ describe("Compat - canRelyOnVideoVisibilityAndSize", () => { getFirefoxVersion: () => -1 }; }); const canRelyOnVideoVisibilityAndSize = - require("../can_rely_on_video_visibility_and_size.ts"); + jest.requireActual("../can_rely_on_video_visibility_and_size.ts"); expect(canRelyOnVideoVisibilityAndSize.default()).toBe(true); }); @@ -58,7 +58,7 @@ describe("Compat - canRelyOnVideoVisibilityAndSize", () => { getFirefoxVersion: () => 60 }; }); const canRelyOnVideoVisibilityAndSize = - require("../can_rely_on_video_visibility_and_size.ts"); + jest.requireActual("../can_rely_on_video_visibility_and_size.ts"); expect(canRelyOnVideoVisibilityAndSize.default()).toBe(true); }); @@ -72,7 +72,7 @@ describe("Compat - canRelyOnVideoVisibilityAndSize", () => { getFirefoxVersion: () => 83 }; }); const canRelyOnVideoVisibilityAndSize = - require("../can_rely_on_video_visibility_and_size.ts"); + jest.requireActual("../can_rely_on_video_visibility_and_size.ts"); expect(canRelyOnVideoVisibilityAndSize.default()).toBe(false); }); }); diff --git a/src/compat/__tests__/clear_element_src.test.ts b/src/compat/__tests__/clear_element_src.test.ts index 474806b373..379181f491 100644 --- a/src/compat/__tests__/clear_element_src.test.ts +++ b/src/compat/__tests__/clear_element_src.test.ts @@ -32,7 +32,7 @@ describe("Compat - clearElementSrc", () => { src: "foo", removeAttribute() { return null; }, }; - const clearElementSrc = require("../clear_element_src").default; + const clearElementSrc = jest.requireActual("../clear_element_src").default; const spyRemoveAttribute = jest.spyOn(fakeElement, "removeAttribute"); clearElementSrc(fakeElement); @@ -46,7 +46,7 @@ describe("Compat - clearElementSrc", () => { src: "foo", removeAttribute() { throw new Error("Oups, can't remove attribute."); }, }; - const clearElementSrc = require("../clear_element_src").default; + const clearElementSrc = jest.requireActual("../clear_element_src").default; const spyRemoveAttribute = jest.spyOn(fakeElement, "removeAttribute"); expect(() => clearElementSrc(fakeElement)) @@ -76,7 +76,7 @@ describe("Compat - clearElementSrc", () => { }, }; - const clearElementSrc = require("../clear_element_src").default; + const clearElementSrc = jest.requireActual("../clear_element_src").default; const spyRemoveAttribute = jest.spyOn(fakeElement, "removeAttribute"); const spyHasChildNodes = jest.spyOn(fakeElement, "hasChildNodes"); @@ -119,7 +119,7 @@ describe("Compat - clearElementSrc", () => { __esModule: true as const, default: { warn: mockLogWarn }, })); - const clearElementSrc = require("../clear_element_src").default; + const clearElementSrc = jest.requireActual("../clear_element_src").default; const spyRemoveAttribute = jest.spyOn(fakeElement, "removeAttribute"); const spyHasChildNodes = jest.spyOn(fakeElement, "hasChildNodes"); @@ -156,7 +156,7 @@ describe("Compat - clearElementSrc", () => { removeChild: () => null, }; - const clearElementSrc = require("../clear_element_src").default; + const clearElementSrc = jest.requireActual("../clear_element_src").default; const spyRemoveAttribute = jest.spyOn(fakeElement, "removeAttribute"); const spyHasChildNodes = jest.spyOn(fakeElement, "hasChildNodes"); @@ -182,7 +182,7 @@ describe("Compat - clearElementSrc", () => { removeChild: () => null, }; - const clearElementSrc = require("../clear_element_src").default; + const clearElementSrc = jest.requireActual("../clear_element_src").default; const spyRemoveAttribute = jest.spyOn(fakeElement, "removeAttribute"); const spyHasChildNodes = jest.spyOn(fakeElement, "hasChildNodes"); @@ -208,7 +208,7 @@ describe("Compat - clearElementSrc", () => { removeChild: () => null, }; - const clearElementSrc = require("../clear_element_src").default; + const clearElementSrc = jest.requireActual("../clear_element_src").default; const spyRemoveAttribute = jest.spyOn(fakeElement, "removeAttribute"); const spyHasChildNodes = jest.spyOn(fakeElement, "hasChildNodes"); @@ -234,7 +234,7 @@ describe("Compat - clearElementSrc", () => { removeChild: () => null, }; - const clearElementSrc = require("../clear_element_src").default; + const clearElementSrc = jest.requireActual("../clear_element_src").default; const spyRemoveAttribute = jest.spyOn(fakeElement, "removeAttribute"); const spyHasChildNodes = jest.spyOn(fakeElement, "hasChildNodes"); diff --git a/src/compat/__tests__/fullscreen.test.ts b/src/compat/__tests__/fullscreen.test.ts index 848eab4d9a..d5c782cdfc 100644 --- a/src/compat/__tests__/fullscreen.test.ts +++ b/src/compat/__tests__/fullscreen.test.ts @@ -52,7 +52,7 @@ describe("compat - isFullScreen", () => { doc.webkitFullscreenElement = undefined; doc.msFullscreenElement = undefined; - const { isFullscreen } = require("../fullscreen"); + const { isFullscreen } = jest.requireActual("../fullscreen"); expect(isFullscreen()).toBe(false); doc.fullscreenElement = origFullscreenElement; @@ -72,7 +72,7 @@ describe("compat - isFullScreen", () => { doc.webkitFullscreenElement = undefined; doc.msFullscreenElement = undefined; - const { isFullscreen } = require("../fullscreen"); + const { isFullscreen } = jest.requireActual("../fullscreen"); expect(isFullscreen()).toBe(true); doc.fullscreenElement = origFullscreenElement; @@ -87,7 +87,7 @@ describe("compat - requestFullscreen", () => { const origFullscreenElement = doc.fullscreenElement; doc.fullscreenElement = undefined; - const { requestFullscreen } = require("../fullscreen"); + const { requestFullscreen } = jest.requireActual("../fullscreen"); const videoElt = doc.createElement("video"); const mockRequestFullscreen = jest.fn(() => doc.fullscreenElement = videoElt); @@ -108,7 +108,7 @@ describe("compat - requestFullscreen", () => { doc.fullscreenElement = undefined; doc.msFullscreenElement = undefined; - const { requestFullscreen } = require("../fullscreen"); + const { requestFullscreen } = jest.requireActual("../fullscreen"); const videoElt = doc.createElement("video"); const mockRequestFullscreen = jest.fn(() => doc.msFullscreenElement = videoElt); @@ -132,7 +132,7 @@ describe("compat - requestFullscreen", () => { doc.msFullscreenElement = undefined; doc.mozFullScreenElement = undefined; - const { requestFullscreen } = require("../fullscreen"); + const { requestFullscreen } = jest.requireActual("../fullscreen"); const videoElt = doc.createElement("video"); const mockRequestFullscreen = jest.fn(() => doc.mozFullScreenElement = videoElt); @@ -159,7 +159,7 @@ describe("compat - requestFullscreen", () => { doc.mozFullScreenElement = undefined; doc.webkitFullscreenElement = undefined; - const { requestFullscreen } = require("../fullscreen"); + const { requestFullscreen } = jest.requireActual("../fullscreen"); const videoElt = doc.createElement("video"); const mockRequestFullscreen = jest.fn(() => doc.webkitFullscreenElement = videoElt); @@ -187,7 +187,7 @@ describe("compat - exitFullScreen", () => { doc.fullscreenElement = undefined; }); - const { exitFullscreen } = require("../fullscreen"); + const { exitFullscreen } = jest.requireActual("../fullscreen"); exitFullscreen(); expect(doc.fullscreenElement).toBe(undefined); @@ -209,7 +209,7 @@ describe("compat - exitFullScreen", () => { doc.msFullscreenElement = undefined; }); - const { exitFullscreen } = require("../fullscreen"); + const { exitFullscreen } = jest.requireActual("../fullscreen"); exitFullscreen(); expect(doc.msFullscreenElement).toBe(undefined); @@ -236,7 +236,7 @@ describe("compat - exitFullScreen", () => { doc.mozCancelFullScreen = jest.fn(() => doc.mozFullScreenElement = undefined); - const { exitFullscreen } = require("../fullscreen"); + const { exitFullscreen } = jest.requireActual("../fullscreen"); exitFullscreen(); expect(doc.mozFullScreenElement).toBe(undefined); @@ -269,7 +269,7 @@ describe("compat - exitFullScreen", () => { doc.webkitExitFullscreen = jest.fn(() => doc.webkitFullscreenElement = undefined); - const { exitFullscreen } = require("../fullscreen"); + const { exitFullscreen } = jest.requireActual("../fullscreen"); exitFullscreen(); expect(doc.webkitFullscreenElement).toBe(undefined); diff --git a/src/compat/__tests__/has_eme_apis.test.ts b/src/compat/__tests__/has_eme_apis.test.ts index fd6654c579..a471dbb323 100644 --- a/src/compat/__tests__/has_eme_apis.test.ts +++ b/src/compat/__tests__/has_eme_apis.test.ts @@ -36,7 +36,7 @@ describe("compat - hasEMEAPIs", () => { requestMediaKeySystemAccess: () => null, }; }); - const hasEMEAPIs = require("../has_eme_apis"); + const hasEMEAPIs = jest.requireActual("../has_eme_apis"); expect(hasEMEAPIs.default()).toBe(true); }); @@ -50,7 +50,7 @@ describe("compat - hasEMEAPIs", () => { requestMediaKeySystemAccess: null, }; }); - const hasEMEAPIs = require("../has_eme_apis"); + const hasEMEAPIs = jest.requireActual("../has_eme_apis"); expect(hasEMEAPIs.default()).toBe(false); }); }); diff --git a/src/compat/__tests__/is_codec_supported.test.ts b/src/compat/__tests__/is_codec_supported.test.ts index f24c377dba..f49e772728 100644 --- a/src/compat/__tests__/is_codec_supported.test.ts +++ b/src/compat/__tests__/is_codec_supported.test.ts @@ -33,7 +33,7 @@ describe("Compat - isCodecSupported", () => { MediaSource_: undefined, }; }); - const isCodecSupported = require("../is_codec_supported").default; + const isCodecSupported = jest.requireActual("../is_codec_supported").default; expect(isCodecSupported("foo")).toEqual(false); expect(isCodecSupported("")).toEqual(false); }); @@ -47,7 +47,7 @@ describe("Compat - isCodecSupported", () => { MediaSource_: { isTypeSupported: undefined }, }; }); - const isCodecSupported = require("../is_codec_supported").default; + const isCodecSupported = jest.requireActual("../is_codec_supported").default; expect(isCodecSupported("foo")).toEqual(true); expect(isCodecSupported("")).toEqual(true); }); @@ -59,7 +59,7 @@ describe("Compat - isCodecSupported", () => { MediaSource_: { isTypeSupported(_codec : string) { return true; } }, }; }); - const isCodecSupported = require("../is_codec_supported").default; + const isCodecSupported = jest.requireActual("../is_codec_supported").default; expect(isCodecSupported("foo")).toEqual(true); expect(isCodecSupported("")).toEqual(true); }); @@ -71,7 +71,7 @@ describe("Compat - isCodecSupported", () => { MediaSource_: { isTypeSupported(_codec : string) { return false; } }, }; }); - const isCodecSupported = require("../is_codec_supported").default; + const isCodecSupported = jest.requireActual("../is_codec_supported").default; expect(isCodecSupported("foo")).toEqual(false); expect(isCodecSupported("")).toEqual(false); }); diff --git a/src/compat/__tests__/is_offline.test.ts b/src/compat/__tests__/is_offline.test.ts index 01060bd018..d3cbdf3370 100644 --- a/src/compat/__tests__/is_offline.test.ts +++ b/src/compat/__tests__/is_offline.test.ts @@ -34,7 +34,7 @@ xdescribe("Compat - isOffline", () => { it("should return true if navigator.onLine is `false`", () => { const oldNavigator = win.navigator; win.navigator = { onLine: false }; - const isOffline = require("../is_offline").default; + const isOffline = jest.requireActual("../is_offline").default; expect(isOffline()).toEqual(true); win.navigator = oldNavigator; }); @@ -42,7 +42,7 @@ xdescribe("Compat - isOffline", () => { it("should return false if navigator.onLine is `true`", () => { const oldNavigator = win.navigator; win.navigator = { onLine: true }; - const isOffline = require("../is_offline").default; + const isOffline = jest.requireActual("../is_offline").default; expect(isOffline()).toEqual(false); win.navigator = oldNavigator; }); @@ -50,7 +50,7 @@ xdescribe("Compat - isOffline", () => { it("should return false if navigator.onLine is `undefined`", () => { const oldNavigator = win.navigator; win.navigator = {}; - const isOffline = require("../is_offline").default; + const isOffline = jest.requireActual("../is_offline").default; expect(isOffline()).toEqual(false); win.navigator = oldNavigator; }); @@ -58,7 +58,7 @@ xdescribe("Compat - isOffline", () => { it("should return false if navigator.onLine is `null`", () => { const oldNavigator = win.navigator; win.navigator = { onLine: null }; - const isOffline = require("../is_offline").default; + const isOffline = jest.requireActual("../is_offline").default; expect(isOffline()).toEqual(false); win.navigator = oldNavigator; }); diff --git a/src/compat/__tests__/is_seeking_approximate.test.ts b/src/compat/__tests__/is_seeking_approximate.test.ts index d24c027d62..834d2a2a4f 100644 --- a/src/compat/__tests__/is_seeking_approximate.test.ts +++ b/src/compat/__tests__/is_seeking_approximate.test.ts @@ -32,7 +32,7 @@ describe("isSeekingApproximate", () => { isTizen: true }; }); const shouldAppendBufferAfterPadding = - require("../is_seeking_approximate").default; + jest.requireActual("../is_seeking_approximate").default; expect(shouldAppendBufferAfterPadding).toBe(true); }); @@ -42,7 +42,7 @@ describe("isSeekingApproximate", () => { isTizen: false }; }); const shouldAppendBufferAfterPadding = - require("../is_seeking_approximate").default; + jest.requireActual("../is_seeking_approximate").default; expect(shouldAppendBufferAfterPadding).toBe(false); }); }); diff --git a/src/compat/__tests__/is_vtt_cue.test.ts b/src/compat/__tests__/is_vtt_cue.test.ts index 221adbdc67..c96e782444 100644 --- a/src/compat/__tests__/is_vtt_cue.test.ts +++ b/src/compat/__tests__/is_vtt_cue.test.ts @@ -41,7 +41,7 @@ describe("Compat - isVTTCue", () => { const originalVTTCue = window.VTTCue; win.VTTCue = MockVTTCue; const cue = new VTTCue(0, 10, ""); - const isVTTCue = require("../is_vtt_cue").default; + const isVTTCue = jest.requireActual("../is_vtt_cue").default; expect(isVTTCue(cue)).toEqual(true); window.VTTCue = originalVTTCue; }); @@ -54,7 +54,7 @@ describe("Compat - isVTTCue", () => { endTime: 10, text: "toto", }; - const isVTTCue = require("../is_vtt_cue").default; + const isVTTCue = jest.requireActual("../is_vtt_cue").default; expect(isVTTCue(cue)).toEqual(false); window.VTTCue = originalVTTCue; }); @@ -64,7 +64,7 @@ describe("Compat - isVTTCue", () => { win.VTTCue = MockVTTCue; const cue = new VTTCue(0, 10, ""); delete win.VTTCue; - const isVTTCue = require("../is_vtt_cue").default; + const isVTTCue = jest.requireActual("../is_vtt_cue").default; expect(isVTTCue(cue)).toEqual(false); window.VTTCue = originalVTTCue; }); diff --git a/src/compat/__tests__/make_vtt_cue.test.ts b/src/compat/__tests__/make_vtt_cue.test.ts index 93abf20b62..d91df70827 100644 --- a/src/compat/__tests__/make_vtt_cue.test.ts +++ b/src/compat/__tests__/make_vtt_cue.test.ts @@ -47,14 +47,14 @@ describe("Compat - makeVTTCue", () => { }); it("should throw if nor VTTCue nor TextTrackCue is available", () => { - const logSpy = { warn: jest.fn() }; + const mockLog = { warn: jest.fn() }; win.VTTCue = undefined; win.TextTrackCue = undefined; jest.mock("../../log", () => ({ __esModule: true as const, - default: logSpy, + default: mockLog, })); - const makeCue = require("../make_vtt_cue").default; + const makeCue = jest.requireActual("../make_vtt_cue").default; let result; let error; try { @@ -65,33 +65,33 @@ describe("Compat - makeVTTCue", () => { expect(error).toBeInstanceOf(Error); expect((error as Error).message).toEqual("VTT cues not supported in your target"); expect(result).toBe(undefined); - expect(logSpy.warn).not.toHaveBeenCalled(); + expect(mockLog.warn).not.toHaveBeenCalled(); }); it("should warn and not create anything if start time is after end time", () => { - const logSpy = { warn: jest.fn() }; + const mockLog = { warn: jest.fn() }; win.VTTCue = MockVTTCue; jest.mock("../../log", () => ({ __esModule: true as const, - default: logSpy, + default: mockLog, })); - const makeCue = require("../make_vtt_cue").default; + const makeCue = jest.requireActual("../make_vtt_cue").default; const result = makeCue(12, 10, "toto"); expect(result).toBeNull(); - expect(logSpy.warn).toHaveBeenCalledTimes(1); - expect(logSpy.warn).toHaveBeenCalledWith("Compat: Invalid cue times: 12 - 10"); + expect(mockLog.warn).toHaveBeenCalledTimes(1); + expect(mockLog.warn).toHaveBeenCalledWith("Compat: Invalid cue times: 12 - 10"); }); it("should create a new VTT Cue in other cases", () => { - const logSpy = { warn: jest.fn() }; + const mockLog = { warn: jest.fn() }; win.VTTCue = MockVTTCue; jest.mock("../../log", () => ({ __esModule: true as const, - default: logSpy, + default: mockLog, })); - const makeCue = require("../make_vtt_cue").default; + const makeCue = jest.requireActual("../make_vtt_cue").default; const result = makeCue(10, 12, "toto"); expect(result).toEqual(new MockVTTCue(10, 12, "toto")); - expect(logSpy.warn).not.toHaveBeenCalled(); + expect(mockLog.warn).not.toHaveBeenCalled(); }); }); diff --git a/src/compat/__tests__/play.test.ts b/src/compat/__tests__/play.test.ts index 80cb563a71..0136fc1e1a 100644 --- a/src/compat/__tests__/play.test.ts +++ b/src/compat/__tests__/play.test.ts @@ -26,7 +26,7 @@ describe("compat - play", () => { const mockPlay = jest.fn(() => Promise.resolve()); const fakeMediaElement = { play: mockPlay }; - const play$ = require("../play").default; + const play$ = jest.requireActual("../play").default; play$(fakeMediaElement).subscribe(() => { expect(mockPlay).toHaveBeenCalledTimes(1); done(); @@ -37,7 +37,7 @@ describe("compat - play", () => { const mockPlay = jest.fn(); const fakeMediaElement = { play: mockPlay }; - const play$ = require("../play").default; + const play$ = jest.requireActual("../play").default; play$(fakeMediaElement).subscribe(() => { done(); }); @@ -50,7 +50,7 @@ describe("compat - play", () => { }); const fakeMediaElement = { play: mockPlay }; - const play$ = require("../play").default; + const play$ = jest.requireActual("../play").default; play$(fakeMediaElement).subscribe(() => null, (err: unknown) => { expect(err).toBe(notAllowedError); done(); @@ -64,7 +64,7 @@ describe("compat - play", () => { }); const fakeMediaElement = { play: mockPlay }; - const play$ = require("../play").default; + const play$ = jest.requireActual("../play").default; play$(fakeMediaElement).subscribe(() => null, (err: unknown) => { expect(err).toBe(notAllowedError); done(); diff --git a/src/compat/__tests__/remove_cue.test.ts b/src/compat/__tests__/remove_cue.test.ts index 437a179e9a..c665aac88c 100644 --- a/src/compat/__tests__/remove_cue.test.ts +++ b/src/compat/__tests__/remove_cue.test.ts @@ -55,7 +55,7 @@ describe("compat - removeCue", () => { isFirefox: false, })); - const removeCue = require("../remove_cue").default; + const removeCue = jest.requireActual("../remove_cue").default; removeCue(fakeTrack, { id: "1" }); expect(fakeTrack.cues.length).toBe(0); @@ -99,7 +99,7 @@ describe("compat - removeCue", () => { isFirefox: true, })); - const removeCue = require("../remove_cue").default; + const removeCue = jest.requireActual("../remove_cue").default; removeCue(fakeTrack, fakeCue); expect(fakeTrack.cues.length).toBe(0); @@ -143,7 +143,7 @@ describe("compat - removeCue", () => { isFirefox: true, })); - const removeCue = require("../remove_cue").default; + const removeCue = jest.requireActual("../remove_cue").default; removeCue(fakeTrack, fakeCue); expect(fakeTrack.cues.length).toBe(0); @@ -180,7 +180,7 @@ describe("compat - removeCue", () => { removeCue: mockRemoveCue, }; - const removeCue = require("../remove_cue").default; + const removeCue = jest.requireActual("../remove_cue").default; removeCue(fakeTrack, fakeCue); expect(fakeTrack.cues.length).toBe(1); @@ -216,7 +216,7 @@ describe("compat - removeCue", () => { removeCue: mockRemoveCue, }; - const removeCue = require("../remove_cue").default; + const removeCue = jest.requireActual("../remove_cue").default; removeCue(fakeTrack, { id: "1" }); expect(fakeTrack.cues.length).toBe(1); diff --git a/src/compat/__tests__/set_element_src.test.ts b/src/compat/__tests__/set_element_src.test.ts index 48514e2db1..f6a455ce07 100644 --- a/src/compat/__tests__/set_element_src.test.ts +++ b/src/compat/__tests__/set_element_src.test.ts @@ -50,7 +50,7 @@ describe("compat - setElementSrc", () => { })); const fakeURL = "blob:http://fakeURL"; - const setElementSrc = require("../set_element_src").default; + const setElementSrc = jest.requireActual("../set_element_src").default; const setElementSrc$ = setElementSrc(fakeMediaElement, fakeURL); const subscribe = setElementSrc$.pipe( diff --git a/src/compat/__tests__/should_favour_custom_safari_EME.test.ts b/src/compat/__tests__/should_favour_custom_safari_EME.test.ts index b381b3d453..1a94b72433 100644 --- a/src/compat/__tests__/should_favour_custom_safari_EME.test.ts +++ b/src/compat/__tests__/should_favour_custom_safari_EME.test.ts @@ -43,7 +43,8 @@ describe("compat - shouldFavourSafariMediaKeys", () => { isSafariDesktop: false, isSafariMobile: false }; }); - const shouldFavourCustomSafariEME = require("../should_favour_custom_safari_EME"); + const shouldFavourCustomSafariEME = + jest.requireActual("../should_favour_custom_safari_EME"); expect(shouldFavourCustomSafariEME.default()).toBe(false); }); @@ -57,7 +58,8 @@ describe("compat - shouldFavourSafariMediaKeys", () => { isSafariDesktop: true, isSafariMobile: false }; }); - const shouldFavourCustomSafariEME = require("../should_favour_custom_safari_EME"); + const shouldFavourCustomSafariEME = + jest.requireActual("../should_favour_custom_safari_EME"); expect(shouldFavourCustomSafariEME.default()).toBe(false); }); @@ -71,7 +73,8 @@ describe("compat - shouldFavourSafariMediaKeys", () => { isSafariDesktop: false, isSafariMobile: true }; }); - const shouldFavourCustomSafariEME = require("../should_favour_custom_safari_EME"); + const shouldFavourCustomSafariEME = + jest.requireActual("../should_favour_custom_safari_EME"); expect(shouldFavourCustomSafariEME.default()).toBe(false); }); @@ -94,7 +97,8 @@ describe("compat - shouldFavourSafariMediaKeys", () => { isSafariDesktop: true, isSafariMobile: false }; }); - const shouldFavourCustomSafariEME = require("../should_favour_custom_safari_EME"); + const shouldFavourCustomSafariEME = + jest.requireActual("../should_favour_custom_safari_EME"); expect(shouldFavourCustomSafariEME.default()).toBe(true); }); @@ -117,7 +121,8 @@ describe("compat - shouldFavourSafariMediaKeys", () => { isSafariDesktop: false, isSafariMobile: true }; }); - const shouldFavourCustomSafariEME = require("../should_favour_custom_safari_EME"); + const shouldFavourCustomSafariEME = + jest.requireActual("../should_favour_custom_safari_EME"); expect(shouldFavourCustomSafariEME.default()).toBe(true); }); }); diff --git a/src/compat/__tests__/should_renew_media_keys.test.ts b/src/compat/__tests__/should_renew_media_keys.test.ts index 6cb572b8e7..bd285109fc 100644 --- a/src/compat/__tests__/should_renew_media_keys.test.ts +++ b/src/compat/__tests__/should_renew_media_keys.test.ts @@ -33,7 +33,7 @@ describe("compat - shouldRenewMediaKeys", () => { isIE11: false, }; }); - const shouldRenewMediaKeys = require("../should_renew_media_keys"); + const shouldRenewMediaKeys = jest.requireActual("../should_renew_media_keys"); expect(shouldRenewMediaKeys.default()).toBe(false); }); @@ -44,7 +44,7 @@ describe("compat - shouldRenewMediaKeys", () => { isIE11: true, }; }); - const shouldRenewMediaKeys = require("../should_renew_media_keys"); + const shouldRenewMediaKeys = jest.requireActual("../should_renew_media_keys"); expect(shouldRenewMediaKeys.default()).toBe(true); }); beforeEach(() => { diff --git a/src/compat/__tests__/should_unset_media_keys.test.ts b/src/compat/__tests__/should_unset_media_keys.test.ts index e1bb04d351..7444916389 100644 --- a/src/compat/__tests__/should_unset_media_keys.test.ts +++ b/src/compat/__tests__/should_unset_media_keys.test.ts @@ -33,7 +33,7 @@ describe("compat - shouldUnsetMediaKeys", () => { isIE11: false, }; }); - const shouldUnsetMediaKeys = require("../should_unset_media_keys"); + const shouldUnsetMediaKeys = jest.requireActual("../should_unset_media_keys"); expect(shouldUnsetMediaKeys.default()).toBe(false); }); @@ -44,7 +44,7 @@ describe("compat - shouldUnsetMediaKeys", () => { isIE11: true, }; }); - const shouldUnsetMediaKeys = require("../should_unset_media_keys"); + const shouldUnsetMediaKeys = jest.requireActual("../should_unset_media_keys"); expect(shouldUnsetMediaKeys.default()).toBe(true); }); beforeEach(() => { diff --git a/src/compat/__tests__/should_validate_metadata.test.ts b/src/compat/__tests__/should_validate_metadata.test.ts index 8734a98588..1630e5e30b 100644 --- a/src/compat/__tests__/should_validate_metadata.test.ts +++ b/src/compat/__tests__/should_validate_metadata.test.ts @@ -33,7 +33,7 @@ describe("compat - shouldValidateMetadata", () => { isSamsungBrowser: false, }; }); - const shouldValidateMetadata = require("../should_validate_metadata"); + const shouldValidateMetadata = jest.requireActual("../should_validate_metadata"); expect(shouldValidateMetadata.default()).toBe(false); }); @@ -44,7 +44,7 @@ describe("compat - shouldValidateMetadata", () => { isSamsungBrowser: true, }; }); - const shouldValidateMetadata = require("../should_validate_metadata"); + const shouldValidateMetadata = jest.requireActual("../should_validate_metadata"); expect(shouldValidateMetadata.default()).toBe(true); }); beforeEach(() => { diff --git a/src/compat/__tests__/should_wait_for_data_before_loaded.test.ts b/src/compat/__tests__/should_wait_for_data_before_loaded.test.ts index 0154a44399..1ebcd283e7 100644 --- a/src/compat/__tests__/should_wait_for_data_before_loaded.test.ts +++ b/src/compat/__tests__/should_wait_for_data_before_loaded.test.ts @@ -34,7 +34,7 @@ describe("compat - shouldWaitForDataBeforeLoaded", () => { }; }); const shouldWaitForDataBeforeLoaded = - require("../should_wait_for_data_before_loaded"); + jest.requireActual("../should_wait_for_data_before_loaded"); expect(shouldWaitForDataBeforeLoaded.default(false, true)).toBe(true); }); @@ -46,7 +46,7 @@ describe("compat - shouldWaitForDataBeforeLoaded", () => { }; }); const shouldWaitForDataBeforeLoaded = - require("../should_wait_for_data_before_loaded"); + jest.requireActual("../should_wait_for_data_before_loaded"); expect(shouldWaitForDataBeforeLoaded.default(true, false)).toBe(true); }); @@ -60,7 +60,7 @@ describe("compat - shouldWaitForDataBeforeLoaded", () => { }; }); const shouldWaitForDataBeforeLoaded = - require("../should_wait_for_data_before_loaded"); + jest.requireActual("../should_wait_for_data_before_loaded"); expect(shouldWaitForDataBeforeLoaded.default(false, false)).toBe(true); }); @@ -73,7 +73,7 @@ describe("compat - shouldWaitForDataBeforeLoaded", () => { }; }); const shouldWaitForDataBeforeLoaded = - require("../should_wait_for_data_before_loaded"); + jest.requireActual("../should_wait_for_data_before_loaded"); expect(shouldWaitForDataBeforeLoaded.default(true, false)).toBe(false); }); @@ -86,7 +86,7 @@ describe("compat - shouldWaitForDataBeforeLoaded", () => { }; }); const shouldWaitForDataBeforeLoaded = - require("../should_wait_for_data_before_loaded"); + jest.requireActual("../should_wait_for_data_before_loaded"); expect(shouldWaitForDataBeforeLoaded.default(true, true)).toBe(true); }); @@ -99,7 +99,7 @@ describe("compat - shouldWaitForDataBeforeLoaded", () => { }; }); const shouldWaitForDataBeforeLoaded = - require("../should_wait_for_data_before_loaded"); + jest.requireActual("../should_wait_for_data_before_loaded"); expect(shouldWaitForDataBeforeLoaded.default(false, true)).toBe(true); }); @@ -112,7 +112,7 @@ describe("compat - shouldWaitForDataBeforeLoaded", () => { }; }); const shouldWaitForDataBeforeLoaded = - require("../should_wait_for_data_before_loaded"); + jest.requireActual("../should_wait_for_data_before_loaded"); expect(shouldWaitForDataBeforeLoaded.default(true, false)).toBe(true); }); beforeEach(() => { diff --git a/src/compat/__tests__/when_loaded_metadata.test.ts b/src/compat/__tests__/when_loaded_metadata.test.ts index df986b589e..0cdfbd457f 100644 --- a/src/compat/__tests__/when_loaded_metadata.test.ts +++ b/src/compat/__tests__/when_loaded_metadata.test.ts @@ -52,7 +52,7 @@ describe("compat - whenLoadedMetadata$", () => { onLoadedMetadata$: mockOnLoadedMetadata$, })); - const whenLoadedMetadata$ = require("../when_loaded_metadata").default; + const whenLoadedMetadata$ = jest.requireActual("../when_loaded_metadata").default; whenLoadedMetadata$(fakeMediaElement).subscribe(() => { expect(fakeMediaElement.readyState).toBe(1); expect(mockOnLoadedMetadata$).toHaveBeenCalledTimes(1); @@ -77,7 +77,7 @@ describe("compat - whenLoadedMetadata$", () => { onLoadedMetadata$: mockOnLoadedMetadata$, })); - const whenLoadedMetadata$ = require("../when_loaded_metadata").default; + const whenLoadedMetadata$ = jest.requireActual("../when_loaded_metadata").default; whenLoadedMetadata$(fakeMediaElement).pipe( finalize(() => { expect(fakeMediaElement.readyState).toBe(1); @@ -99,7 +99,7 @@ describe("compat - whenLoadedMetadata$", () => { onLoadedMetadata$: mockOnLoadedMetadata$, })); - const whenLoadedMetadata$ = require("../when_loaded_metadata").default; + const whenLoadedMetadata$ = jest.requireActual("../when_loaded_metadata").default; whenLoadedMetadata$(fakeMediaElement).subscribe(() => { expect(fakeMediaElement.readyState).toBe(1); expect(mockOnLoadedMetadata$).not.toHaveBeenCalled(); diff --git a/src/core/adaptive/__tests__/buffer_based_chooser.test.ts b/src/core/adaptive/__tests__/buffer_based_chooser.test.ts index ec0ddfe22a..36d389ff60 100644 --- a/src/core/adaptive/__tests__/buffer_based_chooser.test.ts +++ b/src/core/adaptive/__tests__/buffer_based_chooser.test.ts @@ -30,7 +30,7 @@ describe("BufferBasedChooser", () => { const logger = { debug: jest.fn() }; jest.mock("../../../log", () => ({ __esModule: true as const, default: logger })); - const BufferBasedChooser = require("../buffer_based_chooser").default; + const BufferBasedChooser = jest.requireActual("../buffer_based_chooser").default; expect(new BufferBasedChooser([]).getEstimate({ bufferGap: 0, speed: 1 })) .toEqual(undefined); expect(new BufferBasedChooser([1, 2, 3]).getEstimate({ @@ -62,7 +62,7 @@ describe("BufferBasedChooser", () => { const logger = { debug: jest.fn(), error: jest.fn() }; jest.mock("../../../log", () => ({ __esModule: true as const, default: logger })); - const BufferBasedChooser = require("../buffer_based_chooser").default; + const BufferBasedChooser = jest.requireActual("../buffer_based_chooser").default; expect(new BufferBasedChooser([10, 20]).getEstimate({ bufferGap: 0, @@ -81,7 +81,7 @@ describe("BufferBasedChooser", () => { const logger = { debug: jest.fn() }; jest.mock("../../../log", () => ({ __esModule: true as const, default: logger })); - const BufferBasedChooser = require("../buffer_based_chooser").default; + const BufferBasedChooser = jest.requireActual("../buffer_based_chooser").default; expect(new BufferBasedChooser([10, 20, 40]).getEstimate({ bufferGap: 16, speed: 1, @@ -126,7 +126,7 @@ describe("BufferBasedChooser", () => { const logger = { debug: jest.fn() }; jest.mock("../../../log", () => ({ __esModule: true as const, default: logger })); - const BufferBasedChooser = require("../buffer_based_chooser").default; + const BufferBasedChooser = jest.requireActual("../buffer_based_chooser").default; expect(new BufferBasedChooser([10, 20, 40]).getEstimate({ bufferGap: 15, speed: 1, @@ -171,7 +171,7 @@ describe("BufferBasedChooser", () => { const logger = { debug: jest.fn() }; jest.mock("../../../log", () => ({ __esModule: true as const, default: logger })); - const BufferBasedChooser = require("../buffer_based_chooser").default; + const BufferBasedChooser = jest.requireActual("../buffer_based_chooser").default; expect(new BufferBasedChooser([10, 20, 40]).getEstimate({ bufferGap: 6, speed: 1, @@ -210,7 +210,7 @@ describe("BufferBasedChooser", () => { const logger = { debug: jest.fn() }; jest.mock("../../../log", () => ({ __esModule: true as const, default: logger })); - const BufferBasedChooser = require("../buffer_based_chooser") + const BufferBasedChooser = jest.requireActual("../buffer_based_chooser") .default; expect(new BufferBasedChooser([10, 20, 40]).getEstimate({ bufferGap: 100000000000, @@ -232,7 +232,7 @@ describe("BufferBasedChooser", () => { const logger = { debug: jest.fn() }; jest.mock("../../../log", () => ({ __esModule: true as const, default: logger })); - const BufferBasedChooser = require("../buffer_based_chooser").default; + const BufferBasedChooser = jest.requireActual("../buffer_based_chooser").default; expect(new BufferBasedChooser([10, 20, 40]).getEstimate({ bufferGap: 15, speed: 2, @@ -271,7 +271,7 @@ describe("BufferBasedChooser", () => { const logger = { debug: jest.fn() }; jest.mock("../../../log", () => ({ __esModule: true as const, default: logger })); - const BufferBasedChooser = require("../buffer_based_chooser").default; + const BufferBasedChooser = jest.requireActual("../buffer_based_chooser").default; expect(new BufferBasedChooser([10, 20, 40]).getEstimate({ bufferGap: 15, speed: 1, diff --git a/src/core/api/__tests__/public_api.test.ts b/src/core/api/__tests__/public_api.test.ts index c546231297..4ea8b8bdda 100644 --- a/src/core/api/__tests__/public_api.test.ts +++ b/src/core/api/__tests__/public_api.test.ts @@ -16,7 +16,6 @@ /* eslint-disable @typescript-eslint/no-unsafe-assignment */ /* eslint-disable @typescript-eslint/no-unsafe-member-access */ -/* eslint-disable @typescript-eslint/no-var-requires */ /* eslint-disable @typescript-eslint/no-unsafe-call */ /* eslint-disable @typescript-eslint/no-unsafe-assignment */ /* eslint-disable @typescript-eslint/no-unsafe-return */ @@ -29,14 +28,14 @@ describe("API - Public API", () => { describe("static properties", () => { describe("ErrorTypes", () => { it("should expose static ErrorTypes property", () => { - const PublicAPI = require("../public_api").default; + const PublicAPI = jest.requireActual("../public_api").default; expect(typeof PublicAPI.ErrorTypes).toBe("object"); }); }); describe("ErrorCodes", () => { it("should expose static ErrorCodes property", () => { - const PublicAPI = require("../public_api").default; + const PublicAPI = jest.requireActual("../public_api").default; expect(typeof PublicAPI.ErrorTypes).toBe("object"); }); }); @@ -45,7 +44,7 @@ describe("API - Public API", () => { describe("public methods", () => { describe("getError", () => { it("should have no error by default", () => { - const PublicAPI = require("../public_api").default; + const PublicAPI = jest.requireActual("../public_api").default; const player = new PublicAPI(); expect(player.getError()).toBe(null); }); @@ -53,7 +52,7 @@ describe("API - Public API", () => { describe("getManifest", () => { it("should return null in getManifest by default", () => { - const PublicAPI = require("../public_api").default; + const PublicAPI = jest.requireActual("../public_api").default; const player = new PublicAPI(); expect(player.getManifest()).toBe(null); }); @@ -61,7 +60,7 @@ describe("API - Public API", () => { describe("getCurrentAdaptations", () => { it("should return null in getCurrentAdaptations by default", () => { - const PublicAPI = require("../public_api").default; + const PublicAPI = jest.requireActual("../public_api").default; const player = new PublicAPI(); expect(player.getCurrentAdaptations()).toBe(null); }); @@ -69,7 +68,7 @@ describe("API - Public API", () => { describe("getCurrentRepresentations", () => { it("should return null in getCurrentRepresentations by default", () => { - const PublicAPI = require("../public_api").default; + const PublicAPI = jest.requireActual("../public_api").default; const player = new PublicAPI(); expect(player.getCurrentRepresentations()).toBe(null); }); @@ -85,7 +84,7 @@ describe("API - Public API", () => { describe("getPlayerState", () => { it("should return \"STOPPED\" in getPlayerState by default", () => { - const PublicAPI = require("../public_api").default; + const PublicAPI = jest.requireActual("../public_api").default; const player = new PublicAPI(); expect(player.getPlayerState()).toBe("STOPPED"); }); @@ -93,7 +92,7 @@ describe("API - Public API", () => { describe("isLive", () => { it("should return false in isLive by default", () => { - const PublicAPI = require("../public_api").default; + const PublicAPI = jest.requireActual("../public_api").default; const player = new PublicAPI(); expect(player.isLive()).toBe(false); }); @@ -101,7 +100,7 @@ describe("API - Public API", () => { describe("getUrl", () => { it("should return undefined in getUrl by default", () => { - const PublicAPI = require("../public_api").default; + const PublicAPI = jest.requireActual("../public_api").default; const player = new PublicAPI(); expect(player.getUrl()).toBe(undefined); }); @@ -111,7 +110,7 @@ describe("API - Public API", () => { /* eslint-disable max-len */ it("should return the video element initial duration in getVideoDuration by default", () => { /* eslint-enable max-len */ - const PublicAPI = require("../public_api").default; + const PublicAPI = jest.requireActual("../public_api").default; const player = new PublicAPI(); // ! HAHA ! NaN is not === to NaN @@ -127,7 +126,7 @@ describe("API - Public API", () => { describe("getVideoBufferGap", () => { it("should return Infinity in getVideoBufferGap by default", () => { - const PublicAPI = require("../public_api").default; + const PublicAPI = jest.requireActual("../public_api").default; const player = new PublicAPI(); expect(player.getVideoBufferGap()).toBe(Infinity); }); @@ -135,7 +134,7 @@ describe("API - Public API", () => { describe("getVideoLoadedTime", () => { it("should return 0 in getVideoLoadedTime by default", () => { - const PublicAPI = require("../public_api").default; + const PublicAPI = jest.requireActual("../public_api").default; const player = new PublicAPI(); expect(player.getVideoLoadedTime()).toBe(0); }); @@ -143,7 +142,7 @@ describe("API - Public API", () => { describe("getVideoPlayedTime", () => { it("should return 0 in getVideoPlayedTime by default", () => { - const PublicAPI = require("../public_api").default; + const PublicAPI = jest.requireActual("../public_api").default; const player = new PublicAPI(); expect(player.getVideoPlayedTime()).toBe(0); }); @@ -151,7 +150,7 @@ describe("API - Public API", () => { describe("getWallClockTime", () => { it("should return 0 in getWallClockTime by default", () => { - const PublicAPI = require("../public_api").default; + const PublicAPI = jest.requireActual("../public_api").default; const player = new PublicAPI(); expect(player.getWallClockTime()).toBe(0); }); @@ -159,7 +158,7 @@ describe("API - Public API", () => { describe("getPosition", () => { it("should return 0 in getPosition by default", () => { - const PublicAPI = require("../public_api").default; + const PublicAPI = jest.requireActual("../public_api").default; const player = new PublicAPI(); expect(player.getPosition()).toBe(0); }); @@ -167,7 +166,7 @@ describe("API - Public API", () => { describe("getPlaybackRate", () => { it("should return 1 in getPlaybackRate by default", () => { - const PublicAPI = require("../public_api").default; + const PublicAPI = jest.requireActual("../public_api").default; const player = new PublicAPI(); expect(player.getPlaybackRate()).toBe(1); }); @@ -175,7 +174,7 @@ describe("API - Public API", () => { describe("getVolume", () => { it("should return 1 in getVolume by default", () => { - const PublicAPI = require("../public_api").default; + const PublicAPI = jest.requireActual("../public_api").default; const player = new PublicAPI(); expect(player.getVolume()).toBe(1); }); @@ -191,7 +190,7 @@ describe("API - Public API", () => { describe("getAvailableVideoBitrates", () => { it("should return [] in getAvailableVideoBitrates by default", () => { - const PublicAPI = require("../public_api").default; + const PublicAPI = jest.requireActual("../public_api").default; const player = new PublicAPI(); expect(player.getAvailableVideoBitrates()).toEqual([]); }); @@ -199,7 +198,7 @@ describe("API - Public API", () => { describe("getAvailableAudioBitrates", () => { it("should return [] in getAvailableAudioBitrates by default", () => { - const PublicAPI = require("../public_api").default; + const PublicAPI = jest.requireActual("../public_api").default; const player = new PublicAPI(); expect(player.getAvailableAudioBitrates()).toEqual([]); }); @@ -207,7 +206,7 @@ describe("API - Public API", () => { describe("getVideoBitrate", () => { it("should return undefined in getVideoBitrate by default", () => { - const PublicAPI = require("../public_api").default; + const PublicAPI = jest.requireActual("../public_api").default; const player = new PublicAPI(); expect(player.getVideoBitrate()).toBe(undefined); }); @@ -215,7 +214,7 @@ describe("API - Public API", () => { describe("getAudioBitrate", () => { it("should return undefined in getAudioBitrate by default", () => { - const PublicAPI = require("../public_api").default; + const PublicAPI = jest.requireActual("../public_api").default; const player = new PublicAPI(); expect(player.getVideoBitrate()).toBe(undefined); }); @@ -223,7 +222,7 @@ describe("API - Public API", () => { describe("getMaxVideoBitrate", () => { it("should return Infinity in getMaxVideoBitrate by default", () => { - const PublicAPI = require("../public_api").default; + const PublicAPI = jest.requireActual("../public_api").default; const player = new PublicAPI(); expect(player.getMaxVideoBitrate()).toBe(Infinity); }); @@ -231,7 +230,7 @@ describe("API - Public API", () => { describe("getMaxAudioBitrate", () => { it("should return Infinity in getMaxAudioBitrate by default", () => { - const PublicAPI = require("../public_api").default; + const PublicAPI = jest.requireActual("../public_api").default; const player = new PublicAPI(); expect(player.getMaxAudioBitrate()).toBe(Infinity); }); @@ -239,7 +238,7 @@ describe("API - Public API", () => { describe("getWantedBufferAhead", () => { it("should return 30 in getWantedBufferAhead by default", () => { - const PublicAPI = require("../public_api").default; + const PublicAPI = jest.requireActual("../public_api").default; const player = new PublicAPI(); expect(player.getWantedBufferAhead()).toBe(30); }); @@ -247,7 +246,7 @@ describe("API - Public API", () => { describe("getMaxBufferBehind", () => { it("should return Infinity in getMaxBufferBehind by default", () => { - const PublicAPI = require("../public_api").default; + const PublicAPI = jest.requireActual("../public_api").default; const player = new PublicAPI(); expect(player.getMaxBufferBehind()).toBe(Infinity); }); @@ -255,7 +254,7 @@ describe("API - Public API", () => { describe("getMaxBufferAhead", () => { it("should return Infinity in getMaxBufferAhead by default", () => { - const PublicAPI = require("../public_api").default; + const PublicAPI = jest.requireActual("../public_api").default; const player = new PublicAPI(); expect(player.getMaxBufferAhead()).toBe(Infinity); }); @@ -263,7 +262,7 @@ describe("API - Public API", () => { describe("getPlaybackRate/setPlaybackRate", () => { it("should allow to change the playback rate through setPlaybackRate", () => { - const PublicAPI = require("../public_api").default; + const PublicAPI = jest.requireActual("../public_api").default; const player = new PublicAPI(); player.setPlaybackRate(4); expect(player.getPlaybackRate()).toBe(4); @@ -287,7 +286,7 @@ describe("API - Public API", () => { describe("seekTo", () => { it("should throw in seekTo by default", () => { - const PublicAPI = require("../public_api").default; + const PublicAPI = jest.requireActual("../public_api").default; const player = new PublicAPI(); expect(() => player.seekTo(10)).toThrow(); expect(() => player.seekTo(54)).toThrow(); @@ -320,7 +319,7 @@ describe("API - Public API", () => { describe("getVolume/setVolume", () => { it("should throw in setVolume by default if no volume has been given", () => { - const PublicAPI = require("../public_api").default; + const PublicAPI = jest.requireActual("../public_api").default; const player = new PublicAPI(); expect(() => player.setVolume(5)).toThrow(); }); @@ -328,7 +327,7 @@ describe("API - Public API", () => { /* eslint-disable max-len */ it("should set the volume in setVolume by default if a volume has been given", () => { /* eslint-enable max-len */ - const PublicAPI = require("../public_api").default; + const PublicAPI = jest.requireActual("../public_api").default; const player = new PublicAPI(); const videoElement = player.getVideoElement(); if (videoElement == null) { @@ -347,7 +346,7 @@ describe("API - Public API", () => { describe("mute/unMute/isMute", () => { it("should set the volume to 0 in mute by default", () => { - const PublicAPI = require("../public_api").default; + const PublicAPI = jest.requireActual("../public_api").default; const player = new PublicAPI(); const videoElement = player.getVideoElement(); if (videoElement == null) { @@ -369,7 +368,7 @@ describe("API - Public API", () => { }); it("should unmute the volume at the previous value in unMute by default", () => { - const PublicAPI = require("../public_api").default; + const PublicAPI = jest.requireActual("../public_api").default; const player = new PublicAPI(); // back to a "normal" state. player.unMute(); @@ -400,13 +399,13 @@ describe("API - Public API", () => { }); it("should return false in isMute by default", () => { - const PublicAPI = require("../public_api").default; + const PublicAPI = jest.requireActual("../public_api").default; const player = new PublicAPI(); expect(player.isMute()).toBe(false); }); it("should return true in isMute if the volume is equal to 0", () => { - const PublicAPI = require("../public_api").default; + const PublicAPI = jest.requireActual("../public_api").default; const player = new PublicAPI(); const oldVolume = player.getVolume(); @@ -435,13 +434,13 @@ describe("API - Public API", () => { describe("setAudioBitrate/getManualAudioBitrate", () => { it("should have a -1 manual audio bitrate by default", () => { - const PublicAPI = require("../public_api").default; + const PublicAPI = jest.requireActual("../public_api").default; const player = new PublicAPI(); expect(player.getManualAudioBitrate()).toBe(-1); }); it("should update manual audio bitrate when calling setAudioBitrate", () => { - const PublicAPI = require("../public_api").default; + const PublicAPI = jest.requireActual("../public_api").default; const player = new PublicAPI(); const oldManual = player.getManualAudioBitrate(); @@ -459,13 +458,13 @@ describe("API - Public API", () => { describe("setVideoBitrate/getManualVideoBitrate", () => { it("should have a -1 manual video bitrate by default", () => { - const PublicAPI = require("../public_api").default; + const PublicAPI = jest.requireActual("../public_api").default; const player = new PublicAPI(); expect(player.getManualVideoBitrate()).toBe(-1); }); it("should update manual video bitrate when calling setVideoBitrate", () => { - const PublicAPI = require("../public_api").default; + const PublicAPI = jest.requireActual("../public_api").default; const player = new PublicAPI(); const oldManual = player.getManualVideoBitrate(); @@ -487,7 +486,7 @@ describe("API - Public API", () => { /* eslint-disable max-len */ it("should update the maximum video bitrate when calling setMaxVideoBitrate by default", () => { /* eslint-enable max-len */ - const PublicAPI = require("../public_api").default; + const PublicAPI = jest.requireActual("../public_api").default; const player = new PublicAPI(); const oldMax = player.getMaxVideoBitrate(); @@ -511,7 +510,7 @@ describe("API - Public API", () => { }); it("should throw when setting a negative maximum video bitrate", () => { - const PublicAPI = require("../public_api").default; + const PublicAPI = jest.requireActual("../public_api").default; const player = new PublicAPI(); const oldMax = player.getMaxVideoBitrate(); @@ -536,7 +535,7 @@ describe("API - Public API", () => { // eslint-disable-next-line max-len it("should throw when setting a maximum video bitrate inferior to the minimum", () => { - const PublicAPI = require("../public_api").default; + const PublicAPI = jest.requireActual("../public_api").default; const player = new PublicAPI(); const oldMin = player.getMinVideoBitrate(); const oldMax = player.getMaxVideoBitrate(); @@ -552,7 +551,7 @@ describe("API - Public API", () => { // eslint-disable-next-line max-len it("should not throw when setting a maximum video bitrate equal to the minimum", () => { - const PublicAPI = require("../public_api").default; + const PublicAPI = jest.requireActual("../public_api").default; const player = new PublicAPI(); const oldMin = player.getMinVideoBitrate(); const oldMax = player.getMaxVideoBitrate(); @@ -569,7 +568,7 @@ describe("API - Public API", () => { /* eslint-disable max-len */ it("should update the minimum audio bitrate when calling setMinAudioBitrate by default", () => { /* eslint-enable max-len */ - const PublicAPI = require("../public_api").default; + const PublicAPI = jest.requireActual("../public_api").default; const player = new PublicAPI(); const oldMin = player.getMinAudioBitrate(); @@ -591,7 +590,7 @@ describe("API - Public API", () => { // eslint-disable-next-line max-len it("should throw when setting a minimum audio bitrate superior to the maximum", () => { - const PublicAPI = require("../public_api").default; + const PublicAPI = jest.requireActual("../public_api").default; const player = new PublicAPI(); const oldMax = player.getMaxAudioBitrate(); const oldMin = player.getMinAudioBitrate(); @@ -607,7 +606,7 @@ describe("API - Public API", () => { // eslint-disable-next-line max-len it("should not throw when setting a minimum audio bitrate equal to the maximum", () => { - const PublicAPI = require("../public_api").default; + const PublicAPI = jest.requireActual("../public_api").default; const player = new PublicAPI(); const oldMax = player.getMaxAudioBitrate(); const oldMin = player.getMinAudioBitrate(); @@ -625,7 +624,7 @@ describe("API - Public API", () => { /* eslint-disable max-len */ it("should update the maximum audio bitrate when calling setMaxAudioBitrate by default", () => { /* eslint-enable max-len */ - const PublicAPI = require("../public_api").default; + const PublicAPI = jest.requireActual("../public_api").default; const player = new PublicAPI(); const oldMax = player.getMaxAudioBitrate(); @@ -649,7 +648,7 @@ describe("API - Public API", () => { }); it("should throw when setting a negative maximum audio bitrate", () => { - const PublicAPI = require("../public_api").default; + const PublicAPI = jest.requireActual("../public_api").default; const player = new PublicAPI(); const oldMax = player.getMaxAudioBitrate(); @@ -674,7 +673,7 @@ describe("API - Public API", () => { // eslint-disable-next-line max-len it("should throw when setting a maximum audio bitrate inferior to the minimum", () => { - const PublicAPI = require("../public_api").default; + const PublicAPI = jest.requireActual("../public_api").default; const player = new PublicAPI(); const oldMin = player.getMinAudioBitrate(); const oldMax = player.getMaxAudioBitrate(); @@ -690,7 +689,7 @@ describe("API - Public API", () => { // eslint-disable-next-line max-len it("should not throw when setting a maximum audio bitrate equal to the minimum", () => { - const PublicAPI = require("../public_api").default; + const PublicAPI = jest.requireActual("../public_api").default; const player = new PublicAPI(); const oldMin = player.getMinAudioBitrate(); const oldMax = player.getMaxAudioBitrate(); @@ -707,7 +706,7 @@ describe("API - Public API", () => { /* eslint-disable max-len */ it("should update the max buffer behind through setMaxBufferBehind by default", () => { /* eslint-enable max-len */ - const PublicAPI = require("../public_api").default; + const PublicAPI = jest.requireActual("../public_api").default; const player = new PublicAPI(); player.setMaxBufferBehind(50); expect(player.getMaxBufferBehind()).toBe(50); @@ -721,7 +720,7 @@ describe("API - Public API", () => { /* eslint-disable max-len */ it("should update the max buffer behind through setMaxBufferAhead by default", () => { /* eslint-enable max-len */ - const PublicAPI = require("../public_api").default; + const PublicAPI = jest.requireActual("../public_api").default; const player = new PublicAPI(); player.setMaxBufferAhead(50); expect(player.getMaxBufferAhead()).toBe(50); @@ -733,7 +732,7 @@ describe("API - Public API", () => { describe("getWantedBufferAhead/setWantedBufferAhead", () => { it("should update the buffer goal through setWantedBufferAhead by default", () => { - const PublicAPI = require("../public_api").default; + const PublicAPI = jest.requireActual("../public_api").default; const player = new PublicAPI(); player.setWantedBufferAhead(50); expect(player.getWantedBufferAhead()).toBe(50); @@ -747,7 +746,7 @@ describe("API - Public API", () => { /* eslint-disable max-len */ it("should return an empty array through getAvailableAudioTracks by default", () => { /* eslint-enable max-len */ - const PublicAPI = require("../public_api").default; + const PublicAPI = jest.requireActual("../public_api").default; const player = new PublicAPI(); expect(player.getAvailableAudioTracks()).toEqual([]); }); @@ -755,7 +754,7 @@ describe("API - Public API", () => { describe("getAvailableTextTracks", () => { it("should return an empty array through getAvailableTextTracks by default", () => { - const PublicAPI = require("../public_api").default; + const PublicAPI = jest.requireActual("../public_api").default; const player = new PublicAPI(); expect(player.getAvailableTextTracks()).toEqual([]); }); @@ -765,7 +764,7 @@ describe("API - Public API", () => { /* eslint-disable max-len */ it("should return an empty array through getAvailableVideoTracks by default", () => { /* eslint-enable max-len */ - const PublicAPI = require("../public_api").default; + const PublicAPI = jest.requireActual("../public_api").default; const player = new PublicAPI(); expect(player.getAvailableVideoTracks()).toEqual([]); }); @@ -773,7 +772,7 @@ describe("API - Public API", () => { describe("getAudioTrack", () => { it("should return undefined through getAudioTrack by default", () => { - const PublicAPI = require("../public_api").default; + const PublicAPI = jest.requireActual("../public_api").default; const player = new PublicAPI(); expect(player.getAudioTrack()).toBe(undefined); }); @@ -781,7 +780,7 @@ describe("API - Public API", () => { describe("getTextTrack", () => { it("should return undefined through getTextTrack by default", () => { - const PublicAPI = require("../public_api").default; + const PublicAPI = jest.requireActual("../public_api").default; const player = new PublicAPI(); expect(player.getTextTrack()).toBe(undefined); }); @@ -789,7 +788,7 @@ describe("API - Public API", () => { describe("getVideoTrack", () => { it("should return undefined through getVideoTrack by default", () => { - const PublicAPI = require("../public_api").default; + const PublicAPI = jest.requireActual("../public_api").default; const player = new PublicAPI(); expect(player.getVideoTrack()).toBe(undefined); }); @@ -797,7 +796,7 @@ describe("API - Public API", () => { describe("setAudioTrack", () => { it("should throw in setAudioTrack by default", () => { - const PublicAPI = require("../public_api").default; + const PublicAPI = jest.requireActual("../public_api").default; const player = new PublicAPI(); expect(() => player.setAudioTrack("a")).toThrow(); expect(() => player.setAudioTrack("test")).toThrow(); @@ -806,7 +805,7 @@ describe("API - Public API", () => { describe("setTextTrack", () => { it("should throw in setTextTrack by default", () => { - const PublicAPI = require("../public_api").default; + const PublicAPI = jest.requireActual("../public_api").default; const player = new PublicAPI(); expect(() => player.setTextTrack("a")).toThrow(); expect(() => player.setTextTrack("test")).toThrow(); @@ -815,7 +814,7 @@ describe("API - Public API", () => { describe("setVideoTrack", () => { it("should throw in setVideoTrack by default", () => { - const PublicAPI = require("../public_api").default; + const PublicAPI = jest.requireActual("../public_api").default; const player = new PublicAPI(); expect(() => player.setVideoTrack("a")).toThrow(); expect(() => player.setVideoTrack("test")).toThrow(); @@ -824,7 +823,7 @@ describe("API - Public API", () => { describe("disableTextTrack", () => { it("should disable text tracks in disableTextTrack by default", () => { - const PublicAPI = require("../public_api").default; + const PublicAPI = jest.requireActual("../public_api").default; const player = new PublicAPI(); player.disableTextTrack(); expect(player.getTextTrack()).toBe(undefined); @@ -833,7 +832,7 @@ describe("API - Public API", () => { describe("getImageTrackData", () => { it("should return null in getImageTrackData by default", () => { - const PublicAPI = require("../public_api").default; + const PublicAPI = jest.requireActual("../public_api").default; const player = new PublicAPI(); expect(player.getImageTrackData()).toBe(null); }); @@ -841,7 +840,7 @@ describe("API - Public API", () => { describe("getMinimumPosition", () => { it("should return null in getMinimumPosition by default", () => { - const PublicAPI = require("../public_api").default; + const PublicAPI = jest.requireActual("../public_api").default; const player = new PublicAPI(); expect(player.getMinimumPosition()).toBe(null); }); @@ -849,7 +848,7 @@ describe("API - Public API", () => { describe("getMaximumPosition", () => { it("should return null in getMaximumPosition by default", () => { - const PublicAPI = require("../public_api").default; + const PublicAPI = jest.requireActual("../public_api").default; const player = new PublicAPI(); expect(player.getMinimumPosition()).toBe(null); }); diff --git a/src/core/decrypt/__tests__/__global__/get_license.test.ts b/src/core/decrypt/__tests__/__global__/get_license.test.ts index 8904a93f60..e4d7b286e7 100644 --- a/src/core/decrypt/__tests__/__global__/get_license.test.ts +++ b/src/core/decrypt/__tests__/__global__/get_license.test.ts @@ -284,9 +284,9 @@ function checkGetLicense( mockCompat(); const mediaKeySession = new MediaKeySessionImpl(); jest.spyOn(MediaKeysImpl.prototype, "createSession").mockReturnValue(mediaKeySession); - const updateSpy = jest.spyOn(mediaKeySession, "update"); + const mockUpdate = jest.spyOn(mediaKeySession, "update"); let remainingRetries = nbRetries; - const getLicenseSpy = jest.fn(() => { + const mockGetLicense = jest.fn(() => { const callIdx = nbRetries - remainingRetries; const timeout = getTimeout(callIdx); if (remainingRetries === 0) { @@ -322,7 +322,7 @@ function checkGetLicense( const shouldFail = nbRetries >= maxRetries; let warningsLeft = nbRetries; const ksConfig = [{ type: "com.widevine.alpha", - getLicense: getLicenseSpy, + getLicense: mockGetLicense, getLicenseConfig: configuredRetries !== undefined || configuredTimeout !== undefined ? { retry: configuredRetries, @@ -344,8 +344,8 @@ function checkGetLicense( } // == test == - const { ContentDecryptorState } = require("../../content_decryptor"); - const ContentDecryptor = require("../../content_decryptor").default; + const { ContentDecryptorState } = jest.requireActual("../../content_decryptor"); + const ContentDecryptor = jest.requireActual("../../content_decryptor").default; const contentDecryptor = new ContentDecryptor(videoElt, ksConfig); contentDecryptor.addEventListener("stateChange", (newState: number) => { @@ -360,9 +360,9 @@ function checkGetLicense( if (shouldFail) { try { checkKeyLoadError(error); - expect(getLicenseSpy).toHaveBeenCalledTimes(maxRetries); - expect(getLicenseSpy).toHaveBeenNthCalledWith(maxRetries, challenge, "license-request"); - expect(updateSpy).toHaveBeenCalledTimes(0); + expect(mockGetLicense).toHaveBeenCalledTimes(maxRetries); + expect(mockGetLicense).toHaveBeenNthCalledWith(maxRetries, challenge, "license-request"); + expect(mockUpdate).toHaveBeenCalledTimes(0); res(); } catch (e) { rej(e); @@ -377,8 +377,8 @@ function checkGetLicense( try { checkKeyLoadError(warning); const requestIdx = nbRetries - remainingRetries; - expect(getLicenseSpy).toHaveBeenCalledTimes(requestIdx); - expect(getLicenseSpy).toHaveBeenNthCalledWith(requestIdx, challenge, "license-request"); + expect(mockGetLicense).toHaveBeenCalledTimes(requestIdx); + expect(mockGetLicense).toHaveBeenNthCalledWith(requestIdx, challenge, "license-request"); } catch (e) { rej(e); } @@ -398,15 +398,15 @@ function checkGetLicense( setTimeout(() => { try { if (ignoreLicenseRequests) { - expect(updateSpy).toHaveBeenCalledTimes(0); + expect(mockUpdate).toHaveBeenCalledTimes(0); } else { const license = concat(challenge, challenge); - expect(updateSpy).toHaveBeenCalledTimes(1); - expect(updateSpy).toHaveBeenCalledWith(license); + expect(mockUpdate).toHaveBeenCalledTimes(1); + expect(mockUpdate).toHaveBeenCalledWith(license); } - expect(getLicenseSpy).toHaveBeenCalledTimes(nbRetries + 1); + expect(mockGetLicense).toHaveBeenCalledTimes(nbRetries + 1); for (let i = 1; i <= nbRetries + 1; i++) { - expect(getLicenseSpy).toHaveBeenNthCalledWith(i, challenge, "license-request"); + expect(mockGetLicense).toHaveBeenNthCalledWith(i, challenge, "license-request"); } contentDecryptor.dispose(); res(); diff --git a/src/core/decrypt/__tests__/__global__/init_data.test.ts b/src/core/decrypt/__tests__/__global__/init_data.test.ts index 7234212dd0..fd874c3510 100644 --- a/src/core/decrypt/__tests__/__global__/init_data.test.ts +++ b/src/core/decrypt/__tests__/__global__/init_data.test.ts @@ -16,7 +16,6 @@ /* eslint-disable @typescript-eslint/no-unsafe-assignment */ /* eslint-disable @typescript-eslint/no-unsafe-member-access */ -/* eslint-disable @typescript-eslint/no-var-requires */ /* eslint-disable @typescript-eslint/no-unsafe-call */ /* eslint-disable @typescript-eslint/no-unsafe-assignment */ /* eslint-disable @typescript-eslint/no-unsafe-return */ @@ -37,17 +36,17 @@ describe("core - decrypt - global tests - init data", () => { /** Default video element used in our tests. */ const videoElt = document.createElement("video"); - const getLicenseSpy = jest.fn(() => { + const mockGetLicense = jest.fn(() => { return new Promise(() => { /* noop */ }); }); /** Default keySystems configuration used in our tests. */ - const ksConfig = [{ type: "com.widevine.alpha", getLicense: getLicenseSpy }]; + const ksConfig = [{ type: "com.widevine.alpha", getLicense: mockGetLicense }]; beforeEach(() => { jest.resetModules(); jest.restoreAllMocks(); - getLicenseSpy.mockReset(); + mockGetLicense.mockReset(); }); /* eslint-disable max-len */ @@ -55,17 +54,17 @@ describe("core - decrypt - global tests - init data", () => { /* eslint-enable max-len */ return new Promise((res, rej) => { // == mocks == - const { generateKeyRequestSpy } = mockCompat(); + const { mockGenerateKeyRequest } = mockCompat(); const mediaKeySession = new MediaKeySessionImpl(); - const createSessionSpy = jest.spyOn(MediaKeysImpl.prototype, "createSession") + const mockCreateSession = jest.spyOn(MediaKeysImpl.prototype, "createSession") .mockReturnValue(mediaKeySession); // == vars == const initData = new Uint8Array([54, 55, 75]); // == test == - const { ContentDecryptorState } = require("../../content_decryptor"); - const ContentDecryptor = require("../../content_decryptor").default; + const { ContentDecryptorState } = jest.requireActual("../../content_decryptor"); + const ContentDecryptor = jest.requireActual("../../content_decryptor").default; const contentDecryptor = new ContentDecryptor(videoElt, ksConfig); contentDecryptor.addEventListener("stateChange", (newState: any) => { if (newState !== ContentDecryptorState.WaitingForAttachment) { @@ -80,13 +79,13 @@ describe("core - decrypt - global tests - init data", () => { }); setTimeout(() => { try { - expect(createSessionSpy).toHaveBeenCalledTimes(1); - expect(createSessionSpy).toHaveBeenCalledWith("temporary"); - expect(generateKeyRequestSpy).toHaveBeenCalledTimes(1); - expect(generateKeyRequestSpy) + expect(mockCreateSession).toHaveBeenCalledTimes(1); + expect(mockCreateSession).toHaveBeenCalledWith("temporary"); + expect(mockGenerateKeyRequest).toHaveBeenCalledTimes(1); + expect(mockGenerateKeyRequest) .toHaveBeenCalledWith(mediaKeySession, "cenc", initData); - expect(getLicenseSpy).toHaveBeenCalledTimes(1); - expect(getLicenseSpy).toHaveBeenCalledWith( + expect(mockGetLicense).toHaveBeenCalledTimes(1); + expect(mockGetLicense).toHaveBeenCalledWith( formatFakeChallengeFromInitData(initData, "cenc"), "license-request" ); @@ -101,17 +100,17 @@ describe("core - decrypt - global tests - init data", () => { it("should ignore init data already sent through the argument", () => { return new Promise((res, rej) => { // == mocks == - const { generateKeyRequestSpy } = mockCompat(); + const { mockGenerateKeyRequest } = mockCompat(); const mediaKeySession = new MediaKeySessionImpl(); - const createSessionSpy = jest.spyOn(MediaKeysImpl.prototype, "createSession") + const mockCreateSession = jest.spyOn(MediaKeysImpl.prototype, "createSession") .mockReturnValue(mediaKeySession); // == vars == const initData = new Uint8Array([54, 55, 75]); // == test == - const { ContentDecryptorState } = require("../../content_decryptor"); - const ContentDecryptor = require("../../content_decryptor").default; + const { ContentDecryptorState } = jest.requireActual("../../content_decryptor"); + const ContentDecryptor = jest.requireActual("../../content_decryptor").default; const contentDecryptor = new ContentDecryptor(videoElt, ksConfig); contentDecryptor.addEventListener("stateChange", (newState: any) => { if (newState !== ContentDecryptorState.WaitingForAttachment) { @@ -136,13 +135,13 @@ describe("core - decrypt - global tests - init data", () => { }, 5); setTimeout(() => { try { - expect(createSessionSpy).toHaveBeenCalledTimes(1); - expect(createSessionSpy).toHaveBeenCalledWith("temporary"); - expect(generateKeyRequestSpy).toHaveBeenCalledTimes(1); - expect(generateKeyRequestSpy) + expect(mockCreateSession).toHaveBeenCalledTimes(1); + expect(mockCreateSession).toHaveBeenCalledWith("temporary"); + expect(mockGenerateKeyRequest).toHaveBeenCalledTimes(1); + expect(mockGenerateKeyRequest) .toHaveBeenCalledWith(mediaKeySession, "cenc", initData); - expect(getLicenseSpy).toHaveBeenCalledTimes(1); - expect(getLicenseSpy).toHaveBeenCalledWith( + expect(mockGetLicense).toHaveBeenCalledTimes(1); + expect(mockGetLicense).toHaveBeenCalledWith( formatFakeChallengeFromInitData(initData, "cenc"), "license-request" ); @@ -160,12 +159,12 @@ describe("core - decrypt - global tests - init data", () => { /* eslint-enable max-len */ return new Promise((res, rej) => { // == mocks == - const { generateKeyRequestSpy } = mockCompat(); + const { mockGenerateKeyRequest } = mockCompat(); const mediaKeySessions = [ new MediaKeySessionImpl(), new MediaKeySessionImpl(), new MediaKeySessionImpl() ]; let createSessionCallIdx = 0; - const createSessionSpy = jest.spyOn(MediaKeysImpl.prototype, "createSession") + const mockCreateSession = jest.spyOn(MediaKeysImpl.prototype, "createSession") .mockImplementation(() => mediaKeySessions[createSessionCallIdx++]); // == vars == @@ -174,8 +173,8 @@ describe("core - decrypt - global tests - init data", () => { new Uint8Array([87, 77]) ]; // == test == - const { ContentDecryptorState } = require("../../content_decryptor"); - const ContentDecryptor = require("../../content_decryptor").default; + const { ContentDecryptorState } = jest.requireActual("../../content_decryptor"); + const ContentDecryptor = jest.requireActual("../../content_decryptor").default; const contentDecryptor = new ContentDecryptor(videoElt, ksConfig); contentDecryptor.addEventListener("stateChange", (newState: any) => { if (newState !== ContentDecryptorState.WaitingForAttachment) { @@ -210,29 +209,29 @@ describe("core - decrypt - global tests - init data", () => { }, 5); setTimeout(() => { try { - expect(createSessionSpy).toHaveBeenCalledTimes(3); - expect(createSessionSpy).toHaveBeenNthCalledWith(1, "temporary"); - expect(createSessionSpy).toHaveBeenNthCalledWith(2, "temporary"); - expect(createSessionSpy).toHaveBeenNthCalledWith(3, "temporary"); - expect(generateKeyRequestSpy).toHaveBeenCalledTimes(3); - expect(generateKeyRequestSpy) + expect(mockCreateSession).toHaveBeenCalledTimes(3); + expect(mockCreateSession).toHaveBeenNthCalledWith(1, "temporary"); + expect(mockCreateSession).toHaveBeenNthCalledWith(2, "temporary"); + expect(mockCreateSession).toHaveBeenNthCalledWith(3, "temporary"); + expect(mockGenerateKeyRequest).toHaveBeenCalledTimes(3); + expect(mockGenerateKeyRequest) .toHaveBeenNthCalledWith(1, mediaKeySessions[0], "cenc", initDatas[0]); - expect(generateKeyRequestSpy) + expect(mockGenerateKeyRequest) .toHaveBeenNthCalledWith(2, mediaKeySessions[1], "cenc", initDatas[1]); - expect(generateKeyRequestSpy) + expect(mockGenerateKeyRequest) .toHaveBeenNthCalledWith(3, mediaKeySessions[2], "cenc", initDatas[2]); - expect(getLicenseSpy).toHaveBeenCalledTimes(3); - expect(getLicenseSpy).toHaveBeenNthCalledWith( + expect(mockGetLicense).toHaveBeenCalledTimes(3); + expect(mockGetLicense).toHaveBeenNthCalledWith( 1, formatFakeChallengeFromInitData(initDatas[0], "cenc"), "license-request" ); - expect(getLicenseSpy).toHaveBeenNthCalledWith( + expect(mockGetLicense).toHaveBeenNthCalledWith( 2, formatFakeChallengeFromInitData(initDatas[1], "cenc"), "license-request" ); - expect(getLicenseSpy).toHaveBeenNthCalledWith( + expect(mockGetLicense).toHaveBeenNthCalledWith( 3, formatFakeChallengeFromInitData(initDatas[2], "cenc"), "license-request" @@ -250,19 +249,19 @@ describe("core - decrypt - global tests - init data", () => { /* eslint-enable max-len */ return new Promise((res, rej) => { // == mocks == - const { generateKeyRequestSpy } = mockCompat(); + const { mockGenerateKeyRequest } = mockCompat(); const mediaKeySessions = [ new MediaKeySessionImpl(), new MediaKeySessionImpl() ]; let createSessionCallIdx = 0; - const createSessionSpy = jest.spyOn(MediaKeysImpl.prototype, "createSession") + const mockCreateSession = jest.spyOn(MediaKeysImpl.prototype, "createSession") .mockImplementation(() => mediaKeySessions[createSessionCallIdx++]); // == vars == const initData = new Uint8Array([54, 55, 75]); // == test == - const { ContentDecryptorState } = require("../../content_decryptor"); - const ContentDecryptor = require("../../content_decryptor").default; + const { ContentDecryptorState } = jest.requireActual("../../content_decryptor"); + const ContentDecryptor = jest.requireActual("../../content_decryptor").default; const contentDecryptor = new ContentDecryptor(videoElt, ksConfig); contentDecryptor.addEventListener("stateChange", (newState: any) => { if (newState !== ContentDecryptorState.WaitingForAttachment) { @@ -281,21 +280,21 @@ describe("core - decrypt - global tests - init data", () => { }); setTimeout(() => { try { - expect(createSessionSpy).toHaveBeenCalledTimes(2); - expect(createSessionSpy).toHaveBeenNthCalledWith(1, "temporary"); - expect(createSessionSpy).toHaveBeenNthCalledWith(2, "temporary"); - expect(generateKeyRequestSpy).toHaveBeenCalledTimes(2); - expect(generateKeyRequestSpy) + expect(mockCreateSession).toHaveBeenCalledTimes(2); + expect(mockCreateSession).toHaveBeenNthCalledWith(1, "temporary"); + expect(mockCreateSession).toHaveBeenNthCalledWith(2, "temporary"); + expect(mockGenerateKeyRequest).toHaveBeenCalledTimes(2); + expect(mockGenerateKeyRequest) .toHaveBeenNthCalledWith(1, mediaKeySessions[0], "cenc", initData); - expect(generateKeyRequestSpy) + expect(mockGenerateKeyRequest) .toHaveBeenNthCalledWith(2, mediaKeySessions[1], "cenc2", initData); - expect(getLicenseSpy).toHaveBeenCalledTimes(2); - expect(getLicenseSpy).toHaveBeenNthCalledWith( + expect(mockGetLicense).toHaveBeenCalledTimes(2); + expect(mockGetLicense).toHaveBeenNthCalledWith( 1, formatFakeChallengeFromInitData(initData, "cenc"), "license-request" ); - expect(getLicenseSpy).toHaveBeenNthCalledWith( + expect(mockGetLicense).toHaveBeenNthCalledWith( 2, formatFakeChallengeFromInitData(initData, "cenc2"), "license-request" @@ -313,18 +312,18 @@ describe("core - decrypt - global tests - init data", () => { /* eslint-enable max-len */ return new Promise((res, rej) => { // == mocks == - const { generateKeyRequestSpy, eventTriggers, getInitDataSpy } = mockCompat(); + const { mockGenerateKeyRequest, eventTriggers, mockGetInitData } = mockCompat(); const { triggerEncrypted } = eventTriggers; const mediaKeySession = new MediaKeySessionImpl(); - const createSessionSpy = jest.spyOn(MediaKeysImpl.prototype, "createSession") + const mockCreateSession = jest.spyOn(MediaKeysImpl.prototype, "createSession") .mockReturnValue(mediaKeySession); // == vars == const initData = new Uint8Array([54, 55, 75]); // == test == - const { ContentDecryptorState } = require("../../content_decryptor"); - const ContentDecryptor = require("../../content_decryptor").default; + const { ContentDecryptorState } = jest.requireActual("../../content_decryptor"); + const ContentDecryptor = jest.requireActual("../../content_decryptor").default; const contentDecryptor = new ContentDecryptor(videoElt, ksConfig); contentDecryptor.addEventListener("stateChange", (newState: any) => { if (newState !== ContentDecryptorState.WaitingForAttachment) { @@ -340,15 +339,15 @@ describe("core - decrypt - global tests - init data", () => { triggerEncrypted.next(initDataEvent); setTimeout(() => { try { - expect(getInitDataSpy).toHaveBeenCalledTimes(1); - expect(getInitDataSpy).toHaveBeenCalledWith(initDataEvent); - expect(createSessionSpy).toHaveBeenCalledTimes(1); - expect(createSessionSpy).toHaveBeenCalledWith("temporary"); - expect(generateKeyRequestSpy).toHaveBeenCalledTimes(1); - expect(generateKeyRequestSpy) + expect(mockGetInitData).toHaveBeenCalledTimes(1); + expect(mockGetInitData).toHaveBeenCalledWith(initDataEvent); + expect(mockCreateSession).toHaveBeenCalledTimes(1); + expect(mockCreateSession).toHaveBeenCalledWith("temporary"); + expect(mockGenerateKeyRequest).toHaveBeenCalledTimes(1); + expect(mockGenerateKeyRequest) .toHaveBeenCalledWith(mediaKeySession, "cenc", initData); - expect(getLicenseSpy).toHaveBeenCalledTimes(1); - expect(getLicenseSpy).toHaveBeenCalledWith( + expect(mockGetLicense).toHaveBeenCalledTimes(1); + expect(mockGetLicense).toHaveBeenCalledWith( formatFakeChallengeFromInitData(initData, "cenc"), "license-request" ); @@ -363,18 +362,18 @@ describe("core - decrypt - global tests - init data", () => { it("should ignore init data already received through the browser", () => { return new Promise((res, rej) => { // == mocks == - const { generateKeyRequestSpy, eventTriggers, getInitDataSpy } = mockCompat(); + const { mockGenerateKeyRequest, eventTriggers, mockGetInitData } = mockCompat(); const { triggerEncrypted } = eventTriggers; const mediaKeySession = new MediaKeySessionImpl(); - const createSessionSpy = jest.spyOn(MediaKeysImpl.prototype, "createSession") + const mockCreateSession = jest.spyOn(MediaKeysImpl.prototype, "createSession") .mockReturnValue(mediaKeySession); // == vars == const initData = new Uint8Array([54, 55, 75]); // == test == - const { ContentDecryptorState } = require("../../content_decryptor"); - const ContentDecryptor = require("../../content_decryptor").default; + const { ContentDecryptorState } = jest.requireActual("../../content_decryptor"); + const ContentDecryptor = jest.requireActual("../../content_decryptor").default; const contentDecryptor = new ContentDecryptor(videoElt, ksConfig); contentDecryptor.addEventListener("stateChange", (newState: any) => { if (newState !== ContentDecryptorState.WaitingForAttachment) { @@ -394,20 +393,20 @@ describe("core - decrypt - global tests - init data", () => { }, 5); setTimeout(() => { try { - expect(getInitDataSpy).toHaveBeenCalledTimes(3); - expect(getInitDataSpy).toHaveBeenNthCalledWith(1, - initDataEvent); - expect(getInitDataSpy).toHaveBeenNthCalledWith(2, - initDataEvent); - expect(getInitDataSpy).toHaveBeenNthCalledWith(3, - initDataEvent); - expect(createSessionSpy).toHaveBeenCalledTimes(1); - expect(createSessionSpy).toHaveBeenCalledWith("temporary"); - expect(generateKeyRequestSpy).toHaveBeenCalledTimes(1); - expect(generateKeyRequestSpy) + expect(mockGetInitData).toHaveBeenCalledTimes(3); + expect(mockGetInitData).toHaveBeenNthCalledWith(1, + initDataEvent); + expect(mockGetInitData).toHaveBeenNthCalledWith(2, + initDataEvent); + expect(mockGetInitData).toHaveBeenNthCalledWith(3, + initDataEvent); + expect(mockCreateSession).toHaveBeenCalledTimes(1); + expect(mockCreateSession).toHaveBeenCalledWith("temporary"); + expect(mockGenerateKeyRequest).toHaveBeenCalledTimes(1); + expect(mockGenerateKeyRequest) .toHaveBeenCalledWith(mediaKeySession, "cenc", initData); - expect(getLicenseSpy).toHaveBeenCalledTimes(1); - expect(getLicenseSpy).toHaveBeenCalledWith( + expect(mockGetLicense).toHaveBeenCalledTimes(1); + expect(mockGetLicense).toHaveBeenCalledWith( formatFakeChallengeFromInitData(initData, "cenc"), "license-request" ); @@ -424,13 +423,13 @@ describe("core - decrypt - global tests - init data", () => { /* eslint-enable max-len */ return new Promise((res, rej) => { // == mocks == - const { generateKeyRequestSpy, eventTriggers, getInitDataSpy } = mockCompat(); + const { mockGenerateKeyRequest, eventTriggers, mockGetInitData } = mockCompat(); const { triggerEncrypted } = eventTriggers; const mediaKeySessions = [ new MediaKeySessionImpl(), new MediaKeySessionImpl(), new MediaKeySessionImpl() ]; let createSessionCallIdx = 0; - const createSessionSpy = jest.spyOn(MediaKeysImpl.prototype, "createSession") + const mockCreateSession = jest.spyOn(MediaKeysImpl.prototype, "createSession") .mockImplementation(() => mediaKeySessions[createSessionCallIdx++]); // == vars == @@ -447,8 +446,8 @@ describe("core - decrypt - global tests - init data", () => { values: [ { systemId: "15", data: initDatas[2] } ] } ]; // == test == - const { ContentDecryptorState } = require("../../content_decryptor"); - const ContentDecryptor = require("../../content_decryptor").default; + const { ContentDecryptorState } = jest.requireActual("../../content_decryptor"); + const ContentDecryptor = jest.requireActual("../../content_decryptor").default; const contentDecryptor = new ContentDecryptor(videoElt, ksConfig); contentDecryptor.addEventListener("stateChange", (newState: any) => { if (newState !== ContentDecryptorState.WaitingForAttachment) { @@ -468,40 +467,40 @@ describe("core - decrypt - global tests - init data", () => { }, 5); setTimeout(() => { try { - expect(getInitDataSpy).toHaveBeenCalledTimes(5); - expect(getInitDataSpy).toHaveBeenNthCalledWith(1, - initDataEvents[0]); - expect(getInitDataSpy).toHaveBeenNthCalledWith(2, - initDataEvents[1]); - expect(getInitDataSpy).toHaveBeenNthCalledWith(3, - initDataEvents[0]); - expect(getInitDataSpy).toHaveBeenNthCalledWith(4, - initDataEvents[2]); - expect(getInitDataSpy).toHaveBeenNthCalledWith(5, - initDataEvents[1]); - expect(createSessionSpy).toHaveBeenCalledTimes(3); - expect(createSessionSpy).toHaveBeenNthCalledWith(1, "temporary"); - expect(createSessionSpy).toHaveBeenNthCalledWith(2, "temporary"); - expect(createSessionSpy).toHaveBeenNthCalledWith(3, "temporary"); - expect(generateKeyRequestSpy).toHaveBeenCalledTimes(3); - expect(generateKeyRequestSpy) + expect(mockGetInitData).toHaveBeenCalledTimes(5); + expect(mockGetInitData).toHaveBeenNthCalledWith(1, + initDataEvents[0]); + expect(mockGetInitData).toHaveBeenNthCalledWith(2, + initDataEvents[1]); + expect(mockGetInitData).toHaveBeenNthCalledWith(3, + initDataEvents[0]); + expect(mockGetInitData).toHaveBeenNthCalledWith(4, + initDataEvents[2]); + expect(mockGetInitData).toHaveBeenNthCalledWith(5, + initDataEvents[1]); + expect(mockCreateSession).toHaveBeenCalledTimes(3); + expect(mockCreateSession).toHaveBeenNthCalledWith(1, "temporary"); + expect(mockCreateSession).toHaveBeenNthCalledWith(2, "temporary"); + expect(mockCreateSession).toHaveBeenNthCalledWith(3, "temporary"); + expect(mockGenerateKeyRequest).toHaveBeenCalledTimes(3); + expect(mockGenerateKeyRequest) .toHaveBeenNthCalledWith(1, mediaKeySessions[0], "cenc", initDatas[0]); - expect(generateKeyRequestSpy) + expect(mockGenerateKeyRequest) .toHaveBeenNthCalledWith(2, mediaKeySessions[1], "cenc", initDatas[1]); - expect(generateKeyRequestSpy) + expect(mockGenerateKeyRequest) .toHaveBeenNthCalledWith(3, mediaKeySessions[2], "cenc", initDatas[2]); - expect(getLicenseSpy).toHaveBeenCalledTimes(3); - expect(getLicenseSpy).toHaveBeenNthCalledWith( + expect(mockGetLicense).toHaveBeenCalledTimes(3); + expect(mockGetLicense).toHaveBeenNthCalledWith( 1, formatFakeChallengeFromInitData(initDatas[0], "cenc"), "license-request" ); - expect(getLicenseSpy).toHaveBeenNthCalledWith( + expect(mockGetLicense).toHaveBeenNthCalledWith( 2, formatFakeChallengeFromInitData(initDatas[1], "cenc"), "license-request" ); - expect(getLicenseSpy).toHaveBeenNthCalledWith( + expect(mockGetLicense).toHaveBeenNthCalledWith( 3, formatFakeChallengeFromInitData(initDatas[2], "cenc"), "license-request" @@ -519,12 +518,12 @@ describe("core - decrypt - global tests - init data", () => { /* eslint-enable max-len */ return new Promise((res, rej) => { // == mocks == - const { generateKeyRequestSpy, eventTriggers, getInitDataSpy } = mockCompat(); + const { mockGenerateKeyRequest, eventTriggers, mockGetInitData } = mockCompat(); const { triggerEncrypted } = eventTriggers; const mediaKeySessions = [ new MediaKeySessionImpl(), new MediaKeySessionImpl() ]; let createSessionCallIdx = 0; - const createSessionSpy = jest.spyOn(MediaKeysImpl.prototype, "createSession") + const mockCreateSession = jest.spyOn(MediaKeysImpl.prototype, "createSession") .mockImplementation(() => mediaKeySessions[createSessionCallIdx++]); // == vars == @@ -536,8 +535,8 @@ describe("core - decrypt - global tests - init data", () => { values: [ { systemId: "15", data: initData } ] } ]; // == test == - const { ContentDecryptorState } = require("../../content_decryptor"); - const ContentDecryptor = require("../../content_decryptor").default; + const { ContentDecryptorState } = jest.requireActual("../../content_decryptor"); + const ContentDecryptor = jest.requireActual("../../content_decryptor").default; const contentDecryptor = new ContentDecryptor(videoElt, ksConfig); contentDecryptor.addEventListener("stateChange", (newState: any) => { if (newState !== ContentDecryptorState.WaitingForAttachment) { @@ -550,26 +549,24 @@ describe("core - decrypt - global tests - init data", () => { triggerEncrypted.next(initDataEvents[1]); setTimeout(() => { try { - expect(getInitDataSpy).toHaveBeenCalledTimes(2); - expect(getInitDataSpy).toHaveBeenNthCalledWith(1, - initDataEvents[0]); - expect(getInitDataSpy).toHaveBeenNthCalledWith(2, - initDataEvents[1]); - expect(createSessionSpy).toHaveBeenCalledTimes(2); - expect(createSessionSpy).toHaveBeenNthCalledWith(1, "temporary"); - expect(createSessionSpy).toHaveBeenNthCalledWith(2, "temporary"); - expect(generateKeyRequestSpy).toHaveBeenCalledTimes(2); - expect(generateKeyRequestSpy) + expect(mockGetInitData).toHaveBeenCalledTimes(2); + expect(mockGetInitData).toHaveBeenNthCalledWith(1, initDataEvents[0]); + expect(mockGetInitData).toHaveBeenNthCalledWith(2, initDataEvents[1]); + expect(mockCreateSession).toHaveBeenCalledTimes(2); + expect(mockCreateSession).toHaveBeenNthCalledWith(1, "temporary"); + expect(mockCreateSession).toHaveBeenNthCalledWith(2, "temporary"); + expect(mockGenerateKeyRequest).toHaveBeenCalledTimes(2); + expect(mockGenerateKeyRequest) .toHaveBeenNthCalledWith(1, mediaKeySessions[0], "cenc", initData); - expect(generateKeyRequestSpy) + expect(mockGenerateKeyRequest) .toHaveBeenNthCalledWith(2, mediaKeySessions[1], "cenc2", initData); - expect(getLicenseSpy).toHaveBeenCalledTimes(2); - expect(getLicenseSpy).toHaveBeenNthCalledWith( + expect(mockGetLicense).toHaveBeenCalledTimes(2); + expect(mockGetLicense).toHaveBeenNthCalledWith( 1, formatFakeChallengeFromInitData(initData, "cenc"), "license-request" ); - expect(getLicenseSpy).toHaveBeenNthCalledWith( + expect(mockGetLicense).toHaveBeenNthCalledWith( 2, formatFakeChallengeFromInitData(initData, "cenc2"), "license-request" @@ -586,13 +583,13 @@ describe("core - decrypt - global tests - init data", () => { it("should consider sent event through arguments and received events through the browser the same way", () => { return new Promise((res, rej) => { // == mocks == - const { generateKeyRequestSpy, eventTriggers, getInitDataSpy } = mockCompat(); + const { mockGenerateKeyRequest, eventTriggers, mockGetInitData } = mockCompat(); const { triggerEncrypted } = eventTriggers; const mediaKeySessions = [ new MediaKeySessionImpl(), new MediaKeySessionImpl(), new MediaKeySessionImpl() ]; let createSessionCallIdx = 0; - const createSessionSpy = jest.spyOn(MediaKeysImpl.prototype, "createSession") + const mockCreateSession = jest.spyOn(MediaKeysImpl.prototype, "createSession") .mockImplementation(() => mediaKeySessions[createSessionCallIdx++]); // == vars == @@ -609,8 +606,8 @@ describe("core - decrypt - global tests - init data", () => { values: [ { systemId: "15", data: initDatas[2] } ] } ]; // == test == - const { ContentDecryptorState } = require("../../content_decryptor"); - const ContentDecryptor = require("../../content_decryptor").default; + const { ContentDecryptorState } = jest.requireActual("../../content_decryptor"); + const ContentDecryptor = jest.requireActual("../../content_decryptor").default; const contentDecryptor = new ContentDecryptor(videoElt, ksConfig); contentDecryptor.addEventListener("stateChange", (newState: any) => { if (newState !== ContentDecryptorState.WaitingForAttachment) { @@ -629,38 +626,38 @@ describe("core - decrypt - global tests - init data", () => { }); setTimeout(() => { try { - expect(getInitDataSpy).toHaveBeenCalledTimes(4); - expect(getInitDataSpy).toHaveBeenNthCalledWith(1, - initDataEvents[0]); - expect(getInitDataSpy).toHaveBeenNthCalledWith(2, - initDataEvents[1]); - expect(getInitDataSpy).toHaveBeenNthCalledWith(3, - initDataEvents[0]); - expect(getInitDataSpy).toHaveBeenNthCalledWith(4, - initDataEvents[2]); - expect(createSessionSpy).toHaveBeenCalledTimes(3); - expect(createSessionSpy).toHaveBeenNthCalledWith(1, "temporary"); - expect(createSessionSpy).toHaveBeenNthCalledWith(2, "temporary"); - expect(createSessionSpy).toHaveBeenNthCalledWith(3, "temporary"); - expect(generateKeyRequestSpy).toHaveBeenCalledTimes(3); - expect(generateKeyRequestSpy) + expect(mockGetInitData).toHaveBeenCalledTimes(4); + expect(mockGetInitData).toHaveBeenNthCalledWith(1, + initDataEvents[0]); + expect(mockGetInitData).toHaveBeenNthCalledWith(2, + initDataEvents[1]); + expect(mockGetInitData).toHaveBeenNthCalledWith(3, + initDataEvents[0]); + expect(mockGetInitData).toHaveBeenNthCalledWith(4, + initDataEvents[2]); + expect(mockCreateSession).toHaveBeenCalledTimes(3); + expect(mockCreateSession).toHaveBeenNthCalledWith(1, "temporary"); + expect(mockCreateSession).toHaveBeenNthCalledWith(2, "temporary"); + expect(mockCreateSession).toHaveBeenNthCalledWith(3, "temporary"); + expect(mockGenerateKeyRequest).toHaveBeenCalledTimes(3); + expect(mockGenerateKeyRequest) .toHaveBeenNthCalledWith(1, mediaKeySessions[0], "cenc", initDatas[0]); - expect(generateKeyRequestSpy) + expect(mockGenerateKeyRequest) .toHaveBeenNthCalledWith(2, mediaKeySessions[1], "cenc", initDatas[1]); - expect(generateKeyRequestSpy) + expect(mockGenerateKeyRequest) .toHaveBeenNthCalledWith(3, mediaKeySessions[2], "cenc", initDatas[2]); - expect(getLicenseSpy).toHaveBeenCalledTimes(3); - expect(getLicenseSpy).toHaveBeenNthCalledWith( + expect(mockGetLicense).toHaveBeenCalledTimes(3); + expect(mockGetLicense).toHaveBeenNthCalledWith( 1, formatFakeChallengeFromInitData(initDatas[0], "cenc"), "license-request" ); - expect(getLicenseSpy).toHaveBeenNthCalledWith( + expect(mockGetLicense).toHaveBeenNthCalledWith( 2, formatFakeChallengeFromInitData(initDatas[1], "cenc"), "license-request" ); - expect(getLicenseSpy).toHaveBeenNthCalledWith( + expect(mockGetLicense).toHaveBeenNthCalledWith( 3, formatFakeChallengeFromInitData(initDatas[2], "cenc"), "license-request" diff --git a/src/core/decrypt/__tests__/__global__/media_key_system_access.test.ts b/src/core/decrypt/__tests__/__global__/media_key_system_access.test.ts index 6336745715..910799fa23 100644 --- a/src/core/decrypt/__tests__/__global__/media_key_system_access.test.ts +++ b/src/core/decrypt/__tests__/__global__/media_key_system_access.test.ts @@ -60,7 +60,7 @@ async function checkIncompatibleKeySystemsErrorMessage( keySystemsConfigs : unknown[] ) : Promise { const mediaElement = document.createElement("video"); - const ContentDecryptor = require("../../content_decryptor").default; + const ContentDecryptor = jest.requireActual("../../content_decryptor").default; const error : any = await testContentDecryptorError(ContentDecryptor, mediaElement, @@ -92,28 +92,28 @@ describe("core - decrypt - global tests - media key system access", () => { }); it("should throw if given a single incompatible keySystemsConfigs", async () => { - const requestMediaKeySystemAccessSpy = jest.fn(() => Promise.reject("nope")); - mockCompat({ requestMediaKeySystemAccess: requestMediaKeySystemAccessSpy }); + const mockRequestMediaKeySystemAccess = jest.fn(() => Promise.reject("nope")); + mockCompat({ requestMediaKeySystemAccess: mockRequestMediaKeySystemAccess }); const getLicenseFn = neverCalledFn; await checkIncompatibleKeySystemsErrorMessage([{ type: "foo", getLicense: getLicenseFn }]); - expect(requestMediaKeySystemAccessSpy).toHaveBeenCalledTimes(1); - expect(requestMediaKeySystemAccessSpy).toHaveBeenCalledWith("foo", defaultKSConfig); + expect(mockRequestMediaKeySystemAccess).toHaveBeenCalledTimes(1); + expect(mockRequestMediaKeySystemAccess).toHaveBeenCalledWith("foo", defaultKSConfig); }); it("should throw if given multiple incompatible keySystemsConfigs", async () => { - const requestMediaKeySystemAccessSpy = jest.fn(() => Promise.reject("nope")); - mockCompat({ requestMediaKeySystemAccess: requestMediaKeySystemAccessSpy }); + const mockRequestMediaKeySystemAccess = jest.fn(() => Promise.reject("nope")); + mockCompat({ requestMediaKeySystemAccess: mockRequestMediaKeySystemAccess }); const config = [ { type: "foo", getLicense: neverCalledFn }, { type: "bar", getLicense: neverCalledFn }, { type: "baz", getLicense: neverCalledFn } ]; await checkIncompatibleKeySystemsErrorMessage(config); - expect(requestMediaKeySystemAccessSpy).toHaveBeenCalledTimes(3); - expect(requestMediaKeySystemAccessSpy) + expect(mockRequestMediaKeySystemAccess).toHaveBeenCalledTimes(3); + expect(mockRequestMediaKeySystemAccess) .toHaveBeenNthCalledWith(1, "foo", defaultKSConfig); - expect(requestMediaKeySystemAccessSpy) + expect(mockRequestMediaKeySystemAccess) .toHaveBeenNthCalledWith(2, "bar", defaultKSConfig); - expect(requestMediaKeySystemAccessSpy) + expect(mockRequestMediaKeySystemAccess) .toHaveBeenNthCalledWith(3, "baz", defaultKSConfig); }); @@ -122,7 +122,7 @@ describe("core - decrypt - global tests - media key system access", () => { /* eslint-enable max-len */ mockCompat({ requestMediaKeySystemAccess: undefined }); const mediaElement = document.createElement("video"); - const ContentDecryptor = require("../../content_decryptor").default; + const ContentDecryptor = jest.requireActual("../../content_decryptor").default; const config = [{ type: "foo", getLicense: neverCalledFn }]; const error : any = await testContentDecryptorError(ContentDecryptor, @@ -134,98 +134,98 @@ describe("core - decrypt - global tests - media key system access", () => { }); it("should throw if given a single incompatible keySystemsConfigs", async () => { - const requestMediaKeySystemAccessSpy = jest.fn(() => Promise.reject("nope")); - mockCompat({ requestMediaKeySystemAccess: requestMediaKeySystemAccessSpy }); + const mockRequestMediaKeySystemAccess = jest.fn(() => Promise.reject("nope")); + mockCompat({ requestMediaKeySystemAccess: mockRequestMediaKeySystemAccess }); await checkIncompatibleKeySystemsErrorMessage([{ type: "foo", getLicense: neverCalledFn }]); - expect(requestMediaKeySystemAccessSpy).toHaveBeenCalledTimes(1); - expect(requestMediaKeySystemAccessSpy).toHaveBeenCalledWith("foo", defaultKSConfig); + expect(mockRequestMediaKeySystemAccess).toHaveBeenCalledTimes(1); + expect(mockRequestMediaKeySystemAccess).toHaveBeenCalledWith("foo", defaultKSConfig); }); /* eslint-disable max-len */ it("should change persistentState value if persistentStateRequired is set to true", async () => { /* eslint-enable max-len */ - const requestMediaKeySystemAccessSpy = jest.fn(() => Promise.reject("nope")); - mockCompat({ requestMediaKeySystemAccess: requestMediaKeySystemAccessSpy }); + const mockRequestMediaKeySystemAccess = jest.fn(() => Promise.reject("nope")); + mockCompat({ requestMediaKeySystemAccess: mockRequestMediaKeySystemAccess }); await checkIncompatibleKeySystemsErrorMessage([{ type: "foo", getLicense: neverCalledFn, persistentStateRequired: true }]); - expect(requestMediaKeySystemAccessSpy).toHaveBeenCalledTimes(1); + expect(mockRequestMediaKeySystemAccess).toHaveBeenCalledTimes(1); const expectedConfig = defaultKSConfig.map(conf => { return { ...conf, persistentState: "required" }; }); - expect(requestMediaKeySystemAccessSpy).toHaveBeenCalledWith("foo", expectedConfig); + expect(mockRequestMediaKeySystemAccess).toHaveBeenCalledWith("foo", expectedConfig); }); /* eslint-disable max-len */ it("should not change persistentState value if persistentStateRequired is set to false", async () => { /* eslint-enable max-len */ - const requestMediaKeySystemAccessSpy = jest.fn(() => Promise.reject("nope")); - mockCompat({ requestMediaKeySystemAccess: requestMediaKeySystemAccessSpy }); + const mockRequestMediaKeySystemAccess = jest.fn(() => Promise.reject("nope")); + mockCompat({ requestMediaKeySystemAccess: mockRequestMediaKeySystemAccess }); await checkIncompatibleKeySystemsErrorMessage([{ type: "foo", getLicense: neverCalledFn, persistentStateRequired: false }]); - expect(requestMediaKeySystemAccessSpy).toHaveBeenCalledTimes(1); - expect(requestMediaKeySystemAccessSpy).toHaveBeenCalledWith("foo", defaultKSConfig); + expect(mockRequestMediaKeySystemAccess).toHaveBeenCalledTimes(1); + expect(mockRequestMediaKeySystemAccess).toHaveBeenCalledWith("foo", defaultKSConfig); }); /* eslint-disable max-len */ it("should change distinctiveIdentifier value if distinctiveIdentifierRequired is set to true", async () => { /* eslint-enable max-len */ - const requestMediaKeySystemAccessSpy = jest.fn(() => Promise.reject("nope")); - mockCompat({ requestMediaKeySystemAccess: requestMediaKeySystemAccessSpy }); + const mockRequestMediaKeySystemAccess = jest.fn(() => Promise.reject("nope")); + mockCompat({ requestMediaKeySystemAccess: mockRequestMediaKeySystemAccess }); await checkIncompatibleKeySystemsErrorMessage([{ type: "foo", getLicense: neverCalledFn, distinctiveIdentifierRequired: true, }]); - expect(requestMediaKeySystemAccessSpy).toHaveBeenCalledTimes(1); + expect(mockRequestMediaKeySystemAccess).toHaveBeenCalledTimes(1); const expectedConfig = defaultKSConfig.map(conf => { return { ...conf, distinctiveIdentifier: "required" }; }); - expect(requestMediaKeySystemAccessSpy).toHaveBeenCalledWith("foo", expectedConfig); + expect(mockRequestMediaKeySystemAccess).toHaveBeenCalledWith("foo", expectedConfig); }); /* eslint-disable max-len */ it("should not change distinctiveIdentifier value if distinctiveIdentifierRequired is set to false", async () => { /* eslint-enable max-len */ - const requestMediaKeySystemAccessSpy = jest.fn(() => Promise.reject("nope")); - mockCompat({ requestMediaKeySystemAccess: requestMediaKeySystemAccessSpy }); + const mockRequestMediaKeySystemAccess = jest.fn(() => Promise.reject("nope")); + mockCompat({ requestMediaKeySystemAccess: mockRequestMediaKeySystemAccess }); await checkIncompatibleKeySystemsErrorMessage([{ type: "foo", getLicense: neverCalledFn, distinctiveIdentifierRequired: false, }]); - expect(requestMediaKeySystemAccessSpy).toHaveBeenCalledTimes(1); - expect(requestMediaKeySystemAccessSpy).toHaveBeenCalledWith("foo", defaultKSConfig); + expect(mockRequestMediaKeySystemAccess).toHaveBeenCalledTimes(1); + expect(mockRequestMediaKeySystemAccess).toHaveBeenCalledWith("foo", defaultKSConfig); }); it("should do nothing if just licenseStorage is set", async () => { - const requestMediaKeySystemAccessSpy = jest.fn(() => Promise.reject("nope")); - mockCompat({ requestMediaKeySystemAccess: requestMediaKeySystemAccessSpy }); + const mockRequestMediaKeySystemAccess = jest.fn(() => Promise.reject("nope")); + mockCompat({ requestMediaKeySystemAccess: mockRequestMediaKeySystemAccess }); const licenseStorage = { save() { throw new Error("Should not save."); }, load() { throw new Error("Should not load."); } }; await checkIncompatibleKeySystemsErrorMessage([{ type: "foo", getLicense: neverCalledFn, licenseStorage }]); - expect(requestMediaKeySystemAccessSpy).toHaveBeenCalledTimes(1); - expect(requestMediaKeySystemAccessSpy).toHaveBeenCalledWith("foo", defaultKSConfig); + expect(mockRequestMediaKeySystemAccess).toHaveBeenCalledTimes(1); + expect(mockRequestMediaKeySystemAccess).toHaveBeenCalledWith("foo", defaultKSConfig); }); /* eslint-disable max-len */ it("should want persistent sessions if both persistentLicense and licenseStorage are set", async () => { /* eslint-enable max-len */ - const requestMediaKeySystemAccessSpy = jest.fn(() => Promise.reject("nope")); - mockCompat({ requestMediaKeySystemAccess: requestMediaKeySystemAccessSpy }); + const mockRequestMediaKeySystemAccess = jest.fn(() => Promise.reject("nope")); + mockCompat({ requestMediaKeySystemAccess: mockRequestMediaKeySystemAccess }); const licenseStorage = { save() { throw new Error("Should not save."); }, load() { throw new Error("Should not load."); } }; await checkIncompatibleKeySystemsErrorMessage([{ type: "foo", getLicense: neverCalledFn, licenseStorage, persistentLicense: true }]); - expect(requestMediaKeySystemAccessSpy).toHaveBeenCalledTimes(1); + expect(mockRequestMediaKeySystemAccess).toHaveBeenCalledTimes(1); const expectedConfig = defaultKSConfig.map(conf => { return { ...conf, @@ -233,108 +233,108 @@ describe("core - decrypt - global tests - media key system access", () => { sessionTypes: ["temporary", "persistent-license"] }; }); - expect(requestMediaKeySystemAccessSpy).toHaveBeenCalledWith("foo", expectedConfig); + expect(mockRequestMediaKeySystemAccess).toHaveBeenCalledWith("foo", expectedConfig); }); /* eslint-disable max-len */ it("should want persistent sessions if just persistentLicense is set to true", async () => { /* eslint-enable max-len */ - const requestMediaKeySystemAccessSpy = jest.fn(() => Promise.reject("nope")); - mockCompat({ requestMediaKeySystemAccess: requestMediaKeySystemAccessSpy }); + const mockRequestMediaKeySystemAccess = jest.fn(() => Promise.reject("nope")); + mockCompat({ requestMediaKeySystemAccess: mockRequestMediaKeySystemAccess }); await checkIncompatibleKeySystemsErrorMessage([{ type: "foo", getLicense: neverCalledFn, persistentLicense: true }]); - expect(requestMediaKeySystemAccessSpy).toHaveBeenCalledTimes(1); + expect(mockRequestMediaKeySystemAccess).toHaveBeenCalledTimes(1); const expectedConfig = defaultKSConfig.map(conf => { return { ...conf, persistentState: "required", sessionTypes: ["temporary", "persistent-license"] }; }); - expect(requestMediaKeySystemAccessSpy).toHaveBeenCalledWith("foo", expectedConfig); + expect(mockRequestMediaKeySystemAccess).toHaveBeenCalledWith("foo", expectedConfig); }); it("should do nothing if persistentLicense is set to false", async () => { - const requestMediaKeySystemAccessSpy = jest.fn(() => Promise.reject("nope")); - mockCompat({ requestMediaKeySystemAccess: requestMediaKeySystemAccessSpy }); + const mockRequestMediaKeySystemAccess = jest.fn(() => Promise.reject("nope")); + mockCompat({ requestMediaKeySystemAccess: mockRequestMediaKeySystemAccess }); await checkIncompatibleKeySystemsErrorMessage([{ type: "foo", getLicense: neverCalledFn, persistentLicense: false }]); - expect(requestMediaKeySystemAccessSpy).toHaveBeenCalledTimes(1); - expect(requestMediaKeySystemAccessSpy).toHaveBeenCalledWith("foo", defaultKSConfig); + expect(mockRequestMediaKeySystemAccess).toHaveBeenCalledTimes(1); + expect(mockRequestMediaKeySystemAccess).toHaveBeenCalledWith("foo", defaultKSConfig); }); it("should translate a `clearkey` keySystem", async () => { - const requestMediaKeySystemAccessSpy = jest.fn(() => Promise.reject("nope")); - mockCompat({ requestMediaKeySystemAccess: requestMediaKeySystemAccessSpy }); + const mockRequestMediaKeySystemAccess = jest.fn(() => Promise.reject("nope")); + mockCompat({ requestMediaKeySystemAccess: mockRequestMediaKeySystemAccess }); await checkIncompatibleKeySystemsErrorMessage([{ type: "clearkey", getLicense: neverCalledFn }]); - expect(requestMediaKeySystemAccessSpy).toHaveBeenCalledTimes(2); - expect(requestMediaKeySystemAccessSpy) + expect(mockRequestMediaKeySystemAccess).toHaveBeenCalledTimes(2); + expect(mockRequestMediaKeySystemAccess) .toHaveBeenNthCalledWith(1, "webkit-org.w3.clearkey", defaultKSConfig); - expect(requestMediaKeySystemAccessSpy) + expect(mockRequestMediaKeySystemAccess) .toHaveBeenNthCalledWith(2, "org.w3.clearkey", defaultKSConfig); }); it("should translate a `widevine` keySystem", async () => { - const requestMediaKeySystemAccessSpy = jest.fn(() => Promise.reject("nope")); - mockCompat({ requestMediaKeySystemAccess: requestMediaKeySystemAccessSpy }); + const mockRequestMediaKeySystemAccess = jest.fn(() => Promise.reject("nope")); + mockCompat({ requestMediaKeySystemAccess: mockRequestMediaKeySystemAccess }); await checkIncompatibleKeySystemsErrorMessage([{ type: "widevine", getLicense: neverCalledFn }]); - expect(requestMediaKeySystemAccessSpy).toHaveBeenCalledTimes(1); - expect(requestMediaKeySystemAccessSpy) + expect(mockRequestMediaKeySystemAccess).toHaveBeenCalledTimes(1); + expect(mockRequestMediaKeySystemAccess) .toHaveBeenCalledWith("com.widevine.alpha", defaultWidevineConfig); }); it("should translate a `playready` keySystem", async () => { - const requestMediaKeySystemAccessSpy = jest.fn(() => Promise.reject("nope")); - mockCompat({ requestMediaKeySystemAccess: requestMediaKeySystemAccessSpy }); + const mockRequestMediaKeySystemAccess = jest.fn(() => Promise.reject("nope")); + mockCompat({ requestMediaKeySystemAccess: mockRequestMediaKeySystemAccess }); await checkIncompatibleKeySystemsErrorMessage([{ type: "playready", getLicense: neverCalledFn }]); - expect(requestMediaKeySystemAccessSpy).toHaveBeenCalledTimes(3); - expect(requestMediaKeySystemAccessSpy) + expect(mockRequestMediaKeySystemAccess).toHaveBeenCalledTimes(3); + expect(mockRequestMediaKeySystemAccess) .toHaveBeenNthCalledWith(1, "com.microsoft.playready", defaultKSConfig); - expect(requestMediaKeySystemAccessSpy) + expect(mockRequestMediaKeySystemAccess) .toHaveBeenNthCalledWith(2, "com.chromecast.playready", defaultKSConfig); - expect(requestMediaKeySystemAccessSpy) + expect(mockRequestMediaKeySystemAccess) .toHaveBeenNthCalledWith(3, "com.youtube.playready", defaultKSConfig); }); it("should translate a `fairplay` keySystem", async () => { - const requestMediaKeySystemAccessSpy = jest.fn(() => Promise.reject("nope")); - mockCompat({ requestMediaKeySystemAccess: requestMediaKeySystemAccessSpy }); + const mockRequestMediaKeySystemAccess = jest.fn(() => Promise.reject("nope")); + mockCompat({ requestMediaKeySystemAccess: mockRequestMediaKeySystemAccess }); await checkIncompatibleKeySystemsErrorMessage([{ type: "fairplay", getLicense: neverCalledFn }]); - expect(requestMediaKeySystemAccessSpy).toHaveBeenCalledTimes(1); - expect(requestMediaKeySystemAccessSpy) + expect(mockRequestMediaKeySystemAccess).toHaveBeenCalledTimes(1); + expect(mockRequestMediaKeySystemAccess) .toHaveBeenCalledWith("com.apple.fps.1_0", defaultKSConfig); }); it("should translate a multiple keySystems at the same time", async () => { - const requestMediaKeySystemAccessSpy = jest.fn(() => Promise.reject("nope")); - mockCompat({ requestMediaKeySystemAccess: requestMediaKeySystemAccessSpy }); + const mockRequestMediaKeySystemAccess = jest.fn(() => Promise.reject("nope")); + mockCompat({ requestMediaKeySystemAccess: mockRequestMediaKeySystemAccess }); await checkIncompatibleKeySystemsErrorMessage([{ type: "playready", getLicense: neverCalledFn }, { type: "clearkey", getLicense: neverCalledFn }]); - expect(requestMediaKeySystemAccessSpy).toHaveBeenCalledTimes(5); - expect(requestMediaKeySystemAccessSpy) + expect(mockRequestMediaKeySystemAccess).toHaveBeenCalledTimes(5); + expect(mockRequestMediaKeySystemAccess) .toHaveBeenNthCalledWith(1, "com.microsoft.playready", defaultKSConfig); - expect(requestMediaKeySystemAccessSpy) + expect(mockRequestMediaKeySystemAccess) .toHaveBeenNthCalledWith(2, "com.chromecast.playready", defaultKSConfig); - expect(requestMediaKeySystemAccessSpy) + expect(mockRequestMediaKeySystemAccess) .toHaveBeenNthCalledWith(3, "com.youtube.playready", defaultKSConfig); - expect(requestMediaKeySystemAccessSpy) + expect(mockRequestMediaKeySystemAccess) .toHaveBeenNthCalledWith(4, "webkit-org.w3.clearkey", defaultKSConfig); - expect(requestMediaKeySystemAccessSpy) + expect(mockRequestMediaKeySystemAccess) .toHaveBeenNthCalledWith(5, "org.w3.clearkey", defaultKSConfig); }); /* eslint-disable max-len */ it("should translate a multiple keySystems at the same time with different configs", async () => { /* eslint-enable max-len */ - const requestMediaKeySystemAccessSpy = jest.fn(() => Promise.reject("nope")); - mockCompat({ requestMediaKeySystemAccess: requestMediaKeySystemAccessSpy }); + const mockRequestMediaKeySystemAccess = jest.fn(() => Promise.reject("nope")); + mockCompat({ requestMediaKeySystemAccess: mockRequestMediaKeySystemAccess }); await checkIncompatibleKeySystemsErrorMessage([{ type: "playready", persistentLicense: true, getLicense: neverCalledFn }, @@ -350,24 +350,24 @@ describe("core - decrypt - global tests - media key system access", () => { const expectedIdentifierConfig = defaultKSConfig.map(conf => { return { ...conf, distinctiveIdentifier: "required" }; }); - expect(requestMediaKeySystemAccessSpy).toHaveBeenCalledTimes(5); - expect(requestMediaKeySystemAccessSpy) + expect(mockRequestMediaKeySystemAccess).toHaveBeenCalledTimes(5); + expect(mockRequestMediaKeySystemAccess) .toHaveBeenNthCalledWith(1, "com.microsoft.playready", expectedPersistentConfig); - expect(requestMediaKeySystemAccessSpy) + expect(mockRequestMediaKeySystemAccess) .toHaveBeenNthCalledWith(2, "com.chromecast.playready", expectedPersistentConfig); - expect(requestMediaKeySystemAccessSpy) + expect(mockRequestMediaKeySystemAccess) .toHaveBeenNthCalledWith(3, "com.youtube.playready", expectedPersistentConfig); - expect(requestMediaKeySystemAccessSpy) + expect(mockRequestMediaKeySystemAccess) .toHaveBeenNthCalledWith(4, "webkit-org.w3.clearkey", expectedIdentifierConfig); - expect(requestMediaKeySystemAccessSpy) + expect(mockRequestMediaKeySystemAccess) .toHaveBeenNthCalledWith(5, "org.w3.clearkey", expectedIdentifierConfig); }); /* eslint-disable max-len */ it("should set widevine robustnesses for a `com.widevine.alpha` keySystem", async () => { /* eslint-enable max-len */ - const requestMediaKeySystemAccessSpy = jest.fn(() => Promise.reject("nope")); - mockCompat({ requestMediaKeySystemAccess: requestMediaKeySystemAccessSpy }); + const mockRequestMediaKeySystemAccess = jest.fn(() => Promise.reject("nope")); + mockCompat({ requestMediaKeySystemAccess: mockRequestMediaKeySystemAccess }); await checkIncompatibleKeySystemsErrorMessage([{ type: "playready", persistentLicense: true, getLicense: neverCalledFn }, @@ -382,16 +382,16 @@ describe("core - decrypt - global tests - media key system access", () => { const expectedIdentifierConfig = defaultKSConfig.map(conf => { return { ...conf, distinctiveIdentifier: "required" }; }); - expect(requestMediaKeySystemAccessSpy).toHaveBeenCalledTimes(5); - expect(requestMediaKeySystemAccessSpy) + expect(mockRequestMediaKeySystemAccess).toHaveBeenCalledTimes(5); + expect(mockRequestMediaKeySystemAccess) .toHaveBeenNthCalledWith(1, "com.microsoft.playready", expectedPersistentConfig); - expect(requestMediaKeySystemAccessSpy) + expect(mockRequestMediaKeySystemAccess) .toHaveBeenNthCalledWith(2, "com.chromecast.playready", expectedPersistentConfig); - expect(requestMediaKeySystemAccessSpy) + expect(mockRequestMediaKeySystemAccess) .toHaveBeenNthCalledWith(3, "com.youtube.playready", expectedPersistentConfig); - expect(requestMediaKeySystemAccessSpy) + expect(mockRequestMediaKeySystemAccess) .toHaveBeenNthCalledWith(4, "webkit-org.w3.clearkey", expectedIdentifierConfig); - expect(requestMediaKeySystemAccessSpy) + expect(mockRequestMediaKeySystemAccess) .toHaveBeenNthCalledWith(5, "org.w3.clearkey", expectedIdentifierConfig); }); @@ -399,22 +399,22 @@ describe("core - decrypt - global tests - media key system access", () => { it("should successfully create a MediaKeySystemAccess if given the right configuration", async () => { /* eslint-enable max-len */ return new Promise((res, rej) => { - const requestMediaKeySystemAccessSpy = jest.fn((keyType, conf) => { + const mockRequestMediaKeySystemAccess = jest.fn((keyType, conf) => { return requestMediaKeySystemAccessNoMediaKeys(keyType, conf); }); - mockCompat({ requestMediaKeySystemAccess: requestMediaKeySystemAccessSpy }); + mockCompat({ requestMediaKeySystemAccess: mockRequestMediaKeySystemAccess }); const config = [{ type: "com.widevine.alpha", getLicense: neverCalledFn }]; const mediaElement = document.createElement("video"); - const ContentDecryptor = require("../../content_decryptor").default; + const ContentDecryptor = jest.requireActual("../../content_decryptor").default; const contentDecryptor = new ContentDecryptor(mediaElement, config); contentDecryptor.addEventListener("error", (error: any) => { rej(error); }); setTimeout(() => { - expect(requestMediaKeySystemAccessSpy).toHaveBeenCalledTimes(1); - expect(requestMediaKeySystemAccessSpy) + expect(mockRequestMediaKeySystemAccess).toHaveBeenCalledTimes(1); + expect(mockRequestMediaKeySystemAccess) .toHaveBeenCalledWith("com.widevine.alpha", defaultWidevineConfig); res(); }, 10); @@ -426,29 +426,29 @@ describe("core - decrypt - global tests - media key system access", () => { /* eslint-enable max-len */ return new Promise((res, rej) => { let callNb = 0; - const requestMediaKeySystemAccessSpy = jest.fn((keyType, conf) => { + const mockRequestMediaKeySystemAccess = jest.fn((keyType, conf) => { if (++callNb === 2) { return requestMediaKeySystemAccessNoMediaKeys(keyType, conf); } return Promise.reject("nope"); }); - mockCompat({ requestMediaKeySystemAccess: requestMediaKeySystemAccessSpy }); + mockCompat({ requestMediaKeySystemAccess: mockRequestMediaKeySystemAccess }); const config = [{ type: "com.widevine.alpha", getLicense: neverCalledFn }, { type: "some-other-working-key-system", getLicense: neverCalledFn }]; const mediaElement = document.createElement("video"); - const ContentDecryptor = require("../../content_decryptor").default; + const ContentDecryptor = jest.requireActual("../../content_decryptor").default; const contentDecryptor = new ContentDecryptor(mediaElement, config); contentDecryptor.addEventListener("error", (error: any) => { rej(error); }); setTimeout(() => { - expect(requestMediaKeySystemAccessSpy).toHaveBeenCalledTimes(2); - expect(requestMediaKeySystemAccessSpy) + expect(mockRequestMediaKeySystemAccess).toHaveBeenCalledTimes(2); + expect(mockRequestMediaKeySystemAccess) .toHaveBeenNthCalledWith(1, "com.widevine.alpha", defaultWidevineConfig); - expect(requestMediaKeySystemAccessSpy) + expect(mockRequestMediaKeySystemAccess) .toHaveBeenNthCalledWith(2, "some-other-working-key-system", defaultKSConfig); res(); }, 10); @@ -459,16 +459,16 @@ describe("core - decrypt - global tests - media key system access", () => { return new Promise((res, rej) => { let contentDecryptor : any = null; let rmksHasBeenCalled = false; - const requestMediaKeySystemAccessSpy = jest.fn(() => { + const mockRequestMediaKeySystemAccess = jest.fn(() => { return Promise.resolve().then(() => { rmksHasBeenCalled = true; contentDecryptor.dispose(); return Promise.reject("nope"); }); }); - mockCompat({ requestMediaKeySystemAccess: requestMediaKeySystemAccessSpy }); + mockCompat({ requestMediaKeySystemAccess: mockRequestMediaKeySystemAccess }); const mediaElement = document.createElement("video"); - const ContentDecryptor = require("../../content_decryptor").default; + const ContentDecryptor = jest.requireActual("../../content_decryptor").default; const config = [ { type: "foo", getLicense: neverCalledFn }, { type: "bar", getLicense: neverCalledFn }, @@ -479,8 +479,8 @@ describe("core - decrypt - global tests - media key system access", () => { }); setTimeout(() => { expect(rmksHasBeenCalled).toEqual(true); - expect(requestMediaKeySystemAccessSpy).toHaveBeenCalledTimes(1); - expect(requestMediaKeySystemAccessSpy) + expect(mockRequestMediaKeySystemAccess).toHaveBeenCalledTimes(1); + expect(mockRequestMediaKeySystemAccess) .toHaveBeenNthCalledWith(1, "foo", defaultKSConfig); res(); }, 10); @@ -490,13 +490,13 @@ describe("core - decrypt - global tests - media key system access", () => { it("should trigger error even if requestMediaKeySystemAccess throws", () => { return new Promise((res, rej) => { let rmksHasBeenCalled = false; - const requestMediaKeySystemAccessSpy = jest.fn(() => { + const mockRequestMediaKeySystemAccess = jest.fn(() => { rmksHasBeenCalled = true; throw new Error("nope"); }); - mockCompat({ requestMediaKeySystemAccess: requestMediaKeySystemAccessSpy }); + mockCompat({ requestMediaKeySystemAccess: mockRequestMediaKeySystemAccess }); const mediaElement = document.createElement("video"); - const ContentDecryptor = require("../../content_decryptor").default; + const ContentDecryptor = jest.requireActual("../../content_decryptor").default; const config = [{ type: "foo", getLicense: neverCalledFn }]; const contentDecryptor = new ContentDecryptor(mediaElement, config); diff --git a/src/core/decrypt/__tests__/__global__/media_keys.test.ts b/src/core/decrypt/__tests__/__global__/media_keys.test.ts index d5fe0a4300..039c6cd693 100644 --- a/src/core/decrypt/__tests__/__global__/media_keys.test.ts +++ b/src/core/decrypt/__tests__/__global__/media_keys.test.ts @@ -16,7 +16,6 @@ /* eslint-disable @typescript-eslint/no-unsafe-assignment */ /* eslint-disable @typescript-eslint/no-unsafe-member-access */ -/* eslint-disable @typescript-eslint/no-var-requires */ /* eslint-disable @typescript-eslint/no-unsafe-call */ /* eslint-disable @typescript-eslint/no-unsafe-assignment */ /* eslint-disable @typescript-eslint/no-unsafe-return */ @@ -63,7 +62,7 @@ describe("core - decrypt - global tests - media key system access", () => { mockCompat({ requestMediaKeySystemAccess: requestMediaKeySystemAccessBadMediaKeys }); // == test == - const ContentDecryptor = require("../../content_decryptor").default; + const ContentDecryptor = jest.requireActual("../../content_decryptor").default; const error : any = await testContentDecryptorError(ContentDecryptor, videoElt, ksConfig); expect(error).toBeInstanceOf(Error); @@ -89,7 +88,7 @@ describe("core - decrypt - global tests - media key system access", () => { mockCompat({ requestMediaKeySystemAccess: requestMediaKeySystemAccessRejMediaKeys }); // == test == - const ContentDecryptor = require("../../content_decryptor").default; + const ContentDecryptor = jest.requireActual("../../content_decryptor").default; const error : any = await testContentDecryptorError(ContentDecryptor, videoElt, ksConfig); expect(error).toBeInstanceOf(Error); @@ -105,8 +104,8 @@ describe("core - decrypt - global tests - media key system access", () => { /* eslint-enable max-len */ return new Promise((res, rej) => { mockCompat({}); - const { ContentDecryptorState } = require("../../content_decryptor"); - const ContentDecryptor = require("../../content_decryptor").default; + const { ContentDecryptorState } = jest.requireActual("../../content_decryptor"); + const ContentDecryptor = jest.requireActual("../../content_decryptor").default; const contentDecryptor = new ContentDecryptor(videoElt, ksConfig); let receivedStateChange = 0; contentDecryptor.addEventListener("stateChange", (newState: any) => { @@ -132,22 +131,22 @@ describe("core - decrypt - global tests - media key system access", () => { /* eslint-enable max-len */ // == mocks == - const setMediaKeysSpy = jest.fn(() => Promise.resolve()); - mockCompat({ setMediaKeys: setMediaKeysSpy }); - const createSessionSpy = jest.spyOn(MediaKeysImpl.prototype, "createSession"); + const mockSetMediaKeys = jest.fn(() => Promise.resolve()); + mockCompat({ setMediaKeys: mockSetMediaKeys }); + const mockCreateSession = jest.spyOn(MediaKeysImpl.prototype, "createSession"); // == test == - const { ContentDecryptorState } = require("../../content_decryptor"); - const ContentDecryptor = require("../../content_decryptor").default; + const { ContentDecryptorState } = jest.requireActual("../../content_decryptor"); + const ContentDecryptor = jest.requireActual("../../content_decryptor").default; const contentDecryptor = new ContentDecryptor(videoElt, ksConfig); contentDecryptor.addEventListener("stateChange", (newState: any) => { if (newState === ContentDecryptorState.WaitingForAttachment) { contentDecryptor.removeEventListener("stateChange"); contentDecryptor.attach(); setTimeout(() => { - expect(setMediaKeysSpy).toHaveBeenCalledTimes(1); - expect(setMediaKeysSpy).toHaveBeenCalledWith(videoElt, new MediaKeysImpl()); - expect(createSessionSpy).not.toHaveBeenCalled(); + expect(mockSetMediaKeys).toHaveBeenCalledTimes(1); + expect(mockSetMediaKeys).toHaveBeenCalledWith(videoElt, new MediaKeysImpl()); + expect(mockCreateSession).not.toHaveBeenCalled(); done(); }, 5); } diff --git a/src/core/decrypt/__tests__/__global__/server_certificate.test.ts b/src/core/decrypt/__tests__/__global__/server_certificate.test.ts index ccb11b8bda..80d71586a0 100644 --- a/src/core/decrypt/__tests__/__global__/server_certificate.test.ts +++ b/src/core/decrypt/__tests__/__global__/server_certificate.test.ts @@ -16,7 +16,6 @@ /* eslint-disable @typescript-eslint/no-unsafe-assignment */ /* eslint-disable @typescript-eslint/no-unsafe-member-access */ -/* eslint-disable @typescript-eslint/no-var-requires */ /* eslint-disable @typescript-eslint/no-unsafe-call */ /* eslint-disable @typescript-eslint/no-unsafe-assignment */ /* eslint-disable @typescript-eslint/no-unsafe-return */ @@ -32,7 +31,7 @@ import { describe("core - decrypt - global tests - server certificate", () => { - const getLicenseSpy = jest.fn(() => { + const mockGetLicense = jest.fn(() => { return new Promise(() => { /* noop */ }); }); @@ -43,7 +42,7 @@ describe("core - decrypt - global tests - server certificate", () => { /** Default keySystems configuration used in our tests. */ const ksConfigCert = [{ type: "com.widevine.alpha", - getLicense: getLicenseSpy, + getLicense: mockGetLicense, serverCertificate }]; beforeEach(() => { @@ -52,70 +51,70 @@ describe("core - decrypt - global tests - server certificate", () => { }); it("should set the serverCertificate only after the MediaKeys is attached", (done) => { - const { setMediaKeysSpy } = mockCompat(); - setMediaKeysSpy.mockImplementation(() => { - expect(createSessionSpy).not.toHaveBeenCalled(); - expect(serverCertificateSpy).not.toHaveBeenCalled(); + const { mockSetMediaKeys } = mockCompat(); + mockSetMediaKeys.mockImplementation(() => { + expect(mockCreateSession).not.toHaveBeenCalled(); + expect(mockSetServerCertificate).not.toHaveBeenCalled(); }); - const createSessionSpy = jest.spyOn(MediaKeysImpl.prototype, "createSession"); - const serverCertificateSpy = + const mockCreateSession = jest.spyOn(MediaKeysImpl.prototype, "createSession"); + const mockSetServerCertificate = jest.spyOn(MediaKeysImpl.prototype, "setServerCertificate") .mockImplementation((_serverCertificate : BufferSource) => { - expect(setMediaKeysSpy).toHaveBeenCalledTimes(1); - expect(createSessionSpy).not.toHaveBeenCalled(); + expect(mockSetMediaKeys).toHaveBeenCalledTimes(1); + expect(mockCreateSession).not.toHaveBeenCalled(); return Promise.resolve(true); }); - const { ContentDecryptorState } = require("../../content_decryptor"); - const ContentDecryptor = require("../../content_decryptor").default; + const { ContentDecryptorState } = jest.requireActual("../../content_decryptor"); + const ContentDecryptor = jest.requireActual("../../content_decryptor").default; const contentDecryptor = new ContentDecryptor(videoElt, ksConfigCert); contentDecryptor.addEventListener("stateChange", (state: any) => { if (state === ContentDecryptorState.WaitingForAttachment) { contentDecryptor.removeEventListener("stateChange"); setTimeout(() => { - expect(setMediaKeysSpy).not.toHaveBeenCalled(); - expect(createSessionSpy).not.toHaveBeenCalled(); - expect(serverCertificateSpy).not.toHaveBeenCalled(); + expect(mockSetMediaKeys).not.toHaveBeenCalled(); + expect(mockCreateSession).not.toHaveBeenCalled(); + expect(mockSetServerCertificate).not.toHaveBeenCalled(); contentDecryptor.attach(); }, 5); } }); setTimeout(() => { contentDecryptor.dispose(); - expect(setMediaKeysSpy).toHaveBeenCalledTimes(1); - expect(serverCertificateSpy).toHaveBeenCalledTimes(1); - expect(createSessionSpy).not.toHaveBeenCalled(); + expect(mockSetMediaKeys).toHaveBeenCalledTimes(1); + expect(mockSetServerCertificate).toHaveBeenCalledTimes(1); + expect(mockCreateSession).not.toHaveBeenCalled(); done(); }, 10); }); it("should not call serverCertificate multiple times on init data", (done) => { - const { setMediaKeysSpy } = mockCompat(); - setMediaKeysSpy.mockImplementation(() => { - expect(createSessionSpy).not.toHaveBeenCalled(); - expect(serverCertificateSpy).not.toHaveBeenCalled(); + const { mockSetMediaKeys } = mockCompat(); + mockSetMediaKeys.mockImplementation(() => { + expect(mockCreateSession).not.toHaveBeenCalled(); + expect(mockSetServerCertificate).not.toHaveBeenCalled(); }); - const createSessionSpy = jest.spyOn(MediaKeysImpl.prototype, "createSession"); - const serverCertificateSpy = + const mockCreateSession = jest.spyOn(MediaKeysImpl.prototype, "createSession"); + const mockSetServerCertificate = jest.spyOn(MediaKeysImpl.prototype, "setServerCertificate") .mockImplementation((_serverCertificate : BufferSource) => { - expect(setMediaKeysSpy).toHaveBeenCalledTimes(1); - expect(createSessionSpy).not.toHaveBeenCalled(); + expect(mockSetMediaKeys).toHaveBeenCalledTimes(1); + expect(mockCreateSession).not.toHaveBeenCalled(); return Promise.resolve(true); }); - const { ContentDecryptorState } = require("../../content_decryptor"); - const ContentDecryptor = require("../../content_decryptor").default; + const { ContentDecryptorState } = jest.requireActual("../../content_decryptor"); + const ContentDecryptor = jest.requireActual("../../content_decryptor").default; const contentDecryptor = new ContentDecryptor(videoElt, ksConfigCert); contentDecryptor.addEventListener("stateChange", (state: any) => { if (state === ContentDecryptorState.WaitingForAttachment) { contentDecryptor.removeEventListener("stateChange"); setTimeout(() => { - expect(setMediaKeysSpy).not.toHaveBeenCalled(); - expect(createSessionSpy).not.toHaveBeenCalled(); - expect(serverCertificateSpy).not.toHaveBeenCalled(); + expect(mockSetMediaKeys).not.toHaveBeenCalled(); + expect(mockCreateSession).not.toHaveBeenCalled(); + expect(mockSetServerCertificate).not.toHaveBeenCalled(); const initData = new Uint8Array([54, 55, 75]); contentDecryptor.onInitializationData({ type: "cenc2", @@ -127,9 +126,9 @@ describe("core - decrypt - global tests - server certificate", () => { }); setTimeout(() => { contentDecryptor.dispose(); - expect(setMediaKeysSpy).toHaveBeenCalledTimes(1); - expect(serverCertificateSpy).toHaveBeenCalledTimes(1); - expect(createSessionSpy).toHaveBeenCalledTimes(1); + expect(mockSetMediaKeys).toHaveBeenCalledTimes(1); + expect(mockSetServerCertificate).toHaveBeenCalledTimes(1); + expect(mockCreateSession).toHaveBeenCalledTimes(1); done(); }, 10); }); @@ -138,16 +137,16 @@ describe("core - decrypt - global tests - server certificate", () => { it("should emit warning if serverCertificate call rejects but still continue", (done) => { /* eslint-enable max-len */ - const { setMediaKeysSpy } = mockCompat(); - const createSessionSpy = jest.spyOn(MediaKeysImpl.prototype, "createSession"); - const serverCertificateSpy = + const { mockSetMediaKeys } = mockCompat(); + const mockCreateSession = jest.spyOn(MediaKeysImpl.prototype, "createSession"); + const mockSetServerCertificate = jest.spyOn(MediaKeysImpl.prototype, "setServerCertificate") .mockImplementation((_serverCertificate : BufferSource) => { throw new Error("some error"); }); - const { ContentDecryptorState } = require("../../content_decryptor"); - const ContentDecryptor = require("../../content_decryptor").default; + const { ContentDecryptorState } = jest.requireActual("../../content_decryptor"); + const ContentDecryptor = jest.requireActual("../../content_decryptor").default; const contentDecryptor = new ContentDecryptor(videoElt, ksConfigCert); contentDecryptor.addEventListener("stateChange", (state: any) => { @@ -165,9 +164,9 @@ describe("core - decrypt - global tests - server certificate", () => { }); setTimeout(() => { contentDecryptor.dispose(); - expect(setMediaKeysSpy).toHaveBeenCalledTimes(1); - expect(serverCertificateSpy).toHaveBeenCalledTimes(1); - expect(createSessionSpy).not.toHaveBeenCalled(); + expect(mockSetMediaKeys).toHaveBeenCalledTimes(1); + expect(mockSetServerCertificate).toHaveBeenCalledTimes(1); + expect(mockCreateSession).not.toHaveBeenCalled(); expect(warningsReceived).toEqual(1); done(); }, 10); @@ -177,16 +176,16 @@ describe("core - decrypt - global tests - server certificate", () => { it("should emit warning if serverCertificate call throws but still continue", (done) => { /* eslint-enable max-len */ - const { setMediaKeysSpy } = mockCompat(); - const createSessionSpy = jest.spyOn(MediaKeysImpl.prototype, "createSession"); - const serverCertificateSpy = + const { mockSetMediaKeys } = mockCompat(); + const mockCreateSession = jest.spyOn(MediaKeysImpl.prototype, "createSession"); + const mockSetServerCertificate = jest.spyOn(MediaKeysImpl.prototype, "setServerCertificate") .mockImplementation((_serverCertificate : BufferSource) => { return Promise.reject(new Error("some error")); }); - const { ContentDecryptorState } = require("../../content_decryptor"); - const ContentDecryptor = require("../../content_decryptor").default; + const { ContentDecryptorState } = jest.requireActual("../../content_decryptor"); + const ContentDecryptor = jest.requireActual("../../content_decryptor").default; const contentDecryptor = new ContentDecryptor(videoElt, ksConfigCert); contentDecryptor.addEventListener("stateChange", (state: any) => { @@ -204,9 +203,9 @@ describe("core - decrypt - global tests - server certificate", () => { }); setTimeout(() => { contentDecryptor.dispose(); - expect(setMediaKeysSpy).toHaveBeenCalledTimes(1); - expect(serverCertificateSpy).toHaveBeenCalledTimes(1); - expect(createSessionSpy).not.toHaveBeenCalled(); + expect(mockSetMediaKeys).toHaveBeenCalledTimes(1); + expect(mockSetServerCertificate).toHaveBeenCalledTimes(1); + expect(mockCreateSession).not.toHaveBeenCalled(); expect(warningsReceived).toEqual(1); done(); }, 10); @@ -215,7 +214,7 @@ describe("core - decrypt - global tests - server certificate", () => { /* eslint-disable max-len */ it("should just continue if setServerCertificate is undefined", (done) => { /* eslint-enable max-len */ - const { setMediaKeysSpy } = mockCompat(); + const { mockSetMediaKeys } = mockCompat(); jest.spyOn(MediaKeySystemAccessImpl.prototype, "createMediaKeys") .mockImplementation(() => { const mediaKeys = new MediaKeysImpl(); @@ -223,24 +222,24 @@ describe("core - decrypt - global tests - server certificate", () => { .setServerCertificate = undefined; return Promise.resolve(mediaKeys); }); - setMediaKeysSpy.mockImplementation(() => { - expect(createSessionSpy).not.toHaveBeenCalled(); - expect(serverCertificateSpy).not.toHaveBeenCalled(); + mockSetMediaKeys.mockImplementation(() => { + expect(mockCreateSession).not.toHaveBeenCalled(); + expect(mockSetServerCertificate).not.toHaveBeenCalled(); }); - const createSessionSpy = jest.spyOn(MediaKeysImpl.prototype, "createSession"); - const serverCertificateSpy = jest.spyOn(MediaKeysImpl.prototype, - "setServerCertificate"); - const { ContentDecryptorState } = require("../../content_decryptor"); - const ContentDecryptor = require("../../content_decryptor").default; + const mockCreateSession = jest.spyOn(MediaKeysImpl.prototype, "createSession"); + const mockSetServerCertificate = jest.spyOn(MediaKeysImpl.prototype, + "setServerCertificate"); + const { ContentDecryptorState } = jest.requireActual("../../content_decryptor"); + const ContentDecryptor = jest.requireActual("../../content_decryptor").default; const contentDecryptor = new ContentDecryptor(videoElt, ksConfigCert); contentDecryptor.addEventListener("stateChange", (state: any) => { if (state === ContentDecryptorState.WaitingForAttachment) { contentDecryptor.removeEventListener("stateChange"); setTimeout(() => { - expect(setMediaKeysSpy).not.toHaveBeenCalled(); - expect(createSessionSpy).not.toHaveBeenCalled(); - expect(serverCertificateSpy).not.toHaveBeenCalled(); + expect(mockSetMediaKeys).not.toHaveBeenCalled(); + expect(mockCreateSession).not.toHaveBeenCalled(); + expect(mockSetServerCertificate).not.toHaveBeenCalled(); const initData = new Uint8Array([54, 55, 75]); contentDecryptor.onInitializationData({ type: "cenc2", @@ -253,9 +252,9 @@ describe("core - decrypt - global tests - server certificate", () => { }); setTimeout(() => { contentDecryptor.dispose(); - expect(setMediaKeysSpy).toHaveBeenCalledTimes(1); - expect(serverCertificateSpy).not.toHaveBeenCalled(); - expect(createSessionSpy).toHaveBeenCalledTimes(1); + expect(mockSetMediaKeys).toHaveBeenCalledTimes(1); + expect(mockSetServerCertificate).not.toHaveBeenCalled(); + expect(mockCreateSession).toHaveBeenCalledTimes(1); done(); }, 10); }); diff --git a/src/core/decrypt/__tests__/__global__/utils.ts b/src/core/decrypt/__tests__/__global__/utils.ts index 2647928b69..d08f996e8d 100644 --- a/src/core/decrypt/__tests__/__global__/utils.ts +++ b/src/core/decrypt/__tests__/__global__/utils.ts @@ -252,7 +252,7 @@ export function mockCompat(exportedFunctions = {}) { const triggerKeyMessage = new Subject(); const triggerKeyError = new Subject(); const triggerKeyStatusesChange = new Subject(); - const eventSpies : Record = { + const mockEvents : Record = { onEncrypted$: jest.fn(() => triggerEncrypted), onKeyMessage$: jest.fn((mediaKeySession : MediaKeySessionImpl) => { return fromEvent(mediaKeySession, "message"); @@ -265,9 +265,9 @@ export function mockCompat(exportedFunctions = {}) { }), }; - const rmksaSpy = jest.fn(requestMediaKeySystemAccessImpl); - const setMediaKeysSpy = jest.fn(); - const generateKeyRequestSpy = jest.fn(( + const mockRmksa = jest.fn(requestMediaKeySystemAccessImpl); + const mockSetMediaKeys = jest.fn(); + const mockGenerateKeyRequest = jest.fn(( mks : MediaKeySessionImpl, initializationDataType, initializationData @@ -276,27 +276,27 @@ export function mockCompat(exportedFunctions = {}) { initializationData); }); - const getInitDataSpy = jest.fn((encryptedEvent : IEncryptedEventData) => { + const mockGetInitData = jest.fn((encryptedEvent : IEncryptedEventData) => { return encryptedEvent; }); jest.mock("../../../../compat", () => ( - { events: eventSpies, - requestMediaKeySystemAccess: rmksaSpy, - setMediaKeys: setMediaKeysSpy, - getInitData: getInitDataSpy, - generateKeyRequest: generateKeyRequestSpy, + { events: mockEvents, + requestMediaKeySystemAccess: mockRmksa, + setMediaKeys: mockSetMediaKeys, + getInitData: mockGetInitData, + generateKeyRequest: mockGenerateKeyRequest, ...exportedFunctions })); - return { eventSpies, + return { mockEvents, eventTriggers: { triggerEncrypted, triggerKeyMessage, triggerKeyError, triggerKeyStatusesChange }, - requestMediaKeySystemAccessSpy: rmksaSpy, - getInitDataSpy, - setMediaKeysSpy, - generateKeyRequestSpy }; + mockRequestMediaKeySystemAccess: mockRmksa, + mockGetInitData, + mockSetMediaKeys, + mockGenerateKeyRequest }; } /** @@ -305,7 +305,7 @@ export function mockCompat(exportedFunctions = {}) { * Else, reject. * @param {HTMLMediaElement} mediaElement * @param {Array.} keySystemsConfigs - * @param {Observable} contentProtections$ + * @param {Array} keySystemsConfigs * @returns {Promise} */ export function testContentDecryptorError( diff --git a/src/core/decrypt/utils/__tests__/clean_old_loaded_sessions.test.ts b/src/core/decrypt/utils/__tests__/clean_old_loaded_sessions.test.ts index f852974bed..07e87351d7 100644 --- a/src/core/decrypt/utils/__tests__/clean_old_loaded_sessions.test.ts +++ b/src/core/decrypt/utils/__tests__/clean_old_loaded_sessions.test.ts @@ -16,7 +16,6 @@ /* eslint-disable @typescript-eslint/no-unsafe-assignment */ /* eslint-disable @typescript-eslint/no-unsafe-member-access */ -/* eslint-disable @typescript-eslint/no-var-requires */ /* eslint-disable @typescript-eslint/no-unsafe-call */ /* eslint-disable @typescript-eslint/no-unsafe-assignment */ /* eslint-disable @typescript-eslint/no-unsafe-return */ @@ -77,10 +76,10 @@ async function checkNothingHappen( loadedSessionsStore : LoadedSessionsStore, limit : number ) : Promise { - const closeSessionSpy = jest.spyOn(loadedSessionsStore, "closeSession"); + const mockCloseSession = jest.spyOn(loadedSessionsStore, "closeSession"); await cleanOldLoadedSessions(loadedSessionsStore, limit); - expect(closeSessionSpy).not.toHaveBeenCalled(); - closeSessionSpy.mockRestore(); + expect(mockCloseSession).not.toHaveBeenCalled(); + mockCloseSession.mockRestore(); } /** @@ -98,14 +97,14 @@ async function checkEntriesCleaned( limit : number, entries : Array<{ sessionId: string }> ) : Promise { - const closeSessionSpy = jest.spyOn(loadedSessionsStore, "closeSession"); + const mockCloseSession = jest.spyOn(loadedSessionsStore, "closeSession"); const prom = cleanOldLoadedSessions(loadedSessionsStore, limit).then(() => { - expect(closeSessionSpy).toHaveBeenCalledTimes(entries.length); - closeSessionSpy.mockRestore(); + expect(mockCloseSession).toHaveBeenCalledTimes(entries.length); + mockCloseSession.mockRestore(); }); - expect(closeSessionSpy).toHaveBeenCalledTimes(entries.length); + expect(mockCloseSession).toHaveBeenCalledTimes(entries.length); for (let i = 0; i < entries.length; i++) { - expect(closeSessionSpy) + expect(mockCloseSession) .toHaveBeenNthCalledWith(i + 1, entries[i]); } return prom; diff --git a/src/core/decrypt/utils/__tests__/clean_old_stored_persistent_info.test.ts b/src/core/decrypt/utils/__tests__/clean_old_stored_persistent_info.test.ts index 830339119d..27786a7fc8 100644 --- a/src/core/decrypt/utils/__tests__/clean_old_stored_persistent_info.test.ts +++ b/src/core/decrypt/utils/__tests__/clean_old_stored_persistent_info.test.ts @@ -46,15 +46,15 @@ const emptyPersistentSessionsStore = { */ // eslint-disable-next-line @typescript-eslint/no-explicit-any function checkNothingHappen(persistentSessionsStore : any, limit : number) { - const deleteLastSpy = jest.spyOn(persistentSessionsStore, "deleteOldSessions"); - const logInfoSpy = jest.fn(); + const mockDeleteLast = jest.spyOn(persistentSessionsStore, "deleteOldSessions"); + const mockLogInfo = jest.fn(); jest.mock("../../../../log", () => ({ __esModule: true as const, - default: { info: logInfoSpy } })); - const cleanOldStoredPersistentInfo = require("../clean_old_stored_persistent_info") - .default; + default: { info: mockLogInfo } })); + const cleanOldStoredPersistentInfo = + jest.requireActual("../clean_old_stored_persistent_info").default; cleanOldStoredPersistentInfo(persistentSessionsStore, limit); - expect(deleteLastSpy).not.toHaveBeenCalled(); - expect(logInfoSpy).not.toHaveBeenCalled(); + expect(mockDeleteLast).not.toHaveBeenCalled(); + expect(mockLogInfo).not.toHaveBeenCalled(); jest.resetModules(); } @@ -71,20 +71,20 @@ function checkRemoved( limit : number, numberToRemove : number ) { - const deleteLastSpy = jest.spyOn(persistentSessionsStore, "deleteOldSessions"); - const logInfoSpy = jest.fn(); + const mockDeleteLast = jest.spyOn(persistentSessionsStore, "deleteOldSessions"); + const mockLogInfo = jest.fn(); jest.mock("../../../../log", () => ({ __esModule: true as const, - default: { info: logInfoSpy } })); - const cleanOldStoredPersistentInfo = require("../clean_old_stored_persistent_info") - .default; + default: { info: mockLogInfo } })); + const cleanOldStoredPersistentInfo = + jest.requireActual("../clean_old_stored_persistent_info").default; cleanOldStoredPersistentInfo(persistentSessionsStore, limit); - expect(deleteLastSpy).toHaveBeenCalledTimes(1); - expect(deleteLastSpy).toHaveBeenCalledWith(numberToRemove); - expect(logInfoSpy).toHaveBeenCalledTimes(1); - expect(logInfoSpy).toHaveBeenCalledWith("DRM: Too many stored persistent sessions," + + expect(mockDeleteLast).toHaveBeenCalledTimes(1); + expect(mockDeleteLast).toHaveBeenCalledWith(numberToRemove); + expect(mockLogInfo).toHaveBeenCalledTimes(1); + expect(mockLogInfo).toHaveBeenCalledWith("DRM: Too many stored persistent sessions," + " removing some.", - persistentSessionsStore.getLength(), - numberToRemove); + persistentSessionsStore.getLength(), + numberToRemove); jest.resetModules(); } diff --git a/src/core/init/__tests__/are_same_stream_events.test.ts b/src/core/init/__tests__/are_same_stream_events.test.ts index 369589c6d1..4face4ce84 100644 --- a/src/core/init/__tests__/are_same_stream_events.test.ts +++ b/src/core/init/__tests__/are_same_stream_events.test.ts @@ -16,7 +16,6 @@ /* eslint-disable @typescript-eslint/no-unsafe-assignment */ /* eslint-disable @typescript-eslint/no-unsafe-member-access */ -/* eslint-disable @typescript-eslint/no-var-requires */ /* eslint-disable @typescript-eslint/no-unsafe-call */ /* eslint-disable @typescript-eslint/no-unsafe-assignment */ /* eslint-disable @typescript-eslint/no-unsafe-return */ @@ -30,7 +29,7 @@ describe("core - init - areSameStreamEvents", () => { end: 10, id: "1" }; const areSameStreamEvents = - require("../stream_events_emitter/are_same_stream_events.ts").default; + jest.requireActual("../stream_events_emitter/are_same_stream_events.ts").default; const result = areSameStreamEvents(evt1, evt2); expect(result).toBe(true); }); @@ -42,7 +41,7 @@ describe("core - init - areSameStreamEvents", () => { end: undefined, id: "1" }; const areSameStreamEvents = - require("../stream_events_emitter/are_same_stream_events.ts").default; + jest.requireActual("../stream_events_emitter/are_same_stream_events.ts").default; const result = areSameStreamEvents(evt1, evt2); expect(result).toBe(true); }); @@ -54,7 +53,7 @@ describe("core - init - areSameStreamEvents", () => { end: undefined, id: "2" }; const areSameStreamEvents = - require("../stream_events_emitter/are_same_stream_events.ts").default; + jest.requireActual("../stream_events_emitter/are_same_stream_events.ts").default; const result = areSameStreamEvents(evt1, evt2); expect(result).toBe(false); }); @@ -66,7 +65,7 @@ describe("core - init - areSameStreamEvents", () => { end: undefined, id: "1" }; const areSameStreamEvents = - require("../stream_events_emitter/are_same_stream_events.ts").default; + jest.requireActual("../stream_events_emitter/are_same_stream_events.ts").default; const result = areSameStreamEvents(evt1, evt2); expect(result).toBe(false); }); @@ -78,7 +77,7 @@ describe("core - init - areSameStreamEvents", () => { end: 30, id: "1" }; const areSameStreamEvents = - require("../stream_events_emitter/are_same_stream_events.ts").default; + jest.requireActual("../stream_events_emitter/are_same_stream_events.ts").default; const result = areSameStreamEvents(evt1, evt2); expect(result).toBe(false); }); diff --git a/src/core/init/__tests__/refresh_scheduled_events_list.test.ts b/src/core/init/__tests__/refresh_scheduled_events_list.test.ts index 2fba68f928..6f019b83a4 100644 --- a/src/core/init/__tests__/refresh_scheduled_events_list.test.ts +++ b/src/core/init/__tests__/refresh_scheduled_events_list.test.ts @@ -16,7 +16,6 @@ /* eslint-disable @typescript-eslint/no-unsafe-assignment */ /* eslint-disable @typescript-eslint/no-unsafe-member-access */ -/* eslint-disable @typescript-eslint/no-var-requires */ /* eslint-disable @typescript-eslint/no-unsafe-call */ /* eslint-disable @typescript-eslint/no-unsafe-assignment */ /* eslint-disable @typescript-eslint/no-unsafe-return */ @@ -46,7 +45,7 @@ describe("core - init - refreshScheduledEventsList", () => { data: undefined, id: "1" }, ]; - const refreshScheduledEventsList = require( + const refreshScheduledEventsList = jest.requireActual( "../stream_events_emitter/refresh_scheduled_events_list.ts" ).default; diff --git a/src/errors/__tests__/format_error.test.ts b/src/errors/__tests__/format_error.test.ts index e288e249f4..a7fb2d037e 100644 --- a/src/errors/__tests__/format_error.test.ts +++ b/src/errors/__tests__/format_error.test.ts @@ -16,7 +16,6 @@ /* eslint-disable @typescript-eslint/no-unsafe-assignment */ /* eslint-disable @typescript-eslint/no-unsafe-member-access */ -/* eslint-disable @typescript-eslint/no-var-requires */ /* eslint-disable @typescript-eslint/no-unsafe-call */ /* eslint-disable @typescript-eslint/no-unsafe-assignment */ /* eslint-disable @typescript-eslint/no-unsafe-return */ @@ -29,7 +28,7 @@ describe("errors - formatError", () => { it("should just return the error if it is a Custom Error", () => { jest.mock("../is_known_error", () => ({ __esModule: true as const, default: () => true })); - const formatError = require("../format_error").default; + const formatError = jest.requireActual("../format_error").default; const error1 = new Error("Aaaaaa"); expect(formatError(error1, { defaultCode: "toto", defaultReason: "a" })).toBe(error1); @@ -38,8 +37,8 @@ describe("errors - formatError", () => { it("should stringify error if it is an Error but not a Custom Error", () => { jest.mock("../is_known_error", () => ({ __esModule: true as const, default: () => false })); - const OtherError = require("../other_error").default; - const formatError = require("../format_error").default; + const OtherError = jest.requireActual("../other_error").default; + const formatError = jest.requireActual("../format_error").default; const error1 = new Error("Abcdef"); const formattedError = formatError(error1, { defaultCode: "toto", defaultReason: "a" }); @@ -51,8 +50,8 @@ describe("errors - formatError", () => { it("should stringify error if it is an Error but not a Custom Error", () => { jest.mock("../is_known_error", () => ({ __esModule: true as const, default: () => false })); - const OtherError = require("../other_error").default; - const formatError = require("../format_error").default; + const OtherError = jest.requireActual("../other_error").default; + const formatError = jest.requireActual("../format_error").default; const error1 = {}; const formattedError = formatError(error1, { defaultCode: "toto", defaultReason: "a" }); diff --git a/src/experimental/features/__tests__/dash_wasm.test.ts b/src/experimental/features/__tests__/dash_wasm.test.ts index f171d25f37..7122b14899 100644 --- a/src/experimental/features/__tests__/dash_wasm.test.ts +++ b/src/experimental/features/__tests__/dash_wasm.test.ts @@ -28,17 +28,17 @@ jest.mock("../../../transports/dash", () => ({ describe("Features list - DASH WASM Parser", () => { it("should add DASH WASM parser in the current features", () => { - const initializeSpy = jest.spyOn(DashWasmParser.prototype, "initialize") + const mockInitialize = jest.spyOn(DashWasmParser.prototype, "initialize") .mockImplementation(jest.fn()); const DASH_WASM = dashWasmFeature; - expect(initializeSpy).not.toHaveBeenCalled(); + expect(mockInitialize).not.toHaveBeenCalled(); /* eslint-disable @typescript-eslint/no-floating-promises */ DASH_WASM.initialize({ wasmUrl: "blank" }); /* eslint-enable @typescript-eslint/no-floating-promises */ - expect(initializeSpy).toHaveBeenCalledTimes(1); + expect(mockInitialize).toHaveBeenCalledTimes(1); // eslint-disable-next-line @typescript-eslint/no-explicit-any const featureObject : any = { transports: {}, diff --git a/src/experimental/features/__tests__/local.test.ts b/src/experimental/features/__tests__/local.test.ts index 61ac66932f..2a7858aa49 100644 --- a/src/experimental/features/__tests__/local.test.ts +++ b/src/experimental/features/__tests__/local.test.ts @@ -30,7 +30,7 @@ describe("Features list - LOCAL_MANIFEST", () => { const feat = {}; jest.mock("../../../transports/local", () => ({ __esModule: true as const, default: feat })); - const addDASHFeature = require("../local").default; + const addDASHFeature = jest.requireActual("../local").default; const featureObject : { transports : { [featureName : string] : unknown }; diff --git a/src/experimental/features/__tests__/metaplaylist.test.ts b/src/experimental/features/__tests__/metaplaylist.test.ts index e6fe166bc7..847dc8e11a 100644 --- a/src/experimental/features/__tests__/metaplaylist.test.ts +++ b/src/experimental/features/__tests__/metaplaylist.test.ts @@ -30,7 +30,7 @@ describe("Features list - METAPLAYLIST", () => { const feat = {}; jest.mock("../../../transports/metaplaylist", () => ({ __esModule: true as const, default: feat })); - const addDASHFeature = require("../metaplaylist").default; + const addDASHFeature = jest.requireActual("../metaplaylist").default; const featureObject : { transports : { [featureName : string] : unknown }; diff --git a/src/experimental/tools/mediaCapabilitiesProber/__tests__/capabilities.test.ts b/src/experimental/tools/mediaCapabilitiesProber/__tests__/capabilities.test.ts index d51a31cda1..1c3fb9e452 100644 --- a/src/experimental/tools/mediaCapabilitiesProber/__tests__/capabilities.test.ts +++ b/src/experimental/tools/mediaCapabilitiesProber/__tests__/capabilities.test.ts @@ -30,7 +30,7 @@ describe("MediaCapabilitiesProber - getProbedConfiguration", () => { extend: mockExtend, filterConfigurationWithCapabilities: mockFilterConfigurationWithCapabilities, })); - const getProbedConfiguration = require("../capabilities").default; + const getProbedConfiguration = jest.requireActual("../capabilities").default; expect(getProbedConfiguration({}, ["Athos", "Portos", "Aramis"])) .toEqual(expectedResult); }); diff --git a/src/experimental/tools/mediaCapabilitiesProber/__tests__/probers/DRMInfos.test.ts b/src/experimental/tools/mediaCapabilitiesProber/__tests__/probers/DRMInfos.test.ts index 3a7617f7b6..f06860eb80 100644 --- a/src/experimental/tools/mediaCapabilitiesProber/__tests__/probers/DRMInfos.test.ts +++ b/src/experimental/tools/mediaCapabilitiesProber/__tests__/probers/DRMInfos.test.ts @@ -32,7 +32,7 @@ describe("MediaCapabilitiesProber probers - DRMInfos", () => { it("should throw if no keySystem provided", () => { const configuration = {}; - const probeDRMInfos = require("../../probers/DRMInfos").default; + const probeDRMInfos = jest.requireActual("../../probers/DRMInfos").default; /* eslint-disable @typescript-eslint/no-floating-promises */ expect(probeDRMInfos(configuration)).rejects.toEqual( "MediaCapabilitiesProber >>> API_CALL: " + @@ -45,7 +45,7 @@ describe("MediaCapabilitiesProber probers - DRMInfos", () => { const configuration = { keySystem: {}, }; - const probeDRMInfos = require("../../probers/DRMInfos").default; + const probeDRMInfos = jest.requireActual("../../probers/DRMInfos").default; /* eslint-disable @typescript-eslint/no-floating-promises */ expect(probeDRMInfos(configuration)).rejects.toEqual( "MediaCapabilitiesProber >>> API_CALL: " + @@ -63,7 +63,7 @@ describe("MediaCapabilitiesProber probers - DRMInfos", () => { jest.mock("../../../../../compat", () => ({ requestMediaKeySystemAccess: null, })); - const probeDRMInfos = require("../../probers/DRMInfos").default; + const probeDRMInfos = jest.requireActual("../../probers/DRMInfos").default; /* eslint-disable @typescript-eslint/no-floating-promises */ expect(probeDRMInfos(configuration)).resolves.toEqual( [ProberStatus.NotSupported, { configuration: {}, type: "clearkick" }] @@ -85,7 +85,7 @@ describe("MediaCapabilitiesProber probers - DRMInfos", () => { jest.mock("../../../../../compat", () => ({ requestMediaKeySystemAccess: mockRequestMediaKeySystemAccess, })); - const probeDRMInfos = require("../../probers/DRMInfos").default; + const probeDRMInfos = jest.requireActual("../../probers/DRMInfos").default; expect.assertions(2); probeDRMInfos(configuration) .then((res: unknown) => { @@ -118,7 +118,7 @@ describe("MediaCapabilitiesProber probers - DRMInfos", () => { requestMediaKeySystemAccess: mockRequestMediaKeySystemAccess, })); - const probeDRMInfos = require("../../probers/DRMInfos").default; + const probeDRMInfos = jest.requireActual("../../probers/DRMInfos").default; expect.assertions(2); probeDRMInfos(configuration) .then((res: unknown) => { diff --git a/src/experimental/tools/mediaCapabilitiesProber/__tests__/probers/HDCPPolicy.test.ts b/src/experimental/tools/mediaCapabilitiesProber/__tests__/probers/HDCPPolicy.test.ts index 8ed2ae6048..40f4c5da90 100644 --- a/src/experimental/tools/mediaCapabilitiesProber/__tests__/probers/HDCPPolicy.test.ts +++ b/src/experimental/tools/mediaCapabilitiesProber/__tests__/probers/HDCPPolicy.test.ts @@ -34,7 +34,7 @@ describe("MediaCapabilitiesProber probers - HDCPPolicy", () => { jest.mock("../../../../../compat", () => ({ requestMediaKeySystemAccess: null, })); - const probeHDCPPolicy = require("../../probers/HDCPPolicy").default; + const probeHDCPPolicy = jest.requireActual("../../probers/HDCPPolicy").default; /* eslint-disable @typescript-eslint/no-floating-promises */ expect(probeHDCPPolicy({})).rejects.toEqual( "MediaCapabilitiesProber >>> API_CALL: API not available"); @@ -45,7 +45,7 @@ describe("MediaCapabilitiesProber probers - HDCPPolicy", () => { jest.mock("../../../../../compat", () => ({ requestMediaKeySystemAccess: {}, })); - const probeHDCPPolicy = require("../../probers/HDCPPolicy").default; + const probeHDCPPolicy = jest.requireActual("../../probers/HDCPPolicy").default; /* eslint-disable @typescript-eslint/no-floating-promises */ expect(probeHDCPPolicy({})).rejects.toEqual( "MediaCapabilitiesProber >>> API_CALL: " + @@ -67,7 +67,7 @@ describe("MediaCapabilitiesProber probers - HDCPPolicy", () => { requestMediaKeySystemAccess: mockRequestMediaKeySystemAcces, })); - const probeHDCPPolicy = require("../../probers/HDCPPolicy").default; + const probeHDCPPolicy = jest.requireActual("../../probers/HDCPPolicy").default; expect.assertions(3); probeHDCPPolicy({ hdcp: "1.1" }) @@ -97,7 +97,7 @@ describe("MediaCapabilitiesProber probers - HDCPPolicy", () => { requestMediaKeySystemAccess: mockRequestMediaKeySystemAcces, })); - const probeHDCPPolicy = require("../../probers/HDCPPolicy").default; + const probeHDCPPolicy = jest.requireActual("../../probers/HDCPPolicy").default; expect.assertions(3); probeHDCPPolicy({ hdcp: "1.1" }) @@ -127,7 +127,7 @@ describe("MediaCapabilitiesProber probers - HDCPPolicy", () => { requestMediaKeySystemAccess: mockRequestMediaKeySystemAcces, })); - const probeHDCPPolicy = require("../../probers/HDCPPolicy").default; + const probeHDCPPolicy = jest.requireActual("../../probers/HDCPPolicy").default; expect.assertions(3); probeHDCPPolicy({ hdcp: "1.1" }) diff --git a/src/experimental/tools/mediaCapabilitiesProber/__tests__/probers/defaultCodecFinder.test.ts b/src/experimental/tools/mediaCapabilitiesProber/__tests__/probers/defaultCodecFinder.test.ts index 4186d55522..58334e52cf 100644 --- a/src/experimental/tools/mediaCapabilitiesProber/__tests__/probers/defaultCodecFinder.test.ts +++ b/src/experimental/tools/mediaCapabilitiesProber/__tests__/probers/defaultCodecFinder.test.ts @@ -16,7 +16,6 @@ /* eslint-disable @typescript-eslint/no-unsafe-assignment */ /* eslint-disable @typescript-eslint/no-unsafe-member-access */ -/* eslint-disable @typescript-eslint/no-var-requires */ /* eslint-disable @typescript-eslint/no-unsafe-call */ /* eslint-disable @typescript-eslint/no-unsafe-assignment */ /* eslint-disable @typescript-eslint/no-unsafe-return */ @@ -38,7 +37,8 @@ describe("MediaCapabilitiesProber probers - findDefaultVideoCodec", () => { isTypeSupported: mockIsTypeSupported, }, })); - const { findDefaultVideoCodec } = require("../../probers/defaultCodecsFinder"); + const { findDefaultVideoCodec } = + jest.requireActual("../../probers/defaultCodecsFinder"); expect(findDefaultVideoCodec()).toBe("video/mp4;codecs=\"avc1.4d401e\""); expect(mockIsTypeSupported).toHaveBeenCalledTimes(1); }); @@ -50,7 +50,8 @@ describe("MediaCapabilitiesProber probers - findDefaultVideoCodec", () => { isTypeSupported: mockIsTypeSupported, }, })); - const { findDefaultVideoCodec } = require("../../probers/defaultCodecsFinder"); + const { findDefaultVideoCodec } = + jest.requireActual("../../probers/defaultCodecsFinder"); expect(() => { findDefaultVideoCodec(); }).toThrowError( "No default video codec found."); expect(mockIsTypeSupported).toHaveBeenCalledTimes(3); @@ -60,7 +61,8 @@ describe("MediaCapabilitiesProber probers - findDefaultVideoCodec", () => { jest.mock("../../../../../compat", () => ({ MediaSource_: null, })); - const { findDefaultVideoCodec } = require("../../probers/defaultCodecsFinder"); + const { findDefaultVideoCodec } = + jest.requireActual("../../probers/defaultCodecsFinder"); expect(() => { findDefaultVideoCodec(); }).toThrowError( "Cannot check video codec support: No API available."); }); @@ -69,7 +71,8 @@ describe("MediaCapabilitiesProber probers - findDefaultVideoCodec", () => { jest.mock("../../../../../compat", () => ({ MediaSource_: {}, })); - const { findDefaultVideoCodec } = require("../../probers/defaultCodecsFinder"); + const { findDefaultVideoCodec } = + jest.requireActual("../../probers/defaultCodecsFinder"); expect(() => { findDefaultVideoCodec(); }).toThrowError( "Cannot check video codec support: No API available."); }); @@ -90,7 +93,8 @@ describe("MediaCapabilitiesProber probers - findDefaultAudioCodec", () => { isTypeSupported: mockIsTypeSupported, }, })); - const { findDefaultAudioCodec } = require("../../probers/defaultCodecsFinder"); + const { findDefaultAudioCodec } = + jest.requireActual("../../probers/defaultCodecsFinder"); expect(findDefaultAudioCodec()).toBe("audio/mp4;codecs=\"mp4a.40.2\""); expect(mockIsTypeSupported).toHaveBeenCalledTimes(1); }); @@ -102,7 +106,8 @@ describe("MediaCapabilitiesProber probers - findDefaultAudioCodec", () => { isTypeSupported: mockIsTypeSupported, }, })); - const { findDefaultAudioCodec } = require("../../probers/defaultCodecsFinder"); + const { findDefaultAudioCodec } = + jest.requireActual("../../probers/defaultCodecsFinder"); expect(() => { findDefaultAudioCodec(); }) .toThrowError("No default audio codec found."); expect(mockIsTypeSupported).toHaveBeenCalledTimes(2); @@ -112,7 +117,8 @@ describe("MediaCapabilitiesProber probers - findDefaultAudioCodec", () => { jest.mock("../../../../../compat", () => ({ MediaSource_: null, })); - const { findDefaultAudioCodec } = require("../../probers/defaultCodecsFinder"); + const { findDefaultAudioCodec } = + jest.requireActual("../../probers/defaultCodecsFinder"); expect(() => { findDefaultAudioCodec(); }).toThrowError( "Cannot check audio codec support: No API available."); }); @@ -121,7 +127,8 @@ describe("MediaCapabilitiesProber probers - findDefaultAudioCodec", () => { jest.mock("../../../../../compat", () => ({ MediaSource_: {}, })); - const { findDefaultAudioCodec } = require("../../probers/defaultCodecsFinder"); + const { findDefaultAudioCodec } = + jest.requireActual("../../probers/defaultCodecsFinder"); expect(() => { findDefaultAudioCodec(); }).toThrow( "Cannot check audio codec support: No API available."); }); diff --git a/src/experimental/tools/mediaCapabilitiesProber/__tests__/probers/mediaContentType.test.ts b/src/experimental/tools/mediaCapabilitiesProber/__tests__/probers/mediaContentType.test.ts index 402d303aa9..3e61480511 100644 --- a/src/experimental/tools/mediaCapabilitiesProber/__tests__/probers/mediaContentType.test.ts +++ b/src/experimental/tools/mediaCapabilitiesProber/__tests__/probers/mediaContentType.test.ts @@ -33,7 +33,8 @@ describe("MediaCapabilitiesProber - probers probeMediaContentType", () => { jest.mock("../../../../../compat", () => ({ MediaSource_: null, })); - const probeMediaContentType = require("../../probers/mediaContentType").default; + const probeMediaContentType = + jest.requireActual("../../probers/mediaContentType").default; /* eslint-disable @typescript-eslint/no-floating-promises */ expect(probeMediaContentType({})).rejects.toThrowError( "MediaCapabilitiesProber >>> API_CALL: " + @@ -48,7 +49,8 @@ describe("MediaCapabilitiesProber - probers probeMediaContentType", () => { isTypeSupported: false, }, })); - const probeMediaContentType = require("../../probers/mediaContentType").default; + const probeMediaContentType = + jest.requireActual("../../probers/mediaContentType").default; /* eslint-disable @typescript-eslint/no-floating-promises */ expect(probeMediaContentType({})).rejects.toThrowError( "MediaCapabilitiesProber >>> API_CALL: " + @@ -67,7 +69,8 @@ describe("MediaCapabilitiesProber - probers probeMediaContentType", () => { const config = { type: "media-source", }; - const probeMediaContentType = require("../../probers/mediaContentType").default; + const probeMediaContentType = + jest.requireActual("../../probers/mediaContentType").default; expect.assertions(1); probeMediaContentType(config) @@ -94,7 +97,8 @@ describe("MediaCapabilitiesProber - probers probeMediaContentType", () => { contentType: "video/mp5", }, }; - const probeMediaContentType = require("../../probers/mediaContentType").default; + const probeMediaContentType = + jest.requireActual("../../probers/mediaContentType").default; expect.assertions(2); probeMediaContentType(config) @@ -121,7 +125,8 @@ describe("MediaCapabilitiesProber - probers probeMediaContentType", () => { contentType: "audio/wma", }, }; - const probeMediaContentType = require("../../probers/mediaContentType").default; + const probeMediaContentType = + jest.requireActual("../../probers/mediaContentType").default; expect.assertions(2); probeMediaContentType(config) @@ -151,7 +156,8 @@ describe("MediaCapabilitiesProber - probers probeMediaContentType", () => { contentType: "video/mp5", }, }; - const probeMediaContentType = require("../../probers/mediaContentType").default; + const probeMediaContentType = + jest.requireActual("../../probers/mediaContentType").default; expect.assertions(2); probeMediaContentType(config) @@ -178,7 +184,8 @@ describe("MediaCapabilitiesProber - probers probeMediaContentType", () => { contentType: "audio/wma", }, }; - const probeMediaContentType = require("../../probers/mediaContentType").default; + const probeMediaContentType = + jest.requireActual("../../probers/mediaContentType").default; expect.assertions(2); probeMediaContentType(config) @@ -205,7 +212,8 @@ describe("MediaCapabilitiesProber - probers probeMediaContentType", () => { contentType: "video/mp5", }, }; - const probeMediaContentType = require("../../probers/mediaContentType").default; + const probeMediaContentType = + jest.requireActual("../../probers/mediaContentType").default; expect.assertions(2); probeMediaContentType(config) @@ -235,7 +243,8 @@ describe("MediaCapabilitiesProber - probers probeMediaContentType", () => { contentType: "audio/wma", }, }; - const probeMediaContentType = require("../../probers/mediaContentType").default; + const probeMediaContentType = + jest.requireActual("../../probers/mediaContentType").default; expect.assertions(2); probeMediaContentType(config) @@ -267,7 +276,8 @@ describe("MediaCapabilitiesProber - probers probeMediaContentType", () => { contentType: "audio/wma", }, }; - const probeMediaContentType = require("../../probers/mediaContentType").default; + const probeMediaContentType = + jest.requireActual("../../probers/mediaContentType").default; expect.assertions(2); probeMediaContentType(config) diff --git a/src/experimental/tools/mediaCapabilitiesProber/__tests__/probers/mediaDisplayInfos.test.ts b/src/experimental/tools/mediaCapabilitiesProber/__tests__/probers/mediaDisplayInfos.test.ts index f7bd83b1fb..e5bedd911d 100644 --- a/src/experimental/tools/mediaCapabilitiesProber/__tests__/probers/mediaDisplayInfos.test.ts +++ b/src/experimental/tools/mediaCapabilitiesProber/__tests__/probers/mediaDisplayInfos.test.ts @@ -31,7 +31,8 @@ describe("MediaCapabilitiesProber probers probeMediaDisplayInfos", () => { const origWindowMatchMedia = window.matchMedia; /* eslint-enable @typescript-eslint/unbound-method */ (window as any).matchMedia = undefined; - const probeMediaDisplayInfos = require("../../probers/mediaDisplayInfos").default; + const probeMediaDisplayInfos = + jest.requireActual("../../probers/mediaDisplayInfos").default; /* eslint-disable @typescript-eslint/no-floating-promises */ expect(probeMediaDisplayInfos({})).rejects.toThrowError( "MediaCapabilitiesProber >>> API_CALL: matchMedia not available"); @@ -49,7 +50,8 @@ describe("MediaCapabilitiesProber probers probeMediaDisplayInfos", () => { display: {}, }; - const probeMediaDisplayInfos = require("../../probers/mediaDisplayInfos").default; + const probeMediaDisplayInfos = + jest.requireActual("../../probers/mediaDisplayInfos").default; expect.assertions(1); probeMediaDisplayInfos(config) @@ -73,7 +75,8 @@ describe("MediaCapabilitiesProber probers probeMediaDisplayInfos", () => { (window as any).matchMedia = mockMatchMedia; const config = {}; - const probeMediaDisplayInfos = require("../../probers/mediaDisplayInfos").default; + const probeMediaDisplayInfos = + jest.requireActual("../../probers/mediaDisplayInfos").default; expect.assertions(1); probeMediaDisplayInfos(config) @@ -103,7 +106,8 @@ describe("MediaCapabilitiesProber probers probeMediaDisplayInfos", () => { }, }; - const probeMediaDisplayInfos = require("../../probers/mediaDisplayInfos").default; + const probeMediaDisplayInfos = + jest.requireActual("../../probers/mediaDisplayInfos").default; expect.assertions(2); probeMediaDisplayInfos(config) @@ -134,7 +138,8 @@ describe("MediaCapabilitiesProber probers probeMediaDisplayInfos", () => { }, }; - const probeMediaDisplayInfos = require("../../probers/mediaDisplayInfos").default; + const probeMediaDisplayInfos = + jest.requireActual("../../probers/mediaDisplayInfos").default; expect.assertions(2); probeMediaDisplayInfos(config) @@ -164,7 +169,8 @@ describe("MediaCapabilitiesProber probers probeMediaDisplayInfos", () => { }, }; - const probeMediaDisplayInfos = require("../../probers/mediaDisplayInfos").default; + const probeMediaDisplayInfos = + jest.requireActual("../../probers/mediaDisplayInfos").default; expect.assertions(2); probeMediaDisplayInfos(config) diff --git a/src/features/__tests__/add_features.test.ts b/src/features/__tests__/add_features.test.ts index ef8ea4d03e..6215fc4eed 100644 --- a/src/features/__tests__/add_features.test.ts +++ b/src/features/__tests__/add_features.test.ts @@ -32,7 +32,7 @@ describe("Features - addFeatures", () => { __esModule: true as const, default: feat, })); - const addFeatures = require("../add_features").default; + const addFeatures = jest.requireActual("../add_features").default; expect(() => addFeatures([])).not.toThrow(); }); @@ -43,7 +43,7 @@ describe("Features - addFeatures", () => { __esModule: true as const, default: feat, })); - const addFeatures = require("../add_features").default; + const addFeatures = jest.requireActual("../add_features").default; expect(() => addFeatures([ 5 ])).toThrow(new Error("Unrecognized feature")); expect(() => addFeatures([ () => {/* noop */}, {} ])) @@ -56,7 +56,7 @@ describe("Features - addFeatures", () => { __esModule: true as const, default: feat, })); - const addFeatures = require("../add_features").default; + const addFeatures = jest.requireActual("../add_features").default; const fakeFeat1 = jest.fn(); const fakeFeat2 = jest.fn(); diff --git a/src/features/__tests__/initialize_features.test.ts b/src/features/__tests__/initialize_features.test.ts index 365810aa79..38e1eea2e5 100644 --- a/src/features/__tests__/initialize_features.test.ts +++ b/src/features/__tests__/initialize_features.test.ts @@ -57,7 +57,7 @@ describe("Features - initializeFeaturesObject", () => { const feat = {}; jest.mock("../features_object", () => ({ default: feat, __esModule: true as const })); - const initializeFeaturesObject = require("../initialize_features").default; + const initializeFeaturesObject = jest.requireActual("../initialize_features").default; initializeFeaturesObject(); expect(feat).toEqual({}); delete win.__FEATURES__; @@ -100,44 +100,44 @@ describe("Features - initializeFeaturesObject", () => { __esModule: true as const, default: feat, })); - const initializeFeaturesObject = require("../initialize_features").default; + const initializeFeaturesObject = jest.requireActual("../initialize_features").default; initializeFeaturesObject(); expect(feat).toEqual({ transports: { - metaplaylist: require("../../transports/metaplaylist/index").default, - dash: require("../../transports/dash/index").default, - smooth: require("../../transports/smooth/index").default, - local: require("../../transports/local/index").default, + metaplaylist: jest.requireActual("../../transports/metaplaylist/index").default, + dash: jest.requireActual("../../transports/dash/index").default, + smooth: jest.requireActual("../../transports/smooth/index").default, + local: jest.requireActual("../../transports/local/index").default, }, dashParsers: { - js: require("../../parsers/manifest/dash/js-parser").default, + js: jest.requireActual("../../parsers/manifest/dash/js-parser").default, wasm: null, }, - ContentDecryptor: require("../../core/decrypt/index").default, + ContentDecryptor: jest.requireActual("../../core/decrypt/index").default, directfile: { - initDirectFile: require("../../core/init/initialize_directfile").default, + initDirectFile: jest.requireActual("../../core/init/initialize_directfile").default, mediaElementTrackChoiceManager: - require("../../core/api/media_element_track_choice_manager").default, + jest.requireActual("../../core/api/media_element_track_choice_manager").default, }, - imageBuffer: require( + imageBuffer: jest.requireActual( "../../core/segment_buffers/implementations/image/index" ).default, - imageParser: require("../../parsers/images/bif").default, - nativeTextTracksBuffer: require("../../core/segment_buffers/implementations/text/native/index") + imageParser: jest.requireActual("../../parsers/images/bif").default, + nativeTextTracksBuffer: jest.requireActual("../../core/segment_buffers/implementations/text/native/index") .default, nativeTextTracksParsers: { - vtt: require("../../parsers/texttracks/webvtt/native/index").default, - ttml: require("../../parsers/texttracks/ttml/native/index").default, - sami: require("../../parsers/texttracks/sami/native").default, - srt: require("../../parsers/texttracks/srt/native").default, + vtt: jest.requireActual("../../parsers/texttracks/webvtt/native/index").default, + ttml: jest.requireActual("../../parsers/texttracks/ttml/native/index").default, + sami: jest.requireActual("../../parsers/texttracks/sami/native").default, + srt: jest.requireActual("../../parsers/texttracks/srt/native").default, }, - htmlTextTracksBuffer: require("../../core/segment_buffers/implementations/text/html/index") + htmlTextTracksBuffer: jest.requireActual("../../core/segment_buffers/implementations/text/html/index") .default, htmlTextTracksParsers: { - vtt: require("../../parsers/texttracks/webvtt/html/index").default, - ttml: require("../../parsers/texttracks/ttml/html/index").default, - sami: require("../../parsers/texttracks/sami/html").default, - srt: require("../../parsers/texttracks/srt/html").default, + vtt: jest.requireActual("../../parsers/texttracks/webvtt/html/index").default, + ttml: jest.requireActual("../../parsers/texttracks/ttml/html/index").default, + sami: jest.requireActual("../../parsers/texttracks/sami/html").default, + srt: jest.requireActual("../../parsers/texttracks/srt/html").default, }, }); @@ -173,13 +173,13 @@ describe("Features - initializeFeaturesObject", () => { __esModule: true as const, default: feat, })); - const initializeFeaturesObject = require("../initialize_features").default; + const initializeFeaturesObject = jest.requireActual("../initialize_features").default; initializeFeaturesObject(); expect(feat).toEqual({ - htmlTextTracksBuffer: require("../../core/segment_buffers/implementations/text/html/index") + htmlTextTracksBuffer: jest.requireActual("../../core/segment_buffers/implementations/text/html/index") .default, htmlTextTracksParsers: { - vtt: require("../../parsers/texttracks/webvtt/html/index").default, + vtt: jest.requireActual("../../parsers/texttracks/webvtt/html/index").default, }, }); @@ -215,13 +215,13 @@ describe("Features - initializeFeaturesObject", () => { __esModule: true as const, default: feat, })); - const initializeFeaturesObject = require("../initialize_features").default; + const initializeFeaturesObject = jest.requireActual("../initialize_features").default; initializeFeaturesObject(); expect(feat).toEqual({ - htmlTextTracksBuffer: require("../../core/segment_buffers/implementations/text/html/index") + htmlTextTracksBuffer: jest.requireActual("../../core/segment_buffers/implementations/text/html/index") .default, htmlTextTracksParsers: { - sami: require("../../parsers/texttracks/sami/html").default, + sami: jest.requireActual("../../parsers/texttracks/sami/html").default, }, }); @@ -257,13 +257,13 @@ describe("Features - initializeFeaturesObject", () => { __esModule: true as const, default: feat, })); - const initializeFeaturesObject = require("../initialize_features").default; + const initializeFeaturesObject = jest.requireActual("../initialize_features").default; initializeFeaturesObject(); expect(feat).toEqual({ - htmlTextTracksBuffer: require("../../core/segment_buffers/implementations/text/html/index") + htmlTextTracksBuffer: jest.requireActual("../../core/segment_buffers/implementations/text/html/index") .default, htmlTextTracksParsers: { - ttml: require("../../parsers/texttracks/ttml/html/index").default, + ttml: jest.requireActual("../../parsers/texttracks/ttml/html/index").default, }, }); @@ -299,13 +299,13 @@ describe("Features - initializeFeaturesObject", () => { __esModule: true as const, default: feat, })); - const initializeFeaturesObject = require("../initialize_features").default; + const initializeFeaturesObject = jest.requireActual("../initialize_features").default; initializeFeaturesObject(); expect(feat).toEqual({ - htmlTextTracksBuffer: require("../../core/segment_buffers/implementations/text/html/index") + htmlTextTracksBuffer: jest.requireActual("../../core/segment_buffers/implementations/text/html/index") .default, htmlTextTracksParsers: { - srt: require("../../parsers/texttracks/srt/html").default, + srt: jest.requireActual("../../parsers/texttracks/srt/html").default, }, }); @@ -341,13 +341,13 @@ describe("Features - initializeFeaturesObject", () => { __esModule: true as const, default: feat, })); - const initializeFeaturesObject = require("../initialize_features").default; + const initializeFeaturesObject = jest.requireActual("../initialize_features").default; initializeFeaturesObject(); expect(feat).toEqual({ - nativeTextTracksBuffer: require("../../core/segment_buffers/implementations/text/native/index") + nativeTextTracksBuffer: jest.requireActual("../../core/segment_buffers/implementations/text/native/index") .default, nativeTextTracksParsers: { - vtt: require("../../parsers/texttracks/webvtt/native/index").default, + vtt: jest.requireActual("../../parsers/texttracks/webvtt/native/index").default, }, }); @@ -383,13 +383,13 @@ describe("Features - initializeFeaturesObject", () => { __esModule: true as const, default: feat, })); - const initializeFeaturesObject = require("../initialize_features").default; + const initializeFeaturesObject = jest.requireActual("../initialize_features").default; initializeFeaturesObject(); expect(feat).toEqual({ - nativeTextTracksBuffer: require("../../core/segment_buffers/implementations/text/native/index") + nativeTextTracksBuffer: jest.requireActual("../../core/segment_buffers/implementations/text/native/index") .default, nativeTextTracksParsers: { - sami: require("../../parsers/texttracks/sami/native").default, + sami: jest.requireActual("../../parsers/texttracks/sami/native").default, }, }); @@ -425,13 +425,13 @@ describe("Features - initializeFeaturesObject", () => { __esModule: true as const, default: feat, })); - const initializeFeaturesObject = require("../initialize_features").default; + const initializeFeaturesObject = jest.requireActual("../initialize_features").default; initializeFeaturesObject(); expect(feat).toEqual({ - nativeTextTracksBuffer: require("../../core/segment_buffers/implementations/text/native/index") + nativeTextTracksBuffer: jest.requireActual("../../core/segment_buffers/implementations/text/native/index") .default, nativeTextTracksParsers: { - ttml: require("../../parsers/texttracks/ttml/native/index").default, + ttml: jest.requireActual("../../parsers/texttracks/ttml/native/index").default, }, }); @@ -467,13 +467,13 @@ describe("Features - initializeFeaturesObject", () => { __esModule: true as const, default: feat, })); - const initializeFeaturesObject = require("../initialize_features").default; + const initializeFeaturesObject = jest.requireActual("../initialize_features").default; initializeFeaturesObject(); expect(feat).toEqual({ - nativeTextTracksBuffer: require("../../core/segment_buffers/implementations/text/native/index") + nativeTextTracksBuffer: jest.requireActual("../../core/segment_buffers/implementations/text/native/index") .default, nativeTextTracksParsers: { - srt: require("../../parsers/texttracks/srt/native").default, + srt: jest.requireActual("../../parsers/texttracks/srt/native").default, }, }); diff --git a/src/manifest/__tests__/adaptation.test.ts b/src/manifest/__tests__/adaptation.test.ts index cc0581a6e8..d6383657a9 100644 --- a/src/manifest/__tests__/adaptation.test.ts +++ b/src/manifest/__tests__/adaptation.test.ts @@ -38,7 +38,7 @@ const minimalRepresentationIndex = { _replace() { /* noop */ }, _update() { /* noop */ }, }; -const defaultRepresentationSpy = jest.fn(arg => { +const mockDefaultRepresentationImpl = jest.fn(arg => { return { bitrate: arg.bitrate, id: arg.id, isSupported: true, @@ -50,14 +50,14 @@ describe("Manifest - Adaptation", () => { jest.resetModules(); }); afterEach(() => { - defaultRepresentationSpy.mockClear(); + mockDefaultRepresentationImpl.mockClear(); }); it("should be able to create a minimal Adaptation", () => { jest.mock("../representation", () => ({ __esModule: true as const, - default: defaultRepresentationSpy })); + default: mockDefaultRepresentationImpl })); - const Adaptation = require("../adaptation").default; + const Adaptation = jest.requireActual("../adaptation").default; const args = { id: "12", representations: [], type: "video" }; const adaptation = new Adaptation(args); expect(adaptation.id).toBe("12"); @@ -71,17 +71,17 @@ describe("Manifest - Adaptation", () => { expect(adaptation.getAvailableBitrates()).toEqual([]); expect(adaptation.getRepresentation("")).toBe(undefined); - expect(defaultRepresentationSpy).not.toHaveBeenCalled(); + expect(mockDefaultRepresentationImpl).not.toHaveBeenCalled(); }); it("should normalize a given language", () => { jest.mock("../representation", () => ({ __esModule: true as const, - default: defaultRepresentationSpy })); - const normalizeSpy = jest.fn((lang : string) => lang + "foo"); + default: mockDefaultRepresentationImpl })); + const mockNormalize = jest.fn((lang : string) => lang + "foo"); jest.mock("../../utils/languages", () => ({ __esModule: true as const, - default: normalizeSpy })); + default: mockNormalize })); - const Adaptation = require("../adaptation").default; + const Adaptation = jest.requireActual("../adaptation").default; const args1 = { id: "12", representations: [], language: "fr", @@ -89,9 +89,9 @@ describe("Manifest - Adaptation", () => { const adaptation1 = new Adaptation(args1); expect(adaptation1.language).toBe("fr"); expect(adaptation1.normalizedLanguage).toBe("frfoo"); - expect(normalizeSpy).toHaveBeenCalledTimes(1); - expect(normalizeSpy).toHaveBeenCalledWith("fr"); - normalizeSpy.mockClear(); + expect(mockNormalize).toHaveBeenCalledTimes(1); + expect(mockNormalize).toHaveBeenCalledWith("fr"); + mockNormalize.mockClear(); const args2 = { id: "12", representations: [], @@ -100,32 +100,32 @@ describe("Manifest - Adaptation", () => { const adaptation2 = new Adaptation(args2); expect(adaptation2.language).toBe("toto"); expect(adaptation2.normalizedLanguage).toBe("totofoo"); - expect(normalizeSpy).toHaveBeenCalledTimes(1); - expect(normalizeSpy).toHaveBeenCalledWith("toto"); + expect(mockNormalize).toHaveBeenCalledTimes(1); + expect(mockNormalize).toHaveBeenCalledWith("toto"); }); it("should not call normalize if no language is given", () => { jest.mock("../representation", () => ({ __esModule: true as const, - default: defaultRepresentationSpy })); - const normalizeSpy = jest.fn((lang : string) => lang + "foo"); + default: mockDefaultRepresentationImpl })); + const mockNormalize = jest.fn((lang : string) => lang + "foo"); jest.mock("../../utils/languages", () => ({ __esModule: true as const, - default: normalizeSpy })); + default: mockNormalize })); - const Adaptation = require("../adaptation").default; + const Adaptation = jest.requireActual("../adaptation").default; const args1 = { id: "12", representations: [], type: "video" }; const adaptation1 = new Adaptation(args1); expect(adaptation1.language).toBe(undefined); expect(adaptation1.normalizedLanguage).toBe(undefined); - expect(normalizeSpy).not.toHaveBeenCalled(); + expect(mockNormalize).not.toHaveBeenCalled(); }); it("should create and sort the corresponding Representations", () => { jest.mock("../representation", () => ({ __esModule: true as const, - default: defaultRepresentationSpy })); + default: mockDefaultRepresentationImpl })); - const Adaptation = require("../adaptation").default; + const Adaptation = jest.requireActual("../adaptation").default; const rep1 = { bitrate: 10, id: "rep1", index: minimalRepresentationIndex }; @@ -142,10 +142,13 @@ describe("Manifest - Adaptation", () => { const adaptation = new Adaptation(args); const parsedRepresentations = adaptation.representations; - expect(defaultRepresentationSpy).toHaveBeenCalledTimes(3); - expect(defaultRepresentationSpy).toHaveBeenNthCalledWith(1, rep1, { type: "text" }); - expect(defaultRepresentationSpy).toHaveBeenNthCalledWith(2, rep2, { type: "text" }); - expect(defaultRepresentationSpy).toHaveBeenNthCalledWith(3, rep3, { type: "text" }); + expect(mockDefaultRepresentationImpl).toHaveBeenCalledTimes(3); + expect(mockDefaultRepresentationImpl) + .toHaveBeenNthCalledWith(1, rep1, { type: "text" }); + expect(mockDefaultRepresentationImpl) + .toHaveBeenNthCalledWith(2, rep2, { type: "text" }); + expect(mockDefaultRepresentationImpl) + .toHaveBeenNthCalledWith(3, rep3, { type: "text" }); expect(parsedRepresentations.length).toBe(3); expect(parsedRepresentations[0].id).toEqual("rep1"); @@ -157,7 +160,7 @@ describe("Manifest - Adaptation", () => { }); it("should execute the representationFilter if given", () => { - const representationSpy = jest.fn(arg => { + const mockRepresentation = jest.fn(arg => { return { bitrate: arg.bitrate, id: arg.id, isSupported: arg.id !== "rep4", @@ -165,9 +168,9 @@ describe("Manifest - Adaptation", () => { }); jest.mock("../representation", () => ({ __esModule: true as const, - default: representationSpy })); + default: mockRepresentation })); - const Adaptation = require("../adaptation").default; + const Adaptation = jest.requireActual("../adaptation").default; const rep1 = { bitrate: 10, id: "rep1", index: minimalRepresentationIndex }; @@ -218,12 +221,12 @@ describe("Manifest - Adaptation", () => { it("should set an isDub value if one", () => { jest.mock("../representation", () => ({ __esModule: true as const, - default: defaultRepresentationSpy })); - const normalizeSpy = jest.fn((lang : string) => lang + "foo"); + default: mockDefaultRepresentationImpl })); + const mockNormalize = jest.fn((lang : string) => lang + "foo"); jest.mock("../../utils/languages", () => ({ __esModule: true as const, - default: normalizeSpy })); + default: mockNormalize })); - const Adaptation = require("../adaptation").default; + const Adaptation = jest.requireActual("../adaptation").default; const args1 = { id: "12", representations: [], @@ -233,7 +236,7 @@ describe("Manifest - Adaptation", () => { expect(adaptation1.language).toBe(undefined); expect(adaptation1.normalizedLanguage).toBe(undefined); expect(adaptation1.isDub).toEqual(false); - expect(normalizeSpy).not.toHaveBeenCalled(); + expect(mockNormalize).not.toHaveBeenCalled(); const args2 = { id: "12", representations: [], @@ -243,17 +246,17 @@ describe("Manifest - Adaptation", () => { expect(adaptation2.language).toBe(undefined); expect(adaptation2.normalizedLanguage).toBe(undefined); expect(adaptation2.isDub).toEqual(true); - expect(normalizeSpy).not.toHaveBeenCalled(); + expect(mockNormalize).not.toHaveBeenCalled(); }); it("should set an isClosedCaption value if one", () => { jest.mock("../representation", () => ({ __esModule: true as const, - default: defaultRepresentationSpy })); - const normalizeSpy = jest.fn((lang : string) => lang + "foo"); + default: mockDefaultRepresentationImpl })); + const mockNormalize = jest.fn((lang : string) => lang + "foo"); jest.mock("../../utils/languages", () => ({ __esModule: true as const, - default: normalizeSpy })); + default: mockNormalize })); - const Adaptation = require("../adaptation").default; + const Adaptation = jest.requireActual("../adaptation").default; const args1 = { id: "12", representations: [], @@ -263,7 +266,7 @@ describe("Manifest - Adaptation", () => { expect(adaptation1.language).toBe(undefined); expect(adaptation1.normalizedLanguage).toBe(undefined); expect(adaptation1.isClosedCaption).toEqual(false); - expect(normalizeSpy).not.toHaveBeenCalled(); + expect(mockNormalize).not.toHaveBeenCalled(); const args2 = { id: "12", representations: [], @@ -273,18 +276,18 @@ describe("Manifest - Adaptation", () => { expect(adaptation2.language).toBe(undefined); expect(adaptation2.normalizedLanguage).toBe(undefined); expect(adaptation2.isClosedCaption).toEqual(true); - expect(normalizeSpy).not.toHaveBeenCalled(); + expect(mockNormalize).not.toHaveBeenCalled(); }); it("should set an isAudioDescription value if one", () => { jest.mock("../representation", () => ({ __esModule: true as const, - default: defaultRepresentationSpy })); - const normalizeSpy = jest.fn((lang : string) => lang + "foo"); + default: mockDefaultRepresentationImpl })); + const mockNormalize = jest.fn((lang : string) => lang + "foo"); jest.mock("../../utils/languages", () => ({ __esModule: true as const, - default: normalizeSpy })); + default: mockNormalize })); - const Adaptation = require("../adaptation").default; + const Adaptation = jest.requireActual("../adaptation").default; const args1 = { id: "12", representations: [], @@ -294,7 +297,7 @@ describe("Manifest - Adaptation", () => { expect(adaptation1.language).toBe(undefined); expect(adaptation1.normalizedLanguage).toBe(undefined); expect(adaptation1.isAudioDescription).toEqual(false); - expect(normalizeSpy).not.toHaveBeenCalled(); + expect(mockNormalize).not.toHaveBeenCalled(); const args2 = { id: "12", representations: [], @@ -304,17 +307,17 @@ describe("Manifest - Adaptation", () => { expect(adaptation2.language).toBe(undefined); expect(adaptation2.normalizedLanguage).toBe(undefined); expect(adaptation2.isAudioDescription).toEqual(true); - expect(normalizeSpy).not.toHaveBeenCalled(); + expect(mockNormalize).not.toHaveBeenCalled(); }); it("should set a manuallyAdded value if one", () => { jest.mock("../representation", () => ({ __esModule: true as const, - default: defaultRepresentationSpy })); - const normalizeSpy = jest.fn((lang : string) => lang + "foo"); + default: mockDefaultRepresentationImpl })); + const mockNormalize = jest.fn((lang : string) => lang + "foo"); jest.mock("../../utils/languages", () => ({ __esModule: true as const, - default: normalizeSpy })); + default: mockNormalize })); - const Adaptation = require("../adaptation").default; + const Adaptation = jest.requireActual("../adaptation").default; const args1 = { id: "12", representations: [], @@ -323,7 +326,7 @@ describe("Manifest - Adaptation", () => { expect(adaptation1.language).toBe(undefined); expect(adaptation1.normalizedLanguage).toBe(undefined); expect(adaptation1.manuallyAdded).toEqual(false); - expect(normalizeSpy).not.toHaveBeenCalled(); + expect(mockNormalize).not.toHaveBeenCalled(); const args2 = { id: "12", representations: [], @@ -332,7 +335,7 @@ describe("Manifest - Adaptation", () => { expect(adaptation2.language).toBe(undefined); expect(adaptation2.normalizedLanguage).toBe(undefined); expect(adaptation2.manuallyAdded).toEqual(true); - expect(normalizeSpy).not.toHaveBeenCalled(); + expect(mockNormalize).not.toHaveBeenCalled(); }); /* eslint-disable max-len */ @@ -340,12 +343,12 @@ describe("Manifest - Adaptation", () => { /* eslint-enable max-len */ jest.mock("../representation", () => ({ __esModule: true as const, - default: defaultRepresentationSpy })); - const uniqSpy = jest.fn(() => [45, 92]); + default: mockDefaultRepresentationImpl })); + const mockUniq = jest.fn(() => [45, 92]); jest.mock("../../utils/uniq", () => ({ __esModule: true as const, - default: uniqSpy })); + default: mockUniq })); - const Adaptation = require("../adaptation").default; + const Adaptation = jest.requireActual("../adaptation").default; const rep1 = { bitrate: 10, id: "rep1", index: minimalRepresentationIndex }; @@ -365,8 +368,8 @@ describe("Manifest - Adaptation", () => { expect(parsedRepresentations.length).toBe(3); expect(adaptation.getAvailableBitrates()).toEqual([45, 92]); - expect(uniqSpy).toHaveBeenCalledTimes(1); - expect(uniqSpy).toHaveBeenCalledWith(representations.map(r => r.bitrate)); + expect(mockUniq).toHaveBeenCalledTimes(1); + expect(mockUniq).toHaveBeenCalledWith(representations.map(r => r.bitrate)); }); /* eslint-disable max-len */ @@ -374,9 +377,9 @@ describe("Manifest - Adaptation", () => { /* eslint-enable max-len */ jest.mock("../representation", () => ({ __esModule: true as const, - default: defaultRepresentationSpy })); + default: mockDefaultRepresentationImpl })); - const Adaptation = require("../adaptation").default; + const Adaptation = jest.requireActual("../adaptation").default; const rep1 = { bitrate: 10, id: "rep1", index: minimalRepresentationIndex }; @@ -399,9 +402,9 @@ describe("Manifest - Adaptation", () => { /* eslint-enable max-len */ jest.mock("../representation", () => ({ __esModule: true as const, - default: defaultRepresentationSpy })); + default: mockDefaultRepresentationImpl })); - const Adaptation = require("../adaptation").default; + const Adaptation = jest.requireActual("../adaptation").default; const rep1 = { bitrate: 10, id: "rep1", index: minimalRepresentationIndex }; @@ -421,7 +424,7 @@ describe("Manifest - Adaptation", () => { /* eslint-disable max-len */ it("should return only supported and decipherable representation when calling `getPlayableRepresentations`", () => { /* eslint-enable max-len */ - const representationSpy = jest.fn(arg => { + const mockRepresentation = jest.fn(arg => { return { bitrate: arg.bitrate, id: arg.id, isSupported: arg.id !== "rep3" && arg.id !== "rep8", @@ -432,9 +435,9 @@ describe("Manifest - Adaptation", () => { index: arg.index }; }); jest.mock("../representation", () => ({ __esModule: true as const, - default: representationSpy })); + default: mockRepresentation })); - const Adaptation = require("../adaptation").default; + const Adaptation = jest.requireActual("../adaptation").default; const rep1 = { bitrate: 10, id: "rep1", index: minimalRepresentationIndex }; diff --git a/src/manifest/__tests__/manifest.test.ts b/src/manifest/__tests__/manifest.test.ts index bd43702952..cda69eb08b 100644 --- a/src/manifest/__tests__/manifest.test.ts +++ b/src/manifest/__tests__/manifest.test.ts @@ -56,7 +56,7 @@ describe("Manifest - Manifest", () => { } }, periods: [] }; - const Manifest = require("../manifest").default; + const Manifest = jest.requireActual("../manifest").default; const manifest = new Manifest(simpleFakeManifest, {}); expect(manifest.adaptations).toEqual({}); @@ -100,7 +100,7 @@ describe("Manifest - Manifest", () => { jest.mock("../period", () => ({ __esModule: true as const, default: fakePeriod })); - const Manifest = require("../manifest").default; + const Manifest = jest.requireActual("../manifest").default; const manifest = new Manifest(simpleFakeManifest, {}); expect(fakePeriod).toHaveBeenCalledTimes(2); expect(fakePeriod).toHaveBeenCalledWith(period1, undefined); @@ -143,7 +143,7 @@ describe("Manifest - Manifest", () => { }); jest.mock("../period", () => ({ __esModule: true as const, default: fakePeriod })); - const Manifest = require("../manifest").default; + const Manifest = jest.requireActual("../manifest").default; /* eslint-disable @typescript-eslint/no-unused-expressions */ new Manifest(simpleFakeManifest, { representationFilter }); @@ -181,7 +181,7 @@ describe("Manifest - Manifest", () => { }); jest.mock("../period", () => ({ __esModule: true as const, default: fakePeriod })); - const Manifest = require("../manifest").default; + const Manifest = jest.requireActual("../manifest").default; const manifest = new Manifest(simpleFakeManifest, {}); expect(fakePeriod).toHaveBeenCalledTimes(2); @@ -225,7 +225,7 @@ describe("Manifest - Manifest", () => { __esModule: true as const, default: fakePeriod, })); - const Manifest = require("../manifest").default; + const Manifest = jest.requireActual("../manifest").default; const manifest = new Manifest(simpleFakeManifest, {}); expect(manifest.contentWarnings).toHaveLength(4); @@ -267,7 +267,7 @@ describe("Manifest - Manifest", () => { }); jest.mock("../period", () => ({ __esModule: true as const, default: fakePeriod })); - const Manifest = require("../manifest").default; + const Manifest = jest.requireActual("../manifest").default; const manifest = new Manifest(oldManifestArgs, {}); expect(manifest.adaptations).toEqual({}); @@ -303,7 +303,7 @@ describe("Manifest - Manifest", () => { __esModule: true as const, default: fakePeriod, })); - const Manifest = require("../manifest").default; + const Manifest = jest.requireActual("../manifest").default; const oldManifestArgs1 = { availabilityStartTime: 5, duration: 12, @@ -386,10 +386,10 @@ describe("Manifest - Manifest", () => { suggestedPresentationDelay: 99, uris: ["url1", "url2"] }; - const Manifest = require("../manifest").default; + const Manifest = jest.requireActual("../manifest").default; const manifest = new Manifest(oldManifestArgs, {}); - const eeSpy = jest.spyOn(manifest, "trigger").mockImplementation(jest.fn()); + const mockTrigger = jest.spyOn(manifest, "trigger").mockImplementation(jest.fn()); const [oldPeriod1, oldPeriod2] = manifest.periods; @@ -433,13 +433,13 @@ describe("Manifest - Manifest", () => { expect(fakeUpdatePeriodInPlace).toHaveBeenCalledTimes(2); expect(fakeUpdatePeriodInPlace).toHaveBeenCalledWith(oldPeriod1, newPeriod1, 0); expect(fakeUpdatePeriodInPlace).toHaveBeenCalledWith(oldPeriod2, newPeriod2, 0); - expect(eeSpy).toHaveBeenCalledTimes(1); - expect(eeSpy).toHaveBeenCalledWith("manifestUpdate", null); + expect(mockTrigger).toHaveBeenCalledTimes(1); + expect(mockTrigger).toHaveBeenCalledWith("manifestUpdate", null); expect(fakeIdGenerator).toHaveBeenCalledTimes(2); expect(fakeGenerateNewId).toHaveBeenCalledTimes(1); expect(fakeLogger.info).not.toHaveBeenCalled(); expect(fakeLogger.warn).not.toHaveBeenCalled(); - eeSpy.mockRestore(); + mockTrigger.mockRestore(); }); it("should prepend older Periods when calling `replace`", () => { @@ -483,11 +483,11 @@ describe("Manifest - Manifest", () => { __esModule: true as const, default: fakeUpdatePeriodInPlace, })); - const Manifest = require("../manifest").default; + const Manifest = jest.requireActual("../manifest").default; const manifest = new Manifest(oldManifestArgs, {}); const [oldPeriod1] = manifest.periods; - const eeSpy = jest.spyOn(manifest, "trigger").mockImplementation(jest.fn()); + const mockTrigger = jest.spyOn(manifest, "trigger").mockImplementation(jest.fn()); const newPeriod1 = { id: "pre0", start: 0, @@ -526,8 +526,8 @@ describe("Manifest - Manifest", () => { expect(fakeUpdatePeriodInPlace).toHaveBeenCalledTimes(1); expect(fakeUpdatePeriodInPlace).toHaveBeenCalledWith(oldPeriod1, newPeriod3, 0); - expect(eeSpy).toHaveBeenCalledTimes(1); - expect(eeSpy).toHaveBeenCalledWith("manifestUpdate", null); + expect(mockTrigger).toHaveBeenCalledTimes(1); + expect(mockTrigger).toHaveBeenCalledWith("manifestUpdate", null); expect(fakeIdGenerator).toHaveBeenCalledTimes(2); expect(fakeGenerateNewId).toHaveBeenCalledTimes(1); // expect(fakeLogger.info).toHaveBeenCalledTimes(2); @@ -535,7 +535,7 @@ describe("Manifest - Manifest", () => { // "Manifest: Adding new Period pre0 after update."); // expect(fakeLogger.info).toHaveBeenCalledWith( // "Manifest: Adding new Period pre1 after update."); - eeSpy.mockRestore(); + mockTrigger.mockRestore(); }); it("should append newer Periods when calling `replace`", () => { @@ -574,11 +574,11 @@ describe("Manifest - Manifest", () => { __esModule: true as const, default: fakeUpdatePeriodInPlace, })); - const Manifest = require("../manifest").default; + const Manifest = jest.requireActual("../manifest").default; const manifest = new Manifest(oldManifestArgs, {}); const [oldPeriod1] = manifest.periods; - const eeSpy = jest.spyOn(manifest, "trigger").mockImplementation(jest.fn()); + const mockTrigger = jest.spyOn(manifest, "trigger").mockImplementation(jest.fn()); const newPeriod1 = { id: "foo1" }; const newPeriod2 = { id: "post0" }; @@ -605,14 +605,14 @@ describe("Manifest - Manifest", () => { expect(fakeUpdatePeriodInPlace).toHaveBeenCalledTimes(1); expect(fakeUpdatePeriodInPlace).toHaveBeenCalledWith(oldPeriod1, newPeriod1, 0); - expect(eeSpy).toHaveBeenCalledTimes(1); - expect(eeSpy).toHaveBeenCalledWith("manifestUpdate", null); + expect(mockTrigger).toHaveBeenCalledTimes(1); + expect(mockTrigger).toHaveBeenCalledWith("manifestUpdate", null); expect(fakeIdGenerator).toHaveBeenCalledTimes(2); expect(fakeGenerateNewId).toHaveBeenCalledTimes(1); // expect(fakeLogger.warn).toHaveBeenCalledTimes(1); // expect(fakeLogger.warn) // .toHaveBeenCalledWith("Manifest: Adding new Periods after update."); - eeSpy.mockRestore(); + mockTrigger.mockRestore(); }); it("should replace different Periods when calling `replace`", () => { @@ -651,10 +651,10 @@ describe("Manifest - Manifest", () => { __esModule: true as const, default: fakeUpdatePeriodInPlace, })); - const Manifest = require("../manifest").default; + const Manifest = jest.requireActual("../manifest").default; const manifest = new Manifest(oldManifestArgs, {}); - const eeSpy = jest.spyOn(manifest, "trigger").mockImplementation(jest.fn()); + const mockTrigger = jest.spyOn(manifest, "trigger").mockImplementation(jest.fn()); const newPeriod1 = { id: "diff0" }; const newPeriod2 = { id: "diff1" }; @@ -680,12 +680,12 @@ describe("Manifest - Manifest", () => { expect(manifest.periods).toEqual([newPeriod1, newPeriod2, newPeriod3]); expect(fakeUpdatePeriodInPlace).not.toHaveBeenCalled(); - expect(eeSpy).toHaveBeenCalledTimes(1); - expect(eeSpy).toHaveBeenCalledWith("manifestUpdate", null); + expect(mockTrigger).toHaveBeenCalledTimes(1); + expect(mockTrigger).toHaveBeenCalledWith("manifestUpdate", null); expect(fakeIdGenerator).toHaveBeenCalledTimes(2); expect(fakeGenerateNewId).toHaveBeenCalledTimes(1); // expect(fakeLogger.info).toHaveBeenCalledTimes(4); - eeSpy.mockRestore(); + mockTrigger.mockRestore(); }); it("should merge overlapping Periods when calling `replace`", () => { @@ -727,11 +727,11 @@ describe("Manifest - Manifest", () => { __esModule: true as const, default: fakeUpdatePeriodInPlace, })); - const Manifest = require("../manifest").default; + const Manifest = jest.requireActual("../manifest").default; const manifest = new Manifest(oldManifestArgs, {}); const [oldPeriod1, oldPeriod2] = manifest.periods; - const eeSpy = jest.spyOn(manifest, "trigger").mockImplementation(jest.fn()); + const mockTrigger = jest.spyOn(manifest, "trigger").mockImplementation(jest.fn()); const newPeriod1 = { id: "pre0", start: 0 }; const newPeriod2 = { id: "foo1", start: 2 }; @@ -769,11 +769,11 @@ describe("Manifest - Manifest", () => { expect(fakeUpdatePeriodInPlace).toHaveBeenCalledTimes(2); expect(fakeUpdatePeriodInPlace).toHaveBeenCalledWith(oldPeriod1, newPeriod2, 0); expect(fakeUpdatePeriodInPlace).toHaveBeenCalledWith(oldPeriod2, newPeriod4, 0); - expect(eeSpy).toHaveBeenCalledTimes(1); - expect(eeSpy).toHaveBeenCalledWith("manifestUpdate", null); + expect(mockTrigger).toHaveBeenCalledTimes(1); + expect(mockTrigger).toHaveBeenCalledWith("manifestUpdate", null); expect(fakeIdGenerator).toHaveBeenCalledTimes(2); expect(fakeGenerateNewId).toHaveBeenCalledTimes(1); // expect(fakeLogger.info).toHaveBeenCalledTimes(5); - eeSpy.mockRestore(); + mockTrigger.mockRestore(); }); }); diff --git a/src/manifest/__tests__/period.test.ts b/src/manifest/__tests__/period.test.ts index 44b1850757..fe09ea7c27 100644 --- a/src/manifest/__tests__/period.test.ts +++ b/src/manifest/__tests__/period.test.ts @@ -27,14 +27,14 @@ describe("Manifest - Period", () => { }); it("should throw if no adaptation is given", () => { - const adaptationSpy = jest.fn(arg => ({ ...arg, contentWarnings: [] })); + const mockAdaptation = jest.fn(arg => ({ ...arg, contentWarnings: [] })); jest.mock("../adaptation", () => ({ __esModule: true as const, - default: adaptationSpy, + default: mockAdaptation, SUPPORTED_ADAPTATIONS_TYPE: ["audio", "video", "text", "image"], })); - const Period = require("../period").default; + const Period = jest.requireActual("../period").default; const args = { id: "12", adaptations: {}, start: 0 }; let period = null; let errorReceived = null; @@ -55,18 +55,18 @@ describe("Manifest - Period", () => { expect((errorReceived as { code? : string }).code).toBe("MANIFEST_PARSE_ERROR"); expect(errorReceived.message).toContain("No supported audio and video tracks."); - expect(adaptationSpy).not.toHaveBeenCalled(); + expect(mockAdaptation).not.toHaveBeenCalled(); }); it("should throw if no audio nor video adaptation is given", () => { - const adaptationSpy = jest.fn(arg => ({ ...arg, contentWarnings: [] })); + const mockAdaptation = jest.fn(arg => ({ ...arg, contentWarnings: [] })); jest.mock("../adaptation", () => ({ __esModule: true as const, - default: adaptationSpy, + default: mockAdaptation, SUPPORTED_ADAPTATIONS_TYPE: ["audio", "video", "text", "image", "foo"], })); - const Period = require("../period").default; + const Period = jest.requireActual("../period").default; const fooAda1 = { type: "foo", id: "54", isSupported: true, @@ -98,20 +98,20 @@ describe("Manifest - Period", () => { expect((errorReceived as { type? : string }).type).toBe("MEDIA_ERROR"); expect(errorReceived.message).toContain("No supported audio and video tracks."); - expect(adaptationSpy).toHaveBeenCalledTimes(2); - expect(adaptationSpy).toHaveBeenNthCalledWith(1, fooAda1, {}); - expect(adaptationSpy).toHaveBeenNthCalledWith(2, fooAda2, {}); + expect(mockAdaptation).toHaveBeenCalledTimes(2); + expect(mockAdaptation).toHaveBeenNthCalledWith(1, fooAda1, {}); + expect(mockAdaptation).toHaveBeenNthCalledWith(2, fooAda2, {}); }); it("should throw if only empty audio and/or video adaptations is given", () => { - const adaptationSpy = jest.fn(arg => ({ ...arg, contentWarnings: [] })); + const mockAdaptation = jest.fn(arg => ({ ...arg, contentWarnings: [] })); jest.mock("../adaptation", () => ({ __esModule: true as const, - default: adaptationSpy, + default: mockAdaptation, SUPPORTED_ADAPTATIONS_TYPE: ["audio", "video", "text", "image", "foo"], })); - const Period = require("../period").default; + const Period = jest.requireActual("../period").default; const args = { id: "12", adaptations: { video: [], audio: [] }, start: 0 }; let period = null; let errorReceived = null; @@ -134,18 +134,18 @@ describe("Manifest - Period", () => { expect((errorReceived as { type? : string }).type).toBe("MEDIA_ERROR"); expect(errorReceived.message).toContain("No supported audio and video tracks."); - expect(adaptationSpy).toHaveBeenCalledTimes(0); + expect(mockAdaptation).toHaveBeenCalledTimes(0); }); it("should throw if we are left with no audio representation", () => { - const adaptationSpy = jest.fn(arg => ({ ...arg, contentWarnings: [] })); + const mockAdaptation = jest.fn(arg => ({ ...arg, contentWarnings: [] })); jest.mock("../adaptation", () => ({ __esModule: true as const, - default: adaptationSpy, + default: mockAdaptation, SUPPORTED_ADAPTATIONS_TYPE: ["audio", "video", "text", "image", "foo"], })); - const Period = require("../period").default; + const Period = jest.requireActual("../period").default; const videoAda1 = { type: "video", id: "54", isSupported: true, @@ -193,14 +193,14 @@ describe("Manifest - Period", () => { }); it("should throw if no audio Adaptation is supported", () => { - const adaptationSpy = jest.fn(arg => ({ ...arg, contentWarnings: [] })); + const mockAdaptation = jest.fn(arg => ({ ...arg, contentWarnings: [] })); jest.mock("../adaptation", () => ({ __esModule: true as const, - default: adaptationSpy, + default: mockAdaptation, SUPPORTED_ADAPTATIONS_TYPE: ["audio", "video", "text", "image", "foo"], })); - const Period = require("../period").default; + const Period = jest.requireActual("../period").default; const videoAda1 = { type: "video", id: "54", isSupported: true, @@ -248,14 +248,14 @@ describe("Manifest - Period", () => { }); it("should throw if we are left with no video representation", () => { - const adaptationSpy = jest.fn(arg => ({ ...arg, contentWarnings: [] })); + const mockAdaptation = jest.fn(arg => ({ ...arg, contentWarnings: [] })); jest.mock("../adaptation", () => ({ __esModule: true as const, - default: adaptationSpy, + default: mockAdaptation, SUPPORTED_ADAPTATIONS_TYPE: ["audio", "video", "text", "image", "foo"], })); - const Period = require("../period").default; + const Period = jest.requireActual("../period").default; const videoAda1 = { type: "video", id: "54", isSupported: true, @@ -303,14 +303,14 @@ describe("Manifest - Period", () => { }); it("should throw if no video adaptation is supported", () => { - const adaptationSpy = jest.fn(arg => ({ ...arg, contentWarnings: [] })); + const mockAdaptation = jest.fn(arg => ({ ...arg, contentWarnings: [] })); jest.mock("../adaptation", () => ({ __esModule: true as const, - default: adaptationSpy, + default: mockAdaptation, SUPPORTED_ADAPTATIONS_TYPE: ["audio", "video", "text", "image", "foo"], })); - const Period = require("../period").default; + const Period = jest.requireActual("../period").default; const videoAda1 = { type: "video", id: "54", isSupported: false, @@ -358,16 +358,16 @@ describe("Manifest - Period", () => { }); it("should set a parsing error if an unsupported adaptation is given", () => { - const adaptationSpy = jest.fn(arg => { + const mockAdaptation = jest.fn(arg => { return { ...arg }; }); jest.mock("../adaptation", () => ({ __esModule: true as const, - default: adaptationSpy, + default: mockAdaptation, SUPPORTED_ADAPTATIONS_TYPE: ["audio", "video", "text", "image", "foo"], })); - const Period = require("../period").default; + const Period = jest.requireActual("../period").default; const videoAda1 = { type: "video", id: "55", @@ -383,11 +383,11 @@ describe("Manifest - Period", () => { const period = new Period(args); expect(period.contentWarnings).toHaveLength(1); - expect(adaptationSpy).toHaveBeenCalledTimes(2); - expect(adaptationSpy).toHaveReturnedTimes(2); - expect(adaptationSpy).toHaveBeenCalledWith(videoAda1, {}); - expect(adaptationSpy).toHaveBeenCalledWith(videoAda2, {}); - expect(adaptationSpy).toHaveReturnedWith(period.adaptations.video[0]); + expect(mockAdaptation).toHaveBeenCalledTimes(2); + expect(mockAdaptation).toHaveReturnedTimes(2); + expect(mockAdaptation).toHaveBeenCalledWith(videoAda1, {}); + expect(mockAdaptation).toHaveBeenCalledWith(videoAda2, {}); + expect(mockAdaptation).toHaveReturnedWith(period.adaptations.video[0]); const [error] = period.contentWarnings; expect(error).toBeInstanceOf(Error); @@ -396,14 +396,14 @@ describe("Manifest - Period", () => { }); it("should not set a parsing error if an empty unsupported adaptation is given", () => { - const adaptationSpy = jest.fn(arg => ({ ...arg, contentWarnings: [] })); + const mockAdaptation = jest.fn(arg => ({ ...arg, contentWarnings: [] })); jest.mock("../adaptation", () => ({ __esModule: true as const, - default: adaptationSpy, + default: mockAdaptation, SUPPORTED_ADAPTATIONS_TYPE: ["audio", "video", "text", "image", "foo"], })); - const Period = require("../period").default; + const Period = jest.requireActual("../period").default; const videoAda1 = { type: "video", id: "55", @@ -418,20 +418,20 @@ describe("Manifest - Period", () => { }); expect(period.contentWarnings).toHaveLength(0); - expect(adaptationSpy).toHaveBeenCalledTimes(1); - expect(adaptationSpy).toHaveBeenCalledWith(videoAda1, {}); + expect(mockAdaptation).toHaveBeenCalledTimes(1); + expect(mockAdaptation).toHaveBeenCalledWith(videoAda1, {}); }); it("should give a representationFilter to the adaptation", () => { - const adaptationSpy = jest.fn(arg => ({ ...arg, contentWarnings: [] })); + const mockAdaptation = jest.fn(arg => ({ ...arg, contentWarnings: [] })); const representationFilter = jest.fn(); jest.mock("../adaptation", () => ({ __esModule: true as const, - default: adaptationSpy, + default: mockAdaptation, SUPPORTED_ADAPTATIONS_TYPE: ["audio", "video", "text", "image"], })); - const Period = require("../period").default; + const Period = jest.requireActual("../period").default; const videoAda1 = { type: "video", id: "54", isSupported: true, @@ -447,21 +447,23 @@ describe("Manifest - Period", () => { expect(period.contentWarnings).toHaveLength(0); expect(period.adaptations.video).toHaveLength(2); - expect(adaptationSpy).toHaveBeenCalledTimes(2); - expect(adaptationSpy).toHaveBeenNthCalledWith(1, videoAda1, { representationFilter }); - expect(adaptationSpy).toHaveBeenNthCalledWith(2, videoAda2, { representationFilter }); + expect(mockAdaptation).toHaveBeenCalledTimes(2); + expect(mockAdaptation) + .toHaveBeenNthCalledWith(1, videoAda1, { representationFilter }); + expect(mockAdaptation) + .toHaveBeenNthCalledWith(2, videoAda2, { representationFilter }); expect(representationFilter).not.toHaveBeenCalled(); }); it("should add contentWarnings if Adaptations are not supported", () => { - const adaptationSpy = jest.fn(arg => ({ ...arg })); + const mockAdaptation = jest.fn(arg => ({ ...arg })); jest.mock("../adaptation", () => ({ __esModule: true as const, - default: adaptationSpy, + default: mockAdaptation, SUPPORTED_ADAPTATIONS_TYPE: ["audio", "video", "text", "image"], })); - const Period = require("../period").default; + const Period = jest.requireActual("../period").default; const videoAda1 = { type: "video", id: "54", isSupported: false, @@ -490,14 +492,14 @@ describe("Manifest - Period", () => { }); it("should not add contentWarnings if an Adaptation has no Representation", () => { - const adaptationSpy = jest.fn(arg => ({ ...arg })); + const mockAdaptation = jest.fn(arg => ({ ...arg })); jest.mock("../adaptation", () => ({ __esModule: true as const, - default: adaptationSpy, + default: mockAdaptation, SUPPORTED_ADAPTATIONS_TYPE: ["audio", "video", "text", "image"], })); - const Period = require("../period").default; + const Period = jest.requireActual("../period").default; const videoAda1 = { type: "video", id: "54", isSupported: false, @@ -519,14 +521,14 @@ describe("Manifest - Period", () => { }); it("should set the given start", () => { - const adaptationSpy = jest.fn(arg => ({ ...arg, contentWarnings: [] })); + const mockAdaptation = jest.fn(arg => ({ ...arg, contentWarnings: [] })); jest.mock("../adaptation", () => ({ __esModule: true as const, - default: adaptationSpy, + default: mockAdaptation, SUPPORTED_ADAPTATIONS_TYPE: ["audio", "video", "text", "image"], })); - const Period = require("../period").default; + const Period = jest.requireActual("../period").default; const videoAda1 = { type: "video", id: "54", isSupported: true, @@ -544,14 +546,14 @@ describe("Manifest - Period", () => { }); it("should set a given duration", () => { - const adaptationSpy = jest.fn(arg => ({ ...arg, contentWarnings: [] })); + const mockAdaptation = jest.fn(arg => ({ ...arg, contentWarnings: [] })); jest.mock("../adaptation", () => ({ __esModule: true as const, - default: adaptationSpy, + default: mockAdaptation, SUPPORTED_ADAPTATIONS_TYPE: ["audio", "video", "text", "image"], })); - const Period = require("../period").default; + const Period = jest.requireActual("../period").default; const videoAda1 = { type: "video", id: "54", isSupported: true, @@ -569,14 +571,14 @@ describe("Manifest - Period", () => { }); it("should infer the end from the start and the duration", () => { - const adaptationSpy = jest.fn(arg => ({ ...arg, contentWarnings: [] })); + const mockAdaptation = jest.fn(arg => ({ ...arg, contentWarnings: [] })); jest.mock("../adaptation", () => ({ __esModule: true as const, - default: adaptationSpy, + default: mockAdaptation, SUPPORTED_ADAPTATIONS_TYPE: ["audio", "video", "text", "image"], })); - const Period = require("../period").default; + const Period = jest.requireActual("../period").default; const videoAda1 = { type: "video", id: "54", isSupported: true, @@ -594,14 +596,14 @@ describe("Manifest - Period", () => { }); it("should return every Adaptations combined with `getAdaptations`", () => { - const adaptationSpy = jest.fn(arg => ({ ...arg, contentWarnings: [] })); + const mockAdaptation = jest.fn(arg => ({ ...arg, contentWarnings: [] })); jest.mock("../adaptation", () => ({ __esModule: true as const, - default: adaptationSpy, + default: mockAdaptation, SUPPORTED_ADAPTATIONS_TYPE: ["audio", "video", "text", "image"], })); - const Period = require("../period").default; + const Period = jest.requireActual("../period").default; const videoAda1 = { type: "video", id: "54", isSupported: true, @@ -630,14 +632,14 @@ describe("Manifest - Period", () => { /* eslint-disable max-len */ it("should return every Adaptations from a given type with `getAdaptationsForType`", () => { /* eslint-enable max-len */ - const adaptationSpy = jest.fn(arg => ({ ...arg, contentWarnings: [] })); + const mockAdaptation = jest.fn(arg => ({ ...arg, contentWarnings: [] })); jest.mock("../adaptation", () => ({ __esModule: true as const, - default: adaptationSpy, + default: mockAdaptation, SUPPORTED_ADAPTATIONS_TYPE: ["audio", "video", "text", "image"], })); - const Period = require("../period").default; + const Period = jest.requireActual("../period").default; const videoAda1 = { type: "video", id: "54", isSupported: true, @@ -673,14 +675,14 @@ describe("Manifest - Period", () => { /* eslint-disable max-len */ it("should return the first Adaptations with a given Id when calling `getAdaptation`", () => { /* eslint-enable max-len */ - const adaptationSpy = jest.fn(arg => ({ ...arg, contentWarnings: [] })); + const mockAdaptation = jest.fn(arg => ({ ...arg, contentWarnings: [] })); jest.mock("../adaptation", () => ({ __esModule: true as const, - default: adaptationSpy, + default: mockAdaptation, SUPPORTED_ADAPTATIONS_TYPE: ["audio", "video", "text", "image"], })); - const Period = require("../period").default; + const Period = jest.requireActual("../period").default; const videoAda1 = { type: "video", id: "54", isSupported: true, @@ -712,10 +714,10 @@ describe("Manifest - Period", () => { /* eslint-disable max-len */ it("should return undefind if no adaptation has the given Id when calling `getAdaptation`", () => { /* eslint-enable max-len */ - const adaptationSpy = jest.fn(arg => ({ ...arg, contentWarnings: [] })); + const mockAdaptation = jest.fn(arg => ({ ...arg, contentWarnings: [] })); jest.mock("../adaptation", () => ({ __esModule: true as const, - default: adaptationSpy, + default: mockAdaptation, SUPPORTED_ADAPTATIONS_TYPE: ["audio", "video", "text", "image"], })); }); diff --git a/src/manifest/__tests__/representation.test.ts b/src/manifest/__tests__/representation.test.ts index a64a9a090a..65843fb025 100644 --- a/src/manifest/__tests__/representation.test.ts +++ b/src/manifest/__tests__/representation.test.ts @@ -47,7 +47,7 @@ describe("Manifest - Representation", () => { it("should be able to create Representation with the minimum arguments given", () => { jest.mock("../../compat", () => ({ __esModule: true as const, isCodecSupported: defaultIsCodecSupported })); - const Representation = require("../representation").default; + const Representation = jest.requireActual("../representation").default; const args = { bitrate: 12, id: "test", index: minimalIndex }; @@ -70,7 +70,7 @@ describe("Manifest - Representation", () => { it("should be able to add a height attribute", () => { jest.mock("../../compat", () => ({ __esModule: true as const, isCodecSupported: defaultIsCodecSupported })); - const Representation = require("../representation").default; + const Representation = jest.requireActual("../representation").default; const args = { bitrate: 12, id: "test", height: 57, index: minimalIndex }; const representation = new Representation(args, { type: "video" }); expect(representation.id).toBe("test"); @@ -91,7 +91,7 @@ describe("Manifest - Representation", () => { it("should be able to add a width attribute", () => { jest.mock("../../compat", () => ({ __esModule: true as const, isCodecSupported: defaultIsCodecSupported })); - const Representation = require("../representation").default; + const Representation = jest.requireActual("../representation").default; const args = { bitrate: 12, id: "test", width: 2, index: minimalIndex }; const representation = new Representation(args, { type: "video" }); expect(representation.id).toBe("test"); @@ -112,7 +112,7 @@ describe("Manifest - Representation", () => { it("should be able to add a codecs attribute", () => { jest.mock("../../compat", () => ({ __esModule: true as const, isCodecSupported: defaultIsCodecSupported })); - const Representation = require("../representation").default; + const Representation = jest.requireActual("../representation").default; const args = { bitrate: 12, id: "test", codecs: "vp9", @@ -136,7 +136,7 @@ describe("Manifest - Representation", () => { it("should be able to add a mimeType attribute", () => { jest.mock("../../compat", () => ({ __esModule: true as const, isCodecSupported: defaultIsCodecSupported })); - const Representation = require("../representation").default; + const Representation = jest.requireActual("../representation").default; const args = { bitrate: 12, id: "test", mimeType: "audio/mp4", @@ -160,7 +160,7 @@ describe("Manifest - Representation", () => { it("should be able to add a contentProtections attribute", () => { jest.mock("../../compat", () => ({ __esModule: true as const, isCodecSupported: defaultIsCodecSupported })); - const Representation = require("../representation").default; + const Representation = jest.requireActual("../representation").default; const args = { bitrate: 12, id: "test", index: minimalIndex, @@ -189,7 +189,7 @@ describe("Manifest - Representation", () => { it("should be able to add a frameRate attribute", () => { jest.mock("../../compat", () => ({ __esModule: true as const, isCodecSupported: defaultIsCodecSupported })); - const Representation = require("../representation").default; + const Representation = jest.requireActual("../representation").default; const args = { bitrate: 12, id: "test", frameRate: "1/60", @@ -215,7 +215,7 @@ describe("Manifest - Representation", () => { it("should be able to return an exploitable codecs + mimeType string", () => { jest.mock("../../compat", () => ({ __esModule: true as const, isCodecSupported: defaultIsCodecSupported })); - const Representation = require("../representation").default; + const Representation = jest.requireActual("../representation").default; const args1 = { bitrate: 12, id: "test", index: minimalIndex }; @@ -246,10 +246,10 @@ describe("Manifest - Representation", () => { }); it("should set `isSupported` of non-supported codecs or mime-type to `false`", () => { - const notSupportedSpy = jest.fn(() => false); + const mockIsCodecSupportedFalse = jest.fn(() => false); jest.mock("../../compat", () => ({ __esModule: true as const, - isCodecSupported: notSupportedSpy })); - const Representation = require("../representation").default; + isCodecSupported: mockIsCodecSupportedFalse })); + const Representation = jest.requireActual("../representation").default; const args = { bitrate: 12, id: "test", frameRate: "1/60", @@ -269,15 +269,16 @@ describe("Manifest - Representation", () => { expect(representation.getMimeTypeString()).toBe("audio/mp4;codecs=\"mp4a.40.2\""); expect(representation.isSupported).toBe(false); expect(representation.decipherable).toBe(undefined); - expect(notSupportedSpy).toHaveBeenCalledTimes(1); - expect(notSupportedSpy).toHaveBeenCalledWith("audio/mp4;codecs=\"mp4a.40.2\""); + expect(mockIsCodecSupportedFalse).toHaveBeenCalledTimes(1); + expect(mockIsCodecSupportedFalse) + .toHaveBeenCalledWith("audio/mp4;codecs=\"mp4a.40.2\""); }); it("should not check support for a custom media buffer", () => { - const notSupportedSpy = jest.fn(() => false); + const mockIsCodecSupportedFalse = jest.fn(() => false); jest.mock("../../compat", () => ({ __esModule: true as const, - isCodecSupported: notSupportedSpy })); - const Representation = require("../representation").default; + isCodecSupported: mockIsCodecSupportedFalse })); + const Representation = jest.requireActual("../representation").default; const args = { bitrate: 12, id: "test", frameRate: "1/60", @@ -290,6 +291,6 @@ describe("Manifest - Representation", () => { expect(representation.getMimeTypeString()).toBe("bip;codecs=\"boop\""); expect(representation.isSupported).toBe(true); expect(representation.decipherable).toBe(undefined); - expect(notSupportedSpy).toHaveBeenCalledTimes(0); + expect(mockIsCodecSupportedFalse).toHaveBeenCalledTimes(0); }); }); diff --git a/src/manifest/__tests__/update_period_in_place.test.ts b/src/manifest/__tests__/update_period_in_place.test.ts index 70c382658b..f611128c67 100644 --- a/src/manifest/__tests__/update_period_in_place.test.ts +++ b/src/manifest/__tests__/update_period_in_place.test.ts @@ -64,91 +64,91 @@ const newAudioRepresentation = { contentWarnings: [], _replace() { /* noop */ } } }; describe("Manifest - updatePeriodInPlace", () => { - let oldVideoRepresentation1ReplaceSpy : jest.MockInstance | undefined; - let oldVideoRepresentation2ReplaceSpy : jest.MockInstance | undefined; - let oldVideoRepresentation3ReplaceSpy : jest.MockInstance | undefined; - let oldVideoRepresentation4ReplaceSpy : jest.MockInstance | undefined; - let oldAudioRepresentationReplaceSpy : jest.MockInstance | undefined; - let oldVideoRepresentation1UpdateSpy : jest.MockInstance | undefined; - let oldVideoRepresentation2UpdateSpy : jest.MockInstance | undefined; - let oldVideoRepresentation3UpdateSpy : jest.MockInstance | undefined; - let oldVideoRepresentation4UpdateSpy : jest.MockInstance | undefined; - let oldAudioRepresentationUpdateSpy : jest.MockInstance | undefined; - let newVideoRepresentation1ReplaceSpy : jest.MockInstance | undefined; - let newVideoRepresentation2ReplaceSpy : jest.MockInstance | undefined; - let newVideoRepresentation3ReplaceSpy : jest.MockInstance | undefined; - let newVideoRepresentation4ReplaceSpy : jest.MockInstance | undefined; - let newAudioRepresentationReplaceSpy : jest.MockInstance | undefined; - let newVideoRepresentation1UpdateSpy : jest.MockInstance | undefined; - let newVideoRepresentation2UpdateSpy : jest.MockInstance | undefined; - let newVideoRepresentation3UpdateSpy : jest.MockInstance | undefined; - let newVideoRepresentation4UpdateSpy : jest.MockInstance | undefined; - let newAudioRepresentationUpdateSpy : jest.MockInstance | undefined; + let mockOldVideoRepresentation1Replace : jest.MockInstance | undefined; + let mockOldVideoRepresentation2Replace : jest.MockInstance | undefined; + let mockOldVideoRepresentation3Replace : jest.MockInstance | undefined; + let mockOldVideoRepresentation4Replace : jest.MockInstance | undefined; + let mockOldAudioRepresentationReplace : jest.MockInstance | undefined; + let mockOldVideoRepresentation1Update : jest.MockInstance | undefined; + let mockOldVideoRepresentation2Update : jest.MockInstance | undefined; + let mockOldVideoRepresentation3Update : jest.MockInstance | undefined; + let mockOldVideoRepresentation4Update : jest.MockInstance | undefined; + let mockOldAudioRepresentationUpdate : jest.MockInstance | undefined; + let mockNewVideoRepresentation1Replace : jest.MockInstance | undefined; + let mockNewVideoRepresentation2Replace : jest.MockInstance | undefined; + let mockNewVideoRepresentation3Replace : jest.MockInstance | undefined; + let mockNewVideoRepresentation4Replace : jest.MockInstance | undefined; + let mockNewAudioRepresentationReplace : jest.MockInstance | undefined; + let mockNewVideoRepresentation1Update : jest.MockInstance | undefined; + let mockNewVideoRepresentation2Update : jest.MockInstance | undefined; + let mockNewVideoRepresentation3Update : jest.MockInstance | undefined; + let mockNewVideoRepresentation4Update : jest.MockInstance | undefined; + let mockNewAudioRepresentationUpdate : jest.MockInstance | undefined; beforeEach(() => { - oldVideoRepresentation1ReplaceSpy = + mockOldVideoRepresentation1Replace = jest.spyOn(oldVideoRepresentation1.index, "_replace"); - oldVideoRepresentation2ReplaceSpy = + mockOldVideoRepresentation2Replace = jest.spyOn(oldVideoRepresentation2.index, "_replace"); - oldVideoRepresentation3ReplaceSpy = + mockOldVideoRepresentation3Replace = jest.spyOn(oldVideoRepresentation3.index, "_replace"); - oldVideoRepresentation4ReplaceSpy = + mockOldVideoRepresentation4Replace = jest.spyOn(oldVideoRepresentation4.index, "_replace"); - oldAudioRepresentationReplaceSpy = + mockOldAudioRepresentationReplace = jest.spyOn(oldAudioRepresentation.index, "_replace"); - oldVideoRepresentation1UpdateSpy = + mockOldVideoRepresentation1Update = jest.spyOn(oldVideoRepresentation1.index, "_update"); - oldVideoRepresentation2UpdateSpy = + mockOldVideoRepresentation2Update = jest.spyOn(oldVideoRepresentation2.index, "_update"); - oldVideoRepresentation3UpdateSpy = + mockOldVideoRepresentation3Update = jest.spyOn(oldVideoRepresentation3.index, "_update"); - oldVideoRepresentation4UpdateSpy = + mockOldVideoRepresentation4Update = jest.spyOn(oldVideoRepresentation4.index, "_update"); - oldAudioRepresentationUpdateSpy = + mockOldAudioRepresentationUpdate = jest.spyOn(oldAudioRepresentation.index, "_update"); - newVideoRepresentation1ReplaceSpy = + mockNewVideoRepresentation1Replace = jest.spyOn(newVideoRepresentation1.index, "_replace"); - newVideoRepresentation2ReplaceSpy = + mockNewVideoRepresentation2Replace = jest.spyOn(newVideoRepresentation2.index, "_replace"); - newVideoRepresentation3ReplaceSpy = + mockNewVideoRepresentation3Replace = jest.spyOn(newVideoRepresentation3.index, "_replace"); - newVideoRepresentation4ReplaceSpy = + mockNewVideoRepresentation4Replace = jest.spyOn(newVideoRepresentation4.index, "_replace"); - newAudioRepresentationReplaceSpy = + mockNewAudioRepresentationReplace = jest.spyOn(newAudioRepresentation.index, "_replace"); - newVideoRepresentation1UpdateSpy = + mockNewVideoRepresentation1Update = jest.spyOn(newVideoRepresentation1.index, "_update"); - newVideoRepresentation2UpdateSpy = + mockNewVideoRepresentation2Update = jest.spyOn(newVideoRepresentation2.index, "_update"); - newVideoRepresentation3UpdateSpy = + mockNewVideoRepresentation3Update = jest.spyOn(newVideoRepresentation3.index, "_update"); - newVideoRepresentation4UpdateSpy = + mockNewVideoRepresentation4Update = jest.spyOn(newVideoRepresentation4.index, "_update"); - newAudioRepresentationUpdateSpy = + mockNewAudioRepresentationUpdate = jest.spyOn(newAudioRepresentation.index, "_update"); }); afterEach(() => { - oldVideoRepresentation1ReplaceSpy?.mockRestore(); - oldVideoRepresentation2ReplaceSpy?.mockRestore(); - oldVideoRepresentation3ReplaceSpy?.mockRestore(); - oldVideoRepresentation4ReplaceSpy?.mockRestore(); - oldAudioRepresentationReplaceSpy?.mockRestore(); - oldVideoRepresentation1UpdateSpy?.mockRestore(); - oldVideoRepresentation2UpdateSpy?.mockRestore(); - oldVideoRepresentation3UpdateSpy?.mockRestore(); - oldVideoRepresentation4UpdateSpy?.mockRestore(); - oldAudioRepresentationUpdateSpy?.mockRestore(); - newVideoRepresentation1ReplaceSpy?.mockRestore(); - newVideoRepresentation2ReplaceSpy?.mockRestore(); - newVideoRepresentation3ReplaceSpy?.mockRestore(); - newVideoRepresentation4ReplaceSpy?.mockRestore(); - newAudioRepresentationReplaceSpy?.mockRestore(); - newVideoRepresentation1UpdateSpy?.mockRestore(); - newVideoRepresentation2UpdateSpy?.mockRestore(); - newVideoRepresentation3UpdateSpy?.mockRestore(); - newVideoRepresentation4UpdateSpy?.mockRestore(); - newAudioRepresentationUpdateSpy?.mockRestore(); + mockOldVideoRepresentation1Replace?.mockRestore(); + mockOldVideoRepresentation2Replace?.mockRestore(); + mockOldVideoRepresentation3Replace?.mockRestore(); + mockOldVideoRepresentation4Replace?.mockRestore(); + mockOldAudioRepresentationReplace?.mockRestore(); + mockOldVideoRepresentation1Update?.mockRestore(); + mockOldVideoRepresentation2Update?.mockRestore(); + mockOldVideoRepresentation3Update?.mockRestore(); + mockOldVideoRepresentation4Update?.mockRestore(); + mockOldAudioRepresentationUpdate?.mockRestore(); + mockNewVideoRepresentation1Replace?.mockRestore(); + mockNewVideoRepresentation2Replace?.mockRestore(); + mockNewVideoRepresentation3Replace?.mockRestore(); + mockNewVideoRepresentation4Replace?.mockRestore(); + mockNewAudioRepresentationReplace?.mockRestore(); + mockNewVideoRepresentation1Update?.mockRestore(); + mockNewVideoRepresentation2Update?.mockRestore(); + mockNewVideoRepresentation3Update?.mockRestore(); + mockNewVideoRepresentation4Update?.mockRestore(); + mockNewAudioRepresentationUpdate?.mockRestore(); }); /* eslint-disable max-len */ @@ -205,9 +205,9 @@ describe("Manifest - updatePeriodInPlace", () => { }, }; - const oldPeriodAdaptationsSpy = jest.spyOn(oldPeriod, "getAdaptations"); - const newPeriodAdaptationsSpy = jest.spyOn(newPeriod, "getAdaptations"); - const logSpy = jest.spyOn(log, "warn"); + const oldPeriodAdaptations = jest.spyOn(oldPeriod, "getAdaptations"); + const newPeriodAdaptations = jest.spyOn(newPeriod, "getAdaptations"); + const mockLog = jest.spyOn(log, "warn"); updatePeriodInPlace(oldPeriod as unknown as Period, newPeriod as unknown as Period, @@ -216,52 +216,52 @@ describe("Manifest - updatePeriodInPlace", () => { expect(oldPeriod.start).toEqual(500); expect(oldPeriod.end).toEqual(520); expect(oldPeriod.duration).toEqual(20); - expect(oldPeriodAdaptationsSpy).toHaveBeenCalledTimes(1); + expect(oldPeriodAdaptations).toHaveBeenCalledTimes(1); - expect(oldVideoRepresentation1ReplaceSpy).toHaveBeenCalledTimes(1); - expect(oldVideoRepresentation1ReplaceSpy) + expect(mockOldVideoRepresentation1Replace).toHaveBeenCalledTimes(1); + expect(mockOldVideoRepresentation1Replace) .toHaveBeenCalledWith(newVideoRepresentation1.index); - expect(oldVideoRepresentation2ReplaceSpy).toHaveBeenCalledTimes(1); - expect(oldVideoRepresentation2ReplaceSpy) + expect(mockOldVideoRepresentation2Replace).toHaveBeenCalledTimes(1); + expect(mockOldVideoRepresentation2Replace) .toHaveBeenCalledWith(newVideoRepresentation2.index); - expect(oldVideoRepresentation3ReplaceSpy).toHaveBeenCalledTimes(1); - expect(oldVideoRepresentation3ReplaceSpy) + expect(mockOldVideoRepresentation3Replace).toHaveBeenCalledTimes(1); + expect(mockOldVideoRepresentation3Replace) .toHaveBeenCalledWith(newVideoRepresentation3.index); - expect(oldVideoRepresentation4ReplaceSpy).toHaveBeenCalledTimes(1); - expect(oldVideoRepresentation4ReplaceSpy) + expect(mockOldVideoRepresentation4Replace).toHaveBeenCalledTimes(1); + expect(mockOldVideoRepresentation4Replace) .toHaveBeenCalledWith(newVideoRepresentation4.index); - expect(oldAudioRepresentationReplaceSpy).toHaveBeenCalledTimes(1); - expect(oldAudioRepresentationReplaceSpy) + expect(mockOldAudioRepresentationReplace).toHaveBeenCalledTimes(1); + expect(mockOldAudioRepresentationReplace) .toHaveBeenCalledWith(newAudioRepresentation.index); expect(newPeriod.start).toEqual(500); expect(newPeriod.end).toEqual(520); expect(newPeriod.duration).toEqual(20); - expect(newPeriodAdaptationsSpy).toHaveBeenCalledTimes(1); - - expect(newVideoRepresentation1ReplaceSpy).not.toHaveBeenCalled(); - expect(newVideoRepresentation2ReplaceSpy).not.toHaveBeenCalled(); - expect(newVideoRepresentation3ReplaceSpy).not.toHaveBeenCalled(); - expect(newVideoRepresentation4ReplaceSpy).not.toHaveBeenCalled(); - expect(newAudioRepresentationReplaceSpy).not.toHaveBeenCalled(); - - expect(oldVideoRepresentation1UpdateSpy).not.toHaveBeenCalled(); - expect(oldVideoRepresentation2UpdateSpy).not.toHaveBeenCalled(); - expect(oldVideoRepresentation3UpdateSpy).not.toHaveBeenCalled(); - expect(oldVideoRepresentation4UpdateSpy).not.toHaveBeenCalled(); - expect(oldAudioRepresentationUpdateSpy).not.toHaveBeenCalled(); - expect(newVideoRepresentation1UpdateSpy).not.toHaveBeenCalled(); - expect(newVideoRepresentation2UpdateSpy).not.toHaveBeenCalled(); - expect(newVideoRepresentation3UpdateSpy).not.toHaveBeenCalled(); - expect(newVideoRepresentation4UpdateSpy).not.toHaveBeenCalled(); - expect(newAudioRepresentationUpdateSpy).not.toHaveBeenCalled(); - - expect(logSpy).not.toHaveBeenCalled(); - logSpy.mockRestore(); + expect(newPeriodAdaptations).toHaveBeenCalledTimes(1); + + expect(mockNewVideoRepresentation1Replace).not.toHaveBeenCalled(); + expect(mockNewVideoRepresentation2Replace).not.toHaveBeenCalled(); + expect(mockNewVideoRepresentation3Replace).not.toHaveBeenCalled(); + expect(mockNewVideoRepresentation4Replace).not.toHaveBeenCalled(); + expect(mockNewAudioRepresentationReplace).not.toHaveBeenCalled(); + + expect(mockOldVideoRepresentation1Update).not.toHaveBeenCalled(); + expect(mockOldVideoRepresentation2Update).not.toHaveBeenCalled(); + expect(mockOldVideoRepresentation3Update).not.toHaveBeenCalled(); + expect(mockOldVideoRepresentation4Update).not.toHaveBeenCalled(); + expect(mockOldAudioRepresentationUpdate).not.toHaveBeenCalled(); + expect(mockNewVideoRepresentation1Update).not.toHaveBeenCalled(); + expect(mockNewVideoRepresentation2Update).not.toHaveBeenCalled(); + expect(mockNewVideoRepresentation3Update).not.toHaveBeenCalled(); + expect(mockNewVideoRepresentation4Update).not.toHaveBeenCalled(); + expect(mockNewAudioRepresentationUpdate).not.toHaveBeenCalled(); + + expect(mockLog).not.toHaveBeenCalled(); + mockLog.mockRestore(); }); /* eslint-disable max-len */ @@ -318,9 +318,9 @@ describe("Manifest - updatePeriodInPlace", () => { }, }; - const oldPeriodAdaptationsSpy = jest.spyOn(oldPeriod, "getAdaptations"); - const newPeriodAdaptationsSpy = jest.spyOn(newPeriod, "getAdaptations"); - const logSpy = jest.spyOn(log, "warn"); + const mockOldPeriodGetAdaptations = jest.spyOn(oldPeriod, "getAdaptations"); + const mockNewPeriodGetAdaptations = jest.spyOn(newPeriod, "getAdaptations"); + const mockLog = jest.spyOn(log, "warn"); updatePeriodInPlace(oldPeriod as unknown as Period, newPeriod as unknown as Period, @@ -329,52 +329,52 @@ describe("Manifest - updatePeriodInPlace", () => { expect(oldPeriod.start).toEqual(500); expect(oldPeriod.end).toEqual(520); expect(oldPeriod.duration).toEqual(20); - expect(oldPeriodAdaptationsSpy).toHaveBeenCalledTimes(1); + expect(mockOldPeriodGetAdaptations).toHaveBeenCalledTimes(1); - expect(oldVideoRepresentation1UpdateSpy).toHaveBeenCalledTimes(1); - expect(oldVideoRepresentation1UpdateSpy) + expect(mockOldVideoRepresentation1Update).toHaveBeenCalledTimes(1); + expect(mockOldVideoRepresentation1Update) .toHaveBeenCalledWith(newVideoRepresentation1.index); - expect(oldVideoRepresentation2UpdateSpy).toHaveBeenCalledTimes(1); - expect(oldVideoRepresentation2UpdateSpy) + expect(mockOldVideoRepresentation2Update).toHaveBeenCalledTimes(1); + expect(mockOldVideoRepresentation2Update) .toHaveBeenCalledWith(newVideoRepresentation2.index); - expect(oldVideoRepresentation3UpdateSpy).toHaveBeenCalledTimes(1); - expect(oldVideoRepresentation3UpdateSpy) + expect(mockOldVideoRepresentation3Update).toHaveBeenCalledTimes(1); + expect(mockOldVideoRepresentation3Update) .toHaveBeenCalledWith(newVideoRepresentation3.index); - expect(oldVideoRepresentation4UpdateSpy).toHaveBeenCalledTimes(1); - expect(oldVideoRepresentation4UpdateSpy) + expect(mockOldVideoRepresentation4Update).toHaveBeenCalledTimes(1); + expect(mockOldVideoRepresentation4Update) .toHaveBeenCalledWith(newVideoRepresentation4.index); - expect(oldAudioRepresentationUpdateSpy).toHaveBeenCalledTimes(1); - expect(oldAudioRepresentationUpdateSpy) + expect(mockOldAudioRepresentationUpdate).toHaveBeenCalledTimes(1); + expect(mockOldAudioRepresentationUpdate) .toHaveBeenCalledWith(newAudioRepresentation.index); expect(newPeriod.start).toEqual(500); expect(newPeriod.end).toEqual(520); expect(newPeriod.duration).toEqual(20); - expect(newPeriodAdaptationsSpy).toHaveBeenCalledTimes(1); - - expect(newVideoRepresentation1UpdateSpy).not.toHaveBeenCalled(); - expect(newVideoRepresentation2UpdateSpy).not.toHaveBeenCalled(); - expect(newVideoRepresentation3UpdateSpy).not.toHaveBeenCalled(); - expect(newVideoRepresentation4UpdateSpy).not.toHaveBeenCalled(); - expect(newAudioRepresentationUpdateSpy).not.toHaveBeenCalled(); - - expect(oldVideoRepresentation1ReplaceSpy).not.toHaveBeenCalled(); - expect(oldVideoRepresentation2ReplaceSpy).not.toHaveBeenCalled(); - expect(oldVideoRepresentation3ReplaceSpy).not.toHaveBeenCalled(); - expect(oldVideoRepresentation4ReplaceSpy).not.toHaveBeenCalled(); - expect(oldAudioRepresentationReplaceSpy).not.toHaveBeenCalled(); - expect(newVideoRepresentation1ReplaceSpy).not.toHaveBeenCalled(); - expect(newVideoRepresentation2ReplaceSpy).not.toHaveBeenCalled(); - expect(newVideoRepresentation3ReplaceSpy).not.toHaveBeenCalled(); - expect(newVideoRepresentation4ReplaceSpy).not.toHaveBeenCalled(); - expect(newAudioRepresentationReplaceSpy).not.toHaveBeenCalled(); - - expect(logSpy).not.toHaveBeenCalled(); - logSpy.mockRestore(); + expect(mockNewPeriodGetAdaptations).toHaveBeenCalledTimes(1); + + expect(mockNewVideoRepresentation1Update).not.toHaveBeenCalled(); + expect(mockNewVideoRepresentation2Update).not.toHaveBeenCalled(); + expect(mockNewVideoRepresentation3Update).not.toHaveBeenCalled(); + expect(mockNewVideoRepresentation4Update).not.toHaveBeenCalled(); + expect(mockNewAudioRepresentationUpdate).not.toHaveBeenCalled(); + + expect(mockOldVideoRepresentation1Replace).not.toHaveBeenCalled(); + expect(mockOldVideoRepresentation2Replace).not.toHaveBeenCalled(); + expect(mockOldVideoRepresentation3Replace).not.toHaveBeenCalled(); + expect(mockOldVideoRepresentation4Replace).not.toHaveBeenCalled(); + expect(mockOldAudioRepresentationReplace).not.toHaveBeenCalled(); + expect(mockNewVideoRepresentation1Replace).not.toHaveBeenCalled(); + expect(mockNewVideoRepresentation2Replace).not.toHaveBeenCalled(); + expect(mockNewVideoRepresentation3Replace).not.toHaveBeenCalled(); + expect(mockNewVideoRepresentation4Replace).not.toHaveBeenCalled(); + expect(mockNewAudioRepresentationReplace).not.toHaveBeenCalled(); + + expect(mockLog).not.toHaveBeenCalled(); + mockLog.mockRestore(); }); it("should do nothing with new Adaptations", () => { @@ -423,18 +423,18 @@ describe("Manifest - updatePeriodInPlace", () => { }, }; - const logSpy = jest.spyOn(log, "warn"); + const mockLog = jest.spyOn(log, "warn"); updatePeriodInPlace(oldPeriod as unknown as Period, newPeriod as unknown as Period, MANIFEST_UPDATE_TYPE.Full); - expect(logSpy).not.toHaveBeenCalled(); + expect(mockLog).not.toHaveBeenCalled(); expect(oldPeriod.adaptations.video).toHaveLength(1); updatePeriodInPlace(oldPeriod as unknown as Period, newPeriod as unknown as Period, MANIFEST_UPDATE_TYPE.Partial); - expect(logSpy).not.toHaveBeenCalled(); + expect(mockLog).not.toHaveBeenCalled(); expect(oldPeriod.adaptations.video).toHaveLength(1); - logSpy.mockRestore(); + mockLog.mockRestore(); }); it("should warn if an old Adaptation is not found", () => { @@ -482,25 +482,25 @@ describe("Manifest - updatePeriodInPlace", () => { }, }; - const logSpy = jest.spyOn(log, "warn"); + const mockLog = jest.spyOn(log, "warn"); updatePeriodInPlace(oldPeriod as unknown as Period, newPeriod as unknown as Period, MANIFEST_UPDATE_TYPE.Full); - expect(logSpy).toHaveBeenCalledTimes(1); - expect(logSpy).toHaveBeenCalledWith( + expect(mockLog).toHaveBeenCalledTimes(1); + expect(mockLog).toHaveBeenCalledWith( "Manifest: Adaptation \"ada-video-2\" not found when merging." ); expect(oldPeriod.adaptations.video).toHaveLength(2); - logSpy.mockClear(); + mockLog.mockClear(); updatePeriodInPlace(oldPeriod as unknown as Period, newPeriod as unknown as Period, MANIFEST_UPDATE_TYPE.Partial); - expect(logSpy).toHaveBeenCalledTimes(1); - expect(logSpy).toHaveBeenCalledWith( + expect(mockLog).toHaveBeenCalledTimes(1); + expect(mockLog).toHaveBeenCalledWith( "Manifest: Adaptation \"ada-video-2\" not found when merging." ); expect(oldPeriod.adaptations.video).toHaveLength(2); - logSpy.mockRestore(); + mockLog.mockRestore(); }); it("should do nothing with new Representations", () => { @@ -538,18 +538,18 @@ describe("Manifest - updatePeriodInPlace", () => { }, }; - const logSpy = jest.spyOn(log, "warn"); + const mockLog = jest.spyOn(log, "warn"); updatePeriodInPlace(oldPeriod as unknown as Period, newPeriod as unknown as Period, MANIFEST_UPDATE_TYPE.Full); - expect(logSpy).not.toHaveBeenCalled(); + expect(mockLog).not.toHaveBeenCalled(); expect(oldVideoAdaptation1.representations).toHaveLength(1); updatePeriodInPlace(oldPeriod as unknown as Period, newPeriod as unknown as Period, MANIFEST_UPDATE_TYPE.Partial); - expect(logSpy).not.toHaveBeenCalled(); + expect(mockLog).not.toHaveBeenCalled(); expect(oldVideoAdaptation1.representations).toHaveLength(1); - logSpy.mockRestore(); + mockLog.mockRestore(); }); it("should warn if an old Representation is not found", () => { @@ -586,24 +586,24 @@ describe("Manifest - updatePeriodInPlace", () => { }, }; - const logSpy = jest.spyOn(log, "warn"); + const mockLog = jest.spyOn(log, "warn"); updatePeriodInPlace(oldPeriod as unknown as Period, newPeriod as unknown as Period, MANIFEST_UPDATE_TYPE.Full); - expect(logSpy).toHaveBeenCalledTimes(1); - expect(logSpy).toHaveBeenCalledWith( + expect(mockLog).toHaveBeenCalledTimes(1); + expect(mockLog).toHaveBeenCalledWith( "Manifest: Representation \"rep-video-2\" not found when merging." ); expect(oldVideoAdaptation1.representations).toHaveLength(2); - logSpy.mockClear(); + mockLog.mockClear(); updatePeriodInPlace(oldPeriod as unknown as Period, newPeriod as unknown as Period, MANIFEST_UPDATE_TYPE.Partial); - expect(logSpy).toHaveBeenCalledTimes(1); - expect(logSpy).toHaveBeenCalledWith( + expect(mockLog).toHaveBeenCalledTimes(1); + expect(mockLog).toHaveBeenCalledWith( "Manifest: Representation \"rep-video-2\" not found when merging." ); expect(oldVideoAdaptation1.representations).toHaveLength(2); - logSpy.mockRestore(); + mockLog.mockRestore(); }); }); diff --git a/src/manifest/__tests__/update_periods.test.ts b/src/manifest/__tests__/update_periods.test.ts index 228602b980..10869937d4 100644 --- a/src/manifest/__tests__/update_periods.test.ts +++ b/src/manifest/__tests__/update_periods.test.ts @@ -49,7 +49,7 @@ describe("Manifest - replacePeriods", () => { const newPeriods = [ { id: "p2" }, ] as any; - const replacePeriods = require("../update_periods").replacePeriods; + const replacePeriods = jest.requireActual("../update_periods").replacePeriods; replacePeriods(oldPeriods, newPeriods); expect(oldPeriods.length).toBe(1); expect(oldPeriods[0].id).toBe("p2"); @@ -77,7 +77,7 @@ describe("Manifest - replacePeriods", () => { { id: "p2" }, { id: "p3" }, ] as any; - const replacePeriods = require("../update_periods").replacePeriods; + const replacePeriods = jest.requireActual("../update_periods").replacePeriods; replacePeriods(oldPeriods, newPeriods); expect(oldPeriods.length).toBe(2); expect(oldPeriods[0].id).toBe("p2"); @@ -105,7 +105,7 @@ describe("Manifest - replacePeriods", () => { const newPeriods = [ { id: "p2" }, ] as any; - const replacePeriods = require("../update_periods").replacePeriods; + const replacePeriods = jest.requireActual("../update_periods").replacePeriods; replacePeriods(oldPeriods, newPeriods); expect(oldPeriods.length).toBe(1); expect(oldPeriods[0].id).toBe("p2"); @@ -134,7 +134,7 @@ describe("Manifest - replacePeriods", () => { { id: "p2", start: 2 }, { id: "p3" }, ] as any; - const replacePeriods = require("../update_periods").replacePeriods; + const replacePeriods = jest.requireActual("../update_periods").replacePeriods; replacePeriods(oldPeriods, newPeriods); expect(oldPeriods.length).toBe(5); @@ -171,7 +171,7 @@ describe("Manifest - replacePeriods", () => { { id: "p1" }, { id: "p2" }, ] as any; - const replacePeriods = require("../update_periods").replacePeriods; + const replacePeriods = jest.requireActual("../update_periods").replacePeriods; replacePeriods(oldPeriods, newPeriods); expect(oldPeriods.length).toBe(2); expect(oldPeriods[0].id).toBe("p1"); @@ -198,7 +198,7 @@ describe("Manifest - replacePeriods", () => { { id: "p2" }, ] as any; const newPeriods = [] as any; - const replacePeriods = require("../update_periods").replacePeriods; + const replacePeriods = jest.requireActual("../update_periods").replacePeriods; replacePeriods(oldPeriods, newPeriods); expect(oldPeriods.length).toBe(0); expect(fakeUpdatePeriodInPlace).toHaveBeenCalledTimes(0); @@ -219,7 +219,7 @@ describe("Manifest - replacePeriods", () => { { id: "p1" }, { id: "p2" }, ] as any; - const replacePeriods = require("../update_periods").replacePeriods; + const replacePeriods = jest.requireActual("../update_periods").replacePeriods; replacePeriods(oldPeriods, newPeriods); expect(oldPeriods.length).toBe(2); expect(oldPeriods[0].id).toBe("p1"); @@ -247,7 +247,7 @@ describe("updatePeriods", () => { { id: "p2", start: 60 } ] as any; const newPeriods = [ { id: "p2", start: 60 } ] as any; - const updatePeriods = require("../update_periods").updatePeriods; + const updatePeriods = jest.requireActual("../update_periods").updatePeriods; updatePeriods(oldPeriods, newPeriods); expect(oldPeriods.length).toBe(2); expect(oldPeriods[0].id).toBe("p1"); @@ -271,7 +271,7 @@ describe("updatePeriods", () => { const oldPeriods = [ { id: "p2", start: 60 } ] as any; const newPeriods = [ { id: "p2", start: 60, end: 80 }, { id: "p3", start: 80 } ] as any; - const updatePeriods = require("../update_periods").updatePeriods; + const updatePeriods = jest.requireActual("../update_periods").updatePeriods; updatePeriods(oldPeriods, newPeriods); expect(oldPeriods.length).toBe(2); expect(oldPeriods[0].id).toBe("p2"); @@ -296,7 +296,7 @@ describe("updatePeriods", () => { })); const oldPeriods = [ { id: "p1", start: 50, end: 60 } ] as any; const newPeriods = [ { id: "p3", start: 70, end: 80 } ] as any; - const updatePeriods = require("../update_periods").updatePeriods; + const updatePeriods = jest.requireActual("../update_periods").updatePeriods; let error = null; try { @@ -337,7 +337,7 @@ describe("updatePeriods", () => { { id: "b", start: 68, end: 70 }, { id: "p2", start: 70, end: 80 }, { id: "p3", start: 80 } ] as any; - const updatePeriods = require("../update_periods").updatePeriods; + const updatePeriods = jest.requireActual("../update_periods").updatePeriods; updatePeriods(oldPeriods, newPeriods); expect(oldPeriods.length).toBe(6); @@ -367,7 +367,7 @@ describe("updatePeriods", () => { const newPeriods = [ { id: "p1", start: 50, end: 70 }, { id: "p2", start: 70 } ] as any; - const updatePeriods = require("../update_periods").updatePeriods; + const updatePeriods = jest.requireActual("../update_periods").updatePeriods; let error = null; try { @@ -402,7 +402,7 @@ describe("updatePeriods", () => { default: fakeUpdatePeriodInPlace })); const oldPeriods = [ { id: "p1" }, { id: "p2" } ] as any; const newPeriods = [] as any; - const updatePeriods = require("../update_periods").updatePeriods; + const updatePeriods = jest.requireActual("../update_periods").updatePeriods; updatePeriods(oldPeriods, newPeriods); expect(oldPeriods.length).toBe(2); expect(oldPeriods[0].id).toBe("p1"); @@ -420,7 +420,7 @@ describe("updatePeriods", () => { default: fakeUpdatePeriodInPlace })); const oldPeriods = [] as any; const newPeriods = [ { id: "p1" }, { id: "p2" } ] as any; - const updatePeriods = require("../update_periods").updatePeriods; + const updatePeriods = jest.requireActual("../update_periods").updatePeriods; updatePeriods(oldPeriods, newPeriods); expect(oldPeriods.length).toBe(2); expect(oldPeriods[0].id).toBe("p1"); @@ -436,7 +436,7 @@ describe("updatePeriods", () => { const fakeUpdatePeriodInPlace = jest.fn(() => { return; }); jest.mock("../update_period_in_place", () => ({ __esModule: true as const, default: fakeUpdatePeriodInPlace })); - const updatePeriods = require("../update_periods").updatePeriods; + const updatePeriods = jest.requireActual("../update_periods").updatePeriods; const oldPeriods = [ { id: "p0", start: 50, end: 60 }, { id: "p1", start: 60, end: 70 } ] as any; const newPeriods = [ { id: "p3", start: 80 } ] as any; @@ -477,7 +477,7 @@ describe("updatePeriods", () => { })); const oldPeriods = [ { id: "p1", start: 50, end: 60 } ] as any; const newPeriods = [ { id: "p2", start: 60, end: 80 } ] as any; - const updatePeriods = require("../update_periods").updatePeriods; + const updatePeriods = jest.requireActual("../update_periods").updatePeriods; updatePeriods(oldPeriods, newPeriods); expect(oldPeriods.length).toBe(2); @@ -500,7 +500,7 @@ describe("updatePeriods", () => { })); const oldPeriods = [ { id: "p1", start: 50, end: 60 } ] as any; const newPeriods = [ { id: "px", start: 50, end: 70 } ] as any; - const updatePeriods = require("../update_periods").updatePeriods; + const updatePeriods = jest.requireActual("../update_periods").updatePeriods; let error = null; try { @@ -539,7 +539,7 @@ describe("updatePeriods", () => { const newPeriods = [ { id: "p1", start: 60, end: 65 }, { id: "p2", start: 65, end: 80 }, { id: "p3", start: 80 } ] as any; - const updatePeriods = require("../update_periods").updatePeriods; + const updatePeriods = jest.requireActual("../update_periods").updatePeriods; updatePeriods(oldPeriods, newPeriods); expect(oldPeriods.length).toBe(4); @@ -574,7 +574,7 @@ describe("updatePeriods", () => { { id: "p3", start: 80 } ] as any; const newPeriods = [ { id: "p1", start: 60, end: 70 }, { id: "p3", start: 80 } ] as any; - const updatePeriods = require("../update_periods").updatePeriods; + const updatePeriods = jest.requireActual("../update_periods").updatePeriods; updatePeriods(oldPeriods, newPeriods); expect(oldPeriods.length).toBe(3); @@ -609,7 +609,7 @@ describe("updatePeriods", () => { { id: "p4", start: 90 } ] as any; const newPeriods = [ { id: "p1", start: 60, end: 70 }, { id: "p3", start: 80, end: 90 } ] as any; - const updatePeriods = require("../update_periods").updatePeriods; + const updatePeriods = jest.requireActual("../update_periods").updatePeriods; updatePeriods(oldPeriods, newPeriods); expect(oldPeriods.length).toBe(3); diff --git a/src/parsers/manifest/dash/common/__tests__/flatten_overlapping_period.test.ts b/src/parsers/manifest/dash/common/__tests__/flatten_overlapping_period.test.ts index 5a62d0acd5..1418256969 100644 --- a/src/parsers/manifest/dash/common/__tests__/flatten_overlapping_period.test.ts +++ b/src/parsers/manifest/dash/common/__tests__/flatten_overlapping_period.test.ts @@ -20,17 +20,17 @@ import flattenOverlappingPeriods from "../flatten_overlapping_periods"; describe("flattenOverlappingPeriods", function() { it("should do nothing when no period is given", () => { - const logSpy = jest.spyOn(log, "warn").mockImplementation(jest.fn()); + const mockLog = jest.spyOn(log, "warn").mockImplementation(jest.fn()); expect(flattenOverlappingPeriods([])).toEqual([]); - expect(logSpy).not.toHaveBeenCalled(); - logSpy.mockRestore(); + expect(mockLog).not.toHaveBeenCalled(); + mockLog.mockRestore(); }); // [ Period 1 ][ Period 2 ] ------> [ Period 1 ][ Period 3 ] // [ Period 3 ] it("should replace a period with an other if same start and duration", function() { - const logSpy = jest.spyOn(log, "warn").mockImplementation(jest.fn()); + const mockLog = jest.spyOn(log, "warn").mockImplementation(jest.fn()); const periods = [ { id: "1", start: 0, duration: 60, adaptations: {} }, @@ -47,16 +47,16 @@ describe("flattenOverlappingPeriods", function() { expect(flattenPeriods[1].duration).toBe(60); expect(flattenPeriods[1].id).toBe("3"); - expect(logSpy).toHaveBeenCalledTimes(1); - expect(logSpy).toHaveBeenCalledWith( + expect(mockLog).toHaveBeenCalledTimes(1); + expect(mockLog).toHaveBeenCalledWith( "DASH: Updating overlapping Periods.", 60, 60); - logSpy.mockRestore(); + mockLog.mockRestore(); }); // [ Period 1 ][ Period 2 ] ------> [ Period 1 ][ 2 ][ Period 3 ] // [ Period 3 ] it("should replace part of period if part of next one is overlapping it", function() { - const logSpy = jest.spyOn(log, "warn").mockImplementation(jest.fn()); + const mockLog = jest.spyOn(log, "warn").mockImplementation(jest.fn()); const periods = [ { id: "1", start: 0, duration: 60, adaptations: {} }, @@ -76,16 +76,16 @@ describe("flattenOverlappingPeriods", function() { expect(flattenPeriods[2].duration).toBe(60); expect(flattenPeriods[2].id).toBe("3"); - expect(logSpy).toHaveBeenCalledTimes(1); - expect(logSpy).toHaveBeenCalledWith( + expect(mockLog).toHaveBeenCalledTimes(1); + expect(mockLog).toHaveBeenCalledWith( "DASH: Updating overlapping Periods.", 60, 90); - logSpy.mockRestore(); + mockLog.mockRestore(); }); // [ Period 1 ][ Period 2 ] ------> [ 1 ][ Period 3 ] // [ Period 3 ] it("should erase period if a next period starts before and ends after it", function() { - const logSpy = jest.spyOn(log, "warn").mockImplementation(jest.fn()); + const mockLog = jest.spyOn(log, "warn").mockImplementation(jest.fn()); const periods = [ { id: "1", start: 0, duration: 60, adaptations: {} }, @@ -102,12 +102,12 @@ describe("flattenOverlappingPeriods", function() { expect(flattenPeriods[1].duration).toBe(120); expect(flattenPeriods[1].id).toBe("3"); - expect(logSpy).toHaveBeenCalledTimes(2); - expect(logSpy).toHaveBeenCalledWith( + expect(mockLog).toHaveBeenCalledTimes(2); + expect(mockLog).toHaveBeenCalledWith( "DASH: Updating overlapping Periods.", 60, 50); - expect(logSpy).toHaveBeenCalledWith( + expect(mockLog).toHaveBeenCalledWith( "DASH: Updating overlapping Periods.", 0, 50); - logSpy.mockRestore(); + mockLog.mockRestore(); }); // [ Period 1 ][ Period 2 ] ------> [ 1 ][ 100 ] @@ -117,7 +117,7 @@ describe("flattenOverlappingPeriods", function() { /* eslint-disable max-len */ it("should keep last announced period from multiple periods with same start and end", function() { /* eslint-enable max-len */ - const logSpy = jest.spyOn(log, "warn").mockImplementation(jest.fn()); + const mockLog = jest.spyOn(log, "warn").mockImplementation(jest.fn()); const periods = [ { id: "1", start: 0, duration: 60, adaptations: {} }, @@ -136,7 +136,7 @@ describe("flattenOverlappingPeriods", function() { expect(flattenPeriods[1].duration).toBe(60); expect(flattenPeriods[1].id).toBe("100"); - expect(logSpy).toHaveBeenCalledTimes(99); - logSpy.mockRestore(); + expect(mockLog).toHaveBeenCalledTimes(99); + mockLog.mockRestore(); }); }); diff --git a/src/parsers/manifest/dash/common/__tests__/get_clock_offset.test.ts b/src/parsers/manifest/dash/common/__tests__/get_clock_offset.test.ts index 95adf1341d..674a2a0e06 100644 --- a/src/parsers/manifest/dash/common/__tests__/get_clock_offset.test.ts +++ b/src/parsers/manifest/dash/common/__tests__/get_clock_offset.test.ts @@ -27,39 +27,39 @@ describe("DASH Parser - getClockOffset", () => { }); it("should calculate a millisecond offset relatively to performance.now", () => { - const warnSpy = jest.fn(); + const mockWarn = jest.fn(); jest.mock("../../../../../log", () => ({ - __esModule: true as const, - default: { warn: warnSpy }, + __esModule: true, + default: { warn: mockWarn }, })); - const getClockOffset = require("../get_clock_offset").default; - const dateSpy = jest.spyOn(performance, "now") + const getClockOffset = jest.requireActual("../get_clock_offset").default; + const mockDate = jest.spyOn(performance, "now") .mockReturnValue(Date.parse("2019-03-24T13:00:00Z")); expect(getClockOffset("2019-03-25T12:00:00Z")).toEqual(82800000); - expect(warnSpy).not.toHaveBeenCalled(); - dateSpy.mockRestore(); + expect(mockWarn).not.toHaveBeenCalled(); + mockDate.mockRestore(); }); it("should return undefined and warn if an invalid date is given", () => { - const warnSpy = jest.fn(); + const mockWarn = jest.fn(); jest.mock("../../../../../log", () => ({ - __esModule: true as const, - default: { warn: warnSpy }, + __esModule: true, + default: { warn: mockWarn }, })); - const getClockOffset = require("../get_clock_offset").default; + const getClockOffset = jest.requireActual("../get_clock_offset").default; expect(getClockOffset("2018/412/13")).toEqual(undefined); - expect(warnSpy).toHaveBeenCalledTimes(1); - expect(warnSpy) + expect(mockWarn).toHaveBeenCalledTimes(1); + expect(mockWarn) .toHaveBeenCalledWith("DASH Parser: Invalid clock received: ", "2018/412/13"); - warnSpy.mockReset(); + mockWarn.mockReset(); expect(getClockOffset("foo")).toEqual(undefined); - expect(warnSpy).toHaveBeenCalledTimes(1); - expect(warnSpy) + expect(mockWarn).toHaveBeenCalledTimes(1); + expect(mockWarn) .toHaveBeenCalledWith("DASH Parser: Invalid clock received: ", "foo"); - warnSpy.mockReset(); + mockWarn.mockReset(); }); }); diff --git a/src/parsers/manifest/dash/common/__tests__/get_http_utc-timing_url.test.ts b/src/parsers/manifest/dash/common/__tests__/get_http_utc-timing_url.test.ts index e75a39c282..53a32fff82 100644 --- a/src/parsers/manifest/dash/common/__tests__/get_http_utc-timing_url.test.ts +++ b/src/parsers/manifest/dash/common/__tests__/get_http_utc-timing_url.test.ts @@ -35,7 +35,7 @@ describe("DASH Parser - getHTTPUTCTimingURL", () => { }, attributes: {}, }; - const getHTTPUTCTimingURL = require("../get_http_utc-timing_url").default; + const getHTTPUTCTimingURL = jest.requireActual("../get_http_utc-timing_url").default; expect(getHTTPUTCTimingURL(mpdIR)).toEqual(undefined); }); @@ -57,7 +57,7 @@ describe("DASH Parser - getHTTPUTCTimingURL", () => { }, attributes: {}, }; - const getHTTPUTCTimingURL = require("../get_http_utc-timing_url").default; + const getHTTPUTCTimingURL = jest.requireActual("../get_http_utc-timing_url").default; expect(getHTTPUTCTimingURL(mpdIR)).toEqual(undefined); }); @@ -81,7 +81,7 @@ describe("DASH Parser - getHTTPUTCTimingURL", () => { }, attributes: {}, }; - const getHTTPUTCTimingURL = require("../get_http_utc-timing_url").default; + const getHTTPUTCTimingURL = jest.requireActual("../get_http_utc-timing_url").default; expect(getHTTPUTCTimingURL(mpdIR)).toEqual(undefined); }); @@ -99,7 +99,7 @@ describe("DASH Parser - getHTTPUTCTimingURL", () => { }, attributes: {}, }; - const getHTTPUTCTimingURL = require("../get_http_utc-timing_url").default; + const getHTTPUTCTimingURL = jest.requireActual("../get_http_utc-timing_url").default; expect(getHTTPUTCTimingURL(mpdIR)).toEqual("foobar2000"); }); @@ -125,7 +125,7 @@ describe("DASH Parser - getHTTPUTCTimingURL", () => { }, attributes: {}, }; - const getHTTPUTCTimingURL = require("../get_http_utc-timing_url").default; + const getHTTPUTCTimingURL = jest.requireActual("../get_http_utc-timing_url").default; expect(getHTTPUTCTimingURL(mpdIR)).toEqual("foobar1000"); }); @@ -159,7 +159,7 @@ describe("DASH Parser - getHTTPUTCTimingURL", () => { }, attributes: {}, }; - const getHTTPUTCTimingURL = require("../get_http_utc-timing_url").default; + const getHTTPUTCTimingURL = jest.requireActual("../get_http_utc-timing_url").default; expect(getHTTPUTCTimingURL(mpdIR)).toEqual("foobar2000"); }); }); diff --git a/src/parsers/manifest/dash/common/__tests__/manifest_bounds_calculator.test.ts b/src/parsers/manifest/dash/common/__tests__/manifest_bounds_calculator.test.ts index 5c5a838e7c..724d935dff 100644 --- a/src/parsers/manifest/dash/common/__tests__/manifest_bounds_calculator.test.ts +++ b/src/parsers/manifest/dash/common/__tests__/manifest_bounds_calculator.test.ts @@ -91,7 +91,7 @@ describe("DASH parsers - ManifestBoundsCalculator", () => { it("should return how much time has elapsed through `estimateMinimumBound` since the live edge was set for a dynamic content", () => { /* eslint-enable max-len */ let date = 5000; - const performanceSpy = jest.spyOn(performance, "now") + const mockPerformanceNow = jest.spyOn(performance, "now") .mockImplementation(jest.fn(() => date)); const manifestBoundsCalculator = new ManifestBoundsCalculator({ isDynamic: true, @@ -102,14 +102,14 @@ describe("DASH parsers - ManifestBoundsCalculator", () => { expect(manifestBoundsCalculator.estimateMinimumBound()).toEqual(1010); date = 35000; expect(manifestBoundsCalculator.estimateMinimumBound()).toEqual(1020); - performanceSpy.mockRestore(); + mockPerformanceNow.mockRestore(); }); /* eslint-disable max-len */ it("should return 0 even when a last position has been set for a static content", () => { /* eslint-enable max-len */ let date = 5000; - const performanceSpy = jest.spyOn(performance, "now") + const mockPerformanceNow = jest.spyOn(performance, "now") .mockImplementation(jest.fn(() => date)); const manifestBoundsCalculator = new ManifestBoundsCalculator({ isDynamic: false, @@ -120,14 +120,14 @@ describe("DASH parsers - ManifestBoundsCalculator", () => { expect(manifestBoundsCalculator.estimateMinimumBound()).toEqual(0); date = 35000; expect(manifestBoundsCalculator.estimateMinimumBound()).toEqual(0); - performanceSpy.mockRestore(); + mockPerformanceNow.mockRestore(); }); /* eslint-disable max-len */ it("should authorize and handle multiple `setLastPositionOffset` calls for dynamic contents", () => { /* eslint-enable max-len */ let date = 5000; - const performanceSpy = jest.spyOn(performance, "now") + const mockPerformanceNow = jest.spyOn(performance, "now") .mockImplementation(jest.fn(() => date)); const manifestBoundsCalculator = new ManifestBoundsCalculator({ isDynamic: true, @@ -139,6 +139,6 @@ describe("DASH parsers - ManifestBoundsCalculator", () => { manifestBoundsCalculator.setLastPosition(0, 0); date = 55000; expect(manifestBoundsCalculator.estimateMinimumBound()).toEqual(50); - performanceSpy.mockRestore(); + mockPerformanceNow.mockRestore(); }); }); diff --git a/src/parsers/manifest/dash/js-parser/node_parsers/__tests__/ContentProtection.test.ts b/src/parsers/manifest/dash/js-parser/node_parsers/__tests__/ContentProtection.test.ts index a10edf2997..576fcde9e6 100644 --- a/src/parsers/manifest/dash/js-parser/node_parsers/__tests__/ContentProtection.test.ts +++ b/src/parsers/manifest/dash/js-parser/node_parsers/__tests__/ContentProtection.test.ts @@ -26,7 +26,7 @@ function testStringAttribute(attributeName : string, variableName? : string) : v const _variableName = variableName == null ? attributeName : variableName; it(`should correctly parse a ContentProtection element with a correct ${attributeName} attribute`, () => { - const parseContentProtection = require("../ContentProtection").default; + const parseContentProtection = jest.requireActual("../ContentProtection").default; const element1 = new DOMParser() .parseFromString(``, "text/xml") .childNodes[0] as Element; @@ -51,7 +51,7 @@ describe("DASH Node Parsers - ContentProtection", () => { }); it("should correctly parse a ContentProtection element without attributes", () => { - const parseContentProtection = require("../ContentProtection").default; + const parseContentProtection = jest.requireActual("../ContentProtection").default; const element = new DOMParser().parseFromString("", "text/xml") .childNodes[0] as Element; expect(parseContentProtection(element)) @@ -66,13 +66,13 @@ describe("DASH Node Parsers - ContentProtection", () => { it("should correctly parse a ContentProtection element with a correct cenc:default_KID attribute", () => { const keyId = new Uint8Array([0, 1, 2, 3]); - const hexToBytesSpy = jest.fn().mockImplementation(() => { + const mockHexToBytes = jest.fn().mockImplementation(() => { return keyId; }); jest.mock("../../../../../../utils/string_parsing", () => ({ - hexToBytes: hexToBytesSpy, + hexToBytes: mockHexToBytes, })); - const parseContentProtection = require("../ContentProtection").default; + const parseContentProtection = jest.requireActual("../ContentProtection").default; const element1 = new DOMParser() .parseFromString(` { .toEqual([ { attributes: { keyId }, children: { cencPssh: [] } }, [] ]); - expect(hexToBytesSpy).toHaveBeenCalledTimes(1); - expect(hexToBytesSpy).toHaveBeenCalledWith("deadbeef"); + expect(mockHexToBytes).toHaveBeenCalledTimes(1); + expect(mockHexToBytes).toHaveBeenCalledWith("deadbeef"); }); it("should correctly parse a ContentProtection with every attributes", () => { const keyId = new Uint8Array([0, 1, 2, 3]); - const hexToBytesSpy = jest.fn().mockImplementation(() => { + const mockHexToBytes = jest.fn().mockImplementation(() => { return keyId; }); jest.mock("../../../../../../utils/string_parsing", () => ({ - hexToBytes: hexToBytesSpy, + hexToBytes: mockHexToBytes, })); - const parseContentProtection = require("../ContentProtection").default; + const parseContentProtection = jest.requireActual("../ContentProtection").default; const element = new DOMParser() .parseFromString(` { }); it("should correctly parse a ContentProtection with cenc:pssh children", () => { - const parseContentProtection = require("../ContentProtection").default; + const parseContentProtection = jest.requireActual("../ContentProtection").default; const element = new DOMParser() .parseFromString(` { it("should correctly parse a ContentProtection with both cenc:pssh children and every attributes", () => { const keyId = new Uint8Array([0, 1, 2, 3]); - const hexToBytesSpy = jest.fn().mockImplementation(() => { + const mockHexToBytes = jest.fn().mockImplementation(() => { return keyId; }); jest.mock("../../../../../../utils/string_parsing", () => ({ - hexToBytes: hexToBytesSpy, + hexToBytes: mockHexToBytes, })); - const parseContentProtection = require("../ContentProtection").default; + const parseContentProtection = jest.requireActual("../ContentProtection").default; const element = new DOMParser() .parseFromString(` { }); it("should return a warning if one of the cenc:pssh is invalid base64", () => { - const parseContentProtection = require("../ContentProtection").default; + const parseContentProtection = jest.requireActual("../ContentProtection").default; const element = new DOMParser() .parseFromString(` { const log = { __esModule: true as const, default: { warn: () => null } }; jest.mock("../../../../../../log", () => log); - const logSpy = jest.spyOn(log.default, "warn"); + const mockLog = jest.spyOn(log.default, "warn"); - const parseInitialization = require("../Initialization").default; + const parseInitialization = jest.requireActual("../Initialization").default; const element1 = new DOMParser() .parseFromString("", "text/xml") .childNodes[0] as Element; @@ -43,17 +43,17 @@ describe("DASH Node Parsers - Initialization", () => { .childNodes[0] as Element; expect(parseInitialization(element2)).toEqual([{}, []]); - expect(logSpy).not.toHaveBeenCalled(); - logSpy.mockRestore(); + expect(mockLog).not.toHaveBeenCalled(); + mockLog.mockRestore(); }); it("should correctly parse an element with a well-formed `range` attribute", () => { const log = { __esModule: true as const, default: { warn: () => null } }; jest.mock("../../../../../../log", () => log); - const logSpy = jest.spyOn(log.default, "warn"); + const mockLog = jest.spyOn(log.default, "warn"); - const parseInitialization = require("../Initialization").default; + const parseInitialization = jest.requireActual("../Initialization").default; const element1 = new DOMParser() .parseFromString("", "text/xml") .childNodes[0] as Element; @@ -64,26 +64,26 @@ describe("DASH Node Parsers - Initialization", () => { .childNodes[0] as Element; expect(parseInitialization(element2)).toEqual([{ range: [100, 1000] }, []]); - expect(logSpy).not.toHaveBeenCalled(); - logSpy.mockRestore(); + expect(mockLog).not.toHaveBeenCalled(); + mockLog.mockRestore(); }); it("should correctly parse an element with an incorrect `range` attribute", () => { const log = { __esModule: true as const, default: { warn: () => null } }; jest.mock("../../../../../../log", () => log); - const logSpy = jest.spyOn(log.default, "warn").mockImplementation(jest.fn()); + const mockLog = jest.spyOn(log.default, "warn").mockImplementation(jest.fn()); - const parseInitialization = require("../Initialization").default; - const MPDError = require("../utils").MPDError; + const parseInitialization = jest.requireActual("../Initialization").default; + const MPDError = jest.requireActual("../utils").MPDError; const element1 = new DOMParser() .parseFromString("", "text/xml") .childNodes[0] as Element; const error1 = new MPDError("`range` property has an unrecognized format \"a\""); expect(parseInitialization(element1)).toEqual([{}, [error1]]); - expect(logSpy).toHaveBeenCalledTimes(1); - expect(logSpy).toHaveBeenCalledWith(error1.message); + expect(mockLog).toHaveBeenCalledTimes(1); + expect(mockLog).toHaveBeenCalledWith(error1.message); const element2 = new DOMParser() .parseFromString("", "text/xml") @@ -91,19 +91,19 @@ describe("DASH Node Parsers - Initialization", () => { const error2 = new MPDError("`range` property has an unrecognized format \"\""); expect(parseInitialization(element2)).toEqual([{}, [error2]]); - expect(logSpy).toHaveBeenCalledTimes(2); - expect(logSpy).toHaveBeenCalledWith(error2.message); + expect(mockLog).toHaveBeenCalledTimes(2); + expect(mockLog).toHaveBeenCalledWith(error2.message); - logSpy.mockRestore(); + mockLog.mockRestore(); }); it("should correctly parse an element with a sourceURL attribute", () => { const log = { __esModule: true as const, default: { warn: () => null } }; jest.mock("../../../../../../log", () => log); - const logSpy = jest.spyOn(log.default, "warn"); + const mockLog = jest.spyOn(log.default, "warn"); - const parseInitialization = require("../Initialization").default; + const parseInitialization = jest.requireActual("../Initialization").default; const element1 = new DOMParser() .parseFromString("", "text/xml") .childNodes[0] as Element; @@ -114,8 +114,8 @@ describe("DASH Node Parsers - Initialization", () => { .childNodes[0] as Element; expect(parseInitialization(element2)).toEqual([{ media: "" }, []]); - expect(logSpy).not.toHaveBeenCalled(); - logSpy.mockRestore(); + expect(mockLog).not.toHaveBeenCalled(); + mockLog.mockRestore(); }); /* eslint-disable max-len */ @@ -124,16 +124,16 @@ describe("DASH Node Parsers - Initialization", () => { const log = { __esModule: true as const, default: { warn: () => null } }; jest.mock("../../../../../../log", () => log); - const logSpy = jest.spyOn(log.default, "warn"); + const mockLog = jest.spyOn(log.default, "warn"); - const parseInitialization = require("../Initialization").default; + const parseInitialization = jest.requireActual("../Initialization").default; const element1 = new DOMParser() .parseFromString("", "text/xml") .childNodes[0] as Element; expect(parseInitialization(element1)).toEqual([ { media: "a", range: [4, 10] }, [] ]); - expect(logSpy).not.toHaveBeenCalled(); - logSpy.mockRestore(); + expect(mockLog).not.toHaveBeenCalled(); + mockLog.mockRestore(); }); }); diff --git a/src/parsers/manifest/dash/js-parser/node_parsers/__tests__/SegmentTimeline.test.ts b/src/parsers/manifest/dash/js-parser/node_parsers/__tests__/SegmentTimeline.test.ts index ac3ab409ac..4050f1729b 100644 --- a/src/parsers/manifest/dash/js-parser/node_parsers/__tests__/SegmentTimeline.test.ts +++ b/src/parsers/manifest/dash/js-parser/node_parsers/__tests__/SegmentTimeline.test.ts @@ -27,55 +27,55 @@ describe("DASH Node parsers - SegmentTimeline", () => { }); it("should return a function to parse lazily the timeline", () => { - const parseSegmentTimeline = require("../SegmentTimeline").default; + const parseSegmentTimeline = jest.requireActual("../SegmentTimeline").default; const element = new DOMParser() .parseFromString("", "text/xml") .childNodes[0] as Element; - const getElementsByTagNameSpy = jest.spyOn(element, "getElementsByTagName"); + const mockGetElementsByTagName = jest.spyOn(element, "getElementsByTagName"); const timeline = parseSegmentTimeline(element); expect(typeof timeline).toEqual("function"); expect(timeline.length).toEqual(0); - expect(getElementsByTagNameSpy).not.toHaveBeenCalled(); - getElementsByTagNameSpy.mockReset(); + expect(mockGetElementsByTagName).not.toHaveBeenCalled(); + mockGetElementsByTagName.mockReset(); }); it("should return an empty HTMLCollection if no S element is present", () => { - const parseSegmentTimeline = require("../SegmentTimeline").default; + const parseSegmentTimeline = jest.requireActual("../SegmentTimeline").default; const element = new DOMParser() .parseFromString("", "text/xml") .childNodes[0] as Element; - const getElementsByTagNameSpy = jest.spyOn(element, "getElementsByTagName"); + const mockGetElementsByTagName = jest.spyOn(element, "getElementsByTagName"); const timeline = parseSegmentTimeline(element); const res = timeline(); expect(res).toBeInstanceOf(HTMLCollection); expect(res).toHaveLength(0); - expect(getElementsByTagNameSpy).toHaveBeenCalledTimes(1); - expect(getElementsByTagNameSpy).toHaveBeenCalledWith("S"); - getElementsByTagNameSpy.mockReset(); + expect(mockGetElementsByTagName).toHaveBeenCalledTimes(1); + expect(mockGetElementsByTagName).toHaveBeenCalledWith("S"); + mockGetElementsByTagName.mockReset(); }); it("should return an empty HTMLCollection for an Invalid XML", () => { - const parseSegmentTimeline = require("../SegmentTimeline").default; + const parseSegmentTimeline = jest.requireActual("../SegmentTimeline").default; const element = new DOMParser() .parseFromString("", "text/xml") .childNodes[0] as Element; - const getElementsByTagNameSpy = jest.spyOn(element, "getElementsByTagName"); + const mockGetElementsByTagName = jest.spyOn(element, "getElementsByTagName"); const timeline = parseSegmentTimeline(element); const res = timeline(); expect(res).toBeInstanceOf(HTMLCollection); expect(res).toHaveLength(0); - expect(getElementsByTagNameSpy).toHaveBeenCalledTimes(1); - expect(getElementsByTagNameSpy).toHaveBeenCalledWith("S"); - getElementsByTagNameSpy.mockReset(); + expect(mockGetElementsByTagName).toHaveBeenCalledTimes(1); + expect(mockGetElementsByTagName).toHaveBeenCalledWith("S"); + mockGetElementsByTagName.mockReset(); }); it("should parse S elements only when called for the first time", () => { - const parseSegmentTimeline = require("../SegmentTimeline").default; + const parseSegmentTimeline = jest.requireActual("../SegmentTimeline").default; const sElement1 = new DOMParser() .parseFromString("1", "text/xml") @@ -97,15 +97,15 @@ describe("DASH Node parsers - SegmentTimeline", () => { element.appendChild(aElement); element.appendChild(oElement); element.appendChild(sElement2); - const getElementsByTagNameSpy = jest.spyOn(element, "getElementsByTagName"); + const mockGetElementsByTagName = jest.spyOn(element, "getElementsByTagName"); const timeline = parseSegmentTimeline(element); const res1 = timeline(); expect(res1).toBeInstanceOf(HTMLCollection); expect(res1).toHaveLength(2); - expect(getElementsByTagNameSpy).toHaveBeenCalledTimes(1); - expect(getElementsByTagNameSpy).toHaveBeenCalledWith("S"); - getElementsByTagNameSpy.mockClear(); + expect(mockGetElementsByTagName).toHaveBeenCalledTimes(1); + expect(mockGetElementsByTagName).toHaveBeenCalledWith("S"); + mockGetElementsByTagName.mockClear(); const res2 = timeline(); const res3 = timeline(); expect(res2).toBe(res1); @@ -114,6 +114,6 @@ describe("DASH Node parsers - SegmentTimeline", () => { expect(res3).toBe(res1); expect(res3).toBeInstanceOf(HTMLCollection); expect(res3).toHaveLength(2); - expect(getElementsByTagNameSpy).not.toHaveBeenCalled(); + expect(mockGetElementsByTagName).not.toHaveBeenCalled(); }); }); diff --git a/src/parsers/manifest/dash/js-parser/node_parsers/__tests__/SegmentURL.test.ts b/src/parsers/manifest/dash/js-parser/node_parsers/__tests__/SegmentURL.test.ts index b2d8f0db55..c9e4cd6013 100644 --- a/src/parsers/manifest/dash/js-parser/node_parsers/__tests__/SegmentURL.test.ts +++ b/src/parsers/manifest/dash/js-parser/node_parsers/__tests__/SegmentURL.test.ts @@ -30,9 +30,9 @@ describe("DASH Node Parsers - SegmentURL", () => { const log = { __esModule: true as const, default: { warn: () => null } }; jest.mock("../../../../../../log", () => log); - const logSpy = jest.spyOn(log.default, "warn"); + const mockLog = jest.spyOn(log.default, "warn"); - const parseSegmentURL = require("../SegmentURL").default; + const parseSegmentURL = jest.requireActual("../SegmentURL").default; const element1 = new DOMParser() .parseFromString("", "text/xml") .childNodes[0] as Element; @@ -43,8 +43,8 @@ describe("DASH Node Parsers - SegmentURL", () => { .childNodes[0] as Element; expect(parseSegmentURL(element2)).toEqual([{}, []]); - expect(logSpy).not.toHaveBeenCalled(); - logSpy.mockRestore(); + expect(mockLog).not.toHaveBeenCalled(); + mockLog.mockRestore(); }); /* eslint-disable max-len */ @@ -53,9 +53,9 @@ describe("DASH Node Parsers - SegmentURL", () => { const log = { __esModule: true as const, default: { warn: () => null } }; jest.mock("../../../../../../log", () => log); - const logSpy = jest.spyOn(log.default, "warn"); + const mockLog = jest.spyOn(log.default, "warn"); - const parseSegmentURL = require("../SegmentURL").default; + const parseSegmentURL = jest.requireActual("../SegmentURL").default; const element1 = new DOMParser() .parseFromString("", "text/xml") .childNodes[0] as Element; @@ -66,18 +66,18 @@ describe("DASH Node Parsers - SegmentURL", () => { .childNodes[0] as Element; expect(parseSegmentURL(element2)).toEqual([{ mediaRange: [0, 1] }, []]); - expect(logSpy).not.toHaveBeenCalled(); - logSpy.mockRestore(); + expect(mockLog).not.toHaveBeenCalled(); + mockLog.mockRestore(); }); it("should correctly parse an element with an incorrect `mediaRange` attribute", () => { const log = { __esModule: true as const, default: { warn: () => null } }; jest.mock("../../../../../../log", () => log); - const logSpy = jest.spyOn(log.default, "warn").mockImplementation(jest.fn()); + const mockLog = jest.spyOn(log.default, "warn").mockImplementation(jest.fn()); - const parseSegmentURL = require("../SegmentURL").default; - const MPDError = require("../utils").MPDError; + const parseSegmentURL = jest.requireActual("../SegmentURL").default; + const MPDError = jest.requireActual("../utils").MPDError; const element1 = new DOMParser() .parseFromString("", "text/xml") .childNodes[0] as Element; @@ -86,8 +86,8 @@ describe("DASH Node Parsers - SegmentURL", () => { ); expect(parseSegmentURL(element1)).toEqual([{}, [error1]]); - expect(logSpy).toHaveBeenCalledTimes(1); - expect(logSpy).toHaveBeenCalledWith(error1.message); + expect(mockLog).toHaveBeenCalledTimes(1); + expect(mockLog).toHaveBeenCalledWith(error1.message); const element2 = new DOMParser() .parseFromString("", "text/xml") @@ -97,10 +97,10 @@ describe("DASH Node Parsers - SegmentURL", () => { ); expect(parseSegmentURL(element2)).toEqual([{}, [error2]]); - expect(logSpy).toHaveBeenCalledTimes(2); - expect(logSpy).toHaveBeenCalledWith(error2.message); + expect(mockLog).toHaveBeenCalledTimes(2); + expect(mockLog).toHaveBeenCalledWith(error2.message); - logSpy.mockRestore(); + mockLog.mockRestore(); }); /* eslint-disable max-len */ @@ -111,9 +111,9 @@ describe("DASH Node Parsers - SegmentURL", () => { default: { warn: () => null }, }; jest.mock("../../../../../../log", () => log); - const logSpy = jest.spyOn(log.default, "warn"); + const mockLog = jest.spyOn(log.default, "warn"); - const parseSegmentURL = require("../SegmentURL").default; + const parseSegmentURL = jest.requireActual("../SegmentURL").default; const element1 = new DOMParser() .parseFromString("", "text/xml") .childNodes[0] as Element; @@ -124,18 +124,18 @@ describe("DASH Node Parsers - SegmentURL", () => { .childNodes[0] as Element; expect(parseSegmentURL(element2)).toEqual([{ indexRange: [72, 47] }, []]); - expect(logSpy).not.toHaveBeenCalled(); - logSpy.mockRestore(); + expect(mockLog).not.toHaveBeenCalled(); + mockLog.mockRestore(); }); it("should correctly parse an element with an incorrect `indexRange` attribute", () => { const log = { __esModule: true as const, default: { warn: () => null } }; jest.mock("../../../../../../log", () => log); - const logSpy = jest.spyOn(log.default, "warn").mockImplementation(jest.fn()); + const mockLog = jest.spyOn(log.default, "warn").mockImplementation(jest.fn()); - const parseSegmentURL = require("../SegmentURL").default; - const MPDError = require("../utils").MPDError; + const parseSegmentURL = jest.requireActual("../SegmentURL").default; + const MPDError = jest.requireActual("../utils").MPDError; const element1 = new DOMParser() .parseFromString("", "text/xml") .childNodes[0] as Element; @@ -144,8 +144,8 @@ describe("DASH Node Parsers - SegmentURL", () => { ); expect(parseSegmentURL(element1)).toEqual([{}, [error1]]); - expect(logSpy).toHaveBeenCalledTimes(1); - expect(logSpy).toHaveBeenCalledWith(error1.message); + expect(mockLog).toHaveBeenCalledTimes(1); + expect(mockLog).toHaveBeenCalledWith(error1.message); const element2 = new DOMParser() .parseFromString("", "text/xml") @@ -155,19 +155,19 @@ describe("DASH Node Parsers - SegmentURL", () => { ); expect(parseSegmentURL(element2)).toEqual([{}, [error2]]); - expect(logSpy).toHaveBeenCalledTimes(2); - expect(logSpy).toHaveBeenCalledWith(error2.message); + expect(mockLog).toHaveBeenCalledTimes(2); + expect(mockLog).toHaveBeenCalledWith(error2.message); - logSpy.mockRestore(); + mockLog.mockRestore(); }); it("should correctly parse an element with a media attribute", () => { const log = { __esModule: true as const, default: { warn: () => null } }; jest.mock("../../../../../../log", () => log); - const logSpy = jest.spyOn(log.default, "warn"); + const mockLog = jest.spyOn(log.default, "warn"); - const parseSegmentURL = require("../SegmentURL").default; + const parseSegmentURL = jest.requireActual("../SegmentURL").default; const element1 = new DOMParser() .parseFromString("", "text/xml") .childNodes[0] as Element; @@ -178,17 +178,17 @@ describe("DASH Node Parsers - SegmentURL", () => { .childNodes[0] as Element; expect(parseSegmentURL(element2)).toEqual([{ media: "" }, []]); - expect(logSpy).not.toHaveBeenCalled(); - logSpy.mockRestore(); + expect(mockLog).not.toHaveBeenCalled(); + mockLog.mockRestore(); }); it("should correctly parse an element with a index attribute", () => { const log = { __esModule: true as const, default: { warn: () => null } }; jest.mock("../../../../../../log", () => log); - const logSpy = jest.spyOn(log.default, "warn"); + const mockLog = jest.spyOn(log.default, "warn"); - const parseSegmentURL = require("../SegmentURL").default; + const parseSegmentURL = jest.requireActual("../SegmentURL").default; const element1 = new DOMParser() .parseFromString("", "text/xml") .childNodes[0] as Element; @@ -199,7 +199,7 @@ describe("DASH Node Parsers - SegmentURL", () => { .childNodes[0] as Element; expect(parseSegmentURL(element2)).toEqual([{ index: "" }, []]); - expect(logSpy).not.toHaveBeenCalled(); - logSpy.mockRestore(); + expect(mockLog).not.toHaveBeenCalled(); + mockLog.mockRestore(); }); }); diff --git a/src/parsers/manifest/utils/__tests__/update_segment_timeline.test.ts b/src/parsers/manifest/utils/__tests__/update_segment_timeline.test.ts index 498ae7299e..763ff43b23 100644 --- a/src/parsers/manifest/utils/__tests__/update_segment_timeline.test.ts +++ b/src/parsers/manifest/utils/__tests__/update_segment_timeline.test.ts @@ -24,18 +24,18 @@ import { IIndexSegment } from "../index_helpers"; describe("Manifest Parsers utils - updateSegmentTimeline", () => { - let logWarnSpy : jest.MockInstance | undefined; + let mockLogWarn : jest.MockInstance | undefined; let updateSegmentTimeline : ((a : IIndexSegment[], b : IIndexSegment[]) => boolean) | undefined; beforeEach(() => { jest.resetModules(); - logWarnSpy = jest.spyOn(require("../../../../log").default, "warn"); - updateSegmentTimeline = require("../update_segment_timeline").default; + mockLogWarn = jest.spyOn(jest.requireActual("../../../../log").default, "warn"); + updateSegmentTimeline = jest.requireActual("../update_segment_timeline").default; }); afterEach(() => { - logWarnSpy?.mockRestore(); + mockLogWarn?.mockRestore(); }); /* eslint-disable max-len */ @@ -50,7 +50,7 @@ describe("Manifest Parsers utils - updateSegmentTimeline", () => { oldTimeline.length = 0; // reset updateSegmentTimeline?.(oldTimeline, newTimeline2); expect(oldTimeline).toEqual(newTimeline2); - expect(logWarnSpy).not.toHaveBeenCalled(); + expect(mockLogWarn).not.toHaveBeenCalled(); }); it("should not do anything if the new timeline is empty", () => { @@ -59,7 +59,7 @@ describe("Manifest Parsers utils - updateSegmentTimeline", () => { const oldTimelineCloned = oldTimeline.slice(); expect(updateSegmentTimeline?.(oldTimeline, newTimeline)).toEqual(false); expect(oldTimeline).toEqual(oldTimelineCloned); - expect(logWarnSpy).not.toHaveBeenCalled(); + expect(mockLogWarn).not.toHaveBeenCalled(); }); it("should not do anything if the timelines are equal", () => { @@ -78,7 +78,7 @@ describe("Manifest Parsers utils - updateSegmentTimeline", () => { const oldTimeline2Cloned = oldTimeline2.slice(); expect(updateSegmentTimeline?.(oldTimeline2, newTimeline2)).toEqual(false); expect(oldTimeline2).toEqual(oldTimeline2Cloned); - expect(logWarnSpy).not.toHaveBeenCalled(); + expect(mockLogWarn).not.toHaveBeenCalled(); }); /* eslint-disable max-len */ @@ -110,7 +110,7 @@ describe("Manifest Parsers utils - updateSegmentTimeline", () => { .toEqual("MediaError (MANIFEST_UPDATE_ERROR) Cannot perform " + "partial update: not enough data"); expect(oldTimeline1).toEqual(oldTimeline1Cloned); - expect(logWarnSpy).not.toHaveBeenCalled(); + expect(mockLogWarn).not.toHaveBeenCalled(); }); it("should merge consecutive timelines", () => { @@ -123,7 +123,7 @@ describe("Manifest Parsers utils - updateSegmentTimeline", () => { const newTimeline1Cloned = newTimeline1.slice(); expect(updateSegmentTimeline?.(oldTimeline1, newTimeline1)).toEqual(false); expect(oldTimeline1).toEqual([...oldTimeline1Cloned, ...newTimeline1Cloned]); - expect(logWarnSpy).not.toHaveBeenCalled(); + expect(mockLogWarn).not.toHaveBeenCalled(); // With repeats @@ -136,7 +136,7 @@ describe("Manifest Parsers utils - updateSegmentTimeline", () => { const newTimeline2Cloned = newTimeline2.slice(); expect(updateSegmentTimeline?.(oldTimeline2, newTimeline2)).toEqual(false); expect(oldTimeline2).toEqual([...oldTimeline2Cloned, ...newTimeline2Cloned]); - expect(logWarnSpy).not.toHaveBeenCalled(); + expect(mockLogWarn).not.toHaveBeenCalled(); }); /* eslint-disable max-len */ @@ -169,7 +169,7 @@ describe("Manifest Parsers utils - updateSegmentTimeline", () => { { start: 24000, duration: 1100, repeatCount: 0 }, { start: 25100, duration: 1000, repeatCount: 1 }, ]); - expect(logWarnSpy).not.toHaveBeenCalled(); + expect(mockLogWarn).not.toHaveBeenCalled(); }); it("should merge perfectly overlapping timelines without repeatCounts", () => { @@ -188,7 +188,7 @@ describe("Manifest Parsers utils - updateSegmentTimeline", () => { { start: 2500, duration: 500, repeatCount: 0 }, { start: 3000, duration: 5000, repeatCount: 0 }, ]); - expect(logWarnSpy).not.toHaveBeenCalled(); + expect(mockLogWarn).not.toHaveBeenCalled(); }); it("should merge perfectly overlapping timelines with repeatCounts", () => { @@ -207,7 +207,7 @@ describe("Manifest Parsers utils - updateSegmentTimeline", () => { { start: 13000, duration: 7000, repeatCount: 0 }, { start: 20000, duration: 5000, repeatCount: 0 }, ]); - expect(logWarnSpy).not.toHaveBeenCalled(); + expect(mockLogWarn).not.toHaveBeenCalled(); const oldTimeline2 = [ { start: 1000, duration: 500, repeatCount: 21 }, { start: 12000, duration: 1000, repeatCount: 0 } ]; @@ -236,7 +236,7 @@ describe("Manifest Parsers utils - updateSegmentTimeline", () => { { start: 13000, duration: 7000, repeatCount: 0 }, { start: 20000, duration: 5000, repeatCount: 0 }, ]); - expect(logWarnSpy).not.toHaveBeenCalled(); + expect(mockLogWarn).not.toHaveBeenCalled(); }); it("should merge even if there are \"holes\" in the old timeline", () => { @@ -274,7 +274,7 @@ describe("Manifest Parsers utils - updateSegmentTimeline", () => { { start: 20000, duration: 5000, repeatCount: 0 }, ]); - expect(logWarnSpy).not.toHaveBeenCalled(); + expect(mockLogWarn).not.toHaveBeenCalled(); }); /* eslint-disable max-len */ @@ -296,11 +296,11 @@ describe("Manifest Parsers utils - updateSegmentTimeline", () => { { start: 13700, duration: 7000, repeatCount: 0 }, { start: 20700, duration: 5000, repeatCount: 0 }, ]); - expect(logWarnSpy).toHaveBeenCalledTimes(1); - expect(logWarnSpy).toHaveBeenCalledWith( + expect(mockLogWarn).toHaveBeenCalledTimes(1); + expect(mockLogWarn).toHaveBeenCalledWith( "RepresentationIndex: Manifest update removed previous segments" ); - logWarnSpy?.mockClear(); + mockLogWarn?.mockClear(); const oldTimeline2 = [ { start: 0, duration: 1000, repeatCount: 0 }, { start: 1000, duration: 500, repeatCount: 21 } ]; @@ -317,11 +317,11 @@ describe("Manifest Parsers utils - updateSegmentTimeline", () => { { start: 13700, duration: 7000, repeatCount: 0 }, { start: 20700, duration: 5000, repeatCount: 0 }, ]); - expect(logWarnSpy).toHaveBeenCalledTimes(1); - expect(logWarnSpy).toHaveBeenCalledWith( + expect(mockLogWarn).toHaveBeenCalledTimes(1); + expect(mockLogWarn).toHaveBeenCalledWith( "RepresentationIndex: Manifest update removed previous segments" ); - logWarnSpy?.mockClear(); + mockLogWarn?.mockClear(); const oldTimeline3 = [ { start: 0, duration: 1000, repeatCount: 0 }, { start: 1000, duration: 500, repeatCount: 21 } ]; @@ -332,8 +332,8 @@ describe("Manifest Parsers utils - updateSegmentTimeline", () => { { start: 1000, duration: 500, repeatCount: 2 }, { start: 2700, duration: 500, repeatCount: 19 }, ]); - expect(logWarnSpy).toHaveBeenCalledTimes(1); - expect(logWarnSpy).toHaveBeenCalledWith( + expect(mockLogWarn).toHaveBeenCalledTimes(1); + expect(mockLogWarn).toHaveBeenCalledWith( "RepresentationIndex: Manifest update removed previous segments" ); }); @@ -357,11 +357,11 @@ describe("Manifest Parsers utils - updateSegmentTimeline", () => { { start: 13000, duration: 7000, repeatCount: 0 }, { start: 20000, duration: 5000, repeatCount: 0 }, ]); - expect(logWarnSpy).toHaveBeenCalledTimes(1); - expect(logWarnSpy).toHaveBeenCalledWith( + expect(mockLogWarn).toHaveBeenCalledTimes(1); + expect(mockLogWarn).toHaveBeenCalledWith( "RepresentationIndex: Manifest update removed previous segments" ); - logWarnSpy?.mockClear(); + mockLogWarn?.mockClear(); const oldTimeline2 = [ { start: 0, duration: 1000, repeatCount: 0 }, { start: 1000, duration: 500, repeatCount: 21 } ]; @@ -378,11 +378,11 @@ describe("Manifest Parsers utils - updateSegmentTimeline", () => { { start: 13000, duration: 7000, repeatCount: 0 }, { start: 20000, duration: 5000, repeatCount: 0 }, ]); - expect(logWarnSpy).toHaveBeenCalledTimes(1); - expect(logWarnSpy).toHaveBeenCalledWith( + expect(mockLogWarn).toHaveBeenCalledTimes(1); + expect(mockLogWarn).toHaveBeenCalledWith( "RepresentationIndex: Manifest update removed previous segments" ); - logWarnSpy?.mockClear(); + mockLogWarn?.mockClear(); const oldTimeline3 = [ { start: 1000, duration: 500, repeatCount: 21 } ]; const newTimeline3 = [ { start: 2000, duration: 1000, repeatCount: 9 } ]; @@ -391,8 +391,8 @@ describe("Manifest Parsers utils - updateSegmentTimeline", () => { { start: 1000, duration: 500, repeatCount: 1 }, { start: 2000, duration: 1000, repeatCount: 9 }, ]); - expect(logWarnSpy).toHaveBeenCalledTimes(1); - expect(logWarnSpy).toHaveBeenCalledWith( + expect(mockLogWarn).toHaveBeenCalledTimes(1); + expect(mockLogWarn).toHaveBeenCalledWith( "RepresentationIndex: Manifest update removed previous segments" ); }); @@ -415,8 +415,8 @@ describe("Manifest Parsers utils - updateSegmentTimeline", () => { { start: 13000, duration: 7000, repeatCount: 0 }, { start: 20000, duration: 5000, repeatCount: 0 }, ]); - expect(logWarnSpy).toHaveBeenCalledTimes(1); - expect(logWarnSpy).toHaveBeenCalledWith( + expect(mockLogWarn).toHaveBeenCalledTimes(1); + expect(mockLogWarn).toHaveBeenCalledWith( "RepresentationIndex: Manifest update removed all previous segments" ); }); @@ -447,7 +447,7 @@ describe("Manifest Parsers utils - updateSegmentTimeline", () => { { start: 37500, duration: 1000, repeatCount: 5 }, ]); - expect(logWarnSpy).not.toHaveBeenCalled(); + expect(mockLogWarn).not.toHaveBeenCalled(); }); it("should handle when the newer timeline has more depth than the older one", () => { @@ -467,13 +467,13 @@ describe("Manifest Parsers utils - updateSegmentTimeline", () => { { start: 20000, duration: 5000, repeatCount: 0 }, ]); - expect(logWarnSpy).toHaveBeenCalledTimes(1); - expect(logWarnSpy) + expect(mockLogWarn).toHaveBeenCalledTimes(1); + expect(mockLogWarn) .toHaveBeenCalledWith( "RepresentationIndex: The new index is \"bigger\" than the previous one" ); - logWarnSpy?.mockClear(); + mockLogWarn?.mockClear(); const oldTimeline2 = [ { start: 1000, duration: 500, repeatCount: 21 }, { start: 12000, duration: 1000, repeatCount: -1 } ]; @@ -491,8 +491,8 @@ describe("Manifest Parsers utils - updateSegmentTimeline", () => { { start: 20000, duration: 5000, repeatCount: 0 }, ]); - expect(logWarnSpy).toHaveBeenCalledTimes(1); - expect(logWarnSpy) + expect(mockLogWarn).toHaveBeenCalledTimes(1); + expect(mockLogWarn) .toHaveBeenCalledWith( "RepresentationIndex: The new index is \"bigger\" than the previous one" ); @@ -513,13 +513,13 @@ describe("Manifest Parsers utils - updateSegmentTimeline", () => { { start: 20000, duration: 5000, repeatCount: 0 }, ]); - expect(logWarnSpy).toHaveBeenCalledTimes(1); - expect(logWarnSpy) + expect(mockLogWarn).toHaveBeenCalledTimes(1); + expect(mockLogWarn) .toHaveBeenCalledWith( "RepresentationIndex: The new index is older than the previous one" ); - logWarnSpy?.mockClear(); + mockLogWarn?.mockClear(); const oldTimeline2 = [ { start: 1000, duration: 500, repeatCount: 21 }, { start: 12000, duration: 1000, repeatCount: 0 }, @@ -535,12 +535,12 @@ describe("Manifest Parsers utils - updateSegmentTimeline", () => { { start: 20000, duration: 5000, repeatCount: -1 }, ]); - expect(logWarnSpy).toHaveBeenCalledTimes(1); - expect(logWarnSpy) + expect(mockLogWarn).toHaveBeenCalledTimes(1); + expect(mockLogWarn) .toHaveBeenCalledWith( "RepresentationIndex: The new index is older than the previous one" ); - logWarnSpy?.mockClear(); + mockLogWarn?.mockClear(); }); }); diff --git a/src/parsers/texttracks/webvtt/__tests__/parse_cue_block.test.ts b/src/parsers/texttracks/webvtt/__tests__/parse_cue_block.test.ts index 2ed9298aa5..6049a3981e 100644 --- a/src/parsers/texttracks/webvtt/__tests__/parse_cue_block.test.ts +++ b/src/parsers/texttracks/webvtt/__tests__/parse_cue_block.test.ts @@ -91,7 +91,7 @@ describe("parsers - srt - parseCueBlocks", () => { }); it("should correctly parse regular cue blocks", () => { - const parseCueBlock = require("../parse_cue_block").default; + const parseCueBlock = jest.requireActual("../parse_cue_block").default; expect(parseCueBlock(cueBlock1, 0)).toEqual({ start: 31.08, end: 452.2, @@ -142,7 +142,7 @@ describe("parsers - srt - parseCueBlocks", () => { }); it("should add timeOffset in seconds", () => { - const parseCueBlock = require("../parse_cue_block").default; + const parseCueBlock = jest.requireActual("../parse_cue_block").default; expect(parseCueBlock(cueBlock1, 10.1)).toEqual({ start: 41.18, end: 462.3, @@ -206,7 +206,7 @@ describe("parsers - srt - parseCueBlocks", () => { }); it("should return null for invalid cue blocks", () => { - const parseCueBlock = require("../parse_cue_block").default; + const parseCueBlock = jest.requireActual("../parse_cue_block").default; expect(parseCueBlock(notCueBlock1, 0)).toEqual(null); expect(parseCueBlock(notCueBlock1, 5)).toEqual(null); expect(parseCueBlock(notCueBlock2, 0)).toEqual(null); @@ -227,7 +227,7 @@ describe("parsers - srt - parseCueBlocks", () => { __esModule: true as const, default: parseTimestamp, })); - const parseCueBlock = require("../parse_cue_block").default; + const parseCueBlock = jest.requireActual("../parse_cue_block").default; expect(parseCueBlock(cueBlock1, 0)).toEqual(null); expect(parseTimestamp).toHaveBeenCalledTimes(2); @@ -241,7 +241,7 @@ describe("parsers - srt - parseCueBlocks", () => { __esModule: true as const, default: parseTimestamp, })); - const parseCueBlock = require("../parse_cue_block").default; + const parseCueBlock = jest.requireActual("../parse_cue_block").default; expect(parseCueBlock(cueBlock1, 0)).toEqual(null); expect(parseTimestamp).toHaveBeenCalledTimes(2); diff --git a/src/parsers/texttracks/webvtt/html/__tests__/convert_payload_to_html.test.ts b/src/parsers/texttracks/webvtt/html/__tests__/convert_payload_to_html.test.ts index fda1c10ea9..f740ef99ac 100644 --- a/src/parsers/texttracks/webvtt/html/__tests__/convert_payload_to_html.test.ts +++ b/src/parsers/texttracks/webvtt/html/__tests__/convert_payload_to_html.test.ts @@ -54,7 +54,7 @@ describe("parsers - webvtt - convertPayloadToHTML", () => { default: spy, })); - const convertPayloadToHTML = require("../convert_payload_to_html").default; + const convertPayloadToHTML = jest.requireActual("../convert_payload_to_html").default; expect(convertPayloadToHTML("", {})).toEqual([]); expect(spyParseFromString).toHaveBeenCalledTimes(1); expect(spy).not.toHaveBeenCalled(); @@ -97,7 +97,7 @@ describe("parsers - webvtt - convertPayloadToHTML", () => { } }; - const convertPayloadToHTML = require("../convert_payload_to_html").default; + const convertPayloadToHTML = jest.requireActual("../convert_payload_to_html").default; expect(convertPayloadToHTML(innerText, {})).toEqual([bNode, span]); expect(spyParseFromString).toHaveBeenCalledTimes(1); expect(spyCreateStyledElement).toHaveBeenCalledTimes(2); diff --git a/src/parsers/texttracks/webvtt/html/__tests__/parse_style_block.test.ts b/src/parsers/texttracks/webvtt/html/__tests__/parse_style_block.test.ts index 7190872eb2..09afbc8bc0 100644 --- a/src/parsers/texttracks/webvtt/html/__tests__/parse_style_block.test.ts +++ b/src/parsers/texttracks/webvtt/html/__tests__/parse_style_block.test.ts @@ -38,7 +38,7 @@ describe("parsers - webvtt - parseStyleBlock", () => { __esModule: true as const, default: () => { return mockCreateDefaultStyleElements(); }, })); - const parseStyleBlock = require("../parse_style_block").default; + const parseStyleBlock = jest.requireActual("../parse_style_block").default; expect(parseStyleBlock(webvttStyle)).toEqual( { classes: {}, @@ -63,7 +63,7 @@ describe("parsers - webvtt - parseStyleBlock", () => { __esModule: true as const, default: () => { return mockCreateDefaultStyleElements(); }, })); - const parseStyleBlock = require("../parse_style_block").default; + const parseStyleBlock = jest.requireActual("../parse_style_block").default; expect(parseStyleBlock(webvttStyle)).toEqual( { classes: {}, @@ -88,7 +88,7 @@ describe("parsers - webvtt - parseStyleBlock", () => { __esModule: true as const, default: () => { return mockCreateDefaultStyleElements(); }, })); - const parseStyleBlock = require("../parse_style_block").default; + const parseStyleBlock = jest.requireActual("../parse_style_block").default; expect(parseStyleBlock(webvttStyle)).toEqual( { classes: { @@ -121,7 +121,7 @@ describe("parsers - webvtt - parseStyleBlock", () => { __esModule: true as const, default: () => { return mockCreateDefaultStyleElements(); }, })); - const parseStyleBlock = require("../parse_style_block").default; + const parseStyleBlock = jest.requireActual("../parse_style_block").default; expect(parseStyleBlock(webvttStyle)).toEqual( { global: "background-image: linear-gradient(to bottom, dimgray, lightgray);" + @@ -151,7 +151,7 @@ describe("parsers - webvtt - parseStyleBlock", () => { __esModule: true as const, default: () => { return mockCreateDefaultStyleElements(); }, })); - const parseStyleBlock = require("../parse_style_block").default; + const parseStyleBlock = jest.requireActual("../parse_style_block").default; expect(parseStyleBlock(webvttStyle)).toEqual( { classes: { @@ -183,7 +183,7 @@ describe("parsers - webvtt - parseStyleBlock", () => { __esModule: true as const, default: () => { return mockCreateDefaultStyleElements(); }, })); - const parseStyleBlock = require("../parse_style_block").default; + const parseStyleBlock = jest.requireActual("../parse_style_block").default; expect(parseStyleBlock(webvttStyle)).toEqual( { classes: { @@ -212,7 +212,7 @@ describe("parsers - webvtt - parseStyleBlock", () => { __esModule: true as const, default: () => { return mockCreateDefaultStyleElements(); }, })); - const parseStyleBlock = require("../parse_style_block").default; + const parseStyleBlock = jest.requireActual("../parse_style_block").default; expect(parseStyleBlock(webvttStyle)).toEqual( { classes: { @@ -247,7 +247,7 @@ describe("parsers - webvtt - parseStyleBlock", () => { __esModule: true as const, default: () => { return mockCreateDefaultStyleElements(); }, })); - const parseStyleBlock = require("../parse_style_block").default; + const parseStyleBlock = jest.requireActual("../parse_style_block").default; expect(parseStyleBlock(webvttStyle)).toEqual( { classes: { @@ -281,7 +281,7 @@ describe("parsers - webvtt - parseStyleBlock", () => { __esModule: true as const, default: () => { return mockCreateDefaultStyleElements(); }, })); - const parseStyleBlock = require("../parse_style_block").default; + const parseStyleBlock = jest.requireActual("../parse_style_block").default; expect(parseStyleBlock(webvttStyle)).toEqual( { classes: { @@ -315,7 +315,7 @@ describe("parsers - webvtt - parseStyleBlock", () => { __esModule: true as const, default: () => { return mockCreateDefaultStyleElements(); }, })); - const parseStyleBlock = require("../parse_style_block").default; + const parseStyleBlock = jest.requireActual("../parse_style_block").default; expect(parseStyleBlock(webvttStyle)).toEqual( { classes: { @@ -336,7 +336,7 @@ describe("parsers - webvtt - parseStyleBlock", () => { __esModule: true as const, default: () => { return mockCreateDefaultStyleElements(); }, })); - const parseStyleBlock = require("../parse_style_block").default; + const parseStyleBlock = jest.requireActual("../parse_style_block").default; expect(parseStyleBlock(webvttStyle)).toEqual({ classes: {}, global: "", diff --git a/src/parsers/texttracks/webvtt/html/__tests__/parse_webvtt_to_div.test.ts b/src/parsers/texttracks/webvtt/html/__tests__/parse_webvtt_to_div.test.ts index bf23ffb055..11d14979ef 100644 --- a/src/parsers/texttracks/webvtt/html/__tests__/parse_webvtt_to_div.test.ts +++ b/src/parsers/texttracks/webvtt/html/__tests__/parse_webvtt_to_div.test.ts @@ -27,13 +27,13 @@ describe("parsers - webvtt - parseWebVTT", () => { }); it("should throw if text is empty", () => { - const parseWebVTT = require("../parse_webvtt_to_div").default; + const parseWebVTT = jest.requireActual("../parse_webvtt_to_div").default; expect(() => parseWebVTT("", 0)) .toThrowError("Can't parse WebVTT: Invalid File."); }); it("should throw if file seems to be invalid", () => { - const parseWebVTT = require("../parse_webvtt_to_div").default; + const parseWebVTT = jest.requireActual("../parse_webvtt_to_div").default; expect(() => parseWebVTT("WEBWTT\n", 0)) .toThrowError("Can't parse WebVTT: Invalid File."); }); @@ -95,7 +95,7 @@ describe("parsers - webvtt - parseWebVTT", () => { getFirstLineAfterHeader: spyGetFirstLineAfterHeader, })); - const parseWebVTT = require("../parse_webvtt_to_div").default; + const parseWebVTT = jest.requireActual("../parse_webvtt_to_div").default; expect(parseWebVTT("WEBVTT\n", 0)).toEqual( [ { @@ -169,7 +169,7 @@ describe("parsers - webvtt - parseWebVTT", () => { getFirstLineAfterHeader: spyGetFirstLineAfterHeader, })); - const parseWebVTT = require("../parse_webvtt_to_div").default; + const parseWebVTT = jest.requireActual("../parse_webvtt_to_div").default; expect(parseWebVTT("WEBVTT\n", 0)).toEqual([]); expect(spyGetFirstLineAfterHeader).toHaveBeenCalledTimes(1); expect(spyGetStyleBlock).toHaveBeenCalledTimes(1); diff --git a/src/parsers/texttracks/webvtt/html/__tests__/to_html.test.ts b/src/parsers/texttracks/webvtt/html/__tests__/to_html.test.ts index 47a633c50d..d6b443a88f 100644 --- a/src/parsers/texttracks/webvtt/html/__tests__/to_html.test.ts +++ b/src/parsers/texttracks/webvtt/html/__tests__/to_html.test.ts @@ -39,7 +39,7 @@ describe("parsers - webvtt - toHTML", () => { }, })); - const toHTML = require("../to_html").default; + const toHTML = jest.requireActual("../to_html").default; const cueObject = { start: 0, end: 100, @@ -80,7 +80,7 @@ describe("parsers - webvtt - toHTML", () => { }, })); - const toHTML = require("../to_html").default; + const toHTML = jest.requireActual("../to_html").default; const cueObject = { start: 0, end: 100, @@ -123,7 +123,7 @@ describe("parsers - webvtt - toHTML", () => { }, })); - const toHTML = require("../to_html").default; + const toHTML = jest.requireActual("../to_html").default; const cueObject = { start: 0, end: 100, @@ -165,7 +165,7 @@ describe("parsers - webvtt - toHTML", () => { }, })); - const toHTML = require("../to_html").default; + const toHTML = jest.requireActual("../to_html").default; const cueObject = { start: 0, end: 100, @@ -205,7 +205,7 @@ describe("parsers - webvtt - toHTML", () => { }, })); - const toHTML = require("../to_html").default; + const toHTML = jest.requireActual("../to_html").default; const cueObject = { start: 0, end: 100, diff --git a/src/transports/smooth/isobmff/__tests__/create_boxes.test.ts b/src/transports/smooth/isobmff/__tests__/create_boxes.test.ts index 545b2efe7b..5b0a23be57 100644 --- a/src/transports/smooth/isobmff/__tests__/create_boxes.test.ts +++ b/src/transports/smooth/isobmff/__tests__/create_boxes.test.ts @@ -14,9 +14,7 @@ * limitations under the License. */ -/* eslint-disable @typescript-eslint/no-unsafe-assignment */ /* eslint-disable @typescript-eslint/no-unsafe-member-access */ -/* eslint-disable @typescript-eslint/no-var-requires */ /* eslint-disable @typescript-eslint/no-unsafe-call */ /* eslint-disable @typescript-eslint/no-unsafe-assignment */ /* eslint-disable @typescript-eslint/no-unsafe-return */ @@ -30,41 +28,41 @@ describe("Smooth - ISOBMFF - boxes creation", () => { it("should create always the same vmhd box", () => { const vmhdContent = new Uint8Array([0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0]); const box = new Uint8Array([1, 2, 3, 4]); - const createBoxSpy = jest.fn().mockImplementation(() => box); + const mockCreateBox = jest.fn().mockImplementation(() => box); jest.mock("../../../../parsers/containers/isobmff", () => { - return { createBox: createBoxSpy }; + return { createBox: mockCreateBox }; }); - const createVMHDBox = require("../create_boxes").createVMHDBox; + const createVMHDBox = jest.requireActual("../create_boxes").createVMHDBox; expect(createVMHDBox()).toBe(box); - expect(createBoxSpy).toHaveBeenCalledTimes(1); - expect(createBoxSpy).toHaveBeenCalledWith("vmhd", vmhdContent); + expect(mockCreateBox).toHaveBeenCalledTimes(1); + expect(mockCreateBox).toHaveBeenCalledWith("vmhd", vmhdContent); }); }); describe("createFreeBox", () => { it("should create box full of 0s", () => { const box = new Uint8Array([1, 2, 3, 4]); - const createBoxSpy = jest.fn().mockImplementation(() => box); + const mockCreateBox = jest.fn().mockImplementation(() => box); jest.mock("../../../../parsers/containers/isobmff", () => { - return { createBox: createBoxSpy }; + return { createBox: mockCreateBox }; }); - const createFreeBox = require("../create_boxes").createFreeBox; + const createFreeBox = jest.requireActual("../create_boxes").createFreeBox; expect(createFreeBox(8)).toBe(box); - expect(createBoxSpy).toHaveBeenCalledTimes(1); - expect(createBoxSpy).toHaveBeenCalledWith("free", new Uint8Array([])); + expect(mockCreateBox).toHaveBeenCalledTimes(1); + expect(mockCreateBox).toHaveBeenCalledWith("free", new Uint8Array([])); expect(createFreeBox(15)).toBe(box); - expect(createBoxSpy).toHaveBeenCalledTimes(2); - expect(createBoxSpy).toHaveBeenCalledWith("free", new Uint8Array(7)); + expect(mockCreateBox).toHaveBeenCalledTimes(2); + expect(mockCreateBox).toHaveBeenCalledWith("free", new Uint8Array(7)); }); it("should throw when given a length below 8", () => { const box = new Uint8Array([1, 2, 3, 4]); - const createBoxSpy = jest.fn().mockImplementation(() => box); + const mockCreateBox = jest.fn().mockImplementation(() => box); jest.mock("../../../../parsers/containers/isobmff", () => { - return { createBox: createBoxSpy }; + return { createBox: mockCreateBox }; }); - const createFreeBox = require("../create_boxes").createFreeBox; + const createFreeBox = jest.requireActual("../create_boxes").createFreeBox; expect(() => createFreeBox(7)).toThrow(); expect(() => createFreeBox(6)).toThrow(); expect(() => createFreeBox(5)).toThrow(); @@ -73,44 +71,44 @@ describe("Smooth - ISOBMFF - boxes creation", () => { expect(() => createFreeBox(2)).toThrow(); expect(() => createFreeBox(1)).toThrow(); expect(() => createFreeBox(0)).toThrow(); - expect(createBoxSpy).not.toHaveBeenCalled(); + expect(mockCreateBox).not.toHaveBeenCalled(); }); it("should throw when given a negative length", () => { const box = new Uint8Array([1, 2, 3, 4]); - const createBoxSpy = jest.fn().mockImplementation(() => box); + const mockCreateBox = jest.fn().mockImplementation(() => box); jest.mock("../../../../parsers/containers/isobmff", () => { - return { createBox: createBoxSpy }; + return { createBox: mockCreateBox }; }); - const createFreeBox = require("../create_boxes").createFreeBox; + const createFreeBox = jest.requireActual("../create_boxes").createFreeBox; expect(() => createFreeBox(-1)).toThrow(); - expect(createBoxSpy).not.toHaveBeenCalled(); + expect(mockCreateBox).not.toHaveBeenCalled(); }); it("should throw when given a non-finite length", () => { const box = new Uint8Array([1, 2, 3, 4]); - const createBoxSpy = jest.fn().mockImplementation(() => box); + const mockCreateBox = jest.fn().mockImplementation(() => box); jest.mock("../../../../parsers/containers/isobmff", () => { - return { createBox: createBoxSpy }; + return { createBox: mockCreateBox }; }); - const createFreeBox = require("../create_boxes").createFreeBox; + const createFreeBox = jest.requireActual("../create_boxes").createFreeBox; expect(() => createFreeBox(-Infinity)).toThrow(); expect(() => createFreeBox(+Infinity)).toThrow(); - expect(createBoxSpy).not.toHaveBeenCalled(); + expect(mockCreateBox).not.toHaveBeenCalled(); }); }); describe("createHDLRBox", () => { it("should always create the same audio box", () => { const box = new Uint8Array([1, 2, 3, 4]); - const createBoxSpy = jest.fn().mockImplementation(() => box); + const mockCreateBox = jest.fn().mockImplementation(() => box); jest.mock("../../../../parsers/containers/isobmff", () => { - return { createBox: createBoxSpy }; + return { createBox: mockCreateBox }; }); - const createHDLRBox = require("../create_boxes").createHDLRBox; + const createHDLRBox = jest.requireActual("../create_boxes").createHDLRBox; expect(createHDLRBox("audio")).toBe(box); - expect(createBoxSpy).toHaveBeenCalledTimes(1); - expect(createBoxSpy).toHaveBeenCalledWith("hdlr", new Uint8Array([ + expect(mockCreateBox).toHaveBeenCalledTimes(1); + expect(mockCreateBox).toHaveBeenCalledWith("hdlr", new Uint8Array([ 0, 0, 0, 0, 0, 0, 0, 0, 115, 111, 117, 110, // "soun" 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -121,14 +119,14 @@ describe("Smooth - ISOBMFF - boxes creation", () => { it("should always create the same video box", () => { const box = new Uint8Array([1, 2, 3, 4]); - const createBoxSpy = jest.fn().mockImplementation(() => box); + const mockCreateBox = jest.fn().mockImplementation(() => box); jest.mock("../../../../parsers/containers/isobmff", () => { - return { createBox: createBoxSpy }; + return { createBox: mockCreateBox }; }); - const createHDLRBox = require("../create_boxes").createHDLRBox; + const createHDLRBox = jest.requireActual("../create_boxes").createHDLRBox; expect(createHDLRBox("video")).toBe(box); - expect(createBoxSpy).toHaveBeenCalledTimes(1); - expect(createBoxSpy).toHaveBeenCalledWith("hdlr", new Uint8Array([ + expect(mockCreateBox).toHaveBeenCalledTimes(1); + expect(mockCreateBox).toHaveBeenCalledWith("hdlr", new Uint8Array([ 0, 0, 0, 0, 0, 0, 0, 0, 118, 105, 100, 101, // "vide" 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -139,14 +137,14 @@ describe("Smooth - ISOBMFF - boxes creation", () => { it("should always create the same hint box", () => { const box = new Uint8Array([1, 2, 3, 4]); - const createBoxSpy = jest.fn().mockImplementation(() => box); + const mockCreateBox = jest.fn().mockImplementation(() => box); jest.mock("../../../../parsers/containers/isobmff", () => { - return { createBox: createBoxSpy }; + return { createBox: mockCreateBox }; }); - const createHDLRBox = require("../create_boxes").createHDLRBox; + const createHDLRBox = jest.requireActual("../create_boxes").createHDLRBox; expect(createHDLRBox("hint")).toBe(box); - expect(createBoxSpy).toHaveBeenCalledTimes(1); - expect(createBoxSpy).toHaveBeenCalledWith("hdlr", new Uint8Array([ + expect(mockCreateBox).toHaveBeenCalledTimes(1); + expect(mockCreateBox).toHaveBeenCalledWith("hdlr", new Uint8Array([ 0, 0, 0, 0, 0, 0, 0, 0, 104, 105, 110, 116, // "soun" 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -160,38 +158,38 @@ describe("Smooth - ISOBMFF - boxes creation", () => { const translatedTimeScale = new Uint8Array([4, 3, 2, 1]); const concatenated = new Uint8Array([9, 10, 11, 12]); const box = new Uint8Array([1, 2, 3, 4]); - const itobe4Spy = jest.fn().mockImplementation(() => translatedTimeScale); - const concatSpy = jest.fn().mockImplementation(() => concatenated); - const createBoxSpy = jest.fn().mockImplementation(() => box); + const mockItobe4 = jest.fn().mockImplementation(() => translatedTimeScale); + const mockConcat = jest.fn().mockImplementation(() => concatenated); + const mockCreateBox = jest.fn().mockImplementation(() => box); jest.mock("../../../../utils/byte_parsing", () => { - return { itobe4: itobe4Spy, concat: concatSpy }; + return { itobe4: mockItobe4, concat: mockConcat }; }); jest.mock("../../../../parsers/containers/isobmff", () => { - return { createBox: createBoxSpy }; + return { createBox: mockCreateBox }; }); - const createMDHDBox = require("../create_boxes").createMDHDBox; + const createMDHDBox = jest.requireActual("../create_boxes").createMDHDBox; expect(createMDHDBox(8)).toBe(box); - expect(createBoxSpy).toHaveBeenCalledTimes(1); - expect(createBoxSpy).toHaveBeenCalledWith("mdhd", concatenated); + expect(mockCreateBox).toHaveBeenCalledTimes(1); + expect(mockCreateBox).toHaveBeenCalledWith("mdhd", concatenated); - expect(itobe4Spy).toHaveBeenCalledTimes(1); - expect(itobe4Spy).toHaveBeenCalledWith(8); + expect(mockItobe4).toHaveBeenCalledTimes(1); + expect(mockItobe4).toHaveBeenCalledWith(8); - expect(concatSpy).toHaveBeenCalledTimes(1); - expect(concatSpy).toHaveBeenCalledWith(12, translatedTimeScale, 8); + expect(mockConcat).toHaveBeenCalledTimes(1); + expect(mockConcat).toHaveBeenCalledWith(12, translatedTimeScale, 8); expect(createMDHDBox(99)).toBe(box); - expect(createBoxSpy).toHaveBeenCalledTimes(2); - expect(createBoxSpy).toHaveBeenCalledWith("mdhd", concatenated); + expect(mockCreateBox).toHaveBeenCalledTimes(2); + expect(mockCreateBox).toHaveBeenCalledWith("mdhd", concatenated); - expect(itobe4Spy).toHaveBeenCalledTimes(2); - expect(itobe4Spy).toHaveBeenCalledWith(99); + expect(mockItobe4).toHaveBeenCalledTimes(2); + expect(mockItobe4).toHaveBeenCalledWith(99); - expect(concatSpy).toHaveBeenCalledTimes(2); - expect(concatSpy).toHaveBeenCalledWith(12, translatedTimeScale, 8); + expect(mockConcat).toHaveBeenCalledTimes(2); + expect(mockConcat).toHaveBeenCalledWith(12, translatedTimeScale, 8); }); }); @@ -199,14 +197,14 @@ describe("Smooth - ISOBMFF - boxes creation", () => { it("should create always the same smhd box", () => { const smhdContent = new Uint8Array(8); const box = new Uint8Array([1, 2, 3, 4]); - const createBoxSpy = jest.fn().mockImplementation(() => box); + const mockCreateBox = jest.fn().mockImplementation(() => box); jest.mock("../../../../parsers/containers/isobmff", () => { - return { createBox: createBoxSpy }; + return { createBox: mockCreateBox }; }); - const createSMHDBox = require("../create_boxes").createSMHDBox; + const createSMHDBox = jest.requireActual("../create_boxes").createSMHDBox; expect(createSMHDBox()).toBe(box); - expect(createBoxSpy).toHaveBeenCalledTimes(1); - expect(createBoxSpy).toHaveBeenCalledWith("smhd", smhdContent); + expect(mockCreateBox).toHaveBeenCalledTimes(1); + expect(mockCreateBox).toHaveBeenCalledWith("smhd", smhdContent); }); }); @@ -214,20 +212,20 @@ describe("Smooth - ISOBMFF - boxes creation", () => { it("should just integrate the data format", () => { const dataFormatToBytes = new Uint8Array([4, 3, 2, 1]); const box = new Uint8Array([1, 2, 3, 4]); - const strToUtf8Spy = jest.fn().mockImplementation(() => dataFormatToBytes); - const createBoxSpy = jest.fn().mockImplementation(() => box); + const mockStrToUtf8 = jest.fn().mockImplementation(() => dataFormatToBytes); + const mockCreateBox = jest.fn().mockImplementation(() => box); jest.mock("../../../../utils/string_parsing", () => { - return { strToUtf8: strToUtf8Spy }; + return { strToUtf8: mockStrToUtf8 }; }); jest.mock("../../../../parsers/containers/isobmff", () => { - return { createBox: createBoxSpy }; + return { createBox: mockCreateBox }; }); - const createFRMABox = require("../create_boxes").createFRMABox; + const createFRMABox = jest.requireActual("../create_boxes").createFRMABox; expect(createFRMABox("foo")).toBe(box); - expect(createBoxSpy).toHaveBeenCalledTimes(1); - expect(createBoxSpy).toHaveBeenCalledWith("frma", dataFormatToBytes); - expect(strToUtf8Spy).toHaveBeenCalledTimes(1); - expect(strToUtf8Spy).toHaveBeenCalledWith("foo"); + expect(mockCreateBox).toHaveBeenCalledTimes(1); + expect(mockCreateBox).toHaveBeenCalledWith("frma", dataFormatToBytes); + expect(mockStrToUtf8).toHaveBeenCalledTimes(1); + expect(mockStrToUtf8).toHaveBeenCalledWith("foo"); }); }); }); diff --git a/src/transports/utils/__tests__/check_isobmff_integrity.test.ts b/src/transports/utils/__tests__/check_isobmff_integrity.test.ts index 163c0f6aaa..07723122c4 100644 --- a/src/transports/utils/__tests__/check_isobmff_integrity.test.ts +++ b/src/transports/utils/__tests__/check_isobmff_integrity.test.ts @@ -27,35 +27,39 @@ describe("transports utils - checkISOBMFFIntegrity", () => { }); it("should check just ftyp and and moov integrity for init segments", () => { - const findCompleteBoxSpy = jest.fn(() => 45); + const mockFindCompleteBox = jest.fn(() => 45); jest.mock("../find_complete_box", () => ({ __esModule: true as const, - default: findCompleteBoxSpy })); - const checkISOBMFFIntegrity = require("../check_isobmff_integrity").default; + default: mockFindCompleteBox })); + const checkISOBMFFIntegrity = + jest.requireActual("../check_isobmff_integrity").default; const myUint8Array = new Uint8Array([0, 1, 2]); expect(() => checkISOBMFFIntegrity(myUint8Array, true)).not.toThrow(); - expect(findCompleteBoxSpy).toHaveBeenCalledTimes(2); - expect(findCompleteBoxSpy).toHaveBeenCalledWith(myUint8Array, 0x66747970); - expect(findCompleteBoxSpy).toHaveBeenCalledWith(myUint8Array, 0x6D6F6F76); + expect(mockFindCompleteBox).toHaveBeenCalledTimes(2); + expect(mockFindCompleteBox).toHaveBeenCalledWith(myUint8Array, 0x66747970); + expect(mockFindCompleteBox).toHaveBeenCalledWith(myUint8Array, 0x6D6F6F76); }); it("should check just moof and and mdat integrity for regular segments", () => { - const findCompleteBoxSpy = jest.fn(() => 45); + const mockFindCompleteBox = jest.fn(() => 45); jest.mock("../find_complete_box", () => ({ __esModule: true as const, - default: findCompleteBoxSpy })); - const checkISOBMFFIntegrity = require("../check_isobmff_integrity").default; + default: mockFindCompleteBox })); + const checkISOBMFFIntegrity = + jest.requireActual("../check_isobmff_integrity").default; const myUint8Array = new Uint8Array([0, 1, 2]); expect(() => checkISOBMFFIntegrity(myUint8Array, false)).not.toThrow(); - expect(findCompleteBoxSpy).toHaveBeenCalledTimes(2); - expect(findCompleteBoxSpy).toHaveBeenCalledWith(myUint8Array, 0x6D6F6F66); - expect(findCompleteBoxSpy).toHaveBeenCalledWith(myUint8Array, 0x6D646174); + expect(mockFindCompleteBox).toHaveBeenCalledTimes(2); + expect(mockFindCompleteBox).toHaveBeenCalledWith(myUint8Array, 0x6D6F6F66); + expect(mockFindCompleteBox).toHaveBeenCalledWith(myUint8Array, 0x6D646174); }); it("should throw an other error if an init segment is missing a complete ftyp", () => { - const findCompleteBoxSpy = jest.fn((_, box) => box === 0x66747970 ? -1 : 45); + const mockFindCompleteBox = jest.fn((_, box) => box === 0x66747970 ? -1 : 45); jest.mock("../find_complete_box", () => ({ __esModule: true as const, - default: findCompleteBoxSpy })); - const OtherError = require("../../../errors").OtherError; - const checkISOBMFFIntegrity = require("../check_isobmff_integrity").default; + default: mockFindCompleteBox })); + const OtherError = + jest.requireActual("../../../errors").OtherError; + const checkISOBMFFIntegrity = + jest.requireActual("../check_isobmff_integrity").default; const myUint8Array = new Uint8Array([0, 1, 2]); let error : unknown | null = null; try { @@ -72,11 +76,13 @@ describe("transports utils - checkISOBMFFIntegrity", () => { }); it("should throw an other error if an init segment is missing a complete moov", () => { - const findCompleteBoxSpy = jest.fn((_, box) => box === 0x6D6F6F76 ? -1 : 45); + const mockFindCompleteBox = jest.fn((_, box) => box === 0x6D6F6F76 ? -1 : 45); jest.mock("../find_complete_box", () => ({ __esModule: true as const, - default: findCompleteBoxSpy })); - const OtherError = require("../../../errors").OtherError; - const checkISOBMFFIntegrity = require("../check_isobmff_integrity").default; + default: mockFindCompleteBox })); + const OtherError = + jest.requireActual("../../../errors").OtherError; + const checkISOBMFFIntegrity = + jest.requireActual("../check_isobmff_integrity").default; const myUint8Array = new Uint8Array([0, 1, 2]); let error : unknown | null = null; try { @@ -95,11 +101,12 @@ describe("transports utils - checkISOBMFFIntegrity", () => { /* eslint-disable max-len */ it("should throw an other error if a regular segment is missing a complete moof", () => { /* eslint-enable max-len */ - const findCompleteBoxSpy = jest.fn((_, box) => box === 0x6D6F6F66 ? -1 : 45); + const mockFindCompleteBox = jest.fn((_, box) => box === 0x6D6F6F66 ? -1 : 45); jest.mock("../find_complete_box", () => ({ __esModule: true as const, - default: findCompleteBoxSpy })); - const OtherError = require("../../../errors").OtherError; - const checkISOBMFFIntegrity = require("../check_isobmff_integrity").default; + default: mockFindCompleteBox })); + const OtherError = jest.requireActual("../../../errors").OtherError; + const checkISOBMFFIntegrity = + jest.requireActual("../check_isobmff_integrity").default; const myUint8Array = new Uint8Array([0, 1, 2]); let error : unknown | null = null; try { @@ -118,11 +125,12 @@ describe("transports utils - checkISOBMFFIntegrity", () => { /* eslint-disable max-len */ it("should throw an other error if a regular segment is missing a complete mdat", () => { /* eslint-enable max-len */ - const findCompleteBoxSpy = jest.fn((_, box) => box === 0x6D646174 ? -1 : 45); + const mockFindCompleteBox = jest.fn((_, box) => box === 0x6D646174 ? -1 : 45); jest.mock("../find_complete_box", () => ({ __esModule: true as const, - default: findCompleteBoxSpy })); - const OtherError = require("../../../errors").OtherError; - const checkISOBMFFIntegrity = require("../check_isobmff_integrity").default; + default: mockFindCompleteBox })); + const OtherError = jest.requireActual("../../../errors").OtherError; + const checkISOBMFFIntegrity = + jest.requireActual("../check_isobmff_integrity").default; const myUint8Array = new Uint8Array([0, 1, 2]); let error : unknown | null = null; try { diff --git a/src/utils/__tests__/base64.test.ts b/src/utils/__tests__/base64.test.ts index 268226e430..cc37d2a67c 100644 --- a/src/utils/__tests__/base64.test.ts +++ b/src/utils/__tests__/base64.test.ts @@ -52,13 +52,13 @@ describe("base64ToBytes", () => { }); it("should return an empty Uint8Array for an empty string", () => { - const base64ToBytes = require("../base64").base64ToBytes; + const base64ToBytes = jest.requireActual("../base64").base64ToBytes; expect(base64ToBytes("")).toEqual(new Uint8Array([])); expect(logWarn).not.toHaveBeenCalled(); }); it("should convert a base64 to an Uint8Array", () => { - const base64ToBytes = require("../base64").base64ToBytes; + const base64ToBytes = jest.requireActual("../base64").base64ToBytes; expect(base64ToBytes("woDCge+/vg==")) .toEqual(new Uint8Array([194, 128, 194, 129, 239, 191, 190])); expect(base64ToBytes("dG90b/CfjIM=")) @@ -71,7 +71,7 @@ describe("base64ToBytes", () => { .toEqual(new Uint8Array([ 116, 111, 116, 111 ])); expect(logWarn).not.toHaveBeenCalled(); - const bytesToBase64 = require("../base64").bytesToBase64; + const bytesToBase64 = jest.requireActual("../base64").bytesToBase64; for (let i = 0; i < CHARS.length; i++) { const char1 = CHARS[i]; @@ -91,7 +91,7 @@ describe("base64ToBytes", () => { }); it("should convert a non-padded base64 to an Uint8Array", () => { - const base64ToBytes = require("../base64").base64ToBytes; + const base64ToBytes = jest.requireActual("../base64").base64ToBytes; expect(base64ToBytes("woDCge+/vg")) .toEqual(new Uint8Array([194, 128, 194, 129, 239, 191, 190])); expect(logWarn).toHaveBeenCalledTimes(1); @@ -105,7 +105,7 @@ describe("base64ToBytes", () => { }); it("should fail on invalid data", () => { - const base64ToBytes = require("../base64").base64ToBytes; + const base64ToBytes = jest.requireActual("../base64").base64ToBytes; expect(() => base64ToBytes("woD=Cge+/vg=")) .toThrowError("Unable to parse base64 string."); expect(() => base64ToBytes("woDCg{+/vg==")) @@ -125,13 +125,13 @@ describe("bytesToBase64", () => { }); it("should return an empty string for an empty Uint8Array", () => { - const bytesToBase64 = require("../base64").bytesToBase64; + const bytesToBase64 = jest.requireActual("../base64").bytesToBase64; expect(bytesToBase64(new Uint8Array([]))).toEqual(""); expect(logWarn).not.toHaveBeenCalled(); }); it("should convert a base64 to an Uint8Array", () => { - const bytesToBase64 = require("../base64").bytesToBase64; + const bytesToBase64 = jest.requireActual("../base64").bytesToBase64; expect(bytesToBase64(new Uint8Array([194, 128, 194, 129, 239, 191, 190]))) .toEqual("woDCge+/vg=="); expect(bytesToBase64(new Uint8Array([116, 111, 116, 111, 240, 159, 140, 131]))) diff --git a/src/utils/__tests__/flat_map.test.ts b/src/utils/__tests__/flat_map.test.ts index a6f721248d..e42b5e449b 100644 --- a/src/utils/__tests__/flat_map.test.ts +++ b/src/utils/__tests__/flat_map.test.ts @@ -54,7 +54,7 @@ describe("utils - starts-with", () => { proto.flatMap = initialFlatMap; // TODO find what bother typescript here instead of adding "as any" /* eslint-disable-next-line @typescript-eslint/no-explicit-any */ - const flatMapSpy = jest.spyOn(proto as any, "flatMap"); + const mockFlatMap = jest.spyOn(proto as any, "flatMap"); const func1 = (x : number) : number[] => [x, x + 1, x - 1]; const func2 = (x : number) : string => String(x) + "a"; expect(flatMap([1, 2, 3], func1)) @@ -62,10 +62,10 @@ describe("utils - starts-with", () => { expect(flatMap([1, 2, 3], func2)) .toEqual([ "1a", "2a", "3a" ]); - expect(flatMapSpy).toHaveBeenCalledTimes(2); - expect(flatMapSpy).toHaveBeenNthCalledWith(1, func1); - expect(flatMapSpy).toHaveBeenNthCalledWith(2, func2); - flatMapSpy.mockRestore(); + expect(mockFlatMap).toHaveBeenCalledTimes(2); + expect(mockFlatMap).toHaveBeenNthCalledWith(1, func1); + expect(mockFlatMap).toHaveBeenNthCalledWith(2, func2); + mockFlatMap.mockRestore(); }); } }); diff --git a/src/utils/__tests__/logger.test.ts b/src/utils/__tests__/logger.test.ts index a832ff97c8..72f17e5ff8 100644 --- a/src/utils/__tests__/logger.test.ts +++ b/src/utils/__tests__/logger.test.ts @@ -87,35 +87,35 @@ describe("utils - Logger", () => { }); it("should never call console.* functions if logger level is set to \"NONE\"", () => { - const logSpy = jest.spyOn(console, "log").mockImplementation(jest.fn()); - const errorSpy = jest.spyOn(console, "error").mockImplementation(jest.fn()); - const warnSpy = jest.spyOn(console, "warn").mockImplementation(jest.fn()); - const infoSpy = jest.spyOn(console, "info").mockImplementation(jest.fn()); - const debugSpy = jest.spyOn(console, "debug").mockImplementation(jest.fn()); + const mockLog = jest.spyOn(console, "log").mockImplementation(jest.fn()); + const mockError = jest.spyOn(console, "error").mockImplementation(jest.fn()); + const mockWarn = jest.spyOn(console, "warn").mockImplementation(jest.fn()); + const mockInfo = jest.spyOn(console, "info").mockImplementation(jest.fn()); + const mockDebug = jest.spyOn(console, "debug").mockImplementation(jest.fn()); const logger = new Logger(); logger.error("test"); logger.warn("test"); logger.info("test"); logger.debug("test"); - expect(logSpy).not.toHaveBeenCalled(); - expect(errorSpy).not.toHaveBeenCalled(); - expect(warnSpy).not.toHaveBeenCalled(); - expect(infoSpy).not.toHaveBeenCalled(); - expect(debugSpy).not.toHaveBeenCalled(); - logSpy.mockRestore(); - errorSpy.mockRestore(); - warnSpy.mockRestore(); - infoSpy.mockRestore(); - debugSpy.mockRestore(); + expect(mockLog).not.toHaveBeenCalled(); + expect(mockError).not.toHaveBeenCalled(); + expect(mockWarn).not.toHaveBeenCalled(); + expect(mockInfo).not.toHaveBeenCalled(); + expect(mockDebug).not.toHaveBeenCalled(); + mockLog.mockRestore(); + mockError.mockRestore(); + mockWarn.mockRestore(); + mockInfo.mockRestore(); + mockDebug.mockRestore(); }); it("should only call console.error if logger level is set to \"ERROR\"", () => { - const logSpy = jest.spyOn(console, "log").mockImplementation(jest.fn()); - const errorSpy = jest.spyOn(console, "error").mockImplementation(jest.fn()); - const warnSpy = jest.spyOn(console, "warn").mockImplementation(jest.fn()); - const infoSpy = jest.spyOn(console, "info").mockImplementation(jest.fn()); - const debugSpy = jest.spyOn(console, "debug").mockImplementation(jest.fn()); + const mockLog = jest.spyOn(console, "log").mockImplementation(jest.fn()); + const mockError = jest.spyOn(console, "error").mockImplementation(jest.fn()); + const mockWarn = jest.spyOn(console, "warn").mockImplementation(jest.fn()); + const mockInfo = jest.spyOn(console, "info").mockImplementation(jest.fn()); + const mockDebug = jest.spyOn(console, "debug").mockImplementation(jest.fn()); const logger = new Logger(); logger.setLevel("ERROR"); @@ -123,24 +123,24 @@ describe("utils - Logger", () => { logger.warn("test"); logger.info("test"); logger.debug("test"); - expect(logSpy).not.toHaveBeenCalled(); - expect(errorSpy).toHaveBeenCalled(); - expect(warnSpy).not.toHaveBeenCalled(); - expect(infoSpy).not.toHaveBeenCalled(); - expect(debugSpy).not.toHaveBeenCalled(); - logSpy.mockRestore(); - errorSpy.mockRestore(); - warnSpy.mockRestore(); - infoSpy.mockRestore(); - debugSpy.mockRestore(); + expect(mockLog).not.toHaveBeenCalled(); + expect(mockError).toHaveBeenCalled(); + expect(mockWarn).not.toHaveBeenCalled(); + expect(mockInfo).not.toHaveBeenCalled(); + expect(mockDebug).not.toHaveBeenCalled(); + mockLog.mockRestore(); + mockError.mockRestore(); + mockWarn.mockRestore(); + mockInfo.mockRestore(); + mockDebug.mockRestore(); }); it("should call console.{error,warn} if logger level is set to \"WARNING\"", () => { - const logSpy = jest.spyOn(console, "log").mockImplementation(jest.fn()); - const errorSpy = jest.spyOn(console, "error").mockImplementation(jest.fn()); - const warnSpy = jest.spyOn(console, "warn").mockImplementation(jest.fn()); - const infoSpy = jest.spyOn(console, "info").mockImplementation(jest.fn()); - const debugSpy = jest.spyOn(console, "debug").mockImplementation(jest.fn()); + const mockLog = jest.spyOn(console, "log").mockImplementation(jest.fn()); + const mockError = jest.spyOn(console, "error").mockImplementation(jest.fn()); + const mockWarn = jest.spyOn(console, "warn").mockImplementation(jest.fn()); + const mockInfo = jest.spyOn(console, "info").mockImplementation(jest.fn()); + const mockDebug = jest.spyOn(console, "debug").mockImplementation(jest.fn()); const logger = new Logger(); logger.setLevel("WARNING"); @@ -148,24 +148,24 @@ describe("utils - Logger", () => { logger.warn("test"); logger.info("test"); logger.debug("test"); - expect(logSpy).not.toHaveBeenCalled(); - expect(errorSpy).toHaveBeenCalled(); - expect(warnSpy).toHaveBeenCalled(); - expect(infoSpy).not.toHaveBeenCalled(); - expect(debugSpy).not.toHaveBeenCalled(); - logSpy.mockRestore(); - errorSpy.mockRestore(); - warnSpy.mockRestore(); - infoSpy.mockRestore(); - debugSpy.mockRestore(); + expect(mockLog).not.toHaveBeenCalled(); + expect(mockError).toHaveBeenCalled(); + expect(mockWarn).toHaveBeenCalled(); + expect(mockInfo).not.toHaveBeenCalled(); + expect(mockDebug).not.toHaveBeenCalled(); + mockLog.mockRestore(); + mockError.mockRestore(); + mockWarn.mockRestore(); + mockInfo.mockRestore(); + mockDebug.mockRestore(); }); it("should call console.{error,warn,info} if logger level is set to \"INFO\"", () => { - const logSpy = jest.spyOn(console, "log").mockImplementation(jest.fn()); - const errorSpy = jest.spyOn(console, "error").mockImplementation(jest.fn()); - const warnSpy = jest.spyOn(console, "warn").mockImplementation(jest.fn()); - const infoSpy = jest.spyOn(console, "info").mockImplementation(jest.fn()); - const debugSpy = jest.spyOn(console, "debug").mockImplementation(jest.fn()); + const mockLog = jest.spyOn(console, "log").mockImplementation(jest.fn()); + const mockError = jest.spyOn(console, "error").mockImplementation(jest.fn()); + const mockWarn = jest.spyOn(console, "warn").mockImplementation(jest.fn()); + const mockInfo = jest.spyOn(console, "info").mockImplementation(jest.fn()); + const mockDebug = jest.spyOn(console, "debug").mockImplementation(jest.fn()); const logger = new Logger(); logger.setLevel("INFO"); @@ -173,26 +173,26 @@ describe("utils - Logger", () => { logger.warn("test"); logger.info("test"); logger.debug("test"); - expect(logSpy).not.toHaveBeenCalled(); - expect(errorSpy).toHaveBeenCalled(); - expect(warnSpy).toHaveBeenCalled(); - expect(infoSpy).toHaveBeenCalled(); - expect(debugSpy).not.toHaveBeenCalled(); - logSpy.mockRestore(); - errorSpy.mockRestore(); - warnSpy.mockRestore(); - infoSpy.mockRestore(); - debugSpy.mockRestore(); + expect(mockLog).not.toHaveBeenCalled(); + expect(mockError).toHaveBeenCalled(); + expect(mockWarn).toHaveBeenCalled(); + expect(mockInfo).toHaveBeenCalled(); + expect(mockDebug).not.toHaveBeenCalled(); + mockLog.mockRestore(); + mockError.mockRestore(); + mockWarn.mockRestore(); + mockInfo.mockRestore(); + mockDebug.mockRestore(); }); /* eslint-disable max-len */ it("should call console.{error,warn,info, log} if logger level is set to \"DEBUG\"", () => { /* eslint-enable max-len */ - const logSpy = jest.spyOn(console, "log").mockImplementation(jest.fn()); - const errorSpy = jest.spyOn(console, "error").mockImplementation(jest.fn()); - const warnSpy = jest.spyOn(console, "warn").mockImplementation(jest.fn()); - const infoSpy = jest.spyOn(console, "info").mockImplementation(jest.fn()); - const debugSpy = jest.spyOn(console, "debug").mockImplementation(jest.fn()); + const mockLog = jest.spyOn(console, "log").mockImplementation(jest.fn()); + const mockError = jest.spyOn(console, "error").mockImplementation(jest.fn()); + const mockWarn = jest.spyOn(console, "warn").mockImplementation(jest.fn()); + const mockInfo = jest.spyOn(console, "info").mockImplementation(jest.fn()); + const mockDebug = jest.spyOn(console, "debug").mockImplementation(jest.fn()); const logger = new Logger(); logger.setLevel("DEBUG"); @@ -200,15 +200,15 @@ describe("utils - Logger", () => { logger.warn("test"); logger.info("test"); logger.debug("test"); - expect(logSpy).toHaveBeenCalled(); - expect(errorSpy).toHaveBeenCalled(); - expect(warnSpy).toHaveBeenCalled(); - expect(infoSpy).toHaveBeenCalled(); - expect(debugSpy).not.toHaveBeenCalled(); - logSpy.mockRestore(); - errorSpy.mockRestore(); - warnSpy.mockRestore(); - infoSpy.mockRestore(); - debugSpy.mockRestore(); + expect(mockLog).toHaveBeenCalled(); + expect(mockError).toHaveBeenCalled(); + expect(mockWarn).toHaveBeenCalled(); + expect(mockInfo).toHaveBeenCalled(); + expect(mockDebug).not.toHaveBeenCalled(); + mockLog.mockRestore(); + mockError.mockRestore(); + mockWarn.mockRestore(); + mockInfo.mockRestore(); + mockDebug.mockRestore(); }); }); diff --git a/src/utils/__tests__/starts_with.test.ts b/src/utils/__tests__/starts_with.test.ts index da0c82c82b..dc035852ac 100644 --- a/src/utils/__tests__/starts_with.test.ts +++ b/src/utils/__tests__/starts_with.test.ts @@ -50,16 +50,16 @@ describe("utils - starts-with", () => { if (typeof initialStartsWith === "function") { it("should call the original startsWith function if available", () => { String.prototype.startsWith = initialStartsWith; - const startsWithSpy = jest.spyOn(String.prototype, "startsWith"); + const mockStartsWith = jest.spyOn(String.prototype, "startsWith"); const str = "Street Halo"; expect(startsWith(str, "Stree")).toBe(true); expect(startsWith(str, "Halo")).toBe(false); expect(startsWith(str, "Stree", 1)).toBe(false); - expect(startsWithSpy).toHaveBeenCalledTimes(3); - expect(startsWithSpy).toHaveBeenNthCalledWith(1, "Stree", undefined); - expect(startsWithSpy).toHaveBeenNthCalledWith(2, "Halo", undefined); - expect(startsWithSpy).toHaveBeenNthCalledWith(3, "Stree", 1); + expect(mockStartsWith).toHaveBeenCalledTimes(3); + expect(mockStartsWith).toHaveBeenNthCalledWith(1, "Stree", undefined); + expect(mockStartsWith).toHaveBeenNthCalledWith(2, "Halo", undefined); + expect(mockStartsWith).toHaveBeenNthCalledWith(3, "Stree", 1); }); } });