diff --git a/.stylelintrc.json b/.stylelintrc.json index 10bcc404..0f100bc9 100644 --- a/.stylelintrc.json +++ b/.stylelintrc.json @@ -9,7 +9,7 @@ "stylelint-declaration-block-no-ignored-properties", "stylelint-high-performance-animation", "stylelint-group-selectors", - "./plugins/wholePixel.js" + "./dev/wholePixel.js" ], "rules": { "number-leading-zero": "always", diff --git a/dev/createPRComment.js b/dev/createPRComment.js new file mode 100644 index 00000000..daa3bed4 --- /dev/null +++ b/dev/createPRComment.js @@ -0,0 +1,10 @@ +/* eslint-env node */ + +module.exports = async ({ github, context, core, body }) => { + await github.rest.issues.createComment({ + issue_number: context.issue.number, + owner: context.repo.owner, + repo: context.repo.repo, + body, + }); +}; diff --git a/dev/createStatoscopeComment.js b/dev/createStatoscopeComment.js new file mode 100644 index 00000000..feba625a --- /dev/null +++ b/dev/createStatoscopeComment.js @@ -0,0 +1,13 @@ +/* eslint-env node */ + +const fs = require('fs'); +const createPRComment = require('./createPRComment'); +const template = require('../.github/workflows/statoscope-comment.js'); + +module.exports = async ({ github, context, core }) => { + const data = JSON.parse(fs.readFileSync('result.json', 'utf8')); + data.prNumber = context.issue.number; + const body = template(data); + + await createPRComment({ github, context, core, body }); +}; diff --git a/dev/webpackContextExtension.js b/dev/webpackContextExtension.js new file mode 100644 index 00000000..44d97405 --- /dev/null +++ b/dev/webpackContextExtension.js @@ -0,0 +1,19 @@ +/* eslint-env node */ +// Comes from: https://raw.githubusercontent.com/statoscope/statoscope.tech/main/custom-ext.js + +module.exports = class WebpackContextExtension { + constructor() { + this.context = ''; + } + + handleCompiler(compiler) { + this.context = compiler.context; + } + + getExtension() { + return { + descriptor: { name: 'custom-webpack-extension-context', version: '1.0.0' }, + payload: { context: this.context }, + }; + } +}; diff --git a/plugins/wholePixel.js b/dev/wholePixel.js similarity index 100% rename from plugins/wholePixel.js rename to dev/wholePixel.js diff --git a/package-lock.json b/package-lock.json index 0f7f6413..1b0c9d0d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -34,6 +34,8 @@ "@babel/preset-react": "^7.16.7", "@babel/preset-typescript": "^7.16.7", "@peculiar/webcrypto": "^1.3.2", + "@statoscope/cli": "^5.20.1", + "@statoscope/webpack-plugin": "^5.20.1", "@testing-library/jest-dom": "^5.16.2", "@types/croppie": "^2.6.1", "@types/jest": "^27.4.1", @@ -85,7 +87,6 @@ "stylelint-high-performance-animation": "^1.6.0", "typescript": "^4.6.2", "webpack": "^5.70.0", - "webpack-bundle-analyzer": "^4.5.0", "webpack-cli": "^4.9.2", "webpack-dev-server": "^4.7.4", "webpack-merge": "^5.8.0" @@ -2710,11 +2711,6 @@ "node": ">=10.12.0" } }, - "node_modules/@polka/url": { - "version": "1.0.0-next.21", - "dev": true, - "license": "MIT" - }, "node_modules/@rushstack/eslint-patch": { "version": "1.1.0", "dev": true, @@ -2736,6 +2732,508 @@ "@sinonjs/commons": "^1.7.0" } }, + "node_modules/@statoscope/cli": { + "version": "5.20.1", + "resolved": "https://registry.npmjs.org/@statoscope/cli/-/cli-5.20.1.tgz", + "integrity": "sha512-YGx33QXQSpKzQlNs9kSwEx8pGN4rXPaeXG4j+Rc+0KeSOB+BoSHdmHTAmGAKKeGuksYPMmHvPmzeCPURW+l9ZQ==", + "dev": true, + "dependencies": { + "@discoveryjs/json-ext": "^0.5.5", + "@statoscope/config": "5.18.0", + "@statoscope/helpers": "5.19.0", + "@statoscope/report-writer": "5.20.0", + "@statoscope/stats-extension-custom-reports": "5.19.0", + "@statoscope/stats-validator": "5.18.0", + "@statoscope/stats-validator-reporter-console": "5.14.1", + "@statoscope/stats-validator-reporter-stats-report": "5.20.1", + "@statoscope/types": "5.14.1", + "@statoscope/webpack-model": "5.20.1", + "@statoscope/webpack-ui": "5.20.1", + "@types/yargs": "^17.0.2", + "open": "^8.2.1", + "yargs": "^17.1.1" + }, + "bin": { + "statoscope": "bin/cli.js" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/@statoscope/cli/node_modules/@types/yargs": { + "version": "17.0.10", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.10.tgz", + "integrity": "sha512-gmEaFwpj/7f/ROdtIlci1R1VYU1J4j95m8T+Tj3iBgiBFKg1foE/PSl93bBd5T9LDXNPo8UlNN6W0qwD8O5OaA==", + "dev": true, + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/@statoscope/cli/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/@statoscope/cli/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@statoscope/cli/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@statoscope/cli/node_modules/yargs": { + "version": "17.4.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.4.0.tgz", + "integrity": "sha512-WJudfrk81yWFSOkZYpAZx4Nt7V4xp7S/uJkX0CnxovMCt1wCE8LNftPpNuF9X/u9gN5nsD7ycYtRcDf2pL3UiA==", + "dev": true, + "dependencies": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@statoscope/cli/node_modules/yargs-parser": { + "version": "21.0.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.0.1.tgz", + "integrity": "sha512-9BK1jFpLzJROCI5TzwZL/TU4gqjK5xiHV/RfWLOahrjAko/e4DJkRDZQXfvqAsiZzzYhgAzbgz6lg48jcm4GLg==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/@statoscope/config": { + "version": "5.18.0", + "resolved": "https://registry.npmjs.org/@statoscope/config/-/config-5.18.0.tgz", + "integrity": "sha512-4BqTEujkvBJDMBLM/VgVZkXHgN44VVpeF4OYH0lW1WDHSyABWKl15F4X4w5IEZSi5acFFvpr/rcDvqeNPs7UvQ==", + "dev": true, + "dependencies": { + "@statoscope/types": "5.14.1", + "chalk": "^4.1.2" + } + }, + "node_modules/@statoscope/config/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/@statoscope/config/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/@statoscope/config/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/@statoscope/config/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/@statoscope/config/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/@statoscope/config/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/@statoscope/extensions": { + "version": "5.14.1", + "resolved": "https://registry.npmjs.org/@statoscope/extensions/-/extensions-5.14.1.tgz", + "integrity": "sha512-5O31566+bOkkdYFH81mGGBTh0YcU0zoYurTrsK5uZfpNY87ZCPpptrszX8npTRHNsxbjBBNt7vAwImJyYdhzLw==", + "dev": true + }, + "node_modules/@statoscope/helpers": { + "version": "5.19.0", + "resolved": "https://registry.npmjs.org/@statoscope/helpers/-/helpers-5.19.0.tgz", + "integrity": "sha512-EFD7XqZZxtZJZlaWznAYIOrqECYHqobXxa0EADtn/mIToUrsL9g/bnkBMl28KX6zy07QcDt9gLmp5s+5GDJCoQ==", + "dev": true, + "dependencies": { + "@types/archy": "^0.0.32", + "@types/semver": "^7.3.6", + "archy": "~1.0.0", + "jora": "^1.0.0-beta.5", + "semver": "^7.3.5" + } + }, + "node_modules/@statoscope/helpers/node_modules/semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@statoscope/report-writer": { + "version": "5.20.0", + "resolved": "https://registry.npmjs.org/@statoscope/report-writer/-/report-writer-5.20.0.tgz", + "integrity": "sha512-/QwHWzRoOCpcJkZYoTb1kuMaLoDxJpo/VteSNbhOOyCwK/74oAPAsSgbGz52T6bHAn6zkMqrSEJFJMVbYeWAJw==", + "dev": true, + "dependencies": { + "@discoveryjs/json-ext": "^0.5.5" + } + }, + "node_modules/@statoscope/stats": { + "version": "5.14.1", + "resolved": "https://registry.npmjs.org/@statoscope/stats/-/stats-5.14.1.tgz", + "integrity": "sha512-Kz7kCKuT6DXaqAPfyTwp27xHMDUna9o6UlRSQXXBZ8Yyk7eYYvTNw+5ffRyqivL9IOzD7FQYDQ6VUBHh0UfyDw==", + "dev": true + }, + "node_modules/@statoscope/stats-extension-compressed": { + "version": "5.19.0", + "resolved": "https://registry.npmjs.org/@statoscope/stats-extension-compressed/-/stats-extension-compressed-5.19.0.tgz", + "integrity": "sha512-CVV6dDi0vo5wDzXOuTmwydeHyjE/i56TUfA+S3llVLsxasMc6udtkLBKUfCQkbAUTJlYJcY8yUR6fH7SfiqOZw==", + "dev": true, + "dependencies": { + "@statoscope/helpers": "5.19.0", + "gzip-size": "^6.0.0" + } + }, + "node_modules/@statoscope/stats-extension-custom-reports": { + "version": "5.19.0", + "resolved": "https://registry.npmjs.org/@statoscope/stats-extension-custom-reports/-/stats-extension-custom-reports-5.19.0.tgz", + "integrity": "sha512-RoOyVPZSYsk1MF/yvryuD0mNlc88OCSyr32EXTpqxlK1w0w/7SxxLtDHpSbKoMxdMrYHxvi32apjoNh03BsD+Q==", + "dev": true, + "dependencies": { + "@statoscope/extensions": "5.14.1", + "@statoscope/helpers": "5.19.0", + "@statoscope/stats": "5.14.1", + "@statoscope/types": "5.14.1" + } + }, + "node_modules/@statoscope/stats-extension-package-info": { + "version": "5.19.3", + "resolved": "https://registry.npmjs.org/@statoscope/stats-extension-package-info/-/stats-extension-package-info-5.19.3.tgz", + "integrity": "sha512-KUvzAkNiw1vNUY2i5IoSVnf6pIyiK3BWHOkmw94SCPWA+BXizwGbGIn6qyW/A4BI1icZvnuE4Gcrtyg0zML0KA==", + "dev": true, + "dependencies": { + "@statoscope/helpers": "5.19.0" + } + }, + "node_modules/@statoscope/stats-extension-stats-validation-result": { + "version": "5.19.0", + "resolved": "https://registry.npmjs.org/@statoscope/stats-extension-stats-validation-result/-/stats-extension-stats-validation-result-5.19.0.tgz", + "integrity": "sha512-9pNmSooDvhUNF5OJyOrmiKjEo+WaCKZhjmZX592uX653JeKr1xTwDxjSWgWyPKkkeyvMHw2T2CjB+WM8Rd/FmA==", + "dev": true, + "dependencies": { + "@statoscope/extensions": "5.14.1", + "@statoscope/helpers": "5.19.0", + "@statoscope/stats": "5.14.1", + "@statoscope/types": "5.14.1" + } + }, + "node_modules/@statoscope/stats-validator": { + "version": "5.18.0", + "resolved": "https://registry.npmjs.org/@statoscope/stats-validator/-/stats-validator-5.18.0.tgz", + "integrity": "sha512-VCbZqGy7sH1Zx7UCqC/yr54EKlpMeQCS/BnZhmApq3+HGA5ClVFm7Xg9w7ziBXETle0PQzFv9i9yI47V0arbmg==", + "dev": true, + "dependencies": { + "@discoveryjs/json-ext": "^0.5.5", + "@statoscope/config": "5.18.0", + "@statoscope/stats": "5.14.1", + "@statoscope/types": "5.14.1" + } + }, + "node_modules/@statoscope/stats-validator-reporter-console": { + "version": "5.14.1", + "resolved": "https://registry.npmjs.org/@statoscope/stats-validator-reporter-console/-/stats-validator-reporter-console-5.14.1.tgz", + "integrity": "sha512-e/wyMuGer5tdlJMFA3uUX2d23kEK7SbJMtlpkWGL7i3mgzTNll0p9+pFhSXHz3WxCEKoGEMTuhAzYNZtXvbNTg==", + "dev": true, + "dependencies": { + "@statoscope/types": "5.14.1", + "chalk": "^4.1.2" + } + }, + "node_modules/@statoscope/stats-validator-reporter-console/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/@statoscope/stats-validator-reporter-console/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/@statoscope/stats-validator-reporter-console/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/@statoscope/stats-validator-reporter-console/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/@statoscope/stats-validator-reporter-console/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/@statoscope/stats-validator-reporter-console/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/@statoscope/stats-validator-reporter-stats-report": { + "version": "5.20.1", + "resolved": "https://registry.npmjs.org/@statoscope/stats-validator-reporter-stats-report/-/stats-validator-reporter-stats-report-5.20.1.tgz", + "integrity": "sha512-hyFnUtj32tO6xa+FrJxguGrC5ZMCZ6YivTT3zDZKBD5//uWolGjf3G1MvWUkKdToh9fLsIRG6tavEVsPQwhMAA==", + "dev": true, + "dependencies": { + "@discoveryjs/json-ext": "0.5.5", + "@statoscope/report-writer": "5.20.0", + "@statoscope/stats": "5.14.1", + "@statoscope/stats-extension-stats-validation-result": "5.19.0", + "@statoscope/types": "5.14.1", + "@statoscope/webpack-model": "5.20.1", + "@statoscope/webpack-ui": "5.20.1", + "open": "^8.2.1" + } + }, + "node_modules/@statoscope/stats-validator-reporter-stats-report/node_modules/@discoveryjs/json-ext": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.5.tgz", + "integrity": "sha512-6nFkfkmSeV/rqSaS4oWHgmpnYw194f6hmWF5is6b0J1naJZoiD0NTc9AiUwPHvWsowkjuHErCZT1wa0jg+BLIA==", + "dev": true, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/@statoscope/types": { + "version": "5.14.1", + "resolved": "https://registry.npmjs.org/@statoscope/types/-/types-5.14.1.tgz", + "integrity": "sha512-vIo7aq2E71AC3y3mdnZqA5aupYUaEIHuPD2gUG0bAA8zTXH7YICk7nRkuxx7xnCBhTZTXAgvtF8hgQ35K4N8oQ==", + "dev": true, + "dependencies": { + "@statoscope/stats": "5.14.1" + } + }, + "node_modules/@statoscope/webpack-model": { + "version": "5.20.1", + "resolved": "https://registry.npmjs.org/@statoscope/webpack-model/-/webpack-model-5.20.1.tgz", + "integrity": "sha512-3I8fccxQiikQqoLq9K0A/qLedNehGwifpcJtXGC8YuIXJVAGU1BVudjBSveqgaVyiSdw3RKJB9TU6lsf6BGoQw==", + "dev": true, + "dependencies": { + "@statoscope/extensions": "5.14.1", + "@statoscope/helpers": "5.19.0", + "@statoscope/stats": "5.14.1", + "@statoscope/stats-extension-compressed": "5.19.0", + "@statoscope/stats-extension-custom-reports": "5.19.0", + "@statoscope/stats-extension-package-info": "5.19.3", + "@statoscope/stats-extension-stats-validation-result": "5.19.0", + "@statoscope/types": "5.14.1", + "ajv": "^8.6.3", + "md5": "^2.3.0" + } + }, + "node_modules/@statoscope/webpack-model/node_modules/ajv": { + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", + "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/@statoscope/webpack-model/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "node_modules/@statoscope/webpack-model/node_modules/md5": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/md5/-/md5-2.3.0.tgz", + "integrity": "sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g==", + "dev": true, + "dependencies": { + "charenc": "0.0.2", + "crypt": "0.0.2", + "is-buffer": "~1.1.6" + } + }, + "node_modules/@statoscope/webpack-plugin": { + "version": "5.20.1", + "resolved": "https://registry.npmjs.org/@statoscope/webpack-plugin/-/webpack-plugin-5.20.1.tgz", + "integrity": "sha512-H4RsRnsEPnbKtC3/OuvhFzAolw8TwKOw0RVso8brlh2a5WLddWikFGUl1/KRQqKB45R3q1e4rnTPe+MVAVwAVA==", + "dev": true, + "dependencies": { + "@discoveryjs/json-ext": "^0.5.5", + "@statoscope/report-writer": "5.20.0", + "@statoscope/stats": "5.14.1", + "@statoscope/stats-extension-compressed": "5.19.0", + "@statoscope/stats-extension-custom-reports": "5.19.0", + "@statoscope/types": "5.14.1", + "@statoscope/webpack-model": "5.20.1", + "@statoscope/webpack-stats-extension-compressed": "5.20.1", + "@statoscope/webpack-stats-extension-package-info": "5.20.1", + "@statoscope/webpack-ui": "5.20.1", + "open": "^8.2.1" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" + } + }, + "node_modules/@statoscope/webpack-stats-extension-compressed": { + "version": "5.20.1", + "resolved": "https://registry.npmjs.org/@statoscope/webpack-stats-extension-compressed/-/webpack-stats-extension-compressed-5.20.1.tgz", + "integrity": "sha512-UpvC2sKzFDBgetoyF4D8EyUqoPNHwIlUSewRwyqA0pdUYgNPNv8jGdNeLSLBDP7DORXaWDu1cFAf2Feal+d4OQ==", + "dev": true, + "dependencies": { + "@statoscope/stats": "5.14.1", + "@statoscope/stats-extension-compressed": "5.19.0", + "@statoscope/webpack-model": "5.20.1" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" + } + }, + "node_modules/@statoscope/webpack-stats-extension-package-info": { + "version": "5.20.1", + "resolved": "https://registry.npmjs.org/@statoscope/webpack-stats-extension-package-info/-/webpack-stats-extension-package-info-5.20.1.tgz", + "integrity": "sha512-pHGEe1vgyaOk5U9QRpHyRLgV+Ju8SnvPxHGl1BSsle1YJv7ksW6gkatEN95ySaPFcVGp+YOMacjAf1mHQ+0I/g==", + "dev": true, + "dependencies": { + "@statoscope/stats": "5.14.1", + "@statoscope/stats-extension-package-info": "5.19.3", + "@statoscope/webpack-model": "5.20.1" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" + } + }, + "node_modules/@statoscope/webpack-ui": { + "version": "5.20.1", + "resolved": "https://registry.npmjs.org/@statoscope/webpack-ui/-/webpack-ui-5.20.1.tgz", + "integrity": "sha512-C/6yOuYYdaHEe3BWUavkJAu8BoXLiRzRxq01z1FolT6V3btr2ILnCHdhNOtkIJt5wbTFnmtxCbMsx4RK49gq2g==", + "dev": true, + "dependencies": { + "@statoscope/types": "5.14.1", + "highcharts": "^9.2.2" + } + }, "node_modules/@testing-library/jest-dom": { "version": "5.16.2", "dev": true, @@ -2839,6 +3337,12 @@ "node": ">=10.13.0" } }, + "node_modules/@types/archy": { + "version": "0.0.32", + "resolved": "https://registry.npmjs.org/@types/archy/-/archy-0.0.32.tgz", + "integrity": "sha512-5ZZ5+YGmUE01yejiXsKnTcvhakMZ2UllZlMsQni53Doc1JWhe21ia8VntRoRD6fAEWw08JBh/z9qQHJ+//MrIg==", + "dev": true + }, "node_modules/@types/asn1js": { "version": "2.0.2", "dev": true, @@ -3106,6 +3610,12 @@ "dev": true, "license": "MIT" }, + "node_modules/@types/semver": { + "version": "7.3.9", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.3.9.tgz", + "integrity": "sha512-L/TMpyURfBkf+o/526Zb6kd/tchUP3iBDEPjqjb+U2MAJhVRxxrmr2fwpe08E7QsV7YLcpq0tUaQ9O9x97ZIxQ==", + "dev": true + }, "node_modules/@types/serve-index": { "version": "1.9.1", "dev": true, @@ -3786,6 +4296,12 @@ "node": ">= 8" } }, + "node_modules/archy": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", + "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=", + "dev": true + }, "node_modules/argparse": { "version": "2.0.1", "dev": true, @@ -7475,6 +7991,12 @@ "he": "bin/he" } }, + "node_modules/highcharts": { + "version": "9.3.3", + "resolved": "https://registry.npmjs.org/highcharts/-/highcharts-9.3.3.tgz", + "integrity": "sha512-QeOvm6cifeZYYdTLm4IxZsXcOE9c4xqfs0z0OJJ0z7hhA9WG0rmcVAyuIp5HBl/znjA/ayYHmpYjBYD/9PG4Fg==", + "dev": true + }, "node_modules/hosted-git-info": { "version": "4.1.0", "dev": true, @@ -9965,6 +10487,15 @@ "url": "https://github.com/chalk/supports-color?sponsor=1" } }, + "node_modules/jora": { + "version": "1.0.0-beta.5", + "resolved": "https://registry.npmjs.org/jora/-/jora-1.0.0-beta.5.tgz", + "integrity": "sha512-hPJKQyF0eiCqQOwfgIuQa+8wIn+WcEcjjyeOchuiXEUnt6zbV0tHKsUqRRwJY47ZtBiGcJQNr/BGuYW1Sfwbvg==", + "dev": true, + "engines": { + "node": ">=8.10.0" + } + }, "node_modules/js-tokens": { "version": "4.0.0", "dev": true, @@ -10981,14 +11512,6 @@ "mkdirp": "bin/cmd.js" } }, - "node_modules/mrmime": { - "version": "1.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - } - }, "node_modules/ms": { "version": "2.1.2", "license": "MIT" @@ -11391,14 +11914,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/opener": { - "version": "1.5.2", - "dev": true, - "license": "(WTFPL OR MIT)", - "bin": { - "opener": "bin/opener-bin.js" - } - }, "node_modules/optionator": { "version": "0.9.1", "dev": true, @@ -13623,19 +14138,6 @@ "dev": true, "license": "ISC" }, - "node_modules/sirv": { - "version": "1.0.19", - "dev": true, - "license": "MIT", - "dependencies": { - "@polka/url": "^1.0.0-next.20", - "mrmime": "^1.0.0", - "totalist": "^1.0.0" - }, - "engines": { - "node": ">= 10" - } - }, "node_modules/sisteransi": { "version": "1.0.5", "dev": true, @@ -15002,14 +15504,6 @@ "url": "https://github.com/sponsors/Borewit" } }, - "node_modules/totalist": { - "version": "1.1.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, "node_modules/tough-cookie": { "version": "4.0.0", "dev": true, @@ -15566,108 +16060,6 @@ } } }, - "node_modules/webpack-bundle-analyzer": { - "version": "4.5.0", - "dev": true, - "license": "MIT", - "dependencies": { - "acorn": "^8.0.4", - "acorn-walk": "^8.0.0", - "chalk": "^4.1.0", - "commander": "^7.2.0", - "gzip-size": "^6.0.0", - "lodash": "^4.17.20", - "opener": "^1.5.2", - "sirv": "^1.0.7", - "ws": "^7.3.1" - }, - "bin": { - "webpack-bundle-analyzer": "lib/bin/analyzer.js" - }, - "engines": { - "node": ">= 10.13.0" - } - }, - "node_modules/webpack-bundle-analyzer/node_modules/acorn-walk": { - "version": "8.2.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/webpack-bundle-analyzer/node_modules/ansi-styles": { - "version": "4.3.0", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/webpack-bundle-analyzer/node_modules/chalk": { - "version": "4.1.2", - "dev": true, - "license": "MIT", - "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/webpack-bundle-analyzer/node_modules/color-convert": { - "version": "2.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/webpack-bundle-analyzer/node_modules/color-name": { - "version": "1.1.4", - "dev": true, - "license": "MIT" - }, - "node_modules/webpack-bundle-analyzer/node_modules/commander": { - "version": "7.2.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 10" - } - }, - "node_modules/webpack-bundle-analyzer/node_modules/has-flag": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/webpack-bundle-analyzer/node_modules/supports-color": { - "version": "7.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/webpack-cli": { "version": "4.9.2", "dev": true, @@ -17940,10 +18332,6 @@ "webcrypto-core": "^1.7.1" } }, - "@polka/url": { - "version": "1.0.0-next.21", - "dev": true - }, "@rushstack/eslint-patch": { "version": "1.1.0", "dev": true @@ -17962,6 +18350,438 @@ "@sinonjs/commons": "^1.7.0" } }, + "@statoscope/cli": { + "version": "5.20.1", + "resolved": "https://registry.npmjs.org/@statoscope/cli/-/cli-5.20.1.tgz", + "integrity": "sha512-YGx33QXQSpKzQlNs9kSwEx8pGN4rXPaeXG4j+Rc+0KeSOB+BoSHdmHTAmGAKKeGuksYPMmHvPmzeCPURW+l9ZQ==", + "dev": true, + "requires": { + "@discoveryjs/json-ext": "^0.5.5", + "@statoscope/config": "5.18.0", + "@statoscope/helpers": "5.19.0", + "@statoscope/report-writer": "5.20.0", + "@statoscope/stats-extension-custom-reports": "5.19.0", + "@statoscope/stats-validator": "5.18.0", + "@statoscope/stats-validator-reporter-console": "5.14.1", + "@statoscope/stats-validator-reporter-stats-report": "5.20.1", + "@statoscope/types": "5.14.1", + "@statoscope/webpack-model": "5.20.1", + "@statoscope/webpack-ui": "5.20.1", + "@types/yargs": "^17.0.2", + "open": "^8.2.1", + "yargs": "^17.1.1" + }, + "dependencies": { + "@types/yargs": { + "version": "17.0.10", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.10.tgz", + "integrity": "sha512-gmEaFwpj/7f/ROdtIlci1R1VYU1J4j95m8T+Tj3iBgiBFKg1foE/PSl93bBd5T9LDXNPo8UlNN6W0qwD8O5OaA==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, + "string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + } + }, + "yargs": { + "version": "17.4.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.4.0.tgz", + "integrity": "sha512-WJudfrk81yWFSOkZYpAZx4Nt7V4xp7S/uJkX0CnxovMCt1wCE8LNftPpNuF9X/u9gN5nsD7ycYtRcDf2pL3UiA==", + "dev": true, + "requires": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.0.0" + } + }, + "yargs-parser": { + "version": "21.0.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.0.1.tgz", + "integrity": "sha512-9BK1jFpLzJROCI5TzwZL/TU4gqjK5xiHV/RfWLOahrjAko/e4DJkRDZQXfvqAsiZzzYhgAzbgz6lg48jcm4GLg==", + "dev": true + } + } + }, + "@statoscope/config": { + "version": "5.18.0", + "resolved": "https://registry.npmjs.org/@statoscope/config/-/config-5.18.0.tgz", + "integrity": "sha512-4BqTEujkvBJDMBLM/VgVZkXHgN44VVpeF4OYH0lW1WDHSyABWKl15F4X4w5IEZSi5acFFvpr/rcDvqeNPs7UvQ==", + "dev": true, + "requires": { + "@statoscope/types": "5.14.1", + "chalk": "^4.1.2" + }, + "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" + } + } + } + }, + "@statoscope/extensions": { + "version": "5.14.1", + "resolved": "https://registry.npmjs.org/@statoscope/extensions/-/extensions-5.14.1.tgz", + "integrity": "sha512-5O31566+bOkkdYFH81mGGBTh0YcU0zoYurTrsK5uZfpNY87ZCPpptrszX8npTRHNsxbjBBNt7vAwImJyYdhzLw==", + "dev": true + }, + "@statoscope/helpers": { + "version": "5.19.0", + "resolved": "https://registry.npmjs.org/@statoscope/helpers/-/helpers-5.19.0.tgz", + "integrity": "sha512-EFD7XqZZxtZJZlaWznAYIOrqECYHqobXxa0EADtn/mIToUrsL9g/bnkBMl28KX6zy07QcDt9gLmp5s+5GDJCoQ==", + "dev": true, + "requires": { + "@types/archy": "^0.0.32", + "@types/semver": "^7.3.6", + "archy": "~1.0.0", + "jora": "^1.0.0-beta.5", + "semver": "^7.3.5" + }, + "dependencies": { + "semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + } + } + }, + "@statoscope/report-writer": { + "version": "5.20.0", + "resolved": "https://registry.npmjs.org/@statoscope/report-writer/-/report-writer-5.20.0.tgz", + "integrity": "sha512-/QwHWzRoOCpcJkZYoTb1kuMaLoDxJpo/VteSNbhOOyCwK/74oAPAsSgbGz52T6bHAn6zkMqrSEJFJMVbYeWAJw==", + "dev": true, + "requires": { + "@discoveryjs/json-ext": "^0.5.5" + } + }, + "@statoscope/stats": { + "version": "5.14.1", + "resolved": "https://registry.npmjs.org/@statoscope/stats/-/stats-5.14.1.tgz", + "integrity": "sha512-Kz7kCKuT6DXaqAPfyTwp27xHMDUna9o6UlRSQXXBZ8Yyk7eYYvTNw+5ffRyqivL9IOzD7FQYDQ6VUBHh0UfyDw==", + "dev": true + }, + "@statoscope/stats-extension-compressed": { + "version": "5.19.0", + "resolved": "https://registry.npmjs.org/@statoscope/stats-extension-compressed/-/stats-extension-compressed-5.19.0.tgz", + "integrity": "sha512-CVV6dDi0vo5wDzXOuTmwydeHyjE/i56TUfA+S3llVLsxasMc6udtkLBKUfCQkbAUTJlYJcY8yUR6fH7SfiqOZw==", + "dev": true, + "requires": { + "@statoscope/helpers": "5.19.0", + "gzip-size": "^6.0.0" + } + }, + "@statoscope/stats-extension-custom-reports": { + "version": "5.19.0", + "resolved": "https://registry.npmjs.org/@statoscope/stats-extension-custom-reports/-/stats-extension-custom-reports-5.19.0.tgz", + "integrity": "sha512-RoOyVPZSYsk1MF/yvryuD0mNlc88OCSyr32EXTpqxlK1w0w/7SxxLtDHpSbKoMxdMrYHxvi32apjoNh03BsD+Q==", + "dev": true, + "requires": { + "@statoscope/extensions": "5.14.1", + "@statoscope/helpers": "5.19.0", + "@statoscope/stats": "5.14.1", + "@statoscope/types": "5.14.1" + } + }, + "@statoscope/stats-extension-package-info": { + "version": "5.19.3", + "resolved": "https://registry.npmjs.org/@statoscope/stats-extension-package-info/-/stats-extension-package-info-5.19.3.tgz", + "integrity": "sha512-KUvzAkNiw1vNUY2i5IoSVnf6pIyiK3BWHOkmw94SCPWA+BXizwGbGIn6qyW/A4BI1icZvnuE4Gcrtyg0zML0KA==", + "dev": true, + "requires": { + "@statoscope/helpers": "5.19.0" + } + }, + "@statoscope/stats-extension-stats-validation-result": { + "version": "5.19.0", + "resolved": "https://registry.npmjs.org/@statoscope/stats-extension-stats-validation-result/-/stats-extension-stats-validation-result-5.19.0.tgz", + "integrity": "sha512-9pNmSooDvhUNF5OJyOrmiKjEo+WaCKZhjmZX592uX653JeKr1xTwDxjSWgWyPKkkeyvMHw2T2CjB+WM8Rd/FmA==", + "dev": true, + "requires": { + "@statoscope/extensions": "5.14.1", + "@statoscope/helpers": "5.19.0", + "@statoscope/stats": "5.14.1", + "@statoscope/types": "5.14.1" + } + }, + "@statoscope/stats-validator": { + "version": "5.18.0", + "resolved": "https://registry.npmjs.org/@statoscope/stats-validator/-/stats-validator-5.18.0.tgz", + "integrity": "sha512-VCbZqGy7sH1Zx7UCqC/yr54EKlpMeQCS/BnZhmApq3+HGA5ClVFm7Xg9w7ziBXETle0PQzFv9i9yI47V0arbmg==", + "dev": true, + "requires": { + "@discoveryjs/json-ext": "^0.5.5", + "@statoscope/config": "5.18.0", + "@statoscope/stats": "5.14.1", + "@statoscope/types": "5.14.1" + } + }, + "@statoscope/stats-validator-reporter-console": { + "version": "5.14.1", + "resolved": "https://registry.npmjs.org/@statoscope/stats-validator-reporter-console/-/stats-validator-reporter-console-5.14.1.tgz", + "integrity": "sha512-e/wyMuGer5tdlJMFA3uUX2d23kEK7SbJMtlpkWGL7i3mgzTNll0p9+pFhSXHz3WxCEKoGEMTuhAzYNZtXvbNTg==", + "dev": true, + "requires": { + "@statoscope/types": "5.14.1", + "chalk": "^4.1.2" + }, + "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" + } + } + } + }, + "@statoscope/stats-validator-reporter-stats-report": { + "version": "5.20.1", + "resolved": "https://registry.npmjs.org/@statoscope/stats-validator-reporter-stats-report/-/stats-validator-reporter-stats-report-5.20.1.tgz", + "integrity": "sha512-hyFnUtj32tO6xa+FrJxguGrC5ZMCZ6YivTT3zDZKBD5//uWolGjf3G1MvWUkKdToh9fLsIRG6tavEVsPQwhMAA==", + "dev": true, + "requires": { + "@discoveryjs/json-ext": "0.5.5", + "@statoscope/report-writer": "5.20.0", + "@statoscope/stats": "5.14.1", + "@statoscope/stats-extension-stats-validation-result": "5.19.0", + "@statoscope/types": "5.14.1", + "@statoscope/webpack-model": "5.20.1", + "@statoscope/webpack-ui": "5.20.1", + "open": "^8.2.1" + }, + "dependencies": { + "@discoveryjs/json-ext": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.5.tgz", + "integrity": "sha512-6nFkfkmSeV/rqSaS4oWHgmpnYw194f6hmWF5is6b0J1naJZoiD0NTc9AiUwPHvWsowkjuHErCZT1wa0jg+BLIA==", + "dev": true + } + } + }, + "@statoscope/types": { + "version": "5.14.1", + "resolved": "https://registry.npmjs.org/@statoscope/types/-/types-5.14.1.tgz", + "integrity": "sha512-vIo7aq2E71AC3y3mdnZqA5aupYUaEIHuPD2gUG0bAA8zTXH7YICk7nRkuxx7xnCBhTZTXAgvtF8hgQ35K4N8oQ==", + "dev": true, + "requires": { + "@statoscope/stats": "5.14.1" + } + }, + "@statoscope/webpack-model": { + "version": "5.20.1", + "resolved": "https://registry.npmjs.org/@statoscope/webpack-model/-/webpack-model-5.20.1.tgz", + "integrity": "sha512-3I8fccxQiikQqoLq9K0A/qLedNehGwifpcJtXGC8YuIXJVAGU1BVudjBSveqgaVyiSdw3RKJB9TU6lsf6BGoQw==", + "dev": true, + "requires": { + "@statoscope/extensions": "5.14.1", + "@statoscope/helpers": "5.19.0", + "@statoscope/stats": "5.14.1", + "@statoscope/stats-extension-compressed": "5.19.0", + "@statoscope/stats-extension-custom-reports": "5.19.0", + "@statoscope/stats-extension-package-info": "5.19.3", + "@statoscope/stats-extension-stats-validation-result": "5.19.0", + "@statoscope/types": "5.14.1", + "ajv": "^8.6.3", + "md5": "^2.3.0" + }, + "dependencies": { + "ajv": { + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", + "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } + }, + "json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "md5": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/md5/-/md5-2.3.0.tgz", + "integrity": "sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g==", + "dev": true, + "requires": { + "charenc": "0.0.2", + "crypt": "0.0.2", + "is-buffer": "~1.1.6" + } + } + } + }, + "@statoscope/webpack-plugin": { + "version": "5.20.1", + "resolved": "https://registry.npmjs.org/@statoscope/webpack-plugin/-/webpack-plugin-5.20.1.tgz", + "integrity": "sha512-H4RsRnsEPnbKtC3/OuvhFzAolw8TwKOw0RVso8brlh2a5WLddWikFGUl1/KRQqKB45R3q1e4rnTPe+MVAVwAVA==", + "dev": true, + "requires": { + "@discoveryjs/json-ext": "^0.5.5", + "@statoscope/report-writer": "5.20.0", + "@statoscope/stats": "5.14.1", + "@statoscope/stats-extension-compressed": "5.19.0", + "@statoscope/stats-extension-custom-reports": "5.19.0", + "@statoscope/types": "5.14.1", + "@statoscope/webpack-model": "5.20.1", + "@statoscope/webpack-stats-extension-compressed": "5.20.1", + "@statoscope/webpack-stats-extension-package-info": "5.20.1", + "@statoscope/webpack-ui": "5.20.1", + "open": "^8.2.1" + } + }, + "@statoscope/webpack-stats-extension-compressed": { + "version": "5.20.1", + "resolved": "https://registry.npmjs.org/@statoscope/webpack-stats-extension-compressed/-/webpack-stats-extension-compressed-5.20.1.tgz", + "integrity": "sha512-UpvC2sKzFDBgetoyF4D8EyUqoPNHwIlUSewRwyqA0pdUYgNPNv8jGdNeLSLBDP7DORXaWDu1cFAf2Feal+d4OQ==", + "dev": true, + "requires": { + "@statoscope/stats": "5.14.1", + "@statoscope/stats-extension-compressed": "5.19.0", + "@statoscope/webpack-model": "5.20.1" + } + }, + "@statoscope/webpack-stats-extension-package-info": { + "version": "5.20.1", + "resolved": "https://registry.npmjs.org/@statoscope/webpack-stats-extension-package-info/-/webpack-stats-extension-package-info-5.20.1.tgz", + "integrity": "sha512-pHGEe1vgyaOk5U9QRpHyRLgV+Ju8SnvPxHGl1BSsle1YJv7ksW6gkatEN95ySaPFcVGp+YOMacjAf1mHQ+0I/g==", + "dev": true, + "requires": { + "@statoscope/stats": "5.14.1", + "@statoscope/stats-extension-package-info": "5.19.3", + "@statoscope/webpack-model": "5.20.1" + } + }, + "@statoscope/webpack-ui": { + "version": "5.20.1", + "resolved": "https://registry.npmjs.org/@statoscope/webpack-ui/-/webpack-ui-5.20.1.tgz", + "integrity": "sha512-C/6yOuYYdaHEe3BWUavkJAu8BoXLiRzRxq01z1FolT6V3btr2ILnCHdhNOtkIJt5wbTFnmtxCbMsx4RK49gq2g==", + "dev": true, + "requires": { + "@statoscope/types": "5.14.1", + "highcharts": "^9.2.2" + } + }, "@testing-library/jest-dom": { "version": "5.16.2", "dev": true, @@ -18029,6 +18849,12 @@ "version": "0.2.0", "dev": true }, + "@types/archy": { + "version": "0.0.32", + "resolved": "https://registry.npmjs.org/@types/archy/-/archy-0.0.32.tgz", + "integrity": "sha512-5ZZ5+YGmUE01yejiXsKnTcvhakMZ2UllZlMsQni53Doc1JWhe21ia8VntRoRD6fAEWw08JBh/z9qQHJ+//MrIg==", + "dev": true + }, "@types/asn1js": { "version": "2.0.2", "dev": true @@ -18258,6 +19084,12 @@ "version": "0.16.2", "dev": true }, + "@types/semver": { + "version": "7.3.9", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.3.9.tgz", + "integrity": "sha512-L/TMpyURfBkf+o/526Zb6kd/tchUP3iBDEPjqjb+U2MAJhVRxxrmr2fwpe08E7QsV7YLcpq0tUaQ9O9x97ZIxQ==", + "dev": true + }, "@types/serve-index": { "version": "1.9.1", "dev": true, @@ -18693,6 +19525,12 @@ "picomatch": "^2.0.4" } }, + "archy": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", + "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=", + "dev": true + }, "argparse": { "version": "2.0.1", "dev": true @@ -21046,6 +21884,12 @@ "version": "1.2.0", "dev": true }, + "highcharts": { + "version": "9.3.3", + "resolved": "https://registry.npmjs.org/highcharts/-/highcharts-9.3.3.tgz", + "integrity": "sha512-QeOvm6cifeZYYdTLm4IxZsXcOE9c4xqfs0z0OJJ0z7hhA9WG0rmcVAyuIp5HBl/znjA/ayYHmpYjBYD/9PG4Fg==", + "dev": true + }, "hosted-git-info": { "version": "4.1.0", "dev": true, @@ -22596,6 +23440,12 @@ } } }, + "jora": { + "version": "1.0.0-beta.5", + "resolved": "https://registry.npmjs.org/jora/-/jora-1.0.0-beta.5.tgz", + "integrity": "sha512-hPJKQyF0eiCqQOwfgIuQa+8wIn+WcEcjjyeOchuiXEUnt6zbV0tHKsUqRRwJY47ZtBiGcJQNr/BGuYW1Sfwbvg==", + "dev": true + }, "js-tokens": { "version": "4.0.0", "dev": true @@ -23237,10 +24087,6 @@ "minimist": "^1.2.5" } }, - "mrmime": { - "version": "1.0.0", - "dev": true - }, "ms": { "version": "2.1.2" }, @@ -23491,10 +24337,6 @@ "is-wsl": "^2.2.0" } }, - "opener": { - "version": "1.5.2", - "dev": true - }, "optionator": { "version": "0.9.1", "dev": true, @@ -24864,15 +25706,6 @@ "version": "3.0.7", "dev": true }, - "sirv": { - "version": "1.0.19", - "dev": true, - "requires": { - "@polka/url": "^1.0.0-next.20", - "mrmime": "^1.0.0", - "totalist": "^1.0.0" - } - }, "sisteransi": { "version": "1.0.5", "dev": true @@ -25762,10 +26595,6 @@ "ieee754": "^1.2.1" } }, - "totalist": { - "version": "1.1.0", - "dev": true - }, "tough-cookie": { "version": "4.0.0", "dev": true, @@ -26131,68 +26960,6 @@ } } }, - "webpack-bundle-analyzer": { - "version": "4.5.0", - "dev": true, - "requires": { - "acorn": "^8.0.4", - "acorn-walk": "^8.0.0", - "chalk": "^4.1.0", - "commander": "^7.2.0", - "gzip-size": "^6.0.0", - "lodash": "^4.17.20", - "opener": "^1.5.2", - "sirv": "^1.0.7", - "ws": "^7.3.1" - }, - "dependencies": { - "acorn-walk": { - "version": "8.2.0", - "dev": true - }, - "ansi-styles": { - "version": "4.3.0", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "dev": true - }, - "commander": { - "version": "7.2.0", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, "webpack-cli": { "version": "4.9.2", "dev": true, diff --git a/package.json b/package.json index 0122f160..9316d031 100644 --- a/package.json +++ b/package.json @@ -16,7 +16,9 @@ "gramjs:tl": "node ./src/lib/gramjs/tl/generateModules.js", "gramjs:lint:fix": "eslint ./src/lib/gramjs --fix", "test": "cross-env APP_ENV=test jest --verbose --forceExit", - "prepare": "husky install" + "prepare": "husky install", + "statoscope:validate": "statoscope validate --input public/build-stats.json", + "statoscope:validate-diff": "statoscope validate --input input.json --reference reference.json" }, "engines": { "node": "^16.13", @@ -42,6 +44,8 @@ "@babel/preset-react": "^7.16.7", "@babel/preset-typescript": "^7.16.7", "@peculiar/webcrypto": "^1.3.2", + "@statoscope/cli": "^5.20.1", + "@statoscope/webpack-plugin": "^5.20.1", "@testing-library/jest-dom": "^5.16.2", "@types/croppie": "^2.6.1", "@types/jest": "^27.4.1", @@ -93,7 +97,6 @@ "stylelint-high-performance-animation": "^1.6.0", "typescript": "^4.6.2", "webpack": "^5.70.0", - "webpack-bundle-analyzer": "^4.5.0", "webpack-cli": "^4.9.2", "webpack-dev-server": "^4.7.4", "webpack-merge": "^5.8.0" diff --git a/webpack.config.js b/webpack.config.js index d5717187..1e8881bf 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -8,10 +8,10 @@ const { } = require('webpack'); const HtmlPlugin = require('html-webpack-plugin'); const MiniCssExtractPlugin = require('mini-css-extract-plugin'); -const { BundleAnalyzerPlugin } = require('webpack-bundle-analyzer'); const CssMinimizerPlugin = require('css-minimizer-webpack-plugin'); const { GitRevisionPlugin } = require('git-revision-webpack-plugin'); - +const StatoscopeWebpackPlugin = require('@statoscope/webpack-plugin').default; +const WebpackContextExtension = require('./dev/webpackContextExtension'); const appVersion = require('./package.json').version; dotenv.config(); @@ -135,12 +135,16 @@ module.exports = (env = {}, argv = {}) => { Buffer: ['buffer', 'Buffer'], process: 'process/browser', }), - ...(argv.mode === 'production' ? [ - new BundleAnalyzerPlugin({ - analyzerMode: 'static', - openAnalyzer: false, - }), - ] : []), + new StatoscopeWebpackPlugin({ + statsOptions: { + context: __dirname, + }, + saveReportTo: path.resolve('./public/statoscope-report.html'), + saveStatsTo: path.resolve('./public/build-stats.json'), + normalizeStats: true, + open: 'file', + extensions: [new WebpackContextExtension()], + }), ], ...(!env.noSourceMap && {