From bb3514150a787d8b1495975c0ea38dcc71b538bf Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 12 Sep 2022 06:24:53 +1000 Subject: [PATCH 001/263] build(deps): update jest monorepo (#4000) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- web/package.json | 6 +- web/pnpm-lock.yaml | 588 +++++++++++++++++++++++---------------------- 2 files changed, 302 insertions(+), 292 deletions(-) diff --git a/web/package.json b/web/package.json index a4ddc1adb..474203cfa 100644 --- a/web/package.json +++ b/web/package.json @@ -146,7 +146,7 @@ "@commitlint/config-conventional": "17.1.0", "@testing-library/jest-dom": "5.16.5", "@testing-library/react": "13.4.0", - "@types/jest": "29.0.0", + "@types/jest": "29.0.1", "@types/node": "16.11.58", "@types/qrcode.react": "1.0.2", "@types/react": "18.0.19", @@ -168,8 +168,8 @@ "eslint-plugin-react": "7.31.8", "eslint-plugin-react-hooks": "4.6.0", "husky": "8.0.1", - "jest": "29.0.2", - "jest-environment-jsdom": "29.0.2", + "jest": "29.0.3", + "jest-environment-jsdom": "29.0.3", "jest-transform-stub": "2.0.0", "jest-watch-typeahead": "2.1.1", "prettier": "2.7.1", diff --git a/web/pnpm-lock.yaml b/web/pnpm-lock.yaml index bb0905c45..c549fa210 100644 --- a/web/pnpm-lock.yaml +++ b/web/pnpm-lock.yaml @@ -15,7 +15,7 @@ specifiers: '@mui/styles': 5.10.3 '@testing-library/jest-dom': 5.16.5 '@testing-library/react': 13.4.0 - '@types/jest': 29.0.0 + '@types/jest': 29.0.1 '@types/node': 16.11.58 '@types/qrcode.react': 1.0.2 '@types/react': 18.0.19 @@ -42,8 +42,8 @@ specifiers: i18next: 21.9.1 i18next-browser-languagedetector: 6.1.5 i18next-http-backend: 1.4.1 - jest: 29.0.2 - jest-environment-jsdom: 29.0.2 + jest: 29.0.3 + jest-environment-jsdom: 29.0.3 jest-transform-stub: 2.0.0 jest-watch-typeahead: 2.1.1 prettier: 2.7.1 @@ -95,7 +95,7 @@ devDependencies: '@commitlint/config-conventional': 17.1.0 '@testing-library/jest-dom': 5.16.5 '@testing-library/react': 13.4.0_biqbaboplfbrettd7655fr4n2y - '@types/jest': 29.0.0 + '@types/jest': 29.0.1 '@types/node': 16.11.58 '@types/qrcode.react': 1.0.2 '@types/react': 18.0.19 @@ -108,7 +108,7 @@ devDependencies: esbuild-jest: 0.5.0_esbuild@0.15.7 eslint: 8.23.0 eslint-config-prettier: 8.5.0_eslint@8.23.0 - eslint-config-react-app: 7.0.1_4fdwrjms7sui3pmirbrnmoo7cy + eslint-config-react-app: 7.0.1_cr6wnmwwhjzeqnbkyvjwx3muuu eslint-formatter-rdjson: 1.0.5 eslint-import-resolver-typescript: 3.5.1_faomjyrlgqmwswvqymymzkxcqi eslint-plugin-import: 2.26.0_ikxfxf6lcdzwf3sfhs76tj4x7m @@ -117,10 +117,10 @@ devDependencies: eslint-plugin-react: 7.31.8_eslint@8.23.0 eslint-plugin-react-hooks: 4.6.0_eslint@8.23.0 husky: 8.0.1 - jest: 29.0.2_@types+node@16.11.58 - jest-environment-jsdom: 29.0.2 + jest: 29.0.3_@types+node@16.11.58 + jest-environment-jsdom: 29.0.3 jest-transform-stub: 2.0.0 - jest-watch-typeahead: 2.1.1_jest@29.0.2 + jest-watch-typeahead: 2.1.1_jest@29.0.3 prettier: 2.7.1 react-test-renderer: 18.2.0_react@18.2.0 typescript: 4.8.3 @@ -2497,20 +2497,20 @@ packages: slash: 3.0.0 dev: true - /@jest/console/29.0.2: - resolution: {integrity: sha512-Fv02ijyhF4D/Wb3DvZO3iBJQz5DnzpJEIDBDbvje8Em099N889tNMUnBw7SalmSuOI+NflNG40RA1iK71kImPw==} + /@jest/console/29.0.3: + resolution: {integrity: sha512-cGg0r+klVHSYnfE977S9wmpuQ9L+iYuYgL+5bPXiUlUynLLYunRxswEmhBzvrSKGof5AKiHuTTmUKAqRcDY9dg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/types': 29.0.2 + '@jest/types': 29.0.3 '@types/node': 16.11.58 chalk: 4.1.2 - jest-message-util: 29.0.2 - jest-util: 29.0.2 + jest-message-util: 29.0.3 + jest-util: 29.0.3 slash: 3.0.0 dev: true - /@jest/core/29.0.2: - resolution: {integrity: sha512-imP5M6cdpHEOkmcuFYZuM5cTG1DAF7ZlVNCq1+F7kbqme2Jcl+Kh4M78hihM76DJHNkurbv4UVOnejGxBKEmww==} + /@jest/core/29.0.3: + resolution: {integrity: sha512-1d0hLbOrM1qQE3eP3DtakeMbKTcXiXP3afWxqz103xPyddS2NhnNghS7MaXx1dcDt4/6p4nlhmeILo2ofgi8cQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 @@ -2518,11 +2518,11 @@ packages: node-notifier: optional: true dependencies: - '@jest/console': 29.0.2 - '@jest/reporters': 29.0.2 - '@jest/test-result': 29.0.2 - '@jest/transform': 29.0.2 - '@jest/types': 29.0.2 + '@jest/console': 29.0.3 + '@jest/reporters': 29.0.3 + '@jest/test-result': 29.0.3 + '@jest/transform': 29.0.3 + '@jest/types': 29.0.3 '@types/node': 16.11.58 ansi-escapes: 4.3.2 chalk: 4.1.2 @@ -2530,20 +2530,20 @@ packages: exit: 0.1.2 graceful-fs: 4.2.10 jest-changed-files: 29.0.0 - jest-config: 29.0.2_@types+node@16.11.58 - jest-haste-map: 29.0.2 - jest-message-util: 29.0.2 + jest-config: 29.0.3_@types+node@16.11.58 + jest-haste-map: 29.0.3 + jest-message-util: 29.0.3 jest-regex-util: 29.0.0 - jest-resolve: 29.0.2 - jest-resolve-dependencies: 29.0.2 - jest-runner: 29.0.2 - jest-runtime: 29.0.2 - jest-snapshot: 29.0.2 - jest-util: 29.0.2 - jest-validate: 29.0.2 - jest-watcher: 29.0.2 + jest-resolve: 29.0.3 + jest-resolve-dependencies: 29.0.3 + jest-runner: 29.0.3 + jest-runtime: 29.0.3 + jest-snapshot: 29.0.3 + jest-util: 29.0.3 + jest-validate: 29.0.3 + jest-watcher: 29.0.3 micromatch: 4.0.5 - pretty-format: 29.0.2 + pretty-format: 29.0.3 slash: 3.0.0 strip-ansi: 6.0.1 transitivePeerDependencies: @@ -2551,21 +2551,14 @@ packages: - ts-node dev: true - /@jest/environment/29.0.2: - resolution: {integrity: sha512-Yf+EYaLOrVCgts/aTS5nGznU4prZUPa5k9S63Yct8YSOKj2jkdS17hHSUKhk5jxDFMyCy1PXknypDw7vfgc/mA==} + /@jest/environment/29.0.3: + resolution: {integrity: sha512-iKl272NKxYNQNqXMQandAIwjhQaGw5uJfGXduu8dS9llHi8jV2ChWrtOAVPnMbaaoDhnI3wgUGNDvZgHeEJQCA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/fake-timers': 29.0.2 - '@jest/types': 29.0.2 + '@jest/fake-timers': 29.0.3 + '@jest/types': 29.0.3 '@types/node': 16.11.58 - jest-mock: 29.0.2 - dev: true - - /@jest/expect-utils/29.0.1: - resolution: {integrity: sha512-Tw5kUUOKmXGQDmQ9TSgTraFFS7HMC1HG/B7y0AN2G2UzjdAXz9BzK2rmNpCSDl7g7y0Gf/VLBm//blonvhtOTQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - jest-get-type: 29.0.0 + jest-mock: 29.0.3 dev: true /@jest/expect-utils/29.0.2: @@ -2575,42 +2568,49 @@ packages: jest-get-type: 29.0.0 dev: true - /@jest/expect/29.0.2: - resolution: {integrity: sha512-y/3geZ92p2/zovBm/F+ZjXUJ3thvT9IRzD6igqaWskFE2aR0idD+N/p5Lj/ZautEox/9RwEc6nqergebeh72uQ==} + /@jest/expect-utils/29.0.3: + resolution: {integrity: sha512-i1xUkau7K/63MpdwiRqaxgZOjxYs4f0WMTGJnYwUKubsNRZSeQbLorS7+I4uXVF9KQ5r61BUPAUMZ7Lf66l64Q==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - expect: 29.0.2 - jest-snapshot: 29.0.2 + jest-get-type: 29.0.0 + dev: true + + /@jest/expect/29.0.3: + resolution: {integrity: sha512-6W7K+fsI23FQ01H/BWccPyDZFrnU9QlzDcKOjrNVU5L8yUORFAJJIpmyxWPW70+X624KUNqzZwPThPMX28aXEQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + expect: 29.0.3 + jest-snapshot: 29.0.3 transitivePeerDependencies: - supports-color dev: true - /@jest/fake-timers/29.0.2: - resolution: {integrity: sha512-2JhQeWU28fvmM5r33lxg6BxxkTKaVXs6KMaJ6eXSM8ml/MaWkt2BvbIO8G9KWAJFMdBXWbn+2h9OK1/s5urKZA==} + /@jest/fake-timers/29.0.3: + resolution: {integrity: sha512-tmbUIo03x0TdtcZCESQ0oQSakPCpo7+s6+9mU19dd71MptkP4zCwoeZqna23//pgbhtT1Wq02VmA9Z9cNtvtCQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/types': 29.0.2 + '@jest/types': 29.0.3 '@sinonjs/fake-timers': 9.1.2 '@types/node': 16.11.58 - jest-message-util: 29.0.2 - jest-mock: 29.0.2 - jest-util: 29.0.2 + jest-message-util: 29.0.3 + jest-mock: 29.0.3 + jest-util: 29.0.3 dev: true - /@jest/globals/29.0.2: - resolution: {integrity: sha512-4hcooSNJCVXuTu07/VJwCWW6HTnjLtQdqlcGisK6JST7z2ixa8emw4SkYsOk7j36WRc2ZUEydlUePnOIOTCNXg==} + /@jest/globals/29.0.3: + resolution: {integrity: sha512-YqGHT65rFY2siPIHHFjuCGUsbzRjdqkwbat+Of6DmYRg5shIXXrLdZoVE/+TJ9O1dsKsFmYhU58JvIbZRU1Z9w==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/environment': 29.0.2 - '@jest/expect': 29.0.2 - '@jest/types': 29.0.2 - jest-mock: 29.0.2 + '@jest/environment': 29.0.3 + '@jest/expect': 29.0.3 + '@jest/types': 29.0.3 + jest-mock: 29.0.3 transitivePeerDependencies: - supports-color dev: true - /@jest/reporters/29.0.2: - resolution: {integrity: sha512-Kr41qejRQHHkCgWHC9YwSe7D5xivqP4XML+PvgwsnRFaykKdNflDUb4+xLXySOU+O/bPkVdFpGzUpVNSJChCrw==} + /@jest/reporters/29.0.3: + resolution: {integrity: sha512-3+QU3d4aiyOWfmk1obDerie4XNCaD5Xo1IlKNde2yGEi02WQD+ZQD0i5Hgqm1e73sMV7kw6pMlCnprtEwEVwxw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 @@ -2619,10 +2619,10 @@ packages: optional: true dependencies: '@bcoe/v8-coverage': 0.2.3 - '@jest/console': 29.0.2 - '@jest/test-result': 29.0.2 - '@jest/transform': 29.0.2 - '@jest/types': 29.0.2 + '@jest/console': 29.0.3 + '@jest/test-result': 29.0.3 + '@jest/transform': 29.0.3 + '@jest/types': 29.0.3 '@jridgewell/trace-mapping': 0.3.15 '@types/node': 16.11.58 chalk: 4.1.2 @@ -2635,9 +2635,9 @@ packages: istanbul-lib-report: 3.0.0 istanbul-lib-source-maps: 4.0.1 istanbul-reports: 3.1.5 - jest-message-util: 29.0.2 - jest-util: 29.0.2 - jest-worker: 29.0.2 + jest-message-util: 29.0.3 + jest-util: 29.0.3 + jest-worker: 29.0.3 slash: 3.0.0 string-length: 4.0.2 strip-ansi: 6.0.1 @@ -2680,23 +2680,23 @@ packages: collect-v8-coverage: 1.0.1 dev: true - /@jest/test-result/29.0.2: - resolution: {integrity: sha512-b5rDc0lLL6Kx73LyCx6370k9uZ8o5UKdCpMS6Za3ke7H9y8PtAU305y6TeghpBmf2In8p/qqi3GpftgzijSsNw==} + /@jest/test-result/29.0.3: + resolution: {integrity: sha512-vViVnQjCgTmbhDKEonKJPtcFe9G/CJO4/Np4XwYJah+lF2oI7KKeRp8t1dFvv44wN2NdbDb/qC6pi++Vpp0Dlg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/console': 29.0.2 - '@jest/types': 29.0.2 + '@jest/console': 29.0.3 + '@jest/types': 29.0.3 '@types/istanbul-lib-coverage': 2.0.4 collect-v8-coverage: 1.0.1 dev: true - /@jest/test-sequencer/29.0.2: - resolution: {integrity: sha512-fsyZqHBlXNMv5ZqjQwCuYa2pskXCO0DVxh5aaVCuAtwzHuYEGrhordyEncBLQNuCGQSYgElrEEmS+7wwFnnMKw==} + /@jest/test-sequencer/29.0.3: + resolution: {integrity: sha512-Hf4+xYSWZdxTNnhDykr8JBs0yBN/nxOXyUQWfotBUqqy0LF9vzcFB0jm/EDNZCx587znLWTIgxcokW7WeZMobQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/test-result': 29.0.2 + '@jest/test-result': 29.0.3 graceful-fs: 4.2.10 - jest-haste-map: 29.0.2 + jest-haste-map: 29.0.3 slash: 3.0.0 dev: true @@ -2723,21 +2723,21 @@ packages: - supports-color dev: true - /@jest/transform/29.0.2: - resolution: {integrity: sha512-lajVQx2AnsR+Pa17q2zR7eikz2PkPs1+g/qPbZkqQATeS/s6eT55H+yHcsLfuI/0YQ/4VSBepSu3bOX+44q0aA==} + /@jest/transform/29.0.3: + resolution: {integrity: sha512-C5ihFTRYaGDbi/xbRQRdbo5ddGtI4VSpmL6AIcZxdhwLbXMa7PcXxxqyI91vGOFHnn5aVM3WYnYKCHEqmLVGzg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@babel/core': 7.19.0 - '@jest/types': 29.0.2 + '@jest/types': 29.0.3 '@jridgewell/trace-mapping': 0.3.15 babel-plugin-istanbul: 6.1.1 chalk: 4.1.2 convert-source-map: 1.8.0 fast-json-stable-stringify: 2.1.0 graceful-fs: 4.2.10 - jest-haste-map: 29.0.2 + jest-haste-map: 29.0.3 jest-regex-util: 29.0.0 - jest-util: 29.0.2 + jest-util: 29.0.3 micromatch: 4.0.5 pirates: 4.0.5 slash: 3.0.0 @@ -2769,8 +2769,8 @@ packages: chalk: 4.1.2 dev: true - /@jest/types/29.0.2: - resolution: {integrity: sha512-5WNMesBLmlkt1+fVkoCjHa0X3i3q8zc4QLTDkdHgCa2gyPZc7rdlZBWgVLqwS1860ZW5xJuCDwAzqbGaXIr/ew==} + /@jest/types/29.0.3: + resolution: {integrity: sha512-coBJmOQvurXjN1Hh5PzF7cmsod0zLIOXpP8KD161mqNlroMhLcwpODiEzi7ZsRl5Z/AIuxpeNm8DCl43F4kz8A==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/schemas': 29.0.0 @@ -3319,7 +3319,7 @@ packages: resolution: {integrity: sha512-WEOTgRsbYkvA/KCsDwVEGkd7WAr1e3g31VHQ8zy5gul/V1qKullU/BU5I68X5v7V3GnB9eotmom4v5a5gjxorw==} dependencies: '@babel/parser': 7.18.11 - '@babel/types': 7.18.10 + '@babel/types': 7.19.0 '@types/babel__generator': 7.6.4 '@types/babel__template': 7.4.1 '@types/babel__traverse': 7.17.1 @@ -3377,11 +3377,11 @@ packages: '@types/istanbul-lib-report': 3.0.0 dev: true - /@types/jest/29.0.0: - resolution: {integrity: sha512-X6Zjz3WO4cT39Gkl0lZ2baFRaEMqJl5NC1OjElkwtNzAlbkr2K/WJXkBkH5VP0zx4Hgsd2TZYdOEfvp2Dxia+Q==} + /@types/jest/29.0.1: + resolution: {integrity: sha512-CAZrjLRZs4xEdIrfrdV74xK1Vo/BKQZwUcjJv3gp6gMeV3BsVxMnXTcgtYOKyphT4DPPo7jxVEVhuwJTQn3oPQ==} dependencies: - expect: 29.0.1 - pretty-format: 29.0.1 + expect: 29.0.2 + pretty-format: 29.0.2 dev: true /@types/jsdom/20.0.0: @@ -3467,7 +3467,7 @@ packages: /@types/testing-library__jest-dom/5.14.5: resolution: {integrity: sha512-SBwbxYoyPIvxHbeHxTZX2Pe/74F/tX2/D3mMvzabdeJ25bBojfW0TyB8BHrbq/9zaaKICJZjLP+8r6AeZMFCuQ==} dependencies: - '@types/jest': 29.0.0 + '@types/jest': 29.0.1 dev: true /@types/tough-cookie/4.0.2: @@ -3997,8 +3997,8 @@ packages: - supports-color dev: true - /babel-jest/29.0.2_@babel+core@7.19.0: - resolution: {integrity: sha512-yTu4/WSi/HzarjQtrJSwV+/0maoNt+iP0DmpvFJdv9yY+5BuNle8TbheHzzcSWj5gIHfuhpbLYHWRDYhWKyeKQ==} + /babel-jest/29.0.3_@babel+core@7.19.0: + resolution: {integrity: sha512-ApPyHSOhS/sVzwUOQIWJmdvDhBsMG01HX9z7ogtkp1TToHGGUWFlnXJUIzCgKPSfiYLn3ibipCYzsKSURHEwLg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: '@babel/core': ^7.8.0 @@ -4007,7 +4007,7 @@ packages: optional: true dependencies: '@babel/core': 7.19.0 - '@jest/transform': 29.0.2 + '@jest/transform': 29.0.3 '@types/babel__core': 7.1.19 babel-plugin-istanbul: 6.1.1 babel-preset-jest: 29.0.2_@babel+core@7.19.0 @@ -4042,7 +4042,7 @@ packages: engines: {node: '>= 10.14.2'} dependencies: '@babel/template': 7.18.10 - '@babel/types': 7.18.10 + '@babel/types': 7.19.0 '@types/babel__core': 7.1.19 '@types/babel__traverse': 7.17.1 dev: true @@ -5147,7 +5147,7 @@ packages: eslint: 8.23.0 dev: true - /eslint-config-react-app/7.0.1_4fdwrjms7sui3pmirbrnmoo7cy: + /eslint-config-react-app/7.0.1_cr6wnmwwhjzeqnbkyvjwx3muuu: resolution: {integrity: sha512-K6rNzvkIeHaTd8m/QEh1Zko0KI7BACWkkneSs6s9cKZC/J27X3eZR6Upt1jkmZ/4FK+XUOPPxMEN7+lbUXfSlA==} engines: {node: '>=14.0.0'} peerDependencies: @@ -5167,7 +5167,7 @@ packages: eslint: 8.23.0 eslint-plugin-flowtype: 8.0.3_eslint@8.23.0 eslint-plugin-import: 2.26.0_ikxfxf6lcdzwf3sfhs76tj4x7m - eslint-plugin-jest: 25.7.0_62vgemiqelkrsjmvvizzfhdaya + eslint-plugin-jest: 25.7.0_awpfis7kegyr7vghibvuyaqt2u eslint-plugin-jsx-a11y: 6.6.1_eslint@8.23.0 eslint-plugin-react: 7.31.8_eslint@8.23.0 eslint-plugin-react-hooks: 4.6.0_eslint@8.23.0 @@ -5291,7 +5291,7 @@ packages: - supports-color dev: true - /eslint-plugin-jest/25.7.0_62vgemiqelkrsjmvvizzfhdaya: + /eslint-plugin-jest/25.7.0_awpfis7kegyr7vghibvuyaqt2u: resolution: {integrity: sha512-PWLUEXeeF7C9QGKqvdSbzLOiLTx+bno7/HC9eefePfEb257QFHg7ye3dh80AZVkaa/RQsBB1Q/ORQvg2X7F0NQ==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} peerDependencies: @@ -5307,7 +5307,7 @@ packages: '@typescript-eslint/eslint-plugin': 5.36.2_2l2r3i3lm6jysqd4ac3ql4n2mm '@typescript-eslint/experimental-utils': 5.30.6_itqs5654cmlnjraw6gjzqacppi eslint: 8.23.0 - jest: 29.0.2_@types+node@16.11.58 + jest: 29.0.3_@types+node@16.11.58 transitivePeerDependencies: - supports-color - typescript @@ -5581,17 +5581,6 @@ packages: - supports-color dev: true - /expect/29.0.1: - resolution: {integrity: sha512-yQgemsjLU+1S8t2A7pXT3Sn/v5/37LY8J+tocWtKEA0iEYYc6gfKbbJJX2fxHZmd7K9WpdbQqXUpmYkq1aewYg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@jest/expect-utils': 29.0.1 - jest-get-type: 29.0.0 - jest-matcher-utils: 29.0.1 - jest-message-util: 29.0.1 - jest-util: 29.0.1 - dev: true - /expect/29.0.2: resolution: {integrity: sha512-JeJlAiLKn4aApT4pzUXBVxl3NaZidWIOdg//smaIlP9ZMBDkHZGFd9ubphUZP9pUyDEo7bC6M0IIZR51o75qQw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -5603,6 +5592,17 @@ packages: jest-util: 29.0.2 dev: true + /expect/29.0.3: + resolution: {integrity: sha512-t8l5DTws3212VbmPL+tBFXhjRHLmctHB0oQbL8eUc6S7NzZtYUhycrFO9mkxA0ZUC6FAWdNi7JchJSkODtcu1Q==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/expect-utils': 29.0.3 + jest-get-type: 29.0.0 + jest-matcher-utils: 29.0.3 + jest-message-util: 29.0.3 + jest-util: 29.0.3 + dev: true + /extend-shallow/2.0.1: resolution: {integrity: sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==} engines: {node: '>=0.10.0'} @@ -6522,35 +6522,35 @@ packages: p-limit: 3.1.0 dev: true - /jest-circus/29.0.2: - resolution: {integrity: sha512-YTPEsoE1P1X0bcyDQi3QIkpt2Wl9om9k2DQRuLFdS5x8VvAKSdYAVJufgvudhnKgM8WHvvAzhBE+1DRQB8x1CQ==} + /jest-circus/29.0.3: + resolution: {integrity: sha512-QeGzagC6Hw5pP+df1+aoF8+FBSgkPmraC1UdkeunWh0jmrp7wC0Hr6umdUAOELBQmxtKAOMNC3KAdjmCds92Zg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/environment': 29.0.2 - '@jest/expect': 29.0.2 - '@jest/test-result': 29.0.2 - '@jest/types': 29.0.2 + '@jest/environment': 29.0.3 + '@jest/expect': 29.0.3 + '@jest/test-result': 29.0.3 + '@jest/types': 29.0.3 '@types/node': 16.11.58 chalk: 4.1.2 co: 4.6.0 dedent: 0.7.0 is-generator-fn: 2.1.0 - jest-each: 29.0.2 - jest-matcher-utils: 29.0.2 - jest-message-util: 29.0.2 - jest-runtime: 29.0.2 - jest-snapshot: 29.0.2 - jest-util: 29.0.2 + jest-each: 29.0.3 + jest-matcher-utils: 29.0.3 + jest-message-util: 29.0.3 + jest-runtime: 29.0.3 + jest-snapshot: 29.0.3 + jest-util: 29.0.3 p-limit: 3.1.0 - pretty-format: 29.0.2 + pretty-format: 29.0.3 slash: 3.0.0 stack-utils: 2.0.5 transitivePeerDependencies: - supports-color dev: true - /jest-cli/29.0.2_@types+node@16.11.58: - resolution: {integrity: sha512-tlf8b+4KcUbBGr25cywIi3+rbZ4+G+SiG8SvY552m9sRZbXPafdmQRyeVE/C/R8K+TiBAMrTIUmV2SlStRJ40g==} + /jest-cli/29.0.3_@types+node@16.11.58: + resolution: {integrity: sha512-aUy9Gd/Kut1z80eBzG10jAn6BgS3BoBbXyv+uXEqBJ8wnnuZ5RpNfARoskSrTIy1GY4a8f32YGuCMwibtkl9CQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true peerDependencies: @@ -6559,16 +6559,16 @@ packages: node-notifier: optional: true dependencies: - '@jest/core': 29.0.2 - '@jest/test-result': 29.0.2 - '@jest/types': 29.0.2 + '@jest/core': 29.0.3 + '@jest/test-result': 29.0.3 + '@jest/types': 29.0.3 chalk: 4.1.2 exit: 0.1.2 graceful-fs: 4.2.10 import-local: 3.1.0 - jest-config: 29.0.2_@types+node@16.11.58 - jest-util: 29.0.2 - jest-validate: 29.0.2 + jest-config: 29.0.3_@types+node@16.11.58 + jest-util: 29.0.3 + jest-validate: 29.0.3 prompts: 2.4.2 yargs: 17.5.1 transitivePeerDependencies: @@ -6577,8 +6577,8 @@ packages: - ts-node dev: true - /jest-config/29.0.2_@types+node@16.11.58: - resolution: {integrity: sha512-RU4gzeUNZAFktYVzDGimDxeYoaiTnH100jkYYZgldqFamaZukF0IqmFx8+QrzVeEWccYg10EEJT3ox1Dq5b74w==} + /jest-config/29.0.3_@types+node@16.11.58: + resolution: {integrity: sha512-U5qkc82HHVYe3fNu2CRXLN4g761Na26rWKf7CjM8LlZB3In1jadEkZdMwsE37rd9RSPV0NfYaCjHdk/gu3v+Ew==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: '@types/node': '*' @@ -6590,26 +6590,26 @@ packages: optional: true dependencies: '@babel/core': 7.19.0 - '@jest/test-sequencer': 29.0.2 - '@jest/types': 29.0.2 + '@jest/test-sequencer': 29.0.3 + '@jest/types': 29.0.3 '@types/node': 16.11.58 - babel-jest: 29.0.2_@babel+core@7.19.0 + babel-jest: 29.0.3_@babel+core@7.19.0 chalk: 4.1.2 ci-info: 3.3.2 deepmerge: 4.2.2 glob: 7.2.3 graceful-fs: 4.2.10 - jest-circus: 29.0.2 - jest-environment-node: 29.0.2 + jest-circus: 29.0.3 + jest-environment-node: 29.0.3 jest-get-type: 29.0.0 jest-regex-util: 29.0.0 - jest-resolve: 29.0.2 - jest-runner: 29.0.2 - jest-util: 29.0.2 - jest-validate: 29.0.2 + jest-resolve: 29.0.3 + jest-runner: 29.0.3 + jest-util: 29.0.3 + jest-validate: 29.0.3 micromatch: 4.0.5 parse-json: 5.2.0 - pretty-format: 29.0.2 + pretty-format: 29.0.3 slash: 3.0.0 strip-json-comments: 3.1.1 transitivePeerDependencies: @@ -6623,7 +6623,17 @@ packages: chalk: 4.1.2 diff-sequences: 29.0.0 jest-get-type: 29.0.0 - pretty-format: 29.0.2 + pretty-format: 29.0.3 + dev: true + + /jest-diff/29.0.3: + resolution: {integrity: sha512-+X/AIF5G/vX9fWK+Db9bi9BQas7M9oBME7egU7psbn4jlszLFCu0dW63UgeE6cs/GANq4fLaT+8sGHQQ0eCUfg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + chalk: 4.1.2 + diff-sequences: 29.0.0 + jest-get-type: 29.0.0 + pretty-format: 29.0.3 dev: true /jest-docblock/29.0.0: @@ -6633,28 +6643,28 @@ packages: detect-newline: 3.1.0 dev: true - /jest-each/29.0.2: - resolution: {integrity: sha512-+sA9YjrJl35iCg0W0VCrgCVj+wGhDrrKQ+YAqJ/DHBC4gcDFAeePtRRhpJnX9gvOZ63G7gt52pwp2PesuSEx0Q==} + /jest-each/29.0.3: + resolution: {integrity: sha512-wILhZfESURHHBNvPMJ0lZlYZrvOQJxAo3wNHi+ycr90V7M+uGR9Gh4+4a/BmaZF0XTyZsk4OiYEf3GJN7Ltqzg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/types': 29.0.2 + '@jest/types': 29.0.3 chalk: 4.1.2 jest-get-type: 29.0.0 - jest-util: 29.0.2 - pretty-format: 29.0.2 + jest-util: 29.0.3 + pretty-format: 29.0.3 dev: true - /jest-environment-jsdom/29.0.2: - resolution: {integrity: sha512-hWqC9FQI5yT04lTd4VJnzT5QObxq0xrSrqpGkqsYfxPeJYjyhriI7W2oJC5HZ1UbhnvA+8GS1nzgPsstvRpdVw==} + /jest-environment-jsdom/29.0.3: + resolution: {integrity: sha512-KIGvpm12c71hoYTjL4wC2c8K6KfhOHJqJtaHc1IApu5rG047YWZoEP13BlbucWfzGISBrmli8KFqdhdQEa8Wnw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/environment': 29.0.2 - '@jest/fake-timers': 29.0.2 - '@jest/types': 29.0.2 + '@jest/environment': 29.0.3 + '@jest/fake-timers': 29.0.3 + '@jest/types': 29.0.3 '@types/jsdom': 20.0.0 '@types/node': 16.11.58 - jest-mock: 29.0.2 - jest-util: 29.0.2 + jest-mock: 29.0.3 + jest-util: 29.0.3 jsdom: 20.0.0 transitivePeerDependencies: - bufferutil @@ -6663,16 +6673,16 @@ packages: - utf-8-validate dev: true - /jest-environment-node/29.0.2: - resolution: {integrity: sha512-4Fv8GXVCToRlMzDO94gvA8iOzKxQ7rhAbs8L+j8GPyTxGuUiYkV+63LecGeVdVhsL2KXih1sKnoqmH6tp89J7Q==} + /jest-environment-node/29.0.3: + resolution: {integrity: sha512-cdZqRCnmIlTXC+9vtvmfiY/40Cj6s2T0czXuq1whvQdmpzAnj4sbqVYuZ4zFHk766xTTJ+Ij3uUqkk8KCfXoyg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/environment': 29.0.2 - '@jest/fake-timers': 29.0.2 - '@jest/types': 29.0.2 + '@jest/environment': 29.0.3 + '@jest/fake-timers': 29.0.3 + '@jest/types': 29.0.3 '@types/node': 16.11.58 - jest-mock: 29.0.2 - jest-util: 29.0.2 + jest-mock: 29.0.3 + jest-util: 29.0.3 dev: true /jest-get-type/29.0.0: @@ -6703,41 +6713,31 @@ packages: - supports-color dev: true - /jest-haste-map/29.0.2: - resolution: {integrity: sha512-SOorh2ysQ0fe8gsF4gaUDhoMIWAvi2hXOkwThEO48qT3JqA8GLAUieQcIvdSEd6M0scRDe1PVmKc5tXR3Z0U0A==} + /jest-haste-map/29.0.3: + resolution: {integrity: sha512-uMqR99+GuBHo0RjRhOE4iA6LmsxEwRdgiIAQgMU/wdT2XebsLDz5obIwLZm/Psj+GwSEQhw9AfAVKGYbh2G55A==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/types': 29.0.2 + '@jest/types': 29.0.3 '@types/graceful-fs': 4.1.5 '@types/node': 16.11.58 anymatch: 3.1.2 fb-watchman: 2.0.1 graceful-fs: 4.2.10 jest-regex-util: 29.0.0 - jest-util: 29.0.2 - jest-worker: 29.0.2 + jest-util: 29.0.3 + jest-worker: 29.0.3 micromatch: 4.0.5 walker: 1.0.8 optionalDependencies: fsevents: 2.3.2 dev: true - /jest-leak-detector/29.0.2: - resolution: {integrity: sha512-5f0493qDeAxjUldkBSQg5D1cLadRgZVyWpTQvfJeQwQUpHQInE21AyVHVv64M7P2Ue8Z5EZ4BAcoDS/dSPPgMw==} + /jest-leak-detector/29.0.3: + resolution: {integrity: sha512-YfW/G63dAuiuQ3QmQlh8hnqLDe25WFY3eQhuc/Ev1AGmkw5zREblTh7TCSKLoheyggu6G9gxO2hY8p9o6xbaRQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: jest-get-type: 29.0.0 - pretty-format: 29.0.2 - dev: true - - /jest-matcher-utils/29.0.1: - resolution: {integrity: sha512-/e6UbCDmprRQFnl7+uBKqn4G22c/OmwriE5KCMVqxhElKCQUDcFnq5XM9iJeKtzy4DUjxT27y9VHmKPD8BQPaw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - chalk: 4.1.2 - jest-diff: 29.0.2 - jest-get-type: 29.0.0 - pretty-format: 29.0.2 + pretty-format: 29.0.3 dev: true /jest-matcher-utils/29.0.2: @@ -6747,7 +6747,17 @@ packages: chalk: 4.1.2 jest-diff: 29.0.2 jest-get-type: 29.0.0 - pretty-format: 29.0.2 + pretty-format: 29.0.3 + dev: true + + /jest-matcher-utils/29.0.3: + resolution: {integrity: sha512-RsR1+cZ6p1hDV4GSCQTg+9qjeotQCgkaleIKLK7dm+U4V/H2bWedU3RAtLm8+mANzZ7eDV33dMar4pejd7047w==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + chalk: 4.1.2 + jest-diff: 29.0.3 + jest-get-type: 29.0.0 + pretty-format: 29.0.3 dev: true /jest-message-util/28.1.3: @@ -6765,45 +6775,45 @@ packages: stack-utils: 2.0.5 dev: true - /jest-message-util/29.0.1: - resolution: {integrity: sha512-wRMAQt3HrLpxSubdnzOo68QoTfQ+NLXFzU0Heb18ZUzO2S9GgaXNEdQ4rpd0fI9dq2NXkpCk1IUWSqzYKji64A==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@babel/code-frame': 7.18.6 - '@jest/types': 29.0.2 - '@types/stack-utils': 2.0.1 - chalk: 4.1.2 - graceful-fs: 4.2.10 - micromatch: 4.0.5 - pretty-format: 29.0.2 - slash: 3.0.0 - stack-utils: 2.0.5 - dev: true - /jest-message-util/29.0.2: resolution: {integrity: sha512-kcJAgms3ckJV0wUoLsAM40xAhY+pb9FVSZwicjFU9PFkaTNmqh9xd99/CzKse48wPM1ANUQKmp03/DpkY+lGrA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@babel/code-frame': 7.18.6 - '@jest/types': 29.0.2 + '@jest/types': 29.0.3 '@types/stack-utils': 2.0.1 chalk: 4.1.2 graceful-fs: 4.2.10 micromatch: 4.0.5 - pretty-format: 29.0.2 + pretty-format: 29.0.3 slash: 3.0.0 stack-utils: 2.0.5 dev: true - /jest-mock/29.0.2: - resolution: {integrity: sha512-giWXOIT23UCxHCN2VUfUJ0Q7SmiqQwfSFXlCaIhW5anITpNQ+3vuLPQdKt5wkuwM37GrbFyHIClce8AAK9ft9g==} + /jest-message-util/29.0.3: + resolution: {integrity: sha512-7T8JiUTtDfppojosORAflABfLsLKMLkBHSWkjNQrjIltGoDzNGn7wEPOSfjqYAGTYME65esQzMJxGDjuLBKdOg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/types': 29.0.2 + '@babel/code-frame': 7.18.6 + '@jest/types': 29.0.3 + '@types/stack-utils': 2.0.1 + chalk: 4.1.2 + graceful-fs: 4.2.10 + micromatch: 4.0.5 + pretty-format: 29.0.3 + slash: 3.0.0 + stack-utils: 2.0.5 + dev: true + + /jest-mock/29.0.3: + resolution: {integrity: sha512-ort9pYowltbcrCVR43wdlqfAiFJXBx8l4uJDsD8U72LgBcetvEp+Qxj1W9ZYgMRoeAo+ov5cnAGF2B6+Oth+ww==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/types': 29.0.3 '@types/node': 16.11.58 dev: true - /jest-pnp-resolver/1.2.2_jest-resolve@29.0.2: + /jest-pnp-resolver/1.2.2_jest-resolve@29.0.3: resolution: {integrity: sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w==} engines: {node: '>=6'} peerDependencies: @@ -6812,7 +6822,7 @@ packages: jest-resolve: optional: true dependencies: - jest-resolve: 29.0.2 + jest-resolve: 29.0.3 dev: true /jest-regex-util/26.0.0: @@ -6830,84 +6840,84 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dev: true - /jest-resolve-dependencies/29.0.2: - resolution: {integrity: sha512-fSAu6eIG7wtGdnPJUkVVdILGzYAP9Dj/4+zvC8BrGe8msaUMJ9JeygU0Hf9+Uor6/icbuuzQn5See1uajLnAqg==} + /jest-resolve-dependencies/29.0.3: + resolution: {integrity: sha512-KzuBnXqNvbuCdoJpv8EanbIGObk7vUBNt/PwQPPx2aMhlv/jaXpUJsqWYRpP/0a50faMBY7WFFP8S3/CCzwfDw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: jest-regex-util: 29.0.0 - jest-snapshot: 29.0.2 + jest-snapshot: 29.0.3 transitivePeerDependencies: - supports-color dev: true - /jest-resolve/29.0.2: - resolution: {integrity: sha512-V3uLjSA+EHxLtjIDKTBXnY71hyx+8lusCqPXvqzkFO1uCGvVpjBfuOyp+KOLBNSuY61kM2jhepiMwt4eiJS+Vw==} + /jest-resolve/29.0.3: + resolution: {integrity: sha512-toVkia85Y/BPAjJasTC9zIPY6MmVXQPtrCk8SmiheC4MwVFE/CMFlOtMN6jrwPMC6TtNh8+sTMllasFeu1wMPg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: chalk: 4.1.2 graceful-fs: 4.2.10 - jest-haste-map: 29.0.2 - jest-pnp-resolver: 1.2.2_jest-resolve@29.0.2 - jest-util: 29.0.2 - jest-validate: 29.0.2 + jest-haste-map: 29.0.3 + jest-pnp-resolver: 1.2.2_jest-resolve@29.0.3 + jest-util: 29.0.3 + jest-validate: 29.0.3 resolve: 1.22.1 resolve.exports: 1.1.0 slash: 3.0.0 dev: true - /jest-runner/29.0.2: - resolution: {integrity: sha512-+D82iPZejI8t+SfduOO1deahC/QgLFf8aJBO++Znz3l2ETtOMdM7K4ATsGWzCFnTGio5yHaRifg1Su5Ybza5Nw==} + /jest-runner/29.0.3: + resolution: {integrity: sha512-Usu6VlTOZlCZoNuh3b2Tv/yzDpKqtiNAetG9t3kJuHfUyVMNW7ipCCJOUojzKkjPoaN7Bl1f7Buu6PE0sGpQxw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/console': 29.0.2 - '@jest/environment': 29.0.2 - '@jest/test-result': 29.0.2 - '@jest/transform': 29.0.2 - '@jest/types': 29.0.2 + '@jest/console': 29.0.3 + '@jest/environment': 29.0.3 + '@jest/test-result': 29.0.3 + '@jest/transform': 29.0.3 + '@jest/types': 29.0.3 '@types/node': 16.11.58 chalk: 4.1.2 emittery: 0.10.2 graceful-fs: 4.2.10 jest-docblock: 29.0.0 - jest-environment-node: 29.0.2 - jest-haste-map: 29.0.2 - jest-leak-detector: 29.0.2 - jest-message-util: 29.0.2 - jest-resolve: 29.0.2 - jest-runtime: 29.0.2 - jest-util: 29.0.2 - jest-watcher: 29.0.2 - jest-worker: 29.0.2 + jest-environment-node: 29.0.3 + jest-haste-map: 29.0.3 + jest-leak-detector: 29.0.3 + jest-message-util: 29.0.3 + jest-resolve: 29.0.3 + jest-runtime: 29.0.3 + jest-util: 29.0.3 + jest-watcher: 29.0.3 + jest-worker: 29.0.3 p-limit: 3.1.0 source-map-support: 0.5.13 transitivePeerDependencies: - supports-color dev: true - /jest-runtime/29.0.2: - resolution: {integrity: sha512-DO6F81LX4okOgjJLkLySv10E5YcV5NHUbY1ZqAUtofxdQE+q4hjH0P2gNsY8x3z3sqgw7O/+919SU4r18Fcuig==} + /jest-runtime/29.0.3: + resolution: {integrity: sha512-12gZXRQ7ozEeEHKTY45a+YLqzNDR/x4c//X6AqwKwKJPpWM8FY4vwn4VQJOcLRS3Nd1fWwgP7LU4SoynhuUMHQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/environment': 29.0.2 - '@jest/fake-timers': 29.0.2 - '@jest/globals': 29.0.2 + '@jest/environment': 29.0.3 + '@jest/fake-timers': 29.0.3 + '@jest/globals': 29.0.3 '@jest/source-map': 29.0.0 - '@jest/test-result': 29.0.2 - '@jest/transform': 29.0.2 - '@jest/types': 29.0.2 + '@jest/test-result': 29.0.3 + '@jest/transform': 29.0.3 + '@jest/types': 29.0.3 '@types/node': 16.11.58 chalk: 4.1.2 cjs-module-lexer: 1.2.2 collect-v8-coverage: 1.0.1 glob: 7.2.3 graceful-fs: 4.2.10 - jest-haste-map: 29.0.2 - jest-message-util: 29.0.2 - jest-mock: 29.0.2 + jest-haste-map: 29.0.3 + jest-message-util: 29.0.3 + jest-mock: 29.0.3 jest-regex-util: 29.0.0 - jest-resolve: 29.0.2 - jest-snapshot: 29.0.2 - jest-util: 29.0.2 + jest-resolve: 29.0.3 + jest-snapshot: 29.0.3 + jest-util: 29.0.3 slash: 3.0.0 strip-bom: 4.0.0 transitivePeerDependencies: @@ -6922,8 +6932,8 @@ packages: graceful-fs: 4.2.10 dev: true - /jest-snapshot/29.0.2: - resolution: {integrity: sha512-26C4PzGKaX5gkoKg8UzYGVy2HPVcTaROSkf0gwnHu3lGeTB7bAIJBovvVPZoiJ20IximJELQs/r8WSDRCuGX2A==} + /jest-snapshot/29.0.3: + resolution: {integrity: sha512-52q6JChm04U3deq+mkQ7R/7uy7YyfVIrebMi6ZkBoDJ85yEjm/sJwdr1P0LOIEHmpyLlXrxy3QP0Zf5J2kj0ew==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@babel/core': 7.19.0 @@ -6932,23 +6942,23 @@ packages: '@babel/plugin-syntax-typescript': 7.18.6_@babel+core@7.19.0 '@babel/traverse': 7.19.0 '@babel/types': 7.19.0 - '@jest/expect-utils': 29.0.2 - '@jest/transform': 29.0.2 - '@jest/types': 29.0.2 + '@jest/expect-utils': 29.0.3 + '@jest/transform': 29.0.3 + '@jest/types': 29.0.3 '@types/babel__traverse': 7.17.1 '@types/prettier': 2.6.3 babel-preset-current-node-syntax: 1.0.1_@babel+core@7.19.0 chalk: 4.1.2 - expect: 29.0.2 + expect: 29.0.3 graceful-fs: 4.2.10 - jest-diff: 29.0.2 + jest-diff: 29.0.3 jest-get-type: 29.0.0 - jest-haste-map: 29.0.2 - jest-matcher-utils: 29.0.2 - jest-message-util: 29.0.2 - jest-util: 29.0.2 + jest-haste-map: 29.0.3 + jest-matcher-utils: 29.0.3 + jest-message-util: 29.0.3 + jest-util: 29.0.3 natural-compare: 1.4.0 - pretty-format: 29.0.2 + pretty-format: 29.0.3 semver: 7.3.7 transitivePeerDependencies: - supports-color @@ -6982,23 +6992,11 @@ packages: picomatch: 2.3.1 dev: true - /jest-util/29.0.1: - resolution: {integrity: sha512-GIWkgNfkeA9d84rORDHPGGTFBrRD13A38QVSKE0bVrGSnoR1KDn8Kqz+0yI5kezMgbT/7zrWaruWP1Kbghlb2A==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@jest/types': 29.0.2 - '@types/node': 16.11.58 - chalk: 4.1.2 - ci-info: 3.3.2 - graceful-fs: 4.2.10 - picomatch: 2.3.1 - dev: true - /jest-util/29.0.2: resolution: {integrity: sha512-ozk8ruEEEACxqpz0hN9UOgtPZS0aN+NffwQduR5dVlhN+eN47vxurtvgZkYZYMpYrsmlAEx1XabkB3BnN0GfKQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/types': 29.0.2 + '@jest/types': 29.0.3 '@types/node': 16.11.58 chalk: 4.1.2 ci-info: 3.3.2 @@ -7006,19 +7004,31 @@ packages: picomatch: 2.3.1 dev: true - /jest-validate/29.0.2: - resolution: {integrity: sha512-AeRKm7cEucSy7tr54r3LhiGIXYvOILUwBM1S7jQkKs6YelwAlWKsmZGVrQR7uwsd31rBTnR5NQkODi1Z+6TKIQ==} + /jest-util/29.0.3: + resolution: {integrity: sha512-Q0xaG3YRG8QiTC4R6fHjHQPaPpz9pJBEi0AeOE4mQh/FuWOijFjGXMMOfQEaU9i3z76cNR7FobZZUQnL6IyfdQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/types': 29.0.2 + '@jest/types': 29.0.3 + '@types/node': 16.11.58 + chalk: 4.1.2 + ci-info: 3.3.2 + graceful-fs: 4.2.10 + picomatch: 2.3.1 + dev: true + + /jest-validate/29.0.3: + resolution: {integrity: sha512-OebiqqT6lK8cbMPtrSoS3aZP4juID762lZvpf1u+smZnwTEBCBInan0GAIIhv36MxGaJvmq5uJm7dl5gVt+Zrw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/types': 29.0.3 camelcase: 6.3.0 chalk: 4.1.2 jest-get-type: 29.0.0 leven: 3.1.0 - pretty-format: 29.0.2 + pretty-format: 29.0.3 dev: true - /jest-watch-typeahead/2.1.1_jest@29.0.2: + /jest-watch-typeahead/2.1.1_jest@29.0.3: resolution: {integrity: sha512-yKrj2VBDJoMLlD6lpfWfIQpSSC1GFGvPHaLnJWRhL/PiLlBDRWFwCYe21h0o+peqcVlilQhIa2g2vncaBXS73g==} engines: {node: ^14.17.0 || ^16.10.0 || >=18.0.0} peerDependencies: @@ -7026,7 +7036,7 @@ packages: dependencies: ansi-escapes: 5.0.0 chalk: 4.1.2 - jest: 29.0.2_@types+node@16.11.58 + jest: 29.0.3_@types+node@16.11.58 jest-regex-util: 28.0.2 jest-watcher: 28.1.3 slash: 4.0.0 @@ -7048,17 +7058,17 @@ packages: string-length: 4.0.2 dev: true - /jest-watcher/29.0.2: - resolution: {integrity: sha512-ds2bV0oyUdYoyrUTv4Ga5uptz4cEvmmP/JzqDyzZZanvrIn8ipxg5l3SDOAIiyuAx1VdHd2FBzeXPFO5KPH8vQ==} + /jest-watcher/29.0.3: + resolution: {integrity: sha512-tQX9lU91A+9tyUQKUMp0Ns8xAcdhC9fo73eqA3LFxP2bSgiF49TNcc+vf3qgGYYK9qRjFpXW9+4RgF/mbxyOOw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/test-result': 29.0.2 - '@jest/types': 29.0.2 + '@jest/test-result': 29.0.3 + '@jest/types': 29.0.3 '@types/node': 16.11.58 ansi-escapes: 4.3.2 chalk: 4.1.2 emittery: 0.10.2 - jest-util: 29.0.2 + jest-util: 29.0.3 string-length: 4.0.2 dev: true @@ -7071,8 +7081,8 @@ packages: supports-color: 7.2.0 dev: true - /jest-worker/29.0.2: - resolution: {integrity: sha512-EyvBlYcvd2pg28yg5A3OODQnqK9LI1kitnGUZUG5/NYIeaRgewtYBKB5wlr7oXj8zPCkzev7EmnTCsrXK7V+Xw==} + /jest-worker/29.0.3: + resolution: {integrity: sha512-Tl/YWUugQOjoTYwjKdfJWkSOfhufJHO5LhXTSZC3TRoQKO+fuXnZAdoXXBlpLXKGODBL3OvdUasfDD4PcMe6ng==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@types/node': 16.11.58 @@ -7080,8 +7090,8 @@ packages: supports-color: 8.1.1 dev: true - /jest/29.0.2_@types+node@16.11.58: - resolution: {integrity: sha512-enziNbNUmXTcTaTP/Uq5rV91r0Yqy2UKzLUIabxMpGm9YHz8qpbJhiRnNVNvm6vzWfzt/0o97NEHH8/3udoClA==} + /jest/29.0.3_@types+node@16.11.58: + resolution: {integrity: sha512-ElgUtJBLgXM1E8L6K1RW1T96R897YY/3lRYqq9uVcPWtP2AAl/nQ16IYDh/FzQOOQ12VEuLdcPU83mbhG2C3PQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true peerDependencies: @@ -7090,10 +7100,10 @@ packages: node-notifier: optional: true dependencies: - '@jest/core': 29.0.2 - '@jest/types': 29.0.2 + '@jest/core': 29.0.3 + '@jest/types': 29.0.3 import-local: 3.1.0 - jest-cli: 29.0.2_@types+node@16.11.58 + jest-cli: 29.0.3_@types+node@16.11.58 transitivePeerDependencies: - '@types/node' - supports-color @@ -7977,8 +7987,8 @@ packages: react-is: 18.2.0 dev: true - /pretty-format/29.0.1: - resolution: {integrity: sha512-iTHy3QZMzuL484mSTYbQIM1AHhEQsH8mXWS2/vd2yFBYnG3EBqGiMONo28PlPgrW7P/8s/1ISv+y7WH306l8cw==} + /pretty-format/29.0.2: + resolution: {integrity: sha512-wp3CdtUa3cSJVFn3Miu5a1+pxc1iPIQTenOAn+x5erXeN1+ryTcLesV5pbK/rlW5EKwp27x38MoYfNGaNXDDhg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/schemas': 29.0.0 @@ -7986,8 +7996,8 @@ packages: react-is: 18.2.0 dev: true - /pretty-format/29.0.2: - resolution: {integrity: sha512-wp3CdtUa3cSJVFn3Miu5a1+pxc1iPIQTenOAn+x5erXeN1+ryTcLesV5pbK/rlW5EKwp27x38MoYfNGaNXDDhg==} + /pretty-format/29.0.3: + resolution: {integrity: sha512-cHudsvQr1K5vNVLbvYF/nv3Qy/F/BcEKxGuIeMiVMRHxPOO1RxXooP8g/ZrwAp7Dx+KdMZoOc7NxLHhMrP2f9Q==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/schemas': 29.0.0 From 528c298e7511e062e87f01cc8113eebcbae1f5b5 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 12 Sep 2022 08:32:14 +1000 Subject: [PATCH 002/263] build(deps): update dependency jest-watch-typeahead to v2.2.0 (#4001) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- web/package.json | 2 +- web/pnpm-lock.yaml | 109 +++------------------------------------------ 2 files changed, 7 insertions(+), 104 deletions(-) diff --git a/web/package.json b/web/package.json index 474203cfa..05132e7ec 100644 --- a/web/package.json +++ b/web/package.json @@ -171,7 +171,7 @@ "jest": "29.0.3", "jest-environment-jsdom": "29.0.3", "jest-transform-stub": "2.0.0", - "jest-watch-typeahead": "2.1.1", + "jest-watch-typeahead": "2.2.0", "prettier": "2.7.1", "react-test-renderer": "18.2.0", "typescript": "4.8.3", diff --git a/web/pnpm-lock.yaml b/web/pnpm-lock.yaml index c549fa210..283f4019d 100644 --- a/web/pnpm-lock.yaml +++ b/web/pnpm-lock.yaml @@ -45,7 +45,7 @@ specifiers: jest: 29.0.3 jest-environment-jsdom: 29.0.3 jest-transform-stub: 2.0.0 - jest-watch-typeahead: 2.1.1 + jest-watch-typeahead: 2.2.0 prettier: 2.7.1 qrcode.react: 3.1.0 query-string: 7.1.1 @@ -120,7 +120,7 @@ devDependencies: jest: 29.0.3_@types+node@16.11.58 jest-environment-jsdom: 29.0.3 jest-transform-stub: 2.0.0 - jest-watch-typeahead: 2.1.1_jest@29.0.3 + jest-watch-typeahead: 2.2.0_jest@29.0.3 prettier: 2.7.1 react-test-renderer: 18.2.0_react@18.2.0 typescript: 4.8.3 @@ -2485,18 +2485,6 @@ packages: engines: {node: '>=8'} dev: true - /@jest/console/28.1.3: - resolution: {integrity: sha512-QPAkP5EwKdK/bxIr6C1I4Vs0rm2nHiANzj/Z5X2JQkrZo6IqvC4ldZ9K95tF0HdidhA8Bo6egxSzUFPYKcEXLw==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} - dependencies: - '@jest/types': 28.1.3 - '@types/node': 16.11.58 - chalk: 4.1.2 - jest-message-util: 28.1.3 - jest-util: 28.1.3 - slash: 3.0.0 - dev: true - /@jest/console/29.0.3: resolution: {integrity: sha512-cGg0r+klVHSYnfE977S9wmpuQ9L+iYuYgL+5bPXiUlUynLLYunRxswEmhBzvrSKGof5AKiHuTTmUKAqRcDY9dg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -2647,13 +2635,6 @@ packages: - supports-color dev: true - /@jest/schemas/28.1.3: - resolution: {integrity: sha512-/l/VWsdt/aBXgjshLWOFyFt3IVdYypu5y2Wn2rOO1un6nkqIn8SLXzgIMYXFyYsRWDyF5EthmKJMIdJvk08grg==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} - dependencies: - '@sinclair/typebox': 0.24.19 - dev: true - /@jest/schemas/29.0.0: resolution: {integrity: sha512-3Ab5HgYIIAnS0HjqJHQYZS+zXc4tUmTmBH3z83ajI6afXp8X3ZtdLX+nXx+I7LNkJD7uN9LAVhgnjDgZa2z0kA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -2670,16 +2651,6 @@ packages: graceful-fs: 4.2.10 dev: true - /@jest/test-result/28.1.3: - resolution: {integrity: sha512-kZAkxnSE+FqE8YjW8gNuoVkkC9I7S1qmenl8sGcDOLropASP+BkcGKwhXoyqQuGOGeYY0y/ixjrd/iERpEXHNg==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} - dependencies: - '@jest/console': 28.1.3 - '@jest/types': 28.1.3 - '@types/istanbul-lib-coverage': 2.0.4 - collect-v8-coverage: 1.0.1 - dev: true - /@jest/test-result/29.0.3: resolution: {integrity: sha512-vViVnQjCgTmbhDKEonKJPtcFe9G/CJO4/Np4XwYJah+lF2oI7KKeRp8t1dFvv44wN2NdbDb/qC6pi++Vpp0Dlg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -2757,18 +2728,6 @@ packages: chalk: 4.1.2 dev: true - /@jest/types/28.1.3: - resolution: {integrity: sha512-RyjiyMUZrKz/c+zlMFO1pm70DcIlST8AeWTkoUdZevew44wcNZQHsEVOiCVtgVnlFFD82FPaXycys58cf2muVQ==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} - dependencies: - '@jest/schemas': 28.1.3 - '@types/istanbul-lib-coverage': 2.0.4 - '@types/istanbul-reports': 3.0.1 - '@types/node': 16.11.58 - '@types/yargs': 17.0.10 - chalk: 4.1.2 - dev: true - /@jest/types/29.0.3: resolution: {integrity: sha512-coBJmOQvurXjN1Hh5PzF7cmsod0zLIOXpP8KD161mqNlroMhLcwpODiEzi7ZsRl5Z/AIuxpeNm8DCl43F4kz8A==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -6760,21 +6719,6 @@ packages: pretty-format: 29.0.3 dev: true - /jest-message-util/28.1.3: - resolution: {integrity: sha512-PFdn9Iewbt575zKPf1286Ht9EPoJmYT7P0kY+RibeYZ2XtOr53pDLEFoTWXbd1h4JiGiWpTBC84fc8xMXQMb7g==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} - dependencies: - '@babel/code-frame': 7.18.6 - '@jest/types': 28.1.3 - '@types/stack-utils': 2.0.1 - chalk: 4.1.2 - graceful-fs: 4.2.10 - micromatch: 4.0.5 - pretty-format: 28.1.3 - slash: 3.0.0 - stack-utils: 2.0.5 - dev: true - /jest-message-util/29.0.2: resolution: {integrity: sha512-kcJAgms3ckJV0wUoLsAM40xAhY+pb9FVSZwicjFU9PFkaTNmqh9xd99/CzKse48wPM1ANUQKmp03/DpkY+lGrA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -6830,11 +6774,6 @@ packages: engines: {node: '>= 10.14.2'} dev: true - /jest-regex-util/28.0.2: - resolution: {integrity: sha512-4s0IgyNIy0y9FK+cjoVYoxamT7Zeo7MhzqRGx7YDYmaQn1wucY9rotiGkBzzcMXTtjrCAP/f7f+E0F7+fxPNdw==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} - dev: true - /jest-regex-util/29.0.0: resolution: {integrity: sha512-BV7VW7Sy0fInHWN93MMPtlClweYv2qrSCwfeFWmpribGZtQPWNvRSq9XOVgOEjU1iBGRKXUZil0o2AH7Iy9Lug==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -6980,18 +6919,6 @@ packages: micromatch: 4.0.5 dev: true - /jest-util/28.1.3: - resolution: {integrity: sha512-XdqfpHwpcSRko/C35uLYFM2emRAltIIKZiJ9eAmhjsj0CqZMa0p1ib0R5fWIqGhn1a103DebTbpqIaP1qCQ6tQ==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} - dependencies: - '@jest/types': 28.1.3 - '@types/node': 16.11.58 - chalk: 4.1.2 - ci-info: 3.3.2 - graceful-fs: 4.2.10 - picomatch: 2.3.1 - dev: true - /jest-util/29.0.2: resolution: {integrity: sha512-ozk8ruEEEACxqpz0hN9UOgtPZS0aN+NffwQduR5dVlhN+eN47vxurtvgZkYZYMpYrsmlAEx1XabkB3BnN0GfKQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -7028,8 +6955,8 @@ packages: pretty-format: 29.0.3 dev: true - /jest-watch-typeahead/2.1.1_jest@29.0.3: - resolution: {integrity: sha512-yKrj2VBDJoMLlD6lpfWfIQpSSC1GFGvPHaLnJWRhL/PiLlBDRWFwCYe21h0o+peqcVlilQhIa2g2vncaBXS73g==} + /jest-watch-typeahead/2.2.0_jest@29.0.3: + resolution: {integrity: sha512-cM3Qbw9P+jUYxqUSt53KdDDFRVBG96XA6bsIAG0zffl/gUkNK/kjWcCX7R559BgPWs2/UDrsJHPIw2f6b0qZCw==} engines: {node: ^14.17.0 || ^16.10.0 || >=18.0.0} peerDependencies: jest: ^27.0.0 || ^28.0.0 || ^29.0.0 @@ -7037,27 +6964,13 @@ packages: ansi-escapes: 5.0.0 chalk: 4.1.2 jest: 29.0.3_@types+node@16.11.58 - jest-regex-util: 28.0.2 - jest-watcher: 28.1.3 + jest-regex-util: 29.0.0 + jest-watcher: 29.0.3 slash: 4.0.0 string-length: 5.0.1 strip-ansi: 7.0.1 dev: true - /jest-watcher/28.1.3: - resolution: {integrity: sha512-t4qcqj9hze+jviFPUN3YAtAEeFnr/azITXQEMARf5cMwKY2SMBRnCQTXLixTl20OR6mLh9KLMrgVJgJISym+1g==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} - dependencies: - '@jest/test-result': 28.1.3 - '@jest/types': 28.1.3 - '@types/node': 16.11.58 - ansi-escapes: 4.3.2 - chalk: 4.1.2 - emittery: 0.10.2 - jest-util: 28.1.3 - string-length: 4.0.2 - dev: true - /jest-watcher/29.0.3: resolution: {integrity: sha512-tQX9lU91A+9tyUQKUMp0Ns8xAcdhC9fo73eqA3LFxP2bSgiF49TNcc+vf3qgGYYK9qRjFpXW9+4RgF/mbxyOOw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -7977,16 +7890,6 @@ packages: react-is: 17.0.2 dev: true - /pretty-format/28.1.3: - resolution: {integrity: sha512-8gFb/To0OmxHR9+ZTb14Df2vNxdGCX8g1xWGUTqUw5TiZvcQf5sHKObd5UcPyLLyowNwDAMTF3XWOG1B6mxl1Q==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} - dependencies: - '@jest/schemas': 28.1.3 - ansi-regex: 5.0.1 - ansi-styles: 5.2.0 - react-is: 18.2.0 - dev: true - /pretty-format/29.0.2: resolution: {integrity: sha512-wp3CdtUa3cSJVFn3Miu5a1+pxc1iPIQTenOAn+x5erXeN1+ryTcLesV5pbK/rlW5EKwp27x38MoYfNGaNXDDhg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} From e9034a5f50b189fc6dfdaee8816bb451e1913b8e Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 12 Sep 2022 21:42:52 +1000 Subject: [PATCH 003/263] build(deps): update dependency eslint to v8.23.1 (#4003) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- web/package.json | 2 +- web/pnpm-lock.yaml | 174 +++++++++++++++++++++++---------------------- 2 files changed, 90 insertions(+), 86 deletions(-) diff --git a/web/package.json b/web/package.json index 05132e7ec..c79b42533 100644 --- a/web/package.json +++ b/web/package.json @@ -157,7 +157,7 @@ "@vitejs/plugin-react": "2.1.0", "esbuild": "0.15.7", "esbuild-jest": "0.5.0", - "eslint": "8.23.0", + "eslint": "8.23.1", "eslint-config-prettier": "8.5.0", "eslint-config-react-app": "7.0.1", "eslint-formatter-rdjson": "1.0.5", diff --git a/web/pnpm-lock.yaml b/web/pnpm-lock.yaml index 283f4019d..49b8f3d51 100644 --- a/web/pnpm-lock.yaml +++ b/web/pnpm-lock.yaml @@ -28,7 +28,7 @@ specifiers: classnames: 2.3.1 esbuild: 0.15.7 esbuild-jest: 0.5.0 - eslint: 8.23.0 + eslint: 8.23.1 eslint-config-prettier: 8.5.0 eslint-config-react-app: 7.0.1 eslint-formatter-rdjson: 1.0.5 @@ -101,21 +101,21 @@ devDependencies: '@types/react': 18.0.19 '@types/react-dom': 18.0.6 '@types/zxcvbn': 4.4.1 - '@typescript-eslint/eslint-plugin': 5.36.2_2l2r3i3lm6jysqd4ac3ql4n2mm - '@typescript-eslint/parser': 5.36.2_itqs5654cmlnjraw6gjzqacppi + '@typescript-eslint/eslint-plugin': 5.36.2_wxqvmnl3i4rbvz4ixyoiufmx3e + '@typescript-eslint/parser': 5.36.2_irgkl5vooow2ydyo6aokmferha '@vitejs/plugin-react': 2.1.0_vite@3.1.0 esbuild: 0.15.7 esbuild-jest: 0.5.0_esbuild@0.15.7 - eslint: 8.23.0 - eslint-config-prettier: 8.5.0_eslint@8.23.0 - eslint-config-react-app: 7.0.1_cr6wnmwwhjzeqnbkyvjwx3muuu + eslint: 8.23.1 + eslint-config-prettier: 8.5.0_eslint@8.23.1 + eslint-config-react-app: 7.0.1_jtmsnsp46pwebcrxlmbbcwtgs4 eslint-formatter-rdjson: 1.0.5 - eslint-import-resolver-typescript: 3.5.1_faomjyrlgqmwswvqymymzkxcqi - eslint-plugin-import: 2.26.0_ikxfxf6lcdzwf3sfhs76tj4x7m - eslint-plugin-jsx-a11y: 6.6.1_eslint@8.23.0 - eslint-plugin-prettier: 4.2.1_tgumt6uwl2md3n6uqnggd6wvce - eslint-plugin-react: 7.31.8_eslint@8.23.0 - eslint-plugin-react-hooks: 4.6.0_eslint@8.23.0 + eslint-import-resolver-typescript: 3.5.1_hdzsmr7kawaomymueo2tso6fjq + eslint-plugin-import: 2.26.0_bkwixupcywvgmrzjbgj7n47r6y + eslint-plugin-jsx-a11y: 6.6.1_eslint@8.23.1 + eslint-plugin-prettier: 4.2.1_cabrci5exjdaojcvd6xoxgeowu + eslint-plugin-react: 7.31.8_eslint@8.23.1 + eslint-plugin-react-hooks: 4.6.0_eslint@8.23.1 husky: 8.0.1 jest: 29.0.3_@types+node@16.11.58 jest-environment-jsdom: 29.0.3 @@ -125,7 +125,7 @@ devDependencies: react-test-renderer: 18.2.0_react@18.2.0 typescript: 4.8.3 vite: 3.1.0 - vite-plugin-eslint: 1.8.1_eslint@8.23.0+vite@3.1.0 + vite-plugin-eslint: 1.8.1_eslint@8.23.1+vite@3.1.0 vite-plugin-istanbul: 3.0.1 vite-plugin-svgr: 2.2.1_vite@3.1.0 vite-tsconfig-paths: 3.5.0_vite@3.1.0 @@ -201,7 +201,7 @@ packages: - supports-color dev: true - /@babel/eslint-parser/7.18.2_oj2zia55h5aiwaxxlc5vhqdsce: + /@babel/eslint-parser/7.18.2_i26poghmbi7wetx4acurtjxrle: resolution: {integrity: sha512-oFQYkE8SuH14+uR51JVAmdqwKYXGRjEXx7s+WiagVjqQ+HPE+nnwyF2qlVG8evUsUHmPcA+6YXMEDbIhEyQc5A==} engines: {node: ^10.13.0 || ^12.13.0 || >=14.0.0} peerDependencies: @@ -212,7 +212,7 @@ packages: optional: true dependencies: '@babel/core': 7.18.6 - eslint: 8.23.0 + eslint: 8.23.1 eslint-scope: 5.1.1 eslint-visitor-keys: 2.1.0 semver: 6.3.0 @@ -2387,8 +2387,8 @@ packages: dev: true optional: true - /@eslint/eslintrc/1.3.1: - resolution: {integrity: sha512-OhSY22oQQdw3zgPOOwdoj01l/Dzl1Z+xyUP33tkSN+aqyEhymJCcPHyXt+ylW8FSe0TfRC2VG+ROQOapD0aZSQ==} + /@eslint/eslintrc/1.3.2: + resolution: {integrity: sha512-AXYd23w1S/bv3fTs3Lz0vjiYemS08jWkI3hYyS9I1ry+0f+Yjs1wm+sU0BS8qDOPrBIkp4qHYC16I8uVtpLajQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: ajv: 6.12.6 @@ -3453,7 +3453,7 @@ packages: resolution: {integrity: sha512-3NoqvZC2W5gAC5DZbTpCeJ251vGQmgcWIHQJGq2J240HY6ErQ9aWKkwfoKJlHLx+A83WPNTZ9+3cd2ILxbvr1w==} dev: true - /@typescript-eslint/eslint-plugin/5.36.2_2l2r3i3lm6jysqd4ac3ql4n2mm: + /@typescript-eslint/eslint-plugin/5.36.2_wxqvmnl3i4rbvz4ixyoiufmx3e: resolution: {integrity: sha512-OwwR8LRwSnI98tdc2z7mJYgY60gf7I9ZfGjN5EjCwwns9bdTuQfAXcsjSB2wSQ/TVNYSGKf4kzVXbNGaZvwiXw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -3464,12 +3464,12 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/parser': 5.36.2_itqs5654cmlnjraw6gjzqacppi + '@typescript-eslint/parser': 5.36.2_irgkl5vooow2ydyo6aokmferha '@typescript-eslint/scope-manager': 5.36.2 - '@typescript-eslint/type-utils': 5.36.2_itqs5654cmlnjraw6gjzqacppi - '@typescript-eslint/utils': 5.36.2_itqs5654cmlnjraw6gjzqacppi + '@typescript-eslint/type-utils': 5.36.2_irgkl5vooow2ydyo6aokmferha + '@typescript-eslint/utils': 5.36.2_irgkl5vooow2ydyo6aokmferha debug: 4.3.4 - eslint: 8.23.0 + eslint: 8.23.1 functional-red-black-tree: 1.0.1 ignore: 5.2.0 regexpp: 3.2.0 @@ -3480,20 +3480,20 @@ packages: - supports-color dev: true - /@typescript-eslint/experimental-utils/5.30.6_itqs5654cmlnjraw6gjzqacppi: + /@typescript-eslint/experimental-utils/5.30.6_irgkl5vooow2ydyo6aokmferha: resolution: {integrity: sha512-bqvT+0L8IjtW7MCrMgm9oVNxs4g7mESro1mm5c1/SNfTnHuFTf9OUX1WzVkTz75M9cp//UrTrSmGvK48NEKshQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: - '@typescript-eslint/utils': 5.30.6_itqs5654cmlnjraw6gjzqacppi - eslint: 8.23.0 + '@typescript-eslint/utils': 5.30.6_irgkl5vooow2ydyo6aokmferha + eslint: 8.23.1 transitivePeerDependencies: - supports-color - typescript dev: true - /@typescript-eslint/parser/5.36.2_itqs5654cmlnjraw6gjzqacppi: + /@typescript-eslint/parser/5.36.2_irgkl5vooow2ydyo6aokmferha: resolution: {integrity: sha512-qS/Kb0yzy8sR0idFspI9Z6+t7mqk/oRjnAYfewG+VN73opAUvmYL3oPIMmgOX6CnQS6gmVIXGshlb5RY/R22pA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -3507,7 +3507,7 @@ packages: '@typescript-eslint/types': 5.36.2 '@typescript-eslint/typescript-estree': 5.36.2_typescript@4.8.3 debug: 4.3.4 - eslint: 8.23.0 + eslint: 8.23.1 typescript: 4.8.3 transitivePeerDependencies: - supports-color @@ -3529,7 +3529,7 @@ packages: '@typescript-eslint/visitor-keys': 5.36.2 dev: true - /@typescript-eslint/type-utils/5.36.2_itqs5654cmlnjraw6gjzqacppi: + /@typescript-eslint/type-utils/5.36.2_irgkl5vooow2ydyo6aokmferha: resolution: {integrity: sha512-rPQtS5rfijUWLouhy6UmyNquKDPhQjKsaKH0WnY6hl/07lasj8gPaH2UD8xWkePn6SC+jW2i9c2DZVDnL+Dokw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -3540,9 +3540,9 @@ packages: optional: true dependencies: '@typescript-eslint/typescript-estree': 5.36.2_typescript@4.8.3 - '@typescript-eslint/utils': 5.36.2_itqs5654cmlnjraw6gjzqacppi + '@typescript-eslint/utils': 5.36.2_irgkl5vooow2ydyo6aokmferha debug: 4.3.4 - eslint: 8.23.0 + eslint: 8.23.1 tsutils: 3.21.0_typescript@4.8.3 typescript: 4.8.3 transitivePeerDependencies: @@ -3601,7 +3601,7 @@ packages: - supports-color dev: true - /@typescript-eslint/utils/5.30.6_itqs5654cmlnjraw6gjzqacppi: + /@typescript-eslint/utils/5.30.6_irgkl5vooow2ydyo6aokmferha: resolution: {integrity: sha512-xFBLc/esUbLOJLk9jKv0E9gD/OH966M40aY9jJ8GiqpSkP2xOV908cokJqqhVd85WoIvHVHYXxSFE4cCSDzVvA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -3611,15 +3611,15 @@ packages: '@typescript-eslint/scope-manager': 5.30.6 '@typescript-eslint/types': 5.30.6 '@typescript-eslint/typescript-estree': 5.30.6_typescript@4.8.3 - eslint: 8.23.0 + eslint: 8.23.1 eslint-scope: 5.1.1 - eslint-utils: 3.0.0_eslint@8.23.0 + eslint-utils: 3.0.0_eslint@8.23.1 transitivePeerDependencies: - supports-color - typescript dev: true - /@typescript-eslint/utils/5.36.2_itqs5654cmlnjraw6gjzqacppi: + /@typescript-eslint/utils/5.36.2_irgkl5vooow2ydyo6aokmferha: resolution: {integrity: sha512-uNcopWonEITX96v9pefk9DC1bWMdkweeSsewJ6GeC7L6j2t0SJywisgkr9wUTtXk90fi2Eljj90HSHm3OGdGRg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -3629,9 +3629,9 @@ packages: '@typescript-eslint/scope-manager': 5.36.2 '@typescript-eslint/types': 5.36.2 '@typescript-eslint/typescript-estree': 5.36.2_typescript@4.8.3 - eslint: 8.23.0 + eslint: 8.23.1 eslint-scope: 5.1.1 - eslint-utils: 3.0.0_eslint@8.23.0 + eslint-utils: 3.0.0_eslint@8.23.1 transitivePeerDependencies: - supports-color - typescript @@ -5097,16 +5097,16 @@ packages: source-map: 0.6.1 dev: true - /eslint-config-prettier/8.5.0_eslint@8.23.0: + /eslint-config-prettier/8.5.0_eslint@8.23.1: resolution: {integrity: sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q==} hasBin: true peerDependencies: eslint: '>=7.0.0' dependencies: - eslint: 8.23.0 + eslint: 8.23.1 dev: true - /eslint-config-react-app/7.0.1_cr6wnmwwhjzeqnbkyvjwx3muuu: + /eslint-config-react-app/7.0.1_jtmsnsp46pwebcrxlmbbcwtgs4: resolution: {integrity: sha512-K6rNzvkIeHaTd8m/QEh1Zko0KI7BACWkkneSs6s9cKZC/J27X3eZR6Upt1jkmZ/4FK+XUOPPxMEN7+lbUXfSlA==} engines: {node: '>=14.0.0'} peerDependencies: @@ -5117,20 +5117,20 @@ packages: optional: true dependencies: '@babel/core': 7.18.6 - '@babel/eslint-parser': 7.18.2_oj2zia55h5aiwaxxlc5vhqdsce + '@babel/eslint-parser': 7.18.2_i26poghmbi7wetx4acurtjxrle '@rushstack/eslint-patch': 1.1.4 - '@typescript-eslint/eslint-plugin': 5.36.2_2l2r3i3lm6jysqd4ac3ql4n2mm - '@typescript-eslint/parser': 5.36.2_itqs5654cmlnjraw6gjzqacppi + '@typescript-eslint/eslint-plugin': 5.36.2_wxqvmnl3i4rbvz4ixyoiufmx3e + '@typescript-eslint/parser': 5.36.2_irgkl5vooow2ydyo6aokmferha babel-preset-react-app: 10.0.1 confusing-browser-globals: 1.0.11 - eslint: 8.23.0 - eslint-plugin-flowtype: 8.0.3_eslint@8.23.0 - eslint-plugin-import: 2.26.0_ikxfxf6lcdzwf3sfhs76tj4x7m - eslint-plugin-jest: 25.7.0_awpfis7kegyr7vghibvuyaqt2u - eslint-plugin-jsx-a11y: 6.6.1_eslint@8.23.0 - eslint-plugin-react: 7.31.8_eslint@8.23.0 - eslint-plugin-react-hooks: 4.6.0_eslint@8.23.0 - eslint-plugin-testing-library: 5.5.1_itqs5654cmlnjraw6gjzqacppi + eslint: 8.23.1 + eslint-plugin-flowtype: 8.0.3_eslint@8.23.1 + eslint-plugin-import: 2.26.0_bkwixupcywvgmrzjbgj7n47r6y + eslint-plugin-jest: 25.7.0_3uxzneizrm2frppo2upad2a3qa + eslint-plugin-jsx-a11y: 6.6.1_eslint@8.23.1 + eslint-plugin-react: 7.31.8_eslint@8.23.1 + eslint-plugin-react-hooks: 4.6.0_eslint@8.23.1 + eslint-plugin-testing-library: 5.5.1_irgkl5vooow2ydyo6aokmferha typescript: 4.8.3 transitivePeerDependencies: - '@babel/plugin-syntax-flow' @@ -5154,7 +5154,7 @@ packages: - supports-color dev: true - /eslint-import-resolver-typescript/3.5.1_faomjyrlgqmwswvqymymzkxcqi: + /eslint-import-resolver-typescript/3.5.1_hdzsmr7kawaomymueo2tso6fjq: resolution: {integrity: sha512-U7LUjNJPYjNsHvAUAkt/RU3fcTSpbllA0//35B4eLYTX74frmOepbt7F7J3D1IGtj9k21buOpaqtDd4ZlS/BYQ==} engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} peerDependencies: @@ -5163,8 +5163,8 @@ packages: dependencies: debug: 4.3.4 enhanced-resolve: 5.10.0 - eslint: 8.23.0 - eslint-plugin-import: 2.26.0_ikxfxf6lcdzwf3sfhs76tj4x7m + eslint: 8.23.1 + eslint-plugin-import: 2.26.0_bkwixupcywvgmrzjbgj7n47r6y get-tsconfig: 4.2.0 globby: 13.1.2 is-core-module: 2.10.0 @@ -5192,16 +5192,16 @@ packages: eslint-import-resolver-webpack: optional: true dependencies: - '@typescript-eslint/parser': 5.36.2_itqs5654cmlnjraw6gjzqacppi + '@typescript-eslint/parser': 5.36.2_irgkl5vooow2ydyo6aokmferha debug: 3.2.7 eslint-import-resolver-node: 0.3.6 - eslint-import-resolver-typescript: 3.5.1_faomjyrlgqmwswvqymymzkxcqi + eslint-import-resolver-typescript: 3.5.1_hdzsmr7kawaomymueo2tso6fjq find-up: 2.1.0 transitivePeerDependencies: - supports-color dev: true - /eslint-plugin-flowtype/8.0.3_eslint@8.23.0: + /eslint-plugin-flowtype/8.0.3_eslint@8.23.1: resolution: {integrity: sha512-dX8l6qUL6O+fYPtpNRideCFSpmWOUVx5QcaGLVqe/vlDiBSe4vYljDWDETwnyFzpl7By/WVIu6rcrniCgH9BqQ==} engines: {node: '>=12.0.0'} peerDependencies: @@ -5214,12 +5214,12 @@ packages: '@babel/plugin-transform-react-jsx': optional: true dependencies: - eslint: 8.23.0 + eslint: 8.23.1 lodash: 4.17.21 string-natural-compare: 3.0.1 dev: true - /eslint-plugin-import/2.26.0_ikxfxf6lcdzwf3sfhs76tj4x7m: + /eslint-plugin-import/2.26.0_bkwixupcywvgmrzjbgj7n47r6y: resolution: {integrity: sha512-hYfi3FXaM8WPLf4S1cikh/r4IxnO6zrhZbEGz2b660EJRbuxgpDS5gkCuYgGWg2xxh2rBuIr4Pvhve/7c31koA==} engines: {node: '>=4'} peerDependencies: @@ -5229,12 +5229,12 @@ packages: '@typescript-eslint/parser': optional: true dependencies: - '@typescript-eslint/parser': 5.36.2_itqs5654cmlnjraw6gjzqacppi + '@typescript-eslint/parser': 5.36.2_irgkl5vooow2ydyo6aokmferha array-includes: 3.1.5 array.prototype.flat: 1.3.0 debug: 2.6.9 doctrine: 2.1.0 - eslint: 8.23.0 + eslint: 8.23.1 eslint-import-resolver-node: 0.3.6 eslint-module-utils: 2.7.3_7liths4w263er5tix7tpkwznyq has: 1.0.3 @@ -5250,7 +5250,7 @@ packages: - supports-color dev: true - /eslint-plugin-jest/25.7.0_awpfis7kegyr7vghibvuyaqt2u: + /eslint-plugin-jest/25.7.0_3uxzneizrm2frppo2upad2a3qa: resolution: {integrity: sha512-PWLUEXeeF7C9QGKqvdSbzLOiLTx+bno7/HC9eefePfEb257QFHg7ye3dh80AZVkaa/RQsBB1Q/ORQvg2X7F0NQ==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} peerDependencies: @@ -5263,16 +5263,16 @@ packages: jest: optional: true dependencies: - '@typescript-eslint/eslint-plugin': 5.36.2_2l2r3i3lm6jysqd4ac3ql4n2mm - '@typescript-eslint/experimental-utils': 5.30.6_itqs5654cmlnjraw6gjzqacppi - eslint: 8.23.0 + '@typescript-eslint/eslint-plugin': 5.36.2_wxqvmnl3i4rbvz4ixyoiufmx3e + '@typescript-eslint/experimental-utils': 5.30.6_irgkl5vooow2ydyo6aokmferha + eslint: 8.23.1 jest: 29.0.3_@types+node@16.11.58 transitivePeerDependencies: - supports-color - typescript dev: true - /eslint-plugin-jsx-a11y/6.6.1_eslint@8.23.0: + /eslint-plugin-jsx-a11y/6.6.1_eslint@8.23.1: resolution: {integrity: sha512-sXgFVNHiWffBq23uiS/JaP6eVR622DqwB4yTzKvGZGcPq6/yZ3WmOZfuBks/vHWo9GaFOqC2ZK4i6+C35knx7Q==} engines: {node: '>=4.0'} peerDependencies: @@ -5286,7 +5286,7 @@ packages: axobject-query: 2.2.0 damerau-levenshtein: 1.0.8 emoji-regex: 9.2.2 - eslint: 8.23.0 + eslint: 8.23.1 has: 1.0.3 jsx-ast-utils: 3.3.2 language-tags: 1.0.5 @@ -5294,7 +5294,7 @@ packages: semver: 6.3.0 dev: true - /eslint-plugin-prettier/4.2.1_tgumt6uwl2md3n6uqnggd6wvce: + /eslint-plugin-prettier/4.2.1_cabrci5exjdaojcvd6xoxgeowu: resolution: {integrity: sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ==} engines: {node: '>=12.0.0'} peerDependencies: @@ -5305,22 +5305,22 @@ packages: eslint-config-prettier: optional: true dependencies: - eslint: 8.23.0 - eslint-config-prettier: 8.5.0_eslint@8.23.0 + eslint: 8.23.1 + eslint-config-prettier: 8.5.0_eslint@8.23.1 prettier: 2.7.1 prettier-linter-helpers: 1.0.0 dev: true - /eslint-plugin-react-hooks/4.6.0_eslint@8.23.0: + /eslint-plugin-react-hooks/4.6.0_eslint@8.23.1: resolution: {integrity: sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==} engines: {node: '>=10'} peerDependencies: eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 dependencies: - eslint: 8.23.0 + eslint: 8.23.1 dev: true - /eslint-plugin-react/7.31.8_eslint@8.23.0: + /eslint-plugin-react/7.31.8_eslint@8.23.1: resolution: {integrity: sha512-5lBTZmgQmARLLSYiwI71tiGVTLUuqXantZM6vlSY39OaDSV0M7+32K5DnLkmFrwTe+Ksz0ffuLUC91RUviVZfw==} engines: {node: '>=4'} peerDependencies: @@ -5329,7 +5329,7 @@ packages: array-includes: 3.1.5 array.prototype.flatmap: 1.3.0 doctrine: 2.1.0 - eslint: 8.23.0 + eslint: 8.23.1 estraverse: 5.3.0 jsx-ast-utils: 3.3.2 minimatch: 3.1.2 @@ -5343,14 +5343,14 @@ packages: string.prototype.matchall: 4.0.7 dev: true - /eslint-plugin-testing-library/5.5.1_itqs5654cmlnjraw6gjzqacppi: + /eslint-plugin-testing-library/5.5.1_irgkl5vooow2ydyo6aokmferha: resolution: {integrity: sha512-plLEkkbAKBjPxsLj7x4jNapcHAg2ernkQlKKrN2I8NrQwPISZHyCUNvg5Hv3EDqOQReToQb5bnqXYbkijJPE/g==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0, npm: '>=6'} peerDependencies: eslint: ^7.5.0 || ^8.0.0 dependencies: - '@typescript-eslint/utils': 5.36.2_itqs5654cmlnjraw6gjzqacppi - eslint: 8.23.0 + '@typescript-eslint/utils': 5.36.2_irgkl5vooow2ydyo6aokmferha + eslint: 8.23.1 transitivePeerDependencies: - supports-color - typescript @@ -5372,13 +5372,13 @@ packages: estraverse: 5.3.0 dev: true - /eslint-utils/3.0.0_eslint@8.23.0: + /eslint-utils/3.0.0_eslint@8.23.1: resolution: {integrity: sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==} engines: {node: ^10.0.0 || ^12.0.0 || >= 14.0.0} peerDependencies: eslint: '>=5' dependencies: - eslint: 8.23.0 + eslint: 8.23.1 eslint-visitor-keys: 2.1.0 dev: true @@ -5392,12 +5392,12 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /eslint/8.23.0: - resolution: {integrity: sha512-pBG/XOn0MsJcKcTRLr27S5HpzQo4kLr+HjLQIyK4EiCsijDl/TB+h5uEuJU6bQ8Edvwz1XWOjpaP2qgnXGpTcA==} + /eslint/8.23.1: + resolution: {integrity: sha512-w7C1IXCc6fNqjpuYd0yPlcTKKmHlHHktRkzmBPZ+7cvNBQuiNjx0xaMTjAJGCafJhQkrFJooREv0CtrVzmHwqg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} hasBin: true dependencies: - '@eslint/eslintrc': 1.3.1 + '@eslint/eslintrc': 1.3.2 '@humanwhocodes/config-array': 0.10.4 '@humanwhocodes/gitignore-to-minimatch': 1.0.2 '@humanwhocodes/module-importer': 1.0.1 @@ -5408,7 +5408,7 @@ packages: doctrine: 3.0.0 escape-string-regexp: 4.0.0 eslint-scope: 7.1.1 - eslint-utils: 3.0.0_eslint@8.23.0 + eslint-utils: 3.0.0_eslint@8.23.1 eslint-visitor-keys: 3.3.0 espree: 9.4.0 esquery: 1.4.0 @@ -5416,7 +5416,6 @@ packages: fast-deep-equal: 3.1.3 file-entry-cache: 6.0.1 find-up: 5.0.0 - functional-red-black-tree: 1.0.1 glob-parent: 6.0.2 globals: 13.16.0 globby: 11.1.0 @@ -5425,6 +5424,7 @@ packages: import-fresh: 3.3.0 imurmurhash: 0.1.4 is-glob: 4.0.3 + js-sdsl: 4.1.4 js-yaml: 4.1.0 json-stable-stringify-without-jsonify: 1.0.1 levn: 0.4.1 @@ -7023,6 +7023,10 @@ packages: - ts-node dev: true + /js-sdsl/4.1.4: + resolution: {integrity: sha512-Y2/yD55y5jteOAmY50JbUZYwk3CP3wnLPEZnlR1w9oKhITrBEtAxwuWKebFf8hMrPMgbYwFoWK/lH2sBkErELw==} + dev: true + /js-tokens/4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} @@ -9104,7 +9108,7 @@ packages: spdx-expression-parse: 3.0.1 dev: true - /vite-plugin-eslint/1.8.1_eslint@8.23.0+vite@3.1.0: + /vite-plugin-eslint/1.8.1_eslint@8.23.1+vite@3.1.0: resolution: {integrity: sha512-PqdMf3Y2fLO9FsNPmMX+//2BF5SF8nEWspZdgl4kSt7UvHDRHVVfHvxsD7ULYzZrJDGRxR81Nq7TOFgwMnUang==} peerDependencies: eslint: '>=7' @@ -9112,7 +9116,7 @@ packages: dependencies: '@rollup/pluginutils': 4.2.1 '@types/eslint': 8.4.5 - eslint: 8.23.0 + eslint: 8.23.1 rollup: 2.78.0 vite: 3.1.0 dev: true From c1e97f841d09acb5cd540b1490b88bcec237359f Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 13 Sep 2022 06:18:29 +1000 Subject: [PATCH 004/263] build(deps): update dependency @mui/material to v5.10.5 (#4004) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- web/package.json | 2 +- web/pnpm-lock.yaml | 38 +++++++++++++++++++------------------- 2 files changed, 20 insertions(+), 20 deletions(-) diff --git a/web/package.json b/web/package.json index c79b42533..15145beb9 100644 --- a/web/package.json +++ b/web/package.json @@ -26,7 +26,7 @@ "@fortawesome/free-solid-svg-icons": "6.2.0", "@fortawesome/react-fontawesome": "0.2.0", "@mui/icons-material": "5.10.3", - "@mui/material": "5.10.4", + "@mui/material": "5.10.5", "@mui/styles": "5.10.3", "axios": "0.27.2", "classnames": "2.3.1", diff --git a/web/pnpm-lock.yaml b/web/pnpm-lock.yaml index 49b8f3d51..f85802a59 100644 --- a/web/pnpm-lock.yaml +++ b/web/pnpm-lock.yaml @@ -11,7 +11,7 @@ specifiers: '@fortawesome/free-solid-svg-icons': 6.2.0 '@fortawesome/react-fontawesome': 0.2.0 '@mui/icons-material': 5.10.3 - '@mui/material': 5.10.4 + '@mui/material': 5.10.5 '@mui/styles': 5.10.3 '@testing-library/jest-dom': 5.16.5 '@testing-library/react': 13.4.0 @@ -72,8 +72,8 @@ dependencies: '@fortawesome/free-regular-svg-icons': 6.2.0 '@fortawesome/free-solid-svg-icons': 6.2.0 '@fortawesome/react-fontawesome': 0.2.0_6j2wdqxompc6mcokhxkpep2gqu - '@mui/icons-material': 5.10.3_a2hj5atstaulbk2sc24hz7fpli - '@mui/material': 5.10.4_g6p6knjyjrjltwufjb7cltiueu + '@mui/icons-material': 5.10.3_q2hl5ykxc65u7zta43mkuvhuom + '@mui/material': 5.10.5_g6p6knjyjrjltwufjb7cltiueu '@mui/styles': 5.10.3_fn6mmk7tilns4p7ajkklhuudvi axios: 0.27.2 classnames: 2.3.1 @@ -2785,8 +2785,8 @@ packages: '@jridgewell/sourcemap-codec': 1.4.14 dev: true - /@mui/base/5.0.0-alpha.96_nylzxt5ale4dsv666zkb25cgtm: - resolution: {integrity: sha512-GZf2YguepLFMWGG8vQNLRl7FlXPDeyxQBYgrkHxwNJYeRw55rrGrJxHzL1iCbk71VZ2IIAIs5IAxNpyHK9iqPQ==} + /@mui/base/5.0.0-alpha.97_nylzxt5ale4dsv666zkb25cgtm: + resolution: {integrity: sha512-gvo0hOg/tBzfJ3eDQOGAPBJJU+qTWd0e5zBEMFIkT1ekJqXx14JtIHvheOFU17y9iDciYE256Q8g+tj6a1dcBA==} engines: {node: '>=12.0.0'} peerDependencies: '@types/react': ^17.0.0 || ^18.0.0 || 18 @@ -2809,11 +2809,11 @@ packages: react-is: 18.2.0 dev: false - /@mui/core-downloads-tracker/5.10.4: - resolution: {integrity: sha512-VGekVa9dleJ+ii47+gXvKUV5a11T0nsjXN8bk5NqiJRQWRCAhbTHgsfZuctNcMeLW9FSf2gu6U0k2U6rhABKcA==} + /@mui/core-downloads-tracker/5.10.5: + resolution: {integrity: sha512-sZYg85rQdlgDYU3V4WcT2Dl+k+y2wYqN04aUvVkFksRR0j81sj6KmfXx4842HJQcq5rjzcTvh4N+yv66XR/9fA==} dev: false - /@mui/icons-material/5.10.3_a2hj5atstaulbk2sc24hz7fpli: + /@mui/icons-material/5.10.3_q2hl5ykxc65u7zta43mkuvhuom: resolution: {integrity: sha512-o0kbUlsWCBtCE0wP33cGKbyryCh7kpm2EECYMPDmWrLhbA+HUODXIdhiTFS26szp2xXo9HY1lEx0ufeJ+tddYw==} engines: {node: '>=12.0.0'} peerDependencies: @@ -2825,13 +2825,13 @@ packages: optional: true dependencies: '@babel/runtime': 7.18.9 - '@mui/material': 5.10.4_g6p6knjyjrjltwufjb7cltiueu + '@mui/material': 5.10.5_g6p6knjyjrjltwufjb7cltiueu '@types/react': 18.0.19 react: 18.2.0 dev: false - /@mui/material/5.10.4_g6p6knjyjrjltwufjb7cltiueu: - resolution: {integrity: sha512-uwupjunU3p8XxZU4f2zF1GYlwB9GDxW1H05BMDPSh0u+37yLxuQDMMxwQQPUo9jSA5Y22/eR4Y71ScxKU89QHg==} + /@mui/material/5.10.5_g6p6knjyjrjltwufjb7cltiueu: + resolution: {integrity: sha512-VFMadvfA6jqx5DCk2xoBl4bAGyzgmmubJIuB7fUWUZBwYIYL5Ea9SsoFpt5kawA6O2feuj69alDN2fhxPw1MeQ==} engines: {node: '>=12.0.0'} peerDependencies: '@emotion/react': ^11.5.0 @@ -2850,9 +2850,9 @@ packages: '@babel/runtime': 7.18.9 '@emotion/react': 11.10.4_fn6mmk7tilns4p7ajkklhuudvi '@emotion/styled': 11.10.4_v6omebeixt23oq3ljl3rjllla4 - '@mui/base': 5.0.0-alpha.96_nylzxt5ale4dsv666zkb25cgtm - '@mui/core-downloads-tracker': 5.10.4 - '@mui/system': 5.10.4_wc57cflkzchz4hcfrsslybhb6e + '@mui/base': 5.0.0-alpha.97_nylzxt5ale4dsv666zkb25cgtm + '@mui/core-downloads-tracker': 5.10.5 + '@mui/system': 5.10.5_wc57cflkzchz4hcfrsslybhb6e '@mui/types': 7.2.0_@types+react@18.0.19 '@mui/utils': 5.10.3_react@18.2.0 '@types/react': 18.0.19 @@ -2883,8 +2883,8 @@ packages: react: 18.2.0 dev: false - /@mui/styled-engine/5.10.4_hfzxdiydbrbhhfpkwuv3jhvwmq: - resolution: {integrity: sha512-y29qlonPj4wndTjbePk9O6uWp/FBRNXjiMwI64oiYQ+v3E0EkLnADfDn49GAqOJAfN/r7nHbVZBlvLNIcMbgDg==} + /@mui/styled-engine/5.10.5_hfzxdiydbrbhhfpkwuv3jhvwmq: + resolution: {integrity: sha512-6U6tTdf+H1OsjgcFoY12gYPR+qqZ1WHGGIahK5V7JhMkMUgH7ozyiNi8s1LzmwrUlAz1hAAhuO5nBYXku3wWvw==} engines: {node: '>=12.0.0'} peerDependencies: '@emotion/react': ^11.4.1 @@ -2936,8 +2936,8 @@ packages: react: 18.2.0 dev: false - /@mui/system/5.10.4_wc57cflkzchz4hcfrsslybhb6e: - resolution: {integrity: sha512-fE7LtYStPHPfq7EJXEVLQGvz23pS5YwSI7A4mWEFyyW21hHUh0c1opZXb7caHJsUTiBoC22W7R8GGfbVdSOnZA==} + /@mui/system/5.10.5_wc57cflkzchz4hcfrsslybhb6e: + resolution: {integrity: sha512-GUPiDVZTKp9yH3FVeLSIw3Bqsyl7qLxtAK1ZiZmC8e+zdH7bcnZZXvWK3vPIbx35ZyhQpvAOWQFpiF9TjdA77w==} engines: {node: '>=12.0.0'} peerDependencies: '@emotion/react': ^11.5.0 @@ -2956,7 +2956,7 @@ packages: '@emotion/react': 11.10.4_fn6mmk7tilns4p7ajkklhuudvi '@emotion/styled': 11.10.4_v6omebeixt23oq3ljl3rjllla4 '@mui/private-theming': 5.10.3_fn6mmk7tilns4p7ajkklhuudvi - '@mui/styled-engine': 5.10.4_hfzxdiydbrbhhfpkwuv3jhvwmq + '@mui/styled-engine': 5.10.5_hfzxdiydbrbhhfpkwuv3jhvwmq '@mui/types': 7.2.0_@types+react@18.0.19 '@mui/utils': 5.10.3_react@18.2.0 '@types/react': 18.0.19 From a3fbdbd4c65b88aeb59c8b2227514144242c8ed8 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 13 Sep 2022 07:07:44 +1000 Subject: [PATCH 005/263] build(deps): update typescript-eslint monorepo to v5.37.0 (#4005) --- web/package.json | 4 +- web/pnpm-lock.yaml | 102 ++++++++++++++++++++++----------------------- 2 files changed, 53 insertions(+), 53 deletions(-) diff --git a/web/package.json b/web/package.json index 15145beb9..0358dc5b8 100644 --- a/web/package.json +++ b/web/package.json @@ -152,8 +152,8 @@ "@types/react": "18.0.19", "@types/react-dom": "18.0.6", "@types/zxcvbn": "4.4.1", - "@typescript-eslint/eslint-plugin": "5.36.2", - "@typescript-eslint/parser": "5.36.2", + "@typescript-eslint/eslint-plugin": "5.37.0", + "@typescript-eslint/parser": "5.37.0", "@vitejs/plugin-react": "2.1.0", "esbuild": "0.15.7", "esbuild-jest": "0.5.0", diff --git a/web/pnpm-lock.yaml b/web/pnpm-lock.yaml index f85802a59..8f7815cc3 100644 --- a/web/pnpm-lock.yaml +++ b/web/pnpm-lock.yaml @@ -21,8 +21,8 @@ specifiers: '@types/react': 18.0.19 '@types/react-dom': 18.0.6 '@types/zxcvbn': 4.4.1 - '@typescript-eslint/eslint-plugin': 5.36.2 - '@typescript-eslint/parser': 5.36.2 + '@typescript-eslint/eslint-plugin': 5.37.0 + '@typescript-eslint/parser': 5.37.0 '@vitejs/plugin-react': 2.1.0 axios: 0.27.2 classnames: 2.3.1 @@ -101,8 +101,8 @@ devDependencies: '@types/react': 18.0.19 '@types/react-dom': 18.0.6 '@types/zxcvbn': 4.4.1 - '@typescript-eslint/eslint-plugin': 5.36.2_wxqvmnl3i4rbvz4ixyoiufmx3e - '@typescript-eslint/parser': 5.36.2_irgkl5vooow2ydyo6aokmferha + '@typescript-eslint/eslint-plugin': 5.37.0_22c5fnooleyfkzrkkgdmel5kmi + '@typescript-eslint/parser': 5.37.0_irgkl5vooow2ydyo6aokmferha '@vitejs/plugin-react': 2.1.0_vite@3.1.0 esbuild: 0.15.7 esbuild-jest: 0.5.0_esbuild@0.15.7 @@ -111,7 +111,7 @@ devDependencies: eslint-config-react-app: 7.0.1_jtmsnsp46pwebcrxlmbbcwtgs4 eslint-formatter-rdjson: 1.0.5 eslint-import-resolver-typescript: 3.5.1_hdzsmr7kawaomymueo2tso6fjq - eslint-plugin-import: 2.26.0_bkwixupcywvgmrzjbgj7n47r6y + eslint-plugin-import: 2.26.0_dnpzw43gx7nu2gqo7farhnkjku eslint-plugin-jsx-a11y: 6.6.1_eslint@8.23.1 eslint-plugin-prettier: 4.2.1_cabrci5exjdaojcvd6xoxgeowu eslint-plugin-react: 7.31.8_eslint@8.23.1 @@ -3453,8 +3453,8 @@ packages: resolution: {integrity: sha512-3NoqvZC2W5gAC5DZbTpCeJ251vGQmgcWIHQJGq2J240HY6ErQ9aWKkwfoKJlHLx+A83WPNTZ9+3cd2ILxbvr1w==} dev: true - /@typescript-eslint/eslint-plugin/5.36.2_wxqvmnl3i4rbvz4ixyoiufmx3e: - resolution: {integrity: sha512-OwwR8LRwSnI98tdc2z7mJYgY60gf7I9ZfGjN5EjCwwns9bdTuQfAXcsjSB2wSQ/TVNYSGKf4kzVXbNGaZvwiXw==} + /@typescript-eslint/eslint-plugin/5.37.0_22c5fnooleyfkzrkkgdmel5kmi: + resolution: {integrity: sha512-Fde6W0IafXktz1UlnhGkrrmnnGpAo1kyX7dnyHHVrmwJOn72Oqm3eYtddrpOwwel2W8PAK9F3pIL5S+lfoM0og==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: '@typescript-eslint/parser': ^5.0.0 @@ -3464,10 +3464,10 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/parser': 5.36.2_irgkl5vooow2ydyo6aokmferha - '@typescript-eslint/scope-manager': 5.36.2 - '@typescript-eslint/type-utils': 5.36.2_irgkl5vooow2ydyo6aokmferha - '@typescript-eslint/utils': 5.36.2_irgkl5vooow2ydyo6aokmferha + '@typescript-eslint/parser': 5.37.0_irgkl5vooow2ydyo6aokmferha + '@typescript-eslint/scope-manager': 5.37.0 + '@typescript-eslint/type-utils': 5.37.0_irgkl5vooow2ydyo6aokmferha + '@typescript-eslint/utils': 5.37.0_irgkl5vooow2ydyo6aokmferha debug: 4.3.4 eslint: 8.23.1 functional-red-black-tree: 1.0.1 @@ -3493,8 +3493,8 @@ packages: - typescript dev: true - /@typescript-eslint/parser/5.36.2_irgkl5vooow2ydyo6aokmferha: - resolution: {integrity: sha512-qS/Kb0yzy8sR0idFspI9Z6+t7mqk/oRjnAYfewG+VN73opAUvmYL3oPIMmgOX6CnQS6gmVIXGshlb5RY/R22pA==} + /@typescript-eslint/parser/5.37.0_irgkl5vooow2ydyo6aokmferha: + resolution: {integrity: sha512-01VzI/ipYKuaG5PkE5+qyJ6m02fVALmMPY3Qq5BHflDx3y4VobbLdHQkSMg9VPRS4KdNt4oYTMaomFoHonBGAw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 @@ -3503,9 +3503,9 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/scope-manager': 5.36.2 - '@typescript-eslint/types': 5.36.2 - '@typescript-eslint/typescript-estree': 5.36.2_typescript@4.8.3 + '@typescript-eslint/scope-manager': 5.37.0 + '@typescript-eslint/types': 5.37.0 + '@typescript-eslint/typescript-estree': 5.37.0_typescript@4.8.3 debug: 4.3.4 eslint: 8.23.1 typescript: 4.8.3 @@ -3521,16 +3521,16 @@ packages: '@typescript-eslint/visitor-keys': 5.30.6 dev: true - /@typescript-eslint/scope-manager/5.36.2: - resolution: {integrity: sha512-cNNP51L8SkIFSfce8B1NSUBTJTu2Ts4nWeWbFrdaqjmn9yKrAaJUBHkyTZc0cL06OFHpb+JZq5AUHROS398Orw==} + /@typescript-eslint/scope-manager/5.37.0: + resolution: {integrity: sha512-F67MqrmSXGd/eZnujjtkPgBQzgespu/iCZ+54Ok9X5tALb9L2v3G+QBSoWkXG0p3lcTJsL+iXz5eLUEdSiJU9Q==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: - '@typescript-eslint/types': 5.36.2 - '@typescript-eslint/visitor-keys': 5.36.2 + '@typescript-eslint/types': 5.37.0 + '@typescript-eslint/visitor-keys': 5.37.0 dev: true - /@typescript-eslint/type-utils/5.36.2_irgkl5vooow2ydyo6aokmferha: - resolution: {integrity: sha512-rPQtS5rfijUWLouhy6UmyNquKDPhQjKsaKH0WnY6hl/07lasj8gPaH2UD8xWkePn6SC+jW2i9c2DZVDnL+Dokw==} + /@typescript-eslint/type-utils/5.37.0_irgkl5vooow2ydyo6aokmferha: + resolution: {integrity: sha512-BSx/O0Z0SXOF5tY0bNTBcDEKz2Ec20GVYvq/H/XNKiUorUFilH7NPbFUuiiyzWaSdN3PA8JV0OvYx0gH/5aFAQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: '*' @@ -3539,8 +3539,8 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/typescript-estree': 5.36.2_typescript@4.8.3 - '@typescript-eslint/utils': 5.36.2_irgkl5vooow2ydyo6aokmferha + '@typescript-eslint/typescript-estree': 5.37.0_typescript@4.8.3 + '@typescript-eslint/utils': 5.37.0_irgkl5vooow2ydyo6aokmferha debug: 4.3.4 eslint: 8.23.1 tsutils: 3.21.0_typescript@4.8.3 @@ -3554,8 +3554,8 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /@typescript-eslint/types/5.36.2: - resolution: {integrity: sha512-9OJSvvwuF1L5eS2EQgFUbECb99F0mwq501w0H0EkYULkhFa19Qq7WFbycdw1PexAc929asupbZcgjVIe6OK/XQ==} + /@typescript-eslint/types/5.37.0: + resolution: {integrity: sha512-3frIJiTa5+tCb2iqR/bf7XwU20lnU05r/sgPJnRpwvfZaqCJBrl8Q/mw9vr3NrNdB/XtVyMA0eppRMMBqdJ1bA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true @@ -3580,8 +3580,8 @@ packages: - supports-color dev: true - /@typescript-eslint/typescript-estree/5.36.2_typescript@4.8.3: - resolution: {integrity: sha512-8fyH+RfbKc0mTspfuEjlfqA4YywcwQK2Amcf6TDOwaRLg7Vwdu4bZzyvBZp4bjt1RRjQ5MDnOZahxMrt2l5v9w==} + /@typescript-eslint/typescript-estree/5.37.0_typescript@4.8.3: + resolution: {integrity: sha512-JkFoFIt/cx59iqEDSgIGnQpCTRv96MQnXCYvJi7QhBC24uyuzbD8wVbajMB1b9x4I0octYFJ3OwjAwNqk1AjDA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: typescript: '*' @@ -3589,8 +3589,8 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/types': 5.36.2 - '@typescript-eslint/visitor-keys': 5.36.2 + '@typescript-eslint/types': 5.37.0 + '@typescript-eslint/visitor-keys': 5.37.0 debug: 4.3.4 globby: 11.1.0 is-glob: 4.0.3 @@ -3619,16 +3619,16 @@ packages: - typescript dev: true - /@typescript-eslint/utils/5.36.2_irgkl5vooow2ydyo6aokmferha: - resolution: {integrity: sha512-uNcopWonEITX96v9pefk9DC1bWMdkweeSsewJ6GeC7L6j2t0SJywisgkr9wUTtXk90fi2Eljj90HSHm3OGdGRg==} + /@typescript-eslint/utils/5.37.0_irgkl5vooow2ydyo6aokmferha: + resolution: {integrity: sha512-jUEJoQrWbZhmikbcWSMDuUSxEE7ID2W/QCV/uz10WtQqfOuKZUqFGjqLJ+qhDd17rjgp+QJPqTdPIBWwoob2NQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: '@types/json-schema': 7.0.11 - '@typescript-eslint/scope-manager': 5.36.2 - '@typescript-eslint/types': 5.36.2 - '@typescript-eslint/typescript-estree': 5.36.2_typescript@4.8.3 + '@typescript-eslint/scope-manager': 5.37.0 + '@typescript-eslint/types': 5.37.0 + '@typescript-eslint/typescript-estree': 5.37.0_typescript@4.8.3 eslint: 8.23.1 eslint-scope: 5.1.1 eslint-utils: 3.0.0_eslint@8.23.1 @@ -3645,11 +3645,11 @@ packages: eslint-visitor-keys: 3.3.0 dev: true - /@typescript-eslint/visitor-keys/5.36.2: - resolution: {integrity: sha512-BtRvSR6dEdrNt7Net2/XDjbYKU5Ml6GqJgVfXT0CxTCJlnIqK7rAGreuWKMT2t8cFUT2Msv5oxw0GMRD7T5J7A==} + /@typescript-eslint/visitor-keys/5.37.0: + resolution: {integrity: sha512-Hp7rT4cENBPIzMwrlehLW/28EVCOcE9U1Z1BQTc8EA8v5qpr7GRGuG+U58V5tTY48zvUOA3KHvw3rA8tY9fbdA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: - '@typescript-eslint/types': 5.36.2 + '@typescript-eslint/types': 5.37.0 eslint-visitor-keys: 3.3.0 dev: true @@ -5119,14 +5119,14 @@ packages: '@babel/core': 7.18.6 '@babel/eslint-parser': 7.18.2_i26poghmbi7wetx4acurtjxrle '@rushstack/eslint-patch': 1.1.4 - '@typescript-eslint/eslint-plugin': 5.36.2_wxqvmnl3i4rbvz4ixyoiufmx3e - '@typescript-eslint/parser': 5.36.2_irgkl5vooow2ydyo6aokmferha + '@typescript-eslint/eslint-plugin': 5.37.0_22c5fnooleyfkzrkkgdmel5kmi + '@typescript-eslint/parser': 5.37.0_irgkl5vooow2ydyo6aokmferha babel-preset-react-app: 10.0.1 confusing-browser-globals: 1.0.11 eslint: 8.23.1 eslint-plugin-flowtype: 8.0.3_eslint@8.23.1 - eslint-plugin-import: 2.26.0_bkwixupcywvgmrzjbgj7n47r6y - eslint-plugin-jest: 25.7.0_3uxzneizrm2frppo2upad2a3qa + eslint-plugin-import: 2.26.0_dnpzw43gx7nu2gqo7farhnkjku + eslint-plugin-jest: 25.7.0_agihzdubifvlsy3vxhvuafdnha eslint-plugin-jsx-a11y: 6.6.1_eslint@8.23.1 eslint-plugin-react: 7.31.8_eslint@8.23.1 eslint-plugin-react-hooks: 4.6.0_eslint@8.23.1 @@ -5164,7 +5164,7 @@ packages: debug: 4.3.4 enhanced-resolve: 5.10.0 eslint: 8.23.1 - eslint-plugin-import: 2.26.0_bkwixupcywvgmrzjbgj7n47r6y + eslint-plugin-import: 2.26.0_dnpzw43gx7nu2gqo7farhnkjku get-tsconfig: 4.2.0 globby: 13.1.2 is-core-module: 2.10.0 @@ -5174,7 +5174,7 @@ packages: - supports-color dev: true - /eslint-module-utils/2.7.3_7liths4w263er5tix7tpkwznyq: + /eslint-module-utils/2.7.3_yotz5rgxbsebaglktiy7k3y6ua: resolution: {integrity: sha512-088JEC7O3lDZM9xGe0RerkOMd0EjFl+Yvd1jPWIkMT5u3H9+HC34mWWPnqPrN13gieT9pBOO+Qt07Nb/6TresQ==} engines: {node: '>=4'} peerDependencies: @@ -5192,7 +5192,7 @@ packages: eslint-import-resolver-webpack: optional: true dependencies: - '@typescript-eslint/parser': 5.36.2_irgkl5vooow2ydyo6aokmferha + '@typescript-eslint/parser': 5.37.0_irgkl5vooow2ydyo6aokmferha debug: 3.2.7 eslint-import-resolver-node: 0.3.6 eslint-import-resolver-typescript: 3.5.1_hdzsmr7kawaomymueo2tso6fjq @@ -5219,7 +5219,7 @@ packages: string-natural-compare: 3.0.1 dev: true - /eslint-plugin-import/2.26.0_bkwixupcywvgmrzjbgj7n47r6y: + /eslint-plugin-import/2.26.0_dnpzw43gx7nu2gqo7farhnkjku: resolution: {integrity: sha512-hYfi3FXaM8WPLf4S1cikh/r4IxnO6zrhZbEGz2b660EJRbuxgpDS5gkCuYgGWg2xxh2rBuIr4Pvhve/7c31koA==} engines: {node: '>=4'} peerDependencies: @@ -5229,14 +5229,14 @@ packages: '@typescript-eslint/parser': optional: true dependencies: - '@typescript-eslint/parser': 5.36.2_irgkl5vooow2ydyo6aokmferha + '@typescript-eslint/parser': 5.37.0_irgkl5vooow2ydyo6aokmferha array-includes: 3.1.5 array.prototype.flat: 1.3.0 debug: 2.6.9 doctrine: 2.1.0 eslint: 8.23.1 eslint-import-resolver-node: 0.3.6 - eslint-module-utils: 2.7.3_7liths4w263er5tix7tpkwznyq + eslint-module-utils: 2.7.3_yotz5rgxbsebaglktiy7k3y6ua has: 1.0.3 is-core-module: 2.9.0 is-glob: 4.0.3 @@ -5250,7 +5250,7 @@ packages: - supports-color dev: true - /eslint-plugin-jest/25.7.0_3uxzneizrm2frppo2upad2a3qa: + /eslint-plugin-jest/25.7.0_agihzdubifvlsy3vxhvuafdnha: resolution: {integrity: sha512-PWLUEXeeF7C9QGKqvdSbzLOiLTx+bno7/HC9eefePfEb257QFHg7ye3dh80AZVkaa/RQsBB1Q/ORQvg2X7F0NQ==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} peerDependencies: @@ -5263,7 +5263,7 @@ packages: jest: optional: true dependencies: - '@typescript-eslint/eslint-plugin': 5.36.2_wxqvmnl3i4rbvz4ixyoiufmx3e + '@typescript-eslint/eslint-plugin': 5.37.0_22c5fnooleyfkzrkkgdmel5kmi '@typescript-eslint/experimental-utils': 5.30.6_irgkl5vooow2ydyo6aokmferha eslint: 8.23.1 jest: 29.0.3_@types+node@16.11.58 @@ -5349,7 +5349,7 @@ packages: peerDependencies: eslint: ^7.5.0 || ^8.0.0 dependencies: - '@typescript-eslint/utils': 5.36.2_irgkl5vooow2ydyo6aokmferha + '@typescript-eslint/utils': 5.37.0_irgkl5vooow2ydyo6aokmferha eslint: 8.23.1 transitivePeerDependencies: - supports-color From a5f0db5f6dce51ebd54b4de1563fe27c38c94e8f Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 14 Sep 2022 08:56:02 +1000 Subject: [PATCH 006/263] build(deps): update dependency classnames to v2.3.2 (#4006) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- web/package.json | 2 +- web/pnpm-lock.yaml | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/web/package.json b/web/package.json index 0358dc5b8..b6ced1b01 100644 --- a/web/package.json +++ b/web/package.json @@ -29,7 +29,7 @@ "@mui/material": "5.10.5", "@mui/styles": "5.10.3", "axios": "0.27.2", - "classnames": "2.3.1", + "classnames": "2.3.2", "i18next": "21.9.1", "i18next-browser-languagedetector": "6.1.5", "i18next-http-backend": "1.4.1", diff --git a/web/pnpm-lock.yaml b/web/pnpm-lock.yaml index 8f7815cc3..e4bd1dc3d 100644 --- a/web/pnpm-lock.yaml +++ b/web/pnpm-lock.yaml @@ -25,7 +25,7 @@ specifiers: '@typescript-eslint/parser': 5.37.0 '@vitejs/plugin-react': 2.1.0 axios: 0.27.2 - classnames: 2.3.1 + classnames: 2.3.2 esbuild: 0.15.7 esbuild-jest: 0.5.0 eslint: 8.23.1 @@ -76,7 +76,7 @@ dependencies: '@mui/material': 5.10.5_g6p6knjyjrjltwufjb7cltiueu '@mui/styles': 5.10.3_fn6mmk7tilns4p7ajkklhuudvi axios: 0.27.2 - classnames: 2.3.1 + classnames: 2.3.2 i18next: 21.9.1 i18next-browser-languagedetector: 6.1.5 i18next-http-backend: 1.4.1 @@ -4357,8 +4357,8 @@ packages: static-extend: 0.1.2 dev: true - /classnames/2.3.1: - resolution: {integrity: sha512-OlQdbZ7gLfGarSqxesMesDa5uz7KFbID8Kpq/SxIoNGDqY8lSYs0D+hhtBXhcdB3rcbXArFr7vlHheLk1voeNA==} + /classnames/2.3.2: + resolution: {integrity: sha512-CSbhY4cFEJRe6/GQzIk5qXZ4Jeg5pcsP7b5peFSDpffpe1cqjASH/n9UTjBwOp6XpMSTwQ8Za2K5V02ueA7Tmw==} dev: false /cliui/7.0.4: From 7400a95bec2894a05a01bc3149a5aa582846c6ed Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 14 Sep 2022 14:38:06 +1000 Subject: [PATCH 007/263] build(deps): update dependency @types/jest to v29.0.2 (#4007) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- web/package.json | 2 +- web/pnpm-lock.yaml | 88 ++++------------------------------------------ 2 files changed, 8 insertions(+), 82 deletions(-) diff --git a/web/package.json b/web/package.json index b6ced1b01..40b4675c2 100644 --- a/web/package.json +++ b/web/package.json @@ -146,7 +146,7 @@ "@commitlint/config-conventional": "17.1.0", "@testing-library/jest-dom": "5.16.5", "@testing-library/react": "13.4.0", - "@types/jest": "29.0.1", + "@types/jest": "29.0.2", "@types/node": "16.11.58", "@types/qrcode.react": "1.0.2", "@types/react": "18.0.19", diff --git a/web/pnpm-lock.yaml b/web/pnpm-lock.yaml index e4bd1dc3d..3b6ff19fc 100644 --- a/web/pnpm-lock.yaml +++ b/web/pnpm-lock.yaml @@ -15,7 +15,7 @@ specifiers: '@mui/styles': 5.10.3 '@testing-library/jest-dom': 5.16.5 '@testing-library/react': 13.4.0 - '@types/jest': 29.0.1 + '@types/jest': 29.0.2 '@types/node': 16.11.58 '@types/qrcode.react': 1.0.2 '@types/react': 18.0.19 @@ -95,7 +95,7 @@ devDependencies: '@commitlint/config-conventional': 17.1.0 '@testing-library/jest-dom': 5.16.5 '@testing-library/react': 13.4.0_biqbaboplfbrettd7655fr4n2y - '@types/jest': 29.0.1 + '@types/jest': 29.0.2 '@types/node': 16.11.58 '@types/qrcode.react': 1.0.2 '@types/react': 18.0.19 @@ -2549,13 +2549,6 @@ packages: jest-mock: 29.0.3 dev: true - /@jest/expect-utils/29.0.2: - resolution: {integrity: sha512-+wcQF9khXKvAEi8VwROnCWWmHfsJYCZAs5dmuMlJBKk57S6ZN2/FQMIlo01F29fJyT8kV/xblE7g3vkIdTLOjw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - jest-get-type: 29.0.0 - dev: true - /@jest/expect-utils/29.0.3: resolution: {integrity: sha512-i1xUkau7K/63MpdwiRqaxgZOjxYs4f0WMTGJnYwUKubsNRZSeQbLorS7+I4uXVF9KQ5r61BUPAUMZ7Lf66l64Q==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -3336,11 +3329,11 @@ packages: '@types/istanbul-lib-report': 3.0.0 dev: true - /@types/jest/29.0.1: - resolution: {integrity: sha512-CAZrjLRZs4xEdIrfrdV74xK1Vo/BKQZwUcjJv3gp6gMeV3BsVxMnXTcgtYOKyphT4DPPo7jxVEVhuwJTQn3oPQ==} + /@types/jest/29.0.2: + resolution: {integrity: sha512-TaklkwSEtvwJpleiKBHgEBySIQlcZ08gYP/s5wdtdLnjz9uxjnDd7U+Y0JWACebkqBc+jtbol2PEtEW0wQV2zQ==} dependencies: - expect: 29.0.2 - pretty-format: 29.0.2 + expect: 29.0.3 + pretty-format: 29.0.3 dev: true /@types/jsdom/20.0.0: @@ -3426,7 +3419,7 @@ packages: /@types/testing-library__jest-dom/5.14.5: resolution: {integrity: sha512-SBwbxYoyPIvxHbeHxTZX2Pe/74F/tX2/D3mMvzabdeJ25bBojfW0TyB8BHrbq/9zaaKICJZjLP+8r6AeZMFCuQ==} dependencies: - '@types/jest': 29.0.1 + '@types/jest': 29.0.2 dev: true /@types/tough-cookie/4.0.2: @@ -5540,17 +5533,6 @@ packages: - supports-color dev: true - /expect/29.0.2: - resolution: {integrity: sha512-JeJlAiLKn4aApT4pzUXBVxl3NaZidWIOdg//smaIlP9ZMBDkHZGFd9ubphUZP9pUyDEo7bC6M0IIZR51o75qQw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@jest/expect-utils': 29.0.2 - jest-get-type: 29.0.0 - jest-matcher-utils: 29.0.2 - jest-message-util: 29.0.2 - jest-util: 29.0.2 - dev: true - /expect/29.0.3: resolution: {integrity: sha512-t8l5DTws3212VbmPL+tBFXhjRHLmctHB0oQbL8eUc6S7NzZtYUhycrFO9mkxA0ZUC6FAWdNi7JchJSkODtcu1Q==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -6575,16 +6557,6 @@ packages: - supports-color dev: true - /jest-diff/29.0.2: - resolution: {integrity: sha512-b9l9970sa1rMXH1owp2Woprmy42qIwwll/htsw4Gf7+WuSp5bZxNhkKHDuCGKL+HoHn1KhcC+tNEeAPYBkD2Jg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - chalk: 4.1.2 - diff-sequences: 29.0.0 - jest-get-type: 29.0.0 - pretty-format: 29.0.3 - dev: true - /jest-diff/29.0.3: resolution: {integrity: sha512-+X/AIF5G/vX9fWK+Db9bi9BQas7M9oBME7egU7psbn4jlszLFCu0dW63UgeE6cs/GANq4fLaT+8sGHQQ0eCUfg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -6699,16 +6671,6 @@ packages: pretty-format: 29.0.3 dev: true - /jest-matcher-utils/29.0.2: - resolution: {integrity: sha512-s62YkHFBfAx0JLA2QX1BlnCRFwHRobwAv2KP1+YhjzF6ZCbCVrf1sG8UJyn62ZUsDaQKpoo86XMTjkUyO5aWmQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - chalk: 4.1.2 - jest-diff: 29.0.2 - jest-get-type: 29.0.0 - pretty-format: 29.0.3 - dev: true - /jest-matcher-utils/29.0.3: resolution: {integrity: sha512-RsR1+cZ6p1hDV4GSCQTg+9qjeotQCgkaleIKLK7dm+U4V/H2bWedU3RAtLm8+mANzZ7eDV33dMar4pejd7047w==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -6719,21 +6681,6 @@ packages: pretty-format: 29.0.3 dev: true - /jest-message-util/29.0.2: - resolution: {integrity: sha512-kcJAgms3ckJV0wUoLsAM40xAhY+pb9FVSZwicjFU9PFkaTNmqh9xd99/CzKse48wPM1ANUQKmp03/DpkY+lGrA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@babel/code-frame': 7.18.6 - '@jest/types': 29.0.3 - '@types/stack-utils': 2.0.1 - chalk: 4.1.2 - graceful-fs: 4.2.10 - micromatch: 4.0.5 - pretty-format: 29.0.3 - slash: 3.0.0 - stack-utils: 2.0.5 - dev: true - /jest-message-util/29.0.3: resolution: {integrity: sha512-7T8JiUTtDfppojosORAflABfLsLKMLkBHSWkjNQrjIltGoDzNGn7wEPOSfjqYAGTYME65esQzMJxGDjuLBKdOg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -6919,18 +6866,6 @@ packages: micromatch: 4.0.5 dev: true - /jest-util/29.0.2: - resolution: {integrity: sha512-ozk8ruEEEACxqpz0hN9UOgtPZS0aN+NffwQduR5dVlhN+eN47vxurtvgZkYZYMpYrsmlAEx1XabkB3BnN0GfKQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@jest/types': 29.0.3 - '@types/node': 16.11.58 - chalk: 4.1.2 - ci-info: 3.3.2 - graceful-fs: 4.2.10 - picomatch: 2.3.1 - dev: true - /jest-util/29.0.3: resolution: {integrity: sha512-Q0xaG3YRG8QiTC4R6fHjHQPaPpz9pJBEi0AeOE4mQh/FuWOijFjGXMMOfQEaU9i3z76cNR7FobZZUQnL6IyfdQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -7894,15 +7829,6 @@ packages: react-is: 17.0.2 dev: true - /pretty-format/29.0.2: - resolution: {integrity: sha512-wp3CdtUa3cSJVFn3Miu5a1+pxc1iPIQTenOAn+x5erXeN1+ryTcLesV5pbK/rlW5EKwp27x38MoYfNGaNXDDhg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@jest/schemas': 29.0.0 - ansi-styles: 5.2.0 - react-is: 18.2.0 - dev: true - /pretty-format/29.0.3: resolution: {integrity: sha512-cHudsvQr1K5vNVLbvYF/nv3Qy/F/BcEKxGuIeMiVMRHxPOO1RxXooP8g/ZrwAp7Dx+KdMZoOc7NxLHhMrP2f9Q==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} From d08dcb31d49fe0f3af0d72e40b7526395517ea5b Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 14 Sep 2022 15:57:16 +1000 Subject: [PATCH 008/263] build(deps): update traefik docker tag to v2.8.5 (#4008) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- internal/suites/example/compose/traefik2/docker-compose.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/internal/suites/example/compose/traefik2/docker-compose.yml b/internal/suites/example/compose/traefik2/docker-compose.yml index 68e4f5334..0b001ddaf 100644 --- a/internal/suites/example/compose/traefik2/docker-compose.yml +++ b/internal/suites/example/compose/traefik2/docker-compose.yml @@ -2,7 +2,7 @@ version: '3' services: traefik: - image: traefik:v2.8.4 + image: traefik:v2.8.5 volumes: - '/var/run/docker.sock:/var/run/docker.sock' labels: From 2b345d39d3a5096e2180c843fdd99399d4de8c6b Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 14 Sep 2022 20:24:26 +1000 Subject: [PATCH 009/263] build(deps): update dependency @types/node to v16.11.59 (#4011) --- web/package.json | 2 +- web/pnpm-lock.yaml | 74 +++++++++++++++++++++++----------------------- 2 files changed, 38 insertions(+), 38 deletions(-) diff --git a/web/package.json b/web/package.json index 40b4675c2..9291a0d78 100644 --- a/web/package.json +++ b/web/package.json @@ -147,7 +147,7 @@ "@testing-library/jest-dom": "5.16.5", "@testing-library/react": "13.4.0", "@types/jest": "29.0.2", - "@types/node": "16.11.58", + "@types/node": "16.11.59", "@types/qrcode.react": "1.0.2", "@types/react": "18.0.19", "@types/react-dom": "18.0.6", diff --git a/web/pnpm-lock.yaml b/web/pnpm-lock.yaml index 3b6ff19fc..b1cb7913f 100644 --- a/web/pnpm-lock.yaml +++ b/web/pnpm-lock.yaml @@ -16,7 +16,7 @@ specifiers: '@testing-library/jest-dom': 5.16.5 '@testing-library/react': 13.4.0 '@types/jest': 29.0.2 - '@types/node': 16.11.58 + '@types/node': 16.11.59 '@types/qrcode.react': 1.0.2 '@types/react': 18.0.19 '@types/react-dom': 18.0.6 @@ -96,7 +96,7 @@ devDependencies: '@testing-library/jest-dom': 5.16.5 '@testing-library/react': 13.4.0_biqbaboplfbrettd7655fr4n2y '@types/jest': 29.0.2 - '@types/node': 16.11.58 + '@types/node': 16.11.59 '@types/qrcode.react': 1.0.2 '@types/react': 18.0.19 '@types/react-dom': 18.0.6 @@ -117,7 +117,7 @@ devDependencies: eslint-plugin-react: 7.31.8_eslint@8.23.1 eslint-plugin-react-hooks: 4.6.0_eslint@8.23.1 husky: 8.0.1 - jest: 29.0.3_@types+node@16.11.58 + jest: 29.0.3_@types+node@16.11.59 jest-environment-jsdom: 29.0.3 jest-transform-stub: 2.0.0 jest-watch-typeahead: 2.2.0_jest@29.0.3 @@ -2490,7 +2490,7 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.0.3 - '@types/node': 16.11.58 + '@types/node': 16.11.59 chalk: 4.1.2 jest-message-util: 29.0.3 jest-util: 29.0.3 @@ -2511,14 +2511,14 @@ packages: '@jest/test-result': 29.0.3 '@jest/transform': 29.0.3 '@jest/types': 29.0.3 - '@types/node': 16.11.58 + '@types/node': 16.11.59 ansi-escapes: 4.3.2 chalk: 4.1.2 ci-info: 3.3.2 exit: 0.1.2 graceful-fs: 4.2.10 jest-changed-files: 29.0.0 - jest-config: 29.0.3_@types+node@16.11.58 + jest-config: 29.0.3_@types+node@16.11.59 jest-haste-map: 29.0.3 jest-message-util: 29.0.3 jest-regex-util: 29.0.0 @@ -2545,7 +2545,7 @@ packages: dependencies: '@jest/fake-timers': 29.0.3 '@jest/types': 29.0.3 - '@types/node': 16.11.58 + '@types/node': 16.11.59 jest-mock: 29.0.3 dev: true @@ -2572,7 +2572,7 @@ packages: dependencies: '@jest/types': 29.0.3 '@sinonjs/fake-timers': 9.1.2 - '@types/node': 16.11.58 + '@types/node': 16.11.59 jest-message-util: 29.0.3 jest-mock: 29.0.3 jest-util: 29.0.3 @@ -2605,7 +2605,7 @@ packages: '@jest/transform': 29.0.3 '@jest/types': 29.0.3 '@jridgewell/trace-mapping': 0.3.15 - '@types/node': 16.11.58 + '@types/node': 16.11.59 chalk: 4.1.2 collect-v8-coverage: 1.0.1 exit: 0.1.2 @@ -2716,7 +2716,7 @@ packages: dependencies: '@types/istanbul-lib-coverage': 2.0.4 '@types/istanbul-reports': 3.0.1 - '@types/node': 16.11.58 + '@types/node': 16.11.59 '@types/yargs': 15.0.14 chalk: 4.1.2 dev: true @@ -2728,7 +2728,7 @@ packages: '@jest/schemas': 29.0.0 '@types/istanbul-lib-coverage': 2.0.4 '@types/istanbul-reports': 3.0.1 - '@types/node': 16.11.58 + '@types/node': 16.11.59 '@types/yargs': 17.0.10 chalk: 4.1.2 dev: true @@ -3310,7 +3310,7 @@ packages: /@types/graceful-fs/4.1.5: resolution: {integrity: sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw==} dependencies: - '@types/node': 16.11.58 + '@types/node': 16.11.59 dev: true /@types/istanbul-lib-coverage/2.0.4: @@ -3339,7 +3339,7 @@ packages: /@types/jsdom/20.0.0: resolution: {integrity: sha512-YfAchFs0yM1QPDrLm2VHe+WHGtqms3NXnXAMolrgrVP6fgBHHXy1ozAbo/dFtPNtZC/m66bPiCTWYmqp1F14gA==} dependencies: - '@types/node': 16.11.58 + '@types/node': 16.11.59 '@types/tough-cookie': 4.0.2 parse5: 7.0.0 dev: true @@ -3360,8 +3360,8 @@ packages: resolution: {integrity: sha512-0b+utRBSYj8L7XAp0d+DX7lI4cSmowNaaTkk6/1SKzbKkG+doLuPusB9EOvzLJ8ahJSk03bTLIL6cWaEd4dBKA==} dev: true - /@types/node/16.11.58: - resolution: {integrity: sha512-uMVxJ111wpHzkx/vshZFb6Qni3BOMnlWLq7q9jrwej7Yw/KvjsEbpxCCxw+hLKxexFMc8YmpG8J9tnEe/rKsIg==} + /@types/node/16.11.59: + resolution: {integrity: sha512-6u+36Dj3aDzhfBVUf/mfmc92OEdzQ2kx2jcXGdigfl70E/neV21ZHE6UCz4MDzTRcVqGAM27fk+DLXvyDsn3Jw==} dev: true /@types/normalize-package-data/2.4.1: @@ -5259,7 +5259,7 @@ packages: '@typescript-eslint/eslint-plugin': 5.37.0_22c5fnooleyfkzrkkgdmel5kmi '@typescript-eslint/experimental-utils': 5.30.6_irgkl5vooow2ydyo6aokmferha eslint: 8.23.1 - jest: 29.0.3_@types+node@16.11.58 + jest: 29.0.3_@types+node@16.11.59 transitivePeerDependencies: - supports-color - typescript @@ -6471,7 +6471,7 @@ packages: '@jest/expect': 29.0.3 '@jest/test-result': 29.0.3 '@jest/types': 29.0.3 - '@types/node': 16.11.58 + '@types/node': 16.11.59 chalk: 4.1.2 co: 4.6.0 dedent: 0.7.0 @@ -6490,7 +6490,7 @@ packages: - supports-color dev: true - /jest-cli/29.0.3_@types+node@16.11.58: + /jest-cli/29.0.3_@types+node@16.11.59: resolution: {integrity: sha512-aUy9Gd/Kut1z80eBzG10jAn6BgS3BoBbXyv+uXEqBJ8wnnuZ5RpNfARoskSrTIy1GY4a8f32YGuCMwibtkl9CQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true @@ -6507,7 +6507,7 @@ packages: exit: 0.1.2 graceful-fs: 4.2.10 import-local: 3.1.0 - jest-config: 29.0.3_@types+node@16.11.58 + jest-config: 29.0.3_@types+node@16.11.59 jest-util: 29.0.3 jest-validate: 29.0.3 prompts: 2.4.2 @@ -6518,7 +6518,7 @@ packages: - ts-node dev: true - /jest-config/29.0.3_@types+node@16.11.58: + /jest-config/29.0.3_@types+node@16.11.59: resolution: {integrity: sha512-U5qkc82HHVYe3fNu2CRXLN4g761Na26rWKf7CjM8LlZB3In1jadEkZdMwsE37rd9RSPV0NfYaCjHdk/gu3v+Ew==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: @@ -6533,7 +6533,7 @@ packages: '@babel/core': 7.19.0 '@jest/test-sequencer': 29.0.3 '@jest/types': 29.0.3 - '@types/node': 16.11.58 + '@types/node': 16.11.59 babel-jest: 29.0.3_@babel+core@7.19.0 chalk: 4.1.2 ci-info: 3.3.2 @@ -6593,7 +6593,7 @@ packages: '@jest/fake-timers': 29.0.3 '@jest/types': 29.0.3 '@types/jsdom': 20.0.0 - '@types/node': 16.11.58 + '@types/node': 16.11.59 jest-mock: 29.0.3 jest-util: 29.0.3 jsdom: 20.0.0 @@ -6611,7 +6611,7 @@ packages: '@jest/environment': 29.0.3 '@jest/fake-timers': 29.0.3 '@jest/types': 29.0.3 - '@types/node': 16.11.58 + '@types/node': 16.11.59 jest-mock: 29.0.3 jest-util: 29.0.3 dev: true @@ -6627,7 +6627,7 @@ packages: dependencies: '@jest/types': 26.6.2 '@types/graceful-fs': 4.1.5 - '@types/node': 16.11.58 + '@types/node': 16.11.59 anymatch: 3.1.2 fb-watchman: 2.0.1 graceful-fs: 4.2.10 @@ -6650,7 +6650,7 @@ packages: dependencies: '@jest/types': 29.0.3 '@types/graceful-fs': 4.1.5 - '@types/node': 16.11.58 + '@types/node': 16.11.59 anymatch: 3.1.2 fb-watchman: 2.0.1 graceful-fs: 4.2.10 @@ -6701,7 +6701,7 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.0.3 - '@types/node': 16.11.58 + '@types/node': 16.11.59 dev: true /jest-pnp-resolver/1.2.2_jest-resolve@29.0.3: @@ -6760,7 +6760,7 @@ packages: '@jest/test-result': 29.0.3 '@jest/transform': 29.0.3 '@jest/types': 29.0.3 - '@types/node': 16.11.58 + '@types/node': 16.11.59 chalk: 4.1.2 emittery: 0.10.2 graceful-fs: 4.2.10 @@ -6791,7 +6791,7 @@ packages: '@jest/test-result': 29.0.3 '@jest/transform': 29.0.3 '@jest/types': 29.0.3 - '@types/node': 16.11.58 + '@types/node': 16.11.59 chalk: 4.1.2 cjs-module-lexer: 1.2.2 collect-v8-coverage: 1.0.1 @@ -6814,7 +6814,7 @@ packages: resolution: {integrity: sha512-S5wqyz0DXnNJPd/xfIzZ5Xnp1HrJWBczg8mMfMpN78OJ5eDxXyf+Ygld9wX1DnUWbIbhM1YDY95NjR4CBXkb2g==} engines: {node: '>= 10.14.2'} dependencies: - '@types/node': 16.11.58 + '@types/node': 16.11.59 graceful-fs: 4.2.10 dev: true @@ -6859,7 +6859,7 @@ packages: engines: {node: '>= 10.14.2'} dependencies: '@jest/types': 26.6.2 - '@types/node': 16.11.58 + '@types/node': 16.11.59 chalk: 4.1.2 graceful-fs: 4.2.10 is-ci: 2.0.0 @@ -6871,7 +6871,7 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.0.3 - '@types/node': 16.11.58 + '@types/node': 16.11.59 chalk: 4.1.2 ci-info: 3.3.2 graceful-fs: 4.2.10 @@ -6898,7 +6898,7 @@ packages: dependencies: ansi-escapes: 5.0.0 chalk: 4.1.2 - jest: 29.0.3_@types+node@16.11.58 + jest: 29.0.3_@types+node@16.11.59 jest-regex-util: 29.0.0 jest-watcher: 29.0.3 slash: 4.0.0 @@ -6912,7 +6912,7 @@ packages: dependencies: '@jest/test-result': 29.0.3 '@jest/types': 29.0.3 - '@types/node': 16.11.58 + '@types/node': 16.11.59 ansi-escapes: 4.3.2 chalk: 4.1.2 emittery: 0.10.2 @@ -6924,7 +6924,7 @@ packages: resolution: {integrity: sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==} engines: {node: '>= 10.13.0'} dependencies: - '@types/node': 16.11.58 + '@types/node': 16.11.59 merge-stream: 2.0.0 supports-color: 7.2.0 dev: true @@ -6933,12 +6933,12 @@ packages: resolution: {integrity: sha512-Tl/YWUugQOjoTYwjKdfJWkSOfhufJHO5LhXTSZC3TRoQKO+fuXnZAdoXXBlpLXKGODBL3OvdUasfDD4PcMe6ng==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@types/node': 16.11.58 + '@types/node': 16.11.59 merge-stream: 2.0.0 supports-color: 8.1.1 dev: true - /jest/29.0.3_@types+node@16.11.58: + /jest/29.0.3_@types+node@16.11.59: resolution: {integrity: sha512-ElgUtJBLgXM1E8L6K1RW1T96R897YY/3lRYqq9uVcPWtP2AAl/nQ16IYDh/FzQOOQ12VEuLdcPU83mbhG2C3PQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true @@ -6951,7 +6951,7 @@ packages: '@jest/core': 29.0.3 '@jest/types': 29.0.3 import-local: 3.1.0 - jest-cli: 29.0.3_@types+node@16.11.58 + jest-cli: 29.0.3_@types+node@16.11.59 transitivePeerDependencies: - '@types/node' - supports-color From 4c979c1558a35e376662be88c5610037ab53964a Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 14 Sep 2022 20:45:58 +1000 Subject: [PATCH 010/263] build(deps): update dependency @types/react to v18.0.20 (#4012) --- web/package.json | 2 +- web/pnpm-lock.yaml | 94 +++++++++++++++++++++++----------------------- 2 files changed, 48 insertions(+), 48 deletions(-) diff --git a/web/package.json b/web/package.json index 9291a0d78..909acdbb5 100644 --- a/web/package.json +++ b/web/package.json @@ -149,7 +149,7 @@ "@types/jest": "29.0.2", "@types/node": "16.11.59", "@types/qrcode.react": "1.0.2", - "@types/react": "18.0.19", + "@types/react": "18.0.20", "@types/react-dom": "18.0.6", "@types/zxcvbn": "4.4.1", "@typescript-eslint/eslint-plugin": "5.37.0", diff --git a/web/pnpm-lock.yaml b/web/pnpm-lock.yaml index b1cb7913f..620e3745a 100644 --- a/web/pnpm-lock.yaml +++ b/web/pnpm-lock.yaml @@ -18,7 +18,7 @@ specifiers: '@types/jest': 29.0.2 '@types/node': 16.11.59 '@types/qrcode.react': 1.0.2 - '@types/react': 18.0.19 + '@types/react': 18.0.20 '@types/react-dom': 18.0.6 '@types/zxcvbn': 4.4.1 '@typescript-eslint/eslint-plugin': 5.37.0 @@ -66,15 +66,15 @@ specifiers: dependencies: '@emotion/cache': 11.10.3 - '@emotion/react': 11.10.4_fn6mmk7tilns4p7ajkklhuudvi - '@emotion/styled': 11.10.4_v6omebeixt23oq3ljl3rjllla4 + '@emotion/react': 11.10.4_w5j4k42lgipnm43s3brx6h3c34 + '@emotion/styled': 11.10.4_yiaqs725o7pcd7rteavrnhgj4y '@fortawesome/fontawesome-svg-core': 6.2.0 '@fortawesome/free-regular-svg-icons': 6.2.0 '@fortawesome/free-solid-svg-icons': 6.2.0 '@fortawesome/react-fontawesome': 0.2.0_6j2wdqxompc6mcokhxkpep2gqu - '@mui/icons-material': 5.10.3_q2hl5ykxc65u7zta43mkuvhuom - '@mui/material': 5.10.5_g6p6knjyjrjltwufjb7cltiueu - '@mui/styles': 5.10.3_fn6mmk7tilns4p7ajkklhuudvi + '@mui/icons-material': 5.10.3_5evnxlqsqnxmrwqqtdxt2buelq + '@mui/material': 5.10.5_af5ln35zuaotaffazii6n6bke4 + '@mui/styles': 5.10.3_w5j4k42lgipnm43s3brx6h3c34 axios: 0.27.2 classnames: 2.3.2 i18next: 21.9.1 @@ -98,7 +98,7 @@ devDependencies: '@types/jest': 29.0.2 '@types/node': 16.11.59 '@types/qrcode.react': 1.0.2 - '@types/react': 18.0.19 + '@types/react': 18.0.20 '@types/react-dom': 18.0.6 '@types/zxcvbn': 4.4.1 '@typescript-eslint/eslint-plugin': 5.37.0_22c5fnooleyfkzrkkgdmel5kmi @@ -2296,7 +2296,7 @@ packages: resolution: {integrity: sha512-G/YwXTkv7Den9mXDO7AhLWkE3q+I92B+VqAE+dYG4NGPaHZGvt3G8Q0p9vmE+sq7rTGphUbAvmQ9YpbfMQGGlA==} dev: false - /@emotion/react/11.10.4_fn6mmk7tilns4p7ajkklhuudvi: + /@emotion/react/11.10.4_w5j4k42lgipnm43s3brx6h3c34: resolution: {integrity: sha512-j0AkMpr6BL8gldJZ6XQsQ8DnS9TxEQu1R+OGmDZiWjBAJtCcbt0tS3I/YffoqHXxH6MjgI7KdMbYKw3MEiU9eA==} peerDependencies: '@babel/core': ^7.0.0 @@ -2315,7 +2315,7 @@ packages: '@emotion/use-insertion-effect-with-fallbacks': 1.0.0_react@18.2.0 '@emotion/utils': 1.2.0 '@emotion/weak-memoize': 0.3.0 - '@types/react': 18.0.19 + '@types/react': 18.0.20 hoist-non-react-statics: 3.3.2 react: 18.2.0 dev: false @@ -2334,7 +2334,7 @@ packages: resolution: {integrity: sha512-OiTkRgpxescko+M51tZsMq7Puu/KP55wMT8BgpcXVG2hqXc0Vo0mfymJ/Uj24Hp0i083ji/o0aLddh08UEjq8w==} dev: false - /@emotion/styled/11.10.4_v6omebeixt23oq3ljl3rjllla4: + /@emotion/styled/11.10.4_yiaqs725o7pcd7rteavrnhgj4y: resolution: {integrity: sha512-pRl4R8Ez3UXvOPfc2bzIoV8u9P97UedgHS4FPX594ntwEuAMA114wlaHvOK24HB48uqfXiGlYIZYCxVJ1R1ttQ==} peerDependencies: '@babel/core': ^7.0.0 @@ -2350,11 +2350,11 @@ packages: '@babel/runtime': 7.18.9 '@emotion/babel-plugin': 11.10.0 '@emotion/is-prop-valid': 1.2.0 - '@emotion/react': 11.10.4_fn6mmk7tilns4p7ajkklhuudvi + '@emotion/react': 11.10.4_w5j4k42lgipnm43s3brx6h3c34 '@emotion/serialize': 1.1.0 '@emotion/use-insertion-effect-with-fallbacks': 1.0.0_react@18.2.0 '@emotion/utils': 1.2.0 - '@types/react': 18.0.19 + '@types/react': 18.0.20 react: 18.2.0 dev: false @@ -2778,7 +2778,7 @@ packages: '@jridgewell/sourcemap-codec': 1.4.14 dev: true - /@mui/base/5.0.0-alpha.97_nylzxt5ale4dsv666zkb25cgtm: + /@mui/base/5.0.0-alpha.97_7ey2zzynotv32rpkwno45fsx4e: resolution: {integrity: sha512-gvo0hOg/tBzfJ3eDQOGAPBJJU+qTWd0e5zBEMFIkT1ekJqXx14JtIHvheOFU17y9iDciYE256Q8g+tj6a1dcBA==} engines: {node: '>=12.0.0'} peerDependencies: @@ -2791,10 +2791,10 @@ packages: dependencies: '@babel/runtime': 7.18.9 '@emotion/is-prop-valid': 1.2.0 - '@mui/types': 7.2.0_@types+react@18.0.19 + '@mui/types': 7.2.0_@types+react@18.0.20 '@mui/utils': 5.10.3_react@18.2.0 '@popperjs/core': 2.11.6 - '@types/react': 18.0.19 + '@types/react': 18.0.20 clsx: 1.2.1 prop-types: 15.8.1 react: 18.2.0 @@ -2806,7 +2806,7 @@ packages: resolution: {integrity: sha512-sZYg85rQdlgDYU3V4WcT2Dl+k+y2wYqN04aUvVkFksRR0j81sj6KmfXx4842HJQcq5rjzcTvh4N+yv66XR/9fA==} dev: false - /@mui/icons-material/5.10.3_q2hl5ykxc65u7zta43mkuvhuom: + /@mui/icons-material/5.10.3_5evnxlqsqnxmrwqqtdxt2buelq: resolution: {integrity: sha512-o0kbUlsWCBtCE0wP33cGKbyryCh7kpm2EECYMPDmWrLhbA+HUODXIdhiTFS26szp2xXo9HY1lEx0ufeJ+tddYw==} engines: {node: '>=12.0.0'} peerDependencies: @@ -2818,12 +2818,12 @@ packages: optional: true dependencies: '@babel/runtime': 7.18.9 - '@mui/material': 5.10.5_g6p6knjyjrjltwufjb7cltiueu - '@types/react': 18.0.19 + '@mui/material': 5.10.5_af5ln35zuaotaffazii6n6bke4 + '@types/react': 18.0.20 react: 18.2.0 dev: false - /@mui/material/5.10.5_g6p6knjyjrjltwufjb7cltiueu: + /@mui/material/5.10.5_af5ln35zuaotaffazii6n6bke4: resolution: {integrity: sha512-VFMadvfA6jqx5DCk2xoBl4bAGyzgmmubJIuB7fUWUZBwYIYL5Ea9SsoFpt5kawA6O2feuj69alDN2fhxPw1MeQ==} engines: {node: '>=12.0.0'} peerDependencies: @@ -2841,14 +2841,14 @@ packages: optional: true dependencies: '@babel/runtime': 7.18.9 - '@emotion/react': 11.10.4_fn6mmk7tilns4p7ajkklhuudvi - '@emotion/styled': 11.10.4_v6omebeixt23oq3ljl3rjllla4 - '@mui/base': 5.0.0-alpha.97_nylzxt5ale4dsv666zkb25cgtm + '@emotion/react': 11.10.4_w5j4k42lgipnm43s3brx6h3c34 + '@emotion/styled': 11.10.4_yiaqs725o7pcd7rteavrnhgj4y + '@mui/base': 5.0.0-alpha.97_7ey2zzynotv32rpkwno45fsx4e '@mui/core-downloads-tracker': 5.10.5 - '@mui/system': 5.10.5_wc57cflkzchz4hcfrsslybhb6e - '@mui/types': 7.2.0_@types+react@18.0.19 + '@mui/system': 5.10.5_4mv32nu4vciambuqqzuu4gtvj4 + '@mui/types': 7.2.0_@types+react@18.0.20 '@mui/utils': 5.10.3_react@18.2.0 - '@types/react': 18.0.19 + '@types/react': 18.0.20 '@types/react-transition-group': 4.4.5 clsx: 1.2.1 csstype: 3.1.0 @@ -2859,7 +2859,7 @@ packages: react-transition-group: 4.4.5_biqbaboplfbrettd7655fr4n2y dev: false - /@mui/private-theming/5.10.3_fn6mmk7tilns4p7ajkklhuudvi: + /@mui/private-theming/5.10.3_w5j4k42lgipnm43s3brx6h3c34: resolution: {integrity: sha512-LCYIKlkGz2BTSng2BFzzwSJBRZbChIUri2x2Nh8ryk2B1Ho7zpvE7ex6y39LlStG2Frf92NFC/V4YQbmMAjD5A==} engines: {node: '>=12.0.0'} peerDependencies: @@ -2871,7 +2871,7 @@ packages: dependencies: '@babel/runtime': 7.18.9 '@mui/utils': 5.10.3_react@18.2.0 - '@types/react': 18.0.19 + '@types/react': 18.0.20 prop-types: 15.8.1 react: 18.2.0 dev: false @@ -2891,14 +2891,14 @@ packages: dependencies: '@babel/runtime': 7.18.9 '@emotion/cache': 11.10.3 - '@emotion/react': 11.10.4_fn6mmk7tilns4p7ajkklhuudvi - '@emotion/styled': 11.10.4_v6omebeixt23oq3ljl3rjllla4 + '@emotion/react': 11.10.4_w5j4k42lgipnm43s3brx6h3c34 + '@emotion/styled': 11.10.4_yiaqs725o7pcd7rteavrnhgj4y csstype: 3.1.0 prop-types: 15.8.1 react: 18.2.0 dev: false - /@mui/styles/5.10.3_fn6mmk7tilns4p7ajkklhuudvi: + /@mui/styles/5.10.3_w5j4k42lgipnm43s3brx6h3c34: resolution: {integrity: sha512-I9BYAKENJ6Ot+UEqsU+D2o5jVSeHAme+ZcPzBataTNmpjd7yrmdPeJgAyzju21KtSucBb283gvggcFqxLH1lOQ==} engines: {node: '>=12.0.0'} peerDependencies: @@ -2910,10 +2910,10 @@ packages: dependencies: '@babel/runtime': 7.18.9 '@emotion/hash': 0.9.0 - '@mui/private-theming': 5.10.3_fn6mmk7tilns4p7ajkklhuudvi - '@mui/types': 7.2.0_@types+react@18.0.19 + '@mui/private-theming': 5.10.3_w5j4k42lgipnm43s3brx6h3c34 + '@mui/types': 7.2.0_@types+react@18.0.20 '@mui/utils': 5.10.3_react@18.2.0 - '@types/react': 18.0.19 + '@types/react': 18.0.20 clsx: 1.2.1 csstype: 3.1.0 hoist-non-react-statics: 3.3.2 @@ -2929,7 +2929,7 @@ packages: react: 18.2.0 dev: false - /@mui/system/5.10.5_wc57cflkzchz4hcfrsslybhb6e: + /@mui/system/5.10.5_4mv32nu4vciambuqqzuu4gtvj4: resolution: {integrity: sha512-GUPiDVZTKp9yH3FVeLSIw3Bqsyl7qLxtAK1ZiZmC8e+zdH7bcnZZXvWK3vPIbx35ZyhQpvAOWQFpiF9TjdA77w==} engines: {node: '>=12.0.0'} peerDependencies: @@ -2946,20 +2946,20 @@ packages: optional: true dependencies: '@babel/runtime': 7.18.9 - '@emotion/react': 11.10.4_fn6mmk7tilns4p7ajkklhuudvi - '@emotion/styled': 11.10.4_v6omebeixt23oq3ljl3rjllla4 - '@mui/private-theming': 5.10.3_fn6mmk7tilns4p7ajkklhuudvi + '@emotion/react': 11.10.4_w5j4k42lgipnm43s3brx6h3c34 + '@emotion/styled': 11.10.4_yiaqs725o7pcd7rteavrnhgj4y + '@mui/private-theming': 5.10.3_w5j4k42lgipnm43s3brx6h3c34 '@mui/styled-engine': 5.10.5_hfzxdiydbrbhhfpkwuv3jhvwmq - '@mui/types': 7.2.0_@types+react@18.0.19 + '@mui/types': 7.2.0_@types+react@18.0.20 '@mui/utils': 5.10.3_react@18.2.0 - '@types/react': 18.0.19 + '@types/react': 18.0.20 clsx: 1.2.1 csstype: 3.1.0 prop-types: 15.8.1 react: 18.2.0 dev: false - /@mui/types/7.2.0_@types+react@18.0.19: + /@mui/types/7.2.0_@types+react@18.0.20: resolution: {integrity: sha512-lGXtFKe5lp3UxTBGqKI1l7G8sE2xBik8qCfrLHD5olwP/YU0/ReWoWT7Lp1//ri32dK39oPMrJN8TgbkCSbsNA==} peerDependencies: '@types/react': '*' @@ -2967,7 +2967,7 @@ packages: '@types/react': optional: true dependencies: - '@types/react': 18.0.19 + '@types/react': 18.0.20 dev: false /@mui/utils/5.10.3_react@18.2.0: @@ -3381,29 +3381,29 @@ packages: /@types/qrcode.react/1.0.2: resolution: {integrity: sha512-I9Oq5Cjlkgy3Tw7krCnCXLw2/zMhizkTere49OOcta23tkvH0xBTP0yInimTh0gstLRtb8Ki9NZVujE5UI6ffQ==} dependencies: - '@types/react': 18.0.19 + '@types/react': 18.0.20 dev: true /@types/react-dom/18.0.6: resolution: {integrity: sha512-/5OFZgfIPSwy+YuIBP/FgJnQnsxhZhjjrnxudMddeblOouIodEQ75X14Rr4wGSG/bknL+Omy9iWlLo1u/9GzAA==} dependencies: - '@types/react': 18.0.19 + '@types/react': 18.0.20 dev: true /@types/react-is/17.0.3: resolution: {integrity: sha512-aBTIWg1emtu95bLTLx0cpkxwGW3ueZv71nE2YFBpL8k/z5czEW8yYpOo8Dp+UUAFAtKwNaOsh/ioSeQnWlZcfw==} dependencies: - '@types/react': 18.0.19 + '@types/react': 18.0.20 dev: false /@types/react-transition-group/4.4.5: resolution: {integrity: sha512-juKD/eiSM3/xZYzjuzH6ZwpP+/lejltmiS3QEzV/vmb/Q8+HfDmxu+Baga8UEMGBqV88Nbg4l2hY/K2DkyaLLA==} dependencies: - '@types/react': 18.0.19 + '@types/react': 18.0.20 dev: false - /@types/react/18.0.19: - resolution: {integrity: sha512-BDc3Q+4Q3zsn7k9xZrKfjWyJsSlEDMs38gD1qp2eDazLCdcPqAT+vq1ND+Z8AGel/UiwzNUk8ptpywgNQcJ1MQ==} + /@types/react/18.0.20: + resolution: {integrity: sha512-MWul1teSPxujEHVwZl4a5HxQ9vVNsjTchVA+xRqv/VYGCuKGAU6UhfrTdF5aBefwD1BHUD8i/zq+O/vyCm/FrA==} dependencies: '@types/prop-types': 15.7.5 '@types/scheduler': 0.16.2 From 8f78684f034166d42825996f56145ee9fa051939 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 15 Sep 2022 09:23:29 +1000 Subject: [PATCH 011/263] build(deps): update dependency react-router-dom to v6.4.0 (#4013) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- web/package.json | 2 +- web/pnpm-lock.yaml | 30 +++++++++++++++--------------- 2 files changed, 16 insertions(+), 16 deletions(-) diff --git a/web/package.json b/web/package.json index 909acdbb5..6617badec 100644 --- a/web/package.json +++ b/web/package.json @@ -40,7 +40,7 @@ "react-i18next": "11.18.6", "react-loading": "2.0.3", "react-otp-input": "2.4.0", - "react-router-dom": "6.3.0", + "react-router-dom": "6.4.0", "zxcvbn": "4.4.2" }, "scripts": { diff --git a/web/pnpm-lock.yaml b/web/pnpm-lock.yaml index 620e3745a..da7ae6d3a 100644 --- a/web/pnpm-lock.yaml +++ b/web/pnpm-lock.yaml @@ -54,7 +54,7 @@ specifiers: react-i18next: 11.18.6 react-loading: 2.0.3 react-otp-input: 2.4.0 - react-router-dom: 6.3.0 + react-router-dom: 6.4.0 react-test-renderer: 18.2.0 typescript: 4.8.3 vite: 3.1.0 @@ -87,7 +87,7 @@ dependencies: react-i18next: 11.18.6_4sidbwfhen5r7txudrvpua6nty react-loading: 2.0.3_react@18.2.0 react-otp-input: 2.4.0_biqbaboplfbrettd7655fr4n2y - react-router-dom: 6.3.0_biqbaboplfbrettd7655fr4n2y + react-router-dom: 6.4.0_biqbaboplfbrettd7655fr4n2y zxcvbn: 4.4.2 devDependencies: @@ -3021,6 +3021,11 @@ packages: resolution: {integrity: sha512-50/17A98tWUfQ176raKiOGXuYpLyyVMkxxG6oylzL3BPOlA6ADGdK7EYunSa4I064xerltq9TGXs8HmOk5E+vw==} dev: false + /@remix-run/router/1.0.0: + resolution: {integrity: sha512-SCR1cxRSMNKjaVYptCzBApPDqGwa3FGdjVHc+rOToocNPHQdIYLZBfv/3f+KvYuXDkUGVIW9IAzmPNZDRL1I4A==} + engines: {node: '>=14'} + dev: false + /@rollup/pluginutils/4.2.1: resolution: {integrity: sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==} engines: {node: '>= 8.0.0'} @@ -5978,12 +5983,6 @@ packages: dependencies: function-bind: 1.1.1 - /history/5.3.0: - resolution: {integrity: sha512-ZqaKwjjrAYUYfLG+htGaIIZ4nioX2L70ZUMIFysS3xvBsSG4x/n1V6TXV3N8ZYNuFGlDirFg32T7B6WOUPDYcQ==} - dependencies: - '@babel/runtime': 7.18.9 - dev: false - /hoist-non-react-statics/3.3.2: resolution: {integrity: sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==} dependencies: @@ -7967,24 +7966,25 @@ packages: engines: {node: '>=0.10.0'} dev: true - /react-router-dom/6.3.0_biqbaboplfbrettd7655fr4n2y: - resolution: {integrity: sha512-uaJj7LKytRxZNQV8+RbzJWnJ8K2nPsOOEuX7aQstlMZKQT0164C+X2w6bnkqU3sjtLvpd5ojrezAyfZ1+0sStw==} + /react-router-dom/6.4.0_biqbaboplfbrettd7655fr4n2y: + resolution: {integrity: sha512-4Aw1xmXKeleYYQ3x0Lcl2undHR6yMjXZjd9DKZd53SGOYqirrUThyUb0wwAX5VZAyvSuzjNJmZlJ3rR9+/vzqg==} + engines: {node: '>=14'} peerDependencies: react: '>=16.8 || 18' react-dom: '>=16.8 || 18' dependencies: - history: 5.3.0 react: 18.2.0 react-dom: 18.2.0_react@18.2.0 - react-router: 6.3.0_react@18.2.0 + react-router: 6.4.0_react@18.2.0 dev: false - /react-router/6.3.0_react@18.2.0: - resolution: {integrity: sha512-7Wh1DzVQ+tlFjkeo+ujvjSqSJmkt1+8JO+T5xklPlgrh70y7ogx75ODRW0ThWhY7S+6yEDks8TYrtQe/aoboBQ==} + /react-router/6.4.0_react@18.2.0: + resolution: {integrity: sha512-B+5bEXFlgR1XUdHYR6P94g299SjrfCBMmEDJNcFbpAyRH1j1748yt9NdDhW3++nw1lk3zQJ6aOO66zUx3KlTZg==} + engines: {node: '>=14'} peerDependencies: react: '>=16.8 || 18' dependencies: - history: 5.3.0 + '@remix-run/router': 1.0.0 react: 18.2.0 dev: false From bbf3587fbb92fe865a9a48640d7253b6549343ac Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 15 Sep 2022 21:52:30 +1000 Subject: [PATCH 012/263] build(deps): update dependency vite to v3.1.1 (#4017) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- web/package.json | 2 +- web/pnpm-lock.yaml | 32 ++++++++++++++++---------------- 2 files changed, 17 insertions(+), 17 deletions(-) diff --git a/web/package.json b/web/package.json index 6617badec..c6bbb6208 100644 --- a/web/package.json +++ b/web/package.json @@ -175,7 +175,7 @@ "prettier": "2.7.1", "react-test-renderer": "18.2.0", "typescript": "4.8.3", - "vite": "3.1.0", + "vite": "3.1.1", "vite-plugin-eslint": "1.8.1", "vite-plugin-istanbul": "3.0.1", "vite-plugin-svgr": "2.2.1", diff --git a/web/pnpm-lock.yaml b/web/pnpm-lock.yaml index da7ae6d3a..e14292984 100644 --- a/web/pnpm-lock.yaml +++ b/web/pnpm-lock.yaml @@ -57,7 +57,7 @@ specifiers: react-router-dom: 6.4.0 react-test-renderer: 18.2.0 typescript: 4.8.3 - vite: 3.1.0 + vite: 3.1.1 vite-plugin-eslint: 1.8.1 vite-plugin-istanbul: 3.0.1 vite-plugin-svgr: 2.2.1 @@ -103,7 +103,7 @@ devDependencies: '@types/zxcvbn': 4.4.1 '@typescript-eslint/eslint-plugin': 5.37.0_22c5fnooleyfkzrkkgdmel5kmi '@typescript-eslint/parser': 5.37.0_irgkl5vooow2ydyo6aokmferha - '@vitejs/plugin-react': 2.1.0_vite@3.1.0 + '@vitejs/plugin-react': 2.1.0_vite@3.1.1 esbuild: 0.15.7 esbuild-jest: 0.5.0_esbuild@0.15.7 eslint: 8.23.1 @@ -124,11 +124,11 @@ devDependencies: prettier: 2.7.1 react-test-renderer: 18.2.0_react@18.2.0 typescript: 4.8.3 - vite: 3.1.0 - vite-plugin-eslint: 1.8.1_eslint@8.23.1+vite@3.1.0 + vite: 3.1.1 + vite-plugin-eslint: 1.8.1_eslint@8.23.1+vite@3.1.1 vite-plugin-istanbul: 3.0.1 - vite-plugin-svgr: 2.2.1_vite@3.1.0 - vite-tsconfig-paths: 3.5.0_vite@3.1.0 + vite-plugin-svgr: 2.2.1_vite@3.1.1 + vite-tsconfig-paths: 3.5.0_vite@3.1.1 packages: @@ -3651,7 +3651,7 @@ packages: eslint-visitor-keys: 3.3.0 dev: true - /@vitejs/plugin-react/2.1.0_vite@3.1.0: + /@vitejs/plugin-react/2.1.0_vite@3.1.1: resolution: {integrity: sha512-am6rPyyU3LzUYne3Gd9oj9c4Rzbq5hQnuGXSMT6Gujq45Il/+bunwq3lrB7wghLkiF45ygMwft37vgJ/NE8IAA==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: @@ -3664,7 +3664,7 @@ packages: '@babel/plugin-transform-react-jsx-source': 7.18.6_@babel+core@7.19.0 magic-string: 0.26.2 react-refresh: 0.14.0 - vite: 3.1.0 + vite: 3.1.1 transitivePeerDependencies: - supports-color dev: true @@ -9034,7 +9034,7 @@ packages: spdx-expression-parse: 3.0.1 dev: true - /vite-plugin-eslint/1.8.1_eslint@8.23.1+vite@3.1.0: + /vite-plugin-eslint/1.8.1_eslint@8.23.1+vite@3.1.1: resolution: {integrity: sha512-PqdMf3Y2fLO9FsNPmMX+//2BF5SF8nEWspZdgl4kSt7UvHDRHVVfHvxsD7ULYzZrJDGRxR81Nq7TOFgwMnUang==} peerDependencies: eslint: '>=7' @@ -9044,7 +9044,7 @@ packages: '@types/eslint': 8.4.5 eslint: 8.23.1 rollup: 2.78.0 - vite: 3.1.0 + vite: 3.1.1 dev: true /vite-plugin-istanbul/3.0.1: @@ -9058,19 +9058,19 @@ packages: - supports-color dev: true - /vite-plugin-svgr/2.2.1_vite@3.1.0: + /vite-plugin-svgr/2.2.1_vite@3.1.1: resolution: {integrity: sha512-+EqwahbwjETJH/ssA/66dNYyKN1cO0AStq96MuXmq5maU7AePBMf2lDKfQna49tJZAjtRz+R899BWCsUUP45Fg==} peerDependencies: vite: ^2.6.0 || 3 dependencies: '@rollup/pluginutils': 4.2.1 '@svgr/core': 6.3.1 - vite: 3.1.0 + vite: 3.1.1 transitivePeerDependencies: - supports-color dev: true - /vite-tsconfig-paths/3.5.0_vite@3.1.0: + /vite-tsconfig-paths/3.5.0_vite@3.1.1: resolution: {integrity: sha512-NKIubr7gXgh/3uniQaOytSg+aKWPrjquP6anAy+zCWEn6h9fB8z2/qdlfQrTgZWaXJ2pHVlllrSdRZltHn9P4g==} peerDependencies: vite: '>2.0.0-0' @@ -9079,13 +9079,13 @@ packages: globrex: 0.1.2 recrawl-sync: 2.2.2 tsconfig-paths: 4.0.0 - vite: 3.1.0 + vite: 3.1.1 transitivePeerDependencies: - supports-color dev: true - /vite/3.1.0: - resolution: {integrity: sha512-YBg3dUicDpDWFCGttmvMbVyS9ydjntwEjwXRj2KBFwSB8SxmGcudo1yb8FW5+M/G86aS8x828ujnzUVdsLjs9g==} + /vite/3.1.1: + resolution: {integrity: sha512-hgxQWev/AL7nWYrqByYo8nfcH9n97v6oFsta9+JX8h6cEkni7nHKP2kJleNYV2kcGhE8jsbaY1aStwPZXzPbgA==} engines: {node: ^14.18.0 || >=16.0.0} hasBin: true peerDependencies: From ec88b67cf1ef843d09bbaff9e2f7f7e31e40021b Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 16 Sep 2022 09:57:26 +1000 Subject: [PATCH 013/263] build(deps): update dependency @types/jest to v29.0.3 (#4018) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- web/package.json | 2 +- web/pnpm-lock.yaml | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/web/package.json b/web/package.json index c6bbb6208..da5a3f76c 100644 --- a/web/package.json +++ b/web/package.json @@ -146,7 +146,7 @@ "@commitlint/config-conventional": "17.1.0", "@testing-library/jest-dom": "5.16.5", "@testing-library/react": "13.4.0", - "@types/jest": "29.0.2", + "@types/jest": "29.0.3", "@types/node": "16.11.59", "@types/qrcode.react": "1.0.2", "@types/react": "18.0.20", diff --git a/web/pnpm-lock.yaml b/web/pnpm-lock.yaml index e14292984..12a132d76 100644 --- a/web/pnpm-lock.yaml +++ b/web/pnpm-lock.yaml @@ -15,7 +15,7 @@ specifiers: '@mui/styles': 5.10.3 '@testing-library/jest-dom': 5.16.5 '@testing-library/react': 13.4.0 - '@types/jest': 29.0.2 + '@types/jest': 29.0.3 '@types/node': 16.11.59 '@types/qrcode.react': 1.0.2 '@types/react': 18.0.20 @@ -95,7 +95,7 @@ devDependencies: '@commitlint/config-conventional': 17.1.0 '@testing-library/jest-dom': 5.16.5 '@testing-library/react': 13.4.0_biqbaboplfbrettd7655fr4n2y - '@types/jest': 29.0.2 + '@types/jest': 29.0.3 '@types/node': 16.11.59 '@types/qrcode.react': 1.0.2 '@types/react': 18.0.20 @@ -3334,8 +3334,8 @@ packages: '@types/istanbul-lib-report': 3.0.0 dev: true - /@types/jest/29.0.2: - resolution: {integrity: sha512-TaklkwSEtvwJpleiKBHgEBySIQlcZ08gYP/s5wdtdLnjz9uxjnDd7U+Y0JWACebkqBc+jtbol2PEtEW0wQV2zQ==} + /@types/jest/29.0.3: + resolution: {integrity: sha512-F6ukyCTwbfsEX5F2YmVYmM5TcTHy1q9P5rWlRbrk56KyMh3v9xRGUO3aa8+SkvMi0SHXtASJv1283enXimC0Og==} dependencies: expect: 29.0.3 pretty-format: 29.0.3 @@ -3424,7 +3424,7 @@ packages: /@types/testing-library__jest-dom/5.14.5: resolution: {integrity: sha512-SBwbxYoyPIvxHbeHxTZX2Pe/74F/tX2/D3mMvzabdeJ25bBojfW0TyB8BHrbq/9zaaKICJZjLP+8r6AeZMFCuQ==} dependencies: - '@types/jest': 29.0.2 + '@types/jest': 29.0.3 dev: true /@types/tough-cookie/4.0.2: From 15110b732a4a24c9bd611477627bdd06291e10b2 Mon Sep 17 00:00:00 2001 From: James Elliott Date: Fri, 16 Sep 2022 11:19:16 +1000 Subject: [PATCH 014/263] fix(server): i18n etags missing (#3973) This fixes missing etags from locales assets. --- crowdin.yml | 10 -- internal/middlewares/asset_override.go | 20 ++-- internal/server/asset.go | 97 ++++++++++++++----- internal/server/const.go | 17 ++-- internal/server/handlers.go | 18 ++-- .../server/locales/{de => de-DE}/portal.json | 0 .../server/locales/{es => es-ES}/portal.json | 0 .../server/locales/{fr => fr-FR}/portal.json | 0 .../server/locales/{nl => nl-NL}/portal.json | 0 .../server/locales/{pt => pt-PT}/portal.json | 0 .../server/locales/{ru => ru-RU}/portal.json | 0 internal/server/locales/sv/portal.json | 69 ------------- .../server/locales/{zh => zh-CN}/portal.json | 0 internal/server/template.go | 17 ++-- web/src/i18n/index.ts | 4 +- 15 files changed, 116 insertions(+), 136 deletions(-) rename internal/server/locales/{de => de-DE}/portal.json (100%) rename internal/server/locales/{es => es-ES}/portal.json (100%) rename internal/server/locales/{fr => fr-FR}/portal.json (100%) rename internal/server/locales/{nl => nl-NL}/portal.json (100%) rename internal/server/locales/{pt => pt-PT}/portal.json (100%) rename internal/server/locales/{ru => ru-RU}/portal.json (100%) delete mode 100644 internal/server/locales/sv/portal.json rename internal/server/locales/{zh => zh-CN}/portal.json (100%) diff --git a/crowdin.yml b/crowdin.yml index 51597bf01..88613ec99 100644 --- a/crowdin.yml +++ b/crowdin.yml @@ -6,14 +6,4 @@ files: - source: /internal/server/locales/en/* translation: /internal/server/locales/%locale%/%original_file_name% skip_untranslated_files: true - languages_mapping: - locale: - "de-DE": de - "en-EN": en - "es-ES": es - "fr-FR": fr - "nl-NL": nl - "pt-PT": pt - "ru-RU": ru - "zh-CH": zh ... diff --git a/internal/middlewares/asset_override.go b/internal/middlewares/asset_override.go index e25444aba..c8ed111c4 100644 --- a/internal/middlewares/asset_override.go +++ b/internal/middlewares/asset_override.go @@ -9,20 +9,22 @@ import ( // AssetOverride allows overriding and serving of specific embedded assets from disk. func AssetOverride(root string, strip int, next fasthttp.RequestHandler) fasthttp.RequestHandler { + if root == "" { + return next + } + + handler := fasthttp.FSHandler(root, strip) + stripper := fasthttp.NewPathSlashesStripper(strip) + return func(ctx *fasthttp.RequestCtx) { - if root == "" { + asset := filepath.Join(root, string(stripper(ctx))) + + if _, err := os.Stat(asset); err != nil { next(ctx) return } - _, err := os.Stat(filepath.Join(root, string(fasthttp.NewPathSlashesStripper(strip)(ctx)))) - if err != nil { - next(ctx) - - return - } - - fasthttp.FSHandler(root, strip)(ctx) + handler(ctx) } } diff --git a/internal/server/asset.go b/internal/server/asset.go index 5c4559a9b..57905a283 100644 --- a/internal/server/asset.go +++ b/internal/server/asset.go @@ -20,19 +20,21 @@ import ( "github.com/authelia/authelia/v4/internal/utils" ) -//go:embed locales -var locales embed.FS +var ( + //go:embed public_html + assets embed.FS -//go:embed public_html -var assets embed.FS + //go:embed locales + locales embed.FS +) func newPublicHTMLEmbeddedHandler() fasthttp.RequestHandler { etags := map[string][]byte{} - getEmbedETags(assets, "public_html", etags) + getEmbedETags(assets, assetsRoot, etags) return func(ctx *fasthttp.RequestCtx) { - p := path.Join("public_html", string(ctx.Path())) + p := path.Join(assetsRoot, string(ctx.Path())) if etag, ok := etags[p]; ok { ctx.Response.Header.SetBytesKV(headerETag, etag) @@ -66,8 +68,10 @@ func newPublicHTMLEmbeddedHandler() fasthttp.RequestHandler { } } -func newLocalesEmbeddedHandler() (handler fasthttp.RequestHandler) { - var languages []string +func newLocalesPathResolver() func(ctx *fasthttp.RequestCtx) (supported bool, asset string) { + var ( + languages, dirs []string + ) entries, err := locales.ReadDir("locales") if err == nil { @@ -84,6 +88,10 @@ func newLocalesEmbeddedHandler() (handler fasthttp.RequestHandler) { lng = strings.SplitN(entry.Name(), "-", 2)[0] } + if !utils.IsStringInSlice(entry.Name(), dirs) { + dirs = append(dirs, entry.Name()) + } + if utils.IsStringInSlice(lng, languages) { continue } @@ -93,34 +101,79 @@ func newLocalesEmbeddedHandler() (handler fasthttp.RequestHandler) { } } - return func(ctx *fasthttp.RequestCtx) { - var ( - language, variant, locale, namespace string - ) + aliases := map[string]string{ + "sv": "sv-SE", + "zh": "zh-CN", + } - language = ctx.UserValue("language").(string) - namespace = ctx.UserValue("namespace").(string) - locale = language + return func(ctx *fasthttp.RequestCtx) (supported bool, asset string) { + var language, namespace, variant, locale string + + language, namespace = ctx.UserValue("language").(string), ctx.UserValue("namespace").(string) + + if !utils.IsStringInSlice(language, languages) { + return false, "" + } if v := ctx.UserValue("variant"); v != nil { variant = v.(string) locale = fmt.Sprintf("%s-%s", language, variant) + } else { + locale = language } - var data []byte + ll := language + "-" + strings.ToUpper(language) + alias, ok := aliases[locale] - if data, err = locales.ReadFile(fmt.Sprintf("locales/%s/%s.json", locale, namespace)); err != nil { - if utils.IsStringInSliceFold(language, languages) { - data = []byte("{}") - } + switch { + case ok: + return true, fmt.Sprintf("locales/%s/%s.json", alias, namespace) + case utils.IsStringInSlice(locale, dirs): + return true, fmt.Sprintf("locales/%s/%s.json", locale, namespace) + case utils.IsStringInSlice(ll, dirs): + return true, fmt.Sprintf("locales/%s-%s/%s.json", language, strings.ToUpper(language), namespace) + default: + return true, fmt.Sprintf("locales/%s/%s.json", locale, namespace) + } + } +} - if len(data) == 0 { - hfsHandleErr(ctx, err) +func newLocalesEmbeddedHandler() (handler fasthttp.RequestHandler) { + etags := map[string][]byte{} + + getEmbedETags(locales, "locales", etags) + + getAssetName := newLocalesPathResolver() + + return func(ctx *fasthttp.RequestCtx) { + supported, asset := getAssetName(ctx) + + if !supported { + handlers.SetStatusCodeResponse(ctx, fasthttp.StatusNotFound) + + return + } + + if etag, ok := etags[asset]; ok { + ctx.Response.Header.SetBytesKV(headerETag, etag) + ctx.Response.Header.SetBytesKV(headerCacheControl, headerValueCacheControlETaggedAssets) + + if bytes.Equal(etag, ctx.Request.Header.PeekBytes(headerIfNoneMatch)) { + ctx.SetStatusCode(fasthttp.StatusNotModified) return } } + var ( + data []byte + err error + ) + + if data, err = locales.ReadFile(asset); err != nil { + data = []byte("{}") + } + middlewares.SetContentTypeApplicationJSON(ctx) ctx.SetBody(data) diff --git a/internal/server/const.go b/internal/server/const.go index 9c9a34098..4d7a636b2 100644 --- a/internal/server/const.go +++ b/internal/server/const.go @@ -5,16 +5,17 @@ import ( ) const ( - embeddedAssets = "public_html/" - swaggerAssets = embeddedAssets + "api/" - apiFile = "openapi.yml" - indexFile = "index.html" - logoFile = "logo.png" + assetsRoot = "public_html" + assetsSwagger = assetsRoot + "/api" + + fileOpenAPI = "openapi.yml" + fileIndexHTML = "index.html" + fileLogo = "logo.png" ) var ( - rootFiles = []string{"manifest.json", "robots.txt"} - swaggerFiles = []string{ + filesRoot = []string{"manifest.json", "robots.txt"} + filesSwagger = []string{ "favicon-16x16.png", "favicon-32x32.png", "index.css", @@ -35,7 +36,7 @@ var ( } // Directories excluded from the not found handler proceeding to the next() handler. - httpServerDirs = []struct { + dirsHTTPServer = []struct { name, prefix string }{ {name: "/api", prefix: "/api/"}, diff --git a/internal/server/handlers.go b/internal/server/handlers.go index 389743d39..9f77e0bbb 100644 --- a/internal/server/handlers.go +++ b/internal/server/handlers.go @@ -79,8 +79,8 @@ func handleNotFound(next fasthttp.RequestHandler) fasthttp.RequestHandler { return func(ctx *fasthttp.RequestCtx) { path := strings.ToLower(string(ctx.Path())) - for i := 0; i < len(httpServerDirs); i++ { - if path == httpServerDirs[i].name || strings.HasPrefix(path, httpServerDirs[i].prefix) { + for i := 0; i < len(dirsHTTPServer); i++ { + if path == dirsHTTPServer[i].name || strings.HasPrefix(path, dirsHTTPServer[i].prefix) { handlers.SetStatusCodeResponse(ctx, fasthttp.StatusNotFound) return @@ -104,9 +104,9 @@ func handleRouter(config schema.Configuration, providers middlewares.Providers) https := config.Server.TLS.Key != "" && config.Server.TLS.Certificate != "" - serveIndexHandler := ServeTemplatedFile(embeddedAssets, indexFile, config.Server.AssetPath, duoSelfEnrollment, rememberMe, resetPassword, resetPasswordCustomURL, config.Session.Name, config.Theme, https) - serveSwaggerHandler := ServeTemplatedFile(swaggerAssets, indexFile, config.Server.AssetPath, duoSelfEnrollment, rememberMe, resetPassword, resetPasswordCustomURL, config.Session.Name, config.Theme, https) - serveSwaggerAPIHandler := ServeTemplatedFile(swaggerAssets, apiFile, config.Server.AssetPath, duoSelfEnrollment, rememberMe, resetPassword, resetPasswordCustomURL, config.Session.Name, config.Theme, https) + serveIndexHandler := ServeTemplatedFile(assetsRoot, fileIndexHTML, config.Server.AssetPath, duoSelfEnrollment, rememberMe, resetPassword, resetPasswordCustomURL, config.Session.Name, config.Theme, https) + serveSwaggerHandler := ServeTemplatedFile(assetsSwagger, fileIndexHTML, config.Server.AssetPath, duoSelfEnrollment, rememberMe, resetPassword, resetPasswordCustomURL, config.Session.Name, config.Theme, https) + serveSwaggerAPIHandler := ServeTemplatedFile(assetsSwagger, fileOpenAPI, config.Server.AssetPath, duoSelfEnrollment, rememberMe, resetPassword, resetPasswordCustomURL, config.Session.Name, config.Theme, https) handlerPublicHTML := newPublicHTMLEmbeddedHandler() handlerLocales := newLocalesEmbeddedHandler() @@ -124,7 +124,7 @@ func handleRouter(config schema.Configuration, providers middlewares.Providers) // Static Assets. r.GET("/", middleware(serveIndexHandler)) - for _, f := range rootFiles { + for _, f := range filesRoot { r.GET("/"+f, handlerPublicHTML) } @@ -139,10 +139,10 @@ func handleRouter(config schema.Configuration, providers middlewares.Providers) // Swagger. r.GET("/api/", middleware(serveSwaggerHandler)) r.OPTIONS("/api/", policyCORSPublicGET.HandleOPTIONS) - r.GET("/api/"+apiFile, policyCORSPublicGET.Middleware(middleware(serveSwaggerAPIHandler))) - r.OPTIONS("/api/"+apiFile, policyCORSPublicGET.HandleOPTIONS) + r.GET("/api/"+fileOpenAPI, policyCORSPublicGET.Middleware(middleware(serveSwaggerAPIHandler))) + r.OPTIONS("/api/"+fileOpenAPI, policyCORSPublicGET.HandleOPTIONS) - for _, file := range swaggerFiles { + for _, file := range filesSwagger { r.GET("/api/"+file, handlerPublicHTML) } diff --git a/internal/server/locales/de/portal.json b/internal/server/locales/de-DE/portal.json similarity index 100% rename from internal/server/locales/de/portal.json rename to internal/server/locales/de-DE/portal.json diff --git a/internal/server/locales/es/portal.json b/internal/server/locales/es-ES/portal.json similarity index 100% rename from internal/server/locales/es/portal.json rename to internal/server/locales/es-ES/portal.json diff --git a/internal/server/locales/fr/portal.json b/internal/server/locales/fr-FR/portal.json similarity index 100% rename from internal/server/locales/fr/portal.json rename to internal/server/locales/fr-FR/portal.json diff --git a/internal/server/locales/nl/portal.json b/internal/server/locales/nl-NL/portal.json similarity index 100% rename from internal/server/locales/nl/portal.json rename to internal/server/locales/nl-NL/portal.json diff --git a/internal/server/locales/pt/portal.json b/internal/server/locales/pt-PT/portal.json similarity index 100% rename from internal/server/locales/pt/portal.json rename to internal/server/locales/pt-PT/portal.json diff --git a/internal/server/locales/ru/portal.json b/internal/server/locales/ru-RU/portal.json similarity index 100% rename from internal/server/locales/ru/portal.json rename to internal/server/locales/ru-RU/portal.json diff --git a/internal/server/locales/sv/portal.json b/internal/server/locales/sv/portal.json deleted file mode 100644 index 20f8e1948..000000000 --- a/internal/server/locales/sv/portal.json +++ /dev/null @@ -1,69 +0,0 @@ -{ - "Accept": "Acceptera", - "Access your email addresses": "Hantera din e-postadress", - "Access your group membership": "Hantera dina gruppmedlemskap", - "Access your profile information": "Hantera din profilinformation", - "An email has been sent to your address to complete the process": "Ett mejl har skickats till din e-postadress för att slutföra processen.", - "Authenticated": "Autentiserad", - "Cancel": "Avbryt", - "Client ID": "Klient-ID: {{client_id}}", - "Consent Request": "Begäran om medgivande", - "Contact your administrator to register a device": "Kontakta din administratör för att registrera en enhet.", - "Could not obtain user settings": "Misslyckades med att hämta användarinställningarna.", - "Deny": "Avböj", - "Done": "Klar", - "Enter new password": "Skriv ditt nya lösenord", - "Enter one-time password": "Skriv ditt engångslösenord", - "Failed to register device, the provided link is expired or has already been used": "Enhetsregistreringen misslyckades, den angivna länken har utgått eller redan blivit använd.", - "Hi": "Hej", - "Incorrect username or password": "Fel användarnamn eller lösenord", - "Loading": "Läser in", - "Logout": "Logga ut", - "Lost your device?": "Har du tappat bort din enhet?", - "Methods": "Metoder", - "Must be at least {{len}} characters in length": "Måste vara minst {{len}} tecken långt", - "Must have at least one UPPERCASE letter": "Måste innehålla minst en stor bokstav", - "Must have at least one lowercase letter": "Måste innehålla minst en liten bokstav", - "Must have at least one number": "Måste innehålla minst ett nummer", - "Must have at least one special character": "Måste innehålla minst ett specialtecken", - "Must not be more than {{len}} characters in length": "Får inte vara längre än {{len}} tecken", - "Need Google Authenticator?": "Behöver du Google Authenticator?", - "New password": "Nytt lösenord", - "No verification token provided": "Ingen verifieringskod tillhandahålls", - "OTP Secret copied to clipboard": "OTP koden har kopierats till urklipp", - "OTP URL copied to clipboard": "OTP länken har kopierats till urklipp", - "One-Time Password": "Engångslösenord", - "Password has been reset": "Lösenordet har blivit återställt", - "Password": "Lösenord", - "Passwords do not match": "Lösenorden matchar inte", - "Push Notification": "Push-avisering", - "Register device": "Registrera enhet", - "Register your first device by clicking on the link below": "Registrera din första enhet genom att klicka på länken nedan", - "Remember Consent": "Kom ihåg samtycke", - "Remember me": "Kom ihåg mig", - "Repeat new password": "Upprepa nya lösenordet", - "Reset password": "Återställ lösenord", - "Reset password?": "Återställ lösenord?", - "Reset": "Återställ", - "Scan QR Code": "Skanna QR koden", - "Secret": "Kod", - "Security Key - WebAuthN": "Säkerhetsnyckel - WebAuthN", - "Select a Device": "Välj en enhet", - "Sign in": "Logga in", - "Sign out": "Logga ut", - "The above application is requesting the following permissions": "Ovanstående program begär följande behörigheter", - "The password does not meet the password policy": "Lösenordet uppfyller inte lösenordspolicyn", - "The resource you're attempting to access requires two-factor authentication": "Resursen du vill komma åt kräver tvåstegsverifiering", - "There was a problem initiating the registration process": "Ett problem uppstod när registreringsprocessen skulle starta", - "There was an issue completing the process. The verification token might have expired": "Det uppstod ett problem med att slutföra processen. Verifieringskoden kan ha gått ut", - "There was an issue initiating the password reset process": "Ett problem uppstod när processen för lösenordsåterställning startade", - "There was an issue resetting the password": "Ett problem uppstod med att återställa lösenordet", - "There was an issue signing out": "Ett problem uppstod med att logga ut", - "This saves this consent as a pre-configured consent for future use": "Spara detta samtycke som ett förkonfigurerat samtycke för framtida användning", - "Time-based One-Time Password": "Tidsbaserat engångslösenord", - "Use OpenID to verify your identity": "Använd OpenID till att verifiera din identitet", - "Username": "Användarnamn", - "You must open the link from the same device and browser that initiated the registration process": "Du måste öppna länken från samma enhet och webbläsare som startade registreringsprocessen", - "You're being signed out and redirected": "Du blir utloggad och omdirigerad", - "Your supplied password does not meet the password policy requirements": "Det angivna lösenordet möter inte lösenordskraven" -} diff --git a/internal/server/locales/zh/portal.json b/internal/server/locales/zh-CN/portal.json similarity index 100% rename from internal/server/locales/zh/portal.json rename to internal/server/locales/zh-CN/portal.json diff --git a/internal/server/template.go b/internal/server/template.go index 9c5bb523d..fedf2df57 100644 --- a/internal/server/template.go +++ b/internal/server/template.go @@ -4,10 +4,13 @@ import ( "fmt" "io" "os" + "path" "path/filepath" "strings" "text/template" + "github.com/valyala/fasthttp" + "github.com/authelia/authelia/v4/internal/logging" "github.com/authelia/authelia/v4/internal/middlewares" "github.com/authelia/authelia/v4/internal/utils" @@ -19,7 +22,7 @@ import ( func ServeTemplatedFile(publicDir, file, assetPath, duoSelfEnrollment, rememberMe, resetPassword, resetPasswordCustomURL, session, theme string, https bool) middlewares.RequestHandler { logger := logging.Logger() - a, err := assets.Open(publicDir + file) + a, err := assets.Open(path.Join(publicDir, file)) if err != nil { logger.Fatalf("Unable to open %s: %s", file, err) } @@ -43,7 +46,7 @@ func ServeTemplatedFile(publicDir, file, assetPath, duoSelfEnrollment, rememberM logoOverride := f if assetPath != "" { - if _, err := os.Stat(filepath.Join(assetPath, logoFile)); err == nil { + if _, err := os.Stat(filepath.Join(assetPath, fileLogo)); err == nil { logoOverride = t } } @@ -71,14 +74,14 @@ func ServeTemplatedFile(publicDir, file, assetPath, duoSelfEnrollment, rememberM } switch { - case publicDir == swaggerAssets: - ctx.Response.Header.Add("Content-Security-Policy", fmt.Sprintf("base-uri 'self'; default-src 'self'; img-src 'self' https://validator.swagger.io data:; object-src 'none'; script-src 'self' 'unsafe-inline' 'nonce-%s'; style-src 'self' 'nonce-%s'", nonce, nonce)) + case publicDir == assetsSwagger: + ctx.Response.Header.Add(fasthttp.HeaderContentSecurityPolicy, fmt.Sprintf("base-uri 'self'; default-src 'self'; img-src 'self' https://validator.swagger.io data:; object-src 'none'; script-src 'self' 'unsafe-inline' 'nonce-%s'; style-src 'self' 'nonce-%s'", nonce, nonce)) case ctx.Configuration.Server.Headers.CSPTemplate != "": - ctx.Response.Header.Add("Content-Security-Policy", strings.ReplaceAll(ctx.Configuration.Server.Headers.CSPTemplate, cspNoncePlaceholder, nonce)) + ctx.Response.Header.Add(fasthttp.HeaderContentSecurityPolicy, strings.ReplaceAll(ctx.Configuration.Server.Headers.CSPTemplate, cspNoncePlaceholder, nonce)) case os.Getenv("ENVIRONMENT") == dev: - ctx.Response.Header.Add("Content-Security-Policy", fmt.Sprintf(cspDefaultTemplate, " 'unsafe-eval'", nonce)) + ctx.Response.Header.Add(fasthttp.HeaderContentSecurityPolicy, fmt.Sprintf(cspDefaultTemplate, " 'unsafe-eval'", nonce)) default: - ctx.Response.Header.Add("Content-Security-Policy", fmt.Sprintf(cspDefaultTemplate, "", nonce)) + ctx.Response.Header.Add(fasthttp.HeaderContentSecurityPolicy, fmt.Sprintf(cspDefaultTemplate, "", nonce)) } err := tmpl.Execute(ctx.Response.BodyWriter(), struct{ Base, BaseURL, CSPNonce, DuoSelfEnrollment, LogoOverride, RememberMe, ResetPassword, ResetPasswordCustomURL, Session, Theme string }{Base: base, BaseURL: baseURL, CSPNonce: nonce, DuoSelfEnrollment: duoSelfEnrollment, LogoOverride: logoOverride, RememberMe: rememberMe, ResetPassword: resetPassword, ResetPasswordCustomURL: resetPasswordCustomURL, Session: session, Theme: theme}) diff --git a/web/src/i18n/index.ts b/web/src/i18n/index.ts index 53231ccd1..6cfa4419d 100644 --- a/web/src/i18n/index.ts +++ b/web/src/i18n/index.ts @@ -18,9 +18,9 @@ i18n.use(Backend) backend: { loadPath: basePath + "/locales/{{lng}}/{{ns}}.json", }, + load: "all", ns: ["portal"], defaultNS: "portal", - load: "all", fallbackLng: { default: ["en"], de: ["en"], @@ -33,7 +33,7 @@ i18n.use(Backend) "sv-SE": ["sv", "en"], zh: ["en"], "zh-CN": ["zh", "en"], - "zh-TW": ["zh", "en"], + "zh-TW": ["en"], }, supportedLngs: ["en", "de", "es", "fr", "nl", "pt", "ru", "sv", "sv-SE", "zh", "zh-CN", "zh-TW"], lowerCaseLng: false, From 9c72bc8977359ef5b79996d2b9bd41882438d11d Mon Sep 17 00:00:00 2001 From: James Elliott Date: Fri, 16 Sep 2022 14:21:05 +1000 Subject: [PATCH 015/263] ci: gen github tmpl locales and commitlint (#3759) This adds several automatic generators for Authelia docs etc. --- .github/ISSUE_TEMPLATE/bug-report.yml | 138 +++++++++ .github/ISSUE_TEMPLATE/bug_report.md | 41 --- .github/ISSUE_TEMPLATE/config.yml | 9 + .github/ISSUE_TEMPLATE/feature-request.yml | 47 ++++ .github/ISSUE_TEMPLATE/feature_request.md | 26 -- .github/ISSUE_TEMPLATE/misc.md | 7 - .yamllint.yml | 3 +- cmd/authelia-gen/cmd_all.go | 36 --- cmd/authelia-gen/cmd_code.go | 263 +++++++++++++++++- cmd/authelia-gen/cmd_code_keys.go | 173 ------------ cmd/authelia-gen/cmd_commit_msg.go | 220 +++++++++++++++ cmd/authelia-gen/cmd_docs.go | 22 +- cmd/authelia-gen/cmd_docs_cli.go | 38 ++- cmd/authelia-gen/cmd_docs_date.go | 21 +- cmd/authelia-gen/cmd_docs_keys.go | 81 ++++++ cmd/authelia-gen/cmd_github.go | 236 ++++++++++++++++ cmd/authelia-gen/cmd_locales.go | 215 ++++++++++++++ cmd/authelia-gen/cmd_root.go | 124 +++++++++ cmd/authelia-gen/const.go | 80 +++++- cmd/authelia-gen/main.go | 24 +- cmd/authelia-gen/templates.go | 69 +++++ .../cmd-authelia-scripts-gen.go.tmpl | 11 + ...contributing-development-commitmsg.md.tmpl | 138 +++++++++ .../templates/dot_commitlintrc.js.tmpl | 25 ++ .../github_issue_template_bug_report.yml.tmpl | 108 +++++++ .../github_issue_template_feature.yml.tmpl | 47 ++++ ...nternal_configuration_schema_keys.go.tmpl} | 0 .../templates/web_i18n_index.ts.tmpl | 47 ++++ cmd/authelia-gen/types.go | 123 ++++++++ cmd/authelia-scripts/cmd/build.go | 7 +- cmd/authelia-scripts/cmd/gen.go | 11 + docs/config/_default/menus/menus.en.toml | 12 +- .../en/configuration/methods/environment.md | 4 + .../en/configuration/methods/secrets.md | 18 +- .../development/guidelines-commit-message.md | 13 +- .../privacy-policy.md => policies/privacy.md} | 2 +- .../en/{information => policies}/security.md | 7 +- .../cli/authelia-gen/authelia-gen.md | 28 +- .../cli/authelia-gen/authelia-gen_all.md | 32 --- .../cli/authelia-gen/authelia-gen_code.md | 24 ++ .../authelia-gen/authelia-gen_code_keys.md | 27 +- .../authelia-gen/authelia-gen_code_scripts.md | 55 ++++ .../authelia-gen/authelia-gen_commit-lint.md | 55 ++++ .../cli/authelia-gen/authelia-gen_docs.md | 27 +- .../cli/authelia-gen/authelia-gen_docs_cli.md | 22 +- .../authelia-gen/authelia-gen_docs_date.md | 22 +- .../authelia-gen/authelia-gen_docs_keys.md | 55 ++++ .../authelia-gen/authelia-gen_docs_time.md | 42 --- .../cli/authelia-gen/authelia-gen_github.md | 56 ++++ .../authelia-gen_github_issue-templates.md | 57 ++++ ...a-gen_github_issue-templates_bug-report.md | 55 ++++ ..._github_issue-templates_feature-request.md | 55 ++++ .../cli/authelia-gen/authelia-gen_locales.md | 55 ++++ .../authelia-scripts_certificates.md | 39 --- .../authelia-scripts_certificates_generate.md | 49 ---- .../authelia-scripts_hash-password.md | 49 ---- .../authelia-scripts/authelia-scripts_rsa.md | 38 --- .../authelia-scripts_rsa_generate.md | 43 --- .../reference/guides/domain-sanitizaiton.md | 30 -- .../reference/guides/internationalization.md | 17 ++ .../guides/troubleshooting-sanitizaiton.md | 43 +++ docs/data/configkeys.json | 1 + docs/data/languages.json | 2 +- docs/layouts/policies/list.html | 22 ++ .../layouts/shortcodes/table-config-keys.html | 14 + .../shortcodes/table-i18n-locales.html | 5 + docs/package.json | 2 +- internal/configuration/helpers.go | 28 +- internal/configuration/helpers_test.go | 12 +- internal/configuration/sources.go | 10 +- web/src/i18n/index.ts | 6 + 71 files changed, 2770 insertions(+), 753 deletions(-) create mode 100644 .github/ISSUE_TEMPLATE/bug-report.yml delete mode 100644 .github/ISSUE_TEMPLATE/bug_report.md create mode 100644 .github/ISSUE_TEMPLATE/feature-request.yml delete mode 100644 .github/ISSUE_TEMPLATE/feature_request.md delete mode 100644 .github/ISSUE_TEMPLATE/misc.md delete mode 100644 cmd/authelia-gen/cmd_all.go delete mode 100644 cmd/authelia-gen/cmd_code_keys.go create mode 100644 cmd/authelia-gen/cmd_commit_msg.go create mode 100644 cmd/authelia-gen/cmd_docs_keys.go create mode 100644 cmd/authelia-gen/cmd_github.go create mode 100644 cmd/authelia-gen/cmd_locales.go create mode 100644 cmd/authelia-gen/cmd_root.go create mode 100644 cmd/authelia-gen/templates.go create mode 100644 cmd/authelia-gen/templates/cmd-authelia-scripts-gen.go.tmpl create mode 100644 cmd/authelia-gen/templates/docs-contributing-development-commitmsg.md.tmpl create mode 100644 cmd/authelia-gen/templates/dot_commitlintrc.js.tmpl create mode 100644 cmd/authelia-gen/templates/github_issue_template_bug_report.yml.tmpl create mode 100644 cmd/authelia-gen/templates/github_issue_template_feature.yml.tmpl rename cmd/authelia-gen/templates/{config_keys.go.tmpl => internal_configuration_schema_keys.go.tmpl} (100%) create mode 100644 cmd/authelia-gen/templates/web_i18n_index.ts.tmpl create mode 100644 cmd/authelia-gen/types.go create mode 100644 cmd/authelia-scripts/cmd/gen.go rename docs/content/en/{information/privacy-policy.md => policies/privacy.md} (92%) rename docs/content/en/{information => policies}/security.md (93%) delete mode 100644 docs/content/en/reference/cli/authelia-gen/authelia-gen_all.md create mode 100644 docs/content/en/reference/cli/authelia-gen/authelia-gen_code_scripts.md create mode 100644 docs/content/en/reference/cli/authelia-gen/authelia-gen_commit-lint.md create mode 100644 docs/content/en/reference/cli/authelia-gen/authelia-gen_docs_keys.md delete mode 100644 docs/content/en/reference/cli/authelia-gen/authelia-gen_docs_time.md create mode 100644 docs/content/en/reference/cli/authelia-gen/authelia-gen_github.md create mode 100644 docs/content/en/reference/cli/authelia-gen/authelia-gen_github_issue-templates.md create mode 100644 docs/content/en/reference/cli/authelia-gen/authelia-gen_github_issue-templates_bug-report.md create mode 100644 docs/content/en/reference/cli/authelia-gen/authelia-gen_github_issue-templates_feature-request.md create mode 100644 docs/content/en/reference/cli/authelia-gen/authelia-gen_locales.md delete mode 100644 docs/content/en/reference/cli/authelia-scripts/authelia-scripts_certificates.md delete mode 100644 docs/content/en/reference/cli/authelia-scripts/authelia-scripts_certificates_generate.md delete mode 100644 docs/content/en/reference/cli/authelia-scripts/authelia-scripts_hash-password.md delete mode 100644 docs/content/en/reference/cli/authelia-scripts/authelia-scripts_rsa.md delete mode 100644 docs/content/en/reference/cli/authelia-scripts/authelia-scripts_rsa_generate.md delete mode 100644 docs/content/en/reference/guides/domain-sanitizaiton.md create mode 100644 docs/content/en/reference/guides/internationalization.md create mode 100644 docs/content/en/reference/guides/troubleshooting-sanitizaiton.md create mode 100644 docs/data/configkeys.json create mode 100644 docs/layouts/policies/list.html create mode 100644 docs/layouts/shortcodes/table-config-keys.html create mode 100644 docs/layouts/shortcodes/table-i18n-locales.html diff --git a/.github/ISSUE_TEMPLATE/bug-report.yml b/.github/ISSUE_TEMPLATE/bug-report.yml new file mode 100644 index 000000000..3b107f758 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug-report.yml @@ -0,0 +1,138 @@ +--- +name: Bug Report +description: Report a bug +labels: + - type/bug/unconfirmed + - status/needs-triage + - priority/4-normal +body: + - type: markdown + attributes: + value: | + Thanks for taking the time to fill out this bug report. If you are unsure if this is actually a bug we generally recommend creating a [Question and Answer Discussion](https://github.com/authelia/authelia/discussions/new?category=q-a) first. + + Please review the following requirements before submitting this issue type: + + 1. Please ensure you do not report security vulnerabilities via this method. See our [Security Policy](https://www.authelia.com/security-policy). + 2. Please try to give as much information as possible for us to be able to reproduce the issue and provide a quick fix. + 3. Please ensure an issue does not already exist for this potential bug. + 4. Please only provide specific versions. Latest is not a version. + 5. Please read the [Troubleshooting Sanitization](https://www.authelia.com/r/sanitize) reference guide if you plan on removing or adjusting any values for the logs or configuration files + - type: dropdown + id: version + attributes: + label: Version + description: What version(s) of Authelia can you reproduce this bug on? + multiple: true + options: + - v4.36.7 + - v4.36.6 + - v4.36.5 + - v4.36.4 + - v4.36.3 + - v4.36.2 + - v4.36.1 + - v4.36.0 + - v4.35.6 + - v4.35.5 + - v4.35.4 + - v4.35.3 + - v4.35.2 + - v4.35.1 + - v4.35.0 + - v4.34.6 + - v4.34.5 + - v4.34.4 + - v4.34.3 + - v4.34.2 + - v4.34.1 + - v4.34.0 + - v4.33.2 + - v4.33.1 + - v4.33.0 + - v4.32.2 + - v4.32.1 + - v4.32.0 + - v4.31.0 + validations: + required: true + - type: dropdown + id: deployment + attributes: + label: Deployment Method + description: How are you deploying Authelia? + options: + - Docker + - Kubernetes + - Bare-metal + - Other + validations: + required: true + - type: dropdown + id: proxy + attributes: + label: Reverse Proxy + description: What reverse proxy are you using? + options: + - Caddy + - Traefik + - Envoy + - NGINX + - SWAG + - NGINX Proxy Manager + - HAProxy + validations: + required: true + - type: input + id: proxy-version + attributes: + label: Reverse Proxy Version + description: What is the version of your reverse proxy? + placeholder: x.x.x + validations: + required: false + - type: textarea + id: description + attributes: + label: Description + description: Describe the bug + validations: + required: true + - type: textarea + id: reproduction + attributes: + label: Reproduction + description: Describe how we can reproduce this issue + validations: + required: true + - type: textarea + id: logs + attributes: + label: Logs + description: Provide the logs (the template will automatically put this content in a code block) + render: shell + validations: + required: false + - type: textarea + id: configuration + attributes: + label: Configuration + description: Provide the Authelia configuration file (the template will automatically put this content in a code block) + render: yaml + validations: + required: false + - type: textarea + id: expectations + attributes: + label: Expectations + description: Describe the desired or expected results + validations: + required: false + - type: textarea + id: documentation + attributes: + label: Documentation + description: Provide any relevant specification or other documentation if applicable + validations: + required: false +... diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md deleted file mode 100644 index 76a60c8f8..000000000 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ /dev/null @@ -1,41 +0,0 @@ ---- -name: Bug Report -about: Use this template to report bugs other than security vulnerabilities -labels: Possible Bug ---- -## Bug Report - - -### Description - - - -### Expected Behaviour - -_N/A_ - - -### Reproduction Steps - -_N/A_ - - -### Additional Information - -_N/A_ - \ No newline at end of file diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml index 899f94db9..2a89a14ac 100644 --- a/.github/ISSUE_TEMPLATE/config.yml +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -1,6 +1,15 @@ --- blank_issues_enabled: false contact_links: + - name: Idea + url: https://github.com/authelia/authelia/discussions/new?category=ideas + about: Submit an Idea for Voting + - name: Question + url: https://github.com/authelia/authelia/discussions/new?category=q-a + about: Ask a Question + - name: Discussion + url: https://github.com/authelia/authelia/discussions/new + about: Start a Discussion related to Ideas, Polls, Show and Tell, or General Topics - name: Documentation url: https://www.authelia.com/ about: Read the Documentation diff --git a/.github/ISSUE_TEMPLATE/feature-request.yml b/.github/ISSUE_TEMPLATE/feature-request.yml new file mode 100644 index 000000000..00a448c06 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/feature-request.yml @@ -0,0 +1,47 @@ +--- +name: Feature Request +description: Submit a Feature for Design which Has Been Submitted as an Idea and has been voted on +labels: + - type/feature + - status/needs-design + - priority/4-normal +body: + - type: markdown + attributes: + value: | + Thanks for taking the time to fill out this feature request. A feature request is created as issue for the purpose of tracking the design and implementation of a feature. + + Please review the following requirements before submitting this issue type: + + 1. Ensure there are no other similar feature requests. + 2. Make sure you've checked the [Documentation](https://www.authelia.com) doesn't clearly document the features existence already. + 3. Consider creating an [Idea Discussion](https://github.com/authelia/authelia/discussions/new?category=ideas) which can be voted on instead if one doesn't exist. + - type: textarea + id: description + attributes: + label: Description + description: Describe the feature + validations: + required: true + - type: textarea + id: use-case + attributes: + label: Use Case + description: Provide a use case + validations: + required: true + - type: textarea + id: details + attributes: + label: Details + description: Describe the feature in detail + validations: + required: false + - type: textarea + id: documentation + attributes: + label: Documentation + description: Provide any relevant specification or other documentation if applicable + validations: + required: false +... diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md deleted file mode 100644 index 4354ccba9..000000000 --- a/.github/ISSUE_TEMPLATE/feature_request.md +++ /dev/null @@ -1,26 +0,0 @@ ---- -name: Feature Request -about: Use this template to request features -labels: Feature Request ---- -## Feature Request - - -### Description - - - -### Use Case - -_N/A_ - \ No newline at end of file diff --git a/.github/ISSUE_TEMPLATE/misc.md b/.github/ISSUE_TEMPLATE/misc.md deleted file mode 100644 index 23a941098..000000000 --- a/.github/ISSUE_TEMPLATE/misc.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -name: Miscellaneous -about: Use this template for everything other than feature requests, security vulnerabilities, or bug reports such as questions ---- - \ No newline at end of file diff --git a/.yamllint.yml b/.yamllint.yml index 3d31542b4..d7fc7209f 100644 --- a/.yamllint.yml +++ b/.yamllint.yml @@ -6,7 +6,8 @@ ignore: | internal/configuration/test_resources/config_bad_quoting.yml web/pnpm-lock.yaml web/node_modules/ - + .github/ISSUE_TEMPLATE/feature-request.yml + .github/ISSUE_TEMPLATE/bug-report.yml rules: document-end: level: warning diff --git a/cmd/authelia-gen/cmd_all.go b/cmd/authelia-gen/cmd_all.go deleted file mode 100644 index aba00a5a3..000000000 --- a/cmd/authelia-gen/cmd_all.go +++ /dev/null @@ -1,36 +0,0 @@ -package main - -import ( - "github.com/spf13/cobra" -) - -func newAllCmd() *cobra.Command { - cmd := &cobra.Command{ - Use: "all", - Short: "Run all generators with default options", - RunE: allRunE, - - DisableAutoGenTag: true, - } - - return cmd -} - -func allRunE(cmd *cobra.Command, args []string) (err error) { - for _, subCmd := range cmd.Parent().Commands() { - if subCmd == cmd || subCmd.Use == "completion" || subCmd.Use == "help [command]" { - continue - } - - switch { - case subCmd.RunE != nil: - if err = subCmd.RunE(subCmd, args); err != nil { - return err - } - case subCmd.Run != nil: - subCmd.Run(subCmd, args) - } - } - - return nil -} diff --git a/cmd/authelia-gen/cmd_code.go b/cmd/authelia-gen/cmd_code.go index f0eea6b02..f0cac4bba 100644 --- a/cmd/authelia-gen/cmd_code.go +++ b/cmd/authelia-gen/cmd_code.go @@ -1,34 +1,271 @@ package main import ( + "encoding/json" + "fmt" + "io" + "net/http" + "net/mail" + "net/url" + "os" + "path/filepath" + "reflect" + "regexp" + "strings" + "time" + "github.com/spf13/cobra" + + "github.com/authelia/authelia/v4/internal/configuration/schema" ) func newCodeCmd() *cobra.Command { cmd := &cobra.Command{ - Use: "code", + Use: cmdUseCode, Short: "Generate code", - RunE: codeRunE, + RunE: rootSubCommandsRunE, DisableAutoGenTag: true, } - cmd.AddCommand(newCodeKeysCmd()) + cmd.AddCommand(newCodeKeysCmd(), newCodeScriptsCmd()) return cmd } -func codeRunE(cmd *cobra.Command, args []string) (err error) { - for _, subCmd := range cmd.Commands() { - switch { - case subCmd.RunE != nil: - if err = subCmd.RunE(subCmd, args); err != nil { - return err - } - case subCmd.Run != nil: - subCmd.Run(subCmd, args) - } +func newCodeScriptsCmd() *cobra.Command { + cmd := &cobra.Command{ + Use: cmdUseCodeScripts, + Short: "Generate the generated portion of the authelia-scripts command", + RunE: codeScriptsRunE, + + DisableAutoGenTag: true, + } + + return cmd +} + +func newCodeKeysCmd() *cobra.Command { + cmd := &cobra.Command{ + Use: cmdUseKeys, + Short: "Generate the list of valid configuration keys", + RunE: codeKeysRunE, + + DisableAutoGenTag: true, + } + + return cmd +} + +func codeScriptsRunE(cmd *cobra.Command, args []string) (err error) { + var ( + root, pathScriptsGen string + resp *http.Response + ) + + data := &tmplScriptsGEnData{} + + if root, err = cmd.Flags().GetString(cmdFlagRoot); err != nil { + return err + } + + if pathScriptsGen, err = cmd.Flags().GetString(cmdFlagFileScriptsGen); err != nil { + return err + } + + if data.Package, err = cmd.Flags().GetString(cmdFlagPackageScriptsGen); err != nil { + return err + } + + if resp, err = http.Get("https://api.github.com/repos/swagger-api/swagger-ui/tags"); err != nil { + return fmt.Errorf("failed to get latest version of the Swagger UI: %w", err) + } + + defer resp.Body.Close() + + var ( + respJSON []GitHubTagsJSON + respRaw []byte + ) + + if respRaw, err = io.ReadAll(resp.Body); err != nil { + return fmt.Errorf("failed to get latest version of the Swagger UI: %w", err) + } + + if err = json.Unmarshal(respRaw, &respJSON); err != nil { + return fmt.Errorf("failed to get latest version of the Swagger UI: %w", err) + } + + if len(respJSON) < 1 { + return fmt.Errorf("failed to get latest version of the Swagger UI: the api returned zero results") + } + + if strings.HasPrefix(respJSON[0].Name, "v") { + data.VersionSwaggerUI = respJSON[0].Name[1:] + } else { + data.VersionSwaggerUI = respJSON[0].Name + } + + fullPathScriptsGen := filepath.Join(root, pathScriptsGen) + + var f *os.File + + if f, err = os.Create(fullPathScriptsGen); err != nil { + return fmt.Errorf("failed to create file '%s': %w", fullPathScriptsGen, err) + } + + if err = tmplScriptsGen.Execute(f, data); err != nil { + _ = f.Close() + + return fmt.Errorf("failed to write output file '%s': %w", fullPathScriptsGen, err) + } + + if err = f.Close(); err != nil { + return fmt.Errorf("failed to close output file '%s': %w", fullPathScriptsGen, err) } return nil } + +// GitHubTagsJSON represents the JSON struct for the GitHub Tags API. +type GitHubTagsJSON struct { + Name string `json:"name"` +} + +func codeKeysRunE(cmd *cobra.Command, args []string) (err error) { + var ( + pathCodeConfigKeys, root string + + f *os.File + ) + + data := tmplConfigurationKeysData{ + Timestamp: time.Now(), + Keys: readTags("", reflect.TypeOf(schema.Configuration{})), + } + + if root, err = cmd.Flags().GetString(cmdFlagRoot); err != nil { + return err + } + + if pathCodeConfigKeys, err = cmd.Flags().GetString(cmdFlagFileConfigKeys); err != nil { + return err + } + + if data.Package, err = cmd.Flags().GetString(cmdFlagPackageConfigKeys); err != nil { + return err + } + + fullPathCodeConfigKeys := filepath.Join(root, pathCodeConfigKeys) + + if f, err = os.Create(fullPathCodeConfigKeys); err != nil { + return fmt.Errorf("failed to create file '%s': %w", fullPathCodeConfigKeys, err) + } + + if err = tmplCodeConfigurationSchemaKeys.Execute(f, data); err != nil { + _ = f.Close() + + return fmt.Errorf("failed to write output file '%s': %w", fullPathCodeConfigKeys, err) + } + + if err = f.Close(); err != nil { + return fmt.Errorf("failed to close output file '%s': %w", fullPathCodeConfigKeys, err) + } + + return nil +} + +var decodedTypes = []reflect.Type{ + reflect.TypeOf(mail.Address{}), + reflect.TypeOf(regexp.Regexp{}), + reflect.TypeOf(url.URL{}), + reflect.TypeOf(time.Duration(0)), + reflect.TypeOf(schema.Address{}), +} + +func containsType(needle reflect.Type, haystack []reflect.Type) (contains bool) { + for _, t := range haystack { + if needle.Kind() == reflect.Ptr { + if needle.Elem() == t { + return true + } + } else if needle == t { + return true + } + } + + return false +} + +func readTags(prefix string, t reflect.Type) (tags []string) { + tags = make([]string, 0) + + for i := 0; i < t.NumField(); i++ { + field := t.Field(i) + + tag := field.Tag.Get("koanf") + + if tag == "" { + tags = append(tags, prefix) + + continue + } + + switch field.Type.Kind() { + case reflect.Struct: + if !containsType(field.Type, decodedTypes) { + tags = append(tags, readTags(getKeyNameFromTagAndPrefix(prefix, tag, false), field.Type)...) + + continue + } + case reflect.Slice: + if field.Type.Elem().Kind() == reflect.Struct { + if !containsType(field.Type.Elem(), decodedTypes) { + tags = append(tags, getKeyNameFromTagAndPrefix(prefix, tag, false)) + tags = append(tags, readTags(getKeyNameFromTagAndPrefix(prefix, tag, true), field.Type.Elem())...) + + continue + } + } + case reflect.Ptr: + switch field.Type.Elem().Kind() { + case reflect.Struct: + if !containsType(field.Type.Elem(), decodedTypes) { + tags = append(tags, readTags(getKeyNameFromTagAndPrefix(prefix, tag, false), field.Type.Elem())...) + + continue + } + case reflect.Slice: + if field.Type.Elem().Elem().Kind() == reflect.Struct { + if !containsType(field.Type.Elem(), decodedTypes) { + tags = append(tags, readTags(getKeyNameFromTagAndPrefix(prefix, tag, true), field.Type.Elem())...) + + continue + } + } + } + } + + tags = append(tags, getKeyNameFromTagAndPrefix(prefix, tag, false)) + } + + return tags +} + +func getKeyNameFromTagAndPrefix(prefix, name string, slice bool) string { + nameParts := strings.SplitN(name, ",", 2) + + if prefix == "" { + return nameParts[0] + } + + if len(nameParts) == 2 && nameParts[1] == "squash" { + return prefix + } + + if slice { + return fmt.Sprintf("%s.%s[]", prefix, nameParts[0]) + } + + return fmt.Sprintf("%s.%s", prefix, nameParts[0]) +} diff --git a/cmd/authelia-gen/cmd_code_keys.go b/cmd/authelia-gen/cmd_code_keys.go deleted file mode 100644 index 4599ae148..000000000 --- a/cmd/authelia-gen/cmd_code_keys.go +++ /dev/null @@ -1,173 +0,0 @@ -package main - -import ( - "fmt" - "net/mail" - "net/url" - "os" - "reflect" - "regexp" - "strings" - "text/template" - "time" - - "github.com/spf13/cobra" - - "github.com/authelia/authelia/v4/internal/configuration/schema" -) - -func newCodeKeysCmd() *cobra.Command { - cmd := &cobra.Command{ - Use: "keys", - Short: "Generate the list of valid configuration keys", - RunE: codeKeysRunE, - - DisableAutoGenTag: true, - } - - cmd.Flags().StringP("file", "f", "./internal/configuration/schema/keys.go", "Sets the path of the keys file") - cmd.Flags().String("package", "schema", "Sets the package name of the keys file") - - return cmd -} - -func codeKeysRunE(cmd *cobra.Command, args []string) (err error) { - var ( - file string - - f *os.File - ) - - data := keysTemplateStruct{ - Timestamp: time.Now(), - Keys: readTags("", reflect.TypeOf(schema.Configuration{})), - } - - if file, err = cmd.Flags().GetString("file"); err != nil { - return err - } - - if data.Package, err = cmd.Flags().GetString("package"); err != nil { - return err - } - - if f, err = os.Create(file); err != nil { - return fmt.Errorf("failed to create file '%s': %w", file, err) - } - - var ( - content []byte - tmpl *template.Template - ) - - if content, err = templatesFS.ReadFile("templates/config_keys.go.tmpl"); err != nil { - return err - } - - if tmpl, err = template.New("keys").Parse(string(content)); err != nil { - return err - } - - return tmpl.Execute(f, data) -} - -type keysTemplateStruct struct { - Timestamp time.Time - Keys []string - Package string -} - -var decodedTypes = []reflect.Type{ - reflect.TypeOf(mail.Address{}), - reflect.TypeOf(regexp.Regexp{}), - reflect.TypeOf(url.URL{}), - reflect.TypeOf(time.Duration(0)), - reflect.TypeOf(schema.Address{}), -} - -func containsType(needle reflect.Type, haystack []reflect.Type) (contains bool) { - for _, t := range haystack { - if needle.Kind() == reflect.Ptr { - if needle.Elem() == t { - return true - } - } else if needle == t { - return true - } - } - - return false -} - -func readTags(prefix string, t reflect.Type) (tags []string) { - tags = make([]string, 0) - - for i := 0; i < t.NumField(); i++ { - field := t.Field(i) - - tag := field.Tag.Get("koanf") - - if tag == "" { - tags = append(tags, prefix) - - continue - } - - switch field.Type.Kind() { - case reflect.Struct: - if !containsType(field.Type, decodedTypes) { - tags = append(tags, readTags(getKeyNameFromTagAndPrefix(prefix, tag, false), field.Type)...) - - continue - } - case reflect.Slice: - if field.Type.Elem().Kind() == reflect.Struct { - if !containsType(field.Type.Elem(), decodedTypes) { - tags = append(tags, getKeyNameFromTagAndPrefix(prefix, tag, false)) - tags = append(tags, readTags(getKeyNameFromTagAndPrefix(prefix, tag, true), field.Type.Elem())...) - - continue - } - } - case reflect.Ptr: - switch field.Type.Elem().Kind() { - case reflect.Struct: - if !containsType(field.Type.Elem(), decodedTypes) { - tags = append(tags, readTags(getKeyNameFromTagAndPrefix(prefix, tag, false), field.Type.Elem())...) - - continue - } - case reflect.Slice: - if field.Type.Elem().Elem().Kind() == reflect.Struct { - if !containsType(field.Type.Elem(), decodedTypes) { - tags = append(tags, readTags(getKeyNameFromTagAndPrefix(prefix, tag, true), field.Type.Elem())...) - - continue - } - } - } - } - - tags = append(tags, getKeyNameFromTagAndPrefix(prefix, tag, false)) - } - - return tags -} - -func getKeyNameFromTagAndPrefix(prefix, name string, slice bool) string { - nameParts := strings.SplitN(name, ",", 2) - - if prefix == "" { - return nameParts[0] - } - - if len(nameParts) == 2 && nameParts[1] == "squash" { - return prefix - } - - if slice { - return fmt.Sprintf("%s.%s[]", prefix, nameParts[0]) - } - - return fmt.Sprintf("%s.%s", prefix, nameParts[0]) -} diff --git a/cmd/authelia-gen/cmd_commit_msg.go b/cmd/authelia-gen/cmd_commit_msg.go new file mode 100644 index 000000000..cadf70d68 --- /dev/null +++ b/cmd/authelia-gen/cmd_commit_msg.go @@ -0,0 +1,220 @@ +package main + +import ( + "fmt" + "os" + "path/filepath" + "sort" + "strings" + + "github.com/spf13/cobra" +) + +// CommitMessageTmpl is a template data structure which is used to generate files with commit message information. +type CommitMessageTmpl struct { + Scopes ScopesTmpl + Types TypesTmpl +} + +// TypesTmpl is a template data structure which is used to generate files with commit message types. +type TypesTmpl struct { + List []string + Details []NameDescriptionTmpl +} + +// ScopesTmpl is a template data structure which is used to generate files with commit message scopes. +type ScopesTmpl struct { + All []string + Packages []string + Extra []NameDescriptionTmpl +} + +// NameDescriptionTmpl is a template item which includes a name, description and list of scopes. +type NameDescriptionTmpl struct { + Name string + Description string + Scopes []string +} + +func newCommitLintCmd() *cobra.Command { + cmd := &cobra.Command{ + Use: cmdUseCommitLint, + Short: "Generate commit lint files", + RunE: commitLintRunE, + + DisableAutoGenTag: true, + } + + return cmd +} + +var commitScopesExtra = []NameDescriptionTmpl{ + {"api", "used for changes that change the openapi specification", nil}, + {"cmd", "used for changes to the `%s` top level binaries", nil}, + {"web", "used for changes to the React based frontend", nil}, +} + +var commitTypes = []NameDescriptionTmpl{ + {"build", "Changes that affect the build system or external dependencies", []string{"bundler", "deps", "docker", "go", "npm"}}, + {"ci", "Changes to our CI configuration files and scripts", []string{"autheliabot", "buildkite", "codecov", "golangci-lint", "renovate", "reviewdog"}}, + {"docs", "Documentation only changes", nil}, + {"feat", "A new feature", nil}, + {"fix", "A bug fix", nil}, + {"i18n", "Updating translations or internationalization settings", nil}, + {"perf", "A code change that improves performance", nil}, + {"refactor", "A code change that neither fixes a bug nor adds a feature", nil}, + {"release", "Releasing a new version of Authelia", nil}, + {"test", "Adding missing tests or correcting existing tests", nil}, +} + +var commitTypesExtra = []string{"revert"} + +func getGoPackages(dir string) (pkgs []string, err error) { + var ( + entries []os.DirEntry + entriesSub []os.DirEntry + ) + + if entries, err = os.ReadDir(dir); err != nil { + return nil, fmt.Errorf("failed to detect go packages in directory '%s': %w", dir, err) + } + + for _, entry := range entries { + if !entry.IsDir() { + continue + } + + if entriesSub, err = os.ReadDir(filepath.Join(dir, entry.Name())); err != nil { + continue + } + + for _, entrySub := range entriesSub { + if entrySub.IsDir() { + continue + } + + if strings.HasSuffix(entrySub.Name(), ".go") { + pkgs = append(pkgs, entry.Name()) + break + } + } + } + + return pkgs, nil +} + +func commitLintRunE(cmd *cobra.Command, args []string) (err error) { + var root, pathCommitLintConfig, pathDocsCommitMessageGuidelines string + + if root, err = cmd.Flags().GetString(cmdFlagRoot); err != nil { + return err + } + + if pathCommitLintConfig, err = cmd.Flags().GetString(cmdFlagFileConfigCommitLint); err != nil { + return err + } + + if pathDocsCommitMessageGuidelines, err = cmd.Flags().GetString(cmdFlagFileDocsCommitMsgGuidelines); err != nil { + return err + } + + data := &CommitMessageTmpl{ + Scopes: ScopesTmpl{ + All: []string{}, + Packages: []string{}, + Extra: []NameDescriptionTmpl{}, + }, + Types: TypesTmpl{ + List: []string{}, + Details: []NameDescriptionTmpl{}, + }, + } + + var ( + cmds []string + pkgs []string + ) + + if cmds, err = getGoPackages(filepath.Join(root, subPathCmd)); err != nil { + return err + } + + if pkgs, err = getGoPackages(filepath.Join(root, subPathInternal)); err != nil { + return err + } + + data.Scopes.All = append(data.Scopes.All, pkgs...) + data.Scopes.Packages = append(data.Scopes.Packages, pkgs...) + + for _, scope := range commitScopesExtra { + switch scope.Name { + case subPathCmd: + data.Scopes.Extra = append(data.Scopes.Extra, NameDescriptionTmpl{Name: scope.Name, Description: fmt.Sprintf(scope.Description, strings.Join(cmds, "|"))}) + default: + data.Scopes.Extra = append(data.Scopes.Extra, scope) + } + + data.Scopes.All = append(data.Scopes.All, scope.Name) + } + + for _, cType := range commitTypes { + data.Types.List = append(data.Types.List, cType.Name) + data.Types.Details = append(data.Types.Details, cType) + + data.Scopes.All = append(data.Scopes.All, cType.Scopes...) + } + + data.Types.List = append(data.Types.List, commitTypesExtra...) + + sort.Slice(data.Scopes.All, func(i, j int) bool { + return data.Scopes.All[i] < data.Scopes.All[j] + }) + + sort.Slice(data.Scopes.Packages, func(i, j int) bool { + return data.Scopes.Packages[i] < data.Scopes.Packages[j] + }) + + sort.Slice(data.Scopes.Extra, func(i, j int) bool { + return data.Scopes.Extra[i].Name < data.Scopes.Extra[j].Name + }) + + sort.Slice(data.Types.List, func(i, j int) bool { + return data.Types.List[i] < data.Types.List[j] + }) + + sort.Slice(data.Types.Details, func(i, j int) bool { + return data.Types.Details[i].Name < data.Types.Details[j].Name + }) + + var f *os.File + + fullPathCommitLintConfig := filepath.Join(root, pathCommitLintConfig) + + if f, err = os.Create(fullPathCommitLintConfig); err != nil { + return fmt.Errorf("failed to create output file '%s': %w", fullPathCommitLintConfig, err) + } + + if err = tmplDotCommitLintRC.Execute(f, data); err != nil { + return fmt.Errorf("failed to write output file '%s': %w", fullPathCommitLintConfig, err) + } + + if err = f.Close(); err != nil { + return fmt.Errorf("failed to close output file '%s': %w", fullPathCommitLintConfig, err) + } + + fullPathDocsCommitMessageGuidelines := filepath.Join(root, pathDocsCommitMessageGuidelines) + + if f, err = os.Create(fullPathDocsCommitMessageGuidelines); err != nil { + return fmt.Errorf("failed to create output file '%s': %w", fullPathDocsCommitMessageGuidelines, err) + } + + if err = tmplDocsCommitMessageGuidelines.Execute(f, data); err != nil { + return fmt.Errorf("failed to write output file '%s': %w", fullPathDocsCommitMessageGuidelines, err) + } + + if err = f.Close(); err != nil { + return fmt.Errorf("failed to close output file '%s': %w", fullPathDocsCommitMessageGuidelines, err) + } + + return nil +} diff --git a/cmd/authelia-gen/cmd_docs.go b/cmd/authelia-gen/cmd_docs.go index 8fa4b26b6..2902b8aa0 100644 --- a/cmd/authelia-gen/cmd_docs.go +++ b/cmd/authelia-gen/cmd_docs.go @@ -6,30 +6,14 @@ import ( func newDocsCmd() *cobra.Command { cmd := &cobra.Command{ - Use: "docs", + Use: cmdUseDocs, Short: "Generate docs", - RunE: docsRunE, + RunE: rootSubCommandsRunE, DisableAutoGenTag: true, } - cmd.PersistentFlags().StringP("cwd", "C", "", "Sets the CWD for git commands") - cmd.AddCommand(newDocsCLICmd(), newDocsDateCmd()) + cmd.AddCommand(newDocsCLICmd(), newDocsDateCmd(), newDocsKeysCmd()) return cmd } - -func docsRunE(cmd *cobra.Command, args []string) (err error) { - for _, subCmd := range cmd.Commands() { - switch { - case subCmd.RunE != nil: - if err = subCmd.RunE(subCmd, args); err != nil { - return err - } - case subCmd.Run != nil: - subCmd.Run(subCmd, args) - } - } - - return nil -} diff --git a/cmd/authelia-gen/cmd_docs_cli.go b/cmd/authelia-gen/cmd_docs_cli.go index 5e0c01bb7..e41b6f189 100644 --- a/cmd/authelia-gen/cmd_docs_cli.go +++ b/cmd/authelia-gen/cmd_docs_cli.go @@ -16,52 +16,56 @@ import ( func newDocsCLICmd() *cobra.Command { cmd := &cobra.Command{ - Use: "cli", + Use: cmdUseDocsCLI, Short: "Generate CLI docs", RunE: docsCLIRunE, DisableAutoGenTag: true, } - cmd.Flags().StringP("directory", "d", "./docs/content/en/reference/cli", "The directory to store the markdown in") - return cmd } func docsCLIRunE(cmd *cobra.Command, args []string) (err error) { - var root string + var root, pathDocsCLIReference string - if root, err = cmd.Flags().GetString("directory"); err != nil { + if root, err = cmd.Flags().GetString(cmdFlagRoot); err != nil { return err } - if err = os.MkdirAll(root, 0775); err != nil { + if pathDocsCLIReference, err = cmd.Flags().GetString(cmdFlagDocsCLIReference); err != nil { + return err + } + + fullPathDocsCLIReference := filepath.Join(root, pathDocsCLIReference) + + if err = os.MkdirAll(fullPathDocsCLIReference, 0775); err != nil { if !os.IsExist(err) { return err } } - if err = genCLIDoc(commands.NewRootCmd(), filepath.Join(root, "authelia")); err != nil { + if err = genCLIDoc(commands.NewRootCmd(), filepath.Join(fullPathDocsCLIReference, "authelia")); err != nil { return err } - if err = genCLIDocWriteIndex(root, "authelia"); err != nil { + if err = genCLIDocWriteIndex(fullPathDocsCLIReference, "authelia"); err != nil { return err } - if err = genCLIDoc(cmdscripts.NewRootCmd(), filepath.Join(root, "authelia-scripts")); err != nil { + if err = genCLIDoc(cmdscripts.NewRootCmd(), filepath.Join(fullPathDocsCLIReference, "authelia-scripts")); err != nil { return err } - if err = genCLIDocWriteIndex(root, "authelia-scripts"); err != nil { + if err = genCLIDocWriteIndex(fullPathDocsCLIReference, "authelia-scripts"); err != nil { return err } - if err = genCLIDoc(newRootCmd(), filepath.Join(root, "authelia-gen")); err != nil { + if err = genCLIDoc(newRootCmd(), filepath.Join(fullPathDocsCLIReference, cmdUseRoot)); err != nil { return err } - if err = genCLIDocWriteIndex(root, "authelia-gen"); err != nil { + if err = genCLIDocWriteIndex(fullPathDocsCLIReference, cmdUseRoot); err != nil { return err } @@ -69,6 +73,16 @@ func docsCLIRunE(cmd *cobra.Command, args []string) (err error) { } func genCLIDoc(cmd *cobra.Command, path string) (err error) { + if _, err = os.Stat(path); err != nil && !os.IsNotExist(err) { + return err + } + + if err == nil || !os.IsNotExist(err) { + if err = os.RemoveAll(path); err != nil { + return fmt.Errorf("failed to remove docs: %w", err) + } + } + if err = os.Mkdir(path, 0755); err != nil { if !os.IsExist(err) { return err diff --git a/cmd/authelia-gen/cmd_docs_date.go b/cmd/authelia-gen/cmd_docs_date.go index 7d9f83f85..b7a2f2794 100644 --- a/cmd/authelia-gen/cmd_docs_date.go +++ b/cmd/authelia-gen/cmd_docs_date.go @@ -17,14 +17,13 @@ import ( func newDocsDateCmd() *cobra.Command { cmd := &cobra.Command{ - Use: "date", + Use: cmdUseDocsDate, Short: "Generate doc dates", RunE: docsDateRunE, DisableAutoGenTag: true, } - cmd.Flags().StringP("directory", "d", "./docs/content", "The directory to modify") cmd.Flags().String("commit-until", "HEAD", "The commit to check the logs until") cmd.Flags().String("commit-since", "", "The commit to check the logs since") @@ -33,14 +32,18 @@ func newDocsDateCmd() *cobra.Command { func docsDateRunE(cmd *cobra.Command, args []string) (err error) { var ( - dir, cwd, commitUtil, commitSince, commitFilter string + root, pathDocsContent, cwd, commitUtil, commitSince, commitFilter string ) - if dir, err = cmd.Flags().GetString("directory"); err != nil { + if root, err = cmd.Flags().GetString(cmdFlagRoot); err != nil { return err } - if cwd, err = cmd.Flags().GetString("cwd"); err != nil { + if pathDocsContent, err = cmd.Flags().GetString(cmdFlagDocsContent); err != nil { + return err + } + + if cwd, err = cmd.Flags().GetString(cmdFlagCwd); err != nil { return err } @@ -56,7 +59,7 @@ func docsDateRunE(cmd *cobra.Command, args []string) (err error) { commitFilter = fmt.Sprintf("%s...%s", commitUtil, commitSince) } - return filepath.Walk(dir, func(path string, info fs.FileInfo, err error) error { + return filepath.Walk(filepath.Join(root, pathDocsContent), func(path string, info fs.FileInfo, err error) error { if err != nil { return err } @@ -163,7 +166,7 @@ func replaceDates(path string, date time.Time, dateGit *time.Time) { for scanner.Scan() { if found < 2 && frontmatter < 2 { switch { - case scanner.Text() == frontmatterDelimiterLine: + case scanner.Text() == delimiterLineFrontMatter: buf.Write(scanner.Bytes()) frontmatter++ case frontmatter != 0 && strings.HasPrefix(scanner.Text(), "date: "): @@ -207,13 +210,13 @@ func getFrontmatter(path string) []byte { for scanner.Scan() { if start { - if scanner.Text() == frontmatterDelimiterLine { + if scanner.Text() == delimiterLineFrontMatter { break } buf.Write(scanner.Bytes()) buf.Write(newline) - } else if scanner.Text() == frontmatterDelimiterLine { + } else if scanner.Text() == delimiterLineFrontMatter { start = true } } diff --git a/cmd/authelia-gen/cmd_docs_keys.go b/cmd/authelia-gen/cmd_docs_keys.go new file mode 100644 index 000000000..df6763acb --- /dev/null +++ b/cmd/authelia-gen/cmd_docs_keys.go @@ -0,0 +1,81 @@ +package main + +import ( + "encoding/json" + "fmt" + "os" + "path/filepath" + "reflect" + "strings" + + "github.com/spf13/cobra" + + "github.com/authelia/authelia/v4/internal/configuration" + "github.com/authelia/authelia/v4/internal/configuration/schema" +) + +func newDocsKeysCmd() *cobra.Command { + cmd := &cobra.Command{ + Use: cmdUseKeys, + Short: "Generate the docs data file for configuration keys", + RunE: docsKeysRunE, + + DisableAutoGenTag: true, + } + + return cmd +} + +func docsKeysRunE(cmd *cobra.Command, args []string) (err error) { + //nolint:prealloc + var ( + pathDocsConfigKeys, root string + data []ConfigurationKey + ) + + keys := readTags("", reflect.TypeOf(schema.Configuration{})) + + for _, key := range keys { + if strings.Contains(key, "[]") { + continue + } + + ck := ConfigurationKey{ + Path: key, + Secret: configuration.IsSecretKey(key), + } + + switch { + case ck.Secret: + ck.Env = configuration.ToEnvironmentSecretKey(key, configuration.DefaultEnvPrefix, configuration.DefaultEnvDelimiter) + default: + ck.Env = configuration.ToEnvironmentKey(key, configuration.DefaultEnvPrefix, configuration.DefaultEnvDelimiter) + } + + data = append(data, ck) + } + + var ( + dataJSON []byte + ) + + if root, err = cmd.Flags().GetString(cmdFlagRoot); err != nil { + return err + } + + if pathDocsConfigKeys, err = cmd.Flags().GetString(cmdFlagFileDocsKeys); err != nil { + return err + } + + fullPathDocsConfigKeys := filepath.Join(root, pathDocsConfigKeys) + + if dataJSON, err = json.Marshal(data); err != nil { + return err + } + + if err = os.WriteFile(fullPathDocsConfigKeys, dataJSON, 0600); err != nil { + return fmt.Errorf("failed to write file '%s': %w", fullPathDocsConfigKeys, err) + } + + return nil +} diff --git a/cmd/authelia-gen/cmd_github.go b/cmd/authelia-gen/cmd_github.go new file mode 100644 index 000000000..8d8ec2f49 --- /dev/null +++ b/cmd/authelia-gen/cmd_github.go @@ -0,0 +1,236 @@ +package main + +import ( + "fmt" + "os" + "os/exec" + "path/filepath" + "strconv" + "strings" + + "github.com/spf13/cobra" +) + +func newGitHubCmd() *cobra.Command { + cmd := &cobra.Command{ + Use: cmdUseGitHub, + Short: "Generate GitHub files", + RunE: rootSubCommandsRunE, + + DisableAutoGenTag: true, + } + + cmd.AddCommand(newGitHubIssueTemplatesCmd()) + + return cmd +} + +func newGitHubIssueTemplatesCmd() *cobra.Command { + cmd := &cobra.Command{ + Use: cmdUseGitHubIssueTemplates, + Short: "Generate GitHub issue templates", + RunE: rootSubCommandsRunE, + + DisableAutoGenTag: true, + } + + cmd.AddCommand(newGitHubIssueTemplatesBugReportCmd(), newGitHubIssueTemplatesFeatureCmd()) + + return cmd +} + +func newGitHubIssueTemplatesFeatureCmd() *cobra.Command { + cmd := &cobra.Command{ + Use: cmdUseGitHubIssueTemplatesFR, + Short: "Generate GitHub feature request issue template", + RunE: cmdGitHubIssueTemplatesFeatureRunE, + + DisableAutoGenTag: true, + } + + return cmd +} + +func newGitHubIssueTemplatesBugReportCmd() *cobra.Command { + cmd := &cobra.Command{ + Use: cmdUseGitHubIssueTemplatesBR, + Short: "Generate GitHub bug report issue template", + RunE: cmdGitHubIssueTemplatesBugReportRunE, + + DisableAutoGenTag: true, + } + + return cmd +} + +func cmdGitHubIssueTemplatesFeatureRunE(cmd *cobra.Command, args []string) (err error) { + var ( + cwd, file, root string + tags, tagsFuture []string + latestMajor, latestMinor, latestPatch, versions int + ) + + if cwd, err = cmd.Flags().GetString(cmdFlagCwd); err != nil { + return err + } + + if root, err = cmd.Flags().GetString(cmdFlagRoot); err != nil { + return err + } + + if file, err = cmd.Flags().GetString(cmdFlagFeatureRequest); err != nil { + return err + } + + if versions, err = cmd.Flags().GetInt(cmdFlagVersions); err != nil { + return err + } + + if tags, err = getGitTags(cwd); err != nil { + return err + } + + latest := tags[0] + + if _, err = fmt.Sscanf(latest, "v%d.%d.%d", &latestMajor, &latestMinor, &latestPatch); err != nil { + return fmt.Errorf("error occurred parsing version as semver: %w", err) + } + + var ( + minor int + ) + + for minor = latestMinor + 1; minor < latestMinor+versions; minor++ { + tagsFuture = append(tagsFuture, fmt.Sprintf("v%d.%d.0", latestMajor, minor)) + } + + tagsFuture = append(tagsFuture, fmt.Sprintf("v%d.0.0", latestMajor+1)) + + var ( + f *os.File + ) + + fullPath := filepath.Join(root, file) + + if f, err = os.Create(fullPath); err != nil { + return fmt.Errorf("failed to create file '%s': %w", fullPath, err) + } + + data := &tmplIssueTemplateData{ + Labels: []string{labelTypeFeature.String(), labelStatusNeedsDesign.String(), labelPriorityNormal.String()}, + Versions: tagsFuture, + } + + if err = tmplIssueTemplateFeature.Execute(f, data); err != nil { + return err + } + + return nil +} + +func cmdGitHubIssueTemplatesBugReportRunE(cmd *cobra.Command, args []string) (err error) { + var ( + cwd, file, dirRoot string + latestMinor, versions int + + tags []string + ) + + if cwd, err = cmd.Flags().GetString(cmdFlagCwd); err != nil { + return err + } + + if dirRoot, err = cmd.Flags().GetString(cmdFlagRoot); err != nil { + return err + } + + if file, err = cmd.Flags().GetString(cmdFlagBugReport); err != nil { + return err + } + + if versions, err = cmd.Flags().GetInt(cmdFlagVersions); err != nil { + return err + } + + if tags, err = getGitTags(cwd); err != nil { + return err + } + + latest := tags[0] + + latestParts := strings.Split(latest, ".") + + if len(latestParts) < 2 { + return fmt.Errorf("error extracting latest minor version from tag: %s does not appear to be a semver", latest) + } + + if latestMinor, err = strconv.Atoi(latestParts[1]); err != nil { + return fmt.Errorf("error extracting latest minor version from tag: %w", err) + } + + //nolint:prealloc + var ( + tagsRecent []string + parts []string + minor int + ) + + for _, tag := range tags { + if parts = strings.Split(tag, "."); len(parts) < 2 { + return fmt.Errorf("error extracting minor version from tag: %s does not appear to be a semver", tag) + } + + if minor, err = strconv.Atoi(parts[1]); err != nil { + return fmt.Errorf("error extracting minor version from tag: %w", err) + } + + if minor < latestMinor-versions { + break + } + + tagsRecent = append(tagsRecent, tag) + } + + var ( + f *os.File + ) + + fullPath := filepath.Join(dirRoot, file) + + if f, err = os.Create(fullPath); err != nil { + return fmt.Errorf("failed to create file '%s': %w", fullPath, err) + } + + data := &tmplIssueTemplateData{ + Labels: []string{labelTypeBugUnconfirmed.String(), labelStatusNeedsTriage.String(), labelPriorityNormal.String()}, + Versions: tagsRecent, + Proxies: []string{"Caddy", "Traefik", "Envoy", "NGINX", "SWAG", "NGINX Proxy Manager", "HAProxy"}, + } + + if err = tmplGitHubIssueTemplateBug.Execute(f, data); err != nil { + return err + } + + return nil +} + +func getGitTags(cwd string) (tags []string, err error) { + var ( + args []string + tagsOutput []byte + ) + + if len(cwd) != 0 { + args = append(args, "-C", cwd) + } + + args = append(args, "tag", "--sort=-creatordate") + + cmd := exec.Command("git", args...) + + if tagsOutput, err = cmd.Output(); err != nil { + return nil, err + } + + return strings.Split(string(tagsOutput), "\n"), nil +} diff --git a/cmd/authelia-gen/cmd_locales.go b/cmd/authelia-gen/cmd_locales.go new file mode 100644 index 000000000..6948ac7b4 --- /dev/null +++ b/cmd/authelia-gen/cmd_locales.go @@ -0,0 +1,215 @@ +package main + +import ( + "encoding/json" + "fmt" + "io/fs" + "os" + "path/filepath" + "sort" + "strings" + + "github.com/spf13/cobra" + "golang.org/x/text/language" + "golang.org/x/text/language/display" + + "github.com/authelia/authelia/v4/internal/utils" +) + +func newLocalesCmd() *cobra.Command { + cmd := &cobra.Command{ + Use: cmdUseLocales, + Short: "Generate locales files", + RunE: localesRunE, + + DisableAutoGenTag: true, + } + + return cmd +} + +func localesRunE(cmd *cobra.Command, args []string) (err error) { + var ( + root, pathLocales string + pathWebI18NIndex, pathDocsDataLanguages string + ) + + if root, err = cmd.Flags().GetString(cmdFlagRoot); err != nil { + return err + } + + if pathLocales, err = cmd.Flags().GetString(cmdFlagDirLocales); err != nil { + return err + } + + if pathWebI18NIndex, err = cmd.Flags().GetString(cmdFlagFileWebI18N); err != nil { + return err + } + + if pathDocsDataLanguages, err = cmd.Flags().GetString(cmdFlagDocsDataLanguages); err != nil { + return err + } + + data, err := getLanguages(filepath.Join(root, pathLocales)) + if err != nil { + return err + } + + fullPathWebI18NIndex := filepath.Join(root, pathWebI18NIndex) + + var ( + f *os.File + dataJSON []byte + ) + + if f, err = os.Create(fullPathWebI18NIndex); err != nil { + return fmt.Errorf("failed to create file '%s': %w", fullPathWebI18NIndex, err) + } + + if err = tmplWebI18NIndex.Execute(f, data); err != nil { + return err + } + + if dataJSON, err = json.Marshal(data); err != nil { + return err + } + + fullPathDocsDataLanguages := filepath.Join(root, pathDocsDataLanguages) + + if err = os.WriteFile(fullPathDocsDataLanguages, dataJSON, 0600); err != nil { + return fmt.Errorf("failed to write file '%s': %w", fullPathDocsDataLanguages, err) + } + + return nil +} + +//nolint:gocyclo +func getLanguages(dir string) (languages *Languages, err error) { + //nolint:prealloc + var locales []string + + languages = &Languages{ + Defaults: DefaultsLanguages{ + Namespace: localeNamespaceDefault, + }, + } + + var defaultTag language.Tag + + if defaultTag, err = language.Parse(localeDefault); err != nil { + return nil, fmt.Errorf("failed to parse default language: %w", err) + } + + languages.Defaults.Language = Language{ + Display: display.English.Tags().Name(defaultTag), + Locale: localeDefault, + } + + if err = filepath.Walk(dir, func(path string, info fs.FileInfo, errWalk error) (err error) { + if errWalk != nil { + return errWalk + } + + nameLower := strings.ToLower(info.Name()) + ext := filepath.Ext(nameLower) + ns := strings.Replace(nameLower, ext, "", 1) + + if ext != ".json" { + return nil + } + + if !utils.IsStringInSlice(ns, languages.Namespaces) { + languages.Namespaces = append(languages.Namespaces, ns) + } + + fdir, _ := filepath.Split(path) + + locale := filepath.Base(fdir) + + if utils.IsStringInSlice(locale, locales) { + for i, l := range languages.Languages { + if l.Locale == locale { + if utils.IsStringInSlice(ns, languages.Languages[i].Namespaces) { + break + } + + languages.Languages[i].Namespaces = append(languages.Languages[i].Namespaces, ns) + break + } + } + + return nil + } + + var localeReal string + + parts := strings.SplitN(locale, "-", 2) + if len(parts) == 2 && strings.EqualFold(parts[0], parts[1]) { + localeReal = parts[0] + } else { + localeReal = locale + } + + var tag language.Tag + + if tag, err = language.Parse(localeReal); err != nil { + return fmt.Errorf("failed to parse language '%s': %w", localeReal, err) + } + + l := Language{ + Display: display.English.Tags().Name(tag), + Locale: localeReal, + Namespaces: []string{ns}, + Fallbacks: []string{languages.Defaults.Language.Locale}, + Tag: tag, + } + + languages.Languages = append(languages.Languages, l) + + locales = append(locales, l.Locale) + + return nil + }); err != nil { + return nil, err + } + + var langs []Language //nolint:prealloc + + for i, lang := range languages.Languages { + p := lang.Tag.Parent() + + if p.String() == "und" || strings.Contains(p.String(), "-") { + continue + } + + if utils.IsStringInSlice(p.String(), locales) { + continue + } + + if p.String() != lang.Locale { + lang.Fallbacks = append([]string{p.String()}, lang.Fallbacks...) + } + + languages.Languages[i] = lang + + l := Language{ + Display: display.English.Tags().Name(p), + Locale: p.String(), + Namespaces: lang.Namespaces, + Fallbacks: []string{languages.Defaults.Language.Locale}, + Tag: p, + } + + langs = append(langs, l) + + locales = append(locales, l.Locale) + } + + languages.Languages = append(languages.Languages, langs...) + + sort.Slice(languages.Languages, func(i, j int) bool { + return languages.Languages[i].Locale == localeDefault || languages.Languages[i].Locale < languages.Languages[j].Locale + }) + + return languages, nil +} diff --git a/cmd/authelia-gen/cmd_root.go b/cmd/authelia-gen/cmd_root.go new file mode 100644 index 000000000..1ce6cf2dc --- /dev/null +++ b/cmd/authelia-gen/cmd_root.go @@ -0,0 +1,124 @@ +package main + +import ( + "sort" + "strings" + + "github.com/spf13/cobra" + + "github.com/authelia/authelia/v4/internal/utils" +) + +var rootCmd *cobra.Command + +func init() { + rootCmd = newRootCmd() +} + +func newRootCmd() *cobra.Command { + cmd := &cobra.Command{ + Use: cmdUseRoot, + Short: "Authelia's generator tooling", + RunE: rootSubCommandsRunE, + + DisableAutoGenTag: true, + } + + cmd.PersistentFlags().StringP(cmdFlagCwd, "C", "", "Sets the CWD for git commands") + cmd.PersistentFlags().StringP(cmdFlagRoot, "d", dirCurrent, "The repository root") + cmd.PersistentFlags().StringSliceP(cmdFlagExclude, "X", nil, "Sets the names of excluded generators") + cmd.PersistentFlags().String(cmdFlagFeatureRequest, fileGitHubIssueTemplateFR, "Sets the path of the feature request issue template file") + cmd.PersistentFlags().String(cmdFlagBugReport, fileGitHubIssueTemplateBR, "Sets the path of the bug report issue template file") + cmd.PersistentFlags().Int(cmdFlagVersions, 5, "the maximum number of minor versions to list in output templates") + cmd.PersistentFlags().String(cmdFlagDirLocales, dirLocales, "The locales directory in relation to the root") + cmd.PersistentFlags().String(cmdFlagFileWebI18N, fileWebI18NIndex, "The i18n typescript configuration file in relation to the root") + cmd.PersistentFlags().String(cmdFlagDocsDataLanguages, fileDocsDataLanguages, "The languages docs data file in relation to the docs data folder") + cmd.PersistentFlags().String(cmdFlagDocsCLIReference, dirDocsCLIReference, "The directory to store the markdown in") + cmd.PersistentFlags().String(cmdFlagDocsContent, dirDocsContent, "The directory with the docs content") + cmd.PersistentFlags().String(cmdFlagFileConfigKeys, fileCodeConfigKeys, "Sets the path of the keys file") + cmd.PersistentFlags().String(cmdFlagFileDocsKeys, fileDocsConfigKeys, "Sets the path of the docs keys file") + cmd.PersistentFlags().String(cmdFlagPackageConfigKeys, pkgConfigSchema, "Sets the package name of the keys file") + cmd.PersistentFlags().String(cmdFlagFileScriptsGen, fileScriptsGen, "Sets the path of the authelia-scripts gen file") + cmd.PersistentFlags().String(cmdFlagPackageScriptsGen, pkgScriptsGen, "Sets the package name of the authelia-scripts gen file") + cmd.PersistentFlags().String(cmdFlagFileConfigCommitLint, fileCICommitLintConfig, "The commit lint javascript configuration file in relation to the root") + cmd.PersistentFlags().String(cmdFlagFileDocsCommitMsgGuidelines, fileDocsCommitMessageGuidelines, "The commit message guidelines documentation file in relation to the root") + + cmd.AddCommand(newCodeCmd(), newDocsCmd(), newGitHubCmd(), newLocalesCmd(), newCommitLintCmd()) + + return cmd +} + +func rootSubCommandsRunE(cmd *cobra.Command, args []string) (err error) { + var exclude []string + + if exclude, err = cmd.Flags().GetStringSlice(cmdFlagExclude); err != nil { + return err + } + + subCmds := cmd.Commands() + + switch cmd.Use { + case cmdUseRoot: + sort.Slice(subCmds, func(i, j int) bool { + switch subCmds[j].Use { + case cmdUseDocs: + // Ensure `docs` subCmd is last. + return true + default: + return subCmds[i].Use < subCmds[j].Use + } + }) + case cmdUseDocs: + sort.Slice(subCmds, func(i, j int) bool { + switch subCmds[j].Use { + case cmdUseDocsDate: + // Ensure `date` subCmd is last. + return true + default: + return subCmds[i].Use < subCmds[j].Use + } + }) + default: + sort.Slice(subCmds, func(i, j int) bool { + return subCmds[i].Use < subCmds[j].Use + }) + } + + for _, subCmd := range subCmds { + if subCmd.Use == cmdUseCompletion || strings.HasPrefix(subCmd.Use, "help ") || utils.IsStringSliceContainsAny([]string{resolveCmdName(subCmd), subCmd.Use}, exclude) { + continue + } + + rootCmd.SetArgs(rootCmdGetArgs(subCmd, args)) + + if err = rootCmd.Execute(); err != nil { + return err + } + } + + return nil +} + +func resolveCmdName(cmd *cobra.Command) string { + parent := cmd.Parent() + + if parent != nil && parent.Use != cmd.Use && parent.Use != cmdUseRoot { + return resolveCmdName(parent) + "." + cmd.Use + } + + return cmd.Use +} + +func rootCmdGetArgs(cmd *cobra.Command, args []string) []string { + for { + if cmd == rootCmd { + break + } + + args = append([]string{cmd.Use}, args...) + + cmd = cmd.Parent() + } + + return args +} diff --git a/cmd/authelia-gen/const.go b/cmd/authelia-gen/const.go index 71f3ada18..e7b8eb980 100644 --- a/cmd/authelia-gen/const.go +++ b/cmd/authelia-gen/const.go @@ -1,7 +1,81 @@ package main const ( - dateFmtRFC2822 = "Mon, _2 Jan 2006 15:04:05 -0700" - dateFmtYAML = "2006-01-02T15:04:05-07:00" - frontmatterDelimiterLine = "---" + dirCurrent = "./" + dirLocales = "internal/server/locales" + + subPathCmd = "cmd" + subPathInternal = "internal" + + fileCICommitLintConfig = "web/.commitlintrc.js" + fileWebI18NIndex = "web/src/i18n/index.ts" + + fileDocsCommitMessageGuidelines = "docs/content/en/contributing/development/guidelines-commit-message.md" + + fileDocsConfigKeys = "docs/data/configkeys.json" + fileCodeConfigKeys = "internal/configuration/schema/keys.go" + fileScriptsGen = "cmd/authelia-scripts/cmd/gen.go" + + dirDocsContent = "docs/content" + dirDocsCLIReference = dirDocsContent + "/en/reference/cli" + + fileDocsDataLanguages = "docs/data/languages.json" + + fileGitHubIssueTemplateFR = ".github/ISSUE_TEMPLATE/feature-request.yml" + fileGitHubIssueTemplateBR = ".github/ISSUE_TEMPLATE/bug-report.yml" +) + +const ( + dateFmtRFC2822 = "Mon, _2 Jan 2006 15:04:05 -0700" + dateFmtYAML = "2006-01-02T15:04:05-07:00" +) + +const ( + delimiterLineFrontMatter = "---" + + localeDefault = "en" + localeNamespaceDefault = "portal" +) + +const ( + pkgConfigSchema = "schema" + pkgScriptsGen = "cmd" +) + +const ( + cmdUseRoot = "authelia-gen" + cmdUseCompletion = "completion" + cmdUseDocs = "docs" + cmdUseDocsDate = "date" + cmdUseDocsCLI = "cli" + cmdUseGitHub = "github" + cmdUseGitHubIssueTemplates = "issue-templates" + cmdUseGitHubIssueTemplatesFR = "feature-request" + cmdUseGitHubIssueTemplatesBR = "bug-report" + cmdUseLocales = "locales" + cmdUseCommitLint = "commit-lint" + cmdUseCode = "code" + cmdUseCodeScripts = "scripts" + cmdUseKeys = "keys" +) + +const ( + cmdFlagRoot = "dir.root" + cmdFlagExclude = "exclude" + cmdFlagVersions = "versions" + cmdFlagDirLocales = "dir.locales" + cmdFlagDocsCLIReference = "dir.docs.cli-reference" + cmdFlagDocsContent = "dir.docs.content" + cmdFlagDocsDataLanguages = "file.docs.data.languages" + cmdFlagCwd = "cwd" + cmdFlagFileConfigKeys = "file.configuration-keys" + cmdFlagFileDocsKeys = "file.docs-keys" + cmdFlagFileScriptsGen = "file.scripts.gen" + cmdFlagFileConfigCommitLint = "file.commit-lint-config" + cmdFlagFileDocsCommitMsgGuidelines = "file.docs-commit-msg-guidelines" + cmdFlagFileWebI18N = "file.web-i18n" + cmdFlagFeatureRequest = "file.feature-request" + cmdFlagBugReport = "file.bug-report" + cmdFlagPackageConfigKeys = "package.configuration.keys" + cmdFlagPackageScriptsGen = "package.scripts.gen" ) diff --git a/cmd/authelia-gen/main.go b/cmd/authelia-gen/main.go index 15a8d4586..ffbdca170 100644 --- a/cmd/authelia-gen/main.go +++ b/cmd/authelia-gen/main.go @@ -1,29 +1,7 @@ package main -import ( - "embed" - - "github.com/spf13/cobra" -) - -//go:embed templates/* -var templatesFS embed.FS - func main() { - if err := newRootCmd().Execute(); err != nil { + if err := rootCmd.Execute(); err != nil { panic(err) } } - -func newRootCmd() *cobra.Command { - cmd := &cobra.Command{ - Use: "authelia-gen", - Short: "Authelia's generator tooling", - - DisableAutoGenTag: true, - } - - cmd.AddCommand(newAllCmd(), newCodeCmd(), newDocsCmd()) - - return cmd -} diff --git a/cmd/authelia-gen/templates.go b/cmd/authelia-gen/templates.go new file mode 100644 index 000000000..4f65a4b18 --- /dev/null +++ b/cmd/authelia-gen/templates.go @@ -0,0 +1,69 @@ +package main + +import ( + "embed" + "fmt" + "strings" + "text/template" +) + +//go:embed templates/* +var templatesFS embed.FS + +var ( + funcMap = template.FuncMap{ + "stringsContains": strings.Contains, + "join": strings.Join, + "joinX": fmJoinX, + } + + tmplCodeConfigurationSchemaKeys = template.Must(newTMPL("internal_configuration_schema_keys.go")) + tmplGitHubIssueTemplateBug = template.Must(newTMPL("github_issue_template_bug_report.yml")) + tmplIssueTemplateFeature = template.Must(newTMPL("github_issue_template_feature.yml")) + tmplWebI18NIndex = template.Must(newTMPL("web_i18n_index.ts")) + tmplDotCommitLintRC = template.Must(newTMPL("dot_commitlintrc.js")) + tmplDocsCommitMessageGuidelines = template.Must(newTMPL("docs-contributing-development-commitmsg.md")) + tmplScriptsGen = template.Must(newTMPL("cmd-authelia-scripts-gen.go")) +) + +func fmJoinX(elems []string, sep string, n int, p string) string { + buf := strings.Builder{} + + c := 0 + e := len(elems) - 1 + + for i := 0; i <= e; i++ { + if c+len(elems[i])+1 > n { + c = 0 + + buf.WriteString(p) + } + + c += len(elems[i]) + 1 + + buf.WriteString(elems[i]) + + if i < e { + buf.WriteString(sep) + } + } + + return buf.String() +} + +func newTMPL(name string) (tmpl *template.Template, err error) { + return template.New(name).Funcs(funcMap).Parse(mustLoadTmplFS(name)) +} + +func mustLoadTmplFS(tmpl string) string { + var ( + content []byte + err error + ) + + if content, err = templatesFS.ReadFile(fmt.Sprintf("templates/%s.tmpl", tmpl)); err != nil { + panic(err) + } + + return string(content) +} diff --git a/cmd/authelia-gen/templates/cmd-authelia-scripts-gen.go.tmpl b/cmd/authelia-gen/templates/cmd-authelia-scripts-gen.go.tmpl new file mode 100644 index 000000000..5955d5f7d --- /dev/null +++ b/cmd/authelia-gen/templates/cmd-authelia-scripts-gen.go.tmpl @@ -0,0 +1,11 @@ +// Code generated by go generate. DO NOT EDIT. +// +// Run the following command to generate this file: +// go run ./cmd/authelia-gen code scripts +// + +package {{ .Package }} + +const ( + versionSwaggerUI = "{{ .VersionSwaggerUI }}" +) diff --git a/cmd/authelia-gen/templates/docs-contributing-development-commitmsg.md.tmpl b/cmd/authelia-gen/templates/docs-contributing-development-commitmsg.md.tmpl new file mode 100644 index 000000000..93b960316 --- /dev/null +++ b/cmd/authelia-gen/templates/docs-contributing-development-commitmsg.md.tmpl @@ -0,0 +1,138 @@ +--- +title: "Commit Message Guidelines" +description: "Authelia Development Commit Message Guidelines" +lead: "This section covers the git commit message guidelines we use for development." +date: 2021-01-30T19:29:07+11:00 +draft: false +images: [] +menu: + contributing: + parent: "development" +weight: 231 +toc: true +aliases: + - /docs/contributing/commitmsg-guidelines.html +--- + +The reasons for these conventions are as follows: + +* simple navigation though git history +* easier to read git history + +## Commit Message Format + +Each commit message consists of a __header__, a __body__, and a __footer__. + +```bash +
+ + + +